From 045253699eabb933cffe759157892aff4251efe1 Mon Sep 17 00:00:00 2001 From: Ox Cart Date: Thu, 14 Apr 2016 14:47:18 -0500 Subject: [PATCH 01/57] Reapplied changes from old branch --- .../getlantern/analytics/analytics.go | 206 - .../getlantern/analytics/analytics_test.go | 29 - .../getlantern/autoupdate-server/.gitignore | 7 - .../getlantern/autoupdate-server/Makefile | 5 - .../getlantern/autoupdate-server/README.md | 98 - .../getlantern/autoupdate-server/config.go | 10 - .../getlantern/autoupdate-server/main.go | 153 - .../autoupdate-server/server/asset.go | 75 - .../autoupdate-server/server/asset_test.go | 16 - .../autoupdate-server/server/bindiff.go | 136 - .../autoupdate-server/server/bindiff_test.go | 51 - .../autoupdate-server/server/errors.go | 11 - .../autoupdate-server/server/github.go | 336 - .../autoupdate-server/server/github_test.go | 365 - .../autoupdate-server/server/issue2868.go | 37 - .../autoupdate-server/server/server.go | 181 - .../autoupdate-server/server/signature.go | 89 - .../getlantern/aws-sdk-go/.travis.yml | 7 - src/github.com/getlantern/aws-sdk-go/LICENSE | 13 - src/github.com/getlantern/aws-sdk-go/Makefile | 8 - .../getlantern/aws-sdk-go/README.md | 92 - .../aws-sdk-go/apis/_endpoints.json | 208 - .../getlantern/aws-sdk-go/apis/_retry.json | 293 - .../apis/autoscaling/2011-01-01.normal.json | 2963 ---- .../autoscaling/2011-01-01.paginators.json | 52 - .../cloudformation/2010-05-15.normal.json | 1457 -- .../cloudformation/2010-05-15.paginators.json | 24 - .../apis/cloudfront/2014-05-31.normal.json | 3540 ----- .../cloudfront/2014-05-31.paginators.json | 32 - .../apis/cloudfront/2014-05-31.waiters.json | 47 - .../apis/cloudfront/2014-10-21.normal.json | 3588 ----- .../cloudfront/2014-10-21.paginators.json | 32 - .../apis/cloudfront/2014-10-21.waiters.json | 47 - .../apis/cloudhsm/2014-05-30.normal.json | 1302 -- .../apis/cloudsearch/2013-01-01.normal.json | 2701 ---- .../cloudsearchdomain/2013-01-01.normal.json | 510 - .../apis/cloudtrail/2013-11-01.normal.json | 917 -- .../apis/cloudwatch/2010-08-01.normal.json | 1338 -- .../cloudwatch/2010-08-01.paginators.json | 21 - .../apis/codedeploy/2014-10-06.normal.json | 2730 ---- .../cognito-identity/2014-06-30.normal.json | 1659 --- .../apis/cognito-sync/2014-06-30.normal.json | 1762 --- .../apis/config/2014-11-12.normal.json | 1038 -- .../apis/datapipeline/2012-10-29.normal.json | 1542 -- .../datapipeline/2012-10-29.paginators.json | 23 - .../apis/directconnect/2012-10-25.normal.json | 1174 -- .../apis/dynamodb/2012-08-10.normal.json | 1987 --- .../apis/dynamodb/2012-08-10.paginators.json | 32 - .../apis/dynamodb/2012-08-10.waiters.json | 35 - .../apis/ec2/2014-09-01.normal.json | 11699 --------------- .../apis/ec2/2014-09-01.paginators.json | 45 - .../apis/ec2/2014-09-01.waiters.json | 341 - .../apis/ec2/2014-10-01.normal.json | 12061 ---------------- .../apis/ec2/2014-10-01.paginators.json | 45 - .../apis/ec2/2014-10-01.waiters.json | 341 - .../apis/ecs/2014-11-13.normal.json | 1393 -- .../apis/elasticache/2014-09-30.normal.json | 5049 ------- .../elasticache/2014-09-30.paginators.json | 76 - .../elasticbeanstalk/2010-12-01.normal.json | 2442 ---- .../2010-12-01.paginators.json | 10 - .../elastictranscoder/2012-09-25.normal.json | 2629 ---- .../2012-09-25.paginators.json | 24 - .../elastictranscoder/2012-09-25.waiters.json | 30 - .../apis/elb/2012-06-01.normal.json | 2917 ---- .../apis/elb/2012-06-01.paginators.json | 10 - .../apis/emr/2009-03-31.normal.json | 2342 --- .../apis/emr/2009-03-31.paginators.json | 29 - .../apis/emr/2009-03-31.waiters.json | 42 - .../apis/glacier/2012-06-01.normal.json | 2132 --- .../apis/iam/2010-05-08.normal.json | 5938 -------- .../apis/iam/2010-05-08.paginators.json | 119 - .../apis/importexport/2010-06-01.normal.json | 687 - .../importexport/2010-06-01.paginators.json | 11 - .../apis/kinesis/2013-12-02.normal.json | 1164 -- .../apis/kinesis/2013-12-02.paginators.json | 23 - .../apis/kinesis/2013-12-02.waiters.json | 18 - .../apis/kms/2014-11-01.normal.json | 2510 ---- .../apis/lambda/2014-11-11.normal.json | 873 -- .../apis/logs/2014-03-28.normal.json | 942 -- .../apis/opsworks/2013-02-18.normal.json | 4727 ------ .../apis/rds/2014-09-01.normal.json | 6942 --------- .../apis/rds/2014-09-01.paginators.json | 107 - .../apis/rds/2014-09-01.waiters.json | 97 - .../apis/rds/2014-10-31.normal.json | 7217 --------- .../apis/rds/2014-10-31.paginators.json | 107 - .../apis/rds/2014-10-31.waiters.json | 97 - .../apis/redshift/2012-12-01.normal.json | 6895 --------- .../apis/redshift/2012-12-01.paginators.json | 94 - .../apis/redshift/2012-12-01.waiters.json | 78 - .../apis/route53/2013-04-01.normal.json | 3073 ---- .../apis/route53/2013-04-01.paginators.json | 33 - .../route53domains/2014-05-15.normal.json | 1682 --- .../aws-sdk-go/apis/s3/2006-03-01.normal.json | 4332 ------ .../apis/s3/2006-03-01.paginators.json | 59 - .../apis/s3/2006-03-01.waiters.json | 63 - .../apis/sdb/2009-04-15.normal.json | 1178 -- .../apis/sdb/2009-04-15.paginators.json | 15 - .../apis/ses/2010-12-01.normal.json | 954 -- .../apis/ses/2010-12-01.paginators.json | 10 - .../apis/ses/2010-12-01.waiters.json | 18 - .../apis/sns/2010-03-31.normal.json | 2275 --- .../apis/sns/2010-03-31.paginators.json | 29 - .../apis/sqs/2012-11-05.normal.json | 1491 -- .../storagegateway/2013-06-30.normal.json | 3256 ----- .../storagegateway/2013-06-30.paginators.json | 40 - .../apis/sts/2011-06-15.normal.json | 801 - .../apis/support/2013-04-15.normal.json | 1379 -- .../apis/support/2013-04-15.paginators.json | 16 - .../apis/swf/2012-01-25.normal.json | 4518 ------ .../apis/swf/2012-01-25.paginators.json | 53 - .../getlantern/aws-sdk-go/aws/auth.go | 270 - .../getlantern/aws-sdk-go/aws/auth_test.go | 236 - .../getlantern/aws-sdk-go/aws/doc.go | 3 - .../getlantern/aws-sdk-go/aws/ec2.go | 176 - .../getlantern/aws-sdk-go/aws/ec2_test.go | 227 - .../getlantern/aws-sdk-go/aws/error.go | 16 - .../getlantern/aws-sdk-go/aws/example.ini | 8 - .../getlantern/aws-sdk-go/aws/json.go | 81 - .../getlantern/aws-sdk-go/aws/json_test.go | 143 - .../getlantern/aws-sdk-go/aws/query.go | 234 - .../getlantern/aws-sdk-go/aws/query_test.go | 240 - .../getlantern/aws-sdk-go/aws/rest.go | 136 - .../getlantern/aws-sdk-go/aws/rest_test.go | 215 - .../getlantern/aws-sdk-go/aws/types.go | 94 - .../getlantern/aws-sdk-go/aws/types_test.go | 33 - .../getlantern/aws-sdk-go/aws/v4.go | 249 - .../getlantern/aws-sdk-go/aws/v4_test.go | 64 - .../getlantern/aws-sdk-go/aws/xml.go | 178 - .../getlantern/aws-sdk-go/aws/xml_test.go | 35 - .../getlantern/aws-sdk-go/cfn/autoscaling.go | 114 - .../getlantern/aws-sdk-go/cfn/cfn.go | 117 - .../getlantern/aws-sdk-go/cfn/cloudtrail.go | 12 - .../getlantern/aws-sdk-go/cfn/cloudwatch.go | 28 - .../getlantern/aws-sdk-go/cfn/dynamodb.go | 71 - .../getlantern/aws-sdk-go/cfn/ec2.go | 73 - .../getlantern/aws-sdk-go/cfn/elb.go | 69 - .../getlantern/aws-sdk-go/cfn/funcs.go | 109 - .../getlantern/aws-sdk-go/cfn/iam.go | 14 - .../getlantern/aws-sdk-go/cfn/rds.go | 47 - .../getlantern/aws-sdk-go/cfn/s3.go | 21 - .../cmd/aws-gen-gocli/aws-gen-gocli.go | 35 - .../aws-gen-goendpoints.go | 34 - .../aws-sdk-go/gen/autoscaling/autoscaling.go | 1328 -- .../gen/cloudformation/cloudformation.go | 677 - .../aws-sdk-go/gen/cloudfront/cloudfront.go | 2313 --- .../aws-sdk-go/gen/cloudhsm/cloudhsm.go | 439 - .../aws-sdk-go/gen/cloudsearch/cloudsearch.go | 1035 -- .../cloudsearchdomain/cloudsearchdomain.go | 423 - .../aws-sdk-go/gen/cloudtrail/cloudtrail.go | 216 - .../aws-sdk-go/gen/cloudwatch/cloudwatch.go | 481 - .../aws-sdk-go/gen/codedeploy/codedeploy.go | 763 - .../gen/cognito/identity/identity.go | 408 - .../aws-sdk-go/gen/cognito/sync/sync.go | 1017 -- .../aws-sdk-go/gen/config/config.go | 372 - .../gen/datapipeline/datapipeline.go | 534 - .../gen/directconnect/directconnect.go | 540 - .../aws-sdk-go/gen/dynamodb/dynamodb.go | 813 -- .../getlantern/aws-sdk-go/gen/ec2/ec2.go | 5637 -------- .../getlantern/aws-sdk-go/gen/ecs/ecs.go | 682 - .../aws-sdk-go/gen/elasticache/elasticache.go | 1253 -- .../gen/elasticbeanstalk/elasticbeanstalk.go | 1016 -- .../elastictranscoder/elastictranscoder.go | 1342 -- .../getlantern/aws-sdk-go/gen/elb/elb.go | 1037 -- .../getlantern/aws-sdk-go/gen/emr/emr.go | 923 -- .../aws-sdk-go/gen/endpoints/endpoints.go | 178 - .../getlantern/aws-sdk-go/gen/gen.go | 47 - .../aws-sdk-go/gen/glacier/glacier.go | 2083 --- .../getlantern/aws-sdk-go/gen/iam/iam.go | 2284 --- .../gen/importexport/importexport.go | 243 - .../aws-sdk-go/gen/kinesis/kinesis.go | 606 - .../getlantern/aws-sdk-go/gen/kms/kms.go | 563 - .../aws-sdk-go/gen/lambda/lambda.go | 799 - .../getlantern/aws-sdk-go/gen/logs/logs.go | 385 - .../aws-sdk-go/gen/opsworks/opsworks.go | 1965 --- .../getlantern/aws-sdk-go/gen/rds/rds.go | 1944 --- .../aws-sdk-go/gen/redshift/redshift.go | 1964 --- .../aws-sdk-go/gen/route53/route53.go | 2606 ---- .../gen/route53domains/route53domains.go | 775 - .../getlantern/aws-sdk-go/gen/s3/s3.go | 5544 ------- .../getlantern/aws-sdk-go/gen/sdb/sdb.go | 347 - .../getlantern/aws-sdk-go/gen/ses/ses.go | 680 - .../getlantern/aws-sdk-go/gen/sns/sns.go | 767 - .../getlantern/aws-sdk-go/gen/sqs/sqs.go | 672 - .../gen/storagegateway/storagegateway.go | 1465 -- .../getlantern/aws-sdk-go/gen/sts/sts.go | 480 - .../aws-sdk-go/gen/support/support.go | 535 - .../getlantern/aws-sdk-go/gen/swf/swf.go | 2028 --- .../aws-sdk-go/internal/internal.go | 1 - .../internal/route53_serialization_test.go | 82 - .../aws-sdk-go/internal/unmarshal_xml_test.go | 168 - .../getlantern/aws-sdk-go/model/endpoints.go | 203 - .../getlantern/aws-sdk-go/model/helpers.go | 124 - .../getlantern/aws-sdk-go/model/model.go | 528 - .../getlantern/aws-sdk-go/model/templates.go | 827 -- src/github.com/getlantern/enproxy/.gitignore | 2 - src/github.com/getlantern/enproxy/.travis.yml | 14 - src/github.com/getlantern/enproxy/LICENSE | 202 - src/github.com/getlantern/enproxy/README.md | 76 - .../getlantern/enproxy/conn_impl.go | 197 - .../getlantern/enproxy/conn_impl_reads.go | 114 - .../getlantern/enproxy/conn_impl_requests.go | 133 - .../getlantern/enproxy/conn_impl_writes.go | 110 - .../getlantern/enproxy/conn_intf.go | 317 - .../getlantern/enproxy/conn_test.go | 419 - src/github.com/getlantern/enproxy/lazyconn.go | 59 - src/github.com/getlantern/enproxy/metrics.go | 119 - src/github.com/getlantern/enproxy/proxy.go | 399 - .../getlantern/enproxy/proxy_test.go | 39 - .../getlantern/enproxy/request_strategy.go | 169 - .../getlantern/enproxy/test/client/client.go | 64 - .../enproxy/test/client/conn_http.go | 81 - .../getlantern/enproxy/test/server/server.go | 19 - .../getlantern/flashlight/app/app.go | 242 + .../flashlight/{main => app}/autoupdate.go | 2 +- .../flashlight/app/config-template.yaml | 10226 +++++++++++++ .../flashlight/app/integration_test.go | 289 + .../flashlight/{main => app}/pac.go | 5 +- .../flashlight/{main => app}/settings.go | 2 +- .../flashlight/{main => app}/settings_test.go | 2 +- .../flashlight/{main => app}/test.yaml | 0 .../getlantern/flashlight/client/chained.go | 3 +- .../getlantern/flashlight/config/config.go | 27 +- .../getlantern/flashlight/config/fetcher.go | 26 +- .../flashlight/{main => icons}/icons.go | 2 +- .../localdiscovery/localdiscovery.go | 78 - .../getlantern/flashlight/main/flags.go | 3 +- .../getlantern/flashlight/main/main.go | 263 +- .../flashlight/main/null_systray.go | 7 +- .../getlantern/flashlight/main/systray.go | 10 +- .../getlantern/go-igdman/.travis.yml | 14 - src/github.com/getlantern/go-igdman/LICENSE | 202 - src/github.com/getlantern/go-igdman/README.md | 37 - .../getlantern/go-igdman/binaries/osx/upnpc | Bin 65792 -> 0 bytes .../go-igdman/binaries/upnpc-windows-unsigned | Bin 144246 -> 0 bytes .../go-igdman/binaries/windows/upnpc | Bin 148704 -> 0 bytes .../getlantern/go-igdman/embedupnpc.bash | 27 - .../getlantern/go-igdman/igdman/igdman.go | 65 - .../go-igdman/igdman/igdman_test.go | 186 - .../go-igdman/igdman/igdman_unix_test.go | 34 - .../go-igdman/igdman/igdman_windows_test.go | 29 - .../getlantern/go-igdman/igdman/natpmp.go | 74 - .../getlantern/go-igdman/igdman/upnp.go | 184 - .../go-igdman/igdman/upnpc_darwin.go | 96 - .../go-igdman/igdman/upnpc_linux_386.go | 44 - .../go-igdman/igdman/upnpc_linux_amd64.go | 44 - .../go-igdman/igdman/upnpc_linux_arm.go | 96 - .../go-igdman/igdman/upnpc_windows.go | 237 - .../go-igdman/igdman/util_darwin.go | 37 - .../getlantern/go-igdman/igdman/util_linux.go | 35 - .../getlantern/go-igdman/igdman/util_test.go | 22 - .../go-igdman/igdman/util_windows.go | 34 - .../getlantern/http-proxy/.gitignore | 31 + .../getlantern/http-proxy/.travis.yml | 12 + .../lantern => http-proxy}/LICENSE | 2 +- .../getlantern/http-proxy/README.md | 98 + .../http-proxy/commonfilter/commonfilter.go | 101 + .../getlantern/http-proxy/forward/forward.go | 216 + .../http-proxy/forward/forward_test.go | 46 + .../getlantern/http-proxy/forward/rewrite.go | 53 + .../getlantern/http-proxy/forward/utils.go | 52 + .../getlantern/http-proxy/http_proxy.go | 92 + .../getlantern/http-proxy/http_proxy_test.go | 631 + .../http-proxy/httpconnect/httpconnect.go | 168 + .../httpconnect/httpconnect_test.go | 53 + .../http-proxy/listeners/default.go | 37 + .../http-proxy/listeners/idleconn.go | 62 + .../http-proxy/listeners/limited.go | 154 + .../http-proxy/listeners/measured.go | 56 + .../http-proxy/listeners/wrapconn.go | 35 + .../getlantern/http-proxy/logging/logging.go | 220 + .../http-proxy/logging/logging_test.go | 94 + .../getlantern/http-proxy/server/connbag.go | 39 + .../getlantern/http-proxy/server/server.go | 102 + .../http-proxy/utils/errorhandler.go | 38 + .../getlantern/http-proxy/utils/responses.go | 45 + .../lantern-mobile/lantern/Dockerfile | 70 - .../lantern-mobile/lantern/README.md | 257 - .../lantern/interceptor/conn.go | 15 - .../lantern/interceptor/interceptor.go | 389 - .../lantern/interceptor/interceptor_test.go | 1 - .../lantern-mobile/lantern/interface.go | 101 - .../lantern-mobile/lantern/interface_test.go | 114 - .../lantern/protected/protected.go | 284 - .../lantern/protected/protected_test.go | 49 - .../lantern/protected/resolver.go | 80 - .../lantern/socks-server/main.go | 32 - .../lantern-mobile/lantern/socks/args.go | 219 - .../lantern-mobile/lantern/socks/socks.go | 741 - .../getlantern/lantern-ui/app/_css/news.css | 152 +- .../app/angular-feed/scripts/directives.js | 2 +- .../app/angular-feed/styles/spinner.css | 7 +- .../ngInfiniteScroll/.bower.json | 28 - .../bower_components/ngInfiniteScroll/LICENSE | 22 - .../ngInfiniteScroll/README.md | 67 - .../ngInfiniteScroll/bower.json | 16 - .../build/ng-infinite-scroll.min.js | 2 - .../ngInfiniteScroll/package.json | 41 - .../src/infinite-scroll.coffee | 207 - .../lantern-ui/app/img/ic_list_black_24px.svg | 4 + .../lantern-ui/app/img/ic_list_gray_24px.svg | 4 + .../getlantern/lantern-ui/app/index.html | 2 - .../getlantern/lantern-ui/app/js/app.js | 1 - .../lantern-ui/app/js/controllers.js | 31 +- .../lantern-ui/app/locale/en_US.json | 1 - .../lantern-ui/app/partials/feed.html | 19 +- .../lantern-ui/app/partials/feeds.html | 43 +- .../lantern-ui/app/partials/modals.html | 2 +- .../getlantern/lantern-ui/bower.json | 3 +- .../{peerscanner => measured}/.gitignore | 4 +- .../{autoupdate-server => measured}/LICENSE | 2 +- src/github.com/getlantern/measured/README.md | 2 + .../getlantern/measured/measured.go | 394 + .../getlantern/measured/measured_test.go | 121 + .../getlantern/measured/reporter/influxdb.go | 196 + .../measured/reporter/influxdb_test.go | 85 + .../getlantern/multicast/cmd/multicast.go | 44 - .../getlantern/multicast/message.go | 48 - src/github.com/getlantern/multicast/multicast | Bin 3581016 -> 0 bytes .../getlantern/multicast/multicast.go | 272 - .../getlantern/multicast/multicast_test.go | 191 - src/github.com/getlantern/pac/example/main.go | 2 +- src/github.com/getlantern/peerscanner/LICENSE | 201 - .../getlantern/peerscanner/README.md | 57 - .../getlantern/peerscanner/cfl/cfl.go | 119 - .../getlantern/peerscanner/cfl/cfl_test.go | 83 - .../getlantern/peerscanner/cflgroup.go | 51 - .../getlantern/peerscanner/cfr/cfr.go | 245 - .../getlantern/peerscanner/cfr/cfr_test.go | 82 - .../peerscanner/cfr/cfrjanitor/cfrjanitor.go | 86 - .../getlantern/peerscanner/dsp/dsp.go | 53 - .../getlantern/peerscanner/dsp/dsp_test.go | 64 - .../dspgroup.go.disabled-temporarily | 49 - .../peerscanner/dupecheck/dupecheck.go | 51 - src/github.com/getlantern/peerscanner/host.go | 623 - src/github.com/getlantern/peerscanner/main.go | 400 - src/github.com/getlantern/peerscanner/web.go | 242 - 336 files changed, 14149 insertions(+), 208359 deletions(-) delete mode 100644 src/github.com/getlantern/analytics/analytics.go delete mode 100644 src/github.com/getlantern/analytics/analytics_test.go delete mode 100644 src/github.com/getlantern/autoupdate-server/.gitignore delete mode 100644 src/github.com/getlantern/autoupdate-server/Makefile delete mode 100644 src/github.com/getlantern/autoupdate-server/README.md delete mode 100644 src/github.com/getlantern/autoupdate-server/config.go delete mode 100644 src/github.com/getlantern/autoupdate-server/main.go delete mode 100644 src/github.com/getlantern/autoupdate-server/server/asset.go delete mode 100644 src/github.com/getlantern/autoupdate-server/server/asset_test.go delete mode 100644 src/github.com/getlantern/autoupdate-server/server/bindiff.go delete mode 100644 src/github.com/getlantern/autoupdate-server/server/bindiff_test.go delete mode 100644 src/github.com/getlantern/autoupdate-server/server/errors.go delete mode 100644 src/github.com/getlantern/autoupdate-server/server/github.go delete mode 100644 src/github.com/getlantern/autoupdate-server/server/github_test.go delete mode 100644 src/github.com/getlantern/autoupdate-server/server/issue2868.go delete mode 100644 src/github.com/getlantern/autoupdate-server/server/server.go delete mode 100644 src/github.com/getlantern/autoupdate-server/server/signature.go delete mode 100644 src/github.com/getlantern/aws-sdk-go/.travis.yml delete mode 100644 src/github.com/getlantern/aws-sdk-go/LICENSE delete mode 100644 src/github.com/getlantern/aws-sdk-go/Makefile delete mode 100644 src/github.com/getlantern/aws-sdk-go/README.md delete mode 100644 src/github.com/getlantern/aws-sdk-go/apis/_endpoints.json delete mode 100644 src/github.com/getlantern/aws-sdk-go/apis/_retry.json delete mode 100644 src/github.com/getlantern/aws-sdk-go/apis/autoscaling/2011-01-01.normal.json delete mode 100644 src/github.com/getlantern/aws-sdk-go/apis/autoscaling/2011-01-01.paginators.json delete mode 100644 src/github.com/getlantern/aws-sdk-go/apis/cloudformation/2010-05-15.normal.json delete mode 100644 src/github.com/getlantern/aws-sdk-go/apis/cloudformation/2010-05-15.paginators.json delete mode 100644 src/github.com/getlantern/aws-sdk-go/apis/cloudfront/2014-05-31.normal.json delete mode 100644 src/github.com/getlantern/aws-sdk-go/apis/cloudfront/2014-05-31.paginators.json delete mode 100644 src/github.com/getlantern/aws-sdk-go/apis/cloudfront/2014-05-31.waiters.json delete mode 100644 src/github.com/getlantern/aws-sdk-go/apis/cloudfront/2014-10-21.normal.json delete mode 100644 src/github.com/getlantern/aws-sdk-go/apis/cloudfront/2014-10-21.paginators.json delete mode 100644 src/github.com/getlantern/aws-sdk-go/apis/cloudfront/2014-10-21.waiters.json delete mode 100644 src/github.com/getlantern/aws-sdk-go/apis/cloudhsm/2014-05-30.normal.json delete mode 100644 src/github.com/getlantern/aws-sdk-go/apis/cloudsearch/2013-01-01.normal.json delete mode 100644 src/github.com/getlantern/aws-sdk-go/apis/cloudsearchdomain/2013-01-01.normal.json delete mode 100644 src/github.com/getlantern/aws-sdk-go/apis/cloudtrail/2013-11-01.normal.json delete mode 100644 src/github.com/getlantern/aws-sdk-go/apis/cloudwatch/2010-08-01.normal.json delete mode 100644 src/github.com/getlantern/aws-sdk-go/apis/cloudwatch/2010-08-01.paginators.json delete mode 100644 src/github.com/getlantern/aws-sdk-go/apis/codedeploy/2014-10-06.normal.json delete mode 100644 src/github.com/getlantern/aws-sdk-go/apis/cognito-identity/2014-06-30.normal.json delete mode 100644 src/github.com/getlantern/aws-sdk-go/apis/cognito-sync/2014-06-30.normal.json delete mode 100644 src/github.com/getlantern/aws-sdk-go/apis/config/2014-11-12.normal.json delete mode 100644 src/github.com/getlantern/aws-sdk-go/apis/datapipeline/2012-10-29.normal.json delete mode 100644 src/github.com/getlantern/aws-sdk-go/apis/datapipeline/2012-10-29.paginators.json delete mode 100644 src/github.com/getlantern/aws-sdk-go/apis/directconnect/2012-10-25.normal.json delete mode 100644 src/github.com/getlantern/aws-sdk-go/apis/dynamodb/2012-08-10.normal.json delete mode 100644 src/github.com/getlantern/aws-sdk-go/apis/dynamodb/2012-08-10.paginators.json delete mode 100644 src/github.com/getlantern/aws-sdk-go/apis/dynamodb/2012-08-10.waiters.json delete mode 100644 src/github.com/getlantern/aws-sdk-go/apis/ec2/2014-09-01.normal.json delete mode 100644 src/github.com/getlantern/aws-sdk-go/apis/ec2/2014-09-01.paginators.json delete mode 100644 src/github.com/getlantern/aws-sdk-go/apis/ec2/2014-09-01.waiters.json delete mode 100644 src/github.com/getlantern/aws-sdk-go/apis/ec2/2014-10-01.normal.json delete mode 100644 src/github.com/getlantern/aws-sdk-go/apis/ec2/2014-10-01.paginators.json delete mode 100644 src/github.com/getlantern/aws-sdk-go/apis/ec2/2014-10-01.waiters.json delete mode 100644 src/github.com/getlantern/aws-sdk-go/apis/ecs/2014-11-13.normal.json delete mode 100644 src/github.com/getlantern/aws-sdk-go/apis/elasticache/2014-09-30.normal.json delete mode 100644 src/github.com/getlantern/aws-sdk-go/apis/elasticache/2014-09-30.paginators.json delete mode 100644 src/github.com/getlantern/aws-sdk-go/apis/elasticbeanstalk/2010-12-01.normal.json delete mode 100644 src/github.com/getlantern/aws-sdk-go/apis/elasticbeanstalk/2010-12-01.paginators.json delete mode 100644 src/github.com/getlantern/aws-sdk-go/apis/elastictranscoder/2012-09-25.normal.json delete mode 100644 src/github.com/getlantern/aws-sdk-go/apis/elastictranscoder/2012-09-25.paginators.json delete mode 100644 src/github.com/getlantern/aws-sdk-go/apis/elastictranscoder/2012-09-25.waiters.json delete mode 100644 src/github.com/getlantern/aws-sdk-go/apis/elb/2012-06-01.normal.json delete mode 100644 src/github.com/getlantern/aws-sdk-go/apis/elb/2012-06-01.paginators.json delete mode 100644 src/github.com/getlantern/aws-sdk-go/apis/emr/2009-03-31.normal.json delete mode 100644 src/github.com/getlantern/aws-sdk-go/apis/emr/2009-03-31.paginators.json delete mode 100644 src/github.com/getlantern/aws-sdk-go/apis/emr/2009-03-31.waiters.json delete mode 100644 src/github.com/getlantern/aws-sdk-go/apis/glacier/2012-06-01.normal.json delete mode 100644 src/github.com/getlantern/aws-sdk-go/apis/iam/2010-05-08.normal.json delete mode 100644 src/github.com/getlantern/aws-sdk-go/apis/iam/2010-05-08.paginators.json delete mode 100644 src/github.com/getlantern/aws-sdk-go/apis/importexport/2010-06-01.normal.json delete mode 100644 src/github.com/getlantern/aws-sdk-go/apis/importexport/2010-06-01.paginators.json delete mode 100644 src/github.com/getlantern/aws-sdk-go/apis/kinesis/2013-12-02.normal.json delete mode 100644 src/github.com/getlantern/aws-sdk-go/apis/kinesis/2013-12-02.paginators.json delete mode 100644 src/github.com/getlantern/aws-sdk-go/apis/kinesis/2013-12-02.waiters.json delete mode 100644 src/github.com/getlantern/aws-sdk-go/apis/kms/2014-11-01.normal.json delete mode 100644 src/github.com/getlantern/aws-sdk-go/apis/lambda/2014-11-11.normal.json delete mode 100644 src/github.com/getlantern/aws-sdk-go/apis/logs/2014-03-28.normal.json delete mode 100644 src/github.com/getlantern/aws-sdk-go/apis/opsworks/2013-02-18.normal.json delete mode 100644 src/github.com/getlantern/aws-sdk-go/apis/rds/2014-09-01.normal.json delete mode 100644 src/github.com/getlantern/aws-sdk-go/apis/rds/2014-09-01.paginators.json delete mode 100644 src/github.com/getlantern/aws-sdk-go/apis/rds/2014-09-01.waiters.json delete mode 100644 src/github.com/getlantern/aws-sdk-go/apis/rds/2014-10-31.normal.json delete mode 100644 src/github.com/getlantern/aws-sdk-go/apis/rds/2014-10-31.paginators.json delete mode 100644 src/github.com/getlantern/aws-sdk-go/apis/rds/2014-10-31.waiters.json delete mode 100644 src/github.com/getlantern/aws-sdk-go/apis/redshift/2012-12-01.normal.json delete mode 100644 src/github.com/getlantern/aws-sdk-go/apis/redshift/2012-12-01.paginators.json delete mode 100644 src/github.com/getlantern/aws-sdk-go/apis/redshift/2012-12-01.waiters.json delete mode 100644 src/github.com/getlantern/aws-sdk-go/apis/route53/2013-04-01.normal.json delete mode 100644 src/github.com/getlantern/aws-sdk-go/apis/route53/2013-04-01.paginators.json delete mode 100644 src/github.com/getlantern/aws-sdk-go/apis/route53domains/2014-05-15.normal.json delete mode 100644 src/github.com/getlantern/aws-sdk-go/apis/s3/2006-03-01.normal.json delete mode 100644 src/github.com/getlantern/aws-sdk-go/apis/s3/2006-03-01.paginators.json delete mode 100644 src/github.com/getlantern/aws-sdk-go/apis/s3/2006-03-01.waiters.json delete mode 100644 src/github.com/getlantern/aws-sdk-go/apis/sdb/2009-04-15.normal.json delete mode 100644 src/github.com/getlantern/aws-sdk-go/apis/sdb/2009-04-15.paginators.json delete mode 100644 src/github.com/getlantern/aws-sdk-go/apis/ses/2010-12-01.normal.json delete mode 100644 src/github.com/getlantern/aws-sdk-go/apis/ses/2010-12-01.paginators.json delete mode 100644 src/github.com/getlantern/aws-sdk-go/apis/ses/2010-12-01.waiters.json delete mode 100644 src/github.com/getlantern/aws-sdk-go/apis/sns/2010-03-31.normal.json delete mode 100644 src/github.com/getlantern/aws-sdk-go/apis/sns/2010-03-31.paginators.json delete mode 100644 src/github.com/getlantern/aws-sdk-go/apis/sqs/2012-11-05.normal.json delete mode 100644 src/github.com/getlantern/aws-sdk-go/apis/storagegateway/2013-06-30.normal.json delete mode 100644 src/github.com/getlantern/aws-sdk-go/apis/storagegateway/2013-06-30.paginators.json delete mode 100644 src/github.com/getlantern/aws-sdk-go/apis/sts/2011-06-15.normal.json delete mode 100644 src/github.com/getlantern/aws-sdk-go/apis/support/2013-04-15.normal.json delete mode 100644 src/github.com/getlantern/aws-sdk-go/apis/support/2013-04-15.paginators.json delete mode 100644 src/github.com/getlantern/aws-sdk-go/apis/swf/2012-01-25.normal.json delete mode 100644 src/github.com/getlantern/aws-sdk-go/apis/swf/2012-01-25.paginators.json delete mode 100644 src/github.com/getlantern/aws-sdk-go/aws/auth.go delete mode 100644 src/github.com/getlantern/aws-sdk-go/aws/auth_test.go delete mode 100644 src/github.com/getlantern/aws-sdk-go/aws/doc.go delete mode 100644 src/github.com/getlantern/aws-sdk-go/aws/ec2.go delete mode 100644 src/github.com/getlantern/aws-sdk-go/aws/ec2_test.go delete mode 100644 src/github.com/getlantern/aws-sdk-go/aws/error.go delete mode 100644 src/github.com/getlantern/aws-sdk-go/aws/example.ini delete mode 100644 src/github.com/getlantern/aws-sdk-go/aws/json.go delete mode 100644 src/github.com/getlantern/aws-sdk-go/aws/json_test.go delete mode 100644 src/github.com/getlantern/aws-sdk-go/aws/query.go delete mode 100644 src/github.com/getlantern/aws-sdk-go/aws/query_test.go delete mode 100644 src/github.com/getlantern/aws-sdk-go/aws/rest.go delete mode 100644 src/github.com/getlantern/aws-sdk-go/aws/rest_test.go delete mode 100644 src/github.com/getlantern/aws-sdk-go/aws/types.go delete mode 100644 src/github.com/getlantern/aws-sdk-go/aws/types_test.go delete mode 100644 src/github.com/getlantern/aws-sdk-go/aws/v4.go delete mode 100644 src/github.com/getlantern/aws-sdk-go/aws/v4_test.go delete mode 100644 src/github.com/getlantern/aws-sdk-go/aws/xml.go delete mode 100644 src/github.com/getlantern/aws-sdk-go/aws/xml_test.go delete mode 100644 src/github.com/getlantern/aws-sdk-go/cfn/autoscaling.go delete mode 100644 src/github.com/getlantern/aws-sdk-go/cfn/cfn.go delete mode 100644 src/github.com/getlantern/aws-sdk-go/cfn/cloudtrail.go delete mode 100644 src/github.com/getlantern/aws-sdk-go/cfn/cloudwatch.go delete mode 100644 src/github.com/getlantern/aws-sdk-go/cfn/dynamodb.go delete mode 100644 src/github.com/getlantern/aws-sdk-go/cfn/ec2.go delete mode 100644 src/github.com/getlantern/aws-sdk-go/cfn/elb.go delete mode 100644 src/github.com/getlantern/aws-sdk-go/cfn/funcs.go delete mode 100644 src/github.com/getlantern/aws-sdk-go/cfn/iam.go delete mode 100644 src/github.com/getlantern/aws-sdk-go/cfn/rds.go delete mode 100644 src/github.com/getlantern/aws-sdk-go/cfn/s3.go delete mode 100644 src/github.com/getlantern/aws-sdk-go/cmd/aws-gen-gocli/aws-gen-gocli.go delete mode 100644 src/github.com/getlantern/aws-sdk-go/cmd/aws-gen-goendpoints/aws-gen-goendpoints.go delete mode 100644 src/github.com/getlantern/aws-sdk-go/gen/autoscaling/autoscaling.go delete mode 100644 src/github.com/getlantern/aws-sdk-go/gen/cloudformation/cloudformation.go delete mode 100644 src/github.com/getlantern/aws-sdk-go/gen/cloudfront/cloudfront.go delete mode 100644 src/github.com/getlantern/aws-sdk-go/gen/cloudhsm/cloudhsm.go delete mode 100644 src/github.com/getlantern/aws-sdk-go/gen/cloudsearch/cloudsearch.go delete mode 100644 src/github.com/getlantern/aws-sdk-go/gen/cloudsearchdomain/cloudsearchdomain.go delete mode 100644 src/github.com/getlantern/aws-sdk-go/gen/cloudtrail/cloudtrail.go delete mode 100644 src/github.com/getlantern/aws-sdk-go/gen/cloudwatch/cloudwatch.go delete mode 100644 src/github.com/getlantern/aws-sdk-go/gen/codedeploy/codedeploy.go delete mode 100644 src/github.com/getlantern/aws-sdk-go/gen/cognito/identity/identity.go delete mode 100644 src/github.com/getlantern/aws-sdk-go/gen/cognito/sync/sync.go delete mode 100644 src/github.com/getlantern/aws-sdk-go/gen/config/config.go delete mode 100644 src/github.com/getlantern/aws-sdk-go/gen/datapipeline/datapipeline.go delete mode 100644 src/github.com/getlantern/aws-sdk-go/gen/directconnect/directconnect.go delete mode 100644 src/github.com/getlantern/aws-sdk-go/gen/dynamodb/dynamodb.go delete mode 100644 src/github.com/getlantern/aws-sdk-go/gen/ec2/ec2.go delete mode 100644 src/github.com/getlantern/aws-sdk-go/gen/ecs/ecs.go delete mode 100644 src/github.com/getlantern/aws-sdk-go/gen/elasticache/elasticache.go delete mode 100644 src/github.com/getlantern/aws-sdk-go/gen/elasticbeanstalk/elasticbeanstalk.go delete mode 100644 src/github.com/getlantern/aws-sdk-go/gen/elastictranscoder/elastictranscoder.go delete mode 100644 src/github.com/getlantern/aws-sdk-go/gen/elb/elb.go delete mode 100644 src/github.com/getlantern/aws-sdk-go/gen/emr/emr.go delete mode 100644 src/github.com/getlantern/aws-sdk-go/gen/endpoints/endpoints.go delete mode 100644 src/github.com/getlantern/aws-sdk-go/gen/gen.go delete mode 100644 src/github.com/getlantern/aws-sdk-go/gen/glacier/glacier.go delete mode 100644 src/github.com/getlantern/aws-sdk-go/gen/iam/iam.go delete mode 100644 src/github.com/getlantern/aws-sdk-go/gen/importexport/importexport.go delete mode 100644 src/github.com/getlantern/aws-sdk-go/gen/kinesis/kinesis.go delete mode 100644 src/github.com/getlantern/aws-sdk-go/gen/kms/kms.go delete mode 100644 src/github.com/getlantern/aws-sdk-go/gen/lambda/lambda.go delete mode 100644 src/github.com/getlantern/aws-sdk-go/gen/logs/logs.go delete mode 100644 src/github.com/getlantern/aws-sdk-go/gen/opsworks/opsworks.go delete mode 100644 src/github.com/getlantern/aws-sdk-go/gen/rds/rds.go delete mode 100644 src/github.com/getlantern/aws-sdk-go/gen/redshift/redshift.go delete mode 100644 src/github.com/getlantern/aws-sdk-go/gen/route53/route53.go delete mode 100644 src/github.com/getlantern/aws-sdk-go/gen/route53domains/route53domains.go delete mode 100644 src/github.com/getlantern/aws-sdk-go/gen/s3/s3.go delete mode 100644 src/github.com/getlantern/aws-sdk-go/gen/sdb/sdb.go delete mode 100644 src/github.com/getlantern/aws-sdk-go/gen/ses/ses.go delete mode 100644 src/github.com/getlantern/aws-sdk-go/gen/sns/sns.go delete mode 100644 src/github.com/getlantern/aws-sdk-go/gen/sqs/sqs.go delete mode 100644 src/github.com/getlantern/aws-sdk-go/gen/storagegateway/storagegateway.go delete mode 100644 src/github.com/getlantern/aws-sdk-go/gen/sts/sts.go delete mode 100644 src/github.com/getlantern/aws-sdk-go/gen/support/support.go delete mode 100644 src/github.com/getlantern/aws-sdk-go/gen/swf/swf.go delete mode 100644 src/github.com/getlantern/aws-sdk-go/internal/internal.go delete mode 100644 src/github.com/getlantern/aws-sdk-go/internal/route53_serialization_test.go delete mode 100644 src/github.com/getlantern/aws-sdk-go/internal/unmarshal_xml_test.go delete mode 100644 src/github.com/getlantern/aws-sdk-go/model/endpoints.go delete mode 100644 src/github.com/getlantern/aws-sdk-go/model/helpers.go delete mode 100644 src/github.com/getlantern/aws-sdk-go/model/model.go delete mode 100644 src/github.com/getlantern/aws-sdk-go/model/templates.go delete mode 100644 src/github.com/getlantern/enproxy/.gitignore delete mode 100644 src/github.com/getlantern/enproxy/.travis.yml delete mode 100644 src/github.com/getlantern/enproxy/LICENSE delete mode 100644 src/github.com/getlantern/enproxy/README.md delete mode 100644 src/github.com/getlantern/enproxy/conn_impl.go delete mode 100644 src/github.com/getlantern/enproxy/conn_impl_reads.go delete mode 100644 src/github.com/getlantern/enproxy/conn_impl_requests.go delete mode 100644 src/github.com/getlantern/enproxy/conn_impl_writes.go delete mode 100644 src/github.com/getlantern/enproxy/conn_intf.go delete mode 100644 src/github.com/getlantern/enproxy/conn_test.go delete mode 100644 src/github.com/getlantern/enproxy/lazyconn.go delete mode 100644 src/github.com/getlantern/enproxy/metrics.go delete mode 100644 src/github.com/getlantern/enproxy/proxy.go delete mode 100644 src/github.com/getlantern/enproxy/proxy_test.go delete mode 100644 src/github.com/getlantern/enproxy/request_strategy.go delete mode 100644 src/github.com/getlantern/enproxy/test/client/client.go delete mode 100644 src/github.com/getlantern/enproxy/test/client/conn_http.go delete mode 100644 src/github.com/getlantern/enproxy/test/server/server.go create mode 100644 src/github.com/getlantern/flashlight/app/app.go rename src/github.com/getlantern/flashlight/{main => app}/autoupdate.go (97%) create mode 100644 src/github.com/getlantern/flashlight/app/config-template.yaml create mode 100644 src/github.com/getlantern/flashlight/app/integration_test.go rename src/github.com/getlantern/flashlight/{main => app}/pac.go (97%) rename src/github.com/getlantern/flashlight/{main => app}/settings.go (99%) rename src/github.com/getlantern/flashlight/{main => app}/settings_test.go (96%) rename src/github.com/getlantern/flashlight/{main => app}/test.yaml (100%) rename src/github.com/getlantern/flashlight/{main => icons}/icons.go (99%) delete mode 100644 src/github.com/getlantern/flashlight/localdiscovery/localdiscovery.go delete mode 100644 src/github.com/getlantern/go-igdman/.travis.yml delete mode 100644 src/github.com/getlantern/go-igdman/LICENSE delete mode 100644 src/github.com/getlantern/go-igdman/README.md delete mode 100755 src/github.com/getlantern/go-igdman/binaries/osx/upnpc delete mode 100644 src/github.com/getlantern/go-igdman/binaries/upnpc-windows-unsigned delete mode 100644 src/github.com/getlantern/go-igdman/binaries/windows/upnpc delete mode 100755 src/github.com/getlantern/go-igdman/embedupnpc.bash delete mode 100644 src/github.com/getlantern/go-igdman/igdman/igdman.go delete mode 100644 src/github.com/getlantern/go-igdman/igdman/igdman_test.go delete mode 100644 src/github.com/getlantern/go-igdman/igdman/igdman_unix_test.go delete mode 100644 src/github.com/getlantern/go-igdman/igdman/igdman_windows_test.go delete mode 100644 src/github.com/getlantern/go-igdman/igdman/natpmp.go delete mode 100644 src/github.com/getlantern/go-igdman/igdman/upnp.go delete mode 100644 src/github.com/getlantern/go-igdman/igdman/upnpc_darwin.go delete mode 100644 src/github.com/getlantern/go-igdman/igdman/upnpc_linux_386.go delete mode 100644 src/github.com/getlantern/go-igdman/igdman/upnpc_linux_amd64.go delete mode 100644 src/github.com/getlantern/go-igdman/igdman/upnpc_linux_arm.go delete mode 100644 src/github.com/getlantern/go-igdman/igdman/upnpc_windows.go delete mode 100644 src/github.com/getlantern/go-igdman/igdman/util_darwin.go delete mode 100644 src/github.com/getlantern/go-igdman/igdman/util_linux.go delete mode 100644 src/github.com/getlantern/go-igdman/igdman/util_test.go delete mode 100644 src/github.com/getlantern/go-igdman/igdman/util_windows.go create mode 100644 src/github.com/getlantern/http-proxy/.gitignore create mode 100644 src/github.com/getlantern/http-proxy/.travis.yml rename src/github.com/getlantern/{lantern-mobile/lantern => http-proxy}/LICENSE (99%) create mode 100644 src/github.com/getlantern/http-proxy/README.md create mode 100644 src/github.com/getlantern/http-proxy/commonfilter/commonfilter.go create mode 100644 src/github.com/getlantern/http-proxy/forward/forward.go create mode 100644 src/github.com/getlantern/http-proxy/forward/forward_test.go create mode 100644 src/github.com/getlantern/http-proxy/forward/rewrite.go create mode 100644 src/github.com/getlantern/http-proxy/forward/utils.go create mode 100644 src/github.com/getlantern/http-proxy/http_proxy.go create mode 100644 src/github.com/getlantern/http-proxy/http_proxy_test.go create mode 100644 src/github.com/getlantern/http-proxy/httpconnect/httpconnect.go create mode 100644 src/github.com/getlantern/http-proxy/httpconnect/httpconnect_test.go create mode 100644 src/github.com/getlantern/http-proxy/listeners/default.go create mode 100644 src/github.com/getlantern/http-proxy/listeners/idleconn.go create mode 100644 src/github.com/getlantern/http-proxy/listeners/limited.go create mode 100644 src/github.com/getlantern/http-proxy/listeners/measured.go create mode 100644 src/github.com/getlantern/http-proxy/listeners/wrapconn.go create mode 100644 src/github.com/getlantern/http-proxy/logging/logging.go create mode 100644 src/github.com/getlantern/http-proxy/logging/logging_test.go create mode 100644 src/github.com/getlantern/http-proxy/server/connbag.go create mode 100644 src/github.com/getlantern/http-proxy/server/server.go create mode 100644 src/github.com/getlantern/http-proxy/utils/errorhandler.go create mode 100644 src/github.com/getlantern/http-proxy/utils/responses.go delete mode 100644 src/github.com/getlantern/lantern-mobile/lantern/Dockerfile delete mode 100644 src/github.com/getlantern/lantern-mobile/lantern/README.md delete mode 100644 src/github.com/getlantern/lantern-mobile/lantern/interceptor/conn.go delete mode 100644 src/github.com/getlantern/lantern-mobile/lantern/interceptor/interceptor.go delete mode 100644 src/github.com/getlantern/lantern-mobile/lantern/interceptor/interceptor_test.go delete mode 100644 src/github.com/getlantern/lantern-mobile/lantern/interface.go delete mode 100644 src/github.com/getlantern/lantern-mobile/lantern/interface_test.go delete mode 100644 src/github.com/getlantern/lantern-mobile/lantern/protected/protected.go delete mode 100644 src/github.com/getlantern/lantern-mobile/lantern/protected/protected_test.go delete mode 100644 src/github.com/getlantern/lantern-mobile/lantern/protected/resolver.go delete mode 100644 src/github.com/getlantern/lantern-mobile/lantern/socks-server/main.go delete mode 100644 src/github.com/getlantern/lantern-mobile/lantern/socks/args.go delete mode 100644 src/github.com/getlantern/lantern-mobile/lantern/socks/socks.go delete mode 100644 src/github.com/getlantern/lantern-ui/app/bower_components/ngInfiniteScroll/.bower.json delete mode 100644 src/github.com/getlantern/lantern-ui/app/bower_components/ngInfiniteScroll/LICENSE delete mode 100644 src/github.com/getlantern/lantern-ui/app/bower_components/ngInfiniteScroll/README.md delete mode 100644 src/github.com/getlantern/lantern-ui/app/bower_components/ngInfiniteScroll/bower.json delete mode 100644 src/github.com/getlantern/lantern-ui/app/bower_components/ngInfiniteScroll/build/ng-infinite-scroll.min.js delete mode 100644 src/github.com/getlantern/lantern-ui/app/bower_components/ngInfiniteScroll/package.json delete mode 100644 src/github.com/getlantern/lantern-ui/app/bower_components/ngInfiniteScroll/src/infinite-scroll.coffee create mode 100644 src/github.com/getlantern/lantern-ui/app/img/ic_list_black_24px.svg create mode 100644 src/github.com/getlantern/lantern-ui/app/img/ic_list_gray_24px.svg rename src/github.com/getlantern/{peerscanner => measured}/.gitignore (95%) rename src/github.com/getlantern/{autoupdate-server => measured}/LICENSE (99%) create mode 100644 src/github.com/getlantern/measured/README.md create mode 100644 src/github.com/getlantern/measured/measured.go create mode 100644 src/github.com/getlantern/measured/measured_test.go create mode 100644 src/github.com/getlantern/measured/reporter/influxdb.go create mode 100644 src/github.com/getlantern/measured/reporter/influxdb_test.go delete mode 100644 src/github.com/getlantern/multicast/cmd/multicast.go delete mode 100644 src/github.com/getlantern/multicast/message.go delete mode 100755 src/github.com/getlantern/multicast/multicast delete mode 100644 src/github.com/getlantern/multicast/multicast.go delete mode 100644 src/github.com/getlantern/multicast/multicast_test.go delete mode 100644 src/github.com/getlantern/peerscanner/LICENSE delete mode 100644 src/github.com/getlantern/peerscanner/README.md delete mode 100644 src/github.com/getlantern/peerscanner/cfl/cfl.go delete mode 100644 src/github.com/getlantern/peerscanner/cfl/cfl_test.go delete mode 100644 src/github.com/getlantern/peerscanner/cflgroup.go delete mode 100644 src/github.com/getlantern/peerscanner/cfr/cfr.go delete mode 100644 src/github.com/getlantern/peerscanner/cfr/cfr_test.go delete mode 100644 src/github.com/getlantern/peerscanner/cfr/cfrjanitor/cfrjanitor.go delete mode 100644 src/github.com/getlantern/peerscanner/dsp/dsp.go delete mode 100644 src/github.com/getlantern/peerscanner/dsp/dsp_test.go delete mode 100644 src/github.com/getlantern/peerscanner/dspgroup.go.disabled-temporarily delete mode 100644 src/github.com/getlantern/peerscanner/dupecheck/dupecheck.go delete mode 100644 src/github.com/getlantern/peerscanner/host.go delete mode 100644 src/github.com/getlantern/peerscanner/main.go delete mode 100644 src/github.com/getlantern/peerscanner/web.go diff --git a/src/github.com/getlantern/analytics/analytics.go b/src/github.com/getlantern/analytics/analytics.go deleted file mode 100644 index f55d99ccb0..0000000000 --- a/src/github.com/getlantern/analytics/analytics.go +++ /dev/null @@ -1,206 +0,0 @@ -package analytics - -import ( - "bytes" - "net/http" - "net/http/httputil" - "net/url" - "runtime" - "strconv" - - "github.com/getlantern/eventual" - "github.com/getlantern/flashlight/util" - "github.com/getlantern/golog" -) - -const ( - ApiEndpoint = `https://ssl.google-analytics.com/collect` - ProtocolVersion = "1" - DefaultInstanceId = "555" -) - -var ( - log = golog.LoggerFor("analytics") - httpClient *http.Client - ip string -) - -type HitType string - -const ( - PageViewType HitType = "pageview" - EventType HitType = "event" -) - -type PageView struct { - Hostname string `param:"dh"` - Pagename string `param:"dp"` - Title string `param:"dt"` -} - -type Event struct { - Category string `param:"ec"` - Action string `param:"ea"` - Label string `param:"el,omitempty"` - Value string `param:"ev,omitempty"` -} - -type Payload struct { - ClientId string `json:"clientId"` - - ClientVersion string `json:"clientVersion,omitempty"` - - ViewPortSize string `json:"viewPortSize,omitempty"` - - TrackingId string `json:"trackingId"` - - Language string `json:"language,omitempty"` - - ScreenColors string `json:"screenColors,omitempty"` - - ScreenResolution string `json:"screenResolution,omitempty"` - - Hostname string `json:"hostname,omitempty"` - - HitType HitType `json:"hitType,omitempty"` - - CustomVars map[string]string - - UserAgent string - - Event *Event -} - -func Configure(addr string, trackingId string, version string, proxyAddr string) { - ip = addr - var err error - go func() { - httpClient, err = util.HTTPClient("", eventual.DefaultGetter(proxyAddr)) - if err != nil { - log.Errorf("Could not create HTTP client via %s: %s", proxyAddr, err) - return - } - // Store new session info whenever client proxy is ready - if status, err := sessionEvent(trackingId, version); err != nil { - log.Errorf("Unable to store new session info: %v", err) - } else { - log.Tracef("Storing new session info: %v", status) - } - }() -} - -// assemble list of parameters to send to GA -func collectArgs(payload *Payload) string { - vals := make(url.Values, 0) - - // Add default payload - vals.Add("v", ProtocolVersion) - - // Override the users IP so we get accurate geo data. - vals.Add("uip", ip) - - // Make call to anonymize the user's IP address. - vals.Add("aip", "1") - - if payload.ClientVersion != "" { - vals.Add("_v", payload.ClientVersion) - } - if payload.TrackingId != "" { - vals.Add("tid", payload.TrackingId) - } - if payload.ClientId != "" { - vals.Add("cid", payload.ClientId) - } - - if payload.ScreenResolution != "" { - vals.Add("sr", payload.ScreenResolution) - } - if payload.Language != "" { - vals.Add("ul", payload.Language) - } - - vals.Add("dh", payload.Hostname) - - vals.Add("t", string(payload.HitType)) - - if payload.HitType == EventType && payload.Event != nil { - vals.Add("ec", payload.Event.Category) - vals.Add("ea", payload.Event.Action) - if payload.Event.Label != "" { - vals.Add("el", payload.Event.Label) - } - if payload.Event.Value != "" { - vals.Add("ev", payload.Event.Value) - } - } - - for dim, customVar := range payload.CustomVars { - if customVar != "" { - vals.Add(dim, customVar) - } - } - - return vals.Encode() -} - -// Makes a tracking request to Google Analytics -func SendRequest(payload *Payload) (status bool, err error) { - if httpClient == nil { - log.Error("No HTTP client; could not send HTTP request to GA") - return false, nil - } - - args := collectArgs(payload) - - r, err := http.NewRequest("POST", ApiEndpoint, bytes.NewBufferString(args)) - - if err != nil { - log.Errorf("Error constructing GA request: %s", err) - return false, err - } - - r.Header.Add("Content-Type", "application/x-www-form-urlencoded") - r.Header.Add("Content-Length", strconv.Itoa(len(args))) - - if req, err := httputil.DumpRequestOut(r, true); err != nil { - log.Debugf("Could not dump request: %v", err) - } else { - log.Debugf("Full analytics request: %v", string(req)) - } - - resp, err := httpClient.Do(r) - if err != nil { - log.Errorf("Could not send HTTP request to GA: %s", err) - return false, err - } - log.Debugf("Successfully sent request to GA: %s", resp.Status) - defer func() { - if err := resp.Body.Close(); err != nil { - log.Debugf("Unable to close response body: %v", err) - } - }() - return true, nil -} - -// Fired whenever a new Lanern session is initiated -func sessionEvent(trackingId string, version string) (status bool, err error) { - - sessionPayload := &Payload{ - HitType: EventType, - TrackingId: trackingId, - Hostname: "localhost", - ClientId: DefaultInstanceId, - Event: &Event{ - Category: "Session", - Action: "Start", - Label: runtime.GOOS, - }, - } - - if version != "" { - sessionPayload.CustomVars = map[string]string{ - "cd1": version, - } - } - return SendRequest(sessionPayload) -} diff --git a/src/github.com/getlantern/analytics/analytics_test.go b/src/github.com/getlantern/analytics/analytics_test.go deleted file mode 100644 index c225848dd2..0000000000 --- a/src/github.com/getlantern/analytics/analytics_test.go +++ /dev/null @@ -1,29 +0,0 @@ -package analytics - -import ( - "net/http" - "testing" - - "github.com/stretchr/testify/assert" -) - -func samplePayload() *Payload { - payload := &Payload{ - TrackingId: "UA-21815217-2", - ClientId: "test-client-555", - } - - return payload -} - -func TestAnalyticsRequest(t *testing.T) { - - httpClient = &http.Client{} - - p := samplePayload() - - status, err := SendRequest(p) - assert.Nil(t, err) - assert.Equal(t, true, status) - -} diff --git a/src/github.com/getlantern/autoupdate-server/.gitignore b/src/github.com/getlantern/autoupdate-server/.gitignore deleted file mode 100644 index bae4b90c10..0000000000 --- a/src/github.com/getlantern/autoupdate-server/.gitignore +++ /dev/null @@ -1,7 +0,0 @@ -*.swp -*.sw? -*.pem -autoupdate-server -assets/ -server/_tests -server/patches diff --git a/src/github.com/getlantern/autoupdate-server/Makefile b/src/github.com/getlantern/autoupdate-server/Makefile deleted file mode 100644 index 5580cd2bc1..0000000000 --- a/src/github.com/getlantern/autoupdate-server/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -all: clean - GOOS=linux GOARCH=amd64 go build -o autoupdate-server - -clean: - rm -rf autoupdate-server patches assets diff --git a/src/github.com/getlantern/autoupdate-server/README.md b/src/github.com/getlantern/autoupdate-server/README.md deleted file mode 100644 index 3168f4506f..0000000000 --- a/src/github.com/getlantern/autoupdate-server/README.md +++ /dev/null @@ -1,98 +0,0 @@ -# autoupdate-server - -The autoupdate-server package provides a server that allows Lantern clients to -compare their running software version against releases posted at -[Github](https://www.github.com), if a new version is available, the -autoupdate-server will provide a binary diff that the client can use to patch -itself. - -## Features - -* Uses Github releases. -* Generates binary diffs. - -## Requisites - -Make sure you have the [bsdiff](http://www.daemonology.net/bsdiff/) program -installed: - -``` -apt-get instal -y bsdiff -yum install -y bsdiff -brew install bsdiff -``` - -The `bsdiff` program is used to calculate a binary diff of two files and -generate a patch. - -In order to sign binary files you'll need a keypair: - -```sh -openssl genrsa -out private.pem 2048 -openssl rsa -in private.pem -out public.pem -pubout -``` - -The private key must match the public key set in the autoupdate package -configuration. - -## How to run the autoupdate server - -``` -./autoupdate-server -k private.pem -``` - -## Just testing? - -Sure! Use this private key: - -``` ------BEGIN RSA PRIVATE KEY----- -MIIEpAIBAAKCAQEAzSoibtACnqcp2uTGjCMJtTOLDIMQ4oGPhGHT4Q/epum+H3hc -bBNs9jRnMRWgX4z++xxuNJnhmoJw0eUXB7B4vj5DYpPajq6gPY8JuraF4ngfP5ox -Kj2BqpEUR9bx+3SjOSInrirM0JZO+aAW38BQNJB+sS7JvbPjcwdjwKc5IKzc9kxx -JNoZoFE9GMnYzaOrAlpCuAKWH8SCXYtCTxsXfKexdDxsI5Vzm5lQHJLMeqhLTQTU -m9oQofwNAOGOkn6dD4ObMlmFTOsf1G03/Dl9sVgjaWaZ9bGjvJ9B85UxNeWwduy+ -uMrqFytxG6bbq0PbDEVu6ZQCPyiyCA7l945JOQIDAQABAoIBAQC8AZh8I3HDITxh -srOfR5xlyE3rsU+PwVpa3arj2z8Vha0L+af4AfUfyPWnLUJBTVt7kZoL6derV007 -isuH6Fc9PqFRfFwT1EJTJvireQdHePxptErJgoOIYlpLWtV0sHXCrWHfYKk/m/3T -ErjjYcAd6yuuAkos5OPRTTxEFvlqzlj20i/eWcV9OYQ6fo5YAttHyj2c/b8ZBO3u -aYSgeb6SUumzeUDii4CJZVjB9hFtWOy4o+RFcMa+hPb1ROjAVMWZE01fMZPTrAZb -H1ElQQ0iYbFOL9xf/TSvb+bIPEYtzp8gJJbcM+VKoRo5xnRD5htw2rPxTNilTB9Q -5ggZ0IzhAoGBAPPjFome0GKQWTO77FCsUrIX5UNF4EhM4ekj75Lh3kDun5HGhwPf -ezaKkbRV6B7selH2W3vRC7VaKTqxJdPqpqj2q1a2Id2/v1ly97X/4GEcfV50stj7 -QNcDp4IhN1rgFNe21gJEU0jaCWVAAES9ItKcaAa04PLX5E0Qsvq+iic/AoGBANda -tT64BhV+ZNBuJJiBRddZQ2zhfsUU/aU/pX5YnPlsXgIekm9GVaFWklu8gmx5o/TU -mIOMwQFKKSSoNdIp0KFo+sAx4W7aNPlDhx67GkCcs/I1hi7sE8A4uf/C8Ix2ZXlf -qwOE5Hm4sIkrNOdMIwN/JndUcdDRZ6K8nQxndamHAoGBAONMFpomOEJUE76ieujo -4Z13pcUf35qihL17L3GuLixH+NGsu/KBGt1HIep3UgFYFdxDhRmNR6M6J0i7Bu1N -OQwp8J+82S1I4rYj7vdhRSZcnf8lNfYBnHmHv1sJSATa6LHuhd/Q++new3jowBdQ -Sp8NA+qUMz5AtVaZpKUKZcmTAoGAQRDl+/or1Gio2xS8N9uvF16f8ZC79Z3e+QOe -4+qwGug0Cx3jjn1IuANpGxB8s3uZHwrwvaZUVihq/+lWwZXitDH8uP8ZJp4FLV7K -v202hFkUQVUMoravTP+WqwDiHv5SsHZIPDr1sRUtOXR1eoDVf2P2Yk2ASeBLGK82 -IB5OPZcCgYBfNKwnR0QRU0H7kyR6nU3F15mlqxzBQaE0gdXij5JPRpLcjG+RfX83 -caUzdi/ZL6ov5cmnquTRnw8KW9Max9FPPyrrjTSW7h0ESTFcejvvQXyByPbWPwT1 -BL0RSJZb4JgqCtRleQRcQg94+b4gvEllScprTHSQnIbrUVof79FoVQ== ------END RSA PRIVATE KEY----- -``` - -Save it to `private.pem` and run the server pointing to the autoupdate-server -repo that belongs to the getlantern organization: - -```sh -go run *.go -k private.pem -o getlantern -n autoupdate-server -# 2015/03/13 18:22:41 Starting release manager. -# 2015/03/13 18:22:41 Updating assets... -``` - -The private key above matches the public key the -https://github.com/getlantern/autoupdate/tree/master/_test_app example uses. - -The first time you run the server, it will download all required assets, so -you'll probably need to wait a bit before the HTTP server is started. - -Once you see the "Starting HTTP server" message you can continue testing a -running app. - -```sh -# 2015/03/13 18:22:43 Starting up HTTP server at :9197. -``` diff --git a/src/github.com/getlantern/autoupdate-server/config.go b/src/github.com/getlantern/autoupdate-server/config.go deleted file mode 100644 index 1a05af5d3e..0000000000 --- a/src/github.com/getlantern/autoupdate-server/config.go +++ /dev/null @@ -1,10 +0,0 @@ -package main - -import ( - "time" -) - -const ( - githubRefreshTime = time.Minute * 30 - localPatchesDirectory = "./patches/" -) diff --git a/src/github.com/getlantern/autoupdate-server/main.go b/src/github.com/getlantern/autoupdate-server/main.go deleted file mode 100644 index eb7b3d7068..0000000000 --- a/src/github.com/getlantern/autoupdate-server/main.go +++ /dev/null @@ -1,153 +0,0 @@ -package main - -import ( - "encoding/json" - "flag" - "net/http" - "os" - "time" - - "github.com/getlantern/autoupdate-server/server" - "github.com/getlantern/golog" -) - -var ( - flagPrivateKey = flag.String("k", "", "Path to private key.") - flagLocalAddr = flag.String("l", ":6868", "Local bind address.") - flagPublicAddr = flag.String("p", "http://127.0.0.1:6868/", "Public address.") - flagGithubOrganization = flag.String("o", "getlantern", "Github organization.") - flagGithubProject = flag.String("n", "lantern", "Github project name.") - flagHelp = flag.Bool("h", false, "Shows help.") -) - -var ( - log = golog.LoggerFor("autoupdate-server") - releaseManager *server.ReleaseManager -) - -type updateHandler struct { -} - -// updateAssets checks for new assets released on the github releases page. -func updateAssets() error { - log.Debug("Updating assets...") - if err := releaseManager.UpdateAssetsMap(); err != nil { - return err - } - return nil -} - -// backgroundUpdate periodically looks for releases. -func backgroundUpdate() { - for { - time.Sleep(githubRefreshTime) - // Updating assets... - if err := updateAssets(); err != nil { - log.Debugf("updateAssets: %s", err) - } - } -} - -func (u *updateHandler) closeWithStatus(w http.ResponseWriter, status int) { - w.WriteHeader(status) - if _, err := w.Write([]byte(http.StatusText(status))); err != nil { - log.Debugf("Unable to write status: %v", err) - } -} - -func (u *updateHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { - var err error - var res *server.Result - - if r.Method == "POST" { - defer func() { - if err := r.Body.Close(); err != nil { - log.Debugf("Unable to close request body: %v", err) - } - }() - - var params server.Params - decoder := json.NewDecoder(r.Body) - - if err = decoder.Decode(¶ms); err != nil { - u.closeWithStatus(w, http.StatusBadRequest) - return - } - - if res, err = releaseManager.CheckForUpdate(¶ms); err != nil { - log.Debugf("CheckForUpdate failed with error: %q", err) - if err == server.ErrNoUpdateAvailable { - log.Debugf("Got query from client %q/%q, no update available.", params.AppVersion, params.OS) - u.closeWithStatus(w, http.StatusNoContent) - return - } - log.Debugf("Got query from client %q/%q: %q.", err) - u.closeWithStatus(w, http.StatusExpectationFailed) - return - } - - log.Debugf("Got query from client %q/%q, resolved to upgrade to %q using %q strategy.", params.AppVersion, params.OS, res.Version, res.PatchType) - - if res.PatchURL != "" { - res.PatchURL = *flagPublicAddr + res.PatchURL - } - - var content []byte - - if content, err = json.Marshal(res); err != nil { - u.closeWithStatus(w, http.StatusInternalServerError) - return - } - - w.WriteHeader(http.StatusOK) - w.Header().Set("Content-Type", "application/json") - if _, err := w.Write(content); err != nil { - log.Debugf("Unable to write response: %v", err) - } - return - } - u.closeWithStatus(w, http.StatusNotFound) - return -} - -func main() { - - // Parsing flags - flag.Parse() - - if *flagHelp || *flagPrivateKey == "" { - flag.Usage() - os.Exit(0) - } - - server.SetPrivateKey(*flagPrivateKey) - - // Creating release manager. - log.Debug("Starting release manager.") - releaseManager = server.NewReleaseManager(*flagGithubOrganization, *flagGithubProject) - // Getting assets... - if err := updateAssets(); err != nil { - // In this case we will not be able to continue. - log.Fatal(err) - } - - // Setting a goroutine for pulling updates periodically - go backgroundUpdate() - - mux := http.NewServeMux() - - mux.Handle("/update", new(updateHandler)) - mux.Handle("/patches/", http.StripPrefix("/patches/", http.FileServer(http.Dir(localPatchesDirectory)))) - - srv := http.Server{ - Addr: *flagLocalAddr, - Handler: mux, - } - - log.Debugf("Starting up HTTP server at %s.", *flagLocalAddr) - - if err := srv.ListenAndServe(); err != nil { - log.Fatalf("ListenAndServe: ", err) - } - -} diff --git a/src/github.com/getlantern/autoupdate-server/server/asset.go b/src/github.com/getlantern/autoupdate-server/server/asset.go deleted file mode 100644 index 0e2be932aa..0000000000 --- a/src/github.com/getlantern/autoupdate-server/server/asset.go +++ /dev/null @@ -1,75 +0,0 @@ -package server - -import ( - "compress/bzip2" - "crypto/sha256" - "fmt" - "io" - "net/http" - "os" - "path" -) - -const ( - assetsDirectory = "assets/" -) - -func init() { - err := os.MkdirAll(assetsDirectory, os.ModeDir|0700) - if err != nil { - log.Fatalf("Could not create directory for storing assets: %q", err) - } -} - -// downloadAsset grabs the contents of the body of the given URL and stores -// then into $ASSETS_DIRECTORY/$BASENAME.SHA256_SUM($URL) -func downloadAsset(uri string) (localfile string, err error) { - basename := path.Base(uri) - fileExt := path.Ext(basename) - - // We'll be appending 65 chars to create a local file name for the asset, - // this 60-char limit prevents creating a file name longer than 255 chars. We - // could allow a few more characters until 255 but 60 sounds like a sane - // limit. - if len(basename) > 60 { - basename = basename[:60] - } - - localfile = assetsDirectory + fmt.Sprintf("%s.%x", basename, sha256.Sum256([]byte(uri))) - - if !fileExists(localfile) { - var body io.Reader - var res *http.Response - - if res, err = http.Get(uri); err != nil { - return "", err - } - - if res.StatusCode != http.StatusOK { - return "", fmt.Errorf("Expecting 200 OK, got: %s", res.Status) - } - - defer res.Body.Close() - - var fp *os.File - - if fp, err = os.Create(localfile); err != nil { - return "", err - } - - defer fp.Close() - - if fileExt == ".bz2" { - body = bzip2.NewReader(res.Body) - } else { - body = res.Body - } - - if _, err = io.Copy(fp, body); err != nil { - return "", err - } - - } - - return localfile, nil -} diff --git a/src/github.com/getlantern/autoupdate-server/server/asset_test.go b/src/github.com/getlantern/autoupdate-server/server/asset_test.go deleted file mode 100644 index 65e0bcd4cf..0000000000 --- a/src/github.com/getlantern/autoupdate-server/server/asset_test.go +++ /dev/null @@ -1,16 +0,0 @@ -package server - -import ( - "fmt" - "testing" -) - -const ( - testAssetURL = `https://github.com/getlantern/autoupdate/releases/download/2.0.0-beta3/update_darwin_amd64` -) - -func TestDownloadAsset(t *testing.T) { - if _, err := downloadAsset(testAssetURL); err != nil { - t.Fatal(fmt.Errorf("Failed to download asset: %q", err)) - } -} diff --git a/src/github.com/getlantern/autoupdate-server/server/bindiff.go b/src/github.com/getlantern/autoupdate-server/server/bindiff.go deleted file mode 100644 index ead1775a69..0000000000 --- a/src/github.com/getlantern/autoupdate-server/server/bindiff.go +++ /dev/null @@ -1,136 +0,0 @@ -package server - -import ( - "crypto/sha256" - "fmt" - "io" - "os" - "os/exec" - "sync" -) - -var ( - generatePatchMu sync.Mutex -) - -// Patch struct is a representation of a patch generated by bsdiff. -type Patch struct { - oldfile string - newfile string - File string -} - -const ( - patchesDirectory = "patches/" -) - -func init() { - err := os.MkdirAll(patchesDirectory, os.ModeDir|0700) - if err != nil { - log.Fatalf("Could not create directory for storing patches: %q", err) - } -} - -func fileExists(s string) bool { - if _, err := os.Stat(s); err == nil { - return true - } - return false -} - -func fileHash(s string) string { - var err error - var fp *os.File - - h := sha256.New() - - if fp, err = os.Open(s); err != nil { - log.Fatalf("Failed to open file %s: %q", s, err) - } - defer fp.Close() - - if _, err = io.Copy(h, fp); err != nil { - log.Fatalf("Failed to read file %s: %q", s, err) - } - - return fmt.Sprintf("%x", h.Sum(nil)) -} - -func bspatch(oldfile string, newfile string, patchfile string) (err error) { - if !fileExists(oldfile) { - return fmt.Errorf("File %s does not exist.", oldfile) - } - - if !fileExists(patchfile) { - return fmt.Errorf("File %s does not exist.", oldfile) - } - - cmd := exec.Command( - "bspatch", - oldfile, - newfile, - patchfile, - ) - - if err := cmd.Run(); err != nil { - return fmt.Errorf("Failed to apply patch with bspatch: %q", err) - } - - return nil -} - -func bsdiff(oldfile string, newfile string) (patchfile string, err error) { - - if !fileExists(oldfile) { - return "", fmt.Errorf("File %s does not exist.", oldfile) - } - - if !fileExists(newfile) { - return "", fmt.Errorf("File %s does not exist.", oldfile) - } - - oldfileHash := fileHash(oldfile) - newfileHash := fileHash(newfile) - - patchfile = patchesDirectory + fmt.Sprintf("%x", sha256.Sum256([]byte(oldfileHash+"|"+newfileHash))) - - if fileExists(patchfile) { - // Patch already exists, no need to compute it again. - return patchfile, nil - } - - cmd := exec.Command( - "bsdiff", - oldfile, - newfile, - patchfile, - ) - - if err := cmd.Run(); err != nil { - return "", fmt.Errorf("Failed to generate patch with bsdiff: %q", err) - } - - return patchfile, nil -} - -// generatePatch compares the contents of two URLs and generates a patch. -func generatePatch(oldfileURL string, newfileURL string) (p *Patch, err error) { - generatePatchMu.Lock() - defer generatePatchMu.Unlock() - - p = new(Patch) - - if p.oldfile, err = downloadAsset(oldfileURL); err != nil { - return nil, err - } - - if p.newfile, err = downloadAsset(newfileURL); err != nil { - return nil, err - } - - if p.File, err = bsdiff(p.oldfile, p.newfile); err != nil { - return nil, err - } - - return p, nil -} diff --git a/src/github.com/getlantern/autoupdate-server/server/bindiff_test.go b/src/github.com/getlantern/autoupdate-server/server/bindiff_test.go deleted file mode 100644 index 7811addf88..0000000000 --- a/src/github.com/getlantern/autoupdate-server/server/bindiff_test.go +++ /dev/null @@ -1,51 +0,0 @@ -package server - -import ( - "fmt" - "os" - "path" - "testing" -) - -func writeFile(file string, content []byte) (err error) { - var fp *os.File - if err = os.MkdirAll(path.Dir(file), os.ModeDir|0700); err != nil { - return err - } - if fp, err = os.Create(file); err != nil { - return err - } - defer fp.Close() - - if _, err = fp.Write(content); err != nil { - return err - } - - return nil -} - -func TestBinaryDiff(t *testing.T) { - var err error - // Creating some files for testing. - if err = writeFile("_tests/file-a", []byte(`in a gadda da vida, honey, don't you know that I'm loving you.`)); err != nil { - t.Fatal(fmt.Sprintf("Failed to write test file: %q", err)) - } - if err = writeFile("_tests/file-b", []byte(`in a gadda da vida, baby, don't you know that I'll always be true.`)); err != nil { - t.Fatal(fmt.Sprintf("Failed to write test file: %q", err)) - } - // Creating binary diffs. - var patchfile string - if patchfile, err = bsdiff("_tests/file-a", "_tests/file-b"); err != nil { - t.Fatal(fmt.Sprintf("Failed to generate binary diff: %q", err)) - } - // Testing patch application. - if err = bspatch("_tests/file-a", "_tests/file-c", patchfile); err != nil { - t.Fatal(fmt.Sprintf("Failed to apply binary diff: %q", err)) - } - // At this point a new _tests/file-c should have been generated by patching - // _tests/file-a with the patch created before, the contents of this file-c - // must be exactly the same than the contents of file-b. - if fileHash("_tests/file-c") != fileHash("_tests/file-b") { - t.Fatal("File hashes after patch must be equal.") - } -} diff --git a/src/github.com/getlantern/autoupdate-server/server/errors.go b/src/github.com/getlantern/autoupdate-server/server/errors.go deleted file mode 100644 index c0d275ece8..0000000000 --- a/src/github.com/getlantern/autoupdate-server/server/errors.go +++ /dev/null @@ -1,11 +0,0 @@ -package server - -import ( - "errors" -) - -// Public errors -var ( - ErrNoSuchAsset = errors.New(`No such asset with the given checksum`) - ErrNoUpdateAvailable = errors.New(`No update available`) -) diff --git a/src/github.com/getlantern/autoupdate-server/server/github.go b/src/github.com/getlantern/autoupdate-server/server/github.go deleted file mode 100644 index 6aff96a990..0000000000 --- a/src/github.com/getlantern/autoupdate-server/server/github.go +++ /dev/null @@ -1,336 +0,0 @@ -package server - -import ( - "fmt" - "regexp" - "sort" - "sync" - - "github.com/blang/semver" - "github.com/google/go-github/github" -) - -var ( - updateAssetRe = regexp.MustCompile(`^update_(darwin|windows|linux)_(arm|386|amd64)\.?.*$`) - - emptyVersion semver.Version -) - -// Arch holds architecture names. -var Arch = struct { - X64 string - X86 string - ARM string -}{ - "amd64", - "386", - "arm", -} - -// OS holds operating system names. -var OS = struct { - Windows string - Linux string - Darwin string -}{ - "windows", - "linux", - "darwin", -} - -// Release struct represents a single github release. -type Release struct { - id int - URL string - Version semver.Version - Assets []Asset -} - -type releasesByID []Release - -// Asset struct represents a file included as part of a Release. -type Asset struct { - id int - v semver.Version - Name string - URL string - LocalFile string - Checksum string - Signature string - AssetInfo -} - -// AssetInfo struct holds OS and Arch information of an asset. -type AssetInfo struct { - OS string - Arch string -} - -// ReleaseManager struct defines a repository to pull releases from. -type ReleaseManager struct { - client *github.Client - owner string - repo string - updateAssetsMap map[string]map[string]map[string]*Asset - latestAssetsMap map[string]map[string]*Asset - mu *sync.RWMutex -} - -func (a releasesByID) Len() int { - return len(a) -} - -func (a releasesByID) Swap(i, j int) { - a[i], a[j] = a[j], a[i] -} - -func (a releasesByID) Less(i, j int) bool { - return a[i].id < a[j].id -} - -// NewReleaseManager creates a wrapper of github.Client. -func NewReleaseManager(owner string, repo string) *ReleaseManager { - - ghc := &ReleaseManager{ - client: github.NewClient(nil), - owner: owner, - repo: repo, - mu: new(sync.RWMutex), - updateAssetsMap: make(map[string]map[string]map[string]*Asset), - latestAssetsMap: make(map[string]map[string]*Asset), - } - - return ghc -} - -// getReleases queries github for all product releases. -func (g *ReleaseManager) getReleases() ([]Release, error) { - var releases []Release - - for page := 1; true; page++ { - opt := &github.ListOptions{Page: page} - - rels, _, err := g.client.Repositories.ListReleases(g.owner, g.repo, opt) - - if err != nil { - return nil, err - } - - if len(rels) == 0 { - break - } - - releases = make([]Release, 0, len(rels)) - - for i := range rels { - version := *rels[i].TagName - v, err := semver.Parse(version) - if err != nil { - log.Debugf("Release %q is not semantically versioned (%q). Skipping.", version, err) - continue - } - rel := Release{ - id: *rels[i].ID, - URL: *rels[i].ZipballURL, - Version: v, - } - rel.Assets = make([]Asset, 0, len(rels[i].Assets)) - for _, asset := range rels[i].Assets { - rel.Assets = append(rel.Assets, Asset{ - id: *asset.ID, - Name: *asset.Name, - URL: *asset.BrowserDownloadURL, - }) - } - log.Debugf("Release %q has %d assets...", version, len(rel.Assets)) - releases = append(releases, rel) - } - } - - sort.Sort(sort.Reverse(releasesByID(releases))) - - return releases, nil -} - -// UpdateAssetsMap will pull published releases, scan for compatible -// update-only binaries and will add them to the updateAssetsMap. -func (g *ReleaseManager) UpdateAssetsMap() (err error) { - - var rs []Release - - log.Debugf("Getting releases...") - if rs, err = g.getReleases(); err != nil { - return err - } - - log.Debugf("Getting assets...") - for i := range rs { - log.Debugf("Getting assets for release %q...", rs[i].Version) - for j := range rs[i].Assets { - log.Debugf("Found %q.", rs[i].Assets[j].Name) - // Does this asset represent a binary update? - if isUpdateAsset(rs[i].Assets[j].Name) { - log.Debugf("%q is an auto-update asset.", rs[i].Assets[j].Name) - asset := rs[i].Assets[j] - asset.v = rs[i].Version - info, err := getAssetInfo(asset.Name) - if err != nil { - return fmt.Errorf("Could not get asset info: %q", err) - } - if err = g.pushAsset(info.OS, info.Arch, &asset); err != nil { - return fmt.Errorf("Could not push asset: %q", err) - } - } else { - log.Debugf("%q is not an auto-update asset. Skipping.", rs[i].Assets[j].Name) - } - } - } - - return nil -} - -func (g *ReleaseManager) getProductUpdate(os string, arch string) (asset *Asset, err error) { - g.mu.RLock() - defer g.mu.RUnlock() - - if g.latestAssetsMap == nil { - return nil, fmt.Errorf("No updates available.") - } - - if g.latestAssetsMap[os] == nil { - return nil, fmt.Errorf("No such OS.") - } - - if g.latestAssetsMap[os][arch] == nil { - return nil, fmt.Errorf("No such Arch.") - } - - return g.latestAssetsMap[os][arch], nil -} - -func (g *ReleaseManager) lookupAssetWithChecksum(os string, arch string, checksum string) (asset *Asset, err error) { - g.mu.RLock() - defer g.mu.RUnlock() - - if g.updateAssetsMap == nil { - return nil, fmt.Errorf("No updates available.") - } - - if g.updateAssetsMap[os] == nil { - return nil, fmt.Errorf("No such OS.") - } - - if g.updateAssetsMap[os][arch] == nil { - return nil, fmt.Errorf("No such Arch.") - } - - for _, a := range g.updateAssetsMap[os][arch] { - if a.Checksum == checksum { - return a, nil - } - } - - return nil, fmt.Errorf("Could not find a matching checksum in assets list.") -} - -func (g *ReleaseManager) lookupAssetWithVersion(os string, arch string, version string) (asset *Asset, err error) { - g.mu.RLock() - defer g.mu.RUnlock() - - if g.updateAssetsMap == nil { - return nil, fmt.Errorf("No updates available.") - } - - if g.updateAssetsMap[os] == nil { - return nil, fmt.Errorf("No such OS.") - } - - if g.updateAssetsMap[os][arch] == nil { - return nil, fmt.Errorf("No such Arch.") - } - - for _, a := range g.updateAssetsMap[os][arch] { - if a.v.String() == version { - return a, nil - } - } - - return nil, fmt.Errorf("Could not find a matching version in assets list.") -} - -func (g *ReleaseManager) pushAsset(os string, arch string, asset *Asset) (err error) { - g.mu.Lock() - defer g.mu.Unlock() - - version := asset.v - - asset.OS = os - asset.Arch = arch - - if version.EQ(emptyVersion) { - return fmt.Errorf("Missing asset version.") - } - - var localfile string - if localfile, err = downloadAsset(asset.URL); err != nil { - return err - } - - if asset.Checksum, err = checksumForFile(localfile); err != nil { - return err - } - - if asset.Signature, err = signatureForFile(localfile); err != nil { - return err - } - - // Pushing version. - if g.updateAssetsMap[os] == nil { - g.updateAssetsMap[os] = make(map[string]map[string]*Asset) - } - if g.updateAssetsMap[os][arch] == nil { - g.updateAssetsMap[os][arch] = make(map[string]*Asset) - } - g.updateAssetsMap[os][arch][version.String()] = asset - - // Setting latest version. - if g.latestAssetsMap[os] == nil { - g.latestAssetsMap[os] = make(map[string]*Asset) - } - - // Only considering non-manoto versions for the latestAssetsMap - if !buildStringContainsManoto(asset.v) { - if g.latestAssetsMap[os][arch] == nil { - g.latestAssetsMap[os][arch] = asset - } else { - // Compare against already set version. - if asset.v.GT(g.latestAssetsMap[os][arch].v) { - g.latestAssetsMap[os][arch] = asset - } - } - } - - return nil -} - -func getAssetInfo(s string) (*AssetInfo, error) { - matches := updateAssetRe.FindStringSubmatch(s) - if len(matches) >= 3 { - if matches[1] != OS.Windows && matches[1] != OS.Linux && matches[1] != OS.Darwin { - return nil, fmt.Errorf("Unknown OS: \"%s\".", matches[1]) - } - if matches[2] != Arch.X64 && matches[2] != Arch.X86 && matches[2] != Arch.ARM { - return nil, fmt.Errorf("Unknown architecture \"%s\".", matches[2]) - } - info := &AssetInfo{ - OS: matches[1], - Arch: matches[2], - } - return info, nil - } - return nil, fmt.Errorf("Could not find asset info.") -} - -func isUpdateAsset(s string) bool { - return updateAssetRe.MatchString(s) -} diff --git a/src/github.com/getlantern/autoupdate-server/server/github_test.go b/src/github.com/getlantern/autoupdate-server/server/github_test.go deleted file mode 100644 index ac0e2023d5..0000000000 --- a/src/github.com/getlantern/autoupdate-server/server/github_test.go +++ /dev/null @@ -1,365 +0,0 @@ -package server - -import ( - "fmt" - "github.com/blang/semver" - "os" - "path" - "testing" -) - -var testClient *ReleaseManager - -var ( - ghAccountOwner = "getlantern" - ghAccountRepository = "lantern" -) - -func init() { - if v := os.Getenv("GH_ACCOUNT_OWNER"); v != "" { - ghAccountOwner = v - } - if v := os.Getenv("GH_ACCOUNT_REPOSITORY"); v != "" { - ghAccountRepository = v - } -} - -func TestSplitUpdateAsset(t *testing.T) { - var err error - var info *AssetInfo - - if info, err = getAssetInfo("update_darwin_386.dmg"); err != nil { - t.Fatal(fmt.Errorf("Failed to get asset info: %q", err)) - } - if info.OS != OS.Darwin || info.Arch != Arch.X86 { - t.Fatal("Failed to identify update asset.") - } - - if info, err = getAssetInfo("update_darwin_amd64.v1"); err != nil { - t.Fatal(fmt.Errorf("Failed to get asset info: %q", err)) - } - if info.OS != OS.Darwin || info.Arch != Arch.X64 { - t.Fatal("Failed to identify update asset.") - } - - if info, err = getAssetInfo("update_linux_arm"); err != nil { - t.Fatal(fmt.Errorf("Failed to get asset info: %q", err)) - } - if info.OS != OS.Linux || info.Arch != Arch.ARM { - t.Fatal("Failed to identify update asset.") - } - - if info, err = getAssetInfo("update_windows_386"); err != nil { - t.Fatal(fmt.Errorf("Failed to get asset info: %q", err)) - } - if info.OS != OS.Windows || info.Arch != Arch.X86 { - t.Fatal("Failed to identify update asset.") - } - - if _, err = getAssetInfo("update_osx_386"); err == nil { - t.Fatalf("Should have ignored the release, \"osx\" is not a valid OS value.") - } -} - -func TestNewClient(t *testing.T) { - testClient = NewReleaseManager(ghAccountOwner, ghAccountRepository) - if testClient == nil { - t.Fatal("Failed to create new client.") - } -} - -func TestListReleases(t *testing.T) { - if _, err := testClient.getReleases(); err != nil { - t.Fatal(fmt.Errorf("Failed to pull releases: %q", err)) - } -} - -func TestUpdateAssetsMap(t *testing.T) { - if err := testClient.UpdateAssetsMap(); err != nil { - t.Fatal(fmt.Errorf("Failed to update assets map: %q", err)) - } - if testClient.updateAssetsMap == nil { - t.Fatal("Assets map should not be nil at this point.") - } - if len(testClient.updateAssetsMap) == 0 { - t.Fatal("Assets map is empty.") - } - if testClient.latestAssetsMap == nil { - t.Fatal("Assets map should not be nil at this point.") - } - if len(testClient.latestAssetsMap) == 0 { - t.Fatal("Assets map is empty.") - } -} - -func TestDownloadOldestVersionAndUpgradeIt(t *testing.T) { - - if len(testClient.updateAssetsMap) == 0 { - t.Fatal("Assets map is empty.") - } - - oldestVersionMap := make(map[string]map[string]*Asset) - - // Using the updateAssetsMap to look for the oldest version of each release. - for os := range testClient.updateAssetsMap { - for arch := range testClient.updateAssetsMap[os] { - var oldestAsset *Asset - - for i := range testClient.updateAssetsMap[os][arch] { - asset := testClient.updateAssetsMap[os][arch][i] - if oldestAsset == nil { - oldestAsset = asset - } else { - if asset.v.LT(oldestAsset.v) { - oldestAsset = asset - } - } - } - if oldestAsset != nil { - if oldestVersionMap[os] == nil { - oldestVersionMap[os] = make(map[string]*Asset) - } - - oldestVersionMap[os][arch] = oldestAsset - } - } - } - - // Let's download each one of the oldest versions. - var err error - var p *Patch - - if len(oldestVersionMap) == 0 { - t.Fatal("No older software versions to test with.") - } - - tests := 0 - - for os := range oldestVersionMap { - for arch := range oldestVersionMap[os] { - asset := oldestVersionMap[os][arch] - newAsset := testClient.latestAssetsMap[os][arch] - - t.Logf("Upgrading %v to %v (%s/%s)", asset.v, newAsset.v, os, arch) - - if asset == newAsset { - t.Logf("Skipping version %s %s %s", os, arch, asset.v) - // Skipping - continue - } - - // Generate a binary diff of the two assets. - if p, err = generatePatch(asset.URL, newAsset.URL); err != nil { - t.Fatal(fmt.Errorf("Unable to generate patch: %q", err)) - } - - // Apply patch. - var oldAssetFile string - if oldAssetFile, err = downloadAsset(asset.URL); err != nil { - t.Fatal(err) - } - - var newAssetFile string - if newAssetFile, err = downloadAsset(newAsset.URL); err != nil { - t.Fatal(err) - } - - patchedFile := "_tests/" + path.Base(asset.URL) - - if err = bspatch(oldAssetFile, patchedFile, p.File); err != nil { - t.Fatal(fmt.Sprintf("Failed to apply binary diff: %q", err)) - } - - // Compare the two versions. - if fileHash(oldAssetFile) == fileHash(newAssetFile) { - t.Fatal("Nothing to update, probably not a good test case.") - } - - if fileHash(patchedFile) != fileHash(newAssetFile) { - t.Fatal("File hashes after patch must be equal.") - } - - var cs string - if cs, err = checksumForFile(patchedFile); err != nil { - t.Fatal("Could not get checksum for %s: %q", patchedFile, err) - } - - if cs == asset.Checksum { - t.Fatal("Computed checksum for patchedFile must be different than the stored older asset checksum.") - } - - if cs != newAsset.Checksum { - t.Fatal("Computed checksum for patchedFile must be equal to the stored newer asset checksum.") - } - - var ss string - if ss, err = signatureForFile(patchedFile); err != nil { - t.Fatal("Could not get signature for %s: %q", patchedFile, err) - } - - if ss == asset.Signature { - t.Fatal("Computed signature for patchedFile must be different than the stored older asset signature.") - } - - if ss != newAsset.Signature { - t.Fatal("Computed signature for patchedFile must be equal to the stored newer asset signature.") - } - - tests++ - - } - } - - if tests == 0 { - t.Fatal("Seems like there is not any newer software version to test with.") - } - - // Let's walk over the array again but using CheckForUpdate instead. - for os := range oldestVersionMap { - for arch := range oldestVersionMap[os] { - asset := oldestVersionMap[os][arch] - params := Params{ - AppVersion: asset.v.String(), - OS: asset.OS, - Arch: asset.Arch, - Checksum: asset.Checksum, - } - - // fmt.Printf("params: %s", params) - - r, err := testClient.CheckForUpdate(¶ms) - if err != nil { - if err == ErrNoUpdateAvailable { - // That's OK, let's make sure. - newAsset := testClient.latestAssetsMap[os][arch] - if asset != newAsset { - t.Fatal("CheckForUpdate said no update was available!") - } - } else { - t.Fatal("CheckForUpdate: ", err) - } - } - - if r.PatchType != PATCHTYPE_BSDIFF { - t.Fatal("Expecting no patch.") - } - - if r.Version != testClient.latestAssetsMap[os][arch].v.String() { - t.Fatal("Expecting %v, got %v.", testClient.latestAssetsMap[os][arch].v, r.Version) - } - } - } - - // Let's walk again using an odd checksum. - for os := range oldestVersionMap { - for arch := range oldestVersionMap[os] { - asset := oldestVersionMap[os][arch] - params := Params{ - AppVersion: asset.v.String(), - OS: asset.OS, - Arch: asset.Arch, - Checksum: "?", - } - - r, err := testClient.CheckForUpdate(¶ms) - if err != nil { - if err == ErrNoUpdateAvailable { - // That's OK, let's make sure. - newAsset := testClient.latestAssetsMap[os][arch] - if asset != newAsset { - t.Fatal("CheckForUpdate said no update was available!") - } - } else { - t.Fatal("CheckForUpdate: ", err) - } - } - - if r.PatchType != PATCHTYPE_NONE { - t.Fatal("Expecting no patch.") - } - - if r.Version != testClient.latestAssetsMap[os][arch].v.String() { - t.Fatal("Expecting %v, got %v.", testClient.latestAssetsMap[os][arch].v, r.Version) - } - } - } -} - -func TestDownloadManotoBetaAndUpgradeIt(t *testing.T) { - - if r := semver.MustParse("2.0.0+manoto").Compare(semver.MustParse("2.0.0+stable")); r != 0 { - t.Fatalf("Expecting 2.0.0+manoto to be equal to 2.0.0+stable, got: %d", r) - } - - if r := semver.MustParse("2.0.0+manoto").Compare(semver.MustParse("2.0.1")); r != -1 { - t.Fatalf("Expecting 2.0.0+manoto to be lower than 2.0.1, got: %d", r) - } - - if r := semver.MustParse("2.0.0+stable").Compare(semver.MustParse("9999.99.99")); r != -1 { - t.Fatalf("Expecting 2.0.0+manoto to be lower than 9999.99.99, got: %d", r) - } - - if len(testClient.updateAssetsMap) == 0 { - t.Fatal("Assets map is empty.") - } - - oldestVersionMap := make(map[string]map[string]*Asset) - - // Using the updateAssetsMap to look for the oldest version of each release. - for os := range testClient.updateAssetsMap { - for arch := range testClient.updateAssetsMap[os] { - var oldestAsset *Asset - - for i := range testClient.updateAssetsMap[os][arch] { - asset := testClient.updateAssetsMap[os][arch][i] - if asset.v.String() == semver.MustParse(manotoBeta8).String() { - if !buildStringContainsManoto(asset.v) { - t.Fatal(`Build string must contain the word "manoto"`) - } - oldestAsset = asset - } - } - - if oldestAsset != nil { - if oldestVersionMap[os] == nil { - oldestVersionMap[os] = make(map[string]*Asset) - } - oldestVersionMap[os][arch] = oldestAsset - } - } - } - - // Let's download each one of the oldest versions. - if len(oldestVersionMap) == 0 { - t.Fatal("No older software versions to test with.") - } - - // Let's walk over the array again but using CheckForUpdate instead. - for os := range oldestVersionMap { - for arch := range oldestVersionMap[os] { - asset := oldestVersionMap[os][arch] - params := Params{ - AppVersion: asset.v.String(), - OS: asset.OS, - Arch: asset.Arch, - Checksum: asset.Checksum, - } - - if params.AppVersion != manotoBeta8 { - t.Fatal("Expecting Manoto beta8.") - } - - r, err := testClient.CheckForUpdate(¶ms) - if err != nil { - t.Fatal("CheckForUpdate: ", err) - } - - t.Logf("Upgrading %v to %v (%s/%s)", asset.v, r.Version, os, arch) - - if r.Version != manotoBeta8Upgrade { - t.Fatal("Expecting %s.", manotoBeta8Upgrade) - } - } - } - -} diff --git a/src/github.com/getlantern/autoupdate-server/server/issue2868.go b/src/github.com/getlantern/autoupdate-server/server/issue2868.go deleted file mode 100644 index 21611d745e..0000000000 --- a/src/github.com/getlantern/autoupdate-server/server/issue2868.go +++ /dev/null @@ -1,37 +0,0 @@ -package server - -import ( - "github.com/blang/semver" -) - -const ( - manotoBeta8 = `2.0.0-beta8+manoto` - manotoBeta8Upgrade = `2.0.0+manoto` -) - -var ( - manotoBeta8Checksums = []string{ - `e0997b393a6bc8d6e6e32865b6bf0ea127d3589f06eaf58039280d06743a5170`, // darwin amd64 - `4fbd6a87119478d166148b8dba589bdf73345c9ca836faaaed14cfda90eb516c`, // linux 386 - `ad83f23b6330dbe561d4a29e8183385ade585ae6ac02bf80a874b73ea0b0edf8`, // linux amd64 - `b949fef4e0f7824f5de879337688020013bd75a67b580e9db239cdb138b4bfb9`, // windows 386 - } -) - -func hasManotoChecksum(c string) bool { - for _, s := range manotoBeta8Checksums { - if s == c { - return true - } - } - return false -} - -func buildStringContainsManoto(v semver.Version) bool { - for _, s := range v.Build { - if s == "manoto" { - return true - } - } - return false -} diff --git a/src/github.com/getlantern/autoupdate-server/server/server.go b/src/github.com/getlantern/autoupdate-server/server/server.go deleted file mode 100644 index 449952efb3..0000000000 --- a/src/github.com/getlantern/autoupdate-server/server/server.go +++ /dev/null @@ -1,181 +0,0 @@ -package server - -import ( - "fmt" - - "github.com/blang/semver" - "github.com/getlantern/golog" -) - -var log = golog.LoggerFor("autoupdate-server") - -// Initiative type. -type Initiative string - -const ( - INITIATIVE_NEVER Initiative = "never" - INITIATIVE_AUTO = "auto" - INITIATIVE_MANUAL = "manual" -) - -// PatchType represents the type of a binary patch, if any. Only bsdiff is supported -type PatchType string - -const ( - PATCHTYPE_BSDIFF PatchType = "bsdiff" - PATCHTYPE_NONE = "" -) - -// Params represent parameters sent by the go-update client. -type Params struct { - // protocol version - Version int `json:"version"` - // identifier of the application to update - //AppId string `json:"app_id"` - - // version of the application updating itself - AppVersion string `json:"app_version"` - // operating system of target platform - OS string `json:"-"` - // hardware architecture of target platform - Arch string `json:"-"` - // application-level user identifier - //UserId string `json:"user_id"` - // checksum of the binary to replace (used for returning diff patches) - Checksum string `json:"checksum"` - // release channel (empty string means 'stable') - //Channel string `json:"-"` - // tags for custom update channels - Tags map[string]string `json:"tags"` -} - -// Result represents the answer to be sent to the client. -type Result struct { - // should the update be applied automatically/manually - Initiative Initiative `json:"initiative"` - // url where to download the updated application - URL string `json:"url"` - // a URL to a patch to apply - PatchURL string `json:"patch_url"` - // the patch format (only bsdiff supported at the moment) - PatchType PatchType `json:"patch_type"` - // version of the new application - Version string `json:"version"` - // expected checksum of the new application - Checksum string `json:"checksum"` - // signature for verifying update authenticity - Signature string `json:"signature"` -} - -// CheckForUpdate receives a *Params message and emits a *Result. If both res -// and err are nil it means no update is available. -func (g *ReleaseManager) CheckForUpdate(p *Params) (res *Result, err error) { - - // Keep for the future. - if p.Version < 1 { - p.Version = 1 - } - - // p must not be nil. - if p == nil { - return nil, fmt.Errorf("Expecting params") - } - - if p.Tags != nil { - // Compatibility with go-check. - if p.Tags["os"] != "" { - p.OS = p.Tags["os"] - } - if p.Tags["arch"] != "" { - p.Arch = p.Tags["arch"] - } - } - - if p.Checksum == "" { - return nil, fmt.Errorf("Checksum must not be nil") - } - - if p.OS == "" { - return nil, fmt.Errorf("OS is required") - } - - if p.Arch == "" { - return nil, fmt.Errorf("Arch is required") - } - - // If this binary has a known checksum, the p.AppVersion will be changed to - // 2.0.0beta8+manoto regardless of the value that was sent. - if hasManotoChecksum(p.Checksum) { - p.AppVersion = manotoBeta8 - } - - appVersion, err := semver.Parse(p.AppVersion) - if err != nil { - return nil, fmt.Errorf("Bad version string: %v", err) - } - - var update *Asset - - // This is a hack that allows Lantern 2.0.0beta8+manoto clients to upgrade to - // Lantern 2.0.0+manoto - // - // See https://github.com/getlantern/lantern/issues/2868 - if appVersion.String() == manotoBeta8 { - // Always return 2.0.0+manoto - if update, err = g.lookupAssetWithVersion(p.OS, p.Arch, manotoBeta8Upgrade); err != nil { - return nil, fmt.Errorf("No upgrade for %s/%s", p.OS, p.Arch) - } - } - - // Looking if there is a newer version for the os/arch. - if update == nil { - if update, err = g.getProductUpdate(p.OS, p.Arch); err != nil { - return nil, fmt.Errorf("Could not lookup for updates: %s", err) - } - } - - // No update available. - if update.v.LTE(appVersion) { - return nil, ErrNoUpdateAvailable - } - - // Looking for the asset thay matches the current app checksum. - var current *Asset - if current, err = g.lookupAssetWithChecksum(p.OS, p.Arch, p.Checksum); err != nil { - // No such asset with the given checksum, nothing to compare. Making the - // client download the whole binary. - - r := &Result{ - Initiative: INITIATIVE_AUTO, - URL: update.URL, - PatchType: PATCHTYPE_NONE, - Version: update.v.String(), - Checksum: update.Checksum, - Signature: update.Signature, - } - - return r, nil - } - - // A newer version is available! - - // Generate a binary diff of the two assets. - var patch *Patch - log.Debugf("Generating patch") - if patch, err = generatePatch(current.URL, update.URL); err != nil { - return nil, fmt.Errorf("Unable to generate patch: %q", err) - } - - // Generate result. - r := &Result{ - Initiative: INITIATIVE_AUTO, - URL: update.URL, - PatchURL: patch.File, - PatchType: PATCHTYPE_BSDIFF, - Version: update.v.String(), - Checksum: update.Checksum, - Signature: update.Signature, - } - - return r, nil -} diff --git a/src/github.com/getlantern/autoupdate-server/server/signature.go b/src/github.com/getlantern/autoupdate-server/server/signature.go deleted file mode 100644 index 1603921633..0000000000 --- a/src/github.com/getlantern/autoupdate-server/server/signature.go +++ /dev/null @@ -1,89 +0,0 @@ -package server - -import ( - "crypto" - "crypto/rand" - "crypto/rsa" - "crypto/x509" - "encoding/hex" - "encoding/pem" - "fmt" - "io/ioutil" - "os" - - "github.com/getlantern/go-update" -) - -const ( - privateKeyEnv = `PRIVATE_KEY` -) - -var ( - privateKeyFile string -) - -func init() { - privateKeyFile = os.Getenv(privateKeyEnv) -} - -func SetPrivateKey(s string) { - privateKeyFile = s -} - -func checksumForFile(file string) (checksumHex string, err error) { - var checksum []byte - if checksum, err = update.ChecksumForFile(file); err != nil { - return "", err - } - checksumHex = hex.EncodeToString(checksum) - return checksumHex, nil -} - -func signatureForFile(file string) (signatureHex string, err error) { - - if privateKeyFile == "" { - log.Fatalf("Missing %s environment variable.", privateKeyEnv) - } - - var checksum string - - if checksum, err = checksumForFile(file); err != nil { - return "", err - } - - var checksumHex []byte - if checksumHex, err = hex.DecodeString(checksum); err != nil { - return "", err - } - - // Loading private key - var pb []byte - var fpk *os.File - - if fpk, err = os.Open(privateKeyFile); err != nil { - return "", fmt.Errorf("Could not open private key: %q", err) - } - defer fpk.Close() - - if pb, err = ioutil.ReadAll(fpk); err != nil { - return "", fmt.Errorf("Could not read private key: %q", err) - } - - // Decoding PEM key. - pemBlock, _ := pem.Decode(pb) - - var privateKey *rsa.PrivateKey - if privateKey, err = x509.ParsePKCS1PrivateKey(pemBlock.Bytes); err != nil { - return "", fmt.Errorf("Could not parse private key: %q", err) - } - - // Checking message signature. - var signature []byte - if signature, err = rsa.SignPKCS1v15(rand.Reader, privateKey, crypto.SHA256, checksumHex); err != nil { - return "", fmt.Errorf("Could not create signature for file %s: %q", file, err) - } - - signatureHex = hex.EncodeToString(signature) - - return signatureHex, nil -} diff --git a/src/github.com/getlantern/aws-sdk-go/.travis.yml b/src/github.com/getlantern/aws-sdk-go/.travis.yml deleted file mode 100644 index bf313eb3bf..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/.travis.yml +++ /dev/null @@ -1,7 +0,0 @@ -language: go - -go: - - 1.4 - -install: go get -v -t ./... -script: go test -v ./... diff --git a/src/github.com/getlantern/aws-sdk-go/LICENSE b/src/github.com/getlantern/aws-sdk-go/LICENSE deleted file mode 100644 index 04539d45b9..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/LICENSE +++ /dev/null @@ -1,13 +0,0 @@ -Copyright 2014-2015 Stripe, Inc. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. diff --git a/src/github.com/getlantern/aws-sdk-go/Makefile b/src/github.com/getlantern/aws-sdk-go/Makefile deleted file mode 100644 index c9ab9cc6dd..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/Makefile +++ /dev/null @@ -1,8 +0,0 @@ -default: generate - -install-gen: - go install ./cmd/... - -generate: install-gen - go generate ./gen - go install ./gen/... diff --git a/src/github.com/getlantern/aws-sdk-go/README.md b/src/github.com/getlantern/aws-sdk-go/README.md deleted file mode 100644 index 531a8a2632..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/README.md +++ /dev/null @@ -1,92 +0,0 @@ -# AWS SDK for Go - -[![GoDoc](http://img.shields.io/badge/godoc-reference-blue.svg)](http://godoc.org/github.com/awslabs/aws-sdk-go) -[![Build Status](https://img.shields.io/travis/awslabs/aws-sdk-go.svg)](https://travis-ci.org/awslabs/aws-sdk-go) -[![Apache V2 License](http://img.shields.io/badge/license-Apache%20V2-blue.svg)](https://github.com/awslabs/aws-sdk-go/blob/master/LICENSE) - -The AWS SDK for Go is a set of clients for all Amazon Web Services APIs -that initially started as -[Stripe's aws-go](https://github.com/awslabs/aws-sdk-go/tree/50f5f12927d77de6ec71a7473fe1f1081734d908) -library, and is currently under development to implement full -service coverage and other standard AWS SDK features. - -**Note**: Active development is currently happening in the -[develop](https://github.com/awslabs/aws-sdk-go/tree/develop) branch. -See this branch to follow along with API changes and ongoing refactors. -The `master` branch will continue to maintain the current API of -Stripe's aws-go library until the develop branch is more stable. - -## Caution - -It is currently **highly untested**, so please be patient and report any -bugs or problems you experience. The APIs may change radically without -much warning, so please vendor your dependencies w/ Godep or similar. - -Please do not confuse this for a stable, feature-complete library. - -## Installing - -Let's say you want to use EC2: - - $ go get github.com/awslabs/aws-sdk-go/gen/ec2 - -## Using - -```go -import "github.com/awslabs/aws-sdk-go/aws" -import "github.com/awslabs/aws-sdk-go/gen/ec2" - -creds := aws.Creds(accessKey, secretKey, "") -cli := ec2.New(creds, "us-west-2", nil) -resp, err := cli.DescribeInstances(nil) -if err != nil { - panic(err) -} -fmt.Println(resp.Reservations) -``` - -## Supported Services - - * AutoScaling - * CloudFormation - * CloudFront - * CloudHSM - * CloudSearch - * CloudSearchdomain - * CloudTrail - * CloudWatch Metrics - * CloudWatch Logs - * CodeDeploy - * Cognito Identity - * Cognito Sync - * Config - * Data Pipeline - * Direct Connect - * DynamoDB - * EC2 - * EC2 Container Service - * Elasticache - * Elastic Beanstalk - * Elastic Transcoder - * ELB - * EMR - * Glacier - * IAM - * Import/Export - * Kinesis - * Key Management Service - * Lambda - * OpsWorks - * RDS - * RedShift - * Route53 - * Route53 Domains - * S3 - * SimpleDB - * Simple Email Service - * SNS - * SQS - * Storage Gateway - * STS - * Support - * SWF diff --git a/src/github.com/getlantern/aws-sdk-go/apis/_endpoints.json b/src/github.com/getlantern/aws-sdk-go/apis/_endpoints.json deleted file mode 100644 index effbfb3ef9..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/apis/_endpoints.json +++ /dev/null @@ -1,208 +0,0 @@ -{ - "_default":[ - { - "uri":"{scheme}://{service}.{region}.amazonaws.com.cn", - "constraints":[ - ["region", "startsWith", "cn-"] - ], - "properties": { - "signatureVersion": "v4" - } - }, - { - "uri":"{scheme}://{service}.{region}.amazonaws.com", - "constraints": [ - ["region", "notEquals", null] - ] - } - ], - "iam":[ - { - "uri":"https://{service}.cn-north-1.amazonaws.com.cn", - "constraints":[ - ["region", "startsWith", "cn-"] - ] - }, - { - "uri":"https://{service}.us-gov.amazonaws.com", - "constraints":[ - ["region", "startsWith", "us-gov"] - ] - }, - { - "uri":"https://iam.amazonaws.com", - "properties": { - "credentialScope": { - "region": "us-east-1" - } - } - } - ], - "sdb":[ - { - "uri":"https://sdb.amazonaws.com", - "constraints":[ - ["region", "equals", "us-east-1"] - ] - } - ], - "sts":[ - { - "uri":"{scheme}://{service}.cn-north-1.amazonaws.com.cn", - "constraints":[ - ["region", "startsWith", "cn-"] - ] - }, - { - "uri":"https://{service}.{region}.amazonaws.com", - "constraints":[ - ["region", "startsWith", "us-gov"] - ] - }, - { - "uri":"https://sts.amazonaws.com", - "properties": { - "credentialScope": { - "region": "us-east-1" - } - } - } - ], - "s3":[ - { - "uri":"{scheme}://s3.amazonaws.com", - "constraints":[ - ["region", "oneOf", ["us-east-1", null]] - ], - "properties": { - "credentialScope": { - "region": "us-east-1" - } - } - }, - { - "uri":"{scheme}://{service}.{region}.amazonaws.com.cn", - "constraints": [ - ["region", "startsWith", "cn-"] - ], - "properties": { - "signatureVersion": "s3v4" - } - }, - { - "uri":"{scheme}://{service}-{region}.amazonaws.com", - "constraints": [ - ["region", "oneOf", ["us-east-1", "ap-northeast-1", "sa-east-1", - "ap-southeast-1", "ap-southeast-2", "us-west-2", - "us-west-1", "eu-west-1", "us-gov-west-1", - "fips-us-gov-west-1"]] - ] - }, - { - "uri":"{scheme}://{service}.{region}.amazonaws.com", - "constraints": [ - ["region", "notEquals", null] - ], - "properties": { - "signatureVersion": "s3v4" - } - } - ], - "rds":[ - { - "uri":"https://rds.amazonaws.com", - "constraints": [ - ["region", "equals", "us-east-1"] - ] - } - ], - "route53":[ - { - "uri":"https://route53.amazonaws.com", - "constraints": [ - ["region", "notStartsWith", "cn-"] - ] - } - ], - "elasticmapreduce":[ - { - "uri":"https://elasticmapreduce.cn-north-1.amazonaws.com.cn", - "constraints":[ - ["region", "startsWith", "cn-"] - ] - }, - { - "uri":"https://elasticmapreduce.eu-central-1.amazonaws.com", - "constraints":[ - ["region", "equals", "eu-central-1"] - ] - }, - { - "uri":"https://elasticmapreduce.us-east-1.amazonaws.com", - "constraints":[ - ["region", "equals", "us-east-1"] - ] - }, - { - "uri":"https://{region}.elasticmapreduce.amazonaws.com", - "constraints": [ - ["region", "notEquals", null] - ] - } - ], - "sqs":[ - { - "uri":"https://queue.amazonaws.com", - "constraints": [ - ["region", "equals", "us-east-1"] - ] - }, - { - "uri":"https://{region}.queue.amazonaws.com.cn", - "constraints":[ - ["region", "startsWith", "cn-"] - ] - }, - { - "uri":"https://{region}.queue.amazonaws.com", - "constraints": [ - ["region", "notEquals", null] - ] - } - ], - "importexport": [ - { - "uri":"https://importexport.amazonaws.com", - "constraints": [ - ["region", "notStartsWith", "cn-"] - ] - } - ], - "cloudfront":[ - { - "uri":"https://cloudfront.amazonaws.com", - "constraints": [ - ["region", "notStartsWith", "cn-"] - ], - "properties": { - "credentialScope": { - "region": "us-east-1" - } - } - } - ], - "dynamodb": [ - { - "uri": "http://localhost:8000", - "constraints": [ - ["region", "equals", "local"] - ], - "properties": { - "credentialScope": { - "region": "us-east-1", - "service": "dynamodb" - } - } - } - ] -} diff --git a/src/github.com/getlantern/aws-sdk-go/apis/_retry.json b/src/github.com/getlantern/aws-sdk-go/apis/_retry.json deleted file mode 100644 index dc66c70244..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/apis/_retry.json +++ /dev/null @@ -1,293 +0,0 @@ -{ - "definitions": { - "throttling": { - "applies_when": { - "response": { - "service_error_code": "Throttling", - "http_status_code": 400 - } - } - }, - "throttling_exception": { - "applies_when": { - "response": { - "service_error_code": "ThrottlingException", - "http_status_code": 400 - } - } - }, - "general_socket_errors": { - "applies_when": { - "socket_errors": ["GENERAL_CONNECTION_ERROR"] - } - }, - "general_server_error": { - "applies_when": { - "response": { - "http_status_code": 500 - } - } - }, - "service_unavailable": { - "applies_when": { - "response": { - "http_status_code": 503 - } - } - }, - "limit_exceeded": { - "applies_when": { - "response": { - "http_status_code": 509 - } - } - } - }, - "retry": { - "__default__": { - "max_attempts": 5, - "delay": { - "type": "exponential", - "base": "rand", - "growth_factor": 2 - }, - "policies": { - "general_socket_errors": {"$ref": "general_socket_errors"}, - "general_server_error": {"$ref": "general_server_error"}, - "service_unavailable": {"$ref": "service_unavailable"}, - "limit_exceeded": {"$ref": "limit_exceeded"} - } - }, - "autoscaling": { - "__default__": { - "policies": { - "throttling": {"$ref": "throttling"} - } - } - }, - "elasticmapreduce": { - "__default__": { - "policies": { - "throttling": {"$ref": "throttling_exception"} - } - } - }, - "rds": { - "__default__": { - "policies": { - "throttling": {"$ref": "throttling"} - } - } - }, - "elasticache": { - "__default__": { - "policies": { - "throttling": {"$ref": "throttling"} - } - } - }, - "redshift": { - "__default__": { - "policies": { - "throttling": {"$ref": "throttling"} - } - } - }, - "elasticbeanstalk": { - "__default__": { - "policies": { - "throttling": {"$ref": "throttling"} - } - } - }, - "cloudformation": { - "__default__": { - "policies": { - "throttling": {"$ref": "throttling"} - } - } - }, - "datapipeline": { - "__default__": { - "policies": { - "throttling": {"$ref": "throttling"} - } - } - }, - "opsworks": { - "__default__": { - "policies": { - "throttling": {"$ref": "throttling"} - } - } - }, - "iam": { - "__default__": { - "policies": { - "throttling": {"$ref": "throttling"} - } - } - }, - "sts": { - "__default__": { - "policies": { - "throttling": {"$ref": "throttling"} - } - } - }, - "swf": { - "__default__": { - "policies": { - "throttling": {"$ref": "throttling"} - } - } - }, - "sns": { - "__default__": { - "policies": { - "throttling": {"$ref": "throttling"} - } - } - }, - "ses": { - "__default__": { - "policies": { - "throttling": {"$ref": "throttling"} - } - } - }, - "cloudwatch": { - "__default__": { - "policies": { - "throttling": {"$ref": "throttling"} - } - } - }, - "route53": { - "__default__": { - "policies": { - "throttling": {"$ref": "throttling"} - } - } - }, - "directconnect": { - "__default__": { - "policies": { - "throttling": {"$ref": "throttling"} - } - } - }, - "elb": { - "__default__": { - "policies": { - "throttling": {"$ref": "throttling"} - } - } - }, - "dynamodb": { - "__default__": { - "max_attempts": 10, - "delay": { - "type": "exponential", - "base": 0.05, - "growth_factor": 2 - }, - "policies": { - "throughput_exceeded": { - "applies_when": { - "response": { - "service_error_code": "ProvisionedThroughputExceededException", - "http_status_code": 400 - } - } - }, - "throttling": {"$ref": "throttling_exception"}, - "crc32": { - "applies_when": { - "response": { - "crc32body": "x-amz-crc32" - } - } - } - } - } - }, - "glacier": { - "__default__": { - "policies": { - "throttling": {"$ref": "throttling_exception"} - } - } - }, - "storagegateway": { - "__default__": { - "policies": { - "throttling": {"$ref": "throttling_exception"} - } - } - }, - "ec2": { - "__default__": { - "policies": { - "request_limit_exceeded": { - "applies_when": { - "response": { - "service_error_code": "RequestLimitExceeded", - "http_status_code": 503 - } - } - } - } - } - }, - "cloudsearch": { - "__default__": { - "policies": { - "request_limit_exceeded": { - "applies_when": { - "response": { - "service_error_code": "BandwidthLimitExceeded", - "http_status_code": 509 - } - } - } - } - } - }, - "sqs": { - "__default__": { - "policies": { - "request_limit_exceeded": { - "applies_when": { - "response": { - "service_error_code": "RequestThrottled", - "http_status_code": 403 - } - } - } - } - } - }, - "s3": { - "__default__": { - "policies": { - "timeouts": { - "applies_when": { - "response": { - "http_status_code": 400, - "service_error_code": "RequestTimeout" - } - } - } - } - } - }, - "elastictranscoder": { - "__default__": { - "policies": { - "throttling": {"$ref": "throttling_exception"} - } - } - } - } -} diff --git a/src/github.com/getlantern/aws-sdk-go/apis/autoscaling/2011-01-01.normal.json b/src/github.com/getlantern/aws-sdk-go/apis/autoscaling/2011-01-01.normal.json deleted file mode 100644 index a9fd6e7ec3..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/apis/autoscaling/2011-01-01.normal.json +++ /dev/null @@ -1,2963 +0,0 @@ -{ - "metadata":{ - "apiVersion":"2011-01-01", - "endpointPrefix":"autoscaling", - "serviceFullName":"Auto Scaling", - "signatureVersion":"v4", - "xmlNamespace":"http://autoscaling.amazonaws.com/doc/2011-01-01/", - "protocol":"query" - }, - "documentation":"Auto Scaling

Auto Scaling is designed to automatically launch or terminate EC2 instances based on user-defined policies, schedules, and health checks. Use this service in conjunction with the Amazon CloudWatch and Elastic Load Balancing services.

", - "operations":{ - "AttachInstances":{ - "name":"AttachInstances", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"AttachInstancesQuery"}, - "documentation":"

Attaches one or more EC2 instances to the specified Auto Scaling group.

For more information, see Attach Amazon EC2 Instances to Your Existing Auto Scaling Group in the Auto Scaling Developer Guide.

" - }, - "CompleteLifecycleAction":{ - "name":"CompleteLifecycleAction", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CompleteLifecycleActionType"}, - "output":{ - "shape":"CompleteLifecycleActionAnswer", - "resultWrapper":"CompleteLifecycleActionResult" - }, - "documentation":"

Completes the lifecycle action for the associated token initiated under the given lifecycle hook with the specified result.

This operation is a part of the basic sequence for adding a lifecycle hook to an Auto Scaling group:

  1. Create a notification target. A target can be either an Amazon SQS queue or an Amazon SNS topic.
  2. Create an IAM role. This role allows Auto Scaling to publish lifecycle notifications to the designated SQS queue or SNS topic.
  3. Create the lifecycle hook. You can create a hook that acts when instances launch or when instances terminate.
  4. If necessary, record the lifecycle action heartbeat to keep the instance in a pending state.
  5. Complete the lifecycle action.

For more information, see Auto Scaling Pending State and Auto Scaling Terminating State in the Auto Scaling Developer Guide.

" - }, - "CreateAutoScalingGroup":{ - "name":"CreateAutoScalingGroup", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CreateAutoScalingGroupType"}, - "errors":[ - { - "shape":"AlreadyExistsFault", - "error":{ - "code":"AlreadyExists", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

You already have an Auto Scaling group or launch configuration with this name.

" - }, - { - "shape":"LimitExceededFault", - "error":{ - "code":"LimitExceeded", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The limit for the number of Auto Scaling groups or launch configurations has already been reached.

" - } - ], - "documentation":"

Creates an Auto Scaling group with the specified name and attributes.

If you exceed your maximum limit of Auto Scaling groups, which by default is 20 per region, the call fails. For information about viewing and updating these limits, see DescribeAccountLimits.

" - }, - "CreateLaunchConfiguration":{ - "name":"CreateLaunchConfiguration", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CreateLaunchConfigurationType"}, - "errors":[ - { - "shape":"AlreadyExistsFault", - "error":{ - "code":"AlreadyExists", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

You already have an Auto Scaling group or launch configuration with this name.

" - }, - { - "shape":"LimitExceededFault", - "error":{ - "code":"LimitExceeded", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The limit for the number of Auto Scaling groups or launch configurations has already been reached.

" - } - ], - "documentation":"

Creates a launch configuration.

If you exceed your maximum limit of launch configurations, which by default is 100 per region, the call fails. For information about viewing and updating these limits, see DescribeAccountLimits.

" - }, - "CreateOrUpdateTags":{ - "name":"CreateOrUpdateTags", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CreateOrUpdateTagsType"}, - "errors":[ - { - "shape":"LimitExceededFault", - "error":{ - "code":"LimitExceeded", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The limit for the number of Auto Scaling groups or launch configurations has already been reached.

" - }, - { - "shape":"AlreadyExistsFault", - "error":{ - "code":"AlreadyExists", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

You already have an Auto Scaling group or launch configuration with this name.

" - } - ], - "documentation":"

Creates or updates tags for the specified Auto Scaling group.

A tag's definition is composed of a resource ID, resource type, key and value, and the propagate flag. Value and the propagate flag are optional parameters. See the Request Parameters for more information.

For more information, see Add, Modify, or Remove Auto Scaling Group Tags in the Auto Scaling Developer Guide.

" - }, - "DeleteAutoScalingGroup":{ - "name":"DeleteAutoScalingGroup", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DeleteAutoScalingGroupType"}, - "errors":[ - { - "shape":"ScalingActivityInProgressFault", - "error":{ - "code":"ScalingActivityInProgress", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The Auto Scaling group can't be deleted because there are scaling activities in progress.

" - }, - { - "shape":"ResourceInUseFault", - "error":{ - "code":"ResourceInUse", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The Auto Scaling group or launch configuration can't be deleted because it is in use.

" - } - ], - "documentation":"

Deletes the specified Auto Scaling group.

The group must have no instances and no scaling activities in progress.

To remove all instances before calling DeleteAutoScalingGroup, you can call UpdateAutoScalingGroup to set the minimum and maximum size of the AutoScalingGroup to zero.

" - }, - "DeleteLaunchConfiguration":{ - "name":"DeleteLaunchConfiguration", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"LaunchConfigurationNameType"}, - "errors":[ - { - "shape":"ResourceInUseFault", - "error":{ - "code":"ResourceInUse", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The Auto Scaling group or launch configuration can't be deleted because it is in use.

" - } - ], - "documentation":"

Deletes the specified launch configuration.

The launch configuration must not be attached to an Auto Scaling group. When this call completes, the launch configuration is no longer available for use.

" - }, - "DeleteLifecycleHook":{ - "name":"DeleteLifecycleHook", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DeleteLifecycleHookType"}, - "output":{ - "shape":"DeleteLifecycleHookAnswer", - "resultWrapper":"DeleteLifecycleHookResult" - }, - "documentation":"

Deletes the specified lifecycle hook.

If there are any outstanding lifecycle actions, they are completed first (ABANDON for launching instances, CONTINUE for terminating instances).

" - }, - "DeleteNotificationConfiguration":{ - "name":"DeleteNotificationConfiguration", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DeleteNotificationConfigurationType"}, - "documentation":"

Deletes the specified notification.

" - }, - "DeletePolicy":{ - "name":"DeletePolicy", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DeletePolicyType", - "documentation":"

" - }, - "documentation":"

Deletes the specified Auto Scaling policy.

" - }, - "DeleteScheduledAction":{ - "name":"DeleteScheduledAction", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DeleteScheduledActionType"}, - "documentation":"

Deletes the specified scheduled action.

" - }, - "DeleteTags":{ - "name":"DeleteTags", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DeleteTagsType"}, - "documentation":"

Deletes the specified tags.

" - }, - "DescribeAccountLimits":{ - "name":"DescribeAccountLimits", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "output":{ - "shape":"DescribeAccountLimitsAnswer", - "resultWrapper":"DescribeAccountLimitsResult" - }, - "documentation":"

Describes the current Auto Scaling resource limits for your AWS account.

For information about requesting an increase in these limits, see AWS Service Limits.

" - }, - "DescribeAdjustmentTypes":{ - "name":"DescribeAdjustmentTypes", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "output":{ - "shape":"DescribeAdjustmentTypesAnswer", - "resultWrapper":"DescribeAdjustmentTypesResult" - }, - "documentation":"

Lists the policy adjustment types for use with PutScalingPolicy.

" - }, - "DescribeAutoScalingGroups":{ - "name":"DescribeAutoScalingGroups", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"AutoScalingGroupNamesType"}, - "output":{ - "shape":"AutoScalingGroupsType", - "resultWrapper":"DescribeAutoScalingGroupsResult" - }, - "errors":[ - { - "shape":"InvalidNextToken", - "error":{ - "code":"InvalidNextToken", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The NextToken value is not valid.

" - } - ], - "documentation":"

Describes one or more Auto Scaling groups. If a list of names is not provided, the call describes all Auto Scaling groups.

You can specify a maximum number of items to be returned with a single call. If there are more items to return, the call returns a token. To get the next set of items, repeat the call with the returned token in the NextToken parameter.

" - }, - "DescribeAutoScalingInstances":{ - "name":"DescribeAutoScalingInstances", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeAutoScalingInstancesType"}, - "output":{ - "shape":"AutoScalingInstancesType", - "resultWrapper":"DescribeAutoScalingInstancesResult" - }, - "errors":[ - { - "shape":"InvalidNextToken", - "error":{ - "code":"InvalidNextToken", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The NextToken value is not valid.

" - } - ], - "documentation":"

Describes one or more Auto Scaling instances. If a list is not provided, the call describes all instances.

You can describe up to a maximum of 50 instances with a single call. By default, a call returns up to 20 instances. If there are more items to return, the call returns a token. To get the next set of items, repeat the call with the returned token in the NextToken parameter.

" - }, - "DescribeAutoScalingNotificationTypes":{ - "name":"DescribeAutoScalingNotificationTypes", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "output":{ - "shape":"DescribeAutoScalingNotificationTypesAnswer", - "resultWrapper":"DescribeAutoScalingNotificationTypesResult" - }, - "documentation":"

Lists the notification types that are supported by Auto Scaling.

" - }, - "DescribeLaunchConfigurations":{ - "name":"DescribeLaunchConfigurations", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"LaunchConfigurationNamesType"}, - "output":{ - "shape":"LaunchConfigurationsType", - "resultWrapper":"DescribeLaunchConfigurationsResult" - }, - "errors":[ - { - "shape":"InvalidNextToken", - "error":{ - "code":"InvalidNextToken", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The NextToken value is not valid.

" - } - ], - "documentation":"

Describes one or more launch configurations. If you omit the list of names, then the call describes all launch configurations.

You can specify a maximum number of items to be returned with a single call. If there are more items to return, the call returns a token. To get the next set of items, repeat the call with the returned token in the NextToken parameter.

" - }, - "DescribeLifecycleHookTypes":{ - "name":"DescribeLifecycleHookTypes", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "output":{ - "shape":"DescribeLifecycleHookTypesAnswer", - "resultWrapper":"DescribeLifecycleHookTypesResult" - }, - "documentation":"

Describes the available types of lifecycle hooks.

" - }, - "DescribeLifecycleHooks":{ - "name":"DescribeLifecycleHooks", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeLifecycleHooksType"}, - "output":{ - "shape":"DescribeLifecycleHooksAnswer", - "resultWrapper":"DescribeLifecycleHooksResult" - }, - "documentation":"

Describes the lifecycle hooks for the specified Auto Scaling group.

" - }, - "DescribeMetricCollectionTypes":{ - "name":"DescribeMetricCollectionTypes", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "output":{ - "shape":"DescribeMetricCollectionTypesAnswer", - "resultWrapper":"DescribeMetricCollectionTypesResult" - }, - "documentation":"

Returns a list of metrics and a corresponding list of granularities for each metric.

The GroupStandbyInstances metric is not returned by default. You must explicitly request it when calling EnableMetricsCollection.

" - }, - "DescribeNotificationConfigurations":{ - "name":"DescribeNotificationConfigurations", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeNotificationConfigurationsType"}, - "output":{ - "shape":"DescribeNotificationConfigurationsAnswer", - "resultWrapper":"DescribeNotificationConfigurationsResult" - }, - "errors":[ - { - "shape":"InvalidNextToken", - "error":{ - "code":"InvalidNextToken", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The NextToken value is not valid.

" - } - ], - "documentation":"

Describes the notification actions associated with the specified Auto Scaling group.

" - }, - "DescribePolicies":{ - "name":"DescribePolicies", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribePoliciesType"}, - "output":{ - "shape":"PoliciesType", - "resultWrapper":"DescribePoliciesResult" - }, - "errors":[ - { - "shape":"InvalidNextToken", - "error":{ - "code":"InvalidNextToken", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The NextToken value is not valid.

" - } - ], - "documentation":"

Describes the policies for the specified Auto Scaling group.

You can specify a maximum number of items to be returned with a single call. If there are more items to return, the call returns a token. To get the next set of items, repeat the call with the returned token in the NextToken parameter.

" - }, - "DescribeScalingActivities":{ - "name":"DescribeScalingActivities", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeScalingActivitiesType"}, - "output":{ - "shape":"ActivitiesType", - "resultWrapper":"DescribeScalingActivitiesResult" - }, - "errors":[ - { - "shape":"InvalidNextToken", - "error":{ - "code":"InvalidNextToken", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The NextToken value is not valid.

" - } - ], - "documentation":"

Describes one or more scaling activities for the specified Auto Scaling group. If you omit the ActivityIds, the call returns all activities from the past six weeks. Activities are sorted by the start time. Activities still in progress appear first on the list.

You can specify a maximum number of items to be returned with a single call. If there are more items to return, the call returns a token. To get the next set of items, repeat the call with the returned token in the NextToken parameter.

" - }, - "DescribeScalingProcessTypes":{ - "name":"DescribeScalingProcessTypes", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "output":{ - "shape":"ProcessesType", - "resultWrapper":"DescribeScalingProcessTypesResult" - }, - "documentation":"

Returns scaling process types for use in the ResumeProcesses and SuspendProcesses actions.

" - }, - "DescribeScheduledActions":{ - "name":"DescribeScheduledActions", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeScheduledActionsType"}, - "output":{ - "shape":"ScheduledActionsType", - "resultWrapper":"DescribeScheduledActionsResult" - }, - "errors":[ - { - "shape":"InvalidNextToken", - "error":{ - "code":"InvalidNextToken", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The NextToken value is not valid.

" - } - ], - "documentation":"

Lists the actions scheduled for your Auto Scaling group that haven't been executed. To list the actions that were already executed, use DescribeScalingActivities.

" - }, - "DescribeTags":{ - "name":"DescribeTags", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeTagsType"}, - "output":{ - "shape":"TagsType", - "resultWrapper":"DescribeTagsResult" - }, - "errors":[ - { - "shape":"InvalidNextToken", - "error":{ - "code":"InvalidNextToken", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The NextToken value is not valid.

" - } - ], - "documentation":"

Describes the specified tags.

You can use filters to limit the results. For example, you can query for the tags for a specific Auto Scaling group. You can specify multiple values for a filter. A tag must match at least one of the specified values for it to be included in the results.

You can also specify multiple filters. The result includes information for a particular tag only if it matches all the filters. If there's no match, no special message is returned.

" - }, - "DescribeTerminationPolicyTypes":{ - "name":"DescribeTerminationPolicyTypes", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "output":{ - "shape":"DescribeTerminationPolicyTypesAnswer", - "resultWrapper":"DescribeTerminationPolicyTypesResult" - }, - "documentation":"

Lists the termination policies supported by Auto Scaling.

" - }, - "DetachInstances":{ - "name":"DetachInstances", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DetachInstancesQuery"}, - "output":{ - "shape":"DetachInstancesAnswer", - "resultWrapper":"DetachInstancesResult" - }, - "documentation":"

Removes one or more instances from the specified Auto Scaling group. After the instances are detached, you can manage them independently from the rest of the Auto Scaling group.

For more information, see Detach EC2 Instances from Your Auto Scaling Group in the Auto Scaling Developer Guide.

" - }, - "DisableMetricsCollection":{ - "name":"DisableMetricsCollection", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DisableMetricsCollectionQuery"}, - "documentation":"

Disables monitoring of the specified metrics for the specified Auto Scaling group.

" - }, - "EnableMetricsCollection":{ - "name":"EnableMetricsCollection", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"EnableMetricsCollectionQuery"}, - "documentation":"

Enables monitoring of the specified metrics for the specified Auto Scaling group.

You can only enable metrics collection if InstanceMonitoring in the launch configuration for the group is set to True.

" - }, - "EnterStandby":{ - "name":"EnterStandby", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"EnterStandbyQuery"}, - "output":{ - "shape":"EnterStandbyAnswer", - "resultWrapper":"EnterStandbyResult" - }, - "documentation":"

Moves the specified instances into Standby mode.

For more information, see Auto Scaling InService State in the Auto Scaling Developer Guide.

" - }, - "ExecutePolicy":{ - "name":"ExecutePolicy", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"ExecutePolicyType"}, - "errors":[ - { - "shape":"ScalingActivityInProgressFault", - "error":{ - "code":"ScalingActivityInProgress", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The Auto Scaling group can't be deleted because there are scaling activities in progress.

" - } - ], - "documentation":"

Executes the specified policy.

" - }, - "ExitStandby":{ - "name":"ExitStandby", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"ExitStandbyQuery"}, - "output":{ - "shape":"ExitStandbyAnswer", - "resultWrapper":"ExitStandbyResult" - }, - "documentation":"

Moves the specified instances out of Standby mode.

For more information, see Auto Scaling InService State in the Auto Scaling Developer Guide.

" - }, - "PutLifecycleHook":{ - "name":"PutLifecycleHook", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"PutLifecycleHookType"}, - "output":{ - "shape":"PutLifecycleHookAnswer", - "resultWrapper":"PutLifecycleHookResult" - }, - "errors":[ - { - "shape":"LimitExceededFault", - "error":{ - "code":"LimitExceeded", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The limit for the number of Auto Scaling groups or launch configurations has already been reached.

" - } - ], - "documentation":"

Creates or updates a lifecycle hook for the specified Auto Scaling Group.

A lifecycle hook tells Auto Scaling that you want to perform an action on an instance that is not actively in service; for example, either when the instance launches or before the instance terminates.

This operation is a part of the basic sequence for adding a lifecycle hook to an Auto Scaling group:

  1. Create a notification target. A target can be either an Amazon SQS queue or an Amazon SNS topic.
  2. Create an IAM role. This role allows Auto Scaling to publish lifecycle notifications to the designated SQS queue or SNS topic.
  3. Create the lifecycle hook. You can create a hook that acts when instances launch or when instances terminate.
  4. If necessary, record the lifecycle action heartbeat to keep the instance in a pending state.
  5. Complete the lifecycle action.

For more information, see Auto Scaling Pending State and Auto Scaling Terminating State in the Auto Scaling Developer Guide.

" - }, - "PutNotificationConfiguration":{ - "name":"PutNotificationConfiguration", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"PutNotificationConfigurationType"}, - "errors":[ - { - "shape":"LimitExceededFault", - "error":{ - "code":"LimitExceeded", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The limit for the number of Auto Scaling groups or launch configurations has already been reached.

" - } - ], - "documentation":"

Configures an Auto Scaling group to send notifications when specified events take place. Subscribers to this topic can have messages for events delivered to an endpoint such as a web server or email address.

For more information see Getting Notifications When Your Auto Scaling Group Changes in the Auto Scaling Developer Guide.

This configuration overwrites an existing configuration.

" - }, - "PutScalingPolicy":{ - "name":"PutScalingPolicy", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"PutScalingPolicyType"}, - "output":{ - "shape":"PolicyARNType", - "resultWrapper":"PutScalingPolicyResult" - }, - "errors":[ - { - "shape":"LimitExceededFault", - "error":{ - "code":"LimitExceeded", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The limit for the number of Auto Scaling groups or launch configurations has already been reached.

" - } - ], - "documentation":"

Creates or updates a policy for an Auto Scaling group. To update an existing policy, use the existing policy name and set the parameters you want to change. Any existing parameter not changed in an update to an existing policy is not changed in this update request.

" - }, - "PutScheduledUpdateGroupAction":{ - "name":"PutScheduledUpdateGroupAction", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"PutScheduledUpdateGroupActionType"}, - "errors":[ - { - "shape":"AlreadyExistsFault", - "error":{ - "code":"AlreadyExists", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

You already have an Auto Scaling group or launch configuration with this name.

" - }, - { - "shape":"LimitExceededFault", - "error":{ - "code":"LimitExceeded", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The limit for the number of Auto Scaling groups or launch configurations has already been reached.

" - } - ], - "documentation":"

Creates or updates a scheduled scaling action for an Auto Scaling group. When updating a scheduled scaling action, if you leave a parameter unspecified, the corresponding value remains unchanged in the affected Auto Scaling group.

For more information, see Scheduled Scaling in the Auto Scaling Developer Guide.

Auto Scaling supports the date and time expressed in \"YYYY-MM-DDThh:mm:ssZ\" format in UTC/GMT only.

" - }, - "RecordLifecycleActionHeartbeat":{ - "name":"RecordLifecycleActionHeartbeat", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"RecordLifecycleActionHeartbeatType"}, - "output":{ - "shape":"RecordLifecycleActionHeartbeatAnswer", - "resultWrapper":"RecordLifecycleActionHeartbeatResult" - }, - "documentation":"

Records a heartbeat for the lifecycle action associated with a specific token. This extends the timeout by the length of time defined by the HeartbeatTimeout parameter of PutLifecycleHook.

This operation is a part of the basic sequence for adding a lifecycle hook to an Auto Scaling group:

  1. Create a notification target. A target can be either an Amazon SQS queue or an Amazon SNS topic.
  2. Create an IAM role. This role allows Auto Scaling to publish lifecycle notifications to the designated SQS queue or SNS topic.
  3. Create the lifecycle hook. You can create a hook that acts when instances launch or when instances terminate.
  4. If necessary, record the lifecycle action heartbeat to keep the instance in a pending state.
  5. Complete the lifecycle action.

For more information, see Auto Scaling Pending State and Auto Scaling Terminating State in the Auto Scaling Developer Guide.

" - }, - "ResumeProcesses":{ - "name":"ResumeProcesses", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"ScalingProcessQuery"}, - "documentation":"

Resumes the specified suspended Auto Scaling processes for the specified Auto Scaling group. To resume specific processes, use the ScalingProcesses parameter. To resume all processes, omit the ScalingProcesses parameter. For more information, see Suspend and Resume Auto Scaling Processes in the Auto Scaling Developer Guide.

" - }, - "SetDesiredCapacity":{ - "name":"SetDesiredCapacity", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"SetDesiredCapacityType"}, - "errors":[ - { - "shape":"ScalingActivityInProgressFault", - "error":{ - "code":"ScalingActivityInProgress", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The Auto Scaling group can't be deleted because there are scaling activities in progress.

" - } - ], - "documentation":"

Sets the size of the specified AutoScalingGroup.

" - }, - "SetInstanceHealth":{ - "name":"SetInstanceHealth", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"SetInstanceHealthQuery"}, - "documentation":"

Sets the health status of the specified instance.

For more information, see Health Checks in the Auto Scaling Developer Guide.

" - }, - "SuspendProcesses":{ - "name":"SuspendProcesses", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"ScalingProcessQuery"}, - "documentation":"

Suspends the specified Auto Scaling processes for the specified Auto Scaling group. To suspend specific processes, use the ScalingProcesses parameter. To suspend all processes, omit the ScalingProcesses parameter.

Note that if you suspend either the Launch or Terminate process types, it can prevent other process types from functioning properly.

To resume processes that have been suspended, use ResumeProcesses.

For more information, see Suspend and Resume Auto Scaling Processes in the Auto Scaling Developer Guide.

" - }, - "TerminateInstanceInAutoScalingGroup":{ - "name":"TerminateInstanceInAutoScalingGroup", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"TerminateInstanceInAutoScalingGroupType"}, - "output":{ - "shape":"ActivityType", - "resultWrapper":"TerminateInstanceInAutoScalingGroupResult" - }, - "errors":[ - { - "shape":"ScalingActivityInProgressFault", - "error":{ - "code":"ScalingActivityInProgress", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The Auto Scaling group can't be deleted because there are scaling activities in progress.

" - } - ], - "documentation":"

Terminates the specified instance and optionally adjusts the desired group size.

This call simply makes a termination request. The instances is not terminated immediately." - }, - "UpdateAutoScalingGroup":{ - "name":"UpdateAutoScalingGroup", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"UpdateAutoScalingGroupType"}, - "errors":[ - { - "shape":"ScalingActivityInProgressFault", - "error":{ - "code":"ScalingActivityInProgress", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The Auto Scaling group can't be deleted because there are scaling activities in progress.

" - } - ], - "documentation":"

Updates the configuration for the specified AutoScalingGroup.

To update an Auto Scaling group with a launch configuration that has the InstanceMonitoring flag set to False, you must first ensure that collection of group metrics is disabled. Otherwise, calls to UpdateAutoScalingGroup will fail. If you have previously enabled group metrics collection, you can disable collection of all group metrics by calling DisableMetricsCollection.

The new settings are registered upon the completion of this call. Any launch configuration settings take effect on any triggers after this call returns. Scaling activities that are currently in progress aren't affected.

" - } - }, - "shapes":{ - "Activities":{ - "type":"list", - "member":{"shape":"Activity"} - }, - "ActivitiesType":{ - "type":"structure", - "required":["Activities"], - "members":{ - "Activities":{ - "shape":"Activities", - "documentation":"

The scaling activities.

" - }, - "NextToken":{ - "shape":"XmlString", - "documentation":"

The token to use when requesting the next set of items. If there are no additional items to return, the string is empty.

" - } - } - }, - "Activity":{ - "type":"structure", - "required":[ - "ActivityId", - "AutoScalingGroupName", - "Cause", - "StartTime", - "StatusCode" - ], - "members":{ - "ActivityId":{ - "shape":"XmlString", - "documentation":"

The ID of the activity.

" - }, - "AutoScalingGroupName":{ - "shape":"XmlStringMaxLen255", - "documentation":"

The name of the Auto Scaling group.

" - }, - "Description":{ - "shape":"XmlString", - "documentation":"

A friendly, more verbose description of the scaling activity.

" - }, - "Cause":{ - "shape":"XmlStringMaxLen1023", - "documentation":"

The reason the activity was begun.

" - }, - "StartTime":{ - "shape":"TimestampType", - "documentation":"

The start time of this activity.

" - }, - "EndTime":{ - "shape":"TimestampType", - "documentation":"

The end time of this activity.

" - }, - "StatusCode":{ - "shape":"ScalingActivityStatusCode", - "documentation":"

The current status of the activity.

" - }, - "StatusMessage":{ - "shape":"XmlStringMaxLen255", - "documentation":"

A friendly, more verbose description of the activity status.

" - }, - "Progress":{ - "shape":"Progress", - "documentation":"

A value between 0 and 100 that indicates the progress of the activity.

" - }, - "Details":{ - "shape":"XmlString", - "documentation":"

The details about the scaling activity.

" - } - }, - "documentation":"

Describes a long-running process that represents a change to your Auto Scaling group, such as changing its size. This can also be a process to replace an instance, or a process to perform any other long-running operations.

" - }, - "ActivityIds":{ - "type":"list", - "member":{"shape":"XmlString"} - }, - "ActivityType":{ - "type":"structure", - "members":{ - "Activity":{ - "shape":"Activity", - "documentation":"

A scaling activity.

" - } - } - }, - "AdjustmentType":{ - "type":"structure", - "members":{ - "AdjustmentType":{ - "shape":"XmlStringMaxLen255", - "documentation":"

The policy adjustment type. The valid values are ChangeInCapacity, ExactCapacity, and PercentChangeInCapacity.

For more information, see Dynamic Scaling in the Auto Scaling Developer Guide.

" - } - }, - "documentation":"

Describes a policy adjustment type.

" - }, - "AdjustmentTypes":{ - "type":"list", - "member":{"shape":"AdjustmentType"} - }, - "Alarm":{ - "type":"structure", - "members":{ - "AlarmName":{ - "shape":"XmlStringMaxLen255", - "documentation":"

The name of the alarm.

" - }, - "AlarmARN":{ - "shape":"ResourceName", - "documentation":"

The Amazon Resource Name (ARN) of the alarm.

" - } - }, - "documentation":"

Describes an alarm.

" - }, - "Alarms":{ - "type":"list", - "member":{"shape":"Alarm"} - }, - "AlreadyExistsFault":{ - "type":"structure", - "members":{ - "message":{"shape":"XmlStringMaxLen255"} - }, - "error":{ - "code":"AlreadyExists", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

You already have an Auto Scaling group or launch configuration with this name.

" - }, - "AsciiStringMaxLen255":{ - "type":"string", - "min":1, - "max":255, - "pattern":"[A-Za-z0-9\\-_\\/]+" - }, - "AssociatePublicIpAddress":{"type":"boolean"}, - "AttachInstancesQuery":{ - "type":"structure", - "required":["AutoScalingGroupName"], - "members":{ - "InstanceIds":{ - "shape":"InstanceIds", - "documentation":"

One or more EC2 instance IDs. You must specify at least one ID.

" - }, - "AutoScalingGroupName":{ - "shape":"ResourceName", - "documentation":"

The name of the group.

" - } - } - }, - "AutoScalingGroup":{ - "type":"structure", - "required":[ - "AutoScalingGroupName", - "LaunchConfigurationName", - "MinSize", - "MaxSize", - "DesiredCapacity", - "DefaultCooldown", - "AvailabilityZones", - "HealthCheckType", - "CreatedTime" - ], - "members":{ - "AutoScalingGroupName":{ - "shape":"XmlStringMaxLen255", - "documentation":"

The name of the group.

" - }, - "AutoScalingGroupARN":{ - "shape":"ResourceName", - "documentation":"

The Amazon Resource Name (ARN) of the group.

" - }, - "LaunchConfigurationName":{ - "shape":"XmlStringMaxLen255", - "documentation":"

The name of the associated launch configuration.

" - }, - "MinSize":{ - "shape":"AutoScalingGroupMinSize", - "documentation":"

The minimum size of the group.

" - }, - "MaxSize":{ - "shape":"AutoScalingGroupMaxSize", - "documentation":"

The maximum size of the group.

" - }, - "DesiredCapacity":{ - "shape":"AutoScalingGroupDesiredCapacity", - "documentation":"

The size of the group.

" - }, - "DefaultCooldown":{ - "shape":"Cooldown", - "documentation":"

The number of seconds after a scaling activity completes before any further scaling activities can start.

" - }, - "AvailabilityZones":{ - "shape":"AvailabilityZones", - "documentation":"

One or more Availability Zones for the group.

" - }, - "LoadBalancerNames":{ - "shape":"LoadBalancerNames", - "documentation":"

One or more load balancers associated with the group.

" - }, - "HealthCheckType":{ - "shape":"XmlStringMaxLen32", - "documentation":"

The service of interest for the health status check, which can be either EC2 for Amazon EC2 or ELB for Elastic Load Balancing.

" - }, - "HealthCheckGracePeriod":{ - "shape":"HealthCheckGracePeriod", - "documentation":"

The amount of time that Auto Scaling waits before checking an instance's health status. The grace period begins when an instance comes into service.

" - }, - "Instances":{ - "shape":"Instances", - "documentation":"

The EC2 instances associated with the group.

" - }, - "CreatedTime":{ - "shape":"TimestampType", - "documentation":"

The date and time the group was created.

" - }, - "SuspendedProcesses":{ - "shape":"SuspendedProcesses", - "documentation":"

The suspended processes associated with the group.

" - }, - "PlacementGroup":{ - "shape":"XmlStringMaxLen255", - "documentation":"

The name of the placement group into which you'll launch your instances, if any. For more information, see Placement Groups.

" - }, - "VPCZoneIdentifier":{ - "shape":"XmlStringMaxLen255", - "documentation":"

One or more subnet IDs, if applicable, separated by commas.

If you specify VPCZoneIdentifier and AvailabilityZones, ensure that the Availability Zones of the subnets match the values for AvailabilityZones.

" - }, - "EnabledMetrics":{ - "shape":"EnabledMetrics", - "documentation":"

The metrics enabled for this Auto Scaling group.

" - }, - "Status":{ - "shape":"XmlStringMaxLen255", - "documentation":"

The current state of the Auto Scaling group when a DeleteAutoScalingGroup action is in progress.

" - }, - "Tags":{ - "shape":"TagDescriptionList", - "documentation":"

The tags for the Auto Scaling group.

" - }, - "TerminationPolicies":{ - "shape":"TerminationPolicies", - "documentation":"

The termination policies for this Auto Scaling group.

" - } - }, - "documentation":"

Describes an Auto Scaling group.

" - }, - "AutoScalingGroupDesiredCapacity":{"type":"integer"}, - "AutoScalingGroupMaxSize":{"type":"integer"}, - "AutoScalingGroupMinSize":{"type":"integer"}, - "AutoScalingGroupNames":{ - "type":"list", - "member":{"shape":"ResourceName"} - }, - "AutoScalingGroupNamesType":{ - "type":"structure", - "members":{ - "AutoScalingGroupNames":{ - "shape":"AutoScalingGroupNames", - "documentation":"

The group names.

" - }, - "NextToken":{ - "shape":"XmlString", - "documentation":"

The token for the next set of items to return. (You received this token from a previous call.)

" - }, - "MaxRecords":{ - "shape":"MaxRecords", - "documentation":"

The maximum number of items to return with this call.

" - } - } - }, - "AutoScalingGroups":{ - "type":"list", - "member":{"shape":"AutoScalingGroup"} - }, - "AutoScalingGroupsType":{ - "type":"structure", - "required":["AutoScalingGroups"], - "members":{ - "AutoScalingGroups":{ - "shape":"AutoScalingGroups", - "documentation":"

The groups.

" - }, - "NextToken":{ - "shape":"XmlString", - "documentation":"

The token to use when requesting the next set of items. If there are no additional items to return, the string is empty.

" - } - } - }, - "AutoScalingInstanceDetails":{ - "type":"structure", - "required":[ - "InstanceId", - "AutoScalingGroupName", - "AvailabilityZone", - "LifecycleState", - "HealthStatus", - "LaunchConfigurationName" - ], - "members":{ - "InstanceId":{ - "shape":"XmlStringMaxLen16", - "documentation":"

The ID of the instance.

" - }, - "AutoScalingGroupName":{ - "shape":"XmlStringMaxLen255", - "documentation":"

The name of the Auto Scaling group associated with the instance.

" - }, - "AvailabilityZone":{ - "shape":"XmlStringMaxLen255", - "documentation":"

The Availability Zone for the instance.

" - }, - "LifecycleState":{ - "shape":"XmlStringMaxLen32", - "documentation":"

The lifecycle state for the instance. For more information, see Auto Scaling Instance States in the Auto Scaling Developer Guide.

" - }, - "HealthStatus":{ - "shape":"XmlStringMaxLen32", - "documentation":"

The health status of this instance. \"Healthy\" means that the instance is healthy and should remain in service. \"Unhealthy\" means that the instance is unhealthy and Auto Scaling should terminate and replace it.

" - }, - "LaunchConfigurationName":{ - "shape":"XmlStringMaxLen255", - "documentation":"

The launch configuration associated with the instance.

" - } - }, - "documentation":"

Describes an EC2 instance associated with an Auto Scaling group.

" - }, - "AutoScalingInstances":{ - "type":"list", - "member":{"shape":"AutoScalingInstanceDetails"} - }, - "AutoScalingInstancesType":{ - "type":"structure", - "members":{ - "AutoScalingInstances":{ - "shape":"AutoScalingInstances", - "documentation":"

The instances.

" - }, - "NextToken":{ - "shape":"XmlString", - "documentation":"

The token to use when requesting the next set of items. If there are no additional items to return, the string is empty.

" - } - } - }, - "AutoScalingNotificationTypes":{ - "type":"list", - "member":{"shape":"XmlStringMaxLen255"} - }, - "AvailabilityZones":{ - "type":"list", - "member":{"shape":"XmlStringMaxLen255"}, - "min":1 - }, - "BlockDeviceEbsDeleteOnTermination":{"type":"boolean"}, - "BlockDeviceEbsIops":{ - "type":"integer", - "min":100, - "max":30000 - }, - "BlockDeviceEbsVolumeSize":{ - "type":"integer", - "min":1, - "max":16384 - }, - "BlockDeviceEbsVolumeType":{ - "type":"string", - "min":1, - "max":255 - }, - "BlockDeviceMapping":{ - "type":"structure", - "required":["DeviceName"], - "members":{ - "VirtualName":{ - "shape":"XmlStringMaxLen255", - "documentation":"

The name of the virtual device, ephemeral0 to ephemeral3.

" - }, - "DeviceName":{ - "shape":"XmlStringMaxLen255", - "documentation":"

The device name exposed to the EC2 instance (for example, /dev/sdh or xvdh).

" - }, - "Ebs":{ - "shape":"Ebs", - "documentation":"

The information about the Amazon EBS volume.

" - }, - "NoDevice":{ - "shape":"NoDevice", - "documentation":"

Suppresses a device mapping.

If NoDevice is set to true for the root device, the instance might fail the EC2 health check. Auto Scaling launches a replacement instance if the instance fails the health check." - } - }, - "documentation":"

Describes a block device mapping.

" - }, - "BlockDeviceMappings":{ - "type":"list", - "member":{"shape":"BlockDeviceMapping"} - }, - "ClassicLinkVPCSecurityGroups":{ - "type":"list", - "member":{"shape":"XmlStringMaxLen255"} - }, - "CompleteLifecycleActionAnswer":{ - "type":"structure", - "members":{ - } - }, - "CompleteLifecycleActionType":{ - "type":"structure", - "required":[ - "LifecycleHookName", - "AutoScalingGroupName", - "LifecycleActionToken", - "LifecycleActionResult" - ], - "members":{ - "LifecycleHookName":{ - "shape":"AsciiStringMaxLen255", - "documentation":"

The name of the lifecycle hook.

" - }, - "AutoScalingGroupName":{ - "shape":"ResourceName", - "documentation":"

The name of the group for the lifecycle hook.

" - }, - "LifecycleActionToken":{ - "shape":"LifecycleActionToken", - "documentation":"

A universally unique identifier (UUID) that identifies a specific lifecycle action associated with an instance. Auto Scaling sends this token to the notification target you specified when you created the lifecycle hook.

" - }, - "LifecycleActionResult":{ - "shape":"LifecycleActionResult", - "documentation":"

The action for the group to take. This parameter can be either CONTINUE or ABANDON.

" - } - } - }, - "Cooldown":{"type":"integer"}, - "CreateAutoScalingGroupType":{ - "type":"structure", - "required":[ - "AutoScalingGroupName", - "MinSize", - "MaxSize" - ], - "members":{ - "AutoScalingGroupName":{ - "shape":"XmlStringMaxLen255", - "documentation":"

The name of the group. This name must be unique within the scope of your AWS account.

" - }, - "LaunchConfigurationName":{ - "shape":"ResourceName", - "documentation":"

The name of the launch configuration. Alternatively, use the InstanceId parameter to specify an EC2 instance instead of a launch configuration.

" - }, - "InstanceId":{ - "shape":"XmlStringMaxLen16", - "documentation":"

The ID of the EC2 instance used to create a launch configuration for the group. Alternatively, use the LaunchConfigurationName parameter to specify a launch configuration instead of an EC2 instance.

When you specify an ID of an instance, Auto Scaling creates a new launch configuration and associates it with the group. This launch configuration derives its attributes from the specified instance, with the exception of the block device mapping.

For more information, see Create an Auto Scaling Group Using an EC2 Instance ID in the Auto Scaling Developer Guide.

" - }, - "MinSize":{ - "shape":"AutoScalingGroupMinSize", - "documentation":"

The minimum size of the group.

" - }, - "MaxSize":{ - "shape":"AutoScalingGroupMaxSize", - "documentation":"

The maximum size of the group.

" - }, - "DesiredCapacity":{ - "shape":"AutoScalingGroupDesiredCapacity", - "documentation":"

The number of EC2 instances that should be running in the group. This value must be greater than or equal to the minimum size of the group and less than or equal to the maximum size of the group.

" - }, - "DefaultCooldown":{ - "shape":"Cooldown", - "documentation":"

The amount of time, in seconds, after a scaling activity completes before another scaling activity can start.

If DefaultCooldown is not specified, the default value is 300. For more information, see Understanding Auto Scaling Cooldowns in the Auto Scaling Developer Guide.

" - }, - "AvailabilityZones":{ - "shape":"AvailabilityZones", - "documentation":"

One or more Availability Zones for the group. This parameter is optional if you specify subnets using the VPCZoneIdentifier parameter.

" - }, - "LoadBalancerNames":{ - "shape":"LoadBalancerNames", - "documentation":"

One or more load balancers.

For more information, see Load Balance Your Auto Scaling Group in the Auto Scaling Developer Guide.

" - }, - "HealthCheckType":{ - "shape":"XmlStringMaxLen32", - "documentation":"

The service to use for the health checks. The valid values are EC2 and ELB.

By default, health checks use Amazon EC2 instance status checks to determine the health of an instance. For more information, see Health Checks.

" - }, - "HealthCheckGracePeriod":{ - "shape":"HealthCheckGracePeriod", - "documentation":"

The amount of time, in seconds, after an EC2 instance comes into service that Auto Scaling starts checking its health. During this time, any health check failures for the instance are ignored.

This parameter is required if you are adding an ELB health check. Frequently, new instances need to warm up, briefly, before they can pass a health check. To provide ample warm-up time, set the health check grace period of the group to match the expected startup period of your application.

For more information, see Add an Elastic Load Balancing Health Check to Your Auto Scaling Group in the Auto Scaling Developer Guide.

" - }, - "PlacementGroup":{ - "shape":"XmlStringMaxLen255", - "documentation":"

The name of the placement group into which you'll launch your instances, if any. For more information, see Placement Groups.

" - }, - "VPCZoneIdentifier":{ - "shape":"XmlStringMaxLen255", - "documentation":"

A comma-separated list of subnet identifiers for your virtual private cloud (VPC).

If you specify subnets and Availability Zones with this call, ensure that the subnets' Availability Zones match the Availability Zones specified.

For more information, see Auto Scaling and Amazon VPC in the Auto Scaling Developer Guide.

" - }, - "TerminationPolicies":{ - "shape":"TerminationPolicies", - "documentation":"

One or more termination policies used to select the instance to terminate. These policies are executed in the order that they are listed.

For more information, see Choosing a Termination Policy for Your Auto Scaling Group in the Auto Scaling Developer Guide.

" - }, - "Tags":{ - "shape":"Tags", - "documentation":"

The tag to be created or updated. Each tag should be defined by its resource type, resource ID, key, value, and a propagate flag. Valid values: key=value, value=value, propagate=true or false. Value and propagate are optional parameters.

For more information, see Add, Modify, or Remove Auto Scaling Group Tags in the Auto Scaling Developer Guide.

" - } - } - }, - "CreateLaunchConfigurationType":{ - "type":"structure", - "required":["LaunchConfigurationName"], - "members":{ - "LaunchConfigurationName":{ - "shape":"XmlStringMaxLen255", - "documentation":"

The name of the launch configuration. This name must be unique within the scope of your AWS account.

" - }, - "ImageId":{ - "shape":"XmlStringMaxLen255", - "documentation":"

The ID of the Amazon Machine Image (AMI) to use to launch your EC2 instances. For more information, see Finding an AMI in the Amazon Elastic Compute Cloud User Guide.

" - }, - "KeyName":{ - "shape":"XmlStringMaxLen255", - "documentation":"

The name of the key pair. For more information, see Amazon EC2 Key Pairs in the Amazon Elastic Compute Cloud User Guide.

" - }, - "SecurityGroups":{ - "shape":"SecurityGroups", - "documentation":"

One or more security groups with which to associate the instances.

If your instances are launched in EC2-Classic, you can either specify security group names or the security group IDs. For more information about security groups for EC2-Classic, see Amazon EC2 Security Groups in the Amazon Elastic Compute Cloud User Guide.

If your instances are launched in a VPC, specify security group IDs. For more information, see Security Groups for Your VPC in the Amazon Virtual Private Cloud User Guide.

" - }, - "ClassicLinkVPCId":{ - "shape":"XmlStringMaxLen255", - "documentation":"

The ID of a ClassicLink-enabled VPC to link your EC2-Classic instances to. This parameter can only be used if you are launching EC2-Classic instances. For more information, see ClassicLink in the Amazon Elastic Compute Cloud User Guide.

" - }, - "ClassicLinkVPCSecurityGroups":{ - "shape":"ClassicLinkVPCSecurityGroups", - "documentation":"

The IDs of one or more security groups for the VPC specified in ClassicLinkVPCId. This parameter is required if ClassicLinkVPCId is specified, and cannot be used otherwise. For more information, see ClassicLink in the Amazon Elastic Compute Cloud User Guide.

" - }, - "UserData":{ - "shape":"XmlStringUserData", - "documentation":"

The user data to make available to the launched EC2 instances. For more information, see Instance Metadata and User Data in the Amazon Elastic Compute Cloud User Guide.

At this time, launch configurations don't support compressed (zipped) user data files." - }, - "InstanceId":{ - "shape":"XmlStringMaxLen16", - "documentation":"

The ID of the EC2 instance to use to create the launch configuration.

The new launch configuration derives attributes from the instance, with the exception of the block device mapping.

To create a launch configuration with a block device mapping or override any other instance attributes, specify them as part of the same request.

For more information, see Create a Launch Configuration Using an EC2 Instance in the Auto Scaling Developer Guide.

" - }, - "InstanceType":{ - "shape":"XmlStringMaxLen255", - "documentation":"

The instance type of the Amazon EC2 instance. For information about available Amazon EC2 instance types, see Available Instance Types in the Amazon Elastic Cloud Compute User Guide.

" - }, - "KernelId":{ - "shape":"XmlStringMaxLen255", - "documentation":"

The ID of the kernel associated with the Amazon EC2 AMI.

" - }, - "RamdiskId":{ - "shape":"XmlStringMaxLen255", - "documentation":"

The ID of the RAM disk associated with the Amazon EC2 AMI.

" - }, - "BlockDeviceMappings":{ - "shape":"BlockDeviceMappings", - "documentation":"

One or more mappings that specify how block devices are exposed to the instance. For more information, see Block Device Mapping in the Amazon Elastic Compute Cloud User Guide.

" - }, - "InstanceMonitoring":{ - "shape":"InstanceMonitoring", - "documentation":"

Enables detailed monitoring if it is disabled. Detailed monitoring is enabled by default.

When detailed monitoring is enabled, Amazon Cloudwatch generates metrics every minute and your account is charged a fee. When you disable detailed monitoring, by specifying False, Cloudwatch generates metrics every 5 minutes. For more information, see Monitor Your Auto Scaling Instances in the Auto Scaling Developer Guide.

" - }, - "SpotPrice":{ - "shape":"SpotPrice", - "documentation":"

The maximum hourly price to be paid for any Spot Instance launched to fulfill the request. Spot Instances are launched when the price you specify exceeds the current Spot market price. For more information, see Launch Spot Instances in Your Auto Scaling Group in the Auto Scaling Developer Guide.

" - }, - "IamInstanceProfile":{ - "shape":"XmlStringMaxLen1600", - "documentation":"

The name or the Amazon Resource Name (ARN) of the instance profile associated with the IAM role for the instance.

Amazon EC2 instances launched with an IAM role will automatically have AWS security credentials available. You can use IAM roles with Auto Scaling to automatically enable applications running on your Amazon EC2 instances to securely access other AWS resources. For more information, see Launch Auto Scaling Instances with an IAM Role in the Auto Scaling Developer Guide.

" - }, - "EbsOptimized":{ - "shape":"EbsOptimized", - "documentation":"

Indicates whether the instance is optimized for Amazon EBS I/O. By default, the instance is not optimized for EBS I/O. The optimization provides dedicated throughput to Amazon EBS and an optimized configuration stack to provide optimal I/O performance. This optimization is not available with all instance types. Additional usage charges apply. For more information, see Amazon EBS-Optimized Instances in the Amazon Elastic Compute Cloud User Guide.

" - }, - "AssociatePublicIpAddress":{ - "shape":"AssociatePublicIpAddress", - "documentation":"

Used for groups that launch instances into a virtual private cloud (VPC). Specifies whether to assign a public IP address to each instance. For more information, see Auto Scaling and Amazon VPC in the Auto Scaling Developer Guide.

If you specify a value for this parameter, be sure to specify at least one subnet using the VPCZoneIdentifier parameter when you create your group.

Default: If the instance is launched into a default subnet, the default is true. If the instance is launched into a nondefault subnet, the default is false. For more information, see Supported Platforms in the Amazon Elastic Compute Cloud User Guide.

" - }, - "PlacementTenancy":{ - "shape":"XmlStringMaxLen64", - "documentation":"

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.

You must set the value of this parameter to dedicated if want to launch Dedicated Instances in a shared tenancy VPC (VPC with instance placement tenancy attribute set to default).

If you specify a value for this parameter, be sure to specify at least one VPC subnet using the VPCZoneIdentifier parameter when you create your group.

For more information, see Auto Scaling and Amazon VPC in the Auto Scaling Developer Guide.

Valid values: default | dedicated

" - } - } - }, - "CreateOrUpdateTagsType":{ - "type":"structure", - "required":["Tags"], - "members":{ - "Tags":{ - "shape":"Tags", - "documentation":"

The tag to be created or updated. Each tag should be defined by its resource type, resource ID, key, value, and a propagate flag. The resource type and resource ID identify the type and name of resource for which the tag is created. Currently, auto-scaling-group is the only supported resource type. The valid value for the resource ID is groupname.

The PropagateAtLaunch flag defines whether the new tag will be applied to instances launched by the group. Valid values are true or false. However, instances that are already running will not get the new or updated tag. Likewise, when you modify a tag, the updated version will be applied only to new instances launched by the group after the change. Running instances that had the previous version of the tag will continue to have the older tag.

When you create a tag and a tag of the same name already exists, the operation overwrites the previous tag definition, but you will not get an error message.

" - } - } - }, - "DeleteAutoScalingGroupType":{ - "type":"structure", - "required":["AutoScalingGroupName"], - "members":{ - "AutoScalingGroupName":{ - "shape":"ResourceName", - "documentation":"

The name of the group to delete.

" - }, - "ForceDelete":{ - "shape":"ForceDelete", - "documentation":"

Specifies that the group will be deleted along with all instances associated with the group, without waiting for all instances to be terminated. This parameter also deletes any lifecycle actions associated with the group.

" - } - } - }, - "DeleteLifecycleHookAnswer":{ - "type":"structure", - "members":{ - } - }, - "DeleteLifecycleHookType":{ - "type":"structure", - "required":[ - "LifecycleHookName", - "AutoScalingGroupName" - ], - "members":{ - "LifecycleHookName":{ - "shape":"AsciiStringMaxLen255", - "documentation":"

The name of the lifecycle hook.

" - }, - "AutoScalingGroupName":{ - "shape":"ResourceName", - "documentation":"

The name of the Auto Scaling group for the lifecycle hook.

" - } - } - }, - "DeleteNotificationConfigurationType":{ - "type":"structure", - "required":[ - "AutoScalingGroupName", - "TopicARN" - ], - "members":{ - "AutoScalingGroupName":{ - "shape":"ResourceName", - "documentation":"

The name of the Auto Scaling group.

" - }, - "TopicARN":{ - "shape":"ResourceName", - "documentation":"

The Amazon Resource Name (ARN) of the Amazon Simple Notification Service (SNS) topic.

" - } - } - }, - "DeletePolicyType":{ - "type":"structure", - "required":["PolicyName"], - "members":{ - "AutoScalingGroupName":{ - "shape":"ResourceName", - "documentation":"

The name of the Auto Scaling group.

" - }, - "PolicyName":{ - "shape":"ResourceName", - "documentation":"

The name or Amazon Resource Name (ARN) of the policy.

" - } - }, - "documentation":"

" - }, - "DeleteScheduledActionType":{ - "type":"structure", - "required":["ScheduledActionName"], - "members":{ - "AutoScalingGroupName":{ - "shape":"ResourceName", - "documentation":"

The name of the Auto Scaling group.

" - }, - "ScheduledActionName":{ - "shape":"ResourceName", - "documentation":"

The name of the action to delete.

" - } - } - }, - "DeleteTagsType":{ - "type":"structure", - "required":["Tags"], - "members":{ - "Tags":{ - "shape":"Tags", - "documentation":"

Each tag should be defined by its resource type, resource ID, key, value, and a propagate flag. Valid values are: Resource type = auto-scaling-group, Resource ID = AutoScalingGroupName, key=value, value=value, propagate=true or false.

" - } - } - }, - "DescribeAccountLimitsAnswer":{ - "type":"structure", - "members":{ - "MaxNumberOfAutoScalingGroups":{ - "shape":"MaxNumberOfAutoScalingGroups", - "documentation":"

The maximum number of groups allowed for your AWS account. The default limit is 20 per region.

" - }, - "MaxNumberOfLaunchConfigurations":{ - "shape":"MaxNumberOfLaunchConfigurations", - "documentation":"

The maximum number of launch configurations allowed for your AWS account. The default limit is 100 per region.

" - } - } - }, - "DescribeAdjustmentTypesAnswer":{ - "type":"structure", - "members":{ - "AdjustmentTypes":{ - "shape":"AdjustmentTypes", - "documentation":"

The policy adjustment types.

" - } - } - }, - "DescribeAutoScalingInstancesType":{ - "type":"structure", - "members":{ - "InstanceIds":{ - "shape":"InstanceIds", - "documentation":"

One or more Auto Scaling instances to describe, up to 50 instances. If you omit this parameter, all Auto Scaling instances are described. If you specify an ID that does not exist, it is ignored with no error.

" - }, - "MaxRecords":{ - "shape":"MaxRecords", - "documentation":"

The maximum number of items to return with this call.

" - }, - "NextToken":{ - "shape":"XmlString", - "documentation":"

The token for the next set of items to return. (You received this token from a previous call.)

" - } - } - }, - "DescribeAutoScalingNotificationTypesAnswer":{ - "type":"structure", - "members":{ - "AutoScalingNotificationTypes":{ - "shape":"AutoScalingNotificationTypes", - "documentation":"

One or more of the following notification types:

" - } - } - }, - "DescribeLifecycleHookTypesAnswer":{ - "type":"structure", - "members":{ - "LifecycleHookTypes":{ - "shape":"AutoScalingNotificationTypes", - "documentation":"

One or more of the following notification types:

" - } - } - }, - "DescribeLifecycleHooksAnswer":{ - "type":"structure", - "members":{ - "LifecycleHooks":{ - "shape":"LifecycleHooks", - "documentation":"

The lifecycle hooks for the specified group.

" - } - } - }, - "DescribeLifecycleHooksType":{ - "type":"structure", - "required":["AutoScalingGroupName"], - "members":{ - "AutoScalingGroupName":{ - "shape":"ResourceName", - "documentation":"

The name of the group.

" - }, - "LifecycleHookNames":{ - "shape":"LifecycleHookNames", - "documentation":"

The names of one or more lifecycle hooks.

" - } - } - }, - "DescribeMetricCollectionTypesAnswer":{ - "type":"structure", - "members":{ - "Metrics":{ - "shape":"MetricCollectionTypes", - "documentation":"

One or more of the following metrics:

The GroupStandbyInstances metric is not returned by default. You must explicitly request it when calling EnableMetricsCollection.

" - }, - "Granularities":{ - "shape":"MetricGranularityTypes", - "documentation":"

The granularities for the listed metrics.

" - } - } - }, - "DescribeNotificationConfigurationsAnswer":{ - "type":"structure", - "required":["NotificationConfigurations"], - "members":{ - "NotificationConfigurations":{ - "shape":"NotificationConfigurations", - "documentation":"

The notification configurations.

" - }, - "NextToken":{ - "shape":"XmlString", - "documentation":"

The token to use when requesting the next set of items. If there are no additional items to return, the string is empty.

" - } - } - }, - "DescribeNotificationConfigurationsType":{ - "type":"structure", - "members":{ - "AutoScalingGroupNames":{ - "shape":"AutoScalingGroupNames", - "documentation":"

The name of the group.

" - }, - "NextToken":{ - "shape":"XmlString", - "documentation":"

The token for the next set of items to return. (You received this token from a previous call.)

" - }, - "MaxRecords":{ - "shape":"MaxRecords", - "documentation":"

The maximum number of items to return with this call.

" - } - } - }, - "DescribePoliciesType":{ - "type":"structure", - "members":{ - "AutoScalingGroupName":{ - "shape":"ResourceName", - "documentation":"

The name of the group.

" - }, - "PolicyNames":{ - "shape":"PolicyNames", - "documentation":"

One or more policy names or policy ARNs to be described. If you omit this list, all policy names are described. If an group name is provided, the results are limited to that group. This list is limited to 50 items. If you specify an unknown policy name, it is ignored with no error.

" - }, - "NextToken":{ - "shape":"XmlString", - "documentation":"

The token for the next set of items to return. (You received this token from a previous call.)

" - }, - "MaxRecords":{ - "shape":"MaxRecords", - "documentation":"

The maximum number of items to be returned with each call.

" - } - } - }, - "DescribeScalingActivitiesType":{ - "type":"structure", - "members":{ - "ActivityIds":{ - "shape":"ActivityIds", - "documentation":"

A list containing the activity IDs of the desired scaling activities. If this list is omitted, all activities are described. If an AutoScalingGroupName is provided, the results are limited to that group. The list of requested activities cannot contain more than 50 items. If unknown activities are requested, they are ignored with no error.

" - }, - "AutoScalingGroupName":{ - "shape":"ResourceName", - "documentation":"

The name of the group.

" - }, - "MaxRecords":{ - "shape":"MaxRecords", - "documentation":"

The maximum number of items to return with this call.

" - }, - "NextToken":{ - "shape":"XmlString", - "documentation":"

The token for the next set of items to return. (You received this token from a previous call.)

" - } - } - }, - "DescribeScheduledActionsType":{ - "type":"structure", - "members":{ - "AutoScalingGroupName":{ - "shape":"ResourceName", - "documentation":"

The name of the group.

" - }, - "ScheduledActionNames":{ - "shape":"ScheduledActionNames", - "documentation":"

Describes one or more scheduled actions. If you omit this list, the call describes all scheduled actions. If you specify an unknown scheduled action it is ignored with no error.

You can describe up to a maximum of 50 instances with a single call. If there are more items to return, the call returns a token. To get the next set of items, repeat the call with the returned token in the NextToken parameter.

" - }, - "StartTime":{ - "shape":"TimestampType", - "documentation":"

The earliest scheduled start time to return. If scheduled action names are provided, this parameter is ignored.

" - }, - "EndTime":{ - "shape":"TimestampType", - "documentation":"

The latest scheduled start time to return. If scheduled action names are provided, this parameter is ignored.

" - }, - "NextToken":{ - "shape":"XmlString", - "documentation":"

The token for the next set of items to return. (You received this token from a previous call.)

" - }, - "MaxRecords":{ - "shape":"MaxRecords", - "documentation":"

The maximum number of items to return with this call.

" - } - } - }, - "DescribeTagsType":{ - "type":"structure", - "members":{ - "Filters":{ - "shape":"Filters", - "documentation":"

The value of the filter type used to identify the tags to be returned. For example, you can filter so that tags are returned according to Auto Scaling group, the key and value, or whether the new tag will be applied to instances launched after the tag is created (PropagateAtLaunch).

" - }, - "NextToken":{ - "shape":"XmlString", - "documentation":"

The token for the next set of items to return. (You received this token from a previous call.)

" - }, - "MaxRecords":{ - "shape":"MaxRecords", - "documentation":"

The maximum number of items to return with this call.

" - } - } - }, - "DescribeTerminationPolicyTypesAnswer":{ - "type":"structure", - "members":{ - "TerminationPolicyTypes":{ - "shape":"TerminationPolicies", - "documentation":"

The Termination policies supported by Auto Scaling. They are: OldestInstance, OldestLaunchConfiguration, NewestInstance, ClosestToNextInstanceHour, and Default.

" - } - } - }, - "DetachInstancesAnswer":{ - "type":"structure", - "members":{ - "Activities":{ - "shape":"Activities", - "documentation":"

The activities related to detaching the instances from the Auto Scaling group.

" - } - } - }, - "DetachInstancesQuery":{ - "type":"structure", - "required":[ - "AutoScalingGroupName", - "ShouldDecrementDesiredCapacity" - ], - "members":{ - "InstanceIds":{ - "shape":"InstanceIds", - "documentation":"

One or more instance IDs.

" - }, - "AutoScalingGroupName":{ - "shape":"ResourceName", - "documentation":"

The name of the group.

" - }, - "ShouldDecrementDesiredCapacity":{ - "shape":"ShouldDecrementDesiredCapacity", - "documentation":"

If True, the Auto Scaling group decrements the desired capacity value by the number of instances detached.

" - } - } - }, - "DisableMetricsCollectionQuery":{ - "type":"structure", - "required":["AutoScalingGroupName"], - "members":{ - "AutoScalingGroupName":{ - "shape":"ResourceName", - "documentation":"

The name or Amazon Resource Name (ARN) of the group.

" - }, - "Metrics":{ - "shape":"Metrics", - "documentation":"

One or more of the following metrics:

If you omit this parameter, all metrics are disabled.

" - } - } - }, - "Ebs":{ - "type":"structure", - "members":{ - "SnapshotId":{ - "shape":"XmlStringMaxLen255", - "documentation":"

The ID of the snapshot.

" - }, - "VolumeSize":{ - "shape":"BlockDeviceEbsVolumeSize", - "documentation":"

The volume size, in gigabytes.

Valid values: If the volume type is io1, the minimum size of the volume is 10 GiB. If you specify SnapshotId and VolumeSize, VolumeSize must be equal to or larger than the size of the snapshot.

Default: If you create a volume from a snapshot and you don't specify a volume size, the default is the size of the snapshot.

Required: Required when the volume type is io1.

" - }, - "VolumeType":{ - "shape":"BlockDeviceEbsVolumeType", - "documentation":"

The volume type.

Valid values: standard | io1 | gp2

Default: standard

" - }, - "DeleteOnTermination":{ - "shape":"BlockDeviceEbsDeleteOnTermination", - "documentation":"

Indicates whether to delete the volume on instance termination.

Default: true

" - }, - "Iops":{ - "shape":"BlockDeviceEbsIops", - "documentation":"

For Provisioned IOPS (SSD) volumes only. The number of I/O operations per second (IOPS) to provision for the volume.

Valid values: Range is 100 to 4000.

Default: None

" - } - }, - "documentation":"

Describes an Amazon EBS volume.

" - }, - "EbsOptimized":{"type":"boolean"}, - "EnableMetricsCollectionQuery":{ - "type":"structure", - "required":[ - "AutoScalingGroupName", - "Granularity" - ], - "members":{ - "AutoScalingGroupName":{ - "shape":"ResourceName", - "documentation":"

The name or ARN of the Auto Scaling group.

" - }, - "Metrics":{ - "shape":"Metrics", - "documentation":"

One or more of the following metrics:

If you omit this parameter, all metrics are enabled.

The GroupStandbyInstances metric is not returned by default. You must explicitly request it when calling EnableMetricsCollection.

" - }, - "Granularity":{ - "shape":"XmlStringMaxLen255", - "documentation":"

The granularity to associate with the metrics to collect. Currently, the only valid value is \"1Minute\".

" - } - } - }, - "EnabledMetric":{ - "type":"structure", - "members":{ - "Metric":{ - "shape":"XmlStringMaxLen255", - "documentation":"

The name of the metric.

" - }, - "Granularity":{ - "shape":"XmlStringMaxLen255", - "documentation":"

The granularity of the metric.

" - } - }, - "documentation":"

Describes an enabled metric.

" - }, - "EnabledMetrics":{ - "type":"list", - "member":{"shape":"EnabledMetric"} - }, - "EnterStandbyAnswer":{ - "type":"structure", - "members":{ - "Activities":{ - "shape":"Activities", - "documentation":"

The activities related to moving instances into Standby mode.

" - } - } - }, - "EnterStandbyQuery":{ - "type":"structure", - "required":[ - "AutoScalingGroupName", - "ShouldDecrementDesiredCapacity" - ], - "members":{ - "InstanceIds":{ - "shape":"InstanceIds", - "documentation":"

One or more instances to move into Standby mode. You must specify at least one instance ID.

" - }, - "AutoScalingGroupName":{ - "shape":"ResourceName", - "documentation":"

The name of the Auto Scaling group.

" - }, - "ShouldDecrementDesiredCapacity":{ - "shape":"ShouldDecrementDesiredCapacity", - "documentation":"

Specifies whether the instances moved to Standby mode count as part of the Auto Scaling group's desired capacity. If set, the desired capacity for the Auto Scaling group decrements by the number of instances moved to Standby mode.

" - } - } - }, - "ExecutePolicyType":{ - "type":"structure", - "required":["PolicyName"], - "members":{ - "AutoScalingGroupName":{ - "shape":"ResourceName", - "documentation":"

The name or Amazon Resource Name (ARN) of the Auto Scaling group.

" - }, - "PolicyName":{ - "shape":"ResourceName", - "documentation":"

The name or ARN of the policy.

" - }, - "HonorCooldown":{ - "shape":"HonorCooldown", - "documentation":"

Set to True if you want Auto Scaling to wait for the cooldown period associated with the Auto Scaling group to complete before executing the policy.

Set to False if you want Auto Scaling to circumvent the cooldown period associated with the Auto Scaling group and execute the policy before the cooldown period ends.

For more information, see Understanding Auto Scaling Cooldowns in the Auto Scaling Developer Guide.

" - } - } - }, - "ExitStandbyAnswer":{ - "type":"structure", - "members":{ - "Activities":{ - "shape":"Activities", - "documentation":"

The activities related to moving instances out of Standby mode.

" - } - } - }, - "ExitStandbyQuery":{ - "type":"structure", - "required":["AutoScalingGroupName"], - "members":{ - "InstanceIds":{ - "shape":"InstanceIds", - "documentation":"

One or more instance IDs. You must specify at least one instance ID.

" - }, - "AutoScalingGroupName":{ - "shape":"ResourceName", - "documentation":"

The name of the Auto Scaling group.

" - } - } - }, - "Filter":{ - "type":"structure", - "members":{ - "Name":{ - "shape":"XmlString", - "documentation":"

The name of the filter. The valid values are: \"auto-scaling-group\", \"key\", \"value\", and \"propagate-at-launch\".

" - }, - "Values":{ - "shape":"Values", - "documentation":"

The value of the filter.

" - } - }, - "documentation":"

Describes a filter.

" - }, - "Filters":{ - "type":"list", - "member":{"shape":"Filter"} - }, - "ForceDelete":{"type":"boolean"}, - "GlobalTimeout":{"type":"integer"}, - "HealthCheckGracePeriod":{"type":"integer"}, - "HeartbeatTimeout":{"type":"integer"}, - "HonorCooldown":{"type":"boolean"}, - "Instance":{ - "type":"structure", - "required":[ - "InstanceId", - "AvailabilityZone", - "LifecycleState", - "HealthStatus", - "LaunchConfigurationName" - ], - "members":{ - "InstanceId":{ - "shape":"XmlStringMaxLen16", - "documentation":"

The ID of the instance.

" - }, - "AvailabilityZone":{ - "shape":"XmlStringMaxLen255", - "documentation":"

The Availability Zone associated with this instance.

" - }, - "LifecycleState":{ - "shape":"LifecycleState", - "documentation":"

A description of the current lifecycle state.

The Quarantined lifecycle state is not used.

" - }, - "HealthStatus":{ - "shape":"XmlStringMaxLen32", - "documentation":"

The health status of the instance.

" - }, - "LaunchConfigurationName":{ - "shape":"XmlStringMaxLen255", - "documentation":"

The launch configuration associated with the instance.

" - } - }, - "documentation":"

Describes an EC2 instance.

" - }, - "InstanceIds":{ - "type":"list", - "member":{"shape":"XmlStringMaxLen16"} - }, - "InstanceMonitoring":{ - "type":"structure", - "members":{ - "Enabled":{ - "shape":"MonitoringEnabled", - "documentation":"

If True, instance monitoring is enabled.

" - } - }, - "documentation":"

Describes whether instance monitoring is enabled.

" - }, - "Instances":{ - "type":"list", - "member":{"shape":"Instance"} - }, - "InvalidNextToken":{ - "type":"structure", - "members":{ - "message":{"shape":"XmlStringMaxLen255"} - }, - "error":{ - "code":"InvalidNextToken", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The NextToken value is not valid.

" - }, - "LaunchConfiguration":{ - "type":"structure", - "required":[ - "LaunchConfigurationName", - "ImageId", - "InstanceType", - "CreatedTime" - ], - "members":{ - "LaunchConfigurationName":{ - "shape":"XmlStringMaxLen255", - "documentation":"

The name of the launch configuration.

" - }, - "LaunchConfigurationARN":{ - "shape":"ResourceName", - "documentation":"

The Amazon Resource Name (ARN) of the launch configuration.

" - }, - "ImageId":{ - "shape":"XmlStringMaxLen255", - "documentation":"

The ID of the Amazon Machine Image (AMI).

" - }, - "KeyName":{ - "shape":"XmlStringMaxLen255", - "documentation":"

The name of the key pair.

" - }, - "SecurityGroups":{ - "shape":"SecurityGroups", - "documentation":"

The security groups to associate with the EC2 instances.

" - }, - "ClassicLinkVPCId":{ - "shape":"XmlStringMaxLen255", - "documentation":"

The ID of a ClassicLink-enabled VPC to link your EC2-Classic instances to. This parameter can only be used if you are launching EC2-Classic instances. For more information, see ClassicLink in the Amazon Elastic Compute Cloud User Guide.

" - }, - "ClassicLinkVPCSecurityGroups":{ - "shape":"ClassicLinkVPCSecurityGroups", - "documentation":"

The IDs of one or more security groups for the VPC specified in ClassicLinkVPCId. This parameter is required if ClassicLinkVPCId is specified, and cannot be used otherwise. For more information, see ClassicLink in the Amazon Elastic Compute Cloud User Guide.

" - }, - "UserData":{ - "shape":"XmlStringUserData", - "documentation":"

The user data available to the EC2 instances.

" - }, - "InstanceType":{ - "shape":"XmlStringMaxLen255", - "documentation":"

The instance type for the EC2 instances.

" - }, - "KernelId":{ - "shape":"XmlStringMaxLen255", - "documentation":"

The ID of the kernel associated with the AMI.

" - }, - "RamdiskId":{ - "shape":"XmlStringMaxLen255", - "documentation":"

The ID of the RAM disk associated with the AMI.

" - }, - "BlockDeviceMappings":{ - "shape":"BlockDeviceMappings", - "documentation":"

A block device mapping that specifies how block devices are exposed to the instance. Each mapping is made up of a virtualName and a deviceName.

" - }, - "InstanceMonitoring":{ - "shape":"InstanceMonitoring", - "documentation":"

Controls whether instances in this group are launched with detailed monitoring.

" - }, - "SpotPrice":{ - "shape":"SpotPrice", - "documentation":"

The price to bid when launching Spot Instances.

" - }, - "IamInstanceProfile":{ - "shape":"XmlStringMaxLen1600", - "documentation":"

The name or Amazon Resource Name (ARN) of the instance profile associated with the IAM role for the instance.

" - }, - "CreatedTime":{ - "shape":"TimestampType", - "documentation":"

The creation date and time for the launch configuration.

" - }, - "EbsOptimized":{ - "shape":"EbsOptimized", - "documentation":"

Controls whether the instance is optimized for EBS I/O (true) or not (false).

" - }, - "AssociatePublicIpAddress":{ - "shape":"AssociatePublicIpAddress", - "documentation":"

Specifies whether the EC2 instances are associated with a public IP address (true) or not (false).

" - }, - "PlacementTenancy":{ - "shape":"XmlStringMaxLen64", - "documentation":"

The tenancy of the instance, either default or dedicated. An instance with dedicated tenancy runs in an isolated, single-tenant hardware and can only be launched in a VPC.

" - } - }, - "documentation":"

Describes a launch configuration.

" - }, - "LaunchConfigurationNameType":{ - "type":"structure", - "required":["LaunchConfigurationName"], - "members":{ - "LaunchConfigurationName":{ - "shape":"ResourceName", - "documentation":"

The name of the launch configuration.

" - } - } - }, - "LaunchConfigurationNames":{ - "type":"list", - "member":{"shape":"ResourceName"} - }, - "LaunchConfigurationNamesType":{ - "type":"structure", - "members":{ - "LaunchConfigurationNames":{ - "shape":"LaunchConfigurationNames", - "documentation":"

The launch configuration names.

" - }, - "NextToken":{ - "shape":"XmlString", - "documentation":"

The token for the next set of items to return. (You received this token from a previous call.)

" - }, - "MaxRecords":{ - "shape":"MaxRecords", - "documentation":"

The maximum number of items to return with this call. The default is 100.

" - } - } - }, - "LaunchConfigurations":{ - "type":"list", - "member":{"shape":"LaunchConfiguration"} - }, - "LaunchConfigurationsType":{ - "type":"structure", - "required":["LaunchConfigurations"], - "members":{ - "LaunchConfigurations":{ - "shape":"LaunchConfigurations", - "documentation":"

The launch configurations.

" - }, - "NextToken":{ - "shape":"XmlString", - "documentation":"

The token to use when requesting the next set of items. If there are no additional items to return, the string is empty.

" - } - } - }, - "LifecycleActionResult":{"type":"string"}, - "LifecycleActionToken":{ - "type":"string", - "min":36, - "max":36 - }, - "LifecycleHook":{ - "type":"structure", - "members":{ - "LifecycleHookName":{ - "shape":"AsciiStringMaxLen255", - "documentation":"

The name of the lifecycle hook.

" - }, - "AutoScalingGroupName":{ - "shape":"ResourceName", - "documentation":"

The name of the Auto Scaling group for the lifecycle hook.

" - }, - "LifecycleTransition":{ - "shape":"LifecycleTransition", - "documentation":"

The state of the EC2 instance to which you want to attach the lifecycle hook. For a list of lifecycle hook types, see DescribeLifecycleHooks.

" - }, - "NotificationTargetARN":{ - "shape":"ResourceName", - "documentation":"

The ARN of the notification target that Auto Scaling uses to notify you when an instance is in the transition state for the lifecycle hook. This ARN target can be either an SQS queue or an SNS topic. The notification message sent to the target includes the following:

" - }, - "RoleARN":{ - "shape":"ResourceName", - "documentation":"

The ARN of the IAM role that allows the Auto Scaling group to publish to the specified notification target.

" - }, - "NotificationMetadata":{ - "shape":"XmlStringMaxLen1023", - "documentation":"

Additional information that you want to include any time Auto Scaling sends a message to the notification target.

" - }, - "HeartbeatTimeout":{ - "shape":"HeartbeatTimeout", - "documentation":"

The amount of time that can elapse before the lifecycle hook times out. When the lifecycle hook times out, Auto Scaling performs the action defined in the DefaultResult parameter. You can prevent the lifecycle hook from timing out by calling RecordLifecycleActionHeartbeat.

" - }, - "GlobalTimeout":{ - "shape":"GlobalTimeout", - "documentation":"

The maximum length of time an instance can remain in a Pending:Wait or Terminating:Wait state. Currently, this value is set at 48 hours.

" - }, - "DefaultResult":{ - "shape":"LifecycleActionResult", - "documentation":"

Defines the action the Auto Scaling group should take when the lifecycle hook timeout elapses or if an unexpected failure occurs. The valid values are CONTINUE and ABANDON. The default value is CONTINUE.

" - } - }, - "documentation":"

Describes a lifecycle hook, which tells Auto Scaling that you want to perform an action when an instance launches or terminates. When you have a lifecycle hook in place, the Auto Scaling group will either:

For more information, see Auto Scaling Pending State and Auto Scaling Terminating State in the Auto Scaling Developer Guide.

" - }, - "LifecycleHookNames":{ - "type":"list", - "member":{"shape":"AsciiStringMaxLen255"} - }, - "LifecycleHooks":{ - "type":"list", - "member":{"shape":"LifecycleHook"} - }, - "LifecycleState":{ - "type":"string", - "enum":[ - "Pending", - "Pending:Wait", - "Pending:Proceed", - "Quarantined", - "InService", - "Terminating", - "Terminating:Wait", - "Terminating:Proceed", - "Terminated", - "Detaching", - "Detached", - "EnteringStandby", - "Standby" - ] - }, - "LifecycleTransition":{"type":"string"}, - "LimitExceededFault":{ - "type":"structure", - "members":{ - "message":{"shape":"XmlStringMaxLen255"} - }, - "error":{ - "code":"LimitExceeded", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The limit for the number of Auto Scaling groups or launch configurations has already been reached.

" - }, - "LoadBalancerNames":{ - "type":"list", - "member":{"shape":"XmlStringMaxLen255"} - }, - "MaxNumberOfAutoScalingGroups":{"type":"integer"}, - "MaxNumberOfLaunchConfigurations":{"type":"integer"}, - "MaxRecords":{"type":"integer"}, - "MetricCollectionType":{ - "type":"structure", - "members":{ - "Metric":{ - "shape":"XmlStringMaxLen255", - "documentation":"

The metric.

" - } - }, - "documentation":"

Describes a metric.

" - }, - "MetricCollectionTypes":{ - "type":"list", - "member":{"shape":"MetricCollectionType"} - }, - "MetricGranularityType":{ - "type":"structure", - "members":{ - "Granularity":{ - "shape":"XmlStringMaxLen255", - "documentation":"

The granularity.

" - } - }, - "documentation":"

Describes a granularity of a metric.

" - }, - "MetricGranularityTypes":{ - "type":"list", - "member":{"shape":"MetricGranularityType"} - }, - "Metrics":{ - "type":"list", - "member":{"shape":"XmlStringMaxLen255"} - }, - "MinAdjustmentStep":{"type":"integer"}, - "MonitoringEnabled":{"type":"boolean"}, - "NoDevice":{"type":"boolean"}, - "NotificationConfiguration":{ - "type":"structure", - "members":{ - "AutoScalingGroupName":{ - "shape":"ResourceName", - "documentation":"

The name of the group.

" - }, - "TopicARN":{ - "shape":"ResourceName", - "documentation":"

The Amazon Resource Name (ARN) of the Amazon Simple Notification Service (SNS) topic.

" - }, - "NotificationType":{ - "shape":"XmlStringMaxLen255", - "documentation":"

The types of events for an action to start.

" - } - }, - "documentation":"

Describes a notification.

" - }, - "NotificationConfigurations":{ - "type":"list", - "member":{"shape":"NotificationConfiguration"} - }, - "PoliciesType":{ - "type":"structure", - "members":{ - "ScalingPolicies":{ - "shape":"ScalingPolicies", - "documentation":"

The scaling policies.

" - }, - "NextToken":{ - "shape":"XmlString", - "documentation":"

The token to use when requesting the next set of items. If there are no additional items to return, the string is empty.

" - } - } - }, - "PolicyARNType":{ - "type":"structure", - "members":{ - "PolicyARN":{ - "shape":"ResourceName", - "documentation":"

The Amazon Resource Name (ARN) of the policy.

" - } - } - }, - "PolicyIncrement":{"type":"integer"}, - "PolicyNames":{ - "type":"list", - "member":{"shape":"ResourceName"} - }, - "ProcessNames":{ - "type":"list", - "member":{"shape":"XmlStringMaxLen255"} - }, - "ProcessType":{ - "type":"structure", - "required":["ProcessName"], - "members":{ - "ProcessName":{ - "shape":"XmlStringMaxLen255", - "documentation":"

The name of the process.

" - } - }, - "documentation":"

Describes a process type.

There are two primary Auto Scaling process types--Launch and Terminate. The Launch process creates a new EC2 instance for an Auto Scaling group, and the Terminate process removes an existing EC2 instance. The remaining Auto Scaling process types relate to specific Auto Scaling features:

If you suspend Launch or Terminate, all other process types are affected to varying degrees. The following descriptions discuss how each process type is affected by a suspension of Launch or Terminate.

The AddToLoadBalancer process type adds instances to the load balancer when the instances are launched. If you suspend this process, Auto Scaling will launch the instances but will not add them to the load balancer. If you resume the AddToLoadBalancer process, Auto Scaling will also resume adding new instances to the load balancer when they are launched. However, Auto Scaling will not add running instances that were launched while the process was suspended; those instances must be added manually using the RegisterInstancesWithLoadBalancer call.

The AlarmNotification process type accepts notifications from Amazon CloudWatch alarms that are associated with the Auto Scaling group. If you suspend the AlarmNotification process type, Auto Scaling will not automatically execute scaling policies that would be triggered by alarms.

Although the AlarmNotification process type is not directly affected by a suspension of Launch or Terminate, alarm notifications are often used to signal that a change in the size of the Auto Scaling group is warranted. If you suspend Launch or Terminate, Auto Scaling might not be able to implement the alarm's associated policy.

The AZRebalance process type seeks to maintain a balanced number of instances across Availability Zones within a Region. If you remove an Availability Zone from your Auto Scaling group or an Availability Zone otherwise becomes unhealthy or unavailable, Auto Scaling launches new instances in an unaffected Availability Zone before terminating the unhealthy or unavailable instances. When the unhealthy Availability Zone returns to a healthy state, Auto Scaling automatically redistributes the application instances evenly across all of the designated Availability Zones.

If you call SuspendProcesses on the launch process type, the AZRebalance process will neither launch new instances nor terminate existing instances. This is because the AZRebalance process terminates existing instances only after launching the replacement instances.

If you call SuspendProcesses on the terminate process type, the AZRebalance process can cause your Auto Scaling group to grow up to ten percent larger than the maximum size. This is because Auto Scaling allows groups to temporarily grow larger than the maximum size during rebalancing activities. If Auto Scaling cannot terminate instances, your Auto Scaling group could remain up to ten percent larger than the maximum size until you resume the terminate process type.

The HealthCheck process type checks the health of the instances. Auto Scaling marks an instance as unhealthy if Amazon EC2 or Elastic Load Balancing informs Auto Scaling that the instance is unhealthy. The HealthCheck process can override the health status of an instance that you set with SetInstanceHealth.

The ReplaceUnhealthy process type terminates instances that are marked as unhealthy and subsequently creates new instances to replace them. This process calls both of the primary process types--first Terminate and then Launch.

The HealthCheck process type works in conjunction with the ReplaceUnhealthly process type to provide health check functionality. If you suspend either Launch or Terminate, the ReplaceUnhealthy process type will not function properly.

The ScheduledActions process type performs scheduled actions that you create with PutScheduledUpdateGroupAction. Scheduled actions often involve launching new instances or terminating existing instances. If you suspend either Launch or Terminate, your scheduled actions might not function as expected.

" - }, - "Processes":{ - "type":"list", - "member":{"shape":"ProcessType"} - }, - "ProcessesType":{ - "type":"structure", - "members":{ - "Processes":{ - "shape":"Processes", - "documentation":"

The names of the process types.

" - } - } - }, - "Progress":{"type":"integer"}, - "PropagateAtLaunch":{"type":"boolean"}, - "PutLifecycleHookAnswer":{ - "type":"structure", - "members":{ - } - }, - "PutLifecycleHookType":{ - "type":"structure", - "required":[ - "LifecycleHookName", - "AutoScalingGroupName" - ], - "members":{ - "LifecycleHookName":{ - "shape":"AsciiStringMaxLen255", - "documentation":"

The name of the lifecycle hook.

" - }, - "AutoScalingGroupName":{ - "shape":"ResourceName", - "documentation":"

The name of the Auto Scaling group to which you want to assign the lifecycle hook.

" - }, - "LifecycleTransition":{ - "shape":"LifecycleTransition", - "documentation":"

The Amazon EC2 instance state to which you want to attach the lifecycle hook. See DescribeLifecycleHookTypes for a list of available lifecycle hook types.

This parameter is required for new lifecycle hooks, but optional when updating existing hooks.

" - }, - "RoleARN":{ - "shape":"ResourceName", - "documentation":"

The ARN of the IAM role that allows the Auto Scaling group to publish to the specified notification target.

This parameter is required for new lifecycle hooks, but optional when updating existing hooks.

" - }, - "NotificationTargetARN":{ - "shape":"ResourceName", - "documentation":"

The ARN of the notification target that Auto Scaling will use to notify you when an instance is in the transition state for the lifecycle hook. This ARN target can be either an SQS queue or an SNS topic.

This parameter is required for new lifecycle hooks, but optional when updating existing hooks.

The notification message sent to the target will include:

This operation uses the JSON format when sending notifications to an Amazon SQS queue, and an email key/value pair format when sending notifications to an Amazon SNS topic.

When you call this operation, a test message is sent to the notification target. This test message contains an additional key/value pair: Event:autoscaling:TEST_NOTIFICATION.

" - }, - "NotificationMetadata":{ - "shape":"XmlStringMaxLen1023", - "documentation":"

Contains additional information that you want to include any time Auto Scaling sends a message to the notification target.

" - }, - "HeartbeatTimeout":{ - "shape":"HeartbeatTimeout", - "documentation":"

Defines the amount of time, in seconds, that can elapse before the lifecycle hook times out. When the lifecycle hook times out, Auto Scaling performs the action defined in the DefaultResult parameter. You can prevent the lifecycle hook from timing out by calling RecordLifecycleActionHeartbeat. The default value for this parameter is 3600 seconds (1 hour).

" - }, - "DefaultResult":{ - "shape":"LifecycleActionResult", - "documentation":"

Defines the action the Auto Scaling group should take when the lifecycle hook timeout elapses or if an unexpected failure occurs. The value for this parameter can be either CONTINUE or ABANDON. The default value for this parameter is ABANDON.

" - } - } - }, - "PutNotificationConfigurationType":{ - "type":"structure", - "required":[ - "AutoScalingGroupName", - "TopicARN", - "NotificationTypes" - ], - "members":{ - "AutoScalingGroupName":{ - "shape":"ResourceName", - "documentation":"

The name of the Auto Scaling group.

" - }, - "TopicARN":{ - "shape":"ResourceName", - "documentation":"

The Amazon Resource Name (ARN) of the Amazon Simple Notification Service (SNS) topic.

" - }, - "NotificationTypes":{ - "shape":"AutoScalingNotificationTypes", - "documentation":"

The type of event that will cause the notification to be sent. For details about notification types supported by Auto Scaling, see DescribeAutoScalingNotificationTypes.

" - } - } - }, - "PutScalingPolicyType":{ - "type":"structure", - "required":[ - "AutoScalingGroupName", - "PolicyName", - "ScalingAdjustment", - "AdjustmentType" - ], - "members":{ - "AutoScalingGroupName":{ - "shape":"ResourceName", - "documentation":"

The name or ARN of the group.

" - }, - "PolicyName":{ - "shape":"XmlStringMaxLen255", - "documentation":"

The name of the policy.

" - }, - "ScalingAdjustment":{ - "shape":"PolicyIncrement", - "documentation":"

The number of instances by which to scale. AdjustmentType determines the interpretation of this number (e.g., as an absolute number or as a percentage of the existing Auto Scaling group size). A positive increment adds to the current capacity and a negative value removes from the current capacity.

" - }, - "AdjustmentType":{ - "shape":"XmlStringMaxLen255", - "documentation":"

Specifies whether the ScalingAdjustment is an absolute number or a percentage of the current capacity. Valid values are ChangeInCapacity, ExactCapacity, and PercentChangeInCapacity.

For more information, see Dynamic Scaling in the Auto Scaling Developer Guide.

" - }, - "Cooldown":{ - "shape":"Cooldown", - "documentation":"

The amount of time, in seconds, after a scaling activity completes and before the next scaling activity can start.

For more information, see Understanding Auto Scaling Cooldowns in the Auto Scaling Developer Guide.

" - }, - "MinAdjustmentStep":{ - "shape":"MinAdjustmentStep", - "documentation":"

Used with AdjustmentType with the value PercentChangeInCapacity, the scaling policy changes the DesiredCapacity of the Auto Scaling group by at least the number of instances specified in the value.

You will get a ValidationError if you use MinAdjustmentStep on a policy with an AdjustmentType other than PercentChangeInCapacity.

" - } - } - }, - "PutScheduledUpdateGroupActionType":{ - "type":"structure", - "required":[ - "AutoScalingGroupName", - "ScheduledActionName" - ], - "members":{ - "AutoScalingGroupName":{ - "shape":"ResourceName", - "documentation":"

The name or Amazon Resource Name (ARN) of the Auto Scaling group.

" - }, - "ScheduledActionName":{ - "shape":"XmlStringMaxLen255", - "documentation":"

The name of this scaling action.

" - }, - "Time":{ - "shape":"TimestampType", - "documentation":"

Time is deprecated.

The time for this action to start. Time is an alias for StartTime and can be specified instead of StartTime, or vice versa. If both Time and StartTime are specified, their values should be identical. Otherwise, PutScheduledUpdateGroupAction will return an error.

" - }, - "StartTime":{ - "shape":"TimestampType", - "documentation":"

The time for this action to start, as in --start-time 2010-06-01T00:00:00Z.

If you try to schedule your action in the past, Auto Scaling returns an error message.

When StartTime and EndTime are specified with Recurrence, they form the boundaries of when the recurring action will start and stop.

" - }, - "EndTime":{ - "shape":"TimestampType", - "documentation":"

The time for this action to end.

" - }, - "Recurrence":{ - "shape":"XmlStringMaxLen255", - "documentation":"

The time when recurring future actions will start. Start time is specified by the user following the Unix cron syntax format. For information about cron syntax, go to Wikipedia, The Free Encyclopedia.

When StartTime and EndTime are specified with Recurrence, they form the boundaries of when the recurring action will start and stop.

" - }, - "MinSize":{ - "shape":"AutoScalingGroupMinSize", - "documentation":"

The minimum size for the new Auto Scaling group.

" - }, - "MaxSize":{ - "shape":"AutoScalingGroupMaxSize", - "documentation":"

The maximum size for the Auto Scaling group.

" - }, - "DesiredCapacity":{ - "shape":"AutoScalingGroupDesiredCapacity", - "documentation":"

The number of Amazon EC2 instances that should be running in the group.

" - } - } - }, - "RecordLifecycleActionHeartbeatAnswer":{ - "type":"structure", - "members":{ - } - }, - "RecordLifecycleActionHeartbeatType":{ - "type":"structure", - "required":[ - "LifecycleHookName", - "AutoScalingGroupName", - "LifecycleActionToken" - ], - "members":{ - "LifecycleHookName":{ - "shape":"AsciiStringMaxLen255", - "documentation":"

The name of the lifecycle hook.

" - }, - "AutoScalingGroupName":{ - "shape":"ResourceName", - "documentation":"

The name of the Auto Scaling group for the hook.

" - }, - "LifecycleActionToken":{ - "shape":"LifecycleActionToken", - "documentation":"

A token that uniquely identifies a specific lifecycle action associated with an instance. Auto Scaling sends this token to the notification target you specified when you created the lifecycle hook.

" - } - } - }, - "ResourceInUseFault":{ - "type":"structure", - "members":{ - "message":{"shape":"XmlStringMaxLen255"} - }, - "error":{ - "code":"ResourceInUse", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The Auto Scaling group or launch configuration can't be deleted because it is in use.

" - }, - "ResourceName":{ - "type":"string", - "min":1, - "max":1600, - "pattern":"[\\u0020-\\uD7FF\\uE000-\\uFFFD\\uD800\\uDC00-\\uDBFF\\uDFFF\\r\\n\\t]*" - }, - "ScalingActivityInProgressFault":{ - "type":"structure", - "members":{ - "message":{"shape":"XmlStringMaxLen255"} - }, - "error":{ - "code":"ScalingActivityInProgress", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The Auto Scaling group can't be deleted because there are scaling activities in progress.

" - }, - "ScalingActivityStatusCode":{ - "type":"string", - "enum":[ - "WaitingForSpotInstanceRequestId", - "WaitingForSpotInstanceId", - "WaitingForInstanceId", - "PreInService", - "InProgress", - "WaitingForELBConnectionDraining", - "MidLifecycleAction", - "Successful", - "Failed", - "Cancelled" - ] - }, - "ScalingPolicies":{ - "type":"list", - "member":{"shape":"ScalingPolicy"} - }, - "ScalingPolicy":{ - "type":"structure", - "members":{ - "AutoScalingGroupName":{ - "shape":"XmlStringMaxLen255", - "documentation":"

The name of the Auto Scaling group associated with this scaling policy.

" - }, - "PolicyName":{ - "shape":"XmlStringMaxLen255", - "documentation":"

The name of the scaling policy.

" - }, - "ScalingAdjustment":{ - "shape":"PolicyIncrement", - "documentation":"

The number associated with the specified adjustment type. A positive value adds to the current capacity and a negative value removes from the current capacity.

" - }, - "AdjustmentType":{ - "shape":"XmlStringMaxLen255", - "documentation":"

Specifies whether the ScalingAdjustment is an absolute number or a percentage of the current capacity. Valid values are ChangeInCapacity, ExactCapacity, and PercentChangeInCapacity.

" - }, - "Cooldown":{ - "shape":"Cooldown", - "documentation":"

The amount of time, in seconds, after a scaling activity completes before any further trigger-related scaling activities can start.

" - }, - "PolicyARN":{ - "shape":"ResourceName", - "documentation":"

The Amazon Resource Name (ARN) of the policy.

" - }, - "Alarms":{ - "shape":"Alarms", - "documentation":"

The CloudWatch Alarms related to the policy.

" - }, - "MinAdjustmentStep":{ - "shape":"MinAdjustmentStep", - "documentation":"

Changes the DesiredCapacity of the Auto Scaling group by at least the specified number of instances.

" - } - }, - "documentation":"

Describes a scaling policy.

" - }, - "ScalingProcessQuery":{ - "type":"structure", - "required":["AutoScalingGroupName"], - "members":{ - "AutoScalingGroupName":{ - "shape":"ResourceName", - "documentation":"

The name or Amazon Resource Name (ARN) of the Auto Scaling group.

" - }, - "ScalingProcesses":{ - "shape":"ProcessNames", - "documentation":"

One or more of the following processes:

" - } - } - }, - "ScheduledActionNames":{ - "type":"list", - "member":{"shape":"ResourceName"} - }, - "ScheduledActionsType":{ - "type":"structure", - "members":{ - "ScheduledUpdateGroupActions":{ - "shape":"ScheduledUpdateGroupActions", - "documentation":"

The scheduled actions.

" - }, - "NextToken":{ - "shape":"XmlString", - "documentation":"

The token to use when requesting the next set of items. If there are no additional items to return, the string is empty.

" - } - } - }, - "ScheduledUpdateGroupAction":{ - "type":"structure", - "members":{ - "AutoScalingGroupName":{ - "shape":"XmlStringMaxLen255", - "documentation":"

The name of the group.

" - }, - "ScheduledActionName":{ - "shape":"XmlStringMaxLen255", - "documentation":"

The name of the scheduled action.

" - }, - "ScheduledActionARN":{ - "shape":"ResourceName", - "documentation":"

The Amazon Resource Name (ARN) of the scheduled action.

" - }, - "Time":{ - "shape":"TimestampType", - "documentation":"

Time is deprecated.

The time that the action is scheduled to begin. Time is an alias for StartTime.

" - }, - "StartTime":{ - "shape":"TimestampType", - "documentation":"

The time that the action is scheduled to begin. This value can be up to one month in the future.

When StartTime and EndTime are specified with Recurrence, they form the boundaries of when the recurring action will start and stop.

" - }, - "EndTime":{ - "shape":"TimestampType", - "documentation":"

The time that the action is scheduled to end. This value can be up to one month in the future.

" - }, - "Recurrence":{ - "shape":"XmlStringMaxLen255", - "documentation":"

The regular schedule that an action occurs.

" - }, - "MinSize":{ - "shape":"AutoScalingGroupMinSize", - "documentation":"

The minimum size of the group.

" - }, - "MaxSize":{ - "shape":"AutoScalingGroupMaxSize", - "documentation":"

The maximum size of the group.

" - }, - "DesiredCapacity":{ - "shape":"AutoScalingGroupDesiredCapacity", - "documentation":"

The number of instances you prefer to maintain in the group.

" - } - }, - "documentation":"

Describes a scheduled update to an Auto Scaling group.

" - }, - "ScheduledUpdateGroupActions":{ - "type":"list", - "member":{"shape":"ScheduledUpdateGroupAction"} - }, - "SecurityGroups":{ - "type":"list", - "member":{"shape":"XmlString"} - }, - "SetDesiredCapacityType":{ - "type":"structure", - "required":[ - "AutoScalingGroupName", - "DesiredCapacity" - ], - "members":{ - "AutoScalingGroupName":{ - "shape":"ResourceName", - "documentation":"

The name of the Auto Scaling group.

" - }, - "DesiredCapacity":{ - "shape":"AutoScalingGroupDesiredCapacity", - "documentation":"

The number of EC2 instances that should be running in the Auto Scaling group.

" - }, - "HonorCooldown":{ - "shape":"HonorCooldown", - "documentation":"

By default, SetDesiredCapacity overrides any cooldown period associated with the Auto Scaling group. Specify True to make Auto Scaling to wait for the cool-down period associated with the Auto Scaling group to complete before initiating a scaling activity to set your Auto Scaling group to its new capacity.

" - } - } - }, - "SetInstanceHealthQuery":{ - "type":"structure", - "required":[ - "InstanceId", - "HealthStatus" - ], - "members":{ - "InstanceId":{ - "shape":"XmlStringMaxLen16", - "documentation":"

The ID of the EC2 instance.

" - }, - "HealthStatus":{ - "shape":"XmlStringMaxLen32", - "documentation":"

The health status of the instance. Set to Healthy if you want the instance to remain in service. Set to Unhealthy if you want the instance to be out of service. Auto Scaling will terminate and replace the unhealthy instance.

" - }, - "ShouldRespectGracePeriod":{ - "shape":"ShouldRespectGracePeriod", - "documentation":"

If the Auto Scaling group of the specified instance has a HealthCheckGracePeriod specified for the group, by default, this call will respect the grace period. Set this to False, if you do not want the call to respect the grace period associated with the group.

For more information, see the HealthCheckGracePeriod parameter description for CreateAutoScalingGroup.

" - } - } - }, - "ShouldDecrementDesiredCapacity":{"type":"boolean"}, - "ShouldRespectGracePeriod":{"type":"boolean"}, - "SpotPrice":{ - "type":"string", - "min":1, - "max":255 - }, - "SuspendedProcess":{ - "type":"structure", - "members":{ - "ProcessName":{ - "shape":"XmlStringMaxLen255", - "documentation":"

The name of the suspended process.

" - }, - "SuspensionReason":{ - "shape":"XmlStringMaxLen255", - "documentation":"

The reason that the process was suspended.

" - } - }, - "documentation":"

Describes an Auto Scaling process that has been suspended. For more information, see ProcessType.

" - }, - "SuspendedProcesses":{ - "type":"list", - "member":{"shape":"SuspendedProcess"} - }, - "Tag":{ - "type":"structure", - "required":["Key"], - "members":{ - "ResourceId":{ - "shape":"XmlString", - "documentation":"

The name of the group.

" - }, - "ResourceType":{ - "shape":"XmlString", - "documentation":"

The kind of resource to which the tag is applied. Currently, Auto Scaling supports the auto-scaling-group resource type.

" - }, - "Key":{ - "shape":"TagKey", - "documentation":"

The tag key.

" - }, - "Value":{ - "shape":"TagValue", - "documentation":"

The tag value.

" - }, - "PropagateAtLaunch":{ - "shape":"PropagateAtLaunch", - "documentation":"

Specifies whether the tag is applied to instances launched after the tag is created. The same behavior applies to updates: If you change a tag, it is applied to all instances launched after you made the change.

" - } - }, - "documentation":"

Describes a tag applied to an Auto Scaling group.

" - }, - "TagDescription":{ - "type":"structure", - "members":{ - "ResourceId":{ - "shape":"XmlString", - "documentation":"

The name of the group.

" - }, - "ResourceType":{ - "shape":"XmlString", - "documentation":"

The kind of resource to which the tag is applied. Currently, Auto Scaling supports the auto-scaling-group resource type.

" - }, - "Key":{ - "shape":"TagKey", - "documentation":"

The tag key.

" - }, - "Value":{ - "shape":"TagValue", - "documentation":"

The tag value.

" - }, - "PropagateAtLaunch":{ - "shape":"PropagateAtLaunch", - "documentation":"

Specifies whether the tag is applied to instances launched after the tag is created. The same behavior applies to updates: If you change a tag, it is applied to all instances launched after you made the change.

" - } - }, - "documentation":"

Describes a tag applied to an Auto Scaling group.

" - }, - "TagDescriptionList":{ - "type":"list", - "member":{"shape":"TagDescription"} - }, - "TagKey":{ - "type":"string", - "min":1, - "max":128, - "pattern":"[\\u0020-\\uD7FF\\uE000-\\uFFFD\\uD800\\uDC00-\\uDBFF\\uDFFF\\r\\n\\t]*" - }, - "TagValue":{ - "type":"string", - "min":0, - "max":256, - "pattern":"[\\u0020-\\uD7FF\\uE000-\\uFFFD\\uD800\\uDC00-\\uDBFF\\uDFFF\\r\\n\\t]*" - }, - "Tags":{ - "type":"list", - "member":{"shape":"Tag"} - }, - "TagsType":{ - "type":"structure", - "members":{ - "Tags":{ - "shape":"TagDescriptionList", - "documentation":"

The tags.

" - }, - "NextToken":{ - "shape":"XmlString", - "documentation":"

The token to use when requesting the next set of items. If there are no additional items to return, the string is empty.

" - } - } - }, - "TerminateInstanceInAutoScalingGroupType":{ - "type":"structure", - "required":[ - "InstanceId", - "ShouldDecrementDesiredCapacity" - ], - "members":{ - "InstanceId":{ - "shape":"XmlStringMaxLen16", - "documentation":"

The ID of the EC2 instance.

" - }, - "ShouldDecrementDesiredCapacity":{ - "shape":"ShouldDecrementDesiredCapacity", - "documentation":"

If true, terminating this instance also decrements the size of the Auto Scaling group.

" - } - } - }, - "TerminationPolicies":{ - "type":"list", - "member":{"shape":"XmlStringMaxLen1600"} - }, - "TimestampType":{"type":"timestamp"}, - "UpdateAutoScalingGroupType":{ - "type":"structure", - "required":["AutoScalingGroupName"], - "members":{ - "AutoScalingGroupName":{ - "shape":"ResourceName", - "documentation":"

The name of the Auto Scaling group.

" - }, - "LaunchConfigurationName":{ - "shape":"ResourceName", - "documentation":"

The name of the launch configuration.

" - }, - "MinSize":{ - "shape":"AutoScalingGroupMinSize", - "documentation":"

The minimum size of the Auto Scaling group.

" - }, - "MaxSize":{ - "shape":"AutoScalingGroupMaxSize", - "documentation":"

The maximum size of the Auto Scaling group.

" - }, - "DesiredCapacity":{ - "shape":"AutoScalingGroupDesiredCapacity", - "documentation":"

The number of EC2 instances that should be running in the Auto Scaling group. This value must be greater than or equal to the minimum size of the group and less than or equal to the maximum size of the group.

" - }, - "DefaultCooldown":{ - "shape":"Cooldown", - "documentation":"

The amount of time, in seconds, after a scaling activity completes before another scaling activity can start. For more information, see Understanding Auto Scaling Cooldowns.

" - }, - "AvailabilityZones":{ - "shape":"AvailabilityZones", - "documentation":"

One or more Availability Zones for the group.

" - }, - "HealthCheckType":{ - "shape":"XmlStringMaxLen32", - "documentation":"

The type of health check for the instances in the Auto Scaling group. The health check type can either be EC2 for Amazon EC2 or ELB for Elastic Load Balancing.

" - }, - "HealthCheckGracePeriod":{ - "shape":"HealthCheckGracePeriod", - "documentation":"

The amount of time, in second, that Auto Scaling waits before checking the health status of an instance. The grace period begins when the instance passes System Status and the Instance Status checks from Amazon EC2. For more information, see DescribeInstanceStatus.

" - }, - "PlacementGroup":{ - "shape":"XmlStringMaxLen255", - "documentation":"

The name of the placement group into which you'll launch your instances, if any. For more information, see Placement Groups.

" - }, - "VPCZoneIdentifier":{ - "shape":"XmlStringMaxLen255", - "documentation":"

The subnet identifier for the Amazon VPC connection, if applicable. You can specify several subnets in a comma-separated list.

When you specify VPCZoneIdentifier with AvailabilityZones, ensure that the subnets' Availability Zones match the values you specify for AvailabilityZones.

For more information, see Auto Scaling and Amazon VPC in the Auto Scaling Developer Guide.

" - }, - "TerminationPolicies":{ - "shape":"TerminationPolicies", - "documentation":"

A standalone termination policy or a list of termination policies used to select the instance to terminate. The policies are executed in the order that they are listed.

For more information, see Choosing a Termination Policy for Your Auto Scaling Group in the Auto Scaling Developer Guide.

" - } - } - }, - "Values":{ - "type":"list", - "member":{"shape":"XmlString"} - }, - "XmlString":{ - "type":"string", - "pattern":"[\\u0020-\\uD7FF\\uE000-\\uFFFD\\uD800\\uDC00-\\uDBFF\\uDFFF\\r\\n\\t]*" - }, - "XmlStringMaxLen1023":{ - "type":"string", - "min":1, - "max":1023, - "pattern":"[\\u0020-\\uD7FF\\uE000-\\uFFFD\\uD800\\uDC00-\\uDBFF\\uDFFF\\r\\n\\t]*" - }, - "XmlStringMaxLen16":{ - "type":"string", - "min":1, - "max":16, - "pattern":"[\\u0020-\\uD7FF\\uE000-\\uFFFD\\uD800\\uDC00-\\uDBFF\\uDFFF\\r\\n\\t]*" - }, - "XmlStringMaxLen1600":{ - "type":"string", - "min":1, - "max":1600, - "pattern":"[\\u0020-\\uD7FF\\uE000-\\uFFFD\\uD800\\uDC00-\\uDBFF\\uDFFF\\r\\n\\t]*" - }, - "XmlStringMaxLen255":{ - "type":"string", - "min":1, - "max":255, - "pattern":"[\\u0020-\\uD7FF\\uE000-\\uFFFD\\uD800\\uDC00-\\uDBFF\\uDFFF\\r\\n\\t]*" - }, - "XmlStringMaxLen32":{ - "type":"string", - "min":1, - "max":32, - "pattern":"[\\u0020-\\uD7FF\\uE000-\\uFFFD\\uD800\\uDC00-\\uDBFF\\uDFFF\\r\\n\\t]*" - }, - "XmlStringMaxLen64":{ - "type":"string", - "min":1, - "max":64, - "pattern":"[\\u0020-\\uD7FF\\uE000-\\uFFFD\\uD800\\uDC00-\\uDBFF\\uDFFF\\r\\n\\t]*" - }, - "XmlStringUserData":{ - "type":"string", - "max":21847, - "pattern":"[\\u0020-\\uD7FF\\uE000-\\uFFFD\\uD800\\uDC00-\\uDBFF\\uDFFF\\r\\n\\t]*" - } - } -} diff --git a/src/github.com/getlantern/aws-sdk-go/apis/autoscaling/2011-01-01.paginators.json b/src/github.com/getlantern/aws-sdk-go/apis/autoscaling/2011-01-01.paginators.json deleted file mode 100644 index 31bc094456..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/apis/autoscaling/2011-01-01.paginators.json +++ /dev/null @@ -1,52 +0,0 @@ -{ - "pagination": { - "DescribeAutoScalingGroups": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxRecords", - "result_key": "AutoScalingGroups" - }, - "DescribeAutoScalingInstances": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxRecords", - "result_key": "AutoScalingInstances" - }, - "DescribeLaunchConfigurations": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxRecords", - "result_key": "LaunchConfigurations" - }, - "DescribeNotificationConfigurations": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxRecords", - "result_key": "NotificationConfigurations" - }, - "DescribePolicies": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxRecords", - "result_key": "ScalingPolicies" - }, - "DescribeScalingActivities": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxRecords", - "result_key": "Activities" - }, - "DescribeScheduledActions": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxRecords", - "result_key": "ScheduledUpdateGroupActions" - }, - "DescribeTags": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxRecords", - "result_key": "Tags" - } - } -} diff --git a/src/github.com/getlantern/aws-sdk-go/apis/cloudformation/2010-05-15.normal.json b/src/github.com/getlantern/aws-sdk-go/apis/cloudformation/2010-05-15.normal.json deleted file mode 100644 index c893b60473..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/apis/cloudformation/2010-05-15.normal.json +++ /dev/null @@ -1,1457 +0,0 @@ -{ - "metadata":{ - "apiVersion":"2010-05-15", - "endpointPrefix":"cloudformation", - "serviceFullName":"AWS CloudFormation", - "signatureVersion":"v4", - "xmlNamespace":"http://cloudformation.amazonaws.com/doc/2010-05-15/", - "protocol":"query" - }, - "documentation":"AWS CloudFormation

AWS CloudFormation enables you to create and manage AWS infrastructure deployments predictably and repeatedly. AWS CloudFormation helps you leverage AWS products such as Amazon EC2, EBS, Amazon SNS, ELB, and Auto Scaling to build highly-reliable, highly scalable, cost effective applications without worrying about creating and configuring the underlying AWS infrastructure.

With AWS CloudFormation, you declare all of your resources and dependencies in a template file. The template defines a collection of resources as a single unit called a stack. AWS CloudFormation creates and deletes all member resources of the stack together and manages all dependencies between the resources for you.

For more information about this product, go to the CloudFormation Product Page.

Amazon CloudFormation makes use of other AWS products. If you need additional technical information about a specific AWS product, you can find the product's technical documentation at http://aws.amazon.com/documentation/.

", - "operations":{ - "CancelUpdateStack":{ - "name":"CancelUpdateStack", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"CancelUpdateStackInput", - "documentation":"

The input for CancelUpdateStack action.

" - }, - "documentation":"

Cancels an update on the specified stack. If the call completes successfully, the stack will roll back the update and revert to the previous stack configuration.

Only stacks that are in the UPDATE_IN_PROGRESS state can be canceled." - }, - "CreateStack":{ - "name":"CreateStack", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"CreateStackInput", - "documentation":"

The input for CreateStack action.

" - }, - "output":{ - "shape":"CreateStackOutput", - "documentation":"

The output for a CreateStack action.

", - "resultWrapper":"CreateStackResult" - }, - "errors":[ - { - "shape":"LimitExceededException", - "error":{ - "code":"LimitExceededException", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Quota for the resource has already been reached.

" - }, - { - "shape":"AlreadyExistsException", - "error":{ - "code":"AlreadyExistsException", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Resource with the name requested already exists.

" - }, - { - "shape":"InsufficientCapabilitiesException", - "error":{ - "code":"InsufficientCapabilitiesException", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The template contains resources with capabilities that were not specified in the Capabilities parameter.

" - } - ], - "documentation":"

Creates a stack as specified in the template. After the call completes successfully, the stack creation starts. You can check the status of the stack via the DescribeStacks API.

" - }, - "DeleteStack":{ - "name":"DeleteStack", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DeleteStackInput", - "documentation":"

The input for DeleteStack action.

" - }, - "documentation":"

Deletes a specified stack. Once the call completes successfully, stack deletion starts. Deleted stacks do not show up in the DescribeStacks API if the deletion has been completed successfully.

" - }, - "DescribeStackEvents":{ - "name":"DescribeStackEvents", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DescribeStackEventsInput", - "documentation":"

The input for DescribeStackEvents action.

" - }, - "output":{ - "shape":"DescribeStackEventsOutput", - "documentation":"

The output for a DescribeStackEvents action.

", - "resultWrapper":"DescribeStackEventsResult" - }, - "documentation":"

Returns all stack related events for a specified stack. For more information about a stack's event history, go to Stacks in the AWS CloudFormation User Guide.

You can list events for stacks that have failed to create or have been deleted by specifying the unique stack identifier (stack ID)." - }, - "DescribeStackResource":{ - "name":"DescribeStackResource", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DescribeStackResourceInput", - "documentation":"

The input for DescribeStackResource action.

" - }, - "output":{ - "shape":"DescribeStackResourceOutput", - "documentation":"

The output for a DescribeStackResource action.

", - "resultWrapper":"DescribeStackResourceResult" - }, - "documentation":"

Returns a description of the specified resource in the specified stack.

For deleted stacks, DescribeStackResource returns resource information for up to 90 days after the stack has been deleted.

" - }, - "DescribeStackResources":{ - "name":"DescribeStackResources", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DescribeStackResourcesInput", - "documentation":"

The input for DescribeStackResources action.

" - }, - "output":{ - "shape":"DescribeStackResourcesOutput", - "documentation":"

The output for a DescribeStackResources action.

", - "resultWrapper":"DescribeStackResourcesResult" - }, - "documentation":"

Returns AWS resource descriptions for running and deleted stacks. If StackName is specified, all the associated resources that are part of the stack are returned. If PhysicalResourceId is specified, the associated resources of the stack that the resource belongs to are returned.

Only the first 100 resources will be returned. If your stack has more resources than this, you should use ListStackResources instead.

For deleted stacks, DescribeStackResources returns resource information for up to 90 days after the stack has been deleted.

You must specify either StackName or PhysicalResourceId, but not both. In addition, you can specify LogicalResourceId to filter the returned result. For more information about resources, the LogicalResourceId and PhysicalResourceId, go to the AWS CloudFormation User Guide.

A ValidationError is returned if you specify both StackName and PhysicalResourceId in the same request." - }, - "DescribeStacks":{ - "name":"DescribeStacks", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DescribeStacksInput", - "documentation":"

The input for DescribeStacks action.

" - }, - "output":{ - "shape":"DescribeStacksOutput", - "documentation":"

The output for a DescribeStacks action.

", - "resultWrapper":"DescribeStacksResult" - }, - "documentation":"

Returns the description for the specified stack; if no stack name was specified, then it returns the description for all the stacks created.

" - }, - "EstimateTemplateCost":{ - "name":"EstimateTemplateCost", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"EstimateTemplateCostInput"}, - "output":{ - "shape":"EstimateTemplateCostOutput", - "documentation":"

The output for a EstimateTemplateCost action.

", - "resultWrapper":"EstimateTemplateCostResult" - }, - "documentation":"

Returns the estimated monthly cost of a template. The return value is an AWS Simple Monthly Calculator URL with a query string that describes the resources required to run the template.

" - }, - "GetStackPolicy":{ - "name":"GetStackPolicy", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"GetStackPolicyInput", - "documentation":"

The input for the GetStackPolicy action.

" - }, - "output":{ - "shape":"GetStackPolicyOutput", - "documentation":"

The output for the GetStackPolicy action.

", - "resultWrapper":"GetStackPolicyResult" - }, - "documentation":"

Returns the stack policy for a specified stack. If a stack doesn't have a policy, a null value is returned.

" - }, - "GetTemplate":{ - "name":"GetTemplate", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"GetTemplateInput", - "documentation":"

The input for a GetTemplate action.

" - }, - "output":{ - "shape":"GetTemplateOutput", - "documentation":"

The output for GetTemplate action.

", - "resultWrapper":"GetTemplateResult" - }, - "documentation":"

Returns the template body for a specified stack. You can get the template for running or deleted stacks.

For deleted stacks, GetTemplate returns the template for up to 90 days after the stack has been deleted.

If the template does not exist, a ValidationError is returned. " - }, - "GetTemplateSummary":{ - "name":"GetTemplateSummary", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"GetTemplateSummaryInput", - "documentation":"

The input for the GetTemplateSummary action.

" - }, - "output":{ - "shape":"GetTemplateSummaryOutput", - "documentation":"

The output for the GetTemplateSummary action.

", - "resultWrapper":"GetTemplateSummaryResult" - }, - "documentation":"

Returns information about a new or existing template. The GetTemplateSummary action is useful for viewing parameter information, such as default parameter values and parameter types, before you create or update a stack.

You can use the GetTemplateSummary action when you submit a template, or you can get template information for a running or deleted stack.

For deleted stacks, GetTemplateSummary returns the template information for up to 90 days after the stack has been deleted. If the template does not exist, a ValidationError is returned.

" - }, - "ListStackResources":{ - "name":"ListStackResources", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"ListStackResourcesInput", - "documentation":"

The input for the ListStackResource action.

" - }, - "output":{ - "shape":"ListStackResourcesOutput", - "documentation":"

The output for a ListStackResources action.

", - "resultWrapper":"ListStackResourcesResult" - }, - "documentation":"

Returns descriptions of all resources of the specified stack.

For deleted stacks, ListStackResources returns resource information for up to 90 days after the stack has been deleted.

" - }, - "ListStacks":{ - "name":"ListStacks", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"ListStacksInput", - "documentation":"

The input for ListStacks action.

" - }, - "output":{ - "shape":"ListStacksOutput", - "documentation":"

The output for ListStacks action.

", - "resultWrapper":"ListStacksResult" - }, - "documentation":"

Returns the summary information for stacks whose status matches the specified StackStatusFilter. Summary information for stacks that have been deleted is kept for 90 days after the stack is deleted. If no StackStatusFilter is specified, summary information for all stacks is returned (including existing stacks and stacks that have been deleted).

" - }, - "SetStackPolicy":{ - "name":"SetStackPolicy", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"SetStackPolicyInput", - "documentation":"

The input for the SetStackPolicy action.

" - }, - "documentation":"

Sets a stack policy for a specified stack.

" - }, - "SignalResource":{ - "name":"SignalResource", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"SignalResourceInput", - "documentation":"

The input for the SignalResource action.

" - }, - "documentation":"

Sends a signal to the specified resource with a success or failure status. You can use the SignalResource API in conjunction with a creation policy or update policy. AWS CloudFormation doesn't proceed with a stack creation or update until resources receive the required number of signals or the timeout period is exceeded. The SignalResource API is useful in cases where you want to send signals from anywhere other than an Amazon EC2 instance.

" - }, - "UpdateStack":{ - "name":"UpdateStack", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"UpdateStackInput", - "documentation":"

The input for UpdateStack action.

" - }, - "output":{ - "shape":"UpdateStackOutput", - "documentation":"

The output for a UpdateStack action.

", - "resultWrapper":"UpdateStackResult" - }, - "errors":[ - { - "shape":"InsufficientCapabilitiesException", - "error":{ - "code":"InsufficientCapabilitiesException", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The template contains resources with capabilities that were not specified in the Capabilities parameter.

" - } - ], - "documentation":"

Updates a stack as specified in the template. After the call completes successfully, the stack update starts. You can check the status of the stack via the DescribeStacks action.

To get a copy of the template for an existing stack, you can use the GetTemplate action.

Tags that were associated with this stack during creation time will still be associated with the stack after an UpdateStack operation.

For more information about creating an update template, updating a stack, and monitoring the progress of the update, see Updating a Stack.

" - }, - "ValidateTemplate":{ - "name":"ValidateTemplate", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"ValidateTemplateInput", - "documentation":"

The input for ValidateTemplate action.

" - }, - "output":{ - "shape":"ValidateTemplateOutput", - "documentation":"

The output for ValidateTemplate action.

", - "resultWrapper":"ValidateTemplateResult" - }, - "documentation":"

Validates a specified template.

" - } - }, - "shapes":{ - "AlreadyExistsException":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"AlreadyExistsException", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Resource with the name requested already exists.

" - }, - "CancelUpdateStackInput":{ - "type":"structure", - "required":["StackName"], - "members":{ - "StackName":{ - "shape":"StackName", - "documentation":"

The name or the unique identifier associated with the stack.

" - } - }, - "documentation":"

The input for CancelUpdateStack action.

" - }, - "Capabilities":{ - "type":"list", - "member":{"shape":"Capability"} - }, - "CapabilitiesReason":{"type":"string"}, - "Capability":{ - "type":"string", - "enum":["CAPABILITY_IAM"] - }, - "CreateStackInput":{ - "type":"structure", - "required":["StackName"], - "members":{ - "StackName":{ - "shape":"StackName", - "documentation":"

The name associated with the stack. The name must be unique within your AWS account.

Must contain only alphanumeric characters (case sensitive) and start with an alpha character. Maximum length of the name is 255 characters." - }, - "TemplateBody":{ - "shape":"TemplateBody", - "documentation":"

Structure containing the template body with a minimum length of 1 byte and a maximum length of 51,200 bytes. For more information, go to Template Anatomy in the AWS CloudFormation User Guide.

Conditional: You must specify either the TemplateBody or the TemplateURL parameter, but not both.

" - }, - "TemplateURL":{ - "shape":"TemplateURL", - "documentation":"

Location of file containing the template body. The URL must point to a template (max size: 307,200 bytes) located in an S3 bucket in the same region as the stack. For more information, go to the Template Anatomy in the AWS CloudFormation User Guide.

Conditional: You must specify either the TemplateBody or the TemplateURL parameter, but not both.

" - }, - "Parameters":{ - "shape":"Parameters", - "documentation":"

A list of Parameter structures that specify input parameters for the stack.

" - }, - "DisableRollback":{ - "shape":"DisableRollback", - "documentation":"

Set to true to disable rollback of the stack if stack creation failed. You can specify either DisableRollback or OnFailure, but not both.

Default: false

" - }, - "TimeoutInMinutes":{ - "shape":"TimeoutMinutes", - "documentation":"

The amount of time that can pass before the stack status becomes CREATE_FAILED; if DisableRollback is not set or is set to false, the stack will be rolled back.

" - }, - "NotificationARNs":{ - "shape":"NotificationARNs", - "documentation":"

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).

" - }, - "Capabilities":{ - "shape":"Capabilities", - "documentation":"

A list of capabilities that you must specify before AWS CloudFormation can create or update certain stacks. Some stack templates might include resources that can affect permissions in your AWS account. For those stacks, you must explicitly acknowledge their capabilities by specifying this parameter.

Currently, the only valid value is CAPABILITY_IAM, which is required for the following resources: AWS::CloudFormation::Stack, AWS::IAM::AccessKey, AWS::IAM::Group, AWS::IAM::InstanceProfile, AWS::IAM::Policy, AWS::IAM::Role, AWS::IAM::User, and AWS::IAM::UserToGroupAddition. If your stack template contains these resources, we recommend that you review any permissions associated with them. If you don't specify this parameter, this action returns an InsufficientCapabilities error.

" - }, - "OnFailure":{ - "shape":"OnFailure", - "documentation":"

Determines what action will be taken if stack creation fails. This must be one of: DO_NOTHING, ROLLBACK, or DELETE. You can specify either OnFailure or DisableRollback, but not both.

Default: ROLLBACK

" - }, - "StackPolicyBody":{ - "shape":"StackPolicyBody", - "documentation":"

Structure containing the stack policy body. For more information, go to Prevent Updates to Stack Resources in the AWS CloudFormation User Guide. You can specify either the StackPolicyBody or the StackPolicyURL parameter, but not both.

" - }, - "StackPolicyURL":{ - "shape":"StackPolicyURL", - "documentation":"

Location of a file containing the stack policy. The URL must point to a policy (max size: 16KB) located in an S3 bucket in the same region as the stack. You can specify either the StackPolicyBody or the StackPolicyURL parameter, but not both.

" - }, - "Tags":{ - "shape":"Tags", - "documentation":"

A set of user-defined Tags to associate with this stack, represented by key/value pairs. Tags defined for the stack are propagated to EC2 resources that are created as part of the stack. A maximum number of 10 tags can be specified.

" - } - }, - "documentation":"

The input for CreateStack action.

" - }, - "CreateStackOutput":{ - "type":"structure", - "members":{ - "StackId":{ - "shape":"StackId", - "documentation":"

Unique identifier of the stack.

" - } - }, - "documentation":"

The output for a CreateStack action.

" - }, - "CreationTime":{"type":"timestamp"}, - "DeleteStackInput":{ - "type":"structure", - "required":["StackName"], - "members":{ - "StackName":{ - "shape":"StackName", - "documentation":"

The name or the unique identifier associated with the stack.

" - } - }, - "documentation":"

The input for DeleteStack action.

" - }, - "DeletionTime":{"type":"timestamp"}, - "DescribeStackEventsInput":{ - "type":"structure", - "members":{ - "StackName":{ - "shape":"StackName", - "documentation":"

The name or the unique identifier associated with the stack, which are not always interchangeable:

Default: There is no default value.

" - }, - "NextToken":{ - "shape":"NextToken", - "documentation":"

String that identifies the start of the next list of events, if there is one.

Default: There is no default value.

" - } - }, - "documentation":"

The input for DescribeStackEvents action.

" - }, - "DescribeStackEventsOutput":{ - "type":"structure", - "members":{ - "StackEvents":{ - "shape":"StackEvents", - "documentation":"

A list of StackEvents structures.

" - }, - "NextToken":{ - "shape":"NextToken", - "documentation":"

String that identifies the start of the next list of events, if there is one.

" - } - }, - "documentation":"

The output for a DescribeStackEvents action.

" - }, - "DescribeStackResourceInput":{ - "type":"structure", - "required":[ - "StackName", - "LogicalResourceId" - ], - "members":{ - "StackName":{ - "shape":"StackName", - "documentation":"

The name or the unique identifier associated with the stack, which are not always interchangeable:

Default: There is no default value.

" - }, - "LogicalResourceId":{ - "shape":"LogicalResourceId", - "documentation":"

The logical name of the resource as specified in the template.

Default: There is no default value.

" - } - }, - "documentation":"

The input for DescribeStackResource action.

" - }, - "DescribeStackResourceOutput":{ - "type":"structure", - "members":{ - "StackResourceDetail":{ - "shape":"StackResourceDetail", - "documentation":"

A StackResourceDetail structure containing the description of the specified resource in the specified stack.

" - } - }, - "documentation":"

The output for a DescribeStackResource action.

" - }, - "DescribeStackResourcesInput":{ - "type":"structure", - "members":{ - "StackName":{ - "shape":"StackName", - "documentation":"

The name or the unique identifier associated with the stack, which are not always interchangeable:

Default: There is no default value.

Required: Conditional. If you do not specify StackName, you must specify PhysicalResourceId.

" - }, - "LogicalResourceId":{ - "shape":"LogicalResourceId", - "documentation":"

The logical name of the resource as specified in the template.

Default: There is no default value.

" - }, - "PhysicalResourceId":{ - "shape":"PhysicalResourceId", - "documentation":"

The name or unique identifier that corresponds to a physical instance ID of a resource supported by AWS CloudFormation.

For example, for an Amazon Elastic Compute Cloud (EC2) instance, PhysicalResourceId corresponds to the InstanceId. You can pass the EC2 InstanceId to DescribeStackResources to find which stack the instance belongs to and what other resources are part of the stack.

Required: Conditional. If you do not specify PhysicalResourceId, you must specify StackName.

Default: There is no default value.

" - } - }, - "documentation":"

The input for DescribeStackResources action.

" - }, - "DescribeStackResourcesOutput":{ - "type":"structure", - "members":{ - "StackResources":{ - "shape":"StackResources", - "documentation":"

A list of StackResource structures.

" - } - }, - "documentation":"

The output for a DescribeStackResources action.

" - }, - "DescribeStacksInput":{ - "type":"structure", - "members":{ - "StackName":{ - "shape":"StackName", - "documentation":"

The name or the unique identifier associated with the stack, which are not always interchangeable:

Default: There is no default value.

" - }, - "NextToken":{ - "shape":"NextToken", - "documentation":"String that identifies the start of the next list of stacks, if there is one." - } - }, - "documentation":"

The input for DescribeStacks action.

" - }, - "DescribeStacksOutput":{ - "type":"structure", - "members":{ - "Stacks":{ - "shape":"Stacks", - "documentation":"

A list of stack structures.

" - }, - "NextToken":{ - "shape":"NextToken", - "documentation":"String that identifies the start of the next list of stacks, if there is one." - } - }, - "documentation":"

The output for a DescribeStacks action.

" - }, - "Description":{"type":"string"}, - "DisableRollback":{"type":"boolean"}, - "EstimateTemplateCostInput":{ - "type":"structure", - "members":{ - "TemplateBody":{ - "shape":"TemplateBody", - "documentation":"

Structure containing the template body with a minimum length of 1 byte and a maximum length of 51,200 bytes. (For more information, go to Template Anatomy in the AWS CloudFormation User Guide.)

Conditional: You must pass TemplateBody or TemplateURL. If both are passed, only TemplateBody is used.

" - }, - "TemplateURL":{ - "shape":"TemplateURL", - "documentation":"

Location of file containing the template body. The URL must point to a template located in an S3 bucket in the same region as the stack. For more information, go to Template Anatomy in the AWS CloudFormation User Guide.

Conditional: You must pass TemplateURL or TemplateBody. If both are passed, only TemplateBody is used.

" - }, - "Parameters":{ - "shape":"Parameters", - "documentation":"

A list of Parameter structures that specify input parameters.

" - } - } - }, - "EstimateTemplateCostOutput":{ - "type":"structure", - "members":{ - "Url":{ - "shape":"Url", - "documentation":"

An AWS Simple Monthly Calculator URL with a query string that describes the resources required to run the template.

" - } - }, - "documentation":"

The output for a EstimateTemplateCost action.

" - }, - "EventId":{"type":"string"}, - "GetStackPolicyInput":{ - "type":"structure", - "required":["StackName"], - "members":{ - "StackName":{ - "shape":"StackName", - "documentation":"

The name or stack ID that is associated with the stack whose policy you want to get.

" - } - }, - "documentation":"

The input for the GetStackPolicy action.

" - }, - "GetStackPolicyOutput":{ - "type":"structure", - "members":{ - "StackPolicyBody":{ - "shape":"StackPolicyBody", - "documentation":"

Structure containing the stack policy body. (For more information, go to Prevent Updates to Stack Resources in the AWS CloudFormation User Guide.)

" - } - }, - "documentation":"

The output for the GetStackPolicy action.

" - }, - "GetTemplateInput":{ - "type":"structure", - "required":["StackName"], - "members":{ - "StackName":{ - "shape":"StackName", - "documentation":"

The name or the unique identifier associated with the stack, which are not always interchangeable:

Default: There is no default value.

" - } - }, - "documentation":"

The input for a GetTemplate action.

" - }, - "GetTemplateOutput":{ - "type":"structure", - "members":{ - "TemplateBody":{ - "shape":"TemplateBody", - "documentation":"

Structure containing the template body. (For more information, go to Template Anatomy in the AWS CloudFormation User Guide.)

" - } - }, - "documentation":"

The output for GetTemplate action.

" - }, - "GetTemplateSummaryInput":{ - "type":"structure", - "members":{ - "TemplateBody":{ - "shape":"TemplateBody", - "documentation":"

Structure containing the template body with a minimum length of 1 byte and a maximum length of 51,200 bytes. For more information about templates, see Template Anatomy in the AWS CloudFormation User Guide.

Conditional: You must specify only one of the following parameters: StackName, TemplateBody, or TemplateURL.

" - }, - "TemplateURL":{ - "shape":"TemplateURL", - "documentation":"

Location of file containing the template body. The URL must point to a template (max size: 307,200 bytes) located in an Amazon S3 bucket. For more information about templates, see Template Anatomy in the AWS CloudFormation User Guide.

Conditional: You must specify only one of the following parameters: StackName, TemplateBody, or TemplateURL.

" - }, - "StackName":{ - "shape":"StackNameOrId", - "documentation":"

The name or the unique identifier associated with the stack, which are not always interchangeable. For running stacks, you can specify either the stack's name or its unique stack ID. For deleted stack, you must specify the unique stack ID.

Conditional: You must specify only one of the following parameters: StackName, TemplateBody, or TemplateURL.

" - } - }, - "documentation":"

The input for the GetTemplateSummary action.

" - }, - "GetTemplateSummaryOutput":{ - "type":"structure", - "members":{ - "Parameters":{ - "shape":"ParameterDeclarations", - "documentation":"

A list of parameter declarations that describe various properties for each parameter.

" - }, - "Description":{ - "shape":"Description", - "documentation":"

The value that is defined in the Description property of the template.

" - }, - "Capabilities":{ - "shape":"Capabilities", - "documentation":"

The capabilities found within the template. Currently, AWS CloudFormation supports only the CAPABILITY_IAM capability. If your template contains IAM resources, you must specify the CAPABILITY_IAM value for this parameter when you use the CreateStack or UpdateStack actions with your template; otherwise, those actions return an InsufficientCapabilities error.

" - }, - "CapabilitiesReason":{ - "shape":"CapabilitiesReason", - "documentation":"

The capabilities reason found within the template.

" - }, - "Version":{ - "shape":"Version", - "documentation":"

The AWS template format version, which identifies the capabilities of the template.

" - } - }, - "documentation":"

The output for the GetTemplateSummary action.

" - }, - "InsufficientCapabilitiesException":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"InsufficientCapabilitiesException", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The template contains resources with capabilities that were not specified in the Capabilities parameter.

" - }, - "LastUpdatedTime":{"type":"timestamp"}, - "LimitExceededException":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"LimitExceededException", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Quota for the resource has already been reached.

" - }, - "ListStackResourcesInput":{ - "type":"structure", - "required":["StackName"], - "members":{ - "StackName":{ - "shape":"StackName", - "documentation":"

The name or the unique identifier associated with the stack, which are not always interchangeable:

Default: There is no default value.

" - }, - "NextToken":{ - "shape":"NextToken", - "documentation":"

String that identifies the start of the next list of stack resource summaries, if there is one.

Default: There is no default value.

" - } - }, - "documentation":"

The input for the ListStackResource action.

" - }, - "ListStackResourcesOutput":{ - "type":"structure", - "members":{ - "StackResourceSummaries":{ - "shape":"StackResourceSummaries", - "documentation":"

A list of StackResourceSummary structures.

" - }, - "NextToken":{ - "shape":"NextToken", - "documentation":"

String that identifies the start of the next list of stack resources, if there is one.

" - } - }, - "documentation":"

The output for a ListStackResources action.

" - }, - "ListStacksInput":{ - "type":"structure", - "members":{ - "NextToken":{ - "shape":"NextToken", - "documentation":"

String that identifies the start of the next list of stacks, if there is one.

Default: There is no default value.

" - }, - "StackStatusFilter":{ - "shape":"StackStatusFilter", - "documentation":"

Stack status to use as a filter. Specify one or more stack status codes to list only stacks with the specified status codes. For a complete list of stack status codes, see the StackStatus parameter of the Stack data type.

" - } - }, - "documentation":"

The input for ListStacks action.

" - }, - "ListStacksOutput":{ - "type":"structure", - "members":{ - "StackSummaries":{ - "shape":"StackSummaries", - "documentation":"

A list of StackSummary structures containing information about the specified stacks.

" - }, - "NextToken":{ - "shape":"NextToken", - "documentation":"

String that identifies the start of the next list of stacks, if there is one.

" - } - }, - "documentation":"

The output for ListStacks action.

" - }, - "LogicalResourceId":{"type":"string"}, - "Metadata":{"type":"string"}, - "NextToken":{ - "type":"string", - "min":1, - "max":1024 - }, - "NoEcho":{"type":"boolean"}, - "NotificationARN":{"type":"string"}, - "NotificationARNs":{ - "type":"list", - "member":{"shape":"NotificationARN"}, - "max":5 - }, - "OnFailure":{ - "type":"string", - "enum":[ - "DO_NOTHING", - "ROLLBACK", - "DELETE" - ] - }, - "Output":{ - "type":"structure", - "members":{ - "OutputKey":{ - "shape":"OutputKey", - "documentation":"

The key associated with the output.

" - }, - "OutputValue":{ - "shape":"OutputValue", - "documentation":"

The value associated with the output.

" - }, - "Description":{ - "shape":"Description", - "documentation":"

User defined description associated with the output.

" - } - }, - "documentation":"

The Output data type.

" - }, - "OutputKey":{"type":"string"}, - "OutputValue":{"type":"string"}, - "Outputs":{ - "type":"list", - "member":{"shape":"Output"} - }, - "Parameter":{ - "type":"structure", - "members":{ - "ParameterKey":{ - "shape":"ParameterKey", - "documentation":"

The key associated with the parameter.

" - }, - "ParameterValue":{ - "shape":"ParameterValue", - "documentation":"

The value associated with the parameter.

" - }, - "UsePreviousValue":{ - "shape":"UsePreviousValue", - "documentation":"

During a stack update, use the existing parameter value that is being used for the stack.

" - } - }, - "documentation":"

The Parameter data type.

" - }, - "ParameterDeclaration":{ - "type":"structure", - "members":{ - "ParameterKey":{ - "shape":"ParameterKey", - "documentation":"

The name that is associated with the parameter.

" - }, - "DefaultValue":{ - "shape":"ParameterValue", - "documentation":"

The default value of the parameter.

" - }, - "ParameterType":{ - "shape":"ParameterType", - "documentation":"

The type of parameter.

" - }, - "NoEcho":{ - "shape":"NoEcho", - "documentation":"

Flag that indicates whether the parameter value is shown as plain text in logs and in the AWS Management Console.

" - }, - "Description":{ - "shape":"Description", - "documentation":"

The description that is associate with the parameter.

" - } - }, - "documentation":"

The ParameterDeclaration data type.

" - }, - "ParameterDeclarations":{ - "type":"list", - "member":{"shape":"ParameterDeclaration"} - }, - "ParameterKey":{"type":"string"}, - "ParameterType":{"type":"string"}, - "ParameterValue":{"type":"string"}, - "Parameters":{ - "type":"list", - "member":{"shape":"Parameter"} - }, - "PhysicalResourceId":{"type":"string"}, - "ResourceProperties":{"type":"string"}, - "ResourceSignalStatus":{ - "type":"string", - "enum":[ - "SUCCESS", - "FAILURE" - ] - }, - "ResourceSignalUniqueId":{ - "type":"string", - "min":1, - "max":64 - }, - "ResourceStatus":{ - "type":"string", - "enum":[ - "CREATE_IN_PROGRESS", - "CREATE_FAILED", - "CREATE_COMPLETE", - "DELETE_IN_PROGRESS", - "DELETE_FAILED", - "DELETE_COMPLETE", - "DELETE_SKIPPED", - "UPDATE_IN_PROGRESS", - "UPDATE_FAILED", - "UPDATE_COMPLETE" - ] - }, - "ResourceStatusReason":{"type":"string"}, - "ResourceType":{"type":"string"}, - "SetStackPolicyInput":{ - "type":"structure", - "required":["StackName"], - "members":{ - "StackName":{ - "shape":"StackName", - "documentation":"

The name or stack ID that you want to associate a policy with.

" - }, - "StackPolicyBody":{ - "shape":"StackPolicyBody", - "documentation":"

Structure containing the stack policy body. For more information, go to Prevent Updates to Stack Resources in the AWS CloudFormation User Guide. You can specify either the StackPolicyBody or the StackPolicyURL parameter, but not both.

" - }, - "StackPolicyURL":{ - "shape":"StackPolicyURL", - "documentation":"

Location of a file containing the stack policy. The URL must point to a policy (max size: 16KB) located in an S3 bucket in the same region as the stack. You can specify either the StackPolicyBody or the StackPolicyURL parameter, but not both.

" - } - }, - "documentation":"

The input for the SetStackPolicy action.

" - }, - "SignalResourceInput":{ - "type":"structure", - "required":[ - "StackName", - "LogicalResourceId", - "UniqueId", - "Status" - ], - "members":{ - "StackName":{ - "shape":"StackNameOrId", - "documentation":"

The stack name or ID that includes the resource that you want to signal.

" - }, - "LogicalResourceId":{ - "shape":"LogicalResourceId", - "documentation":"

The logical ID of the resource that you want to signal. The logical ID is the name of the resource that given in the template.

" - }, - "UniqueId":{ - "shape":"ResourceSignalUniqueId", - "documentation":"

A unique ID of the signal. When you signal Amazon EC2 instances or Auto Scaling groups, specify the instance ID that you are signaling as the unique ID. If you send multiple signals to a single resource (such as signaling a wait condition), each signal requires a different unique ID.

" - }, - "Status":{ - "shape":"ResourceSignalStatus", - "documentation":"

The status of the signal, which is either success or failure. A failure signal causes AWS CloudFormation to immediately fail the stack creation or update.

" - } - }, - "documentation":"

The input for the SignalResource action.

" - }, - "Stack":{ - "type":"structure", - "required":[ - "StackName", - "CreationTime", - "StackStatus" - ], - "members":{ - "StackId":{ - "shape":"StackId", - "documentation":"

Unique identifier of the stack.

" - }, - "StackName":{ - "shape":"StackName", - "documentation":"

The name associated with the stack.

" - }, - "Description":{ - "shape":"Description", - "documentation":"

User defined description associated with the stack.

" - }, - "Parameters":{ - "shape":"Parameters", - "documentation":"

A list of Parameter structures.

" - }, - "CreationTime":{ - "shape":"CreationTime", - "documentation":"

Time at which the stack was created.

" - }, - "LastUpdatedTime":{ - "shape":"LastUpdatedTime", - "documentation":"

The time the stack was last updated. This field will only be returned if the stack has been updated at least once.

" - }, - "StackStatus":{ - "shape":"StackStatus", - "documentation":"

Current status of the stack.

" - }, - "StackStatusReason":{ - "shape":"StackStatusReason", - "documentation":"

Success/failure message associated with the stack status.

" - }, - "DisableRollback":{ - "shape":"DisableRollback", - "documentation":"

Boolean to enable or disable rollback on stack creation failures:

" - }, - "NotificationARNs":{ - "shape":"NotificationARNs", - "documentation":"

SNS topic ARNs to which stack related events are published.

" - }, - "TimeoutInMinutes":{ - "shape":"TimeoutMinutes", - "documentation":"

The amount of time within which stack creation should complete.

" - }, - "Capabilities":{ - "shape":"Capabilities", - "documentation":"

The capabilities allowed in the stack.

" - }, - "Outputs":{ - "shape":"Outputs", - "documentation":"

A list of output structures.

" - }, - "Tags":{ - "shape":"Tags", - "documentation":"

A list of Tags that specify cost allocation information for the stack.

" - } - }, - "documentation":"

The Stack data type.

" - }, - "StackEvent":{ - "type":"structure", - "required":[ - "StackId", - "EventId", - "StackName", - "Timestamp" - ], - "members":{ - "StackId":{ - "shape":"StackId", - "documentation":"

The unique ID name of the instance of the stack.

" - }, - "EventId":{ - "shape":"EventId", - "documentation":"

The unique ID of this event.

" - }, - "StackName":{ - "shape":"StackName", - "documentation":"

The name associated with a stack.

" - }, - "LogicalResourceId":{ - "shape":"LogicalResourceId", - "documentation":"

The logical name of the resource specified in the template.

" - }, - "PhysicalResourceId":{ - "shape":"PhysicalResourceId", - "documentation":"

The name or unique identifier associated with the physical instance of the resource.

" - }, - "ResourceType":{ - "shape":"ResourceType", - "documentation":"

Type of resource. (For more information, go to AWS Resource Types Reference in the AWS CloudFormation User Guide.)

" - }, - "Timestamp":{ - "shape":"Timestamp", - "documentation":"

Time the status was updated.

" - }, - "ResourceStatus":{ - "shape":"ResourceStatus", - "documentation":"

Current status of the resource.

" - }, - "ResourceStatusReason":{ - "shape":"ResourceStatusReason", - "documentation":"

Success/failure message associated with the resource.

" - }, - "ResourceProperties":{ - "shape":"ResourceProperties", - "documentation":"

BLOB of the properties used to create the resource.

" - } - }, - "documentation":"

The StackEvent data type.

" - }, - "StackEvents":{ - "type":"list", - "member":{"shape":"StackEvent"} - }, - "StackId":{"type":"string"}, - "StackName":{"type":"string"}, - "StackNameOrId":{ - "type":"string", - "min":1, - "pattern":"([a-zA-Z][-a-zA-Z0-9]*)|(arn:\\b(aws|aws-us-gov|aws-cn)\\b:[-a-zA-Z0-9:/._+]*)" - }, - "StackPolicyBody":{ - "type":"string", - "min":1, - "max":16384 - }, - "StackPolicyDuringUpdateBody":{ - "type":"string", - "min":1, - "max":16384 - }, - "StackPolicyDuringUpdateURL":{ - "type":"string", - "min":1, - "max":1350 - }, - "StackPolicyURL":{ - "type":"string", - "min":1, - "max":1350 - }, - "StackResource":{ - "type":"structure", - "required":[ - "LogicalResourceId", - "ResourceType", - "Timestamp", - "ResourceStatus" - ], - "members":{ - "StackName":{ - "shape":"StackName", - "documentation":"

The name associated with the stack.

" - }, - "StackId":{ - "shape":"StackId", - "documentation":"

Unique identifier of the stack.

" - }, - "LogicalResourceId":{ - "shape":"LogicalResourceId", - "documentation":"

The logical name of the resource specified in the template.

" - }, - "PhysicalResourceId":{ - "shape":"PhysicalResourceId", - "documentation":"

The name or unique identifier that corresponds to a physical instance ID of a resource supported by AWS CloudFormation.

" - }, - "ResourceType":{ - "shape":"ResourceType", - "documentation":"

Type of resource. (For more information, go to AWS Resource Types Reference in the AWS CloudFormation User Guide.)

" - }, - "Timestamp":{ - "shape":"Timestamp", - "documentation":"

Time the status was updated.

" - }, - "ResourceStatus":{ - "shape":"ResourceStatus", - "documentation":"

Current status of the resource.

" - }, - "ResourceStatusReason":{ - "shape":"ResourceStatusReason", - "documentation":"

Success/failure message associated with the resource.

" - }, - "Description":{ - "shape":"Description", - "documentation":"

User defined description associated with the resource.

" - } - }, - "documentation":"

The StackResource data type.

" - }, - "StackResourceDetail":{ - "type":"structure", - "required":[ - "LogicalResourceId", - "ResourceType", - "LastUpdatedTimestamp", - "ResourceStatus" - ], - "members":{ - "StackName":{ - "shape":"StackName", - "documentation":"

The name associated with the stack.

" - }, - "StackId":{ - "shape":"StackId", - "documentation":"

Unique identifier of the stack.

" - }, - "LogicalResourceId":{ - "shape":"LogicalResourceId", - "documentation":"

The logical name of the resource specified in the template.

" - }, - "PhysicalResourceId":{ - "shape":"PhysicalResourceId", - "documentation":"

The name or unique identifier that corresponds to a physical instance ID of a resource supported by AWS CloudFormation.

" - }, - "ResourceType":{ - "shape":"ResourceType", - "documentation":"

Type of resource. ((For more information, go to AWS Resource Types Reference in the AWS CloudFormation User Guide.)

" - }, - "LastUpdatedTimestamp":{ - "shape":"Timestamp", - "documentation":"

Time the status was updated.

" - }, - "ResourceStatus":{ - "shape":"ResourceStatus", - "documentation":"

Current status of the resource.

" - }, - "ResourceStatusReason":{ - "shape":"ResourceStatusReason", - "documentation":"

Success/failure message associated with the resource.

" - }, - "Description":{ - "shape":"Description", - "documentation":"

User defined description associated with the resource.

" - }, - "Metadata":{ - "shape":"Metadata", - "documentation":"

The JSON format content of the Metadata attribute declared for the resource. For more information, see Metadata Attribute in the AWS CloudFormation User Guide.

" - } - }, - "documentation":"

Contains detailed information about the specified stack resource.

" - }, - "StackResourceSummaries":{ - "type":"list", - "member":{"shape":"StackResourceSummary"} - }, - "StackResourceSummary":{ - "type":"structure", - "required":[ - "LogicalResourceId", - "ResourceType", - "LastUpdatedTimestamp", - "ResourceStatus" - ], - "members":{ - "LogicalResourceId":{ - "shape":"LogicalResourceId", - "documentation":"

The logical name of the resource specified in the template.

" - }, - "PhysicalResourceId":{ - "shape":"PhysicalResourceId", - "documentation":"

The name or unique identifier that corresponds to a physical instance ID of the resource.

" - }, - "ResourceType":{ - "shape":"ResourceType", - "documentation":"

Type of resource. (For more information, go to AWS Resource Types Reference in the AWS CloudFormation User Guide.)

" - }, - "LastUpdatedTimestamp":{ - "shape":"Timestamp", - "documentation":"

Time the status was updated.

" - }, - "ResourceStatus":{ - "shape":"ResourceStatus", - "documentation":"

Current status of the resource.

" - }, - "ResourceStatusReason":{ - "shape":"ResourceStatusReason", - "documentation":"

Success/failure message associated with the resource.

" - } - }, - "documentation":"

Contains high-level information about the specified stack resource.

" - }, - "StackResources":{ - "type":"list", - "member":{"shape":"StackResource"} - }, - "StackStatus":{ - "type":"string", - "enum":[ - "CREATE_IN_PROGRESS", - "CREATE_FAILED", - "CREATE_COMPLETE", - "ROLLBACK_IN_PROGRESS", - "ROLLBACK_FAILED", - "ROLLBACK_COMPLETE", - "DELETE_IN_PROGRESS", - "DELETE_FAILED", - "DELETE_COMPLETE", - "UPDATE_IN_PROGRESS", - "UPDATE_COMPLETE_CLEANUP_IN_PROGRESS", - "UPDATE_COMPLETE", - "UPDATE_ROLLBACK_IN_PROGRESS", - "UPDATE_ROLLBACK_FAILED", - "UPDATE_ROLLBACK_COMPLETE_CLEANUP_IN_PROGRESS", - "UPDATE_ROLLBACK_COMPLETE" - ] - }, - "StackStatusFilter":{ - "type":"list", - "member":{"shape":"StackStatus"} - }, - "StackStatusReason":{"type":"string"}, - "StackSummaries":{ - "type":"list", - "member":{"shape":"StackSummary"} - }, - "StackSummary":{ - "type":"structure", - "required":[ - "StackName", - "CreationTime", - "StackStatus" - ], - "members":{ - "StackId":{ - "shape":"StackId", - "documentation":"

Unique stack identifier.

" - }, - "StackName":{ - "shape":"StackName", - "documentation":"

The name associated with the stack.

" - }, - "TemplateDescription":{ - "shape":"TemplateDescription", - "documentation":"

The template description of the template used to create the stack.

" - }, - "CreationTime":{ - "shape":"CreationTime", - "documentation":"

The time the stack was created.

" - }, - "LastUpdatedTime":{ - "shape":"LastUpdatedTime", - "documentation":"

The time the stack was last updated. This field will only be returned if the stack has been updated at least once.

" - }, - "DeletionTime":{ - "shape":"DeletionTime", - "documentation":"

The time the stack was deleted.

" - }, - "StackStatus":{ - "shape":"StackStatus", - "documentation":"

The current status of the stack.

" - }, - "StackStatusReason":{ - "shape":"StackStatusReason", - "documentation":"

Success/Failure message associated with the stack status.

" - } - }, - "documentation":"

The StackSummary Data Type

" - }, - "Stacks":{ - "type":"list", - "member":{"shape":"Stack"} - }, - "Tag":{ - "type":"structure", - "members":{ - "Key":{ - "shape":"TagKey", - "documentation":"

Required. A string used to identify this tag. You can specify a maximum of 128 characters for a tag key. Tags owned by Amazon Web Services (AWS) have the reserved prefix: aws:.

" - }, - "Value":{ - "shape":"TagValue", - "documentation":"

Required. A string containing the value for this tag. You can specify a maximum of 256 characters for a tag value.

" - } - }, - "documentation":"

The Tag type is used by CreateStack in the Tags parameter. It allows you to specify a key/value pair that can be used to store information related to cost allocation for an AWS CloudFormation stack.

" - }, - "TagKey":{"type":"string"}, - "TagValue":{"type":"string"}, - "Tags":{ - "type":"list", - "member":{"shape":"Tag"} - }, - "TemplateBody":{ - "type":"string", - "min":1 - }, - "TemplateDescription":{"type":"string"}, - "TemplateParameter":{ - "type":"structure", - "members":{ - "ParameterKey":{ - "shape":"ParameterKey", - "documentation":"

The name associated with the parameter.

" - }, - "DefaultValue":{ - "shape":"ParameterValue", - "documentation":"

The default value associated with the parameter.

" - }, - "NoEcho":{ - "shape":"NoEcho", - "documentation":"

Flag indicating whether the parameter should be displayed as plain text in logs and UIs.

" - }, - "Description":{ - "shape":"Description", - "documentation":"

User defined description associated with the parameter.

" - } - }, - "documentation":"

The TemplateParameter data type.

" - }, - "TemplateParameters":{ - "type":"list", - "member":{"shape":"TemplateParameter"} - }, - "TemplateURL":{ - "type":"string", - "min":1, - "max":1024 - }, - "TimeoutMinutes":{ - "type":"integer", - "min":1 - }, - "Timestamp":{"type":"timestamp"}, - "UpdateStackInput":{ - "type":"structure", - "required":["StackName"], - "members":{ - "StackName":{ - "shape":"StackName", - "documentation":"

The name or stack ID of the stack to update.

Must contain only alphanumeric characters (case sensitive) and start with an alpha character. Maximum length of the name is 255 characters. " - }, - "TemplateBody":{ - "shape":"TemplateBody", - "documentation":"

Structure containing the template body with a minimum length of 1 byte and a maximum length of 51,200 bytes. (For more information, go to Template Anatomy in the AWS CloudFormation User Guide.)

Conditional: You must specify either the TemplateBody or the TemplateURL parameter, but not both.

" - }, - "TemplateURL":{ - "shape":"TemplateURL", - "documentation":"

Location of file containing the template body. The URL must point to a template located in an S3 bucket in the same region as the stack. For more information, go to Template Anatomy in the AWS CloudFormation User Guide.

Conditional: You must specify either the TemplateBody or the TemplateURL parameter, but not both.

" - }, - "UsePreviousTemplate":{ - "shape":"UsePreviousTemplate", - "documentation":"

Reuse the existing template that is associated with the stack that you are updating.

" - }, - "StackPolicyDuringUpdateBody":{ - "shape":"StackPolicyDuringUpdateBody", - "documentation":"

Structure containing the temporary overriding stack policy body. You can specify either the StackPolicyDuringUpdateBody or the StackPolicyDuringUpdateURL parameter, but not both.

If you want to update protected resources, specify a temporary overriding stack policy during this update. If you do not specify a stack policy, the current policy that is associated with the stack will be used.

" - }, - "StackPolicyDuringUpdateURL":{ - "shape":"StackPolicyDuringUpdateURL", - "documentation":"

Location of a file containing the temporary overriding stack policy. The URL must point to a policy (max size: 16KB) located in an S3 bucket in the same region as the stack. You can specify either the StackPolicyDuringUpdateBody or the StackPolicyDuringUpdateURL parameter, but not both.

If you want to update protected resources, specify a temporary overriding stack policy during this update. If you do not specify a stack policy, the current policy that is associated with the stack will be used.

" - }, - "Parameters":{ - "shape":"Parameters", - "documentation":"

A list of Parameter structures that specify input parameters for the stack.

" - }, - "Capabilities":{ - "shape":"Capabilities", - "documentation":"

A list of capabilities that you must specify before AWS CloudFormation can create or update certain stacks. Some stack templates might include resources that can affect permissions in your AWS account. For those stacks, you must explicitly acknowledge their capabilities by specifying this parameter. Currently, the only valid value is CAPABILITY_IAM, which is required for the following resources: AWS::CloudFormation::Stack, AWS::IAM::AccessKey, AWS::IAM::Group, AWS::IAM::InstanceProfile, AWS::IAM::Policy, AWS::IAM::Role, AWS::IAM::User, and AWS::IAM::UserToGroupAddition. If your stack template contains these resources, we recommend that you review any permissions associated with them. If you don't specify this parameter, this action returns an InsufficientCapabilities error.

" - }, - "StackPolicyBody":{ - "shape":"StackPolicyBody", - "documentation":"

Structure containing a new stack policy body. You can specify either the StackPolicyBody or the StackPolicyURL parameter, but not both.

You might update the stack policy, for example, in order to protect a new resource that you created during a stack update. If you do not specify a stack policy, the current policy that is associated with the stack is unchanged.

" - }, - "StackPolicyURL":{ - "shape":"StackPolicyURL", - "documentation":"

Location of a file containing the updated stack policy. The URL must point to a policy (max size: 16KB) located in an S3 bucket in the same region as the stack. You can specify either the StackPolicyBody or the StackPolicyURL parameter, but not both.

You might update the stack policy, for example, in order to protect a new resource that you created during a stack update. If you do not specify a stack policy, the current policy that is associated with the stack is unchanged.

" - }, - "NotificationARNs":{ - "shape":"NotificationARNs", - "documentation":"

Update the ARNs for the Amazon SNS topics that are associated with the stack.

" - } - }, - "documentation":"

The input for UpdateStack action.

" - }, - "UpdateStackOutput":{ - "type":"structure", - "members":{ - "StackId":{ - "shape":"StackId", - "documentation":"

Unique identifier of the stack.

" - } - }, - "documentation":"

The output for a UpdateStack action.

" - }, - "Url":{"type":"string"}, - "UsePreviousTemplate":{"type":"boolean"}, - "UsePreviousValue":{"type":"boolean"}, - "ValidateTemplateInput":{ - "type":"structure", - "members":{ - "TemplateBody":{ - "shape":"TemplateBody", - "documentation":"

Structure containing the template body with a minimum length of 1 byte and a maximum length of 51,200 bytes. For more information, go to Template Anatomy in the AWS CloudFormation User Guide.

Conditional: You must pass TemplateURL or TemplateBody. If both are passed, only TemplateBody is used.

" - }, - "TemplateURL":{ - "shape":"TemplateURL", - "documentation":"

Location of file containing the template body. The URL must point to a template (max size: 307,200 bytes) located in an S3 bucket in the same region as the stack. For more information, go to Template Anatomy in the AWS CloudFormation User Guide.

Conditional: You must pass TemplateURL or TemplateBody. If both are passed, only TemplateBody is used.

" - } - }, - "documentation":"

The input for ValidateTemplate action.

" - }, - "ValidateTemplateOutput":{ - "type":"structure", - "members":{ - "Parameters":{ - "shape":"TemplateParameters", - "documentation":"

A list of TemplateParameter structures.

" - }, - "Description":{ - "shape":"Description", - "documentation":"

The description found within the template.

" - }, - "Capabilities":{ - "shape":"Capabilities", - "documentation":"

The capabilities found within the template. Currently, AWS CloudFormation supports only the CAPABILITY_IAM capability. If your template contains IAM resources, you must specify the CAPABILITY_IAM value for this parameter when you use the CreateStack or UpdateStack actions with your template; otherwise, those actions return an InsufficientCapabilities error.

" - }, - "CapabilitiesReason":{ - "shape":"CapabilitiesReason", - "documentation":"

The capabilities reason found within the template.

" - } - }, - "documentation":"

The output for ValidateTemplate action.

" - }, - "Version":{"type":"string"} - } -} diff --git a/src/github.com/getlantern/aws-sdk-go/apis/cloudformation/2010-05-15.paginators.json b/src/github.com/getlantern/aws-sdk-go/apis/cloudformation/2010-05-15.paginators.json deleted file mode 100644 index 4a7474ab77..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/apis/cloudformation/2010-05-15.paginators.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "pagination": { - "DescribeStackEvents": { - "input_token": "NextToken", - "output_token": "NextToken", - "result_key": "StackEvents" - }, - "DescribeStacks": { - "input_token": "NextToken", - "output_token": "NextToken", - "result_key": "Stacks" - }, - "ListStackResources": { - "input_token": "NextToken", - "output_token": "NextToken", - "result_key": "StackResourceSummaries" - }, - "ListStacks": { - "input_token": "NextToken", - "output_token": "NextToken", - "result_key": "StackSummaries" - } - } -} diff --git a/src/github.com/getlantern/aws-sdk-go/apis/cloudfront/2014-05-31.normal.json b/src/github.com/getlantern/aws-sdk-go/apis/cloudfront/2014-05-31.normal.json deleted file mode 100644 index 975a649646..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/apis/cloudfront/2014-05-31.normal.json +++ /dev/null @@ -1,3540 +0,0 @@ -{ - "metadata":{ - "apiVersion":"2014-05-31", - "endpointPrefix":"cloudfront", - "globalEndpoint":"cloudfront.amazonaws.com", - "serviceAbbreviation":"CloudFront", - "serviceFullName":"Amazon CloudFront", - "signatureVersion":"v4", - "protocol":"rest-xml" - }, - "operations":{ - "CreateCloudFrontOriginAccessIdentity":{ - "name":"CreateCloudFrontOriginAccessIdentity2014_05_31", - "http":{ - "method":"POST", - "requestUri":"/2014-05-31/origin-access-identity/cloudfront", - "responseCode":201 - }, - "input":{ - "shape":"CreateCloudFrontOriginAccessIdentityRequest", - "documentation":"The request to create a new origin access identity." - }, - "output":{ - "shape":"CreateCloudFrontOriginAccessIdentityResult", - "documentation":"The returned result of the corresponding request." - }, - "errors":[ - { - "shape":"CloudFrontOriginAccessIdentityAlreadyExists", - "error":{"httpStatusCode":409}, - "exception":true, - "documentation":"If the CallerReference is a value you already sent in a previous request to create an identity but the content of the CloudFrontOriginAccessIdentityConfig is different from the original request, CloudFront returns a CloudFrontOriginAccessIdentityAlreadyExists error." - }, - { - "shape":"MissingBody", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"This operation requires a body. Ensure that the body is present and the Content-Type header is set." - }, - { - "shape":"TooManyCloudFrontOriginAccessIdentities", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"Processing your request would cause you to exceed the maximum number of origin access identities allowed." - }, - { - "shape":"InvalidArgument", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"The argument is invalid." - }, - { - "shape":"InconsistentQuantities", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"The value of Quantity and the size of Items do not match." - } - ], - "documentation":"Create a new origin access identity." - }, - "CreateDistribution":{ - "name":"CreateDistribution2014_05_31", - "http":{ - "method":"POST", - "requestUri":"/2014-05-31/distribution", - "responseCode":201 - }, - "input":{ - "shape":"CreateDistributionRequest", - "documentation":"The request to create a new distribution." - }, - "output":{ - "shape":"CreateDistributionResult", - "documentation":"The returned result of the corresponding request." - }, - "errors":[ - { - "shape":"CNAMEAlreadyExists", - "error":{"httpStatusCode":409}, - "exception":true - }, - { - "shape":"DistributionAlreadyExists", - "error":{"httpStatusCode":409}, - "exception":true, - "documentation":"The caller reference you attempted to create the distribution with is associated with another distribution." - }, - { - "shape":"InvalidOrigin", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"The Amazon S3 origin server specified does not refer to a valid Amazon S3 bucket." - }, - { - "shape":"InvalidOriginAccessIdentity", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"The origin access identity is not valid or doesn't exist." - }, - { - "shape":"AccessDenied", - "error":{"httpStatusCode":403}, - "exception":true, - "documentation":"Access denied." - }, - { - "shape":"TooManyTrustedSigners", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"Your request contains more trusted signers than are allowed per distribution." - }, - { - "shape":"TrustedSignerDoesNotExist", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"One or more of your trusted signers do not exist." - }, - { - "shape":"InvalidViewerCertificate", - "error":{"httpStatusCode":400}, - "exception":true - }, - { - "shape":"MissingBody", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"This operation requires a body. Ensure that the body is present and the Content-Type header is set." - }, - { - "shape":"TooManyDistributionCNAMEs", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"Your request contains more CNAMEs than are allowed per distribution." - }, - { - "shape":"TooManyDistributions", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"Processing your request would cause you to exceed the maximum number of distributions allowed." - }, - { - "shape":"InvalidDefaultRootObject", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"The default root object file name is too big or contains an invalid character." - }, - { - "shape":"InvalidRelativePath", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"The relative path is too big, is not URL-encoded, or does not begin with a slash (/)." - }, - { - "shape":"InvalidErrorCode", - "error":{"httpStatusCode":400}, - "exception":true - }, - { - "shape":"InvalidResponseCode", - "error":{"httpStatusCode":400}, - "exception":true - }, - { - "shape":"InvalidArgument", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"The argument is invalid." - }, - { - "shape":"InvalidRequiredProtocol", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"This operation requires the HTTPS protocol. Ensure that you specify the HTTPS protocol in your request, or omit the RequiredProtocols element from your distribution configuration." - }, - { - "shape":"NoSuchOrigin", - "error":{"httpStatusCode":404}, - "exception":true, - "documentation":"No origin exists with the specified Origin Id." - }, - { - "shape":"TooManyOrigins", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"You cannot create anymore origins for the distribution." - }, - { - "shape":"TooManyCacheBehaviors", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"You cannot create anymore cache behaviors for the distribution." - }, - { - "shape":"TooManyCookieNamesInWhiteList", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"Your request contains more cookie names in the whitelist than are allowed per cache behavior." - }, - { - "shape":"InvalidForwardCookies", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"Your request contains forward cookies option which doesn't match with the expectation for the whitelisted list of cookie names. Either list of cookie names has been specified when not allowed or list of cookie names is missing when expected." - }, - { - "shape":"TooManyHeadersInForwardedValues", - "error":{"httpStatusCode":400}, - "exception":true - }, - { - "shape":"InvalidHeadersForS3Origin", - "error":{"httpStatusCode":400}, - "exception":true - }, - { - "shape":"InconsistentQuantities", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"The value of Quantity and the size of Items do not match." - }, - { - "shape":"TooManyCertificates", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"You cannot create anymore custom ssl certificates." - }, - { - "shape":"InvalidLocationCode", - "error":{"httpStatusCode":400}, - "exception":true - }, - { - "shape":"InvalidGeoRestrictionParameter", - "error":{"httpStatusCode":400}, - "exception":true - } - ], - "documentation":"Create a new distribution." - }, - "CreateInvalidation":{ - "name":"CreateInvalidation2014_05_31", - "http":{ - "method":"POST", - "requestUri":"/2014-05-31/distribution/{DistributionId}/invalidation", - "responseCode":201 - }, - "input":{ - "shape":"CreateInvalidationRequest", - "documentation":"The request to create an invalidation." - }, - "output":{ - "shape":"CreateInvalidationResult", - "documentation":"The returned result of the corresponding request." - }, - "errors":[ - { - "shape":"AccessDenied", - "error":{"httpStatusCode":403}, - "exception":true, - "documentation":"Access denied." - }, - { - "shape":"MissingBody", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"This operation requires a body. Ensure that the body is present and the Content-Type header is set." - }, - { - "shape":"InvalidArgument", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"The argument is invalid." - }, - { - "shape":"NoSuchDistribution", - "error":{"httpStatusCode":404}, - "exception":true, - "documentation":"The specified distribution does not exist." - }, - { - "shape":"BatchTooLarge", - "error":{"httpStatusCode":413}, - "exception":true - }, - { - "shape":"TooManyInvalidationsInProgress", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"You have exceeded the maximum number of allowable InProgress invalidation batch requests, or invalidation objects." - }, - { - "shape":"InconsistentQuantities", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"The value of Quantity and the size of Items do not match." - } - ], - "documentation":"Create a new invalidation." - }, - "CreateStreamingDistribution":{ - "name":"CreateStreamingDistribution2014_05_31", - "http":{ - "method":"POST", - "requestUri":"/2014-05-31/streaming-distribution", - "responseCode":201 - }, - "input":{ - "shape":"CreateStreamingDistributionRequest", - "documentation":"The request to create a new streaming distribution." - }, - "output":{ - "shape":"CreateStreamingDistributionResult", - "documentation":"The returned result of the corresponding request." - }, - "errors":[ - { - "shape":"CNAMEAlreadyExists", - "error":{"httpStatusCode":409}, - "exception":true - }, - { - "shape":"StreamingDistributionAlreadyExists", - "error":{"httpStatusCode":409}, - "exception":true - }, - { - "shape":"InvalidOrigin", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"The Amazon S3 origin server specified does not refer to a valid Amazon S3 bucket." - }, - { - "shape":"InvalidOriginAccessIdentity", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"The origin access identity is not valid or doesn't exist." - }, - { - "shape":"AccessDenied", - "error":{"httpStatusCode":403}, - "exception":true, - "documentation":"Access denied." - }, - { - "shape":"TooManyTrustedSigners", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"Your request contains more trusted signers than are allowed per distribution." - }, - { - "shape":"TrustedSignerDoesNotExist", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"One or more of your trusted signers do not exist." - }, - { - "shape":"MissingBody", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"This operation requires a body. Ensure that the body is present and the Content-Type header is set." - }, - { - "shape":"TooManyStreamingDistributionCNAMEs", - "error":{"httpStatusCode":400}, - "exception":true - }, - { - "shape":"TooManyStreamingDistributions", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"Processing your request would cause you to exceed the maximum number of streaming distributions allowed." - }, - { - "shape":"InvalidArgument", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"The argument is invalid." - }, - { - "shape":"InconsistentQuantities", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"The value of Quantity and the size of Items do not match." - } - ], - "documentation":"Create a new streaming distribution." - }, - "DeleteCloudFrontOriginAccessIdentity":{ - "name":"DeleteCloudFrontOriginAccessIdentity2014_05_31", - "http":{ - "method":"DELETE", - "requestUri":"/2014-05-31/origin-access-identity/cloudfront/{Id}", - "responseCode":204 - }, - "input":{ - "shape":"DeleteCloudFrontOriginAccessIdentityRequest", - "documentation":"The request to delete a origin access identity." - }, - "errors":[ - { - "shape":"AccessDenied", - "error":{"httpStatusCode":403}, - "exception":true, - "documentation":"Access denied." - }, - { - "shape":"InvalidIfMatchVersion", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"The If-Match version is missing or not valid for the distribution." - }, - { - "shape":"NoSuchCloudFrontOriginAccessIdentity", - "error":{"httpStatusCode":404}, - "exception":true, - "documentation":"The specified origin access identity does not exist." - }, - { - "shape":"PreconditionFailed", - "error":{"httpStatusCode":412}, - "exception":true, - "documentation":"The precondition given in one or more of the request-header fields evaluated to false." - }, - { - "shape":"CloudFrontOriginAccessIdentityInUse", - "error":{"httpStatusCode":409}, - "exception":true - } - ], - "documentation":"Delete an origin access identity." - }, - "DeleteDistribution":{ - "name":"DeleteDistribution2014_05_31", - "http":{ - "method":"DELETE", - "requestUri":"/2014-05-31/distribution/{Id}", - "responseCode":204 - }, - "input":{ - "shape":"DeleteDistributionRequest", - "documentation":"The request to delete a distribution." - }, - "errors":[ - { - "shape":"AccessDenied", - "error":{"httpStatusCode":403}, - "exception":true, - "documentation":"Access denied." - }, - { - "shape":"DistributionNotDisabled", - "error":{"httpStatusCode":409}, - "exception":true - }, - { - "shape":"InvalidIfMatchVersion", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"The If-Match version is missing or not valid for the distribution." - }, - { - "shape":"NoSuchDistribution", - "error":{"httpStatusCode":404}, - "exception":true, - "documentation":"The specified distribution does not exist." - }, - { - "shape":"PreconditionFailed", - "error":{"httpStatusCode":412}, - "exception":true, - "documentation":"The precondition given in one or more of the request-header fields evaluated to false." - } - ], - "documentation":"Delete a distribution." - }, - "DeleteStreamingDistribution":{ - "name":"DeleteStreamingDistribution2014_05_31", - "http":{ - "method":"DELETE", - "requestUri":"/2014-05-31/streaming-distribution/{Id}", - "responseCode":204 - }, - "input":{ - "shape":"DeleteStreamingDistributionRequest", - "documentation":"The request to delete a streaming distribution." - }, - "errors":[ - { - "shape":"AccessDenied", - "error":{"httpStatusCode":403}, - "exception":true, - "documentation":"Access denied." - }, - { - "shape":"StreamingDistributionNotDisabled", - "error":{"httpStatusCode":409}, - "exception":true - }, - { - "shape":"InvalidIfMatchVersion", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"The If-Match version is missing or not valid for the distribution." - }, - { - "shape":"NoSuchStreamingDistribution", - "error":{"httpStatusCode":404}, - "exception":true, - "documentation":"The specified streaming distribution does not exist." - }, - { - "shape":"PreconditionFailed", - "error":{"httpStatusCode":412}, - "exception":true, - "documentation":"The precondition given in one or more of the request-header fields evaluated to false." - } - ], - "documentation":"Delete a streaming distribution." - }, - "GetCloudFrontOriginAccessIdentity":{ - "name":"GetCloudFrontOriginAccessIdentity2014_05_31", - "http":{ - "method":"GET", - "requestUri":"/2014-05-31/origin-access-identity/cloudfront/{Id}" - }, - "input":{ - "shape":"GetCloudFrontOriginAccessIdentityRequest", - "documentation":"The request to get an origin access identity's information." - }, - "output":{ - "shape":"GetCloudFrontOriginAccessIdentityResult", - "documentation":"The returned result of the corresponding request." - }, - "errors":[ - { - "shape":"NoSuchCloudFrontOriginAccessIdentity", - "error":{"httpStatusCode":404}, - "exception":true, - "documentation":"The specified origin access identity does not exist." - }, - { - "shape":"AccessDenied", - "error":{"httpStatusCode":403}, - "exception":true, - "documentation":"Access denied." - } - ], - "documentation":"Get the information about an origin access identity." - }, - "GetCloudFrontOriginAccessIdentityConfig":{ - "name":"GetCloudFrontOriginAccessIdentityConfig2014_05_31", - "http":{ - "method":"GET", - "requestUri":"/2014-05-31/origin-access-identity/cloudfront/{Id}/config" - }, - "input":{ - "shape":"GetCloudFrontOriginAccessIdentityConfigRequest", - "documentation":"The request to get an origin access identity's configuration." - }, - "output":{ - "shape":"GetCloudFrontOriginAccessIdentityConfigResult", - "documentation":"The returned result of the corresponding request." - }, - "errors":[ - { - "shape":"NoSuchCloudFrontOriginAccessIdentity", - "error":{"httpStatusCode":404}, - "exception":true, - "documentation":"The specified origin access identity does not exist." - }, - { - "shape":"AccessDenied", - "error":{"httpStatusCode":403}, - "exception":true, - "documentation":"Access denied." - } - ], - "documentation":"Get the configuration information about an origin access identity." - }, - "GetDistribution":{ - "name":"GetDistribution2014_05_31", - "http":{ - "method":"GET", - "requestUri":"/2014-05-31/distribution/{Id}" - }, - "input":{ - "shape":"GetDistributionRequest", - "documentation":"The request to get a distribution's information." - }, - "output":{ - "shape":"GetDistributionResult", - "documentation":"The returned result of the corresponding request." - }, - "errors":[ - { - "shape":"NoSuchDistribution", - "error":{"httpStatusCode":404}, - "exception":true, - "documentation":"The specified distribution does not exist." - }, - { - "shape":"AccessDenied", - "error":{"httpStatusCode":403}, - "exception":true, - "documentation":"Access denied." - } - ], - "documentation":"Get the information about a distribution." - }, - "GetDistributionConfig":{ - "name":"GetDistributionConfig2014_05_31", - "http":{ - "method":"GET", - "requestUri":"/2014-05-31/distribution/{Id}/config" - }, - "input":{ - "shape":"GetDistributionConfigRequest", - "documentation":"The request to get a distribution configuration." - }, - "output":{ - "shape":"GetDistributionConfigResult", - "documentation":"The returned result of the corresponding request." - }, - "errors":[ - { - "shape":"NoSuchDistribution", - "error":{"httpStatusCode":404}, - "exception":true, - "documentation":"The specified distribution does not exist." - }, - { - "shape":"AccessDenied", - "error":{"httpStatusCode":403}, - "exception":true, - "documentation":"Access denied." - } - ], - "documentation":"Get the configuration information about a distribution." - }, - "GetInvalidation":{ - "name":"GetInvalidation2014_05_31", - "http":{ - "method":"GET", - "requestUri":"/2014-05-31/distribution/{DistributionId}/invalidation/{Id}" - }, - "input":{ - "shape":"GetInvalidationRequest", - "documentation":"The request to get an invalidation's information." - }, - "output":{ - "shape":"GetInvalidationResult", - "documentation":"The returned result of the corresponding request." - }, - "errors":[ - { - "shape":"NoSuchInvalidation", - "error":{"httpStatusCode":404}, - "exception":true, - "documentation":"The specified invalidation does not exist." - }, - { - "shape":"NoSuchDistribution", - "error":{"httpStatusCode":404}, - "exception":true, - "documentation":"The specified distribution does not exist." - }, - { - "shape":"AccessDenied", - "error":{"httpStatusCode":403}, - "exception":true, - "documentation":"Access denied." - } - ], - "documentation":"Get the information about an invalidation." - }, - "GetStreamingDistribution":{ - "name":"GetStreamingDistribution2014_05_31", - "http":{ - "method":"GET", - "requestUri":"/2014-05-31/streaming-distribution/{Id}" - }, - "input":{ - "shape":"GetStreamingDistributionRequest", - "documentation":"The request to get a streaming distribution's information." - }, - "output":{ - "shape":"GetStreamingDistributionResult", - "documentation":"The returned result of the corresponding request." - }, - "errors":[ - { - "shape":"NoSuchStreamingDistribution", - "error":{"httpStatusCode":404}, - "exception":true, - "documentation":"The specified streaming distribution does not exist." - }, - { - "shape":"AccessDenied", - "error":{"httpStatusCode":403}, - "exception":true, - "documentation":"Access denied." - } - ], - "documentation":"Get the information about a streaming distribution." - }, - "GetStreamingDistributionConfig":{ - "name":"GetStreamingDistributionConfig2014_05_31", - "http":{ - "method":"GET", - "requestUri":"/2014-05-31/streaming-distribution/{Id}/config" - }, - "input":{ - "shape":"GetStreamingDistributionConfigRequest", - "documentation":"To request to get a streaming distribution configuration." - }, - "output":{ - "shape":"GetStreamingDistributionConfigResult", - "documentation":"The returned result of the corresponding request." - }, - "errors":[ - { - "shape":"NoSuchStreamingDistribution", - "error":{"httpStatusCode":404}, - "exception":true, - "documentation":"The specified streaming distribution does not exist." - }, - { - "shape":"AccessDenied", - "error":{"httpStatusCode":403}, - "exception":true, - "documentation":"Access denied." - } - ], - "documentation":"Get the configuration information about a streaming distribution." - }, - "ListCloudFrontOriginAccessIdentities":{ - "name":"ListCloudFrontOriginAccessIdentities2014_05_31", - "http":{ - "method":"GET", - "requestUri":"/2014-05-31/origin-access-identity/cloudfront" - }, - "input":{ - "shape":"ListCloudFrontOriginAccessIdentitiesRequest", - "documentation":"The request to list origin access identities." - }, - "output":{ - "shape":"ListCloudFrontOriginAccessIdentitiesResult", - "documentation":"The returned result of the corresponding request." - }, - "errors":[ - { - "shape":"InvalidArgument", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"The argument is invalid." - } - ], - "documentation":"List origin access identities." - }, - "ListDistributions":{ - "name":"ListDistributions2014_05_31", - "http":{ - "method":"GET", - "requestUri":"/2014-05-31/distribution" - }, - "input":{ - "shape":"ListDistributionsRequest", - "documentation":"The request to list your distributions." - }, - "output":{ - "shape":"ListDistributionsResult", - "documentation":"The returned result of the corresponding request." - }, - "errors":[ - { - "shape":"InvalidArgument", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"The argument is invalid." - } - ], - "documentation":"List distributions." - }, - "ListInvalidations":{ - "name":"ListInvalidations2014_05_31", - "http":{ - "method":"GET", - "requestUri":"/2014-05-31/distribution/{DistributionId}/invalidation" - }, - "input":{ - "shape":"ListInvalidationsRequest", - "documentation":"The request to list invalidations." - }, - "output":{ - "shape":"ListInvalidationsResult", - "documentation":"The returned result of the corresponding request." - }, - "errors":[ - { - "shape":"InvalidArgument", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"The argument is invalid." - }, - { - "shape":"NoSuchDistribution", - "error":{"httpStatusCode":404}, - "exception":true, - "documentation":"The specified distribution does not exist." - }, - { - "shape":"AccessDenied", - "error":{"httpStatusCode":403}, - "exception":true, - "documentation":"Access denied." - } - ], - "documentation":"List invalidation batches." - }, - "ListStreamingDistributions":{ - "name":"ListStreamingDistributions2014_05_31", - "http":{ - "method":"GET", - "requestUri":"/2014-05-31/streaming-distribution" - }, - "input":{ - "shape":"ListStreamingDistributionsRequest", - "documentation":"The request to list your streaming distributions." - }, - "output":{ - "shape":"ListStreamingDistributionsResult", - "documentation":"The returned result of the corresponding request." - }, - "errors":[ - { - "shape":"InvalidArgument", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"The argument is invalid." - } - ], - "documentation":"List streaming distributions." - }, - "UpdateCloudFrontOriginAccessIdentity":{ - "name":"UpdateCloudFrontOriginAccessIdentity2014_05_31", - "http":{ - "method":"PUT", - "requestUri":"/2014-05-31/origin-access-identity/cloudfront/{Id}/config" - }, - "input":{ - "shape":"UpdateCloudFrontOriginAccessIdentityRequest", - "documentation":"The request to update an origin access identity." - }, - "output":{ - "shape":"UpdateCloudFrontOriginAccessIdentityResult", - "documentation":"The returned result of the corresponding request." - }, - "errors":[ - { - "shape":"AccessDenied", - "error":{"httpStatusCode":403}, - "exception":true, - "documentation":"Access denied." - }, - { - "shape":"IllegalUpdate", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"Origin and CallerReference cannot be updated." - }, - { - "shape":"InvalidIfMatchVersion", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"The If-Match version is missing or not valid for the distribution." - }, - { - "shape":"MissingBody", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"This operation requires a body. Ensure that the body is present and the Content-Type header is set." - }, - { - "shape":"NoSuchCloudFrontOriginAccessIdentity", - "error":{"httpStatusCode":404}, - "exception":true, - "documentation":"The specified origin access identity does not exist." - }, - { - "shape":"PreconditionFailed", - "error":{"httpStatusCode":412}, - "exception":true, - "documentation":"The precondition given in one or more of the request-header fields evaluated to false." - }, - { - "shape":"InvalidArgument", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"The argument is invalid." - }, - { - "shape":"InconsistentQuantities", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"The value of Quantity and the size of Items do not match." - } - ], - "documentation":"Update an origin access identity." - }, - "UpdateDistribution":{ - "name":"UpdateDistribution2014_05_31", - "http":{ - "method":"PUT", - "requestUri":"/2014-05-31/distribution/{Id}/config" - }, - "input":{ - "shape":"UpdateDistributionRequest", - "documentation":"The request to update a distribution." - }, - "output":{ - "shape":"UpdateDistributionResult", - "documentation":"The returned result of the corresponding request." - }, - "errors":[ - { - "shape":"AccessDenied", - "error":{"httpStatusCode":403}, - "exception":true, - "documentation":"Access denied." - }, - { - "shape":"CNAMEAlreadyExists", - "error":{"httpStatusCode":409}, - "exception":true - }, - { - "shape":"IllegalUpdate", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"Origin and CallerReference cannot be updated." - }, - { - "shape":"InvalidIfMatchVersion", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"The If-Match version is missing or not valid for the distribution." - }, - { - "shape":"MissingBody", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"This operation requires a body. Ensure that the body is present and the Content-Type header is set." - }, - { - "shape":"NoSuchDistribution", - "error":{"httpStatusCode":404}, - "exception":true, - "documentation":"The specified distribution does not exist." - }, - { - "shape":"PreconditionFailed", - "error":{"httpStatusCode":412}, - "exception":true, - "documentation":"The precondition given in one or more of the request-header fields evaluated to false." - }, - { - "shape":"TooManyDistributionCNAMEs", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"Your request contains more CNAMEs than are allowed per distribution." - }, - { - "shape":"InvalidDefaultRootObject", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"The default root object file name is too big or contains an invalid character." - }, - { - "shape":"InvalidRelativePath", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"The relative path is too big, is not URL-encoded, or does not begin with a slash (/)." - }, - { - "shape":"InvalidErrorCode", - "error":{"httpStatusCode":400}, - "exception":true - }, - { - "shape":"InvalidResponseCode", - "error":{"httpStatusCode":400}, - "exception":true - }, - { - "shape":"InvalidArgument", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"The argument is invalid." - }, - { - "shape":"InvalidOriginAccessIdentity", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"The origin access identity is not valid or doesn't exist." - }, - { - "shape":"TooManyTrustedSigners", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"Your request contains more trusted signers than are allowed per distribution." - }, - { - "shape":"TrustedSignerDoesNotExist", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"One or more of your trusted signers do not exist." - }, - { - "shape":"InvalidViewerCertificate", - "error":{"httpStatusCode":400}, - "exception":true - }, - { - "shape":"InvalidRequiredProtocol", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"This operation requires the HTTPS protocol. Ensure that you specify the HTTPS protocol in your request, or omit the RequiredProtocols element from your distribution configuration." - }, - { - "shape":"NoSuchOrigin", - "error":{"httpStatusCode":404}, - "exception":true, - "documentation":"No origin exists with the specified Origin Id." - }, - { - "shape":"TooManyOrigins", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"You cannot create anymore origins for the distribution." - }, - { - "shape":"TooManyCacheBehaviors", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"You cannot create anymore cache behaviors for the distribution." - }, - { - "shape":"TooManyCookieNamesInWhiteList", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"Your request contains more cookie names in the whitelist than are allowed per cache behavior." - }, - { - "shape":"InvalidForwardCookies", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"Your request contains forward cookies option which doesn't match with the expectation for the whitelisted list of cookie names. Either list of cookie names has been specified when not allowed or list of cookie names is missing when expected." - }, - { - "shape":"TooManyHeadersInForwardedValues", - "error":{"httpStatusCode":400}, - "exception":true - }, - { - "shape":"InvalidHeadersForS3Origin", - "error":{"httpStatusCode":400}, - "exception":true - }, - { - "shape":"InconsistentQuantities", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"The value of Quantity and the size of Items do not match." - }, - { - "shape":"TooManyCertificates", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"You cannot create anymore custom ssl certificates." - }, - { - "shape":"InvalidLocationCode", - "error":{"httpStatusCode":400}, - "exception":true - }, - { - "shape":"InvalidGeoRestrictionParameter", - "error":{"httpStatusCode":400}, - "exception":true - } - ], - "documentation":"Update a distribution." - }, - "UpdateStreamingDistribution":{ - "name":"UpdateStreamingDistribution2014_05_31", - "http":{ - "method":"PUT", - "requestUri":"/2014-05-31/streaming-distribution/{Id}/config" - }, - "input":{ - "shape":"UpdateStreamingDistributionRequest", - "documentation":"The request to update a streaming distribution." - }, - "output":{ - "shape":"UpdateStreamingDistributionResult", - "documentation":"The returned result of the corresponding request." - }, - "errors":[ - { - "shape":"AccessDenied", - "error":{"httpStatusCode":403}, - "exception":true, - "documentation":"Access denied." - }, - { - "shape":"CNAMEAlreadyExists", - "error":{"httpStatusCode":409}, - "exception":true - }, - { - "shape":"IllegalUpdate", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"Origin and CallerReference cannot be updated." - }, - { - "shape":"InvalidIfMatchVersion", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"The If-Match version is missing or not valid for the distribution." - }, - { - "shape":"MissingBody", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"This operation requires a body. Ensure that the body is present and the Content-Type header is set." - }, - { - "shape":"NoSuchStreamingDistribution", - "error":{"httpStatusCode":404}, - "exception":true, - "documentation":"The specified streaming distribution does not exist." - }, - { - "shape":"PreconditionFailed", - "error":{"httpStatusCode":412}, - "exception":true, - "documentation":"The precondition given in one or more of the request-header fields evaluated to false." - }, - { - "shape":"TooManyStreamingDistributionCNAMEs", - "error":{"httpStatusCode":400}, - "exception":true - }, - { - "shape":"InvalidArgument", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"The argument is invalid." - }, - { - "shape":"InvalidOriginAccessIdentity", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"The origin access identity is not valid or doesn't exist." - }, - { - "shape":"TooManyTrustedSigners", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"Your request contains more trusted signers than are allowed per distribution." - }, - { - "shape":"TrustedSignerDoesNotExist", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"One or more of your trusted signers do not exist." - }, - { - "shape":"InconsistentQuantities", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"The value of Quantity and the size of Items do not match." - } - ], - "documentation":"Update a streaming distribution." - } - }, - "shapes":{ - "AccessDenied":{ - "type":"structure", - "members":{ - "Message":{"shape":"string"} - }, - "error":{"httpStatusCode":403}, - "exception":true, - "documentation":"Access denied." - }, - "ActiveTrustedSigners":{ - "type":"structure", - "required":[ - "Enabled", - "Quantity" - ], - "members":{ - "Enabled":{ - "shape":"boolean", - "documentation":"Each active trusted signer." - }, - "Quantity":{ - "shape":"integer", - "documentation":"The number of unique trusted signers included in all cache behaviors. For example, if three cache behaviors all list the same three AWS accounts, the value of Quantity for ActiveTrustedSigners will be 3." - }, - "Items":{ - "shape":"SignerList", - "documentation":"A complex type that contains one Signer complex type for each unique trusted signer that is specified in the TrustedSigners complex type, including trusted signers in the default cache behavior and in all of the other cache behaviors." - } - }, - "documentation":"A complex type that lists the AWS accounts, if any, that you included in the TrustedSigners complex type for the default cache behavior or for any of the other cache behaviors for this distribution. These are accounts that you want to allow to create signed URLs for private content." - }, - "AliasList":{ - "type":"list", - "member":{ - "shape":"string", - "locationName":"CNAME" - } - }, - "Aliases":{ - "type":"structure", - "required":["Quantity"], - "members":{ - "Quantity":{ - "shape":"integer", - "documentation":"The number of CNAMEs, if any, for this distribution." - }, - "Items":{ - "shape":"AliasList", - "documentation":"Optional: A complex type that contains CNAME elements, if any, for this distribution. If Quantity is 0, you can omit Items." - } - }, - "documentation":"A complex type that contains information about CNAMEs (alternate domain names), if any, for this distribution." - }, - "AllowedMethods":{ - "type":"structure", - "required":["Quantity"], - "members":{ - "Quantity":{ - "shape":"integer", - "documentation":"The number of HTTP methods that you want CloudFront to forward to your origin. Valid values are 2 (for GET and HEAD requests) and 7 (for DELETE, GET, HEAD, OPTIONS, PATCH, POST, and PUT requests)." - }, - "Items":{ - "shape":"AllowedMethodsList", - "documentation":"A complex type that contains the HTTP methods that you want CloudFront to process and forward to your origin." - } - }, - "documentation":"A complex type that controls which HTTP methods CloudFront processes and forwards to your Amazon S3 bucket or your custom origin. There are two options: - CloudFront forwards only GET and HEAD requests. - CloudFront forwards DELETE, GET, HEAD, OPTIONS, PATCH, POST, and PUT requests. If you choose the second option, you may need to restrict access to your Amazon S3 bucket or to your custom origin so users can't perform operations that you don't want them to. For example, you may not want users to have permission to delete objects from your origin." - }, - "AllowedMethodsList":{ - "type":"list", - "member":{ - "shape":"Method", - "locationName":"Method" - } - }, - "AwsAccountNumberList":{ - "type":"list", - "member":{ - "shape":"string", - "locationName":"AwsAccountNumber" - } - }, - "BatchTooLarge":{ - "type":"structure", - "members":{ - "Message":{"shape":"string"} - }, - "error":{"httpStatusCode":413}, - "exception":true - }, - "CNAMEAlreadyExists":{ - "type":"structure", - "members":{ - "Message":{"shape":"string"} - }, - "error":{"httpStatusCode":409}, - "exception":true - }, - "CacheBehavior":{ - "type":"structure", - "required":[ - "PathPattern", - "TargetOriginId", - "ForwardedValues", - "TrustedSigners", - "ViewerProtocolPolicy", - "MinTTL" - ], - "members":{ - "PathPattern":{ - "shape":"string", - "documentation":"The pattern (for example, images/*.jpg) that specifies which requests you want this cache behavior to apply to. When CloudFront receives an end-user request, the requested path is compared with path patterns in the order in which cache behaviors are listed in the distribution. The path pattern for the default cache behavior is * and cannot be changed. If the request for an object does not match the path pattern for any cache behaviors, CloudFront applies the behavior in the default cache behavior." - }, - "TargetOriginId":{ - "shape":"string", - "documentation":"The value of ID for the origin that you want CloudFront to route requests to when a request matches the path pattern either for a cache behavior or for the default cache behavior." - }, - "ForwardedValues":{ - "shape":"ForwardedValues", - "documentation":"A complex type that specifies how CloudFront handles query strings, cookies and headers." - }, - "TrustedSigners":{ - "shape":"TrustedSigners", - "documentation":"A complex type that specifies the AWS accounts, if any, that you want to allow to create signed URLs for private content. If you want to require signed URLs in requests for objects in the target origin that match the PathPattern for this cache behavior, specify true for Enabled, and specify the applicable values for Quantity and Items. For more information, go to Using a Signed URL to Serve Private Content in the Amazon CloudFront Developer Guide. If you don't want to require signed URLs in requests for objects that match PathPattern, specify false for Enabled and 0 for Quantity. Omit Items. To add, change, or remove one or more trusted signers, change Enabled to true (if it's currently false), change Quantity as applicable, and specify all of the trusted signers that you want to include in the updated distribution." - }, - "ViewerProtocolPolicy":{ - "shape":"ViewerProtocolPolicy", - "documentation":"Use this element to specify the protocol that users can use to access the files in the origin specified by TargetOriginId when a request matches the path pattern in PathPattern. If you want CloudFront to allow end users to use any available protocol, specify allow-all. If you want CloudFront to require HTTPS, specify https. If you want CloudFront to respond to an HTTP request with an HTTP status code of 301 (Moved Permanently) and the HTTPS URL, specify redirect-to-https. The viewer then resubmits the request using the HTTPS URL." - }, - "MinTTL":{ - "shape":"long", - "documentation":"The minimum amount of time that you want objects to stay in CloudFront caches before CloudFront queries your origin to see whether the object has been updated.You can specify a value from 0 to 3,153,600,000 seconds (100 years)." - }, - "AllowedMethods":{"shape":"AllowedMethods"}, - "SmoothStreaming":{ - "shape":"boolean", - "documentation":"Indicates whether you want to distribute media files in Microsoft Smooth Streaming format using the origin that is associated with this cache behavior. If so, specify true; if not, specify false." - } - }, - "documentation":"A complex type that describes how CloudFront processes requests. You can create up to 10 cache behaviors.You must create at least as many cache behaviors (including the default cache behavior) as you have origins if you want CloudFront to distribute objects from all of the origins. Each cache behavior specifies the one origin from which you want CloudFront to get objects. If you have two origins and only the default cache behavior, the default cache behavior will cause CloudFront to get objects from one of the origins, but the other origin will never be used. If you don't want to specify any cache behaviors, include only an empty CacheBehaviors element. Don't include an empty CacheBehavior element, or CloudFront returns a MalformedXML error. To delete all cache behaviors in an existing distribution, update the distribution configuration and include only an empty CacheBehaviors element. To add, change, or remove one or more cache behaviors, update the distribution configuration and specify all of the cache behaviors that you want to include in the updated distribution." - }, - "CacheBehaviorList":{ - "type":"list", - "member":{ - "shape":"CacheBehavior", - "locationName":"CacheBehavior" - } - }, - "CacheBehaviors":{ - "type":"structure", - "required":["Quantity"], - "members":{ - "Quantity":{ - "shape":"integer", - "documentation":"The number of cache behaviors for this distribution." - }, - "Items":{ - "shape":"CacheBehaviorList", - "documentation":"Optional: A complex type that contains cache behaviors for this distribution. If Quantity is 0, you can omit Items." - } - }, - "documentation":"A complex type that contains zero or more CacheBehavior elements." - }, - "CloudFrontOriginAccessIdentity":{ - "type":"structure", - "required":[ - "Id", - "S3CanonicalUserId" - ], - "members":{ - "Id":{ - "shape":"string", - "documentation":"The ID for the origin access identity. For example: E74FTE3AJFJ256A." - }, - "S3CanonicalUserId":{ - "shape":"string", - "documentation":"The Amazon S3 canonical user ID for the origin access identity, which you use when giving the origin access identity read permission to an object in Amazon S3." - }, - "CloudFrontOriginAccessIdentityConfig":{ - "shape":"CloudFrontOriginAccessIdentityConfig", - "documentation":"The current configuration information for the identity." - } - }, - "documentation":"CloudFront origin access identity." - }, - "CloudFrontOriginAccessIdentityAlreadyExists":{ - "type":"structure", - "members":{ - "Message":{"shape":"string"} - }, - "error":{"httpStatusCode":409}, - "exception":true, - "documentation":"If the CallerReference is a value you already sent in a previous request to create an identity but the content of the CloudFrontOriginAccessIdentityConfig is different from the original request, CloudFront returns a CloudFrontOriginAccessIdentityAlreadyExists error." - }, - "CloudFrontOriginAccessIdentityConfig":{ - "type":"structure", - "required":[ - "CallerReference", - "Comment" - ], - "members":{ - "CallerReference":{ - "shape":"string", - "documentation":"A unique number that ensures the request can't be replayed. If the CallerReference is new (no matter the content of the CloudFrontOriginAccessIdentityConfig object), a new origin access identity is created. If the CallerReference is a value you already sent in a previous request to create an identity, and the content of the CloudFrontOriginAccessIdentityConfig is identical to the original request (ignoring white space), the response includes the same information returned to the original request. If the CallerReference is a value you already sent in a previous request to create an identity but the content of the CloudFrontOriginAccessIdentityConfig is different from the original request, CloudFront returns a CloudFrontOriginAccessIdentityAlreadyExists error." - }, - "Comment":{ - "shape":"string", - "documentation":"Any comments you want to include about the origin access identity." - } - }, - "documentation":"Origin access identity configuration." - }, - "CloudFrontOriginAccessIdentityInUse":{ - "type":"structure", - "members":{ - "Message":{"shape":"string"} - }, - "error":{"httpStatusCode":409}, - "exception":true - }, - "CloudFrontOriginAccessIdentityList":{ - "type":"structure", - "required":[ - "Marker", - "MaxItems", - "IsTruncated", - "Quantity" - ], - "members":{ - "Marker":{ - "shape":"string", - "documentation":"The value you provided for the Marker request parameter." - }, - "NextMarker":{ - "shape":"string", - "documentation":"If IsTruncated is true, this element is present and contains the value you can use for the Marker request parameter to continue listing your origin access identities where they left off." - }, - "MaxItems":{ - "shape":"integer", - "documentation":"The value you provided for the MaxItems request parameter." - }, - "IsTruncated":{ - "shape":"boolean", - "documentation":"A flag that indicates whether more origin access identities remain to be listed. If your results were truncated, you can make a follow-up pagination request using the Marker request parameter to retrieve more items in the list." - }, - "Quantity":{ - "shape":"integer", - "documentation":"The number of CloudFront origin access identities that were created by the current AWS account." - }, - "Items":{ - "shape":"CloudFrontOriginAccessIdentitySummaryList", - "documentation":"A complex type that contains one CloudFrontOriginAccessIdentitySummary element for each origin access identity that was created by the current AWS account." - } - }, - "documentation":"The CloudFrontOriginAccessIdentityList type." - }, - "CloudFrontOriginAccessIdentitySummary":{ - "type":"structure", - "required":[ - "Id", - "S3CanonicalUserId", - "Comment" - ], - "members":{ - "Id":{ - "shape":"string", - "documentation":"The ID for the origin access identity. For example: E74FTE3AJFJ256A." - }, - "S3CanonicalUserId":{ - "shape":"string", - "documentation":"The Amazon S3 canonical user ID for the origin access identity, which you use when giving the origin access identity read permission to an object in Amazon S3." - }, - "Comment":{ - "shape":"string", - "documentation":"The comment for this origin access identity, as originally specified when created." - } - }, - "documentation":"Summary of the information about a CloudFront origin access identity." - }, - "CloudFrontOriginAccessIdentitySummaryList":{ - "type":"list", - "member":{ - "shape":"CloudFrontOriginAccessIdentitySummary", - "locationName":"CloudFrontOriginAccessIdentitySummary" - } - }, - "CookieNameList":{ - "type":"list", - "member":{ - "shape":"string", - "locationName":"Name" - } - }, - "CookieNames":{ - "type":"structure", - "required":["Quantity"], - "members":{ - "Quantity":{ - "shape":"integer", - "documentation":"The number of whitelisted cookies for this cache behavior." - }, - "Items":{ - "shape":"CookieNameList", - "documentation":"Optional: A complex type that contains whitelisted cookies for this cache behavior. If Quantity is 0, you can omit Items." - } - }, - "documentation":"A complex type that specifies the whitelisted cookies, if any, that you want CloudFront to forward to your origin that is associated with this cache behavior." - }, - "CookiePreference":{ - "type":"structure", - "required":["Forward"], - "members":{ - "Forward":{ - "shape":"ItemSelection", - "documentation":"Use this element to specify whether you want CloudFront to forward cookies to the origin that is associated with this cache behavior. You can specify all, none or whitelist. If you choose All, CloudFront forwards all cookies regardless of how many your application uses." - }, - "WhitelistedNames":{ - "shape":"CookieNames", - "documentation":"A complex type that specifies the whitelisted cookies, if any, that you want CloudFront to forward to your origin that is associated with this cache behavior." - } - }, - "documentation":"A complex type that specifies the cookie preferences associated with this cache behavior." - }, - "CreateCloudFrontOriginAccessIdentityRequest":{ - "type":"structure", - "required":["CloudFrontOriginAccessIdentityConfig"], - "members":{ - "CloudFrontOriginAccessIdentityConfig":{ - "shape":"CloudFrontOriginAccessIdentityConfig", - "documentation":"The origin access identity's configuration information.", - "xmlNamespace":{"uri":"http://cloudfront.amazonaws.com/doc/2014-05-31/"}, - "locationName":"CloudFrontOriginAccessIdentityConfig" - } - }, - "documentation":"The request to create a new origin access identity.", - "payload":"CloudFrontOriginAccessIdentityConfig" - }, - "CreateCloudFrontOriginAccessIdentityResult":{ - "type":"structure", - "members":{ - "CloudFrontOriginAccessIdentity":{ - "shape":"CloudFrontOriginAccessIdentity", - "documentation":"The origin access identity's information." - }, - "Location":{ - "shape":"string", - "location":"header", - "locationName":"Location", - "documentation":"The fully qualified URI of the new origin access identity just created. For example: https://cloudfront.amazonaws.com/2010-11-01/origin-access-identity/cloudfront/E74FTE3AJFJ256A." - }, - "ETag":{ - "shape":"string", - "location":"header", - "locationName":"ETag", - "documentation":"The current version of the origin access identity created." - } - }, - "documentation":"The returned result of the corresponding request.", - "payload":"CloudFrontOriginAccessIdentity" - }, - "CreateDistributionRequest":{ - "type":"structure", - "required":["DistributionConfig"], - "members":{ - "DistributionConfig":{ - "shape":"DistributionConfig", - "documentation":"The distribution's configuration information.", - "xmlNamespace":{"uri":"http://cloudfront.amazonaws.com/doc/2014-05-31/"}, - "locationName":"DistributionConfig" - } - }, - "documentation":"The request to create a new distribution.", - "payload":"DistributionConfig" - }, - "CreateDistributionResult":{ - "type":"structure", - "members":{ - "Distribution":{ - "shape":"Distribution", - "documentation":"The distribution's information." - }, - "Location":{ - "shape":"string", - "location":"header", - "locationName":"Location", - "documentation":"The fully qualified URI of the new distribution resource just created. For example: https://cloudfront.amazonaws.com/2010-11-01/distribution/EDFDVBD632BHDS5." - }, - "ETag":{ - "shape":"string", - "location":"header", - "locationName":"ETag", - "documentation":"The current version of the distribution created." - } - }, - "documentation":"The returned result of the corresponding request.", - "payload":"Distribution" - }, - "CreateInvalidationRequest":{ - "type":"structure", - "required":[ - "DistributionId", - "InvalidationBatch" - ], - "members":{ - "DistributionId":{ - "shape":"string", - "location":"uri", - "locationName":"DistributionId", - "documentation":"The distribution's id." - }, - "InvalidationBatch":{ - "shape":"InvalidationBatch", - "documentation":"The batch information for the invalidation.", - "xmlNamespace":{"uri":"http://cloudfront.amazonaws.com/doc/2014-05-31/"}, - "locationName":"InvalidationBatch" - } - }, - "documentation":"The request to create an invalidation.", - "payload":"InvalidationBatch" - }, - "CreateInvalidationResult":{ - "type":"structure", - "members":{ - "Location":{ - "shape":"string", - "location":"header", - "locationName":"Location", - "documentation":"The fully qualified URI of the distribution and invalidation batch request, including the Invalidation ID." - }, - "Invalidation":{ - "shape":"Invalidation", - "documentation":"The invalidation's information." - } - }, - "documentation":"The returned result of the corresponding request.", - "payload":"Invalidation" - }, - "CreateStreamingDistributionRequest":{ - "type":"structure", - "required":["StreamingDistributionConfig"], - "members":{ - "StreamingDistributionConfig":{ - "shape":"StreamingDistributionConfig", - "documentation":"The streaming distribution's configuration information.", - "xmlNamespace":{"uri":"http://cloudfront.amazonaws.com/doc/2014-05-31/"}, - "locationName":"StreamingDistributionConfig" - } - }, - "documentation":"The request to create a new streaming distribution.", - "payload":"StreamingDistributionConfig" - }, - "CreateStreamingDistributionResult":{ - "type":"structure", - "members":{ - "StreamingDistribution":{ - "shape":"StreamingDistribution", - "documentation":"The streaming distribution's information." - }, - "Location":{ - "shape":"string", - "location":"header", - "locationName":"Location", - "documentation":"The fully qualified URI of the new streaming distribution resource just created. For example: https://cloudfront.amazonaws.com/2010-11-01/streaming-distribution/EGTXBD79H29TRA8." - }, - "ETag":{ - "shape":"string", - "location":"header", - "locationName":"ETag", - "documentation":"The current version of the streaming distribution created." - } - }, - "documentation":"The returned result of the corresponding request.", - "payload":"StreamingDistribution" - }, - "CustomErrorResponse":{ - "type":"structure", - "required":["ErrorCode"], - "members":{ - "ErrorCode":{ - "shape":"integer", - "documentation":"The 4xx or 5xx HTTP status code that you want to customize. For a list of HTTP status codes that you can customize, see CloudFront documentation." - }, - "ResponsePagePath":{ - "shape":"string", - "documentation":"The path of the custom error page (for example, /custom_404.html). The path is relative to the distribution and must begin with a slash (/). If the path includes any non-ASCII characters or unsafe characters as defined in RFC 1783 (http://www.ietf.org/rfc/rfc1738.txt), URL encode those characters. Do not URL encode any other characters in the path, or CloudFront will not return the custom error page to the viewer." - }, - "ResponseCode":{ - "shape":"string", - "documentation":"The HTTP status code that you want CloudFront to return with the custom error page to the viewer. For a list of HTTP status codes that you can replace, see CloudFront Documentation." - }, - "ErrorCachingMinTTL":{ - "shape":"long", - "documentation":"The minimum amount of time you want HTTP error codes to stay in CloudFront caches before CloudFront queries your origin to see whether the object has been updated. You can specify a value from 0 to 31,536,000." - } - }, - "documentation":"A complex type that describes how you'd prefer CloudFront to respond to requests that result in either a 4xx or 5xx response. You can control whether a custom error page should be displayed, what the desired response code should be for this error page and how long should the error response be cached by CloudFront. If you don't want to specify any custom error responses, include only an empty CustomErrorResponses element. To delete all custom error responses in an existing distribution, update the distribution configuration and include only an empty CustomErrorResponses element. To add, change, or remove one or more custom error responses, update the distribution configuration and specify all of the custom error responses that you want to include in the updated distribution." - }, - "CustomErrorResponseList":{ - "type":"list", - "member":{ - "shape":"CustomErrorResponse", - "locationName":"CustomErrorResponse" - } - }, - "CustomErrorResponses":{ - "type":"structure", - "required":["Quantity"], - "members":{ - "Quantity":{ - "shape":"integer", - "documentation":"The number of custom error responses for this distribution." - }, - "Items":{ - "shape":"CustomErrorResponseList", - "documentation":"Optional: A complex type that contains custom error responses for this distribution. If Quantity is 0, you can omit Items." - } - }, - "documentation":"A complex type that contains zero or more CustomErrorResponse elements." - }, - "CustomOriginConfig":{ - "type":"structure", - "required":[ - "HTTPPort", - "HTTPSPort", - "OriginProtocolPolicy" - ], - "members":{ - "HTTPPort":{ - "shape":"integer", - "documentation":"The HTTP port the custom origin listens on." - }, - "HTTPSPort":{ - "shape":"integer", - "documentation":"The HTTPS port the custom origin listens on." - }, - "OriginProtocolPolicy":{ - "shape":"OriginProtocolPolicy", - "documentation":"The origin protocol policy to apply to your origin." - } - }, - "documentation":"A customer origin." - }, - "DefaultCacheBehavior":{ - "type":"structure", - "required":[ - "TargetOriginId", - "ForwardedValues", - "TrustedSigners", - "ViewerProtocolPolicy", - "MinTTL" - ], - "members":{ - "TargetOriginId":{ - "shape":"string", - "documentation":"The value of ID for the origin that you want CloudFront to route requests to when a request matches the path pattern either for a cache behavior or for the default cache behavior." - }, - "ForwardedValues":{ - "shape":"ForwardedValues", - "documentation":"A complex type that specifies how CloudFront handles query strings, cookies and headers." - }, - "TrustedSigners":{ - "shape":"TrustedSigners", - "documentation":"A complex type that specifies the AWS accounts, if any, that you want to allow to create signed URLs for private content. If you want to require signed URLs in requests for objects in the target origin that match the PathPattern for this cache behavior, specify true for Enabled, and specify the applicable values for Quantity and Items. For more information, go to Using a Signed URL to Serve Private Content in the Amazon CloudFront Developer Guide. If you don't want to require signed URLs in requests for objects that match PathPattern, specify false for Enabled and 0 for Quantity. Omit Items. To add, change, or remove one or more trusted signers, change Enabled to true (if it's currently false), change Quantity as applicable, and specify all of the trusted signers that you want to include in the updated distribution." - }, - "ViewerProtocolPolicy":{ - "shape":"ViewerProtocolPolicy", - "documentation":"Use this element to specify the protocol that users can use to access the files in the origin specified by TargetOriginId when a request matches the path pattern in PathPattern. If you want CloudFront to allow end users to use any available protocol, specify allow-all. If you want CloudFront to require HTTPS, specify https. If you want CloudFront to respond to an HTTP request with an HTTP status code of 301 (Moved Permanently) and the HTTPS URL, specify redirect-to-https. The viewer then resubmits the request using the HTTPS URL." - }, - "MinTTL":{ - "shape":"long", - "documentation":"The minimum amount of time that you want objects to stay in CloudFront caches before CloudFront queries your origin to see whether the object has been updated.You can specify a value from 0 to 3,153,600,000 seconds (100 years)." - }, - "AllowedMethods":{"shape":"AllowedMethods"}, - "SmoothStreaming":{ - "shape":"boolean", - "documentation":"Indicates whether you want to distribute media files in Microsoft Smooth Streaming format using the origin that is associated with this cache behavior. If so, specify true; if not, specify false." - } - }, - "documentation":"A complex type that describes the default cache behavior if you do not specify a CacheBehavior element or if files don't match any of the values of PathPattern in CacheBehavior elements.You must create exactly one default cache behavior." - }, - "DeleteCloudFrontOriginAccessIdentityRequest":{ - "type":"structure", - "members":{ - "Id":{ - "shape":"string", - "location":"uri", - "locationName":"Id", - "documentation":"The origin access identity's id." - }, - "IfMatch":{ - "shape":"string", - "location":"header", - "locationName":"If-Match", - "documentation":"The value of the ETag header you received from a previous GET or PUT request. For example: E2QWRUHAPOMQZL." - } - }, - "documentation":"The request to delete a origin access identity.", - "required":["Id"] - }, - "DeleteDistributionRequest":{ - "type":"structure", - "members":{ - "Id":{ - "shape":"string", - "location":"uri", - "locationName":"Id", - "documentation":"The distribution id." - }, - "IfMatch":{ - "shape":"string", - "location":"header", - "locationName":"If-Match", - "documentation":"The value of the ETag header you received when you disabled the distribution. For example: E2QWRUHAPOMQZL." - } - }, - "documentation":"The request to delete a distribution.", - "required":["Id"] - }, - "DeleteStreamingDistributionRequest":{ - "type":"structure", - "members":{ - "Id":{ - "shape":"string", - "location":"uri", - "locationName":"Id", - "documentation":"The distribution id." - }, - "IfMatch":{ - "shape":"string", - "location":"header", - "locationName":"If-Match", - "documentation":"The value of the ETag header you received when you disabled the streaming distribution. For example: E2QWRUHAPOMQZL." - } - }, - "documentation":"The request to delete a streaming distribution.", - "required":["Id"] - }, - "Distribution":{ - "type":"structure", - "required":[ - "Id", - "Status", - "LastModifiedTime", - "InProgressInvalidationBatches", - "DomainName", - "ActiveTrustedSigners", - "DistributionConfig" - ], - "members":{ - "Id":{ - "shape":"string", - "documentation":"The identifier for the distribution. For example: EDFDVBD632BHDS5." - }, - "Status":{ - "shape":"string", - "documentation":"This response element indicates the current status of the distribution. When the status is Deployed, the distribution's information is fully propagated throughout the Amazon CloudFront system." - }, - "LastModifiedTime":{ - "shape":"timestamp", - "documentation":"The date and time the distribution was last modified." - }, - "InProgressInvalidationBatches":{ - "shape":"integer", - "documentation":"The number of invalidation batches currently in progress." - }, - "DomainName":{ - "shape":"string", - "documentation":"The domain name corresponding to the distribution. For example: d604721fxaaqy9.cloudfront.net." - }, - "ActiveTrustedSigners":{ - "shape":"ActiveTrustedSigners", - "documentation":"CloudFront automatically adds this element to the response only if you've set up the distribution to serve private content with signed URLs. The element lists the key pair IDs that CloudFront is aware of for each trusted signer. The Signer child element lists the AWS account number of the trusted signer (or an empty Self element if the signer is you). The Signer element also includes the IDs of any active key pairs associated with the trusted signer's AWS account. If no KeyPairId element appears for a Signer, that signer can't create working signed URLs." - }, - "DistributionConfig":{ - "shape":"DistributionConfig", - "documentation":"The current configuration information for the distribution." - } - }, - "documentation":"A distribution." - }, - "DistributionAlreadyExists":{ - "type":"structure", - "members":{ - "Message":{"shape":"string"} - }, - "error":{"httpStatusCode":409}, - "exception":true, - "documentation":"The caller reference you attempted to create the distribution with is associated with another distribution." - }, - "DistributionConfig":{ - "type":"structure", - "required":[ - "CallerReference", - "Aliases", - "DefaultRootObject", - "Origins", - "DefaultCacheBehavior", - "CacheBehaviors", - "Comment", - "Logging", - "PriceClass", - "Enabled" - ], - "members":{ - "CallerReference":{ - "shape":"string", - "documentation":"A unique number that ensures the request can't be replayed. If the CallerReference is new (no matter the content of the DistributionConfig object), a new distribution is created. If the CallerReference is a value you already sent in a previous request to create a distribution, and the content of the DistributionConfig is identical to the original request (ignoring white space), the response includes the same information returned to the original request. If the CallerReference is a value you already sent in a previous request to create a distribution but the content of the DistributionConfig is different from the original request, CloudFront returns a DistributionAlreadyExists error." - }, - "Aliases":{ - "shape":"Aliases", - "documentation":"A complex type that contains information about CNAMEs (alternate domain names), if any, for this distribution." - }, - "DefaultRootObject":{ - "shape":"string", - "documentation":"The object that you want CloudFront to return (for example, index.html) when an end user requests the root URL for your distribution (http://www.example.com) instead of an object in your distribution (http://www.example.com/index.html). Specifying a default root object avoids exposing the contents of your distribution. If you don't want to specify a default root object when you create a distribution, include an empty DefaultRootObject element. To delete the default root object from an existing distribution, update the distribution configuration and include an empty DefaultRootObject element. To replace the default root object, update the distribution configuration and specify the new object." - }, - "Origins":{ - "shape":"Origins", - "documentation":"A complex type that contains information about origins for this distribution." - }, - "DefaultCacheBehavior":{ - "shape":"DefaultCacheBehavior", - "documentation":"A complex type that describes the default cache behavior if you do not specify a CacheBehavior element or if files don't match any of the values of PathPattern in CacheBehavior elements.You must create exactly one default cache behavior." - }, - "CacheBehaviors":{ - "shape":"CacheBehaviors", - "documentation":"A complex type that contains zero or more CacheBehavior elements." - }, - "CustomErrorResponses":{ - "shape":"CustomErrorResponses", - "documentation":"A complex type that contains zero or more CustomErrorResponse elements." - }, - "Comment":{ - "shape":"string", - "documentation":"Any comments you want to include about the distribution." - }, - "Logging":{ - "shape":"LoggingConfig", - "documentation":"A complex type that controls whether access logs are written for the distribution." - }, - "PriceClass":{ - "shape":"PriceClass", - "documentation":"A complex type that contains information about price class for this distribution." - }, - "Enabled":{ - "shape":"boolean", - "documentation":"Whether the distribution is enabled to accept end user requests for content." - }, - "ViewerCertificate":{"shape":"ViewerCertificate"}, - "Restrictions":{"shape":"Restrictions"} - }, - "documentation":"A distribution Configuration." - }, - "DistributionList":{ - "type":"structure", - "required":[ - "Marker", - "MaxItems", - "IsTruncated", - "Quantity" - ], - "members":{ - "Marker":{ - "shape":"string", - "documentation":"The value you provided for the Marker request parameter." - }, - "NextMarker":{ - "shape":"string", - "documentation":"If IsTruncated is true, this element is present and contains the value you can use for the Marker request parameter to continue listing your distributions where they left off." - }, - "MaxItems":{ - "shape":"integer", - "documentation":"The value you provided for the MaxItems request parameter." - }, - "IsTruncated":{ - "shape":"boolean", - "documentation":"A flag that indicates whether more distributions remain to be listed. If your results were truncated, you can make a follow-up pagination request using the Marker request parameter to retrieve more distributions in the list." - }, - "Quantity":{ - "shape":"integer", - "documentation":"The number of distributions that were created by the current AWS account." - }, - "Items":{ - "shape":"DistributionSummaryList", - "documentation":"A complex type that contains one DistributionSummary element for each distribution that was created by the current AWS account." - } - }, - "documentation":"A distribution list." - }, - "DistributionNotDisabled":{ - "type":"structure", - "members":{ - "Message":{"shape":"string"} - }, - "error":{"httpStatusCode":409}, - "exception":true - }, - "DistributionSummary":{ - "type":"structure", - "required":[ - "Id", - "Status", - "LastModifiedTime", - "DomainName", - "Aliases", - "Origins", - "DefaultCacheBehavior", - "CacheBehaviors", - "CustomErrorResponses", - "Comment", - "PriceClass", - "Enabled", - "ViewerCertificate", - "Restrictions" - ], - "members":{ - "Id":{ - "shape":"string", - "documentation":"The identifier for the distribution. For example: EDFDVBD632BHDS5." - }, - "Status":{ - "shape":"string", - "documentation":"This response element indicates the current status of the distribution. When the status is Deployed, the distribution's information is fully propagated throughout the Amazon CloudFront system." - }, - "LastModifiedTime":{ - "shape":"timestamp", - "documentation":"The date and time the distribution was last modified." - }, - "DomainName":{ - "shape":"string", - "documentation":"The domain name corresponding to the distribution. For example: d604721fxaaqy9.cloudfront.net." - }, - "Aliases":{ - "shape":"Aliases", - "documentation":"A complex type that contains information about CNAMEs (alternate domain names), if any, for this distribution." - }, - "Origins":{ - "shape":"Origins", - "documentation":"A complex type that contains information about origins for this distribution." - }, - "DefaultCacheBehavior":{ - "shape":"DefaultCacheBehavior", - "documentation":"A complex type that describes the default cache behavior if you do not specify a CacheBehavior element or if files don't match any of the values of PathPattern in CacheBehavior elements.You must create exactly one default cache behavior." - }, - "CacheBehaviors":{ - "shape":"CacheBehaviors", - "documentation":"A complex type that contains zero or more CacheBehavior elements." - }, - "CustomErrorResponses":{ - "shape":"CustomErrorResponses", - "documentation":"A complex type that contains zero or more CustomErrorResponses elements." - }, - "Comment":{ - "shape":"string", - "documentation":"The comment originally specified when this distribution was created." - }, - "PriceClass":{"shape":"PriceClass"}, - "Enabled":{ - "shape":"boolean", - "documentation":"Whether the distribution is enabled to accept end user requests for content." - }, - "ViewerCertificate":{"shape":"ViewerCertificate"}, - "Restrictions":{"shape":"Restrictions"} - }, - "documentation":"A summary of the information for an Amazon CloudFront distribution." - }, - "DistributionSummaryList":{ - "type":"list", - "member":{ - "shape":"DistributionSummary", - "locationName":"DistributionSummary" - } - }, - "ForwardedValues":{ - "type":"structure", - "required":[ - "QueryString", - "Cookies" - ], - "members":{ - "QueryString":{ - "shape":"boolean", - "documentation":"Indicates whether you want CloudFront to forward query strings to the origin that is associated with this cache behavior. If so, specify true; if not, specify false." - }, - "Cookies":{ - "shape":"CookiePreference", - "documentation":"A complex type that specifies how CloudFront handles cookies." - }, - "Headers":{ - "shape":"Headers", - "documentation":"A complex type that specifies the Headers, if any, that you want CloudFront to vary upon for this cache behavior." - } - }, - "documentation":"A complex type that specifies how CloudFront handles query strings, cookies and headers." - }, - "GeoRestriction":{ - "type":"structure", - "required":[ - "RestrictionType", - "Quantity" - ], - "members":{ - "RestrictionType":{ - "shape":"GeoRestrictionType", - "documentation":"The method that you want to use to restrict distribution of your content by country: - none: No geo restriction is enabled, meaning access to content is not restricted by client geo location. - blacklist: The Location elements specify the countries in which you do not want CloudFront to distribute your content. - whitelist: The Location elements specify the countries in which you want CloudFront to distribute your content." - }, - "Quantity":{ - "shape":"integer", - "documentation":"When geo restriction is enabled, this is the number of countries in your whitelist or blacklist. Otherwise, when it is not enabled, Quantity is 0, and you can omit Items." - }, - "Items":{ - "shape":"LocationList", - "documentation":"A complex type that contains a Location element for each country in which you want CloudFront either to distribute your content (whitelist) or not distribute your content (blacklist). The Location element is a two-letter, uppercase country code for a country that you want to include in your blacklist or whitelist. Include one Location element for each country. CloudFront and MaxMind both use ISO 3166 country codes. For the current list of countries and the corresponding codes, see ISO 3166-1-alpha-2 code on the International Organization for Standardization website. You can also refer to the country list in the CloudFront console, which includes both country names and codes." - } - }, - "documentation":"A complex type that controls the countries in which your content is distributed. For more information about geo restriction, go to Customizing Error Responses in the Amazon CloudFront Developer Guide. CloudFront determines the location of your users using MaxMind GeoIP databases. For information about the accuracy of these databases, see How accurate are your GeoIP databases? on the MaxMind website." - }, - "GeoRestrictionType":{ - "type":"string", - "enum":[ - "blacklist", - "whitelist", - "none" - ] - }, - "GetCloudFrontOriginAccessIdentityConfigRequest":{ - "type":"structure", - "members":{ - "Id":{ - "shape":"string", - "location":"uri", - "locationName":"Id", - "documentation":"The identity's id." - } - }, - "documentation":"The request to get an origin access identity's configuration.", - "required":["Id"] - }, - "GetCloudFrontOriginAccessIdentityConfigResult":{ - "type":"structure", - "members":{ - "CloudFrontOriginAccessIdentityConfig":{ - "shape":"CloudFrontOriginAccessIdentityConfig", - "documentation":"The origin access identity's configuration information." - }, - "ETag":{ - "shape":"string", - "location":"header", - "locationName":"ETag", - "documentation":"The current version of the configuration. For example: E2QWRUHAPOMQZL." - } - }, - "documentation":"The returned result of the corresponding request.", - "payload":"CloudFrontOriginAccessIdentityConfig" - }, - "GetCloudFrontOriginAccessIdentityRequest":{ - "type":"structure", - "members":{ - "Id":{ - "shape":"string", - "location":"uri", - "locationName":"Id", - "documentation":"The identity's id." - } - }, - "documentation":"The request to get an origin access identity's information.", - "required":["Id"] - }, - "GetCloudFrontOriginAccessIdentityResult":{ - "type":"structure", - "members":{ - "CloudFrontOriginAccessIdentity":{ - "shape":"CloudFrontOriginAccessIdentity", - "documentation":"The origin access identity's information." - }, - "ETag":{ - "shape":"string", - "location":"header", - "locationName":"ETag", - "documentation":"The current version of the origin access identity's information. For example: E2QWRUHAPOMQZL." - } - }, - "documentation":"The returned result of the corresponding request.", - "payload":"CloudFrontOriginAccessIdentity" - }, - "GetDistributionConfigRequest":{ - "type":"structure", - "members":{ - "Id":{ - "shape":"string", - "location":"uri", - "locationName":"Id", - "documentation":"The distribution's id." - } - }, - "documentation":"The request to get a distribution configuration.", - "required":["Id"] - }, - "GetDistributionConfigResult":{ - "type":"structure", - "members":{ - "DistributionConfig":{ - "shape":"DistributionConfig", - "documentation":"The distribution's configuration information." - }, - "ETag":{ - "shape":"string", - "location":"header", - "locationName":"ETag", - "documentation":"The current version of the configuration. For example: E2QWRUHAPOMQZL." - } - }, - "documentation":"The returned result of the corresponding request.", - "payload":"DistributionConfig" - }, - "GetDistributionRequest":{ - "type":"structure", - "members":{ - "Id":{ - "shape":"string", - "location":"uri", - "locationName":"Id", - "documentation":"The distribution's id." - } - }, - "documentation":"The request to get a distribution's information.", - "required":["Id"] - }, - "GetDistributionResult":{ - "type":"structure", - "members":{ - "Distribution":{ - "shape":"Distribution", - "documentation":"The distribution's information." - }, - "ETag":{ - "shape":"string", - "location":"header", - "locationName":"ETag", - "documentation":"The current version of the distribution's information. For example: E2QWRUHAPOMQZL." - } - }, - "documentation":"The returned result of the corresponding request.", - "payload":"Distribution" - }, - "GetInvalidationRequest":{ - "type":"structure", - "required":[ - "DistributionId", - "Id" - ], - "members":{ - "DistributionId":{ - "shape":"string", - "location":"uri", - "locationName":"DistributionId", - "documentation":"The distribution's id." - }, - "Id":{ - "shape":"string", - "location":"uri", - "locationName":"Id", - "documentation":"The invalidation's id." - } - }, - "documentation":"The request to get an invalidation's information." - }, - "GetInvalidationResult":{ - "type":"structure", - "members":{ - "Invalidation":{ - "shape":"Invalidation", - "documentation":"The invalidation's information." - } - }, - "documentation":"The returned result of the corresponding request.", - "payload":"Invalidation" - }, - "GetStreamingDistributionConfigRequest":{ - "type":"structure", - "members":{ - "Id":{ - "shape":"string", - "location":"uri", - "locationName":"Id", - "documentation":"The streaming distribution's id." - } - }, - "documentation":"To request to get a streaming distribution configuration.", - "required":["Id"] - }, - "GetStreamingDistributionConfigResult":{ - "type":"structure", - "members":{ - "StreamingDistributionConfig":{ - "shape":"StreamingDistributionConfig", - "documentation":"The streaming distribution's configuration information." - }, - "ETag":{ - "shape":"string", - "location":"header", - "locationName":"ETag", - "documentation":"The current version of the configuration. For example: E2QWRUHAPOMQZL." - } - }, - "documentation":"The returned result of the corresponding request.", - "payload":"StreamingDistributionConfig" - }, - "GetStreamingDistributionRequest":{ - "type":"structure", - "members":{ - "Id":{ - "shape":"string", - "location":"uri", - "locationName":"Id", - "documentation":"The streaming distribution's id." - } - }, - "documentation":"The request to get a streaming distribution's information.", - "required":["Id"] - }, - "GetStreamingDistributionResult":{ - "type":"structure", - "members":{ - "StreamingDistribution":{ - "shape":"StreamingDistribution", - "documentation":"The streaming distribution's information." - }, - "ETag":{ - "shape":"string", - "location":"header", - "locationName":"ETag", - "documentation":"The current version of the streaming distribution's information. For example: E2QWRUHAPOMQZL." - } - }, - "documentation":"The returned result of the corresponding request.", - "payload":"StreamingDistribution" - }, - "HeaderList":{ - "type":"list", - "member":{ - "shape":"string", - "locationName":"Name" - } - }, - "Headers":{ - "type":"structure", - "required":["Quantity"], - "members":{ - "Quantity":{ - "shape":"integer", - "documentation":"The number of different headers that you want CloudFront to forward to the origin and to vary on for this cache behavior. The maximum number of headers that you can specify by name is 10. If you want CloudFront to forward all headers to the origin and vary on all of them, specify 1 for Quantity and * for Name. If you don't want CloudFront to forward any additional headers to the origin or to vary on any headers, specify 0 for Quantity and omit Items." - }, - "Items":{ - "shape":"HeaderList", - "documentation":"Optional: A complex type that contains a Name element for each header that you want CloudFront to forward to the origin and to vary on for this cache behavior. If Quantity is 0, omit Items." - } - }, - "documentation":"A complex type that specifies the headers that you want CloudFront to forward to the origin for this cache behavior. For the headers that you specify, CloudFront also caches separate versions of a given object based on the header values in viewer requests; this is known as varying on headers. For example, suppose viewer requests for logo.jpg contain a custom Product header that has a value of either Acme or Apex, and you configure CloudFront to vary on the Product header. CloudFront forwards the Product header to the origin and caches the response from the origin once for each header value." - }, - "IllegalUpdate":{ - "type":"structure", - "members":{ - "Message":{"shape":"string"} - }, - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"Origin and CallerReference cannot be updated." - }, - "InconsistentQuantities":{ - "type":"structure", - "members":{ - "Message":{"shape":"string"} - }, - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"The value of Quantity and the size of Items do not match." - }, - "InvalidArgument":{ - "type":"structure", - "members":{ - "Message":{"shape":"string"} - }, - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"The argument is invalid." - }, - "InvalidDefaultRootObject":{ - "type":"structure", - "members":{ - "Message":{"shape":"string"} - }, - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"The default root object file name is too big or contains an invalid character." - }, - "InvalidErrorCode":{ - "type":"structure", - "members":{ - "Message":{"shape":"string"} - }, - "error":{"httpStatusCode":400}, - "exception":true - }, - "InvalidForwardCookies":{ - "type":"structure", - "members":{ - "Message":{"shape":"string"} - }, - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"Your request contains forward cookies option which doesn't match with the expectation for the whitelisted list of cookie names. Either list of cookie names has been specified when not allowed or list of cookie names is missing when expected." - }, - "InvalidGeoRestrictionParameter":{ - "type":"structure", - "members":{ - "Message":{"shape":"string"} - }, - "error":{"httpStatusCode":400}, - "exception":true - }, - "InvalidHeadersForS3Origin":{ - "type":"structure", - "members":{ - "Message":{"shape":"string"} - }, - "error":{"httpStatusCode":400}, - "exception":true - }, - "InvalidIfMatchVersion":{ - "type":"structure", - "members":{ - "Message":{"shape":"string"} - }, - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"The If-Match version is missing or not valid for the distribution." - }, - "InvalidLocationCode":{ - "type":"structure", - "members":{ - "Message":{"shape":"string"} - }, - "error":{"httpStatusCode":400}, - "exception":true - }, - "InvalidOrigin":{ - "type":"structure", - "members":{ - "Message":{"shape":"string"} - }, - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"The Amazon S3 origin server specified does not refer to a valid Amazon S3 bucket." - }, - "InvalidOriginAccessIdentity":{ - "type":"structure", - "members":{ - "Message":{"shape":"string"} - }, - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"The origin access identity is not valid or doesn't exist." - }, - "InvalidRelativePath":{ - "type":"structure", - "members":{ - "Message":{"shape":"string"} - }, - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"The relative path is too big, is not URL-encoded, or does not begin with a slash (/)." - }, - "InvalidRequiredProtocol":{ - "type":"structure", - "members":{ - "Message":{"shape":"string"} - }, - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"This operation requires the HTTPS protocol. Ensure that you specify the HTTPS protocol in your request, or omit the RequiredProtocols element from your distribution configuration." - }, - "InvalidResponseCode":{ - "type":"structure", - "members":{ - "Message":{"shape":"string"} - }, - "error":{"httpStatusCode":400}, - "exception":true - }, - "InvalidViewerCertificate":{ - "type":"structure", - "members":{ - "Message":{"shape":"string"} - }, - "error":{"httpStatusCode":400}, - "exception":true - }, - "Invalidation":{ - "type":"structure", - "required":[ - "Id", - "Status", - "CreateTime", - "InvalidationBatch" - ], - "members":{ - "Id":{ - "shape":"string", - "documentation":"The identifier for the invalidation request. For example: IDFDVBD632BHDS5." - }, - "Status":{ - "shape":"string", - "documentation":"The status of the invalidation request. When the invalidation batch is finished, the status is Completed." - }, - "CreateTime":{ - "shape":"timestamp", - "documentation":"The date and time the invalidation request was first made." - }, - "InvalidationBatch":{ - "shape":"InvalidationBatch", - "documentation":"The current invalidation information for the batch request." - } - }, - "documentation":"An invalidation." - }, - "InvalidationBatch":{ - "type":"structure", - "required":[ - "Paths", - "CallerReference" - ], - "members":{ - "Paths":{ - "shape":"Paths", - "documentation":"The path of the object to invalidate. The path is relative to the distribution and must begin with a slash (/). You must enclose each invalidation object with the Path element tags. If the path includes non-ASCII characters or unsafe characters as defined in RFC 1783 (http://www.ietf.org/rfc/rfc1738.txt), URL encode those characters. Do not URL encode any other characters in the path, or CloudFront will not invalidate the old version of the updated object." - }, - "CallerReference":{ - "shape":"string", - "documentation":"A unique name that ensures the request can't be replayed. If the CallerReference is new (no matter the content of the Path object), a new distribution is created. If the CallerReference is a value you already sent in a previous request to create an invalidation batch, and the content of each Path element is identical to the original request, the response includes the same information returned to the original request. If the CallerReference is a value you already sent in a previous request to create a distribution but the content of any Path is different from the original request, CloudFront returns an InvalidationBatchAlreadyExists error." - } - }, - "documentation":"An invalidation batch." - }, - "InvalidationList":{ - "type":"structure", - "required":[ - "Marker", - "MaxItems", - "IsTruncated", - "Quantity" - ], - "members":{ - "Marker":{ - "shape":"string", - "documentation":"The value you provided for the Marker request parameter." - }, - "NextMarker":{ - "shape":"string", - "documentation":"If IsTruncated is true, this element is present and contains the value you can use for the Marker request parameter to continue listing your invalidation batches where they left off." - }, - "MaxItems":{ - "shape":"integer", - "documentation":"The value you provided for the MaxItems request parameter." - }, - "IsTruncated":{ - "shape":"boolean", - "documentation":"A flag that indicates whether more invalidation batch requests remain to be listed. If your results were truncated, you can make a follow-up pagination request using the Marker request parameter to retrieve more invalidation batches in the list." - }, - "Quantity":{ - "shape":"integer", - "documentation":"The number of invalidation batches that were created by the current AWS account." - }, - "Items":{ - "shape":"InvalidationSummaryList", - "documentation":"A complex type that contains one InvalidationSummary element for each invalidation batch that was created by the current AWS account." - } - }, - "documentation":"An invalidation list." - }, - "InvalidationSummary":{ - "type":"structure", - "required":[ - "Id", - "CreateTime", - "Status" - ], - "members":{ - "Id":{ - "shape":"string", - "documentation":"The unique ID for an invalidation request." - }, - "CreateTime":{"shape":"timestamp"}, - "Status":{ - "shape":"string", - "documentation":"The status of an invalidation request." - } - }, - "documentation":"Summary of an invalidation request." - }, - "InvalidationSummaryList":{ - "type":"list", - "member":{ - "shape":"InvalidationSummary", - "locationName":"InvalidationSummary" - } - }, - "ItemSelection":{ - "type":"string", - "enum":[ - "none", - "whitelist", - "all" - ] - }, - "KeyPairIdList":{ - "type":"list", - "member":{ - "shape":"string", - "locationName":"KeyPairId" - } - }, - "KeyPairIds":{ - "type":"structure", - "required":["Quantity"], - "members":{ - "Quantity":{ - "shape":"integer", - "documentation":"The number of active CloudFront key pairs for AwsAccountNumber." - }, - "Items":{ - "shape":"KeyPairIdList", - "documentation":"A complex type that lists the active CloudFront key pairs, if any, that are associated with AwsAccountNumber." - } - }, - "documentation":"A complex type that lists the active CloudFront key pairs, if any, that are associated with AwsAccountNumber." - }, - "ListCloudFrontOriginAccessIdentitiesRequest":{ - "type":"structure", - "members":{ - "Marker":{ - "shape":"string", - "location":"querystring", - "locationName":"Marker", - "documentation":"Use this when paginating results to indicate where to begin in your list of origin access identities. The results include identities in the list that occur after the marker. To get the next page of results, set the Marker to the value of the NextMarker from the current page's response (which is also the ID of the last identity on that page)." - }, - "MaxItems":{ - "shape":"string", - "location":"querystring", - "locationName":"MaxItems", - "documentation":"The maximum number of origin access identities you want in the response body." - } - }, - "documentation":"The request to list origin access identities." - }, - "ListCloudFrontOriginAccessIdentitiesResult":{ - "type":"structure", - "members":{ - "CloudFrontOriginAccessIdentityList":{ - "shape":"CloudFrontOriginAccessIdentityList", - "documentation":"The CloudFrontOriginAccessIdentityList type." - } - }, - "documentation":"The returned result of the corresponding request.", - "payload":"CloudFrontOriginAccessIdentityList" - }, - "ListDistributionsRequest":{ - "type":"structure", - "members":{ - "Marker":{ - "shape":"string", - "location":"querystring", - "locationName":"Marker", - "documentation":"Use this when paginating results to indicate where to begin in your list of distributions. The results include distributions in the list that occur after the marker. To get the next page of results, set the Marker to the value of the NextMarker from the current page's response (which is also the ID of the last distribution on that page)." - }, - "MaxItems":{ - "shape":"string", - "location":"querystring", - "locationName":"MaxItems", - "documentation":"The maximum number of distributions you want in the response body." - } - }, - "documentation":"The request to list your distributions." - }, - "ListDistributionsResult":{ - "type":"structure", - "members":{ - "DistributionList":{ - "shape":"DistributionList", - "documentation":"The DistributionList type." - } - }, - "documentation":"The returned result of the corresponding request.", - "payload":"DistributionList" - }, - "ListInvalidationsRequest":{ - "type":"structure", - "required":["DistributionId"], - "members":{ - "DistributionId":{ - "shape":"string", - "location":"uri", - "locationName":"DistributionId", - "documentation":"The distribution's id." - }, - "Marker":{ - "shape":"string", - "location":"querystring", - "locationName":"Marker", - "documentation":"Use this parameter when paginating results to indicate where to begin in your list of invalidation batches. Because the results are returned in decreasing order from most recent to oldest, the most recent results are on the first page, the second page will contain earlier results, and so on. To get the next page of results, set the Marker to the value of the NextMarker from the current page's response. This value is the same as the ID of the last invalidation batch on that page." - }, - "MaxItems":{ - "shape":"string", - "location":"querystring", - "locationName":"MaxItems", - "documentation":"The maximum number of invalidation batches you want in the response body." - } - }, - "documentation":"The request to list invalidations." - }, - "ListInvalidationsResult":{ - "type":"structure", - "members":{ - "InvalidationList":{ - "shape":"InvalidationList", - "documentation":"Information about invalidation batches." - } - }, - "documentation":"The returned result of the corresponding request.", - "payload":"InvalidationList" - }, - "ListStreamingDistributionsRequest":{ - "type":"structure", - "members":{ - "Marker":{ - "shape":"string", - "location":"querystring", - "locationName":"Marker", - "documentation":"Use this when paginating results to indicate where to begin in your list of streaming distributions. The results include distributions in the list that occur after the marker. To get the next page of results, set the Marker to the value of the NextMarker from the current page's response (which is also the ID of the last distribution on that page)." - }, - "MaxItems":{ - "shape":"string", - "location":"querystring", - "locationName":"MaxItems", - "documentation":"The maximum number of streaming distributions you want in the response body." - } - }, - "documentation":"The request to list your streaming distributions." - }, - "ListStreamingDistributionsResult":{ - "type":"structure", - "members":{ - "StreamingDistributionList":{ - "shape":"StreamingDistributionList", - "documentation":"The StreamingDistributionList type." - } - }, - "documentation":"The returned result of the corresponding request.", - "payload":"StreamingDistributionList" - }, - "LocationList":{ - "type":"list", - "member":{ - "shape":"string", - "locationName":"Location" - } - }, - "LoggingConfig":{ - "type":"structure", - "required":[ - "Enabled", - "IncludeCookies", - "Bucket", - "Prefix" - ], - "members":{ - "Enabled":{ - "shape":"boolean", - "documentation":"Specifies whether you want CloudFront to save access logs to an Amazon S3 bucket. If you do not want to enable logging when you create a distribution or if you want to disable logging for an existing distribution, specify false for Enabled, and specify empty Bucket and Prefix elements. If you specify false for Enabled but you specify values for Bucket, prefix and IncludeCookies, the values are automatically deleted." - }, - "IncludeCookies":{ - "shape":"boolean", - "documentation":"Specifies whether you want CloudFront to include cookies in access logs, specify true for IncludeCookies. If you choose to include cookies in logs, CloudFront logs all cookies regardless of how you configure the cache behaviors for this distribution. If you do not want to include cookies when you create a distribution or if you want to disable include cookies for an existing distribution, specify false for IncludeCookies." - }, - "Bucket":{ - "shape":"string", - "documentation":"The Amazon S3 bucket to store the access logs in, for example, myawslogbucket.s3.amazonaws.com." - }, - "Prefix":{ - "shape":"string", - "documentation":"An optional string that you want CloudFront to prefix to the access log filenames for this distribution, for example, myprefix/. If you want to enable logging, but you do not want to specify a prefix, you still must include an empty Prefix element in the Logging element." - } - }, - "documentation":"A complex type that controls whether access logs are written for the distribution." - }, - "Method":{ - "type":"string", - "enum":[ - "GET", - "HEAD", - "POST", - "PUT", - "PATCH", - "OPTIONS", - "DELETE" - ] - }, - "MissingBody":{ - "type":"structure", - "members":{ - "Message":{"shape":"string"} - }, - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"This operation requires a body. Ensure that the body is present and the Content-Type header is set." - }, - "NoSuchCloudFrontOriginAccessIdentity":{ - "type":"structure", - "members":{ - "Message":{"shape":"string"} - }, - "error":{"httpStatusCode":404}, - "exception":true, - "documentation":"The specified origin access identity does not exist." - }, - "NoSuchDistribution":{ - "type":"structure", - "members":{ - "Message":{"shape":"string"} - }, - "error":{"httpStatusCode":404}, - "exception":true, - "documentation":"The specified distribution does not exist." - }, - "NoSuchInvalidation":{ - "type":"structure", - "members":{ - "Message":{"shape":"string"} - }, - "error":{"httpStatusCode":404}, - "exception":true, - "documentation":"The specified invalidation does not exist." - }, - "NoSuchOrigin":{ - "type":"structure", - "members":{ - "Message":{"shape":"string"} - }, - "error":{"httpStatusCode":404}, - "exception":true, - "documentation":"No origin exists with the specified Origin Id." - }, - "NoSuchStreamingDistribution":{ - "type":"structure", - "members":{ - "Message":{"shape":"string"} - }, - "error":{"httpStatusCode":404}, - "exception":true, - "documentation":"The specified streaming distribution does not exist." - }, - "Origin":{ - "type":"structure", - "required":[ - "Id", - "DomainName" - ], - "members":{ - "Id":{ - "shape":"string", - "documentation":"A unique identifier for the origin. The value of Id must be unique within the distribution. You use the value of Id when you create a cache behavior. The Id identifies the origin that CloudFront routes a request to when the request matches the path pattern for that cache behavior." - }, - "DomainName":{ - "shape":"string", - "documentation":"Amazon S3 origins: The DNS name of the Amazon S3 bucket from which you want CloudFront to get objects for this origin, for example, myawsbucket.s3.amazonaws.com. Custom origins: The DNS domain name for the HTTP server from which you want CloudFront to get objects for this origin, for example, www.example.com." - }, - "S3OriginConfig":{ - "shape":"S3OriginConfig", - "documentation":"A complex type that contains information about the Amazon S3 origin. If the origin is a custom origin, use the CustomOriginConfig element instead." - }, - "CustomOriginConfig":{ - "shape":"CustomOriginConfig", - "documentation":"A complex type that contains information about a custom origin. If the origin is an Amazon S3 bucket, use the S3OriginConfig element instead." - } - }, - "documentation":"A complex type that describes the Amazon S3 bucket or the HTTP server (for example, a web server) from which CloudFront gets your files.You must create at least one origin." - }, - "OriginList":{ - "type":"list", - "member":{ - "shape":"Origin", - "locationName":"Origin" - }, - "min":1 - }, - "OriginProtocolPolicy":{ - "type":"string", - "enum":[ - "http-only", - "match-viewer" - ] - }, - "Origins":{ - "type":"structure", - "required":["Quantity"], - "members":{ - "Quantity":{ - "shape":"integer", - "documentation":"The number of origins for this distribution." - }, - "Items":{ - "shape":"OriginList", - "documentation":"A complex type that contains origins for this distribution." - } - }, - "documentation":"A complex type that contains information about origins for this distribution." - }, - "PathList":{ - "type":"list", - "member":{ - "shape":"string", - "locationName":"Path" - } - }, - "Paths":{ - "type":"structure", - "required":["Quantity"], - "members":{ - "Quantity":{ - "shape":"integer", - "documentation":"The number of objects that you want to invalidate." - }, - "Items":{ - "shape":"PathList", - "documentation":"A complex type that contains a list of the objects that you want to invalidate." - } - }, - "documentation":"A complex type that contains information about the objects that you want to invalidate." - }, - "PreconditionFailed":{ - "type":"structure", - "members":{ - "Message":{"shape":"string"} - }, - "error":{"httpStatusCode":412}, - "exception":true, - "documentation":"The precondition given in one or more of the request-header fields evaluated to false." - }, - "PriceClass":{ - "type":"string", - "enum":[ - "PriceClass_100", - "PriceClass_200", - "PriceClass_All" - ] - }, - "Restrictions":{ - "type":"structure", - "required":["GeoRestriction"], - "members":{ - "GeoRestriction":{"shape":"GeoRestriction"} - }, - "documentation":"A complex type that identifies ways in which you want to restrict distribution of your content." - }, - "S3Origin":{ - "type":"structure", - "required":[ - "DomainName", - "OriginAccessIdentity" - ], - "members":{ - "DomainName":{ - "shape":"string", - "documentation":"The DNS name of the S3 origin." - }, - "OriginAccessIdentity":{ - "shape":"string", - "documentation":"Your S3 origin's origin access identity." - } - }, - "documentation":"A complex type that contains information about the Amazon S3 bucket from which you want CloudFront to get your media files for distribution." - }, - "S3OriginConfig":{ - "type":"structure", - "required":["OriginAccessIdentity"], - "members":{ - "OriginAccessIdentity":{ - "shape":"string", - "documentation":"The CloudFront origin access identity to associate with the origin. Use an origin access identity to configure the origin so that end users can only access objects in an Amazon S3 bucket through CloudFront. If you want end users to be able to access objects using either the CloudFront URL or the Amazon S3 URL, specify an empty OriginAccessIdentity element. To delete the origin access identity from an existing distribution, update the distribution configuration and include an empty OriginAccessIdentity element. To replace the origin access identity, update the distribution configuration and specify the new origin access identity. Use the format origin-access-identity/cloudfront/Id where Id is the value that CloudFront returned in the Id element when you created the origin access identity." - } - }, - "documentation":"A complex type that contains information about the Amazon S3 origin. If the origin is a custom origin, use the CustomOriginConfig element instead." - }, - "SSLSupportMethod":{ - "type":"string", - "enum":[ - "sni-only", - "vip" - ] - }, - "Signer":{ - "type":"structure", - "members":{ - "AwsAccountNumber":{ - "shape":"string", - "documentation":"Specifies an AWS account that can create signed URLs. Values: self, which indicates that the AWS account that was used to create the distribution can created signed URLs, or an AWS account number. Omit the dashes in the account number." - }, - "KeyPairIds":{ - "shape":"KeyPairIds", - "documentation":"A complex type that lists the active CloudFront key pairs, if any, that are associated with AwsAccountNumber." - } - }, - "documentation":"A complex type that lists the AWS accounts that were included in the TrustedSigners complex type, as well as their active CloudFront key pair IDs, if any." - }, - "SignerList":{ - "type":"list", - "member":{ - "shape":"Signer", - "locationName":"Signer" - } - }, - "StreamingDistribution":{ - "type":"structure", - "required":[ - "Id", - "Status", - "DomainName", - "ActiveTrustedSigners", - "StreamingDistributionConfig" - ], - "members":{ - "Id":{ - "shape":"string", - "documentation":"The identifier for the streaming distribution. For example: EGTXBD79H29TRA8." - }, - "Status":{ - "shape":"string", - "documentation":"The current status of the streaming distribution. When the status is Deployed, the distribution's information is fully propagated throughout the Amazon CloudFront system." - }, - "LastModifiedTime":{ - "shape":"timestamp", - "documentation":"The date and time the distribution was last modified." - }, - "DomainName":{ - "shape":"string", - "documentation":"The domain name corresponding to the streaming distribution. For example: s5c39gqb8ow64r.cloudfront.net." - }, - "ActiveTrustedSigners":{ - "shape":"ActiveTrustedSigners", - "documentation":"CloudFront automatically adds this element to the response only if you've set up the distribution to serve private content with signed URLs. The element lists the key pair IDs that CloudFront is aware of for each trusted signer. The Signer child element lists the AWS account number of the trusted signer (or an empty Self element if the signer is you). The Signer element also includes the IDs of any active key pairs associated with the trusted signer's AWS account. If no KeyPairId element appears for a Signer, that signer can't create working signed URLs." - }, - "StreamingDistributionConfig":{ - "shape":"StreamingDistributionConfig", - "documentation":"The current configuration information for the streaming distribution." - } - }, - "documentation":"A streaming distribution." - }, - "StreamingDistributionAlreadyExists":{ - "type":"structure", - "members":{ - "Message":{"shape":"string"} - }, - "error":{"httpStatusCode":409}, - "exception":true - }, - "StreamingDistributionConfig":{ - "type":"structure", - "required":[ - "CallerReference", - "S3Origin", - "Aliases", - "Comment", - "Logging", - "TrustedSigners", - "PriceClass", - "Enabled" - ], - "members":{ - "CallerReference":{ - "shape":"string", - "documentation":"A unique number that ensures the request can't be replayed. If the CallerReference is new (no matter the content of the StreamingDistributionConfig object), a new streaming distribution is created. If the CallerReference is a value you already sent in a previous request to create a streaming distribution, and the content of the StreamingDistributionConfig is identical to the original request (ignoring white space), the response includes the same information returned to the original request. If the CallerReference is a value you already sent in a previous request to create a streaming distribution but the content of the StreamingDistributionConfig is different from the original request, CloudFront returns a DistributionAlreadyExists error." - }, - "S3Origin":{ - "shape":"S3Origin", - "documentation":"A complex type that contains information about the Amazon S3 bucket from which you want CloudFront to get your media files for distribution." - }, - "Aliases":{ - "shape":"Aliases", - "documentation":"A complex type that contains information about CNAMEs (alternate domain names), if any, for this streaming distribution." - }, - "Comment":{ - "shape":"string", - "documentation":"Any comments you want to include about the streaming distribution." - }, - "Logging":{ - "shape":"StreamingLoggingConfig", - "documentation":"A complex type that controls whether access logs are written for the streaming distribution." - }, - "TrustedSigners":{ - "shape":"TrustedSigners", - "documentation":"A complex type that specifies the AWS accounts, if any, that you want to allow to create signed URLs for private content. If you want to require signed URLs in requests for objects in the target origin that match the PathPattern for this cache behavior, specify true for Enabled, and specify the applicable values for Quantity and Items. For more information, go to Using a Signed URL to Serve Private Content in the Amazon CloudFront Developer Guide. If you don't want to require signed URLs in requests for objects that match PathPattern, specify false for Enabled and 0 for Quantity. Omit Items. To add, change, or remove one or more trusted signers, change Enabled to true (if it's currently false), change Quantity as applicable, and specify all of the trusted signers that you want to include in the updated distribution." - }, - "PriceClass":{ - "shape":"PriceClass", - "documentation":"A complex type that contains information about price class for this streaming distribution." - }, - "Enabled":{ - "shape":"boolean", - "documentation":"Whether the streaming distribution is enabled to accept end user requests for content." - } - }, - "documentation":"The configuration for the streaming distribution." - }, - "StreamingDistributionList":{ - "type":"structure", - "required":[ - "Marker", - "MaxItems", - "IsTruncated", - "Quantity" - ], - "members":{ - "Marker":{ - "shape":"string", - "documentation":"The value you provided for the Marker request parameter." - }, - "NextMarker":{ - "shape":"string", - "documentation":"If IsTruncated is true, this element is present and contains the value you can use for the Marker request parameter to continue listing your streaming distributions where they left off." - }, - "MaxItems":{ - "shape":"integer", - "documentation":"The value you provided for the MaxItems request parameter." - }, - "IsTruncated":{ - "shape":"boolean", - "documentation":"A flag that indicates whether more streaming distributions remain to be listed. If your results were truncated, you can make a follow-up pagination request using the Marker request parameter to retrieve more distributions in the list." - }, - "Quantity":{ - "shape":"integer", - "documentation":"The number of streaming distributions that were created by the current AWS account." - }, - "Items":{ - "shape":"StreamingDistributionSummaryList", - "documentation":"A complex type that contains one StreamingDistributionSummary element for each distribution that was created by the current AWS account." - } - }, - "documentation":"A streaming distribution list." - }, - "StreamingDistributionNotDisabled":{ - "type":"structure", - "members":{ - "Message":{"shape":"string"} - }, - "error":{"httpStatusCode":409}, - "exception":true - }, - "StreamingDistributionSummary":{ - "type":"structure", - "required":[ - "Id", - "Status", - "LastModifiedTime", - "DomainName", - "S3Origin", - "Aliases", - "TrustedSigners", - "Comment", - "PriceClass", - "Enabled" - ], - "members":{ - "Id":{ - "shape":"string", - "documentation":"The identifier for the distribution. For example: EDFDVBD632BHDS5." - }, - "Status":{ - "shape":"string", - "documentation":"Indicates the current status of the distribution. When the status is Deployed, the distribution's information is fully propagated throughout the Amazon CloudFront system." - }, - "LastModifiedTime":{ - "shape":"timestamp", - "documentation":"The date and time the distribution was last modified." - }, - "DomainName":{ - "shape":"string", - "documentation":"The domain name corresponding to the distribution. For example: d604721fxaaqy9.cloudfront.net." - }, - "S3Origin":{ - "shape":"S3Origin", - "documentation":"A complex type that contains information about the Amazon S3 bucket from which you want CloudFront to get your media files for distribution." - }, - "Aliases":{ - "shape":"Aliases", - "documentation":"A complex type that contains information about CNAMEs (alternate domain names), if any, for this streaming distribution." - }, - "TrustedSigners":{ - "shape":"TrustedSigners", - "documentation":"A complex type that specifies the AWS accounts, if any, that you want to allow to create signed URLs for private content. If you want to require signed URLs in requests for objects in the target origin that match the PathPattern for this cache behavior, specify true for Enabled, and specify the applicable values for Quantity and Items. For more information, go to Using a Signed URL to Serve Private Content in the Amazon CloudFront Developer Guide. If you don't want to require signed URLs in requests for objects that match PathPattern, specify false for Enabled and 0 for Quantity. Omit Items. To add, change, or remove one or more trusted signers, change Enabled to true (if it's currently false), change Quantity as applicable, and specify all of the trusted signers that you want to include in the updated distribution." - }, - "Comment":{ - "shape":"string", - "documentation":"The comment originally specified when this distribution was created." - }, - "PriceClass":{"shape":"PriceClass"}, - "Enabled":{ - "shape":"boolean", - "documentation":"Whether the distribution is enabled to accept end user requests for content." - } - }, - "documentation":"A summary of the information for an Amazon CloudFront streaming distribution." - }, - "StreamingDistributionSummaryList":{ - "type":"list", - "member":{ - "shape":"StreamingDistributionSummary", - "locationName":"StreamingDistributionSummary" - } - }, - "StreamingLoggingConfig":{ - "type":"structure", - "required":[ - "Enabled", - "Bucket", - "Prefix" - ], - "members":{ - "Enabled":{ - "shape":"boolean", - "documentation":"Specifies whether you want CloudFront to save access logs to an Amazon S3 bucket. If you do not want to enable logging when you create a streaming distribution or if you want to disable logging for an existing streaming distribution, specify false for Enabled, and specify empty Bucket and Prefix elements. If you specify false for Enabled but you specify values for Bucket and Prefix, the values are automatically deleted." - }, - "Bucket":{ - "shape":"string", - "documentation":"The Amazon S3 bucket to store the access logs in, for example, myawslogbucket.s3.amazonaws.com." - }, - "Prefix":{ - "shape":"string", - "documentation":"An optional string that you want CloudFront to prefix to the access log filenames for this streaming distribution, for example, myprefix/. If you want to enable logging, but you do not want to specify a prefix, you still must include an empty Prefix element in the Logging element." - } - }, - "documentation":"A complex type that controls whether access logs are written for this streaming distribution." - }, - "TooManyCacheBehaviors":{ - "type":"structure", - "members":{ - "Message":{"shape":"string"} - }, - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"You cannot create anymore cache behaviors for the distribution." - }, - "TooManyCertificates":{ - "type":"structure", - "members":{ - "Message":{"shape":"string"} - }, - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"You cannot create anymore custom ssl certificates." - }, - "TooManyCloudFrontOriginAccessIdentities":{ - "type":"structure", - "members":{ - "Message":{"shape":"string"} - }, - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"Processing your request would cause you to exceed the maximum number of origin access identities allowed." - }, - "TooManyCookieNamesInWhiteList":{ - "type":"structure", - "members":{ - "Message":{"shape":"string"} - }, - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"Your request contains more cookie names in the whitelist than are allowed per cache behavior." - }, - "TooManyDistributionCNAMEs":{ - "type":"structure", - "members":{ - "Message":{"shape":"string"} - }, - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"Your request contains more CNAMEs than are allowed per distribution." - }, - "TooManyDistributions":{ - "type":"structure", - "members":{ - "Message":{"shape":"string"} - }, - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"Processing your request would cause you to exceed the maximum number of distributions allowed." - }, - "TooManyHeadersInForwardedValues":{ - "type":"structure", - "members":{ - "Message":{"shape":"string"} - }, - "error":{"httpStatusCode":400}, - "exception":true - }, - "TooManyInvalidationsInProgress":{ - "type":"structure", - "members":{ - "Message":{"shape":"string"} - }, - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"You have exceeded the maximum number of allowable InProgress invalidation batch requests, or invalidation objects." - }, - "TooManyOrigins":{ - "type":"structure", - "members":{ - "Message":{"shape":"string"} - }, - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"You cannot create anymore origins for the distribution." - }, - "TooManyStreamingDistributionCNAMEs":{ - "type":"structure", - "members":{ - "Message":{"shape":"string"} - }, - "error":{"httpStatusCode":400}, - "exception":true - }, - "TooManyStreamingDistributions":{ - "type":"structure", - "members":{ - "Message":{"shape":"string"} - }, - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"Processing your request would cause you to exceed the maximum number of streaming distributions allowed." - }, - "TooManyTrustedSigners":{ - "type":"structure", - "members":{ - "Message":{"shape":"string"} - }, - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"Your request contains more trusted signers than are allowed per distribution." - }, - "TrustedSignerDoesNotExist":{ - "type":"structure", - "members":{ - "Message":{"shape":"string"} - }, - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"One or more of your trusted signers do not exist." - }, - "TrustedSigners":{ - "type":"structure", - "required":[ - "Enabled", - "Quantity" - ], - "members":{ - "Enabled":{ - "shape":"boolean", - "documentation":"Specifies whether you want to require end users to use signed URLs to access the files specified by PathPattern and TargetOriginId." - }, - "Quantity":{ - "shape":"integer", - "documentation":"The number of trusted signers for this cache behavior." - }, - "Items":{ - "shape":"AwsAccountNumberList", - "documentation":"Optional: A complex type that contains trusted signers for this cache behavior. If Quantity is 0, you can omit Items." - } - }, - "documentation":"A complex type that specifies the AWS accounts, if any, that you want to allow to create signed URLs for private content. If you want to require signed URLs in requests for objects in the target origin that match the PathPattern for this cache behavior, specify true for Enabled, and specify the applicable values for Quantity and Items. For more information, go to Using a Signed URL to Serve Private Content in the Amazon CloudFront Developer Guide. If you don't want to require signed URLs in requests for objects that match PathPattern, specify false for Enabled and 0 for Quantity. Omit Items. To add, change, or remove one or more trusted signers, change Enabled to true (if it's currently false), change Quantity as applicable, and specify all of the trusted signers that you want to include in the updated distribution." - }, - "UpdateCloudFrontOriginAccessIdentityRequest":{ - "type":"structure", - "required":[ - "CloudFrontOriginAccessIdentityConfig", - "Id" - ], - "members":{ - "CloudFrontOriginAccessIdentityConfig":{ - "shape":"CloudFrontOriginAccessIdentityConfig", - "documentation":"The identity's configuration information.", - "xmlNamespace":{"uri":"http://cloudfront.amazonaws.com/doc/2014-05-31/"}, - "locationName":"CloudFrontOriginAccessIdentityConfig" - }, - "Id":{ - "shape":"string", - "location":"uri", - "locationName":"Id", - "documentation":"The identity's id." - }, - "IfMatch":{ - "shape":"string", - "location":"header", - "locationName":"If-Match", - "documentation":"The value of the ETag header you received when retrieving the identity's configuration. For example: E2QWRUHAPOMQZL." - } - }, - "documentation":"The request to update an origin access identity.", - "payload":"CloudFrontOriginAccessIdentityConfig" - }, - "UpdateCloudFrontOriginAccessIdentityResult":{ - "type":"structure", - "members":{ - "CloudFrontOriginAccessIdentity":{ - "shape":"CloudFrontOriginAccessIdentity", - "documentation":"The origin access identity's information." - }, - "ETag":{ - "shape":"string", - "location":"header", - "locationName":"ETag", - "documentation":"The current version of the configuration. For example: E2QWRUHAPOMQZL." - } - }, - "documentation":"The returned result of the corresponding request.", - "payload":"CloudFrontOriginAccessIdentity" - }, - "UpdateDistributionRequest":{ - "type":"structure", - "required":[ - "DistributionConfig", - "Id" - ], - "members":{ - "DistributionConfig":{ - "shape":"DistributionConfig", - "documentation":"The distribution's configuration information.", - "xmlNamespace":{"uri":"http://cloudfront.amazonaws.com/doc/2014-05-31/"}, - "locationName":"DistributionConfig" - }, - "Id":{ - "shape":"string", - "location":"uri", - "locationName":"Id", - "documentation":"The distribution's id." - }, - "IfMatch":{ - "shape":"string", - "location":"header", - "locationName":"If-Match", - "documentation":"The value of the ETag header you received when retrieving the distribution's configuration. For example: E2QWRUHAPOMQZL." - } - }, - "documentation":"The request to update a distribution.", - "payload":"DistributionConfig" - }, - "UpdateDistributionResult":{ - "type":"structure", - "members":{ - "Distribution":{ - "shape":"Distribution", - "documentation":"The distribution's information." - }, - "ETag":{ - "shape":"string", - "location":"header", - "locationName":"ETag", - "documentation":"The current version of the configuration. For example: E2QWRUHAPOMQZL." - } - }, - "documentation":"The returned result of the corresponding request.", - "payload":"Distribution" - }, - "UpdateStreamingDistributionRequest":{ - "type":"structure", - "required":[ - "StreamingDistributionConfig", - "Id" - ], - "members":{ - "StreamingDistributionConfig":{ - "shape":"StreamingDistributionConfig", - "documentation":"The streaming distribution's configuration information.", - "xmlNamespace":{"uri":"http://cloudfront.amazonaws.com/doc/2014-05-31/"}, - "locationName":"StreamingDistributionConfig" - }, - "Id":{ - "shape":"string", - "location":"uri", - "locationName":"Id", - "documentation":"The streaming distribution's id." - }, - "IfMatch":{ - "shape":"string", - "location":"header", - "locationName":"If-Match", - "documentation":"The value of the ETag header you received when retrieving the streaming distribution's configuration. For example: E2QWRUHAPOMQZL." - } - }, - "documentation":"The request to update a streaming distribution.", - "payload":"StreamingDistributionConfig" - }, - "UpdateStreamingDistributionResult":{ - "type":"structure", - "members":{ - "StreamingDistribution":{ - "shape":"StreamingDistribution", - "documentation":"The streaming distribution's information." - }, - "ETag":{ - "shape":"string", - "location":"header", - "locationName":"ETag", - "documentation":"The current version of the configuration. For example: E2QWRUHAPOMQZL." - } - }, - "documentation":"The returned result of the corresponding request.", - "payload":"StreamingDistribution" - }, - "ViewerCertificate":{ - "type":"structure", - "members":{ - "IAMCertificateId":{ - "shape":"string", - "documentation":"If you want viewers to use HTTPS to request your objects and you're using an alternate domain name in your object URLs (for example, https://example.com/logo.jpg), specify the IAM certificate identifier of the custom viewer certificate for this distribution. Specify either this value or CloudFrontDefaultCertificate." - }, - "CloudFrontDefaultCertificate":{ - "shape":"boolean", - "documentation":"If you want viewers to use HTTPS to request your objects and you're using the CloudFront domain name of your distribution in your object URLs (for example, https://d111111abcdef8.cloudfront.net/logo.jpg), set to true. Omit this value if you are setting an IAMCertificateId." - }, - "SSLSupportMethod":{ - "shape":"SSLSupportMethod", - "documentation":"If you specify a value for IAMCertificateId, you must also specify how you want CloudFront to serve HTTPS requests. Valid values are vip and sni-only. If you specify vip, CloudFront uses dedicated IP addresses for your content and can respond to HTTPS requests from any viewer. However, you must request permission to use this feature, and you incur additional monthly charges. If you specify sni-only, CloudFront can only respond to HTTPS requests from viewers that support Server Name Indication (SNI). All modern browsers support SNI, but some browsers still in use don't support SNI. Do not specify a value for SSLSupportMethod if you specified true for CloudFrontDefaultCertificate." - } - }, - "documentation":"A complex type that contains information about viewer certificates for this distribution." - }, - "ViewerProtocolPolicy":{ - "type":"string", - "enum":[ - "allow-all", - "https-only", - "redirect-to-https" - ] - }, - "boolean":{"type":"boolean"}, - "integer":{"type":"integer"}, - "long":{"type":"long"}, - "string":{"type":"string"}, - "timestamp":{"type":"timestamp"} - } -} diff --git a/src/github.com/getlantern/aws-sdk-go/apis/cloudfront/2014-05-31.paginators.json b/src/github.com/getlantern/aws-sdk-go/apis/cloudfront/2014-05-31.paginators.json deleted file mode 100644 index 51fbb907fa..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/apis/cloudfront/2014-05-31.paginators.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "pagination": { - "ListCloudFrontOriginAccessIdentities": { - "input_token": "Marker", - "output_token": "CloudFrontOriginAccessIdentityList.NextMarker", - "limit_key": "MaxItems", - "more_results": "CloudFrontOriginAccessIdentityList.IsTruncated", - "result_key": "CloudFrontOriginAccessIdentityList.Items" - }, - "ListDistributions": { - "input_token": "Marker", - "output_token": "DistributionList.NextMarker", - "limit_key": "MaxItems", - "more_results": "DistributionList.IsTruncated", - "result_key": "DistributionList.Items" - }, - "ListInvalidations": { - "input_token": "Marker", - "output_token": "InvalidationList.NextMarker", - "limit_key": "MaxItems", - "more_results": "InvalidationList.IsTruncated", - "result_key": "InvalidationList.Items" - }, - "ListStreamingDistributions": { - "input_token": "Marker", - "output_token": "StreamingDistributionList.NextMarker", - "limit_key": "MaxItems", - "more_results": "StreamingDistributionList.IsTruncated", - "result_key": "StreamingDistributionList.Items" - } - } -} diff --git a/src/github.com/getlantern/aws-sdk-go/apis/cloudfront/2014-05-31.waiters.json b/src/github.com/getlantern/aws-sdk-go/apis/cloudfront/2014-05-31.waiters.json deleted file mode 100644 index 6e044bc51b..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/apis/cloudfront/2014-05-31.waiters.json +++ /dev/null @@ -1,47 +0,0 @@ -{ - "version": 2, - "waiters": { - "DistributionDeployed": { - "delay": 60, - "operation": "GetDistribution", - "maxAttempts": 25, - "description": "Wait until a distribution is deployed.", - "acceptors": [ - { - "expected": "Deployed", - "matcher": "path", - "state": "success", - "argument": "Distribution.Status" - } - ] - }, - "InvalidationCompleted": { - "delay": 20, - "operation": "GetInvalidation", - "maxAttempts": 60, - "description": "Wait until an invalidation has completed.", - "acceptors": [ - { - "expected": "Completed", - "matcher": "path", - "state": "success", - "argument": "Invalidation.Status" - } - ] - }, - "StreamingDistributionDeployed": { - "delay": 60, - "operation": "GetStreamingDistribution", - "maxAttempts": 25, - "description": "Wait until a streaming distribution is deployed.", - "acceptors": [ - { - "expected": "Deployed", - "matcher": "path", - "state": "success", - "argument": "StreamingDistribution.Status" - } - ] - } - } -} diff --git a/src/github.com/getlantern/aws-sdk-go/apis/cloudfront/2014-10-21.normal.json b/src/github.com/getlantern/aws-sdk-go/apis/cloudfront/2014-10-21.normal.json deleted file mode 100644 index 8e7516574a..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/apis/cloudfront/2014-10-21.normal.json +++ /dev/null @@ -1,3588 +0,0 @@ -{ - "metadata":{ - "apiVersion":"2014-10-21", - "endpointPrefix":"cloudfront", - "globalEndpoint":"cloudfront.amazonaws.com", - "serviceAbbreviation":"CloudFront", - "serviceFullName":"Amazon CloudFront", - "signatureVersion":"v4", - "protocol":"rest-xml" - }, - "operations":{ - "CreateCloudFrontOriginAccessIdentity":{ - "name":"CreateCloudFrontOriginAccessIdentity2014_10_21", - "http":{ - "method":"POST", - "requestUri":"/2014-10-21/origin-access-identity/cloudfront", - "responseCode":201 - }, - "input":{ - "shape":"CreateCloudFrontOriginAccessIdentityRequest", - "documentation":"The request to create a new origin access identity." - }, - "output":{ - "shape":"CreateCloudFrontOriginAccessIdentityResult", - "documentation":"The returned result of the corresponding request." - }, - "errors":[ - { - "shape":"CloudFrontOriginAccessIdentityAlreadyExists", - "error":{"httpStatusCode":409}, - "exception":true, - "documentation":"If the CallerReference is a value you already sent in a previous request to create an identity but the content of the CloudFrontOriginAccessIdentityConfig is different from the original request, CloudFront returns a CloudFrontOriginAccessIdentityAlreadyExists error." - }, - { - "shape":"MissingBody", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"This operation requires a body. Ensure that the body is present and the Content-Type header is set." - }, - { - "shape":"TooManyCloudFrontOriginAccessIdentities", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"Processing your request would cause you to exceed the maximum number of origin access identities allowed." - }, - { - "shape":"InvalidArgument", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"The argument is invalid." - }, - { - "shape":"InconsistentQuantities", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"The value of Quantity and the size of Items do not match." - } - ], - "documentation":"Create a new origin access identity." - }, - "CreateDistribution":{ - "name":"CreateDistribution2014_10_21", - "http":{ - "method":"POST", - "requestUri":"/2014-10-21/distribution", - "responseCode":201 - }, - "input":{ - "shape":"CreateDistributionRequest", - "documentation":"The request to create a new distribution." - }, - "output":{ - "shape":"CreateDistributionResult", - "documentation":"The returned result of the corresponding request." - }, - "errors":[ - { - "shape":"CNAMEAlreadyExists", - "error":{"httpStatusCode":409}, - "exception":true - }, - { - "shape":"DistributionAlreadyExists", - "error":{"httpStatusCode":409}, - "exception":true, - "documentation":"The caller reference you attempted to create the distribution with is associated with another distribution." - }, - { - "shape":"InvalidOrigin", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"The Amazon S3 origin server specified does not refer to a valid Amazon S3 bucket." - }, - { - "shape":"InvalidOriginAccessIdentity", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"The origin access identity is not valid or doesn't exist." - }, - { - "shape":"AccessDenied", - "error":{"httpStatusCode":403}, - "exception":true, - "documentation":"Access denied." - }, - { - "shape":"TooManyTrustedSigners", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"Your request contains more trusted signers than are allowed per distribution." - }, - { - "shape":"TrustedSignerDoesNotExist", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"One or more of your trusted signers do not exist." - }, - { - "shape":"InvalidViewerCertificate", - "error":{"httpStatusCode":400}, - "exception":true - }, - { - "shape":"MissingBody", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"This operation requires a body. Ensure that the body is present and the Content-Type header is set." - }, - { - "shape":"TooManyDistributionCNAMEs", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"Your request contains more CNAMEs than are allowed per distribution." - }, - { - "shape":"TooManyDistributions", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"Processing your request would cause you to exceed the maximum number of distributions allowed." - }, - { - "shape":"InvalidDefaultRootObject", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"The default root object file name is too big or contains an invalid character." - }, - { - "shape":"InvalidRelativePath", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"The relative path is too big, is not URL-encoded, or does not begin with a slash (/)." - }, - { - "shape":"InvalidErrorCode", - "error":{"httpStatusCode":400}, - "exception":true - }, - { - "shape":"InvalidResponseCode", - "error":{"httpStatusCode":400}, - "exception":true - }, - { - "shape":"InvalidArgument", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"The argument is invalid." - }, - { - "shape":"InvalidRequiredProtocol", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"This operation requires the HTTPS protocol. Ensure that you specify the HTTPS protocol in your request, or omit the RequiredProtocols element from your distribution configuration." - }, - { - "shape":"NoSuchOrigin", - "error":{"httpStatusCode":404}, - "exception":true, - "documentation":"No origin exists with the specified Origin Id." - }, - { - "shape":"TooManyOrigins", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"You cannot create anymore origins for the distribution." - }, - { - "shape":"TooManyCacheBehaviors", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"You cannot create anymore cache behaviors for the distribution." - }, - { - "shape":"TooManyCookieNamesInWhiteList", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"Your request contains more cookie names in the whitelist than are allowed per cache behavior." - }, - { - "shape":"InvalidForwardCookies", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"Your request contains forward cookies option which doesn't match with the expectation for the whitelisted list of cookie names. Either list of cookie names has been specified when not allowed or list of cookie names is missing when expected." - }, - { - "shape":"TooManyHeadersInForwardedValues", - "error":{"httpStatusCode":400}, - "exception":true - }, - { - "shape":"InvalidHeadersForS3Origin", - "error":{"httpStatusCode":400}, - "exception":true - }, - { - "shape":"InconsistentQuantities", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"The value of Quantity and the size of Items do not match." - }, - { - "shape":"TooManyCertificates", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"You cannot create anymore custom ssl certificates." - }, - { - "shape":"InvalidLocationCode", - "error":{"httpStatusCode":400}, - "exception":true - }, - { - "shape":"InvalidGeoRestrictionParameter", - "error":{"httpStatusCode":400}, - "exception":true - }, - { - "shape":"InvalidProtocolSettings", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"You cannot specify SSLv3 as the minimum protocol version if you only want to support only clients that Support Server Name Indication (SNI)." - } - ], - "documentation":"Create a new distribution." - }, - "CreateInvalidation":{ - "name":"CreateInvalidation2014_10_21", - "http":{ - "method":"POST", - "requestUri":"/2014-10-21/distribution/{DistributionId}/invalidation", - "responseCode":201 - }, - "input":{ - "shape":"CreateInvalidationRequest", - "documentation":"The request to create an invalidation." - }, - "output":{ - "shape":"CreateInvalidationResult", - "documentation":"The returned result of the corresponding request." - }, - "errors":[ - { - "shape":"AccessDenied", - "error":{"httpStatusCode":403}, - "exception":true, - "documentation":"Access denied." - }, - { - "shape":"MissingBody", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"This operation requires a body. Ensure that the body is present and the Content-Type header is set." - }, - { - "shape":"InvalidArgument", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"The argument is invalid." - }, - { - "shape":"NoSuchDistribution", - "error":{"httpStatusCode":404}, - "exception":true, - "documentation":"The specified distribution does not exist." - }, - { - "shape":"BatchTooLarge", - "error":{"httpStatusCode":413}, - "exception":true - }, - { - "shape":"TooManyInvalidationsInProgress", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"You have exceeded the maximum number of allowable InProgress invalidation batch requests, or invalidation objects." - }, - { - "shape":"InconsistentQuantities", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"The value of Quantity and the size of Items do not match." - } - ], - "documentation":"Create a new invalidation." - }, - "CreateStreamingDistribution":{ - "name":"CreateStreamingDistribution2014_10_21", - "http":{ - "method":"POST", - "requestUri":"/2014-10-21/streaming-distribution", - "responseCode":201 - }, - "input":{ - "shape":"CreateStreamingDistributionRequest", - "documentation":"The request to create a new streaming distribution." - }, - "output":{ - "shape":"CreateStreamingDistributionResult", - "documentation":"The returned result of the corresponding request." - }, - "errors":[ - { - "shape":"CNAMEAlreadyExists", - "error":{"httpStatusCode":409}, - "exception":true - }, - { - "shape":"StreamingDistributionAlreadyExists", - "error":{"httpStatusCode":409}, - "exception":true - }, - { - "shape":"InvalidOrigin", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"The Amazon S3 origin server specified does not refer to a valid Amazon S3 bucket." - }, - { - "shape":"InvalidOriginAccessIdentity", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"The origin access identity is not valid or doesn't exist." - }, - { - "shape":"AccessDenied", - "error":{"httpStatusCode":403}, - "exception":true, - "documentation":"Access denied." - }, - { - "shape":"TooManyTrustedSigners", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"Your request contains more trusted signers than are allowed per distribution." - }, - { - "shape":"TrustedSignerDoesNotExist", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"One or more of your trusted signers do not exist." - }, - { - "shape":"MissingBody", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"This operation requires a body. Ensure that the body is present and the Content-Type header is set." - }, - { - "shape":"TooManyStreamingDistributionCNAMEs", - "error":{"httpStatusCode":400}, - "exception":true - }, - { - "shape":"TooManyStreamingDistributions", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"Processing your request would cause you to exceed the maximum number of streaming distributions allowed." - }, - { - "shape":"InvalidArgument", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"The argument is invalid." - }, - { - "shape":"InconsistentQuantities", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"The value of Quantity and the size of Items do not match." - } - ], - "documentation":"Create a new streaming distribution." - }, - "DeleteCloudFrontOriginAccessIdentity":{ - "name":"DeleteCloudFrontOriginAccessIdentity2014_10_21", - "http":{ - "method":"DELETE", - "requestUri":"/2014-10-21/origin-access-identity/cloudfront/{Id}", - "responseCode":204 - }, - "input":{ - "shape":"DeleteCloudFrontOriginAccessIdentityRequest", - "documentation":"The request to delete a origin access identity." - }, - "errors":[ - { - "shape":"AccessDenied", - "error":{"httpStatusCode":403}, - "exception":true, - "documentation":"Access denied." - }, - { - "shape":"InvalidIfMatchVersion", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"The If-Match version is missing or not valid for the distribution." - }, - { - "shape":"NoSuchCloudFrontOriginAccessIdentity", - "error":{"httpStatusCode":404}, - "exception":true, - "documentation":"The specified origin access identity does not exist." - }, - { - "shape":"PreconditionFailed", - "error":{"httpStatusCode":412}, - "exception":true, - "documentation":"The precondition given in one or more of the request-header fields evaluated to false." - }, - { - "shape":"CloudFrontOriginAccessIdentityInUse", - "error":{"httpStatusCode":409}, - "exception":true - } - ], - "documentation":"Delete an origin access identity." - }, - "DeleteDistribution":{ - "name":"DeleteDistribution2014_10_21", - "http":{ - "method":"DELETE", - "requestUri":"/2014-10-21/distribution/{Id}", - "responseCode":204 - }, - "input":{ - "shape":"DeleteDistributionRequest", - "documentation":"The request to delete a distribution." - }, - "errors":[ - { - "shape":"AccessDenied", - "error":{"httpStatusCode":403}, - "exception":true, - "documentation":"Access denied." - }, - { - "shape":"DistributionNotDisabled", - "error":{"httpStatusCode":409}, - "exception":true - }, - { - "shape":"InvalidIfMatchVersion", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"The If-Match version is missing or not valid for the distribution." - }, - { - "shape":"NoSuchDistribution", - "error":{"httpStatusCode":404}, - "exception":true, - "documentation":"The specified distribution does not exist." - }, - { - "shape":"PreconditionFailed", - "error":{"httpStatusCode":412}, - "exception":true, - "documentation":"The precondition given in one or more of the request-header fields evaluated to false." - } - ], - "documentation":"Delete a distribution." - }, - "DeleteStreamingDistribution":{ - "name":"DeleteStreamingDistribution2014_10_21", - "http":{ - "method":"DELETE", - "requestUri":"/2014-10-21/streaming-distribution/{Id}", - "responseCode":204 - }, - "input":{ - "shape":"DeleteStreamingDistributionRequest", - "documentation":"The request to delete a streaming distribution." - }, - "errors":[ - { - "shape":"AccessDenied", - "error":{"httpStatusCode":403}, - "exception":true, - "documentation":"Access denied." - }, - { - "shape":"StreamingDistributionNotDisabled", - "error":{"httpStatusCode":409}, - "exception":true - }, - { - "shape":"InvalidIfMatchVersion", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"The If-Match version is missing or not valid for the distribution." - }, - { - "shape":"NoSuchStreamingDistribution", - "error":{"httpStatusCode":404}, - "exception":true, - "documentation":"The specified streaming distribution does not exist." - }, - { - "shape":"PreconditionFailed", - "error":{"httpStatusCode":412}, - "exception":true, - "documentation":"The precondition given in one or more of the request-header fields evaluated to false." - } - ], - "documentation":"Delete a streaming distribution." - }, - "GetCloudFrontOriginAccessIdentity":{ - "name":"GetCloudFrontOriginAccessIdentity2014_10_21", - "http":{ - "method":"GET", - "requestUri":"/2014-10-21/origin-access-identity/cloudfront/{Id}" - }, - "input":{ - "shape":"GetCloudFrontOriginAccessIdentityRequest", - "documentation":"The request to get an origin access identity's information." - }, - "output":{ - "shape":"GetCloudFrontOriginAccessIdentityResult", - "documentation":"The returned result of the corresponding request." - }, - "errors":[ - { - "shape":"NoSuchCloudFrontOriginAccessIdentity", - "error":{"httpStatusCode":404}, - "exception":true, - "documentation":"The specified origin access identity does not exist." - }, - { - "shape":"AccessDenied", - "error":{"httpStatusCode":403}, - "exception":true, - "documentation":"Access denied." - } - ], - "documentation":"Get the information about an origin access identity." - }, - "GetCloudFrontOriginAccessIdentityConfig":{ - "name":"GetCloudFrontOriginAccessIdentityConfig2014_10_21", - "http":{ - "method":"GET", - "requestUri":"/2014-10-21/origin-access-identity/cloudfront/{Id}/config" - }, - "input":{ - "shape":"GetCloudFrontOriginAccessIdentityConfigRequest", - "documentation":"The request to get an origin access identity's configuration." - }, - "output":{ - "shape":"GetCloudFrontOriginAccessIdentityConfigResult", - "documentation":"The returned result of the corresponding request." - }, - "errors":[ - { - "shape":"NoSuchCloudFrontOriginAccessIdentity", - "error":{"httpStatusCode":404}, - "exception":true, - "documentation":"The specified origin access identity does not exist." - }, - { - "shape":"AccessDenied", - "error":{"httpStatusCode":403}, - "exception":true, - "documentation":"Access denied." - } - ], - "documentation":"Get the configuration information about an origin access identity." - }, - "GetDistribution":{ - "name":"GetDistribution2014_10_21", - "http":{ - "method":"GET", - "requestUri":"/2014-10-21/distribution/{Id}" - }, - "input":{ - "shape":"GetDistributionRequest", - "documentation":"The request to get a distribution's information." - }, - "output":{ - "shape":"GetDistributionResult", - "documentation":"The returned result of the corresponding request." - }, - "errors":[ - { - "shape":"NoSuchDistribution", - "error":{"httpStatusCode":404}, - "exception":true, - "documentation":"The specified distribution does not exist." - }, - { - "shape":"AccessDenied", - "error":{"httpStatusCode":403}, - "exception":true, - "documentation":"Access denied." - } - ], - "documentation":"Get the information about a distribution." - }, - "GetDistributionConfig":{ - "name":"GetDistributionConfig2014_10_21", - "http":{ - "method":"GET", - "requestUri":"/2014-10-21/distribution/{Id}/config" - }, - "input":{ - "shape":"GetDistributionConfigRequest", - "documentation":"The request to get a distribution configuration." - }, - "output":{ - "shape":"GetDistributionConfigResult", - "documentation":"The returned result of the corresponding request." - }, - "errors":[ - { - "shape":"NoSuchDistribution", - "error":{"httpStatusCode":404}, - "exception":true, - "documentation":"The specified distribution does not exist." - }, - { - "shape":"AccessDenied", - "error":{"httpStatusCode":403}, - "exception":true, - "documentation":"Access denied." - } - ], - "documentation":"Get the configuration information about a distribution." - }, - "GetInvalidation":{ - "name":"GetInvalidation2014_10_21", - "http":{ - "method":"GET", - "requestUri":"/2014-10-21/distribution/{DistributionId}/invalidation/{Id}" - }, - "input":{ - "shape":"GetInvalidationRequest", - "documentation":"The request to get an invalidation's information." - }, - "output":{ - "shape":"GetInvalidationResult", - "documentation":"The returned result of the corresponding request." - }, - "errors":[ - { - "shape":"NoSuchInvalidation", - "error":{"httpStatusCode":404}, - "exception":true, - "documentation":"The specified invalidation does not exist." - }, - { - "shape":"NoSuchDistribution", - "error":{"httpStatusCode":404}, - "exception":true, - "documentation":"The specified distribution does not exist." - }, - { - "shape":"AccessDenied", - "error":{"httpStatusCode":403}, - "exception":true, - "documentation":"Access denied." - } - ], - "documentation":"Get the information about an invalidation." - }, - "GetStreamingDistribution":{ - "name":"GetStreamingDistribution2014_10_21", - "http":{ - "method":"GET", - "requestUri":"/2014-10-21/streaming-distribution/{Id}" - }, - "input":{ - "shape":"GetStreamingDistributionRequest", - "documentation":"The request to get a streaming distribution's information." - }, - "output":{ - "shape":"GetStreamingDistributionResult", - "documentation":"The returned result of the corresponding request." - }, - "errors":[ - { - "shape":"NoSuchStreamingDistribution", - "error":{"httpStatusCode":404}, - "exception":true, - "documentation":"The specified streaming distribution does not exist." - }, - { - "shape":"AccessDenied", - "error":{"httpStatusCode":403}, - "exception":true, - "documentation":"Access denied." - } - ], - "documentation":"Get the information about a streaming distribution." - }, - "GetStreamingDistributionConfig":{ - "name":"GetStreamingDistributionConfig2014_10_21", - "http":{ - "method":"GET", - "requestUri":"/2014-10-21/streaming-distribution/{Id}/config" - }, - "input":{ - "shape":"GetStreamingDistributionConfigRequest", - "documentation":"To request to get a streaming distribution configuration." - }, - "output":{ - "shape":"GetStreamingDistributionConfigResult", - "documentation":"The returned result of the corresponding request." - }, - "errors":[ - { - "shape":"NoSuchStreamingDistribution", - "error":{"httpStatusCode":404}, - "exception":true, - "documentation":"The specified streaming distribution does not exist." - }, - { - "shape":"AccessDenied", - "error":{"httpStatusCode":403}, - "exception":true, - "documentation":"Access denied." - } - ], - "documentation":"Get the configuration information about a streaming distribution." - }, - "ListCloudFrontOriginAccessIdentities":{ - "name":"ListCloudFrontOriginAccessIdentities2014_10_21", - "http":{ - "method":"GET", - "requestUri":"/2014-10-21/origin-access-identity/cloudfront" - }, - "input":{ - "shape":"ListCloudFrontOriginAccessIdentitiesRequest", - "documentation":"The request to list origin access identities." - }, - "output":{ - "shape":"ListCloudFrontOriginAccessIdentitiesResult", - "documentation":"The returned result of the corresponding request." - }, - "errors":[ - { - "shape":"InvalidArgument", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"The argument is invalid." - } - ], - "documentation":"List origin access identities." - }, - "ListDistributions":{ - "name":"ListDistributions2014_10_21", - "http":{ - "method":"GET", - "requestUri":"/2014-10-21/distribution" - }, - "input":{ - "shape":"ListDistributionsRequest", - "documentation":"The request to list your distributions." - }, - "output":{ - "shape":"ListDistributionsResult", - "documentation":"The returned result of the corresponding request." - }, - "errors":[ - { - "shape":"InvalidArgument", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"The argument is invalid." - } - ], - "documentation":"List distributions." - }, - "ListInvalidations":{ - "name":"ListInvalidations2014_10_21", - "http":{ - "method":"GET", - "requestUri":"/2014-10-21/distribution/{DistributionId}/invalidation" - }, - "input":{ - "shape":"ListInvalidationsRequest", - "documentation":"The request to list invalidations." - }, - "output":{ - "shape":"ListInvalidationsResult", - "documentation":"The returned result of the corresponding request." - }, - "errors":[ - { - "shape":"InvalidArgument", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"The argument is invalid." - }, - { - "shape":"NoSuchDistribution", - "error":{"httpStatusCode":404}, - "exception":true, - "documentation":"The specified distribution does not exist." - }, - { - "shape":"AccessDenied", - "error":{"httpStatusCode":403}, - "exception":true, - "documentation":"Access denied." - } - ], - "documentation":"List invalidation batches." - }, - "ListStreamingDistributions":{ - "name":"ListStreamingDistributions2014_10_21", - "http":{ - "method":"GET", - "requestUri":"/2014-10-21/streaming-distribution" - }, - "input":{ - "shape":"ListStreamingDistributionsRequest", - "documentation":"The request to list your streaming distributions." - }, - "output":{ - "shape":"ListStreamingDistributionsResult", - "documentation":"The returned result of the corresponding request." - }, - "errors":[ - { - "shape":"InvalidArgument", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"The argument is invalid." - } - ], - "documentation":"List streaming distributions." - }, - "UpdateCloudFrontOriginAccessIdentity":{ - "name":"UpdateCloudFrontOriginAccessIdentity2014_10_21", - "http":{ - "method":"PUT", - "requestUri":"/2014-10-21/origin-access-identity/cloudfront/{Id}/config" - }, - "input":{ - "shape":"UpdateCloudFrontOriginAccessIdentityRequest", - "documentation":"The request to update an origin access identity." - }, - "output":{ - "shape":"UpdateCloudFrontOriginAccessIdentityResult", - "documentation":"The returned result of the corresponding request." - }, - "errors":[ - { - "shape":"AccessDenied", - "error":{"httpStatusCode":403}, - "exception":true, - "documentation":"Access denied." - }, - { - "shape":"IllegalUpdate", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"Origin and CallerReference cannot be updated." - }, - { - "shape":"InvalidIfMatchVersion", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"The If-Match version is missing or not valid for the distribution." - }, - { - "shape":"MissingBody", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"This operation requires a body. Ensure that the body is present and the Content-Type header is set." - }, - { - "shape":"NoSuchCloudFrontOriginAccessIdentity", - "error":{"httpStatusCode":404}, - "exception":true, - "documentation":"The specified origin access identity does not exist." - }, - { - "shape":"PreconditionFailed", - "error":{"httpStatusCode":412}, - "exception":true, - "documentation":"The precondition given in one or more of the request-header fields evaluated to false." - }, - { - "shape":"InvalidArgument", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"The argument is invalid." - }, - { - "shape":"InconsistentQuantities", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"The value of Quantity and the size of Items do not match." - } - ], - "documentation":"Update an origin access identity." - }, - "UpdateDistribution":{ - "name":"UpdateDistribution2014_10_21", - "http":{ - "method":"PUT", - "requestUri":"/2014-10-21/distribution/{Id}/config" - }, - "input":{ - "shape":"UpdateDistributionRequest", - "documentation":"The request to update a distribution." - }, - "output":{ - "shape":"UpdateDistributionResult", - "documentation":"The returned result of the corresponding request." - }, - "errors":[ - { - "shape":"AccessDenied", - "error":{"httpStatusCode":403}, - "exception":true, - "documentation":"Access denied." - }, - { - "shape":"CNAMEAlreadyExists", - "error":{"httpStatusCode":409}, - "exception":true - }, - { - "shape":"IllegalUpdate", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"Origin and CallerReference cannot be updated." - }, - { - "shape":"InvalidIfMatchVersion", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"The If-Match version is missing or not valid for the distribution." - }, - { - "shape":"MissingBody", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"This operation requires a body. Ensure that the body is present and the Content-Type header is set." - }, - { - "shape":"NoSuchDistribution", - "error":{"httpStatusCode":404}, - "exception":true, - "documentation":"The specified distribution does not exist." - }, - { - "shape":"PreconditionFailed", - "error":{"httpStatusCode":412}, - "exception":true, - "documentation":"The precondition given in one or more of the request-header fields evaluated to false." - }, - { - "shape":"TooManyDistributionCNAMEs", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"Your request contains more CNAMEs than are allowed per distribution." - }, - { - "shape":"InvalidDefaultRootObject", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"The default root object file name is too big or contains an invalid character." - }, - { - "shape":"InvalidRelativePath", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"The relative path is too big, is not URL-encoded, or does not begin with a slash (/)." - }, - { - "shape":"InvalidErrorCode", - "error":{"httpStatusCode":400}, - "exception":true - }, - { - "shape":"InvalidResponseCode", - "error":{"httpStatusCode":400}, - "exception":true - }, - { - "shape":"InvalidArgument", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"The argument is invalid." - }, - { - "shape":"InvalidOriginAccessIdentity", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"The origin access identity is not valid or doesn't exist." - }, - { - "shape":"TooManyTrustedSigners", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"Your request contains more trusted signers than are allowed per distribution." - }, - { - "shape":"TrustedSignerDoesNotExist", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"One or more of your trusted signers do not exist." - }, - { - "shape":"InvalidViewerCertificate", - "error":{"httpStatusCode":400}, - "exception":true - }, - { - "shape":"InvalidRequiredProtocol", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"This operation requires the HTTPS protocol. Ensure that you specify the HTTPS protocol in your request, or omit the RequiredProtocols element from your distribution configuration." - }, - { - "shape":"NoSuchOrigin", - "error":{"httpStatusCode":404}, - "exception":true, - "documentation":"No origin exists with the specified Origin Id." - }, - { - "shape":"TooManyOrigins", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"You cannot create anymore origins for the distribution." - }, - { - "shape":"TooManyCacheBehaviors", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"You cannot create anymore cache behaviors for the distribution." - }, - { - "shape":"TooManyCookieNamesInWhiteList", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"Your request contains more cookie names in the whitelist than are allowed per cache behavior." - }, - { - "shape":"InvalidForwardCookies", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"Your request contains forward cookies option which doesn't match with the expectation for the whitelisted list of cookie names. Either list of cookie names has been specified when not allowed or list of cookie names is missing when expected." - }, - { - "shape":"TooManyHeadersInForwardedValues", - "error":{"httpStatusCode":400}, - "exception":true - }, - { - "shape":"InvalidHeadersForS3Origin", - "error":{"httpStatusCode":400}, - "exception":true - }, - { - "shape":"InconsistentQuantities", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"The value of Quantity and the size of Items do not match." - }, - { - "shape":"TooManyCertificates", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"You cannot create anymore custom ssl certificates." - }, - { - "shape":"InvalidLocationCode", - "error":{"httpStatusCode":400}, - "exception":true - }, - { - "shape":"InvalidGeoRestrictionParameter", - "error":{"httpStatusCode":400}, - "exception":true - } - ], - "documentation":"Update a distribution." - }, - "UpdateStreamingDistribution":{ - "name":"UpdateStreamingDistribution2014_10_21", - "http":{ - "method":"PUT", - "requestUri":"/2014-10-21/streaming-distribution/{Id}/config" - }, - "input":{ - "shape":"UpdateStreamingDistributionRequest", - "documentation":"The request to update a streaming distribution." - }, - "output":{ - "shape":"UpdateStreamingDistributionResult", - "documentation":"The returned result of the corresponding request." - }, - "errors":[ - { - "shape":"AccessDenied", - "error":{"httpStatusCode":403}, - "exception":true, - "documentation":"Access denied." - }, - { - "shape":"CNAMEAlreadyExists", - "error":{"httpStatusCode":409}, - "exception":true - }, - { - "shape":"IllegalUpdate", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"Origin and CallerReference cannot be updated." - }, - { - "shape":"InvalidIfMatchVersion", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"The If-Match version is missing or not valid for the distribution." - }, - { - "shape":"MissingBody", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"This operation requires a body. Ensure that the body is present and the Content-Type header is set." - }, - { - "shape":"NoSuchStreamingDistribution", - "error":{"httpStatusCode":404}, - "exception":true, - "documentation":"The specified streaming distribution does not exist." - }, - { - "shape":"PreconditionFailed", - "error":{"httpStatusCode":412}, - "exception":true, - "documentation":"The precondition given in one or more of the request-header fields evaluated to false." - }, - { - "shape":"TooManyStreamingDistributionCNAMEs", - "error":{"httpStatusCode":400}, - "exception":true - }, - { - "shape":"InvalidArgument", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"The argument is invalid." - }, - { - "shape":"InvalidOriginAccessIdentity", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"The origin access identity is not valid or doesn't exist." - }, - { - "shape":"TooManyTrustedSigners", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"Your request contains more trusted signers than are allowed per distribution." - }, - { - "shape":"TrustedSignerDoesNotExist", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"One or more of your trusted signers do not exist." - }, - { - "shape":"InconsistentQuantities", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"The value of Quantity and the size of Items do not match." - } - ], - "documentation":"Update a streaming distribution." - } - }, - "shapes":{ - "AccessDenied":{ - "type":"structure", - "members":{ - "Message":{"shape":"string"} - }, - "error":{"httpStatusCode":403}, - "exception":true, - "documentation":"Access denied." - }, - "ActiveTrustedSigners":{ - "type":"structure", - "required":[ - "Enabled", - "Quantity" - ], - "members":{ - "Enabled":{ - "shape":"boolean", - "documentation":"Each active trusted signer." - }, - "Quantity":{ - "shape":"integer", - "documentation":"The number of unique trusted signers included in all cache behaviors. For example, if three cache behaviors all list the same three AWS accounts, the value of Quantity for ActiveTrustedSigners will be 3." - }, - "Items":{ - "shape":"SignerList", - "documentation":"A complex type that contains one Signer complex type for each unique trusted signer that is specified in the TrustedSigners complex type, including trusted signers in the default cache behavior and in all of the other cache behaviors." - } - }, - "documentation":"A complex type that lists the AWS accounts, if any, that you included in the TrustedSigners complex type for the default cache behavior or for any of the other cache behaviors for this distribution. These are accounts that you want to allow to create signed URLs for private content." - }, - "AliasList":{ - "type":"list", - "member":{ - "shape":"string", - "locationName":"CNAME" - } - }, - "Aliases":{ - "type":"structure", - "required":["Quantity"], - "members":{ - "Quantity":{ - "shape":"integer", - "documentation":"The number of CNAMEs, if any, for this distribution." - }, - "Items":{ - "shape":"AliasList", - "documentation":"Optional: A complex type that contains CNAME elements, if any, for this distribution. If Quantity is 0, you can omit Items." - } - }, - "documentation":"A complex type that contains information about CNAMEs (alternate domain names), if any, for this distribution." - }, - "AllowedMethods":{ - "type":"structure", - "required":[ - "Quantity", - "Items" - ], - "members":{ - "Quantity":{ - "shape":"integer", - "documentation":"The number of HTTP methods that you want CloudFront to forward to your origin. Valid values are 2 (for GET and HEAD requests), 3 (for GET, HEAD and OPTIONS requests) and 7 (for GET, HEAD, OPTIONS, PUT, PATCH, POST, and DELETE requests)." - }, - "Items":{ - "shape":"MethodsList", - "documentation":"A complex type that contains the HTTP methods that you want CloudFront to process and forward to your origin." - }, - "CachedMethods":{"shape":"CachedMethods"} - }, - "documentation":"A complex type that controls which HTTP methods CloudFront processes and forwards to your Amazon S3 bucket or your custom origin. There are three choices: - CloudFront forwards only GET and HEAD requests. - CloudFront forwards only GET, HEAD and OPTIONS requests. - CloudFront forwards GET, HEAD, OPTIONS, PUT, PATCH, POST, and DELETE requests. If you pick the third choice, you may need to restrict access to your Amazon S3 bucket or to your custom origin so users can't perform operations that you don't want them to. For example, you may not want users to have permission to delete objects from your origin." - }, - "AwsAccountNumberList":{ - "type":"list", - "member":{ - "shape":"string", - "locationName":"AwsAccountNumber" - } - }, - "BatchTooLarge":{ - "type":"structure", - "members":{ - "Message":{"shape":"string"} - }, - "error":{"httpStatusCode":413}, - "exception":true - }, - "CNAMEAlreadyExists":{ - "type":"structure", - "members":{ - "Message":{"shape":"string"} - }, - "error":{"httpStatusCode":409}, - "exception":true - }, - "CacheBehavior":{ - "type":"structure", - "required":[ - "PathPattern", - "TargetOriginId", - "ForwardedValues", - "TrustedSigners", - "ViewerProtocolPolicy", - "MinTTL" - ], - "members":{ - "PathPattern":{ - "shape":"string", - "documentation":"The pattern (for example, images/*.jpg) that specifies which requests you want this cache behavior to apply to. When CloudFront receives an end-user request, the requested path is compared with path patterns in the order in which cache behaviors are listed in the distribution. The path pattern for the default cache behavior is * and cannot be changed. If the request for an object does not match the path pattern for any cache behaviors, CloudFront applies the behavior in the default cache behavior." - }, - "TargetOriginId":{ - "shape":"string", - "documentation":"The value of ID for the origin that you want CloudFront to route requests to when a request matches the path pattern either for a cache behavior or for the default cache behavior." - }, - "ForwardedValues":{ - "shape":"ForwardedValues", - "documentation":"A complex type that specifies how CloudFront handles query strings, cookies and headers." - }, - "TrustedSigners":{ - "shape":"TrustedSigners", - "documentation":"A complex type that specifies the AWS accounts, if any, that you want to allow to create signed URLs for private content. If you want to require signed URLs in requests for objects in the target origin that match the PathPattern for this cache behavior, specify true for Enabled, and specify the applicable values for Quantity and Items. For more information, go to Using a Signed URL to Serve Private Content in the Amazon CloudFront Developer Guide. If you don't want to require signed URLs in requests for objects that match PathPattern, specify false for Enabled and 0 for Quantity. Omit Items. To add, change, or remove one or more trusted signers, change Enabled to true (if it's currently false), change Quantity as applicable, and specify all of the trusted signers that you want to include in the updated distribution." - }, - "ViewerProtocolPolicy":{ - "shape":"ViewerProtocolPolicy", - "documentation":"Use this element to specify the protocol that users can use to access the files in the origin specified by TargetOriginId when a request matches the path pattern in PathPattern. If you want CloudFront to allow end users to use any available protocol, specify allow-all. If you want CloudFront to require HTTPS, specify https. If you want CloudFront to respond to an HTTP request with an HTTP status code of 301 (Moved Permanently) and the HTTPS URL, specify redirect-to-https. The viewer then resubmits the request using the HTTPS URL." - }, - "MinTTL":{ - "shape":"long", - "documentation":"The minimum amount of time that you want objects to stay in CloudFront caches before CloudFront queries your origin to see whether the object has been updated.You can specify a value from 0 to 3,153,600,000 seconds (100 years)." - }, - "AllowedMethods":{"shape":"AllowedMethods"}, - "SmoothStreaming":{ - "shape":"boolean", - "documentation":"Indicates whether you want to distribute media files in Microsoft Smooth Streaming format using the origin that is associated with this cache behavior. If so, specify true; if not, specify false." - } - }, - "documentation":"A complex type that describes how CloudFront processes requests. You can create up to 10 cache behaviors.You must create at least as many cache behaviors (including the default cache behavior) as you have origins if you want CloudFront to distribute objects from all of the origins. Each cache behavior specifies the one origin from which you want CloudFront to get objects. If you have two origins and only the default cache behavior, the default cache behavior will cause CloudFront to get objects from one of the origins, but the other origin will never be used. If you don't want to specify any cache behaviors, include only an empty CacheBehaviors element. Don't include an empty CacheBehavior element, or CloudFront returns a MalformedXML error. To delete all cache behaviors in an existing distribution, update the distribution configuration and include only an empty CacheBehaviors element. To add, change, or remove one or more cache behaviors, update the distribution configuration and specify all of the cache behaviors that you want to include in the updated distribution." - }, - "CacheBehaviorList":{ - "type":"list", - "member":{ - "shape":"CacheBehavior", - "locationName":"CacheBehavior" - } - }, - "CacheBehaviors":{ - "type":"structure", - "required":["Quantity"], - "members":{ - "Quantity":{ - "shape":"integer", - "documentation":"The number of cache behaviors for this distribution." - }, - "Items":{ - "shape":"CacheBehaviorList", - "documentation":"Optional: A complex type that contains cache behaviors for this distribution. If Quantity is 0, you can omit Items." - } - }, - "documentation":"A complex type that contains zero or more CacheBehavior elements." - }, - "CachedMethods":{ - "type":"structure", - "required":[ - "Quantity", - "Items" - ], - "members":{ - "Quantity":{ - "shape":"integer", - "documentation":"The number of HTTP methods for which you want CloudFront to cache responses. Valid values are 2 (for caching responses to GET and HEAD requests) and 3 (for caching responses to GET, HEAD, and OPTIONS requests)." - }, - "Items":{ - "shape":"MethodsList", - "documentation":"A complex type that contains the HTTP methods that you want CloudFront to cache responses to." - } - }, - "documentation":"A complex type that controls whether CloudFront caches the response to requests using the specified HTTP methods. There are two choices: - CloudFront caches responses to GET and HEAD requests. - CloudFront caches responses to GET, HEAD, and OPTIONS requests. If you pick the second choice for your S3 Origin, you may need to forward Access-Control-Request-Method, Access-Control-Request-Headers and Origin headers for the responses to be cached correctly." - }, - "CloudFrontOriginAccessIdentity":{ - "type":"structure", - "required":[ - "Id", - "S3CanonicalUserId" - ], - "members":{ - "Id":{ - "shape":"string", - "documentation":"The ID for the origin access identity. For example: E74FTE3AJFJ256A." - }, - "S3CanonicalUserId":{ - "shape":"string", - "documentation":"The Amazon S3 canonical user ID for the origin access identity, which you use when giving the origin access identity read permission to an object in Amazon S3." - }, - "CloudFrontOriginAccessIdentityConfig":{ - "shape":"CloudFrontOriginAccessIdentityConfig", - "documentation":"The current configuration information for the identity." - } - }, - "documentation":"CloudFront origin access identity." - }, - "CloudFrontOriginAccessIdentityAlreadyExists":{ - "type":"structure", - "members":{ - "Message":{"shape":"string"} - }, - "error":{"httpStatusCode":409}, - "exception":true, - "documentation":"If the CallerReference is a value you already sent in a previous request to create an identity but the content of the CloudFrontOriginAccessIdentityConfig is different from the original request, CloudFront returns a CloudFrontOriginAccessIdentityAlreadyExists error." - }, - "CloudFrontOriginAccessIdentityConfig":{ - "type":"structure", - "required":[ - "CallerReference", - "Comment" - ], - "members":{ - "CallerReference":{ - "shape":"string", - "documentation":"A unique number that ensures the request can't be replayed. If the CallerReference is new (no matter the content of the CloudFrontOriginAccessIdentityConfig object), a new origin access identity is created. If the CallerReference is a value you already sent in a previous request to create an identity, and the content of the CloudFrontOriginAccessIdentityConfig is identical to the original request (ignoring white space), the response includes the same information returned to the original request. If the CallerReference is a value you already sent in a previous request to create an identity but the content of the CloudFrontOriginAccessIdentityConfig is different from the original request, CloudFront returns a CloudFrontOriginAccessIdentityAlreadyExists error." - }, - "Comment":{ - "shape":"string", - "documentation":"Any comments you want to include about the origin access identity." - } - }, - "documentation":"Origin access identity configuration." - }, - "CloudFrontOriginAccessIdentityInUse":{ - "type":"structure", - "members":{ - "Message":{"shape":"string"} - }, - "error":{"httpStatusCode":409}, - "exception":true - }, - "CloudFrontOriginAccessIdentityList":{ - "type":"structure", - "required":[ - "Marker", - "MaxItems", - "IsTruncated", - "Quantity" - ], - "members":{ - "Marker":{ - "shape":"string", - "documentation":"The value you provided for the Marker request parameter." - }, - "NextMarker":{ - "shape":"string", - "documentation":"If IsTruncated is true, this element is present and contains the value you can use for the Marker request parameter to continue listing your origin access identities where they left off." - }, - "MaxItems":{ - "shape":"integer", - "documentation":"The value you provided for the MaxItems request parameter." - }, - "IsTruncated":{ - "shape":"boolean", - "documentation":"A flag that indicates whether more origin access identities remain to be listed. If your results were truncated, you can make a follow-up pagination request using the Marker request parameter to retrieve more items in the list." - }, - "Quantity":{ - "shape":"integer", - "documentation":"The number of CloudFront origin access identities that were created by the current AWS account." - }, - "Items":{ - "shape":"CloudFrontOriginAccessIdentitySummaryList", - "documentation":"A complex type that contains one CloudFrontOriginAccessIdentitySummary element for each origin access identity that was created by the current AWS account." - } - }, - "documentation":"The CloudFrontOriginAccessIdentityList type." - }, - "CloudFrontOriginAccessIdentitySummary":{ - "type":"structure", - "required":[ - "Id", - "S3CanonicalUserId", - "Comment" - ], - "members":{ - "Id":{ - "shape":"string", - "documentation":"The ID for the origin access identity. For example: E74FTE3AJFJ256A." - }, - "S3CanonicalUserId":{ - "shape":"string", - "documentation":"The Amazon S3 canonical user ID for the origin access identity, which you use when giving the origin access identity read permission to an object in Amazon S3." - }, - "Comment":{ - "shape":"string", - "documentation":"The comment for this origin access identity, as originally specified when created." - } - }, - "documentation":"Summary of the information about a CloudFront origin access identity." - }, - "CloudFrontOriginAccessIdentitySummaryList":{ - "type":"list", - "member":{ - "shape":"CloudFrontOriginAccessIdentitySummary", - "locationName":"CloudFrontOriginAccessIdentitySummary" - } - }, - "CookieNameList":{ - "type":"list", - "member":{ - "shape":"string", - "locationName":"Name" - } - }, - "CookieNames":{ - "type":"structure", - "required":["Quantity"], - "members":{ - "Quantity":{ - "shape":"integer", - "documentation":"The number of whitelisted cookies for this cache behavior." - }, - "Items":{ - "shape":"CookieNameList", - "documentation":"Optional: A complex type that contains whitelisted cookies for this cache behavior. If Quantity is 0, you can omit Items." - } - }, - "documentation":"A complex type that specifies the whitelisted cookies, if any, that you want CloudFront to forward to your origin that is associated with this cache behavior." - }, - "CookiePreference":{ - "type":"structure", - "required":["Forward"], - "members":{ - "Forward":{ - "shape":"ItemSelection", - "documentation":"Use this element to specify whether you want CloudFront to forward cookies to the origin that is associated with this cache behavior. You can specify all, none or whitelist. If you choose All, CloudFront forwards all cookies regardless of how many your application uses." - }, - "WhitelistedNames":{ - "shape":"CookieNames", - "documentation":"A complex type that specifies the whitelisted cookies, if any, that you want CloudFront to forward to your origin that is associated with this cache behavior." - } - }, - "documentation":"A complex type that specifies the cookie preferences associated with this cache behavior." - }, - "CreateCloudFrontOriginAccessIdentityRequest":{ - "type":"structure", - "required":["CloudFrontOriginAccessIdentityConfig"], - "members":{ - "CloudFrontOriginAccessIdentityConfig":{ - "shape":"CloudFrontOriginAccessIdentityConfig", - "documentation":"The origin access identity's configuration information.", - "xmlNamespace":{"uri":"http://cloudfront.amazonaws.com/doc/2014-10-21/"}, - "locationName":"CloudFrontOriginAccessIdentityConfig" - } - }, - "documentation":"The request to create a new origin access identity.", - "payload":"CloudFrontOriginAccessIdentityConfig" - }, - "CreateCloudFrontOriginAccessIdentityResult":{ - "type":"structure", - "members":{ - "CloudFrontOriginAccessIdentity":{ - "shape":"CloudFrontOriginAccessIdentity", - "documentation":"The origin access identity's information." - }, - "Location":{ - "shape":"string", - "location":"header", - "locationName":"Location", - "documentation":"The fully qualified URI of the new origin access identity just created. For example: https://cloudfront.amazonaws.com/2010-11-01/origin-access-identity/cloudfront/E74FTE3AJFJ256A." - }, - "ETag":{ - "shape":"string", - "location":"header", - "locationName":"ETag", - "documentation":"The current version of the origin access identity created." - } - }, - "documentation":"The returned result of the corresponding request.", - "payload":"CloudFrontOriginAccessIdentity" - }, - "CreateDistributionRequest":{ - "type":"structure", - "required":["DistributionConfig"], - "members":{ - "DistributionConfig":{ - "shape":"DistributionConfig", - "documentation":"The distribution's configuration information.", - "xmlNamespace":{"uri":"http://cloudfront.amazonaws.com/doc/2014-10-21/"}, - "locationName":"DistributionConfig" - } - }, - "documentation":"The request to create a new distribution.", - "payload":"DistributionConfig" - }, - "CreateDistributionResult":{ - "type":"structure", - "members":{ - "Distribution":{ - "shape":"Distribution", - "documentation":"The distribution's information." - }, - "Location":{ - "shape":"string", - "location":"header", - "locationName":"Location", - "documentation":"The fully qualified URI of the new distribution resource just created. For example: https://cloudfront.amazonaws.com/2010-11-01/distribution/EDFDVBD632BHDS5." - }, - "ETag":{ - "shape":"string", - "location":"header", - "locationName":"ETag", - "documentation":"The current version of the distribution created." - } - }, - "documentation":"The returned result of the corresponding request.", - "payload":"Distribution" - }, - "CreateInvalidationRequest":{ - "type":"structure", - "required":[ - "DistributionId", - "InvalidationBatch" - ], - "members":{ - "DistributionId":{ - "shape":"string", - "location":"uri", - "locationName":"DistributionId", - "documentation":"The distribution's id." - }, - "InvalidationBatch":{ - "shape":"InvalidationBatch", - "documentation":"The batch information for the invalidation.", - "xmlNamespace":{"uri":"http://cloudfront.amazonaws.com/doc/2014-10-21/"}, - "locationName":"InvalidationBatch" - } - }, - "documentation":"The request to create an invalidation.", - "payload":"InvalidationBatch" - }, - "CreateInvalidationResult":{ - "type":"structure", - "members":{ - "Location":{ - "shape":"string", - "location":"header", - "locationName":"Location", - "documentation":"The fully qualified URI of the distribution and invalidation batch request, including the Invalidation ID." - }, - "Invalidation":{ - "shape":"Invalidation", - "documentation":"The invalidation's information." - } - }, - "documentation":"The returned result of the corresponding request.", - "payload":"Invalidation" - }, - "CreateStreamingDistributionRequest":{ - "type":"structure", - "required":["StreamingDistributionConfig"], - "members":{ - "StreamingDistributionConfig":{ - "shape":"StreamingDistributionConfig", - "documentation":"The streaming distribution's configuration information.", - "xmlNamespace":{"uri":"http://cloudfront.amazonaws.com/doc/2014-10-21/"}, - "locationName":"StreamingDistributionConfig" - } - }, - "documentation":"The request to create a new streaming distribution.", - "payload":"StreamingDistributionConfig" - }, - "CreateStreamingDistributionResult":{ - "type":"structure", - "members":{ - "StreamingDistribution":{ - "shape":"StreamingDistribution", - "documentation":"The streaming distribution's information." - }, - "Location":{ - "shape":"string", - "location":"header", - "locationName":"Location", - "documentation":"The fully qualified URI of the new streaming distribution resource just created. For example: https://cloudfront.amazonaws.com/2010-11-01/streaming-distribution/EGTXBD79H29TRA8." - }, - "ETag":{ - "shape":"string", - "location":"header", - "locationName":"ETag", - "documentation":"The current version of the streaming distribution created." - } - }, - "documentation":"The returned result of the corresponding request.", - "payload":"StreamingDistribution" - }, - "CustomErrorResponse":{ - "type":"structure", - "required":["ErrorCode"], - "members":{ - "ErrorCode":{ - "shape":"integer", - "documentation":"The 4xx or 5xx HTTP status code that you want to customize. For a list of HTTP status codes that you can customize, see CloudFront documentation." - }, - "ResponsePagePath":{ - "shape":"string", - "documentation":"The path of the custom error page (for example, /custom_404.html). The path is relative to the distribution and must begin with a slash (/). If the path includes any non-ASCII characters or unsafe characters as defined in RFC 1783 (http://www.ietf.org/rfc/rfc1738.txt), URL encode those characters. Do not URL encode any other characters in the path, or CloudFront will not return the custom error page to the viewer." - }, - "ResponseCode":{ - "shape":"string", - "documentation":"The HTTP status code that you want CloudFront to return with the custom error page to the viewer. For a list of HTTP status codes that you can replace, see CloudFront Documentation." - }, - "ErrorCachingMinTTL":{ - "shape":"long", - "documentation":"The minimum amount of time you want HTTP error codes to stay in CloudFront caches before CloudFront queries your origin to see whether the object has been updated. You can specify a value from 0 to 31,536,000." - } - }, - "documentation":"A complex type that describes how you'd prefer CloudFront to respond to requests that result in either a 4xx or 5xx response. You can control whether a custom error page should be displayed, what the desired response code should be for this error page and how long should the error response be cached by CloudFront. If you don't want to specify any custom error responses, include only an empty CustomErrorResponses element. To delete all custom error responses in an existing distribution, update the distribution configuration and include only an empty CustomErrorResponses element. To add, change, or remove one or more custom error responses, update the distribution configuration and specify all of the custom error responses that you want to include in the updated distribution." - }, - "CustomErrorResponseList":{ - "type":"list", - "member":{ - "shape":"CustomErrorResponse", - "locationName":"CustomErrorResponse" - } - }, - "CustomErrorResponses":{ - "type":"structure", - "required":["Quantity"], - "members":{ - "Quantity":{ - "shape":"integer", - "documentation":"The number of custom error responses for this distribution." - }, - "Items":{ - "shape":"CustomErrorResponseList", - "documentation":"Optional: A complex type that contains custom error responses for this distribution. If Quantity is 0, you can omit Items." - } - }, - "documentation":"A complex type that contains zero or more CustomErrorResponse elements." - }, - "CustomOriginConfig":{ - "type":"structure", - "required":[ - "HTTPPort", - "HTTPSPort", - "OriginProtocolPolicy" - ], - "members":{ - "HTTPPort":{ - "shape":"integer", - "documentation":"The HTTP port the custom origin listens on." - }, - "HTTPSPort":{ - "shape":"integer", - "documentation":"The HTTPS port the custom origin listens on." - }, - "OriginProtocolPolicy":{ - "shape":"OriginProtocolPolicy", - "documentation":"The origin protocol policy to apply to your origin." - } - }, - "documentation":"A customer origin." - }, - "DefaultCacheBehavior":{ - "type":"structure", - "required":[ - "TargetOriginId", - "ForwardedValues", - "TrustedSigners", - "ViewerProtocolPolicy", - "MinTTL" - ], - "members":{ - "TargetOriginId":{ - "shape":"string", - "documentation":"The value of ID for the origin that you want CloudFront to route requests to when a request matches the path pattern either for a cache behavior or for the default cache behavior." - }, - "ForwardedValues":{ - "shape":"ForwardedValues", - "documentation":"A complex type that specifies how CloudFront handles query strings, cookies and headers." - }, - "TrustedSigners":{ - "shape":"TrustedSigners", - "documentation":"A complex type that specifies the AWS accounts, if any, that you want to allow to create signed URLs for private content. If you want to require signed URLs in requests for objects in the target origin that match the PathPattern for this cache behavior, specify true for Enabled, and specify the applicable values for Quantity and Items. For more information, go to Using a Signed URL to Serve Private Content in the Amazon CloudFront Developer Guide. If you don't want to require signed URLs in requests for objects that match PathPattern, specify false for Enabled and 0 for Quantity. Omit Items. To add, change, or remove one or more trusted signers, change Enabled to true (if it's currently false), change Quantity as applicable, and specify all of the trusted signers that you want to include in the updated distribution." - }, - "ViewerProtocolPolicy":{ - "shape":"ViewerProtocolPolicy", - "documentation":"Use this element to specify the protocol that users can use to access the files in the origin specified by TargetOriginId when a request matches the path pattern in PathPattern. If you want CloudFront to allow end users to use any available protocol, specify allow-all. If you want CloudFront to require HTTPS, specify https. If you want CloudFront to respond to an HTTP request with an HTTP status code of 301 (Moved Permanently) and the HTTPS URL, specify redirect-to-https. The viewer then resubmits the request using the HTTPS URL." - }, - "MinTTL":{ - "shape":"long", - "documentation":"The minimum amount of time that you want objects to stay in CloudFront caches before CloudFront queries your origin to see whether the object has been updated.You can specify a value from 0 to 3,153,600,000 seconds (100 years)." - }, - "AllowedMethods":{"shape":"AllowedMethods"}, - "SmoothStreaming":{ - "shape":"boolean", - "documentation":"Indicates whether you want to distribute media files in Microsoft Smooth Streaming format using the origin that is associated with this cache behavior. If so, specify true; if not, specify false." - } - }, - "documentation":"A complex type that describes the default cache behavior if you do not specify a CacheBehavior element or if files don't match any of the values of PathPattern in CacheBehavior elements.You must create exactly one default cache behavior." - }, - "DeleteCloudFrontOriginAccessIdentityRequest":{ - "type":"structure", - "members":{ - "Id":{ - "shape":"string", - "location":"uri", - "locationName":"Id", - "documentation":"The origin access identity's id." - }, - "IfMatch":{ - "shape":"string", - "location":"header", - "locationName":"If-Match", - "documentation":"The value of the ETag header you received from a previous GET or PUT request. For example: E2QWRUHAPOMQZL." - } - }, - "documentation":"The request to delete a origin access identity.", - "required":["Id"] - }, - "DeleteDistributionRequest":{ - "type":"structure", - "members":{ - "Id":{ - "shape":"string", - "location":"uri", - "locationName":"Id", - "documentation":"The distribution id." - }, - "IfMatch":{ - "shape":"string", - "location":"header", - "locationName":"If-Match", - "documentation":"The value of the ETag header you received when you disabled the distribution. For example: E2QWRUHAPOMQZL." - } - }, - "documentation":"The request to delete a distribution.", - "required":["Id"] - }, - "DeleteStreamingDistributionRequest":{ - "type":"structure", - "members":{ - "Id":{ - "shape":"string", - "location":"uri", - "locationName":"Id", - "documentation":"The distribution id." - }, - "IfMatch":{ - "shape":"string", - "location":"header", - "locationName":"If-Match", - "documentation":"The value of the ETag header you received when you disabled the streaming distribution. For example: E2QWRUHAPOMQZL." - } - }, - "documentation":"The request to delete a streaming distribution.", - "required":["Id"] - }, - "Distribution":{ - "type":"structure", - "required":[ - "Id", - "Status", - "LastModifiedTime", - "InProgressInvalidationBatches", - "DomainName", - "ActiveTrustedSigners", - "DistributionConfig" - ], - "members":{ - "Id":{ - "shape":"string", - "documentation":"The identifier for the distribution. For example: EDFDVBD632BHDS5." - }, - "Status":{ - "shape":"string", - "documentation":"This response element indicates the current status of the distribution. When the status is Deployed, the distribution's information is fully propagated throughout the Amazon CloudFront system." - }, - "LastModifiedTime":{ - "shape":"timestamp", - "documentation":"The date and time the distribution was last modified." - }, - "InProgressInvalidationBatches":{ - "shape":"integer", - "documentation":"The number of invalidation batches currently in progress." - }, - "DomainName":{ - "shape":"string", - "documentation":"The domain name corresponding to the distribution. For example: d604721fxaaqy9.cloudfront.net." - }, - "ActiveTrustedSigners":{ - "shape":"ActiveTrustedSigners", - "documentation":"CloudFront automatically adds this element to the response only if you've set up the distribution to serve private content with signed URLs. The element lists the key pair IDs that CloudFront is aware of for each trusted signer. The Signer child element lists the AWS account number of the trusted signer (or an empty Self element if the signer is you). The Signer element also includes the IDs of any active key pairs associated with the trusted signer's AWS account. If no KeyPairId element appears for a Signer, that signer can't create working signed URLs." - }, - "DistributionConfig":{ - "shape":"DistributionConfig", - "documentation":"The current configuration information for the distribution." - } - }, - "documentation":"A distribution." - }, - "DistributionAlreadyExists":{ - "type":"structure", - "members":{ - "Message":{"shape":"string"} - }, - "error":{"httpStatusCode":409}, - "exception":true, - "documentation":"The caller reference you attempted to create the distribution with is associated with another distribution." - }, - "DistributionConfig":{ - "type":"structure", - "required":[ - "CallerReference", - "Aliases", - "DefaultRootObject", - "Origins", - "DefaultCacheBehavior", - "CacheBehaviors", - "Comment", - "Logging", - "PriceClass", - "Enabled" - ], - "members":{ - "CallerReference":{ - "shape":"string", - "documentation":"A unique number that ensures the request can't be replayed. If the CallerReference is new (no matter the content of the DistributionConfig object), a new distribution is created. If the CallerReference is a value you already sent in a previous request to create a distribution, and the content of the DistributionConfig is identical to the original request (ignoring white space), the response includes the same information returned to the original request. If the CallerReference is a value you already sent in a previous request to create a distribution but the content of the DistributionConfig is different from the original request, CloudFront returns a DistributionAlreadyExists error." - }, - "Aliases":{ - "shape":"Aliases", - "documentation":"A complex type that contains information about CNAMEs (alternate domain names), if any, for this distribution." - }, - "DefaultRootObject":{ - "shape":"string", - "documentation":"The object that you want CloudFront to return (for example, index.html) when an end user requests the root URL for your distribution (http://www.example.com) instead of an object in your distribution (http://www.example.com/index.html). Specifying a default root object avoids exposing the contents of your distribution. If you don't want to specify a default root object when you create a distribution, include an empty DefaultRootObject element. To delete the default root object from an existing distribution, update the distribution configuration and include an empty DefaultRootObject element. To replace the default root object, update the distribution configuration and specify the new object." - }, - "Origins":{ - "shape":"Origins", - "documentation":"A complex type that contains information about origins for this distribution." - }, - "DefaultCacheBehavior":{ - "shape":"DefaultCacheBehavior", - "documentation":"A complex type that describes the default cache behavior if you do not specify a CacheBehavior element or if files don't match any of the values of PathPattern in CacheBehavior elements.You must create exactly one default cache behavior." - }, - "CacheBehaviors":{ - "shape":"CacheBehaviors", - "documentation":"A complex type that contains zero or more CacheBehavior elements." - }, - "CustomErrorResponses":{ - "shape":"CustomErrorResponses", - "documentation":"A complex type that contains zero or more CustomErrorResponse elements." - }, - "Comment":{ - "shape":"string", - "documentation":"Any comments you want to include about the distribution." - }, - "Logging":{ - "shape":"LoggingConfig", - "documentation":"A complex type that controls whether access logs are written for the distribution." - }, - "PriceClass":{ - "shape":"PriceClass", - "documentation":"A complex type that contains information about price class for this distribution." - }, - "Enabled":{ - "shape":"boolean", - "documentation":"Whether the distribution is enabled to accept end user requests for content." - }, - "ViewerCertificate":{"shape":"ViewerCertificate"}, - "Restrictions":{"shape":"Restrictions"} - }, - "documentation":"A distribution Configuration." - }, - "DistributionList":{ - "type":"structure", - "required":[ - "Marker", - "MaxItems", - "IsTruncated", - "Quantity" - ], - "members":{ - "Marker":{ - "shape":"string", - "documentation":"The value you provided for the Marker request parameter." - }, - "NextMarker":{ - "shape":"string", - "documentation":"If IsTruncated is true, this element is present and contains the value you can use for the Marker request parameter to continue listing your distributions where they left off." - }, - "MaxItems":{ - "shape":"integer", - "documentation":"The value you provided for the MaxItems request parameter." - }, - "IsTruncated":{ - "shape":"boolean", - "documentation":"A flag that indicates whether more distributions remain to be listed. If your results were truncated, you can make a follow-up pagination request using the Marker request parameter to retrieve more distributions in the list." - }, - "Quantity":{ - "shape":"integer", - "documentation":"The number of distributions that were created by the current AWS account." - }, - "Items":{ - "shape":"DistributionSummaryList", - "documentation":"A complex type that contains one DistributionSummary element for each distribution that was created by the current AWS account." - } - }, - "documentation":"A distribution list." - }, - "DistributionNotDisabled":{ - "type":"structure", - "members":{ - "Message":{"shape":"string"} - }, - "error":{"httpStatusCode":409}, - "exception":true - }, - "DistributionSummary":{ - "type":"structure", - "required":[ - "Id", - "Status", - "LastModifiedTime", - "DomainName", - "Aliases", - "Origins", - "DefaultCacheBehavior", - "CacheBehaviors", - "CustomErrorResponses", - "Comment", - "PriceClass", - "Enabled", - "ViewerCertificate", - "Restrictions" - ], - "members":{ - "Id":{ - "shape":"string", - "documentation":"The identifier for the distribution. For example: EDFDVBD632BHDS5." - }, - "Status":{ - "shape":"string", - "documentation":"This response element indicates the current status of the distribution. When the status is Deployed, the distribution's information is fully propagated throughout the Amazon CloudFront system." - }, - "LastModifiedTime":{ - "shape":"timestamp", - "documentation":"The date and time the distribution was last modified." - }, - "DomainName":{ - "shape":"string", - "documentation":"The domain name corresponding to the distribution. For example: d604721fxaaqy9.cloudfront.net." - }, - "Aliases":{ - "shape":"Aliases", - "documentation":"A complex type that contains information about CNAMEs (alternate domain names), if any, for this distribution." - }, - "Origins":{ - "shape":"Origins", - "documentation":"A complex type that contains information about origins for this distribution." - }, - "DefaultCacheBehavior":{ - "shape":"DefaultCacheBehavior", - "documentation":"A complex type that describes the default cache behavior if you do not specify a CacheBehavior element or if files don't match any of the values of PathPattern in CacheBehavior elements.You must create exactly one default cache behavior." - }, - "CacheBehaviors":{ - "shape":"CacheBehaviors", - "documentation":"A complex type that contains zero or more CacheBehavior elements." - }, - "CustomErrorResponses":{ - "shape":"CustomErrorResponses", - "documentation":"A complex type that contains zero or more CustomErrorResponses elements." - }, - "Comment":{ - "shape":"string", - "documentation":"The comment originally specified when this distribution was created." - }, - "PriceClass":{"shape":"PriceClass"}, - "Enabled":{ - "shape":"boolean", - "documentation":"Whether the distribution is enabled to accept end user requests for content." - }, - "ViewerCertificate":{"shape":"ViewerCertificate"}, - "Restrictions":{"shape":"Restrictions"} - }, - "documentation":"A summary of the information for an Amazon CloudFront distribution." - }, - "DistributionSummaryList":{ - "type":"list", - "member":{ - "shape":"DistributionSummary", - "locationName":"DistributionSummary" - } - }, - "ForwardedValues":{ - "type":"structure", - "required":[ - "QueryString", - "Cookies" - ], - "members":{ - "QueryString":{ - "shape":"boolean", - "documentation":"Indicates whether you want CloudFront to forward query strings to the origin that is associated with this cache behavior. If so, specify true; if not, specify false." - }, - "Cookies":{ - "shape":"CookiePreference", - "documentation":"A complex type that specifies how CloudFront handles cookies." - }, - "Headers":{ - "shape":"Headers", - "documentation":"A complex type that specifies the Headers, if any, that you want CloudFront to vary upon for this cache behavior." - } - }, - "documentation":"A complex type that specifies how CloudFront handles query strings, cookies and headers." - }, - "GeoRestriction":{ - "type":"structure", - "required":[ - "RestrictionType", - "Quantity" - ], - "members":{ - "RestrictionType":{ - "shape":"GeoRestrictionType", - "documentation":"The method that you want to use to restrict distribution of your content by country: - none: No geo restriction is enabled, meaning access to content is not restricted by client geo location. - blacklist: The Location elements specify the countries in which you do not want CloudFront to distribute your content. - whitelist: The Location elements specify the countries in which you want CloudFront to distribute your content." - }, - "Quantity":{ - "shape":"integer", - "documentation":"When geo restriction is enabled, this is the number of countries in your whitelist or blacklist. Otherwise, when it is not enabled, Quantity is 0, and you can omit Items." - }, - "Items":{ - "shape":"LocationList", - "documentation":"A complex type that contains a Location element for each country in which you want CloudFront either to distribute your content (whitelist) or not distribute your content (blacklist). The Location element is a two-letter, uppercase country code for a country that you want to include in your blacklist or whitelist. Include one Location element for each country. CloudFront and MaxMind both use ISO 3166 country codes. For the current list of countries and the corresponding codes, see ISO 3166-1-alpha-2 code on the International Organization for Standardization website. You can also refer to the country list in the CloudFront console, which includes both country names and codes." - } - }, - "documentation":"A complex type that controls the countries in which your content is distributed. For more information about geo restriction, go to Customizing Error Responses in the Amazon CloudFront Developer Guide. CloudFront determines the location of your users using MaxMind GeoIP databases. For information about the accuracy of these databases, see How accurate are your GeoIP databases? on the MaxMind website." - }, - "GeoRestrictionType":{ - "type":"string", - "enum":[ - "blacklist", - "whitelist", - "none" - ] - }, - "GetCloudFrontOriginAccessIdentityConfigRequest":{ - "type":"structure", - "members":{ - "Id":{ - "shape":"string", - "location":"uri", - "locationName":"Id", - "documentation":"The identity's id." - } - }, - "documentation":"The request to get an origin access identity's configuration.", - "required":["Id"] - }, - "GetCloudFrontOriginAccessIdentityConfigResult":{ - "type":"structure", - "members":{ - "CloudFrontOriginAccessIdentityConfig":{ - "shape":"CloudFrontOriginAccessIdentityConfig", - "documentation":"The origin access identity's configuration information." - }, - "ETag":{ - "shape":"string", - "location":"header", - "locationName":"ETag", - "documentation":"The current version of the configuration. For example: E2QWRUHAPOMQZL." - } - }, - "documentation":"The returned result of the corresponding request.", - "payload":"CloudFrontOriginAccessIdentityConfig" - }, - "GetCloudFrontOriginAccessIdentityRequest":{ - "type":"structure", - "members":{ - "Id":{ - "shape":"string", - "location":"uri", - "locationName":"Id", - "documentation":"The identity's id." - } - }, - "documentation":"The request to get an origin access identity's information.", - "required":["Id"] - }, - "GetCloudFrontOriginAccessIdentityResult":{ - "type":"structure", - "members":{ - "CloudFrontOriginAccessIdentity":{ - "shape":"CloudFrontOriginAccessIdentity", - "documentation":"The origin access identity's information." - }, - "ETag":{ - "shape":"string", - "location":"header", - "locationName":"ETag", - "documentation":"The current version of the origin access identity's information. For example: E2QWRUHAPOMQZL." - } - }, - "documentation":"The returned result of the corresponding request.", - "payload":"CloudFrontOriginAccessIdentity" - }, - "GetDistributionConfigRequest":{ - "type":"structure", - "members":{ - "Id":{ - "shape":"string", - "location":"uri", - "locationName":"Id", - "documentation":"The distribution's id." - } - }, - "documentation":"The request to get a distribution configuration.", - "required":["Id"] - }, - "GetDistributionConfigResult":{ - "type":"structure", - "members":{ - "DistributionConfig":{ - "shape":"DistributionConfig", - "documentation":"The distribution's configuration information." - }, - "ETag":{ - "shape":"string", - "location":"header", - "locationName":"ETag", - "documentation":"The current version of the configuration. For example: E2QWRUHAPOMQZL." - } - }, - "documentation":"The returned result of the corresponding request.", - "payload":"DistributionConfig" - }, - "GetDistributionRequest":{ - "type":"structure", - "members":{ - "Id":{ - "shape":"string", - "location":"uri", - "locationName":"Id", - "documentation":"The distribution's id." - } - }, - "documentation":"The request to get a distribution's information.", - "required":["Id"] - }, - "GetDistributionResult":{ - "type":"structure", - "members":{ - "Distribution":{ - "shape":"Distribution", - "documentation":"The distribution's information." - }, - "ETag":{ - "shape":"string", - "location":"header", - "locationName":"ETag", - "documentation":"The current version of the distribution's information. For example: E2QWRUHAPOMQZL." - } - }, - "documentation":"The returned result of the corresponding request.", - "payload":"Distribution" - }, - "GetInvalidationRequest":{ - "type":"structure", - "required":[ - "DistributionId", - "Id" - ], - "members":{ - "DistributionId":{ - "shape":"string", - "location":"uri", - "locationName":"DistributionId", - "documentation":"The distribution's id." - }, - "Id":{ - "shape":"string", - "location":"uri", - "locationName":"Id", - "documentation":"The invalidation's id." - } - }, - "documentation":"The request to get an invalidation's information." - }, - "GetInvalidationResult":{ - "type":"structure", - "members":{ - "Invalidation":{ - "shape":"Invalidation", - "documentation":"The invalidation's information." - } - }, - "documentation":"The returned result of the corresponding request.", - "payload":"Invalidation" - }, - "GetStreamingDistributionConfigRequest":{ - "type":"structure", - "members":{ - "Id":{ - "shape":"string", - "location":"uri", - "locationName":"Id", - "documentation":"The streaming distribution's id." - } - }, - "documentation":"To request to get a streaming distribution configuration.", - "required":["Id"] - }, - "GetStreamingDistributionConfigResult":{ - "type":"structure", - "members":{ - "StreamingDistributionConfig":{ - "shape":"StreamingDistributionConfig", - "documentation":"The streaming distribution's configuration information." - }, - "ETag":{ - "shape":"string", - "location":"header", - "locationName":"ETag", - "documentation":"The current version of the configuration. For example: E2QWRUHAPOMQZL." - } - }, - "documentation":"The returned result of the corresponding request.", - "payload":"StreamingDistributionConfig" - }, - "GetStreamingDistributionRequest":{ - "type":"structure", - "members":{ - "Id":{ - "shape":"string", - "location":"uri", - "locationName":"Id", - "documentation":"The streaming distribution's id." - } - }, - "documentation":"The request to get a streaming distribution's information.", - "required":["Id"] - }, - "GetStreamingDistributionResult":{ - "type":"structure", - "members":{ - "StreamingDistribution":{ - "shape":"StreamingDistribution", - "documentation":"The streaming distribution's information." - }, - "ETag":{ - "shape":"string", - "location":"header", - "locationName":"ETag", - "documentation":"The current version of the streaming distribution's information. For example: E2QWRUHAPOMQZL." - } - }, - "documentation":"The returned result of the corresponding request.", - "payload":"StreamingDistribution" - }, - "HeaderList":{ - "type":"list", - "member":{ - "shape":"string", - "locationName":"Name" - } - }, - "Headers":{ - "type":"structure", - "required":["Quantity"], - "members":{ - "Quantity":{ - "shape":"integer", - "documentation":"The number of different headers that you want CloudFront to forward to the origin and to vary on for this cache behavior. The maximum number of headers that you can specify by name is 10. If you want CloudFront to forward all headers to the origin and vary on all of them, specify 1 for Quantity and * for Name. If you don't want CloudFront to forward any additional headers to the origin or to vary on any headers, specify 0 for Quantity and omit Items." - }, - "Items":{ - "shape":"HeaderList", - "documentation":"Optional: A complex type that contains a Name element for each header that you want CloudFront to forward to the origin and to vary on for this cache behavior. If Quantity is 0, omit Items." - } - }, - "documentation":"A complex type that specifies the headers that you want CloudFront to forward to the origin for this cache behavior. For the headers that you specify, CloudFront also caches separate versions of a given object based on the header values in viewer requests; this is known as varying on headers. For example, suppose viewer requests for logo.jpg contain a custom Product header that has a value of either Acme or Apex, and you configure CloudFront to vary on the Product header. CloudFront forwards the Product header to the origin and caches the response from the origin once for each header value." - }, - "IllegalUpdate":{ - "type":"structure", - "members":{ - "Message":{"shape":"string"} - }, - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"Origin and CallerReference cannot be updated." - }, - "InconsistentQuantities":{ - "type":"structure", - "members":{ - "Message":{"shape":"string"} - }, - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"The value of Quantity and the size of Items do not match." - }, - "InvalidArgument":{ - "type":"structure", - "members":{ - "Message":{"shape":"string"} - }, - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"The argument is invalid." - }, - "InvalidDefaultRootObject":{ - "type":"structure", - "members":{ - "Message":{"shape":"string"} - }, - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"The default root object file name is too big or contains an invalid character." - }, - "InvalidErrorCode":{ - "type":"structure", - "members":{ - "Message":{"shape":"string"} - }, - "error":{"httpStatusCode":400}, - "exception":true - }, - "InvalidForwardCookies":{ - "type":"structure", - "members":{ - "Message":{"shape":"string"} - }, - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"Your request contains forward cookies option which doesn't match with the expectation for the whitelisted list of cookie names. Either list of cookie names has been specified when not allowed or list of cookie names is missing when expected." - }, - "InvalidGeoRestrictionParameter":{ - "type":"structure", - "members":{ - "Message":{"shape":"string"} - }, - "error":{"httpStatusCode":400}, - "exception":true - }, - "InvalidHeadersForS3Origin":{ - "type":"structure", - "members":{ - "Message":{"shape":"string"} - }, - "error":{"httpStatusCode":400}, - "exception":true - }, - "InvalidIfMatchVersion":{ - "type":"structure", - "members":{ - "Message":{"shape":"string"} - }, - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"The If-Match version is missing or not valid for the distribution." - }, - "InvalidLocationCode":{ - "type":"structure", - "members":{ - "Message":{"shape":"string"} - }, - "error":{"httpStatusCode":400}, - "exception":true - }, - "InvalidOrigin":{ - "type":"structure", - "members":{ - "Message":{"shape":"string"} - }, - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"The Amazon S3 origin server specified does not refer to a valid Amazon S3 bucket." - }, - "InvalidOriginAccessIdentity":{ - "type":"structure", - "members":{ - "Message":{"shape":"string"} - }, - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"The origin access identity is not valid or doesn't exist." - }, - "InvalidProtocolSettings":{ - "type":"structure", - "members":{ - "Message":{"shape":"string"} - }, - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"You cannot specify SSLv3 as the minimum protocol version if you only want to support only clients that Support Server Name Indication (SNI)." - }, - "InvalidRelativePath":{ - "type":"structure", - "members":{ - "Message":{"shape":"string"} - }, - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"The relative path is too big, is not URL-encoded, or does not begin with a slash (/)." - }, - "InvalidRequiredProtocol":{ - "type":"structure", - "members":{ - "Message":{"shape":"string"} - }, - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"This operation requires the HTTPS protocol. Ensure that you specify the HTTPS protocol in your request, or omit the RequiredProtocols element from your distribution configuration." - }, - "InvalidResponseCode":{ - "type":"structure", - "members":{ - "Message":{"shape":"string"} - }, - "error":{"httpStatusCode":400}, - "exception":true - }, - "InvalidViewerCertificate":{ - "type":"structure", - "members":{ - "Message":{"shape":"string"} - }, - "error":{"httpStatusCode":400}, - "exception":true - }, - "Invalidation":{ - "type":"structure", - "required":[ - "Id", - "Status", - "CreateTime", - "InvalidationBatch" - ], - "members":{ - "Id":{ - "shape":"string", - "documentation":"The identifier for the invalidation request. For example: IDFDVBD632BHDS5." - }, - "Status":{ - "shape":"string", - "documentation":"The status of the invalidation request. When the invalidation batch is finished, the status is Completed." - }, - "CreateTime":{ - "shape":"timestamp", - "documentation":"The date and time the invalidation request was first made." - }, - "InvalidationBatch":{ - "shape":"InvalidationBatch", - "documentation":"The current invalidation information for the batch request." - } - }, - "documentation":"An invalidation." - }, - "InvalidationBatch":{ - "type":"structure", - "required":[ - "Paths", - "CallerReference" - ], - "members":{ - "Paths":{ - "shape":"Paths", - "documentation":"The path of the object to invalidate. The path is relative to the distribution and must begin with a slash (/). You must enclose each invalidation object with the Path element tags. If the path includes non-ASCII characters or unsafe characters as defined in RFC 1783 (http://www.ietf.org/rfc/rfc1738.txt), URL encode those characters. Do not URL encode any other characters in the path, or CloudFront will not invalidate the old version of the updated object." - }, - "CallerReference":{ - "shape":"string", - "documentation":"A unique name that ensures the request can't be replayed. If the CallerReference is new (no matter the content of the Path object), a new distribution is created. If the CallerReference is a value you already sent in a previous request to create an invalidation batch, and the content of each Path element is identical to the original request, the response includes the same information returned to the original request. If the CallerReference is a value you already sent in a previous request to create a distribution but the content of any Path is different from the original request, CloudFront returns an InvalidationBatchAlreadyExists error." - } - }, - "documentation":"An invalidation batch." - }, - "InvalidationList":{ - "type":"structure", - "required":[ - "Marker", - "MaxItems", - "IsTruncated", - "Quantity" - ], - "members":{ - "Marker":{ - "shape":"string", - "documentation":"The value you provided for the Marker request parameter." - }, - "NextMarker":{ - "shape":"string", - "documentation":"If IsTruncated is true, this element is present and contains the value you can use for the Marker request parameter to continue listing your invalidation batches where they left off." - }, - "MaxItems":{ - "shape":"integer", - "documentation":"The value you provided for the MaxItems request parameter." - }, - "IsTruncated":{ - "shape":"boolean", - "documentation":"A flag that indicates whether more invalidation batch requests remain to be listed. If your results were truncated, you can make a follow-up pagination request using the Marker request parameter to retrieve more invalidation batches in the list." - }, - "Quantity":{ - "shape":"integer", - "documentation":"The number of invalidation batches that were created by the current AWS account." - }, - "Items":{ - "shape":"InvalidationSummaryList", - "documentation":"A complex type that contains one InvalidationSummary element for each invalidation batch that was created by the current AWS account." - } - }, - "documentation":"An invalidation list." - }, - "InvalidationSummary":{ - "type":"structure", - "required":[ - "Id", - "CreateTime", - "Status" - ], - "members":{ - "Id":{ - "shape":"string", - "documentation":"The unique ID for an invalidation request." - }, - "CreateTime":{"shape":"timestamp"}, - "Status":{ - "shape":"string", - "documentation":"The status of an invalidation request." - } - }, - "documentation":"Summary of an invalidation request." - }, - "InvalidationSummaryList":{ - "type":"list", - "member":{ - "shape":"InvalidationSummary", - "locationName":"InvalidationSummary" - } - }, - "ItemSelection":{ - "type":"string", - "enum":[ - "none", - "whitelist", - "all" - ] - }, - "KeyPairIdList":{ - "type":"list", - "member":{ - "shape":"string", - "locationName":"KeyPairId" - } - }, - "KeyPairIds":{ - "type":"structure", - "required":["Quantity"], - "members":{ - "Quantity":{ - "shape":"integer", - "documentation":"The number of active CloudFront key pairs for AwsAccountNumber." - }, - "Items":{ - "shape":"KeyPairIdList", - "documentation":"A complex type that lists the active CloudFront key pairs, if any, that are associated with AwsAccountNumber." - } - }, - "documentation":"A complex type that lists the active CloudFront key pairs, if any, that are associated with AwsAccountNumber." - }, - "ListCloudFrontOriginAccessIdentitiesRequest":{ - "type":"structure", - "members":{ - "Marker":{ - "shape":"string", - "location":"querystring", - "locationName":"Marker", - "documentation":"Use this when paginating results to indicate where to begin in your list of origin access identities. The results include identities in the list that occur after the marker. To get the next page of results, set the Marker to the value of the NextMarker from the current page's response (which is also the ID of the last identity on that page)." - }, - "MaxItems":{ - "shape":"string", - "location":"querystring", - "locationName":"MaxItems", - "documentation":"The maximum number of origin access identities you want in the response body." - } - }, - "documentation":"The request to list origin access identities." - }, - "ListCloudFrontOriginAccessIdentitiesResult":{ - "type":"structure", - "members":{ - "CloudFrontOriginAccessIdentityList":{ - "shape":"CloudFrontOriginAccessIdentityList", - "documentation":"The CloudFrontOriginAccessIdentityList type." - } - }, - "documentation":"The returned result of the corresponding request.", - "payload":"CloudFrontOriginAccessIdentityList" - }, - "ListDistributionsRequest":{ - "type":"structure", - "members":{ - "Marker":{ - "shape":"string", - "location":"querystring", - "locationName":"Marker", - "documentation":"Use this when paginating results to indicate where to begin in your list of distributions. The results include distributions in the list that occur after the marker. To get the next page of results, set the Marker to the value of the NextMarker from the current page's response (which is also the ID of the last distribution on that page)." - }, - "MaxItems":{ - "shape":"string", - "location":"querystring", - "locationName":"MaxItems", - "documentation":"The maximum number of distributions you want in the response body." - } - }, - "documentation":"The request to list your distributions." - }, - "ListDistributionsResult":{ - "type":"structure", - "members":{ - "DistributionList":{ - "shape":"DistributionList", - "documentation":"The DistributionList type." - } - }, - "documentation":"The returned result of the corresponding request.", - "payload":"DistributionList" - }, - "ListInvalidationsRequest":{ - "type":"structure", - "required":["DistributionId"], - "members":{ - "DistributionId":{ - "shape":"string", - "location":"uri", - "locationName":"DistributionId", - "documentation":"The distribution's id." - }, - "Marker":{ - "shape":"string", - "location":"querystring", - "locationName":"Marker", - "documentation":"Use this parameter when paginating results to indicate where to begin in your list of invalidation batches. Because the results are returned in decreasing order from most recent to oldest, the most recent results are on the first page, the second page will contain earlier results, and so on. To get the next page of results, set the Marker to the value of the NextMarker from the current page's response. This value is the same as the ID of the last invalidation batch on that page." - }, - "MaxItems":{ - "shape":"string", - "location":"querystring", - "locationName":"MaxItems", - "documentation":"The maximum number of invalidation batches you want in the response body." - } - }, - "documentation":"The request to list invalidations." - }, - "ListInvalidationsResult":{ - "type":"structure", - "members":{ - "InvalidationList":{ - "shape":"InvalidationList", - "documentation":"Information about invalidation batches." - } - }, - "documentation":"The returned result of the corresponding request.", - "payload":"InvalidationList" - }, - "ListStreamingDistributionsRequest":{ - "type":"structure", - "members":{ - "Marker":{ - "shape":"string", - "location":"querystring", - "locationName":"Marker", - "documentation":"Use this when paginating results to indicate where to begin in your list of streaming distributions. The results include distributions in the list that occur after the marker. To get the next page of results, set the Marker to the value of the NextMarker from the current page's response (which is also the ID of the last distribution on that page)." - }, - "MaxItems":{ - "shape":"string", - "location":"querystring", - "locationName":"MaxItems", - "documentation":"The maximum number of streaming distributions you want in the response body." - } - }, - "documentation":"The request to list your streaming distributions." - }, - "ListStreamingDistributionsResult":{ - "type":"structure", - "members":{ - "StreamingDistributionList":{ - "shape":"StreamingDistributionList", - "documentation":"The StreamingDistributionList type." - } - }, - "documentation":"The returned result of the corresponding request.", - "payload":"StreamingDistributionList" - }, - "LocationList":{ - "type":"list", - "member":{ - "shape":"string", - "locationName":"Location" - } - }, - "LoggingConfig":{ - "type":"structure", - "required":[ - "Enabled", - "IncludeCookies", - "Bucket", - "Prefix" - ], - "members":{ - "Enabled":{ - "shape":"boolean", - "documentation":"Specifies whether you want CloudFront to save access logs to an Amazon S3 bucket. If you do not want to enable logging when you create a distribution or if you want to disable logging for an existing distribution, specify false for Enabled, and specify empty Bucket and Prefix elements. If you specify false for Enabled but you specify values for Bucket, prefix and IncludeCookies, the values are automatically deleted." - }, - "IncludeCookies":{ - "shape":"boolean", - "documentation":"Specifies whether you want CloudFront to include cookies in access logs, specify true for IncludeCookies. If you choose to include cookies in logs, CloudFront logs all cookies regardless of how you configure the cache behaviors for this distribution. If you do not want to include cookies when you create a distribution or if you want to disable include cookies for an existing distribution, specify false for IncludeCookies." - }, - "Bucket":{ - "shape":"string", - "documentation":"The Amazon S3 bucket to store the access logs in, for example, myawslogbucket.s3.amazonaws.com." - }, - "Prefix":{ - "shape":"string", - "documentation":"An optional string that you want CloudFront to prefix to the access log filenames for this distribution, for example, myprefix/. If you want to enable logging, but you do not want to specify a prefix, you still must include an empty Prefix element in the Logging element." - } - }, - "documentation":"A complex type that controls whether access logs are written for the distribution." - }, - "Method":{ - "type":"string", - "enum":[ - "GET", - "HEAD", - "POST", - "PUT", - "PATCH", - "OPTIONS", - "DELETE" - ] - }, - "MethodsList":{ - "type":"list", - "member":{ - "shape":"Method", - "locationName":"Method" - } - }, - "MinimumProtocolVersion":{ - "type":"string", - "enum":[ - "SSLv3", - "TLSv1" - ] - }, - "MissingBody":{ - "type":"structure", - "members":{ - "Message":{"shape":"string"} - }, - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"This operation requires a body. Ensure that the body is present and the Content-Type header is set." - }, - "NoSuchCloudFrontOriginAccessIdentity":{ - "type":"structure", - "members":{ - "Message":{"shape":"string"} - }, - "error":{"httpStatusCode":404}, - "exception":true, - "documentation":"The specified origin access identity does not exist." - }, - "NoSuchDistribution":{ - "type":"structure", - "members":{ - "Message":{"shape":"string"} - }, - "error":{"httpStatusCode":404}, - "exception":true, - "documentation":"The specified distribution does not exist." - }, - "NoSuchInvalidation":{ - "type":"structure", - "members":{ - "Message":{"shape":"string"} - }, - "error":{"httpStatusCode":404}, - "exception":true, - "documentation":"The specified invalidation does not exist." - }, - "NoSuchOrigin":{ - "type":"structure", - "members":{ - "Message":{"shape":"string"} - }, - "error":{"httpStatusCode":404}, - "exception":true, - "documentation":"No origin exists with the specified Origin Id." - }, - "NoSuchStreamingDistribution":{ - "type":"structure", - "members":{ - "Message":{"shape":"string"} - }, - "error":{"httpStatusCode":404}, - "exception":true, - "documentation":"The specified streaming distribution does not exist." - }, - "Origin":{ - "type":"structure", - "required":[ - "Id", - "DomainName" - ], - "members":{ - "Id":{ - "shape":"string", - "documentation":"A unique identifier for the origin. The value of Id must be unique within the distribution. You use the value of Id when you create a cache behavior. The Id identifies the origin that CloudFront routes a request to when the request matches the path pattern for that cache behavior." - }, - "DomainName":{ - "shape":"string", - "documentation":"Amazon S3 origins: The DNS name of the Amazon S3 bucket from which you want CloudFront to get objects for this origin, for example, myawsbucket.s3.amazonaws.com. Custom origins: The DNS domain name for the HTTP server from which you want CloudFront to get objects for this origin, for example, www.example.com." - }, - "S3OriginConfig":{ - "shape":"S3OriginConfig", - "documentation":"A complex type that contains information about the Amazon S3 origin. If the origin is a custom origin, use the CustomOriginConfig element instead." - }, - "CustomOriginConfig":{ - "shape":"CustomOriginConfig", - "documentation":"A complex type that contains information about a custom origin. If the origin is an Amazon S3 bucket, use the S3OriginConfig element instead." - } - }, - "documentation":"A complex type that describes the Amazon S3 bucket or the HTTP server (for example, a web server) from which CloudFront gets your files.You must create at least one origin." - }, - "OriginList":{ - "type":"list", - "member":{ - "shape":"Origin", - "locationName":"Origin" - }, - "min":1 - }, - "OriginProtocolPolicy":{ - "type":"string", - "enum":[ - "http-only", - "match-viewer" - ] - }, - "Origins":{ - "type":"structure", - "required":["Quantity"], - "members":{ - "Quantity":{ - "shape":"integer", - "documentation":"The number of origins for this distribution." - }, - "Items":{ - "shape":"OriginList", - "documentation":"A complex type that contains origins for this distribution." - } - }, - "documentation":"A complex type that contains information about origins for this distribution." - }, - "PathList":{ - "type":"list", - "member":{ - "shape":"string", - "locationName":"Path" - } - }, - "Paths":{ - "type":"structure", - "required":["Quantity"], - "members":{ - "Quantity":{ - "shape":"integer", - "documentation":"The number of objects that you want to invalidate." - }, - "Items":{ - "shape":"PathList", - "documentation":"A complex type that contains a list of the objects that you want to invalidate." - } - }, - "documentation":"A complex type that contains information about the objects that you want to invalidate." - }, - "PreconditionFailed":{ - "type":"structure", - "members":{ - "Message":{"shape":"string"} - }, - "error":{"httpStatusCode":412}, - "exception":true, - "documentation":"The precondition given in one or more of the request-header fields evaluated to false." - }, - "PriceClass":{ - "type":"string", - "enum":[ - "PriceClass_100", - "PriceClass_200", - "PriceClass_All" - ] - }, - "Restrictions":{ - "type":"structure", - "required":["GeoRestriction"], - "members":{ - "GeoRestriction":{"shape":"GeoRestriction"} - }, - "documentation":"A complex type that identifies ways in which you want to restrict distribution of your content." - }, - "S3Origin":{ - "type":"structure", - "required":[ - "DomainName", - "OriginAccessIdentity" - ], - "members":{ - "DomainName":{ - "shape":"string", - "documentation":"The DNS name of the S3 origin." - }, - "OriginAccessIdentity":{ - "shape":"string", - "documentation":"Your S3 origin's origin access identity." - } - }, - "documentation":"A complex type that contains information about the Amazon S3 bucket from which you want CloudFront to get your media files for distribution." - }, - "S3OriginConfig":{ - "type":"structure", - "required":["OriginAccessIdentity"], - "members":{ - "OriginAccessIdentity":{ - "shape":"string", - "documentation":"The CloudFront origin access identity to associate with the origin. Use an origin access identity to configure the origin so that end users can only access objects in an Amazon S3 bucket through CloudFront. If you want end users to be able to access objects using either the CloudFront URL or the Amazon S3 URL, specify an empty OriginAccessIdentity element. To delete the origin access identity from an existing distribution, update the distribution configuration and include an empty OriginAccessIdentity element. To replace the origin access identity, update the distribution configuration and specify the new origin access identity. Use the format origin-access-identity/cloudfront/Id where Id is the value that CloudFront returned in the Id element when you created the origin access identity." - } - }, - "documentation":"A complex type that contains information about the Amazon S3 origin. If the origin is a custom origin, use the CustomOriginConfig element instead." - }, - "SSLSupportMethod":{ - "type":"string", - "enum":[ - "sni-only", - "vip" - ] - }, - "Signer":{ - "type":"structure", - "members":{ - "AwsAccountNumber":{ - "shape":"string", - "documentation":"Specifies an AWS account that can create signed URLs. Values: self, which indicates that the AWS account that was used to create the distribution can created signed URLs, or an AWS account number. Omit the dashes in the account number." - }, - "KeyPairIds":{ - "shape":"KeyPairIds", - "documentation":"A complex type that lists the active CloudFront key pairs, if any, that are associated with AwsAccountNumber." - } - }, - "documentation":"A complex type that lists the AWS accounts that were included in the TrustedSigners complex type, as well as their active CloudFront key pair IDs, if any." - }, - "SignerList":{ - "type":"list", - "member":{ - "shape":"Signer", - "locationName":"Signer" - } - }, - "StreamingDistribution":{ - "type":"structure", - "required":[ - "Id", - "Status", - "DomainName", - "ActiveTrustedSigners", - "StreamingDistributionConfig" - ], - "members":{ - "Id":{ - "shape":"string", - "documentation":"The identifier for the streaming distribution. For example: EGTXBD79H29TRA8." - }, - "Status":{ - "shape":"string", - "documentation":"The current status of the streaming distribution. When the status is Deployed, the distribution's information is fully propagated throughout the Amazon CloudFront system." - }, - "LastModifiedTime":{ - "shape":"timestamp", - "documentation":"The date and time the distribution was last modified." - }, - "DomainName":{ - "shape":"string", - "documentation":"The domain name corresponding to the streaming distribution. For example: s5c39gqb8ow64r.cloudfront.net." - }, - "ActiveTrustedSigners":{ - "shape":"ActiveTrustedSigners", - "documentation":"CloudFront automatically adds this element to the response only if you've set up the distribution to serve private content with signed URLs. The element lists the key pair IDs that CloudFront is aware of for each trusted signer. The Signer child element lists the AWS account number of the trusted signer (or an empty Self element if the signer is you). The Signer element also includes the IDs of any active key pairs associated with the trusted signer's AWS account. If no KeyPairId element appears for a Signer, that signer can't create working signed URLs." - }, - "StreamingDistributionConfig":{ - "shape":"StreamingDistributionConfig", - "documentation":"The current configuration information for the streaming distribution." - } - }, - "documentation":"A streaming distribution." - }, - "StreamingDistributionAlreadyExists":{ - "type":"structure", - "members":{ - "Message":{"shape":"string"} - }, - "error":{"httpStatusCode":409}, - "exception":true - }, - "StreamingDistributionConfig":{ - "type":"structure", - "required":[ - "CallerReference", - "S3Origin", - "Aliases", - "Comment", - "Logging", - "TrustedSigners", - "PriceClass", - "Enabled" - ], - "members":{ - "CallerReference":{ - "shape":"string", - "documentation":"A unique number that ensures the request can't be replayed. If the CallerReference is new (no matter the content of the StreamingDistributionConfig object), a new streaming distribution is created. If the CallerReference is a value you already sent in a previous request to create a streaming distribution, and the content of the StreamingDistributionConfig is identical to the original request (ignoring white space), the response includes the same information returned to the original request. If the CallerReference is a value you already sent in a previous request to create a streaming distribution but the content of the StreamingDistributionConfig is different from the original request, CloudFront returns a DistributionAlreadyExists error." - }, - "S3Origin":{ - "shape":"S3Origin", - "documentation":"A complex type that contains information about the Amazon S3 bucket from which you want CloudFront to get your media files for distribution." - }, - "Aliases":{ - "shape":"Aliases", - "documentation":"A complex type that contains information about CNAMEs (alternate domain names), if any, for this streaming distribution." - }, - "Comment":{ - "shape":"string", - "documentation":"Any comments you want to include about the streaming distribution." - }, - "Logging":{ - "shape":"StreamingLoggingConfig", - "documentation":"A complex type that controls whether access logs are written for the streaming distribution." - }, - "TrustedSigners":{ - "shape":"TrustedSigners", - "documentation":"A complex type that specifies the AWS accounts, if any, that you want to allow to create signed URLs for private content. If you want to require signed URLs in requests for objects in the target origin that match the PathPattern for this cache behavior, specify true for Enabled, and specify the applicable values for Quantity and Items. For more information, go to Using a Signed URL to Serve Private Content in the Amazon CloudFront Developer Guide. If you don't want to require signed URLs in requests for objects that match PathPattern, specify false for Enabled and 0 for Quantity. Omit Items. To add, change, or remove one or more trusted signers, change Enabled to true (if it's currently false), change Quantity as applicable, and specify all of the trusted signers that you want to include in the updated distribution." - }, - "PriceClass":{ - "shape":"PriceClass", - "documentation":"A complex type that contains information about price class for this streaming distribution." - }, - "Enabled":{ - "shape":"boolean", - "documentation":"Whether the streaming distribution is enabled to accept end user requests for content." - } - }, - "documentation":"The configuration for the streaming distribution." - }, - "StreamingDistributionList":{ - "type":"structure", - "required":[ - "Marker", - "MaxItems", - "IsTruncated", - "Quantity" - ], - "members":{ - "Marker":{ - "shape":"string", - "documentation":"The value you provided for the Marker request parameter." - }, - "NextMarker":{ - "shape":"string", - "documentation":"If IsTruncated is true, this element is present and contains the value you can use for the Marker request parameter to continue listing your streaming distributions where they left off." - }, - "MaxItems":{ - "shape":"integer", - "documentation":"The value you provided for the MaxItems request parameter." - }, - "IsTruncated":{ - "shape":"boolean", - "documentation":"A flag that indicates whether more streaming distributions remain to be listed. If your results were truncated, you can make a follow-up pagination request using the Marker request parameter to retrieve more distributions in the list." - }, - "Quantity":{ - "shape":"integer", - "documentation":"The number of streaming distributions that were created by the current AWS account." - }, - "Items":{ - "shape":"StreamingDistributionSummaryList", - "documentation":"A complex type that contains one StreamingDistributionSummary element for each distribution that was created by the current AWS account." - } - }, - "documentation":"A streaming distribution list." - }, - "StreamingDistributionNotDisabled":{ - "type":"structure", - "members":{ - "Message":{"shape":"string"} - }, - "error":{"httpStatusCode":409}, - "exception":true - }, - "StreamingDistributionSummary":{ - "type":"structure", - "required":[ - "Id", - "Status", - "LastModifiedTime", - "DomainName", - "S3Origin", - "Aliases", - "TrustedSigners", - "Comment", - "PriceClass", - "Enabled" - ], - "members":{ - "Id":{ - "shape":"string", - "documentation":"The identifier for the distribution. For example: EDFDVBD632BHDS5." - }, - "Status":{ - "shape":"string", - "documentation":"Indicates the current status of the distribution. When the status is Deployed, the distribution's information is fully propagated throughout the Amazon CloudFront system." - }, - "LastModifiedTime":{ - "shape":"timestamp", - "documentation":"The date and time the distribution was last modified." - }, - "DomainName":{ - "shape":"string", - "documentation":"The domain name corresponding to the distribution. For example: d604721fxaaqy9.cloudfront.net." - }, - "S3Origin":{ - "shape":"S3Origin", - "documentation":"A complex type that contains information about the Amazon S3 bucket from which you want CloudFront to get your media files for distribution." - }, - "Aliases":{ - "shape":"Aliases", - "documentation":"A complex type that contains information about CNAMEs (alternate domain names), if any, for this streaming distribution." - }, - "TrustedSigners":{ - "shape":"TrustedSigners", - "documentation":"A complex type that specifies the AWS accounts, if any, that you want to allow to create signed URLs for private content. If you want to require signed URLs in requests for objects in the target origin that match the PathPattern for this cache behavior, specify true for Enabled, and specify the applicable values for Quantity and Items. For more information, go to Using a Signed URL to Serve Private Content in the Amazon CloudFront Developer Guide. If you don't want to require signed URLs in requests for objects that match PathPattern, specify false for Enabled and 0 for Quantity. Omit Items. To add, change, or remove one or more trusted signers, change Enabled to true (if it's currently false), change Quantity as applicable, and specify all of the trusted signers that you want to include in the updated distribution." - }, - "Comment":{ - "shape":"string", - "documentation":"The comment originally specified when this distribution was created." - }, - "PriceClass":{"shape":"PriceClass"}, - "Enabled":{ - "shape":"boolean", - "documentation":"Whether the distribution is enabled to accept end user requests for content." - } - }, - "documentation":"A summary of the information for an Amazon CloudFront streaming distribution." - }, - "StreamingDistributionSummaryList":{ - "type":"list", - "member":{ - "shape":"StreamingDistributionSummary", - "locationName":"StreamingDistributionSummary" - } - }, - "StreamingLoggingConfig":{ - "type":"structure", - "required":[ - "Enabled", - "Bucket", - "Prefix" - ], - "members":{ - "Enabled":{ - "shape":"boolean", - "documentation":"Specifies whether you want CloudFront to save access logs to an Amazon S3 bucket. If you do not want to enable logging when you create a streaming distribution or if you want to disable logging for an existing streaming distribution, specify false for Enabled, and specify empty Bucket and Prefix elements. If you specify false for Enabled but you specify values for Bucket and Prefix, the values are automatically deleted." - }, - "Bucket":{ - "shape":"string", - "documentation":"The Amazon S3 bucket to store the access logs in, for example, myawslogbucket.s3.amazonaws.com." - }, - "Prefix":{ - "shape":"string", - "documentation":"An optional string that you want CloudFront to prefix to the access log filenames for this streaming distribution, for example, myprefix/. If you want to enable logging, but you do not want to specify a prefix, you still must include an empty Prefix element in the Logging element." - } - }, - "documentation":"A complex type that controls whether access logs are written for this streaming distribution." - }, - "TooManyCacheBehaviors":{ - "type":"structure", - "members":{ - "Message":{"shape":"string"} - }, - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"You cannot create anymore cache behaviors for the distribution." - }, - "TooManyCertificates":{ - "type":"structure", - "members":{ - "Message":{"shape":"string"} - }, - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"You cannot create anymore custom ssl certificates." - }, - "TooManyCloudFrontOriginAccessIdentities":{ - "type":"structure", - "members":{ - "Message":{"shape":"string"} - }, - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"Processing your request would cause you to exceed the maximum number of origin access identities allowed." - }, - "TooManyCookieNamesInWhiteList":{ - "type":"structure", - "members":{ - "Message":{"shape":"string"} - }, - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"Your request contains more cookie names in the whitelist than are allowed per cache behavior." - }, - "TooManyDistributionCNAMEs":{ - "type":"structure", - "members":{ - "Message":{"shape":"string"} - }, - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"Your request contains more CNAMEs than are allowed per distribution." - }, - "TooManyDistributions":{ - "type":"structure", - "members":{ - "Message":{"shape":"string"} - }, - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"Processing your request would cause you to exceed the maximum number of distributions allowed." - }, - "TooManyHeadersInForwardedValues":{ - "type":"structure", - "members":{ - "Message":{"shape":"string"} - }, - "error":{"httpStatusCode":400}, - "exception":true - }, - "TooManyInvalidationsInProgress":{ - "type":"structure", - "members":{ - "Message":{"shape":"string"} - }, - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"You have exceeded the maximum number of allowable InProgress invalidation batch requests, or invalidation objects." - }, - "TooManyOrigins":{ - "type":"structure", - "members":{ - "Message":{"shape":"string"} - }, - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"You cannot create anymore origins for the distribution." - }, - "TooManyStreamingDistributionCNAMEs":{ - "type":"structure", - "members":{ - "Message":{"shape":"string"} - }, - "error":{"httpStatusCode":400}, - "exception":true - }, - "TooManyStreamingDistributions":{ - "type":"structure", - "members":{ - "Message":{"shape":"string"} - }, - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"Processing your request would cause you to exceed the maximum number of streaming distributions allowed." - }, - "TooManyTrustedSigners":{ - "type":"structure", - "members":{ - "Message":{"shape":"string"} - }, - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"Your request contains more trusted signers than are allowed per distribution." - }, - "TrustedSignerDoesNotExist":{ - "type":"structure", - "members":{ - "Message":{"shape":"string"} - }, - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"One or more of your trusted signers do not exist." - }, - "TrustedSigners":{ - "type":"structure", - "required":[ - "Enabled", - "Quantity" - ], - "members":{ - "Enabled":{ - "shape":"boolean", - "documentation":"Specifies whether you want to require end users to use signed URLs to access the files specified by PathPattern and TargetOriginId." - }, - "Quantity":{ - "shape":"integer", - "documentation":"The number of trusted signers for this cache behavior." - }, - "Items":{ - "shape":"AwsAccountNumberList", - "documentation":"Optional: A complex type that contains trusted signers for this cache behavior. If Quantity is 0, you can omit Items." - } - }, - "documentation":"A complex type that specifies the AWS accounts, if any, that you want to allow to create signed URLs for private content. If you want to require signed URLs in requests for objects in the target origin that match the PathPattern for this cache behavior, specify true for Enabled, and specify the applicable values for Quantity and Items. For more information, go to Using a Signed URL to Serve Private Content in the Amazon CloudFront Developer Guide. If you don't want to require signed URLs in requests for objects that match PathPattern, specify false for Enabled and 0 for Quantity. Omit Items. To add, change, or remove one or more trusted signers, change Enabled to true (if it's currently false), change Quantity as applicable, and specify all of the trusted signers that you want to include in the updated distribution." - }, - "UpdateCloudFrontOriginAccessIdentityRequest":{ - "type":"structure", - "required":[ - "CloudFrontOriginAccessIdentityConfig", - "Id" - ], - "members":{ - "CloudFrontOriginAccessIdentityConfig":{ - "shape":"CloudFrontOriginAccessIdentityConfig", - "documentation":"The identity's configuration information.", - "xmlNamespace":{"uri":"http://cloudfront.amazonaws.com/doc/2014-10-21/"}, - "locationName":"CloudFrontOriginAccessIdentityConfig" - }, - "Id":{ - "shape":"string", - "location":"uri", - "locationName":"Id", - "documentation":"The identity's id." - }, - "IfMatch":{ - "shape":"string", - "location":"header", - "locationName":"If-Match", - "documentation":"The value of the ETag header you received when retrieving the identity's configuration. For example: E2QWRUHAPOMQZL." - } - }, - "documentation":"The request to update an origin access identity.", - "payload":"CloudFrontOriginAccessIdentityConfig" - }, - "UpdateCloudFrontOriginAccessIdentityResult":{ - "type":"structure", - "members":{ - "CloudFrontOriginAccessIdentity":{ - "shape":"CloudFrontOriginAccessIdentity", - "documentation":"The origin access identity's information." - }, - "ETag":{ - "shape":"string", - "location":"header", - "locationName":"ETag", - "documentation":"The current version of the configuration. For example: E2QWRUHAPOMQZL." - } - }, - "documentation":"The returned result of the corresponding request.", - "payload":"CloudFrontOriginAccessIdentity" - }, - "UpdateDistributionRequest":{ - "type":"structure", - "required":[ - "DistributionConfig", - "Id" - ], - "members":{ - "DistributionConfig":{ - "shape":"DistributionConfig", - "documentation":"The distribution's configuration information.", - "xmlNamespace":{"uri":"http://cloudfront.amazonaws.com/doc/2014-10-21/"}, - "locationName":"DistributionConfig" - }, - "Id":{ - "shape":"string", - "location":"uri", - "locationName":"Id", - "documentation":"The distribution's id." - }, - "IfMatch":{ - "shape":"string", - "location":"header", - "locationName":"If-Match", - "documentation":"The value of the ETag header you received when retrieving the distribution's configuration. For example: E2QWRUHAPOMQZL." - } - }, - "documentation":"The request to update a distribution.", - "payload":"DistributionConfig" - }, - "UpdateDistributionResult":{ - "type":"structure", - "members":{ - "Distribution":{ - "shape":"Distribution", - "documentation":"The distribution's information." - }, - "ETag":{ - "shape":"string", - "location":"header", - "locationName":"ETag", - "documentation":"The current version of the configuration. For example: E2QWRUHAPOMQZL." - } - }, - "documentation":"The returned result of the corresponding request.", - "payload":"Distribution" - }, - "UpdateStreamingDistributionRequest":{ - "type":"structure", - "required":[ - "StreamingDistributionConfig", - "Id" - ], - "members":{ - "StreamingDistributionConfig":{ - "shape":"StreamingDistributionConfig", - "documentation":"The streaming distribution's configuration information.", - "xmlNamespace":{"uri":"http://cloudfront.amazonaws.com/doc/2014-10-21/"}, - "locationName":"StreamingDistributionConfig" - }, - "Id":{ - "shape":"string", - "location":"uri", - "locationName":"Id", - "documentation":"The streaming distribution's id." - }, - "IfMatch":{ - "shape":"string", - "location":"header", - "locationName":"If-Match", - "documentation":"The value of the ETag header you received when retrieving the streaming distribution's configuration. For example: E2QWRUHAPOMQZL." - } - }, - "documentation":"The request to update a streaming distribution.", - "payload":"StreamingDistributionConfig" - }, - "UpdateStreamingDistributionResult":{ - "type":"structure", - "members":{ - "StreamingDistribution":{ - "shape":"StreamingDistribution", - "documentation":"The streaming distribution's information." - }, - "ETag":{ - "shape":"string", - "location":"header", - "locationName":"ETag", - "documentation":"The current version of the configuration. For example: E2QWRUHAPOMQZL." - } - }, - "documentation":"The returned result of the corresponding request.", - "payload":"StreamingDistribution" - }, - "ViewerCertificate":{ - "type":"structure", - "members":{ - "IAMCertificateId":{ - "shape":"string", - "documentation":"If you want viewers to use HTTPS to request your objects and you're using an alternate domain name in your object URLs (for example, https://example.com/logo.jpg), specify the IAM certificate identifier of the custom viewer certificate for this distribution. Specify either this value or CloudFrontDefaultCertificate." - }, - "CloudFrontDefaultCertificate":{ - "shape":"boolean", - "documentation":"If you want viewers to use HTTPS to request your objects and you're using the CloudFront domain name of your distribution in your object URLs (for example, https://d111111abcdef8.cloudfront.net/logo.jpg), set to true. Omit this value if you are setting an IAMCertificateId." - }, - "SSLSupportMethod":{ - "shape":"SSLSupportMethod", - "documentation":"If you specify a value for IAMCertificateId, you must also specify how you want CloudFront to serve HTTPS requests. Valid values are vip and sni-only. If you specify vip, CloudFront uses dedicated IP addresses for your content and can respond to HTTPS requests from any viewer. However, you must request permission to use this feature, and you incur additional monthly charges. If you specify sni-only, CloudFront can only respond to HTTPS requests from viewers that support Server Name Indication (SNI). All modern browsers support SNI, but some browsers still in use don't support SNI. Do not specify a value for SSLSupportMethod if you specified true for CloudFrontDefaultCertificate." - }, - "MinimumProtocolVersion":{ - "shape":"MinimumProtocolVersion", - "documentation":"Specify the minimum version of the SSL protocol that you want CloudFront to use, SSLv3 or TLSv1, for HTTPS connections. CloudFront will serve your objects only to browsers or devices that support at least the SSL version that you specify. The TLSv1 protocol is more secure, so we recommend that you specify SSLv3 only if your users are using browsers or devices that don't support TLSv1. If you're using a custom certificate (if you specify a value for IAMCertificateId) and if you're using dedicated IP (if you specify vip for SSLSupportMethod), you can choose SSLv3 or TLSv1 as the MinimumProtocolVersion. If you're using a custom certificate (if you specify a value for IAMCertificateId) and if you're using SNI (if you specify sni-only for SSLSupportMethod), you must specify TLSv1 for MinimumProtocolVersion." - } - }, - "documentation":"A complex type that contains information about viewer certificates for this distribution." - }, - "ViewerProtocolPolicy":{ - "type":"string", - "enum":[ - "allow-all", - "https-only", - "redirect-to-https" - ] - }, - "boolean":{"type":"boolean"}, - "integer":{"type":"integer"}, - "long":{"type":"long"}, - "string":{"type":"string"}, - "timestamp":{"type":"timestamp"} - } -} diff --git a/src/github.com/getlantern/aws-sdk-go/apis/cloudfront/2014-10-21.paginators.json b/src/github.com/getlantern/aws-sdk-go/apis/cloudfront/2014-10-21.paginators.json deleted file mode 100644 index 51fbb907fa..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/apis/cloudfront/2014-10-21.paginators.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "pagination": { - "ListCloudFrontOriginAccessIdentities": { - "input_token": "Marker", - "output_token": "CloudFrontOriginAccessIdentityList.NextMarker", - "limit_key": "MaxItems", - "more_results": "CloudFrontOriginAccessIdentityList.IsTruncated", - "result_key": "CloudFrontOriginAccessIdentityList.Items" - }, - "ListDistributions": { - "input_token": "Marker", - "output_token": "DistributionList.NextMarker", - "limit_key": "MaxItems", - "more_results": "DistributionList.IsTruncated", - "result_key": "DistributionList.Items" - }, - "ListInvalidations": { - "input_token": "Marker", - "output_token": "InvalidationList.NextMarker", - "limit_key": "MaxItems", - "more_results": "InvalidationList.IsTruncated", - "result_key": "InvalidationList.Items" - }, - "ListStreamingDistributions": { - "input_token": "Marker", - "output_token": "StreamingDistributionList.NextMarker", - "limit_key": "MaxItems", - "more_results": "StreamingDistributionList.IsTruncated", - "result_key": "StreamingDistributionList.Items" - } - } -} diff --git a/src/github.com/getlantern/aws-sdk-go/apis/cloudfront/2014-10-21.waiters.json b/src/github.com/getlantern/aws-sdk-go/apis/cloudfront/2014-10-21.waiters.json deleted file mode 100644 index 6e044bc51b..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/apis/cloudfront/2014-10-21.waiters.json +++ /dev/null @@ -1,47 +0,0 @@ -{ - "version": 2, - "waiters": { - "DistributionDeployed": { - "delay": 60, - "operation": "GetDistribution", - "maxAttempts": 25, - "description": "Wait until a distribution is deployed.", - "acceptors": [ - { - "expected": "Deployed", - "matcher": "path", - "state": "success", - "argument": "Distribution.Status" - } - ] - }, - "InvalidationCompleted": { - "delay": 20, - "operation": "GetInvalidation", - "maxAttempts": 60, - "description": "Wait until an invalidation has completed.", - "acceptors": [ - { - "expected": "Completed", - "matcher": "path", - "state": "success", - "argument": "Invalidation.Status" - } - ] - }, - "StreamingDistributionDeployed": { - "delay": 60, - "operation": "GetStreamingDistribution", - "maxAttempts": 25, - "description": "Wait until a streaming distribution is deployed.", - "acceptors": [ - { - "expected": "Deployed", - "matcher": "path", - "state": "success", - "argument": "StreamingDistribution.Status" - } - ] - } - } -} diff --git a/src/github.com/getlantern/aws-sdk-go/apis/cloudhsm/2014-05-30.normal.json b/src/github.com/getlantern/aws-sdk-go/apis/cloudhsm/2014-05-30.normal.json deleted file mode 100644 index e44d214350..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/apis/cloudhsm/2014-05-30.normal.json +++ /dev/null @@ -1,1302 +0,0 @@ -{ - "metadata":{ - "apiVersion":"2014-05-30", - "endpointPrefix":"cloudhsm", - "jsonVersion":"1.1", - "serviceAbbreviation":"CloudHSM", - "serviceFullName":"Amazon CloudHSM", - "signatureVersion":"v4", - "targetPrefix":"CloudHsmFrontendService", - "protocol":"json" - }, - "documentation":"AWS CloudHSM Service", - "operations":{ - "CreateHapg":{ - "name":"CreateHapg", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"CreateHapgRequest", - "documentation":"

Contains the inputs for the CreateHapgRequest action.

" - }, - "output":{ - "shape":"CreateHapgResponse", - "documentation":"

Contains the output of the CreateHAPartitionGroup action.

" - }, - "errors":[ - { - "shape":"CloudHsmServiceException", - "exception":true, - "documentation":"

Indicates that an exception occurred in the AWS CloudHSM service.

" - }, - { - "shape":"CloudHsmInternalException", - "exception":true, - "fault":true, - "documentation":"

Indicates that an internal error occurred.

" - }, - { - "shape":"InvalidRequestException", - "exception":true, - "documentation":"

Indicates that one or more of the request parameters are not valid.

" - } - ], - "documentation":"

Creates a high-availability partition group. A high-availability partition group is a group of partitions that spans multiple physical HSMs.

" - }, - "CreateHsm":{ - "name":"CreateHsm", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"CreateHsmRequest", - "documentation":"

Contains the inputs for the CreateHsm action.

", - "locationName":"CreateHsmRequest" - }, - "output":{ - "shape":"CreateHsmResponse", - "documentation":"

Contains the output of the CreateHsm action.

" - }, - "errors":[ - { - "shape":"CloudHsmServiceException", - "exception":true, - "documentation":"

Indicates that an exception occurred in the AWS CloudHSM service.

" - }, - { - "shape":"CloudHsmInternalException", - "exception":true, - "fault":true, - "documentation":"

Indicates that an internal error occurred.

" - }, - { - "shape":"InvalidRequestException", - "exception":true, - "documentation":"

Indicates that one or more of the request parameters are not valid.

" - } - ], - "documentation":"

Creates an uninitialized HSM instance. Running this command provisions an HSM appliance and will result in charges to your AWS account for the HSM.

" - }, - "CreateLunaClient":{ - "name":"CreateLunaClient", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"CreateLunaClientRequest", - "documentation":"

Contains the inputs for the CreateLunaClient action.

" - }, - "output":{ - "shape":"CreateLunaClientResponse", - "documentation":"

Contains the output of the CreateLunaClient action.

" - }, - "errors":[ - { - "shape":"CloudHsmServiceException", - "exception":true, - "documentation":"

Indicates that an exception occurred in the AWS CloudHSM service.

" - }, - { - "shape":"CloudHsmInternalException", - "exception":true, - "fault":true, - "documentation":"

Indicates that an internal error occurred.

" - }, - { - "shape":"InvalidRequestException", - "exception":true, - "documentation":"

Indicates that one or more of the request parameters are not valid.

" - } - ], - "documentation":"

Creates an HSM client.

" - }, - "DeleteHapg":{ - "name":"DeleteHapg", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DeleteHapgRequest", - "documentation":"

Contains the inputs for the DeleteHapg action.

" - }, - "output":{ - "shape":"DeleteHapgResponse", - "documentation":"

Contains the output of the DeleteHapg action.

" - }, - "errors":[ - { - "shape":"CloudHsmServiceException", - "exception":true, - "documentation":"

Indicates that an exception occurred in the AWS CloudHSM service.

" - }, - { - "shape":"CloudHsmInternalException", - "exception":true, - "fault":true, - "documentation":"

Indicates that an internal error occurred.

" - }, - { - "shape":"InvalidRequestException", - "exception":true, - "documentation":"

Indicates that one or more of the request parameters are not valid.

" - } - ], - "documentation":"

Deletes a high-availability partition group.

" - }, - "DeleteHsm":{ - "name":"DeleteHsm", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DeleteHsmRequest", - "documentation":"

Contains the inputs for the DeleteHsm action.

", - "locationName":"DeleteHsmRequest" - }, - "output":{ - "shape":"DeleteHsmResponse", - "documentation":"

Contains the output of the DeleteHsm action.

" - }, - "errors":[ - { - "shape":"CloudHsmServiceException", - "exception":true, - "documentation":"

Indicates that an exception occurred in the AWS CloudHSM service.

" - }, - { - "shape":"CloudHsmInternalException", - "exception":true, - "fault":true, - "documentation":"

Indicates that an internal error occurred.

" - }, - { - "shape":"InvalidRequestException", - "exception":true, - "documentation":"

Indicates that one or more of the request parameters are not valid.

" - } - ], - "documentation":"

Deletes an HSM. Once complete, this operation cannot be undone and your key material cannot be recovered.

" - }, - "DeleteLunaClient":{ - "name":"DeleteLunaClient", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DeleteLunaClientRequest"}, - "output":{"shape":"DeleteLunaClientResponse"}, - "errors":[ - { - "shape":"CloudHsmServiceException", - "exception":true, - "documentation":"

Indicates that an exception occurred in the AWS CloudHSM service.

" - }, - { - "shape":"CloudHsmInternalException", - "exception":true, - "fault":true, - "documentation":"

Indicates that an internal error occurred.

" - }, - { - "shape":"InvalidRequestException", - "exception":true, - "documentation":"

Indicates that one or more of the request parameters are not valid.

" - } - ], - "documentation":"

Deletes a client.

" - }, - "DescribeHapg":{ - "name":"DescribeHapg", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DescribeHapgRequest", - "documentation":"

Contains the inputs for the DescribeHapg action.

" - }, - "output":{ - "shape":"DescribeHapgResponse", - "documentation":"

Contains the output of the DescribeHapg action.

" - }, - "errors":[ - { - "shape":"CloudHsmServiceException", - "exception":true, - "documentation":"

Indicates that an exception occurred in the AWS CloudHSM service.

" - }, - { - "shape":"CloudHsmInternalException", - "exception":true, - "fault":true, - "documentation":"

Indicates that an internal error occurred.

" - }, - { - "shape":"InvalidRequestException", - "exception":true, - "documentation":"

Indicates that one or more of the request parameters are not valid.

" - } - ], - "documentation":"

Retrieves information about a high-availability partition group.

" - }, - "DescribeHsm":{ - "name":"DescribeHsm", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DescribeHsmRequest", - "documentation":"

Contains the inputs for the DescribeHsm action.

" - }, - "output":{ - "shape":"DescribeHsmResponse", - "documentation":"

Contains the output of the DescribeHsm action.

" - }, - "errors":[ - { - "shape":"CloudHsmServiceException", - "exception":true, - "documentation":"

Indicates that an exception occurred in the AWS CloudHSM service.

" - }, - { - "shape":"CloudHsmInternalException", - "exception":true, - "fault":true, - "documentation":"

Indicates that an internal error occurred.

" - }, - { - "shape":"InvalidRequestException", - "exception":true, - "documentation":"

Indicates that one or more of the request parameters are not valid.

" - } - ], - "documentation":"

Retrieves information about an HSM. You can identify the HSM by its ARN or its serial number.

" - }, - "DescribeLunaClient":{ - "name":"DescribeLunaClient", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeLunaClientRequest"}, - "output":{"shape":"DescribeLunaClientResponse"}, - "errors":[ - { - "shape":"CloudHsmServiceException", - "exception":true, - "documentation":"

Indicates that an exception occurred in the AWS CloudHSM service.

" - }, - { - "shape":"CloudHsmInternalException", - "exception":true, - "fault":true, - "documentation":"

Indicates that an internal error occurred.

" - }, - { - "shape":"InvalidRequestException", - "exception":true, - "documentation":"

Indicates that one or more of the request parameters are not valid.

" - } - ], - "documentation":"

Retrieves information about an HSM client.

" - }, - "GetConfig":{ - "name":"GetConfig", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"GetConfigRequest"}, - "output":{"shape":"GetConfigResponse"}, - "errors":[ - { - "shape":"CloudHsmServiceException", - "exception":true, - "documentation":"

Indicates that an exception occurred in the AWS CloudHSM service.

" - }, - { - "shape":"CloudHsmInternalException", - "exception":true, - "fault":true, - "documentation":"

Indicates that an internal error occurred.

" - }, - { - "shape":"InvalidRequestException", - "exception":true, - "documentation":"

Indicates that one or more of the request parameters are not valid.

" - } - ], - "documentation":"

Gets the configuration files necessary to connect to all high availability partition groups the client is associated with.

" - }, - "ListAvailableZones":{ - "name":"ListAvailableZones", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"ListAvailableZonesRequest", - "documentation":"

Contains the inputs for the ListAvailableZones action.

" - }, - "output":{"shape":"ListAvailableZonesResponse"}, - "errors":[ - { - "shape":"CloudHsmServiceException", - "exception":true, - "documentation":"

Indicates that an exception occurred in the AWS CloudHSM service.

" - }, - { - "shape":"CloudHsmInternalException", - "exception":true, - "fault":true, - "documentation":"

Indicates that an internal error occurred.

" - }, - { - "shape":"InvalidRequestException", - "exception":true, - "documentation":"

Indicates that one or more of the request parameters are not valid.

" - } - ], - "documentation":"

Lists the Availability Zones that have available AWS CloudHSM capacity.

" - }, - "ListHapgs":{ - "name":"ListHapgs", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"ListHapgsRequest"}, - "output":{"shape":"ListHapgsResponse"}, - "errors":[ - { - "shape":"CloudHsmServiceException", - "exception":true, - "documentation":"

Indicates that an exception occurred in the AWS CloudHSM service.

" - }, - { - "shape":"CloudHsmInternalException", - "exception":true, - "fault":true, - "documentation":"

Indicates that an internal error occurred.

" - }, - { - "shape":"InvalidRequestException", - "exception":true, - "documentation":"

Indicates that one or more of the request parameters are not valid.

" - } - ], - "documentation":"

Lists the high-availability partition groups for the account.

This operation supports pagination with the use of the NextToken member. If more results are available, the NextToken member of the response contains a token that you pass in the next call to ListHapgs to retrieve the next set of items.

" - }, - "ListHsms":{ - "name":"ListHsms", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"ListHsmsRequest"}, - "output":{ - "shape":"ListHsmsResponse", - "documentation":"

Contains the output of the ListHsms action.

" - }, - "errors":[ - { - "shape":"CloudHsmServiceException", - "exception":true, - "documentation":"

Indicates that an exception occurred in the AWS CloudHSM service.

" - }, - { - "shape":"CloudHsmInternalException", - "exception":true, - "fault":true, - "documentation":"

Indicates that an internal error occurred.

" - }, - { - "shape":"InvalidRequestException", - "exception":true, - "documentation":"

Indicates that one or more of the request parameters are not valid.

" - } - ], - "documentation":"

Retrieves the identifiers of all of the HSMs provisioned for the current customer.

This operation supports pagination with the use of the NextToken member. If more results are available, the NextToken member of the response contains a token that you pass in the next call to ListHsms to retrieve the next set of items.

" - }, - "ListLunaClients":{ - "name":"ListLunaClients", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"ListLunaClientsRequest"}, - "output":{"shape":"ListLunaClientsResponse"}, - "errors":[ - { - "shape":"CloudHsmServiceException", - "exception":true, - "documentation":"

Indicates that an exception occurred in the AWS CloudHSM service.

" - }, - { - "shape":"CloudHsmInternalException", - "exception":true, - "fault":true, - "documentation":"

Indicates that an internal error occurred.

" - }, - { - "shape":"InvalidRequestException", - "exception":true, - "documentation":"

Indicates that one or more of the request parameters are not valid.

" - } - ], - "documentation":"

Lists all of the clients.

This operation supports pagination with the use of the NextToken member. If more results are available, the NextToken member of the response contains a token that you pass in the next call to ListLunaClients to retrieve the next set of items.

" - }, - "ModifyHapg":{ - "name":"ModifyHapg", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"ModifyHapgRequest"}, - "output":{"shape":"ModifyHapgResponse"}, - "errors":[ - { - "shape":"CloudHsmServiceException", - "exception":true, - "documentation":"

Indicates that an exception occurred in the AWS CloudHSM service.

" - }, - { - "shape":"CloudHsmInternalException", - "exception":true, - "fault":true, - "documentation":"

Indicates that an internal error occurred.

" - }, - { - "shape":"InvalidRequestException", - "exception":true, - "documentation":"

Indicates that one or more of the request parameters are not valid.

" - } - ], - "documentation":"

Modifies an existing high-availability partition group.

" - }, - "ModifyHsm":{ - "name":"ModifyHsm", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"ModifyHsmRequest", - "documentation":"

Contains the inputs for the ModifyHsm action.

", - "locationName":"ModifyHsmRequest" - }, - "output":{ - "shape":"ModifyHsmResponse", - "documentation":"

Contains the output of the ModifyHsm action.

" - }, - "errors":[ - { - "shape":"CloudHsmServiceException", - "exception":true, - "documentation":"

Indicates that an exception occurred in the AWS CloudHSM service.

" - }, - { - "shape":"CloudHsmInternalException", - "exception":true, - "fault":true, - "documentation":"

Indicates that an internal error occurred.

" - }, - { - "shape":"InvalidRequestException", - "exception":true, - "documentation":"

Indicates that one or more of the request parameters are not valid.

" - } - ], - "documentation":"

Modifies an HSM.

" - }, - "ModifyLunaClient":{ - "name":"ModifyLunaClient", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"ModifyLunaClientRequest"}, - "output":{"shape":"ModifyLunaClientResponse"}, - "errors":[ - { - "shape":"CloudHsmServiceException", - "exception":true, - "documentation":"

Indicates that an exception occurred in the AWS CloudHSM service.

" - } - ], - "documentation":"

Modifies the certificate used by the client.

This action can potentially start a workflow to install the new certificate on the client's HSMs.

" - } - }, - "shapes":{ - "AZ":{ - "type":"string", - "pattern":"[a-zA-Z0-9\\-]*" - }, - "AZList":{ - "type":"list", - "member":{"shape":"AZ"} - }, - "Boolean":{"type":"boolean"}, - "Certificate":{ - "type":"string", - "min":600, - "max":2400, - "pattern":"[\\w :+=./\\n-]*" - }, - "CertificateFingerprint":{ - "type":"string", - "pattern":"([0-9a-fA-F][0-9a-fA-F]:){15}[0-9a-fA-F][0-9a-fA-F]" - }, - "ClientArn":{ - "type":"string", - "pattern":"arn:aws(-iso)?:cloudhsm:[a-zA-Z0-9\\-]*:[0-9]{12}:client-[0-9a-f]{8}" - }, - "ClientLabel":{ - "type":"string", - "pattern":"[a-zA-Z0-9_.-]{2,64}" - }, - "ClientList":{ - "type":"list", - "member":{"shape":"ClientArn"} - }, - "ClientToken":{ - "type":"string", - "pattern":"[a-zA-Z0-9]{1,64}" - }, - "ClientVersion":{ - "type":"string", - "enum":[ - "5.1", - "5.3" - ] - }, - "CloudHsmInternalException":{ - "type":"structure", - "members":{ - }, - "exception":true, - "fault":true, - "documentation":"

Indicates that an internal error occurred.

" - }, - "CloudHsmObjectState":{ - "type":"string", - "enum":[ - "READY", - "UPDATING", - "DEGRADED" - ] - }, - "CloudHsmServiceException":{ - "type":"structure", - "members":{ - "message":{ - "shape":"String", - "documentation":"

Additional information about the error.

" - }, - "retryable":{ - "shape":"Boolean", - "documentation":"

Indicates if the action can be retried.

" - } - }, - "exception":true, - "documentation":"

Indicates that an exception occurred in the AWS CloudHSM service.

" - }, - "CreateHapgRequest":{ - "type":"structure", - "required":["Label"], - "members":{ - "Label":{ - "shape":"Label", - "documentation":"

The label of the new high-availability partition group.

" - } - }, - "documentation":"

Contains the inputs for the CreateHapgRequest action.

" - }, - "CreateHapgResponse":{ - "type":"structure", - "members":{ - "HapgArn":{ - "shape":"HapgArn", - "documentation":"

The ARN of the high-availability partition group.

" - } - }, - "documentation":"

Contains the output of the CreateHAPartitionGroup action.

" - }, - "CreateHsmRequest":{ - "type":"structure", - "required":[ - "SubnetId", - "SshKey", - "IamRoleArn", - "SubscriptionType" - ], - "members":{ - "SubnetId":{ - "shape":"SubnetId", - "documentation":"

The identifier of the subnet in your VPC in which to place the HSM.

", - "locationName":"SubnetId" - }, - "SshKey":{ - "shape":"SshKey", - "documentation":"

The SSH public key to install on the HSM.

", - "locationName":"SshKey" - }, - "EniIp":{ - "shape":"IpAddress", - "documentation":"

The IP address to assign to the HSM's ENI.

", - "locationName":"EniIp" - }, - "IamRoleArn":{ - "shape":"IamRoleArn", - "documentation":"

The ARN of an IAM role to enable the AWS CloudHSM service to allocate an ENI on your behalf.

", - "locationName":"IamRoleArn" - }, - "ExternalId":{ - "shape":"ExternalId", - "documentation":"

The external ID from IamRoleArn, if present.

", - "locationName":"ExternalId" - }, - "SubscriptionType":{ - "shape":"SubscriptionType", - "documentation":"

The subscription type.

", - "locationName":"SubscriptionType" - }, - "ClientToken":{ - "shape":"ClientToken", - "documentation":"

A user-defined token to ensure idempotence. Subsequent calls to this action with the same token will be ignored.

", - "locationName":"ClientToken" - }, - "SyslogIp":{ - "shape":"IpAddress", - "documentation":"

The IP address for the syslog monitoring server.

", - "locationName":"SyslogIp" - } - }, - "documentation":"

Contains the inputs for the CreateHsm action.

", - "locationName":"CreateHsmRequest" - }, - "CreateHsmResponse":{ - "type":"structure", - "members":{ - "HsmArn":{ - "shape":"HsmArn", - "documentation":"

The ARN of the HSM.

" - } - }, - "documentation":"

Contains the output of the CreateHsm action.

" - }, - "CreateLunaClientRequest":{ - "type":"structure", - "required":["Certificate"], - "members":{ - "Label":{ - "shape":"ClientLabel", - "documentation":"

The label for the client.

" - }, - "Certificate":{ - "shape":"Certificate", - "documentation":"

The contents of a Base64-Encoded X.509 v3 certificate to be installed on the HSMs used by this client.

" - } - }, - "documentation":"

Contains the inputs for the CreateLunaClient action.

" - }, - "CreateLunaClientResponse":{ - "type":"structure", - "members":{ - "ClientArn":{ - "shape":"ClientArn", - "documentation":"

The ARN of the client.

" - } - }, - "documentation":"

Contains the output of the CreateLunaClient action.

" - }, - "DeleteHapgRequest":{ - "type":"structure", - "required":["HapgArn"], - "members":{ - "HapgArn":{ - "shape":"HapgArn", - "documentation":"

The ARN of the high-availability partition group to delete.

" - } - }, - "documentation":"

Contains the inputs for the DeleteHapg action.

" - }, - "DeleteHapgResponse":{ - "type":"structure", - "required":["Status"], - "members":{ - "Status":{ - "shape":"String", - "documentation":"

The status of the action.

" - } - }, - "documentation":"

Contains the output of the DeleteHapg action.

" - }, - "DeleteHsmRequest":{ - "type":"structure", - "required":["HsmArn"], - "members":{ - "HsmArn":{ - "shape":"HsmArn", - "documentation":"

The ARN of the HSM to delete.

", - "locationName":"HsmArn" - } - }, - "documentation":"

Contains the inputs for the DeleteHsm action.

", - "locationName":"DeleteHsmRequest" - }, - "DeleteHsmResponse":{ - "type":"structure", - "required":["Status"], - "members":{ - "Status":{ - "shape":"String", - "documentation":"

The status of the action.

" - } - }, - "documentation":"

Contains the output of the DeleteHsm action.

" - }, - "DeleteLunaClientRequest":{ - "type":"structure", - "required":["ClientArn"], - "members":{ - "ClientArn":{ - "shape":"ClientArn", - "documentation":"

The ARN of the client to delete.

" - } - } - }, - "DeleteLunaClientResponse":{ - "type":"structure", - "required":["Status"], - "members":{ - "Status":{ - "shape":"String", - "documentation":"

The status of the action.

" - } - } - }, - "DescribeHapgRequest":{ - "type":"structure", - "required":["HapgArn"], - "members":{ - "HapgArn":{ - "shape":"HapgArn", - "documentation":"

The ARN of the high-availability partition group to describe.

" - } - }, - "documentation":"

Contains the inputs for the DescribeHapg action.

" - }, - "DescribeHapgResponse":{ - "type":"structure", - "members":{ - "HapgArn":{ - "shape":"HapgArn", - "documentation":"

The ARN of the high-availability partition group.

" - }, - "HapgSerial":{ - "shape":"String", - "documentation":"

The serial number of the high-availability partition group.

" - }, - "HsmsLastActionFailed":{"shape":"HsmList"}, - "HsmsPendingDeletion":{"shape":"HsmList"}, - "HsmsPendingRegistration":{"shape":"HsmList"}, - "Label":{ - "shape":"Label", - "documentation":"

The label for the high-availability partition group.

" - }, - "LastModifiedTimestamp":{ - "shape":"Timestamp", - "documentation":"

The date and time the high-availability partition group was last modified.

" - }, - "PartitionSerialList":{ - "shape":"PartitionSerialList", - "documentation":"

The list of partition serial numbers that belong to the high-availability partition group.

" - }, - "State":{ - "shape":"CloudHsmObjectState", - "documentation":"

The state of the high-availability partition group.

" - } - }, - "documentation":"

Contains the output of the DescribeHapg action.

" - }, - "DescribeHsmRequest":{ - "type":"structure", - "members":{ - "HsmArn":{ - "shape":"HsmArn", - "documentation":"

The ARN of the HSM. Either the HsmArn or the SerialNumber parameter must be specified.

" - }, - "HsmSerialNumber":{ - "shape":"HsmSerialNumber", - "documentation":"

The serial number of the HSM. Either the HsmArn or the HsmSerialNumber parameter must be specified.

" - } - }, - "documentation":"

Contains the inputs for the DescribeHsm action.

" - }, - "DescribeHsmResponse":{ - "type":"structure", - "members":{ - "HsmArn":{ - "shape":"HsmArn", - "documentation":"

The ARN of the HSM.

" - }, - "Status":{ - "shape":"HsmStatus", - "documentation":"

The status of the HSM.

" - }, - "StatusDetails":{ - "shape":"String", - "documentation":"

Contains additional information about the status of the HSM.

" - }, - "AvailabilityZone":{ - "shape":"AZ", - "documentation":"

The Availability Zone that the HSM is in.

" - }, - "EniId":{ - "shape":"EniId", - "documentation":"

The identifier of the elastic network interface (ENI) attached to the HSM.

" - }, - "EniIp":{ - "shape":"IpAddress", - "documentation":"

The IP address assigned to the HSM's ENI.

" - }, - "SubscriptionType":{ - "shape":"SubscriptionType", - "documentation":"

The subscription type.

" - }, - "SubscriptionStartDate":{ - "shape":"Timestamp", - "documentation":"

The subscription start date.

" - }, - "SubscriptionEndDate":{ - "shape":"Timestamp", - "documentation":"

The subscription end date.

" - }, - "VpcId":{ - "shape":"VpcId", - "documentation":"

The identifier of the VPC that the HSM is in.

" - }, - "SubnetId":{ - "shape":"SubnetId", - "documentation":"

The identifier of the subnet the HSM is in.

" - }, - "IamRoleArn":{ - "shape":"IamRoleArn", - "documentation":"

The ARN of the IAM role assigned to the HSM.

" - }, - "SerialNumber":{ - "shape":"HsmSerialNumber", - "documentation":"

The serial number of the HSM.

" - }, - "VendorName":{ - "shape":"String", - "documentation":"

The name of the HSM vendor.

" - }, - "HsmType":{ - "shape":"String", - "documentation":"

The HSM model type.

" - }, - "SoftwareVersion":{ - "shape":"String", - "documentation":"

The HSM software version.

" - }, - "SshPublicKey":{ - "shape":"SshKey", - "documentation":"

The public SSH key.

" - }, - "SshKeyLastUpdated":{ - "shape":"Timestamp", - "documentation":"

The date and time the SSH key was last updated.

" - }, - "ServerCertUri":{ - "shape":"String", - "documentation":"

The URI of the certificate server.

" - }, - "ServerCertLastUpdated":{ - "shape":"Timestamp", - "documentation":"

The date and time the server certificate was last updated.

" - }, - "Partitions":{ - "shape":"PartitionList", - "documentation":"

The list of partitions on the HSM.

" - } - }, - "documentation":"

Contains the output of the DescribeHsm action.

" - }, - "DescribeLunaClientRequest":{ - "type":"structure", - "members":{ - "ClientArn":{ - "shape":"ClientArn", - "documentation":"

The ARN of the client.

" - }, - "CertificateFingerprint":{ - "shape":"CertificateFingerprint", - "documentation":"

The certificate fingerprint.

" - } - } - }, - "DescribeLunaClientResponse":{ - "type":"structure", - "members":{ - "ClientArn":{ - "shape":"ClientArn", - "documentation":"

The ARN of the client.

" - }, - "Certificate":{ - "shape":"Certificate", - "documentation":"

The certificate installed on the HSMs used by this client.

" - }, - "CertificateFingerprint":{ - "shape":"CertificateFingerprint", - "documentation":"

The certificate fingerprint.

" - }, - "LastModifiedTimestamp":{ - "shape":"Timestamp", - "documentation":"

The date and time the client was last modified.

" - }, - "Label":{ - "shape":"Label", - "documentation":"

The label of the client.

" - } - } - }, - "EniId":{ - "type":"string", - "pattern":"eni-[0-9a-f]{8}" - }, - "ExternalId":{ - "type":"string", - "pattern":"[\\w :+=./-]*" - }, - "GetConfigRequest":{ - "type":"structure", - "required":[ - "ClientArn", - "ClientVersion", - "HapgList" - ], - "members":{ - "ClientArn":{ - "shape":"ClientArn", - "documentation":"

The ARN of the client.

" - }, - "ClientVersion":{ - "shape":"ClientVersion", - "documentation":"

The client version.

" - }, - "HapgList":{ - "shape":"HapgList", - "documentation":"

A list of ARNs that identify the high-availability partition groups that are associated with the client.

" - } - } - }, - "GetConfigResponse":{ - "type":"structure", - "members":{ - "ConfigType":{ - "shape":"String", - "documentation":"

The type of credentials.

" - }, - "ConfigFile":{ - "shape":"String", - "documentation":"

The chrystoki.conf configuration file.

" - }, - "ConfigCred":{ - "shape":"String", - "documentation":"

The certificate file containing the server.pem files of the HSMs.

" - } - } - }, - "HapgArn":{ - "type":"string", - "pattern":"arn:aws(-iso)?:cloudhsm:[a-zA-Z0-9\\-]*:[0-9]{12}:hapg-[0-9a-f]{8}" - }, - "HapgList":{ - "type":"list", - "member":{"shape":"HapgArn"} - }, - "HsmArn":{ - "type":"string", - "pattern":"arn:aws(-iso)?:cloudhsm:[a-zA-Z0-9\\-]*:[0-9]{12}:hsm-[0-9a-f]{8}", - "documentation":"

An ARN that identifies an HSM.

" - }, - "HsmList":{ - "type":"list", - "member":{"shape":"HsmArn"}, - "documentation":"

Contains a list of ARNs that identify the HSMs.

" - }, - "HsmSerialNumber":{ - "type":"string", - "pattern":"\\d{1,16}" - }, - "HsmStatus":{ - "type":"string", - "enum":[ - "PENDING", - "RUNNING", - "UPDATING", - "SUSPENDED", - "TERMINATING", - "TERMINATED", - "DEGRADED" - ] - }, - "IamRoleArn":{ - "type":"string", - "pattern":"arn:aws(-iso)?:iam::[0-9]{12}:role/[a-zA-Z0-9_\\+=,\\.\\-@]{1,64}" - }, - "InvalidRequestException":{ - "type":"structure", - "members":{ - }, - "exception":true, - "documentation":"

Indicates that one or more of the request parameters are not valid.

" - }, - "IpAddress":{ - "type":"string", - "pattern":"\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}" - }, - "Label":{ - "type":"string", - "pattern":"[a-zA-Z0-9_.-]{1,64}" - }, - "ListAvailableZonesRequest":{ - "type":"structure", - "members":{ - }, - "documentation":"

Contains the inputs for the ListAvailableZones action.

" - }, - "ListAvailableZonesResponse":{ - "type":"structure", - "members":{ - "AZList":{ - "shape":"AZList", - "documentation":"

The list of Availability Zones that have available AWS CloudHSM capacity.

" - } - } - }, - "ListHapgsRequest":{ - "type":"structure", - "members":{ - "NextToken":{ - "shape":"PaginationToken", - "documentation":"

The NextToken value from a previous call to ListHapgs. Pass null if this is the first call.

" - } - } - }, - "ListHapgsResponse":{ - "type":"structure", - "required":["HapgList"], - "members":{ - "HapgList":{ - "shape":"HapgList", - "documentation":"

The list of high-availability partition groups.

" - }, - "NextToken":{ - "shape":"PaginationToken", - "documentation":"

If not null, more results are available. Pass this value to ListHapgs to retrieve the next set of items.

" - } - } - }, - "ListHsmsRequest":{ - "type":"structure", - "members":{ - "NextToken":{ - "shape":"PaginationToken", - "documentation":"

The NextToken value from a previous call to ListHsms. Pass null if this is the first call.

" - } - } - }, - "ListHsmsResponse":{ - "type":"structure", - "members":{ - "HsmList":{ - "shape":"HsmList", - "documentation":"

The list of ARNs that identify the HSMs.

" - }, - "NextToken":{ - "shape":"PaginationToken", - "documentation":"

If not null, more results are available. Pass this value to ListHsms to retrieve the next set of items.

" - } - }, - "documentation":"

Contains the output of the ListHsms action.

" - }, - "ListLunaClientsRequest":{ - "type":"structure", - "members":{ - "NextToken":{ - "shape":"PaginationToken", - "documentation":"

The NextToken value from a previous call to ListLunaClients. Pass null if this is the first call.

" - } - } - }, - "ListLunaClientsResponse":{ - "type":"structure", - "required":["ClientList"], - "members":{ - "ClientList":{ - "shape":"ClientList", - "documentation":"

The list of clients.

" - }, - "NextToken":{ - "shape":"PaginationToken", - "documentation":"

If not null, more results are available. Pass this to ListLunaClients to retrieve the next set of items.

" - } - } - }, - "ModifyHapgRequest":{ - "type":"structure", - "required":["HapgArn"], - "members":{ - "HapgArn":{ - "shape":"HapgArn", - "documentation":"

The ARN of the high-availability partition group to modify.

" - }, - "Label":{ - "shape":"Label", - "documentation":"

The new label for the high-availability partition group.

" - }, - "PartitionSerialList":{ - "shape":"PartitionSerialList", - "documentation":"

The list of partition serial numbers to make members of the high-availability partition group.

" - } - } - }, - "ModifyHapgResponse":{ - "type":"structure", - "members":{ - "HapgArn":{ - "shape":"HapgArn", - "documentation":"

The ARN of the high-availability partition group.

" - } - } - }, - "ModifyHsmRequest":{ - "type":"structure", - "required":["HsmArn"], - "members":{ - "HsmArn":{ - "shape":"HsmArn", - "documentation":"

The ARN of the HSM to modify.

", - "locationName":"HsmArn" - }, - "SubnetId":{ - "shape":"SubnetId", - "documentation":"

The new identifier of the subnet that the HSM is in.

", - "locationName":"SubnetId" - }, - "EniIp":{ - "shape":"IpAddress", - "documentation":"

The new IP address for the elastic network interface attached to the HSM.

", - "locationName":"EniIp" - }, - "IamRoleArn":{ - "shape":"IamRoleArn", - "documentation":"

The new IAM role ARN.

", - "locationName":"IamRoleArn" - }, - "ExternalId":{ - "shape":"ExternalId", - "documentation":"

The new external ID.

", - "locationName":"ExternalId" - }, - "SyslogIp":{ - "shape":"IpAddress", - "documentation":"

The new IP address for the syslog monitoring server.

", - "locationName":"SyslogIp" - } - }, - "documentation":"

Contains the inputs for the ModifyHsm action.

", - "locationName":"ModifyHsmRequest" - }, - "ModifyHsmResponse":{ - "type":"structure", - "members":{ - "HsmArn":{ - "shape":"HsmArn", - "documentation":"

The ARN of the HSM.

" - } - }, - "documentation":"

Contains the output of the ModifyHsm action.

" - }, - "ModifyLunaClientRequest":{ - "type":"structure", - "required":[ - "ClientArn", - "Certificate" - ], - "members":{ - "ClientArn":{ - "shape":"ClientArn", - "documentation":"

The ARN of the client.

" - }, - "Certificate":{ - "shape":"Certificate", - "documentation":"

The new certificate for the client.

" - } - } - }, - "ModifyLunaClientResponse":{ - "type":"structure", - "members":{ - "ClientArn":{ - "shape":"ClientArn", - "documentation":"

The ARN of the client.

" - } - } - }, - "PaginationToken":{ - "type":"string", - "pattern":"[a-zA-Z0-9+/]*" - }, - "PartitionArn":{ - "type":"string", - "pattern":"arn:aws(-iso)?:cloudhsm:[a-zA-Z0-9\\-]*:[0-9]{12}:hsm-[0-9a-f]{8}/partition-[0-9]{6,12}" - }, - "PartitionList":{ - "type":"list", - "member":{"shape":"PartitionArn"} - }, - "PartitionSerial":{ - "type":"string", - "pattern":"\\d{9}" - }, - "PartitionSerialList":{ - "type":"list", - "member":{"shape":"PartitionSerial"} - }, - "SshKey":{ - "type":"string", - "pattern":"[a-zA-Z0-9+/= ._:\\\\@-]*" - }, - "String":{ - "type":"string", - "pattern":"[\\w :+=./\\\\-]*" - }, - "SubnetId":{ - "type":"string", - "pattern":"subnet-[0-9a-f]{8}" - }, - "SubscriptionType":{ - "type":"string", - "enum":["PRODUCTION"] - }, - "Timestamp":{ - "type":"string", - "pattern":"\\d*" - }, - "VpcId":{ - "type":"string", - "pattern":"vpc-[0-9a-f]{8}" - } - } -} diff --git a/src/github.com/getlantern/aws-sdk-go/apis/cloudsearch/2013-01-01.normal.json b/src/github.com/getlantern/aws-sdk-go/apis/cloudsearch/2013-01-01.normal.json deleted file mode 100644 index 781db11762..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/apis/cloudsearch/2013-01-01.normal.json +++ /dev/null @@ -1,2701 +0,0 @@ -{ - "metadata":{ - "apiVersion":"2013-01-01", - "endpointPrefix":"cloudsearch", - "serviceFullName":"Amazon CloudSearch", - "signatureVersion":"v4", - "xmlNamespace":"http://cloudsearch.amazonaws.com/doc/2013-01-01/", - "protocol":"query" - }, - "documentation":"Amazon CloudSearch Configuration Service

You use the Amazon CloudSearch configuration service to create, configure, and manage search domains. Configuration service requests are submitted using the AWS Query protocol. AWS Query requests are HTTP or HTTPS requests submitted via HTTP GET or POST with a query parameter named Action.

The endpoint for configuration service requests is region-specific: cloudsearch.region.amazonaws.com. For example, cloudsearch.us-east-1.amazonaws.com. For a current list of supported regions and endpoints, see Regions and Endpoints.

", - "operations":{ - "BuildSuggesters":{ - "name":"BuildSuggesters", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"BuildSuggestersRequest", - "documentation":"

Container for the parameters to the BuildSuggester operation. Specifies the name of the domain you want to update.

" - }, - "output":{ - "shape":"BuildSuggestersResponse", - "documentation":"

The result of a BuildSuggester request. Contains a list of the fields used for suggestions.

", - "resultWrapper":"BuildSuggestersResult" - }, - "errors":[ - { - "shape":"BaseException", - "exception":true, - "documentation":"

An error occurred while processing the request.

" - }, - { - "shape":"InternalException", - "error":{ - "code":"InternalException", - "httpStatusCode":500 - }, - "exception":true, - "documentation":"

An internal error occurred while processing the request. If this problem persists, report an issue from the Service Health Dashboard.

" - }, - { - "shape":"ResourceNotFoundException", - "error":{ - "code":"ResourceNotFound", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it attempted to reference a resource that does not exist.

" - } - ], - "documentation":"

Indexes the search suggestions. For more information, see Configuring Suggesters in the Amazon CloudSearch Developer Guide.

" - }, - "CreateDomain":{ - "name":"CreateDomain", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"CreateDomainRequest", - "documentation":"

Container for the parameters to the CreateDomain operation. Specifies a name for the new search domain.

" - }, - "output":{ - "shape":"CreateDomainResponse", - "documentation":"

The result of a CreateDomainRequest. Contains the status of a newly created domain.

", - "resultWrapper":"CreateDomainResult" - }, - "errors":[ - { - "shape":"BaseException", - "exception":true, - "documentation":"

An error occurred while processing the request.

" - }, - { - "shape":"InternalException", - "error":{ - "code":"InternalException", - "httpStatusCode":500 - }, - "exception":true, - "documentation":"

An internal error occurred while processing the request. If this problem persists, report an issue from the Service Health Dashboard.

" - }, - { - "shape":"LimitExceededException", - "error":{ - "code":"LimitExceeded", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because a resource limit has already been met.

" - } - ], - "documentation":"

Creates a new search domain. For more information, see Creating a Search Domain in the Amazon CloudSearch Developer Guide.

" - }, - "DefineAnalysisScheme":{ - "name":"DefineAnalysisScheme", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DefineAnalysisSchemeRequest", - "documentation":"

Container for the parameters to the DefineAnalysisScheme operation. Specifies the name of the domain you want to update and the analysis scheme configuration.

" - }, - "output":{ - "shape":"DefineAnalysisSchemeResponse", - "documentation":"

The result of a DefineAnalysisScheme request. Contains the status of the newly-configured analysis scheme.

", - "resultWrapper":"DefineAnalysisSchemeResult" - }, - "errors":[ - { - "shape":"BaseException", - "exception":true, - "documentation":"

An error occurred while processing the request.

" - }, - { - "shape":"InternalException", - "error":{ - "code":"InternalException", - "httpStatusCode":500 - }, - "exception":true, - "documentation":"

An internal error occurred while processing the request. If this problem persists, report an issue from the Service Health Dashboard.

" - }, - { - "shape":"LimitExceededException", - "error":{ - "code":"LimitExceeded", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because a resource limit has already been met.

" - }, - { - "shape":"InvalidTypeException", - "error":{ - "code":"InvalidType", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it specified an invalid type definition.

" - }, - { - "shape":"ResourceNotFoundException", - "error":{ - "code":"ResourceNotFound", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it attempted to reference a resource that does not exist.

" - } - ], - "documentation":"

Configures an analysis scheme that can be applied to a text or text-array field to define language-specific text processing options. For more information, see Configuring Analysis Schemes in the Amazon CloudSearch Developer Guide.

" - }, - "DefineExpression":{ - "name":"DefineExpression", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DefineExpressionRequest", - "documentation":"

Container for the parameters to the DefineExpression operation. Specifies the name of the domain you want to update and the expression you want to configure.

" - }, - "output":{ - "shape":"DefineExpressionResponse", - "documentation":"

The result of a DefineExpression request. Contains the status of the newly-configured expression.

", - "resultWrapper":"DefineExpressionResult" - }, - "errors":[ - { - "shape":"BaseException", - "exception":true, - "documentation":"

An error occurred while processing the request.

" - }, - { - "shape":"InternalException", - "error":{ - "code":"InternalException", - "httpStatusCode":500 - }, - "exception":true, - "documentation":"

An internal error occurred while processing the request. If this problem persists, report an issue from the Service Health Dashboard.

" - }, - { - "shape":"LimitExceededException", - "error":{ - "code":"LimitExceeded", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because a resource limit has already been met.

" - }, - { - "shape":"InvalidTypeException", - "error":{ - "code":"InvalidType", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it specified an invalid type definition.

" - }, - { - "shape":"ResourceNotFoundException", - "error":{ - "code":"ResourceNotFound", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it attempted to reference a resource that does not exist.

" - } - ], - "documentation":"

Configures an Expression for the search domain. Used to create new expressions and modify existing ones. If the expression exists, the new configuration replaces the old one. For more information, see Configuring Expressions in the Amazon CloudSearch Developer Guide.

" - }, - "DefineIndexField":{ - "name":"DefineIndexField", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DefineIndexFieldRequest", - "documentation":"

Container for the parameters to the DefineIndexField operation. Specifies the name of the domain you want to update and the index field configuration.

" - }, - "output":{ - "shape":"DefineIndexFieldResponse", - "documentation":"

The result of a DefineIndexField request. Contains the status of the newly-configured index field.

", - "resultWrapper":"DefineIndexFieldResult" - }, - "errors":[ - { - "shape":"BaseException", - "exception":true, - "documentation":"

An error occurred while processing the request.

" - }, - { - "shape":"InternalException", - "error":{ - "code":"InternalException", - "httpStatusCode":500 - }, - "exception":true, - "documentation":"

An internal error occurred while processing the request. If this problem persists, report an issue from the Service Health Dashboard.

" - }, - { - "shape":"LimitExceededException", - "error":{ - "code":"LimitExceeded", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because a resource limit has already been met.

" - }, - { - "shape":"InvalidTypeException", - "error":{ - "code":"InvalidType", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it specified an invalid type definition.

" - }, - { - "shape":"ResourceNotFoundException", - "error":{ - "code":"ResourceNotFound", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it attempted to reference a resource that does not exist.

" - } - ], - "documentation":"

Configures an IndexField for the search domain. Used to create new fields and modify existing ones. You must specify the name of the domain you are configuring and an index field configuration. The index field configuration specifies a unique name, the index field type, and the options you want to configure for the field. The options you can specify depend on the IndexFieldType. If the field exists, the new configuration replaces the old one. For more information, see Configuring Index Fields in the Amazon CloudSearch Developer Guide.

" - }, - "DefineSuggester":{ - "name":"DefineSuggester", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DefineSuggesterRequest", - "documentation":"

Container for the parameters to the DefineSuggester operation. Specifies the name of the domain you want to update and the suggester configuration.

" - }, - "output":{ - "shape":"DefineSuggesterResponse", - "documentation":"

The result of a DefineSuggester request. Contains the status of the newly-configured suggester.

", - "resultWrapper":"DefineSuggesterResult" - }, - "errors":[ - { - "shape":"BaseException", - "exception":true, - "documentation":"

An error occurred while processing the request.

" - }, - { - "shape":"InternalException", - "error":{ - "code":"InternalException", - "httpStatusCode":500 - }, - "exception":true, - "documentation":"

An internal error occurred while processing the request. If this problem persists, report an issue from the Service Health Dashboard.

" - }, - { - "shape":"LimitExceededException", - "error":{ - "code":"LimitExceeded", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because a resource limit has already been met.

" - }, - { - "shape":"InvalidTypeException", - "error":{ - "code":"InvalidType", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it specified an invalid type definition.

" - }, - { - "shape":"ResourceNotFoundException", - "error":{ - "code":"ResourceNotFound", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it attempted to reference a resource that does not exist.

" - } - ], - "documentation":"

Configures a suggester for a domain. A suggester enables you to display possible matches before users finish typing their queries. When you configure a suggester, you must specify the name of the text field you want to search for possible matches and a unique name for the suggester. For more information, see Getting Search Suggestions in the Amazon CloudSearch Developer Guide.

" - }, - "DeleteAnalysisScheme":{ - "name":"DeleteAnalysisScheme", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DeleteAnalysisSchemeRequest", - "documentation":"

Container for the parameters to the DeleteAnalysisScheme operation. Specifies the name of the domain you want to update and the analysis scheme you want to delete.

" - }, - "output":{ - "shape":"DeleteAnalysisSchemeResponse", - "documentation":"

The result of a DeleteAnalysisScheme request. Contains the status of the deleted analysis scheme.

", - "resultWrapper":"DeleteAnalysisSchemeResult" - }, - "errors":[ - { - "shape":"BaseException", - "exception":true, - "documentation":"

An error occurred while processing the request.

" - }, - { - "shape":"InternalException", - "error":{ - "code":"InternalException", - "httpStatusCode":500 - }, - "exception":true, - "documentation":"

An internal error occurred while processing the request. If this problem persists, report an issue from the Service Health Dashboard.

" - }, - { - "shape":"InvalidTypeException", - "error":{ - "code":"InvalidType", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it specified an invalid type definition.

" - }, - { - "shape":"ResourceNotFoundException", - "error":{ - "code":"ResourceNotFound", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it attempted to reference a resource that does not exist.

" - } - ], - "documentation":"

Deletes an analysis scheme. For more information, see Configuring Analysis Schemes in the Amazon CloudSearch Developer Guide.

" - }, - "DeleteDomain":{ - "name":"DeleteDomain", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DeleteDomainRequest", - "documentation":"

Container for the parameters to the DeleteDomain operation. Specifies the name of the domain you want to delete.

" - }, - "output":{ - "shape":"DeleteDomainResponse", - "documentation":"

The result of a DeleteDomain request. Contains the status of a newly deleted domain, or no status if the domain has already been completely deleted.

", - "resultWrapper":"DeleteDomainResult" - }, - "errors":[ - { - "shape":"BaseException", - "exception":true, - "documentation":"

An error occurred while processing the request.

" - }, - { - "shape":"InternalException", - "error":{ - "code":"InternalException", - "httpStatusCode":500 - }, - "exception":true, - "documentation":"

An internal error occurred while processing the request. If this problem persists, report an issue from the Service Health Dashboard.

" - } - ], - "documentation":"

Permanently deletes a search domain and all of its data. Once a domain has been deleted, it cannot be recovered. For more information, see Deleting a Search Domain in the Amazon CloudSearch Developer Guide.

" - }, - "DeleteExpression":{ - "name":"DeleteExpression", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DeleteExpressionRequest", - "documentation":"

Container for the parameters to the DeleteExpression operation. Specifies the name of the domain you want to update and the name of the expression you want to delete.

" - }, - "output":{ - "shape":"DeleteExpressionResponse", - "documentation":"

The result of a DeleteExpression request. Specifies the expression being deleted.

", - "resultWrapper":"DeleteExpressionResult" - }, - "errors":[ - { - "shape":"BaseException", - "exception":true, - "documentation":"

An error occurred while processing the request.

" - }, - { - "shape":"InternalException", - "error":{ - "code":"InternalException", - "httpStatusCode":500 - }, - "exception":true, - "documentation":"

An internal error occurred while processing the request. If this problem persists, report an issue from the Service Health Dashboard.

" - }, - { - "shape":"InvalidTypeException", - "error":{ - "code":"InvalidType", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it specified an invalid type definition.

" - }, - { - "shape":"ResourceNotFoundException", - "error":{ - "code":"ResourceNotFound", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it attempted to reference a resource that does not exist.

" - } - ], - "documentation":"

Removes an Expression from the search domain. For more information, see Configuring Expressions in the Amazon CloudSearch Developer Guide.

" - }, - "DeleteIndexField":{ - "name":"DeleteIndexField", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DeleteIndexFieldRequest", - "documentation":"

Container for the parameters to the DeleteIndexField operation. Specifies the name of the domain you want to update and the name of the index field you want to delete.

" - }, - "output":{ - "shape":"DeleteIndexFieldResponse", - "documentation":"

The result of a DeleteIndexField request.

", - "resultWrapper":"DeleteIndexFieldResult" - }, - "errors":[ - { - "shape":"BaseException", - "exception":true, - "documentation":"

An error occurred while processing the request.

" - }, - { - "shape":"InternalException", - "error":{ - "code":"InternalException", - "httpStatusCode":500 - }, - "exception":true, - "documentation":"

An internal error occurred while processing the request. If this problem persists, report an issue from the Service Health Dashboard.

" - }, - { - "shape":"InvalidTypeException", - "error":{ - "code":"InvalidType", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it specified an invalid type definition.

" - }, - { - "shape":"ResourceNotFoundException", - "error":{ - "code":"ResourceNotFound", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it attempted to reference a resource that does not exist.

" - } - ], - "documentation":"

Removes an IndexField from the search domain. For more information, see Configuring Index Fields in the Amazon CloudSearch Developer Guide.

" - }, - "DeleteSuggester":{ - "name":"DeleteSuggester", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DeleteSuggesterRequest", - "documentation":"

Container for the parameters to the DeleteSuggester operation. Specifies the name of the domain you want to update and name of the suggester you want to delete.

" - }, - "output":{ - "shape":"DeleteSuggesterResponse", - "documentation":"

The result of a DeleteSuggester request. Contains the status of the deleted suggester.

", - "resultWrapper":"DeleteSuggesterResult" - }, - "errors":[ - { - "shape":"BaseException", - "exception":true, - "documentation":"

An error occurred while processing the request.

" - }, - { - "shape":"InternalException", - "error":{ - "code":"InternalException", - "httpStatusCode":500 - }, - "exception":true, - "documentation":"

An internal error occurred while processing the request. If this problem persists, report an issue from the Service Health Dashboard.

" - }, - { - "shape":"InvalidTypeException", - "error":{ - "code":"InvalidType", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it specified an invalid type definition.

" - }, - { - "shape":"ResourceNotFoundException", - "error":{ - "code":"ResourceNotFound", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it attempted to reference a resource that does not exist.

" - } - ], - "documentation":"

Deletes a suggester. For more information, see Getting Search Suggestions in the Amazon CloudSearch Developer Guide.

" - }, - "DescribeAnalysisSchemes":{ - "name":"DescribeAnalysisSchemes", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DescribeAnalysisSchemesRequest", - "documentation":"

Container for the parameters to the DescribeAnalysisSchemes operation. Specifies the name of the domain you want to describe. To limit the response to particular analysis schemes, specify the names of the analysis schemes you want to describe. To show the active configuration and exclude any pending changes, set the Deployed option to true.

" - }, - "output":{ - "shape":"DescribeAnalysisSchemesResponse", - "documentation":"

The result of a DescribeAnalysisSchemes request. Contains the analysis schemes configured for the domain specified in the request.

", - "resultWrapper":"DescribeAnalysisSchemesResult" - }, - "errors":[ - { - "shape":"BaseException", - "exception":true, - "documentation":"

An error occurred while processing the request.

" - }, - { - "shape":"InternalException", - "error":{ - "code":"InternalException", - "httpStatusCode":500 - }, - "exception":true, - "documentation":"

An internal error occurred while processing the request. If this problem persists, report an issue from the Service Health Dashboard.

" - }, - { - "shape":"ResourceNotFoundException", - "error":{ - "code":"ResourceNotFound", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it attempted to reference a resource that does not exist.

" - } - ], - "documentation":"

Gets the analysis schemes configured for a domain. An analysis scheme defines language-specific text processing options for a text field. Can be limited to specific analysis schemes by name. By default, shows all analysis schemes and includes any pending changes to the configuration. Set the Deployed option to true to show the active configuration and exclude pending changes. For more information, see Configuring Analysis Schemes in the Amazon CloudSearch Developer Guide.

" - }, - "DescribeAvailabilityOptions":{ - "name":"DescribeAvailabilityOptions", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DescribeAvailabilityOptionsRequest", - "documentation":"

Container for the parameters to the DescribeAvailabilityOptions operation. Specifies the name of the domain you want to describe. To show the active configuration and exclude any pending changes, set the Deployed option to true.

" - }, - "output":{ - "shape":"DescribeAvailabilityOptionsResponse", - "documentation":"

The result of a DescribeAvailabilityOptions request. Indicates whether or not the Multi-AZ option is enabled for the domain specified in the request.

", - "resultWrapper":"DescribeAvailabilityOptionsResult" - }, - "errors":[ - { - "shape":"BaseException", - "exception":true, - "documentation":"

An error occurred while processing the request.

" - }, - { - "shape":"InternalException", - "error":{ - "code":"InternalException", - "httpStatusCode":500 - }, - "exception":true, - "documentation":"

An internal error occurred while processing the request. If this problem persists, report an issue from the Service Health Dashboard.

" - }, - { - "shape":"InvalidTypeException", - "error":{ - "code":"InvalidType", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it specified an invalid type definition.

" - }, - { - "shape":"LimitExceededException", - "error":{ - "code":"LimitExceeded", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because a resource limit has already been met.

" - }, - { - "shape":"ResourceNotFoundException", - "error":{ - "code":"ResourceNotFound", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it attempted to reference a resource that does not exist.

" - }, - { - "shape":"DisabledOperationException", - "error":{ - "code":"DisabledAction", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it attempted an operation which is not enabled.

" - } - ], - "documentation":"

Gets the availability options configured for a domain. By default, shows the configuration with any pending changes. Set the Deployed option to true to show the active configuration and exclude pending changes. For more information, see Configuring Availability Options in the Amazon CloudSearch Developer Guide.

" - }, - "DescribeDomains":{ - "name":"DescribeDomains", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DescribeDomainsRequest", - "documentation":"

Container for the parameters to the DescribeDomains operation. By default shows the status of all domains. To restrict the response to particular domains, specify the names of the domains you want to describe.

" - }, - "output":{ - "shape":"DescribeDomainsResponse", - "documentation":"

The result of a DescribeDomains request. Contains the status of the domains specified in the request or all domains owned by the account.

", - "resultWrapper":"DescribeDomainsResult" - }, - "errors":[ - { - "shape":"BaseException", - "exception":true, - "documentation":"

An error occurred while processing the request.

" - }, - { - "shape":"InternalException", - "error":{ - "code":"InternalException", - "httpStatusCode":500 - }, - "exception":true, - "documentation":"

An internal error occurred while processing the request. If this problem persists, report an issue from the Service Health Dashboard.

" - } - ], - "documentation":"

Gets information about the search domains owned by this account. Can be limited to specific domains. Shows all domains by default. To get the number of searchable documents in a domain, use the console or submit a matchall request to your domain's search endpoint: q=matchall&amp;q.parser=structured&amp;size=0. For more information, see Getting Information about a Search Domain in the Amazon CloudSearch Developer Guide.

" - }, - "DescribeExpressions":{ - "name":"DescribeExpressions", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DescribeExpressionsRequest", - "documentation":"

Container for the parameters to the DescribeDomains operation. Specifies the name of the domain you want to describe. To restrict the response to particular expressions, specify the names of the expressions you want to describe. To show the active configuration and exclude any pending changes, set the Deployed option to true.

" - }, - "output":{ - "shape":"DescribeExpressionsResponse", - "documentation":"

The result of a DescribeExpressions request. Contains the expressions configured for the domain specified in the request.

", - "resultWrapper":"DescribeExpressionsResult" - }, - "errors":[ - { - "shape":"BaseException", - "exception":true, - "documentation":"

An error occurred while processing the request.

" - }, - { - "shape":"InternalException", - "error":{ - "code":"InternalException", - "httpStatusCode":500 - }, - "exception":true, - "documentation":"

An internal error occurred while processing the request. If this problem persists, report an issue from the Service Health Dashboard.

" - }, - { - "shape":"ResourceNotFoundException", - "error":{ - "code":"ResourceNotFound", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it attempted to reference a resource that does not exist.

" - } - ], - "documentation":"

Gets the expressions configured for the search domain. Can be limited to specific expressions by name. By default, shows all expressions and includes any pending changes to the configuration. Set the Deployed option to true to show the active configuration and exclude pending changes. For more information, see Configuring Expressions in the Amazon CloudSearch Developer Guide.

" - }, - "DescribeIndexFields":{ - "name":"DescribeIndexFields", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DescribeIndexFieldsRequest", - "documentation":"

Container for the parameters to the DescribeIndexFields operation. Specifies the name of the domain you want to describe. To restrict the response to particular index fields, specify the names of the index fields you want to describe. To show the active configuration and exclude any pending changes, set the Deployed option to true.

" - }, - "output":{ - "shape":"DescribeIndexFieldsResponse", - "documentation":"

The result of a DescribeIndexFields request. Contains the index fields configured for the domain specified in the request.

", - "resultWrapper":"DescribeIndexFieldsResult" - }, - "errors":[ - { - "shape":"BaseException", - "exception":true, - "documentation":"

An error occurred while processing the request.

" - }, - { - "shape":"InternalException", - "error":{ - "code":"InternalException", - "httpStatusCode":500 - }, - "exception":true, - "documentation":"

An internal error occurred while processing the request. If this problem persists, report an issue from the Service Health Dashboard.

" - }, - { - "shape":"ResourceNotFoundException", - "error":{ - "code":"ResourceNotFound", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it attempted to reference a resource that does not exist.

" - } - ], - "documentation":"

Gets information about the index fields configured for the search domain. Can be limited to specific fields by name. By default, shows all fields and includes any pending changes to the configuration. Set the Deployed option to true to show the active configuration and exclude pending changes. For more information, see Getting Domain Information in the Amazon CloudSearch Developer Guide.

" - }, - "DescribeScalingParameters":{ - "name":"DescribeScalingParameters", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DescribeScalingParametersRequest", - "documentation":"

Container for the parameters to the DescribeScalingParameters operation. Specifies the name of the domain you want to describe.

" - }, - "output":{ - "shape":"DescribeScalingParametersResponse", - "documentation":"

The result of a DescribeScalingParameters request. Contains the scaling parameters configured for the domain specified in the request.

", - "resultWrapper":"DescribeScalingParametersResult" - }, - "errors":[ - { - "shape":"BaseException", - "exception":true, - "documentation":"

An error occurred while processing the request.

" - }, - { - "shape":"InternalException", - "error":{ - "code":"InternalException", - "httpStatusCode":500 - }, - "exception":true, - "documentation":"

An internal error occurred while processing the request. If this problem persists, report an issue from the Service Health Dashboard.

" - }, - { - "shape":"ResourceNotFoundException", - "error":{ - "code":"ResourceNotFound", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it attempted to reference a resource that does not exist.

" - } - ], - "documentation":"

Gets the scaling parameters configured for a domain. A domain's scaling parameters specify the desired search instance type and replication count. For more information, see Configuring Scaling Options in the Amazon CloudSearch Developer Guide.

" - }, - "DescribeServiceAccessPolicies":{ - "name":"DescribeServiceAccessPolicies", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DescribeServiceAccessPoliciesRequest", - "documentation":"

Container for the parameters to the DescribeServiceAccessPolicies operation. Specifies the name of the domain you want to describe. To show the active configuration and exclude any pending changes, set the Deployed option to true.

" - }, - "output":{ - "shape":"DescribeServiceAccessPoliciesResponse", - "documentation":"

The result of a DescribeServiceAccessPolicies request.

", - "resultWrapper":"DescribeServiceAccessPoliciesResult" - }, - "errors":[ - { - "shape":"BaseException", - "exception":true, - "documentation":"

An error occurred while processing the request.

" - }, - { - "shape":"InternalException", - "error":{ - "code":"InternalException", - "httpStatusCode":500 - }, - "exception":true, - "documentation":"

An internal error occurred while processing the request. If this problem persists, report an issue from the Service Health Dashboard.

" - }, - { - "shape":"ResourceNotFoundException", - "error":{ - "code":"ResourceNotFound", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it attempted to reference a resource that does not exist.

" - } - ], - "documentation":"

Gets information about the access policies that control access to the domain's document and search endpoints. By default, shows the configuration with any pending changes. Set the Deployed option to true to show the active configuration and exclude pending changes. For more information, see Configuring Access for a Search Domain in the Amazon CloudSearch Developer Guide.

" - }, - "DescribeSuggesters":{ - "name":"DescribeSuggesters", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DescribeSuggestersRequest", - "documentation":"

Container for the parameters to the DescribeSuggester operation. Specifies the name of the domain you want to describe. To restrict the response to particular suggesters, specify the names of the suggesters you want to describe. To show the active configuration and exclude any pending changes, set the Deployed option to true.

" - }, - "output":{ - "shape":"DescribeSuggestersResponse", - "documentation":"

The result of a DescribeSuggesters request.

", - "resultWrapper":"DescribeSuggestersResult" - }, - "errors":[ - { - "shape":"BaseException", - "exception":true, - "documentation":"

An error occurred while processing the request.

" - }, - { - "shape":"InternalException", - "error":{ - "code":"InternalException", - "httpStatusCode":500 - }, - "exception":true, - "documentation":"

An internal error occurred while processing the request. If this problem persists, report an issue from the Service Health Dashboard.

" - }, - { - "shape":"ResourceNotFoundException", - "error":{ - "code":"ResourceNotFound", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it attempted to reference a resource that does not exist.

" - } - ], - "documentation":"

Gets the suggesters configured for a domain. A suggester enables you to display possible matches before users finish typing their queries. Can be limited to specific suggesters by name. By default, shows all suggesters and includes any pending changes to the configuration. Set the Deployed option to true to show the active configuration and exclude pending changes. For more information, see Getting Search Suggestions in the Amazon CloudSearch Developer Guide.

" - }, - "IndexDocuments":{ - "name":"IndexDocuments", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"IndexDocumentsRequest", - "documentation":"

Container for the parameters to the IndexDocuments operation. Specifies the name of the domain you want to re-index.

" - }, - "output":{ - "shape":"IndexDocumentsResponse", - "documentation":"

The result of an IndexDocuments request. Contains the status of the indexing operation, including the fields being indexed.

", - "resultWrapper":"IndexDocumentsResult" - }, - "errors":[ - { - "shape":"BaseException", - "exception":true, - "documentation":"

An error occurred while processing the request.

" - }, - { - "shape":"InternalException", - "error":{ - "code":"InternalException", - "httpStatusCode":500 - }, - "exception":true, - "documentation":"

An internal error occurred while processing the request. If this problem persists, report an issue from the Service Health Dashboard.

" - }, - { - "shape":"ResourceNotFoundException", - "error":{ - "code":"ResourceNotFound", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it attempted to reference a resource that does not exist.

" - } - ], - "documentation":"

Tells the search domain to start indexing its documents using the latest indexing options. This operation must be invoked to activate options whose OptionStatus is RequiresIndexDocuments.

" - }, - "ListDomainNames":{ - "name":"ListDomainNames", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "output":{ - "shape":"ListDomainNamesResponse", - "documentation":"

The result of a ListDomainNames request. Contains a list of the domains owned by an account.

", - "resultWrapper":"ListDomainNamesResult" - }, - "errors":[ - { - "shape":"BaseException", - "exception":true, - "documentation":"

An error occurred while processing the request.

" - } - ], - "documentation":"

Lists all search domains owned by an account.

" - }, - "UpdateAvailabilityOptions":{ - "name":"UpdateAvailabilityOptions", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"UpdateAvailabilityOptionsRequest", - "documentation":"

Container for the parameters to the UpdateAvailabilityOptions operation. Specifies the name of the domain you want to update and the Multi-AZ availability option.

" - }, - "output":{ - "shape":"UpdateAvailabilityOptionsResponse", - "documentation":"

The result of a UpdateAvailabilityOptions request. Contains the status of the domain's availability options.

", - "resultWrapper":"UpdateAvailabilityOptionsResult" - }, - "errors":[ - { - "shape":"BaseException", - "exception":true, - "documentation":"

An error occurred while processing the request.

" - }, - { - "shape":"InternalException", - "error":{ - "code":"InternalException", - "httpStatusCode":500 - }, - "exception":true, - "documentation":"

An internal error occurred while processing the request. If this problem persists, report an issue from the Service Health Dashboard.

" - }, - { - "shape":"InvalidTypeException", - "error":{ - "code":"InvalidType", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it specified an invalid type definition.

" - }, - { - "shape":"LimitExceededException", - "error":{ - "code":"LimitExceeded", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because a resource limit has already been met.

" - }, - { - "shape":"ResourceNotFoundException", - "error":{ - "code":"ResourceNotFound", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it attempted to reference a resource that does not exist.

" - }, - { - "shape":"DisabledOperationException", - "error":{ - "code":"DisabledAction", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it attempted an operation which is not enabled.

" - } - ], - "documentation":"

Configures the availability options for a domain. Enabling the Multi-AZ option expands an Amazon CloudSearch domain to an additional Availability Zone in the same Region to increase fault tolerance in the event of a service disruption. Changes to the Multi-AZ option can take about half an hour to become active. For more information, see Configuring Availability Options in the Amazon CloudSearch Developer Guide.

" - }, - "UpdateScalingParameters":{ - "name":"UpdateScalingParameters", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"UpdateScalingParametersRequest", - "documentation":"

Container for the parameters to the UpdateScalingParameters operation. Specifies the name of the domain you want to update and the scaling parameters you want to configure.

" - }, - "output":{ - "shape":"UpdateScalingParametersResponse", - "documentation":"

The result of a UpdateScalingParameters request. Contains the status of the newly-configured scaling parameters.

", - "resultWrapper":"UpdateScalingParametersResult" - }, - "errors":[ - { - "shape":"BaseException", - "exception":true, - "documentation":"

An error occurred while processing the request.

" - }, - { - "shape":"InternalException", - "error":{ - "code":"InternalException", - "httpStatusCode":500 - }, - "exception":true, - "documentation":"

An internal error occurred while processing the request. If this problem persists, report an issue from the Service Health Dashboard.

" - }, - { - "shape":"LimitExceededException", - "error":{ - "code":"LimitExceeded", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because a resource limit has already been met.

" - }, - { - "shape":"ResourceNotFoundException", - "error":{ - "code":"ResourceNotFound", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it attempted to reference a resource that does not exist.

" - }, - { - "shape":"InvalidTypeException", - "error":{ - "code":"InvalidType", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it specified an invalid type definition.

" - } - ], - "documentation":"

Configures scaling parameters for a domain. A domain's scaling parameters specify the desired search instance type and replication count. Amazon CloudSearch will still automatically scale your domain based on the volume of data and traffic, but not below the desired instance type and replication count. If the Multi-AZ option is enabled, these values control the resources used per Availability Zone. For more information, see Configuring Scaling Options in the Amazon CloudSearch Developer Guide.

" - }, - "UpdateServiceAccessPolicies":{ - "name":"UpdateServiceAccessPolicies", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"UpdateServiceAccessPoliciesRequest", - "documentation":"

Container for the parameters to the UpdateServiceAccessPolicies operation. Specifies the name of the domain you want to update and the access rules you want to configure.

" - }, - "output":{ - "shape":"UpdateServiceAccessPoliciesResponse", - "documentation":"

The result of an UpdateServiceAccessPolicies request. Contains the new access policies.

", - "resultWrapper":"UpdateServiceAccessPoliciesResult" - }, - "errors":[ - { - "shape":"BaseException", - "exception":true, - "documentation":"

An error occurred while processing the request.

" - }, - { - "shape":"InternalException", - "error":{ - "code":"InternalException", - "httpStatusCode":500 - }, - "exception":true, - "documentation":"

An internal error occurred while processing the request. If this problem persists, report an issue from the Service Health Dashboard.

" - }, - { - "shape":"LimitExceededException", - "error":{ - "code":"LimitExceeded", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because a resource limit has already been met.

" - }, - { - "shape":"ResourceNotFoundException", - "error":{ - "code":"ResourceNotFound", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it attempted to reference a resource that does not exist.

" - }, - { - "shape":"InvalidTypeException", - "error":{ - "code":"InvalidType", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it specified an invalid type definition.

" - } - ], - "documentation":"

Configures the access rules that control access to the domain's document and search endpoints. For more information, see Configuring Access for an Amazon CloudSearch Domain.

" - } - }, - "shapes":{ - "APIVersion":{ - "type":"string", - "documentation":"

The Amazon CloudSearch API version for a domain: 2011-02-01 or 2013-01-01.

" - }, - "ARN":{ - "type":"string", - "documentation":"

The Amazon Resource Name (ARN) of the search domain. See Identifiers for IAM Entities in Using AWS Identity and Access Management for more information.

" - }, - "AccessPoliciesStatus":{ - "type":"structure", - "required":[ - "Options", - "Status" - ], - "members":{ - "Options":{"shape":"PolicyDocument"}, - "Status":{"shape":"OptionStatus"} - }, - "documentation":"

The configured access rules for the domain's document and search endpoints, and the current status of those rules.

" - }, - "AlgorithmicStemming":{ - "type":"string", - "enum":[ - "none", - "minimal", - "light", - "full" - ] - }, - "AnalysisOptions":{ - "type":"structure", - "members":{ - "Synonyms":{ - "shape":"String", - "documentation":"

A JSON object that defines synonym groups and aliases. A synonym group is an array of arrays, where each sub-array is a group of terms where each term in the group is considered a synonym of every other term in the group. The aliases value is an object that contains a collection of string:value pairs where the string specifies a term and the array of values specifies each of the aliases for that term. An alias is considered a synonym of the specified term, but the term is not considered a synonym of the alias. For more information about specifying synonyms, see Synonyms in the Amazon CloudSearch Developer Guide.

" - }, - "Stopwords":{ - "shape":"String", - "documentation":"

A JSON array of terms to ignore during indexing and searching. For example, [\"a\", \"an\", \"the\", \"of\"]. The stopwords dictionary must explicitly list each word you want to ignore. Wildcards and regular expressions are not supported.

" - }, - "StemmingDictionary":{ - "shape":"String", - "documentation":"

A JSON object that contains a collection of string:value pairs that each map a term to its stem. For example, {\"term1\": \"stem1\", \"term2\": \"stem2\", \"term3\": \"stem3\"}. The stemming dictionary is applied in addition to any algorithmic stemming. This enables you to override the results of the algorithmic stemming to correct specific cases of overstemming or understemming. The maximum size of a stemming dictionary is 500 KB.

" - }, - "JapaneseTokenizationDictionary":{ - "shape":"String", - "documentation":"

A JSON array that contains a collection of terms, tokens, readings and part of speech for Japanese Tokenizaiton. The Japanese tokenization dictionary enables you to override the default tokenization for selected terms. This is only valid for Japanese language fields.

" - }, - "AlgorithmicStemming":{ - "shape":"AlgorithmicStemming", - "documentation":"

The level of algorithmic stemming to perform: none, minimal, light, or full. The available levels vary depending on the language. For more information, see Language Specific Text Processing Settings in the Amazon CloudSearch Developer Guide

" - } - }, - "documentation":"

Synonyms, stopwords, and stemming options for an analysis scheme. Includes tokenization dictionary for Japanese.

" - }, - "AnalysisScheme":{ - "type":"structure", - "required":[ - "AnalysisSchemeName", - "AnalysisSchemeLanguage" - ], - "members":{ - "AnalysisSchemeName":{"shape":"StandardName"}, - "AnalysisSchemeLanguage":{"shape":"AnalysisSchemeLanguage"}, - "AnalysisOptions":{"shape":"AnalysisOptions"} - }, - "documentation":"

Configuration information for an analysis scheme. Each analysis scheme has a unique name and specifies the language of the text to be processed. The following options can be configured for an analysis scheme: Synonyms, Stopwords, StemmingDictionary, JapaneseTokenizationDictionary and AlgorithmicStemming.

" - }, - "AnalysisSchemeLanguage":{ - "type":"string", - "enum":[ - "ar", - "bg", - "ca", - "cs", - "da", - "de", - "el", - "en", - "es", - "eu", - "fa", - "fi", - "fr", - "ga", - "gl", - "he", - "hi", - "hu", - "hy", - "id", - "it", - "ja", - "ko", - "lv", - "mul", - "nl", - "no", - "pt", - "ro", - "ru", - "sv", - "th", - "tr", - "zh-Hans", - "zh-Hant" - ], - "documentation":"

An IETF RFC 4646 language code or mul for multiple languages.

" - }, - "AnalysisSchemeStatus":{ - "type":"structure", - "required":[ - "Options", - "Status" - ], - "members":{ - "Options":{"shape":"AnalysisScheme"}, - "Status":{"shape":"OptionStatus"} - }, - "documentation":"

The status and configuration of an AnalysisScheme.

" - }, - "AnalysisSchemeStatusList":{ - "type":"list", - "member":{"shape":"AnalysisSchemeStatus"}, - "documentation":"

A list of the analysis schemes configured for a domain.

" - }, - "AvailabilityOptionsStatus":{ - "type":"structure", - "required":[ - "Options", - "Status" - ], - "members":{ - "Options":{ - "shape":"MultiAZ", - "documentation":"

The availability options configured for the domain.

" - }, - "Status":{"shape":"OptionStatus"} - }, - "documentation":"

The status and configuration of the domain's availability options.

" - }, - "BaseException":{ - "type":"structure", - "members":{ - "Code":{"shape":"ErrorCode"}, - "Message":{"shape":"ErrorMessage"} - }, - "exception":true, - "documentation":"

An error occurred while processing the request.

" - }, - "Boolean":{"type":"boolean"}, - "BuildSuggestersRequest":{ - "type":"structure", - "required":["DomainName"], - "members":{ - "DomainName":{"shape":"DomainName"} - }, - "documentation":"

Container for the parameters to the BuildSuggester operation. Specifies the name of the domain you want to update.

" - }, - "BuildSuggestersResponse":{ - "type":"structure", - "members":{ - "FieldNames":{"shape":"FieldNameList"} - }, - "documentation":"

The result of a BuildSuggester request. Contains a list of the fields used for suggestions.

" - }, - "CreateDomainRequest":{ - "type":"structure", - "required":["DomainName"], - "members":{ - "DomainName":{ - "shape":"DomainName", - "documentation":"

A name for the domain you are creating. Allowed characters are a-z (lower-case letters), 0-9, and hyphen (-). Domain names must start with a letter or number and be at least 3 and no more than 28 characters long.

" - } - }, - "documentation":"

Container for the parameters to the CreateDomain operation. Specifies a name for the new search domain.

" - }, - "CreateDomainResponse":{ - "type":"structure", - "members":{ - "DomainStatus":{"shape":"DomainStatus"} - }, - "documentation":"

The result of a CreateDomainRequest. Contains the status of a newly created domain.

" - }, - "DateArrayOptions":{ - "type":"structure", - "members":{ - "DefaultValue":{ - "shape":"FieldValue", - "documentation":"A value to use for the field if the field isn't specified for a document." - }, - "SourceFields":{ - "shape":"FieldNameCommaList", - "documentation":"

A list of source fields to map to the field.

" - }, - "FacetEnabled":{ - "shape":"Boolean", - "documentation":"

Whether facet information can be returned for the field.

" - }, - "SearchEnabled":{ - "shape":"Boolean", - "documentation":"

Whether the contents of the field are searchable.

" - }, - "ReturnEnabled":{ - "shape":"Boolean", - "documentation":"

Whether the contents of the field can be returned in the search results.

" - } - }, - "documentation":"

Options for a field that contains an array of dates. Present if IndexFieldType specifies the field is of type date-array. All options are enabled by default.

" - }, - "DateOptions":{ - "type":"structure", - "members":{ - "DefaultValue":{ - "shape":"FieldValue", - "documentation":"A value to use for the field if the field isn't specified for a document." - }, - "SourceField":{"shape":"FieldName"}, - "FacetEnabled":{ - "shape":"Boolean", - "documentation":"

Whether facet information can be returned for the field.

" - }, - "SearchEnabled":{ - "shape":"Boolean", - "documentation":"

Whether the contents of the field are searchable.

" - }, - "ReturnEnabled":{ - "shape":"Boolean", - "documentation":"

Whether the contents of the field can be returned in the search results.

" - }, - "SortEnabled":{ - "shape":"Boolean", - "documentation":"

Whether the field can be used to sort the search results.

" - } - }, - "documentation":"

Options for a date field. Dates and times are specified in UTC (Coordinated Universal Time) according to IETF RFC3339: yyyy-mm-ddT00:00:00Z. Present if IndexFieldType specifies the field is of type date. All options are enabled by default.

" - }, - "DefineAnalysisSchemeRequest":{ - "type":"structure", - "required":[ - "DomainName", - "AnalysisScheme" - ], - "members":{ - "DomainName":{"shape":"DomainName"}, - "AnalysisScheme":{"shape":"AnalysisScheme"} - }, - "documentation":"

Container for the parameters to the DefineAnalysisScheme operation. Specifies the name of the domain you want to update and the analysis scheme configuration.

" - }, - "DefineAnalysisSchemeResponse":{ - "type":"structure", - "required":["AnalysisScheme"], - "members":{ - "AnalysisScheme":{"shape":"AnalysisSchemeStatus"} - }, - "documentation":"

The result of a DefineAnalysisScheme request. Contains the status of the newly-configured analysis scheme.

" - }, - "DefineExpressionRequest":{ - "type":"structure", - "required":[ - "DomainName", - "Expression" - ], - "members":{ - "DomainName":{"shape":"DomainName"}, - "Expression":{"shape":"Expression"} - }, - "documentation":"

Container for the parameters to the DefineExpression operation. Specifies the name of the domain you want to update and the expression you want to configure.

" - }, - "DefineExpressionResponse":{ - "type":"structure", - "required":["Expression"], - "members":{ - "Expression":{"shape":"ExpressionStatus"} - }, - "documentation":"

The result of a DefineExpression request. Contains the status of the newly-configured expression.

" - }, - "DefineIndexFieldRequest":{ - "type":"structure", - "required":[ - "DomainName", - "IndexField" - ], - "members":{ - "DomainName":{"shape":"DomainName"}, - "IndexField":{ - "shape":"IndexField", - "documentation":"

The index field and field options you want to configure.

" - } - }, - "documentation":"

Container for the parameters to the DefineIndexField operation. Specifies the name of the domain you want to update and the index field configuration.

" - }, - "DefineIndexFieldResponse":{ - "type":"structure", - "required":["IndexField"], - "members":{ - "IndexField":{"shape":"IndexFieldStatus"} - }, - "documentation":"

The result of a DefineIndexField request. Contains the status of the newly-configured index field.

" - }, - "DefineSuggesterRequest":{ - "type":"structure", - "required":[ - "DomainName", - "Suggester" - ], - "members":{ - "DomainName":{"shape":"DomainName"}, - "Suggester":{"shape":"Suggester"} - }, - "documentation":"

Container for the parameters to the DefineSuggester operation. Specifies the name of the domain you want to update and the suggester configuration.

" - }, - "DefineSuggesterResponse":{ - "type":"structure", - "required":["Suggester"], - "members":{ - "Suggester":{"shape":"SuggesterStatus"} - }, - "documentation":"

The result of a DefineSuggester request. Contains the status of the newly-configured suggester.

" - }, - "DeleteAnalysisSchemeRequest":{ - "type":"structure", - "required":[ - "DomainName", - "AnalysisSchemeName" - ], - "members":{ - "DomainName":{"shape":"DomainName"}, - "AnalysisSchemeName":{ - "shape":"StandardName", - "documentation":"

The name of the analysis scheme you want to delete.

" - } - }, - "documentation":"

Container for the parameters to the DeleteAnalysisScheme operation. Specifies the name of the domain you want to update and the analysis scheme you want to delete.

" - }, - "DeleteAnalysisSchemeResponse":{ - "type":"structure", - "required":["AnalysisScheme"], - "members":{ - "AnalysisScheme":{ - "shape":"AnalysisSchemeStatus", - "documentation":"

The status of the analysis scheme being deleted.

" - } - }, - "documentation":"

The result of a DeleteAnalysisScheme request. Contains the status of the deleted analysis scheme.

" - }, - "DeleteDomainRequest":{ - "type":"structure", - "required":["DomainName"], - "members":{ - "DomainName":{ - "shape":"DomainName", - "documentation":"

The name of the domain you want to permanently delete.

" - } - }, - "documentation":"

Container for the parameters to the DeleteDomain operation. Specifies the name of the domain you want to delete.

" - }, - "DeleteDomainResponse":{ - "type":"structure", - "members":{ - "DomainStatus":{"shape":"DomainStatus"} - }, - "documentation":"

The result of a DeleteDomain request. Contains the status of a newly deleted domain, or no status if the domain has already been completely deleted.

" - }, - "DeleteExpressionRequest":{ - "type":"structure", - "required":[ - "DomainName", - "ExpressionName" - ], - "members":{ - "DomainName":{"shape":"DomainName"}, - "ExpressionName":{ - "shape":"StandardName", - "documentation":"

The name of the Expression to delete.

" - } - }, - "documentation":"

Container for the parameters to the DeleteExpression operation. Specifies the name of the domain you want to update and the name of the expression you want to delete.

" - }, - "DeleteExpressionResponse":{ - "type":"structure", - "required":["Expression"], - "members":{ - "Expression":{ - "shape":"ExpressionStatus", - "documentation":"

The status of the expression being deleted.

" - } - }, - "documentation":"

The result of a DeleteExpression request. Specifies the expression being deleted.

" - }, - "DeleteIndexFieldRequest":{ - "type":"structure", - "required":[ - "DomainName", - "IndexFieldName" - ], - "members":{ - "DomainName":{"shape":"DomainName"}, - "IndexFieldName":{ - "shape":"DynamicFieldName", - "documentation":"

The name of the index field your want to remove from the domain's indexing options.

" - } - }, - "documentation":"

Container for the parameters to the DeleteIndexField operation. Specifies the name of the domain you want to update and the name of the index field you want to delete.

" - }, - "DeleteIndexFieldResponse":{ - "type":"structure", - "required":["IndexField"], - "members":{ - "IndexField":{ - "shape":"IndexFieldStatus", - "documentation":"

The status of the index field being deleted.

" - } - }, - "documentation":"

The result of a DeleteIndexField request.

" - }, - "DeleteSuggesterRequest":{ - "type":"structure", - "required":[ - "DomainName", - "SuggesterName" - ], - "members":{ - "DomainName":{"shape":"DomainName"}, - "SuggesterName":{ - "shape":"StandardName", - "documentation":"

Specifies the name of the suggester you want to delete.

" - } - }, - "documentation":"

Container for the parameters to the DeleteSuggester operation. Specifies the name of the domain you want to update and name of the suggester you want to delete.

" - }, - "DeleteSuggesterResponse":{ - "type":"structure", - "required":["Suggester"], - "members":{ - "Suggester":{ - "shape":"SuggesterStatus", - "documentation":"

The status of the suggester being deleted.

" - } - }, - "documentation":"

The result of a DeleteSuggester request. Contains the status of the deleted suggester.

" - }, - "DescribeAnalysisSchemesRequest":{ - "type":"structure", - "required":["DomainName"], - "members":{ - "DomainName":{ - "shape":"DomainName", - "documentation":"

The name of the domain you want to describe.

" - }, - "AnalysisSchemeNames":{ - "shape":"StandardNameList", - "documentation":"

The analysis schemes you want to describe.

" - }, - "Deployed":{ - "shape":"Boolean", - "documentation":"

Whether to display the deployed configuration (true) or include any pending changes (false). Defaults to false.

" - } - }, - "documentation":"

Container for the parameters to the DescribeAnalysisSchemes operation. Specifies the name of the domain you want to describe. To limit the response to particular analysis schemes, specify the names of the analysis schemes you want to describe. To show the active configuration and exclude any pending changes, set the Deployed option to true.

" - }, - "DescribeAnalysisSchemesResponse":{ - "type":"structure", - "required":["AnalysisSchemes"], - "members":{ - "AnalysisSchemes":{ - "shape":"AnalysisSchemeStatusList", - "documentation":"

The analysis scheme descriptions.

" - } - }, - "documentation":"

The result of a DescribeAnalysisSchemes request. Contains the analysis schemes configured for the domain specified in the request.

" - }, - "DescribeAvailabilityOptionsRequest":{ - "type":"structure", - "required":["DomainName"], - "members":{ - "DomainName":{ - "shape":"DomainName", - "documentation":"

The name of the domain you want to describe.

" - }, - "Deployed":{ - "shape":"Boolean", - "documentation":"

Whether to display the deployed configuration (true) or include any pending changes (false). Defaults to false.

" - } - }, - "documentation":"

Container for the parameters to the DescribeAvailabilityOptions operation. Specifies the name of the domain you want to describe. To show the active configuration and exclude any pending changes, set the Deployed option to true.

" - }, - "DescribeAvailabilityOptionsResponse":{ - "type":"structure", - "members":{ - "AvailabilityOptions":{ - "shape":"AvailabilityOptionsStatus", - "documentation":"

The availability options configured for the domain. Indicates whether Multi-AZ is enabled for the domain.

" - } - }, - "documentation":"

The result of a DescribeAvailabilityOptions request. Indicates whether or not the Multi-AZ option is enabled for the domain specified in the request.

" - }, - "DescribeDomainsRequest":{ - "type":"structure", - "members":{ - "DomainNames":{ - "shape":"DomainNameList", - "documentation":"

The names of the domains you want to include in the response.

" - } - }, - "documentation":"

Container for the parameters to the DescribeDomains operation. By default shows the status of all domains. To restrict the response to particular domains, specify the names of the domains you want to describe.

" - }, - "DescribeDomainsResponse":{ - "type":"structure", - "required":["DomainStatusList"], - "members":{ - "DomainStatusList":{"shape":"DomainStatusList"} - }, - "documentation":"

The result of a DescribeDomains request. Contains the status of the domains specified in the request or all domains owned by the account.

" - }, - "DescribeExpressionsRequest":{ - "type":"structure", - "required":["DomainName"], - "members":{ - "DomainName":{ - "shape":"DomainName", - "documentation":"

The name of the domain you want to describe.

" - }, - "ExpressionNames":{ - "shape":"StandardNameList", - "documentation":"

Limits the DescribeExpressions response to the specified expressions. If not specified, all expressions are shown.

" - }, - "Deployed":{ - "shape":"Boolean", - "documentation":"

Whether to display the deployed configuration (true) or include any pending changes (false). Defaults to false.

" - } - }, - "documentation":"

Container for the parameters to the DescribeDomains operation. Specifies the name of the domain you want to describe. To restrict the response to particular expressions, specify the names of the expressions you want to describe. To show the active configuration and exclude any pending changes, set the Deployed option to true.

" - }, - "DescribeExpressionsResponse":{ - "type":"structure", - "required":["Expressions"], - "members":{ - "Expressions":{ - "shape":"ExpressionStatusList", - "documentation":"

The expressions configured for the domain.

" - } - }, - "documentation":"

The result of a DescribeExpressions request. Contains the expressions configured for the domain specified in the request.

" - }, - "DescribeIndexFieldsRequest":{ - "type":"structure", - "required":["DomainName"], - "members":{ - "DomainName":{ - "shape":"DomainName", - "documentation":"

The name of the domain you want to describe.

" - }, - "FieldNames":{ - "shape":"DynamicFieldNameList", - "documentation":"

A list of the index fields you want to describe. If not specified, information is returned for all configured index fields.

" - }, - "Deployed":{ - "shape":"Boolean", - "documentation":"

Whether to display the deployed configuration (true) or include any pending changes (false). Defaults to false.

" - } - }, - "documentation":"

Container for the parameters to the DescribeIndexFields operation. Specifies the name of the domain you want to describe. To restrict the response to particular index fields, specify the names of the index fields you want to describe. To show the active configuration and exclude any pending changes, set the Deployed option to true.

" - }, - "DescribeIndexFieldsResponse":{ - "type":"structure", - "required":["IndexFields"], - "members":{ - "IndexFields":{ - "shape":"IndexFieldStatusList", - "documentation":"

The index fields configured for the domain.

" - } - }, - "documentation":"

The result of a DescribeIndexFields request. Contains the index fields configured for the domain specified in the request.

" - }, - "DescribeScalingParametersRequest":{ - "type":"structure", - "required":["DomainName"], - "members":{ - "DomainName":{"shape":"DomainName"} - }, - "documentation":"

Container for the parameters to the DescribeScalingParameters operation. Specifies the name of the domain you want to describe.

" - }, - "DescribeScalingParametersResponse":{ - "type":"structure", - "required":["ScalingParameters"], - "members":{ - "ScalingParameters":{"shape":"ScalingParametersStatus"} - }, - "documentation":"

The result of a DescribeScalingParameters request. Contains the scaling parameters configured for the domain specified in the request.

" - }, - "DescribeServiceAccessPoliciesRequest":{ - "type":"structure", - "required":["DomainName"], - "members":{ - "DomainName":{ - "shape":"DomainName", - "documentation":"

The name of the domain you want to describe.

" - }, - "Deployed":{ - "shape":"Boolean", - "documentation":"

Whether to display the deployed configuration (true) or include any pending changes (false). Defaults to false.

" - } - }, - "documentation":"

Container for the parameters to the DescribeServiceAccessPolicies operation. Specifies the name of the domain you want to describe. To show the active configuration and exclude any pending changes, set the Deployed option to true.

" - }, - "DescribeServiceAccessPoliciesResponse":{ - "type":"structure", - "required":["AccessPolicies"], - "members":{ - "AccessPolicies":{ - "shape":"AccessPoliciesStatus", - "documentation":"

The access rules configured for the domain specified in the request.

" - } - }, - "documentation":"

The result of a DescribeServiceAccessPolicies request.

" - }, - "DescribeSuggestersRequest":{ - "type":"structure", - "required":["DomainName"], - "members":{ - "DomainName":{ - "shape":"DomainName", - "documentation":"

The name of the domain you want to describe.

" - }, - "SuggesterNames":{ - "shape":"StandardNameList", - "documentation":"

The suggesters you want to describe.

" - }, - "Deployed":{ - "shape":"Boolean", - "documentation":"

Whether to display the deployed configuration (true) or include any pending changes (false). Defaults to false.

" - } - }, - "documentation":"

Container for the parameters to the DescribeSuggester operation. Specifies the name of the domain you want to describe. To restrict the response to particular suggesters, specify the names of the suggesters you want to describe. To show the active configuration and exclude any pending changes, set the Deployed option to true.

" - }, - "DescribeSuggestersResponse":{ - "type":"structure", - "required":["Suggesters"], - "members":{ - "Suggesters":{ - "shape":"SuggesterStatusList", - "documentation":"

The suggesters configured for the domain specified in the request.

" - } - }, - "documentation":"

The result of a DescribeSuggesters request.

" - }, - "DisabledOperationException":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"DisabledAction", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it attempted an operation which is not enabled.

" - }, - "DocumentSuggesterOptions":{ - "type":"structure", - "required":["SourceField"], - "members":{ - "SourceField":{ - "shape":"FieldName", - "documentation":"

The name of the index field you want to use for suggestions.

" - }, - "FuzzyMatching":{ - "shape":"SuggesterFuzzyMatching", - "documentation":"

The level of fuzziness allowed when suggesting matches for a string: none, low, or high. With none, the specified string is treated as an exact prefix. With low, suggestions must differ from the specified string by no more than one character. With high, suggestions can differ by up to two characters. The default is none.

" - }, - "SortExpression":{ - "shape":"String", - "documentation":"

An expression that computes a score for each suggestion to control how they are sorted. The scores are rounded to the nearest integer, with a floor of 0 and a ceiling of 2^31-1. A document's relevance score is not computed for suggestions, so sort expressions cannot reference the _score value. To sort suggestions using a numeric field or existing expression, simply specify the name of the field or expression. If no expression is configured for the suggester, the suggestions are sorted with the closest matches listed first.

" - } - }, - "documentation":"

Options for a search suggester.

" - }, - "DomainId":{ - "type":"string", - "min":1, - "max":64, - "documentation":"

An internally generated unique identifier for a domain.

" - }, - "DomainName":{ - "type":"string", - "min":3, - "max":28, - "pattern":"[a-z][a-z0-9\\-]+", - "documentation":"

A string that represents the name of a domain. Domain names are unique across the domains owned by an account within an AWS region. Domain names start with a letter or number and can contain the following characters: a-z (lowercase), 0-9, and - (hyphen).

" - }, - "DomainNameList":{ - "type":"list", - "member":{"shape":"DomainName"}, - "documentation":"

A list of domain names.

" - }, - "DomainNameMap":{ - "type":"map", - "key":{"shape":"DomainName"}, - "value":{"shape":"APIVersion"}, - "documentation":"

A collection of domain names.

" - }, - "DomainStatus":{ - "type":"structure", - "required":[ - "DomainId", - "DomainName", - "RequiresIndexDocuments" - ], - "members":{ - "DomainId":{"shape":"DomainId"}, - "DomainName":{"shape":"DomainName"}, - "ARN":{"shape":"ARN"}, - "Created":{ - "shape":"Boolean", - "documentation":"

True if the search domain is created. It can take several minutes to initialize a domain when CreateDomain is called. Newly created search domains are returned from DescribeDomains with a false value for Created until domain creation is complete.

" - }, - "Deleted":{ - "shape":"Boolean", - "documentation":"

True if the search domain has been deleted. The system must clean up resources dedicated to the search domain when DeleteDomain is called. Newly deleted search domains are returned from DescribeDomains with a true value for IsDeleted for several minutes until resource cleanup is complete.

" - }, - "DocService":{ - "shape":"ServiceEndpoint", - "documentation":"

The service endpoint for updating documents in a search domain.

" - }, - "SearchService":{ - "shape":"ServiceEndpoint", - "documentation":"

The service endpoint for requesting search results from a search domain.

" - }, - "RequiresIndexDocuments":{ - "shape":"Boolean", - "documentation":"

True if IndexDocuments needs to be called to activate the current domain configuration.

" - }, - "Processing":{ - "shape":"Boolean", - "documentation":"

True if processing is being done to activate the current domain configuration.

" - }, - "SearchInstanceType":{ - "shape":"SearchInstanceType", - "documentation":"

The instance type that is being used to process search requests.

" - }, - "SearchPartitionCount":{ - "shape":"PartitionCount", - "documentation":"

The number of partitions across which the search index is spread.

" - }, - "SearchInstanceCount":{ - "shape":"InstanceCount", - "documentation":"

The number of search instances that are available to process search requests.

" - }, - "Limits":{"shape":"Limits"} - }, - "documentation":"

The current status of the search domain.

" - }, - "DomainStatusList":{ - "type":"list", - "member":{"shape":"DomainStatus"}, - "documentation":"

A list that contains the status of each requested domain.

" - }, - "Double":{"type":"double"}, - "DoubleArrayOptions":{ - "type":"structure", - "members":{ - "DefaultValue":{ - "shape":"Double", - "documentation":"A value to use for the field if the field isn't specified for a document." - }, - "SourceFields":{ - "shape":"FieldNameCommaList", - "documentation":"

A list of source fields to map to the field.

" - }, - "FacetEnabled":{ - "shape":"Boolean", - "documentation":"

Whether facet information can be returned for the field.

" - }, - "SearchEnabled":{ - "shape":"Boolean", - "documentation":"

Whether the contents of the field are searchable.

" - }, - "ReturnEnabled":{ - "shape":"Boolean", - "documentation":"

Whether the contents of the field can be returned in the search results.

" - } - }, - "documentation":"

Options for a field that contains an array of double-precision 64-bit floating point values. Present if IndexFieldType specifies the field is of type double-array. All options are enabled by default.

" - }, - "DoubleOptions":{ - "type":"structure", - "members":{ - "DefaultValue":{ - "shape":"Double", - "documentation":"

A value to use for the field if the field isn't specified for a document. This can be important if you are using the field in an expression and that field is not present in every document.

" - }, - "SourceField":{ - "shape":"FieldName", - "documentation":"

The name of the source field to map to the field.

" - }, - "FacetEnabled":{ - "shape":"Boolean", - "documentation":"

Whether facet information can be returned for the field.

" - }, - "SearchEnabled":{ - "shape":"Boolean", - "documentation":"

Whether the contents of the field are searchable.

" - }, - "ReturnEnabled":{ - "shape":"Boolean", - "documentation":"

Whether the contents of the field can be returned in the search results.

" - }, - "SortEnabled":{ - "shape":"Boolean", - "documentation":"

Whether the field can be used to sort the search results.

" - } - }, - "documentation":"

Options for a double-precision 64-bit floating point field. Present if IndexFieldType specifies the field is of type double. All options are enabled by default.

" - }, - "DynamicFieldName":{ - "type":"string", - "min":1, - "max":64, - "pattern":"([a-z][a-z0-9_]*\\*?|\\*[a-z0-9_]*)", - "documentation":"

A string that represents the name of an index field. CloudSearch supports regular index fields as well as dynamic fields. A dynamic field's name defines a pattern that begins or ends with a wildcard. Any document fields that don't map to a regular index field but do match a dynamic field's pattern are configured with the dynamic field's indexing options.

Field names begin with a letter and can contain the following characters: a-z (lowercase), 0-9, and _ (underscore). Dynamic field names must begin or end with a wildcard (*). The wildcard can also be the only character in a dynamic field name. Multiple wildcards, and wildcards embedded within a string are not supported.

The name score is reserved and cannot be used as a field name. To reference a document's ID, you can use the name _id.

" - }, - "DynamicFieldNameList":{ - "type":"list", - "member":{"shape":"DynamicFieldName"} - }, - "ErrorCode":{ - "type":"string", - "documentation":"

A machine-parsable string error or warning code.

" - }, - "ErrorMessage":{ - "type":"string", - "documentation":"

A human-readable string error or warning message.

" - }, - "Expression":{ - "type":"structure", - "required":[ - "ExpressionName", - "ExpressionValue" - ], - "members":{ - "ExpressionName":{"shape":"StandardName"}, - "ExpressionValue":{"shape":"ExpressionValue"} - }, - "documentation":"

A named expression that can be evaluated at search time. Can be used to sort the search results, define other expressions, or return computed information in the search results.

" - }, - "ExpressionStatus":{ - "type":"structure", - "required":[ - "Options", - "Status" - ], - "members":{ - "Options":{ - "shape":"Expression", - "documentation":"

The expression that is evaluated for sorting while processing a search request.

" - }, - "Status":{"shape":"OptionStatus"} - }, - "documentation":"

The value of an Expression and its current status.

" - }, - "ExpressionStatusList":{ - "type":"list", - "member":{"shape":"ExpressionStatus"}, - "documentation":"

Contains the status of multiple expressions.

" - }, - "ExpressionValue":{ - "type":"string", - "min":1, - "max":10240, - "documentation":"

The expression to evaluate for sorting while processing a search request. The Expression syntax is based on JavaScript expressions. For more information, see Configuring Expressions in the Amazon CloudSearch Developer Guide.

" - }, - "FieldName":{ - "type":"string", - "min":1, - "max":64, - "pattern":"[a-z][a-z0-9_]*", - "documentation":"

A string that represents the name of an index field. Field names begin with a letter and can contain the following characters: a-z (lowercase), 0-9, and _ (underscore). The name \"score\" is reserved and cannot be used as a field name. To reference a document's ID, you can use the name _id.

" - }, - "FieldNameCommaList":{ - "type":"string", - "pattern":"\\s*[a-z*][a-z0-9_]*\\*?\\s*(,\\s*[a-z*][a-z0-9_]*\\*?\\s*)*" - }, - "FieldNameList":{ - "type":"list", - "member":{"shape":"FieldName"}, - "documentation":"

A list of field names.

" - }, - "FieldValue":{ - "type":"string", - "min":0, - "max":1024, - "documentation":"

The value of a field attribute.

" - }, - "IndexDocumentsRequest":{ - "type":"structure", - "required":["DomainName"], - "members":{ - "DomainName":{"shape":"DomainName"} - }, - "documentation":"

Container for the parameters to the IndexDocuments operation. Specifies the name of the domain you want to re-index.

" - }, - "IndexDocumentsResponse":{ - "type":"structure", - "members":{ - "FieldNames":{ - "shape":"FieldNameList", - "documentation":"

The names of the fields that are currently being indexed.

" - } - }, - "documentation":"

The result of an IndexDocuments request. Contains the status of the indexing operation, including the fields being indexed.

" - }, - "IndexField":{ - "type":"structure", - "required":[ - "IndexFieldName", - "IndexFieldType" - ], - "members":{ - "IndexFieldName":{ - "shape":"DynamicFieldName", - "documentation":"

The name of a field in the search index. Field names must begin with a letter and can contain the following characters: a-z (lowercase), 0-9, and _ (underscore). Uppercase letters and hyphens are not allowed. The name \"score\" is reserved and cannot be specified as field or expression name.

" - }, - "IndexFieldType":{"shape":"IndexFieldType"}, - "IntOptions":{"shape":"IntOptions"}, - "DoubleOptions":{"shape":"DoubleOptions"}, - "LiteralOptions":{"shape":"LiteralOptions"}, - "TextOptions":{"shape":"TextOptions"}, - "DateOptions":{"shape":"DateOptions"}, - "LatLonOptions":{"shape":"LatLonOptions"}, - "IntArrayOptions":{"shape":"IntArrayOptions"}, - "DoubleArrayOptions":{"shape":"DoubleArrayOptions"}, - "LiteralArrayOptions":{"shape":"LiteralArrayOptions"}, - "TextArrayOptions":{"shape":"TextArrayOptions"}, - "DateArrayOptions":{"shape":"DateArrayOptions"} - }, - "documentation":"

Configuration information for a field in the index, including its name, type, and options. The supported options depend on the IndexFieldType.

" - }, - "IndexFieldStatus":{ - "type":"structure", - "required":[ - "Options", - "Status" - ], - "members":{ - "Options":{"shape":"IndexField"}, - "Status":{"shape":"OptionStatus"} - }, - "documentation":"

The value of an IndexField and its current status.

" - }, - "IndexFieldStatusList":{ - "type":"list", - "member":{"shape":"IndexFieldStatus"}, - "documentation":"

Contains the status of multiple index fields.

" - }, - "IndexFieldType":{ - "type":"string", - "enum":[ - "int", - "double", - "literal", - "text", - "date", - "latlon", - "int-array", - "double-array", - "literal-array", - "text-array", - "date-array" - ], - "documentation":"

The type of field. The valid options for a field depend on the field type. For more information about the supported field types, see Configuring Index Fields in the Amazon CloudSearch Developer Guide.

" - }, - "InstanceCount":{ - "type":"integer", - "min":1 - }, - "IntArrayOptions":{ - "type":"structure", - "members":{ - "DefaultValue":{ - "shape":"Long", - "documentation":"A value to use for the field if the field isn't specified for a document." - }, - "SourceFields":{ - "shape":"FieldNameCommaList", - "documentation":"

A list of source fields to map to the field.

" - }, - "FacetEnabled":{ - "shape":"Boolean", - "documentation":"

Whether facet information can be returned for the field.

" - }, - "SearchEnabled":{ - "shape":"Boolean", - "documentation":"

Whether the contents of the field are searchable.

" - }, - "ReturnEnabled":{ - "shape":"Boolean", - "documentation":"

Whether the contents of the field can be returned in the search results.

" - } - }, - "documentation":"

Options for a field that contains an array of 64-bit signed integers. Present if IndexFieldType specifies the field is of type int-array. All options are enabled by default.

" - }, - "IntOptions":{ - "type":"structure", - "members":{ - "DefaultValue":{ - "shape":"Long", - "documentation":"A value to use for the field if the field isn't specified for a document. This can be important if you are using the field in an expression and that field is not present in every document." - }, - "SourceField":{ - "shape":"FieldName", - "documentation":"

The name of the source field to map to the field.

" - }, - "FacetEnabled":{ - "shape":"Boolean", - "documentation":"

Whether facet information can be returned for the field.

" - }, - "SearchEnabled":{ - "shape":"Boolean", - "documentation":"

Whether the contents of the field are searchable.

" - }, - "ReturnEnabled":{ - "shape":"Boolean", - "documentation":"

Whether the contents of the field can be returned in the search results.

" - }, - "SortEnabled":{ - "shape":"Boolean", - "documentation":"

Whether the field can be used to sort the search results.

" - } - }, - "documentation":"

Options for a 64-bit signed integer field. Present if IndexFieldType specifies the field is of type int. All options are enabled by default.

" - }, - "InternalException":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"InternalException", - "httpStatusCode":500 - }, - "exception":true, - "documentation":"

An internal error occurred while processing the request. If this problem persists, report an issue from the Service Health Dashboard.

" - }, - "InvalidTypeException":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"InvalidType", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it specified an invalid type definition.

" - }, - "LatLonOptions":{ - "type":"structure", - "members":{ - "DefaultValue":{ - "shape":"FieldValue", - "documentation":"A value to use for the field if the field isn't specified for a document." - }, - "SourceField":{"shape":"FieldName"}, - "FacetEnabled":{ - "shape":"Boolean", - "documentation":"

Whether facet information can be returned for the field.

" - }, - "SearchEnabled":{ - "shape":"Boolean", - "documentation":"

Whether the contents of the field are searchable.

" - }, - "ReturnEnabled":{ - "shape":"Boolean", - "documentation":"

Whether the contents of the field can be returned in the search results.

" - }, - "SortEnabled":{ - "shape":"Boolean", - "documentation":"

Whether the field can be used to sort the search results.

" - } - }, - "documentation":"

Options for a latlon field. A latlon field contains a location stored as a latitude and longitude value pair. Present if IndexFieldType specifies the field is of type latlon. All options are enabled by default.

" - }, - "LimitExceededException":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"LimitExceeded", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because a resource limit has already been met.

" - }, - "Limits":{ - "type":"structure", - "required":[ - "MaximumReplicationCount", - "MaximumPartitionCount" - ], - "members":{ - "MaximumReplicationCount":{"shape":"MaximumReplicationCount"}, - "MaximumPartitionCount":{"shape":"MaximumPartitionCount"} - } - }, - "ListDomainNamesResponse":{ - "type":"structure", - "members":{ - "DomainNames":{ - "shape":"DomainNameMap", - "documentation":"

The names of the search domains owned by an account.

" - } - }, - "documentation":"

The result of a ListDomainNames request. Contains a list of the domains owned by an account.

" - }, - "LiteralArrayOptions":{ - "type":"structure", - "members":{ - "DefaultValue":{ - "shape":"FieldValue", - "documentation":"A value to use for the field if the field isn't specified for a document." - }, - "SourceFields":{ - "shape":"FieldNameCommaList", - "documentation":"

A list of source fields to map to the field.

" - }, - "FacetEnabled":{ - "shape":"Boolean", - "documentation":"

Whether facet information can be returned for the field.

" - }, - "SearchEnabled":{ - "shape":"Boolean", - "documentation":"

Whether the contents of the field are searchable.

" - }, - "ReturnEnabled":{ - "shape":"Boolean", - "documentation":"

Whether the contents of the field can be returned in the search results.

" - } - }, - "documentation":"

Options for a field that contains an array of literal strings. Present if IndexFieldType specifies the field is of type literal-array. All options are enabled by default.

" - }, - "LiteralOptions":{ - "type":"structure", - "members":{ - "DefaultValue":{ - "shape":"FieldValue", - "documentation":"A value to use for the field if the field isn't specified for a document." - }, - "SourceField":{"shape":"FieldName"}, - "FacetEnabled":{ - "shape":"Boolean", - "documentation":"

Whether facet information can be returned for the field.

" - }, - "SearchEnabled":{ - "shape":"Boolean", - "documentation":"

Whether the contents of the field are searchable.

" - }, - "ReturnEnabled":{ - "shape":"Boolean", - "documentation":"

Whether the contents of the field can be returned in the search results.

" - }, - "SortEnabled":{ - "shape":"Boolean", - "documentation":"

Whether the field can be used to sort the search results.

" - } - }, - "documentation":"

Options for literal field. Present if IndexFieldType specifies the field is of type literal. All options are enabled by default.

" - }, - "Long":{"type":"long"}, - "MaximumPartitionCount":{ - "type":"integer", - "min":1 - }, - "MaximumReplicationCount":{ - "type":"integer", - "min":1 - }, - "MultiAZ":{"type":"boolean"}, - "OptionState":{ - "type":"string", - "enum":[ - "RequiresIndexDocuments", - "Processing", - "Active", - "FailedToValidate" - ], - "documentation":"

The state of processing a change to an option. One of:

" - }, - "OptionStatus":{ - "type":"structure", - "required":[ - "CreationDate", - "UpdateDate", - "State" - ], - "members":{ - "CreationDate":{ - "shape":"UpdateTimestamp", - "documentation":"

A timestamp for when this option was created.

" - }, - "UpdateDate":{ - "shape":"UpdateTimestamp", - "documentation":"

A timestamp for when this option was last updated.

" - }, - "UpdateVersion":{ - "shape":"UIntValue", - "documentation":"

A unique integer that indicates when this option was last updated.

" - }, - "State":{ - "shape":"OptionState", - "documentation":"

The state of processing a change to an option. Possible values:

" - }, - "PendingDeletion":{ - "shape":"Boolean", - "documentation":"

Indicates that the option will be deleted once processing is complete.

" - } - }, - "documentation":"

The status of domain configuration option.

" - }, - "PartitionCount":{ - "type":"integer", - "min":1, - "documentation":"

The number of partitions used to hold the domain's index.

" - }, - "PartitionInstanceType":{ - "type":"string", - "enum":[ - "search.m1.small", - "search.m1.large", - "search.m2.xlarge", - "search.m2.2xlarge" - ], - "documentation":"

The instance type (such as search.m1.small) on which an index partition is hosted.

" - }, - "PolicyDocument":{ - "type":"string", - "documentation":"

Access rules for a domain's document or search service endpoints. For more information, see Configuring Access for a Search Domain in the Amazon CloudSearch Developer Guide. The maximum size of a policy document is 100 KB.

" - }, - "ResourceNotFoundException":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"ResourceNotFound", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it attempted to reference a resource that does not exist.

" - }, - "ScalingParameters":{ - "type":"structure", - "members":{ - "DesiredInstanceType":{ - "shape":"PartitionInstanceType", - "documentation":"

The instance type that you want to preconfigure for your domain. For example, search.m1.small.

" - }, - "DesiredReplicationCount":{ - "shape":"UIntValue", - "documentation":"

The number of replicas you want to preconfigure for each index partition.

" - }, - "DesiredPartitionCount":{ - "shape":"UIntValue", - "documentation":"

The number of partitions you want to preconfigure for your domain. Only valid when you select m2.2xlarge as the desired instance type.

" - } - }, - "documentation":"

The desired instance type and desired number of replicas of each index partition.

" - }, - "ScalingParametersStatus":{ - "type":"structure", - "required":[ - "Options", - "Status" - ], - "members":{ - "Options":{"shape":"ScalingParameters"}, - "Status":{"shape":"OptionStatus"} - }, - "documentation":"

The status and configuration of a search domain's scaling parameters.

" - }, - "SearchInstanceType":{ - "type":"string", - "documentation":"

The instance type (such as search.m1.small) that is being used to process search requests.

" - }, - "ServiceEndpoint":{ - "type":"structure", - "members":{ - "Endpoint":{"shape":"ServiceUrl"} - }, - "documentation":"

The endpoint to which service requests can be submitted.

" - }, - "ServiceUrl":{ - "type":"string", - "documentation":"

The endpoint to which service requests can be submitted. For example, search-imdb-movies-oopcnjfn6ugofer3zx5iadxxca.eu-west-1.cloudsearch.amazonaws.com or doc-imdb-movies-oopcnjfn6ugofer3zx5iadxxca.eu-west-1.cloudsearch.amazonaws.com.

" - }, - "StandardName":{ - "type":"string", - "min":1, - "max":64, - "pattern":"[a-z][a-z0-9_]*", - "documentation":"

Names must begin with a letter and can contain the following characters: a-z (lowercase), 0-9, and _ (underscore).

" - }, - "StandardNameList":{ - "type":"list", - "member":{"shape":"StandardName"} - }, - "String":{"type":"string"}, - "Suggester":{ - "type":"structure", - "required":[ - "SuggesterName", - "DocumentSuggesterOptions" - ], - "members":{ - "SuggesterName":{"shape":"StandardName"}, - "DocumentSuggesterOptions":{"shape":"DocumentSuggesterOptions"} - }, - "documentation":"

Configuration information for a search suggester. Each suggester has a unique name and specifies the text field you want to use for suggestions. The following options can be configured for a suggester: FuzzyMatching, SortExpression.

" - }, - "SuggesterFuzzyMatching":{ - "type":"string", - "enum":[ - "none", - "low", - "high" - ] - }, - "SuggesterStatus":{ - "type":"structure", - "required":[ - "Options", - "Status" - ], - "members":{ - "Options":{"shape":"Suggester"}, - "Status":{"shape":"OptionStatus"} - }, - "documentation":"

The value of a Suggester and its current status.

" - }, - "SuggesterStatusList":{ - "type":"list", - "member":{"shape":"SuggesterStatus"}, - "documentation":"

Contains the status of multiple suggesters.

" - }, - "TextArrayOptions":{ - "type":"structure", - "members":{ - "DefaultValue":{ - "shape":"FieldValue", - "documentation":"A value to use for the field if the field isn't specified for a document." - }, - "SourceFields":{ - "shape":"FieldNameCommaList", - "documentation":"

A list of source fields to map to the field.

" - }, - "ReturnEnabled":{ - "shape":"Boolean", - "documentation":"

Whether the contents of the field can be returned in the search results.

" - }, - "HighlightEnabled":{ - "shape":"Boolean", - "documentation":"

Whether highlights can be returned for the field.

" - }, - "AnalysisScheme":{ - "shape":"Word", - "documentation":"

The name of an analysis scheme for a text-array field.

" - } - }, - "documentation":"

Options for a field that contains an array of text strings. Present if IndexFieldType specifies the field is of type text-array. A text-array field is always searchable. All options are enabled by default.

" - }, - "TextOptions":{ - "type":"structure", - "members":{ - "DefaultValue":{ - "shape":"FieldValue", - "documentation":"A value to use for the field if the field isn't specified for a document." - }, - "SourceField":{"shape":"FieldName"}, - "ReturnEnabled":{ - "shape":"Boolean", - "documentation":"

Whether the contents of the field can be returned in the search results.

" - }, - "SortEnabled":{ - "shape":"Boolean", - "documentation":"

Whether the field can be used to sort the search results.

" - }, - "HighlightEnabled":{ - "shape":"Boolean", - "documentation":"

Whether highlights can be returned for the field.

" - }, - "AnalysisScheme":{ - "shape":"Word", - "documentation":"

The name of an analysis scheme for a text field.

" - } - }, - "documentation":"

Options for text field. Present if IndexFieldType specifies the field is of type text. A text field is always searchable. All options are enabled by default.

" - }, - "UIntValue":{ - "type":"integer", - "min":0 - }, - "UpdateAvailabilityOptionsRequest":{ - "type":"structure", - "required":[ - "DomainName", - "MultiAZ" - ], - "members":{ - "DomainName":{"shape":"DomainName"}, - "MultiAZ":{ - "shape":"Boolean", - "documentation":"

You expand an existing search domain to a second Availability Zone by setting the Multi-AZ option to true. Similarly, you can turn off the Multi-AZ option to downgrade the domain to a single Availability Zone by setting the Multi-AZ option to false.

" - } - }, - "documentation":"

Container for the parameters to the UpdateAvailabilityOptions operation. Specifies the name of the domain you want to update and the Multi-AZ availability option.

" - }, - "UpdateAvailabilityOptionsResponse":{ - "type":"structure", - "members":{ - "AvailabilityOptions":{ - "shape":"AvailabilityOptionsStatus", - "documentation":"

The newly-configured availability options. Indicates whether Multi-AZ is enabled for the domain.

" - } - }, - "documentation":"

The result of a UpdateAvailabilityOptions request. Contains the status of the domain's availability options.

" - }, - "UpdateScalingParametersRequest":{ - "type":"structure", - "required":[ - "DomainName", - "ScalingParameters" - ], - "members":{ - "DomainName":{"shape":"DomainName"}, - "ScalingParameters":{"shape":"ScalingParameters"} - }, - "documentation":"

Container for the parameters to the UpdateScalingParameters operation. Specifies the name of the domain you want to update and the scaling parameters you want to configure.

" - }, - "UpdateScalingParametersResponse":{ - "type":"structure", - "required":["ScalingParameters"], - "members":{ - "ScalingParameters":{"shape":"ScalingParametersStatus"} - }, - "documentation":"

The result of a UpdateScalingParameters request. Contains the status of the newly-configured scaling parameters.

" - }, - "UpdateServiceAccessPoliciesRequest":{ - "type":"structure", - "required":[ - "DomainName", - "AccessPolicies" - ], - "members":{ - "DomainName":{"shape":"DomainName"}, - "AccessPolicies":{ - "shape":"PolicyDocument", - "documentation":"

The access rules you want to configure. These rules replace any existing rules.

" - } - }, - "documentation":"

Container for the parameters to the UpdateServiceAccessPolicies operation. Specifies the name of the domain you want to update and the access rules you want to configure.

" - }, - "UpdateServiceAccessPoliciesResponse":{ - "type":"structure", - "required":["AccessPolicies"], - "members":{ - "AccessPolicies":{ - "shape":"AccessPoliciesStatus", - "documentation":"

The access rules configured for the domain.

" - } - }, - "documentation":"

The result of an UpdateServiceAccessPolicies request. Contains the new access policies.

" - }, - "UpdateTimestamp":{"type":"timestamp"}, - "Word":{ - "type":"string", - "pattern":"[\\S]+" - } - } -} diff --git a/src/github.com/getlantern/aws-sdk-go/apis/cloudsearchdomain/2013-01-01.normal.json b/src/github.com/getlantern/aws-sdk-go/apis/cloudsearchdomain/2013-01-01.normal.json deleted file mode 100644 index 69d936c0c6..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/apis/cloudsearchdomain/2013-01-01.normal.json +++ /dev/null @@ -1,510 +0,0 @@ -{ - "metadata":{ - "apiVersion":"2013-01-01", - "endpointPrefix":"cloudsearchdomain", - "jsonVersion":"1.1", - "serviceFullName":"Amazon CloudSearch Domain", - "signatureVersion":"v4", - "signingName":"cloudsearch", - "protocol":"rest-json" - }, - "documentation":"

You use the AmazonCloudSearch2013 API to upload documents to a search domain and search those documents.

The endpoints for submitting UploadDocuments, Search, and Suggest requests are domain-specific. To get the endpoints for your domain, use the Amazon CloudSearch configuration service DescribeDomains action. The domain endpoints are also displayed on the domain dashboard in the Amazon CloudSearch console. You submit suggest requests to the search endpoint.

For more information, see the Amazon CloudSearch Developer Guide.

", - "operations":{ - "Search":{ - "name":"Search", - "http":{ - "method":"GET", - "requestUri":"/2013-01-01/search?format=sdk&pretty=true" - }, - "input":{ - "shape":"SearchRequest", - "documentation":"

Container for the parameters to the Search request.

" - }, - "output":{ - "shape":"SearchResponse", - "documentation":"

The result of a Search request. Contains the documents that match the specified search criteria and any requested fields, highlights, and facet information.

" - }, - "errors":[ - { - "shape":"SearchException", - "exception":true, - "documentation":"

Information about any problems encountered while processing a search request.

" - } - ], - "documentation":"

Retrieves a list of documents that match the specified search criteria. How you specify the search criteria depends on which query parser you use. Amazon CloudSearch supports four query parsers:

For more information, see Searching Your Data in the Amazon CloudSearch Developer Guide.

The endpoint for submitting Search requests is domain-specific. You submit search requests to a domain's search endpoint. To get the search endpoint for your domain, use the Amazon CloudSearch configuration service DescribeDomains action. A domain's endpoints are also displayed on the domain dashboard in the Amazon CloudSearch console.

" - }, - "Suggest":{ - "name":"Suggest", - "http":{ - "method":"GET", - "requestUri":"/2013-01-01/suggest?format=sdk&pretty=true" - }, - "input":{ - "shape":"SuggestRequest", - "documentation":"

Container for the parameters to the Suggest request.

" - }, - "output":{ - "shape":"SuggestResponse", - "documentation":"

Contains the response to a Suggest request.

" - }, - "errors":[ - { - "shape":"SearchException", - "exception":true, - "documentation":"

Information about any problems encountered while processing a search request.

" - } - ], - "documentation":"

Retrieves autocomplete suggestions for a partial query string. You can use suggestions enable you to display likely matches before users finish typing. In Amazon CloudSearch, suggestions are based on the contents of a particular text field. When you request suggestions, Amazon CloudSearch finds all of the documents whose values in the suggester field start with the specified query string. The beginning of the field must match the query string to be considered a match.

For more information about configuring suggesters and retrieving suggestions, see Getting Suggestions in the Amazon CloudSearch Developer Guide.

The endpoint for submitting Suggest requests is domain-specific. You submit suggest requests to a domain's search endpoint. To get the search endpoint for your domain, use the Amazon CloudSearch configuration service DescribeDomains action. A domain's endpoints are also displayed on the domain dashboard in the Amazon CloudSearch console.

" - }, - "UploadDocuments":{ - "name":"UploadDocuments", - "http":{ - "method":"POST", - "requestUri":"/2013-01-01/documents/batch?format=sdk" - }, - "input":{ - "shape":"UploadDocumentsRequest", - "documentation":"

Container for the parameters to the UploadDocuments request.

" - }, - "output":{ - "shape":"UploadDocumentsResponse", - "documentation":"

Contains the response to an UploadDocuments request.

" - }, - "errors":[ - { - "shape":"DocumentServiceException", - "exception":true, - "documentation":"

Information about any problems encountered while processing an upload request.

" - } - ], - "documentation":"

Posts a batch of documents to a search domain for indexing. A document batch is a collection of add and delete operations that represent the documents you want to add, update, or delete from your domain. Batches can be described in either JSON or XML. Each item that you want Amazon CloudSearch to return as a search result (such as a product) is represented as a document. Every document has a unique ID and one or more fields that contain the data that you want to search and return in results. Individual documents cannot contain more than 1 MB of data. The entire batch cannot exceed 5 MB. To get the best possible upload performance, group add and delete operations in batches that are close the 5 MB limit. Submitting a large volume of single-document batches can overload a domain's document service.

The endpoint for submitting UploadDocuments requests is domain-specific. To get the document endpoint for your domain, use the Amazon CloudSearch configuration service DescribeDomains action. A domain's endpoints are also displayed on the domain dashboard in the Amazon CloudSearch console.

For more information about formatting your data for Amazon CloudSearch, see Preparing Your Data in the Amazon CloudSearch Developer Guide. For more information about uploading data for indexing, see Uploading Data in the Amazon CloudSearch Developer Guide.

" - } - }, - "shapes":{ - "Adds":{"type":"long"}, - "Blob":{ - "type":"blob", - "streaming":true - }, - "Bucket":{ - "type":"structure", - "members":{ - "value":{ - "shape":"String", - "documentation":"

The facet value being counted.

" - }, - "count":{ - "shape":"Long", - "documentation":"

The number of hits that contain the facet value in the specified facet field.

" - } - }, - "documentation":"

A container for facet information.

" - }, - "BucketInfo":{ - "type":"structure", - "members":{ - "buckets":{ - "shape":"BucketList", - "documentation":"

A list of the calculated facet values and counts.

" - } - }, - "documentation":"

A container for the calculated facet values and counts.

" - }, - "BucketList":{ - "type":"list", - "member":{"shape":"Bucket"} - }, - "ContentType":{ - "type":"string", - "enum":[ - "application/json", - "application/xml" - ] - }, - "Cursor":{"type":"string"}, - "Deletes":{"type":"long"}, - "DocumentServiceException":{ - "type":"structure", - "members":{ - "status":{ - "shape":"String", - "documentation":"

The return status of a document upload request, error or success.

" - }, - "message":{ - "shape":"String", - "documentation":"

The description of the errors returned by the document service.

" - } - }, - "exception":true, - "documentation":"

Information about any problems encountered while processing an upload request.

" - }, - "DocumentServiceWarning":{ - "type":"structure", - "members":{ - "message":{ - "shape":"String", - "documentation":"

The description for a warning returned by the document service.

" - } - }, - "documentation":"

A warning returned by the document service when an issue is discovered while processing an upload request.

" - }, - "DocumentServiceWarnings":{ - "type":"list", - "member":{"shape":"DocumentServiceWarning"} - }, - "Expr":{"type":"string"}, - "Facet":{"type":"string"}, - "Facets":{ - "type":"map", - "key":{"shape":"String"}, - "value":{"shape":"BucketInfo"} - }, - "FieldValue":{ - "type":"list", - "member":{"shape":"String"} - }, - "Fields":{ - "type":"map", - "key":{"shape":"String"}, - "value":{"shape":"FieldValue"} - }, - "FilterQuery":{"type":"string"}, - "Highlight":{"type":"string"}, - "Highlights":{ - "type":"map", - "key":{"shape":"String"}, - "value":{"shape":"String"} - }, - "Hit":{ - "type":"structure", - "members":{ - "id":{ - "shape":"String", - "documentation":"

The document ID of a document that matches the search request.

" - }, - "fields":{ - "shape":"Fields", - "documentation":"

The fields returned from a document that matches the search request.

" - }, - "highlights":{ - "shape":"Highlights", - "documentation":"

The highlights returned from a document that matches the search request.

" - } - }, - "documentation":"

Information about a document that matches the search request.

" - }, - "HitList":{ - "type":"list", - "member":{"shape":"Hit"} - }, - "Hits":{ - "type":"structure", - "members":{ - "found":{ - "shape":"Long", - "documentation":"

The total number of documents that match the search request.

" - }, - "start":{ - "shape":"Long", - "documentation":"

The index of the first matching document.

" - }, - "cursor":{ - "shape":"String", - "documentation":"

A cursor that can be used to retrieve the next set of matching documents when you want to page through a large result set.

" - }, - "hit":{ - "shape":"HitList", - "documentation":"

A document that matches the search request.

" - } - }, - "documentation":"

The collection of documents that match the search request.

" - }, - "Long":{"type":"long"}, - "Partial":{"type":"boolean"}, - "Query":{"type":"string"}, - "QueryOptions":{"type":"string"}, - "QueryParser":{ - "type":"string", - "enum":[ - "simple", - "structured", - "lucene", - "dismax" - ] - }, - "Return":{"type":"string"}, - "SearchException":{ - "type":"structure", - "members":{ - "message":{ - "shape":"String", - "documentation":"

A description of the error returned by the search service.

" - } - }, - "exception":true, - "documentation":"

Information about any problems encountered while processing a search request.

" - }, - "SearchRequest":{ - "type":"structure", - "required":["query"], - "members":{ - "cursor":{ - "shape":"Cursor", - "location":"querystring", - "locationName":"cursor", - "documentation":"

Retrieves a cursor value you can use to page through large result sets. Use the size parameter to control the number of hits to include in each response. You can specify either the cursor or start parameter in a request; they are mutually exclusive. To get the first cursor, set the cursor value to initial. In subsequent requests, specify the cursor value returned in the hits section of the response.

For more information, see Paginating Results in the Amazon CloudSearch Developer Guide.

" - }, - "expr":{ - "shape":"Expr", - "location":"querystring", - "locationName":"expr", - "documentation":"

Defines one or more numeric expressions that can be used to sort results or specify search or filter criteria. You can also specify expressions as return fields.

For more information about defining and using expressions, see Configuring Expressions in the Amazon CloudSearch Developer Guide.

" - }, - "facet":{ - "shape":"Facet", - "location":"querystring", - "locationName":"facet", - "documentation":"

Specifies one or more fields for which to get facet information, and options that control how the facet information is returned. Each specified field must be facet-enabled in the domain configuration. The fields and options are specified in JSON using the form {\"FIELD\":{\"OPTION\":VALUE,\"OPTION:\"STRING\"},\"FIELD\":{\"OPTION\":VALUE,\"OPTION\":\"STRING\"}}.

You can specify the following faceting options:

If no facet options are specified, facet counts are computed for all field values, the facets are sorted by facet count, and the top 10 facets are returned in the results.

For more information, see Getting and Using Facet Information in the Amazon CloudSearch Developer Guide.

" - }, - "filterQuery":{ - "shape":"FilterQuery", - "location":"querystring", - "locationName":"fq", - "documentation":"

Specifies a structured query that filters the results of a search without affecting how the results are scored and sorted. You use filterQuery in conjunction with the query parameter to filter the documents that match the constraints specified in the query parameter. Specifying a filter controls only which matching documents are included in the results, it has no effect on how they are scored and sorted. The filterQuery parameter supports the full structured query syntax.

For more information about using filters, see Filtering Matching Documents in the Amazon CloudSearch Developer Guide.

" - }, - "highlight":{ - "shape":"Highlight", - "location":"querystring", - "locationName":"highlight", - "documentation":"

Retrieves highlights for matches in the specified text or text-array fields. Each specified field must be highlight enabled in the domain configuration. The fields and options are specified in JSON using the form {\"FIELD\":{\"OPTION\":VALUE,\"OPTION:\"STRING\"},\"FIELD\":{\"OPTION\":VALUE,\"OPTION\":\"STRING\"}}.

You can specify the following highlight options:

If no highlight options are specified for a field, the returned field text is treated as HTML and the first match is highlighted with emphasis tags: &lt;em>search-term&lt;/em&gt;.

" - }, - "partial":{ - "shape":"Partial", - "location":"querystring", - "locationName":"partial", - "documentation":"

Enables partial results to be returned if one or more index partitions are unavailable. When your search index is partitioned across multiple search instances, by default Amazon CloudSearch only returns results if every partition can be queried. This means that the failure of a single search instance can result in 5xx (internal server) errors. When you enable partial results, Amazon CloudSearch returns whatever results are available and includes the percentage of documents searched in the search results (percent-searched). This enables you to more gracefully degrade your users' search experience. For example, rather than displaying no results, you could display the partial results and a message indicating that the results might be incomplete due to a temporary system outage.

" - }, - "query":{ - "shape":"Query", - "location":"querystring", - "locationName":"q", - "documentation":"

Specifies the search criteria for the request. How you specify the search criteria depends on the query parser used for the request and the parser options specified in the queryOptions parameter. By default, the simple query parser is used to process requests. To use the structured, lucene, or dismax query parser, you must also specify the queryParser parameter.

For more information about specifying search criteria, see Searching Your Data in the Amazon CloudSearch Developer Guide.

" - }, - "queryOptions":{ - "shape":"QueryOptions", - "location":"querystring", - "locationName":"q.options", - "documentation":"

Configures options for the query parser specified in the queryParser parameter.

The options you can configure vary according to which parser you use:

" - }, - "queryParser":{ - "shape":"QueryParser", - "location":"querystring", - "locationName":"q.parser", - "documentation":"

Specifies which query parser to use to process the request. If queryParser is not specified, Amazon CloudSearch uses the simple query parser.

Amazon CloudSearch supports four query parsers:

" - }, - "return":{ - "shape":"Return", - "location":"querystring", - "locationName":"return", - "documentation":"

Specifies the field and expression values to include in the response. Multiple fields or expressions are specified as a comma-separated list. By default, a search response includes all return enabled fields (_all_fields). To return only the document IDs for the matching documents, specify _no_fields. To retrieve the relevance score calculated for each document, specify _score.

" - }, - "size":{ - "shape":"Size", - "location":"querystring", - "locationName":"size", - "documentation":"

Specifies the maximum number of search hits to include in the response.

" - }, - "sort":{ - "shape":"Sort", - "location":"querystring", - "locationName":"sort", - "documentation":"

Specifies the fields or custom expressions to use to sort the search results. Multiple fields or expressions are specified as a comma-separated list. You must specify the sort direction (asc or desc) for each field; for example, year desc,title asc. To use a field to sort results, the field must be sort-enabled in the domain configuration. Array type fields cannot be used for sorting. If no sort parameter is specified, results are sorted by their default relevance scores in descending order: _score desc. You can also sort by document ID (_id asc) and version (_version desc).

For more information, see Sorting Results in the Amazon CloudSearch Developer Guide.

" - }, - "start":{ - "shape":"Start", - "location":"querystring", - "locationName":"start", - "documentation":"

Specifies the offset of the first search hit you want to return. Note that the result set is zero-based; the first result is at index 0. You can specify either the start or cursor parameter in a request, they are mutually exclusive.

For more information, see Paginating Results in the Amazon CloudSearch Developer Guide.

" - } - }, - "documentation":"

Container for the parameters to the Search request.

" - }, - "SearchResponse":{ - "type":"structure", - "members":{ - "status":{ - "shape":"SearchStatus", - "documentation":"

The status information returned for the search request.

" - }, - "hits":{ - "shape":"Hits", - "documentation":"

The documents that match the search criteria.

" - }, - "facets":{ - "shape":"Facets", - "documentation":"

The requested facet information.

" - } - }, - "documentation":"

The result of a Search request. Contains the documents that match the specified search criteria and any requested fields, highlights, and facet information.

" - }, - "SearchStatus":{ - "type":"structure", - "members":{ - "timems":{ - "shape":"Long", - "documentation":"

How long it took to process the request, in milliseconds.

" - }, - "rid":{ - "shape":"String", - "documentation":"

The encrypted resource ID for the request.

" - } - }, - "documentation":"

Contains the resource id (rid) and the time it took to process the request (timems).

" - }, - "Size":{"type":"long"}, - "Sort":{"type":"string"}, - "Start":{"type":"long"}, - "String":{"type":"string"}, - "SuggestModel":{ - "type":"structure", - "members":{ - "query":{ - "shape":"String", - "documentation":"

The query string specified in the suggest request.

" - }, - "found":{ - "shape":"Long", - "documentation":"

The number of documents that were found to match the query string.

" - }, - "suggestions":{ - "shape":"Suggestions", - "documentation":"

The documents that match the query string.

" - } - }, - "documentation":"

Container for the suggestion information returned in a SuggestResponse.

" - }, - "SuggestRequest":{ - "type":"structure", - "required":[ - "query", - "suggester" - ], - "members":{ - "query":{ - "shape":"Query", - "location":"querystring", - "locationName":"q", - "documentation":"

Specifies the string for which you want to get suggestions.

" - }, - "suggester":{ - "shape":"Suggester", - "location":"querystring", - "locationName":"suggester", - "documentation":"

Specifies the name of the suggester to use to find suggested matches.

" - }, - "size":{ - "shape":"SuggestionsSize", - "location":"querystring", - "locationName":"size", - "documentation":"

Specifies the maximum number of suggestions to return.

" - } - }, - "documentation":"

Container for the parameters to the Suggest request.

" - }, - "SuggestResponse":{ - "type":"structure", - "members":{ - "status":{ - "shape":"SuggestStatus", - "documentation":"

The status of a SuggestRequest. Contains the resource ID (rid) and how long it took to process the request (timems).

" - }, - "suggest":{ - "shape":"SuggestModel", - "documentation":"

Container for the matching search suggestion information.

" - } - }, - "documentation":"

Contains the response to a Suggest request.

" - }, - "SuggestStatus":{ - "type":"structure", - "members":{ - "timems":{ - "shape":"Long", - "documentation":"

How long it took to process the request, in milliseconds.

" - }, - "rid":{ - "shape":"String", - "documentation":"

The encrypted resource ID for the request.

" - } - }, - "documentation":"

Contains the resource id (rid) and the time it took to process the request (timems).

" - }, - "Suggester":{"type":"string"}, - "SuggestionMatch":{ - "type":"structure", - "members":{ - "suggestion":{ - "shape":"String", - "documentation":"

The string that matches the query string specified in the SuggestRequest.

" - }, - "score":{ - "shape":"Long", - "documentation":"

The relevance score of a suggested match.

" - }, - "id":{ - "shape":"String", - "documentation":"

The document ID of the suggested document.

" - } - }, - "documentation":"

An autocomplete suggestion that matches the query string specified in a SuggestRequest.

" - }, - "Suggestions":{ - "type":"list", - "member":{"shape":"SuggestionMatch"} - }, - "SuggestionsSize":{"type":"long"}, - "UploadDocumentsRequest":{ - "type":"structure", - "required":[ - "documents", - "contentType" - ], - "members":{ - "documents":{ - "shape":"Blob", - "documentation":"

A batch of documents formatted in JSON or HTML.

" - }, - "contentType":{ - "shape":"ContentType", - "location":"header", - "locationName":"Content-Type", - "documentation":"

The format of the batch you are uploading. Amazon CloudSearch supports two document batch formats:

" - } - }, - "documentation":"

Container for the parameters to the UploadDocuments request.

", - "payload":"documents" - }, - "UploadDocumentsResponse":{ - "type":"structure", - "members":{ - "status":{ - "shape":"String", - "documentation":"

The status of an UploadDocumentsRequest.

" - }, - "adds":{ - "shape":"Adds", - "documentation":"

The number of documents that were added to the search domain.

" - }, - "deletes":{ - "shape":"Deletes", - "documentation":"

The number of documents that were deleted from the search domain.

" - }, - "warnings":{ - "shape":"DocumentServiceWarnings", - "documentation":"

Any warnings returned by the document service about the documents being uploaded.

" - } - }, - "documentation":"

Contains the response to an UploadDocuments request.

" - } - } -} diff --git a/src/github.com/getlantern/aws-sdk-go/apis/cloudtrail/2013-11-01.normal.json b/src/github.com/getlantern/aws-sdk-go/apis/cloudtrail/2013-11-01.normal.json deleted file mode 100644 index 166a36ea48..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/apis/cloudtrail/2013-11-01.normal.json +++ /dev/null @@ -1,917 +0,0 @@ -{ - "metadata":{ - "apiVersion":"2013-11-01", - "endpointPrefix":"cloudtrail", - "jsonVersion":"1.1", - "serviceAbbreviation":"CloudTrail", - "serviceFullName":"AWS CloudTrail", - "signatureVersion":"v4", - "targetPrefix":"com.amazonaws.cloudtrail.v20131101.CloudTrail_20131101", - "protocol":"json" - }, - "documentation":"AWS CloudTrail

This is the CloudTrail API Reference. It provides descriptions of actions, data types, common parameters, and common errors for CloudTrail.

CloudTrail is a web service that records AWS API calls for your AWS account and delivers log files to an Amazon S3 bucket. The recorded information includes the identity of the user, the start time of the AWS API call, the source IP address, the request parameters, and the response elements returned by the service.

As an alternative to using the API, you can use one of the AWS SDKs, which consist of libraries and sample code for various programming languages and platforms (Java, Ruby, .NET, iOS, Android, etc.). The SDKs provide a convenient way to create programmatic access to AWSCloudTrail. For example, the SDKs take care of cryptographically signing requests, managing errors, and retrying requests automatically. For information about the AWS SDKs, including how to download and install them, see the Tools for Amazon Web Services page.

See the CloudTrail User Guide for information about the data that is included with each AWS API call listed in the log files.

", - "operations":{ - "CreateTrail":{ - "name":"CreateTrail", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"CreateTrailRequest", - "documentation":"

Specifies the settings for each trail.

" - }, - "output":{ - "shape":"CreateTrailResponse", - "documentation":"Returns the objects or data listed below if successful. Otherwise, returns an error." - }, - "errors":[ - { - "shape":"MaximumNumberOfTrailsExceededException", - "error":{ - "code":"MaximumNumberOfTrailsExceeded", - "httpStatusCode":403, - "senderFault":true - }, - "exception":true, - "documentation":"This exception is thrown when the maximum number of trails is reached." - }, - { - "shape":"TrailAlreadyExistsException", - "error":{ - "code":"TrailAlreadyExists", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"This exception is thrown when the specified trail already exists." - }, - { - "shape":"S3BucketDoesNotExistException", - "error":{ - "code":"S3BucketDoesNotExist", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"This exception is thrown when the specified S3 bucket does not exist." - }, - { - "shape":"InsufficientS3BucketPolicyException", - "error":{ - "code":"InsufficientS3BucketPolicy", - "httpStatusCode":403, - "senderFault":true - }, - "exception":true, - "documentation":"This exception is thrown when the policy on the S3 bucket is not sufficient." - }, - { - "shape":"InsufficientSnsTopicPolicyException", - "error":{ - "code":"InsufficientSnsTopicPolicy", - "httpStatusCode":403, - "senderFault":true - }, - "exception":true, - "documentation":"This exception is thrown when the policy on the SNS topic is not sufficient." - }, - { - "shape":"InvalidS3BucketNameException", - "error":{ - "code":"InvalidS3BucketName", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"This exception is thrown when the provided S3 bucket name is not valid." - }, - { - "shape":"InvalidS3PrefixException", - "error":{ - "code":"InvalidS3Prefix", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"This exception is thrown when the provided S3 prefix is not valid." - }, - { - "shape":"InvalidSnsTopicNameException", - "error":{ - "code":"InvalidSnsTopicName", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"This exception is thrown when the provided SNS topic name is not valid." - }, - { - "shape":"InvalidTrailNameException", - "error":{ - "code":"InvalidTrailName", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"This exception is thrown when the provided trail name is not valid." - }, - { - "shape":"InvalidCloudWatchLogsLogGroupArnException", - "error":{ - "code":"InvalidCloudWatchLogsLogGroupArn", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"This exception is thrown when the provided CloudWatch log group is not valid." - }, - { - "shape":"InvalidCloudWatchLogsRoleArnException", - "error":{ - "code":"InvalidCloudWatchLogsRoleArn", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"This exception is thrown when the provided role is not valid." - }, - { - "shape":"CloudWatchLogsDeliveryUnavailableException", - "error":{ - "code":"CloudWatchLogsDeliveryUnavailable", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"Cannot set a CloudWatch Logs delivery for this region." - } - ], - "documentation":"

From the command line, use create-subscription.

Creates a trail that specifies the settings for delivery of log data to an Amazon S3 bucket.

" - }, - "DeleteTrail":{ - "name":"DeleteTrail", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DeleteTrailRequest", - "documentation":"The request that specifies the name of a trail to delete." - }, - "output":{ - "shape":"DeleteTrailResponse", - "documentation":"

Returns the objects or data listed below if successful. Otherwise, returns an error.

" - }, - "errors":[ - { - "shape":"TrailNotFoundException", - "error":{ - "code":"TrailNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"This exception is thrown when the trail with the given name is not found." - }, - { - "shape":"InvalidTrailNameException", - "error":{ - "code":"InvalidTrailName", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"This exception is thrown when the provided trail name is not valid." - } - ], - "documentation":"

Deletes a trail.

" - }, - "DescribeTrails":{ - "name":"DescribeTrails", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DescribeTrailsRequest", - "documentation":"

Returns information about the trail.

" - }, - "output":{ - "shape":"DescribeTrailsResponse", - "documentation":"

Returns the objects or data listed below if successful. Otherwise, returns an error.

" - }, - "documentation":"

Retrieves settings for the trail associated with the current region for your account.

" - }, - "GetTrailStatus":{ - "name":"GetTrailStatus", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"GetTrailStatusRequest", - "documentation":"

The name of a trail about which you want the current status.

" - }, - "output":{ - "shape":"GetTrailStatusResponse", - "documentation":"

Returns the objects or data listed below if successful. Otherwise, returns an error.

" - }, - "errors":[ - { - "shape":"TrailNotFoundException", - "error":{ - "code":"TrailNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"This exception is thrown when the trail with the given name is not found." - }, - { - "shape":"InvalidTrailNameException", - "error":{ - "code":"InvalidTrailName", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"This exception is thrown when the provided trail name is not valid." - } - ], - "documentation":"

Returns a JSON-formatted list of information about the specified trail. Fields include information on delivery errors, Amazon SNS and Amazon S3 errors, and start and stop logging times for each trail.

" - }, - "StartLogging":{ - "name":"StartLogging", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"StartLoggingRequest", - "documentation":"

The request to CloudTrail to start logging AWS API calls for an account.

" - }, - "output":{ - "shape":"StartLoggingResponse", - "documentation":"

Returns the objects or data listed below if successful. Otherwise, returns an error.

" - }, - "errors":[ - { - "shape":"TrailNotFoundException", - "error":{ - "code":"TrailNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"This exception is thrown when the trail with the given name is not found." - }, - { - "shape":"InvalidTrailNameException", - "error":{ - "code":"InvalidTrailName", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"This exception is thrown when the provided trail name is not valid." - } - ], - "documentation":"

Starts the recording of AWS API calls and log file delivery for a trail.

" - }, - "StopLogging":{ - "name":"StopLogging", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"StopLoggingRequest", - "documentation":"

Passes the request to CloudTrail to stop logging AWS API calls for the specified account.

" - }, - "output":{ - "shape":"StopLoggingResponse", - "documentation":"

Returns the objects or data listed below if successful. Otherwise, returns an error.

" - }, - "errors":[ - { - "shape":"TrailNotFoundException", - "error":{ - "code":"TrailNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"This exception is thrown when the trail with the given name is not found." - }, - { - "shape":"InvalidTrailNameException", - "error":{ - "code":"InvalidTrailName", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"This exception is thrown when the provided trail name is not valid." - } - ], - "documentation":"

Suspends the recording of AWS API calls and log file delivery for the specified trail. Under most circumstances, there is no need to use this action. You can update a trail without stopping it first. This action is the only way to stop recording.

" - }, - "UpdateTrail":{ - "name":"UpdateTrail", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"UpdateTrailRequest", - "documentation":"

Specifies settings to update for the trail.

" - }, - "output":{ - "shape":"UpdateTrailResponse", - "documentation":"Returns the objects or data listed below if successful. Otherwise, returns an error." - }, - "errors":[ - { - "shape":"S3BucketDoesNotExistException", - "error":{ - "code":"S3BucketDoesNotExist", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"This exception is thrown when the specified S3 bucket does not exist." - }, - { - "shape":"InsufficientS3BucketPolicyException", - "error":{ - "code":"InsufficientS3BucketPolicy", - "httpStatusCode":403, - "senderFault":true - }, - "exception":true, - "documentation":"This exception is thrown when the policy on the S3 bucket is not sufficient." - }, - { - "shape":"InsufficientSnsTopicPolicyException", - "error":{ - "code":"InsufficientSnsTopicPolicy", - "httpStatusCode":403, - "senderFault":true - }, - "exception":true, - "documentation":"This exception is thrown when the policy on the SNS topic is not sufficient." - }, - { - "shape":"TrailNotFoundException", - "error":{ - "code":"TrailNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"This exception is thrown when the trail with the given name is not found." - }, - { - "shape":"InvalidS3BucketNameException", - "error":{ - "code":"InvalidS3BucketName", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"This exception is thrown when the provided S3 bucket name is not valid." - }, - { - "shape":"InvalidS3PrefixException", - "error":{ - "code":"InvalidS3Prefix", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"This exception is thrown when the provided S3 prefix is not valid." - }, - { - "shape":"InvalidSnsTopicNameException", - "error":{ - "code":"InvalidSnsTopicName", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"This exception is thrown when the provided SNS topic name is not valid." - }, - { - "shape":"InvalidTrailNameException", - "error":{ - "code":"InvalidTrailName", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"This exception is thrown when the provided trail name is not valid." - }, - { - "shape":"InvalidCloudWatchLogsLogGroupArnException", - "error":{ - "code":"InvalidCloudWatchLogsLogGroupArn", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"This exception is thrown when the provided CloudWatch log group is not valid." - }, - { - "shape":"InvalidCloudWatchLogsRoleArnException", - "error":{ - "code":"InvalidCloudWatchLogsRoleArn", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"This exception is thrown when the provided role is not valid." - }, - { - "shape":"CloudWatchLogsDeliveryUnavailableException", - "error":{ - "code":"CloudWatchLogsDeliveryUnavailable", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"Cannot set a CloudWatch Logs delivery for this region." - } - ], - "documentation":"

From the command line, use update-subscription.

Updates the settings that specify delivery of log files. Changes to a trail do not require stopping the CloudTrail service. Use this action to designate an existing bucket for log delivery. If the existing bucket has previously been a target for CloudTrail log files, an IAM policy exists for the bucket.

" - } - }, - "shapes":{ - "Boolean":{"type":"boolean"}, - "CloudWatchLogsDeliveryUnavailableException":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"CloudWatchLogsDeliveryUnavailable", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"Cannot set a CloudWatch Logs delivery for this region." - }, - "CreateTrailRequest":{ - "type":"structure", - "required":[ - "Name", - "S3BucketName" - ], - "members":{ - "Name":{ - "shape":"String", - "documentation":"

Specifies the name of the trail.

" - }, - "S3BucketName":{ - "shape":"String", - "documentation":"

Specifies the name of the Amazon S3 bucket designated for publishing log files.

" - }, - "S3KeyPrefix":{ - "shape":"String", - "documentation":"

Specifies the Amazon S3 key prefix that precedes the name of the bucket you have designated for log file delivery.

" - }, - "SnsTopicName":{ - "shape":"String", - "documentation":"

Specifies the name of the Amazon SNS topic defined for notification of log file delivery.

" - }, - "IncludeGlobalServiceEvents":{ - "shape":"Boolean", - "documentation":"

Specifies whether the trail is publishing events from global services such as IAM to the log files.

" - }, - "CloudWatchLogsLogGroupArn":{ - "shape":"String", - "documentation":"

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.

" - }, - "CloudWatchLogsRoleArn":{ - "shape":"String", - "documentation":"

Specifies the role for the CloudWatch Logs endpoint to assume to write to a user’s log group.

" - } - }, - "documentation":"

Specifies the settings for each trail.

" - }, - "CreateTrailResponse":{ - "type":"structure", - "members":{ - "Name":{ - "shape":"String", - "documentation":"

Specifies the name of the trail.

" - }, - "S3BucketName":{ - "shape":"String", - "documentation":"

Specifies the name of the Amazon S3 bucket designated for publishing log files.

" - }, - "S3KeyPrefix":{ - "shape":"String", - "documentation":"

Specifies the Amazon S3 key prefix that precedes the name of the bucket you have designated for log file delivery.

" - }, - "SnsTopicName":{ - "shape":"String", - "documentation":"

Specifies the name of the Amazon SNS topic defined for notification of log file delivery.

" - }, - "IncludeGlobalServiceEvents":{ - "shape":"Boolean", - "documentation":"

Specifies whether the trail is publishing events from global services such as IAM to the log files.

" - }, - "CloudWatchLogsLogGroupArn":{ - "shape":"String", - "documentation":"

Specifies the Amazon Resource Name (ARN) of the log group to which CloudTrail logs will be delivered.

" - }, - "CloudWatchLogsRoleArn":{ - "shape":"String", - "documentation":"

Specifies the role for the CloudWatch Logs endpoint to assume to write to a user’s log group.

" - } - }, - "documentation":"Returns the objects or data listed below if successful. Otherwise, returns an error." - }, - "Date":{"type":"timestamp"}, - "DeleteTrailRequest":{ - "type":"structure", - "required":["Name"], - "members":{ - "Name":{ - "shape":"String", - "documentation":"

The name of a trail to be deleted.

" - } - }, - "documentation":"The request that specifies the name of a trail to delete." - }, - "DeleteTrailResponse":{ - "type":"structure", - "members":{ - }, - "documentation":"

Returns the objects or data listed below if successful. Otherwise, returns an error.

" - }, - "DescribeTrailsRequest":{ - "type":"structure", - "members":{ - "trailNameList":{ - "shape":"TrailNameList", - "documentation":"

The trail returned.

" - } - }, - "documentation":"

Returns information about the trail.

" - }, - "DescribeTrailsResponse":{ - "type":"structure", - "members":{ - "trailList":{ - "shape":"TrailList", - "documentation":"

The list of trails.

" - } - }, - "documentation":"

Returns the objects or data listed below if successful. Otherwise, returns an error.

" - }, - "GetTrailStatusRequest":{ - "type":"structure", - "required":["Name"], - "members":{ - "Name":{ - "shape":"String", - "documentation":"

The name of the trail for which you are requesting the current status.

" - } - }, - "documentation":"

The name of a trail about which you want the current status.

" - }, - "GetTrailStatusResponse":{ - "type":"structure", - "members":{ - "IsLogging":{ - "shape":"Boolean", - "documentation":"

Whether the CloudTrail is currently logging AWS API calls.

" - }, - "LatestDeliveryError":{ - "shape":"String", - "documentation":"

Displays any Amazon S3 error that CloudTrail encountered when attempting to deliver log files to the designated bucket. For more information see the topic Error Responses in the Amazon S3 API Reference.

" - }, - "LatestNotificationError":{ - "shape":"String", - "documentation":"

Displays any Amazon SNS error that CloudTrail encountered when attempting to send a notification. For more information about Amazon SNS errors, see the Amazon SNS Developer Guide.

" - }, - "LatestDeliveryTime":{ - "shape":"Date", - "documentation":"

Specifies the date and time that CloudTrail last delivered log files to an account's Amazon S3 bucket.

" - }, - "LatestNotificationTime":{ - "shape":"Date", - "documentation":"

Specifies the date and time of the most recent Amazon SNS notification that CloudTrail has written a new log file to an account's Amazon S3 bucket.

" - }, - "StartLoggingTime":{ - "shape":"Date", - "documentation":"

Specifies the most recent date and time when CloudTrail started recording API calls for an AWS account.

" - }, - "StopLoggingTime":{ - "shape":"Date", - "documentation":"

Specifies the most recent date and time when CloudTrail stopped recording API calls for an AWS account.

" - }, - "LatestCloudWatchLogsDeliveryError":{ - "shape":"String", - "documentation":"

Displays any CloudWatch Logs error that CloudTrail encountered when attempting to deliver logs to CloudWatch Logs.

" - }, - "LatestCloudWatchLogsDeliveryTime":{ - "shape":"Date", - "documentation":"

Displays the most recent date and time when CloudTrail delivered logs to CloudWatch Logs.

" - } - }, - "documentation":"

Returns the objects or data listed below if successful. Otherwise, returns an error.

" - }, - "InsufficientS3BucketPolicyException":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"InsufficientS3BucketPolicy", - "httpStatusCode":403, - "senderFault":true - }, - "exception":true, - "documentation":"This exception is thrown when the policy on the S3 bucket is not sufficient." - }, - "InsufficientSnsTopicPolicyException":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"InsufficientSnsTopicPolicy", - "httpStatusCode":403, - "senderFault":true - }, - "exception":true, - "documentation":"This exception is thrown when the policy on the SNS topic is not sufficient." - }, - "InvalidCloudWatchLogsLogGroupArnException":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"InvalidCloudWatchLogsLogGroupArn", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"This exception is thrown when the provided CloudWatch log group is not valid." - }, - "InvalidCloudWatchLogsRoleArnException":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"InvalidCloudWatchLogsRoleArn", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"This exception is thrown when the provided role is not valid." - }, - "InvalidS3BucketNameException":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"InvalidS3BucketName", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"This exception is thrown when the provided S3 bucket name is not valid." - }, - "InvalidS3PrefixException":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"InvalidS3Prefix", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"This exception is thrown when the provided S3 prefix is not valid." - }, - "InvalidSnsTopicNameException":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"InvalidSnsTopicName", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"This exception is thrown when the provided SNS topic name is not valid." - }, - "InvalidTrailNameException":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"InvalidTrailName", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"This exception is thrown when the provided trail name is not valid." - }, - "MaximumNumberOfTrailsExceededException":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"MaximumNumberOfTrailsExceeded", - "httpStatusCode":403, - "senderFault":true - }, - "exception":true, - "documentation":"This exception is thrown when the maximum number of trails is reached." - }, - "S3BucketDoesNotExistException":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"S3BucketDoesNotExist", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"This exception is thrown when the specified S3 bucket does not exist." - }, - "StartLoggingRequest":{ - "type":"structure", - "required":["Name"], - "members":{ - "Name":{ - "shape":"String", - "documentation":"

The name of the trail for which CloudTrail logs AWS API calls.

" - } - }, - "documentation":"

The request to CloudTrail to start logging AWS API calls for an account.

" - }, - "StartLoggingResponse":{ - "type":"structure", - "members":{ - }, - "documentation":"

Returns the objects or data listed below if successful. Otherwise, returns an error.

" - }, - "StopLoggingRequest":{ - "type":"structure", - "required":["Name"], - "members":{ - "Name":{ - "shape":"String", - "documentation":"

Communicates to CloudTrail the name of the trail for which to stop logging AWS API calls.

" - } - }, - "documentation":"

Passes the request to CloudTrail to stop logging AWS API calls for the specified account.

" - }, - "StopLoggingResponse":{ - "type":"structure", - "members":{ - }, - "documentation":"

Returns the objects or data listed below if successful. Otherwise, returns an error.

" - }, - "String":{"type":"string"}, - "Trail":{ - "type":"structure", - "members":{ - "Name":{ - "shape":"String", - "documentation":"

Name of the trail set by calling CreateTrail.

" - }, - "S3BucketName":{ - "shape":"String", - "documentation":"

Name of the Amazon S3 bucket into which CloudTrail delivers your trail files.

" - }, - "S3KeyPrefix":{ - "shape":"String", - "documentation":"

Value of the Amazon S3 prefix.

" - }, - "SnsTopicName":{ - "shape":"String", - "documentation":"

Name of the existing Amazon SNS topic that CloudTrail uses to notify the account owner when new CloudTrail log files have been delivered.

" - }, - "IncludeGlobalServiceEvents":{ - "shape":"Boolean", - "documentation":"

Set to True to include AWS API calls from AWS global services such as IAM. Otherwise, False.

" - }, - "CloudWatchLogsLogGroupArn":{ - "shape":"String", - "documentation":"

Specifies an Amazon Resource Name (ARN), a unique identifier that represents the log group to which CloudTrail logs will be delivered.

" - }, - "CloudWatchLogsRoleArn":{ - "shape":"String", - "documentation":"

Specifies the role for the CloudWatch Logs endpoint to assume to write to a user’s log group.

" - } - }, - "documentation":"

The settings for a trail.

" - }, - "TrailAlreadyExistsException":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"TrailAlreadyExists", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"This exception is thrown when the specified trail already exists." - }, - "TrailList":{ - "type":"list", - "member":{"shape":"Trail"} - }, - "TrailNameList":{ - "type":"list", - "member":{"shape":"String"} - }, - "TrailNotFoundException":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"TrailNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"This exception is thrown when the trail with the given name is not found." - }, - "UpdateTrailRequest":{ - "type":"structure", - "required":["Name"], - "members":{ - "Name":{ - "shape":"String", - "documentation":"

Specifies the name of the trail.

" - }, - "S3BucketName":{ - "shape":"String", - "documentation":"

Specifies the name of the Amazon S3 bucket designated for publishing log files.

" - }, - "S3KeyPrefix":{ - "shape":"String", - "documentation":"

Specifies the Amazon S3 key prefix that precedes the name of the bucket you have designated for log file delivery.

" - }, - "SnsTopicName":{ - "shape":"String", - "documentation":"

Specifies the name of the Amazon SNS topic defined for notification of log file delivery.

" - }, - "IncludeGlobalServiceEvents":{ - "shape":"Boolean", - "documentation":"

Specifies whether the trail is publishing events from global services such as IAM to the log files.

" - }, - "CloudWatchLogsLogGroupArn":{ - "shape":"String", - "documentation":"

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.

" - }, - "CloudWatchLogsRoleArn":{ - "shape":"String", - "documentation":"

Specifies the role for the CloudWatch Logs endpoint to assume to write to a user’s log group.

" - } - }, - "documentation":"

Specifies settings to update for the trail.

" - }, - "UpdateTrailResponse":{ - "type":"structure", - "members":{ - "Name":{ - "shape":"String", - "documentation":"

Specifies the name of the trail.

" - }, - "S3BucketName":{ - "shape":"String", - "documentation":"

Specifies the name of the Amazon S3 bucket designated for publishing log files.

" - }, - "S3KeyPrefix":{ - "shape":"String", - "documentation":"

Specifies the Amazon S3 key prefix that precedes the name of the bucket you have designated for log file delivery.

" - }, - "SnsTopicName":{ - "shape":"String", - "documentation":"

Specifies the name of the Amazon SNS topic defined for notification of log file delivery.

" - }, - "IncludeGlobalServiceEvents":{ - "shape":"Boolean", - "documentation":"

Specifies whether the trail is publishing events from global services such as IAM to the log files.

" - }, - "CloudWatchLogsLogGroupArn":{ - "shape":"String", - "documentation":"

Specifies the Amazon Resource Name (ARN) of the log group to which CloudTrail logs will be delivered.

" - }, - "CloudWatchLogsRoleArn":{ - "shape":"String", - "documentation":"

Specifies the role for the CloudWatch Logs endpoint to assume to write to a user’s log group.

" - } - }, - "documentation":"Returns the objects or data listed below if successful. Otherwise, returns an error." - } - } -} diff --git a/src/github.com/getlantern/aws-sdk-go/apis/cloudwatch/2010-08-01.normal.json b/src/github.com/getlantern/aws-sdk-go/apis/cloudwatch/2010-08-01.normal.json deleted file mode 100644 index 6a365fcbef..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/apis/cloudwatch/2010-08-01.normal.json +++ /dev/null @@ -1,1338 +0,0 @@ -{ - "metadata":{ - "apiVersion":"2010-08-01", - "endpointPrefix":"monitoring", - "serviceAbbreviation":"CloudWatch", - "serviceFullName":"Amazon CloudWatch", - "signatureVersion":"v4", - "xmlNamespace":"http://monitoring.amazonaws.com/doc/2010-08-01/", - "protocol":"query" - }, - "documentation":"

This is the Amazon CloudWatch API Reference. This guide provides detailed information about Amazon CloudWatch actions, data types, parameters, and errors. For detailed information about Amazon CloudWatch features and their associated API calls, go to the Amazon CloudWatch Developer Guide.

Amazon CloudWatch is a web service that enables you to publish, monitor, and manage various metrics, as well as configure alarm actions based on data from metrics. For more information about this product go to http://aws.amazon.com/cloudwatch.

For information about the namespace, metric names, and dimensions that other Amazon Web Services products use to send metrics to Cloudwatch, go to Amazon CloudWatch Metrics, Namespaces, and Dimensions Reference in the Amazon CloudWatch Developer Guide.

Use the following links to get started using the Amazon CloudWatch API Reference:

In addition to using the Amazon CloudWatch API, you can also use the following SDKs and third-party libraries to access Amazon CloudWatch programmatically.

Developers in the AWS developer community also provide their own libraries, which you can find at the following AWS developer centers:

", - "operations":{ - "DeleteAlarms":{ - "name":"DeleteAlarms", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DeleteAlarmsInput"}, - "errors":[ - { - "shape":"ResourceNotFound", - "error":{ - "code":"ResourceNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The named resource does not exist.

" - } - ], - "documentation":"

Deletes all specified alarms. In the event of an error, no alarms are deleted.

" - }, - "DescribeAlarmHistory":{ - "name":"DescribeAlarmHistory", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeAlarmHistoryInput"}, - "output":{ - "shape":"DescribeAlarmHistoryOutput", - "documentation":"

The output for the DescribeAlarmHistory action.

", - "resultWrapper":"DescribeAlarmHistoryResult" - }, - "errors":[ - { - "shape":"InvalidNextToken", - "error":{ - "code":"InvalidNextToken", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The next token specified is invalid.

" - } - ], - "documentation":"

Retrieves history for the specified alarm. Filter alarms by date range or item type. If an alarm name is not specified, Amazon CloudWatch returns histories for all of the owner's alarms.

" - }, - "DescribeAlarms":{ - "name":"DescribeAlarms", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeAlarmsInput"}, - "output":{ - "shape":"DescribeAlarmsOutput", - "documentation":"

The output for the DescribeAlarms action.

", - "resultWrapper":"DescribeAlarmsResult" - }, - "errors":[ - { - "shape":"InvalidNextToken", - "error":{ - "code":"InvalidNextToken", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The next token specified is invalid.

" - } - ], - "documentation":"

Retrieves alarms with the specified names. If no name is specified, all alarms for the user are returned. Alarms can be retrieved by using only a prefix for the alarm name, the alarm state, or a prefix for any action.

" - }, - "DescribeAlarmsForMetric":{ - "name":"DescribeAlarmsForMetric", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeAlarmsForMetricInput"}, - "output":{ - "shape":"DescribeAlarmsForMetricOutput", - "documentation":"

The output for the DescribeAlarmsForMetric action.

", - "resultWrapper":"DescribeAlarmsForMetricResult" - }, - "documentation":"

Retrieves all alarms for a single metric. Specify a statistic, period, or unit to filter the set of alarms further.

" - }, - "DisableAlarmActions":{ - "name":"DisableAlarmActions", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DisableAlarmActionsInput", - "documentation":"

" - }, - "documentation":"

Disables actions for the specified alarms. When an alarm's actions are disabled the alarm's state may change, but none of the alarm's actions will execute.

" - }, - "EnableAlarmActions":{ - "name":"EnableAlarmActions", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"EnableAlarmActionsInput"}, - "documentation":"

Enables actions for the specified alarms.

" - }, - "GetMetricStatistics":{ - "name":"GetMetricStatistics", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"GetMetricStatisticsInput"}, - "output":{ - "shape":"GetMetricStatisticsOutput", - "documentation":"

The output for the GetMetricStatistics action.

", - "resultWrapper":"GetMetricStatisticsResult" - }, - "errors":[ - { - "shape":"InvalidParameterValueException", - "error":{ - "code":"InvalidParameterValue", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Bad or out-of-range value was supplied for the input parameter.

" - }, - { - "shape":"MissingRequiredParameterException", - "error":{ - "code":"MissingParameter", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

An input parameter that is mandatory for processing the request is not supplied.

" - }, - { - "shape":"InvalidParameterCombinationException", - "error":{ - "code":"InvalidParameterCombination", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Parameters that must not be used together were used together.

" - }, - { - "shape":"InternalServiceFault", - "error":{ - "code":"InternalServiceError", - "httpStatusCode":500 - }, - "exception":true, - "documentation":"

Indicates that the request processing has failed due to some unknown error, exception, or failure.

", - "xmlOrder":["Message"] - } - ], - "documentation":"

Gets statistics for the specified metric.

The maximum number of data points returned from a single GetMetricStatistics request is 1,440, wereas the maximum number of data points that can be queried is 50,850. If you make a request that generates more than 1,440 data points, Amazon CloudWatch returns an error. In such a case, you can alter the request by narrowing the specified time range or increasing the specified period. Alternatively, you can make multiple requests across adjacent time ranges.

Amazon CloudWatch aggregates data points based on the length of the period that you specify. For example, if you request statistics with a one-minute granularity, Amazon CloudWatch aggregates data points with time stamps that fall within the same one-minute period. In such a case, the data points queried can greatly outnumber the data points returned.

The following examples show various statistics allowed by the data point query maximum of 50,850 when you call GetMetricStatistics on Amazon EC2 instances with detailed (one-minute) monitoring enabled:

For information about the namespace, metric names, and dimensions that other Amazon Web Services products use to send metrics to Cloudwatch, go to Amazon CloudWatch Metrics, Namespaces, and Dimensions Reference in the Amazon CloudWatch Developer Guide.

" - }, - "ListMetrics":{ - "name":"ListMetrics", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"ListMetricsInput"}, - "output":{ - "shape":"ListMetricsOutput", - "documentation":"

The output for the ListMetrics action.

", - "xmlOrder":[ - "Metrics", - "NextToken" - ], - "resultWrapper":"ListMetricsResult" - }, - "errors":[ - { - "shape":"InternalServiceFault", - "error":{ - "code":"InternalServiceError", - "httpStatusCode":500 - }, - "exception":true, - "documentation":"

Indicates that the request processing has failed due to some unknown error, exception, or failure.

", - "xmlOrder":["Message"] - }, - { - "shape":"InvalidParameterValueException", - "error":{ - "code":"InvalidParameterValue", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Bad or out-of-range value was supplied for the input parameter.

" - } - ], - "documentation":"

Returns a list of valid metrics stored for the AWS account owner. Returned metrics can be used with GetMetricStatistics to obtain statistical data for a given metric.

" - }, - "PutMetricAlarm":{ - "name":"PutMetricAlarm", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"PutMetricAlarmInput"}, - "errors":[ - { - "shape":"LimitExceededFault", - "error":{ - "code":"LimitExceeded", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The quota for alarms for this customer has already been reached.

" - } - ], - "documentation":"

Creates or updates an alarm and associates it with the specified Amazon CloudWatch metric. Optionally, this operation can associate one or more Amazon Simple Notification Service resources with the alarm.

When this operation creates an alarm, the alarm state is immediately set to INSUFFICIENT_DATA. The alarm is evaluated and its StateValue is set appropriately. Any actions associated with the StateValue is then executed.

" - }, - "PutMetricData":{ - "name":"PutMetricData", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"PutMetricDataInput"}, - "errors":[ - { - "shape":"InvalidParameterValueException", - "error":{ - "code":"InvalidParameterValue", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Bad or out-of-range value was supplied for the input parameter.

" - }, - { - "shape":"MissingRequiredParameterException", - "error":{ - "code":"MissingParameter", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

An input parameter that is mandatory for processing the request is not supplied.

" - }, - { - "shape":"InvalidParameterCombinationException", - "error":{ - "code":"InvalidParameterCombination", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Parameters that must not be used together were used together.

" - }, - { - "shape":"InternalServiceFault", - "error":{ - "code":"InternalServiceError", - "httpStatusCode":500 - }, - "exception":true, - "documentation":"

Indicates that the request processing has failed due to some unknown error, exception, or failure.

", - "xmlOrder":["Message"] - } - ], - "documentation":"

Publishes metric data points to Amazon CloudWatch. Amazon Cloudwatch associates the data points with the specified metric. If the specified metric does not exist, Amazon CloudWatch creates the metric. It can take up to fifteen minutes for a new metric to appear in calls to the ListMetrics action.

The size of a PutMetricData request is limited to 8 KB for HTTP GET requests and 40 KB for HTTP POST requests.

Although the Value parameter accepts numbers of type Double, Amazon CloudWatch truncates values with very large exponents. Values with base-10 exponents greater than 126 (1 x 10^126) are truncated. Likewise, values with base-10 exponents less than -130 (1 x 10^-130) are also truncated.

Data that is timestamped 24 hours or more in the past may take in excess of 48 hours to become available from submission time using GetMetricStatistics.

" - }, - "SetAlarmState":{ - "name":"SetAlarmState", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"SetAlarmStateInput"}, - "errors":[ - { - "shape":"ResourceNotFound", - "error":{ - "code":"ResourceNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The named resource does not exist.

" - }, - { - "shape":"InvalidFormatFault", - "error":{ - "code":"InvalidFormat", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Data was not syntactically valid JSON.

" - } - ], - "documentation":"

Temporarily sets the state of an alarm. When the updated StateValue differs from the previous value, the action configured for the appropriate state is invoked. This is not a permanent change. The next periodic alarm check (in about a minute) will set the alarm to its actual state.

" - } - }, - "shapes":{ - "ActionPrefix":{ - "type":"string", - "min":1, - "max":1024 - }, - "ActionsEnabled":{"type":"boolean"}, - "AlarmArn":{ - "type":"string", - "min":1, - "max":1600 - }, - "AlarmDescription":{ - "type":"string", - "min":0, - "max":255 - }, - "AlarmHistoryItem":{ - "type":"structure", - "members":{ - "AlarmName":{ - "shape":"AlarmName", - "documentation":"

The descriptive name for the alarm.

" - }, - "Timestamp":{ - "shape":"Timestamp", - "documentation":"

The time stamp for the alarm history item. Amazon CloudWatch uses Coordinated Universal Time (UTC) when returning time stamps, which do not accommodate seasonal adjustments such as daylight savings time. For more information, see Time stamps in the Amazon CloudWatch Developer Guide.

" - }, - "HistoryItemType":{ - "shape":"HistoryItemType", - "documentation":"

The type of alarm history item.

" - }, - "HistorySummary":{ - "shape":"HistorySummary", - "documentation":"

A human-readable summary of the alarm history.

" - }, - "HistoryData":{ - "shape":"HistoryData", - "documentation":"

Machine-readable data about the alarm in JSON format.

" - } - }, - "documentation":"

The AlarmHistoryItem data type contains descriptive information about the history of a specific alarm. If you call DescribeAlarmHistory, Amazon CloudWatch returns this data type as part of the DescribeAlarmHistoryResult data type.

" - }, - "AlarmHistoryItems":{ - "type":"list", - "member":{"shape":"AlarmHistoryItem"} - }, - "AlarmName":{ - "type":"string", - "min":1, - "max":255 - }, - "AlarmNamePrefix":{ - "type":"string", - "min":1, - "max":255 - }, - "AlarmNames":{ - "type":"list", - "member":{"shape":"AlarmName"}, - "max":100 - }, - "AwsQueryErrorMessage":{"type":"string"}, - "ComparisonOperator":{ - "type":"string", - "enum":[ - "GreaterThanOrEqualToThreshold", - "GreaterThanThreshold", - "LessThanThreshold", - "LessThanOrEqualToThreshold" - ] - }, - "Datapoint":{ - "type":"structure", - "members":{ - "Timestamp":{ - "shape":"Timestamp", - "documentation":"

The time stamp used for the datapoint. Amazon CloudWatch uses Coordinated Universal Time (UTC) when returning time stamps, which do not accommodate seasonal adjustments such as daylight savings time. For more information, see Time stamps in the Amazon CloudWatch Developer Guide.

" - }, - "SampleCount":{ - "shape":"DatapointValue", - "documentation":"

The number of metric values that contributed to the aggregate value of this datapoint.

" - }, - "Average":{ - "shape":"DatapointValue", - "documentation":"

The average of metric values that correspond to the datapoint.

" - }, - "Sum":{ - "shape":"DatapointValue", - "documentation":"

The sum of metric values used for the datapoint.

" - }, - "Minimum":{ - "shape":"DatapointValue", - "documentation":"

The minimum metric value used for the datapoint.

" - }, - "Maximum":{ - "shape":"DatapointValue", - "documentation":"

The maximum of the metric value used for the datapoint.

" - }, - "Unit":{ - "shape":"StandardUnit", - "documentation":"

The standard unit used for the datapoint.

" - } - }, - "documentation":"

The Datapoint data type encapsulates the statistical data that Amazon CloudWatch computes from metric data.

", - "xmlOrder":[ - "Timestamp", - "SampleCount", - "Average", - "Sum", - "Minimum", - "Maximum", - "Unit" - ] - }, - "DatapointValue":{"type":"double"}, - "Datapoints":{ - "type":"list", - "member":{"shape":"Datapoint"} - }, - "DeleteAlarmsInput":{ - "type":"structure", - "required":["AlarmNames"], - "members":{ - "AlarmNames":{ - "shape":"AlarmNames", - "documentation":"

A list of alarms to be deleted.

" - } - } - }, - "DescribeAlarmHistoryInput":{ - "type":"structure", - "members":{ - "AlarmName":{ - "shape":"AlarmName", - "documentation":"

The name of the alarm.

" - }, - "HistoryItemType":{ - "shape":"HistoryItemType", - "documentation":"

The type of alarm histories to retrieve.

" - }, - "StartDate":{ - "shape":"Timestamp", - "documentation":"

The starting date to retrieve alarm history.

" - }, - "EndDate":{ - "shape":"Timestamp", - "documentation":"

The ending date to retrieve alarm history.

" - }, - "MaxRecords":{ - "shape":"MaxRecords", - "documentation":"

The maximum number of alarm history records to retrieve.

" - }, - "NextToken":{ - "shape":"NextToken", - "documentation":"

The token returned by a previous call to indicate that there is more data available.

" - } - } - }, - "DescribeAlarmHistoryOutput":{ - "type":"structure", - "members":{ - "AlarmHistoryItems":{ - "shape":"AlarmHistoryItems", - "documentation":"

A list of alarm histories in JSON format.

" - }, - "NextToken":{ - "shape":"NextToken", - "documentation":"

A string that marks the start of the next batch of returned results.

" - } - }, - "documentation":"

The output for the DescribeAlarmHistory action.

" - }, - "DescribeAlarmsForMetricInput":{ - "type":"structure", - "required":[ - "MetricName", - "Namespace" - ], - "members":{ - "MetricName":{ - "shape":"MetricName", - "documentation":"

The name of the metric.

" - }, - "Namespace":{ - "shape":"Namespace", - "documentation":"

The namespace of the metric.

" - }, - "Statistic":{ - "shape":"Statistic", - "documentation":"

The statistic for the metric.

" - }, - "Dimensions":{ - "shape":"Dimensions", - "documentation":"

The list of dimensions associated with the metric.

" - }, - "Period":{ - "shape":"Period", - "documentation":"

The period in seconds over which the statistic is applied.

" - }, - "Unit":{ - "shape":"StandardUnit", - "documentation":"

The unit for the metric.

" - } - } - }, - "DescribeAlarmsForMetricOutput":{ - "type":"structure", - "members":{ - "MetricAlarms":{ - "shape":"MetricAlarms", - "documentation":"

A list of information for each alarm with the specified metric.

" - } - }, - "documentation":"

The output for the DescribeAlarmsForMetric action.

" - }, - "DescribeAlarmsInput":{ - "type":"structure", - "members":{ - "AlarmNames":{ - "shape":"AlarmNames", - "documentation":"

A list of alarm names to retrieve information for.

" - }, - "AlarmNamePrefix":{ - "shape":"AlarmNamePrefix", - "documentation":"

The alarm name prefix. AlarmNames cannot be specified if this parameter is specified.

" - }, - "StateValue":{ - "shape":"StateValue", - "documentation":"

The state value to be used in matching alarms.

" - }, - "ActionPrefix":{ - "shape":"ActionPrefix", - "documentation":"

The action name prefix.

" - }, - "MaxRecords":{ - "shape":"MaxRecords", - "documentation":"

The maximum number of alarm descriptions to retrieve.

" - }, - "NextToken":{ - "shape":"NextToken", - "documentation":"

The token returned by a previous call to indicate that there is more data available.

" - } - } - }, - "DescribeAlarmsOutput":{ - "type":"structure", - "members":{ - "MetricAlarms":{ - "shape":"MetricAlarms", - "documentation":"

A list of information for the specified alarms.

" - }, - "NextToken":{ - "shape":"NextToken", - "documentation":"

A string that marks the start of the next batch of returned results.

" - } - }, - "documentation":"

The output for the DescribeAlarms action.

" - }, - "Dimension":{ - "type":"structure", - "required":[ - "Name", - "Value" - ], - "members":{ - "Name":{ - "shape":"DimensionName", - "documentation":"

The name of the dimension.

" - }, - "Value":{ - "shape":"DimensionValue", - "documentation":"

The value representing the dimension measurement

" - } - }, - "documentation":"

The Dimension data type further expands on the identity of a metric using a Name, Value pair.

For examples that use one or more dimensions, see PutMetricData.

", - "xmlOrder":[ - "Name", - "Value" - ] - }, - "DimensionFilter":{ - "type":"structure", - "required":["Name"], - "members":{ - "Name":{ - "shape":"DimensionName", - "documentation":"

The dimension name to be matched.

" - }, - "Value":{ - "shape":"DimensionValue", - "documentation":"

The value of the dimension to be matched.

" - } - }, - "documentation":"

The DimensionFilter data type is used to filter ListMetrics results.

" - }, - "DimensionFilters":{ - "type":"list", - "member":{"shape":"DimensionFilter"}, - "max":10 - }, - "DimensionName":{ - "type":"string", - "min":1, - "max":255 - }, - "DimensionValue":{ - "type":"string", - "min":1, - "max":255 - }, - "Dimensions":{ - "type":"list", - "member":{"shape":"Dimension"}, - "max":10 - }, - "DisableAlarmActionsInput":{ - "type":"structure", - "required":["AlarmNames"], - "members":{ - "AlarmNames":{ - "shape":"AlarmNames", - "documentation":"

The names of the alarms to disable actions for.

" - } - }, - "documentation":"

" - }, - "EnableAlarmActionsInput":{ - "type":"structure", - "required":["AlarmNames"], - "members":{ - "AlarmNames":{ - "shape":"AlarmNames", - "documentation":"

The names of the alarms to enable actions for.

" - } - } - }, - "ErrorMessage":{ - "type":"string", - "min":1, - "max":255 - }, - "EvaluationPeriods":{ - "type":"integer", - "min":1 - }, - "FaultDescription":{"type":"string"}, - "GetMetricStatisticsInput":{ - "type":"structure", - "required":[ - "Namespace", - "MetricName", - "StartTime", - "EndTime", - "Period", - "Statistics" - ], - "members":{ - "Namespace":{ - "shape":"Namespace", - "documentation":"

The namespace of the metric, with or without spaces.

" - }, - "MetricName":{ - "shape":"MetricName", - "documentation":"

The name of the metric, with or without spaces.

" - }, - "Dimensions":{ - "shape":"Dimensions", - "documentation":"

A list of dimensions describing qualities of the metric.

" - }, - "StartTime":{ - "shape":"Timestamp", - "documentation":"

The time stamp to use for determining the first datapoint to return. The value specified is inclusive; results include datapoints with the time stamp specified.

" - }, - "EndTime":{ - "shape":"Timestamp", - "documentation":"

The time stamp to use for determining the last datapoint to return. The value specified is exclusive; results will include datapoints up to the time stamp specified.

" - }, - "Period":{ - "shape":"Period", - "documentation":"

The granularity, in seconds, of the returned datapoints. Period must be at least 60 seconds and must be a multiple of 60. The default value is 60.

" - }, - "Statistics":{ - "shape":"Statistics", - "documentation":"

The metric statistics to return. For information about specific statistics returned by GetMetricStatistics, go to Statistics in the Amazon CloudWatch Developer Guide.

Valid Values: Average | Sum | SampleCount | Maximum | Minimum

" - }, - "Unit":{ - "shape":"StandardUnit", - "documentation":"

The unit for the metric.

" - } - } - }, - "GetMetricStatisticsOutput":{ - "type":"structure", - "members":{ - "Label":{ - "shape":"MetricLabel", - "documentation":"

A label describing the specified metric.

" - }, - "Datapoints":{ - "shape":"Datapoints", - "documentation":"

The datapoints for the specified metric.

" - } - }, - "documentation":"

The output for the GetMetricStatistics action.

" - }, - "HistoryData":{ - "type":"string", - "min":1, - "max":4095 - }, - "HistoryItemType":{ - "type":"string", - "enum":[ - "ConfigurationUpdate", - "StateUpdate", - "Action" - ] - }, - "HistorySummary":{ - "type":"string", - "min":1, - "max":255 - }, - "InternalServiceFault":{ - "type":"structure", - "members":{ - "Message":{ - "shape":"FaultDescription", - "documentation":"

" - } - }, - "error":{ - "code":"InternalServiceError", - "httpStatusCode":500 - }, - "exception":true, - "documentation":"

Indicates that the request processing has failed due to some unknown error, exception, or failure.

", - "xmlOrder":["Message"] - }, - "InvalidFormatFault":{ - "type":"structure", - "members":{ - "message":{ - "shape":"ErrorMessage", - "documentation":"

" - } - }, - "error":{ - "code":"InvalidFormat", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Data was not syntactically valid JSON.

" - }, - "InvalidNextToken":{ - "type":"structure", - "members":{ - "message":{ - "shape":"ErrorMessage", - "documentation":"

" - } - }, - "error":{ - "code":"InvalidNextToken", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The next token specified is invalid.

" - }, - "InvalidParameterCombinationException":{ - "type":"structure", - "members":{ - "message":{ - "shape":"AwsQueryErrorMessage", - "documentation":"

" - } - }, - "error":{ - "code":"InvalidParameterCombination", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Parameters that must not be used together were used together.

" - }, - "InvalidParameterValueException":{ - "type":"structure", - "members":{ - "message":{ - "shape":"AwsQueryErrorMessage", - "documentation":"

" - } - }, - "error":{ - "code":"InvalidParameterValue", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Bad or out-of-range value was supplied for the input parameter.

" - }, - "LimitExceededFault":{ - "type":"structure", - "members":{ - "message":{ - "shape":"ErrorMessage", - "documentation":"

" - } - }, - "error":{ - "code":"LimitExceeded", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The quota for alarms for this customer has already been reached.

" - }, - "ListMetricsInput":{ - "type":"structure", - "members":{ - "Namespace":{ - "shape":"Namespace", - "documentation":"

The namespace to filter against.

" - }, - "MetricName":{ - "shape":"MetricName", - "documentation":"

The name of the metric to filter against.

" - }, - "Dimensions":{ - "shape":"DimensionFilters", - "documentation":"

A list of dimensions to filter against.

" - }, - "NextToken":{ - "shape":"NextToken", - "documentation":"

The token returned by a previous call to indicate that there is more data available.

" - } - } - }, - "ListMetricsOutput":{ - "type":"structure", - "members":{ - "Metrics":{ - "shape":"Metrics", - "documentation":"

A list of metrics used to generate statistics for an AWS account.

" - }, - "NextToken":{ - "shape":"NextToken", - "documentation":"

A string that marks the start of the next batch of returned results.

" - } - }, - "documentation":"

The output for the ListMetrics action.

", - "xmlOrder":[ - "Metrics", - "NextToken" - ] - }, - "MaxRecords":{ - "type":"integer", - "min":1, - "max":100 - }, - "Metric":{ - "type":"structure", - "members":{ - "Namespace":{ - "shape":"Namespace", - "documentation":"

The namespace of the metric.

" - }, - "MetricName":{ - "shape":"MetricName", - "documentation":"

The name of the metric.

" - }, - "Dimensions":{ - "shape":"Dimensions", - "documentation":"

A list of dimensions associated with the metric.

" - } - }, - "documentation":"

The Metric data type contains information about a specific metric. If you call ListMetrics, Amazon CloudWatch returns information contained by this data type.

The example in the Examples section publishes two metrics named buffers and latency. Both metrics are in the examples namespace. Both metrics have two dimensions, InstanceID and InstanceType.

", - "xmlOrder":[ - "Namespace", - "MetricName", - "Dimensions" - ] - }, - "MetricAlarm":{ - "type":"structure", - "members":{ - "AlarmName":{ - "shape":"AlarmName", - "documentation":"

The name of the alarm.

" - }, - "AlarmArn":{ - "shape":"AlarmArn", - "documentation":"

The Amazon Resource Name (ARN) of the alarm.

" - }, - "AlarmDescription":{ - "shape":"AlarmDescription", - "documentation":"

The description for the alarm.

" - }, - "AlarmConfigurationUpdatedTimestamp":{ - "shape":"Timestamp", - "documentation":"

The time stamp of the last update to the alarm configuration. Amazon CloudWatch uses Coordinated Universal Time (UTC) when returning time stamps, which do not accommodate seasonal adjustments such as daylight savings time. For more information, see Time stamps in the Amazon CloudWatch Developer Guide.

" - }, - "ActionsEnabled":{ - "shape":"ActionsEnabled", - "documentation":"

Indicates whether actions should be executed during any changes to the alarm's state.

" - }, - "OKActions":{ - "shape":"ResourceList", - "documentation":"

The list of actions to execute when this alarm transitions into an OK state from any other state. Each action is specified as an Amazon Resource Number (ARN). Currently the only actions supported are publishing to an Amazon SNS topic and triggering an Auto Scaling policy.

" - }, - "AlarmActions":{ - "shape":"ResourceList", - "documentation":"

The list of actions to execute when this alarm transitions into an ALARM state from any other state. Each action is specified as an Amazon Resource Number (ARN). Currently the only actions supported are publishing to an Amazon SNS topic and triggering an Auto Scaling policy.

" - }, - "InsufficientDataActions":{ - "shape":"ResourceList", - "documentation":"

The list of actions to execute when this alarm transitions into an INSUFFICIENT_DATA state from any other state. Each action is specified as an Amazon Resource Number (ARN). Currently the only actions supported are publishing to an Amazon SNS topic or triggering an Auto Scaling policy.

The current WSDL lists this attribute as UnknownActions." - }, - "StateValue":{ - "shape":"StateValue", - "documentation":"

The state value for the alarm.

" - }, - "StateReason":{ - "shape":"StateReason", - "documentation":"

A human-readable explanation for the alarm's state.

" - }, - "StateReasonData":{ - "shape":"StateReasonData", - "documentation":"

An explanation for the alarm's state in machine-readable JSON format

" - }, - "StateUpdatedTimestamp":{ - "shape":"Timestamp", - "documentation":"

The time stamp of the last update to the alarm's state. Amazon CloudWatch uses Coordinated Universal Time (UTC) when returning time stamps, which do not accommodate seasonal adjustments such as daylight savings time. For more information, see Time stamps in the Amazon CloudWatch Developer Guide.

" - }, - "MetricName":{ - "shape":"MetricName", - "documentation":"

The name of the alarm's metric.

" - }, - "Namespace":{ - "shape":"Namespace", - "documentation":"

The namespace of alarm's associated metric.

" - }, - "Statistic":{ - "shape":"Statistic", - "documentation":"

The statistic to apply to the alarm's associated metric.

" - }, - "Dimensions":{ - "shape":"Dimensions", - "documentation":"

The list of dimensions associated with the alarm's associated metric.

" - }, - "Period":{ - "shape":"Period", - "documentation":"

The period in seconds over which the statistic is applied.

" - }, - "Unit":{ - "shape":"StandardUnit", - "documentation":"

The unit of the alarm's associated metric.

" - }, - "EvaluationPeriods":{ - "shape":"EvaluationPeriods", - "documentation":"

The number of periods over which data is compared to the specified threshold.

" - }, - "Threshold":{ - "shape":"Threshold", - "documentation":"

The value against which the specified statistic is compared.

" - }, - "ComparisonOperator":{ - "shape":"ComparisonOperator", - "documentation":"

The arithmetic operation to use when comparing the specified Statistic and Threshold. The specified Statistic value is used as the first operand.

" - } - }, - "documentation":"

The MetricAlarm data type represents an alarm. You can use PutMetricAlarm to create or update an alarm.

", - "xmlOrder":[ - "AlarmName", - "AlarmArn", - "AlarmDescription", - "AlarmConfigurationUpdatedTimestamp", - "ActionsEnabled", - "OKActions", - "AlarmActions", - "InsufficientDataActions", - "StateValue", - "StateReason", - "StateReasonData", - "StateUpdatedTimestamp", - "MetricName", - "Namespace", - "Statistic", - "Dimensions", - "Period", - "Unit", - "EvaluationPeriods", - "Threshold", - "ComparisonOperator" - ] - }, - "MetricAlarms":{ - "type":"list", - "member":{"shape":"MetricAlarm"} - }, - "MetricData":{ - "type":"list", - "member":{"shape":"MetricDatum"} - }, - "MetricDatum":{ - "type":"structure", - "required":["MetricName"], - "members":{ - "MetricName":{ - "shape":"MetricName", - "documentation":"

The name of the metric.

" - }, - "Dimensions":{ - "shape":"Dimensions", - "documentation":"

A list of dimensions associated with the metric. Note, when using the Dimensions value in a query, you need to append .member.N to it (e.g., Dimensions.member.N).

" - }, - "Timestamp":{ - "shape":"Timestamp", - "documentation":"

The time stamp used for the metric. If not specified, the default value is set to the time the metric data was received. Amazon CloudWatch uses Coordinated Universal Time (UTC) when returning time stamps, which do not accommodate seasonal adjustments such as daylight savings time. For more information, see Time stamps in the Amazon CloudWatch Developer Guide.

" - }, - "Value":{ - "shape":"DatapointValue", - "documentation":"

The value for the metric.

Although the Value parameter accepts numbers of type Double, Amazon CloudWatch truncates values with very large exponents. Values with base-10 exponents greater than 126 (1 x 10^126) are truncated. Likewise, values with base-10 exponents less than -130 (1 x 10^-130) are also truncated. " - }, - "StatisticValues":{ - "shape":"StatisticSet", - "documentation":"

A set of statistical values describing the metric.

" - }, - "Unit":{ - "shape":"StandardUnit", - "documentation":"

The unit of the metric.

" - } - }, - "documentation":"

The MetricDatum data type encapsulates the information sent with PutMetricData to either create a new metric or add new values to be aggregated into an existing metric.

" - }, - "MetricLabel":{"type":"string"}, - "MetricName":{ - "type":"string", - "min":1, - "max":255 - }, - "Metrics":{ - "type":"list", - "member":{"shape":"Metric"} - }, - "MissingRequiredParameterException":{ - "type":"structure", - "members":{ - "message":{ - "shape":"AwsQueryErrorMessage", - "documentation":"

" - } - }, - "error":{ - "code":"MissingParameter", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

An input parameter that is mandatory for processing the request is not supplied.

" - }, - "Namespace":{ - "type":"string", - "min":1, - "max":255, - "pattern":"[^:].*" - }, - "NextToken":{"type":"string"}, - "Period":{ - "type":"integer", - "min":60 - }, - "PutMetricAlarmInput":{ - "type":"structure", - "required":[ - "AlarmName", - "MetricName", - "Namespace", - "Statistic", - "Period", - "EvaluationPeriods", - "Threshold", - "ComparisonOperator" - ], - "members":{ - "AlarmName":{ - "shape":"AlarmName", - "documentation":"

The descriptive name for the alarm. This name must be unique within the user's AWS account

" - }, - "AlarmDescription":{ - "shape":"AlarmDescription", - "documentation":"

The description for the alarm.

" - }, - "ActionsEnabled":{ - "shape":"ActionsEnabled", - "documentation":"

Indicates whether or not actions should be executed during any changes to the alarm's state.

" - }, - "OKActions":{ - "shape":"ResourceList", - "documentation":"

The list of actions to execute when this alarm transitions into an OK state from any other state. Each action is specified as an Amazon Resource Number (ARN). Currently the only action supported is publishing to an Amazon SNS topic or an Amazon Auto Scaling policy.

" - }, - "AlarmActions":{ - "shape":"ResourceList", - "documentation":"

The list of actions to execute when this alarm transitions into an ALARM state from any other state. Each action is specified as an Amazon Resource Number (ARN). Currently the only action supported is publishing to an Amazon SNS topic or an Amazon Auto Scaling policy.

" - }, - "InsufficientDataActions":{ - "shape":"ResourceList", - "documentation":"

The list of actions to execute when this alarm transitions into an INSUFFICIENT_DATA state from any other state. Each action is specified as an Amazon Resource Number (ARN). Currently the only action supported is publishing to an Amazon SNS topic or an Amazon Auto Scaling policy.

" - }, - "MetricName":{ - "shape":"MetricName", - "documentation":"

The name for the alarm's associated metric.

" - }, - "Namespace":{ - "shape":"Namespace", - "documentation":"

The namespace for the alarm's associated metric.

" - }, - "Statistic":{ - "shape":"Statistic", - "documentation":"

The statistic to apply to the alarm's associated metric.

" - }, - "Dimensions":{ - "shape":"Dimensions", - "documentation":"

The dimensions for the alarm's associated metric.

" - }, - "Period":{ - "shape":"Period", - "documentation":"

The period in seconds over which the specified statistic is applied.

" - }, - "Unit":{ - "shape":"StandardUnit", - "documentation":"

The unit for the alarm's associated metric.

" - }, - "EvaluationPeriods":{ - "shape":"EvaluationPeriods", - "documentation":"

The number of periods over which data is compared to the specified threshold.

" - }, - "Threshold":{ - "shape":"Threshold", - "documentation":"

The value against which the specified statistic is compared.

" - }, - "ComparisonOperator":{ - "shape":"ComparisonOperator", - "documentation":"

The arithmetic operation to use when comparing the specified Statistic and Threshold. The specified Statistic value is used as the first operand.

" - } - } - }, - "PutMetricDataInput":{ - "type":"structure", - "required":[ - "Namespace", - "MetricData" - ], - "members":{ - "Namespace":{ - "shape":"Namespace", - "documentation":"

The namespace for the metric data.

" - }, - "MetricData":{ - "shape":"MetricData", - "documentation":"

A list of data describing the metric.

" - } - } - }, - "ResourceList":{ - "type":"list", - "member":{"shape":"ResourceName"}, - "max":5 - }, - "ResourceName":{ - "type":"string", - "min":1, - "max":1024 - }, - "ResourceNotFound":{ - "type":"structure", - "members":{ - "message":{ - "shape":"ErrorMessage", - "documentation":"

" - } - }, - "error":{ - "code":"ResourceNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The named resource does not exist.

" - }, - "SetAlarmStateInput":{ - "type":"structure", - "required":[ - "AlarmName", - "StateValue", - "StateReason" - ], - "members":{ - "AlarmName":{ - "shape":"AlarmName", - "documentation":"

The descriptive name for the alarm. This name must be unique within the user's AWS account. The maximum length is 255 characters.

" - }, - "StateValue":{ - "shape":"StateValue", - "documentation":"

The value of the state.

" - }, - "StateReason":{ - "shape":"StateReason", - "documentation":"

The reason that this alarm is set to this specific state (in human-readable text format)

" - }, - "StateReasonData":{ - "shape":"StateReasonData", - "documentation":"

The reason that this alarm is set to this specific state (in machine-readable JSON format)

" - } - } - }, - "StandardUnit":{ - "type":"string", - "enum":[ - "Seconds", - "Microseconds", - "Milliseconds", - "Bytes", - "Kilobytes", - "Megabytes", - "Gigabytes", - "Terabytes", - "Bits", - "Kilobits", - "Megabits", - "Gigabits", - "Terabits", - "Percent", - "Count", - "Bytes/Second", - "Kilobytes/Second", - "Megabytes/Second", - "Gigabytes/Second", - "Terabytes/Second", - "Bits/Second", - "Kilobits/Second", - "Megabits/Second", - "Gigabits/Second", - "Terabits/Second", - "Count/Second", - "None" - ] - }, - "StateReason":{ - "type":"string", - "min":0, - "max":1023 - }, - "StateReasonData":{ - "type":"string", - "min":0, - "max":4000 - }, - "StateValue":{ - "type":"string", - "enum":[ - "OK", - "ALARM", - "INSUFFICIENT_DATA" - ] - }, - "Statistic":{ - "type":"string", - "enum":[ - "SampleCount", - "Average", - "Sum", - "Minimum", - "Maximum" - ] - }, - "StatisticSet":{ - "type":"structure", - "required":[ - "SampleCount", - "Sum", - "Minimum", - "Maximum" - ], - "members":{ - "SampleCount":{ - "shape":"DatapointValue", - "documentation":"

The number of samples used for the statistic set.

" - }, - "Sum":{ - "shape":"DatapointValue", - "documentation":"

The sum of values for the sample set.

" - }, - "Minimum":{ - "shape":"DatapointValue", - "documentation":"

The minimum value of the sample set.

" - }, - "Maximum":{ - "shape":"DatapointValue", - "documentation":"

The maximum value of the sample set.

" - } - }, - "documentation":"

The StatisticSet data type describes the StatisticValues component of MetricDatum, and represents a set of statistics that describes a specific metric.

" - }, - "Statistics":{ - "type":"list", - "member":{"shape":"Statistic"}, - "min":1, - "max":5 - }, - "Threshold":{"type":"double"}, - "Timestamp":{"type":"timestamp"} - } -} diff --git a/src/github.com/getlantern/aws-sdk-go/apis/cloudwatch/2010-08-01.paginators.json b/src/github.com/getlantern/aws-sdk-go/apis/cloudwatch/2010-08-01.paginators.json deleted file mode 100644 index 7e9f823f76..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/apis/cloudwatch/2010-08-01.paginators.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "pagination": { - "DescribeAlarmHistory": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxRecords", - "result_key": "AlarmHistoryItems" - }, - "DescribeAlarms": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxRecords", - "result_key": "MetricAlarms" - }, - "ListMetrics": { - "input_token": "NextToken", - "output_token": "NextToken", - "result_key": "Metrics" - } - } -} diff --git a/src/github.com/getlantern/aws-sdk-go/apis/codedeploy/2014-10-06.normal.json b/src/github.com/getlantern/aws-sdk-go/apis/codedeploy/2014-10-06.normal.json deleted file mode 100644 index 897bff0870..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/apis/codedeploy/2014-10-06.normal.json +++ /dev/null @@ -1,2730 +0,0 @@ -{ - "metadata":{ - "apiVersion":"2014-10-06", - "endpointPrefix":"codedeploy", - "jsonVersion":"1.1", - "serviceAbbreviation":"codedeploy", - "serviceFullName":"AWS CodeDeploy", - "signatureVersion":"v4", - "targetPrefix":"CodeDeploy_20141006", - "timestampFormat":"unixTimestamp", - "protocol":"json" - }, - "documentation":"AWS CodeDeploy Overview

This is the AWS CodeDeploy API Reference. This guide provides descriptions of the AWS CodeDeploy APIs. For additional information, see the AWS CodeDeploy User Guide.

Using the APIs

You can use the AWS CodeDeploy APIs to work with the following items:

", - "operations":{ - "BatchGetApplications":{ - "name":"BatchGetApplications", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"BatchGetApplicationsInput", - "documentation":"

Represents the input of a batch get applications operation.

" - }, - "output":{ - "shape":"BatchGetApplicationsOutput", - "documentation":"

Represents the output of a batch get applications operation.

" - }, - "errors":[ - { - "shape":"ApplicationNameRequiredException", - "exception":true, - "documentation":"

The minimum number of required application names was not specified.

" - }, - { - "shape":"InvalidApplicationNameException", - "exception":true, - "documentation":"

The application name was specified in an invalid format.

" - }, - { - "shape":"ApplicationDoesNotExistException", - "exception":true, - "documentation":"

The application does not exist within the AWS user account.

" - } - ], - "documentation":"

Gets information about one or more applications.

" - }, - "BatchGetDeployments":{ - "name":"BatchGetDeployments", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"BatchGetDeploymentsInput", - "documentation":"

Represents the input of a batch get deployments operation.

" - }, - "output":{ - "shape":"BatchGetDeploymentsOutput", - "documentation":"

Represents the output of a batch get deployments operation.

" - }, - "errors":[ - { - "shape":"DeploymentIdRequiredException", - "exception":true, - "documentation":"

At least one deployment ID must be specified.

" - }, - { - "shape":"InvalidDeploymentIdException", - "exception":true, - "documentation":"

At least one of the deployment IDs was specified in an invalid format.

" - } - ], - "documentation":"

Gets information about one or more deployments.

" - }, - "CreateApplication":{ - "name":"CreateApplication", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"CreateApplicationInput", - "documentation":"

Represents the input of a create application operation.

" - }, - "output":{ - "shape":"CreateApplicationOutput", - "documentation":"

Represents the output of a create application operation.

" - }, - "errors":[ - { - "shape":"ApplicationNameRequiredException", - "exception":true, - "documentation":"

The minimum number of required application names was not specified.

" - }, - { - "shape":"InvalidApplicationNameException", - "exception":true, - "documentation":"

The application name was specified in an invalid format.

" - }, - { - "shape":"ApplicationAlreadyExistsException", - "exception":true, - "documentation":"

An application with the specified name already exists within the AWS user account.

" - }, - { - "shape":"ApplicationLimitExceededException", - "exception":true, - "documentation":"

More applications were attempted to be created than were allowed.

" - } - ], - "documentation":"

Creates a new application.

" - }, - "CreateDeployment":{ - "name":"CreateDeployment", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"CreateDeploymentInput", - "documentation":"

Represents the input of a create deployment operation.

" - }, - "output":{ - "shape":"CreateDeploymentOutput", - "documentation":"

Represents the output of a create deployment operation.

" - }, - "errors":[ - { - "shape":"ApplicationNameRequiredException", - "exception":true, - "documentation":"

The minimum number of required application names was not specified.

" - }, - { - "shape":"InvalidApplicationNameException", - "exception":true, - "documentation":"

The application name was specified in an invalid format.

" - }, - { - "shape":"ApplicationDoesNotExistException", - "exception":true, - "documentation":"

The application does not exist within the AWS user account.

" - }, - { - "shape":"DeploymentGroupNameRequiredException", - "exception":true, - "documentation":"

The deployment group name was not specified.

" - }, - { - "shape":"InvalidDeploymentGroupNameException", - "exception":true, - "documentation":"

The deployment group name was specified in an invalid format.

" - }, - { - "shape":"DeploymentGroupDoesNotExistException", - "exception":true, - "documentation":"

The named deployment group does not exist within the AWS user account.

" - }, - { - "shape":"RevisionRequiredException", - "exception":true, - "documentation":"

The revision ID was not specified.

" - }, - { - "shape":"InvalidRevisionException", - "exception":true, - "documentation":"

The revision was specified in an invalid format.

" - }, - { - "shape":"InvalidDeploymentConfigNameException", - "exception":true, - "documentation":"

The deployment configuration name was specified in an invalid format.

" - }, - { - "shape":"DeploymentConfigDoesNotExistException", - "exception":true, - "documentation":"

The deployment configuration does not exist within the AWS user account.

" - }, - { - "shape":"DescriptionTooLongException", - "exception":true, - "documentation":"

The description that was provided is too long.

" - }, - { - "shape":"DeploymentLimitExceededException", - "exception":true, - "documentation":"

The number of allowed deployments was exceeded.

" - } - ], - "documentation":"

Deploys an application revision to the specified deployment group.

" - }, - "CreateDeploymentConfig":{ - "name":"CreateDeploymentConfig", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"CreateDeploymentConfigInput", - "documentation":"

Represents the input of a create deployment configuration operation.

" - }, - "output":{ - "shape":"CreateDeploymentConfigOutput", - "documentation":"

Represents the output of a create deployment configuration operation.

" - }, - "errors":[ - { - "shape":"InvalidDeploymentConfigNameException", - "exception":true, - "documentation":"

The deployment configuration name was specified in an invalid format.

" - }, - { - "shape":"DeploymentConfigNameRequiredException", - "exception":true, - "documentation":"

The deployment configuration name was not specified.

" - }, - { - "shape":"DeploymentConfigAlreadyExistsException", - "exception":true, - "documentation":"

A deployment configuration with the specified name already exists within the AWS user account.

" - }, - { - "shape":"InvalidMinimumHealthyHostValueException", - "exception":true, - "documentation":"

The minimum healthy instances value was specified in an invalid format.

" - }, - { - "shape":"DeploymentConfigLimitExceededException", - "exception":true, - "documentation":"

The deployment configurations limit was exceeded.

" - } - ], - "documentation":"

Creates a new deployment configuration.

" - }, - "CreateDeploymentGroup":{ - "name":"CreateDeploymentGroup", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"CreateDeploymentGroupInput", - "documentation":"

Represents the input of a create deployment group operation.

" - }, - "output":{ - "shape":"CreateDeploymentGroupOutput", - "documentation":"

Represents the output of a create deployment group operation.

" - }, - "errors":[ - { - "shape":"ApplicationNameRequiredException", - "exception":true, - "documentation":"

The minimum number of required application names was not specified.

" - }, - { - "shape":"InvalidApplicationNameException", - "exception":true, - "documentation":"

The application name was specified in an invalid format.

" - }, - { - "shape":"ApplicationDoesNotExistException", - "exception":true, - "documentation":"

The application does not exist within the AWS user account.

" - }, - { - "shape":"DeploymentGroupNameRequiredException", - "exception":true, - "documentation":"

The deployment group name was not specified.

" - }, - { - "shape":"InvalidDeploymentGroupNameException", - "exception":true, - "documentation":"

The deployment group name was specified in an invalid format.

" - }, - { - "shape":"DeploymentGroupAlreadyExistsException", - "exception":true, - "documentation":"

A deployment group group with the specified name already exists within the AWS user account.

" - }, - { - "shape":"InvalidEC2TagException", - "exception":true, - "documentation":"

The Amazon EC2 tag was specified in an invalid format.

" - }, - { - "shape":"InvalidAutoScalingGroupException", - "exception":true, - "documentation":"

The Auto Scaling group was specified in an invalid format or does not exist.

" - }, - { - "shape":"InvalidDeploymentConfigNameException", - "exception":true, - "documentation":"

The deployment configuration name was specified in an invalid format.

" - }, - { - "shape":"DeploymentConfigDoesNotExistException", - "exception":true, - "documentation":"

The deployment configuration does not exist within the AWS user account.

" - }, - { - "shape":"RoleRequiredException", - "exception":true, - "documentation":"

The role ID was not specified.

" - }, - { - "shape":"InvalidRoleException", - "exception":true, - "documentation":"

The service role ARN was specified in an invalid format. Or, if an Auto Scaling group was specified, the specified service role does not grant the appropriate permissions to Auto Scaling.

" - }, - { - "shape":"DeploymentGroupLimitExceededException", - "exception":true, - "documentation":"

The deployment groups limit was exceeded.

" - } - ], - "documentation":"

Creates a new deployment group for application revisions to be deployed to.

" - }, - "DeleteApplication":{ - "name":"DeleteApplication", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DeleteApplicationInput", - "documentation":"

Represents the input of a delete application operation.

" - }, - "errors":[ - { - "shape":"ApplicationNameRequiredException", - "exception":true, - "documentation":"

The minimum number of required application names was not specified.

" - }, - { - "shape":"InvalidApplicationNameException", - "exception":true, - "documentation":"

The application name was specified in an invalid format.

" - } - ], - "documentation":"

Deletes an application.

" - }, - "DeleteDeploymentConfig":{ - "name":"DeleteDeploymentConfig", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DeleteDeploymentConfigInput", - "documentation":"

Represents the input of a delete deployment configuration operation.

" - }, - "errors":[ - { - "shape":"InvalidDeploymentConfigNameException", - "exception":true, - "documentation":"

The deployment configuration name was specified in an invalid format.

" - }, - { - "shape":"DeploymentConfigNameRequiredException", - "exception":true, - "documentation":"

The deployment configuration name was not specified.

" - }, - { - "shape":"DeploymentConfigInUseException", - "exception":true, - "documentation":"

The deployment configuration is still in use.

" - }, - { - "shape":"InvalidOperationException", - "exception":true, - "documentation":"

An invalid operation was detected.

" - } - ], - "documentation":"

Deletes a deployment configuration.

A deployment configuration cannot be deleted if it is currently in use. Also, predefined configurations cannot be deleted." - }, - "DeleteDeploymentGroup":{ - "name":"DeleteDeploymentGroup", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DeleteDeploymentGroupInput", - "documentation":"

Represents the input of a delete deployment group operation.

" - }, - "output":{ - "shape":"DeleteDeploymentGroupOutput", - "documentation":"

Represents the output of a delete deployment group operation.

" - }, - "errors":[ - { - "shape":"ApplicationNameRequiredException", - "exception":true, - "documentation":"

The minimum number of required application names was not specified.

" - }, - { - "shape":"InvalidApplicationNameException", - "exception":true, - "documentation":"

The application name was specified in an invalid format.

" - }, - { - "shape":"DeploymentGroupNameRequiredException", - "exception":true, - "documentation":"

The deployment group name was not specified.

" - }, - { - "shape":"InvalidDeploymentGroupNameException", - "exception":true, - "documentation":"

The deployment group name was specified in an invalid format.

" - }, - { - "shape":"InvalidRoleException", - "exception":true, - "documentation":"

The service role ARN was specified in an invalid format. Or, if an Auto Scaling group was specified, the specified service role does not grant the appropriate permissions to Auto Scaling.

" - } - ], - "documentation":"

Deletes a deployment group.

" - }, - "GetApplication":{ - "name":"GetApplication", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"GetApplicationInput", - "documentation":"

Represents the input of a get application operation.

" - }, - "output":{ - "shape":"GetApplicationOutput", - "documentation":"

Represents the output of a get application operation.

" - }, - "errors":[ - { - "shape":"ApplicationNameRequiredException", - "exception":true, - "documentation":"

The minimum number of required application names was not specified.

" - }, - { - "shape":"InvalidApplicationNameException", - "exception":true, - "documentation":"

The application name was specified in an invalid format.

" - }, - { - "shape":"ApplicationDoesNotExistException", - "exception":true, - "documentation":"

The application does not exist within the AWS user account.

" - } - ], - "documentation":"

Gets information about an application.

" - }, - "GetApplicationRevision":{ - "name":"GetApplicationRevision", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"GetApplicationRevisionInput", - "documentation":"

Represents the input of a get application revision operation.

" - }, - "output":{ - "shape":"GetApplicationRevisionOutput", - "documentation":"

Represents the output of a get application revision operation.

" - }, - "errors":[ - { - "shape":"ApplicationDoesNotExistException", - "exception":true, - "documentation":"

The application does not exist within the AWS user account.

" - }, - { - "shape":"ApplicationNameRequiredException", - "exception":true, - "documentation":"

The minimum number of required application names was not specified.

" - }, - { - "shape":"InvalidApplicationNameException", - "exception":true, - "documentation":"

The application name was specified in an invalid format.

" - }, - { - "shape":"RevisionDoesNotExistException", - "exception":true, - "documentation":"

The named revision does not exist within the AWS user account.

" - }, - { - "shape":"RevisionRequiredException", - "exception":true, - "documentation":"

The revision ID was not specified.

" - }, - { - "shape":"InvalidRevisionException", - "exception":true, - "documentation":"

The revision was specified in an invalid format.

" - } - ], - "documentation":"

Gets information about an application revision.

" - }, - "GetDeployment":{ - "name":"GetDeployment", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"GetDeploymentInput", - "documentation":"

Represents the input of a get deployment operation.

" - }, - "output":{ - "shape":"GetDeploymentOutput", - "documentation":"

Represents the output of a get deployment operation.

" - }, - "errors":[ - { - "shape":"DeploymentIdRequiredException", - "exception":true, - "documentation":"

At least one deployment ID must be specified.

" - }, - { - "shape":"InvalidDeploymentIdException", - "exception":true, - "documentation":"

At least one of the deployment IDs was specified in an invalid format.

" - }, - { - "shape":"DeploymentDoesNotExistException", - "exception":true, - "documentation":"

The deployment does not exist within the AWS user account.

" - } - ], - "documentation":"

Gets information about a deployment.

" - }, - "GetDeploymentConfig":{ - "name":"GetDeploymentConfig", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"GetDeploymentConfigInput", - "documentation":"

Represents the input of a get deployment configuration operation.

" - }, - "output":{ - "shape":"GetDeploymentConfigOutput", - "documentation":"

Represents the output of a get deployment configuration operation.

" - }, - "errors":[ - { - "shape":"InvalidDeploymentConfigNameException", - "exception":true, - "documentation":"

The deployment configuration name was specified in an invalid format.

" - }, - { - "shape":"DeploymentConfigNameRequiredException", - "exception":true, - "documentation":"

The deployment configuration name was not specified.

" - }, - { - "shape":"DeploymentConfigDoesNotExistException", - "exception":true, - "documentation":"

The deployment configuration does not exist within the AWS user account.

" - } - ], - "documentation":"

Gets information about a deployment configuration.

" - }, - "GetDeploymentGroup":{ - "name":"GetDeploymentGroup", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"GetDeploymentGroupInput", - "documentation":"

Represents the input of a get deployment group operation.

" - }, - "output":{ - "shape":"GetDeploymentGroupOutput", - "documentation":"

Represents the output of a get deployment group operation.

" - }, - "errors":[ - { - "shape":"ApplicationNameRequiredException", - "exception":true, - "documentation":"

The minimum number of required application names was not specified.

" - }, - { - "shape":"InvalidApplicationNameException", - "exception":true, - "documentation":"

The application name was specified in an invalid format.

" - }, - { - "shape":"ApplicationDoesNotExistException", - "exception":true, - "documentation":"

The application does not exist within the AWS user account.

" - }, - { - "shape":"DeploymentGroupNameRequiredException", - "exception":true, - "documentation":"

The deployment group name was not specified.

" - }, - { - "shape":"InvalidDeploymentGroupNameException", - "exception":true, - "documentation":"

The deployment group name was specified in an invalid format.

" - }, - { - "shape":"DeploymentGroupDoesNotExistException", - "exception":true, - "documentation":"

The named deployment group does not exist within the AWS user account.

" - } - ], - "documentation":"

Gets information about a deployment group.

" - }, - "GetDeploymentInstance":{ - "name":"GetDeploymentInstance", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"GetDeploymentInstanceInput", - "documentation":"

Represents the input of a get deployment instance operation.

" - }, - "output":{ - "shape":"GetDeploymentInstanceOutput", - "documentation":"

Represents the output of a get deployment instance operation.

" - }, - "errors":[ - { - "shape":"DeploymentIdRequiredException", - "exception":true, - "documentation":"

At least one deployment ID must be specified.

" - }, - { - "shape":"DeploymentDoesNotExistException", - "exception":true, - "documentation":"

The deployment does not exist within the AWS user account.

" - }, - { - "shape":"InstanceIdRequiredException", - "exception":true, - "documentation":"

The instance ID was not specified.

" - }, - { - "shape":"InvalidDeploymentIdException", - "exception":true, - "documentation":"

At least one of the deployment IDs was specified in an invalid format.

" - }, - { - "shape":"InstanceDoesNotExistException", - "exception":true, - "documentation":"

The specified instance does not exist in the deployment group.

" - } - ], - "documentation":"

Gets information about an Amazon EC2 instance as part of a deployment.

" - }, - "ListApplicationRevisions":{ - "name":"ListApplicationRevisions", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"ListApplicationRevisionsInput", - "documentation":"

Represents the input of a list application revisions operation.

" - }, - "output":{ - "shape":"ListApplicationRevisionsOutput", - "documentation":"

Represents the output of a list application revisions operation.

" - }, - "errors":[ - { - "shape":"ApplicationDoesNotExistException", - "exception":true, - "documentation":"

The application does not exist within the AWS user account.

" - }, - { - "shape":"ApplicationNameRequiredException", - "exception":true, - "documentation":"

The minimum number of required application names was not specified.

" - }, - { - "shape":"InvalidApplicationNameException", - "exception":true, - "documentation":"

The application name was specified in an invalid format.

" - }, - { - "shape":"InvalidSortByException", - "exception":true, - "documentation":"

The column name to sort by is either not present or was specified in an invalid format.

" - }, - { - "shape":"InvalidSortOrderException", - "exception":true, - "documentation":"

The sort order was specified in an invalid format.

" - }, - { - "shape":"InvalidBucketNameFilterException", - "exception":true, - "documentation":"

The bucket name either doesn't exist or was specified in an invalid format.

" - }, - { - "shape":"InvalidKeyPrefixFilterException", - "exception":true, - "documentation":"

The specified key prefix filter was specified in an invalid format.

" - }, - { - "shape":"BucketNameFilterRequiredException", - "exception":true, - "documentation":"

A bucket name is required but was not provided.

" - }, - { - "shape":"InvalidDeployedStateFilterException", - "exception":true, - "documentation":"

The deployed state filter was specified in an invalid format.

" - }, - { - "shape":"InvalidNextTokenException", - "exception":true, - "documentation":"

The next token was specified in an invalid format.

" - } - ], - "documentation":"

Lists information about revisions for an application.

" - }, - "ListApplications":{ - "name":"ListApplications", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"ListApplicationsInput", - "documentation":"

Represents the input of a list applications operation.

" - }, - "output":{ - "shape":"ListApplicationsOutput", - "documentation":"

Represents the output of a list applications operation.

" - }, - "errors":[ - { - "shape":"InvalidNextTokenException", - "exception":true, - "documentation":"

The next token was specified in an invalid format.

" - } - ], - "documentation":"

Lists the applications registered within the AWS user account.

" - }, - "ListDeploymentConfigs":{ - "name":"ListDeploymentConfigs", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"ListDeploymentConfigsInput", - "documentation":"

Represents the input of a list deployment configurations operation.

" - }, - "output":{ - "shape":"ListDeploymentConfigsOutput", - "documentation":"

Represents the output of a list deployment configurations operation.

" - }, - "errors":[ - { - "shape":"InvalidNextTokenException", - "exception":true, - "documentation":"

The next token was specified in an invalid format.

" - } - ], - "documentation":"

Lists the deployment configurations within the AWS user account.

" - }, - "ListDeploymentGroups":{ - "name":"ListDeploymentGroups", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"ListDeploymentGroupsInput", - "documentation":"

Represents the input of a list deployment groups operation.

" - }, - "output":{ - "shape":"ListDeploymentGroupsOutput", - "documentation":"

Represents the output of a list deployment groups operation.

" - }, - "errors":[ - { - "shape":"ApplicationNameRequiredException", - "exception":true, - "documentation":"

The minimum number of required application names was not specified.

" - }, - { - "shape":"InvalidApplicationNameException", - "exception":true, - "documentation":"

The application name was specified in an invalid format.

" - }, - { - "shape":"ApplicationDoesNotExistException", - "exception":true, - "documentation":"

The application does not exist within the AWS user account.

" - }, - { - "shape":"InvalidNextTokenException", - "exception":true, - "documentation":"

The next token was specified in an invalid format.

" - } - ], - "documentation":"

Lists the deployment groups for an application registered within the AWS user account.

" - }, - "ListDeploymentInstances":{ - "name":"ListDeploymentInstances", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"ListDeploymentInstancesInput", - "documentation":"

Represents the input of a list deployment instances operation.

" - }, - "output":{ - "shape":"ListDeploymentInstancesOutput", - "documentation":"

Represents the output of a list deployment instances operation.

" - }, - "errors":[ - { - "shape":"DeploymentIdRequiredException", - "exception":true, - "documentation":"

At least one deployment ID must be specified.

" - }, - { - "shape":"DeploymentDoesNotExistException", - "exception":true, - "documentation":"

The deployment does not exist within the AWS user account.

" - }, - { - "shape":"DeploymentNotStartedException", - "exception":true, - "documentation":"

The specified deployment has not started.

" - }, - { - "shape":"InvalidNextTokenException", - "exception":true, - "documentation":"

The next token was specified in an invalid format.

" - }, - { - "shape":"InvalidDeploymentIdException", - "exception":true, - "documentation":"

At least one of the deployment IDs was specified in an invalid format.

" - }, - { - "shape":"InvalidInstanceStatusException", - "exception":true, - "documentation":"

The specified instance status does not exist.

" - } - ], - "documentation":"

Lists the Amazon EC2 instances for a deployment within the AWS user account.

" - }, - "ListDeployments":{ - "name":"ListDeployments", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"ListDeploymentsInput", - "documentation":"

Represents the input of a list deployments operation.

" - }, - "output":{ - "shape":"ListDeploymentsOutput", - "documentation":"

Represents the output of a list deployments operation.

" - }, - "errors":[ - { - "shape":"ApplicationNameRequiredException", - "exception":true, - "documentation":"

The minimum number of required application names was not specified.

" - }, - { - "shape":"InvalidApplicationNameException", - "exception":true, - "documentation":"

The application name was specified in an invalid format.

" - }, - { - "shape":"ApplicationDoesNotExistException", - "exception":true, - "documentation":"

The application does not exist within the AWS user account.

" - }, - { - "shape":"InvalidDeploymentGroupNameException", - "exception":true, - "documentation":"

The deployment group name was specified in an invalid format.

" - }, - { - "shape":"DeploymentGroupDoesNotExistException", - "exception":true, - "documentation":"

The named deployment group does not exist within the AWS user account.

" - }, - { - "shape":"DeploymentGroupNameRequiredException", - "exception":true, - "documentation":"

The deployment group name was not specified.

" - }, - { - "shape":"InvalidTimeRangeException", - "exception":true, - "documentation":"

The specified time range was specified in an invalid format.

" - }, - { - "shape":"InvalidDeploymentStatusException", - "exception":true, - "documentation":"

The specified deployment status doesn't exist or cannot be determined.

" - }, - { - "shape":"InvalidNextTokenException", - "exception":true, - "documentation":"

The next token was specified in an invalid format.

" - } - ], - "documentation":"

Lists the deployments under a deployment group for an application registered within the AWS user account.

" - }, - "RegisterApplicationRevision":{ - "name":"RegisterApplicationRevision", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"RegisterApplicationRevisionInput", - "documentation":"

Represents the input of a register application revision operation.

" - }, - "errors":[ - { - "shape":"ApplicationDoesNotExistException", - "exception":true, - "documentation":"

The application does not exist within the AWS user account.

" - }, - { - "shape":"ApplicationNameRequiredException", - "exception":true, - "documentation":"

The minimum number of required application names was not specified.

" - }, - { - "shape":"InvalidApplicationNameException", - "exception":true, - "documentation":"

The application name was specified in an invalid format.

" - }, - { - "shape":"DescriptionTooLongException", - "exception":true, - "documentation":"

The description that was provided is too long.

" - }, - { - "shape":"RevisionRequiredException", - "exception":true, - "documentation":"

The revision ID was not specified.

" - }, - { - "shape":"InvalidRevisionException", - "exception":true, - "documentation":"

The revision was specified in an invalid format.

" - } - ], - "documentation":"

Registers with AWS CodeDeploy a revision for the specified application.

" - }, - "StopDeployment":{ - "name":"StopDeployment", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"StopDeploymentInput", - "documentation":"

Represents the input of a stop deployment operation.

" - }, - "output":{ - "shape":"StopDeploymentOutput", - "documentation":"

Represents the output of a stop deployment operation.

" - }, - "errors":[ - { - "shape":"DeploymentIdRequiredException", - "exception":true, - "documentation":"

At least one deployment ID must be specified.

" - }, - { - "shape":"DeploymentDoesNotExistException", - "exception":true, - "documentation":"

The deployment does not exist within the AWS user account.

" - }, - { - "shape":"DeploymentAlreadyCompletedException", - "exception":true, - "documentation":"

The deployment is already completed.

" - }, - { - "shape":"InvalidDeploymentIdException", - "exception":true, - "documentation":"

At least one of the deployment IDs was specified in an invalid format.

" - } - ], - "documentation":"

Attempts to stop an ongoing deployment.

" - }, - "UpdateApplication":{ - "name":"UpdateApplication", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"UpdateApplicationInput", - "documentation":"

Represents the input of an update application operation.

" - }, - "errors":[ - { - "shape":"ApplicationNameRequiredException", - "exception":true, - "documentation":"

The minimum number of required application names was not specified.

" - }, - { - "shape":"InvalidApplicationNameException", - "exception":true, - "documentation":"

The application name was specified in an invalid format.

" - }, - { - "shape":"ApplicationAlreadyExistsException", - "exception":true, - "documentation":"

An application with the specified name already exists within the AWS user account.

" - }, - { - "shape":"ApplicationDoesNotExistException", - "exception":true, - "documentation":"

The application does not exist within the AWS user account.

" - } - ], - "documentation":"

Changes an existing application's name.

" - }, - "UpdateDeploymentGroup":{ - "name":"UpdateDeploymentGroup", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"UpdateDeploymentGroupInput", - "documentation":"

Represents the input of an update deployment group operation.

" - }, - "output":{ - "shape":"UpdateDeploymentGroupOutput", - "documentation":"

Represents the output of an update deployment group operation.

" - }, - "errors":[ - { - "shape":"ApplicationNameRequiredException", - "exception":true, - "documentation":"

The minimum number of required application names was not specified.

" - }, - { - "shape":"InvalidApplicationNameException", - "exception":true, - "documentation":"

The application name was specified in an invalid format.

" - }, - { - "shape":"ApplicationDoesNotExistException", - "exception":true, - "documentation":"

The application does not exist within the AWS user account.

" - }, - { - "shape":"InvalidDeploymentGroupNameException", - "exception":true, - "documentation":"

The deployment group name was specified in an invalid format.

" - }, - { - "shape":"DeploymentGroupAlreadyExistsException", - "exception":true, - "documentation":"

A deployment group group with the specified name already exists within the AWS user account.

" - }, - { - "shape":"DeploymentGroupNameRequiredException", - "exception":true, - "documentation":"

The deployment group name was not specified.

" - }, - { - "shape":"InvalidEC2TagException", - "exception":true, - "documentation":"

The Amazon EC2 tag was specified in an invalid format.

" - }, - { - "shape":"InvalidAutoScalingGroupException", - "exception":true, - "documentation":"

The Auto Scaling group was specified in an invalid format or does not exist.

" - }, - { - "shape":"InvalidDeploymentConfigNameException", - "exception":true, - "documentation":"

The deployment configuration name was specified in an invalid format.

" - }, - { - "shape":"DeploymentConfigDoesNotExistException", - "exception":true, - "documentation":"

The deployment configuration does not exist within the AWS user account.

" - }, - { - "shape":"InvalidRoleException", - "exception":true, - "documentation":"

The service role ARN was specified in an invalid format. Or, if an Auto Scaling group was specified, the specified service role does not grant the appropriate permissions to Auto Scaling.

" - } - ], - "documentation":"

Changes information about an existing deployment group.

" - } - }, - "shapes":{ - "ApplicationAlreadyExistsException":{ - "type":"structure", - "members":{ - }, - "exception":true, - "documentation":"

An application with the specified name already exists within the AWS user account.

" - }, - "ApplicationDoesNotExistException":{ - "type":"structure", - "members":{ - }, - "exception":true, - "documentation":"

The application does not exist within the AWS user account.

" - }, - "ApplicationId":{"type":"string"}, - "ApplicationInfo":{ - "type":"structure", - "members":{ - "applicationId":{ - "shape":"ApplicationId", - "documentation":"

The application ID.

" - }, - "applicationName":{ - "shape":"ApplicationName", - "documentation":"

The application name.

" - }, - "createTime":{ - "shape":"Timestamp", - "documentation":"

The time that the application was created.

" - }, - "linkedToGitHub":{ - "shape":"Boolean", - "documentation":"

True if the user has authenticated with GitHub for the specified application; otherwise, false.

" - } - }, - "documentation":"

Information about an application.

" - }, - "ApplicationLimitExceededException":{ - "type":"structure", - "members":{ - }, - "exception":true, - "documentation":"

More applications were attempted to be created than were allowed.

" - }, - "ApplicationName":{ - "type":"string", - "min":1, - "max":100 - }, - "ApplicationNameRequiredException":{ - "type":"structure", - "members":{ - }, - "exception":true, - "documentation":"

The minimum number of required application names was not specified.

" - }, - "ApplicationRevisionSortBy":{ - "type":"string", - "enum":[ - "registerTime", - "firstUsedTime", - "lastUsedTime" - ] - }, - "ApplicationsInfoList":{ - "type":"list", - "member":{"shape":"ApplicationInfo"} - }, - "ApplicationsList":{ - "type":"list", - "member":{"shape":"ApplicationName"} - }, - "AutoScalingGroup":{ - "type":"structure", - "members":{ - "name":{ - "shape":"AutoScalingGroupName", - "documentation":"

The Auto Scaling group name.

" - }, - "hook":{ - "shape":"AutoScalingGroupHook", - "documentation":"

An Auto Scaling lifecycle event hook name.

" - } - }, - "documentation":"

Information about an Auto Scaling group.

" - }, - "AutoScalingGroupHook":{"type":"string"}, - "AutoScalingGroupList":{ - "type":"list", - "member":{"shape":"AutoScalingGroup"} - }, - "AutoScalingGroupName":{"type":"string"}, - "AutoScalingGroupNameList":{ - "type":"list", - "member":{"shape":"AutoScalingGroupName"} - }, - "BatchGetApplicationsInput":{ - "type":"structure", - "members":{ - "applicationNames":{ - "shape":"ApplicationsList", - "documentation":"

A list of application names, with multiple application names separated by spaces.

" - } - }, - "documentation":"

Represents the input of a batch get applications operation.

" - }, - "BatchGetApplicationsOutput":{ - "type":"structure", - "members":{ - "applicationsInfo":{ - "shape":"ApplicationsInfoList", - "documentation":"

Information about the applications.

" - } - }, - "documentation":"

Represents the output of a batch get applications operation.

" - }, - "BatchGetDeploymentsInput":{ - "type":"structure", - "members":{ - "deploymentIds":{ - "shape":"DeploymentsList", - "documentation":"

A list of deployment IDs, with multiple deployment IDs separated by spaces.

" - } - }, - "documentation":"

Represents the input of a batch get deployments operation.

" - }, - "BatchGetDeploymentsOutput":{ - "type":"structure", - "members":{ - "deploymentsInfo":{ - "shape":"DeploymentsInfoList", - "documentation":"

Information about the deployments.

" - } - }, - "documentation":"

Represents the output of a batch get deployments operation.

" - }, - "Boolean":{"type":"boolean"}, - "BucketNameFilterRequiredException":{ - "type":"structure", - "members":{ - }, - "exception":true, - "documentation":"

A bucket name is required but was not provided.

" - }, - "BundleType":{ - "type":"string", - "enum":[ - "tar", - "tgz", - "zip" - ] - }, - "CommitId":{"type":"string"}, - "CreateApplicationInput":{ - "type":"structure", - "required":["applicationName"], - "members":{ - "applicationName":{ - "shape":"ApplicationName", - "documentation":"

The name of the application. This name must be unique within the AWS user account.

" - } - }, - "documentation":"

Represents the input of a create application operation.

" - }, - "CreateApplicationOutput":{ - "type":"structure", - "members":{ - "applicationId":{ - "shape":"ApplicationId", - "documentation":"

A unique application ID.

" - } - }, - "documentation":"

Represents the output of a create application operation.

" - }, - "CreateDeploymentConfigInput":{ - "type":"structure", - "required":["deploymentConfigName"], - "members":{ - "deploymentConfigName":{ - "shape":"DeploymentConfigName", - "documentation":"

The name of the deployment configuration to create.

" - }, - "minimumHealthyHosts":{ - "shape":"MinimumHealthyHosts", - "documentation":"

The minimum number of healthy instances that should be available at any time during the deployment. There are two parameters expected in the input: type and value.

The type parameter takes either of the following values:

The value parameter takes an integer.

For example, to set a minimum of 95% healthy instances, specify a type of FLEET_PERCENT and a value of 95.

" - } - }, - "documentation":"

Represents the input of a create deployment configuration operation.

" - }, - "CreateDeploymentConfigOutput":{ - "type":"structure", - "members":{ - "deploymentConfigId":{ - "shape":"DeploymentConfigId", - "documentation":"

A unique deployment configuration ID.

" - } - }, - "documentation":"

Represents the output of a create deployment configuration operation.

" - }, - "CreateDeploymentGroupInput":{ - "type":"structure", - "required":[ - "applicationName", - "deploymentGroupName" - ], - "members":{ - "applicationName":{ - "shape":"ApplicationName", - "documentation":"

The name of an existing AWS CodeDeploy application within the AWS user account.

" - }, - "deploymentGroupName":{ - "shape":"DeploymentGroupName", - "documentation":"

The name of an existing deployment group for the specified application.

" - }, - "deploymentConfigName":{ - "shape":"DeploymentConfigName", - "documentation":"

If specified, the deployment configuration name must be one of the predefined values, or it can be a custom deployment configuration:

To create a custom deployment configuration, call the create deployment configuration operation.

" - }, - "ec2TagFilters":{ - "shape":"EC2TagFilterList", - "documentation":"

The Amazon EC2 tags to filter on.

" - }, - "autoScalingGroups":{ - "shape":"AutoScalingGroupNameList", - "documentation":"

A list of associated Auto Scaling groups.

" - }, - "serviceRoleArn":{ - "shape":"Role", - "documentation":"

A service role ARN that allows AWS CodeDeploy to act on the user's behalf when interacting with AWS services.

" - } - }, - "documentation":"

Represents the input of a create deployment group operation.

" - }, - "CreateDeploymentGroupOutput":{ - "type":"structure", - "members":{ - "deploymentGroupId":{ - "shape":"DeploymentGroupId", - "documentation":"

A unique deployment group ID.

" - } - }, - "documentation":"

Represents the output of a create deployment group operation.

" - }, - "CreateDeploymentInput":{ - "type":"structure", - "required":["applicationName"], - "members":{ - "applicationName":{ - "shape":"ApplicationName", - "documentation":"

The name of an existing AWS CodeDeploy application within the AWS user account.

" - }, - "deploymentGroupName":{ - "shape":"DeploymentGroupName", - "documentation":"

The deployment group's name.

" - }, - "revision":{ - "shape":"RevisionLocation", - "documentation":"

The type of revision to deploy, along with information about the revision's location.

" - }, - "deploymentConfigName":{ - "shape":"DeploymentConfigName", - "documentation":"

The name of an existing deployment configuration within the AWS user account.

If not specified, the value configured in the deployment group will be used as the default. If the deployment group does not have a deployment configuration associated with it, then CodeDeployDefault.OneAtATime will be used by default.

" - }, - "description":{ - "shape":"Description", - "documentation":"

A comment about the deployment.

" - }, - "ignoreApplicationStopFailures":{ - "shape":"Boolean", - "documentation":"

If set to true, then if the deployment causes the ApplicationStop deployment lifecycle event to fail to a specific instance, the deployment will not be considered to have failed to that instance at that point and will continue on to the BeforeInstall deployment lifecycle event.

If set to false or not specified, then if the deployment causes the ApplicationStop deployment lifecycle event to fail to a specific instance, the deployment will stop to that instance, and the deployment to that instance will be considered to have failed.

" - } - }, - "documentation":"

Represents the input of a create deployment operation.

" - }, - "CreateDeploymentOutput":{ - "type":"structure", - "members":{ - "deploymentId":{ - "shape":"DeploymentId", - "documentation":"

A unique deployment ID.

" - } - }, - "documentation":"

Represents the output of a create deployment operation.

" - }, - "DeleteApplicationInput":{ - "type":"structure", - "required":["applicationName"], - "members":{ - "applicationName":{ - "shape":"ApplicationName", - "documentation":"

The name of an existing AWS CodeDeploy application within the AWS user account.

" - } - }, - "documentation":"

Represents the input of a delete application operation.

" - }, - "DeleteDeploymentConfigInput":{ - "type":"structure", - "required":["deploymentConfigName"], - "members":{ - "deploymentConfigName":{ - "shape":"DeploymentConfigName", - "documentation":"

The name of an existing deployment configuration within the AWS user account.

" - } - }, - "documentation":"

Represents the input of a delete deployment configuration operation.

" - }, - "DeleteDeploymentGroupInput":{ - "type":"structure", - "required":[ - "applicationName", - "deploymentGroupName" - ], - "members":{ - "applicationName":{ - "shape":"ApplicationName", - "documentation":"

The name of an existing AWS CodeDeploy application within the AWS user account.

" - }, - "deploymentGroupName":{ - "shape":"DeploymentGroupName", - "documentation":"

The name of an existing deployment group for the specified application.

" - } - }, - "documentation":"

Represents the input of a delete deployment group operation.

" - }, - "DeleteDeploymentGroupOutput":{ - "type":"structure", - "members":{ - "hooksNotCleanedUp":{ - "shape":"AutoScalingGroupList", - "documentation":"

If the output contains no data, and the corresponding deployment group contained at least one Auto Scaling group, AWS CodeDeploy successfully removed all corresponding Auto Scaling lifecycle event hooks from the instances in the Auto Scaling. If the output does contain data, AWS CodeDeploy could not remove some Auto Scaling lifecycle event hooks from the instances in the Auto Scaling group.

" - } - }, - "documentation":"

Represents the output of a delete deployment group operation.

" - }, - "DeploymentAlreadyCompletedException":{ - "type":"structure", - "members":{ - }, - "exception":true, - "documentation":"

The deployment is already completed.

" - }, - "DeploymentConfigAlreadyExistsException":{ - "type":"structure", - "members":{ - }, - "exception":true, - "documentation":"

A deployment configuration with the specified name already exists within the AWS user account.

" - }, - "DeploymentConfigDoesNotExistException":{ - "type":"structure", - "members":{ - }, - "exception":true, - "documentation":"

The deployment configuration does not exist within the AWS user account.

" - }, - "DeploymentConfigId":{"type":"string"}, - "DeploymentConfigInUseException":{ - "type":"structure", - "members":{ - }, - "exception":true, - "documentation":"

The deployment configuration is still in use.

" - }, - "DeploymentConfigInfo":{ - "type":"structure", - "members":{ - "deploymentConfigId":{ - "shape":"DeploymentConfigId", - "documentation":"

The deployment configuration ID.

" - }, - "deploymentConfigName":{ - "shape":"DeploymentConfigName", - "documentation":"

The deployment configuration name.

" - }, - "minimumHealthyHosts":{ - "shape":"MinimumHealthyHosts", - "documentation":"

Information about the number or percentage of minimum healthy instances.

" - }, - "createTime":{ - "shape":"Timestamp", - "documentation":"

The time that the deployment configuration was created.

" - } - }, - "documentation":"

Information about a deployment configuration.

" - }, - "DeploymentConfigLimitExceededException":{ - "type":"structure", - "members":{ - }, - "exception":true, - "documentation":"

The deployment configurations limit was exceeded.

" - }, - "DeploymentConfigName":{ - "type":"string", - "min":1, - "max":100 - }, - "DeploymentConfigNameRequiredException":{ - "type":"structure", - "members":{ - }, - "exception":true, - "documentation":"

The deployment configuration name was not specified.

" - }, - "DeploymentConfigsList":{ - "type":"list", - "member":{"shape":"DeploymentConfigName"} - }, - "DeploymentCreator":{ - "type":"string", - "enum":[ - "user", - "autoscaling" - ] - }, - "DeploymentDoesNotExistException":{ - "type":"structure", - "members":{ - }, - "exception":true, - "documentation":"

The deployment does not exist within the AWS user account.

" - }, - "DeploymentGroupAlreadyExistsException":{ - "type":"structure", - "members":{ - }, - "exception":true, - "documentation":"

A deployment group group with the specified name already exists within the AWS user account.

" - }, - "DeploymentGroupDoesNotExistException":{ - "type":"structure", - "members":{ - }, - "exception":true, - "documentation":"

The named deployment group does not exist within the AWS user account.

" - }, - "DeploymentGroupId":{"type":"string"}, - "DeploymentGroupInfo":{ - "type":"structure", - "members":{ - "applicationName":{ - "shape":"ApplicationName", - "documentation":"

The application name.

" - }, - "deploymentGroupId":{ - "shape":"DeploymentGroupId", - "documentation":"

The deployment group ID.

" - }, - "deploymentGroupName":{ - "shape":"DeploymentGroupName", - "documentation":"

The deployment group name.

" - }, - "deploymentConfigName":{ - "shape":"DeploymentConfigName", - "documentation":"

The deployment configuration name.

" - }, - "ec2TagFilters":{ - "shape":"EC2TagFilterList", - "documentation":"

The Amazon EC2 tags to filter on.

" - }, - "autoScalingGroups":{ - "shape":"AutoScalingGroupList", - "documentation":"

A list of associated Auto Scaling groups.

" - }, - "serviceRoleArn":{ - "shape":"Role", - "documentation":"

A service role ARN.

" - }, - "targetRevision":{ - "shape":"RevisionLocation", - "documentation":"

Information about the deployment group's target revision, including the revision's type and its location.

" - } - }, - "documentation":"

Information about a deployment group.

" - }, - "DeploymentGroupLimitExceededException":{ - "type":"structure", - "members":{ - }, - "exception":true, - "documentation":"

The deployment groups limit was exceeded.

" - }, - "DeploymentGroupName":{ - "type":"string", - "min":1, - "max":100 - }, - "DeploymentGroupNameRequiredException":{ - "type":"structure", - "members":{ - }, - "exception":true, - "documentation":"

The deployment group name was not specified.

" - }, - "DeploymentGroupsList":{ - "type":"list", - "member":{"shape":"DeploymentGroupName"} - }, - "DeploymentId":{"type":"string"}, - "DeploymentIdRequiredException":{ - "type":"structure", - "members":{ - }, - "exception":true, - "documentation":"

At least one deployment ID must be specified.

" - }, - "DeploymentInfo":{ - "type":"structure", - "members":{ - "applicationName":{ - "shape":"ApplicationName", - "documentation":"

The application name.

" - }, - "deploymentGroupName":{ - "shape":"DeploymentGroupName", - "documentation":"

The deployment group name.

" - }, - "deploymentConfigName":{ - "shape":"DeploymentConfigName", - "documentation":"

The deployment configuration name.

" - }, - "deploymentId":{ - "shape":"DeploymentId", - "documentation":"

The deployment ID.

" - }, - "revision":{ - "shape":"RevisionLocation", - "documentation":"

Information about the location of application artifacts that are stored and the service to retrieve them from.

" - }, - "status":{ - "shape":"DeploymentStatus", - "documentation":"

The current state of the deployment as a whole.

" - }, - "errorInformation":{ - "shape":"ErrorInformation", - "documentation":"

Information about any error associated with this deployment.

" - }, - "createTime":{ - "shape":"Timestamp", - "documentation":"

A timestamp indicating when the deployment was created.

" - }, - "startTime":{ - "shape":"Timestamp", - "documentation":"

A timestamp indicating when the deployment began deploying to the deployment group.

Note that in some cases, the reported value of the start time may be later than the complete time. This is due to differences in the clock settings of various back-end servers that participate in the overall deployment process.

" - }, - "completeTime":{ - "shape":"Timestamp", - "documentation":"

A timestamp indicating when the deployment was completed.

" - }, - "deploymentOverview":{ - "shape":"DeploymentOverview", - "documentation":"

A summary of the deployment status of the instances in the deployment.

" - }, - "description":{ - "shape":"Description", - "documentation":"

A comment about the deployment.

" - }, - "creator":{ - "shape":"DeploymentCreator", - "documentation":"

How the deployment was created:

" - }, - "ignoreApplicationStopFailures":{ - "shape":"Boolean", - "documentation":"

If true, then if the deployment causes the ApplicationStop deployment lifecycle event to fail to a specific instance, the deployment will not be considered to have failed to that instance at that point and will continue on to the BeforeInstall deployment lifecycle event.

If false or not specified, then if the deployment causes the ApplicationStop deployment lifecycle event to fail to a specific instance, the deployment will stop to that instance, and the deployment to that instance will be considered to have failed.

" - } - }, - "documentation":"

Information about a deployment.

" - }, - "DeploymentLimitExceededException":{ - "type":"structure", - "members":{ - }, - "exception":true, - "documentation":"

The number of allowed deployments was exceeded.

" - }, - "DeploymentNotStartedException":{ - "type":"structure", - "members":{ - }, - "exception":true, - "documentation":"

The specified deployment has not started.

" - }, - "DeploymentOverview":{ - "type":"structure", - "members":{ - "Pending":{ - "shape":"InstanceCount", - "documentation":"

The number of instances that are pending in the deployment.

" - }, - "InProgress":{ - "shape":"InstanceCount", - "documentation":"

The number of instances that are in progress in the deployment.

" - }, - "Succeeded":{ - "shape":"InstanceCount", - "documentation":"

The number of instances that have succeeded in the deployment.

" - }, - "Failed":{ - "shape":"InstanceCount", - "documentation":"

The number of instances that have failed in the deployment.

" - }, - "Skipped":{ - "shape":"InstanceCount", - "documentation":"

The number of instances that have been skipped in the deployment.

" - } - }, - "documentation":"

Information about the deployment status of the instances in the deployment.

" - }, - "DeploymentStatus":{ - "type":"string", - "enum":[ - "Created", - "Queued", - "InProgress", - "Succeeded", - "Failed", - "Stopped" - ] - }, - "DeploymentStatusList":{ - "type":"list", - "member":{"shape":"DeploymentStatus"} - }, - "DeploymentsInfoList":{ - "type":"list", - "member":{"shape":"DeploymentInfo"} - }, - "DeploymentsList":{ - "type":"list", - "member":{"shape":"DeploymentId"} - }, - "Description":{"type":"string"}, - "DescriptionTooLongException":{ - "type":"structure", - "members":{ - }, - "exception":true, - "documentation":"

The description that was provided is too long.

" - }, - "Diagnostics":{ - "type":"structure", - "members":{ - "errorCode":{ - "shape":"LifecycleErrorCode", - "documentation":"

The associated error code:

" - }, - "scriptName":{ - "shape":"ScriptName", - "documentation":"

The name of the script.

" - }, - "message":{ - "shape":"LifecycleMessage", - "documentation":"

The message associated with the error.

" - }, - "logTail":{ - "shape":"LogTail", - "documentation":"

The last portion of the associated diagnostic log.

" - } - }, - "documentation":"

Diagnostic information about executable scripts that are part of a deployment.

" - }, - "EC2TagFilter":{ - "type":"structure", - "members":{ - "Key":{ - "shape":"Key", - "documentation":"

The Amazon EC2 tag filter key.

" - }, - "Value":{ - "shape":"Value", - "documentation":"

The Amazon EC2 tag filter value.

" - }, - "Type":{ - "shape":"EC2TagFilterType", - "documentation":"

The Amazon EC2 tag filter type:

" - } - }, - "documentation":"

Information about an Amazon EC2 tag filter.

" - }, - "EC2TagFilterList":{ - "type":"list", - "member":{"shape":"EC2TagFilter"} - }, - "EC2TagFilterType":{ - "type":"string", - "enum":[ - "KEY_ONLY", - "VALUE_ONLY", - "KEY_AND_VALUE" - ] - }, - "ETag":{"type":"string"}, - "ErrorCode":{ - "type":"string", - "enum":[ - "DEPLOYMENT_GROUP_MISSING", - "APPLICATION_MISSING", - "REVISION_MISSING", - "IAM_ROLE_MISSING", - "IAM_ROLE_PERMISSIONS", - "OVER_MAX_INSTANCES", - "NO_INSTANCES", - "TIMEOUT", - "HEALTH_CONSTRAINTS_INVALID", - "HEALTH_CONSTRAINTS", - "INTERNAL_ERROR" - ] - }, - "ErrorInformation":{ - "type":"structure", - "members":{ - "code":{ - "shape":"ErrorCode", - "documentation":"

The error code:

" - }, - "message":{ - "shape":"ErrorMessage", - "documentation":"

An accompanying error message.

" - } - }, - "documentation":"

Information about a deployment error.

" - }, - "ErrorMessage":{"type":"string"}, - "GenericRevisionInfo":{ - "type":"structure", - "members":{ - "description":{ - "shape":"Description", - "documentation":"

A comment about the revision.

" - }, - "deploymentGroups":{ - "shape":"DeploymentGroupsList", - "documentation":"

A list of deployment groups that use this revision.

" - }, - "firstUsedTime":{ - "shape":"Timestamp", - "documentation":"

When the revision was first used by AWS CodeDeploy.

" - }, - "lastUsedTime":{ - "shape":"Timestamp", - "documentation":"

When the revision was last used by AWS CodeDeploy.

" - }, - "registerTime":{ - "shape":"Timestamp", - "documentation":"

When the revision was registered with AWS CodeDeploy.

" - } - }, - "documentation":"

Information about an application revision.

" - }, - "GetApplicationInput":{ - "type":"structure", - "required":["applicationName"], - "members":{ - "applicationName":{ - "shape":"ApplicationName", - "documentation":"

The name of an existing AWS CodeDeploy application within the AWS user account.

" - } - }, - "documentation":"

Represents the input of a get application operation.

" - }, - "GetApplicationOutput":{ - "type":"structure", - "members":{ - "application":{ - "shape":"ApplicationInfo", - "documentation":"

Information about the application.

" - } - }, - "documentation":"

Represents the output of a get application operation.

" - }, - "GetApplicationRevisionInput":{ - "type":"structure", - "required":[ - "applicationName", - "revision" - ], - "members":{ - "applicationName":{ - "shape":"ApplicationName", - "documentation":"

The name of the application that corresponds to the revision.

" - }, - "revision":{ - "shape":"RevisionLocation", - "documentation":"

Information about the application revision to get, including the revision's type and its location.

" - } - }, - "documentation":"

Represents the input of a get application revision operation.

" - }, - "GetApplicationRevisionOutput":{ - "type":"structure", - "members":{ - "applicationName":{ - "shape":"ApplicationName", - "documentation":"

The name of the application that corresponds to the revision.

" - }, - "revision":{ - "shape":"RevisionLocation", - "documentation":"

Additional information about the revision, including the revision's type and its location.

" - }, - "revisionInfo":{ - "shape":"GenericRevisionInfo", - "documentation":"

General information about the revision.

" - } - }, - "documentation":"

Represents the output of a get application revision operation.

" - }, - "GetDeploymentConfigInput":{ - "type":"structure", - "required":["deploymentConfigName"], - "members":{ - "deploymentConfigName":{ - "shape":"DeploymentConfigName", - "documentation":"

The name of an existing deployment configuration within the AWS user account.

" - } - }, - "documentation":"

Represents the input of a get deployment configuration operation.

" - }, - "GetDeploymentConfigOutput":{ - "type":"structure", - "members":{ - "deploymentConfigInfo":{ - "shape":"DeploymentConfigInfo", - "documentation":"

Information about the deployment configuration.

" - } - }, - "documentation":"

Represents the output of a get deployment configuration operation.

" - }, - "GetDeploymentGroupInput":{ - "type":"structure", - "required":[ - "applicationName", - "deploymentGroupName" - ], - "members":{ - "applicationName":{ - "shape":"ApplicationName", - "documentation":"

The name of an existing AWS CodeDeploy application within the AWS user account.

" - }, - "deploymentGroupName":{ - "shape":"DeploymentGroupName", - "documentation":"

The name of an existing deployment group for the specified application.

" - } - }, - "documentation":"

Represents the input of a get deployment group operation.

" - }, - "GetDeploymentGroupOutput":{ - "type":"structure", - "members":{ - "deploymentGroupInfo":{ - "shape":"DeploymentGroupInfo", - "documentation":"

Information about the deployment group.

" - } - }, - "documentation":"

Represents the output of a get deployment group operation.

" - }, - "GetDeploymentInput":{ - "type":"structure", - "required":["deploymentId"], - "members":{ - "deploymentId":{ - "shape":"DeploymentId", - "documentation":"

An existing deployment ID within the AWS user account.

" - } - }, - "documentation":"

Represents the input of a get deployment operation.

" - }, - "GetDeploymentInstanceInput":{ - "type":"structure", - "required":[ - "deploymentId", - "instanceId" - ], - "members":{ - "deploymentId":{ - "shape":"DeploymentId", - "documentation":"

The unique ID of a deployment.

" - }, - "instanceId":{ - "shape":"InstanceId", - "documentation":"

The unique ID of an Amazon EC2 instance in the deployment's deployment group.

" - } - }, - "documentation":"

Represents the input of a get deployment instance operation.

" - }, - "GetDeploymentInstanceOutput":{ - "type":"structure", - "members":{ - "instanceSummary":{ - "shape":"InstanceSummary", - "documentation":"

Information about the instance.

" - } - }, - "documentation":"

Represents the output of a get deployment instance operation.

" - }, - "GetDeploymentOutput":{ - "type":"structure", - "members":{ - "deploymentInfo":{ - "shape":"DeploymentInfo", - "documentation":"

Information about the deployment.

" - } - }, - "documentation":"

Represents the output of a get deployment operation.

" - }, - "GitHubLocation":{ - "type":"structure", - "members":{ - "repository":{ - "shape":"Repository", - "documentation":"

The GitHub account and repository pair that stores a reference to the commit that represents the bundled artifacts for the application revision.

Specified as account/repository.

" - }, - "commitId":{ - "shape":"CommitId", - "documentation":"

The SHA1 commit ID of the GitHub commit that references the that represents the bundled artifacts for the application revision.

" - } - }, - "documentation":"

Information about the location of application artifacts that are stored in GitHub.

" - }, - "InstanceCount":{"type":"long"}, - "InstanceDoesNotExistException":{ - "type":"structure", - "members":{ - }, - "exception":true, - "documentation":"

The specified instance does not exist in the deployment group.

" - }, - "InstanceId":{"type":"string"}, - "InstanceIdRequiredException":{ - "type":"structure", - "members":{ - }, - "exception":true, - "documentation":"

The instance ID was not specified.

" - }, - "InstanceStatus":{ - "type":"string", - "enum":[ - "Pending", - "InProgress", - "Succeeded", - "Failed", - "Skipped", - "Unknown" - ] - }, - "InstanceStatusList":{ - "type":"list", - "member":{"shape":"InstanceStatus"} - }, - "InstanceSummary":{ - "type":"structure", - "members":{ - "deploymentId":{ - "shape":"DeploymentId", - "documentation":"

The deployment ID.

" - }, - "instanceId":{ - "shape":"InstanceId", - "documentation":"

The instance ID.

" - }, - "status":{ - "shape":"InstanceStatus", - "documentation":"

The deployment status for this instance:

" - }, - "lastUpdatedAt":{ - "shape":"Timestamp", - "documentation":"

A timestamp indicating when the instance information was last updated.

" - }, - "lifecycleEvents":{ - "shape":"LifecycleEventList", - "documentation":"

A list of lifecycle events for this instance.

" - } - }, - "documentation":"

Information about an Amazon EC2 instance in a deployment.

" - }, - "InstancesList":{ - "type":"list", - "member":{"shape":"InstanceId"} - }, - "InvalidApplicationNameException":{ - "type":"structure", - "members":{ - }, - "exception":true, - "documentation":"

The application name was specified in an invalid format.

" - }, - "InvalidAutoScalingGroupException":{ - "type":"structure", - "members":{ - }, - "exception":true, - "documentation":"

The Auto Scaling group was specified in an invalid format or does not exist.

" - }, - "InvalidBucketNameFilterException":{ - "type":"structure", - "members":{ - }, - "exception":true, - "documentation":"

The bucket name either doesn't exist or was specified in an invalid format.

" - }, - "InvalidDeployedStateFilterException":{ - "type":"structure", - "members":{ - }, - "exception":true, - "documentation":"

The deployed state filter was specified in an invalid format.

" - }, - "InvalidDeploymentConfigNameException":{ - "type":"structure", - "members":{ - }, - "exception":true, - "documentation":"

The deployment configuration name was specified in an invalid format.

" - }, - "InvalidDeploymentGroupNameException":{ - "type":"structure", - "members":{ - }, - "exception":true, - "documentation":"

The deployment group name was specified in an invalid format.

" - }, - "InvalidDeploymentIdException":{ - "type":"structure", - "members":{ - }, - "exception":true, - "documentation":"

At least one of the deployment IDs was specified in an invalid format.

" - }, - "InvalidDeploymentStatusException":{ - "type":"structure", - "members":{ - }, - "exception":true, - "documentation":"

The specified deployment status doesn't exist or cannot be determined.

" - }, - "InvalidEC2TagException":{ - "type":"structure", - "members":{ - }, - "exception":true, - "documentation":"

The Amazon EC2 tag was specified in an invalid format.

" - }, - "InvalidInstanceStatusException":{ - "type":"structure", - "members":{ - }, - "exception":true, - "documentation":"

The specified instance status does not exist.

" - }, - "InvalidKeyPrefixFilterException":{ - "type":"structure", - "members":{ - }, - "exception":true, - "documentation":"

The specified key prefix filter was specified in an invalid format.

" - }, - "InvalidMinimumHealthyHostValueException":{ - "type":"structure", - "members":{ - }, - "exception":true, - "documentation":"

The minimum healthy instances value was specified in an invalid format.

" - }, - "InvalidNextTokenException":{ - "type":"structure", - "members":{ - }, - "exception":true, - "documentation":"

The next token was specified in an invalid format.

" - }, - "InvalidOperationException":{ - "type":"structure", - "members":{ - }, - "exception":true, - "documentation":"

An invalid operation was detected.

" - }, - "InvalidRevisionException":{ - "type":"structure", - "members":{ - }, - "exception":true, - "documentation":"

The revision was specified in an invalid format.

" - }, - "InvalidRoleException":{ - "type":"structure", - "members":{ - }, - "exception":true, - "documentation":"

The service role ARN was specified in an invalid format. Or, if an Auto Scaling group was specified, the specified service role does not grant the appropriate permissions to Auto Scaling.

" - }, - "InvalidSortByException":{ - "type":"structure", - "members":{ - }, - "exception":true, - "documentation":"

The column name to sort by is either not present or was specified in an invalid format.

" - }, - "InvalidSortOrderException":{ - "type":"structure", - "members":{ - }, - "exception":true, - "documentation":"

The sort order was specified in an invalid format.

" - }, - "InvalidTimeRangeException":{ - "type":"structure", - "members":{ - }, - "exception":true, - "documentation":"

The specified time range was specified in an invalid format.

" - }, - "Key":{"type":"string"}, - "LifecycleErrorCode":{ - "type":"string", - "enum":[ - "Success", - "ScriptMissing", - "ScriptNotExecutable", - "ScriptTimedOut", - "ScriptFailed", - "UnknownError" - ] - }, - "LifecycleEvent":{ - "type":"structure", - "members":{ - "lifecycleEventName":{ - "shape":"LifecycleEventName", - "documentation":"

The deployment lifecycle event name, such as ApplicationStop, BeforeInstall, AfterInstall, ApplicationStart, or ValidateService.

" - }, - "diagnostics":{ - "shape":"Diagnostics", - "documentation":"

Diagnostic information about the deployment lifecycle event.

" - }, - "startTime":{ - "shape":"Timestamp", - "documentation":"

A timestamp indicating when the deployment lifecycle event started.

" - }, - "endTime":{ - "shape":"Timestamp", - "documentation":"

A timestamp indicating when the deployment lifecycle event ended.

" - }, - "status":{ - "shape":"LifecycleEventStatus", - "documentation":"

The deployment lifecycle event status:

" - } - }, - "documentation":"

Information about a deployment lifecycle event.

" - }, - "LifecycleEventList":{ - "type":"list", - "member":{"shape":"LifecycleEvent"} - }, - "LifecycleEventName":{"type":"string"}, - "LifecycleEventStatus":{ - "type":"string", - "enum":[ - "Pending", - "InProgress", - "Succeeded", - "Failed", - "Skipped", - "Unknown" - ] - }, - "LifecycleMessage":{"type":"string"}, - "ListApplicationRevisionsInput":{ - "type":"structure", - "required":["applicationName"], - "members":{ - "applicationName":{ - "shape":"ApplicationName", - "documentation":"

The name of an existing AWS CodeDeploy application within the AWS user account.

" - }, - "sortBy":{ - "shape":"ApplicationRevisionSortBy", - "documentation":"

The column name to sort the list results by:

If not specified or set to null, the results will be returned in an arbitrary order.

" - }, - "sortOrder":{ - "shape":"SortOrder", - "documentation":"

The order to sort the list results by:

If not specified, the results will be sorted in ascending order.

If set to null, the results will be sorted in an arbitrary order.

" - }, - "s3Bucket":{ - "shape":"S3Bucket", - "documentation":"

A specific Amazon S3 bucket name to limit the search for revisions.

If set to null, then all of the user's buckets will be searched.

" - }, - "s3KeyPrefix":{ - "shape":"S3Key", - "documentation":"

A specific key prefix for the set of Amazon S3 objects to limit the search for revisions.

" - }, - "deployed":{ - "shape":"ListStateFilterAction", - "documentation":"

Whether to list revisions based on whether the revision is the target revision of an deployment group:

" - }, - "nextToken":{ - "shape":"NextToken", - "documentation":"

An identifier that was returned from the previous list application revisions call, which can be used to return the next set of applications in the list.

" - } - }, - "documentation":"

Represents the input of a list application revisions operation.

" - }, - "ListApplicationRevisionsOutput":{ - "type":"structure", - "members":{ - "revisions":{ - "shape":"RevisionLocationList", - "documentation":"

A list of revision locations that contain the matching revisions.

" - }, - "nextToken":{ - "shape":"NextToken", - "documentation":"

If the amount of information that is returned is significantly large, an identifier will also be returned, which can be used in a subsequent list application revisions call to return the next set of application revisions in the list.

" - } - }, - "documentation":"

Represents the output of a list application revisions operation.

" - }, - "ListApplicationsInput":{ - "type":"structure", - "members":{ - "nextToken":{ - "shape":"NextToken", - "documentation":"

An identifier that was returned from the previous list applications call, which can be used to return the next set of applications in the list.

" - } - }, - "documentation":"

Represents the input of a list applications operation.

" - }, - "ListApplicationsOutput":{ - "type":"structure", - "members":{ - "applications":{ - "shape":"ApplicationsList", - "documentation":"

A list of application names.

" - }, - "nextToken":{ - "shape":"NextToken", - "documentation":"

If the amount of information that is returned is significantly large, an identifier will also be returned, which can be used in a subsequent list applications call to return the next set of applications in the list.

" - } - }, - "documentation":"

Represents the output of a list applications operation.

" - }, - "ListDeploymentConfigsInput":{ - "type":"structure", - "members":{ - "nextToken":{ - "shape":"NextToken", - "documentation":"

An identifier that was returned from the previous list deployment configurations call, which can be used to return the next set of deployment configurations in the list.

" - } - }, - "documentation":"

Represents the input of a list deployment configurations operation.

" - }, - "ListDeploymentConfigsOutput":{ - "type":"structure", - "members":{ - "deploymentConfigsList":{ - "shape":"DeploymentConfigsList", - "documentation":"

A list of deployment configurations, including the built-in configurations such as CodeDeployDefault.OneAtATime.

" - }, - "nextToken":{ - "shape":"NextToken", - "documentation":"

If the amount of information that is returned is significantly large, an identifier will also be returned, which can be used in a subsequent list deployment configurations call to return the next set of deployment configurations in the list.

" - } - }, - "documentation":"

Represents the output of a list deployment configurations operation.

" - }, - "ListDeploymentGroupsInput":{ - "type":"structure", - "required":["applicationName"], - "members":{ - "applicationName":{ - "shape":"ApplicationName", - "documentation":"

The name of an existing AWS CodeDeploy application within the AWS user account.

" - }, - "nextToken":{ - "shape":"NextToken", - "documentation":"

An identifier that was returned from the previous list deployment groups call, which can be used to return the next set of deployment groups in the list.

" - } - }, - "documentation":"

Represents the input of a list deployment groups operation.

" - }, - "ListDeploymentGroupsOutput":{ - "type":"structure", - "members":{ - "applicationName":{ - "shape":"ApplicationName", - "documentation":"

The application name.

" - }, - "deploymentGroups":{ - "shape":"DeploymentGroupsList", - "documentation":"

A list of corresponding deployment group names.

" - }, - "nextToken":{ - "shape":"NextToken", - "documentation":"

If the amount of information that is returned is significantly large, an identifier will also be returned, which can be used in a subsequent list deployment groups call to return the next set of deployment groups in the list.

" - } - }, - "documentation":"

Represents the output of a list deployment groups operation.

" - }, - "ListDeploymentInstancesInput":{ - "type":"structure", - "required":["deploymentId"], - "members":{ - "deploymentId":{ - "shape":"DeploymentId", - "documentation":"

The unique ID of a deployment.

" - }, - "nextToken":{ - "shape":"NextToken", - "documentation":"

An identifier that was returned from the previous list deployment instances call, which can be used to return the next set of deployment instances in the list.

" - }, - "instanceStatusFilter":{ - "shape":"InstanceStatusList", - "documentation":"

A subset of instances to list, by status:

" - } - }, - "documentation":"

Represents the input of a list deployment instances operation.

" - }, - "ListDeploymentInstancesOutput":{ - "type":"structure", - "members":{ - "instancesList":{ - "shape":"InstancesList", - "documentation":"

A list of instance IDs.

" - }, - "nextToken":{ - "shape":"NextToken", - "documentation":"

If the amount of information that is returned is significantly large, an identifier will also be returned, which can be used in a subsequent list deployment instances call to return the next set of deployment instances in the list.

" - } - }, - "documentation":"

Represents the output of a list deployment instances operation.

" - }, - "ListDeploymentsInput":{ - "type":"structure", - "members":{ - "applicationName":{ - "shape":"ApplicationName", - "documentation":"

The name of an existing AWS CodeDeploy application within the AWS user account.

" - }, - "deploymentGroupName":{ - "shape":"DeploymentGroupName", - "documentation":"

The name of an existing deployment group for the specified application.

" - }, - "includeOnlyStatuses":{ - "shape":"DeploymentStatusList", - "documentation":"A subset of deployments to list, by status: " - }, - "createTimeRange":{ - "shape":"TimeRange", - "documentation":"

A deployment creation start- and end-time range for returning a subset of the list of deployments.

" - }, - "nextToken":{ - "shape":"NextToken", - "documentation":"

An identifier that was returned from the previous list deployments call, which can be used to return the next set of deployments in the list.

" - } - }, - "documentation":"

Represents the input of a list deployments operation.

" - }, - "ListDeploymentsOutput":{ - "type":"structure", - "members":{ - "deployments":{ - "shape":"DeploymentsList", - "documentation":"

A list of deployment IDs.

" - }, - "nextToken":{ - "shape":"NextToken", - "documentation":"

If the amount of information that is returned is significantly large, an identifier will also be returned, which can be used in a subsequent list deployments call to return the next set of deployments in the list.

" - } - }, - "documentation":"

Represents the output of a list deployments operation.

" - }, - "ListStateFilterAction":{ - "type":"string", - "enum":[ - "include", - "exclude", - "ignore" - ] - }, - "LogTail":{"type":"string"}, - "Message":{"type":"string"}, - "MinimumHealthyHosts":{ - "type":"structure", - "members":{ - "value":{ - "shape":"MinimumHealthyHostsValue", - "documentation":"

The minimum healthy instances value.

" - }, - "type":{ - "shape":"MinimumHealthyHostsType", - "documentation":"

The minimum healthy instances type:

For example, for 9 Amazon EC2 instances, if a HOST_COUNT of 6 is specified, deploy to up to 3 instances at a time. The deployment succeeds if 6 or more instances are successfully deployed to; otherwise, the deployment fails. If a FLEET_PERCENT of 40 is specified, deploy to up to 5 instances at a time. The deployment succeeds if 4 or more instances are successfully deployed to; otherwise, the deployment fails.

In a call to the get deployment configuration operation, CodeDeployDefault.OneAtATime will return a minimum healthy instances type of MOST_CONCURRENCY and a value of 1. This means a deployment to only one Amazon EC2 instance at a time. (You cannot set the type to MOST_CONCURRENCY, only to HOST_COUNT or FLEET_PERCENT.)" - } - }, - "documentation":"

Information about minimum healthy instances.

" - }, - "MinimumHealthyHostsType":{ - "type":"string", - "enum":[ - "HOST_COUNT", - "FLEET_PERCENT" - ] - }, - "MinimumHealthyHostsValue":{"type":"integer"}, - "NextToken":{"type":"string"}, - "RegisterApplicationRevisionInput":{ - "type":"structure", - "required":[ - "applicationName", - "revision" - ], - "members":{ - "applicationName":{ - "shape":"ApplicationName", - "documentation":"

The name of an existing AWS CodeDeploy application within the AWS user account.

" - }, - "description":{ - "shape":"Description", - "documentation":"

A comment about the revision.

" - }, - "revision":{ - "shape":"RevisionLocation", - "documentation":"

Information about the application revision to register, including the revision's type and its location.

" - } - }, - "documentation":"

Represents the input of a register application revision operation.

" - }, - "Repository":{"type":"string"}, - "RevisionDoesNotExistException":{ - "type":"structure", - "members":{ - }, - "exception":true, - "documentation":"

The named revision does not exist within the AWS user account.

" - }, - "RevisionLocation":{ - "type":"structure", - "members":{ - "revisionType":{ - "shape":"RevisionLocationType", - "documentation":"

The application revision's type:

" - }, - "s3Location":{"shape":"S3Location"}, - "gitHubLocation":{"shape":"GitHubLocation"} - }, - "documentation":"

Information about an application revision's location.

" - }, - "RevisionLocationList":{ - "type":"list", - "member":{"shape":"RevisionLocation"} - }, - "RevisionLocationType":{ - "type":"string", - "enum":[ - "S3", - "GitHub" - ] - }, - "RevisionRequiredException":{ - "type":"structure", - "members":{ - }, - "exception":true, - "documentation":"

The revision ID was not specified.

" - }, - "Role":{"type":"string"}, - "RoleRequiredException":{ - "type":"structure", - "members":{ - }, - "exception":true, - "documentation":"

The role ID was not specified.

" - }, - "S3Bucket":{"type":"string"}, - "S3Key":{"type":"string"}, - "S3Location":{ - "type":"structure", - "members":{ - "bucket":{ - "shape":"S3Bucket", - "documentation":"

The name of the Amazon S3 bucket where the application revision is stored.

" - }, - "key":{ - "shape":"S3Key", - "documentation":"

The name of the Amazon S3 object that represents the bundled artifacts for the application revision.

" - }, - "bundleType":{ - "shape":"BundleType", - "documentation":"

The file type of the application revision. Must be one of the following:

" - }, - "version":{ - "shape":"VersionId", - "documentation":"

A specific version of the Amazon S3 object that represents the bundled artifacts for the application revision.

If the version is not specified, the system will use the most recent version by default.

" - }, - "eTag":{ - "shape":"ETag", - "documentation":"

The ETag of the Amazon S3 object that represents the bundled artifacts for the application revision.

If the ETag is not specified as an input parameter, ETag validation of the object will be skipped.

" - } - }, - "documentation":"

Information about the location of application artifacts that are stored in Amazon S3.

" - }, - "ScriptName":{"type":"string"}, - "SortOrder":{ - "type":"string", - "enum":[ - "ascending", - "descending" - ] - }, - "StopDeploymentInput":{ - "type":"structure", - "required":["deploymentId"], - "members":{ - "deploymentId":{ - "shape":"DeploymentId", - "documentation":"

The unique ID of a deployment.

" - } - }, - "documentation":"

Represents the input of a stop deployment operation.

" - }, - "StopDeploymentOutput":{ - "type":"structure", - "members":{ - "status":{ - "shape":"StopStatus", - "documentation":"

The status of the stop deployment operation:

" - }, - "statusMessage":{ - "shape":"Message", - "documentation":"

An accompanying status message.

" - } - }, - "documentation":"

Represents the output of a stop deployment operation.

" - }, - "StopStatus":{ - "type":"string", - "enum":[ - "Pending", - "Succeeded" - ] - }, - "TimeRange":{ - "type":"structure", - "members":{ - "start":{ - "shape":"Timestamp", - "documentation":"

The time range's start time.

Specify null to leave the time range's start time open-ended." - }, - "end":{ - "shape":"Timestamp", - "documentation":"

The time range's end time.

Specify null to leave the time range's end time open-ended." - } - }, - "documentation":"

Information about a time range.

" - }, - "Timestamp":{"type":"timestamp"}, - "UpdateApplicationInput":{ - "type":"structure", - "members":{ - "applicationName":{ - "shape":"ApplicationName", - "documentation":"

The current name of the application that you want to change.

" - }, - "newApplicationName":{ - "shape":"ApplicationName", - "documentation":"

The new name that you want to change the application to.

" - } - }, - "documentation":"

Represents the input of an update application operation.

" - }, - "UpdateDeploymentGroupInput":{ - "type":"structure", - "required":[ - "applicationName", - "currentDeploymentGroupName" - ], - "members":{ - "applicationName":{ - "shape":"ApplicationName", - "documentation":"

The application name corresponding to the deployment group to update.

" - }, - "currentDeploymentGroupName":{ - "shape":"DeploymentGroupName", - "documentation":"

The current name of the existing deployment group.

" - }, - "newDeploymentGroupName":{ - "shape":"DeploymentGroupName", - "documentation":"

The new name of the deployment group, if you want to change it.

" - }, - "deploymentConfigName":{ - "shape":"DeploymentConfigName", - "documentation":"

The replacement deployment configuration name to use, if you want to change it.

" - }, - "ec2TagFilters":{ - "shape":"EC2TagFilterList", - "documentation":"

The replacement set of Amazon EC2 tags to filter on, if you want to change them.

" - }, - "autoScalingGroups":{ - "shape":"AutoScalingGroupNameList", - "documentation":"

The replacement list of Auto Scaling groups to be included in the deployment group, if you want to change them.

" - }, - "serviceRoleArn":{ - "shape":"Role", - "documentation":"

A replacement service role's ARN, if you want to change it.

" - } - }, - "documentation":"

Represents the input of an update deployment group operation.

" - }, - "UpdateDeploymentGroupOutput":{ - "type":"structure", - "members":{ - "hooksNotCleanedUp":{ - "shape":"AutoScalingGroupList", - "documentation":"

If the output contains no data, and the corresponding deployment group contained at least one Auto Scaling group, AWS CodeDeploy successfully removed all corresponding Auto Scaling lifecycle event hooks from the AWS user account. If the output does contain data, AWS CodeDeploy could not remove some Auto Scaling lifecycle event hooks from the AWS user account.

" - } - }, - "documentation":"

Represents the output of an update deployment group operation.

" - }, - "Value":{"type":"string"}, - "VersionId":{"type":"string"} - } -} diff --git a/src/github.com/getlantern/aws-sdk-go/apis/cognito-identity/2014-06-30.normal.json b/src/github.com/getlantern/aws-sdk-go/apis/cognito-identity/2014-06-30.normal.json deleted file mode 100644 index e05487d770..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/apis/cognito-identity/2014-06-30.normal.json +++ /dev/null @@ -1,1659 +0,0 @@ -{ - "metadata":{ - "apiVersion":"2014-06-30", - "endpointPrefix":"cognito-identity", - "jsonVersion":"1.1", - "serviceFullName":"Amazon Cognito Identity", - "signatureVersion":"v4", - "targetPrefix":"AWSCognitoIdentityService", - "protocol":"json" - }, - "documentation":"Amazon Cognito

Amazon Cognito is a web service that delivers scoped temporary credentials to mobile devices and other untrusted environments. Amazon Cognito uniquely identifies a device and supplies the user with a consistent identity over the lifetime of an application.

Using Amazon Cognito, you can enable authentication with one or more third-party identity providers (Facebook, Google, or Login with Amazon), and you can also choose to support unauthenticated access from your app. Cognito delivers a unique identifier for each user and acts as an OpenID token provider trusted by AWS Security Token Service (STS) to access temporary, limited-privilege AWS credentials.

To provide end-user credentials, first make an unsigned call to GetId. If the end user is authenticated with one of the supported identity providers, set the Logins map with the identity provider token. GetId returns a unique identifier for the user.

Next, make an unsigned call to GetCredentialsForIdentity. This call expects the same Logins map as the GetId call, as well as the IdentityID originally returned by GetId. Assuming your identity pool has been configured via the SetIdentityPoolRoles operation, GetCredentialsForIdentity will return AWS credentials for your use. If your pool has not been configured with SetIdentityPoolRoles, or if you want to follow legacy flow, make an unsigned call to GetOpenIdToken, which returns the OpenID token necessary to call STS and retrieve AWS credentials. This call expects the same Logins map as the GetId call, as well as the IdentityID originally returned by GetId. The token returned by GetOpenIdToken can be passed to the STS operation AssumeRoleWithWebIdentity to retrieve AWS credentials.

If you want to use Amazon Cognito in an Android, iOS, or Unity application, you will probably want to make API calls via the AWS Mobile SDK. To learn more, see the AWS Mobile SDK Developer Guide.

", - "operations":{ - "CreateIdentityPool":{ - "name":"CreateIdentityPool", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"CreateIdentityPoolInput", - "documentation":"

Input to the CreateIdentityPool action.

" - }, - "output":{ - "shape":"IdentityPool", - "documentation":"An object representing a Cognito identity pool." - }, - "errors":[ - { - "shape":"InvalidParameterException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"Thrown for missing or bad input parameter(s)." - }, - { - "shape":"NotAuthorizedException", - "error":{"httpStatusCode":403}, - "exception":true, - "documentation":"Thrown when a user is not authorized to access the requested resource." - }, - { - "shape":"ResourceConflictException", - "error":{"httpStatusCode":409}, - "exception":true, - "documentation":"Thrown when a user tries to use a login which is already linked to another account." - }, - { - "shape":"TooManyRequestsException", - "error":{"httpStatusCode":429}, - "exception":true, - "documentation":"Thrown when a request is throttled." - }, - { - "shape":"InternalErrorException", - "exception":true, - "fault":true, - "documentation":"Thrown when the service encounters an error during processing the request." - }, - { - "shape":"LimitExceededException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"Thrown when the total number of user pools has exceeded a preset limit." - } - ], - "documentation":"

Creates a new identity pool. The identity pool is a store of user identity information that is specific to your AWS account. The limit on identity pools is 60 per account.

" - }, - "DeleteIdentityPool":{ - "name":"DeleteIdentityPool", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DeleteIdentityPoolInput", - "documentation":"

Input to the DeleteIdentityPool action.

" - }, - "errors":[ - { - "shape":"InvalidParameterException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"Thrown for missing or bad input parameter(s)." - }, - { - "shape":"ResourceNotFoundException", - "error":{"httpStatusCode":404}, - "exception":true, - "documentation":"Thrown when the requested resource (for example, a dataset or record) does not exist." - }, - { - "shape":"NotAuthorizedException", - "error":{"httpStatusCode":403}, - "exception":true, - "documentation":"Thrown when a user is not authorized to access the requested resource." - }, - { - "shape":"TooManyRequestsException", - "error":{"httpStatusCode":429}, - "exception":true, - "documentation":"Thrown when a request is throttled." - }, - { - "shape":"InternalErrorException", - "exception":true, - "fault":true, - "documentation":"Thrown when the service encounters an error during processing the request." - } - ], - "documentation":"

Deletes a user pool. Once a pool is deleted, users will not be able to authenticate with the pool.

" - }, - "DescribeIdentity":{ - "name":"DescribeIdentity", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DescribeIdentityInput", - "documentation":"

Input to the DescribeIdentity action.

" - }, - "output":{ - "shape":"IdentityDescription", - "documentation":"A description of the identity." - }, - "errors":[ - { - "shape":"InvalidParameterException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"Thrown for missing or bad input parameter(s)." - }, - { - "shape":"ResourceNotFoundException", - "error":{"httpStatusCode":404}, - "exception":true, - "documentation":"Thrown when the requested resource (for example, a dataset or record) does not exist." - }, - { - "shape":"NotAuthorizedException", - "error":{"httpStatusCode":403}, - "exception":true, - "documentation":"Thrown when a user is not authorized to access the requested resource." - }, - { - "shape":"TooManyRequestsException", - "error":{"httpStatusCode":429}, - "exception":true, - "documentation":"Thrown when a request is throttled." - }, - { - "shape":"InternalErrorException", - "exception":true, - "fault":true, - "documentation":"Thrown when the service encounters an error during processing the request." - } - ], - "documentation":"

Returns metadata related to the given identity, including when the identity was created and any associated linked logins.

" - }, - "DescribeIdentityPool":{ - "name":"DescribeIdentityPool", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DescribeIdentityPoolInput", - "documentation":"Input to the DescribeIdentityPool action." - }, - "output":{ - "shape":"IdentityPool", - "documentation":"An object representing a Cognito identity pool." - }, - "errors":[ - { - "shape":"InvalidParameterException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"Thrown for missing or bad input parameter(s)." - }, - { - "shape":"ResourceNotFoundException", - "error":{"httpStatusCode":404}, - "exception":true, - "documentation":"Thrown when the requested resource (for example, a dataset or record) does not exist." - }, - { - "shape":"NotAuthorizedException", - "error":{"httpStatusCode":403}, - "exception":true, - "documentation":"Thrown when a user is not authorized to access the requested resource." - }, - { - "shape":"TooManyRequestsException", - "error":{"httpStatusCode":429}, - "exception":true, - "documentation":"Thrown when a request is throttled." - }, - { - "shape":"InternalErrorException", - "exception":true, - "fault":true, - "documentation":"Thrown when the service encounters an error during processing the request." - } - ], - "documentation":"

Gets details about a particular identity pool, including the pool name, ID description, creation date, and current number of users.

" - }, - "GetCredentialsForIdentity":{ - "name":"GetCredentialsForIdentity", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"GetCredentialsForIdentityInput", - "documentation":"

Input to the GetCredentialsForIdentity action.

" - }, - "output":{ - "shape":"GetCredentialsForIdentityResponse", - "documentation":"

Returned in response to a successful GetCredentialsForIdentity operation.

" - }, - "errors":[ - { - "shape":"InvalidParameterException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"Thrown for missing or bad input parameter(s)." - }, - { - "shape":"ResourceNotFoundException", - "error":{"httpStatusCode":404}, - "exception":true, - "documentation":"Thrown when the requested resource (for example, a dataset or record) does not exist." - }, - { - "shape":"NotAuthorizedException", - "error":{"httpStatusCode":403}, - "exception":true, - "documentation":"Thrown when a user is not authorized to access the requested resource." - }, - { - "shape":"ResourceConflictException", - "error":{"httpStatusCode":409}, - "exception":true, - "documentation":"Thrown when a user tries to use a login which is already linked to another account." - }, - { - "shape":"TooManyRequestsException", - "error":{"httpStatusCode":429}, - "exception":true, - "documentation":"Thrown when a request is throttled." - }, - { - "shape":"InvalidIdentityPoolConfigurationException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

Thrown if the identity pool has no role associated for the given auth type (auth/unauth) or if the AssumeRole fails.

" - }, - { - "shape":"InternalErrorException", - "exception":true, - "fault":true, - "documentation":"Thrown when the service encounters an error during processing the request." - } - ], - "documentation":"

Returns credentials for the the provided identity ID. Any provided logins will be validated against supported login providers. If the token is for cognito-identity.amazonaws.com, it will be passed through to AWS Security Token Service with the appropriate role for the token.

" - }, - "GetId":{ - "name":"GetId", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"GetIdInput", - "documentation":"Input to the GetId action." - }, - "output":{ - "shape":"GetIdResponse", - "documentation":"Returned in response to a GetId request." - }, - "errors":[ - { - "shape":"InvalidParameterException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"Thrown for missing or bad input parameter(s)." - }, - { - "shape":"ResourceNotFoundException", - "error":{"httpStatusCode":404}, - "exception":true, - "documentation":"Thrown when the requested resource (for example, a dataset or record) does not exist." - }, - { - "shape":"NotAuthorizedException", - "error":{"httpStatusCode":403}, - "exception":true, - "documentation":"Thrown when a user is not authorized to access the requested resource." - }, - { - "shape":"ResourceConflictException", - "error":{"httpStatusCode":409}, - "exception":true, - "documentation":"Thrown when a user tries to use a login which is already linked to another account." - }, - { - "shape":"TooManyRequestsException", - "error":{"httpStatusCode":429}, - "exception":true, - "documentation":"Thrown when a request is throttled." - }, - { - "shape":"InternalErrorException", - "exception":true, - "fault":true, - "documentation":"Thrown when the service encounters an error during processing the request." - }, - { - "shape":"LimitExceededException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"Thrown when the total number of user pools has exceeded a preset limit." - } - ], - "documentation":"

Generates (or retrieves) a Cognito ID. Supplying multiple logins will create an implicit linked account.

" - }, - "GetIdentityPoolRoles":{ - "name":"GetIdentityPoolRoles", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"GetIdentityPoolRolesInput", - "documentation":"

Input to the GetIdentityPoolRoles action.

" - }, - "output":{ - "shape":"GetIdentityPoolRolesResponse", - "documentation":"

Returned in response to a successful GetIdentityPoolRoles operation.

" - }, - "errors":[ - { - "shape":"InvalidParameterException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"Thrown for missing or bad input parameter(s)." - }, - { - "shape":"ResourceNotFoundException", - "error":{"httpStatusCode":404}, - "exception":true, - "documentation":"Thrown when the requested resource (for example, a dataset or record) does not exist." - }, - { - "shape":"NotAuthorizedException", - "error":{"httpStatusCode":403}, - "exception":true, - "documentation":"Thrown when a user is not authorized to access the requested resource." - }, - { - "shape":"ResourceConflictException", - "error":{"httpStatusCode":409}, - "exception":true, - "documentation":"Thrown when a user tries to use a login which is already linked to another account." - }, - { - "shape":"TooManyRequestsException", - "error":{"httpStatusCode":429}, - "exception":true, - "documentation":"Thrown when a request is throttled." - }, - { - "shape":"InternalErrorException", - "exception":true, - "fault":true, - "documentation":"Thrown when the service encounters an error during processing the request." - } - ], - "documentation":"

Gets the roles for an identity pool.

" - }, - "GetOpenIdToken":{ - "name":"GetOpenIdToken", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"GetOpenIdTokenInput", - "documentation":"Input to the GetOpenIdToken action." - }, - "output":{ - "shape":"GetOpenIdTokenResponse", - "documentation":"Returned in response to a successful GetOpenIdToken request." - }, - "errors":[ - { - "shape":"InvalidParameterException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"Thrown for missing or bad input parameter(s)." - }, - { - "shape":"ResourceNotFoundException", - "error":{"httpStatusCode":404}, - "exception":true, - "documentation":"Thrown when the requested resource (for example, a dataset or record) does not exist." - }, - { - "shape":"NotAuthorizedException", - "error":{"httpStatusCode":403}, - "exception":true, - "documentation":"Thrown when a user is not authorized to access the requested resource." - }, - { - "shape":"ResourceConflictException", - "error":{"httpStatusCode":409}, - "exception":true, - "documentation":"Thrown when a user tries to use a login which is already linked to another account." - }, - { - "shape":"TooManyRequestsException", - "error":{"httpStatusCode":429}, - "exception":true, - "documentation":"Thrown when a request is throttled." - }, - { - "shape":"InternalErrorException", - "exception":true, - "fault":true, - "documentation":"Thrown when the service encounters an error during processing the request." - } - ], - "documentation":"

Gets an OpenID token, using a known Cognito ID. This known Cognito ID is returned by GetId. You can optionally add additional logins for the identity. Supplying multiple logins creates an implicit link.

The OpenId token is valid for 15 minutes.

" - }, - "GetOpenIdTokenForDeveloperIdentity":{ - "name":"GetOpenIdTokenForDeveloperIdentity", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"GetOpenIdTokenForDeveloperIdentityInput", - "documentation":"

Input to the GetOpenIdTokenForDeveloperIdentity action.

" - }, - "output":{ - "shape":"GetOpenIdTokenForDeveloperIdentityResponse", - "documentation":"

Returned in response to a successful GetOpenIdTokenForDeveloperIdentity request.

" - }, - "errors":[ - { - "shape":"InvalidParameterException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"Thrown for missing or bad input parameter(s)." - }, - { - "shape":"ResourceNotFoundException", - "error":{"httpStatusCode":404}, - "exception":true, - "documentation":"Thrown when the requested resource (for example, a dataset or record) does not exist." - }, - { - "shape":"NotAuthorizedException", - "error":{"httpStatusCode":403}, - "exception":true, - "documentation":"Thrown when a user is not authorized to access the requested resource." - }, - { - "shape":"ResourceConflictException", - "error":{"httpStatusCode":409}, - "exception":true, - "documentation":"Thrown when a user tries to use a login which is already linked to another account." - }, - { - "shape":"TooManyRequestsException", - "error":{"httpStatusCode":429}, - "exception":true, - "documentation":"Thrown when a request is throttled." - }, - { - "shape":"InternalErrorException", - "exception":true, - "fault":true, - "documentation":"Thrown when the service encounters an error during processing the request." - }, - { - "shape":"DeveloperUserAlreadyRegisteredException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

The provided developer user identifier is already registered with Cognito under a different identity ID.

" - } - ], - "documentation":"

Registers (or retrieves) a Cognito IdentityId and an OpenID Connect token for a user authenticated by your backend authentication process. Supplying multiple logins will create an implicit linked account. You can only specify one developer provider as part of the Logins map, which is linked to the identity pool. The developer provider is the \"domain\" by which Cognito will refer to your users.

You can use GetOpenIdTokenForDeveloperIdentity to create a new identity and to link new logins (that is, user credentials issued by a public provider or developer provider) to an existing identity. When you want to create a new identity, the IdentityId should be null. When you want to associate a new login with an existing authenticated/unauthenticated identity, you can do so by providing the existing IdentityId. This API will create the identity in the specified IdentityPoolId.

" - }, - "ListIdentities":{ - "name":"ListIdentities", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"ListIdentitiesInput", - "documentation":"Input to the ListIdentities action." - }, - "output":{ - "shape":"ListIdentitiesResponse", - "documentation":"The response to a ListIdentities request." - }, - "errors":[ - { - "shape":"InvalidParameterException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"Thrown for missing or bad input parameter(s)." - }, - { - "shape":"ResourceNotFoundException", - "error":{"httpStatusCode":404}, - "exception":true, - "documentation":"Thrown when the requested resource (for example, a dataset or record) does not exist." - }, - { - "shape":"NotAuthorizedException", - "error":{"httpStatusCode":403}, - "exception":true, - "documentation":"Thrown when a user is not authorized to access the requested resource." - }, - { - "shape":"TooManyRequestsException", - "error":{"httpStatusCode":429}, - "exception":true, - "documentation":"Thrown when a request is throttled." - }, - { - "shape":"InternalErrorException", - "exception":true, - "fault":true, - "documentation":"Thrown when the service encounters an error during processing the request." - } - ], - "documentation":"

Lists the identities in a pool.

" - }, - "ListIdentityPools":{ - "name":"ListIdentityPools", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"ListIdentityPoolsInput", - "documentation":"Input to the ListIdentityPools action." - }, - "output":{ - "shape":"ListIdentityPoolsResponse", - "documentation":"The result of a successful ListIdentityPools action." - }, - "errors":[ - { - "shape":"InvalidParameterException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"Thrown for missing or bad input parameter(s)." - }, - { - "shape":"NotAuthorizedException", - "error":{"httpStatusCode":403}, - "exception":true, - "documentation":"Thrown when a user is not authorized to access the requested resource." - }, - { - "shape":"TooManyRequestsException", - "error":{"httpStatusCode":429}, - "exception":true, - "documentation":"Thrown when a request is throttled." - }, - { - "shape":"InternalErrorException", - "exception":true, - "fault":true, - "documentation":"Thrown when the service encounters an error during processing the request." - } - ], - "documentation":"

Lists all of the Cognito identity pools registered for your account.

" - }, - "LookupDeveloperIdentity":{ - "name":"LookupDeveloperIdentity", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"LookupDeveloperIdentityInput", - "documentation":"

Input to the LookupDeveloperIdentityInput action.

" - }, - "output":{ - "shape":"LookupDeveloperIdentityResponse", - "documentation":"

Returned in response to a successful LookupDeveloperIdentity action.

" - }, - "errors":[ - { - "shape":"InvalidParameterException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"Thrown for missing or bad input parameter(s)." - }, - { - "shape":"ResourceNotFoundException", - "error":{"httpStatusCode":404}, - "exception":true, - "documentation":"Thrown when the requested resource (for example, a dataset or record) does not exist." - }, - { - "shape":"NotAuthorizedException", - "error":{"httpStatusCode":403}, - "exception":true, - "documentation":"Thrown when a user is not authorized to access the requested resource." - }, - { - "shape":"ResourceConflictException", - "error":{"httpStatusCode":409}, - "exception":true, - "documentation":"Thrown when a user tries to use a login which is already linked to another account." - }, - { - "shape":"TooManyRequestsException", - "error":{"httpStatusCode":429}, - "exception":true, - "documentation":"Thrown when a request is throttled." - }, - { - "shape":"InternalErrorException", - "exception":true, - "fault":true, - "documentation":"Thrown when the service encounters an error during processing the request." - } - ], - "documentation":"

Retrieves the IdentityID associated with a DeveloperUserIdentifier or the list of DeveloperUserIdentifiers associated with an IdentityId for an existing identity. Either IdentityID or DeveloperUserIdentifier must not be null. If you supply only one of these values, the other value will be searched in the database and returned as a part of the response. If you supply both, DeveloperUserIdentifier will be matched against IdentityID. If the values are verified against the database, the response returns both values and is the same as the request. Otherwise a ResourceConflictException is thrown.

" - }, - "MergeDeveloperIdentities":{ - "name":"MergeDeveloperIdentities", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"MergeDeveloperIdentitiesInput", - "documentation":"

Input to the MergeDeveloperIdentities action.

" - }, - "output":{ - "shape":"MergeDeveloperIdentitiesResponse", - "documentation":"

Returned in response to a successful MergeDeveloperIdentities action.

" - }, - "errors":[ - { - "shape":"InvalidParameterException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"Thrown for missing or bad input parameter(s)." - }, - { - "shape":"ResourceNotFoundException", - "error":{"httpStatusCode":404}, - "exception":true, - "documentation":"Thrown when the requested resource (for example, a dataset or record) does not exist." - }, - { - "shape":"NotAuthorizedException", - "error":{"httpStatusCode":403}, - "exception":true, - "documentation":"Thrown when a user is not authorized to access the requested resource." - }, - { - "shape":"ResourceConflictException", - "error":{"httpStatusCode":409}, - "exception":true, - "documentation":"Thrown when a user tries to use a login which is already linked to another account." - }, - { - "shape":"TooManyRequestsException", - "error":{"httpStatusCode":429}, - "exception":true, - "documentation":"Thrown when a request is throttled." - }, - { - "shape":"InternalErrorException", - "exception":true, - "fault":true, - "documentation":"Thrown when the service encounters an error during processing the request." - } - ], - "documentation":"

Merges two users having different IdentityIds, existing in the same identity pool, and identified by the same developer provider. You can use this action to request that discrete users be merged and identified as a single user in the Cognito environment. Cognito associates the given source user (SourceUserIdentifier) with the IdentityId of the DestinationUserIdentifier. Only developer-authenticated users can be merged. If the users to be merged are associated with the same public provider, but as two different users, an exception will be thrown.

" - }, - "SetIdentityPoolRoles":{ - "name":"SetIdentityPoolRoles", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"SetIdentityPoolRolesInput", - "documentation":"

Input to the SetIdentityPoolRoles action.

" - }, - "errors":[ - { - "shape":"InvalidParameterException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"Thrown for missing or bad input parameter(s)." - }, - { - "shape":"ResourceNotFoundException", - "error":{"httpStatusCode":404}, - "exception":true, - "documentation":"Thrown when the requested resource (for example, a dataset or record) does not exist." - }, - { - "shape":"NotAuthorizedException", - "error":{"httpStatusCode":403}, - "exception":true, - "documentation":"Thrown when a user is not authorized to access the requested resource." - }, - { - "shape":"ResourceConflictException", - "error":{"httpStatusCode":409}, - "exception":true, - "documentation":"Thrown when a user tries to use a login which is already linked to another account." - }, - { - "shape":"TooManyRequestsException", - "error":{"httpStatusCode":429}, - "exception":true, - "documentation":"Thrown when a request is throttled." - }, - { - "shape":"InternalErrorException", - "exception":true, - "fault":true, - "documentation":"Thrown when the service encounters an error during processing the request." - } - ], - "documentation":"

Sets the roles for an identity pool. These roles are used when making calls to GetCredentialsForIdentity action.

" - }, - "UnlinkDeveloperIdentity":{ - "name":"UnlinkDeveloperIdentity", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"UnlinkDeveloperIdentityInput", - "documentation":"

Input to the UnlinkDeveloperIdentity action.

" - }, - "errors":[ - { - "shape":"InvalidParameterException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"Thrown for missing or bad input parameter(s)." - }, - { - "shape":"ResourceNotFoundException", - "error":{"httpStatusCode":404}, - "exception":true, - "documentation":"Thrown when the requested resource (for example, a dataset or record) does not exist." - }, - { - "shape":"NotAuthorizedException", - "error":{"httpStatusCode":403}, - "exception":true, - "documentation":"Thrown when a user is not authorized to access the requested resource." - }, - { - "shape":"ResourceConflictException", - "error":{"httpStatusCode":409}, - "exception":true, - "documentation":"Thrown when a user tries to use a login which is already linked to another account." - }, - { - "shape":"TooManyRequestsException", - "error":{"httpStatusCode":429}, - "exception":true, - "documentation":"Thrown when a request is throttled." - }, - { - "shape":"InternalErrorException", - "exception":true, - "fault":true, - "documentation":"Thrown when the service encounters an error during processing the request." - } - ], - "documentation":"

Unlinks a DeveloperUserIdentifier from an existing identity. Unlinked developer users will be considered new identities next time they are seen. If, for a given Cognito identity, you remove all federated identities as well as the developer user identifier, the Cognito identity becomes inaccessible.

" - }, - "UnlinkIdentity":{ - "name":"UnlinkIdentity", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"UnlinkIdentityInput", - "documentation":"Input to the UnlinkIdentity action." - }, - "errors":[ - { - "shape":"InvalidParameterException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"Thrown for missing or bad input parameter(s)." - }, - { - "shape":"ResourceNotFoundException", - "error":{"httpStatusCode":404}, - "exception":true, - "documentation":"Thrown when the requested resource (for example, a dataset or record) does not exist." - }, - { - "shape":"NotAuthorizedException", - "error":{"httpStatusCode":403}, - "exception":true, - "documentation":"Thrown when a user is not authorized to access the requested resource." - }, - { - "shape":"ResourceConflictException", - "error":{"httpStatusCode":409}, - "exception":true, - "documentation":"Thrown when a user tries to use a login which is already linked to another account." - }, - { - "shape":"TooManyRequestsException", - "error":{"httpStatusCode":429}, - "exception":true, - "documentation":"Thrown when a request is throttled." - }, - { - "shape":"InternalErrorException", - "exception":true, - "fault":true, - "documentation":"Thrown when the service encounters an error during processing the request." - } - ], - "documentation":"

Unlinks a federated identity from an existing account. Unlinked logins will be considered new identities next time they are seen. Removing the last linked login will make this identity inaccessible.

" - }, - "UpdateIdentityPool":{ - "name":"UpdateIdentityPool", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"IdentityPool", - "documentation":"An object representing a Cognito identity pool." - }, - "output":{ - "shape":"IdentityPool", - "documentation":"An object representing a Cognito identity pool." - }, - "errors":[ - { - "shape":"InvalidParameterException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"Thrown for missing or bad input parameter(s)." - }, - { - "shape":"ResourceNotFoundException", - "error":{"httpStatusCode":404}, - "exception":true, - "documentation":"Thrown when the requested resource (for example, a dataset or record) does not exist." - }, - { - "shape":"NotAuthorizedException", - "error":{"httpStatusCode":403}, - "exception":true, - "documentation":"Thrown when a user is not authorized to access the requested resource." - }, - { - "shape":"ResourceConflictException", - "error":{"httpStatusCode":409}, - "exception":true, - "documentation":"Thrown when a user tries to use a login which is already linked to another account." - }, - { - "shape":"TooManyRequestsException", - "error":{"httpStatusCode":429}, - "exception":true, - "documentation":"Thrown when a request is throttled." - }, - { - "shape":"InternalErrorException", - "exception":true, - "fault":true, - "documentation":"Thrown when the service encounters an error during processing the request." - } - ], - "documentation":"

Updates a user pool.

" - } - }, - "shapes":{ - "ARNString":{ - "type":"string", - "min":20, - "max":2048 - }, - "AccessKeyString":{"type":"string"}, - "AccountId":{ - "type":"string", - "min":1, - "max":15, - "pattern":"\\d+" - }, - "CreateIdentityPoolInput":{ - "type":"structure", - "required":[ - "IdentityPoolName", - "AllowUnauthenticatedIdentities" - ], - "members":{ - "IdentityPoolName":{ - "shape":"IdentityPoolName", - "documentation":"

A string that you provide.

" - }, - "AllowUnauthenticatedIdentities":{ - "shape":"IdentityPoolUnauthenticated", - "documentation":"

TRUE if the identity pool supports unauthenticated logins.

" - }, - "SupportedLoginProviders":{ - "shape":"IdentityProviders", - "documentation":"

Optional key:value pairs mapping provider names to provider app IDs.

" - }, - "DeveloperProviderName":{ - "shape":"DeveloperProviderName", - "documentation":"

The \"domain\" by which Cognito will refer to your users. This name acts as a placeholder that allows your backend and the Cognito service to communicate about the developer provider. For the DeveloperProviderName, you can use letters as well as period (.), underscore (_), and dash (-).

Once you have set a developer provider name, you cannot change it. Please take care in setting this parameter.

" - }, - "OpenIdConnectProviderARNs":{ - "shape":"OIDCProviderList", - "documentation":"

A list of OpendID Connect provider ARNs.

" - } - }, - "documentation":"

Input to the CreateIdentityPool action.

" - }, - "Credentials":{ - "type":"structure", - "members":{ - "AccessKeyId":{ - "shape":"AccessKeyString", - "documentation":"

The Access Key portion of the credentials.

" - }, - "SecretKey":{ - "shape":"SecretKeyString", - "documentation":"

The Secret Access Key portion of the credentials

" - }, - "SessionToken":{ - "shape":"SessionTokenString", - "documentation":"

The Session Token portion of the credentials

" - }, - "Expiration":{ - "shape":"DateType", - "documentation":"

The date at which these credentials will expire.

" - } - }, - "documentation":"

Credentials for the the provided identity ID.

" - }, - "DateType":{"type":"timestamp"}, - "DeleteIdentityPoolInput":{ - "type":"structure", - "required":["IdentityPoolId"], - "members":{ - "IdentityPoolId":{ - "shape":"IdentityPoolId", - "documentation":"An identity pool ID in the format REGION:GUID." - } - }, - "documentation":"

Input to the DeleteIdentityPool action.

" - }, - "DescribeIdentityInput":{ - "type":"structure", - "required":["IdentityId"], - "members":{ - "IdentityId":{ - "shape":"IdentityId", - "documentation":"

A unique identifier in the format REGION:GUID.

" - } - }, - "documentation":"

Input to the DescribeIdentity action.

" - }, - "DescribeIdentityPoolInput":{ - "type":"structure", - "required":["IdentityPoolId"], - "members":{ - "IdentityPoolId":{ - "shape":"IdentityPoolId", - "documentation":"An identity pool ID in the format REGION:GUID." - } - }, - "documentation":"Input to the DescribeIdentityPool action." - }, - "DeveloperProviderName":{ - "type":"string", - "min":1, - "max":128, - "pattern":"[\\w._-]+" - }, - "DeveloperUserAlreadyRegisteredException":{ - "type":"structure", - "members":{ - "message":{ - "shape":"String", - "documentation":"

This developer user identifier is already registered with Cognito.

" - } - }, - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

The provided developer user identifier is already registered with Cognito under a different identity ID.

" - }, - "DeveloperUserIdentifier":{ - "type":"string", - "min":1, - "max":1024, - "pattern":"[\\w.@_-]+" - }, - "DeveloperUserIdentifierList":{ - "type":"list", - "member":{"shape":"DeveloperUserIdentifier"} - }, - "GetCredentialsForIdentityInput":{ - "type":"structure", - "required":["IdentityId"], - "members":{ - "IdentityId":{ - "shape":"IdentityId", - "documentation":"

A unique identifier in the format REGION:GUID.

" - }, - "Logins":{ - "shape":"LoginsMap", - "documentation":"

A set of optional name-value pairs that map provider names to provider tokens.

" - } - }, - "documentation":"

Input to the GetCredentialsForIdentity action.

" - }, - "GetCredentialsForIdentityResponse":{ - "type":"structure", - "members":{ - "IdentityId":{ - "shape":"IdentityId", - "documentation":"

A unique identifier in the format REGION:GUID.

" - }, - "Credentials":{ - "shape":"Credentials", - "documentation":"

Credentials for the the provided identity ID.

" - } - }, - "documentation":"

Returned in response to a successful GetCredentialsForIdentity operation.

" - }, - "GetIdInput":{ - "type":"structure", - "required":["IdentityPoolId"], - "members":{ - "AccountId":{ - "shape":"AccountId", - "documentation":"A standard AWS account ID (9+ digits)." - }, - "IdentityPoolId":{ - "shape":"IdentityPoolId", - "documentation":"An identity pool ID in the format REGION:GUID." - }, - "Logins":{ - "shape":"LoginsMap", - "documentation":"

A set of optional name-value pairs that map provider names to provider tokens.

The available provider names for Logins are as follows:

" - } - }, - "documentation":"Input to the GetId action." - }, - "GetIdResponse":{ - "type":"structure", - "members":{ - "IdentityId":{ - "shape":"IdentityId", - "documentation":"A unique identifier in the format REGION:GUID." - } - }, - "documentation":"Returned in response to a GetId request." - }, - "GetIdentityPoolRolesInput":{ - "type":"structure", - "members":{ - "IdentityPoolId":{ - "shape":"IdentityPoolId", - "documentation":"

An identity pool ID in the format REGION:GUID.

" - } - }, - "documentation":"

Input to the GetIdentityPoolRoles action.

" - }, - "GetIdentityPoolRolesResponse":{ - "type":"structure", - "members":{ - "IdentityPoolId":{ - "shape":"IdentityPoolId", - "documentation":"

An identity pool ID in the format REGION:GUID.

" - }, - "Roles":{ - "shape":"RolesMap", - "documentation":"

The map of roles associated with this pool. Currently only authenticated and unauthenticated roles are supported.

" - } - }, - "documentation":"

Returned in response to a successful GetIdentityPoolRoles operation.

" - }, - "GetOpenIdTokenForDeveloperIdentityInput":{ - "type":"structure", - "required":[ - "IdentityPoolId", - "Logins" - ], - "members":{ - "IdentityPoolId":{ - "shape":"IdentityPoolId", - "documentation":"

An identity pool ID in the format REGION:GUID.

" - }, - "IdentityId":{ - "shape":"IdentityId", - "documentation":"

A unique identifier in the format REGION:GUID.

" - }, - "Logins":{ - "shape":"LoginsMap", - "documentation":"

A set of optional name-value pairs that map provider names to provider tokens. Each name-value pair represents a user from a public provider or developer provider. If the user is from a developer provider, the name-value pair will follow the syntax \"developer_provider_name\": \"developer_user_identifier\". The developer provider is the \"domain\" by which Cognito will refer to your users; you provided this domain while creating/updating the identity pool. The developer user identifier is an identifier from your backend that uniquely identifies a user. When you create an identity pool, you can specify the supported logins.

" - }, - "TokenDuration":{ - "shape":"TokenDuration", - "documentation":"

The expiration time of the token, in seconds. You can specify a custom expiration time for the token so that you can cache it. If you don't provide an expiration time, the token is valid for 15 minutes. You can exchange the token with Amazon STS for temporary AWS credentials, which are valid for a maximum of one hour. The maximum token duration you can set is 24 hours. You should take care in setting the expiration time for a token, as there are significant security implications: an attacker could use a leaked token to access your AWS resources for the token's duration.

" - } - }, - "documentation":"

Input to the GetOpenIdTokenForDeveloperIdentity action.

" - }, - "GetOpenIdTokenForDeveloperIdentityResponse":{ - "type":"structure", - "members":{ - "IdentityId":{ - "shape":"IdentityId", - "documentation":"

A unique identifier in the format REGION:GUID.

" - }, - "Token":{ - "shape":"OIDCToken", - "documentation":"

An OpenID token.

" - } - }, - "documentation":"

Returned in response to a successful GetOpenIdTokenForDeveloperIdentity request.

" - }, - "GetOpenIdTokenInput":{ - "type":"structure", - "required":["IdentityId"], - "members":{ - "IdentityId":{ - "shape":"IdentityId", - "documentation":"A unique identifier in the format REGION:GUID." - }, - "Logins":{ - "shape":"LoginsMap", - "documentation":"A set of optional name-value pairs that map provider names to provider tokens." - } - }, - "documentation":"Input to the GetOpenIdToken action." - }, - "GetOpenIdTokenResponse":{ - "type":"structure", - "members":{ - "IdentityId":{ - "shape":"IdentityId", - "documentation":"A unique identifier in the format REGION:GUID. Note that the IdentityId returned may not match the one passed on input." - }, - "Token":{ - "shape":"OIDCToken", - "documentation":"An OpenID token, valid for 15 minutes." - } - }, - "documentation":"Returned in response to a successful GetOpenIdToken request." - }, - "IdentitiesList":{ - "type":"list", - "member":{"shape":"IdentityDescription"} - }, - "IdentityDescription":{ - "type":"structure", - "members":{ - "IdentityId":{ - "shape":"IdentityId", - "documentation":"A unique identifier in the format REGION:GUID." - }, - "Logins":{ - "shape":"LoginsList", - "documentation":"A set of optional name-value pairs that map provider names to provider tokens." - }, - "CreationDate":{ - "shape":"DateType", - "documentation":"

Date on which the identity was created.

" - }, - "LastModifiedDate":{ - "shape":"DateType", - "documentation":"

Date on which the identity was last modified.

" - } - }, - "documentation":"A description of the identity." - }, - "IdentityId":{ - "type":"string", - "min":1, - "max":50, - "pattern":"[\\w-]+:[0-9a-f-]+" - }, - "IdentityPool":{ - "type":"structure", - "required":[ - "IdentityPoolId", - "IdentityPoolName", - "AllowUnauthenticatedIdentities" - ], - "members":{ - "IdentityPoolId":{ - "shape":"IdentityPoolId", - "documentation":"An identity pool ID in the format REGION:GUID." - }, - "IdentityPoolName":{ - "shape":"IdentityPoolName", - "documentation":"

A string that you provide.

" - }, - "AllowUnauthenticatedIdentities":{ - "shape":"IdentityPoolUnauthenticated", - "documentation":"TRUE if the identity pool supports unauthenticated logins." - }, - "SupportedLoginProviders":{ - "shape":"IdentityProviders", - "documentation":"

Optional key:value pairs mapping provider names to provider app IDs.

" - }, - "DeveloperProviderName":{ - "shape":"DeveloperProviderName", - "documentation":"

The \"domain\" by which Cognito will refer to your users.

" - }, - "OpenIdConnectProviderARNs":{ - "shape":"OIDCProviderList", - "documentation":"

A list of OpendID Connect provider ARNs.

" - } - }, - "documentation":"An object representing a Cognito identity pool." - }, - "IdentityPoolId":{ - "type":"string", - "min":1, - "max":50, - "pattern":"[\\w-]+:[0-9a-f-]+" - }, - "IdentityPoolName":{ - "type":"string", - "min":1, - "max":128, - "pattern":"[\\w ]+" - }, - "IdentityPoolShortDescription":{ - "type":"structure", - "members":{ - "IdentityPoolId":{ - "shape":"IdentityPoolId", - "documentation":"An identity pool ID in the format REGION:GUID." - }, - "IdentityPoolName":{ - "shape":"IdentityPoolName", - "documentation":"A string that you provide." - } - }, - "documentation":"A description of the identity pool." - }, - "IdentityPoolUnauthenticated":{"type":"boolean"}, - "IdentityPoolsList":{ - "type":"list", - "member":{"shape":"IdentityPoolShortDescription"} - }, - "IdentityProviderId":{ - "type":"string", - "min":1, - "max":128, - "pattern":"[\\w._-]+" - }, - "IdentityProviderName":{ - "type":"string", - "min":1, - "max":128, - "pattern":"[\\w._-]+" - }, - "IdentityProviderToken":{ - "type":"string", - "min":1, - "max":2048, - "pattern":"[\\S]+" - }, - "IdentityProviders":{ - "type":"map", - "key":{"shape":"IdentityProviderName"}, - "value":{"shape":"IdentityProviderId"}, - "max":10 - }, - "InternalErrorException":{ - "type":"structure", - "members":{ - "message":{ - "shape":"String", - "documentation":"The message returned by an InternalErrorException." - } - }, - "exception":true, - "fault":true, - "documentation":"Thrown when the service encounters an error during processing the request." - }, - "InvalidIdentityPoolConfigurationException":{ - "type":"structure", - "members":{ - "message":{ - "shape":"String", - "documentation":"

The message returned for an InvalidIdentityPoolConfigurationException

" - } - }, - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

Thrown if the identity pool has no role associated for the given auth type (auth/unauth) or if the AssumeRole fails.

" - }, - "InvalidParameterException":{ - "type":"structure", - "members":{ - "message":{ - "shape":"String", - "documentation":"The message returned by an InvalidParameterException." - } - }, - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"Thrown for missing or bad input parameter(s)." - }, - "LimitExceededException":{ - "type":"structure", - "members":{ - "message":{ - "shape":"String", - "documentation":"The message returned by a LimitExceededException." - } - }, - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"Thrown when the total number of user pools has exceeded a preset limit." - }, - "ListIdentitiesInput":{ - "type":"structure", - "required":[ - "IdentityPoolId", - "MaxResults" - ], - "members":{ - "IdentityPoolId":{ - "shape":"IdentityPoolId", - "documentation":"An identity pool ID in the format REGION:GUID." - }, - "MaxResults":{ - "shape":"QueryLimit", - "documentation":"The maximum number of identities to return." - }, - "NextToken":{ - "shape":"PaginationKey", - "documentation":"A pagination token." - } - }, - "documentation":"Input to the ListIdentities action." - }, - "ListIdentitiesResponse":{ - "type":"structure", - "members":{ - "IdentityPoolId":{ - "shape":"IdentityPoolId", - "documentation":"An identity pool ID in the format REGION:GUID." - }, - "Identities":{ - "shape":"IdentitiesList", - "documentation":"An object containing a set of identities and associated mappings." - }, - "NextToken":{ - "shape":"PaginationKey", - "documentation":"A pagination token." - } - }, - "documentation":"The response to a ListIdentities request." - }, - "ListIdentityPoolsInput":{ - "type":"structure", - "required":["MaxResults"], - "members":{ - "MaxResults":{ - "shape":"QueryLimit", - "documentation":"The maximum number of identities to return." - }, - "NextToken":{ - "shape":"PaginationKey", - "documentation":"A pagination token." - } - }, - "documentation":"Input to the ListIdentityPools action." - }, - "ListIdentityPoolsResponse":{ - "type":"structure", - "members":{ - "IdentityPools":{ - "shape":"IdentityPoolsList", - "documentation":"The identity pools returned by the ListIdentityPools action." - }, - "NextToken":{ - "shape":"PaginationKey", - "documentation":"A pagination token." - } - }, - "documentation":"The result of a successful ListIdentityPools action." - }, - "LoginsList":{ - "type":"list", - "member":{"shape":"IdentityProviderName"} - }, - "LoginsMap":{ - "type":"map", - "key":{"shape":"IdentityProviderName"}, - "value":{"shape":"IdentityProviderToken"}, - "max":10 - }, - "LookupDeveloperIdentityInput":{ - "type":"structure", - "required":["IdentityPoolId"], - "members":{ - "IdentityPoolId":{ - "shape":"IdentityPoolId", - "documentation":"

An identity pool ID in the format REGION:GUID.

" - }, - "IdentityId":{ - "shape":"IdentityId", - "documentation":"

A unique identifier in the format REGION:GUID.

" - }, - "DeveloperUserIdentifier":{ - "shape":"DeveloperUserIdentifier", - "documentation":"

A unique ID used by your backend authentication process to identify a user. Typically, a developer identity provider would issue many developer user identifiers, in keeping with the number of users.

" - }, - "MaxResults":{ - "shape":"QueryLimit", - "documentation":"

The maximum number of identities to return.

" - }, - "NextToken":{ - "shape":"PaginationKey", - "documentation":"

A pagination token. The first call you make will have NextToken set to null. After that the service will return NextToken values as needed. For example, let's say you make a request with MaxResults set to 10, and there are 20 matches in the database. The service will return a pagination token as a part of the response. This token can be used to call the API again and get results starting from the 11th match.

" - } - }, - "documentation":"

Input to the LookupDeveloperIdentityInput action.

" - }, - "LookupDeveloperIdentityResponse":{ - "type":"structure", - "members":{ - "IdentityId":{ - "shape":"IdentityId", - "documentation":"

A unique identifier in the format REGION:GUID.

" - }, - "DeveloperUserIdentifierList":{ - "shape":"DeveloperUserIdentifierList", - "documentation":"

This is the list of developer user identifiers associated with an identity ID. Cognito supports the association of multiple developer user identifiers with an identity ID.

" - }, - "NextToken":{ - "shape":"PaginationKey", - "documentation":"

A pagination token. The first call you make will have NextToken set to null. After that the service will return NextToken values as needed. For example, let's say you make a request with MaxResults set to 10, and there are 20 matches in the database. The service will return a pagination token as a part of the response. This token can be used to call the API again and get results starting from the 11th match.

" - } - }, - "documentation":"

Returned in response to a successful LookupDeveloperIdentity action.

" - }, - "MergeDeveloperIdentitiesInput":{ - "type":"structure", - "required":[ - "SourceUserIdentifier", - "DestinationUserIdentifier", - "DeveloperProviderName", - "IdentityPoolId" - ], - "members":{ - "SourceUserIdentifier":{ - "shape":"DeveloperUserIdentifier", - "documentation":"

User identifier for the source user. The value should be a DeveloperUserIdentifier.

" - }, - "DestinationUserIdentifier":{ - "shape":"DeveloperUserIdentifier", - "documentation":"

User identifier for the destination user. The value should be a DeveloperUserIdentifier.

" - }, - "DeveloperProviderName":{ - "shape":"DeveloperProviderName", - "documentation":"

The \"domain\" by which Cognito will refer to your users. This is a (pseudo) domain name that you provide while creating an identity pool. This name acts as a placeholder that allows your backend and the Cognito service to communicate about the developer provider. For the DeveloperProviderName, you can use letters as well as period (.), underscore (_), and dash (-).

" - }, - "IdentityPoolId":{ - "shape":"IdentityPoolId", - "documentation":"

An identity pool ID in the format REGION:GUID.

" - } - }, - "documentation":"

Input to the MergeDeveloperIdentities action.

" - }, - "MergeDeveloperIdentitiesResponse":{ - "type":"structure", - "members":{ - "IdentityId":{ - "shape":"IdentityId", - "documentation":"

A unique identifier in the format REGION:GUID.

" - } - }, - "documentation":"

Returned in response to a successful MergeDeveloperIdentities action.

" - }, - "NotAuthorizedException":{ - "type":"structure", - "members":{ - "message":{ - "shape":"String", - "documentation":"The message returned by a NotAuthorizedException" - } - }, - "error":{"httpStatusCode":403}, - "exception":true, - "documentation":"Thrown when a user is not authorized to access the requested resource." - }, - "OIDCProviderList":{ - "type":"list", - "member":{"shape":"ARNString"} - }, - "OIDCToken":{"type":"string"}, - "PaginationKey":{ - "type":"string", - "min":1, - "pattern":"[\\S]+" - }, - "QueryLimit":{ - "type":"integer", - "min":1, - "max":60 - }, - "ResourceConflictException":{ - "type":"structure", - "members":{ - "message":{ - "shape":"String", - "documentation":"The message returned by a ResourceConflictException." - } - }, - "error":{"httpStatusCode":409}, - "exception":true, - "documentation":"Thrown when a user tries to use a login which is already linked to another account." - }, - "ResourceNotFoundException":{ - "type":"structure", - "members":{ - "message":{ - "shape":"String", - "documentation":"The message returned by a ResourceNotFoundException." - } - }, - "error":{"httpStatusCode":404}, - "exception":true, - "documentation":"Thrown when the requested resource (for example, a dataset or record) does not exist." - }, - "RoleType":{ - "type":"string", - "pattern":"(un)?authenticated" - }, - "RolesMap":{ - "type":"map", - "key":{"shape":"RoleType"}, - "value":{"shape":"ARNString"}, - "max":2 - }, - "SecretKeyString":{"type":"string"}, - "SessionTokenString":{"type":"string"}, - "SetIdentityPoolRolesInput":{ - "type":"structure", - "required":[ - "IdentityPoolId", - "Roles" - ], - "members":{ - "IdentityPoolId":{ - "shape":"IdentityPoolId", - "documentation":"

An identity pool ID in the format REGION:GUID.

" - }, - "Roles":{ - "shape":"RolesMap", - "documentation":"

The map of roles associated with this pool. Currently only authenticated and unauthenticated roles are supported.

" - } - }, - "documentation":"

Input to the SetIdentityPoolRoles action.

" - }, - "String":{"type":"string"}, - "TokenDuration":{ - "type":"long", - "min":1, - "max":86400 - }, - "TooManyRequestsException":{ - "type":"structure", - "members":{ - "message":{ - "shape":"String", - "documentation":"Message returned by a TooManyRequestsException" - } - }, - "error":{"httpStatusCode":429}, - "exception":true, - "documentation":"Thrown when a request is throttled." - }, - "UnlinkDeveloperIdentityInput":{ - "type":"structure", - "required":[ - "IdentityId", - "IdentityPoolId", - "DeveloperProviderName", - "DeveloperUserIdentifier" - ], - "members":{ - "IdentityId":{ - "shape":"IdentityId", - "documentation":"

A unique identifier in the format REGION:GUID.

" - }, - "IdentityPoolId":{ - "shape":"IdentityPoolId", - "documentation":"

An identity pool ID in the format REGION:GUID.

" - }, - "DeveloperProviderName":{ - "shape":"DeveloperProviderName", - "documentation":"

The \"domain\" by which Cognito will refer to your users.

" - }, - "DeveloperUserIdentifier":{ - "shape":"DeveloperUserIdentifier", - "documentation":"A unique ID used by your backend authentication process to identify a user." - } - }, - "documentation":"

Input to the UnlinkDeveloperIdentity action.

" - }, - "UnlinkIdentityInput":{ - "type":"structure", - "required":[ - "IdentityId", - "Logins", - "LoginsToRemove" - ], - "members":{ - "IdentityId":{ - "shape":"IdentityId", - "documentation":"A unique identifier in the format REGION:GUID." - }, - "Logins":{ - "shape":"LoginsMap", - "documentation":"A set of optional name-value pairs that map provider names to provider tokens." - }, - "LoginsToRemove":{ - "shape":"LoginsList", - "documentation":"Provider names to unlink from this identity." - } - }, - "documentation":"Input to the UnlinkIdentity action." - } - } -} diff --git a/src/github.com/getlantern/aws-sdk-go/apis/cognito-sync/2014-06-30.normal.json b/src/github.com/getlantern/aws-sdk-go/apis/cognito-sync/2014-06-30.normal.json deleted file mode 100644 index 654c8aa7f2..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/apis/cognito-sync/2014-06-30.normal.json +++ /dev/null @@ -1,1762 +0,0 @@ -{ - "metadata":{ - "apiVersion":"2014-06-30", - "endpointPrefix":"cognito-sync", - "jsonVersion":"1.1", - "serviceFullName":"Amazon Cognito Sync", - "signatureVersion":"v4", - "protocol":"rest-json" - }, - "documentation":"Amazon Cognito Sync

Amazon Cognito Sync provides an AWS service and client library that enable cross-device syncing of application-related user data. High-level client libraries are available for both iOS and Android. You can use these libraries to persist data locally so that it's available even if the device is offline. Developer credentials don't need to be stored on the mobile device to access the service. You can use Amazon Cognito to obtain a normalized user ID and credentials. User data is persisted in a dataset that can store up to 1 MB of key-value pairs, and you can have up to 20 datasets per user identity.

With Amazon Cognito Sync, the data stored for each identity is accessible only to credentials assigned to that identity. In order to use the Cognito Sync service, you need to make API calls using credentials retrieved with Amazon Cognito Identity service.

", - "operations":{ - "DeleteDataset":{ - "name":"DeleteDataset", - "http":{ - "method":"DELETE", - "requestUri":"/identitypools/{IdentityPoolId}/identities/{IdentityId}/datasets/{DatasetName}", - "responseCode":200 - }, - "input":{ - "shape":"DeleteDatasetRequest", - "documentation":"A request to delete the specific dataset." - }, - "output":{ - "shape":"DeleteDatasetResponse", - "documentation":"Response to a successful DeleteDataset request." - }, - "errors":[ - { - "shape":"NotAuthorizedException", - "error":{ - "code":"NotAuthorizedError", - "httpStatusCode":403, - "senderFault":true - }, - "exception":true, - "documentation":"Thrown when a user is not authorized to access the requested resource." - }, - { - "shape":"InvalidParameterException", - "error":{ - "code":"InvalidParameter", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"Thrown when a request parameter does not comply with the associated constraints." - }, - { - "shape":"ResourceNotFoundException", - "error":{ - "code":"ResourceNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"Thrown if the resource doesn't exist." - }, - { - "shape":"InternalErrorException", - "error":{ - "code":"InternalError", - "httpStatusCode":500 - }, - "exception":true, - "fault":true, - "documentation":"Indicates an internal service error." - } - ], - "documentation":"Deletes the specific dataset. The dataset will be deleted permanently, and the action can't be undone. Datasets that this dataset was merged with will no longer report the merge. Any consequent operation on this dataset will result in a ResourceNotFoundException." - }, - "DescribeDataset":{ - "name":"DescribeDataset", - "http":{ - "method":"GET", - "requestUri":"/identitypools/{IdentityPoolId}/identities/{IdentityId}/datasets/{DatasetName}", - "responseCode":200 - }, - "input":{ - "shape":"DescribeDatasetRequest", - "documentation":"A request for metadata about a dataset (creation date, number of records, size) by owner and dataset name." - }, - "output":{ - "shape":"DescribeDatasetResponse", - "documentation":"Response to a successful DescribeDataset request." - }, - "errors":[ - { - "shape":"NotAuthorizedException", - "error":{ - "code":"NotAuthorizedError", - "httpStatusCode":403, - "senderFault":true - }, - "exception":true, - "documentation":"Thrown when a user is not authorized to access the requested resource." - }, - { - "shape":"InvalidParameterException", - "error":{ - "code":"InvalidParameter", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"Thrown when a request parameter does not comply with the associated constraints." - }, - { - "shape":"ResourceNotFoundException", - "error":{ - "code":"ResourceNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"Thrown if the resource doesn't exist." - }, - { - "shape":"InternalErrorException", - "error":{ - "code":"InternalError", - "httpStatusCode":500 - }, - "exception":true, - "fault":true, - "documentation":"Indicates an internal service error." - } - ], - "documentation":"Gets metadata about a dataset by identity and dataset name. The credentials used to make this API call need to have access to the identity data. With Amazon Cognito Sync, each identity has access only to its own data. You should use Amazon Cognito Identity service to retrieve the credentials necessary to make this API call." - }, - "DescribeIdentityPoolUsage":{ - "name":"DescribeIdentityPoolUsage", - "http":{ - "method":"GET", - "requestUri":"/identitypools/{IdentityPoolId}", - "responseCode":200 - }, - "input":{ - "shape":"DescribeIdentityPoolUsageRequest", - "documentation":"A request for usage information about the identity pool." - }, - "output":{ - "shape":"DescribeIdentityPoolUsageResponse", - "documentation":"Response to a successful DescribeIdentityPoolUsage request." - }, - "errors":[ - { - "shape":"NotAuthorizedException", - "error":{ - "code":"NotAuthorizedError", - "httpStatusCode":403, - "senderFault":true - }, - "exception":true, - "documentation":"Thrown when a user is not authorized to access the requested resource." - }, - { - "shape":"InvalidParameterException", - "error":{ - "code":"InvalidParameter", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"Thrown when a request parameter does not comply with the associated constraints." - }, - { - "shape":"ResourceNotFoundException", - "error":{ - "code":"ResourceNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"Thrown if the resource doesn't exist." - }, - { - "shape":"InternalErrorException", - "error":{ - "code":"InternalError", - "httpStatusCode":500 - }, - "exception":true, - "fault":true, - "documentation":"Indicates an internal service error." - } - ], - "documentation":"Gets usage details (for example, data storage) about a particular identity pool." - }, - "DescribeIdentityUsage":{ - "name":"DescribeIdentityUsage", - "http":{ - "method":"GET", - "requestUri":"/identitypools/{IdentityPoolId}/identities/{IdentityId}", - "responseCode":200 - }, - "input":{ - "shape":"DescribeIdentityUsageRequest", - "documentation":"A request for information about the usage of an identity pool." - }, - "output":{ - "shape":"DescribeIdentityUsageResponse", - "documentation":"The response to a successful DescribeIdentityUsage request." - }, - "errors":[ - { - "shape":"NotAuthorizedException", - "error":{ - "code":"NotAuthorizedError", - "httpStatusCode":403, - "senderFault":true - }, - "exception":true, - "documentation":"Thrown when a user is not authorized to access the requested resource." - }, - { - "shape":"InvalidParameterException", - "error":{ - "code":"InvalidParameter", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"Thrown when a request parameter does not comply with the associated constraints." - }, - { - "shape":"ResourceNotFoundException", - "error":{ - "code":"ResourceNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"Thrown if the resource doesn't exist." - }, - { - "shape":"InternalErrorException", - "error":{ - "code":"InternalError", - "httpStatusCode":500 - }, - "exception":true, - "fault":true, - "documentation":"Indicates an internal service error." - } - ], - "documentation":"Gets usage information for an identity, including number of datasets and data usage." - }, - "GetIdentityPoolConfiguration":{ - "name":"GetIdentityPoolConfiguration", - "http":{ - "method":"GET", - "requestUri":"/identitypools/{IdentityPoolId}/configuration", - "responseCode":200 - }, - "input":{ - "shape":"GetIdentityPoolConfigurationRequest", - "documentation":"

A request to GetIdentityPoolConfigurationRequest.

" - }, - "output":{ - "shape":"GetIdentityPoolConfigurationResponse", - "documentation":"

The response from GetIdentityPoolConfigurationResponse.

" - }, - "errors":[ - { - "shape":"NotAuthorizedException", - "error":{ - "code":"NotAuthorizedError", - "httpStatusCode":403, - "senderFault":true - }, - "exception":true, - "documentation":"Thrown when a user is not authorized to access the requested resource." - }, - { - "shape":"InvalidParameterException", - "error":{ - "code":"InvalidParameter", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"Thrown when a request parameter does not comply with the associated constraints." - }, - { - "shape":"ResourceNotFoundException", - "error":{ - "code":"ResourceNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"Thrown if the resource doesn't exist." - }, - { - "shape":"InternalErrorException", - "error":{ - "code":"InternalError", - "httpStatusCode":500 - }, - "exception":true, - "fault":true, - "documentation":"Indicates an internal service error." - } - ], - "documentation":"

Gets the configuration settings of an identity pool.

" - }, - "ListDatasets":{ - "name":"ListDatasets", - "http":{ - "method":"GET", - "requestUri":"/identitypools/{IdentityPoolId}/identities/{IdentityId}/datasets", - "responseCode":200 - }, - "input":{ - "shape":"ListDatasetsRequest", - "documentation":"Request for a list of datasets for an identity." - }, - "output":{ - "shape":"ListDatasetsResponse", - "documentation":"Returned for a successful ListDatasets request." - }, - "errors":[ - { - "shape":"NotAuthorizedException", - "error":{ - "code":"NotAuthorizedError", - "httpStatusCode":403, - "senderFault":true - }, - "exception":true, - "documentation":"Thrown when a user is not authorized to access the requested resource." - }, - { - "shape":"InvalidParameterException", - "error":{ - "code":"InvalidParameter", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"Thrown when a request parameter does not comply with the associated constraints." - }, - { - "shape":"InternalErrorException", - "error":{ - "code":"InternalError", - "httpStatusCode":500 - }, - "exception":true, - "fault":true, - "documentation":"Indicates an internal service error." - } - ], - "documentation":"Lists datasets for an identity. The credentials used to make this API call need to have access to the identity data. With Amazon Cognito Sync, each identity has access only to its own data. You should use Amazon Cognito Identity service to retrieve the credentials necessary to make this API call." - }, - "ListIdentityPoolUsage":{ - "name":"ListIdentityPoolUsage", - "http":{ - "method":"GET", - "requestUri":"/identitypools", - "responseCode":200 - }, - "input":{ - "shape":"ListIdentityPoolUsageRequest", - "documentation":"A request for usage information on an identity pool." - }, - "output":{ - "shape":"ListIdentityPoolUsageResponse", - "documentation":"Returned for a successful ListIdentityPoolUsage request." - }, - "errors":[ - { - "shape":"NotAuthorizedException", - "error":{ - "code":"NotAuthorizedError", - "httpStatusCode":403, - "senderFault":true - }, - "exception":true, - "documentation":"Thrown when a user is not authorized to access the requested resource." - }, - { - "shape":"InvalidParameterException", - "error":{ - "code":"InvalidParameter", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"Thrown when a request parameter does not comply with the associated constraints." - }, - { - "shape":"InternalErrorException", - "error":{ - "code":"InternalError", - "httpStatusCode":500 - }, - "exception":true, - "fault":true, - "documentation":"Indicates an internal service error." - } - ], - "documentation":"Gets a list of identity pools registered with Cognito." - }, - "ListRecords":{ - "name":"ListRecords", - "http":{ - "method":"GET", - "requestUri":"/identitypools/{IdentityPoolId}/identities/{IdentityId}/datasets/{DatasetName}/records", - "responseCode":200 - }, - "input":{ - "shape":"ListRecordsRequest", - "documentation":"A request for a list of records." - }, - "output":{ - "shape":"ListRecordsResponse", - "documentation":"Returned for a successful ListRecordsRequest." - }, - "errors":[ - { - "shape":"InvalidParameterException", - "error":{ - "code":"InvalidParameter", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"Thrown when a request parameter does not comply with the associated constraints." - }, - { - "shape":"NotAuthorizedException", - "error":{ - "code":"NotAuthorizedError", - "httpStatusCode":403, - "senderFault":true - }, - "exception":true, - "documentation":"Thrown when a user is not authorized to access the requested resource." - }, - { - "shape":"TooManyRequestsException", - "error":{ - "code":"TooManyRequests", - "httpStatusCode":429, - "senderFault":true - }, - "exception":true, - "documentation":"Thrown if the request is throttled." - }, - { - "shape":"InternalErrorException", - "error":{ - "code":"InternalError", - "httpStatusCode":500 - }, - "exception":true, - "fault":true, - "documentation":"Indicates an internal service error." - } - ], - "documentation":"Gets paginated records, optionally changed after a particular sync count for a dataset and identity. The credentials used to make this API call need to have access to the identity data. With Amazon Cognito Sync, each identity has access only to its own data. You should use Amazon Cognito Identity service to retrieve the credentials necessary to make this API call." - }, - "RegisterDevice":{ - "name":"RegisterDevice", - "http":{ - "method":"POST", - "requestUri":"/identitypools/{IdentityPoolId}/identity/{IdentityId}/device", - "responseCode":200 - }, - "input":{ - "shape":"RegisterDeviceRequest", - "documentation":"

A request to RegisterDevice.

" - }, - "output":{ - "shape":"RegisterDeviceResponse", - "documentation":"

Response to a RegisterDevice request.

" - }, - "errors":[ - { - "shape":"NotAuthorizedException", - "error":{ - "code":"NotAuthorizedError", - "httpStatusCode":403, - "senderFault":true - }, - "exception":true, - "documentation":"Thrown when a user is not authorized to access the requested resource." - }, - { - "shape":"InvalidParameterException", - "error":{ - "code":"InvalidParameter", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"Thrown when a request parameter does not comply with the associated constraints." - }, - { - "shape":"ResourceNotFoundException", - "error":{ - "code":"ResourceNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"Thrown if the resource doesn't exist." - }, - { - "shape":"InternalErrorException", - "error":{ - "code":"InternalError", - "httpStatusCode":500 - }, - "exception":true, - "fault":true, - "documentation":"Indicates an internal service error." - }, - { - "shape":"InvalidConfigurationException", - "error":{ - "code":"InvalidConfiguration", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true - } - ], - "documentation":"

Registers a device to receive push sync notifications.

" - }, - "SetIdentityPoolConfiguration":{ - "name":"SetIdentityPoolConfiguration", - "http":{ - "method":"POST", - "requestUri":"/identitypools/{IdentityPoolId}/configuration", - "responseCode":200 - }, - "input":{ - "shape":"SetIdentityPoolConfigurationRequest", - "documentation":"

A request to SetIdentityPoolConfiguration.

" - }, - "output":{ - "shape":"SetIdentityPoolConfigurationResponse", - "documentation":"

Response to a SetIdentityPoolConfiguration request.

" - }, - "errors":[ - { - "shape":"NotAuthorizedException", - "error":{ - "code":"NotAuthorizedError", - "httpStatusCode":403, - "senderFault":true - }, - "exception":true, - "documentation":"Thrown when a user is not authorized to access the requested resource." - }, - { - "shape":"InvalidParameterException", - "error":{ - "code":"InvalidParameter", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"Thrown when a request parameter does not comply with the associated constraints." - }, - { - "shape":"ResourceNotFoundException", - "error":{ - "code":"ResourceNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"Thrown if the resource doesn't exist." - }, - { - "shape":"InternalErrorException", - "error":{ - "code":"InternalError", - "httpStatusCode":500 - }, - "exception":true, - "fault":true, - "documentation":"Indicates an internal service error." - } - ], - "documentation":"

Sets the necessary configuration for push sync.

" - }, - "SubscribeToDataset":{ - "name":"SubscribeToDataset", - "http":{ - "method":"POST", - "requestUri":"/identitypools/{IdentityPoolId}/identities/{IdentityId}/datasets/{DatasetName}/subscriptions/{DeviceId}", - "responseCode":200 - }, - "input":{ - "shape":"SubscribeToDatasetRequest", - "documentation":"

A request to SubscribeToDatasetRequest.

" - }, - "output":{ - "shape":"SubscribeToDatasetResponse", - "documentation":"

Response to a SubscribeToDataset request.

" - }, - "errors":[ - { - "shape":"NotAuthorizedException", - "error":{ - "code":"NotAuthorizedError", - "httpStatusCode":403, - "senderFault":true - }, - "exception":true, - "documentation":"Thrown when a user is not authorized to access the requested resource." - }, - { - "shape":"InvalidParameterException", - "error":{ - "code":"InvalidParameter", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"Thrown when a request parameter does not comply with the associated constraints." - }, - { - "shape":"ResourceNotFoundException", - "error":{ - "code":"ResourceNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"Thrown if the resource doesn't exist." - }, - { - "shape":"InternalErrorException", - "error":{ - "code":"InternalError", - "httpStatusCode":500 - }, - "exception":true, - "fault":true, - "documentation":"Indicates an internal service error." - }, - { - "shape":"InvalidConfigurationException", - "error":{ - "code":"InvalidConfiguration", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true - } - ], - "documentation":"

Subscribes to receive notifications when a dataset is modified by another device.

" - }, - "UnsubscribeFromDataset":{ - "name":"UnsubscribeFromDataset", - "http":{ - "method":"DELETE", - "requestUri":"/identitypools/{IdentityPoolId}/identities/{IdentityId}/datasets/{DatasetName}/subscriptions/{DeviceId}", - "responseCode":200 - }, - "input":{ - "shape":"UnsubscribeFromDatasetRequest", - "documentation":"

A request to UnsubscribeFromDataset.

" - }, - "output":{ - "shape":"UnsubscribeFromDatasetResponse", - "documentation":"

Response to an UnsubscribeFromDataset request.

" - }, - "errors":[ - { - "shape":"NotAuthorizedException", - "error":{ - "code":"NotAuthorizedError", - "httpStatusCode":403, - "senderFault":true - }, - "exception":true, - "documentation":"Thrown when a user is not authorized to access the requested resource." - }, - { - "shape":"InvalidParameterException", - "error":{ - "code":"InvalidParameter", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"Thrown when a request parameter does not comply with the associated constraints." - }, - { - "shape":"ResourceNotFoundException", - "error":{ - "code":"ResourceNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"Thrown if the resource doesn't exist." - }, - { - "shape":"InternalErrorException", - "error":{ - "code":"InternalError", - "httpStatusCode":500 - }, - "exception":true, - "fault":true, - "documentation":"Indicates an internal service error." - }, - { - "shape":"InvalidConfigurationException", - "error":{ - "code":"InvalidConfiguration", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true - } - ], - "documentation":"

Unsubscribe from receiving notifications when a dataset is modified by another device.

" - }, - "UpdateRecords":{ - "name":"UpdateRecords", - "http":{ - "method":"POST", - "requestUri":"/identitypools/{IdentityPoolId}/identities/{IdentityId}/datasets/{DatasetName}", - "responseCode":200 - }, - "input":{ - "shape":"UpdateRecordsRequest", - "documentation":"A request to post updates to records or add and delete records for a dataset and user." - }, - "output":{ - "shape":"UpdateRecordsResponse", - "documentation":"Returned for a successful UpdateRecordsRequest." - }, - "errors":[ - { - "shape":"InvalidParameterException", - "error":{ - "code":"InvalidParameter", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"Thrown when a request parameter does not comply with the associated constraints." - }, - { - "shape":"LimitExceededException", - "error":{ - "code":"LimitExceeded", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"Thrown when the limit on the number of objects or operations has been exceeded." - }, - { - "shape":"NotAuthorizedException", - "error":{ - "code":"NotAuthorizedError", - "httpStatusCode":403, - "senderFault":true - }, - "exception":true, - "documentation":"Thrown when a user is not authorized to access the requested resource." - }, - { - "shape":"ResourceNotFoundException", - "error":{ - "code":"ResourceNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"Thrown if the resource doesn't exist." - }, - { - "shape":"ResourceConflictException", - "error":{ - "code":"ResourceConflict", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"Thrown if an update can't be applied because the resource was changed by another call and this would result in a conflict." - }, - { - "shape":"TooManyRequestsException", - "error":{ - "code":"TooManyRequests", - "httpStatusCode":429, - "senderFault":true - }, - "exception":true, - "documentation":"Thrown if the request is throttled." - }, - { - "shape":"InternalErrorException", - "error":{ - "code":"InternalError", - "httpStatusCode":500 - }, - "exception":true, - "fault":true, - "documentation":"Indicates an internal service error." - } - ], - "documentation":"Posts updates to records and add and delete records for a dataset and user. The credentials used to make this API call need to have access to the identity data. With Amazon Cognito Sync, each identity has access only to its own data. You should use Amazon Cognito Identity service to retrieve the credentials necessary to make this API call." - } - }, - "shapes":{ - "ApplicationArn":{ - "type":"string", - "pattern":"arn:aws:sns:[-0-9a-z]+:\\d+:app/[A-Z_]+/[a-zA-Z0-9_.-]+" - }, - "ApplicationArnList":{ - "type":"list", - "member":{"shape":"ApplicationArn"} - }, - "AssumeRoleArn":{ - "type":"string", - "min":20, - "max":2048, - "pattern":"arn:aws:iam::\\d+:role/.*" - }, - "Boolean":{"type":"boolean"}, - "ClientContext":{"type":"string"}, - "Dataset":{ - "type":"structure", - "members":{ - "IdentityId":{ - "shape":"IdentityId", - "documentation":"A name-spaced GUID (for example, us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito. GUID generation is unique within a region." - }, - "DatasetName":{ - "shape":"DatasetName", - "documentation":"A string of up to 128 characters. Allowed characters are a-z, A-Z, 0-9, '_' (underscore), '-' (dash), and '.' (dot)." - }, - "CreationDate":{ - "shape":"Date", - "documentation":"Date on which the dataset was created." - }, - "LastModifiedDate":{ - "shape":"Date", - "documentation":"Date when the dataset was last modified." - }, - "LastModifiedBy":{ - "shape":"String", - "documentation":"The device that made the last change to this dataset." - }, - "DataStorage":{ - "shape":"Long", - "documentation":"Total size in bytes of the records in this dataset." - }, - "NumRecords":{ - "shape":"Long", - "documentation":"Number of records in this dataset." - } - }, - "documentation":"A collection of data for an identity pool. An identity pool can have multiple datasets. A dataset is per identity and can be general or associated with a particular entity in an application (like a saved game). Datasets are automatically created if they don't exist. Data is synced by dataset, and a dataset can hold up to 1MB of key-value pairs." - }, - "DatasetList":{ - "type":"list", - "member":{"shape":"Dataset"} - }, - "DatasetName":{ - "type":"string", - "min":1, - "max":128, - "pattern":"[a-zA-Z0-9_.:-]+" - }, - "Date":{"type":"timestamp"}, - "DeleteDatasetRequest":{ - "type":"structure", - "required":[ - "IdentityPoolId", - "IdentityId", - "DatasetName" - ], - "members":{ - "IdentityPoolId":{ - "shape":"IdentityPoolId", - "location":"uri", - "locationName":"IdentityPoolId", - "documentation":"A name-spaced GUID (for example, us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito. GUID generation is unique within a region." - }, - "IdentityId":{ - "shape":"IdentityId", - "location":"uri", - "locationName":"IdentityId", - "documentation":"A name-spaced GUID (for example, us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito. GUID generation is unique within a region." - }, - "DatasetName":{ - "shape":"DatasetName", - "location":"uri", - "locationName":"DatasetName", - "documentation":"A string of up to 128 characters. Allowed characters are a-z, A-Z, 0-9, '_' (underscore), '-' (dash), and '.' (dot)." - } - }, - "documentation":"A request to delete the specific dataset." - }, - "DeleteDatasetResponse":{ - "type":"structure", - "members":{ - "Dataset":{ - "shape":"Dataset", - "documentation":"A collection of data for an identity pool. An identity pool can have multiple datasets. A dataset is per identity and can be general or associated with a particular entity in an application (like a saved game). Datasets are automatically created if they don't exist. Data is synced by dataset, and a dataset can hold up to 1MB of key-value pairs." - } - }, - "documentation":"Response to a successful DeleteDataset request." - }, - "DescribeDatasetRequest":{ - "type":"structure", - "required":[ - "IdentityPoolId", - "IdentityId", - "DatasetName" - ], - "members":{ - "IdentityPoolId":{ - "shape":"IdentityPoolId", - "location":"uri", - "locationName":"IdentityPoolId", - "documentation":"A name-spaced GUID (for example, us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito. GUID generation is unique within a region." - }, - "IdentityId":{ - "shape":"IdentityId", - "location":"uri", - "locationName":"IdentityId", - "documentation":"A name-spaced GUID (for example, us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito. GUID generation is unique within a region." - }, - "DatasetName":{ - "shape":"DatasetName", - "location":"uri", - "locationName":"DatasetName", - "documentation":"A string of up to 128 characters. Allowed characters are a-z, A-Z, 0-9, '_' (underscore), '-' (dash), and '.' (dot)." - } - }, - "documentation":"A request for metadata about a dataset (creation date, number of records, size) by owner and dataset name." - }, - "DescribeDatasetResponse":{ - "type":"structure", - "members":{ - "Dataset":{ - "shape":"Dataset", - "documentation":"Metadata for a collection of data for an identity. An identity can have multiple datasets. A dataset can be general or associated with a particular entity in an application (like a saved game). Datasets are automatically created if they don't exist. Data is synced by dataset, and a dataset can hold up to 1MB of key-value pairs." - } - }, - "documentation":"Response to a successful DescribeDataset request." - }, - "DescribeIdentityPoolUsageRequest":{ - "type":"structure", - "required":["IdentityPoolId"], - "members":{ - "IdentityPoolId":{ - "shape":"IdentityPoolId", - "location":"uri", - "locationName":"IdentityPoolId", - "documentation":"A name-spaced GUID (for example, us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito. GUID generation is unique within a region." - } - }, - "documentation":"A request for usage information about the identity pool." - }, - "DescribeIdentityPoolUsageResponse":{ - "type":"structure", - "members":{ - "IdentityPoolUsage":{ - "shape":"IdentityPoolUsage", - "documentation":"Information about the usage of the identity pool." - } - }, - "documentation":"Response to a successful DescribeIdentityPoolUsage request." - }, - "DescribeIdentityUsageRequest":{ - "type":"structure", - "required":[ - "IdentityPoolId", - "IdentityId" - ], - "members":{ - "IdentityPoolId":{ - "shape":"IdentityPoolId", - "location":"uri", - "locationName":"IdentityPoolId", - "documentation":"A name-spaced GUID (for example, us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito. GUID generation is unique within a region." - }, - "IdentityId":{ - "shape":"IdentityId", - "location":"uri", - "locationName":"IdentityId", - "documentation":"A name-spaced GUID (for example, us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito. GUID generation is unique within a region." - } - }, - "documentation":"A request for information about the usage of an identity pool." - }, - "DescribeIdentityUsageResponse":{ - "type":"structure", - "members":{ - "IdentityUsage":{ - "shape":"IdentityUsage", - "documentation":"Usage information for the identity." - } - }, - "documentation":"The response to a successful DescribeIdentityUsage request." - }, - "DeviceId":{ - "type":"string", - "min":1, - "max":256 - }, - "ExceptionMessage":{"type":"string"}, - "GetIdentityPoolConfigurationRequest":{ - "type":"structure", - "required":["IdentityPoolId"], - "members":{ - "IdentityPoolId":{ - "shape":"IdentityPoolId", - "location":"uri", - "locationName":"IdentityPoolId", - "documentation":"

A name-spaced GUID (for example, us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito. This is the ID of the pool for which to return a configuration.

" - } - }, - "documentation":"

A request to GetIdentityPoolConfigurationRequest.

" - }, - "GetIdentityPoolConfigurationResponse":{ - "type":"structure", - "members":{ - "IdentityPoolId":{ - "shape":"IdentityPoolId", - "documentation":"

A name-spaced GUID (for example, us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito.

" - }, - "PushSync":{ - "shape":"PushSync", - "documentation":"

Configuration options applied to the identity pool.

" - } - }, - "documentation":"

The response from GetIdentityPoolConfigurationResponse.

" - }, - "IdentityId":{ - "type":"string", - "min":1, - "max":50, - "pattern":"[\\w-]+:[0-9a-f-]+" - }, - "IdentityPoolId":{ - "type":"string", - "min":1, - "max":50, - "pattern":"[\\w-]+:[0-9a-f-]+" - }, - "IdentityPoolUsage":{ - "type":"structure", - "members":{ - "IdentityPoolId":{ - "shape":"IdentityPoolId", - "documentation":"A name-spaced GUID (for example, us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito. GUID generation is unique within a region." - }, - "SyncSessionsCount":{ - "shape":"Long", - "documentation":"Number of sync sessions for the identity pool." - }, - "DataStorage":{ - "shape":"Long", - "documentation":"Data storage information for the identity pool." - }, - "LastModifiedDate":{ - "shape":"Date", - "documentation":"Date on which the identity pool was last modified." - } - }, - "documentation":"Usage information for the identity pool." - }, - "IdentityPoolUsageList":{ - "type":"list", - "member":{"shape":"IdentityPoolUsage"} - }, - "IdentityUsage":{ - "type":"structure", - "members":{ - "IdentityId":{ - "shape":"IdentityId", - "documentation":"A name-spaced GUID (for example, us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito. GUID generation is unique within a region." - }, - "IdentityPoolId":{ - "shape":"IdentityPoolId", - "documentation":"A name-spaced GUID (for example, us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito. GUID generation is unique within a region." - }, - "LastModifiedDate":{ - "shape":"Date", - "documentation":"Date on which the identity was last modified." - }, - "DatasetCount":{ - "shape":"Integer", - "documentation":"Number of datasets for the identity." - }, - "DataStorage":{ - "shape":"Long", - "documentation":"Total data storage for this identity." - } - }, - "documentation":"Usage information for the identity." - }, - "Integer":{"type":"integer"}, - "IntegerString":{"type":"integer"}, - "InternalErrorException":{ - "type":"structure", - "required":["message"], - "members":{ - "message":{ - "shape":"ExceptionMessage", - "documentation":"Message returned by InternalErrorException." - } - }, - "error":{ - "code":"InternalError", - "httpStatusCode":500 - }, - "exception":true, - "fault":true, - "documentation":"Indicates an internal service error." - }, - "InvalidConfigurationException":{ - "type":"structure", - "required":["message"], - "members":{ - "message":{"shape":"ExceptionMessage"} - }, - "error":{ - "code":"InvalidConfiguration", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true - }, - "InvalidParameterException":{ - "type":"structure", - "required":["message"], - "members":{ - "message":{ - "shape":"ExceptionMessage", - "documentation":"Message returned by InvalidParameterException." - } - }, - "error":{ - "code":"InvalidParameter", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"Thrown when a request parameter does not comply with the associated constraints." - }, - "LimitExceededException":{ - "type":"structure", - "required":["message"], - "members":{ - "message":{ - "shape":"ExceptionMessage", - "documentation":"Message returned by LimitExceededException." - } - }, - "error":{ - "code":"LimitExceeded", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"Thrown when the limit on the number of objects or operations has been exceeded." - }, - "ListDatasetsRequest":{ - "type":"structure", - "required":[ - "IdentityId", - "IdentityPoolId" - ], - "members":{ - "IdentityPoolId":{ - "shape":"IdentityPoolId", - "location":"uri", - "locationName":"IdentityPoolId", - "documentation":"A name-spaced GUID (for example, us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito. GUID generation is unique within a region." - }, - "IdentityId":{ - "shape":"IdentityId", - "location":"uri", - "locationName":"IdentityId", - "documentation":"A name-spaced GUID (for example, us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito. GUID generation is unique within a region." - }, - "NextToken":{ - "shape":"String", - "location":"querystring", - "locationName":"nextToken", - "documentation":"A pagination token for obtaining the next page of results." - }, - "MaxResults":{ - "shape":"IntegerString", - "location":"querystring", - "locationName":"maxResults", - "documentation":"The maximum number of results to be returned." - } - }, - "documentation":"Request for a list of datasets for an identity." - }, - "ListDatasetsResponse":{ - "type":"structure", - "members":{ - "Datasets":{ - "shape":"DatasetList", - "documentation":"A set of datasets." - }, - "Count":{ - "shape":"Integer", - "documentation":"Number of datasets returned." - }, - "NextToken":{ - "shape":"String", - "documentation":"A pagination token for obtaining the next page of results." - } - }, - "documentation":"Returned for a successful ListDatasets request." - }, - "ListIdentityPoolUsageRequest":{ - "type":"structure", - "members":{ - "NextToken":{ - "shape":"String", - "location":"querystring", - "locationName":"nextToken", - "documentation":"A pagination token for obtaining the next page of results." - }, - "MaxResults":{ - "shape":"IntegerString", - "location":"querystring", - "locationName":"maxResults", - "documentation":"The maximum number of results to be returned." - } - }, - "documentation":"A request for usage information on an identity pool." - }, - "ListIdentityPoolUsageResponse":{ - "type":"structure", - "members":{ - "IdentityPoolUsages":{ - "shape":"IdentityPoolUsageList", - "documentation":"Usage information for the identity pools." - }, - "MaxResults":{ - "shape":"Integer", - "documentation":"The maximum number of results to be returned." - }, - "Count":{ - "shape":"Integer", - "documentation":"Total number of identities for the identity pool." - }, - "NextToken":{ - "shape":"String", - "documentation":"A pagination token for obtaining the next page of results." - } - }, - "documentation":"Returned for a successful ListIdentityPoolUsage request." - }, - "ListRecordsRequest":{ - "type":"structure", - "required":[ - "IdentityPoolId", - "IdentityId", - "DatasetName" - ], - "members":{ - "IdentityPoolId":{ - "shape":"IdentityPoolId", - "location":"uri", - "locationName":"IdentityPoolId", - "documentation":"A name-spaced GUID (for example, us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito. GUID generation is unique within a region." - }, - "IdentityId":{ - "shape":"IdentityId", - "location":"uri", - "locationName":"IdentityId", - "documentation":"A name-spaced GUID (for example, us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito. GUID generation is unique within a region." - }, - "DatasetName":{ - "shape":"DatasetName", - "location":"uri", - "locationName":"DatasetName", - "documentation":"A string of up to 128 characters. Allowed characters are a-z, A-Z, 0-9, '_' (underscore), '-' (dash), and '.' (dot)." - }, - "LastSyncCount":{ - "shape":"Long", - "location":"querystring", - "locationName":"lastSyncCount", - "documentation":"The last server sync count for this record." - }, - "NextToken":{ - "shape":"String", - "location":"querystring", - "locationName":"nextToken", - "documentation":"A pagination token for obtaining the next page of results." - }, - "MaxResults":{ - "shape":"IntegerString", - "location":"querystring", - "locationName":"maxResults", - "documentation":"The maximum number of results to be returned." - }, - "SyncSessionToken":{ - "shape":"SyncSessionToken", - "location":"querystring", - "locationName":"syncSessionToken", - "documentation":"A token containing a session ID, identity ID, and expiration." - } - }, - "documentation":"A request for a list of records." - }, - "ListRecordsResponse":{ - "type":"structure", - "members":{ - "Records":{ - "shape":"RecordList", - "documentation":"A list of all records." - }, - "NextToken":{ - "shape":"String", - "documentation":"A pagination token for obtaining the next page of results." - }, - "Count":{ - "shape":"Integer", - "documentation":"Total number of records." - }, - "DatasetSyncCount":{ - "shape":"Long", - "documentation":"Server sync count for this dataset." - }, - "LastModifiedBy":{ - "shape":"String", - "documentation":"The user/device that made the last change to this record." - }, - "MergedDatasetNames":{ - "shape":"MergedDatasetNameList", - "documentation":"Names of merged datasets." - }, - "DatasetExists":{ - "shape":"Boolean", - "documentation":"Indicates whether the dataset exists." - }, - "DatasetDeletedAfterRequestedSyncCount":{ - "shape":"Boolean", - "documentation":"A boolean value specifying whether to delete the dataset locally." - }, - "SyncSessionToken":{ - "shape":"String", - "documentation":"A token containing a session ID, identity ID, and expiration." - } - }, - "documentation":"Returned for a successful ListRecordsRequest." - }, - "Long":{"type":"long"}, - "MergedDatasetNameList":{ - "type":"list", - "member":{"shape":"String"} - }, - "NotAuthorizedException":{ - "type":"structure", - "required":["message"], - "members":{ - "message":{ - "shape":"ExceptionMessage", - "documentation":"The message returned by a NotAuthorizedException." - } - }, - "error":{ - "code":"NotAuthorizedError", - "httpStatusCode":403, - "senderFault":true - }, - "exception":true, - "documentation":"Thrown when a user is not authorized to access the requested resource." - }, - "Operation":{ - "type":"string", - "enum":[ - "replace", - "remove" - ] - }, - "Platform":{ - "type":"string", - "enum":[ - "APNS", - "APNS_SANDBOX", - "GCM", - "ADM" - ] - }, - "PushSync":{ - "type":"structure", - "members":{ - "ApplicationArns":{ - "shape":"ApplicationArnList", - "documentation":"

List of SNS platform application ARNs that could be used by clients.

" - }, - "RoleArn":{ - "shape":"AssumeRoleArn", - "documentation":"

A role configured to allow Cognito to call SNS on behalf of the developer.

" - } - }, - "documentation":"

Configuration options to be applied to the identity pool.

" - }, - "PushToken":{"type":"string"}, - "Record":{ - "type":"structure", - "members":{ - "Key":{ - "shape":"RecordKey", - "documentation":"The key for the record." - }, - "Value":{ - "shape":"RecordValue", - "documentation":"The value for the record." - }, - "SyncCount":{ - "shape":"Long", - "documentation":"The server sync count for this record." - }, - "LastModifiedDate":{ - "shape":"Date", - "documentation":"The date on which the record was last modified." - }, - "LastModifiedBy":{ - "shape":"String", - "documentation":"The user/device that made the last change to this record." - }, - "DeviceLastModifiedDate":{ - "shape":"Date", - "documentation":"The last modified date of the client device." - } - }, - "documentation":"The basic data structure of a dataset." - }, - "RecordKey":{ - "type":"string", - "min":1, - "max":1024 - }, - "RecordList":{ - "type":"list", - "member":{"shape":"Record"} - }, - "RecordPatch":{ - "type":"structure", - "required":[ - "Op", - "Key", - "SyncCount" - ], - "members":{ - "Op":{ - "shape":"Operation", - "documentation":"An operation, either replace or remove." - }, - "Key":{ - "shape":"RecordKey", - "documentation":"The key associated with the record patch." - }, - "Value":{ - "shape":"RecordValue", - "documentation":"The value associated with the record patch." - }, - "SyncCount":{ - "shape":"Long", - "documentation":"Last known server sync count for this record. Set to 0 if unknown." - }, - "DeviceLastModifiedDate":{ - "shape":"Date", - "documentation":"The last modified date of the client device." - } - }, - "documentation":"An update operation for a record." - }, - "RecordPatchList":{ - "type":"list", - "member":{"shape":"RecordPatch"} - }, - "RecordValue":{ - "type":"string", - "max":1048575 - }, - "RegisterDeviceRequest":{ - "type":"structure", - "required":[ - "IdentityPoolId", - "IdentityId", - "Platform", - "Token" - ], - "members":{ - "IdentityPoolId":{ - "shape":"IdentityPoolId", - "location":"uri", - "locationName":"IdentityPoolId", - "documentation":"

A name-spaced GUID (for example, us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito. Here, the ID of the pool that the identity belongs to.

" - }, - "IdentityId":{ - "shape":"IdentityId", - "location":"uri", - "locationName":"IdentityId", - "documentation":"

The unique ID for this identity.

" - }, - "Platform":{ - "shape":"Platform", - "documentation":"

The SNS platform type (e.g. GCM, SDM, APNS, APNS_SANDBOX).

" - }, - "Token":{ - "shape":"PushToken", - "documentation":"

The push token.

" - } - }, - "documentation":"

A request to RegisterDevice.

" - }, - "RegisterDeviceResponse":{ - "type":"structure", - "members":{ - "DeviceId":{ - "shape":"DeviceId", - "documentation":"

The unique ID generated for this device by Cognito.

" - } - }, - "documentation":"

Response to a RegisterDevice request.

" - }, - "ResourceConflictException":{ - "type":"structure", - "required":["message"], - "members":{ - "message":{ - "shape":"ExceptionMessage", - "documentation":"The message returned by a ResourceConflictException." - } - }, - "error":{ - "code":"ResourceConflict", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"Thrown if an update can't be applied because the resource was changed by another call and this would result in a conflict." - }, - "ResourceNotFoundException":{ - "type":"structure", - "required":["message"], - "members":{ - "message":{ - "shape":"ExceptionMessage", - "documentation":"Message returned by a ResourceNotFoundException." - } - }, - "error":{ - "code":"ResourceNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"Thrown if the resource doesn't exist." - }, - "SetIdentityPoolConfigurationRequest":{ - "type":"structure", - "required":["IdentityPoolId"], - "members":{ - "IdentityPoolId":{ - "shape":"IdentityPoolId", - "location":"uri", - "locationName":"IdentityPoolId", - "documentation":"

A name-spaced GUID (for example, us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito. This is the ID of the pool to modify.

" - }, - "PushSync":{ - "shape":"PushSync", - "documentation":"

Configuration options to be applied to the identity pool.

" - } - }, - "documentation":"

A request to SetIdentityPoolConfiguration.

" - }, - "SetIdentityPoolConfigurationResponse":{ - "type":"structure", - "members":{ - "IdentityPoolId":{ - "shape":"IdentityPoolId", - "documentation":"

A name-spaced GUID (for example, us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito.

" - }, - "PushSync":{ - "shape":"PushSync", - "documentation":"

Configuration options applied to the identity pool.

" - } - }, - "documentation":"

Response to a SetIdentityPoolConfiguration request.

" - }, - "String":{"type":"string"}, - "SubscribeToDatasetRequest":{ - "type":"structure", - "required":[ - "IdentityPoolId", - "IdentityId", - "DatasetName", - "DeviceId" - ], - "members":{ - "IdentityPoolId":{ - "shape":"IdentityPoolId", - "location":"uri", - "locationName":"IdentityPoolId", - "documentation":"

A name-spaced GUID (for example, us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito. The ID of the pool to which the identity belongs.

" - }, - "IdentityId":{ - "shape":"IdentityId", - "location":"uri", - "locationName":"IdentityId", - "documentation":"

Unique ID for this identity.

" - }, - "DatasetName":{ - "shape":"DatasetName", - "location":"uri", - "locationName":"DatasetName", - "documentation":"

The name of the dataset to subcribe to.

" - }, - "DeviceId":{ - "shape":"DeviceId", - "location":"uri", - "locationName":"DeviceId", - "documentation":"

The unique ID generated for this device by Cognito.

" - } - }, - "documentation":"

A request to SubscribeToDatasetRequest.

" - }, - "SubscribeToDatasetResponse":{ - "type":"structure", - "members":{ - }, - "documentation":"

Response to a SubscribeToDataset request.

" - }, - "SyncSessionToken":{"type":"string"}, - "TooManyRequestsException":{ - "type":"structure", - "required":["message"], - "members":{ - "message":{ - "shape":"ExceptionMessage", - "documentation":"Message returned by a TooManyRequestsException." - } - }, - "error":{ - "code":"TooManyRequests", - "httpStatusCode":429, - "senderFault":true - }, - "exception":true, - "documentation":"Thrown if the request is throttled." - }, - "UnsubscribeFromDatasetRequest":{ - "type":"structure", - "required":[ - "IdentityPoolId", - "IdentityId", - "DatasetName", - "DeviceId" - ], - "members":{ - "IdentityPoolId":{ - "shape":"IdentityPoolId", - "location":"uri", - "locationName":"IdentityPoolId", - "documentation":"

A name-spaced GUID (for example, us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito. The ID of the pool to which this identity belongs.

" - }, - "IdentityId":{ - "shape":"IdentityId", - "location":"uri", - "locationName":"IdentityId", - "documentation":"

Unique ID for this identity.

" - }, - "DatasetName":{ - "shape":"DatasetName", - "location":"uri", - "locationName":"DatasetName", - "documentation":"

The name of the dataset from which to unsubcribe.

" - }, - "DeviceId":{ - "shape":"DeviceId", - "location":"uri", - "locationName":"DeviceId", - "documentation":"

The unique ID generated for this device by Cognito.

" - } - }, - "documentation":"

A request to UnsubscribeFromDataset.

" - }, - "UnsubscribeFromDatasetResponse":{ - "type":"structure", - "members":{ - }, - "documentation":"

Response to an UnsubscribeFromDataset request.

" - }, - "UpdateRecordsRequest":{ - "type":"structure", - "required":[ - "IdentityPoolId", - "IdentityId", - "DatasetName", - "SyncSessionToken" - ], - "members":{ - "IdentityPoolId":{ - "shape":"IdentityPoolId", - "location":"uri", - "locationName":"IdentityPoolId", - "documentation":"A name-spaced GUID (for example, us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito. GUID generation is unique within a region." - }, - "IdentityId":{ - "shape":"IdentityId", - "location":"uri", - "locationName":"IdentityId", - "documentation":"A name-spaced GUID (for example, us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito. GUID generation is unique within a region." - }, - "DatasetName":{ - "shape":"DatasetName", - "location":"uri", - "locationName":"DatasetName", - "documentation":"A string of up to 128 characters. Allowed characters are a-z, A-Z, 0-9, '_' (underscore), '-' (dash), and '.' (dot)." - }, - "DeviceId":{ - "shape":"DeviceId", - "documentation":"

The unique ID generated for this device by Cognito.

" - }, - "RecordPatches":{ - "shape":"RecordPatchList", - "documentation":"A list of patch operations." - }, - "SyncSessionToken":{ - "shape":"SyncSessionToken", - "documentation":"The SyncSessionToken returned by a previous call to ListRecords for this dataset and identity." - }, - "ClientContext":{ - "shape":"ClientContext", - "location":"header", - "locationName":"x-amz-Client-Context", - "documentation":"Intended to supply a device ID that will populate the lastModifiedBy field referenced in other methods. The ClientContext field is not yet implemented." - } - }, - "documentation":"A request to post updates to records or add and delete records for a dataset and user." - }, - "UpdateRecordsResponse":{ - "type":"structure", - "members":{ - "Records":{ - "shape":"RecordList", - "documentation":"A list of records that have been updated." - } - }, - "documentation":"Returned for a successful UpdateRecordsRequest." - } - } -} diff --git a/src/github.com/getlantern/aws-sdk-go/apis/config/2014-11-12.normal.json b/src/github.com/getlantern/aws-sdk-go/apis/config/2014-11-12.normal.json deleted file mode 100644 index 29f0d8e3d7..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/apis/config/2014-11-12.normal.json +++ /dev/null @@ -1,1038 +0,0 @@ -{ - "metadata":{ - "apiVersion":"2014-11-12", - "endpointPrefix":"config", - "jsonVersion":"1.1", - "serviceAbbreviation":"Config Service", - "serviceFullName":"AWS Config", - "signatureVersion":"v4", - "signingName":"config", - "targetPrefix":"StarlingDoveService", - "protocol":"json" - }, - "documentation":"AWS Config

AWS Config provides a way to keep track of the configurations of all the AWS resources associated with your AWS account. You can use AWS Config to get the current and historical configurations of each AWS resource and also to get information about the relationship between the resources. An AWS resource can be an Amazon Compute Cloud (Amazon EC2) instance, an Elastic Block Store (EBS) volume, an Elastic network Interface (ENI), or a security group. For a complete list of resources currently supported by AWS Config, see Supported AWS Resources.

You can access and manage AWS Config through the AWS Management Console, the AWS Command Line Interface (AWS CLI), the AWS Config API, or the AWS SDKs for AWS Config

This reference guide contains documentation for the AWS Config API and the AWS CLI commands that you can use to manage AWS Config.

The AWS Config API uses the Signature Version 4 protocol for signing requests. For more information about how to sign a request with this protocol, see Signature Version 4 Signing Process.

For detailed information about AWS Config features and their associated actions or commands, as well as how to work with AWS Management Console, see What Is AWS Config? in the AWS Config Developer Guide.

", - "operations":{ - "DeleteDeliveryChannel":{ - "name":"DeleteDeliveryChannel", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DeleteDeliveryChannelRequest", - "documentation":"

The input for the DeleteDeliveryChannel action. The action accepts the following data in JSON format.

" - }, - "errors":[ - { - "shape":"NoSuchDeliveryChannelException", - "exception":true, - "documentation":"

You have specified a delivery channel that does not exist.

" - }, - { - "shape":"LastDeliveryChannelDeleteFailedException", - "exception":true, - "documentation":"

You cannot delete the delivery channel you specified because the configuration recorder is running.

" - } - ], - "documentation":"

Deletes the specified delivery channel.

The delivery channel cannot be deleted if it is the only delivery channel and the configuration recorder is still running. To delete the delivery channel, stop the running configuration recorder using the StopConfigurationRecorder action.

" - }, - "DeliverConfigSnapshot":{ - "name":"DeliverConfigSnapshot", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DeliverConfigSnapshotRequest", - "documentation":"

The input for the DeliverConfigSnapshot action.

" - }, - "output":{ - "shape":"DeliverConfigSnapshotResponse", - "documentation":"

The output for the DeliverConfigSnapshot action in JSON format.

" - }, - "errors":[ - { - "shape":"NoSuchDeliveryChannelException", - "exception":true, - "documentation":"

You have specified a delivery channel that does not exist.

" - }, - { - "shape":"NoAvailableConfigurationRecorderException", - "exception":true, - "documentation":"

There are no configuration recorders available to provide the role needed to describe your resources.

" - }, - { - "shape":"NoRunningConfigurationRecorderException", - "exception":true, - "documentation":"

There is no configuration recorder running.

" - } - ], - "documentation":"

Schedules delivery of a configuration snapshot to the Amazon S3 bucket in the specified delivery channel. After the delivery has started, AWS Config sends following notifications using an Amazon SNS topic that you have specified.

" - }, - "DescribeConfigurationRecorderStatus":{ - "name":"DescribeConfigurationRecorderStatus", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DescribeConfigurationRecorderStatusRequest", - "documentation":"

The input for the DescribeConfigurationRecorderStatus action.

" - }, - "output":{ - "shape":"DescribeConfigurationRecorderStatusResponse", - "documentation":"

The output for the DescribeConfigurationRecorderStatus action in JSON format.

" - }, - "errors":[ - { - "shape":"NoSuchConfigurationRecorderException", - "exception":true, - "documentation":"

You have specified a configuration recorder that does not exist.

" - } - ], - "documentation":"

Returns the current status of the specified configuration recorder. If a configuration recorder is not specified, this action returns the status of all configuration recorder associated with the account.

" - }, - "DescribeConfigurationRecorders":{ - "name":"DescribeConfigurationRecorders", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DescribeConfigurationRecordersRequest", - "documentation":"

The input for the DescribeConfigurationRecorders action.

" - }, - "output":{ - "shape":"DescribeConfigurationRecordersResponse", - "documentation":"

The output for the DescribeConfigurationRecorders action.

" - }, - "errors":[ - { - "shape":"NoSuchConfigurationRecorderException", - "exception":true, - "documentation":"

You have specified a configuration recorder that does not exist.

" - } - ], - "documentation":"

Returns the name of one or more specified configuration recorders. If the recorder name is not specified, this action returns the names of all the configuration recorders associated with the account.

" - }, - "DescribeDeliveryChannelStatus":{ - "name":"DescribeDeliveryChannelStatus", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DescribeDeliveryChannelStatusRequest", - "documentation":"

The input for the DeliveryChannelStatus action.

" - }, - "output":{ - "shape":"DescribeDeliveryChannelStatusResponse", - "documentation":"

The output for the DescribeDeliveryChannelStatus action.

" - }, - "errors":[ - { - "shape":"NoSuchDeliveryChannelException", - "exception":true, - "documentation":"

You have specified a delivery channel that does not exist.

" - } - ], - "documentation":"

Returns the current status of the specified delivery channel. If a delivery channel is not specified, this action returns the current status of all delivery channels associated with the account.

" - }, - "DescribeDeliveryChannels":{ - "name":"DescribeDeliveryChannels", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DescribeDeliveryChannelsRequest", - "documentation":"

The input for the DescribeDeliveryChannels action.

" - }, - "output":{ - "shape":"DescribeDeliveryChannelsResponse", - "documentation":"

The output for the DescribeDeliveryChannels action.

" - }, - "errors":[ - { - "shape":"NoSuchDeliveryChannelException", - "exception":true, - "documentation":"

You have specified a delivery channel that does not exist.

" - } - ], - "documentation":"

Returns details about the specified delivery channel. If a delivery channel is not specified, this action returns the details of all delivery channels associated with the account.

" - }, - "GetResourceConfigHistory":{ - "name":"GetResourceConfigHistory", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"GetResourceConfigHistoryRequest", - "documentation":"

The input for the GetResourceConfigHistory action.

" - }, - "output":{ - "shape":"GetResourceConfigHistoryResponse", - "documentation":"

The output for the GetResourceConfigHistory action.

" - }, - "errors":[ - { - "shape":"ValidationException", - "exception":true, - "documentation":"

The requested action is not valid.

" - }, - { - "shape":"InvalidTimeRangeException", - "exception":true, - "documentation":"

The specified time range is not valid. The earlier time is not chronologically before the later time.

" - }, - { - "shape":"InvalidLimitException", - "exception":true, - "documentation":"

You have reached the limit on the pagination.

" - }, - { - "shape":"InvalidNextTokenException", - "exception":true, - "documentation":"

The specified nextToken for pagination is not valid.

" - }, - { - "shape":"NoAvailableConfigurationRecorderException", - "exception":true, - "documentation":"

There are no configuration recorders available to provide the role needed to describe your resources.

" - }, - { - "shape":"ResourceNotDiscoveredException", - "exception":true, - "documentation":"

You have specified a resource that is either unknown or has not been discovered.

" - } - ], - "documentation":"

Returns a list of configuration items for the specified resource. The list contains details about each state of the resource during the specified time interval. You can specify a limit on the number of results returned on the page. If a limit is specified, a nextToken is returned as part of the result that you can use to continue this request.

" - }, - "PutConfigurationRecorder":{ - "name":"PutConfigurationRecorder", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"PutConfigurationRecorderRequest", - "documentation":"

The input for the PutConfigurationRecorder action.

" - }, - "errors":[ - { - "shape":"MaxNumberOfConfigurationRecordersExceededException", - "exception":true, - "documentation":"

You have reached the limit on the number of recorders you can create.

" - }, - { - "shape":"InvalidConfigurationRecorderNameException", - "exception":true, - "documentation":"

You have provided a configuration recorder name that is not valid.

" - }, - { - "shape":"InvalidRoleException", - "exception":true, - "documentation":"

You have provided a null or empty role ARN.

" - } - ], - "documentation":"

Creates a new configuration recorder to record the resource configurations.

You can use this action to change the role (roleARN) of an existing recorder. To change the role, call the action on the existing configuration recorder and specify a role.

" - }, - "PutDeliveryChannel":{ - "name":"PutDeliveryChannel", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"PutDeliveryChannelRequest", - "documentation":"

The input for the PutDeliveryChannel action.

" - }, - "errors":[ - { - "shape":"MaxNumberOfDeliveryChannelsExceededException", - "exception":true, - "documentation":"

You have reached the limit on the number of delivery channels you can create.

" - }, - { - "shape":"NoAvailableConfigurationRecorderException", - "exception":true, - "documentation":"

There are no configuration recorders available to provide the role needed to describe your resources.

" - }, - { - "shape":"InvalidDeliveryChannelNameException", - "exception":true, - "documentation":"

The specified delivery channel name is not valid.

" - }, - { - "shape":"NoSuchBucketException", - "exception":true, - "documentation":"

The specified Amazon S3 bucket does not exist.

" - }, - { - "shape":"InvalidS3KeyPrefixException", - "exception":true, - "documentation":"

The specified Amazon S3 key prefix is not valid.

" - }, - { - "shape":"InvalidSNSTopicARNException", - "exception":true, - "documentation":"

The specified Amazon SNS topic does not exist.

" - }, - { - "shape":"InsufficientDeliveryPolicyException", - "exception":true, - "documentation":"

Your Amazon S3 bucket policy does not permit AWS Config to write to it.

" - } - ], - "documentation":"

Creates a new delivery channel object to deliver the configuration information to an Amazon S3 bucket, and to an Amazon SNS topic.

You can use this action to change the Amazon S3 bucket or an Amazon SNS topic of the existing delivery channel. To change the Amazon S3 bucket or an Amazon SNS topic, call this action and specify the changed values for the S3 bucket and the SNS topic. If you specify a different value for either the S3 bucket or the SNS topic, this action will keep the existing value for the parameter that is not changed.

" - }, - "StartConfigurationRecorder":{ - "name":"StartConfigurationRecorder", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"StartConfigurationRecorderRequest", - "documentation":"

The input for the StartConfigurationRecorder action.

" - }, - "errors":[ - { - "shape":"NoSuchConfigurationRecorderException", - "exception":true, - "documentation":"

You have specified a configuration recorder that does not exist.

" - }, - { - "shape":"NoAvailableDeliveryChannelException", - "exception":true, - "documentation":"

There is no delivery channel available to record configurations.

" - } - ], - "documentation":"

Starts recording configurations of all the resources associated with the account.

You must have created at least one delivery channel to successfully start the configuration recorder.

" - }, - "StopConfigurationRecorder":{ - "name":"StopConfigurationRecorder", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"StopConfigurationRecorderRequest", - "documentation":"

The input for the StopConfigurationRecorder action.

" - }, - "errors":[ - { - "shape":"NoSuchConfigurationRecorderException", - "exception":true, - "documentation":"

You have specified a configuration recorder that does not exist.

" - } - ], - "documentation":"

Stops recording configurations of all the resources associated with the account.

" - } - }, - "shapes":{ - "ARN":{"type":"string"}, - "AccountId":{"type":"string"}, - "AvailabilityZone":{"type":"string"}, - "Boolean":{"type":"boolean"}, - "ChannelName":{ - "type":"string", - "min":1, - "max":256 - }, - "ChronologicalOrder":{ - "type":"string", - "enum":[ - "Reverse", - "Forward" - ] - }, - "ConfigExportDeliveryInfo":{ - "type":"structure", - "members":{ - "lastStatus":{ - "shape":"DeliveryStatus", - "documentation":"

Status of the last attempted delivery.

" - }, - "lastErrorCode":{ - "shape":"String", - "documentation":"

The error code from the last attempted delivery.

" - }, - "lastErrorMessage":{ - "shape":"String", - "documentation":"

The error message from the last attempted delivery.

" - }, - "lastAttemptTime":{ - "shape":"Date", - "documentation":"

The time of the last attempted delivery.

" - }, - "lastSuccessfulTime":{ - "shape":"Date", - "documentation":"

The time of the last successful delivery.

" - } - }, - "documentation":"

A list that contains the status of the delivery of either the snapshot or the configuration history to the specified Amazon S3 bucket.

" - }, - "ConfigStreamDeliveryInfo":{ - "type":"structure", - "members":{ - "lastStatus":{ - "shape":"DeliveryStatus", - "documentation":"

Status of the last attempted delivery.

" - }, - "lastErrorCode":{ - "shape":"String", - "documentation":"

The error code from the last attempted delivery.

" - }, - "lastErrorMessage":{ - "shape":"String", - "documentation":"

The error message from the last attempted delivery.

" - }, - "lastStatusChangeTime":{ - "shape":"Date", - "documentation":"

The time from the last status change.

" - } - }, - "documentation":"

A list that contains the status of the delivery of the configuration stream notification to the Amazon SNS topic.

" - }, - "Configuration":{"type":"string"}, - "ConfigurationItem":{ - "type":"structure", - "members":{ - "version":{ - "shape":"Version", - "documentation":"

The version number of the resource configuration.

" - }, - "accountId":{ - "shape":"AccountId", - "documentation":"

The 12 digit AWS account ID associated with the resource.

" - }, - "configurationItemCaptureTime":{ - "shape":"ConfigurationItemCaptureTime", - "documentation":"

The time when the configuration recording was initiated.

" - }, - "configurationItemStatus":{ - "shape":"ConfigurationItemStatus", - "documentation":"

The configuration item status.

" - }, - "configurationStateId":{ - "shape":"ConfigurationStateId", - "documentation":"

An identifier that indicates the ordering of the configuration items of a resource.

" - }, - "configurationItemMD5Hash":{ - "shape":"ConfigurationItemMD5Hash", - "documentation":"

Unique MD5 hash that represents the configuration item's state.

You can use MD5 hash to compare the states of two or more configuration items that are associated with the same resource.

" - }, - "arn":{ - "shape":"ARN", - "documentation":"

The Amazon Resource Name (ARN) of the resource.

" - }, - "resourceType":{ - "shape":"ResourceType", - "documentation":"

The type of AWS resource.

" - }, - "resourceId":{ - "shape":"ResourceId", - "documentation":"

The ID of the resource (for example., sg-xxxxxx).

" - }, - "availabilityZone":{ - "shape":"AvailabilityZone", - "documentation":"

The Availability Zone associated with the resource.

" - }, - "resourceCreationTime":{ - "shape":"ResourceCreationTime", - "documentation":"

The time stamp when the resource was created.

" - }, - "tags":{ - "shape":"Tags", - "documentation":"

A mapping of key value tags associated with the resource.

" - }, - "relatedEvents":{ - "shape":"RelatedEventList", - "documentation":"

A list of CloudTrail event IDs.

A populated field indicates that the current configuration was initiated by the events recorded in the CloudTrail log. For more information about CloudTrail, see What is AWS CloudTrail?.

An empty field indicates that the current configuration was not initiated by any event.

" - }, - "relationships":{ - "shape":"RelationshipList", - "documentation":"

A list of related AWS resources.

" - }, - "configuration":{ - "shape":"Configuration", - "documentation":"

The description of the resource configuration.

" - } - }, - "documentation":"

A list that contains detailed configurations of a specified resource.

" - }, - "ConfigurationItemCaptureTime":{"type":"timestamp"}, - "ConfigurationItemList":{ - "type":"list", - "member":{"shape":"ConfigurationItem"} - }, - "ConfigurationItemMD5Hash":{"type":"string"}, - "ConfigurationItemStatus":{ - "type":"string", - "enum":[ - "Ok", - "Failed", - "Discovered", - "Deleted" - ] - }, - "ConfigurationRecorder":{ - "type":"structure", - "members":{ - "name":{ - "shape":"RecorderName", - "documentation":"

The name of the recorder. By default, AWS Config automatically assigns the name \"default\" when creating the configuration recorder. You cannot change the assigned name.

" - }, - "roleARN":{ - "shape":"String", - "documentation":"

Amazon Resource Name (ARN) of the IAM role used to describe the AWS resources associated with the account.

" - } - }, - "documentation":"

An object that represents the recording of configuration changes of an AWS resource.

" - }, - "ConfigurationRecorderList":{ - "type":"list", - "member":{"shape":"ConfigurationRecorder"} - }, - "ConfigurationRecorderNameList":{ - "type":"list", - "member":{"shape":"RecorderName"} - }, - "ConfigurationRecorderStatus":{ - "type":"structure", - "members":{ - "name":{ - "shape":"String", - "documentation":"

The name of the configuration recorder.

" - }, - "lastStartTime":{ - "shape":"Date", - "documentation":"

The time the recorder was last started.

" - }, - "lastStopTime":{ - "shape":"Date", - "documentation":"

The time the recorder was last stopped.

" - }, - "recording":{ - "shape":"Boolean", - "documentation":"

Specifies whether the recorder is currently recording or not.

" - }, - "lastStatus":{ - "shape":"RecorderStatus", - "documentation":"

The last (previous) status of the recorder.

" - }, - "lastErrorCode":{ - "shape":"String", - "documentation":"

The error code indicating that the recording failed.

" - }, - "lastErrorMessage":{ - "shape":"String", - "documentation":"

The message indicating that the recording failed due to an error.

" - }, - "lastStatusChangeTime":{ - "shape":"Date", - "documentation":"

The time when the status was last changed.

" - } - }, - "documentation":"

The current status of the configuration recorder.

" - }, - "ConfigurationRecorderStatusList":{ - "type":"list", - "member":{"shape":"ConfigurationRecorderStatus"} - }, - "ConfigurationStateId":{"type":"string"}, - "Date":{"type":"timestamp"}, - "DeleteDeliveryChannelRequest":{ - "type":"structure", - "required":["DeliveryChannelName"], - "members":{ - "DeliveryChannelName":{ - "shape":"ChannelName", - "documentation":"

The name of the delivery channel to delete.

" - } - }, - "documentation":"

The input for the DeleteDeliveryChannel action. The action accepts the following data in JSON format.

" - }, - "DeliverConfigSnapshotRequest":{ - "type":"structure", - "required":["deliveryChannelName"], - "members":{ - "deliveryChannelName":{ - "shape":"ChannelName", - "documentation":"

The name of the delivery channel through which the snapshot is delivered.

" - } - }, - "documentation":"

The input for the DeliverConfigSnapshot action.

" - }, - "DeliverConfigSnapshotResponse":{ - "type":"structure", - "members":{ - "configSnapshotId":{ - "shape":"String", - "documentation":"

The ID of the snapshot that is being created.

" - } - }, - "documentation":"

The output for the DeliverConfigSnapshot action in JSON format.

" - }, - "DeliveryChannel":{ - "type":"structure", - "members":{ - "name":{ - "shape":"ChannelName", - "documentation":"

The name of the delivery channel. By default, AWS Config automatically assigns the name \"default\" when creating the delivery channel. You cannot change the assigned name.

" - }, - "s3BucketName":{ - "shape":"String", - "documentation":"

The name of the Amazon S3 bucket used to store configuration history for the delivery channel.

" - }, - "s3KeyPrefix":{ - "shape":"String", - "documentation":"

The prefix for the specified Amazon S3 bucket.

" - }, - "snsTopicARN":{ - "shape":"String", - "documentation":"

The Amazon Resource Name (ARN) of the IAM role used for accessing the Amazon S3 bucket and the Amazon SNS topic.

" - } - }, - "documentation":"

A logical container used for storing the configuration changes of an AWS resource.

" - }, - "DeliveryChannelList":{ - "type":"list", - "member":{"shape":"DeliveryChannel"} - }, - "DeliveryChannelNameList":{ - "type":"list", - "member":{"shape":"ChannelName"} - }, - "DeliveryChannelStatus":{ - "type":"structure", - "members":{ - "name":{ - "shape":"String", - "documentation":"

The name of the delivery channel.

" - }, - "configSnapshotDeliveryInfo":{ - "shape":"ConfigExportDeliveryInfo", - "documentation":"

A list containing the status of the delivery of the snapshot to the specified Amazon S3 bucket.

" - }, - "configHistoryDeliveryInfo":{ - "shape":"ConfigExportDeliveryInfo", - "documentation":"

A list that contains the status of the delivery of the configuration history to the specified Amazon S3 bucket.

" - }, - "configStreamDeliveryInfo":{ - "shape":"ConfigStreamDeliveryInfo", - "documentation":"

A list containing the status of the delivery of the configuration stream notification to the specified Amazon SNS topic.

" - } - }, - "documentation":"

The status of a specified delivery channel.

Valid values: Success | Failure

" - }, - "DeliveryChannelStatusList":{ - "type":"list", - "member":{"shape":"DeliveryChannelStatus"} - }, - "DeliveryStatus":{ - "type":"string", - "enum":[ - "Success", - "Failure" - ] - }, - "DescribeConfigurationRecorderStatusRequest":{ - "type":"structure", - "members":{ - "ConfigurationRecorderNames":{ - "shape":"ConfigurationRecorderNameList", - "documentation":"

The name(s) of the configuration recorder. If the name is not specified, the action returns the current status of all the configuration recorders associated with the account.

" - } - }, - "documentation":"

The input for the DescribeConfigurationRecorderStatus action.

" - }, - "DescribeConfigurationRecorderStatusResponse":{ - "type":"structure", - "members":{ - "ConfigurationRecordersStatus":{ - "shape":"ConfigurationRecorderStatusList", - "documentation":"

A list that contains status of the specified recorders.

" - } - }, - "documentation":"

The output for the DescribeConfigurationRecorderStatus action in JSON format.

" - }, - "DescribeConfigurationRecordersRequest":{ - "type":"structure", - "members":{ - "ConfigurationRecorderNames":{ - "shape":"ConfigurationRecorderNameList", - "documentation":"

A list of configuration recorder names.

" - } - }, - "documentation":"

The input for the DescribeConfigurationRecorders action.

" - }, - "DescribeConfigurationRecordersResponse":{ - "type":"structure", - "members":{ - "ConfigurationRecorders":{ - "shape":"ConfigurationRecorderList", - "documentation":"

A list that contains the descriptions of the specified configuration recorders.

" - } - }, - "documentation":"

The output for the DescribeConfigurationRecorders action.

" - }, - "DescribeDeliveryChannelStatusRequest":{ - "type":"structure", - "members":{ - "DeliveryChannelNames":{ - "shape":"DeliveryChannelNameList", - "documentation":"

A list of delivery channel names.

" - } - }, - "documentation":"

The input for the DeliveryChannelStatus action.

" - }, - "DescribeDeliveryChannelStatusResponse":{ - "type":"structure", - "members":{ - "DeliveryChannelsStatus":{ - "shape":"DeliveryChannelStatusList", - "documentation":"

A list that contains the status of a specified delivery channel.

" - } - }, - "documentation":"

The output for the DescribeDeliveryChannelStatus action.

" - }, - "DescribeDeliveryChannelsRequest":{ - "type":"structure", - "members":{ - "DeliveryChannelNames":{ - "shape":"DeliveryChannelNameList", - "documentation":"

A list of delivery channel names.

" - } - }, - "documentation":"

The input for the DescribeDeliveryChannels action.

" - }, - "DescribeDeliveryChannelsResponse":{ - "type":"structure", - "members":{ - "DeliveryChannels":{ - "shape":"DeliveryChannelList", - "documentation":"

A list that contains the descriptions of the specified delivery channel.

" - } - }, - "documentation":"

The output for the DescribeDeliveryChannels action.

" - }, - "EarlierTime":{"type":"timestamp"}, - "GetResourceConfigHistoryRequest":{ - "type":"structure", - "required":[ - "resourceType", - "resourceId" - ], - "members":{ - "resourceType":{ - "shape":"ResourceType", - "documentation":"

The resource type.

" - }, - "resourceId":{ - "shape":"ResourceId", - "documentation":"

The ID of the resource (for example., sg-xxxxxx).

" - }, - "laterTime":{ - "shape":"LaterTime", - "documentation":"

The time stamp that indicates a later time. If not specified, current time is taken.

" - }, - "earlierTime":{ - "shape":"EarlierTime", - "documentation":"

The time stamp that indicates an earlier time. If not specified, the action returns paginated results that contain configuration items that start from when the first configuration item was recorded.

" - }, - "chronologicalOrder":{ - "shape":"ChronologicalOrder", - "documentation":"

The chronological order for configuration items listed. By default the results are listed in reverse chronological order.

" - }, - "limit":{ - "shape":"Limit", - "documentation":"

The maximum number of configuration items returned in each page. The default is 10. You cannot specify a limit greater than 100.

" - }, - "nextToken":{ - "shape":"NextToken", - "documentation":"

An optional parameter used for pagination of the results.

" - } - }, - "documentation":"

The input for the GetResourceConfigHistory action.

" - }, - "GetResourceConfigHistoryResponse":{ - "type":"structure", - "members":{ - "configurationItems":{ - "shape":"ConfigurationItemList", - "documentation":"

A list that contains the configuration history of one or more resources.

" - }, - "nextToken":{ - "shape":"NextToken", - "documentation":"

A token used for pagination of results.

" - } - }, - "documentation":"

The output for the GetResourceConfigHistory action.

" - }, - "InsufficientDeliveryPolicyException":{ - "type":"structure", - "members":{ - }, - "exception":true, - "documentation":"

Your Amazon S3 bucket policy does not permit AWS Config to write to it.

" - }, - "InvalidConfigurationRecorderNameException":{ - "type":"structure", - "members":{ - }, - "exception":true, - "documentation":"

You have provided a configuration recorder name that is not valid.

" - }, - "InvalidDeliveryChannelNameException":{ - "type":"structure", - "members":{ - }, - "exception":true, - "documentation":"

The specified delivery channel name is not valid.

" - }, - "InvalidLimitException":{ - "type":"structure", - "members":{ - }, - "exception":true, - "documentation":"

You have reached the limit on the pagination.

" - }, - "InvalidNextTokenException":{ - "type":"structure", - "members":{ - }, - "exception":true, - "documentation":"

The specified nextToken for pagination is not valid.

" - }, - "InvalidRoleException":{ - "type":"structure", - "members":{ - }, - "exception":true, - "documentation":"

You have provided a null or empty role ARN.

" - }, - "InvalidS3KeyPrefixException":{ - "type":"structure", - "members":{ - }, - "exception":true, - "documentation":"

The specified Amazon S3 key prefix is not valid.

" - }, - "InvalidSNSTopicARNException":{ - "type":"structure", - "members":{ - }, - "exception":true, - "documentation":"

The specified Amazon SNS topic does not exist.

" - }, - "InvalidTimeRangeException":{ - "type":"structure", - "members":{ - }, - "exception":true, - "documentation":"

The specified time range is not valid. The earlier time is not chronologically before the later time.

" - }, - "LastDeliveryChannelDeleteFailedException":{ - "type":"structure", - "members":{ - }, - "exception":true, - "documentation":"

You cannot delete the delivery channel you specified because the configuration recorder is running.

" - }, - "LaterTime":{"type":"timestamp"}, - "Limit":{ - "type":"integer", - "min":0, - "max":100 - }, - "MaxNumberOfConfigurationRecordersExceededException":{ - "type":"structure", - "members":{ - }, - "exception":true, - "documentation":"

You have reached the limit on the number of recorders you can create.

" - }, - "MaxNumberOfDeliveryChannelsExceededException":{ - "type":"structure", - "members":{ - }, - "exception":true, - "documentation":"

You have reached the limit on the number of delivery channels you can create.

" - }, - "Name":{"type":"string"}, - "NextToken":{"type":"string"}, - "NoAvailableConfigurationRecorderException":{ - "type":"structure", - "members":{ - }, - "exception":true, - "documentation":"

There are no configuration recorders available to provide the role needed to describe your resources.

" - }, - "NoAvailableDeliveryChannelException":{ - "type":"structure", - "members":{ - }, - "exception":true, - "documentation":"

There is no delivery channel available to record configurations.

" - }, - "NoRunningConfigurationRecorderException":{ - "type":"structure", - "members":{ - }, - "exception":true, - "documentation":"

There is no configuration recorder running.

" - }, - "NoSuchBucketException":{ - "type":"structure", - "members":{ - }, - "exception":true, - "documentation":"

The specified Amazon S3 bucket does not exist.

" - }, - "NoSuchConfigurationRecorderException":{ - "type":"structure", - "members":{ - }, - "exception":true, - "documentation":"

You have specified a configuration recorder that does not exist.

" - }, - "NoSuchDeliveryChannelException":{ - "type":"structure", - "members":{ - }, - "exception":true, - "documentation":"

You have specified a delivery channel that does not exist.

" - }, - "PutConfigurationRecorderRequest":{ - "type":"structure", - "required":["ConfigurationRecorder"], - "members":{ - "ConfigurationRecorder":{ - "shape":"ConfigurationRecorder", - "documentation":"

The configuration recorder object that records each configuration change made to the resources.

" - } - }, - "documentation":"

The input for the PutConfigurationRecorder action.

" - }, - "PutDeliveryChannelRequest":{ - "type":"structure", - "required":["DeliveryChannel"], - "members":{ - "DeliveryChannel":{ - "shape":"DeliveryChannel", - "documentation":"

The configuration delivery channel object that delivers the configuration information to an Amazon S3 bucket, and to an Amazon SNS topic.

" - } - }, - "documentation":"

The input for the PutDeliveryChannel action.

" - }, - "RecorderName":{ - "type":"string", - "min":1, - "max":256 - }, - "RecorderStatus":{ - "type":"string", - "enum":[ - "Pending", - "Success", - "Failure" - ] - }, - "RelatedEvent":{"type":"string"}, - "RelatedEventList":{ - "type":"list", - "member":{"shape":"RelatedEvent"} - }, - "Relationship":{ - "type":"structure", - "members":{ - "resourceType":{ - "shape":"ResourceType", - "documentation":"

The resource type of the related resource.

" - }, - "resourceId":{ - "shape":"ResourceId", - "documentation":"

The resource ID of the related resource (for example, sg-xxxxxx.

" - }, - "relationshipName":{ - "shape":"RelationshipName", - "documentation":"

The name of the related resource.

" - } - }, - "documentation":"

The relationship of the related resource to the main resource.

" - }, - "RelationshipList":{ - "type":"list", - "member":{"shape":"Relationship"} - }, - "RelationshipName":{"type":"string"}, - "ResourceCreationTime":{"type":"timestamp"}, - "ResourceId":{"type":"string"}, - "ResourceNotDiscoveredException":{ - "type":"structure", - "members":{ - }, - "exception":true, - "documentation":"

You have specified a resource that is either unknown or has not been discovered.

" - }, - "ResourceType":{ - "type":"string", - "enum":[ - "AWS::EC2::CustomerGateway", - "AWS::EC2::EIP", - "AWS::EC2::Instance", - "AWS::EC2::InternetGateway", - "AWS::EC2::NetworkAcl", - "AWS::EC2::NetworkInterface", - "AWS::EC2::RouteTable", - "AWS::EC2::SecurityGroup", - "AWS::EC2::Subnet", - "AWS::CloudTrail::Trail", - "AWS::EC2::Volume", - "AWS::EC2::VPC", - "AWS::EC2::VPNConnection", - "AWS::EC2::VPNGateway" - ] - }, - "StartConfigurationRecorderRequest":{ - "type":"structure", - "required":["ConfigurationRecorderName"], - "members":{ - "ConfigurationRecorderName":{ - "shape":"RecorderName", - "documentation":"

The name of the recorder object that records each configuration change made to the resources.

" - } - }, - "documentation":"

The input for the StartConfigurationRecorder action.

" - }, - "StopConfigurationRecorderRequest":{ - "type":"structure", - "required":["ConfigurationRecorderName"], - "members":{ - "ConfigurationRecorderName":{ - "shape":"RecorderName", - "documentation":"

The name of the recorder object that records each configuration change made to the resources.

" - } - }, - "documentation":"

The input for the StopConfigurationRecorder action.

" - }, - "String":{"type":"string"}, - "Tags":{ - "type":"map", - "key":{"shape":"Name"}, - "value":{"shape":"Value"} - }, - "ValidationException":{ - "type":"structure", - "members":{ - }, - "exception":true, - "documentation":"

The requested action is not valid.

" - }, - "Value":{"type":"string"}, - "Version":{"type":"string"} - } -} diff --git a/src/github.com/getlantern/aws-sdk-go/apis/datapipeline/2012-10-29.normal.json b/src/github.com/getlantern/aws-sdk-go/apis/datapipeline/2012-10-29.normal.json deleted file mode 100644 index 8e77638277..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/apis/datapipeline/2012-10-29.normal.json +++ /dev/null @@ -1,1542 +0,0 @@ -{ - "metadata":{ - "apiVersion":"2012-10-29", - "endpointPrefix":"datapipeline", - "jsonVersion":"1.1", - "serviceFullName":"AWS Data Pipeline", - "signatureVersion":"v4", - "targetPrefix":"DataPipeline", - "protocol":"json" - }, - "documentation":"

AWS Data Pipeline is a web service that configures and manages a data-driven workflow called a pipeline. AWS Data Pipeline handles the details of scheduling and ensuring that data dependencies are met so your application can focus on processing the data.

The AWS Data Pipeline SDKs and CLI implements two main sets of functionality. The first set of actions configure the pipeline in the web service. You perform these actions to create a pipeline and define data sources, schedules, dependencies, and the transforms to be performed on the data.

The second set of actions are used by a task runner application that calls the AWS Data Pipeline API to receive the next task ready for processing. The logic for performing the task, such as querying the data, running data analysis, or converting the data from one format to another, is contained within the task runner. The task runner performs the task assigned to it by the web service, reporting progress to the web service as it does so. When the task is done, the task runner reports the final success or failure of the task to the web service.

AWS Data Pipeline provides a JAR implementation of a task runner called AWS Data Pipeline Task Runner. AWS Data Pipeline Task Runner provides logic for common data management scenarios, such as performing database queries and running data analysis using Amazon Elastic MapReduce (Amazon EMR). You can use AWS Data Pipeline Task Runner as your task runner, or you can write your own task runner to provide custom data management.

", - "operations":{ - "ActivatePipeline":{ - "name":"ActivatePipeline", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"ActivatePipelineInput", - "documentation":"

The input of the ActivatePipeline action.

" - }, - "output":{ - "shape":"ActivatePipelineOutput", - "documentation":"

Contains the output from the ActivatePipeline action.

" - }, - "errors":[ - { - "shape":"PipelineNotFoundException", - "exception":true, - "documentation":"

The specified pipeline was not found. Verify that you used the correct user and account identifiers.

" - }, - { - "shape":"PipelineDeletedException", - "exception":true, - "documentation":"

The specified pipeline has been deleted.

" - }, - { - "shape":"InternalServiceError", - "exception":true, - "fault":true, - "documentation":"

An internal service error occurred.

" - }, - { - "shape":"InvalidRequestException", - "exception":true, - "documentation":"

The request was not valid. Verify that your request was properly formatted, that the signature was generated with the correct credentials, and that you haven't exceeded any of the service limits for your account.

" - } - ], - "documentation":"

Validates a pipeline and initiates processing. If the pipeline does not pass validation, activation fails. You cannot perform this operation on FINISHED pipelines and attempting to do so will return an InvalidRequestException.

Call this action to start processing pipeline tasks of a pipeline you've created using the CreatePipeline and PutPipelineDefinition actions. A pipeline cannot be modified after it has been successfully activated.

" - }, - "CreatePipeline":{ - "name":"CreatePipeline", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"CreatePipelineInput", - "documentation":"

The input for the CreatePipeline action.

" - }, - "output":{ - "shape":"CreatePipelineOutput", - "documentation":"

Contains the output from the CreatePipeline action.

" - }, - "errors":[ - { - "shape":"InternalServiceError", - "exception":true, - "fault":true, - "documentation":"

An internal service error occurred.

" - }, - { - "shape":"InvalidRequestException", - "exception":true, - "documentation":"

The request was not valid. Verify that your request was properly formatted, that the signature was generated with the correct credentials, and that you haven't exceeded any of the service limits for your account.

" - } - ], - "documentation":"

Creates a new empty pipeline. When this action succeeds, you can then use the PutPipelineDefinition action to populate the pipeline.

" - }, - "DeletePipeline":{ - "name":"DeletePipeline", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DeletePipelineInput", - "documentation":"

The input for the DeletePipeline action.

" - }, - "errors":[ - { - "shape":"PipelineNotFoundException", - "exception":true, - "documentation":"

The specified pipeline was not found. Verify that you used the correct user and account identifiers.

" - }, - { - "shape":"InternalServiceError", - "exception":true, - "fault":true, - "documentation":"

An internal service error occurred.

" - }, - { - "shape":"InvalidRequestException", - "exception":true, - "documentation":"

The request was not valid. Verify that your request was properly formatted, that the signature was generated with the correct credentials, and that you haven't exceeded any of the service limits for your account.

" - } - ], - "documentation":"

Permanently deletes a pipeline, its pipeline definition and its run history. You cannot query or restore a deleted pipeline. AWS Data Pipeline will attempt to cancel instances associated with the pipeline that are currently being processed by task runners. Deleting a pipeline cannot be undone.

To temporarily pause a pipeline instead of deleting it, call SetStatus with the status set to Pause on individual components. Components that are paused by SetStatus can be resumed.

" - }, - "DescribeObjects":{ - "name":"DescribeObjects", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DescribeObjectsInput", - "documentation":"

The DescribeObjects action returns the object definitions for a specified set of object identifiers. You can filter the results to named fields and used markers to page through the results.

" - }, - "output":{ - "shape":"DescribeObjectsOutput", - "documentation":"

If True, there are more results that can be returned in another call to DescribeObjects.

" - }, - "errors":[ - { - "shape":"InternalServiceError", - "exception":true, - "fault":true, - "documentation":"

An internal service error occurred.

" - }, - { - "shape":"InvalidRequestException", - "exception":true, - "documentation":"

The request was not valid. Verify that your request was properly formatted, that the signature was generated with the correct credentials, and that you haven't exceeded any of the service limits for your account.

" - }, - { - "shape":"PipelineNotFoundException", - "exception":true, - "documentation":"

The specified pipeline was not found. Verify that you used the correct user and account identifiers.

" - }, - { - "shape":"PipelineDeletedException", - "exception":true, - "documentation":"

The specified pipeline has been deleted.

" - } - ], - "documentation":"

Returns the object definitions for a set of objects associated with the pipeline. Object definitions are composed of a set of fields that define the properties of the object.

" - }, - "DescribePipelines":{ - "name":"DescribePipelines", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DescribePipelinesInput", - "documentation":"

The input to the DescribePipelines action.

" - }, - "output":{ - "shape":"DescribePipelinesOutput", - "documentation":"

Contains the output from the DescribePipelines action.

" - }, - "errors":[ - { - "shape":"PipelineNotFoundException", - "exception":true, - "documentation":"

The specified pipeline was not found. Verify that you used the correct user and account identifiers.

" - }, - { - "shape":"PipelineDeletedException", - "exception":true, - "documentation":"

The specified pipeline has been deleted.

" - }, - { - "shape":"InternalServiceError", - "exception":true, - "fault":true, - "documentation":"

An internal service error occurred.

" - }, - { - "shape":"InvalidRequestException", - "exception":true, - "documentation":"

The request was not valid. Verify that your request was properly formatted, that the signature was generated with the correct credentials, and that you haven't exceeded any of the service limits for your account.

" - } - ], - "documentation":"

Retrieve metadata about one or more pipelines. The information retrieved includes the name of the pipeline, the pipeline identifier, its current state, and the user account that owns the pipeline. Using account credentials, you can retrieve metadata about pipelines that you or your IAM users have created. If you are using an IAM user account, you can retrieve metadata about only those pipelines you have read permission for.

To retrieve the full pipeline definition instead of metadata about the pipeline, call the GetPipelineDefinition action.

" - }, - "EvaluateExpression":{ - "name":"EvaluateExpression", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"EvaluateExpressionInput", - "documentation":"

The input for the EvaluateExpression action.

" - }, - "output":{ - "shape":"EvaluateExpressionOutput", - "documentation":"

Contains the output from the EvaluateExpression action.

" - }, - "errors":[ - { - "shape":"InternalServiceError", - "exception":true, - "fault":true, - "documentation":"

An internal service error occurred.

" - }, - { - "shape":"TaskNotFoundException", - "exception":true, - "documentation":"

The specified task was not found.

" - }, - { - "shape":"InvalidRequestException", - "exception":true, - "documentation":"

The request was not valid. Verify that your request was properly formatted, that the signature was generated with the correct credentials, and that you haven't exceeded any of the service limits for your account.

" - }, - { - "shape":"PipelineNotFoundException", - "exception":true, - "documentation":"

The specified pipeline was not found. Verify that you used the correct user and account identifiers.

" - }, - { - "shape":"PipelineDeletedException", - "exception":true, - "documentation":"

The specified pipeline has been deleted.

" - } - ], - "documentation":"

Evaluates a string in the context of a specified object. A task runner can use this action to evaluate SQL queries stored in Amazon S3.

" - }, - "GetPipelineDefinition":{ - "name":"GetPipelineDefinition", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"GetPipelineDefinitionInput", - "documentation":"

The input for the GetPipelineDefinition action.

" - }, - "output":{ - "shape":"GetPipelineDefinitionOutput", - "documentation":"

Contains the output from the GetPipelineDefinition action.

" - }, - "errors":[ - { - "shape":"InternalServiceError", - "exception":true, - "fault":true, - "documentation":"

An internal service error occurred.

" - }, - { - "shape":"InvalidRequestException", - "exception":true, - "documentation":"

The request was not valid. Verify that your request was properly formatted, that the signature was generated with the correct credentials, and that you haven't exceeded any of the service limits for your account.

" - }, - { - "shape":"PipelineNotFoundException", - "exception":true, - "documentation":"

The specified pipeline was not found. Verify that you used the correct user and account identifiers.

" - }, - { - "shape":"PipelineDeletedException", - "exception":true, - "documentation":"

The specified pipeline has been deleted.

" - } - ], - "documentation":"

Returns the definition of the specified pipeline. You can call GetPipelineDefinition to retrieve the pipeline definition you provided using PutPipelineDefinition.

" - }, - "ListPipelines":{ - "name":"ListPipelines", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"ListPipelinesInput", - "documentation":"

The input to the ListPipelines action.

" - }, - "output":{ - "shape":"ListPipelinesOutput", - "documentation":"

Contains the output from the ListPipelines action.

" - }, - "errors":[ - { - "shape":"InternalServiceError", - "exception":true, - "fault":true, - "documentation":"

An internal service error occurred.

" - }, - { - "shape":"InvalidRequestException", - "exception":true, - "documentation":"

The request was not valid. Verify that your request was properly formatted, that the signature was generated with the correct credentials, and that you haven't exceeded any of the service limits for your account.

" - } - ], - "documentation":"

Returns a list of pipeline identifiers for all active pipelines. Identifiers are returned only for pipelines you have permission to access.

" - }, - "PollForTask":{ - "name":"PollForTask", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"PollForTaskInput", - "documentation":"

The data type passed in as input to the PollForTask action.

" - }, - "output":{ - "shape":"PollForTaskOutput", - "documentation":"

Contains the output from the PollForTask action.

" - }, - "errors":[ - { - "shape":"InternalServiceError", - "exception":true, - "fault":true, - "documentation":"

An internal service error occurred.

" - }, - { - "shape":"InvalidRequestException", - "exception":true, - "documentation":"

The request was not valid. Verify that your request was properly formatted, that the signature was generated with the correct credentials, and that you haven't exceeded any of the service limits for your account.

" - }, - { - "shape":"TaskNotFoundException", - "exception":true, - "documentation":"

The specified task was not found.

" - } - ], - "documentation":"

Task runners call this action to receive a task to perform from AWS Data Pipeline. The task runner specifies which tasks it can perform by setting a value for the workerGroup parameter of the PollForTask call. The task returned by PollForTask may come from any of the pipelines that match the workerGroup value passed in by the task runner and that was launched using the IAM user credentials specified by the task runner.

If tasks are ready in the work queue, PollForTask returns a response immediately. If no tasks are available in the queue, PollForTask uses long-polling and holds on to a poll connection for up to a 90 seconds during which time the first newly scheduled task is handed to the task runner. To accomodate this, set the socket timeout in your task runner to 90 seconds. The task runner should not call PollForTask again on the same workerGroup until it receives a response, and this may take up to 90 seconds.

" - }, - "PutPipelineDefinition":{ - "name":"PutPipelineDefinition", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"PutPipelineDefinitionInput", - "documentation":"

The input of the PutPipelineDefinition action.

" - }, - "output":{ - "shape":"PutPipelineDefinitionOutput", - "documentation":"

Contains the output of the PutPipelineDefinition action.

" - }, - "errors":[ - { - "shape":"InternalServiceError", - "exception":true, - "fault":true, - "documentation":"

An internal service error occurred.

" - }, - { - "shape":"InvalidRequestException", - "exception":true, - "documentation":"

The request was not valid. Verify that your request was properly formatted, that the signature was generated with the correct credentials, and that you haven't exceeded any of the service limits for your account.

" - }, - { - "shape":"PipelineNotFoundException", - "exception":true, - "documentation":"

The specified pipeline was not found. Verify that you used the correct user and account identifiers.

" - }, - { - "shape":"PipelineDeletedException", - "exception":true, - "documentation":"

The specified pipeline has been deleted.

" - } - ], - "documentation":"

Adds tasks, schedules, and preconditions that control the behavior of the pipeline. You can use PutPipelineDefinition to populate a new pipeline.

PutPipelineDefinition also validates the configuration as it adds it to the pipeline. Changes to the pipeline are saved unless one of the following three validation errors exists in the pipeline.

  1. An object is missing a name or identifier field.
  2. A string or reference field is empty.
  3. The number of objects in the pipeline exceeds the maximum allowed objects.
  4. The pipeline is in a FINISHED state.

Pipeline object definitions are passed to the PutPipelineDefinition action and returned by the GetPipelineDefinition action.

" - }, - "QueryObjects":{ - "name":"QueryObjects", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"QueryObjectsInput", - "documentation":"

The input for the QueryObjects action.

" - }, - "output":{ - "shape":"QueryObjectsOutput", - "documentation":"

Contains the output from the QueryObjects action.

" - }, - "errors":[ - { - "shape":"PipelineNotFoundException", - "exception":true, - "documentation":"

The specified pipeline was not found. Verify that you used the correct user and account identifiers.

" - }, - { - "shape":"PipelineDeletedException", - "exception":true, - "documentation":"

The specified pipeline has been deleted.

" - }, - { - "shape":"InternalServiceError", - "exception":true, - "fault":true, - "documentation":"

An internal service error occurred.

" - }, - { - "shape":"InvalidRequestException", - "exception":true, - "documentation":"

The request was not valid. Verify that your request was properly formatted, that the signature was generated with the correct credentials, and that you haven't exceeded any of the service limits for your account.

" - } - ], - "documentation":"

Queries a pipeline for the names of objects that match a specified set of conditions.

The objects returned by QueryObjects are paginated and then filtered by the value you set for query. This means the action may return an empty result set with a value set for marker. If HasMoreResults is set to True, you should continue to call QueryObjects, passing in the returned value for marker, until HasMoreResults returns False.

" - }, - "ReportTaskProgress":{ - "name":"ReportTaskProgress", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"ReportTaskProgressInput", - "documentation":"

The input for the ReportTaskProgress action.

" - }, - "output":{ - "shape":"ReportTaskProgressOutput", - "documentation":"

Contains the output from the ReportTaskProgress action.

" - }, - "errors":[ - { - "shape":"InternalServiceError", - "exception":true, - "fault":true, - "documentation":"

An internal service error occurred.

" - }, - { - "shape":"InvalidRequestException", - "exception":true, - "documentation":"

The request was not valid. Verify that your request was properly formatted, that the signature was generated with the correct credentials, and that you haven't exceeded any of the service limits for your account.

" - }, - { - "shape":"TaskNotFoundException", - "exception":true, - "documentation":"

The specified task was not found.

" - }, - { - "shape":"PipelineNotFoundException", - "exception":true, - "documentation":"

The specified pipeline was not found. Verify that you used the correct user and account identifiers.

" - }, - { - "shape":"PipelineDeletedException", - "exception":true, - "documentation":"

The specified pipeline has been deleted.

" - } - ], - "documentation":"

Updates the AWS Data Pipeline service on the progress of the calling task runner. When the task runner is assigned a task, it should call ReportTaskProgress to acknowledge that it has the task within 2 minutes. If the web service does not recieve this acknowledgement within the 2 minute window, it will assign the task in a subsequent PollForTask call. After this initial acknowledgement, the task runner only needs to report progress every 15 minutes to maintain its ownership of the task. You can change this reporting time from 15 minutes by specifying a reportProgressTimeout field in your pipeline. If a task runner does not report its status after 5 minutes, AWS Data Pipeline will assume that the task runner is unable to process the task and will reassign the task in a subsequent response to PollForTask. task runners should call ReportTaskProgress every 60 seconds.

" - }, - "ReportTaskRunnerHeartbeat":{ - "name":"ReportTaskRunnerHeartbeat", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"ReportTaskRunnerHeartbeatInput", - "documentation":"

The input for the ReportTaskRunnerHeartbeat action.

" - }, - "output":{ - "shape":"ReportTaskRunnerHeartbeatOutput", - "documentation":"

Contains the output from the ReportTaskRunnerHeartbeat action.

" - }, - "errors":[ - { - "shape":"InternalServiceError", - "exception":true, - "fault":true, - "documentation":"

An internal service error occurred.

" - }, - { - "shape":"InvalidRequestException", - "exception":true, - "documentation":"

The request was not valid. Verify that your request was properly formatted, that the signature was generated with the correct credentials, and that you haven't exceeded any of the service limits for your account.

" - } - ], - "documentation":"

Task runners call ReportTaskRunnerHeartbeat every 15 minutes to indicate that they are operational. In the case of AWS Data Pipeline Task Runner launched on a resource managed by AWS Data Pipeline, the web service can use this call to detect when the task runner application has failed and restart a new instance.

" - }, - "SetStatus":{ - "name":"SetStatus", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"SetStatusInput", - "documentation":"

The input to the SetStatus action.

" - }, - "errors":[ - { - "shape":"PipelineNotFoundException", - "exception":true, - "documentation":"

The specified pipeline was not found. Verify that you used the correct user and account identifiers.

" - }, - { - "shape":"PipelineDeletedException", - "exception":true, - "documentation":"

The specified pipeline has been deleted.

" - }, - { - "shape":"InternalServiceError", - "exception":true, - "fault":true, - "documentation":"

An internal service error occurred.

" - }, - { - "shape":"InvalidRequestException", - "exception":true, - "documentation":"

The request was not valid. Verify that your request was properly formatted, that the signature was generated with the correct credentials, and that you haven't exceeded any of the service limits for your account.

" - } - ], - "documentation":"

Requests that the status of an array of physical or logical pipeline objects be updated in the pipeline. This update may not occur immediately, but is eventually consistent. The status that can be set depends on the type of object, e.g. DataNode or Activity. You cannot perform this operation on FINISHED pipelines and attempting to do so will return an InvalidRequestException.

" - }, - "SetTaskStatus":{ - "name":"SetTaskStatus", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"SetTaskStatusInput", - "documentation":"

The input of the SetTaskStatus action.

" - }, - "output":{ - "shape":"SetTaskStatusOutput", - "documentation":"

The output from the SetTaskStatus action.

" - }, - "errors":[ - { - "shape":"InternalServiceError", - "exception":true, - "fault":true, - "documentation":"

An internal service error occurred.

" - }, - { - "shape":"TaskNotFoundException", - "exception":true, - "documentation":"

The specified task was not found.

" - }, - { - "shape":"InvalidRequestException", - "exception":true, - "documentation":"

The request was not valid. Verify that your request was properly formatted, that the signature was generated with the correct credentials, and that you haven't exceeded any of the service limits for your account.

" - }, - { - "shape":"PipelineNotFoundException", - "exception":true, - "documentation":"

The specified pipeline was not found. Verify that you used the correct user and account identifiers.

" - }, - { - "shape":"PipelineDeletedException", - "exception":true, - "documentation":"

The specified pipeline has been deleted.

" - } - ], - "documentation":"

Notifies AWS Data Pipeline that a task is completed and provides information about the final status. The task runner calls this action regardless of whether the task was sucessful. The task runner does not need to call SetTaskStatus for tasks that are canceled by the web service during a call to ReportTaskProgress.

" - }, - "ValidatePipelineDefinition":{ - "name":"ValidatePipelineDefinition", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"ValidatePipelineDefinitionInput", - "documentation":"

The input of the ValidatePipelineDefinition action.

" - }, - "output":{ - "shape":"ValidatePipelineDefinitionOutput", - "documentation":"

Contains the output from the ValidatePipelineDefinition action.

" - }, - "errors":[ - { - "shape":"InternalServiceError", - "exception":true, - "fault":true, - "documentation":"

An internal service error occurred.

" - }, - { - "shape":"InvalidRequestException", - "exception":true, - "documentation":"

The request was not valid. Verify that your request was properly formatted, that the signature was generated with the correct credentials, and that you haven't exceeded any of the service limits for your account.

" - }, - { - "shape":"PipelineNotFoundException", - "exception":true, - "documentation":"

The specified pipeline was not found. Verify that you used the correct user and account identifiers.

" - }, - { - "shape":"PipelineDeletedException", - "exception":true, - "documentation":"

The specified pipeline has been deleted.

" - } - ], - "documentation":"

Tests the pipeline definition with a set of validation checks to ensure that it is well formed and can run without error.

" - } - }, - "shapes":{ - "ActivatePipelineInput":{ - "type":"structure", - "required":["pipelineId"], - "members":{ - "pipelineId":{ - "shape":"id", - "documentation":"

The identifier of the pipeline to activate.

" - }, - "parameterValues":{ - "shape":"ParameterValueList", - "documentation":"

Returns a list of parameter values to pass to the pipeline at activation.

" - } - }, - "documentation":"

The input of the ActivatePipeline action.

" - }, - "ActivatePipelineOutput":{ - "type":"structure", - "members":{ - }, - "documentation":"

Contains the output from the ActivatePipeline action.

" - }, - "CreatePipelineInput":{ - "type":"structure", - "required":[ - "name", - "uniqueId" - ], - "members":{ - "name":{ - "shape":"id", - "documentation":"

The name of the new pipeline. You can use the same name for multiple pipelines associated with your AWS account, because AWS Data Pipeline assigns each new pipeline a unique pipeline identifier.

" - }, - "uniqueId":{ - "shape":"id", - "documentation":"

A unique identifier that you specify. This identifier is not the same as the pipeline identifier assigned by AWS Data Pipeline. You are responsible for defining the format and ensuring the uniqueness of this identifier. You use this parameter to ensure idempotency during repeated calls to CreatePipeline. For example, if the first call to CreatePipeline does not return a clear success, you can pass in the same unique identifier and pipeline name combination on a subsequent call to CreatePipeline. CreatePipeline ensures that if a pipeline already exists with the same name and unique identifier, a new pipeline will not be created. Instead, you'll receive the pipeline identifier from the previous attempt. The uniqueness of the name and unique identifier combination is scoped to the AWS account or IAM user credentials.

" - }, - "description":{ - "shape":"string", - "documentation":"

The description of the new pipeline.

" - } - }, - "documentation":"

The input for the CreatePipeline action.

" - }, - "CreatePipelineOutput":{ - "type":"structure", - "required":["pipelineId"], - "members":{ - "pipelineId":{ - "shape":"id", - "documentation":"

The ID that AWS Data Pipeline assigns the newly created pipeline. The ID is a string of the form: df-06372391ZG65EXAMPLE.

" - } - }, - "documentation":"

Contains the output from the CreatePipeline action.

" - }, - "DeletePipelineInput":{ - "type":"structure", - "required":["pipelineId"], - "members":{ - "pipelineId":{ - "shape":"id", - "documentation":"

The identifier of the pipeline to be deleted.

" - } - }, - "documentation":"

The input for the DeletePipeline action.

" - }, - "DescribeObjectsInput":{ - "type":"structure", - "required":[ - "pipelineId", - "objectIds" - ], - "members":{ - "pipelineId":{ - "shape":"id", - "documentation":"

Identifier of the pipeline that contains the object definitions.

" - }, - "objectIds":{ - "shape":"idList", - "documentation":"

Identifiers of the pipeline objects that contain the definitions to be described. You can pass as many as 25 identifiers in a single call to DescribeObjects.

" - }, - "evaluateExpressions":{ - "shape":"boolean", - "documentation":"

Indicates whether any expressions in the object should be evaluated when the object descriptions are returned.

" - }, - "marker":{ - "shape":"string", - "documentation":"

The starting point for the results to be returned. The first time you call DescribeObjects, this value should be empty. As long as the action returns HasMoreResults as True, you can call DescribeObjects again and pass the marker value from the response to retrieve the next set of results.

" - } - }, - "documentation":"

The DescribeObjects action returns the object definitions for a specified set of object identifiers. You can filter the results to named fields and used markers to page through the results.

" - }, - "DescribeObjectsOutput":{ - "type":"structure", - "required":["pipelineObjects"], - "members":{ - "pipelineObjects":{ - "shape":"PipelineObjectList", - "documentation":"

An array of object definitions that are returned by the call to DescribeObjects.

" - }, - "marker":{ - "shape":"string", - "documentation":"

The starting point for the next page of results. To view the next page of results, call DescribeObjects again with this marker value.

" - }, - "hasMoreResults":{ - "shape":"boolean", - "documentation":"

If True, there are more pages of results to return.

" - } - }, - "documentation":"

If True, there are more results that can be returned in another call to DescribeObjects.

" - }, - "DescribePipelinesInput":{ - "type":"structure", - "required":["pipelineIds"], - "members":{ - "pipelineIds":{ - "shape":"idList", - "documentation":"

Identifiers of the pipelines to describe. You can pass as many as 25 identifiers in a single call to DescribePipelines. You can obtain pipeline identifiers by calling ListPipelines.

" - } - }, - "documentation":"

The input to the DescribePipelines action.

" - }, - "DescribePipelinesOutput":{ - "type":"structure", - "required":["pipelineDescriptionList"], - "members":{ - "pipelineDescriptionList":{ - "shape":"PipelineDescriptionList", - "documentation":"

An array of descriptions returned for the specified pipelines.

" - } - }, - "documentation":"

Contains the output from the DescribePipelines action.

" - }, - "EvaluateExpressionInput":{ - "type":"structure", - "required":[ - "pipelineId", - "objectId", - "expression" - ], - "members":{ - "pipelineId":{ - "shape":"id", - "documentation":"

The identifier of the pipeline.

" - }, - "objectId":{ - "shape":"id", - "documentation":"

The identifier of the object.

" - }, - "expression":{ - "shape":"longString", - "documentation":"

The expression to evaluate.

" - } - }, - "documentation":"

The input for the EvaluateExpression action.

" - }, - "EvaluateExpressionOutput":{ - "type":"structure", - "required":["evaluatedExpression"], - "members":{ - "evaluatedExpression":{ - "shape":"longString", - "documentation":"

The evaluated expression.

" - } - }, - "documentation":"

Contains the output from the EvaluateExpression action.

" - }, - "Field":{ - "type":"structure", - "required":["key"], - "members":{ - "key":{ - "shape":"fieldNameString", - "documentation":"

The field identifier.

" - }, - "stringValue":{ - "shape":"fieldStringValue", - "documentation":"

The field value, expressed as a String.

" - }, - "refValue":{ - "shape":"fieldNameString", - "documentation":"

The field value, expressed as the identifier of another object.

" - } - }, - "documentation":"

A key-value pair that describes a property of a pipeline object. The value is specified as either a string value (StringValue) or a reference to another object (RefValue) but not as both.

" - }, - "GetPipelineDefinitionInput":{ - "type":"structure", - "required":["pipelineId"], - "members":{ - "pipelineId":{ - "shape":"id", - "documentation":"

The identifier of the pipeline.

" - }, - "version":{ - "shape":"string", - "documentation":"

The version of the pipeline definition to retrieve. This parameter accepts the values latest (default) and active. Where latest indicates the last definition saved to the pipeline and active indicates the last definition of the pipeline that was activated.

" - } - }, - "documentation":"

The input for the GetPipelineDefinition action.

" - }, - "GetPipelineDefinitionOutput":{ - "type":"structure", - "members":{ - "pipelineObjects":{ - "shape":"PipelineObjectList", - "documentation":"

An array of objects defined in the pipeline.

" - }, - "parameterObjects":{ - "shape":"ParameterObjectList", - "documentation":"

Returns a list of parameter objects used in the pipeline definition.

" - }, - "parameterValues":{ - "shape":"ParameterValueList", - "documentation":"

Returns a list of parameter values used in the pipeline definition.

" - } - }, - "documentation":"

Contains the output from the GetPipelineDefinition action.

" - }, - "InstanceIdentity":{ - "type":"structure", - "members":{ - "document":{ - "shape":"string", - "documentation":"

A description of an Amazon EC2 instance that is generated when the instance is launched and exposed to the instance via the instance metadata service in the form of a JSON representation of an object.

" - }, - "signature":{ - "shape":"string", - "documentation":"

A signature which can be used to verify the accuracy and authenticity of the information provided in the instance identity document.

" - } - }, - "documentation":"

Identity information for the Amazon EC2 instance that is hosting the task runner. You can get this value by calling a metadata URI from the EC2 instance. For more information, go to Instance Metadata in the Amazon Elastic Compute Cloud User Guide. Passing in this value proves that your task runner is running on an EC2 instance, and ensures the proper AWS Data Pipeline service charges are applied to your pipeline.

" - }, - "InternalServiceError":{ - "type":"structure", - "members":{ - "message":{ - "shape":"errorMessage", - "documentation":"

Description of the error message.

" - } - }, - "exception":true, - "fault":true, - "documentation":"

An internal service error occurred.

" - }, - "InvalidRequestException":{ - "type":"structure", - "members":{ - "message":{ - "shape":"errorMessage", - "documentation":"

Description of the error message.

" - } - }, - "exception":true, - "documentation":"

The request was not valid. Verify that your request was properly formatted, that the signature was generated with the correct credentials, and that you haven't exceeded any of the service limits for your account.

" - }, - "ListPipelinesInput":{ - "type":"structure", - "members":{ - "marker":{ - "shape":"string", - "documentation":"

The starting point for the results to be returned. The first time you call ListPipelines, this value should be empty. As long as the action returns HasMoreResults as True, you can call ListPipelines again and pass the marker value from the response to retrieve the next set of results.

" - } - }, - "documentation":"

The input to the ListPipelines action.

" - }, - "ListPipelinesOutput":{ - "type":"structure", - "required":["pipelineIdList"], - "members":{ - "pipelineIdList":{ - "shape":"pipelineList", - "documentation":"

A list of all the pipeline identifiers that your account has permission to access. If you require additional information about the pipelines, you can use these identifiers to call DescribePipelines and GetPipelineDefinition.

" - }, - "marker":{ - "shape":"string", - "documentation":"

If not null, indicates the starting point for the set of pipeline identifiers that the next call to ListPipelines will retrieve. If null, there are no more pipeline identifiers.

" - }, - "hasMoreResults":{ - "shape":"boolean", - "documentation":"

If True, there are more results that can be obtained by a subsequent call to ListPipelines.

" - } - }, - "documentation":"

Contains the output from the ListPipelines action.

" - }, - "Operator":{ - "type":"structure", - "members":{ - "type":{ - "shape":"OperatorType", - "documentation":"

The logical operation to be performed: equal (EQ), equal reference (REF_EQ), less than or equal (LE), greater than or equal (GE), or between (BETWEEN). Equal reference (REF_EQ) can be used only with reference fields. The other comparison types can be used only with String fields. The comparison types you can use apply only to certain object fields, as detailed below.

The comparison operators EQ and REF_EQ act on the following fields:

The comparison operators GE, LE, and BETWEEN act on the following fields:

Note that fields beginning with the at sign (@) are read-only and set by the web service. When you name fields, you should choose names containing only alpha-numeric values, as symbols may be reserved by AWS Data Pipeline. User-defined fields that you add to a pipeline should prefix their name with the string \"my\".

" - }, - "values":{ - "shape":"stringList", - "documentation":"

The value that the actual field value will be compared with.

" - } - }, - "documentation":"

Contains a logical operation for comparing the value of a field with a specified value.

" - }, - "OperatorType":{ - "type":"string", - "enum":[ - "EQ", - "REF_EQ", - "LE", - "GE", - "BETWEEN" - ] - }, - "ParameterAttribute":{ - "type":"structure", - "required":[ - "key", - "stringValue" - ], - "members":{ - "key":{ - "shape":"attributeNameString", - "documentation":"

The field identifier.

" - }, - "stringValue":{ - "shape":"attributeValueString", - "documentation":"

The field value, expressed as a String.

" - } - }, - "documentation":"

The attributes allowed or specified with a parameter object.

" - }, - "ParameterAttributeList":{ - "type":"list", - "member":{"shape":"ParameterAttribute"} - }, - "ParameterObject":{ - "type":"structure", - "required":[ - "id", - "attributes" - ], - "members":{ - "id":{ - "shape":"fieldNameString", - "documentation":"

Identifier of the parameter object.

" - }, - "attributes":{ - "shape":"ParameterAttributeList", - "documentation":"

The attributes of the parameter object.

" - } - }, - "documentation":"

Contains information about a parameter object.

" - }, - "ParameterObjectList":{ - "type":"list", - "member":{"shape":"ParameterObject"} - }, - "ParameterValue":{ - "type":"structure", - "required":[ - "id", - "stringValue" - ], - "members":{ - "id":{ - "shape":"fieldNameString", - "documentation":"

Identifier of the parameter value.

" - }, - "stringValue":{ - "shape":"fieldStringValue", - "documentation":"

The field value, expressed as a String.

" - } - }, - "documentation":"

A value or list of parameter values.

" - }, - "ParameterValueList":{ - "type":"list", - "member":{"shape":"ParameterValue"} - }, - "PipelineDeletedException":{ - "type":"structure", - "members":{ - "message":{ - "shape":"errorMessage", - "documentation":"

Description of the error message.

" - } - }, - "exception":true, - "documentation":"

The specified pipeline has been deleted.

" - }, - "PipelineDescription":{ - "type":"structure", - "required":[ - "pipelineId", - "name", - "fields" - ], - "members":{ - "pipelineId":{ - "shape":"id", - "documentation":"

The pipeline identifier that was assigned by AWS Data Pipeline. This is a string of the form df-297EG78HU43EEXAMPLE.

" - }, - "name":{ - "shape":"id", - "documentation":"

Name of the pipeline.

" - }, - "fields":{ - "shape":"fieldList", - "documentation":"

A list of read-only fields that contain metadata about the pipeline: @userId, @accountId, and @pipelineState.

" - }, - "description":{ - "shape":"string", - "documentation":"

Description of the pipeline.

" - } - }, - "documentation":"

Contains pipeline metadata.

" - }, - "PipelineDescriptionList":{ - "type":"list", - "member":{"shape":"PipelineDescription"} - }, - "PipelineIdName":{ - "type":"structure", - "members":{ - "id":{ - "shape":"id", - "documentation":"

Identifier of the pipeline that was assigned by AWS Data Pipeline. This is a string of the form df-297EG78HU43EEXAMPLE.

" - }, - "name":{ - "shape":"id", - "documentation":"

Name of the pipeline.

" - } - }, - "documentation":"

Contains the name and identifier of a pipeline.

" - }, - "PipelineNotFoundException":{ - "type":"structure", - "members":{ - "message":{ - "shape":"errorMessage", - "documentation":"

Description of the error message.

" - } - }, - "exception":true, - "documentation":"

The specified pipeline was not found. Verify that you used the correct user and account identifiers.

" - }, - "PipelineObject":{ - "type":"structure", - "required":[ - "id", - "name", - "fields" - ], - "members":{ - "id":{ - "shape":"id", - "documentation":"

Identifier of the object.

" - }, - "name":{ - "shape":"id", - "documentation":"

Name of the object.

" - }, - "fields":{ - "shape":"fieldList", - "documentation":"

Key-value pairs that define the properties of the object.

" - } - }, - "documentation":"

Contains information about a pipeline object. This can be a logical, physical, or physical attempt pipeline object. The complete set of components of a pipeline defines the pipeline.

" - }, - "PipelineObjectList":{ - "type":"list", - "member":{"shape":"PipelineObject"} - }, - "PipelineObjectMap":{ - "type":"map", - "key":{"shape":"id"}, - "value":{"shape":"PipelineObject"} - }, - "PollForTaskInput":{ - "type":"structure", - "required":["workerGroup"], - "members":{ - "workerGroup":{ - "shape":"string", - "documentation":"

Indicates the type of task the task runner is configured to accept and process. The worker group is set as a field on objects in the pipeline when they are created. You can only specify a single value for workerGroup in the call to PollForTask. There are no wildcard values permitted in workerGroup, the string must be an exact, case-sensitive, match.

" - }, - "hostname":{ - "shape":"id", - "documentation":"

The public DNS name of the calling task runner.

" - }, - "instanceIdentity":{ - "shape":"InstanceIdentity", - "documentation":"

Identity information for the Amazon EC2 instance that is hosting the task runner. You can get this value by calling the URI, http://169.254.169.254/latest/meta-data/instance-id, from the EC2 instance. For more information, go to Instance Metadata in the Amazon Elastic Compute Cloud User Guide. Passing in this value proves that your task runner is running on an EC2 instance, and ensures the proper AWS Data Pipeline service charges are applied to your pipeline.

" - } - }, - "documentation":"

The data type passed in as input to the PollForTask action.

" - }, - "PollForTaskOutput":{ - "type":"structure", - "members":{ - "taskObject":{ - "shape":"TaskObject", - "documentation":"

An instance of TaskObject. The returned object contains all the information needed to complete the task that is being assigned to the task runner. One of the fields returned in this object is taskId, which contains an identifier for the task being assigned. The calling task runner uses taskId in subsequent calls to ReportTaskProgress and SetTaskStatus.

" - } - }, - "documentation":"

Contains the output from the PollForTask action.

" - }, - "PutPipelineDefinitionInput":{ - "type":"structure", - "required":[ - "pipelineId", - "pipelineObjects" - ], - "members":{ - "pipelineId":{ - "shape":"id", - "documentation":"

The identifier of the pipeline to be configured.

" - }, - "pipelineObjects":{ - "shape":"PipelineObjectList", - "documentation":"

The objects that define the pipeline. These will overwrite the existing pipeline definition.

" - }, - "parameterObjects":{ - "shape":"ParameterObjectList", - "documentation":"

A list of parameter objects used with the pipeline.

" - }, - "parameterValues":{ - "shape":"ParameterValueList", - "documentation":"

A list of parameter values used with the pipeline.

" - } - }, - "documentation":"

The input of the PutPipelineDefinition action.

" - }, - "PutPipelineDefinitionOutput":{ - "type":"structure", - "required":["errored"], - "members":{ - "validationErrors":{ - "shape":"ValidationErrors", - "documentation":"

A list of the validation errors that are associated with the objects defined in pipelineObjects.

" - }, - "validationWarnings":{ - "shape":"ValidationWarnings", - "documentation":"

A list of the validation warnings that are associated with the objects defined in pipelineObjects.

" - }, - "errored":{ - "shape":"boolean", - "documentation":"

If True, there were validation errors. If errored is True, the pipeline definition is stored but cannot be activated until you correct the pipeline and call PutPipelineDefinition to commit the corrected pipeline.

" - } - }, - "documentation":"

Contains the output of the PutPipelineDefinition action.

" - }, - "Query":{ - "type":"structure", - "members":{ - "selectors":{ - "shape":"SelectorList", - "documentation":"

List of selectors that define the query. An object must satisfy all of the selectors to match the query.

" - } - }, - "documentation":"

Defines the query to run against an object.

" - }, - "QueryObjectsInput":{ - "type":"structure", - "required":[ - "pipelineId", - "sphere" - ], - "members":{ - "pipelineId":{ - "shape":"id", - "documentation":"

Identifier of the pipeline to be queried for object names.

" - }, - "query":{ - "shape":"Query", - "documentation":"

Query that defines the objects to be returned. The Query object can contain a maximum of ten selectors. The conditions in the query are limited to top-level String fields in the object. These filters can be applied to components, instances, and attempts.

" - }, - "sphere":{ - "shape":"string", - "documentation":"

Specifies whether the query applies to components or instances. Allowable values: COMPONENT, INSTANCE, ATTEMPT.

" - }, - "marker":{ - "shape":"string", - "documentation":"

The starting point for the results to be returned. The first time you call QueryObjects, this value should be empty. As long as the action returns HasMoreResults as True, you can call QueryObjects again and pass the marker value from the response to retrieve the next set of results.

" - }, - "limit":{ - "shape":"int", - "documentation":"

Specifies the maximum number of object names that QueryObjects will return in a single call. The default value is 100.

" - } - }, - "documentation":"

The input for the QueryObjects action.

" - }, - "QueryObjectsOutput":{ - "type":"structure", - "members":{ - "ids":{ - "shape":"idList", - "documentation":"

A list of identifiers that match the query selectors.

" - }, - "marker":{ - "shape":"string", - "documentation":"

The starting point for the results to be returned. As long as the action returns HasMoreResults as True, you can call QueryObjects again and pass the marker value from the response to retrieve the next set of results.

" - }, - "hasMoreResults":{ - "shape":"boolean", - "documentation":"

If True, there are more results that can be obtained by a subsequent call to QueryObjects.

" - } - }, - "documentation":"

Contains the output from the QueryObjects action.

" - }, - "ReportTaskProgressInput":{ - "type":"structure", - "required":["taskId"], - "members":{ - "taskId":{ - "shape":"taskId", - "documentation":"

Identifier of the task assigned to the task runner. This value is provided in the TaskObject that the service returns with the response for the PollForTask action.

" - }, - "fields":{ - "shape":"fieldList", - "documentation":"

Key-value pairs that define the properties of the ReportTaskProgressInput object.

" - } - }, - "documentation":"

The input for the ReportTaskProgress action.

" - }, - "ReportTaskProgressOutput":{ - "type":"structure", - "required":["canceled"], - "members":{ - "canceled":{ - "shape":"boolean", - "documentation":"

If True, the calling task runner should cancel processing of the task. The task runner does not need to call SetTaskStatus for canceled tasks.

" - } - }, - "documentation":"

Contains the output from the ReportTaskProgress action.

" - }, - "ReportTaskRunnerHeartbeatInput":{ - "type":"structure", - "required":["taskrunnerId"], - "members":{ - "taskrunnerId":{ - "shape":"id", - "documentation":"

The identifier of the task runner. This value should be unique across your AWS account. In the case of AWS Data Pipeline Task Runner launched on a resource managed by AWS Data Pipeline, the web service provides a unique identifier when it launches the application. If you have written a custom task runner, you should assign a unique identifier for the task runner.

" - }, - "workerGroup":{ - "shape":"string", - "documentation":"

Indicates the type of task the task runner is configured to accept and process. The worker group is set as a field on objects in the pipeline when they are created. You can only specify a single value for workerGroup in the call to ReportTaskRunnerHeartbeat. There are no wildcard values permitted in workerGroup, the string must be an exact, case-sensitive, match.

" - }, - "hostname":{ - "shape":"id", - "documentation":"

The public DNS name of the calling task runner.

" - } - }, - "documentation":"

The input for the ReportTaskRunnerHeartbeat action.

" - }, - "ReportTaskRunnerHeartbeatOutput":{ - "type":"structure", - "required":["terminate"], - "members":{ - "terminate":{ - "shape":"boolean", - "documentation":"

Indicates whether the calling task runner should terminate. If True, the task runner that called ReportTaskRunnerHeartbeat should terminate.

" - } - }, - "documentation":"

Contains the output from the ReportTaskRunnerHeartbeat action.

" - }, - "Selector":{ - "type":"structure", - "members":{ - "fieldName":{ - "shape":"string", - "documentation":"

The name of the field that the operator will be applied to. The field name is the \"key\" portion of the field definition in the pipeline definition syntax that is used by the AWS Data Pipeline API. If the field is not set on the object, the condition fails.

" - }, - "operator":{"shape":"Operator"} - }, - "documentation":"

A comparision that is used to determine whether a query should return this object.

" - }, - "SelectorList":{ - "type":"list", - "member":{"shape":"Selector"}, - "documentation":"

The list of Selectors that define queries on individual fields.

" - }, - "SetStatusInput":{ - "type":"structure", - "required":[ - "pipelineId", - "objectIds", - "status" - ], - "members":{ - "pipelineId":{ - "shape":"id", - "documentation":"

Identifies the pipeline that contains the objects.

" - }, - "objectIds":{ - "shape":"idList", - "documentation":"

Identifies an array of objects. The corresponding objects can be either physical or components, but not a mix of both types.

" - }, - "status":{ - "shape":"string", - "documentation":"

Specifies the status to be set on all the objects in objectIds. For components, this can be either PAUSE or RESUME. For instances, this can be either CANCEL, RERUN, or MARK_FINISHED.

" - } - }, - "documentation":"

The input to the SetStatus action.

" - }, - "SetTaskStatusInput":{ - "type":"structure", - "required":[ - "taskId", - "taskStatus" - ], - "members":{ - "taskId":{ - "shape":"taskId", - "documentation":"

Identifies the task assigned to the task runner. This value is set in the TaskObject that is returned by the PollForTask action.

" - }, - "taskStatus":{ - "shape":"TaskStatus", - "documentation":"

If FINISHED, the task successfully completed. If FAILED the task ended unsuccessfully. The FALSE value is used by preconditions.

" - }, - "errorId":{ - "shape":"string", - "documentation":"

If an error occurred during the task, this value specifies an id value that represents the error. This value is set on the physical attempt object. It is used to display error information to the user. It should not start with string \"Service_\" which is reserved by the system.

" - }, - "errorMessage":{ - "shape":"errorMessage", - "documentation":"

If an error occurred during the task, this value specifies a text description of the error. This value is set on the physical attempt object. It is used to display error information to the user. The web service does not parse this value.

" - }, - "errorStackTrace":{ - "shape":"string", - "documentation":"

If an error occurred during the task, this value specifies the stack trace associated with the error. This value is set on the physical attempt object. It is used to display error information to the user. The web service does not parse this value.

" - } - }, - "documentation":"

The input of the SetTaskStatus action.

" - }, - "SetTaskStatusOutput":{ - "type":"structure", - "members":{ - }, - "documentation":"

The output from the SetTaskStatus action.

" - }, - "TaskNotFoundException":{ - "type":"structure", - "members":{ - "message":{ - "shape":"errorMessage", - "documentation":"

Description of the error message.

" - } - }, - "exception":true, - "documentation":"

The specified task was not found.

" - }, - "TaskObject":{ - "type":"structure", - "members":{ - "taskId":{ - "shape":"taskId", - "documentation":"

An internal identifier for the task. This ID is passed to the SetTaskStatus and ReportTaskProgress actions.

" - }, - "pipelineId":{ - "shape":"id", - "documentation":"

Identifier of the pipeline that provided the task.

" - }, - "attemptId":{ - "shape":"id", - "documentation":"

Identifier of the pipeline task attempt object. AWS Data Pipeline uses this value to track how many times a task is attempted.

" - }, - "objects":{ - "shape":"PipelineObjectMap", - "documentation":"

Connection information for the location where the task runner will publish the output of the task.

" - } - }, - "documentation":"

Contains information about a pipeline task that is assigned to a task runner.

" - }, - "TaskStatus":{ - "type":"string", - "enum":[ - "FINISHED", - "FAILED", - "FALSE" - ] - }, - "ValidatePipelineDefinitionInput":{ - "type":"structure", - "required":[ - "pipelineId", - "pipelineObjects" - ], - "members":{ - "pipelineId":{ - "shape":"id", - "documentation":"

Identifies the pipeline whose definition is to be validated.

" - }, - "pipelineObjects":{ - "shape":"PipelineObjectList", - "documentation":"

A list of objects that define the pipeline changes to validate against the pipeline.

" - }, - "parameterObjects":{ - "shape":"ParameterObjectList", - "documentation":"

A list of parameter objects used with the pipeline.

" - }, - "parameterValues":{ - "shape":"ParameterValueList", - "documentation":"

A list of parameter values used with the pipeline.

" - } - }, - "documentation":"

The input of the ValidatePipelineDefinition action.

" - }, - "ValidatePipelineDefinitionOutput":{ - "type":"structure", - "required":["errored"], - "members":{ - "validationErrors":{ - "shape":"ValidationErrors", - "documentation":"

Lists the validation errors that were found by ValidatePipelineDefinition.

" - }, - "validationWarnings":{ - "shape":"ValidationWarnings", - "documentation":"

Lists the validation warnings that were found by ValidatePipelineDefinition.

" - }, - "errored":{ - "shape":"boolean", - "documentation":"

If True, there were validation errors.

" - } - }, - "documentation":"

Contains the output from the ValidatePipelineDefinition action.

" - }, - "ValidationError":{ - "type":"structure", - "members":{ - "id":{ - "shape":"id", - "documentation":"

The identifier of the object that contains the validation error.

" - }, - "errors":{ - "shape":"validationMessages", - "documentation":"

A description of the validation error.

" - } - }, - "documentation":"

Defines a validation error returned by PutPipelineDefinition or ValidatePipelineDefinition. Validation errors prevent pipeline activation. The set of validation errors that can be returned are defined by AWS Data Pipeline.

" - }, - "ValidationErrors":{ - "type":"list", - "member":{"shape":"ValidationError"} - }, - "ValidationWarning":{ - "type":"structure", - "members":{ - "id":{ - "shape":"id", - "documentation":"

The identifier of the object that contains the validation warning.

" - }, - "warnings":{ - "shape":"validationMessages", - "documentation":"

A description of the validation warning.

" - } - }, - "documentation":"

Defines a validation warning returned by PutPipelineDefinition or ValidatePipelineDefinition. Validation warnings do not prevent pipeline activation. The set of validation warnings that can be returned are defined by AWS Data Pipeline.

" - }, - "ValidationWarnings":{ - "type":"list", - "member":{"shape":"ValidationWarning"} - }, - "attributeNameString":{ - "type":"string", - "min":1, - "max":256, - "pattern":"[\\u0020-\\uD7FF\\uE000-\\uFFFD\\uD800\\uDC00-\\uDBFF\\uDFFF\\r\\n\\t]*" - }, - "attributeValueString":{ - "type":"string", - "min":0, - "max":10240, - "pattern":"[\\u0020-\\uD7FF\\uE000-\\uFFFD\\uD800\\uDC00-\\uDBFF\\uDFFF\\r\\n\\t]*" - }, - "boolean":{"type":"boolean"}, - "errorMessage":{"type":"string"}, - "fieldList":{ - "type":"list", - "member":{"shape":"Field"} - }, - "fieldNameString":{ - "type":"string", - "min":1, - "max":256, - "pattern":"[\\u0020-\\uD7FF\\uE000-\\uFFFD\\uD800\\uDC00-\\uDBFF\\uDFFF\\r\\n\\t]*" - }, - "fieldStringValue":{ - "type":"string", - "min":0, - "max":10240, - "pattern":"[\\u0020-\\uD7FF\\uE000-\\uFFFD\\uD800\\uDC00-\\uDBFF\\uDFFF\\r\\n\\t]*" - }, - "id":{ - "type":"string", - "min":1, - "max":1024, - "pattern":"[\\u0020-\\uD7FF\\uE000-\\uFFFD\\uD800\\uDC00-\\uDBFF\\uDFFF\\r\\n\\t]*" - }, - "idList":{ - "type":"list", - "member":{"shape":"id"} - }, - "int":{"type":"integer"}, - "longString":{ - "type":"string", - "min":0, - "max":20971520, - "pattern":"[\\u0020-\\uD7FF\\uE000-\\uFFFD\\uD800\\uDC00-\\uDBFF\\uDFFF\\r\\n\\t]*" - }, - "pipelineList":{ - "type":"list", - "member":{"shape":"PipelineIdName"} - }, - "string":{ - "type":"string", - "min":0, - "max":1024, - "pattern":"[\\u0020-\\uD7FF\\uE000-\\uFFFD\\uD800\\uDC00-\\uDBFF\\uDFFF\\r\\n\\t]*" - }, - "stringList":{ - "type":"list", - "member":{"shape":"string"} - }, - "taskId":{ - "type":"string", - "min":1, - "max":2048, - "pattern":"[\\u0020-\\uD7FF\\uE000-\\uFFFD\\uD800\\uDC00-\\uDBFF\\uDFFF\\r\\n\\t]*" - }, - "validationMessage":{ - "type":"string", - "min":0, - "max":10000, - "pattern":"[\\u0020-\\uD7FF\\uE000-\\uFFFD\\uD800\\uDC00-\\uDBFF\\uDFFF\\r\\n\\t]*" - }, - "validationMessages":{ - "type":"list", - "member":{"shape":"validationMessage"} - } - } -} diff --git a/src/github.com/getlantern/aws-sdk-go/apis/datapipeline/2012-10-29.paginators.json b/src/github.com/getlantern/aws-sdk-go/apis/datapipeline/2012-10-29.paginators.json deleted file mode 100644 index c859c9fbfb..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/apis/datapipeline/2012-10-29.paginators.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "pagination": { - "ListPipelines": { - "input_token": "marker", - "output_token": "marker", - "more_results": "hasMoreResults", - "result_key": "pipelineIdList" - }, - "DescribeObjects": { - "input_token": "marker", - "output_token": "marker", - "more_results": "hasMoreResults", - "result_key": "pipelineObjects" - }, - "QueryObjects": { - "input_token": "marker", - "output_token": "marker", - "more_results": "hasMoreResults", - "limit_key": "limit", - "result_key": "ids" - } - } -} diff --git a/src/github.com/getlantern/aws-sdk-go/apis/directconnect/2012-10-25.normal.json b/src/github.com/getlantern/aws-sdk-go/apis/directconnect/2012-10-25.normal.json deleted file mode 100644 index a8f0603112..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/apis/directconnect/2012-10-25.normal.json +++ /dev/null @@ -1,1174 +0,0 @@ -{ - "metadata":{ - "apiVersion":"2012-10-25", - "endpointPrefix":"directconnect", - "jsonVersion":"1.1", - "serviceFullName":"AWS Direct Connect", - "signatureVersion":"v4", - "targetPrefix":"OvertureService", - "protocol":"json" - }, - "documentation":"

AWS Direct Connect makes it easy to establish a dedicated network connection from your premises to Amazon Web Services (AWS). Using AWS Direct Connect, you can establish private connectivity between AWS and your data center, office, or colocation environment, which in many cases can reduce your network costs, increase bandwidth throughput, and provide a more consistent network experience than Internet-based connections.

The AWS Direct Connect API Reference provides descriptions, syntax, and usage examples for each of the actions and data types for AWS Direct Connect. Use the following links to get started using the AWS Direct Connect API Reference:

", - "operations":{ - "AllocateConnectionOnInterconnect":{ - "name":"AllocateConnectionOnInterconnect", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"AllocateConnectionOnInterconnectRequest", - "documentation":"

Container for the parameters to the AllocateConnectionOnInterconnect operation.

" - }, - "output":{ - "shape":"Connection", - "documentation":"

A connection represents the physical network connection between the AWS Direct Connect location and the customer.

" - }, - "errors":[ - { - "shape":"DirectConnectServerException", - "exception":true, - "documentation":"

A server-side error occurred during the API call. The error message will contain additional details about the cause.

" - }, - { - "shape":"DirectConnectClientException", - "exception":true, - "documentation":"

The API was called with invalid parameters. The error message will contain additional details about the cause.

" - } - ], - "documentation":"

Creates a hosted connection on an interconnect.

Allocates a VLAN number and a specified amount of bandwidth for use by a hosted connection on the given interconnect.

" - }, - "AllocatePrivateVirtualInterface":{ - "name":"AllocatePrivateVirtualInterface", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"AllocatePrivateVirtualInterfaceRequest", - "documentation":"

Container for the parameters to the AllocatePrivateVirtualInterface operation.

" - }, - "output":{ - "shape":"VirtualInterface", - "documentation":"

A virtual interface (VLAN) transmits the traffic between the AWS Direct Connect location and the customer.

" - }, - "errors":[ - { - "shape":"DirectConnectServerException", - "exception":true, - "documentation":"

A server-side error occurred during the API call. The error message will contain additional details about the cause.

" - }, - { - "shape":"DirectConnectClientException", - "exception":true, - "documentation":"

The API was called with invalid parameters. The error message will contain additional details about the cause.

" - } - ], - "documentation":"

Provisions a private virtual interface to be owned by a different customer.

The owner of a connection calls this function to provision a private virtual interface which will be owned by another AWS customer.

Virtual interfaces created using this function must be confirmed by the virtual interface owner by calling ConfirmPrivateVirtualInterface. Until this step has been completed, the virtual interface will be in 'Confirming' state, and will not be available for handling traffic.

" - }, - "AllocatePublicVirtualInterface":{ - "name":"AllocatePublicVirtualInterface", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"AllocatePublicVirtualInterfaceRequest", - "documentation":"

Container for the parameters to the AllocatePublicVirtualInterface operation.

" - }, - "output":{ - "shape":"VirtualInterface", - "documentation":"

A virtual interface (VLAN) transmits the traffic between the AWS Direct Connect location and the customer.

" - }, - "errors":[ - { - "shape":"DirectConnectServerException", - "exception":true, - "documentation":"

A server-side error occurred during the API call. The error message will contain additional details about the cause.

" - }, - { - "shape":"DirectConnectClientException", - "exception":true, - "documentation":"

The API was called with invalid parameters. The error message will contain additional details about the cause.

" - } - ], - "documentation":"

Provisions a public virtual interface to be owned by a different customer.

The owner of a connection calls this function to provision a public virtual interface which will be owned by another AWS customer.

Virtual interfaces created using this function must be confirmed by the virtual interface owner by calling ConfirmPublicVirtualInterface. Until this step has been completed, the virtual interface will be in 'Confirming' state, and will not be available for handling traffic.

" - }, - "ConfirmConnection":{ - "name":"ConfirmConnection", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"ConfirmConnectionRequest", - "documentation":"

Container for the parameters to the ConfirmConnection operation.

" - }, - "output":{ - "shape":"ConfirmConnectionResponse", - "documentation":"

The response received when ConfirmConnection is called.

" - }, - "errors":[ - { - "shape":"DirectConnectServerException", - "exception":true, - "documentation":"

A server-side error occurred during the API call. The error message will contain additional details about the cause.

" - }, - { - "shape":"DirectConnectClientException", - "exception":true, - "documentation":"

The API was called with invalid parameters. The error message will contain additional details about the cause.

" - } - ], - "documentation":"

Confirm the creation of a hosted connection on an interconnect.

Upon creation, the hosted connection is initially in the 'Ordering' state, and will remain in this state until the owner calls ConfirmConnection to confirm creation of the hosted connection.

" - }, - "ConfirmPrivateVirtualInterface":{ - "name":"ConfirmPrivateVirtualInterface", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"ConfirmPrivateVirtualInterfaceRequest", - "documentation":"

Container for the parameters to the ConfirmPrivateVirtualInterface operation.

" - }, - "output":{ - "shape":"ConfirmPrivateVirtualInterfaceResponse", - "documentation":"

The response received when ConfirmPrivateVirtualInterface is called.

" - }, - "errors":[ - { - "shape":"DirectConnectServerException", - "exception":true, - "documentation":"

A server-side error occurred during the API call. The error message will contain additional details about the cause.

" - }, - { - "shape":"DirectConnectClientException", - "exception":true, - "documentation":"

The API was called with invalid parameters. The error message will contain additional details about the cause.

" - } - ], - "documentation":"

Accept ownership of a private virtual interface created by another customer.

After the virtual interface owner calls this function, the virtual interface will be created and attached to the given virtual private gateway, and will be available for handling traffic.

" - }, - "ConfirmPublicVirtualInterface":{ - "name":"ConfirmPublicVirtualInterface", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"ConfirmPublicVirtualInterfaceRequest", - "documentation":"

Container for the parameters to the ConfirmPublicVirtualInterface operation.

" - }, - "output":{ - "shape":"ConfirmPublicVirtualInterfaceResponse", - "documentation":"

The response received when ConfirmPublicVirtualInterface is called.

" - }, - "errors":[ - { - "shape":"DirectConnectServerException", - "exception":true, - "documentation":"

A server-side error occurred during the API call. The error message will contain additional details about the cause.

" - }, - { - "shape":"DirectConnectClientException", - "exception":true, - "documentation":"

The API was called with invalid parameters. The error message will contain additional details about the cause.

" - } - ], - "documentation":"

Accept ownership of a public virtual interface created by another customer.

After the virtual interface owner calls this function, the specified virtual interface will be created and made available for handling traffic.

" - }, - "CreateConnection":{ - "name":"CreateConnection", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"CreateConnectionRequest", - "documentation":"

Container for the parameters to the CreateConnection operation.

" - }, - "output":{ - "shape":"Connection", - "documentation":"

A connection represents the physical network connection between the AWS Direct Connect location and the customer.

" - }, - "errors":[ - { - "shape":"DirectConnectServerException", - "exception":true, - "documentation":"

A server-side error occurred during the API call. The error message will contain additional details about the cause.

" - }, - { - "shape":"DirectConnectClientException", - "exception":true, - "documentation":"

The API was called with invalid parameters. The error message will contain additional details about the cause.

" - } - ], - "documentation":"

Creates a new connection between the customer network and a specific AWS Direct Connect location.

A connection links your internal network to an AWS Direct Connect location over a standard 1 gigabit or 10 gigabit Ethernet fiber-optic cable. One end of the cable is connected to your router, the other to an AWS Direct Connect router. An AWS Direct Connect location provides access to Amazon Web Services in the region it is associated with. You can establish connections with AWS Direct Connect locations in multiple regions, but a connection in one region does not provide connectivity to other regions.

" - }, - "CreateInterconnect":{ - "name":"CreateInterconnect", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"CreateInterconnectRequest", - "documentation":"

Container for the parameters to the CreateInterconnect operation.

" - }, - "output":{ - "shape":"Interconnect", - "documentation":"

An interconnect is a connection that can host other connections.

Like a standard AWS Direct Connect connection, an interconnect represents the physical connection between an AWS Direct Connect partner's network and a specific Direct Connect location. An AWS Direct Connect partner who owns an interconnect can provision hosted connections on the interconnect for their end customers, thereby providing the end customers with connectivity to AWS services.

The resources of the interconnect, including bandwidth and VLAN numbers, are shared by all of the hosted connections on the interconnect, and the owner of the interconnect determines how these resources are assigned.

" - }, - "errors":[ - { - "shape":"DirectConnectServerException", - "exception":true, - "documentation":"

A server-side error occurred during the API call. The error message will contain additional details about the cause.

" - }, - { - "shape":"DirectConnectClientException", - "exception":true, - "documentation":"

The API was called with invalid parameters. The error message will contain additional details about the cause.

" - } - ], - "documentation":"

Creates a new interconnect between a AWS Direct Connect partner's network and a specific AWS Direct Connect location.

An interconnect is a connection which is capable of hosting other connections. The AWS Direct Connect partner can use an interconnect to provide sub-1Gbps AWS Direct Connect service to tier 2 customers who do not have their own connections. Like a standard connection, an interconnect links the AWS Direct Connect partner's network to an AWS Direct Connect location over a standard 1 Gbps or 10 Gbps Ethernet fiber-optic cable. One end is connected to the partner's router, the other to an AWS Direct Connect router.

For each end customer, the AWS Direct Connect partner provisions a connection on their interconnect by calling AllocateConnectionOnInterconnect. The end customer can then connect to AWS resources by creating a virtual interface on their connection, using the VLAN assigned to them by the AWS Direct Connect partner.

" - }, - "CreatePrivateVirtualInterface":{ - "name":"CreatePrivateVirtualInterface", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"CreatePrivateVirtualInterfaceRequest", - "documentation":"

Container for the parameters to the CreatePrivateVirtualInterface operation.

" - }, - "output":{ - "shape":"VirtualInterface", - "documentation":"

A virtual interface (VLAN) transmits the traffic between the AWS Direct Connect location and the customer.

" - }, - "errors":[ - { - "shape":"DirectConnectServerException", - "exception":true, - "documentation":"

A server-side error occurred during the API call. The error message will contain additional details about the cause.

" - }, - { - "shape":"DirectConnectClientException", - "exception":true, - "documentation":"

The API was called with invalid parameters. The error message will contain additional details about the cause.

" - } - ], - "documentation":"

Creates a new private virtual interface. A virtual interface is the VLAN that transports AWS Direct Connect traffic. A private virtual interface supports sending traffic to a single virtual private cloud (VPC).

" - }, - "CreatePublicVirtualInterface":{ - "name":"CreatePublicVirtualInterface", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"CreatePublicVirtualInterfaceRequest", - "documentation":"

Container for the parameters to the CreatePublicVirtualInterface operation.

" - }, - "output":{ - "shape":"VirtualInterface", - "documentation":"

A virtual interface (VLAN) transmits the traffic between the AWS Direct Connect location and the customer.

" - }, - "errors":[ - { - "shape":"DirectConnectServerException", - "exception":true, - "documentation":"

A server-side error occurred during the API call. The error message will contain additional details about the cause.

" - }, - { - "shape":"DirectConnectClientException", - "exception":true, - "documentation":"

The API was called with invalid parameters. The error message will contain additional details about the cause.

" - } - ], - "documentation":"

Creates a new public virtual interface. A virtual interface is the VLAN that transports AWS Direct Connect traffic. A public virtual interface supports sending traffic to public services of AWS such as Amazon Simple Storage Service (Amazon S3).

" - }, - "DeleteConnection":{ - "name":"DeleteConnection", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DeleteConnectionRequest", - "documentation":"

Container for the parameters to the DeleteConnection operation.

" - }, - "output":{ - "shape":"Connection", - "documentation":"

A connection represents the physical network connection between the AWS Direct Connect location and the customer.

" - }, - "errors":[ - { - "shape":"DirectConnectServerException", - "exception":true, - "documentation":"

A server-side error occurred during the API call. The error message will contain additional details about the cause.

" - }, - { - "shape":"DirectConnectClientException", - "exception":true, - "documentation":"

The API was called with invalid parameters. The error message will contain additional details about the cause.

" - } - ], - "documentation":"

Deletes the connection.

Deleting a connection only stops the AWS Direct Connect port hour and data transfer charges. You need to cancel separately with the providers any services or charges for cross-connects or network circuits that connect you to the AWS Direct Connect location.

" - }, - "DeleteInterconnect":{ - "name":"DeleteInterconnect", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DeleteInterconnectRequest", - "documentation":"

Container for the parameters to the DeleteInterconnect operation.

" - }, - "output":{ - "shape":"DeleteInterconnectResponse", - "documentation":"

The response received when DeleteInterconnect is called.

" - }, - "errors":[ - { - "shape":"DirectConnectServerException", - "exception":true, - "documentation":"

A server-side error occurred during the API call. The error message will contain additional details about the cause.

" - }, - { - "shape":"DirectConnectClientException", - "exception":true, - "documentation":"

The API was called with invalid parameters. The error message will contain additional details about the cause.

" - } - ], - "documentation":"

Deletes the specified interconnect.

" - }, - "DeleteVirtualInterface":{ - "name":"DeleteVirtualInterface", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DeleteVirtualInterfaceRequest", - "documentation":"

Container for the parameters to the DeleteVirtualInterface operation.

" - }, - "output":{ - "shape":"DeleteVirtualInterfaceResponse", - "documentation":"

The response received when DeleteVirtualInterface is called.

" - }, - "errors":[ - { - "shape":"DirectConnectServerException", - "exception":true, - "documentation":"

A server-side error occurred during the API call. The error message will contain additional details about the cause.

" - }, - { - "shape":"DirectConnectClientException", - "exception":true, - "documentation":"

The API was called with invalid parameters. The error message will contain additional details about the cause.

" - } - ], - "documentation":"

Deletes a virtual interface.

" - }, - "DescribeConnections":{ - "name":"DescribeConnections", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DescribeConnectionsRequest", - "documentation":"

Container for the parameters to the DescribeConnections operation.

" - }, - "output":{ - "shape":"Connections", - "documentation":"

A structure containing a list of connections.

" - }, - "errors":[ - { - "shape":"DirectConnectServerException", - "exception":true, - "documentation":"

A server-side error occurred during the API call. The error message will contain additional details about the cause.

" - }, - { - "shape":"DirectConnectClientException", - "exception":true, - "documentation":"

The API was called with invalid parameters. The error message will contain additional details about the cause.

" - } - ], - "documentation":"

Displays all connections in this region.

If a connection ID is provided, the call returns only that particular connection.

" - }, - "DescribeConnectionsOnInterconnect":{ - "name":"DescribeConnectionsOnInterconnect", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DescribeConnectionsOnInterconnectRequest", - "documentation":"

Container for the parameters to the DescribeConnectionsOnInterconnect operation.

" - }, - "output":{ - "shape":"Connections", - "documentation":"

A structure containing a list of connections.

" - }, - "errors":[ - { - "shape":"DirectConnectServerException", - "exception":true, - "documentation":"

A server-side error occurred during the API call. The error message will contain additional details about the cause.

" - }, - { - "shape":"DirectConnectClientException", - "exception":true, - "documentation":"

The API was called with invalid parameters. The error message will contain additional details about the cause.

" - } - ], - "documentation":"

Return a list of connections that have been provisioned on the given interconnect.

" - }, - "DescribeInterconnects":{ - "name":"DescribeInterconnects", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DescribeInterconnectsRequest", - "documentation":"

Container for the parameters to the DescribeInterconnects operation.

" - }, - "output":{ - "shape":"Interconnects", - "documentation":"

A structure containing a list of interconnects.

" - }, - "errors":[ - { - "shape":"DirectConnectServerException", - "exception":true, - "documentation":"

A server-side error occurred during the API call. The error message will contain additional details about the cause.

" - }, - { - "shape":"DirectConnectClientException", - "exception":true, - "documentation":"

The API was called with invalid parameters. The error message will contain additional details about the cause.

" - } - ], - "documentation":"

Returns a list of interconnects owned by the AWS account.

If an interconnect ID is provided, it will only return this particular interconnect.

" - }, - "DescribeLocations":{ - "name":"DescribeLocations", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "output":{"shape":"Locations"}, - "errors":[ - { - "shape":"DirectConnectServerException", - "exception":true, - "documentation":"

A server-side error occurred during the API call. The error message will contain additional details about the cause.

" - }, - { - "shape":"DirectConnectClientException", - "exception":true, - "documentation":"

The API was called with invalid parameters. The error message will contain additional details about the cause.

" - } - ], - "documentation":"

Returns the list of AWS Direct Connect locations in the current AWS region. These are the locations that may be selected when calling CreateConnection or CreateInterconnect.

" - }, - "DescribeVirtualGateways":{ - "name":"DescribeVirtualGateways", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "output":{ - "shape":"VirtualGateways", - "documentation":"

A structure containing a list of virtual private gateways.

" - }, - "errors":[ - { - "shape":"DirectConnectServerException", - "exception":true, - "documentation":"

A server-side error occurred during the API call. The error message will contain additional details about the cause.

" - }, - { - "shape":"DirectConnectClientException", - "exception":true, - "documentation":"

The API was called with invalid parameters. The error message will contain additional details about the cause.

" - } - ], - "documentation":"

Returns a list of virtual private gateways owned by the AWS account.

You can create one or more AWS Direct Connect private virtual interfaces linking to a virtual private gateway. A virtual private gateway can be managed via Amazon Virtual Private Cloud (VPC) console or the EC2 CreateVpnGateway action.

" - }, - "DescribeVirtualInterfaces":{ - "name":"DescribeVirtualInterfaces", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DescribeVirtualInterfacesRequest", - "documentation":"

Container for the parameters to the DescribeVirtualInterfaces operation.

" - }, - "output":{ - "shape":"VirtualInterfaces", - "documentation":"

A structure containing a list of virtual interfaces.

" - }, - "errors":[ - { - "shape":"DirectConnectServerException", - "exception":true, - "documentation":"

A server-side error occurred during the API call. The error message will contain additional details about the cause.

" - }, - { - "shape":"DirectConnectClientException", - "exception":true, - "documentation":"

The API was called with invalid parameters. The error message will contain additional details about the cause.

" - } - ], - "documentation":"

Displays all virtual interfaces for an AWS account. Virtual interfaces deleted fewer than 15 minutes before DescribeVirtualInterfaces is called are also returned. If a connection ID is included then only virtual interfaces associated with this connection will be returned. If a virtual interface ID is included then only a single virtual interface will be returned.

A virtual interface (VLAN) transmits the traffic between the AWS Direct Connect location and the customer.

If a connection ID is provided, only virtual interfaces provisioned on the specified connection will be returned. If a virtual interface ID is provided, only this particular virtual interface will be returned.

" - } - }, - "shapes":{ - "ASN":{ - "type":"integer", - "documentation":"

Autonomous system (AS) number for Border Gateway Protocol (BGP) configuration.

Example: 65000

" - }, - "AllocateConnectionOnInterconnectRequest":{ - "type":"structure", - "required":[ - "bandwidth", - "connectionName", - "ownerAccount", - "interconnectId", - "vlan" - ], - "members":{ - "bandwidth":{ - "shape":"Bandwidth", - "documentation":"

Bandwidth of the connection.

Example: \"500Mbps\"

Default: None

" - }, - "connectionName":{ - "shape":"ConnectionName", - "documentation":"

Name of the provisioned connection.

Example: \"500M Connection to AWS\"

Default: None

" - }, - "ownerAccount":{ - "shape":"OwnerAccount", - "documentation":"

Numeric account Id of the customer for whom the connection will be provisioned.

Example: 123443215678

Default: None

" - }, - "interconnectId":{ - "shape":"InterconnectId", - "documentation":"

ID of the interconnect on which the connection will be provisioned.

Example: dxcon-456abc78

Default: None

" - }, - "vlan":{ - "shape":"VLAN", - "documentation":"

The dedicated VLAN provisioned to the connection.

Example: 101

Default: None

" - } - }, - "documentation":"

Container for the parameters to the AllocateConnectionOnInterconnect operation.

" - }, - "AllocatePrivateVirtualInterfaceRequest":{ - "type":"structure", - "required":[ - "connectionId", - "ownerAccount", - "newPrivateVirtualInterfaceAllocation" - ], - "members":{ - "connectionId":{ - "shape":"ConnectionId", - "documentation":"

The connection ID on which the private virtual interface is provisioned.

Default: None

" - }, - "ownerAccount":{ - "shape":"OwnerAccount", - "documentation":"

The AWS account that will own the new private virtual interface.

Default: None

" - }, - "newPrivateVirtualInterfaceAllocation":{ - "shape":"NewPrivateVirtualInterfaceAllocation", - "documentation":"

Detailed information for the private virtual interface to be provisioned.

Default: None

" - } - }, - "documentation":"

Container for the parameters to the AllocatePrivateVirtualInterface operation.

" - }, - "AllocatePublicVirtualInterfaceRequest":{ - "type":"structure", - "required":[ - "connectionId", - "ownerAccount", - "newPublicVirtualInterfaceAllocation" - ], - "members":{ - "connectionId":{ - "shape":"ConnectionId", - "documentation":"

The connection ID on which the public virtual interface is provisioned.

Default: None

" - }, - "ownerAccount":{ - "shape":"OwnerAccount", - "documentation":"

The AWS account that will own the new public virtual interface.

Default: None

" - }, - "newPublicVirtualInterfaceAllocation":{ - "shape":"NewPublicVirtualInterfaceAllocation", - "documentation":"

Detailed information for the public virtual interface to be provisioned.

Default: None

" - } - }, - "documentation":"

Container for the parameters to the AllocatePublicVirtualInterface operation.

" - }, - "AmazonAddress":{ - "type":"string", - "documentation":"

IP address assigned to the Amazon interface.

Example: 192.168.1.1/30

" - }, - "BGPAuthKey":{ - "type":"string", - "documentation":"

Authentication key for BGP configuration.

Example: asdf34example

" - }, - "Bandwidth":{ - "type":"string", - "documentation":"

Bandwidth of the connection.

Example: 1Gbps

Default: None

" - }, - "CIDR":{"type":"string"}, - "ConfirmConnectionRequest":{ - "type":"structure", - "required":["connectionId"], - "members":{ - "connectionId":{"shape":"ConnectionId"} - }, - "documentation":"

Container for the parameters to the ConfirmConnection operation.

" - }, - "ConfirmConnectionResponse":{ - "type":"structure", - "members":{ - "connectionState":{"shape":"ConnectionState"} - }, - "documentation":"

The response received when ConfirmConnection is called.

" - }, - "ConfirmPrivateVirtualInterfaceRequest":{ - "type":"structure", - "required":[ - "virtualInterfaceId", - "virtualGatewayId" - ], - "members":{ - "virtualInterfaceId":{"shape":"VirtualInterfaceId"}, - "virtualGatewayId":{ - "shape":"VirtualGatewayId", - "documentation":"

ID of the virtual private gateway that will be attached to the virtual interface.

A virtual private gateway can be managed via the Amazon Virtual Private Cloud (VPC) console or the EC2 CreateVpnGateway action.

Default: None

" - } - }, - "documentation":"

Container for the parameters to the ConfirmPrivateVirtualInterface operation.

" - }, - "ConfirmPrivateVirtualInterfaceResponse":{ - "type":"structure", - "members":{ - "virtualInterfaceState":{"shape":"VirtualInterfaceState"} - }, - "documentation":"

The response received when ConfirmPrivateVirtualInterface is called.

" - }, - "ConfirmPublicVirtualInterfaceRequest":{ - "type":"structure", - "required":["virtualInterfaceId"], - "members":{ - "virtualInterfaceId":{"shape":"VirtualInterfaceId"} - }, - "documentation":"

Container for the parameters to the ConfirmPublicVirtualInterface operation.

" - }, - "ConfirmPublicVirtualInterfaceResponse":{ - "type":"structure", - "members":{ - "virtualInterfaceState":{"shape":"VirtualInterfaceState"} - }, - "documentation":"

The response received when ConfirmPublicVirtualInterface is called.

" - }, - "Connection":{ - "type":"structure", - "members":{ - "ownerAccount":{"shape":"OwnerAccount"}, - "connectionId":{"shape":"ConnectionId"}, - "connectionName":{"shape":"ConnectionName"}, - "connectionState":{"shape":"ConnectionState"}, - "region":{"shape":"Region"}, - "location":{"shape":"LocationCode"}, - "bandwidth":{ - "shape":"Bandwidth", - "documentation":"

Bandwidth of the connection.

Example: 1Gbps (for regular connections), or 500Mbps (for hosted connections)

Default: None

" - }, - "vlan":{"shape":"VLAN"}, - "partnerName":{"shape":"PartnerName"} - }, - "documentation":"

A connection represents the physical network connection between the AWS Direct Connect location and the customer.

" - }, - "ConnectionId":{ - "type":"string", - "documentation":"

ID of the connection.

Example: dxcon-fg5678gh

Default: None

" - }, - "ConnectionList":{ - "type":"list", - "member":{"shape":"Connection"}, - "documentation":"

A list of connections.

" - }, - "ConnectionName":{ - "type":"string", - "documentation":"

The name of the connection.

Example: \"My Connection to AWS\"

Default: None

" - }, - "ConnectionState":{ - "type":"string", - "enum":[ - "ordering", - "requested", - "pending", - "available", - "down", - "deleting", - "deleted", - "rejected" - ], - "documentation":"State of the connection. " - }, - "Connections":{ - "type":"structure", - "members":{ - "connections":{ - "shape":"ConnectionList", - "documentation":"

A list of connections.

" - } - }, - "documentation":"

A structure containing a list of connections.

" - }, - "CreateConnectionRequest":{ - "type":"structure", - "required":[ - "location", - "bandwidth", - "connectionName" - ], - "members":{ - "location":{"shape":"LocationCode"}, - "bandwidth":{"shape":"Bandwidth"}, - "connectionName":{"shape":"ConnectionName"} - }, - "documentation":"

Container for the parameters to the CreateConnection operation.

" - }, - "CreateInterconnectRequest":{ - "type":"structure", - "required":[ - "interconnectName", - "bandwidth", - "location" - ], - "members":{ - "interconnectName":{ - "shape":"InterconnectName", - "documentation":"

The name of the interconnect.

Example: \"1G Interconnect to AWS\"

Default: None

" - }, - "bandwidth":{ - "shape":"Bandwidth", - "documentation":"

The port bandwidth

Example: 1Gbps

Default: None

Available values: 1Gbps,10Gbps

" - }, - "location":{ - "shape":"LocationCode", - "documentation":"

Where the interconnect is located

Example: EqSV5

Default: None

" - } - }, - "documentation":"

Container for the parameters to the CreateInterconnect operation.

" - }, - "CreatePrivateVirtualInterfaceRequest":{ - "type":"structure", - "required":[ - "connectionId", - "newPrivateVirtualInterface" - ], - "members":{ - "connectionId":{"shape":"ConnectionId"}, - "newPrivateVirtualInterface":{ - "shape":"NewPrivateVirtualInterface", - "documentation":"

Detailed information for the private virtual interface to be created.

Default: None

" - } - }, - "documentation":"

Container for the parameters to the CreatePrivateVirtualInterface operation.

" - }, - "CreatePublicVirtualInterfaceRequest":{ - "type":"structure", - "required":[ - "connectionId", - "newPublicVirtualInterface" - ], - "members":{ - "connectionId":{"shape":"ConnectionId"}, - "newPublicVirtualInterface":{ - "shape":"NewPublicVirtualInterface", - "documentation":"

Detailed information for the public virtual interface to be created.

Default: None

" - } - }, - "documentation":"

Container for the parameters to the CreatePublicVirtualInterface operation.

" - }, - "CustomerAddress":{ - "type":"string", - "documentation":"

IP address assigned to the customer interface.

Example: 192.168.1.2/30

" - }, - "DeleteConnectionRequest":{ - "type":"structure", - "required":["connectionId"], - "members":{ - "connectionId":{"shape":"ConnectionId"} - }, - "documentation":"

Container for the parameters to the DeleteConnection operation.

" - }, - "DeleteInterconnectRequest":{ - "type":"structure", - "required":["interconnectId"], - "members":{ - "interconnectId":{"shape":"InterconnectId"} - }, - "documentation":"

Container for the parameters to the DeleteInterconnect operation.

" - }, - "DeleteInterconnectResponse":{ - "type":"structure", - "members":{ - "interconnectState":{"shape":"InterconnectState"} - }, - "documentation":"

The response received when DeleteInterconnect is called.

" - }, - "DeleteVirtualInterfaceRequest":{ - "type":"structure", - "required":["virtualInterfaceId"], - "members":{ - "virtualInterfaceId":{"shape":"VirtualInterfaceId"} - }, - "documentation":"

Container for the parameters to the DeleteVirtualInterface operation.

" - }, - "DeleteVirtualInterfaceResponse":{ - "type":"structure", - "members":{ - "virtualInterfaceState":{"shape":"VirtualInterfaceState"} - }, - "documentation":"

The response received when DeleteVirtualInterface is called.

" - }, - "DescribeConnectionsOnInterconnectRequest":{ - "type":"structure", - "required":["interconnectId"], - "members":{ - "interconnectId":{ - "shape":"InterconnectId", - "documentation":"

ID of the interconnect on which a list of connection is provisioned.

Example: dxcon-abc123

Default: None

" - } - }, - "documentation":"

Container for the parameters to the DescribeConnectionsOnInterconnect operation.

" - }, - "DescribeConnectionsRequest":{ - "type":"structure", - "members":{ - "connectionId":{"shape":"ConnectionId"} - }, - "documentation":"

Container for the parameters to the DescribeConnections operation.

" - }, - "DescribeInterconnectsRequest":{ - "type":"structure", - "members":{ - "interconnectId":{"shape":"InterconnectId"} - }, - "documentation":"

Container for the parameters to the DescribeInterconnects operation.

" - }, - "DescribeVirtualInterfacesRequest":{ - "type":"structure", - "members":{ - "connectionId":{"shape":"ConnectionId"}, - "virtualInterfaceId":{"shape":"VirtualInterfaceId"} - }, - "documentation":"

Container for the parameters to the DescribeVirtualInterfaces operation.

" - }, - "DirectConnectClientException":{ - "type":"structure", - "members":{ - "message":{"shape":"ErrorMessage"} - }, - "exception":true, - "documentation":"

The API was called with invalid parameters. The error message will contain additional details about the cause.

" - }, - "DirectConnectServerException":{ - "type":"structure", - "members":{ - "message":{"shape":"ErrorMessage"} - }, - "exception":true, - "documentation":"

A server-side error occurred during the API call. The error message will contain additional details about the cause.

" - }, - "ErrorMessage":{"type":"string"}, - "Interconnect":{ - "type":"structure", - "members":{ - "interconnectId":{"shape":"InterconnectId"}, - "interconnectName":{"shape":"InterconnectName"}, - "interconnectState":{"shape":"InterconnectState"}, - "region":{"shape":"Region"}, - "location":{"shape":"LocationCode"}, - "bandwidth":{"shape":"Bandwidth"} - }, - "documentation":"

An interconnect is a connection that can host other connections.

Like a standard AWS Direct Connect connection, an interconnect represents the physical connection between an AWS Direct Connect partner's network and a specific Direct Connect location. An AWS Direct Connect partner who owns an interconnect can provision hosted connections on the interconnect for their end customers, thereby providing the end customers with connectivity to AWS services.

The resources of the interconnect, including bandwidth and VLAN numbers, are shared by all of the hosted connections on the interconnect, and the owner of the interconnect determines how these resources are assigned.

" - }, - "InterconnectId":{ - "type":"string", - "documentation":"

The ID of the interconnect.

Example: dxcon-abc123

" - }, - "InterconnectList":{ - "type":"list", - "member":{"shape":"Interconnect"}, - "documentation":"

A list of interconnects.

" - }, - "InterconnectName":{ - "type":"string", - "documentation":"

The name of the interconnect.

Example: \"1G Interconnect to AWS\"

" - }, - "InterconnectState":{ - "type":"string", - "enum":[ - "requested", - "pending", - "available", - "down", - "deleting", - "deleted" - ], - "documentation":"State of the interconnect. " - }, - "Interconnects":{ - "type":"structure", - "members":{ - "interconnects":{ - "shape":"InterconnectList", - "documentation":"

A list of interconnects.

" - } - }, - "documentation":"

A structure containing a list of interconnects.

" - }, - "Location":{ - "type":"structure", - "members":{ - "locationCode":{ - "shape":"LocationCode", - "documentation":"

The code used to indicate the AWS Direct Connect location.

" - }, - "locationName":{ - "shape":"LocationName", - "documentation":"

The name of the AWS Direct Connect location. The name includes the colocation partner name and the physical site of the lit building.

" - } - }, - "documentation":"

An AWS Direct Connect location where connections and interconnects can be requested.

" - }, - "LocationCode":{ - "type":"string", - "documentation":"

Where the connection is located.

Example: EqSV5

Default: None

" - }, - "LocationList":{ - "type":"list", - "member":{"shape":"Location"} - }, - "LocationName":{"type":"string"}, - "Locations":{ - "type":"structure", - "members":{ - "locations":{"shape":"LocationList"} - } - }, - "NewPrivateVirtualInterface":{ - "type":"structure", - "required":[ - "virtualInterfaceName", - "vlan", - "asn", - "virtualGatewayId" - ], - "members":{ - "virtualInterfaceName":{"shape":"VirtualInterfaceName"}, - "vlan":{"shape":"VLAN"}, - "asn":{"shape":"ASN"}, - "authKey":{"shape":"BGPAuthKey"}, - "amazonAddress":{"shape":"AmazonAddress"}, - "customerAddress":{"shape":"CustomerAddress"}, - "virtualGatewayId":{"shape":"VirtualGatewayId"} - }, - "documentation":"

A structure containing information about a new private virtual interface.

" - }, - "NewPrivateVirtualInterfaceAllocation":{ - "type":"structure", - "required":[ - "virtualInterfaceName", - "vlan", - "asn" - ], - "members":{ - "virtualInterfaceName":{"shape":"VirtualInterfaceName"}, - "vlan":{"shape":"VLAN"}, - "asn":{"shape":"ASN"}, - "authKey":{"shape":"BGPAuthKey"}, - "amazonAddress":{"shape":"AmazonAddress"}, - "customerAddress":{"shape":"CustomerAddress"} - }, - "documentation":"

A structure containing information about a private virtual interface that will be provisioned on a connection.

" - }, - "NewPublicVirtualInterface":{ - "type":"structure", - "required":[ - "virtualInterfaceName", - "vlan", - "asn", - "amazonAddress", - "customerAddress", - "routeFilterPrefixes" - ], - "members":{ - "virtualInterfaceName":{"shape":"VirtualInterfaceName"}, - "vlan":{"shape":"VLAN"}, - "asn":{"shape":"ASN"}, - "authKey":{"shape":"BGPAuthKey"}, - "amazonAddress":{"shape":"AmazonAddress"}, - "customerAddress":{"shape":"CustomerAddress"}, - "routeFilterPrefixes":{"shape":"RouteFilterPrefixList"} - }, - "documentation":"

A structure containing information about a new public virtual interface.

" - }, - "NewPublicVirtualInterfaceAllocation":{ - "type":"structure", - "required":[ - "virtualInterfaceName", - "vlan", - "asn", - "amazonAddress", - "customerAddress", - "routeFilterPrefixes" - ], - "members":{ - "virtualInterfaceName":{"shape":"VirtualInterfaceName"}, - "vlan":{"shape":"VLAN"}, - "asn":{"shape":"ASN"}, - "authKey":{"shape":"BGPAuthKey"}, - "amazonAddress":{"shape":"AmazonAddress"}, - "customerAddress":{"shape":"CustomerAddress"}, - "routeFilterPrefixes":{"shape":"RouteFilterPrefixList"} - }, - "documentation":"

A structure containing information about a public virtual interface that will be provisioned on a connection.

" - }, - "OwnerAccount":{"type":"string"}, - "PartnerName":{"type":"string"}, - "Region":{ - "type":"string", - "documentation":"

The AWS region where the connection is located.

Example: us-east-1

Default: None

" - }, - "RouteFilterPrefix":{ - "type":"structure", - "members":{ - "cidr":{ - "shape":"CIDR", - "documentation":"

CIDR notation for the advertised route. Multiple routes are separated by commas.

Example: 10.10.10.0/24,10.10.11.0/24

" - } - }, - "documentation":"

A route filter prefix that the customer can advertise through Border Gateway Protocol (BGP) over a public virtual interface.

" - }, - "RouteFilterPrefixList":{ - "type":"list", - "member":{"shape":"RouteFilterPrefix"}, - "documentation":"

A list of routes to be advertised to the AWS network in this region (public virtual interface) or your VPC (private virtual interface).

" - }, - "RouterConfig":{"type":"string"}, - "VLAN":{ - "type":"integer", - "documentation":"

The VLAN ID.

Example: 101

" - }, - "VirtualGateway":{ - "type":"structure", - "members":{ - "virtualGatewayId":{"shape":"VirtualGatewayId"}, - "virtualGatewayState":{"shape":"VirtualGatewayState"} - }, - "documentation":"

You can create one or more AWS Direct Connect private virtual interfaces linking to your virtual private gateway.

Virtual private gateways can be managed using the Amazon Virtual Private Cloud (Amazon VPC) console or the Amazon EC2 CreateVpnGateway action.

" - }, - "VirtualGatewayId":{ - "type":"string", - "documentation":"

The ID of the virtual private gateway to a VPC. This only applies to private virtual interfaces.

Example: vgw-123er56

" - }, - "VirtualGatewayList":{ - "type":"list", - "member":{"shape":"VirtualGateway"}, - "documentation":"

A list of virtual private gateways.

" - }, - "VirtualGatewayState":{ - "type":"string", - "documentation":"State of the virtual private gateway. " - }, - "VirtualGateways":{ - "type":"structure", - "members":{ - "virtualGateways":{ - "shape":"VirtualGatewayList", - "documentation":"

A list of virtual private gateways.

" - } - }, - "documentation":"

A structure containing a list of virtual private gateways.

" - }, - "VirtualInterface":{ - "type":"structure", - "members":{ - "ownerAccount":{"shape":"OwnerAccount"}, - "virtualInterfaceId":{"shape":"VirtualInterfaceId"}, - "location":{"shape":"LocationCode"}, - "connectionId":{"shape":"ConnectionId"}, - "virtualInterfaceType":{"shape":"VirtualInterfaceType"}, - "virtualInterfaceName":{"shape":"VirtualInterfaceName"}, - "vlan":{"shape":"VLAN"}, - "asn":{"shape":"ASN"}, - "authKey":{"shape":"BGPAuthKey"}, - "amazonAddress":{"shape":"AmazonAddress"}, - "customerAddress":{"shape":"CustomerAddress"}, - "virtualInterfaceState":{"shape":"VirtualInterfaceState"}, - "customerRouterConfig":{ - "shape":"RouterConfig", - "documentation":"

Information for generating the customer router configuration.

" - }, - "virtualGatewayId":{"shape":"VirtualGatewayId"}, - "routeFilterPrefixes":{"shape":"RouteFilterPrefixList"} - }, - "documentation":"

A virtual interface (VLAN) transmits the traffic between the AWS Direct Connect location and the customer.

" - }, - "VirtualInterfaceId":{ - "type":"string", - "documentation":"

ID of the virtual interface.

Example: dxvif-123dfg56

Default: None

" - }, - "VirtualInterfaceList":{ - "type":"list", - "member":{"shape":"VirtualInterface"}, - "documentation":"

A list of virtual interfaces.

" - }, - "VirtualInterfaceName":{ - "type":"string", - "documentation":"

The name of the virtual interface assigned by the customer.

Example: \"My VPC\"

" - }, - "VirtualInterfaceState":{ - "type":"string", - "enum":[ - "confirming", - "verifying", - "pending", - "available", - "deleting", - "deleted", - "rejected" - ], - "documentation":"State of the virtual interface. " - }, - "VirtualInterfaceType":{ - "type":"string", - "documentation":"

The type of virtual interface.

Example: private (Amazon VPC) or public (Amazon S3, Amazon DynamoDB, and so on.)

" - }, - "VirtualInterfaces":{ - "type":"structure", - "members":{ - "virtualInterfaces":{ - "shape":"VirtualInterfaceList", - "documentation":"

A list of virtual interfaces.

" - } - }, - "documentation":"

A structure containing a list of virtual interfaces.

" - } - } -} diff --git a/src/github.com/getlantern/aws-sdk-go/apis/dynamodb/2012-08-10.normal.json b/src/github.com/getlantern/aws-sdk-go/apis/dynamodb/2012-08-10.normal.json deleted file mode 100644 index 63d87961b2..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/apis/dynamodb/2012-08-10.normal.json +++ /dev/null @@ -1,1987 +0,0 @@ -{ - "metadata":{ - "apiVersion":"2012-08-10", - "endpointPrefix":"dynamodb", - "jsonVersion":"1.0", - "serviceAbbreviation":"DynamoDB", - "serviceFullName":"Amazon DynamoDB", - "signatureVersion":"v4", - "targetPrefix":"DynamoDB_20120810", - "protocol":"json" - }, - "documentation":"Amazon DynamoDB Overview

This is the Amazon DynamoDB API Reference. This guide provides descriptions and samples of the low-level DynamoDB API. For information about DynamoDB application development, go to the Amazon DynamoDB Developer Guide.

Instead of making the requests to the low-level DynamoDB API directly from your application, we recommend that you use the AWS Software Development Kits (SDKs). The easy-to-use libraries in the AWS SDKs make it unnecessary to call the low-level DynamoDB API directly from your application. The libraries take care of request authentication, serialization, and connection management. For more information, go to Using the AWS SDKs with DynamoDB in the Amazon DynamoDB Developer Guide.

If you decide to code against the low-level DynamoDB API directly, you will need to write the necessary code to authenticate your requests. For more information on signing your requests, go to Using the DynamoDB API in the Amazon DynamoDB Developer Guide.

The following are short descriptions of each low-level API action, organized by function.

Managing Tables

For conceptual information about managing tables, go to Working with Tables in the Amazon DynamoDB Developer Guide.

Reading Data

For conceptual information about reading data, go to Working with Items and Query and Scan Operations in the Amazon DynamoDB Developer Guide.

Modifying Data

For conceptual information about modifying data, go to Working with Items and Query and Scan Operations in the Amazon DynamoDB Developer Guide.

", - "operations":{ - "BatchGetItem":{ - "name":"BatchGetItem", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"BatchGetItemInput", - "documentation":"

Represents the input of a BatchGetItem operation.

" - }, - "output":{ - "shape":"BatchGetItemOutput", - "documentation":"

Represents the output of a BatchGetItem operation.

" - }, - "errors":[ - { - "shape":"ProvisionedThroughputExceededException", - "exception":true, - "documentation":"

The request rate is too high, or the request is too large, for the available throughput to accommodate. The AWS SDKs automatically retry requests that receive this exception; therefore, your request will eventually succeed, unless the request is too large or your retry queue is too large to finish. Reduce the frequency of requests by using the strategies listed in Error Retries and Exponential Backoff in the Amazon DynamoDB Developer Guide.

" - }, - { - "shape":"ResourceNotFoundException", - "exception":true, - "documentation":"

The operation tried to access a nonexistent table or index. The resource might not be specified correctly, or its status might not be ACTIVE.

" - }, - { - "shape":"InternalServerError", - "exception":true, - "fault":true, - "documentation":"

An error occurred on the server side.

" - } - ], - "documentation":"

The BatchGetItem operation returns the attributes of one or more items from one or more tables. You identify requested items by primary key.

A single operation can retrieve up to 16 MB of data, which can contain as many as 100 items. BatchGetItem will return a partial result if the response size limit is exceeded, the table's provisioned throughput is exceeded, or an internal processing failure occurs. If a partial result is returned, the operation returns a value for UnprocessedKeys. You can use this value to retry the operation starting with the next item to get.

For example, if you ask to retrieve 100 items, but each individual item is 300 KB in size, the system returns 52 items (so as not to exceed the 16 MB limit). It also returns an appropriate UnprocessedKeys value so you can get the next page of results. If desired, your application can include its own logic to assemble the pages of results into one data set.

If none of the items can be processed due to insufficient provisioned throughput on all of the tables in the request, then BatchGetItem will return a ProvisionedThroughputExceededException. If at least one of the items is successfully processed, then BatchGetItem completes successfully, while returning the keys of the unread items in UnprocessedKeys.

If DynamoDB returns any unprocessed items, you should retry the batch operation on those items. However, we strongly recommend that you use an exponential backoff algorithm. If you retry the batch operation immediately, the underlying read or write requests can still fail due to throttling on the individual tables. If you delay the batch operation using exponential backoff, the individual requests in the batch are much more likely to succeed.

For more information, go to Batch Operations and Error Handling in the Amazon DynamoDB Developer Guide.

By default, BatchGetItem performs eventually consistent reads on every table in the request. If you want strongly consistent reads instead, you can set ConsistentRead to true for any or all tables.

In order to minimize response latency, BatchGetItem retrieves items in parallel.

When designing your application, keep in mind that DynamoDB does not return attributes in any particular order. To help parse the response by item, include the primary key values for the items in your request in the AttributesToGet parameter.

If a requested item does not exist, it is not returned in the result. Requests for nonexistent items consume the minimum read capacity units according to the type of read. For more information, see Capacity Units Calculations in the Amazon DynamoDB Developer Guide.

" - }, - "BatchWriteItem":{ - "name":"BatchWriteItem", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"BatchWriteItemInput", - "documentation":"

Represents the input of a BatchWriteItem operation.

" - }, - "output":{ - "shape":"BatchWriteItemOutput", - "documentation":"

Represents the output of a BatchWriteItem operation.

" - }, - "errors":[ - { - "shape":"ProvisionedThroughputExceededException", - "exception":true, - "documentation":"

The request rate is too high, or the request is too large, for the available throughput to accommodate. The AWS SDKs automatically retry requests that receive this exception; therefore, your request will eventually succeed, unless the request is too large or your retry queue is too large to finish. Reduce the frequency of requests by using the strategies listed in Error Retries and Exponential Backoff in the Amazon DynamoDB Developer Guide.

" - }, - { - "shape":"ResourceNotFoundException", - "exception":true, - "documentation":"

The operation tried to access a nonexistent table or index. The resource might not be specified correctly, or its status might not be ACTIVE.

" - }, - { - "shape":"ItemCollectionSizeLimitExceededException", - "exception":true, - "documentation":"

An item collection is too large. This exception is only returned for tables that have one or more local secondary indexes.

" - }, - { - "shape":"InternalServerError", - "exception":true, - "fault":true, - "documentation":"

An error occurred on the server side.

" - } - ], - "documentation":"

The BatchWriteItem operation puts or deletes multiple items in one or more tables. A single call to BatchWriteItem can write up to 16 MB of data, which can comprise as many as 25 put or delete requests. Individual items to be written can be as large as 400 KB.

The individual PutItem and DeleteItem operations specified in BatchWriteItem are atomic; however BatchWriteItem as a whole is not. If any requested operations fail because the table's provisioned throughput is exceeded or an internal processing failure occurs, the failed operations are returned in the UnprocessedItems response parameter. You can investigate and optionally resend the requests. Typically, you would call BatchWriteItem in a loop. Each iteration would check for unprocessed items and submit a new BatchWriteItem request with those unprocessed items until all items have been processed.

Note that if none of the items can be processed due to insufficient provisioned throughput on all of the tables in the request, then BatchWriteItem will return a ProvisionedThroughputExceededException.

If DynamoDB returns any unprocessed items, you should retry the batch operation on those items. However, we strongly recommend that you use an exponential backoff algorithm. If you retry the batch operation immediately, the underlying read or write requests can still fail due to throttling on the individual tables. If you delay the batch operation using exponential backoff, the individual requests in the batch are much more likely to succeed.

For more information, go to Batch Operations and Error Handling in the Amazon DynamoDB Developer Guide.

With BatchWriteItem, you can efficiently write or delete large amounts of data, such as from Amazon Elastic MapReduce (EMR), or copy data from another database into DynamoDB. In order to improve performance with these large-scale operations, BatchWriteItem does not behave in the same way as individual PutItem and DeleteItem calls would For example, you cannot specify conditions on individual put and delete requests, and BatchWriteItem does not return deleted items in the response.

If you use a programming language that supports concurrency, such as Java, you can use threads to write items in parallel. Your application must include the necessary logic to manage the threads. With languages that don't support threading, such as PHP, you must update or delete the specified items one at a time. In both situations, BatchWriteItem provides an alternative where the API performs the specified put and delete operations in parallel, giving you the power of the thread pool approach without having to introduce complexity into your application.

Parallel processing reduces latency, but each specified put and delete request consumes the same number of write capacity units whether it is processed in parallel or not. Delete operations on nonexistent items consume one write capacity unit.

If one or more of the following is true, DynamoDB rejects the entire batch write operation:

" - }, - "CreateTable":{ - "name":"CreateTable", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"CreateTableInput", - "documentation":"

Represents the input of a CreateTable operation.

" - }, - "output":{ - "shape":"CreateTableOutput", - "documentation":"

Represents the output of a CreateTable operation.

" - }, - "errors":[ - { - "shape":"ResourceInUseException", - "exception":true, - "documentation":"

The operation conflicts with the resource's availability. For example, you attempted to recreate an existing table, or tried to delete a table currently in the CREATING state.

" - }, - { - "shape":"LimitExceededException", - "exception":true, - "documentation":"

The number of concurrent table requests (cumulative number of tables in the CREATING, DELETING or UPDATING state) exceeds the maximum allowed of 10.

Also, for tables with secondary indexes, only one of those tables can be in the CREATING state at any point in time. Do not attempt to create more than one such table simultaneously.

The total limit of tables in the ACTIVE state is 250.

" - }, - { - "shape":"InternalServerError", - "exception":true, - "fault":true, - "documentation":"

An error occurred on the server side.

" - } - ], - "documentation":"

The CreateTable operation adds a new table to your account. In an AWS account, table names must be unique within each region. That is, you can have two tables with same name if you create the tables in different regions.

CreateTable is an asynchronous operation. Upon receiving a CreateTable request, DynamoDB immediately returns a response with a TableStatus of CREATING. After the table is created, DynamoDB sets the TableStatus to ACTIVE. You can perform read and write operations only on an ACTIVE table.

If you want to create multiple tables with secondary indexes on them, you must create them sequentially. Only one table with secondary indexes can be in the CREATING state at any given time.

You can use the DescribeTable API to check the table status.

" - }, - "DeleteItem":{ - "name":"DeleteItem", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DeleteItemInput", - "documentation":"

Represents the input of a DeleteItem operation.

" - }, - "output":{ - "shape":"DeleteItemOutput", - "documentation":"

Represents the output of a DeleteItem operation.

" - }, - "errors":[ - { - "shape":"ConditionalCheckFailedException", - "exception":true, - "documentation":"

A condition specified in the operation could not be evaluated.

" - }, - { - "shape":"ProvisionedThroughputExceededException", - "exception":true, - "documentation":"

The request rate is too high, or the request is too large, for the available throughput to accommodate. The AWS SDKs automatically retry requests that receive this exception; therefore, your request will eventually succeed, unless the request is too large or your retry queue is too large to finish. Reduce the frequency of requests by using the strategies listed in Error Retries and Exponential Backoff in the Amazon DynamoDB Developer Guide.

" - }, - { - "shape":"ResourceNotFoundException", - "exception":true, - "documentation":"

The operation tried to access a nonexistent table or index. The resource might not be specified correctly, or its status might not be ACTIVE.

" - }, - { - "shape":"ItemCollectionSizeLimitExceededException", - "exception":true, - "documentation":"

An item collection is too large. This exception is only returned for tables that have one or more local secondary indexes.

" - }, - { - "shape":"InternalServerError", - "exception":true, - "fault":true, - "documentation":"

An error occurred on the server side.

" - } - ], - "documentation":"

Deletes a single item in a table by primary key. You can perform a conditional delete operation that deletes the item if it exists, or if it has an expected attribute value.

In addition to deleting an item, you can also return the item's attribute values in the same operation, using the ReturnValues parameter.

Unless you specify conditions, the DeleteItem is an idempotent operation; running it multiple times on the same item or attribute does not result in an error response.

Conditional deletes are useful for deleting items only if specific conditions are met. If those conditions are met, DynamoDB performs the delete. Otherwise, the item is not deleted.

" - }, - "DeleteTable":{ - "name":"DeleteTable", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DeleteTableInput", - "documentation":"

Represents the input of a DeleteTable operation.

" - }, - "output":{ - "shape":"DeleteTableOutput", - "documentation":"

Represents the output of a DeleteTable operation.

" - }, - "errors":[ - { - "shape":"ResourceInUseException", - "exception":true, - "documentation":"

The operation conflicts with the resource's availability. For example, you attempted to recreate an existing table, or tried to delete a table currently in the CREATING state.

" - }, - { - "shape":"ResourceNotFoundException", - "exception":true, - "documentation":"

The operation tried to access a nonexistent table or index. The resource might not be specified correctly, or its status might not be ACTIVE.

" - }, - { - "shape":"LimitExceededException", - "exception":true, - "documentation":"

The number of concurrent table requests (cumulative number of tables in the CREATING, DELETING or UPDATING state) exceeds the maximum allowed of 10.

Also, for tables with secondary indexes, only one of those tables can be in the CREATING state at any point in time. Do not attempt to create more than one such table simultaneously.

The total limit of tables in the ACTIVE state is 250.

" - }, - { - "shape":"InternalServerError", - "exception":true, - "fault":true, - "documentation":"

An error occurred on the server side.

" - } - ], - "documentation":"

The DeleteTable operation deletes a table and all of its items. After a DeleteTable request, the specified table is in the DELETING state until DynamoDB completes the deletion. If the table is in the ACTIVE state, you can delete it. If a table is in CREATING or UPDATING states, then DynamoDB returns a ResourceInUseException. If the specified table does not exist, DynamoDB returns a ResourceNotFoundException. If table is already in the DELETING state, no error is returned.

When you delete a table, any indexes on that table are also deleted.

Use the DescribeTable API to check the status of the table.

" - }, - "DescribeTable":{ - "name":"DescribeTable", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DescribeTableInput", - "documentation":"

Represents the input of a DescribeTable operation.

" - }, - "output":{ - "shape":"DescribeTableOutput", - "documentation":"

Represents the output of a DescribeTable operation.

" - }, - "errors":[ - { - "shape":"ResourceNotFoundException", - "exception":true, - "documentation":"

The operation tried to access a nonexistent table or index. The resource might not be specified correctly, or its status might not be ACTIVE.

" - }, - { - "shape":"InternalServerError", - "exception":true, - "fault":true, - "documentation":"

An error occurred on the server side.

" - } - ], - "documentation":"

Returns information about the table, including the current status of the table, when it was created, the primary key schema, and any indexes on the table.

" - }, - "GetItem":{ - "name":"GetItem", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"GetItemInput", - "documentation":"

Represents the input of a GetItem operation.

" - }, - "output":{ - "shape":"GetItemOutput", - "documentation":"

Represents the output of a GetItem operation.

" - }, - "errors":[ - { - "shape":"ProvisionedThroughputExceededException", - "exception":true, - "documentation":"

The request rate is too high, or the request is too large, for the available throughput to accommodate. The AWS SDKs automatically retry requests that receive this exception; therefore, your request will eventually succeed, unless the request is too large or your retry queue is too large to finish. Reduce the frequency of requests by using the strategies listed in Error Retries and Exponential Backoff in the Amazon DynamoDB Developer Guide.

" - }, - { - "shape":"ResourceNotFoundException", - "exception":true, - "documentation":"

The operation tried to access a nonexistent table or index. The resource might not be specified correctly, or its status might not be ACTIVE.

" - }, - { - "shape":"InternalServerError", - "exception":true, - "fault":true, - "documentation":"

An error occurred on the server side.

" - } - ], - "documentation":"

The GetItem operation returns a set of attributes for the item with the given primary key. If there is no matching item, GetItem does not return any data.

GetItem provides an eventually consistent read by default. If your application requires a strongly consistent read, set ConsistentRead to true. Although a strongly consistent read might take more time than an eventually consistent read, it always returns the last updated value.

" - }, - "ListTables":{ - "name":"ListTables", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"ListTablesInput", - "documentation":"

Represents the input of a ListTables operation.

" - }, - "output":{ - "shape":"ListTablesOutput", - "documentation":"

Represents the output of a ListTables operation.

" - }, - "errors":[ - { - "shape":"InternalServerError", - "exception":true, - "fault":true, - "documentation":"

An error occurred on the server side.

" - } - ], - "documentation":"

Returns an array of table names associated with the current account and endpoint. The output from ListTables is paginated, with each page returning a maximum of 100 table names.

" - }, - "PutItem":{ - "name":"PutItem", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"PutItemInput", - "documentation":"

Represents the input of a PutItem operation.

" - }, - "output":{ - "shape":"PutItemOutput", - "documentation":"

Represents the output of a PutItem operation.

" - }, - "errors":[ - { - "shape":"ConditionalCheckFailedException", - "exception":true, - "documentation":"

A condition specified in the operation could not be evaluated.

" - }, - { - "shape":"ProvisionedThroughputExceededException", - "exception":true, - "documentation":"

The request rate is too high, or the request is too large, for the available throughput to accommodate. The AWS SDKs automatically retry requests that receive this exception; therefore, your request will eventually succeed, unless the request is too large or your retry queue is too large to finish. Reduce the frequency of requests by using the strategies listed in Error Retries and Exponential Backoff in the Amazon DynamoDB Developer Guide.

" - }, - { - "shape":"ResourceNotFoundException", - "exception":true, - "documentation":"

The operation tried to access a nonexistent table or index. The resource might not be specified correctly, or its status might not be ACTIVE.

" - }, - { - "shape":"ItemCollectionSizeLimitExceededException", - "exception":true, - "documentation":"

An item collection is too large. This exception is only returned for tables that have one or more local secondary indexes.

" - }, - { - "shape":"InternalServerError", - "exception":true, - "fault":true, - "documentation":"

An error occurred on the server side.

" - } - ], - "documentation":"

Creates a new item, or replaces an old item with a new item. If an item that has the same primary key as the new item already exists in the specified table, the new item completely replaces the existing item. You can perform a conditional put operation (add a new item if one with the specified primary key doesn't exist), or replace an existing item if it has certain attribute values.

In addition to putting an item, you can also return the item's attribute values in the same operation, using the ReturnValues parameter.

When you add an item, the primary key attribute(s) are the only required attributes. Attribute values cannot be null. String and Binary type attributes must have lengths greater than zero. Set type attributes cannot be empty. Requests with empty values will be rejected with a ValidationException exception.

You can request that PutItem return either a copy of the original item (before the update) or a copy of the updated item (after the update). For more information, see the ReturnValues description below.

For more information about using this API, see Working with Items in the Amazon DynamoDB Developer Guide.

" - }, - "Query":{ - "name":"Query", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"QueryInput", - "documentation":"

Represents the input of a Query operation.

" - }, - "output":{ - "shape":"QueryOutput", - "documentation":"

Represents the output of a Query operation.

" - }, - "errors":[ - { - "shape":"ProvisionedThroughputExceededException", - "exception":true, - "documentation":"

The request rate is too high, or the request is too large, for the available throughput to accommodate. The AWS SDKs automatically retry requests that receive this exception; therefore, your request will eventually succeed, unless the request is too large or your retry queue is too large to finish. Reduce the frequency of requests by using the strategies listed in Error Retries and Exponential Backoff in the Amazon DynamoDB Developer Guide.

" - }, - { - "shape":"ResourceNotFoundException", - "exception":true, - "documentation":"

The operation tried to access a nonexistent table or index. The resource might not be specified correctly, or its status might not be ACTIVE.

" - }, - { - "shape":"InternalServerError", - "exception":true, - "fault":true, - "documentation":"

An error occurred on the server side.

" - } - ], - "documentation":"

A Query operation directly accesses items from a table using the table primary key, or from an index using the index key. You must provide a specific hash key value. You can narrow the scope of the query by using comparison operators on the range key value, or on the index key. You can use the ScanIndexForward parameter to get results in forward or reverse order, by range key or by index key.

Queries that do not return results consume the minimum number of read capacity units for that type of read operation.

If the total number of items meeting the query criteria exceeds the result set size limit of 1 MB, the query stops and results are returned to the user with LastEvaluatedKey to continue the query in a subsequent operation. Unlike a Scan operation, a Query operation never returns both an empty result set and a LastEvaluatedKey. The LastEvaluatedKey is only provided if the results exceed 1 MB, or if you have used Limit.

You can query a table, a local secondary index, or a global secondary index. For a query on a table or on a local secondary index, you can set ConsistentRead to true and obtain a strongly consistent result. Global secondary indexes support eventually consistent reads only, so do not specify ConsistentRead when querying a global secondary index.

" - }, - "Scan":{ - "name":"Scan", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"ScanInput", - "documentation":"

Represents the input of a Scan operation.

" - }, - "output":{ - "shape":"ScanOutput", - "documentation":"

Represents the output of a Scan operation.

" - }, - "errors":[ - { - "shape":"ProvisionedThroughputExceededException", - "exception":true, - "documentation":"

The request rate is too high, or the request is too large, for the available throughput to accommodate. The AWS SDKs automatically retry requests that receive this exception; therefore, your request will eventually succeed, unless the request is too large or your retry queue is too large to finish. Reduce the frequency of requests by using the strategies listed in Error Retries and Exponential Backoff in the Amazon DynamoDB Developer Guide.

" - }, - { - "shape":"ResourceNotFoundException", - "exception":true, - "documentation":"

The operation tried to access a nonexistent table or index. The resource might not be specified correctly, or its status might not be ACTIVE.

" - }, - { - "shape":"InternalServerError", - "exception":true, - "fault":true, - "documentation":"

An error occurred on the server side.

" - } - ], - "documentation":"

The Scan operation returns one or more items and item attributes by accessing every item in the table. To have DynamoDB return fewer items, you can provide a ScanFilter operation.

If the total number of scanned items exceeds the maximum data set size limit of 1 MB, the scan stops and results are returned to the user as a LastEvaluatedKey value to continue the scan in a subsequent operation. The results also include the number of items exceeding the limit. A scan can result in no table data meeting the filter criteria.

The result set is eventually consistent.

By default, Scan operations proceed sequentially; however, for faster performance on large tables, applications can request a parallel Scan operation by specifying the Segment and TotalSegments parameters. For more information, see Parallel Scan in the Amazon DynamoDB Developer Guide.

" - }, - "UpdateItem":{ - "name":"UpdateItem", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"UpdateItemInput", - "documentation":"

Represents the input of an UpdateItem operation.

" - }, - "output":{ - "shape":"UpdateItemOutput", - "documentation":"

Represents the output of an UpdateItem operation.

" - }, - "errors":[ - { - "shape":"ConditionalCheckFailedException", - "exception":true, - "documentation":"

A condition specified in the operation could not be evaluated.

" - }, - { - "shape":"ProvisionedThroughputExceededException", - "exception":true, - "documentation":"

The request rate is too high, or the request is too large, for the available throughput to accommodate. The AWS SDKs automatically retry requests that receive this exception; therefore, your request will eventually succeed, unless the request is too large or your retry queue is too large to finish. Reduce the frequency of requests by using the strategies listed in Error Retries and Exponential Backoff in the Amazon DynamoDB Developer Guide.

" - }, - { - "shape":"ResourceNotFoundException", - "exception":true, - "documentation":"

The operation tried to access a nonexistent table or index. The resource might not be specified correctly, or its status might not be ACTIVE.

" - }, - { - "shape":"ItemCollectionSizeLimitExceededException", - "exception":true, - "documentation":"

An item collection is too large. This exception is only returned for tables that have one or more local secondary indexes.

" - }, - { - "shape":"InternalServerError", - "exception":true, - "fault":true, - "documentation":"

An error occurred on the server side.

" - } - ], - "documentation":"

Edits an existing item's attributes, or adds a new item to the table if it does not already exist. You can put, delete, or add attribute values. You can also perform a conditional update (insert a new attribute name-value pair if it doesn't exist, or replace an existing name-value pair if it has certain expected attribute values).

You can also return the item's attribute values in the same UpdateItem operation using the ReturnValues parameter.

" - }, - "UpdateTable":{ - "name":"UpdateTable", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"UpdateTableInput", - "documentation":"

Represents the input of an UpdateTable operation.

" - }, - "output":{ - "shape":"UpdateTableOutput", - "documentation":"

Represents the output of an UpdateTable operation.

" - }, - "errors":[ - { - "shape":"ResourceInUseException", - "exception":true, - "documentation":"

The operation conflicts with the resource's availability. For example, you attempted to recreate an existing table, or tried to delete a table currently in the CREATING state.

" - }, - { - "shape":"ResourceNotFoundException", - "exception":true, - "documentation":"

The operation tried to access a nonexistent table or index. The resource might not be specified correctly, or its status might not be ACTIVE.

" - }, - { - "shape":"LimitExceededException", - "exception":true, - "documentation":"

The number of concurrent table requests (cumulative number of tables in the CREATING, DELETING or UPDATING state) exceeds the maximum allowed of 10.

Also, for tables with secondary indexes, only one of those tables can be in the CREATING state at any point in time. Do not attempt to create more than one such table simultaneously.

The total limit of tables in the ACTIVE state is 250.

" - }, - { - "shape":"InternalServerError", - "exception":true, - "fault":true, - "documentation":"

An error occurred on the server side.

" - } - ], - "documentation":"

Updates the provisioned throughput for the given table. Setting the throughput for a table helps you manage performance and is part of the provisioned throughput feature of DynamoDB.

The provisioned throughput values can be upgraded or downgraded based on the maximums and minimums listed in the Limits section in the Amazon DynamoDB Developer Guide.

The table must be in the ACTIVE state for this operation to succeed. UpdateTable is an asynchronous operation; while executing the operation, the table is in the UPDATING state. While the table is in the UPDATING state, the table still has the provisioned throughput from before the call. The new provisioned throughput setting is in effect only when the table returns to the ACTIVE state after the UpdateTable operation.

You cannot add, modify or delete indexes using UpdateTable. Indexes can only be defined at table creation time.

" - } - }, - "shapes":{ - "AttributeAction":{ - "type":"string", - "enum":[ - "ADD", - "PUT", - "DELETE" - ] - }, - "AttributeDefinition":{ - "type":"structure", - "required":[ - "AttributeName", - "AttributeType" - ], - "members":{ - "AttributeName":{ - "shape":"KeySchemaAttributeName", - "documentation":"

A name for the attribute.

" - }, - "AttributeType":{ - "shape":"ScalarAttributeType", - "documentation":"

The data type for the attribute.

" - } - }, - "documentation":"

Represents an attribute for describing the key schema for the table and indexes.

" - }, - "AttributeDefinitions":{ - "type":"list", - "member":{"shape":"AttributeDefinition"} - }, - "AttributeMap":{ - "type":"map", - "key":{"shape":"AttributeName"}, - "value":{"shape":"AttributeValue"} - }, - "AttributeName":{ - "type":"string", - "max":65535 - }, - "AttributeNameList":{ - "type":"list", - "member":{"shape":"AttributeName"}, - "min":1 - }, - "AttributeUpdates":{ - "type":"map", - "key":{"shape":"AttributeName"}, - "value":{"shape":"AttributeValueUpdate"} - }, - "AttributeValue":{ - "type":"structure", - "members":{ - "S":{ - "shape":"StringAttributeValue", - "documentation":"

A String data type.

" - }, - "N":{ - "shape":"NumberAttributeValue", - "documentation":"

A Number data type.

" - }, - "B":{ - "shape":"BinaryAttributeValue", - "documentation":"

A Binary data type.

" - }, - "SS":{ - "shape":"StringSetAttributeValue", - "documentation":"

A String Set data type.

" - }, - "NS":{ - "shape":"NumberSetAttributeValue", - "documentation":"

A Number Set data type.

" - }, - "BS":{ - "shape":"BinarySetAttributeValue", - "documentation":"

A Binary Set data type.

" - }, - "M":{ - "shape":"MapAttributeValue", - "documentation":"

A Map of attribute values.

" - }, - "L":{ - "shape":"ListAttributeValue", - "documentation":"

A List of attribute values.

" - }, - "NULL":{ - "shape":"NullAttributeValue", - "documentation":"

A Null data type.

" - }, - "BOOL":{ - "shape":"BooleanAttributeValue", - "documentation":"

A Boolean data type.

" - } - }, - "documentation":"

Represents the data for an attribute. You can set one, and only one, of the elements.

Each attribute in an item is a name-value pair. An attribute can be single-valued or multi-valued set. For example, a book item can have title and authors attributes. Each book has one title but can have many authors. The multi-valued attribute is a set; duplicate values are not allowed.

" - }, - "AttributeValueList":{ - "type":"list", - "member":{"shape":"AttributeValue"} - }, - "AttributeValueUpdate":{ - "type":"structure", - "members":{ - "Value":{"shape":"AttributeValue"}, - "Action":{ - "shape":"AttributeAction", - "documentation":"

Specifies how to perform the update. Valid values are PUT (default), DELETE, and ADD. The behavior depends on whether the specified primary key already exists in the table.

If an item with the specified Key is found in the table:

If no item with the specified Key is found:

" - } - }, - "documentation":"

For the UpdateItem operation, represents the attributes to be modified, the action to perform on each, and the new value for each.

Attribute values cannot be null; string and binary type attributes must have lengths greater than zero; and set type attributes must not be empty. Requests with empty values will be rejected with a ValidationException exception.

" - }, - "BatchGetItemInput":{ - "type":"structure", - "required":["RequestItems"], - "members":{ - "RequestItems":{ - "shape":"BatchGetRequestMap", - "documentation":"

A map of one or more table names and, for each table, the corresponding primary keys for the items to retrieve. Each table name can be invoked only once.

Each element in the map consists of the following:

" - }, - "ReturnConsumedCapacity":{"shape":"ReturnConsumedCapacity"} - }, - "documentation":"

Represents the input of a BatchGetItem operation.

" - }, - "BatchGetItemOutput":{ - "type":"structure", - "members":{ - "Responses":{ - "shape":"BatchGetResponseMap", - "documentation":"

A map of table name to a list of items. Each object in Responses consists of a table name, along with a map of attribute data consisting of the data type and attribute value.

" - }, - "UnprocessedKeys":{ - "shape":"BatchGetRequestMap", - "documentation":"

A map of tables and their respective keys that were not processed with the current response. The UnprocessedKeys value is in the same form as RequestItems, so the value can be provided directly to a subsequent BatchGetItem operation. For more information, see RequestItems in the Request Parameters section.

Each element consists of:

If there are no unprocessed keys remaining, the response contains an empty UnprocessedKeys map.

" - }, - "ConsumedCapacity":{ - "shape":"ConsumedCapacityMultiple", - "documentation":"

The write capacity units consumed by the operation.

Each element consists of:

" - } - }, - "documentation":"

Represents the output of a BatchGetItem operation.

" - }, - "BatchGetRequestMap":{ - "type":"map", - "key":{"shape":"TableName"}, - "value":{"shape":"KeysAndAttributes"}, - "min":1, - "max":100 - }, - "BatchGetResponseMap":{ - "type":"map", - "key":{"shape":"TableName"}, - "value":{"shape":"ItemList"} - }, - "BatchWriteItemInput":{ - "type":"structure", - "required":["RequestItems"], - "members":{ - "RequestItems":{ - "shape":"BatchWriteItemRequestMap", - "documentation":"

A map of one or more table names and, for each table, a list of operations to be performed (DeleteRequest or PutRequest). Each element in the map consists of the following:

" - }, - "ReturnConsumedCapacity":{"shape":"ReturnConsumedCapacity"}, - "ReturnItemCollectionMetrics":{ - "shape":"ReturnItemCollectionMetrics", - "documentation":"

A value that if set to SIZE, the response includes statistics about item collections, if any, that were modified during the operation are returned in the response. If set to NONE (the default), no statistics are returned.

" - } - }, - "documentation":"

Represents the input of a BatchWriteItem operation.

" - }, - "BatchWriteItemOutput":{ - "type":"structure", - "members":{ - "UnprocessedItems":{ - "shape":"BatchWriteItemRequestMap", - "documentation":"

A map of tables and requests against those tables that were not processed. The UnprocessedItems value is in the same form as RequestItems, so you can provide this value directly to a subsequent BatchGetItem operation. For more information, see RequestItems in the Request Parameters section.

Each UnprocessedItems entry consists of a table name and, for that table, a list of operations to perform (DeleteRequest or PutRequest).

If there are no unprocessed items remaining, the response contains an empty UnprocessedItems map.

" - }, - "ItemCollectionMetrics":{ - "shape":"ItemCollectionMetricsPerTable", - "documentation":"

A list of tables that were processed by BatchWriteItem and, for each table, information about any item collections that were affected by individual DeleteItem or PutItem operations.

Each entry consists of the following subelements:

" - }, - "ConsumedCapacity":{ - "shape":"ConsumedCapacityMultiple", - "documentation":"

The capacity units consumed by the operation.

Each element consists of:

" - } - }, - "documentation":"

Represents the output of a BatchWriteItem operation.

" - }, - "BatchWriteItemRequestMap":{ - "type":"map", - "key":{"shape":"TableName"}, - "value":{"shape":"WriteRequests"}, - "min":1, - "max":25 - }, - "BinaryAttributeValue":{"type":"blob"}, - "BinarySetAttributeValue":{ - "type":"list", - "member":{"shape":"BinaryAttributeValue"} - }, - "BooleanAttributeValue":{"type":"boolean"}, - "BooleanObject":{"type":"boolean"}, - "Capacity":{ - "type":"structure", - "members":{ - "CapacityUnits":{ - "shape":"ConsumedCapacityUnits", - "documentation":"

The total number of capacity units consumed on a table or an index.

" - } - }, - "documentation":"

Represents the amount of provisioned throughput capacity consumed on a table or an index.

" - }, - "ComparisonOperator":{ - "type":"string", - "enum":[ - "EQ", - "NE", - "IN", - "LE", - "LT", - "GE", - "GT", - "BETWEEN", - "NOT_NULL", - "NULL", - "CONTAINS", - "NOT_CONTAINS", - "BEGINS_WITH" - ] - }, - "Condition":{ - "type":"structure", - "required":["ComparisonOperator"], - "members":{ - "AttributeValueList":{ - "shape":"AttributeValueList", - "documentation":"

One or more values to evaluate against the supplied attribute. The number of values in the list depends on the ComparisonOperator being used.

For type Number, value comparisons are numeric.

String value comparisons for greater than, equals, or less than are based on ASCII character code values. For example, a is greater than A, and aa is greater than B. For a list of code values, see http://en.wikipedia.org/wiki/ASCII#ASCII_printable_characters.

For Binary, DynamoDB treats each byte of the binary data as unsigned when it compares binary values, for example when evaluating query expressions.

" - }, - "ComparisonOperator":{ - "shape":"ComparisonOperator", - "documentation":"

A comparator for evaluating attributes. For example, equals, greater than, less than, etc.

The following comparison operators are available:

EQ | NE | LE | LT | GE | GT | NOT_NULL | NULL | CONTAINS | NOT_CONTAINS | BEGINS_WITH | IN | BETWEEN

The following are descriptions of each comparison operator.

For usage examples of AttributeValueList and ComparisonOperator, see Legacy Conditional Parameters in the Amazon DynamoDB Developer Guide.

" - } - }, - "documentation":"

Represents the selection criteria for a Query or Scan operation:

" - }, - "ConditionExpression":{"type":"string"}, - "ConditionalCheckFailedException":{ - "type":"structure", - "members":{ - "message":{ - "shape":"ErrorMessage", - "documentation":"

The conditional request failed.

" - } - }, - "exception":true, - "documentation":"

A condition specified in the operation could not be evaluated.

" - }, - "ConditionalOperator":{ - "type":"string", - "enum":[ - "AND", - "OR" - ] - }, - "ConsistentRead":{"type":"boolean"}, - "ConsumedCapacity":{ - "type":"structure", - "members":{ - "TableName":{ - "shape":"TableName", - "documentation":"

The name of the table that was affected by the operation.

" - }, - "CapacityUnits":{ - "shape":"ConsumedCapacityUnits", - "documentation":"

The total number of capacity units consumed by the operation.

" - }, - "Table":{ - "shape":"Capacity", - "documentation":"

The amount of throughput consumed on the table affected by the operation.

" - }, - "LocalSecondaryIndexes":{ - "shape":"SecondaryIndexesCapacityMap", - "documentation":"

The amount of throughput consumed on each local index affected by the operation.

" - }, - "GlobalSecondaryIndexes":{ - "shape":"SecondaryIndexesCapacityMap", - "documentation":"

The amount of throughput consumed on each global index affected by the operation.

" - } - }, - "documentation":"

The capacity units consumed by an operation. The data returned includes the total provisioned throughput consumed, along with statistics for the table and any indexes involved in the operation. ConsumedCapacity is only returned if the request asked for it. For more information, see Provisioned Throughput in the Amazon DynamoDB Developer Guide.

" - }, - "ConsumedCapacityMultiple":{ - "type":"list", - "member":{"shape":"ConsumedCapacity"} - }, - "ConsumedCapacityUnits":{"type":"double"}, - "CreateTableInput":{ - "type":"structure", - "required":[ - "AttributeDefinitions", - "TableName", - "KeySchema", - "ProvisionedThroughput" - ], - "members":{ - "AttributeDefinitions":{ - "shape":"AttributeDefinitions", - "documentation":"

An array of attributes that describe the key schema for the table and indexes.

" - }, - "TableName":{ - "shape":"TableName", - "documentation":"

The name of the table to create.

" - }, - "KeySchema":{ - "shape":"KeySchema", - "documentation":"

Specifies the attributes that make up the primary key for a table or an index. The attributes in KeySchema must also be defined in the AttributeDefinitions array. For more information, see Data Model in the Amazon DynamoDB Developer Guide.

Each KeySchemaElement in the array is composed of:

For a primary key that consists of a hash attribute, you must specify exactly one element with a KeyType of HASH.

For a primary key that consists of hash and range attributes, you must specify exactly two elements, in this order: The first element must have a KeyType of HASH, and the second element must have a KeyType of RANGE.

For more information, see Specifying the Primary Key in the Amazon DynamoDB Developer Guide.

" - }, - "LocalSecondaryIndexes":{ - "shape":"LocalSecondaryIndexList", - "documentation":"

One or more local secondary indexes (the maximum is five) to be created on the table. Each index is scoped to a given hash key value. There is a 10 GB size limit per hash key; otherwise, the size of a local secondary index is unconstrained.

Each local secondary index in the array includes the following:

" - }, - "GlobalSecondaryIndexes":{ - "shape":"GlobalSecondaryIndexList", - "documentation":"

One or more global secondary indexes (the maximum is five) to be created on the table. Each global secondary index in the array includes the following:

" - }, - "ProvisionedThroughput":{"shape":"ProvisionedThroughput"} - }, - "documentation":"

Represents the input of a CreateTable operation.

" - }, - "CreateTableOutput":{ - "type":"structure", - "members":{ - "TableDescription":{"shape":"TableDescription"} - }, - "documentation":"

Represents the output of a CreateTable operation.

" - }, - "Date":{"type":"timestamp"}, - "DeleteItemInput":{ - "type":"structure", - "required":[ - "TableName", - "Key" - ], - "members":{ - "TableName":{ - "shape":"TableName", - "documentation":"

The name of the table from which to delete the item.

" - }, - "Key":{ - "shape":"Key", - "documentation":"

A map of attribute names to AttributeValue objects, representing the primary key of the item to delete.

For the primary key, you must provide all of the attributes. For example, with a hash type primary key, you only need to specify the hash attribute. For a hash-and-range type primary key, you must specify both the hash attribute and the range attribute.

" - }, - "Expected":{ - "shape":"ExpectedAttributeMap", - "documentation":"

There is a newer parameter available. Use ConditionExpression instead. Note that if you use Expected and ConditionExpression at the same time, DynamoDB will return a ValidationException exception.

This parameter does not support lists or maps.

A map of attribute/condition pairs. Expected provides a conditional block for the DeleteItem operation.

Each element of Expected consists of an attribute name, a comparison operator, and one or more values. DynamoDB compares the attribute with the value(s) you supplied, using the comparison operator. For each Expected element, the result of the evaluation is either true or false.

If you specify more than one element in the Expected map, then by default all of the conditions must evaluate to true. In other words, the conditions are ANDed together. (You can use the ConditionalOperator parameter to OR the conditions instead. If you do this, then at least one of the conditions must evaluate to true, rather than all of them.)

If the Expected map evaluates to true, then the conditional operation succeeds; otherwise, it fails.

Expected contains the following:

For usage examples of AttributeValueList and ComparisonOperator, see Legacy Conditional Parameters in the Amazon DynamoDB Developer Guide.

For backward compatibility with previous DynamoDB releases, the following parameters can be used instead of AttributeValueList and ComparisonOperator:

The Value and Exists parameters are incompatible with AttributeValueList and ComparisonOperator. Note that if you use both sets of parameters at once, DynamoDB will return a ValidationException exception.

" - }, - "ConditionalOperator":{ - "shape":"ConditionalOperator", - "documentation":"

There is a newer parameter available. Use ConditionExpression instead. Note that if you use ConditionalOperator and ConditionExpression at the same time, DynamoDB will return a ValidationException exception.

This parameter does not support lists or maps.

A logical operator to apply to the conditions in the Expected map:

If you omit ConditionalOperator, then AND is the default.

The operation will succeed only if the entire map evaluates to true.

" - }, - "ReturnValues":{ - "shape":"ReturnValue", - "documentation":"

Use ReturnValues if you want to get the item attributes as they appeared before they were deleted. For DeleteItem, the valid values are:

" - }, - "ReturnConsumedCapacity":{"shape":"ReturnConsumedCapacity"}, - "ReturnItemCollectionMetrics":{ - "shape":"ReturnItemCollectionMetrics", - "documentation":"

A value that if set to SIZE, the response includes statistics about item collections, if any, that were modified during the operation are returned in the response. If set to NONE (the default), no statistics are returned.

" - }, - "ConditionExpression":{ - "shape":"ConditionExpression", - "documentation":"

A condition that must be satisfied in order for a conditional DeleteItem to succeed.

An expression can contain any of the following:

" - }, - "ExpressionAttributeNames":{ - "shape":"ExpressionAttributeNameMap", - "documentation":"

One or more substitution tokens for simplifying complex expressions. The following are some use cases for an ExpressionAttributeNames value:

Use the # character in an expression to dereference an attribute name. For example, consider the following expression:

Now suppose that you specified the following for ExpressionAttributeNames:

The expression can now be simplified as follows:

" - }, - "ExpressionAttributeValues":{ - "shape":"ExpressionAttributeValueMap", - "documentation":"

One or more values that can be substituted in an expression.

Use the : character in an expression to dereference an attribute value. For example, consider the following expression:

Now suppose that you specified the following for ExpressionAttributeValues:

The expression can now be simplified as follows:

" - } - }, - "documentation":"

Represents the input of a DeleteItem operation.

" - }, - "DeleteItemOutput":{ - "type":"structure", - "members":{ - "Attributes":{ - "shape":"AttributeMap", - "documentation":"

A map of attribute names to AttributeValue objects, representing the item as it appeared before the DeleteItem operation. This map appears in the response only if ReturnValues was specified as ALL_OLD in the request.

" - }, - "ConsumedCapacity":{"shape":"ConsumedCapacity"}, - "ItemCollectionMetrics":{ - "shape":"ItemCollectionMetrics", - "documentation":"

Information about item collections, if any, that were affected by the operation. ItemCollectionMetrics is only returned if the request asked for it. If the table does not have any local secondary indexes, this information is not returned in the response.

Each ItemCollectionMetrics element consists of:

" - } - }, - "documentation":"

Represents the output of a DeleteItem operation.

" - }, - "DeleteRequest":{ - "type":"structure", - "required":["Key"], - "members":{ - "Key":{ - "shape":"Key", - "documentation":"

A map of attribute name to attribute values, representing the primary key of the item to delete. All of the table's primary key attributes must be specified, and their data types must match those of the table's key schema.

" - } - }, - "documentation":"

Represents a request to perform a DeleteItem operation on an item.

" - }, - "DeleteTableInput":{ - "type":"structure", - "required":["TableName"], - "members":{ - "TableName":{ - "shape":"TableName", - "documentation":"

The name of the table to delete.

" - } - }, - "documentation":"

Represents the input of a DeleteTable operation.

" - }, - "DeleteTableOutput":{ - "type":"structure", - "members":{ - "TableDescription":{"shape":"TableDescription"} - }, - "documentation":"

Represents the output of a DeleteTable operation.

" - }, - "DescribeTableInput":{ - "type":"structure", - "required":["TableName"], - "members":{ - "TableName":{ - "shape":"TableName", - "documentation":"

The name of the table to describe.

" - } - }, - "documentation":"

Represents the input of a DescribeTable operation.

" - }, - "DescribeTableOutput":{ - "type":"structure", - "members":{ - "Table":{"shape":"TableDescription"} - }, - "documentation":"

Represents the output of a DescribeTable operation.

" - }, - "ErrorMessage":{"type":"string"}, - "ExpectedAttributeMap":{ - "type":"map", - "key":{"shape":"AttributeName"}, - "value":{"shape":"ExpectedAttributeValue"} - }, - "ExpectedAttributeValue":{ - "type":"structure", - "members":{ - "Value":{"shape":"AttributeValue"}, - "Exists":{ - "shape":"BooleanObject", - "documentation":"

Causes DynamoDB to evaluate the value before attempting a conditional operation:

The default setting for Exists is true. If you supply a Value all by itself, DynamoDB assumes the attribute exists: You don't have to set Exists to true, because it is implied.

DynamoDB returns a ValidationException if:

" - }, - "ComparisonOperator":{ - "shape":"ComparisonOperator", - "documentation":"

A comparator for evaluating attributes in the AttributeValueList. For example, equals, greater than, less than, etc.

The following comparison operators are available:

EQ | NE | LE | LT | GE | GT | NOT_NULL | NULL | CONTAINS | NOT_CONTAINS | BEGINS_WITH | IN | BETWEEN

The following are descriptions of each comparison operator.

" - }, - "AttributeValueList":{ - "shape":"AttributeValueList", - "documentation":"

One or more values to evaluate against the supplied attribute. The number of values in the list depends on the ComparisonOperator being used.

For type Number, value comparisons are numeric.

String value comparisons for greater than, equals, or less than are based on ASCII character code values. For example, a is greater than A, and aa is greater than B. For a list of code values, see http://en.wikipedia.org/wiki/ASCII#ASCII_printable_characters.

For Binary, DynamoDB treats each byte of the binary data as unsigned when it compares binary values, for example when evaluating query expressions.

For information on specifying data types in JSON, see JSON Data Format in the Amazon DynamoDB Developer Guide.

" - } - }, - "documentation":"

Represents a condition to be compared with an attribute value. This condition can be used with DeleteItem, PutItem or UpdateItem operations; if the comparison evaluates to true, the operation succeeds; if not, the operation fails. You can use ExpectedAttributeValue in one of two different ways:

Value and Exists are incompatible with AttributeValueList and ComparisonOperator. Note that if you use both sets of parameters at once, DynamoDB will return a ValidationException exception.

" - }, - "ExpressionAttributeNameMap":{ - "type":"map", - "key":{"shape":"ExpressionAttributeNameVariable"}, - "value":{"shape":"AttributeName"} - }, - "ExpressionAttributeNameVariable":{"type":"string"}, - "ExpressionAttributeValueMap":{ - "type":"map", - "key":{"shape":"ExpressionAttributeValueVariable"}, - "value":{"shape":"AttributeValue"} - }, - "ExpressionAttributeValueVariable":{"type":"string"}, - "FilterConditionMap":{ - "type":"map", - "key":{"shape":"AttributeName"}, - "value":{"shape":"Condition"} - }, - "GetItemInput":{ - "type":"structure", - "required":[ - "TableName", - "Key" - ], - "members":{ - "TableName":{ - "shape":"TableName", - "documentation":"

The name of the table containing the requested item.

" - }, - "Key":{ - "shape":"Key", - "documentation":"

A map of attribute names to AttributeValue objects, representing the primary key of the item to retrieve.

For the primary key, you must provide all of the attributes. For example, with a hash type primary key, you only need to specify the hash attribute. For a hash-and-range type primary key, you must specify both the hash attribute and the range attribute.

" - }, - "AttributesToGet":{ - "shape":"AttributeNameList", - "documentation":"

There is a newer parameter available. Use ProjectionExpression instead. Note that if you use AttributesToGet and ProjectionExpression at the same time, DynamoDB will return a ValidationException exception.

This parameter allows you to retrieve lists or maps; however, it cannot retrieve individual list or map elements.

The names of one or more attributes to retrieve. If no attribute names are specified, then all attributes will be returned. If any of the requested attributes are not found, they will not appear in the result.

Note that AttributesToGet has no effect on provisioned throughput consumption. DynamoDB determines capacity units consumed based on item size, not on the amount of data that is returned to an application.

" - }, - "ConsistentRead":{ - "shape":"ConsistentRead", - "documentation":"

A value that if set to true, then the operation uses strongly consistent reads; otherwise, eventually consistent reads are used.

" - }, - "ReturnConsumedCapacity":{"shape":"ReturnConsumedCapacity"}, - "ProjectionExpression":{ - "shape":"ProjectionExpression", - "documentation":"

One or more attributes to retrieve from the table. These attributes can include scalars, sets, or elements of a JSON document. The attributes in the expression must be separated by commas.

If no attribute names are specified, then all attributes will be returned. If any of the requested attributes are not found, they will not appear in the result.

" - }, - "ExpressionAttributeNames":{ - "shape":"ExpressionAttributeNameMap", - "documentation":"

One or more substitution tokens for simplifying complex expressions. The following are some use cases for an ExpressionAttributeNames value:

Use the # character in an expression to dereference an attribute name. For example, consider the following expression:

Now suppose that you specified the following for ExpressionAttributeNames:

The expression can now be simplified as follows:

" - } - }, - "documentation":"

Represents the input of a GetItem operation.

" - }, - "GetItemOutput":{ - "type":"structure", - "members":{ - "Item":{ - "shape":"AttributeMap", - "documentation":"

A map of attribute names to AttributeValue objects, as specified by AttributesToGet.

" - }, - "ConsumedCapacity":{"shape":"ConsumedCapacity"} - }, - "documentation":"

Represents the output of a GetItem operation.

" - }, - "GlobalSecondaryIndex":{ - "type":"structure", - "required":[ - "IndexName", - "KeySchema", - "Projection", - "ProvisionedThroughput" - ], - "members":{ - "IndexName":{ - "shape":"IndexName", - "documentation":"

The name of the global secondary index. The name must be unique among all other indexes on this table.

" - }, - "KeySchema":{ - "shape":"KeySchema", - "documentation":"

The complete key schema for a global secondary index, which consists of one or more pairs of attribute names and key types (HASH or RANGE).

" - }, - "Projection":{"shape":"Projection"}, - "ProvisionedThroughput":{"shape":"ProvisionedThroughput"} - }, - "documentation":"

Represents a global secondary index.

" - }, - "GlobalSecondaryIndexDescription":{ - "type":"structure", - "members":{ - "IndexName":{ - "shape":"IndexName", - "documentation":"

The name of the global secondary index.

" - }, - "KeySchema":{ - "shape":"KeySchema", - "documentation":"

The complete key schema for the global secondary index, consisting of one or more pairs of attribute names and key types (HASH or RANGE).

" - }, - "Projection":{"shape":"Projection"}, - "IndexStatus":{ - "shape":"IndexStatus", - "documentation":"

The current state of the global secondary index:

" - }, - "ProvisionedThroughput":{"shape":"ProvisionedThroughputDescription"}, - "IndexSizeBytes":{ - "shape":"Long", - "documentation":"

The total size of the specified index, in bytes. DynamoDB updates this value approximately every six hours. Recent changes might not be reflected in this value.

" - }, - "ItemCount":{ - "shape":"Long", - "documentation":"

The number of items in the specified index. DynamoDB updates this value approximately every six hours. Recent changes might not be reflected in this value.

" - } - }, - "documentation":"

Represents the properties of a global secondary index.

" - }, - "GlobalSecondaryIndexDescriptionList":{ - "type":"list", - "member":{"shape":"GlobalSecondaryIndexDescription"} - }, - "GlobalSecondaryIndexList":{ - "type":"list", - "member":{"shape":"GlobalSecondaryIndex"} - }, - "GlobalSecondaryIndexUpdate":{ - "type":"structure", - "members":{ - "Update":{ - "shape":"UpdateGlobalSecondaryIndexAction", - "documentation":"

The name of a global secondary index, along with the updated provisioned throughput settings that are to be applied to that index.

" - } - }, - "documentation":"

Represents the new provisioned throughput settings to apply to a global secondary index.

" - }, - "GlobalSecondaryIndexUpdateList":{ - "type":"list", - "member":{"shape":"GlobalSecondaryIndexUpdate"} - }, - "IndexName":{ - "type":"string", - "min":3, - "max":255, - "pattern":"[a-zA-Z0-9_.-]+" - }, - "IndexStatus":{ - "type":"string", - "enum":[ - "CREATING", - "UPDATING", - "DELETING", - "ACTIVE" - ] - }, - "Integer":{"type":"integer"}, - "InternalServerError":{ - "type":"structure", - "members":{ - "message":{ - "shape":"ErrorMessage", - "documentation":"

The server encountered an internal error trying to fulfill the request.

" - } - }, - "exception":true, - "fault":true, - "documentation":"

An error occurred on the server side.

" - }, - "ItemCollectionKeyAttributeMap":{ - "type":"map", - "key":{"shape":"AttributeName"}, - "value":{"shape":"AttributeValue"} - }, - "ItemCollectionMetrics":{ - "type":"structure", - "members":{ - "ItemCollectionKey":{ - "shape":"ItemCollectionKeyAttributeMap", - "documentation":"

The hash key value of the item collection. This value is the same as the hash key of the item.

" - }, - "SizeEstimateRangeGB":{ - "shape":"ItemCollectionSizeEstimateRange", - "documentation":"

An estimate of item collection size, in gigabytes. This value is a two-element array containing a lower bound and an upper bound for the estimate. The estimate includes the size of all the items in the table, plus the size of all attributes projected into all of the local secondary indexes on that table. Use this estimate to measure whether a local secondary index is approaching its size limit.

The estimate is subject to change over time; therefore, do not rely on the precision or accuracy of the estimate.

" - } - }, - "documentation":"

Information about item collections, if any, that were affected by the operation. ItemCollectionMetrics is only returned if the request asked for it. If the table does not have any local secondary indexes, this information is not returned in the response.

" - }, - "ItemCollectionMetricsMultiple":{ - "type":"list", - "member":{"shape":"ItemCollectionMetrics"} - }, - "ItemCollectionMetricsPerTable":{ - "type":"map", - "key":{"shape":"TableName"}, - "value":{"shape":"ItemCollectionMetricsMultiple"} - }, - "ItemCollectionSizeEstimateBound":{"type":"double"}, - "ItemCollectionSizeEstimateRange":{ - "type":"list", - "member":{"shape":"ItemCollectionSizeEstimateBound"} - }, - "ItemCollectionSizeLimitExceededException":{ - "type":"structure", - "members":{ - "message":{ - "shape":"ErrorMessage", - "documentation":"

The total size of an item collection has exceeded the maximum limit of 10 gigabytes.

" - } - }, - "exception":true, - "documentation":"

An item collection is too large. This exception is only returned for tables that have one or more local secondary indexes.

" - }, - "ItemList":{ - "type":"list", - "member":{"shape":"AttributeMap"} - }, - "Key":{ - "type":"map", - "key":{"shape":"AttributeName"}, - "value":{"shape":"AttributeValue"} - }, - "KeyConditions":{ - "type":"map", - "key":{"shape":"AttributeName"}, - "value":{"shape":"Condition"} - }, - "KeyList":{ - "type":"list", - "member":{"shape":"Key"}, - "min":1, - "max":100 - }, - "KeySchema":{ - "type":"list", - "member":{"shape":"KeySchemaElement"}, - "min":1, - "max":2 - }, - "KeySchemaAttributeName":{ - "type":"string", - "min":1, - "max":255 - }, - "KeySchemaElement":{ - "type":"structure", - "required":[ - "AttributeName", - "KeyType" - ], - "members":{ - "AttributeName":{ - "shape":"KeySchemaAttributeName", - "documentation":"

The name of a key attribute.

" - }, - "KeyType":{ - "shape":"KeyType", - "documentation":"

The attribute data, consisting of the data type and the attribute value itself.

" - } - }, - "documentation":"

Represents a single element of a key schema. A key schema specifies the attributes that make up the primary key of a table, or the key attributes of an index.

A KeySchemaElement represents exactly one attribute of the primary key. For example, a hash type primary key would be represented by one KeySchemaElement. A hash-and-range type primary key would require one KeySchemaElement for the hash attribute, and another KeySchemaElement for the range attribute.

" - }, - "KeyType":{ - "type":"string", - "enum":[ - "HASH", - "RANGE" - ] - }, - "KeysAndAttributes":{ - "type":"structure", - "required":["Keys"], - "members":{ - "Keys":{ - "shape":"KeyList", - "documentation":"

The primary key attribute values that define the items and the attributes associated with the items.

" - }, - "AttributesToGet":{ - "shape":"AttributeNameList", - "documentation":"

One or more attributes to retrieve from the table or index. If no attribute names are specified then all attributes will be returned. If any of the specified attributes are not found, they will not appear in the result.

" - }, - "ConsistentRead":{ - "shape":"ConsistentRead", - "documentation":"

The consistency of a read operation. If set to true, then a strongly consistent read is used; otherwise, an eventually consistent read is used.

" - }, - "ProjectionExpression":{ - "shape":"ProjectionExpression", - "documentation":"

One or more attributes to retrieve from the table. These attributes can include scalars, sets, or elements of a JSON document. The attributes in the expression must be separated by commas.

If no attribute names are specified, then all attributes will be returned. If any of the requested attributes are not found, they will not appear in the result.

" - }, - "ExpressionAttributeNames":{ - "shape":"ExpressionAttributeNameMap", - "documentation":"

One or more substitution tokens for simplifying complex expressions. The following are some use cases for an ExpressionAttributeNames value:

Use the # character in an expression to dereference an attribute name. For example, consider the following expression:

Now suppose that you specified the following for ExpressionAttributeNames:

The expression can now be simplified as follows:

" - } - }, - "documentation":"

Represents a set of primary keys and, for each key, the attributes to retrieve from the table.

For each primary key, you must provide all of the key attributes. For example, with a hash type primary key, you only need to specify the hash attribute. For a hash-and-range type primary key, you must specify both the hash attribute and the range attribute.

" - }, - "LimitExceededException":{ - "type":"structure", - "members":{ - "message":{ - "shape":"ErrorMessage", - "documentation":"

Too many operations for a given subscriber.

" - } - }, - "exception":true, - "documentation":"

The number of concurrent table requests (cumulative number of tables in the CREATING, DELETING or UPDATING state) exceeds the maximum allowed of 10.

Also, for tables with secondary indexes, only one of those tables can be in the CREATING state at any point in time. Do not attempt to create more than one such table simultaneously.

The total limit of tables in the ACTIVE state is 250.

" - }, - "ListAttributeValue":{ - "type":"list", - "member":{"shape":"AttributeValue"} - }, - "ListTablesInput":{ - "type":"structure", - "members":{ - "ExclusiveStartTableName":{ - "shape":"TableName", - "documentation":"

The first table name that this operation will evaluate. Use the value that was returned for LastEvaluatedTableName in a previous operation, so that you can obtain the next page of results.

" - }, - "Limit":{ - "shape":"ListTablesInputLimit", - "documentation":"

A maximum number of table names to return. If this parameter is not specified, the limit is 100.

" - } - }, - "documentation":"

Represents the input of a ListTables operation.

" - }, - "ListTablesInputLimit":{ - "type":"integer", - "min":1, - "max":100 - }, - "ListTablesOutput":{ - "type":"structure", - "members":{ - "TableNames":{ - "shape":"TableNameList", - "documentation":"

The names of the tables associated with the current account at the current endpoint. The maximum size of this array is 100.

If LastEvaluatedTableName also appears in the output, you can use this value as the ExclusiveStartTableName parameter in a subsequent ListTables request and obtain the next page of results.

" - }, - "LastEvaluatedTableName":{ - "shape":"TableName", - "documentation":"

The name of the last table in the current page of results. Use this value as the ExclusiveStartTableName in a new request to obtain the next page of results, until all the table names are returned.

If you do not receive a LastEvaluatedTableName value in the response, this means that there are no more table names to be retrieved.

" - } - }, - "documentation":"

Represents the output of a ListTables operation.

" - }, - "LocalSecondaryIndex":{ - "type":"structure", - "required":[ - "IndexName", - "KeySchema", - "Projection" - ], - "members":{ - "IndexName":{ - "shape":"IndexName", - "documentation":"

The name of the local secondary index. The name must be unique among all other indexes on this table.

" - }, - "KeySchema":{ - "shape":"KeySchema", - "documentation":"

The complete key schema for the local secondary index, consisting of one or more pairs of attribute names and key types (HASH or RANGE).

" - }, - "Projection":{"shape":"Projection"} - }, - "documentation":"

Represents a local secondary index.

" - }, - "LocalSecondaryIndexDescription":{ - "type":"structure", - "members":{ - "IndexName":{ - "shape":"IndexName", - "documentation":"

Represents the name of the local secondary index.

" - }, - "KeySchema":{ - "shape":"KeySchema", - "documentation":"

The complete index key schema, which consists of one or more pairs of attribute names and key types (HASH or RANGE).

" - }, - "Projection":{"shape":"Projection"}, - "IndexSizeBytes":{ - "shape":"Long", - "documentation":"

The total size of the specified index, in bytes. DynamoDB updates this value approximately every six hours. Recent changes might not be reflected in this value.

" - }, - "ItemCount":{ - "shape":"Long", - "documentation":"

The number of items in the specified index. DynamoDB updates this value approximately every six hours. Recent changes might not be reflected in this value.

" - } - }, - "documentation":"

Represents the properties of a local secondary index.

" - }, - "LocalSecondaryIndexDescriptionList":{ - "type":"list", - "member":{"shape":"LocalSecondaryIndexDescription"} - }, - "LocalSecondaryIndexList":{ - "type":"list", - "member":{"shape":"LocalSecondaryIndex"} - }, - "Long":{"type":"long"}, - "MapAttributeValue":{ - "type":"map", - "key":{"shape":"AttributeName"}, - "value":{"shape":"AttributeValue"} - }, - "NonKeyAttributeName":{ - "type":"string", - "min":1, - "max":255 - }, - "NonKeyAttributeNameList":{ - "type":"list", - "member":{"shape":"NonKeyAttributeName"}, - "min":1, - "max":20 - }, - "NullAttributeValue":{"type":"boolean"}, - "NumberAttributeValue":{"type":"string"}, - "NumberSetAttributeValue":{ - "type":"list", - "member":{"shape":"NumberAttributeValue"} - }, - "PositiveIntegerObject":{ - "type":"integer", - "min":1 - }, - "PositiveLongObject":{ - "type":"long", - "min":1 - }, - "Projection":{ - "type":"structure", - "members":{ - "ProjectionType":{ - "shape":"ProjectionType", - "documentation":"

The set of attributes that are projected into the index:

" - }, - "NonKeyAttributes":{ - "shape":"NonKeyAttributeNameList", - "documentation":"

Represents the non-key attribute names which will be 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 when determining the total.

" - } - }, - "documentation":"

Represents attributes that are copied (projected) from the table into an index. These are in addition to the primary key attributes and index key attributes, which are automatically projected.

" - }, - "ProjectionExpression":{"type":"string"}, - "ProjectionType":{ - "type":"string", - "enum":[ - "ALL", - "KEYS_ONLY", - "INCLUDE" - ] - }, - "ProvisionedThroughput":{ - "type":"structure", - "required":[ - "ReadCapacityUnits", - "WriteCapacityUnits" - ], - "members":{ - "ReadCapacityUnits":{ - "shape":"PositiveLongObject", - "documentation":"

The maximum number of strongly consistent reads consumed per second before DynamoDB returns a ThrottlingException. For more information, see Specifying Read and Write Requirements in the Amazon DynamoDB Developer Guide.

" - }, - "WriteCapacityUnits":{ - "shape":"PositiveLongObject", - "documentation":"

The maximum number of writes consumed per second before DynamoDB returns a ThrottlingException. For more information, see Specifying Read and Write Requirements in the Amazon DynamoDB Developer Guide.

" - } - }, - "documentation":"

Represents the provisioned throughput settings for a specified table or index. The settings can be modified using the UpdateTable operation.

For current minimum and maximum provisioned throughput values, see Limits in the Amazon DynamoDB Developer Guide.

" - }, - "ProvisionedThroughputDescription":{ - "type":"structure", - "members":{ - "LastIncreaseDateTime":{ - "shape":"Date", - "documentation":"

The date and time of the last provisioned throughput increase for this table.

" - }, - "LastDecreaseDateTime":{ - "shape":"Date", - "documentation":"

The date and time of the last provisioned throughput decrease for this table.

" - }, - "NumberOfDecreasesToday":{ - "shape":"PositiveLongObject", - "documentation":"

The number of provisioned throughput decreases for this table during this UTC calendar day. For current maximums on provisioned throughput decreases, see Limits in the Amazon DynamoDB Developer Guide.

" - }, - "ReadCapacityUnits":{ - "shape":"PositiveLongObject", - "documentation":"

The maximum number of strongly consistent reads consumed per second before DynamoDB returns a ThrottlingException. Eventually consistent reads require less effort than strongly consistent reads, so a setting of 50 ReadCapacityUnits per second provides 100 eventually consistent ReadCapacityUnits per second.

" - }, - "WriteCapacityUnits":{ - "shape":"PositiveLongObject", - "documentation":"

The maximum number of writes consumed per second before DynamoDB returns a ThrottlingException.

" - } - }, - "documentation":"

Represents the provisioned throughput settings for the table, consisting of read and write capacity units, along with data about increases and decreases.

" - }, - "ProvisionedThroughputExceededException":{ - "type":"structure", - "members":{ - "message":{ - "shape":"ErrorMessage", - "documentation":"

You exceeded your maximum allowed provisioned throughput.

" - } - }, - "exception":true, - "documentation":"

The request rate is too high, or the request is too large, for the available throughput to accommodate. The AWS SDKs automatically retry requests that receive this exception; therefore, your request will eventually succeed, unless the request is too large or your retry queue is too large to finish. Reduce the frequency of requests by using the strategies listed in Error Retries and Exponential Backoff in the Amazon DynamoDB Developer Guide.

" - }, - "PutItemInput":{ - "type":"structure", - "required":[ - "TableName", - "Item" - ], - "members":{ - "TableName":{ - "shape":"TableName", - "documentation":"

The name of the table to contain the item.

" - }, - "Item":{ - "shape":"PutItemInputAttributeMap", - "documentation":"

A map of attribute name/value pairs, one for each attribute. Only the primary key attributes are required; you can optionally provide other attribute name-value pairs for the item.

You must provide all of the attributes for the primary key. For example, with a hash type primary key, you only need to specify the hash attribute. For a hash-and-range type primary key, you must specify both the hash attribute and the range attribute.

If you specify any attributes that are part of an index key, then the data types for those attributes must match those of the schema in the table's attribute definition.

For more information about primary keys, see Primary Key in the Amazon DynamoDB Developer Guide.

Each element in the Item map is an AttributeValue object.

" - }, - "Expected":{ - "shape":"ExpectedAttributeMap", - "documentation":"

There is a newer parameter available. Use ConditionExpression instead. Note that if you use Expected and ConditionExpression at the same time, DynamoDB will return a ValidationException exception.

This parameter does not support lists or maps.

A map of attribute/condition pairs. Expected provides a conditional block for the PutItem operation.

Each element of Expected consists of an attribute name, a comparison operator, and one or more values. DynamoDB compares the attribute with the value(s) you supplied, using the comparison operator. For each Expected element, the result of the evaluation is either true or false.

If you specify more than one element in the Expected map, then by default all of the conditions must evaluate to true. In other words, the conditions are ANDed together. (You can use the ConditionalOperator parameter to OR the conditions instead. If you do this, then at least one of the conditions must evaluate to true, rather than all of them.)

If the Expected map evaluates to true, then the conditional operation succeeds; otherwise, it fails.

Expected contains the following:

For usage examples of AttributeValueList and ComparisonOperator, see Legacy Conditional Parameters in the Amazon DynamoDB Developer Guide.

For backward compatibility with previous DynamoDB releases, the following parameters can be used instead of AttributeValueList and ComparisonOperator:

The Value and Exists parameters are incompatible with AttributeValueList and ComparisonOperator. Note that if you use both sets of parameters at once, DynamoDB will return a ValidationException exception.

" - }, - "ReturnValues":{ - "shape":"ReturnValue", - "documentation":"

Use ReturnValues if you want to get the item attributes as they appeared before they were updated with the PutItem request. For PutItem, the valid values are:

" - }, - "ReturnConsumedCapacity":{"shape":"ReturnConsumedCapacity"}, - "ReturnItemCollectionMetrics":{ - "shape":"ReturnItemCollectionMetrics", - "documentation":"

A value that if set to SIZE, the response includes statistics about item collections, if any, that were modified during the operation are returned in the response. If set to NONE (the default), no statistics are returned.

" - }, - "ConditionalOperator":{ - "shape":"ConditionalOperator", - "documentation":"

There is a newer parameter available. Use ConditionExpression instead. Note that if you use ConditionalOperator and ConditionExpression at the same time, DynamoDB will return a ValidationException exception.

This parameter does not support lists or maps.

A logical operator to apply to the conditions in the Expected map:

If you omit ConditionalOperator, then AND is the default.

The operation will succeed only if the entire map evaluates to true.

" - }, - "ConditionExpression":{ - "shape":"ConditionExpression", - "documentation":"

A condition that must be satisfied in order for a conditional PutItem operation to succeed.

An expression can contain any of the following:

" - }, - "ExpressionAttributeNames":{ - "shape":"ExpressionAttributeNameMap", - "documentation":"

One or more substitution tokens for simplifying complex expressions. The following are some use cases for an ExpressionAttributeNames value:

Use the # character in an expression to dereference an attribute name. For example, consider the following expression:

Now suppose that you specified the following for ExpressionAttributeNames:

The expression can now be simplified as follows:

" - }, - "ExpressionAttributeValues":{ - "shape":"ExpressionAttributeValueMap", - "documentation":"

One or more values that can be substituted in an expression.

Use the : character in an expression to dereference an attribute value. For example, consider the following expression:

Now suppose that you specified the following for ExpressionAttributeValues:

The expression can now be simplified as follows:

" - } - }, - "documentation":"

Represents the input of a PutItem operation.

" - }, - "PutItemInputAttributeMap":{ - "type":"map", - "key":{"shape":"AttributeName"}, - "value":{"shape":"AttributeValue"} - }, - "PutItemOutput":{ - "type":"structure", - "members":{ - "Attributes":{ - "shape":"AttributeMap", - "documentation":"

The attribute values as they appeared before the PutItem operation, but only if ReturnValues is specified as ALL_OLD in the request. Each element consists of an attribute name and an attribute value.

" - }, - "ConsumedCapacity":{"shape":"ConsumedCapacity"}, - "ItemCollectionMetrics":{ - "shape":"ItemCollectionMetrics", - "documentation":"

Information about item collections, if any, that were affected by the operation. ItemCollectionMetrics is only returned if the request asked for it. If the table does not have any local secondary indexes, this information is not returned in the response.

Each ItemCollectionMetrics element consists of:

" - } - }, - "documentation":"

Represents the output of a PutItem operation.

" - }, - "PutRequest":{ - "type":"structure", - "required":["Item"], - "members":{ - "Item":{ - "shape":"PutItemInputAttributeMap", - "documentation":"

A map of attribute name to attribute values, representing the primary key of an item to be processed by PutItem. All of the table's primary key attributes must be specified, and their data types must match those of the table's key schema. If any attributes are present in the item which are part of an index key schema for the table, their types must match the index key schema.

" - } - }, - "documentation":"

Represents a request to perform a PutItem operation on an item.

" - }, - "QueryInput":{ - "type":"structure", - "required":[ - "TableName", - "KeyConditions" - ], - "members":{ - "TableName":{ - "shape":"TableName", - "documentation":"

The name of the table containing the requested items.

" - }, - "IndexName":{ - "shape":"IndexName", - "documentation":"

The name of an index to query. This index can be any local secondary index or global secondary index on the table.

" - }, - "Select":{ - "shape":"Select", - "documentation":"

The attributes to be returned in the result. You can retrieve all item attributes, specific item attributes, the count of matching items, or in the case of an index, some or all of the attributes projected into the index.

If neither Select nor AttributesToGet are specified, DynamoDB defaults to ALL_ATTRIBUTES when accessing a table, and ALL_PROJECTED_ATTRIBUTES when accessing an index. You cannot use both Select and AttributesToGet together in a single request, unless the value for Select is SPECIFIC_ATTRIBUTES. (This usage is equivalent to specifying AttributesToGet without any value for Select.)

" - }, - "AttributesToGet":{ - "shape":"AttributeNameList", - "documentation":"

There is a newer parameter available. Use ProjectionExpression instead. Note that if you use AttributesToGet and ProjectionExpression at the same time, DynamoDB will return a ValidationException exception.

This parameter allows you to retrieve lists or maps; however, it cannot retrieve individual list or map elements.

The names of one or more attributes to retrieve. If no attribute names are specified, then all attributes will be returned. If any of the requested attributes are not found, they will not appear in the result.

Note that AttributesToGet has no effect on provisioned throughput consumption. DynamoDB determines capacity units consumed based on item size, not on the amount of data that is returned to an application.

You cannot use both AttributesToGet and Select together in a Query request, unless the value for Select is SPECIFIC_ATTRIBUTES. (This usage is equivalent to specifying AttributesToGet without any value for Select.)

If you query a local secondary index and request only attributes that are projected into that index, the operation will read only the index and not the table. If any of the requested attributes are not projected into the local secondary index, DynamoDB will fetch each of these attributes from the parent table. This extra fetching incurs additional throughput cost and latency.

If you query a global secondary index, you can only request attributes that are projected into the index. Global secondary index queries cannot fetch attributes from the parent table.

" - }, - "Limit":{ - "shape":"PositiveIntegerObject", - "documentation":"

The maximum number of items to evaluate (not necessarily the number of matching items). If DynamoDB processes the number of items up to the limit while processing the results, it stops the operation and returns the matching values up to that point, and a key in LastEvaluatedKey to apply in a subsequent operation, so that you can pick up where you left off. Also, if the processed data set size exceeds 1 MB before DynamoDB reaches this limit, it stops the operation and returns the matching values up to the limit, and a key in LastEvaluatedKey to apply in a subsequent operation to continue the operation. For more information, see Query and Scan in the Amazon DynamoDB Developer Guide.

" - }, - "ConsistentRead":{ - "shape":"ConsistentRead", - "documentation":"

A value that if set to true, then the operation uses strongly consistent reads; otherwise, eventually consistent reads are used.

Strongly consistent reads are not supported on global secondary indexes. If you query a global secondary index with ConsistentRead set to true, you will receive an error message.

" - }, - "KeyConditions":{ - "shape":"KeyConditions", - "documentation":"

The selection criteria for the query. For a query on a table, you can have conditions only on the table primary key attributes. You must specify the hash key attribute name and value as an EQ condition. You can optionally specify a second condition, referring to the range key attribute.

For a query on an index, you can have conditions only on the index key attributes. You must specify the index hash attribute name and value as an EQ condition. You can optionally specify a second condition, referring to the index key range attribute.

Each KeyConditions element consists of an attribute name to compare, along with the following:

For usage examples of AttributeValueList and ComparisonOperator, see Legacy Conditional Parameters in the Amazon DynamoDB Developer Guide.

" - }, - "QueryFilter":{ - "shape":"FilterConditionMap", - "documentation":"

There is a newer parameter available. Use FilterExpression instead. Note that if you use QueryFilter and FilterExpression at the same time, DynamoDB will return a ValidationException exception.

This parameter does not support lists or maps.

A condition that evaluates the query results and returns only the desired values.

If you specify more than one condition in the QueryFilter map, then by default all of the conditions must evaluate to true. In other words, the conditions are ANDed together. (You can use the ConditionalOperator parameter to OR the conditions instead. If you do this, then at least one of the conditions must evaluate to true, rather than all of them.)

Each QueryFilter element consists of an attribute name to compare, along with the following:

" - }, - "ConditionalOperator":{ - "shape":"ConditionalOperator", - "documentation":"

There is a newer parameter available. Use ConditionExpression instead. Note that if you use ConditionalOperator and ConditionExpression at the same time, DynamoDB will return a ValidationException exception.

This parameter does not support lists or maps.

A logical operator to apply to the conditions in the QueryFilter map:

If you omit ConditionalOperator, then AND is the default.

The operation will succeed only if the entire map evaluates to true.

" - }, - "ScanIndexForward":{ - "shape":"BooleanObject", - "documentation":"

A value that specifies ascending (true) or descending (false) traversal of the index. DynamoDB returns results reflecting the requested order determined by the range key. If the data type is Number, the results are returned in numeric order. For type String, the results are returned in order of ASCII character code values. For type Binary, DynamoDB treats each byte of the binary data as unsigned when it compares binary values.

If ScanIndexForward is not specified, the results are returned in ascending order.

" - }, - "ExclusiveStartKey":{ - "shape":"Key", - "documentation":"

The primary key of the first item that this operation will evaluate. Use the value that was returned for LastEvaluatedKey in the previous operation.

The data type for ExclusiveStartKey must be String, Number or Binary. No set data types are allowed.

" - }, - "ReturnConsumedCapacity":{"shape":"ReturnConsumedCapacity"}, - "ProjectionExpression":{ - "shape":"ProjectionExpression", - "documentation":"

One or more attributes to retrieve from the table. These attributes can include scalars, sets, or elements of a JSON document. The attributes in the expression must be separated by commas.

If no attribute names are specified, then all attributes will be returned. If any of the requested attributes are not found, they will not appear in the result.

" - }, - "FilterExpression":{ - "shape":"ConditionExpression", - "documentation":"

A condition that evaluates the query results and returns only the desired values.

The condition you specify is applied to the items queried; any items that do not match the expression are not returned.

" - }, - "ExpressionAttributeNames":{ - "shape":"ExpressionAttributeNameMap", - "documentation":"

One or more substitution tokens for simplifying complex expressions. The following are some use cases for an ExpressionAttributeNames value:

Use the # character in an expression to dereference an attribute name. For example, consider the following expression:

Now suppose that you specified the following for ExpressionAttributeNames:

The expression can now be simplified as follows:

" - }, - "ExpressionAttributeValues":{ - "shape":"ExpressionAttributeValueMap", - "documentation":"

One or more values that can be substituted in an expression.

Use the : character in an expression to dereference an attribute value. For example, consider the following expression:

Now suppose that you specified the following for ExpressionAttributeValues:

The expression can now be simplified as follows:

" - } - }, - "documentation":"

Represents the input of a Query operation.

" - }, - "QueryOutput":{ - "type":"structure", - "members":{ - "Items":{ - "shape":"ItemList", - "documentation":"

An array of item attributes that match the query criteria. Each element in this array consists of an attribute name and the value for that attribute.

" - }, - "Count":{ - "shape":"Integer", - "documentation":"

The number of items in the response.

If you used a QueryFilter in the request, then Count is the number of items returned after the filter was applied, and ScannedCount is the number of matching items before> the filter was applied.

If you did not use a filter in the request, then Count and ScannedCount are the same.

" - }, - "ScannedCount":{ - "shape":"Integer", - "documentation":"

The number of items evaluated, before any QueryFilter is applied. A high ScannedCount value with few, or no, Count results indicates an inefficient Query operation. For more information, see Count and ScannedCount in the Amazon DynamoDB Developer Guide.

If you did not use a filter in the request, then ScannedCount is the same as Count.

" - }, - "LastEvaluatedKey":{ - "shape":"Key", - "documentation":"

The primary key of the item where the operation stopped, inclusive of the previous result set. Use this value to start a new operation, excluding this value in the new request.

If LastEvaluatedKey is empty, then the \"last page\" of results has been processed and there is no more data to be retrieved.

If LastEvaluatedKey is not empty, it does not necessarily mean that there is more data in the result set. The only way to know when you have reached the end of the result set is when LastEvaluatedKey is empty.

" - }, - "ConsumedCapacity":{"shape":"ConsumedCapacity"} - }, - "documentation":"

Represents the output of a Query operation.

" - }, - "ResourceInUseException":{ - "type":"structure", - "members":{ - "message":{ - "shape":"ErrorMessage", - "documentation":"

The resource which is being attempted to be changed is in use.

" - } - }, - "exception":true, - "documentation":"

The operation conflicts with the resource's availability. For example, you attempted to recreate an existing table, or tried to delete a table currently in the CREATING state.

" - }, - "ResourceNotFoundException":{ - "type":"structure", - "members":{ - "message":{ - "shape":"ErrorMessage", - "documentation":"

The resource which is being requested does not exist.

" - } - }, - "exception":true, - "documentation":"

The operation tried to access a nonexistent table or index. The resource might not be specified correctly, or its status might not be ACTIVE.

" - }, - "ReturnConsumedCapacity":{ - "type":"string", - "enum":[ - "INDEXES", - "TOTAL", - "NONE" - ], - "documentation":"

A value that if set to TOTAL, the response includes ConsumedCapacity data for tables and indexes. If set to INDEXES, the response includes ConsumedCapacity for indexes. If set to NONE (the default), ConsumedCapacity is not included in the response.

" - }, - "ReturnItemCollectionMetrics":{ - "type":"string", - "enum":[ - "SIZE", - "NONE" - ] - }, - "ReturnValue":{ - "type":"string", - "enum":[ - "NONE", - "ALL_OLD", - "UPDATED_OLD", - "ALL_NEW", - "UPDATED_NEW" - ] - }, - "ScalarAttributeType":{ - "type":"string", - "enum":[ - "S", - "N", - "B" - ] - }, - "ScanInput":{ - "type":"structure", - "required":["TableName"], - "members":{ - "TableName":{ - "shape":"TableName", - "documentation":"

The name of the table containing the requested items.

" - }, - "AttributesToGet":{ - "shape":"AttributeNameList", - "documentation":"

There is a newer parameter available. Use ProjectionExpression instead. Note that if you use AttributesToGet and ProjectionExpression at the same time, DynamoDB will return a ValidationException exception.

This parameter allows you to retrieve lists or maps; however, it cannot retrieve individual list or map elements.

The names of one or more attributes to retrieve. If no attribute names are specified, then all attributes will be returned. If any of the requested attributes are not found, they will not appear in the result.

Note that AttributesToGet has no effect on provisioned throughput consumption. DynamoDB determines capacity units consumed based on item size, not on the amount of data that is returned to an application.

" - }, - "Limit":{ - "shape":"PositiveIntegerObject", - "documentation":"

The maximum number of items to evaluate (not necessarily the number of matching items). If DynamoDB processes the number of items up to the limit while processing the results, it stops the operation and returns the matching values up to that point, and a key in LastEvaluatedKey to apply in a subsequent operation, so that you can pick up where you left off. Also, if the processed data set size exceeds 1 MB before DynamoDB reaches this limit, it stops the operation and returns the matching values up to the limit, and a key in LastEvaluatedKey to apply in a subsequent operation to continue the operation. For more information, see Query and Scan in the Amazon DynamoDB Developer Guide.

" - }, - "Select":{ - "shape":"Select", - "documentation":"

The attributes to be returned in the result. You can retrieve all item attributes, specific item attributes, or the count of matching items.

If neither Select nor AttributesToGet are specified, DynamoDB defaults to ALL_ATTRIBUTES. You cannot use both AttributesToGet and Select together in a single request, unless the value for Select is SPECIFIC_ATTRIBUTES. (This usage is equivalent to specifying AttributesToGet without any value for Select.)

" - }, - "ScanFilter":{ - "shape":"FilterConditionMap", - "documentation":"

There is a newer parameter available. Use FilterExpression instead. Note that if you use ScanFilter and FilterExpression at the same time, DynamoDB will return a ValidationException exception.

This parameter does not support lists or maps.

A condition that evaluates the scan results and returns only the desired values.

If you specify more than one condition in the ScanFilter map, then by default all of the conditions must evaluate to true. In other words, the conditions are ANDed together. (You can use the ConditionalOperator parameter to OR the conditions instead. If you do this, then at least one of the conditions must evaluate to true, rather than all of them.)

Each ScanFilter element consists of an attribute name to compare, along with the following:

" - }, - "ConditionalOperator":{ - "shape":"ConditionalOperator", - "documentation":"

There is a newer parameter available. Use ConditionExpression instead. Note that if you use ConditionalOperator and ConditionExpression at the same time, DynamoDB will return a ValidationException exception.

This parameter does not support lists or maps.

A logical operator to apply to the conditions in the ScanFilter map:

If you omit ConditionalOperator, then AND is the default.

The operation will succeed only if the entire map evaluates to true.

" - }, - "ExclusiveStartKey":{ - "shape":"Key", - "documentation":"

The primary key of the first item that this operation will evaluate. Use the value that was returned for LastEvaluatedKey in the previous operation.

The data type for ExclusiveStartKey must be String, Number or Binary. No set data types are allowed.

In a parallel scan, a Scan request that includes ExclusiveStartKey must specify the same segment whose previous Scan returned the corresponding value of LastEvaluatedKey.

" - }, - "ReturnConsumedCapacity":{"shape":"ReturnConsumedCapacity"}, - "TotalSegments":{ - "shape":"ScanTotalSegments", - "documentation":"

For a parallel Scan request, TotalSegments represents the total number of segments into which the Scan operation will be divided. The value of TotalSegments corresponds to the number of application workers that will perform the parallel scan. For example, if you want to scan a table using four application threads, specify a TotalSegments value of 4.

The value for TotalSegments must be greater than or equal to 1, and less than or equal to 1000000. If you specify a TotalSegments value of 1, the Scan operation will be sequential rather than parallel.

If you specify TotalSegments, you must also specify Segment.

" - }, - "Segment":{ - "shape":"ScanSegment", - "documentation":"

For a parallel Scan request, Segment identifies an individual segment to be scanned by an application worker.

Segment IDs are zero-based, so the first segment is always 0. For example, if you want to scan a table using four application threads, the first thread specifies a Segment value of 0, the second thread specifies 1, and so on.

The value of LastEvaluatedKey returned from a parallel Scan request must be used as ExclusiveStartKey with the same segment ID in a subsequent Scan operation.

The value for Segment must be greater than or equal to 0, and less than the value provided for TotalSegments.

If you specify Segment, you must also specify TotalSegments.

" - }, - "ProjectionExpression":{ - "shape":"ProjectionExpression", - "documentation":"

One or more attributes to retrieve from the table. These attributes can include scalars, sets, or elements of a JSON document. The attributes in the expression must be separated by commas.

If no attribute names are specified, then all attributes will be returned. If any of the requested attributes are not found, they will not appear in the result.

" - }, - "FilterExpression":{ - "shape":"ConditionExpression", - "documentation":"

A condition that evaluates the scan results and returns only the desired values.

The condition you specify is applied to the items scanned; any items that do not match the expression are not returned.

" - }, - "ExpressionAttributeNames":{ - "shape":"ExpressionAttributeNameMap", - "documentation":"

One or more substitution tokens for simplifying complex expressions. The following are some use cases for an ExpressionAttributeNames value:

Use the # character in an expression to dereference an attribute name. For example, consider the following expression:

Now suppose that you specified the following for ExpressionAttributeNames:

The expression can now be simplified as follows:

" - }, - "ExpressionAttributeValues":{ - "shape":"ExpressionAttributeValueMap", - "documentation":"

One or more values that can be substituted in an expression.

Use the : character in an expression to dereference an attribute value. For example, consider the following expression:

Now suppose that you specified the following for ExpressionAttributeValues:

The expression can now be simplified as follows:

" - } - }, - "documentation":"

Represents the input of a Scan operation.

" - }, - "ScanOutput":{ - "type":"structure", - "members":{ - "Items":{ - "shape":"ItemList", - "documentation":"

An array of item attributes that match the scan criteria. Each element in this array consists of an attribute name and the value for that attribute.

" - }, - "Count":{ - "shape":"Integer", - "documentation":"

The number of items in the response.

If you set ScanFilter in the request, then Count is the number of items returned after the filter was applied, and ScannedCount is the number of matching items before the filter was applied.

If you did not use a filter in the request, then Count is the same as ScannedCount.

" - }, - "ScannedCount":{ - "shape":"Integer", - "documentation":"

The number of items evaluated, before any ScanFilter is applied. A high ScannedCount value with few, or no, Count results indicates an inefficient Scan operation. For more information, see Count and ScannedCount in the Amazon DynamoDB Developer Guide.

If you did not use a filter in the request, then ScannedCount is the same as Count.

" - }, - "LastEvaluatedKey":{ - "shape":"Key", - "documentation":"

The primary key of the item where the operation stopped, inclusive of the previous result set. Use this value to start a new operation, excluding this value in the new request.

If LastEvaluatedKey is empty, then the \"last page\" of results has been processed and there is no more data to be retrieved.

If LastEvaluatedKey is not empty, it does not necessarily mean that there is more data in the result set. The only way to know when you have reached the end of the result set is when LastEvaluatedKey is empty.

" - }, - "ConsumedCapacity":{"shape":"ConsumedCapacity"} - }, - "documentation":"

Represents the output of a Scan operation.

" - }, - "ScanSegment":{ - "type":"integer", - "min":0, - "max":999999 - }, - "ScanTotalSegments":{ - "type":"integer", - "min":1, - "max":1000000 - }, - "SecondaryIndexesCapacityMap":{ - "type":"map", - "key":{"shape":"IndexName"}, - "value":{"shape":"Capacity"} - }, - "Select":{ - "type":"string", - "enum":[ - "ALL_ATTRIBUTES", - "ALL_PROJECTED_ATTRIBUTES", - "SPECIFIC_ATTRIBUTES", - "COUNT" - ] - }, - "StringAttributeValue":{"type":"string"}, - "StringSetAttributeValue":{ - "type":"list", - "member":{"shape":"StringAttributeValue"} - }, - "TableDescription":{ - "type":"structure", - "members":{ - "AttributeDefinitions":{ - "shape":"AttributeDefinitions", - "documentation":"

An array of AttributeDefinition objects. Each of these objects describes one attribute in the table and index key schema.

Each AttributeDefinition object in this array is composed of:

" - }, - "TableName":{ - "shape":"TableName", - "documentation":"

The name of the table.

" - }, - "KeySchema":{ - "shape":"KeySchema", - "documentation":"

The primary key structure for the table. Each KeySchemaElement consists of:

For more information about primary keys, see Primary Key in the Amazon DynamoDB Developer Guide.

" - }, - "TableStatus":{ - "shape":"TableStatus", - "documentation":"

The current state of the table:

" - }, - "CreationDateTime":{ - "shape":"Date", - "documentation":"

The date and time when the table was created, in UNIX epoch time format.

" - }, - "ProvisionedThroughput":{ - "shape":"ProvisionedThroughputDescription", - "documentation":"

The provisioned throughput settings for the table, consisting of read and write capacity units, along with data about increases and decreases.

" - }, - "TableSizeBytes":{ - "shape":"Long", - "documentation":"

The total size of the specified table, in bytes. DynamoDB updates this value approximately every six hours. Recent changes might not be reflected in this value.

" - }, - "ItemCount":{ - "shape":"Long", - "documentation":"

The number of items in the specified table. DynamoDB updates this value approximately every six hours. Recent changes might not be reflected in this value.

" - }, - "LocalSecondaryIndexes":{ - "shape":"LocalSecondaryIndexDescriptionList", - "documentation":"

Represents one or more local secondary indexes on the table. Each index is scoped to a given hash key value. Tables with one or more local secondary indexes are subject to an item collection size limit, where the amount of data within a given item collection cannot exceed 10 GB. Each element is composed of:

If the table is in the DELETING state, no information about indexes will be returned.

" - }, - "GlobalSecondaryIndexes":{ - "shape":"GlobalSecondaryIndexDescriptionList", - "documentation":"

The global secondary indexes, if any, on the table. Each index is scoped to a given hash key value. Each element is composed of:

If the table is in the DELETING state, no information about indexes will be returned.

" - } - }, - "documentation":"

Represents the properties of a table.

" - }, - "TableName":{ - "type":"string", - "min":3, - "max":255, - "pattern":"[a-zA-Z0-9_.-]+" - }, - "TableNameList":{ - "type":"list", - "member":{"shape":"TableName"} - }, - "TableStatus":{ - "type":"string", - "enum":[ - "CREATING", - "UPDATING", - "DELETING", - "ACTIVE" - ] - }, - "UpdateExpression":{"type":"string"}, - "UpdateGlobalSecondaryIndexAction":{ - "type":"structure", - "required":[ - "IndexName", - "ProvisionedThroughput" - ], - "members":{ - "IndexName":{ - "shape":"IndexName", - "documentation":"

The name of the global secondary index to be updated.

" - }, - "ProvisionedThroughput":{"shape":"ProvisionedThroughput"} - }, - "documentation":"

Represents the new provisioned throughput settings to be applied to a global secondary index.

" - }, - "UpdateItemInput":{ - "type":"structure", - "required":[ - "TableName", - "Key" - ], - "members":{ - "TableName":{ - "shape":"TableName", - "documentation":"

The name of the table containing the item to update.

" - }, - "Key":{ - "shape":"Key", - "documentation":"

The primary key of the item to be updated. Each element consists of an attribute name and a value for that attribute.

For the primary key, you must provide all of the attributes. For example, with a hash type primary key, you only need to specify the hash attribute. For a hash-and-range type primary key, you must specify both the hash attribute and the range attribute.

" - }, - "AttributeUpdates":{ - "shape":"AttributeUpdates", - "documentation":"

There is a newer parameter available. Use UpdateExpression instead. Note that if you use AttributeUpdates and UpdateExpression at the same time, DynamoDB will return a ValidationException exception.

This parameter can be used for modifying top-level attributes; however, it does not support individual list or map elements.

The names of attributes to be modified, the action to perform on each, and the new value for each. If you are updating an attribute that is an index key attribute for any indexes on that table, the attribute type must match the index key type defined in the AttributesDefinition of the table description. You can use UpdateItem to update any nonkey attributes.

Attribute values cannot be null. String and Binary type attributes must have lengths greater than zero. Set type attributes must not be empty. Requests with empty values will be rejected with a ValidationException exception.

Each AttributeUpdates element consists of an attribute name to modify, along with the following:

If you specify any attributes that are part of an index key, then the data types for those attributes must match those of the schema in the table's attribute definition.

" - }, - "Expected":{ - "shape":"ExpectedAttributeMap", - "documentation":"

There is a newer parameter available. Use ConditionExpression instead. Note that if you use Expected and ConditionExpression at the same time, DynamoDB will return a ValidationException exception.

This parameter does not support lists or maps.

A map of attribute/condition pairs. Expected provides a conditional block for the UpdateItem operation.

Each element of Expected consists of an attribute name, a comparison operator, and one or more values. DynamoDB compares the attribute with the value(s) you supplied, using the comparison operator. For each Expected element, the result of the evaluation is either true or false.

If you specify more than one element in the Expected map, then by default all of the conditions must evaluate to true. In other words, the conditions are ANDed together. (You can use the ConditionalOperator parameter to OR the conditions instead. If you do this, then at least one of the conditions must evaluate to true, rather than all of them.)

If the Expected map evaluates to true, then the conditional operation succeeds; otherwise, it fails.

Expected contains the following:

For usage examples of AttributeValueList and ComparisonOperator, see Legacy Conditional Parameters in the Amazon DynamoDB Developer Guide.

For backward compatibility with previous DynamoDB releases, the following parameters can be used instead of AttributeValueList and ComparisonOperator:

The Value and Exists parameters are incompatible with AttributeValueList and ComparisonOperator. Note that if you use both sets of parameters at once, DynamoDB will return a ValidationException exception.

" - }, - "ConditionalOperator":{ - "shape":"ConditionalOperator", - "documentation":"

There is a newer parameter available. Use ConditionExpression instead. Note that if you use ConditionalOperator and ConditionExpression at the same time, DynamoDB will return a ValidationException exception.

This parameter does not support lists or maps.

A logical operator to apply to the conditions in the Expected map:

If you omit ConditionalOperator, then AND is the default.

The operation will succeed only if the entire map evaluates to true.

" - }, - "ReturnValues":{ - "shape":"ReturnValue", - "documentation":"

Use ReturnValues if you want to get the item attributes as they appeared either before or after they were updated. For UpdateItem, the valid values are:

" - }, - "ReturnConsumedCapacity":{"shape":"ReturnConsumedCapacity"}, - "ReturnItemCollectionMetrics":{ - "shape":"ReturnItemCollectionMetrics", - "documentation":"

A value that if set to SIZE, the response includes statistics about item collections, if any, that were modified during the operation are returned in the response. If set to NONE (the default), no statistics are returned.

" - }, - "UpdateExpression":{ - "shape":"UpdateExpression", - "documentation":"

An expression that defines one or more attributes to be updated, the action to be performed on them, and new value(s) for them.

The following action values are available for UpdateExpression.

You can have many actions in a single expression, such as the following: SET a=:value1, b=:value2 DELETE :value3, :value4, :value5

An expression can contain any of the following:

" - }, - "ConditionExpression":{ - "shape":"ConditionExpression", - "documentation":"

A condition that must be satisfied in order for a conditional update to succeed.

An expression can contain any of the following:

" - }, - "ExpressionAttributeNames":{ - "shape":"ExpressionAttributeNameMap", - "documentation":"

One or more substitution tokens for simplifying complex expressions. The following are some use cases for an ExpressionAttributeNames value:

Use the # character in an expression to dereference an attribute name. For example, consider the following expression:

Now suppose that you specified the following for ExpressionAttributeNames:

The expression can now be simplified as follows:

" - }, - "ExpressionAttributeValues":{ - "shape":"ExpressionAttributeValueMap", - "documentation":"

One or more values that can be substituted in an expression.

Use the : character in an expression to dereference an attribute value. For example, consider the following expression:

Now suppose that you specified the following for ExpressionAttributeValues:

The expression can now be simplified as follows:

" - } - }, - "documentation":"

Represents the input of an UpdateItem operation.

" - }, - "UpdateItemOutput":{ - "type":"structure", - "members":{ - "Attributes":{ - "shape":"AttributeMap", - "documentation":"

A map of attribute values as they appeared before the UpdateItem operation. This map only appears if ReturnValues was specified as something other than NONE in the request. Each element represents one attribute.

" - }, - "ConsumedCapacity":{"shape":"ConsumedCapacity"}, - "ItemCollectionMetrics":{"shape":"ItemCollectionMetrics"} - }, - "documentation":"

Represents the output of an UpdateItem operation.

" - }, - "UpdateTableInput":{ - "type":"structure", - "required":["TableName"], - "members":{ - "TableName":{ - "shape":"TableName", - "documentation":"

The name of the table to be updated.

" - }, - "ProvisionedThroughput":{"shape":"ProvisionedThroughput"}, - "GlobalSecondaryIndexUpdates":{ - "shape":"GlobalSecondaryIndexUpdateList", - "documentation":"

An array of one or more global secondary indexes on the table, together with provisioned throughput settings for each index.

" - } - }, - "documentation":"

Represents the input of an UpdateTable operation.

" - }, - "UpdateTableOutput":{ - "type":"structure", - "members":{ - "TableDescription":{"shape":"TableDescription"} - }, - "documentation":"

Represents the output of an UpdateTable operation.

" - }, - "WriteRequest":{ - "type":"structure", - "members":{ - "PutRequest":{ - "shape":"PutRequest", - "documentation":"

A request to perform a PutItem operation.

" - }, - "DeleteRequest":{ - "shape":"DeleteRequest", - "documentation":"

A request to perform a DeleteItem operation.

" - } - }, - "documentation":"

Represents an operation to perform - either DeleteItem or PutItem. You can only specify one of these operations, not both, in a single WriteRequest. If you do need to perform both of these operations, you will need to specify two separate WriteRequest objects.

" - }, - "WriteRequests":{ - "type":"list", - "member":{"shape":"WriteRequest"}, - "min":1, - "max":25 - } - } -} diff --git a/src/github.com/getlantern/aws-sdk-go/apis/dynamodb/2012-08-10.paginators.json b/src/github.com/getlantern/aws-sdk-go/apis/dynamodb/2012-08-10.paginators.json deleted file mode 100644 index bb986d114f..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/apis/dynamodb/2012-08-10.paginators.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "pagination": { - "ListTables": { - "input_token": "ExclusiveStartTableName", - "output_token": "LastEvaluatedTableName", - "limit_key": "Limit", - "result_key": "TableNames" - }, - "Query": { - "input_token": "ExclusiveStartKey", - "output_token": "LastEvaluatedKey", - "limit_key": "Limit", - "result_key": "Items", - "non_aggregate_keys": [ - "Count", - "ScannedCount", - "ConsumedCapacity" - ] - }, - "Scan": { - "input_token": "ExclusiveStartKey", - "output_token": "LastEvaluatedKey", - "limit_key": "Limit", - "result_key": "Items", - "non_aggregate_keys": [ - "Count", - "ScannedCount", - "ConsumedCapacity" - ] - } - } -} diff --git a/src/github.com/getlantern/aws-sdk-go/apis/dynamodb/2012-08-10.waiters.json b/src/github.com/getlantern/aws-sdk-go/apis/dynamodb/2012-08-10.waiters.json deleted file mode 100644 index 43a55ca7bd..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/apis/dynamodb/2012-08-10.waiters.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "version": 2, - "waiters": { - "TableExists": { - "delay": 20, - "operation": "DescribeTable", - "maxAttempts": 25, - "acceptors": [ - { - "expected": "ACTIVE", - "matcher": "path", - "state": "success", - "argument": "Table.TableStatus" - }, - { - "expected": "ResourceNotFoundException", - "matcher": "error", - "state": "retry" - } - ] - }, - "TableNotExists": { - "delay": 20, - "operation": "DescribeTable", - "maxAttempts": 25, - "acceptors": [ - { - "expected": "ResourceNotFoundException", - "matcher": "error", - "state": "success" - } - ] - } - } -} diff --git a/src/github.com/getlantern/aws-sdk-go/apis/ec2/2014-09-01.normal.json b/src/github.com/getlantern/aws-sdk-go/apis/ec2/2014-09-01.normal.json deleted file mode 100644 index 7c92d3a638..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/apis/ec2/2014-09-01.normal.json +++ /dev/null @@ -1,11699 +0,0 @@ -{ - "metadata":{ - "apiVersion":"2014-09-01", - "endpointPrefix":"ec2", - "serviceAbbreviation":"Amazon EC2", - "serviceFullName":"Amazon Elastic Compute Cloud", - "signatureVersion":"v4", - "xmlNamespace":"http://ec2.amazonaws.com/doc/2014-09-01", - "protocol":"ec2" - }, - "documentation":"Amazon Elastic Compute Cloud

Amazon Elastic Compute Cloud (Amazon EC2) provides resizable computing capacity in the Amazon Web Services (AWS) cloud. Using Amazon EC2 eliminates your need to invest in hardware up front, so you can develop and deploy applications faster.

", - "operations":{ - "AcceptVpcPeeringConnection":{ - "name":"AcceptVpcPeeringConnection", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"AcceptVpcPeeringConnectionRequest"}, - "output":{"shape":"AcceptVpcPeeringConnectionResult"}, - "documentation":"

Accept a VPC peering connection request. To accept a request, the VPC peering connection must be in the pending-acceptance state, and you must be the owner of the peer VPC. Use the DescribeVpcPeeringConnections request to view your outstanding VPC peering connection requests.

" - }, - "AllocateAddress":{ - "name":"AllocateAddress", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"AllocateAddressRequest"}, - "output":{"shape":"AllocateAddressResult"}, - "documentation":"

Acquires an Elastic IP address.

An Elastic IP address is for use either in the EC2-Classic platform or in a VPC. For more information, see Elastic IP Addresses in the Amazon Elastic Compute Cloud User Guide.

" - }, - "AssignPrivateIpAddresses":{ - "name":"AssignPrivateIpAddresses", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"AssignPrivateIpAddressesRequest"}, - "documentation":"

Assigns one or more secondary private IP addresses to the specified network interface. You can specify one or more specific secondary IP addresses, or you can specify the number of secondary IP addresses to be automatically assigned within the subnet's CIDR block range. The number of secondary IP addresses that you can assign to an instance varies by instance type. For information about instance types, see Instance Types in the Amazon Elastic Compute Cloud User Guide. For more information about Elastic IP addresses, see Elastic IP Addresses in the Amazon Elastic Compute Cloud User Guide.

AssignPrivateIpAddresses is available only in EC2-VPC.

" - }, - "AssociateAddress":{ - "name":"AssociateAddress", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"AssociateAddressRequest"}, - "output":{"shape":"AssociateAddressResult"}, - "documentation":"

Associates an Elastic IP address with an instance or a network interface.

An Elastic IP address is for use in either the EC2-Classic platform or in a VPC. For more information, see Elastic IP Addresses in the Amazon Elastic Compute Cloud User Guide.

[EC2-Classic, VPC in an EC2-VPC-only account] If the Elastic IP address is already associated with a different instance, it is disassociated from that instance and associated with the specified instance.

[VPC in an EC2-Classic account] If you don't specify a private IP address, the Elastic IP address is associated with the primary IP address. If the Elastic IP address is already associated with a different instance or a network interface, you get an error unless you allow reassociation.

This is an idempotent operation. If you perform the operation more than once, Amazon EC2 doesn't return an error.

" - }, - "AssociateDhcpOptions":{ - "name":"AssociateDhcpOptions", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"AssociateDhcpOptionsRequest"}, - "documentation":"

Associates a set of DHCP options (that you've previously created) with the specified VPC, or associates no DHCP options with the VPC.

After you associate the options with the VPC, any existing instances and all new instances that you launch in that VPC use the options. You don't need to restart or relaunch the instances. They automatically pick up the changes within a few hours, depending on how frequently the instance renews its DHCP lease. You can explicitly renew the lease using the operating system on the instance.

For more information, see DHCP Options Sets in the Amazon Virtual Private Cloud User Guide.

" - }, - "AssociateRouteTable":{ - "name":"AssociateRouteTable", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"AssociateRouteTableRequest"}, - "output":{"shape":"AssociateRouteTableResult"}, - "documentation":"

Associates a subnet with a route table. The subnet and route table must be in the same VPC. This association causes traffic originating from the subnet to be routed according to the routes in the route table. The action returns an association ID, which you need in order to disassociate the route table from the subnet later. A route table can be associated with multiple subnets.

For more information about route tables, see Route Tables in the Amazon Virtual Private Cloud User Guide.

" - }, - "AttachInternetGateway":{ - "name":"AttachInternetGateway", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"AttachInternetGatewayRequest"}, - "documentation":"

Attaches an Internet gateway to a VPC, enabling connectivity between the Internet and the VPC. For more information about your VPC and Internet gateway, see the Amazon Virtual Private Cloud User Guide.

" - }, - "AttachNetworkInterface":{ - "name":"AttachNetworkInterface", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"AttachNetworkInterfaceRequest"}, - "output":{"shape":"AttachNetworkInterfaceResult"}, - "documentation":"

Attaches a network interface to an instance.

" - }, - "AttachVolume":{ - "name":"AttachVolume", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"AttachVolumeRequest"}, - "output":{ - "shape":"VolumeAttachment", - "locationName":"attachment" - }, - "documentation":"

Attaches an Amazon EBS volume to a running or stopped instance and exposes it to the instance with the specified device name.

Encrypted Amazon EBS volumes may only be attached to instances that support Amazon EBS encryption. For more information, see Amazon EBS Encryption in the Amazon Elastic Compute Cloud User Guide.

For a list of supported device names, see Attaching an Amazon EBS Volume to an Instance. Any device names that aren't reserved for instance store volumes can be used for Amazon EBS volumes. For more information, see Amazon EC2 Instance Store in the Amazon Elastic Compute Cloud User Guide.

If a volume has an AWS Marketplace product code:

For an overview of the AWS Marketplace, see https://aws.amazon.com/marketplace/help/200900000. For more information about how to use the AWS Marketplace, see AWS Marketplace.

For more information about Amazon EBS volumes, see Attaching Amazon EBS Volumes in the Amazon Elastic Compute Cloud User Guide.

" - }, - "AttachVpnGateway":{ - "name":"AttachVpnGateway", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"AttachVpnGatewayRequest"}, - "output":{"shape":"AttachVpnGatewayResult"}, - "documentation":"

Attaches a virtual private gateway to a VPC. For more information, see Adding a Hardware Virtual Private Gateway to Your VPC in the Amazon Virtual Private Cloud User Guide.

" - }, - "AuthorizeSecurityGroupEgress":{ - "name":"AuthorizeSecurityGroupEgress", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"AuthorizeSecurityGroupEgressRequest"}, - "documentation":"

Adds one or more egress rules to a security group for use with a VPC. Specifically, this action permits instances to send traffic to one or more destination CIDR IP address ranges, or to one or more destination security groups for the same VPC.

You can have up to 50 rules per security group (covering both ingress and egress rules).

A security group is for use with instances either in the EC2-Classic platform or in a specific VPC. This action doesn't apply to security groups for use in EC2-Classic. For more information, see Security Groups for Your VPC in the Amazon Virtual Private Cloud User Guide.

Each rule consists of the protocol (for example, TCP), plus either a CIDR range or a source group. For the TCP and UDP protocols, you must also specify the destination port or port range. For the ICMP protocol, you must also specify the ICMP type and code. You can use -1 for the type or code to mean all types or all codes.

Rule changes are propagated to affected instances as quickly as possible. However, a small delay might occur.

" - }, - "AuthorizeSecurityGroupIngress":{ - "name":"AuthorizeSecurityGroupIngress", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"AuthorizeSecurityGroupIngressRequest"}, - "documentation":"

Adds one or more ingress rules to a security group.

EC2-Classic: You can have up to 100 rules per group.

EC2-VPC: You can have up to 50 rules per group (covering both ingress and egress rules).

Rule changes are propagated to instances within the security group as quickly as possible. However, a small delay might occur.

[EC2-Classic] This action gives one or more CIDR IP address ranges permission to access a security group in your account, or gives one or more security groups (called the source groups) permission to access a security group for your account. A source group can be for your own AWS account, or another.

[EC2-VPC] This action gives one or more CIDR IP address ranges permission to access a security group in your VPC, or gives one or more other security groups (called the source groups) permission to access a security group for your VPC. The security groups must all be for the same VPC.

" - }, - "BundleInstance":{ - "name":"BundleInstance", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"BundleInstanceRequest"}, - "output":{"shape":"BundleInstanceResult"}, - "documentation":"

Bundles an Amazon instance store-backed Windows instance.

During bundling, only the root device volume (C:\\) is bundled. Data on other instance store volumes is not preserved.

For more information, see Creating an Instance Store-Backed Windows AMI.

" - }, - "CancelBundleTask":{ - "name":"CancelBundleTask", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CancelBundleTaskRequest"}, - "output":{"shape":"CancelBundleTaskResult"}, - "documentation":"

Cancels a bundling operation for an instance store-backed Windows instance.

" - }, - "CancelConversionTask":{ - "name":"CancelConversionTask", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CancelConversionRequest"}, - "documentation":"

Cancels an active conversion task. The task can be the import of an instance or volume. The action removes all artifacts of the conversion, including a partially uploaded volume or instance. If the conversion is complete or is in the process of transferring the final disk image, the command fails and returns an exception.

For more information, see Using the Command Line Tools to Import Your Virtual Machine to Amazon EC2 in the Amazon Elastic Compute Cloud User Guide.

" - }, - "CancelExportTask":{ - "name":"CancelExportTask", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CancelExportTaskRequest"}, - "documentation":"

Cancels an active export task. The request removes all artifacts of the export, including any partially-created Amazon S3 objects. If the export task is complete or is in the process of transferring the final disk image, the command fails and returns an error.

" - }, - "CancelReservedInstancesListing":{ - "name":"CancelReservedInstancesListing", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CancelReservedInstancesListingRequest"}, - "output":{"shape":"CancelReservedInstancesListingResult"}, - "documentation":"

Cancels the specified Reserved Instance listing in the Reserved Instance Marketplace.

For more information, see Reserved Instance Marketplace in the Amazon Elastic Compute Cloud User Guide.

" - }, - "CancelSpotInstanceRequests":{ - "name":"CancelSpotInstanceRequests", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CancelSpotInstanceRequestsRequest"}, - "output":{"shape":"CancelSpotInstanceRequestsResult"}, - "documentation":"

Cancels one or more Spot Instance requests. Spot Instances are instances that Amazon EC2 starts on your behalf when the maximum price that you specify exceeds the current Spot Price. Amazon EC2 periodically sets the Spot Price based on available Spot Instance capacity and current Spot Instance requests. For more information about Spot Instances, see Spot Instances in the Amazon Elastic Compute Cloud User Guide.

Canceling a Spot Instance request does not terminate running Spot Instances associated with the request.

" - }, - "ConfirmProductInstance":{ - "name":"ConfirmProductInstance", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"ConfirmProductInstanceRequest"}, - "output":{"shape":"ConfirmProductInstanceResult"}, - "documentation":"

Determines whether a product code is associated with an instance. This action can only be used by the owner of the product code. It is useful when a product code owner needs to verify whether another user's instance is eligible for support.

" - }, - "CopyImage":{ - "name":"CopyImage", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CopyImageRequest"}, - "output":{"shape":"CopyImageResult"}, - "documentation":"

Initiates the copy of an AMI from the specified source region to the region in which the request was made. You specify the destination region by using its endpoint when making the request. AMIs that use encrypted Amazon EBS snapshots cannot be copied with this method.

For more information, see Copying AMIs in the Amazon Elastic Compute Cloud User Guide.

" - }, - "CopySnapshot":{ - "name":"CopySnapshot", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CopySnapshotRequest"}, - "output":{"shape":"CopySnapshotResult"}, - "documentation":"

Copies a point-in-time snapshot of an Amazon EBS volume and stores it in Amazon S3. You can copy the snapshot within the same region or from one region to another. You can use the snapshot to create Amazon EBS volumes or Amazon Machine Images (AMIs). The snapshot is copied to the regional endpoint that you send the HTTP request to.

Copies of encrypted Amazon EBS snapshots remain encrypted. Copies of unencrypted snapshots remain unencrypted.

For more information, see Copying an Amazon EBS Snapshot in the Amazon Elastic Compute Cloud User Guide.

" - }, - "CreateCustomerGateway":{ - "name":"CreateCustomerGateway", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CreateCustomerGatewayRequest"}, - "output":{"shape":"CreateCustomerGatewayResult"}, - "documentation":"

Provides information to AWS about your VPN customer gateway device. The customer gateway is the appliance at your end of the VPN connection. (The device on the AWS side of the VPN connection is the virtual private gateway.) You must provide the Internet-routable IP address of the customer gateway's external interface. The IP address must be static and can't be behind a device performing network address translation (NAT).

For devices that use Border Gateway Protocol (BGP), you can also provide the device's BGP Autonomous System Number (ASN). You can use an existing ASN assigned to your network. If you don't have an ASN already, you can use a private ASN (in the 64512 - 65534 range).

For more information about VPN customer gateways, see Adding a Hardware Virtual Private Gateway to Your VPC in the Amazon Virtual Private Cloud User Guide.

" - }, - "CreateDhcpOptions":{ - "name":"CreateDhcpOptions", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CreateDhcpOptionsRequest"}, - "output":{"shape":"CreateDhcpOptionsResult"}, - "documentation":"

Creates a set of DHCP options for your VPC. After creating the set, you must associate it with the VPC, causing all existing and new instances that you launch in the VPC to use this set of DHCP options. The following are the individual DHCP options you can specify. For more information about the options, see RFC 2132.

Your VPC automatically starts out with a set of DHCP options that includes only a DNS server that we provide (AmazonProvidedDNS). If you create a set of options, and if your VPC has an Internet gateway, make sure to set the domain-name-servers option either to AmazonProvidedDNS or to a domain name server of your choice. For more information about DHCP options, see DHCP Options Sets in the Amazon Virtual Private Cloud User Guide.

" - }, - "CreateImage":{ - "name":"CreateImage", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CreateImageRequest"}, - "output":{"shape":"CreateImageResult"}, - "documentation":"

Creates an Amazon EBS-backed AMI from an Amazon EBS-backed instance that is either running or stopped.

If you customized your instance with instance store volumes or EBS volumes in addition to the root device volume, the new AMI contains block device mapping information for those volumes. When you launch an instance from this new AMI, the instance automatically launches with those additional volumes.

For more information, see Creating Amazon EBS-Backed Linux AMIs in the Amazon Elastic Compute Cloud User Guide.

" - }, - "CreateInstanceExportTask":{ - "name":"CreateInstanceExportTask", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CreateInstanceExportTaskRequest"}, - "output":{"shape":"CreateInstanceExportTaskResult"}, - "documentation":"

Exports a running or stopped instance to an Amazon S3 bucket.

For information about the supported operating systems, image formats, and known limitations for the types of instances you can export, see Exporting EC2 Instances in the Amazon Elastic Compute Cloud User Guide.

" - }, - "CreateInternetGateway":{ - "name":"CreateInternetGateway", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CreateInternetGatewayRequest"}, - "output":{"shape":"CreateInternetGatewayResult"}, - "documentation":"

Creates an Internet gateway for use with a VPC. After creating the Internet gateway, you attach it to a VPC using AttachInternetGateway.

For more information about your VPC and Internet gateway, see the Amazon Virtual Private Cloud User Guide.

" - }, - "CreateKeyPair":{ - "name":"CreateKeyPair", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CreateKeyPairRequest"}, - "output":{ - "shape":"KeyPair", - "documentation":"

Information about the key pair.

", - "locationName":"keyPair" - }, - "documentation":"

Creates a 2048-bit RSA key pair with the specified name. Amazon EC2 stores the public key and displays the private key for you to save to a file. The private key is returned as an unencrypted PEM encoded PKCS#8 private key. If a key with the specified name already exists, Amazon EC2 returns an error.

You can have up to five thousand key pairs per region.

The key pair returned to you is available only in the region in which you create it. To create a key pair that is available in all regions, use ImportKeyPair.

For more information about key pairs, see Key Pairs in the Amazon Elastic Compute Cloud User Guide.

" - }, - "CreateNetworkAcl":{ - "name":"CreateNetworkAcl", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CreateNetworkAclRequest"}, - "output":{"shape":"CreateNetworkAclResult"}, - "documentation":"

Creates a network ACL in a VPC. Network ACLs provide an optional layer of security (in addition to security groups) for the instances in your VPC.

For more information about network ACLs, see Network ACLs in the Amazon Virtual Private Cloud User Guide.

" - }, - "CreateNetworkAclEntry":{ - "name":"CreateNetworkAclEntry", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CreateNetworkAclEntryRequest"}, - "documentation":"

Creates an entry (a rule) in a network ACL with the specified rule number. Each network ACL has a set of numbered ingress rules and a separate set of numbered egress rules. When determining whether a packet should be allowed in or out of a subnet associated with the ACL, we process the entries in the ACL according to the rule numbers, in ascending order. Each network ACL has a set of ingress rules and a separate set of egress rules.

We recommend that you leave room between the rule numbers (for example, 100, 110, 120, ...), and not number them one right after the other (for example, 101, 102, 103, ...). This makes it easier to add a rule between existing ones without having to renumber the rules.

After you add an entry, you can't modify it; you must either replace it, or create an entry and delete the old one.

For more information about network ACLs, see Network ACLs in the Amazon Virtual Private Cloud User Guide.

" - }, - "CreateNetworkInterface":{ - "name":"CreateNetworkInterface", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CreateNetworkInterfaceRequest"}, - "output":{"shape":"CreateNetworkInterfaceResult"}, - "documentation":"

Creates a network interface in the specified subnet.

For more information about network interfaces, see Elastic Network Interfaces in the Amazon Elastic Compute Cloud User Guide.

" - }, - "CreatePlacementGroup":{ - "name":"CreatePlacementGroup", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CreatePlacementGroupRequest"}, - "documentation":"

Creates a placement group that you launch cluster instances into. You must give the group a name that's unique within the scope of your account.

For more information about placement groups and cluster instances, see Cluster Instances in the Amazon Elastic Compute Cloud User Guide.

" - }, - "CreateReservedInstancesListing":{ - "name":"CreateReservedInstancesListing", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CreateReservedInstancesListingRequest"}, - "output":{"shape":"CreateReservedInstancesListingResult"}, - "documentation":"

Creates a listing for Amazon EC2 Reserved Instances to be sold in the Reserved Instance Marketplace. You can submit one Reserved Instance listing at a time. To get a list of your Reserved Instances, you can use the DescribeReservedInstances operation.

The Reserved Instance Marketplace matches sellers who want to resell Reserved Instance capacity that they no longer need with buyers who want to purchase additional capacity. Reserved Instances bought and sold through the Reserved Instance Marketplace work like any other Reserved Instances.

To sell your Reserved Instances, you must first register as a Seller in the Reserved Instance Marketplace. After completing the registration process, you can create a Reserved Instance Marketplace listing of some or all of your Reserved Instances, and specify the upfront price to receive for them. Your Reserved Instance listings then become available for purchase. To view the details of your Reserved Instance listing, you can use the DescribeReservedInstancesListings operation.

For more information, see Reserved Instance Marketplace in the Amazon Elastic Compute Cloud User Guide.

" - }, - "CreateRoute":{ - "name":"CreateRoute", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CreateRouteRequest"}, - "documentation":"

Creates a route in a route table within a VPC.

You must specify one of the following targets: Internet gateway or virtual private gateway, NAT instance, VPC peering connection, or network interface.

When determining how to route traffic, we use the route with the most specific match. For example, let's say the traffic is destined for 192.0.2.3, and the route table includes the following two routes:

Both routes apply to the traffic destined for 192.0.2.3. However, the second route in the list covers a smaller number of IP addresses and is therefore more specific, so we use that route to determine where to target the traffic.

For more information about route tables, see Route Tables in the Amazon Virtual Private Cloud User Guide.

" - }, - "CreateRouteTable":{ - "name":"CreateRouteTable", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CreateRouteTableRequest"}, - "output":{"shape":"CreateRouteTableResult"}, - "documentation":"

Creates a route table for the specified VPC. After you create a route table, you can add routes and associate the table with a subnet.

For more information about route tables, see Route Tables in the Amazon Virtual Private Cloud User Guide.

" - }, - "CreateSecurityGroup":{ - "name":"CreateSecurityGroup", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CreateSecurityGroupRequest"}, - "output":{"shape":"CreateSecurityGroupResult"}, - "documentation":"

Creates a security group.

A security group is for use with instances either in the EC2-Classic platform or in a specific VPC. For more information, see Amazon EC2 Security Groups in the Amazon Elastic Compute Cloud User Guide and Security Groups for Your VPC in the Amazon Virtual Private Cloud User Guide.

EC2-Classic: You can have up to 500 security groups.

EC2-VPC: You can create up to 100 security groups per VPC.

When you create a security group, you specify a friendly name of your choice. You can have a security group for use in EC2-Classic with the same name as a security group for use in a VPC. However, you can't have two security groups for use in EC2-Classic with the same name or two security groups for use in a VPC with the same name.

You have a default security group for use in EC2-Classic and a default security group for use in your VPC. If you don't specify a security group when you launch an instance, the instance is launched into the appropriate default security group. A default security group includes a default rule that grants instances unrestricted network access to each other.

You can add or remove rules from your security groups using AuthorizeSecurityGroupIngress, AuthorizeSecurityGroupEgress, RevokeSecurityGroupIngress, and RevokeSecurityGroupEgress.

" - }, - "CreateSnapshot":{ - "name":"CreateSnapshot", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CreateSnapshotRequest"}, - "output":{ - "shape":"Snapshot", - "locationName":"snapshot" - }, - "documentation":"

Creates a snapshot of an Amazon EBS volume and stores it in Amazon S3. You can use snapshots for backups, to make copies of Amazon EBS volumes, and to save data before shutting down an instance.

When a snapshot is created, any AWS Marketplace product codes that are associated with the source volume are propagated to the snapshot.

You can take a snapshot of an attached volume that is in use. However, snapshots only capture data that has been written to your Amazon EBS volume at the time the snapshot command is issued; this may exclude any data that has been cached by any applications or the operating system. If you can pause any file systems on the volume long enough to take a snapshot, your snapshot should be complete. However, if you cannot pause all file writes to the volume, you should unmount the volume from within the instance, issue the snapshot command, and then remount the volume to ensure a consistent and complete snapshot. You may remount and use your volume while the snapshot status is pending.

To create a snapshot for Amazon EBS volumes that serve as root devices, you should stop the instance before taking the snapshot.

Snapshots that are taken from encrypted volumes are automatically encrypted. Volumes that are created from encrypted snapshots are also automatically encrypted. Your encrypted volumes and any associated snapshots always remain protected.

For more information, see Amazon Elastic Block Store and Amazon EBS Encryption in the Amazon Elastic Compute Cloud User Guide.

" - }, - "CreateSpotDatafeedSubscription":{ - "name":"CreateSpotDatafeedSubscription", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CreateSpotDatafeedSubscriptionRequest"}, - "output":{"shape":"CreateSpotDatafeedSubscriptionResult"}, - "documentation":"

Creates a datafeed for Spot Instances, enabling you to view Spot Instance usage logs. You can create one data feed per AWS account. For more information, see Spot Instances in the Amazon Elastic Compute Cloud User Guide.

" - }, - "CreateSubnet":{ - "name":"CreateSubnet", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CreateSubnetRequest"}, - "output":{"shape":"CreateSubnetResult"}, - "documentation":"

Creates a subnet in an existing VPC.

When you create each subnet, you provide the VPC ID and the CIDR block you want for the subnet. After you create a subnet, you can't change its CIDR block. The subnet's CIDR block can be the same as the VPC's CIDR block (assuming you want only a single subnet in the VPC), or a subset of the VPC's CIDR block. If you create more than one subnet in a VPC, the subnets' CIDR blocks must not overlap. The smallest subnet (and VPC) you can create uses a /28 netmask (16 IP addresses), and the largest uses a /16 netmask (65,536 IP addresses).

AWS reserves both the first four and the last IP address in each subnet's CIDR block. They're not available for use.

If you add more than one subnet to a VPC, they're set up in a star topology with a logical router in the middle.

If you launch an instance in a VPC using an Amazon EBS-backed AMI, the IP address doesn't change if you stop and restart the instance (unlike a similar instance launched outside a VPC, which gets a new IP address when restarted). It's therefore possible to have a subnet with no running instances (they're all stopped), but no remaining IP addresses available.

For more information about subnets, see Your VPC and Subnets in the Amazon Virtual Private Cloud User Guide.

" - }, - "CreateTags":{ - "name":"CreateTags", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CreateTagsRequest"}, - "documentation":"

Adds or overwrites one or more tags for the specified EC2 resource or resources. Each resource can have a maximum of 10 tags. Each tag consists of a key and optional value. Tag keys must be unique per resource.

For more information about tags, see Tagging Your Resources in the Amazon Elastic Compute Cloud User Guide.

" - }, - "CreateVolume":{ - "name":"CreateVolume", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CreateVolumeRequest"}, - "output":{ - "shape":"Volume", - "locationName":"volume" - }, - "documentation":"

Creates an Amazon EBS volume that can be attached to an instance in the same Availability Zone. The volume is created in the specified region.

You can create a new empty volume or restore a volume from an Amazon EBS snapshot. Any AWS Marketplace product codes from the snapshot are propagated to the volume.

You can create encrypted volumes with the Encrypted parameter. Encrypted volumes may only be attached to instances that support Amazon EBS encryption. Volumes that are created from encrypted snapshots are also automatically encrypted. For more information, see Amazon EBS Encryption in the Amazon Elastic Compute Cloud User Guide.

For more information, see Creating or Restoring an Amazon EBS Volume in the Amazon Elastic Compute Cloud User Guide.

" - }, - "CreateVpc":{ - "name":"CreateVpc", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CreateVpcRequest"}, - "output":{"shape":"CreateVpcResult"}, - "documentation":"

Creates a VPC with the specified CIDR block.

The smallest VPC you can create uses a /28 netmask (16 IP addresses), and the largest uses a /16 netmask (65,536 IP addresses). To help you decide how big to make your VPC, see Your VPC and Subnets in the Amazon Virtual Private Cloud User Guide.

By default, each instance you launch in the VPC has the default DHCP options, which includes only a default DNS server that we provide (AmazonProvidedDNS). For more information about DHCP options, see DHCP Options Sets in the Amazon Virtual Private Cloud User Guide.

" - }, - "CreateVpcPeeringConnection":{ - "name":"CreateVpcPeeringConnection", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CreateVpcPeeringConnectionRequest"}, - "output":{"shape":"CreateVpcPeeringConnectionResult"}, - "documentation":"

Requests a VPC peering connection between two VPCs: a requester VPC that you own and a peer VPC with which to create the connection. The peer VPC can belong to another AWS account. The requester VPC and peer VPC cannot have overlapping CIDR blocks.

The owner of the peer VPC must accept the peering request to activate the peering connection. The VPC peering connection request expires after 7 days, after which it cannot be accepted or rejected.

A CreateVpcPeeringConnection request between VPCs with overlapping CIDR blocks results in the VPC peering connection having a status of failed.

" - }, - "CreateVpnConnection":{ - "name":"CreateVpnConnection", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CreateVpnConnectionRequest"}, - "output":{"shape":"CreateVpnConnectionResult"}, - "documentation":"

Creates a VPN connection between an existing virtual private gateway and a VPN customer gateway. The only supported connection type is ipsec.1.

The response includes information that you need to give to your network administrator to configure your customer gateway.

We strongly recommend that you use HTTPS when calling this operation because the response contains sensitive cryptographic information for configuring your customer gateway.

If you decide to shut down your VPN connection for any reason and later create a new VPN connection, you must reconfigure your customer gateway with the new information returned from this call.

For more information about VPN connections, see Adding a Hardware Virtual Private Gateway to Your VPC in the Amazon Virtual Private Cloud User Guide.

" - }, - "CreateVpnConnectionRoute":{ - "name":"CreateVpnConnectionRoute", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CreateVpnConnectionRouteRequest"}, - "documentation":"

Creates a static route associated with a VPN connection between an existing virtual private gateway and a VPN customer gateway. The static route allows traffic to be routed from the virtual private gateway to the VPN customer gateway.

For more information about VPN connections, see Adding a Hardware Virtual Private Gateway to Your VPC in the Amazon Virtual Private Cloud User Guide.

" - }, - "CreateVpnGateway":{ - "name":"CreateVpnGateway", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CreateVpnGatewayRequest"}, - "output":{"shape":"CreateVpnGatewayResult"}, - "documentation":"

Creates a virtual private gateway. A virtual private gateway is the endpoint on the VPC side of your VPN connection. You can create a virtual private gateway before creating the VPC itself.

For more information about virtual private gateways, see Adding a Hardware Virtual Private Gateway to Your VPC in the Amazon Virtual Private Cloud User Guide.

" - }, - "DeleteCustomerGateway":{ - "name":"DeleteCustomerGateway", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DeleteCustomerGatewayRequest"}, - "documentation":"

Deletes the specified customer gateway. You must delete the VPN connection before you can delete the customer gateway.

" - }, - "DeleteDhcpOptions":{ - "name":"DeleteDhcpOptions", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DeleteDhcpOptionsRequest"}, - "documentation":"

Deletes the specified set of DHCP options. You must disassociate the set of DHCP options before you can delete it. You can disassociate the set of DHCP options by associating either a new set of options or the default set of options with the VPC.

" - }, - "DeleteInternetGateway":{ - "name":"DeleteInternetGateway", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DeleteInternetGatewayRequest"}, - "documentation":"

Deletes the specified Internet gateway. You must detach the Internet gateway from the VPC before you can delete it.

" - }, - "DeleteKeyPair":{ - "name":"DeleteKeyPair", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DeleteKeyPairRequest"}, - "documentation":"

Deletes the specified key pair, by removing the public key from Amazon EC2.

" - }, - "DeleteNetworkAcl":{ - "name":"DeleteNetworkAcl", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DeleteNetworkAclRequest"}, - "documentation":"

Deletes the specified network ACL. You can't delete the ACL if it's associated with any subnets. You can't delete the default network ACL.

" - }, - "DeleteNetworkAclEntry":{ - "name":"DeleteNetworkAclEntry", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DeleteNetworkAclEntryRequest"}, - "documentation":"

Deletes the specified ingress or egress entry (rule) from the specified network ACL.

" - }, - "DeleteNetworkInterface":{ - "name":"DeleteNetworkInterface", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DeleteNetworkInterfaceRequest"}, - "documentation":"

Deletes the specified network interface. You must detach the network interface before you can delete it.

" - }, - "DeletePlacementGroup":{ - "name":"DeletePlacementGroup", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DeletePlacementGroupRequest"}, - "documentation":"

Deletes the specified placement group. You must terminate all instances in the placement group before you can delete the placement group. For more information about placement groups and cluster instances, see Cluster Instances in the Amazon Elastic Compute Cloud User Guide.

" - }, - "DeleteRoute":{ - "name":"DeleteRoute", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DeleteRouteRequest"}, - "documentation":"

Deletes the specified route from the specified route table.

" - }, - "DeleteRouteTable":{ - "name":"DeleteRouteTable", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DeleteRouteTableRequest"}, - "documentation":"

Deletes the specified route table. You must disassociate the route table from any subnets before you can delete it. You can't delete the main route table.

" - }, - "DeleteSecurityGroup":{ - "name":"DeleteSecurityGroup", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DeleteSecurityGroupRequest"}, - "documentation":"

Deletes a security group.

If you attempt to delete a security group that is associated with an instance, or is referenced by another security group, the operation fails with InvalidGroup.InUse in EC2-Classic or DependencyViolation in EC2-VPC.

" - }, - "DeleteSnapshot":{ - "name":"DeleteSnapshot", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DeleteSnapshotRequest"}, - "documentation":"

Deletes the specified snapshot.

When you make periodic snapshots of a volume, the snapshots are incremental, and only the blocks on the device that have changed since your last snapshot are saved in the new snapshot. When you delete a snapshot, only the data not needed for any other snapshot is removed. So regardless of which prior snapshots have been deleted, all active snapshots will have access to all the information needed to restore the volume.

You cannot delete a snapshot of the root device of an Amazon EBS volume used by a registered AMI. You must first de-register the AMI before you can delete the snapshot.

For more information, see Deleting an Amazon EBS Snapshot in the Amazon Elastic Compute Cloud User Guide.

" - }, - "DeleteSpotDatafeedSubscription":{ - "name":"DeleteSpotDatafeedSubscription", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DeleteSpotDatafeedSubscriptionRequest"}, - "documentation":"

Deletes the datafeed for Spot Instances. For more information, see Spot Instances in the Amazon Elastic Compute Cloud User Guide.

" - }, - "DeleteSubnet":{ - "name":"DeleteSubnet", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DeleteSubnetRequest"}, - "documentation":"

Deletes the specified subnet. You must terminate all running instances in the subnet before you can delete the subnet.

" - }, - "DeleteTags":{ - "name":"DeleteTags", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DeleteTagsRequest"}, - "documentation":"

Deletes the specified set of tags from the specified set of resources. This call is designed to follow a DescribeTags request.

For more information about tags, see Tagging Your Resources in the Amazon Elastic Compute Cloud User Guide.

" - }, - "DeleteVolume":{ - "name":"DeleteVolume", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DeleteVolumeRequest"}, - "documentation":"

Deletes the specified Amazon EBS volume. The volume must be in the available state (not attached to an instance).

For more information, see Deleting an Amazon EBS Volume in the Amazon Elastic Compute Cloud User Guide.

" - }, - "DeleteVpc":{ - "name":"DeleteVpc", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DeleteVpcRequest"}, - "documentation":"

Deletes the specified VPC. You must detach or delete all gateways and resources that are associated with the VPC before you can delete it. For example, you must terminate all instances running in the VPC, delete all security groups associated with the VPC (except the default one), delete all route tables associated with the VPC (except the default one), and so on.

" - }, - "DeleteVpcPeeringConnection":{ - "name":"DeleteVpcPeeringConnection", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DeleteVpcPeeringConnectionRequest"}, - "output":{"shape":"DeleteVpcPeeringConnectionResult"}, - "documentation":"

Deletes a VPC peering connection. Either the owner of the requester VPC or the owner of the peer VPC can delete the VPC peering connection if it's in the active state. The owner of the requester VPC can delete a VPC peering connection in the pending-acceptance state.

" - }, - "DeleteVpnConnection":{ - "name":"DeleteVpnConnection", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DeleteVpnConnectionRequest"}, - "documentation":"

Deletes the specified VPN connection.

If you're deleting the VPC and its associated components, we recommend that you detach the virtual private gateway from the VPC and delete the VPC before deleting the VPN connection. If you believe that the tunnel credentials for your VPN connection have been compromised, you can delete the VPN connection and create a new one that has new keys, without needing to delete the VPC or virtual private gateway. If you create a new VPN connection, you must reconfigure the customer gateway using the new configuration information returned with the new VPN connection ID.

" - }, - "DeleteVpnConnectionRoute":{ - "name":"DeleteVpnConnectionRoute", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DeleteVpnConnectionRouteRequest"}, - "documentation":"

Deletes the specified static route associated with a VPN connection between an existing virtual private gateway and a VPN customer gateway. The static route allows traffic to be routed from the virtual private gateway to the VPN customer gateway.

" - }, - "DeleteVpnGateway":{ - "name":"DeleteVpnGateway", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DeleteVpnGatewayRequest"}, - "documentation":"

Deletes the specified virtual private gateway. We recommend that before you delete a virtual private gateway, you detach it from the VPC and delete the VPN connection. Note that you don't need to delete the virtual private gateway if you plan to delete and recreate the VPN connection between your VPC and your network.

" - }, - "DeregisterImage":{ - "name":"DeregisterImage", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DeregisterImageRequest"}, - "documentation":"

Deregisters the specified AMI. After you deregister an AMI, it can't be used to launch new instances.

This command does not delete the AMI.

" - }, - "DescribeAccountAttributes":{ - "name":"DescribeAccountAttributes", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeAccountAttributesRequest"}, - "output":{"shape":"DescribeAccountAttributesResult"}, - "documentation":"

Describes the specified attribute of your AWS account.

" - }, - "DescribeAddresses":{ - "name":"DescribeAddresses", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeAddressesRequest"}, - "output":{"shape":"DescribeAddressesResult"}, - "documentation":"

Describes one or more of your Elastic IP addresses.

An Elastic IP address is for use in either the EC2-Classic platform or in a VPC. For more information, see Elastic IP Addresses in the Amazon Elastic Compute Cloud User Guide.

" - }, - "DescribeAvailabilityZones":{ - "name":"DescribeAvailabilityZones", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeAvailabilityZonesRequest"}, - "output":{"shape":"DescribeAvailabilityZonesResult"}, - "documentation":"

Describes one or more of the Availability Zones that are available to you. The results include zones only for the region you're currently using. If there is an event impacting an Availability Zone, you can use this request to view the state and any provided message for that Availability Zone.

For more information, see Regions and Availability Zones in the Amazon Elastic Compute Cloud User Guide.

" - }, - "DescribeBundleTasks":{ - "name":"DescribeBundleTasks", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeBundleTasksRequest"}, - "output":{"shape":"DescribeBundleTasksResult"}, - "documentation":"

Describes one or more of your bundling tasks.

" - }, - "DescribeConversionTasks":{ - "name":"DescribeConversionTasks", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeConversionTasksRequest"}, - "output":{"shape":"DescribeConversionTasksResult"}, - "documentation":"

Describes one or more of your conversion tasks. For more information, see Using the Command Line Tools to Import Your Virtual Machine to Amazon EC2 in the Amazon Elastic Compute Cloud User Guide.

" - }, - "DescribeCustomerGateways":{ - "name":"DescribeCustomerGateways", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeCustomerGatewaysRequest"}, - "output":{"shape":"DescribeCustomerGatewaysResult"}, - "documentation":"

Describes one or more of your VPN customer gateways.

For more information about VPN customer gateways, see Adding a Hardware Virtual Private Gateway to Your VPC in the Amazon Virtual Private Cloud User Guide.

" - }, - "DescribeDhcpOptions":{ - "name":"DescribeDhcpOptions", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeDhcpOptionsRequest"}, - "output":{"shape":"DescribeDhcpOptionsResult"}, - "documentation":"

Describes one or more of your DHCP options sets.

For more information about DHCP options sets, see DHCP Options Sets in the Amazon Virtual Private Cloud User Guide.

" - }, - "DescribeExportTasks":{ - "name":"DescribeExportTasks", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeExportTasksRequest"}, - "output":{"shape":"DescribeExportTasksResult"}, - "documentation":"

Describes one or more of your export tasks.

" - }, - "DescribeImageAttribute":{ - "name":"DescribeImageAttribute", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeImageAttributeRequest"}, - "output":{ - "shape":"ImageAttribute", - "documentation":"

Information about the image attribute.

", - "locationName":"imageAttribute" - }, - "documentation":"

Describes the specified attribute of the specified AMI. You can specify only one attribute at a time.

" - }, - "DescribeImages":{ - "name":"DescribeImages", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeImagesRequest"}, - "output":{"shape":"DescribeImagesResult"}, - "documentation":"

Describes one or more of the images (AMIs, AKIs, and ARIs) available to you. Images available to you include public images, private images that you own, and private images owned by other AWS accounts but for which you have explicit launch permissions.

" - }, - "DescribeInstanceAttribute":{ - "name":"DescribeInstanceAttribute", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeInstanceAttributeRequest"}, - "output":{"shape":"InstanceAttribute"}, - "documentation":"

Describes the specified attribute of the specified instance. You can specify only one attribute at a time. Valid attribute values are: instanceType | kernel | ramdisk | userData | disableApiTermination | instanceInitiatedShutdownBehavior | rootDeviceName | blockDeviceMapping | productCodes | sourceDestCheck | groupSet | ebsOptimized | sriovNetSupport

" - }, - "DescribeInstanceStatus":{ - "name":"DescribeInstanceStatus", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeInstanceStatusRequest"}, - "output":{"shape":"DescribeInstanceStatusResult"}, - "documentation":"

Describes the status of one or more instances, including any scheduled events.

Instance status has two main components:

Instance status provides information about four types of scheduled events for an instance that may require your attention:

When your instance is retired, it will either be terminated (if its root device type is the instance-store) or stopped (if its root device type is an EBS volume). Instances stopped due to retirement will not be restarted, but you can do so manually. You can also avoid retirement of EBS-backed instances by manually restarting your instance when its event code is instance-retirement. This ensures that your instance is started on a different underlying host.

For more information about failed status checks, see Troubleshooting Instances with Failed Status Checks in the Amazon Elastic Compute Cloud User Guide. For more information about working with scheduled events, see Working with an Instance That Has a Scheduled Event in the Amazon Elastic Compute Cloud User Guide.

" - }, - "DescribeInstances":{ - "name":"DescribeInstances", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeInstancesRequest"}, - "output":{"shape":"DescribeInstancesResult"}, - "documentation":"

Describes one or more of your instances.

If you specify one or more instance IDs, Amazon EC2 returns information for those instances. If you do not specify instance IDs, Amazon EC2 returns information for all relevant instances. If you specify an instance ID that is not valid, an error is returned. If you specify an instance that you do not own, it is not included in the returned results.

Recently terminated instances might appear in the returned results. This interval is usually less than one hour.

" - }, - "DescribeInternetGateways":{ - "name":"DescribeInternetGateways", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeInternetGatewaysRequest"}, - "output":{"shape":"DescribeInternetGatewaysResult"}, - "documentation":"

Describes one or more of your Internet gateways.

" - }, - "DescribeKeyPairs":{ - "name":"DescribeKeyPairs", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeKeyPairsRequest"}, - "output":{"shape":"DescribeKeyPairsResult"}, - "documentation":"

Describes one or more of your key pairs.

For more information about key pairs, see Key Pairs in the Amazon Elastic Compute Cloud User Guide.

" - }, - "DescribeNetworkAcls":{ - "name":"DescribeNetworkAcls", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeNetworkAclsRequest"}, - "output":{"shape":"DescribeNetworkAclsResult"}, - "documentation":"

Describes one or more of your network ACLs.

For more information about network ACLs, see Network ACLs in the Amazon Virtual Private Cloud User Guide.

" - }, - "DescribeNetworkInterfaceAttribute":{ - "name":"DescribeNetworkInterfaceAttribute", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeNetworkInterfaceAttributeRequest"}, - "output":{"shape":"DescribeNetworkInterfaceAttributeResult"}, - "documentation":"

Describes a network interface attribute. You can specify only one attribute at a time.

" - }, - "DescribeNetworkInterfaces":{ - "name":"DescribeNetworkInterfaces", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeNetworkInterfacesRequest"}, - "output":{"shape":"DescribeNetworkInterfacesResult"}, - "documentation":"

Describes one or more of your network interfaces.

" - }, - "DescribePlacementGroups":{ - "name":"DescribePlacementGroups", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribePlacementGroupsRequest"}, - "output":{"shape":"DescribePlacementGroupsResult"}, - "documentation":"

Describes one or more of your placement groups. For more information about placement groups and cluster instances, see Cluster Instances in the Amazon Elastic Compute Cloud User Guide.

" - }, - "DescribeRegions":{ - "name":"DescribeRegions", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeRegionsRequest"}, - "output":{"shape":"DescribeRegionsResult"}, - "documentation":"

Describes one or more regions that are currently available to you.

For a list of the regions supported by Amazon EC2, see Regions and Endpoints.

" - }, - "DescribeReservedInstances":{ - "name":"DescribeReservedInstances", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeReservedInstancesRequest"}, - "output":{"shape":"DescribeReservedInstancesResult"}, - "documentation":"

Describes one or more of the Reserved Instances that you purchased.

For more information about Reserved Instances, see Reserved Instances in the Amazon Elastic Compute Cloud User Guide.

" - }, - "DescribeReservedInstancesListings":{ - "name":"DescribeReservedInstancesListings", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeReservedInstancesListingsRequest"}, - "output":{"shape":"DescribeReservedInstancesListingsResult"}, - "documentation":"

Describes your account's Reserved Instance listings in the Reserved Instance Marketplace.

The Reserved Instance Marketplace matches sellers who want to resell Reserved Instance capacity that they no longer need with buyers who want to purchase additional capacity. Reserved Instances bought and sold through the Reserved Instance Marketplace work like any other Reserved Instances.

As a seller, you choose to list some or all of your Reserved Instances, and you specify the upfront price to receive for them. Your Reserved Instances are then listed in the Reserved Instance Marketplace and are available for purchase.

As a buyer, you specify the configuration of the Reserved Instance to purchase, and the Marketplace matches what you're searching for with what's available. The Marketplace first sells the lowest priced Reserved Instances to you, and continues to sell available Reserved Instance listings to you until your demand is met. You are charged based on the total price of all of the listings that you purchase.

For more information, see Reserved Instance Marketplace in the Amazon Elastic Compute Cloud User Guide.

" - }, - "DescribeReservedInstancesModifications":{ - "name":"DescribeReservedInstancesModifications", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeReservedInstancesModificationsRequest"}, - "output":{"shape":"DescribeReservedInstancesModificationsResult"}, - "documentation":"

Describes the modifications made to your Reserved Instances. If no parameter is specified, information about all your Reserved Instances modification requests is returned. If a modification ID is specified, only information about the specific modification is returned.

For more information, see Modifying Reserved Instances in the Amazon Elastic Compute Cloud User Guide.

" - }, - "DescribeReservedInstancesOfferings":{ - "name":"DescribeReservedInstancesOfferings", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeReservedInstancesOfferingsRequest"}, - "output":{"shape":"DescribeReservedInstancesOfferingsResult"}, - "documentation":"

Describes Reserved Instance offerings that are available for purchase. With Reserved Instances, you purchase the right to launch instances for a period of time. During that time period, you do not receive insufficient capacity errors, and you pay a lower usage rate than the rate charged for On-Demand instances for the actual time used.

For more information, see Reserved Instance Marketplace in the Amazon Elastic Compute Cloud User Guide.

" - }, - "DescribeRouteTables":{ - "name":"DescribeRouteTables", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeRouteTablesRequest"}, - "output":{"shape":"DescribeRouteTablesResult"}, - "documentation":"

Describes one or more of your route tables.

For more information about route tables, see Route Tables in the Amazon Virtual Private Cloud User Guide.

" - }, - "DescribeSecurityGroups":{ - "name":"DescribeSecurityGroups", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeSecurityGroupsRequest"}, - "output":{"shape":"DescribeSecurityGroupsResult"}, - "documentation":"

Describes one or more of your security groups.

A security group is for use with instances either in the EC2-Classic platform or in a specific VPC. For more information, see Amazon EC2 Security Groups in the Amazon Elastic Compute Cloud User Guide and Security Groups for Your VPC in the Amazon Virtual Private Cloud User Guide.

" - }, - "DescribeSnapshotAttribute":{ - "name":"DescribeSnapshotAttribute", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeSnapshotAttributeRequest"}, - "output":{"shape":"DescribeSnapshotAttributeResult"}, - "documentation":"

Describes the specified attribute of the specified snapshot. You can specify only one attribute at a time.

For more information about Amazon EBS snapshots, see Amazon EBS Snapshots in the Amazon Elastic Compute Cloud User Guide.

" - }, - "DescribeSnapshots":{ - "name":"DescribeSnapshots", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeSnapshotsRequest"}, - "output":{"shape":"DescribeSnapshotsResult"}, - "documentation":"

Describes one or more of the Amazon EBS snapshots available to you. Available snapshots include public snapshots available for any AWS account to launch, private snapshots that you own, and private snapshots owned by another AWS account but for which you've been given explicit create volume permissions.

The create volume permissions fall into the following categories:

The list of snapshots returned can be modified by specifying snapshot IDs, snapshot owners, or AWS accounts with create volume permissions. If no options are specified, Amazon EC2 returns all snapshots for which you have create volume permissions.

If you specify one or more snapshot IDs, only snapshots that have the specified IDs are returned. If you specify an invalid snapshot ID, an error is returned. If you specify a snapshot ID for which you do not have access, it is not included in the returned results.

If you specify one or more snapshot owners, only snapshots from the specified owners and for which you have access are returned. The results can include the AWS account IDs of the specified owners, amazon for snapshots owned by Amazon, or self for snapshots that you own.

If you specify a list of restorable users, only snapshots with create snapshot permissions for those users are returned. You can specify AWS account IDs (if you own the snapshots), self for snapshots for which you own or have explicit permissions, or all for public snapshots.

For more information about Amazon EBS snapshots, see Amazon EBS Snapshots in the Amazon Elastic Compute Cloud User Guide.

" - }, - "DescribeSpotDatafeedSubscription":{ - "name":"DescribeSpotDatafeedSubscription", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeSpotDatafeedSubscriptionRequest"}, - "output":{"shape":"DescribeSpotDatafeedSubscriptionResult"}, - "documentation":"

Describes the datafeed for Spot Instances. For more information, see Spot Instances in the Amazon Elastic Compute Cloud User Guide.

" - }, - "DescribeSpotInstanceRequests":{ - "name":"DescribeSpotInstanceRequests", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeSpotInstanceRequestsRequest"}, - "output":{"shape":"DescribeSpotInstanceRequestsResult"}, - "documentation":"

Describes the Spot Instance requests that belong to your account. Spot Instances are instances that Amazon EC2 starts on your behalf when the maximum price that you specify exceeds the current Spot Price. Amazon EC2 periodically sets the Spot Price based on available Spot Instance capacity and current Spot Instance requests. For more information about Spot Instances, see Spot Instances in the Amazon Elastic Compute Cloud User Guide.

You can use DescribeSpotInstanceRequests to find a running Spot Instance by examining the response. If the status of the Spot Instance is fulfilled, the instance ID appears in the response and contains the identifier of the instance. Alternatively, you can use DescribeInstances with a filter to look for instances where the instance lifecycle is spot.

" - }, - "DescribeSpotPriceHistory":{ - "name":"DescribeSpotPriceHistory", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeSpotPriceHistoryRequest"}, - "output":{"shape":"DescribeSpotPriceHistoryResult"}, - "documentation":"

Describes the Spot Price history. Spot Instances are instances that Amazon EC2 starts on your behalf when the maximum price that you specify exceeds the current Spot Price. Amazon EC2 periodically sets the Spot Price based on available Spot Instance capacity and current Spot Instance requests. For more information about Spot Instances, see Spot Instances in the Amazon Elastic Compute Cloud User Guide.

When you specify an Availability Zone, this operation describes the price history for the specified Availability Zone with the most recent set of prices listed first. If you don't specify an Availability Zone, you get the prices across all Availability Zones, starting with the most recent set. However, if you're using an API version earlier than 2011-05-15, you get the lowest price across the region for the specified time period. The prices returned are listed in chronological order, from the oldest to the most recent.

When you specify the start and end time options, this operation returns two pieces of data: the prices of the instance types within the time range that you specified and the time when the price changed. The price is valid within the time period that you specified; the response merely indicates the last time that the price changed.

" - }, - "DescribeSubnets":{ - "name":"DescribeSubnets", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeSubnetsRequest"}, - "output":{"shape":"DescribeSubnetsResult"}, - "documentation":"

Describes one or more of your subnets.

For more information about subnets, see Your VPC and Subnets in the Amazon Virtual Private Cloud User Guide.

" - }, - "DescribeTags":{ - "name":"DescribeTags", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeTagsRequest"}, - "output":{"shape":"DescribeTagsResult"}, - "documentation":"

Describes one or more of the tags for your EC2 resources.

For more information about tags, see Tagging Your Resources in the Amazon Elastic Compute Cloud User Guide.

" - }, - "DescribeVolumeAttribute":{ - "name":"DescribeVolumeAttribute", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeVolumeAttributeRequest"}, - "output":{"shape":"DescribeVolumeAttributeResult"}, - "documentation":"

Describes the specified attribute of the specified volume. You can specify only one attribute at a time.

For more information about Amazon EBS volumes, see Amazon EBS Volumes in the Amazon Elastic Compute Cloud User Guide.

" - }, - "DescribeVolumeStatus":{ - "name":"DescribeVolumeStatus", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeVolumeStatusRequest"}, - "output":{"shape":"DescribeVolumeStatusResult"}, - "documentation":"

Describes the status of the specified volumes. Volume status provides the result of the checks performed on your volumes to determine events that can impair the performance of your volumes. The performance of a volume can be affected if an issue occurs on the volume's underlying host. If the volume's underlying host experiences a power outage or system issue, after the system is restored, there could be data inconsistencies on the volume. Volume events notify you if this occurs. Volume actions notify you if any action needs to be taken in response to the event.

The DescribeVolumeStatus operation provides the following information about the specified volumes:

Status: Reflects the current status of the volume. The possible values are ok, impaired , warning, or insufficient-data. If all checks pass, the overall status of the volume is ok. If the check fails, the overall status is impaired. If the status is insufficient-data, then the checks may still be taking place on your volume at the time. We recommend that you retry the request. For more information on volume status, see Monitoring the Status of Your Volumes.

Events: Reflect the cause of a volume status and may require you to take action. For example, if your volume returns an impaired status, then the volume event might be potential-data-inconsistency. This means that your volume has been affected by an issue with the underlying host, has all I/O operations disabled, and may have inconsistent data.

Actions: Reflect the actions you may have to take in response to an event. For example, if the status of the volume is impaired and the volume event shows potential-data-inconsistency, then the action shows enable-volume-io. This means that you may want to enable the I/O operations for the volume by calling the EnableVolumeIO action and then check the volume for data consistency.

" - }, - "DescribeVolumes":{ - "name":"DescribeVolumes", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeVolumesRequest"}, - "output":{"shape":"DescribeVolumesResult"}, - "documentation":"

Describes the specified Amazon EBS volumes.

If you are describing a long list of volumes, you can paginate the output to make the list more manageable. The MaxResults parameter sets the maximum number of results returned in a single page. If the list of results exceeds your MaxResults value, then that number of results is returned along with a NextToken value that can be passed to a subsequent DescribeVolumes request to retrieve the remaining results.

For more information about Amazon EBS volumes, see Amazon EBS Volumes in the Amazon Elastic Compute Cloud User Guide.

" - }, - "DescribeVpcAttribute":{ - "name":"DescribeVpcAttribute", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeVpcAttributeRequest"}, - "output":{"shape":"DescribeVpcAttributeResult"}, - "documentation":"

Describes the specified attribute of the specified VPC. You can specify only one attribute at a time.

" - }, - "DescribeVpcPeeringConnections":{ - "name":"DescribeVpcPeeringConnections", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeVpcPeeringConnectionsRequest"}, - "output":{"shape":"DescribeVpcPeeringConnectionsResult"}, - "documentation":"

Describes one or more of your VPC peering connections.

" - }, - "DescribeVpcs":{ - "name":"DescribeVpcs", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeVpcsRequest"}, - "output":{"shape":"DescribeVpcsResult"}, - "documentation":"

Describes one or more of your VPCs.

" - }, - "DescribeVpnConnections":{ - "name":"DescribeVpnConnections", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeVpnConnectionsRequest"}, - "output":{"shape":"DescribeVpnConnectionsResult"}, - "documentation":"

Describes one or more of your VPN connections.

For more information about VPN connections, see Adding a Hardware Virtual Private Gateway to Your VPC in the Amazon Virtual Private Cloud User Guide.

" - }, - "DescribeVpnGateways":{ - "name":"DescribeVpnGateways", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeVpnGatewaysRequest"}, - "output":{"shape":"DescribeVpnGatewaysResult"}, - "documentation":"

Describes one or more of your virtual private gateways.

For more information about virtual private gateways, see Adding an IPsec Hardware VPN to Your VPC in the Amazon Virtual Private Cloud User Guide.

" - }, - "DetachInternetGateway":{ - "name":"DetachInternetGateway", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DetachInternetGatewayRequest"}, - "documentation":"

Detaches an Internet gateway from a VPC, disabling connectivity between the Internet and the VPC. The VPC must not contain any running instances with Elastic IP addresses.

" - }, - "DetachNetworkInterface":{ - "name":"DetachNetworkInterface", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DetachNetworkInterfaceRequest"}, - "documentation":"

Detaches a network interface from an instance.

" - }, - "DetachVolume":{ - "name":"DetachVolume", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DetachVolumeRequest"}, - "output":{ - "shape":"VolumeAttachment", - "locationName":"attachment" - }, - "documentation":"

Detaches an Amazon EBS volume from an instance. Make sure to unmount any file systems on the device within your operating system before detaching the volume. Failure to do so results in the volume being stuck in a busy state while detaching.

If an Amazon EBS volume is the root device of an instance, it can't be detached while the instance is running. To detach the root volume, stop the instance first.

If the root volume is detached from an instance with an AWS Marketplace product code, then the AWS Marketplace product codes from that volume are no longer associated with the instance.

For more information, see Detaching an Amazon EBS Volume in the Amazon Elastic Compute Cloud User Guide.

" - }, - "DetachVpnGateway":{ - "name":"DetachVpnGateway", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DetachVpnGatewayRequest"}, - "documentation":"

Detaches a virtual private gateway from a VPC. You do this if you're planning to turn off the VPC and not use it anymore. You can confirm a virtual private gateway has been completely detached from a VPC by describing the virtual private gateway (any attachments to the virtual private gateway are also described).

You must wait for the attachment's state to switch to detached before you can delete the VPC or attach a different VPC to the virtual private gateway.

" - }, - "DisableVgwRoutePropagation":{ - "name":"DisableVgwRoutePropagation", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DisableVgwRoutePropagationRequest"}, - "documentation":"

Disables a virtual private gateway (VGW) from propagating routes to a specified route table of a VPC.

" - }, - "DisassociateAddress":{ - "name":"DisassociateAddress", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DisassociateAddressRequest"}, - "documentation":"

Disassociates an Elastic IP address from the instance or network interface it's associated with.

An Elastic IP address is for use in either the EC2-Classic platform or in a VPC. For more information, see Elastic IP Addresses in the Amazon Elastic Compute Cloud User Guide.

This is an idempotent operation. If you perform the operation more than once, Amazon EC2 doesn't return an error.

" - }, - "DisassociateRouteTable":{ - "name":"DisassociateRouteTable", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DisassociateRouteTableRequest"}, - "documentation":"

Disassociates a subnet from a route table.

After you perform this action, the subnet no longer uses the routes in the route table. Instead, it uses the routes in the VPC's main route table. For more information about route tables, see Route Tables in the Amazon Virtual Private Cloud User Guide.

" - }, - "EnableVgwRoutePropagation":{ - "name":"EnableVgwRoutePropagation", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"EnableVgwRoutePropagationRequest"}, - "documentation":"

Enables a virtual private gateway (VGW) to propagate routes to the specified route table of a VPC.

" - }, - "EnableVolumeIO":{ - "name":"EnableVolumeIO", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"EnableVolumeIORequest"}, - "documentation":"

Enables I/O operations for a volume that had I/O operations disabled because the data on the volume was potentially inconsistent.

" - }, - "GetConsoleOutput":{ - "name":"GetConsoleOutput", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"GetConsoleOutputRequest"}, - "output":{"shape":"GetConsoleOutputResult"}, - "documentation":"

Gets the console output for the specified instance.

Instances do not have a physical monitor through which you can view their console output. They also lack physical controls that allow you to power up, reboot, or shut them down. To allow these actions, we provide them through the Amazon EC2 API and command line interface.

Instance console output is buffered and posted shortly after instance boot, reboot, and termination. Amazon EC2 preserves the most recent 64 KB output which is available for at least one hour after the most recent post.

For Linux/Unix instances, the instance console output displays the exact console output that would normally be displayed on a physical monitor attached to a machine. This output is buffered because the instance produces it and then posts it to a store where the instance's owner can retrieve it.

For Windows instances, the instance console output displays the last three system event log errors.

" - }, - "GetPasswordData":{ - "name":"GetPasswordData", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"GetPasswordDataRequest"}, - "output":{"shape":"GetPasswordDataResult"}, - "documentation":"

Retrieves the encrypted administrator password for an instance running Windows.

The Windows password is generated at boot if the EC2Config service plugin, Ec2SetPassword, is enabled. This usually only happens the first time an AMI is launched, and then Ec2SetPassword is automatically disabled. The password is not generated for rebundled AMIs unless Ec2SetPassword is enabled before bundling.

The password is encrypted using the key pair that you specified when you launched the instance. You must provide the corresponding key pair file.

Password generation and encryption takes a few moments. We recommend that you wait up to 15 minutes after launching an instance before trying to retrieve the generated password.

" - }, - "ImportInstance":{ - "name":"ImportInstance", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"ImportInstanceRequest"}, - "output":{"shape":"ImportInstanceResult"}, - "documentation":"

Creates an import instance task using metadata from the specified disk image. After importing the image, you then upload it using the ec2-import-volume command in the EC2 command line tools. For more information, see Using the Command Line Tools to Import Your Virtual Machine to Amazon EC2 in the Amazon Elastic Compute Cloud User Guide.

" - }, - "ImportKeyPair":{ - "name":"ImportKeyPair", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"ImportKeyPairRequest"}, - "output":{"shape":"ImportKeyPairResult"}, - "documentation":"

Imports the public key from an RSA key pair that you created with a third-party tool. Compare this with CreateKeyPair, in which AWS creates the key pair and gives the keys to you (AWS keeps a copy of the public key). With ImportKeyPair, you create the key pair and give AWS just the public key. The private key is never transferred between you and AWS.

For more information about key pairs, see Key Pairs in the Amazon Elastic Compute Cloud User Guide.

" - }, - "ImportVolume":{ - "name":"ImportVolume", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"ImportVolumeRequest"}, - "output":{"shape":"ImportVolumeResult"}, - "documentation":"

Creates an import volume task using metadata from the specified disk image. After importing the image, you then upload it using the ec2-import-volume command in the Amazon EC2 command-line interface (CLI) tools. For more information, see Using the Command Line Tools to Import Your Virtual Machine to Amazon EC2 in the Amazon Elastic Compute Cloud User Guide.

" - }, - "ModifyImageAttribute":{ - "name":"ModifyImageAttribute", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"ModifyImageAttributeRequest"}, - "documentation":"

Modifies the specified attribute of the specified AMI. You can specify only one attribute at a time.

" - }, - "ModifyInstanceAttribute":{ - "name":"ModifyInstanceAttribute", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"ModifyInstanceAttributeRequest"}, - "documentation":"

Modifies the specified attribute of the specified instance. You can specify only one attribute at a time.

To modify some attributes, the instance must be stopped. For more information, see Modifying Attributes of a Stopped Instance in the Amazon Elastic Compute Cloud User Guide.

" - }, - "ModifyNetworkInterfaceAttribute":{ - "name":"ModifyNetworkInterfaceAttribute", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"ModifyNetworkInterfaceAttributeRequest"}, - "documentation":"

Modifies the specified network interface attribute. You can specify only one attribute at a time.

" - }, - "ModifyReservedInstances":{ - "name":"ModifyReservedInstances", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"ModifyReservedInstancesRequest"}, - "output":{"shape":"ModifyReservedInstancesResult"}, - "documentation":"

Modifies the Availability Zone, instance count, instance type, or network platform (EC2-Classic or EC2-VPC) of your Reserved Instances. The Reserved Instances to be modified must be identical, except for Availability Zone, network platform, and instance type.

For more information, see Modifying Reserved Instances in the Amazon Elastic Compute Cloud User Guide.

" - }, - "ModifySnapshotAttribute":{ - "name":"ModifySnapshotAttribute", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"ModifySnapshotAttributeRequest"}, - "documentation":"

Adds or removes permission settings for the specified snapshot. You may add or remove specified AWS account IDs from a snapshot's list of create volume permissions, but you cannot do both in a single API call. If you need to both add and remove account IDs for a snapshot, you must use multiple API calls.

For more information on modifying snapshot permissions, see Sharing Snapshots in the Amazon Elastic Compute Cloud User Guide.

" - }, - "ModifySubnetAttribute":{ - "name":"ModifySubnetAttribute", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"ModifySubnetAttributeRequest"}, - "documentation":"

Modifies a subnet attribute.

" - }, - "ModifyVolumeAttribute":{ - "name":"ModifyVolumeAttribute", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"ModifyVolumeAttributeRequest"}, - "documentation":"

Modifies a volume attribute.

By default, all I/O operations for the volume are suspended when the data on the volume is determined to be potentially inconsistent, to prevent undetectable, latent data corruption. The I/O access to the volume can be resumed by first enabling I/O access and then checking the data consistency on your volume.

You can change the default behavior to resume I/O operations. We recommend that you change this only for boot volumes or for volumes that are stateless or disposable.

" - }, - "ModifyVpcAttribute":{ - "name":"ModifyVpcAttribute", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"ModifyVpcAttributeRequest"}, - "documentation":"

Modifies the specified attribute of the specified VPC.

" - }, - "MonitorInstances":{ - "name":"MonitorInstances", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"MonitorInstancesRequest"}, - "output":{"shape":"MonitorInstancesResult"}, - "documentation":"

Enables monitoring for a running instance. For more information about monitoring instances, see Monitoring Your Instances and Volumes in the Amazon Elastic Compute Cloud User Guide.

" - }, - "PurchaseReservedInstancesOffering":{ - "name":"PurchaseReservedInstancesOffering", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"PurchaseReservedInstancesOfferingRequest"}, - "output":{"shape":"PurchaseReservedInstancesOfferingResult"}, - "documentation":"

Purchases a Reserved Instance for use with your account. With Amazon EC2 Reserved Instances, you obtain a capacity reservation for a certain instance configuration over a specified period of time. You pay a lower usage rate than with On-Demand instances for the time that you actually use the capacity reservation.

Use DescribeReservedInstancesOfferings to get a list of Reserved Instance offerings that match your specifications. After you've purchased a Reserved Instance, you can check for your new Reserved Instance with DescribeReservedInstances.

For more information, see Reserved Instances and Reserved Instance Marketplace in the Amazon Elastic Compute Cloud User Guide.

" - }, - "RebootInstances":{ - "name":"RebootInstances", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"RebootInstancesRequest"}, - "documentation":"

Requests a reboot of one or more instances. This operation is asynchronous; it only queues a request to reboot the specified instances. The operation succeeds if the instances are valid and belong to you. Requests to reboot terminated instances are ignored.

If a Linux/Unix instance does not cleanly shut down within four minutes, Amazon EC2 performs a hard reboot.

For more information about troubleshooting, see Getting Console Output and Rebooting Instances in the Amazon Elastic Compute Cloud User Guide.

" - }, - "RegisterImage":{ - "name":"RegisterImage", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"RegisterImageRequest"}, - "output":{"shape":"RegisterImageResult"}, - "documentation":"

Registers an AMI. When you're creating an AMI, this is the final step you must complete before you can launch an instance from the AMI. For more information about creating AMIs, see Creating Your Own AMIs in the Amazon Elastic Compute Cloud User Guide.

You can also use RegisterImage to create an Amazon EBS-backed AMI from a snapshot of a root device volume. For more information, see Launching an Instance from a Snapshot in the Amazon Elastic Compute Cloud User Guide.

If needed, you can deregister an AMI at any time. Any modifications you make to an AMI backed by an instance store volume invalidates its registration. If you make changes to an image, deregister the previous image and register the new image.

" - }, - "RejectVpcPeeringConnection":{ - "name":"RejectVpcPeeringConnection", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"RejectVpcPeeringConnectionRequest"}, - "output":{"shape":"RejectVpcPeeringConnectionResult"}, - "documentation":"

Rejects a VPC peering connection request. The VPC peering connection must be in the pending-acceptance state. Use the DescribeVpcPeeringConnections request to view your outstanding VPC peering connection requests. To delete an active VPC peering connection, or to delete a VPC peering connection request that you initiated, use DeleteVpcPeeringConnection.

" - }, - "ReleaseAddress":{ - "name":"ReleaseAddress", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"ReleaseAddressRequest"}, - "documentation":"

Releases the specified Elastic IP address.

After releasing an Elastic IP address, it is released to the IP address pool and might be unavailable to you. Be sure to update your DNS records and any servers or devices that communicate with the address. If you attempt to release an Elastic IP address that you already released, you'll get an AuthFailure error if the address is already allocated to another AWS account.

[EC2-Classic, default VPC] Releasing an Elastic IP address automatically disassociates it from any instance that it's associated with. To disassociate an Elastic IP address without releasing it, use DisassociateAddress.

[Nondefault VPC] You must use DisassociateAddress to disassociate the Elastic IP address before you try to release it. Otherwise, Amazon EC2 returns an error (InvalidIPAddress.InUse).

" - }, - "ReplaceNetworkAclAssociation":{ - "name":"ReplaceNetworkAclAssociation", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"ReplaceNetworkAclAssociationRequest"}, - "output":{"shape":"ReplaceNetworkAclAssociationResult"}, - "documentation":"

Changes which network ACL a subnet is associated with. By default when you create a subnet, it's automatically associated with the default network ACL. For more information about network ACLs, see Network ACLs in the Amazon Virtual Private Cloud User Guide.

" - }, - "ReplaceNetworkAclEntry":{ - "name":"ReplaceNetworkAclEntry", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"ReplaceNetworkAclEntryRequest"}, - "documentation":"

Replaces an entry (rule) in a network ACL. For more information about network ACLs, see Network ACLs in the Amazon Virtual Private Cloud User Guide.

" - }, - "ReplaceRoute":{ - "name":"ReplaceRoute", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"ReplaceRouteRequest"}, - "documentation":"

Replaces an existing route within a route table in a VPC. You must provide only one of the following: Internet gateway or virtual private gateway, NAT instance, VPC peering connection, or network interface.

For more information about route tables, see Route Tables in the Amazon Virtual Private Cloud User Guide.

" - }, - "ReplaceRouteTableAssociation":{ - "name":"ReplaceRouteTableAssociation", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"ReplaceRouteTableAssociationRequest"}, - "output":{"shape":"ReplaceRouteTableAssociationResult"}, - "documentation":"

Changes the route table associated with a given subnet in a VPC. After the operation completes, the subnet uses the routes in the new route table it's associated with. For more information about route tables, see Route Tables in the Amazon Virtual Private Cloud User Guide.

You can also use ReplaceRouteTableAssociation to change which table is the main route table in the VPC. You just specify the main route table's association ID and the route table to be the new main route table.

" - }, - "ReportInstanceStatus":{ - "name":"ReportInstanceStatus", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"ReportInstanceStatusRequest"}, - "documentation":"

Submits feedback about the status of an instance. The instance must be in the running state. If your experience with the instance differs from the instance status returned by DescribeInstanceStatus, use ReportInstanceStatus to report your experience with the instance. Amazon EC2 collects this information to improve the accuracy of status checks.

Use of this action does not change the value returned by DescribeInstanceStatus.

" - }, - "RequestSpotInstances":{ - "name":"RequestSpotInstances", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"RequestSpotInstancesRequest"}, - "output":{"shape":"RequestSpotInstancesResult"}, - "documentation":"

Creates a Spot Instance request. Spot Instances are instances that Amazon EC2 starts on your behalf when the maximum price that you specify exceeds the current Spot Price. Amazon EC2 periodically sets the Spot Price based on available Spot Instance capacity and current Spot Instance requests. For more information about Spot Instances, see Spot Instances in the Amazon Elastic Compute Cloud User Guide.

Users must be subscribed to the required product to run an instance with AWS Marketplace product codes.

" - }, - "ResetImageAttribute":{ - "name":"ResetImageAttribute", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"ResetImageAttributeRequest"}, - "documentation":"

Resets an attribute of an AMI to its default value.

" - }, - "ResetInstanceAttribute":{ - "name":"ResetInstanceAttribute", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"ResetInstanceAttributeRequest"}, - "documentation":"

Resets an attribute of an instance to its default value. To reset the kernel or ramdisk, the instance must be in a stopped state. To reset the SourceDestCheck, the instance can be either running or stopped.

The SourceDestCheck attribute controls whether source/destination checking is enabled. The default value is true, which means checking is enabled. This value must be false for a NAT instance to perform NAT. For more information, see NAT Instances in the Amazon Virtual Private Cloud User Guide.

" - }, - "ResetNetworkInterfaceAttribute":{ - "name":"ResetNetworkInterfaceAttribute", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"ResetNetworkInterfaceAttributeRequest"}, - "documentation":"

Resets a network interface attribute. You can specify only one attribute at a time.

" - }, - "ResetSnapshotAttribute":{ - "name":"ResetSnapshotAttribute", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"ResetSnapshotAttributeRequest"}, - "documentation":"

Resets permission settings for the specified snapshot.

For more information on modifying snapshot permissions, see Sharing Snapshots in the Amazon Elastic Compute Cloud User Guide.

" - }, - "RevokeSecurityGroupEgress":{ - "name":"RevokeSecurityGroupEgress", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"RevokeSecurityGroupEgressRequest"}, - "documentation":"

Removes one or more egress rules from a security group for EC2-VPC. The values that you specify in the revoke request (for example, ports) must match the existing rule's values for the rule to be revoked.

Each rule consists of the protocol and the CIDR range or source security group. For the TCP and UDP protocols, you must also specify the destination port or range of ports. For the ICMP protocol, you must also specify the ICMP type and code.

Rule changes are propagated to instances within the security group as quickly as possible. However, a small delay might occur.

" - }, - "RevokeSecurityGroupIngress":{ - "name":"RevokeSecurityGroupIngress", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"RevokeSecurityGroupIngressRequest"}, - "documentation":"

Removes one or more ingress rules from a security group. The values that you specify in the revoke request (for example, ports) must match the existing rule's values for the rule to be removed.

Each rule consists of the protocol and the CIDR range or source security group. For the TCP and UDP protocols, you must also specify the destination port or range of ports. For the ICMP protocol, you must also specify the ICMP type and code.

Rule changes are propagated to instances within the security group as quickly as possible. However, a small delay might occur.

" - }, - "RunInstances":{ - "name":"RunInstances", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"RunInstancesRequest"}, - "output":{ - "shape":"Reservation", - "documentation":"

One or more reservations.

", - "locationName":"reservation" - }, - "documentation":"

Launches the specified number of instances using an AMI for which you have permissions.

When you launch an instance, it enters the pending state. After the instance is ready for you, it enters the running state. To check the state of your instance, call DescribeInstances.

If you don't specify a security group when launching an instance, Amazon EC2 uses the default security group. For more information, see Security Groups in the Amazon Elastic Compute Cloud User Guide.

Linux instances have access to the public key of the key pair at boot. You can use this key to provide secure access to the instance. Amazon EC2 public images use this feature to provide secure access without passwords. For more information, see Key Pairs in the Amazon Elastic Compute Cloud User Guide.

You can provide optional user data when launching an instance. For more information, see Instance Metadata in the Amazon Elastic Compute Cloud User Guide.

If any of the AMIs have a product code attached for which the user has not subscribed, RunInstances fails.

T2 instance types can only be launched into a VPC. If you do not have a default VPC, or if you do not specify a subnet ID in the request, RunInstances fails.

For more information about troubleshooting, see What To Do If An Instance Immediately Terminates, and Troubleshooting Connecting to Your Instance in the Amazon Elastic Compute Cloud User Guide.

" - }, - "StartInstances":{ - "name":"StartInstances", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"StartInstancesRequest"}, - "output":{"shape":"StartInstancesResult"}, - "documentation":"

Starts an Amazon EBS-backed AMI that you've previously stopped.

Instances that use Amazon EBS volumes as their root devices can be quickly stopped and started. When an instance is stopped, the compute resources are released and you are not billed for hourly instance usage. However, your root partition Amazon EBS volume remains, continues to persist your data, and you are charged for Amazon EBS volume usage. You can restart your instance at any time. Each time you transition an instance from stopped to started, Amazon EC2 charges a full instance hour, even if transitions happen multiple times within a single hour.

Before stopping an instance, make sure it is in a state from which it can be restarted. Stopping an instance does not preserve data stored in RAM.

Performing this operation on an instance that uses an instance store as its root device returns an error.

For more information, see Stopping Instances in the Amazon Elastic Compute Cloud User Guide.

" - }, - "StopInstances":{ - "name":"StopInstances", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"StopInstancesRequest"}, - "output":{"shape":"StopInstancesResult"}, - "documentation":"

Stops an Amazon EBS-backed instance. Each time you transition an instance from stopped to started, Amazon EC2 charges a full instance hour, even if transitions happen multiple times within a single hour.

You can't start or stop Spot Instances.

Instances that use Amazon EBS volumes as their root devices can be quickly stopped and started. When an instance is stopped, the compute resources are released and you are not billed for hourly instance usage. However, your root partition Amazon EBS volume remains, continues to persist your data, and you are charged for Amazon EBS volume usage. You can restart your instance at any time.

Before stopping an instance, make sure it is in a state from which it can be restarted. Stopping an instance does not preserve data stored in RAM.

Performing this operation on an instance that uses an instance store as its root device returns an error.

You can stop, start, and terminate EBS-backed instances. You can only terminate instance store-backed instances. What happens to an instance differs if you stop it or terminate it. For example, when you stop an instance, the root device and any other devices attached to the instance persist. When you terminate an instance, the root device and any other devices attached during the instance launch are automatically deleted. For more information about the differences between stopping and terminating instances, see Instance Lifecycle in the Amazon Elastic Compute Cloud User Guide.

For more information about troubleshooting, see Troubleshooting Stopping Your Instance in the Amazon Elastic Compute Cloud User Guide.

" - }, - "TerminateInstances":{ - "name":"TerminateInstances", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"TerminateInstancesRequest"}, - "output":{"shape":"TerminateInstancesResult"}, - "documentation":"

Shuts down one or more instances. This operation is idempotent; if you terminate an instance more than once, each call succeeds.

Terminated instances remain visible after termination (for approximately one hour).

By default, Amazon EC2 deletes all Amazon EBS volumes that were attached when the instance launched. Volumes attached after instance launch continue running.

You can stop, start, and terminate EBS-backed instances. You can only terminate instance store-backed instances. What happens to an instance differs if you stop it or terminate it. For example, when you stop an instance, the root device and any other devices attached to the instance persist. When you terminate an instance, the root device and any other devices attached during the instance launch are automatically deleted. For more information about the differences between stopping and terminating instances, see Instance Lifecycle in the Amazon Elastic Compute Cloud User Guide.

For more information about troubleshooting, see Troubleshooting Terminating Your Instance in the Amazon Elastic Compute Cloud User Guide.

" - }, - "UnassignPrivateIpAddresses":{ - "name":"UnassignPrivateIpAddresses", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"UnassignPrivateIpAddressesRequest"}, - "documentation":"

Unassigns one or more secondary private IP addresses from a network interface.

" - }, - "UnmonitorInstances":{ - "name":"UnmonitorInstances", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"UnmonitorInstancesRequest"}, - "output":{"shape":"UnmonitorInstancesResult"}, - "documentation":"

Disables monitoring for a running instance. For more information about monitoring instances, see Monitoring Your Instances and Volumes in the Amazon Elastic Compute Cloud User Guide.

" - } - }, - "shapes":{ - "AcceptVpcPeeringConnectionRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "VpcPeeringConnectionId":{ - "shape":"String", - "documentation":"

The ID of the VPC peering connection.

", - "locationName":"vpcPeeringConnectionId" - } - } - }, - "AcceptVpcPeeringConnectionResult":{ - "type":"structure", - "members":{ - "VpcPeeringConnection":{ - "shape":"VpcPeeringConnection", - "documentation":"

Information about the VPC peering connection.

", - "locationName":"vpcPeeringConnection" - } - } - }, - "AccountAttribute":{ - "type":"structure", - "members":{ - "AttributeName":{ - "shape":"String", - "documentation":"

The name of the account attribute.

", - "locationName":"attributeName" - }, - "AttributeValues":{ - "shape":"AccountAttributeValueList", - "documentation":"

One or more values for the account attribute.

", - "locationName":"attributeValueSet" - } - }, - "documentation":"

Describes an account attribute.

" - }, - "AccountAttributeList":{ - "type":"list", - "member":{ - "shape":"AccountAttribute", - "locationName":"item" - } - }, - "AccountAttributeName":{ - "type":"string", - "enum":[ - "supported-platforms", - "default-vpc" - ] - }, - "AccountAttributeNameStringList":{ - "type":"list", - "member":{ - "shape":"AccountAttributeName", - "locationName":"attributeName" - } - }, - "AccountAttributeValue":{ - "type":"structure", - "members":{ - "AttributeValue":{ - "shape":"String", - "documentation":"

The value of the attribute.

", - "locationName":"attributeValue" - } - }, - "documentation":"

Describes a value of an account attribute.

" - }, - "AccountAttributeValueList":{ - "type":"list", - "member":{ - "shape":"AccountAttributeValue", - "locationName":"item" - } - }, - "Address":{ - "type":"structure", - "members":{ - "InstanceId":{ - "shape":"String", - "documentation":"

The ID of the instance the address is associated with (if any).

", - "locationName":"instanceId" - }, - "PublicIp":{ - "shape":"String", - "documentation":"

The Elastic IP address.

", - "locationName":"publicIp" - }, - "AllocationId":{ - "shape":"String", - "documentation":"

The ID representing the allocation of the address for use with EC2-VPC.

", - "locationName":"allocationId" - }, - "AssociationId":{ - "shape":"String", - "documentation":"

The ID representing the association of the address with an instance in a VPC.

", - "locationName":"associationId" - }, - "Domain":{ - "shape":"DomainType", - "documentation":"

Indicates whether this Elastic IP address is for use with instances in EC2-Classic (standard) or instances in a VPC (vpc).

", - "locationName":"domain" - }, - "NetworkInterfaceId":{ - "shape":"String", - "documentation":"

The ID of the network interface.

", - "locationName":"networkInterfaceId" - }, - "NetworkInterfaceOwnerId":{ - "shape":"String", - "documentation":"

The ID of the AWS account that owns the network interface.

", - "locationName":"networkInterfaceOwnerId" - }, - "PrivateIpAddress":{ - "shape":"String", - "documentation":"

The private IP address associated with the Elastic IP address.

", - "locationName":"privateIpAddress" - } - }, - "documentation":"

Describes an Elastic IP address.

" - }, - "AddressList":{ - "type":"list", - "member":{ - "shape":"Address", - "locationName":"item" - } - }, - "AllocateAddressRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "Domain":{ - "shape":"DomainType", - "documentation":"

Set to vpc to allocate the address for use with instances in a VPC.

Default: The address is for use with instances in EC2-Classic.

" - } - } - }, - "AllocateAddressResult":{ - "type":"structure", - "members":{ - "PublicIp":{ - "shape":"String", - "documentation":"

The Elastic IP address.

", - "locationName":"publicIp" - }, - "Domain":{ - "shape":"DomainType", - "documentation":"

Indicates whether this Elastic IP address is for use with instances in EC2-Classic (standard) or instances in a VPC (vpc).

", - "locationName":"domain" - }, - "AllocationId":{ - "shape":"String", - "documentation":"

[EC2-VPC] The ID that AWS assigns to represent the allocation of the Elastic IP address for use with instances in a VPC.

", - "locationName":"allocationId" - } - } - }, - "AllocationIdList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"AllocationId" - } - }, - "ArchitectureValues":{ - "type":"string", - "enum":[ - "i386", - "x86_64" - ] - }, - "AssignPrivateIpAddressesRequest":{ - "type":"structure", - "required":["NetworkInterfaceId"], - "members":{ - "NetworkInterfaceId":{ - "shape":"String", - "documentation":"

The ID of the network interface.

", - "locationName":"networkInterfaceId" - }, - "PrivateIpAddresses":{ - "shape":"PrivateIpAddressStringList", - "documentation":"

One or more IP addresses to be assigned as a secondary private IP address to the network interface. You can't specify this parameter when also specifying a number of secondary IP addresses.

If you don't specify an IP address, Amazon EC2 automatically selects an IP address within the subnet range.

", - "locationName":"privateIpAddress" - }, - "SecondaryPrivateIpAddressCount":{ - "shape":"Integer", - "documentation":"

The number of secondary IP addresses to assign to the network interface. You can't specify this parameter when also specifying private IP addresses.

", - "locationName":"secondaryPrivateIpAddressCount" - }, - "AllowReassignment":{ - "shape":"Boolean", - "documentation":"

Indicates whether to allow an IP address that is already assigned to another network interface or instance to be reassigned to the specified network interface.

", - "locationName":"allowReassignment" - } - } - }, - "AssociateAddressRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "InstanceId":{ - "shape":"String", - "documentation":"

The ID of the instance. This is required for EC2-Classic. For EC2-VPC, you can specify either the instance ID or the network interface ID, but not both. The operation fails if you specify an instance ID unless exactly one network interface is attached.

" - }, - "PublicIp":{ - "shape":"String", - "documentation":"

The Elastic IP address. This is required for EC2-Classic.

" - }, - "AllocationId":{ - "shape":"String", - "documentation":"

[EC2-VPC] The allocation ID. This is required for EC2-VPC.

" - }, - "NetworkInterfaceId":{ - "shape":"String", - "documentation":"

[EC2-VPC] The ID of the network interface. If the instance has more than one network interface, you must specify a network interface ID.

", - "locationName":"networkInterfaceId" - }, - "PrivateIpAddress":{ - "shape":"String", - "documentation":"

[EC2-VPC] The primary or secondary private IP address to associate with the Elastic IP address. If no private IP address is specified, the Elastic IP address is associated with the primary private IP address.

", - "locationName":"privateIpAddress" - }, - "AllowReassociation":{ - "shape":"Boolean", - "documentation":"

[EC2-VPC] Allows an Elastic IP address that is already associated with an instance or network interface to be re-associated with the specified instance or network interface. Otherwise, the operation fails.

Default: false

", - "locationName":"allowReassociation" - } - } - }, - "AssociateAddressResult":{ - "type":"structure", - "members":{ - "AssociationId":{ - "shape":"String", - "documentation":"

[EC2-VPC] The ID that represents the association of the Elastic IP address with an instance.

", - "locationName":"associationId" - } - } - }, - "AssociateDhcpOptionsRequest":{ - "type":"structure", - "required":[ - "DhcpOptionsId", - "VpcId" - ], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "DhcpOptionsId":{ - "shape":"String", - "documentation":"

The ID of the DHCP options set, or default to associate no DHCP options with the VPC.

" - }, - "VpcId":{ - "shape":"String", - "documentation":"

The ID of the VPC.

" - } - } - }, - "AssociateRouteTableRequest":{ - "type":"structure", - "required":[ - "SubnetId", - "RouteTableId" - ], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "SubnetId":{ - "shape":"String", - "documentation":"

The ID of the subnet.

", - "locationName":"subnetId" - }, - "RouteTableId":{ - "shape":"String", - "documentation":"

The ID of the route table.

", - "locationName":"routeTableId" - } - } - }, - "AssociateRouteTableResult":{ - "type":"structure", - "members":{ - "AssociationId":{ - "shape":"String", - "documentation":"

The route table association ID (needed to disassociate the route table).

", - "locationName":"associationId" - } - } - }, - "AttachInternetGatewayRequest":{ - "type":"structure", - "required":[ - "InternetGatewayId", - "VpcId" - ], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "InternetGatewayId":{ - "shape":"String", - "documentation":"

The ID of the Internet gateway.

", - "locationName":"internetGatewayId" - }, - "VpcId":{ - "shape":"String", - "documentation":"

The ID of the VPC.

", - "locationName":"vpcId" - } - } - }, - "AttachNetworkInterfaceRequest":{ - "type":"structure", - "required":[ - "NetworkInterfaceId", - "InstanceId", - "DeviceIndex" - ], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "NetworkInterfaceId":{ - "shape":"String", - "documentation":"

The ID of the network interface.

", - "locationName":"networkInterfaceId" - }, - "InstanceId":{ - "shape":"String", - "documentation":"

The ID of the instance.

", - "locationName":"instanceId" - }, - "DeviceIndex":{ - "shape":"Integer", - "documentation":"

The index of the device for the network interface attachment.

", - "locationName":"deviceIndex" - } - } - }, - "AttachNetworkInterfaceResult":{ - "type":"structure", - "members":{ - "AttachmentId":{ - "shape":"String", - "documentation":"

The ID of the network interface attachment.

", - "locationName":"attachmentId" - } - } - }, - "AttachVolumeRequest":{ - "type":"structure", - "required":[ - "VolumeId", - "InstanceId", - "Device" - ], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "VolumeId":{ - "shape":"String", - "documentation":"

The ID of the Amazon EBS volume. The volume and instance must be within the same Availability Zone.

" - }, - "InstanceId":{ - "shape":"String", - "documentation":"

The ID of the instance.

" - }, - "Device":{ - "shape":"String", - "documentation":"

The device name to expose to the instance (for example, /dev/sdh or xvdh).

" - } - } - }, - "AttachVpnGatewayRequest":{ - "type":"structure", - "required":[ - "VpnGatewayId", - "VpcId" - ], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "VpnGatewayId":{ - "shape":"String", - "documentation":"

The ID of the virtual private gateway.

" - }, - "VpcId":{ - "shape":"String", - "documentation":"

The ID of the VPC.

" - } - } - }, - "AttachVpnGatewayResult":{ - "type":"structure", - "members":{ - "VpcAttachment":{ - "shape":"VpcAttachment", - "documentation":"

Information about the attachment.

", - "locationName":"attachment" - } - } - }, - "AttachmentStatus":{ - "type":"string", - "enum":[ - "attaching", - "attached", - "detaching", - "detached" - ] - }, - "AttributeBooleanValue":{ - "type":"structure", - "members":{ - "Value":{ - "shape":"Boolean", - "locationName":"value" - } - } - }, - "AttributeValue":{ - "type":"structure", - "members":{ - "Value":{ - "shape":"String", - "locationName":"value" - } - } - }, - "AuthorizeSecurityGroupEgressRequest":{ - "type":"structure", - "required":["GroupId"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "GroupId":{ - "shape":"String", - "documentation":"

The ID of the security group.

", - "locationName":"groupId" - }, - "SourceSecurityGroupName":{ - "shape":"String", - "documentation":"

[EC2-Classic, default VPC] The name of the destination security group. You can't specify a destination security group and a CIDR IP address range.

", - "locationName":"sourceSecurityGroupName" - }, - "SourceSecurityGroupOwnerId":{ - "shape":"String", - "documentation":"

The ID of the destination security group. You can't specify a destination security group and a CIDR IP address range.

", - "locationName":"sourceSecurityGroupOwnerId" - }, - "IpProtocol":{ - "shape":"String", - "documentation":"

The IP protocol name (tcp, udp, icmp) or number (see Protocol Numbers). Use -1 to specify all.

", - "locationName":"ipProtocol" - }, - "FromPort":{ - "shape":"Integer", - "documentation":"

The start of port range for the TCP and UDP protocols, or an ICMP type number. For the ICMP type number, use -1 to specify all ICMP types.

", - "locationName":"fromPort" - }, - "ToPort":{ - "shape":"Integer", - "documentation":"

The end of port range for the TCP and UDP protocols, or an ICMP code number. For the ICMP code number, use -1 to specify all ICMP codes for the ICMP type.

", - "locationName":"toPort" - }, - "CidrIp":{ - "shape":"String", - "documentation":"

The CIDR IP address range. You can't specify this parameter when specifying a source security group.

", - "locationName":"cidrIp" - }, - "IpPermissions":{ - "shape":"IpPermissionList", - "documentation":"

A set of IP permissions. You can't specify a destination security group and a CIDR IP address range.

", - "locationName":"ipPermissions" - } - } - }, - "AuthorizeSecurityGroupIngressRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "GroupName":{ - "shape":"String", - "documentation":"

[EC2-Classic, default VPC] The name of the security group.

" - }, - "GroupId":{ - "shape":"String", - "documentation":"

The ID of the security group.

" - }, - "SourceSecurityGroupName":{ - "shape":"String", - "documentation":"

[EC2-Classic, default VPC] The name of the source security group. You can't specify a source security group and a CIDR IP address range.

" - }, - "SourceSecurityGroupOwnerId":{ - "shape":"String", - "documentation":"

The ID of the source security group. You can't specify a source security group and a CIDR IP address range.

" - }, - "IpProtocol":{ - "shape":"String", - "documentation":"

The IP protocol name (tcp, udp, icmp) or number (see Protocol Numbers). Use -1 to specify all.

" - }, - "FromPort":{ - "shape":"Integer", - "documentation":"

The start of port range for the TCP and UDP protocols, or an ICMP type number. For the ICMP type number, use -1 to specify all ICMP types.

" - }, - "ToPort":{ - "shape":"Integer", - "documentation":"

The end of port range for the TCP and UDP protocols, or an ICMP code number. For the ICMP code number, use -1 to specify all ICMP codes for the ICMP type.

" - }, - "CidrIp":{ - "shape":"String", - "documentation":"

The CIDR IP address range. You can't specify this parameter when specifying a source security group.

" - }, - "IpPermissions":{ - "shape":"IpPermissionList", - "documentation":"

A set of IP permissions. You can't specify a source security group and a CIDR IP address range.

" - } - } - }, - "AvailabilityZone":{ - "type":"structure", - "members":{ - "ZoneName":{ - "shape":"String", - "documentation":"

The name of the Availability Zone.

", - "locationName":"zoneName" - }, - "State":{ - "shape":"AvailabilityZoneState", - "documentation":"

The state of the Availability Zone (available | impaired | unavailable).

", - "locationName":"zoneState" - }, - "RegionName":{ - "shape":"String", - "documentation":"

The name of the region.

", - "locationName":"regionName" - }, - "Messages":{ - "shape":"AvailabilityZoneMessageList", - "documentation":"

Any messages about the Availability Zone.

", - "locationName":"messageSet" - } - }, - "documentation":"

Describes an Availability Zone.

" - }, - "AvailabilityZoneList":{ - "type":"list", - "member":{ - "shape":"AvailabilityZone", - "locationName":"item" - } - }, - "AvailabilityZoneMessage":{ - "type":"structure", - "members":{ - "Message":{ - "shape":"String", - "documentation":"

The message about the Availability Zone.

", - "locationName":"message" - } - }, - "documentation":"

Describes a message about an Availability Zone.

" - }, - "AvailabilityZoneMessageList":{ - "type":"list", - "member":{ - "shape":"AvailabilityZoneMessage", - "locationName":"item" - } - }, - "AvailabilityZoneState":{ - "type":"string", - "enum":["available"] - }, - "BlockDeviceMapping":{ - "type":"structure", - "members":{ - "VirtualName":{ - "shape":"String", - "documentation":"

The virtual device name (ephemeral[0..3]). The number of available instance store volumes depends on the instance type. After you connect to the instance, you must mount the volume.

Constraints: For M3 instances, you must specify instance store volumes in the block device mapping for the instance. When you launch an M3 instance, we ignore any instance store volumes specified in the block device mapping for the AMI.

", - "locationName":"virtualName" - }, - "DeviceName":{ - "shape":"String", - "documentation":"

The device name exposed to the instance (for example, /dev/sdh).

", - "locationName":"deviceName" - }, - "Ebs":{ - "shape":"EbsBlockDevice", - "documentation":"

Parameters used to automatically set up Amazon EBS volumes when the instance is launched.

", - "locationName":"ebs" - }, - "NoDevice":{ - "shape":"String", - "documentation":"

Suppresses the specified device included in the block device mapping of the AMI.

", - "locationName":"noDevice" - } - }, - "documentation":"

Describes a block device mapping.

" - }, - "BlockDeviceMappingList":{ - "type":"list", - "member":{ - "shape":"BlockDeviceMapping", - "locationName":"item" - } - }, - "BlockDeviceMappingRequestList":{ - "type":"list", - "member":{ - "shape":"BlockDeviceMapping", - "locationName":"BlockDeviceMapping" - } - }, - "Boolean":{"type":"boolean"}, - "BundleIdStringList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"BundleId" - } - }, - "BundleInstanceRequest":{ - "type":"structure", - "required":[ - "InstanceId", - "Storage" - ], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "InstanceId":{ - "shape":"String", - "documentation":"

The ID of the instance to bundle.

" - }, - "Storage":{ - "shape":"Storage", - "documentation":"

The bucket in which to store the AMI. You can specify a bucket that you already own or a new bucket that Amazon EC2 creates on your behalf. If you specify a bucket that belongs to someone else, Amazon EC2 returns an error.

" - } - } - }, - "BundleInstanceResult":{ - "type":"structure", - "members":{ - "BundleTask":{ - "shape":"BundleTask", - "documentation":"

Information about the bundle task.

", - "locationName":"bundleInstanceTask" - } - } - }, - "BundleTask":{ - "type":"structure", - "members":{ - "InstanceId":{ - "shape":"String", - "documentation":"

The ID of the instance associated with this bundle task.

", - "locationName":"instanceId" - }, - "BundleId":{ - "shape":"String", - "documentation":"

The ID for this bundle task.

", - "locationName":"bundleId" - }, - "State":{ - "shape":"BundleTaskState", - "documentation":"

The state of the task.

", - "locationName":"state" - }, - "StartTime":{ - "shape":"DateTime", - "documentation":"

The time this task started.

", - "locationName":"startTime" - }, - "UpdateTime":{ - "shape":"DateTime", - "documentation":"

The time of the most recent update for the task.

", - "locationName":"updateTime" - }, - "Storage":{ - "shape":"Storage", - "documentation":"

The Amazon S3 storage locations.

", - "locationName":"storage" - }, - "Progress":{ - "shape":"String", - "documentation":"

The level of task completion, as a percent (for example, 20%).

", - "locationName":"progress" - }, - "BundleTaskError":{ - "shape":"BundleTaskError", - "documentation":"

If the task fails, a description of the error.

", - "locationName":"error" - } - }, - "documentation":"

Describes a bundle task.

" - }, - "BundleTaskError":{ - "type":"structure", - "members":{ - "Code":{ - "shape":"String", - "documentation":"

The error code.

", - "locationName":"code" - }, - "Message":{ - "shape":"String", - "documentation":"

The error message.

", - "locationName":"message" - } - }, - "documentation":"

Describes an error for BundleInstance.

" - }, - "BundleTaskList":{ - "type":"list", - "member":{ - "shape":"BundleTask", - "locationName":"item" - } - }, - "BundleTaskState":{ - "type":"string", - "enum":[ - "pending", - "waiting-for-shutdown", - "bundling", - "storing", - "cancelling", - "complete", - "failed" - ] - }, - "CancelBundleTaskRequest":{ - "type":"structure", - "required":["BundleId"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "BundleId":{ - "shape":"String", - "documentation":"

The ID of the bundle task.

" - } - } - }, - "CancelBundleTaskResult":{ - "type":"structure", - "members":{ - "BundleTask":{ - "shape":"BundleTask", - "documentation":"

The bundle task.

", - "locationName":"bundleInstanceTask" - } - } - }, - "CancelConversionRequest":{ - "type":"structure", - "required":["ConversionTaskId"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "ConversionTaskId":{ - "shape":"String", - "documentation":"

The ID of the conversion task.

", - "locationName":"conversionTaskId" - }, - "ReasonMessage":{ - "shape":"String", - "locationName":"reasonMessage" - } - } - }, - "CancelExportTaskRequest":{ - "type":"structure", - "required":["ExportTaskId"], - "members":{ - "ExportTaskId":{ - "shape":"String", - "documentation":"

The ID of the export task. This is the ID returned by CreateInstanceExportTask.

", - "locationName":"exportTaskId" - } - } - }, - "CancelReservedInstancesListingRequest":{ - "type":"structure", - "required":["ReservedInstancesListingId"], - "members":{ - "ReservedInstancesListingId":{ - "shape":"String", - "documentation":"

The ID of the Reserved Instance listing.

", - "locationName":"reservedInstancesListingId" - } - } - }, - "CancelReservedInstancesListingResult":{ - "type":"structure", - "members":{ - "ReservedInstancesListings":{ - "shape":"ReservedInstancesListingList", - "documentation":"

The Reserved Instance listing.

", - "locationName":"reservedInstancesListingsSet" - } - } - }, - "CancelSpotInstanceRequestState":{ - "type":"string", - "enum":[ - "active", - "open", - "closed", - "cancelled", - "completed" - ] - }, - "CancelSpotInstanceRequestsRequest":{ - "type":"structure", - "required":["SpotInstanceRequestIds"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "SpotInstanceRequestIds":{ - "shape":"SpotInstanceRequestIdList", - "documentation":"

One or more Spot Instance request IDs.

", - "locationName":"SpotInstanceRequestId" - } - } - }, - "CancelSpotInstanceRequestsResult":{ - "type":"structure", - "members":{ - "CancelledSpotInstanceRequests":{ - "shape":"CancelledSpotInstanceRequestList", - "documentation":"

One or more Spot Instance requests.

", - "locationName":"spotInstanceRequestSet" - } - } - }, - "CancelledSpotInstanceRequest":{ - "type":"structure", - "members":{ - "SpotInstanceRequestId":{ - "shape":"String", - "documentation":"

The ID of the Spot Instance request.

", - "locationName":"spotInstanceRequestId" - }, - "State":{ - "shape":"CancelSpotInstanceRequestState", - "documentation":"

The state of the Spot Instance request.

", - "locationName":"state" - } - }, - "documentation":"

Describes a request to cancel a Spot Instance.

" - }, - "CancelledSpotInstanceRequestList":{ - "type":"list", - "member":{ - "shape":"CancelledSpotInstanceRequest", - "locationName":"item" - } - }, - "ConfirmProductInstanceRequest":{ - "type":"structure", - "required":[ - "ProductCode", - "InstanceId" - ], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "ProductCode":{ - "shape":"String", - "documentation":"

The product code. This must be a product code that you own.

" - }, - "InstanceId":{ - "shape":"String", - "documentation":"

The ID of the instance.

" - } - } - }, - "ConfirmProductInstanceResult":{ - "type":"structure", - "members":{ - "OwnerId":{ - "shape":"String", - "documentation":"

The AWS account ID of the instance owner. This is only present if the product code is attached to the instance.

", - "locationName":"ownerId" - } - } - }, - "ContainerFormat":{ - "type":"string", - "enum":["ova"] - }, - "ConversionIdStringList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"item" - } - }, - "ConversionTask":{ - "type":"structure", - "required":[ - "ConversionTaskId", - "State" - ], - "members":{ - "ConversionTaskId":{ - "shape":"String", - "documentation":"

The ID of the conversion task.

", - "locationName":"conversionTaskId" - }, - "ExpirationTime":{ - "shape":"String", - "documentation":"

The time when the task expires. If the upload isn't complete before the expiration time, we automatically cancel the task.

", - "locationName":"expirationTime" - }, - "ImportInstance":{ - "shape":"ImportInstanceTaskDetails", - "documentation":"

If the task is for importing an instance, this contains information about the import instance task.

", - "locationName":"importInstance" - }, - "ImportVolume":{ - "shape":"ImportVolumeTaskDetails", - "documentation":"

If the task is for importing a volume, this contains information about the import volume task.

", - "locationName":"importVolume" - }, - "State":{ - "shape":"ConversionTaskState", - "documentation":"

The state of the conversion task.

", - "locationName":"state" - }, - "StatusMessage":{ - "shape":"String", - "documentation":"

The status message related to the conversion task.

", - "locationName":"statusMessage" - }, - "Tags":{ - "shape":"TagList", - "locationName":"tagSet" - } - }, - "documentation":"

Describes a conversion task.

" - }, - "ConversionTaskState":{ - "type":"string", - "enum":[ - "active", - "cancelling", - "cancelled", - "completed" - ] - }, - "CopyImageRequest":{ - "type":"structure", - "required":[ - "SourceRegion", - "SourceImageId", - "Name" - ], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "SourceRegion":{ - "shape":"String", - "documentation":"

The name of the region that contains the AMI to copy.

" - }, - "SourceImageId":{ - "shape":"String", - "documentation":"

The ID of the AMI to copy.

" - }, - "Name":{ - "shape":"String", - "documentation":"

The name of the new AMI in the destination region.

" - }, - "Description":{ - "shape":"String", - "documentation":"

A description for the new AMI in the destination region.

" - }, - "ClientToken":{ - "shape":"String", - "documentation":"

Unique, case-sensitive identifier you provide to ensure idempotency of the request. For more information, see How to Ensure Idempotency in the Amazon Elastic Compute Cloud User Guide.

" - } - } - }, - "CopyImageResult":{ - "type":"structure", - "members":{ - "ImageId":{ - "shape":"String", - "documentation":"

The ID of the new AMI.

", - "locationName":"imageId" - } - } - }, - "CopySnapshotRequest":{ - "type":"structure", - "required":[ - "SourceRegion", - "SourceSnapshotId" - ], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "SourceRegion":{ - "shape":"String", - "documentation":"

The ID of the region that contains the snapshot to be copied.

" - }, - "SourceSnapshotId":{ - "shape":"String", - "documentation":"

The ID of the Amazon EBS snapshot to copy.

" - }, - "Description":{ - "shape":"String", - "documentation":"

A description for the new Amazon EBS snapshot.

" - }, - "DestinationRegion":{ - "shape":"String", - "documentation":"

The destination region of the snapshot copy operation. This parameter is required in the PresignedUrl.

", - "locationName":"destinationRegion" - }, - "PresignedUrl":{ - "shape":"String", - "documentation":"

The pre-signed URL that facilitates copying an encrypted snapshot. This parameter is only required when copying an encrypted snapshot with the Amazon EC2 Query API; it is available as an optional parameter in all other cases. The PresignedUrl should use the snapshot source endpoint, the CopySnapshot action, and include the SourceRegion, SourceSnapshotId, and DestinationRegion parameters. The PresignedUrl must be signed using AWS Signature Version 4. Because Amazon EBS snapshots are stored in Amazon S3, the signing algorithm for this parameter uses the same logic that is described in Authenticating Requests by Using Query Parameters (AWS Signature Version 4) in the Amazon Simple Storage Service API Reference. An invalid or improperly signed PresignedUrl will cause the copy operation to fail asynchronously, and the snapshot will move to an error state.

", - "locationName":"presignedUrl" - } - } - }, - "CopySnapshotResult":{ - "type":"structure", - "members":{ - "SnapshotId":{ - "shape":"String", - "documentation":"

The ID of the new snapshot.

", - "locationName":"snapshotId" - } - } - }, - "CreateCustomerGatewayRequest":{ - "type":"structure", - "required":[ - "Type", - "PublicIp", - "BgpAsn" - ], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "Type":{ - "shape":"GatewayType", - "documentation":"

The type of VPN connection that this customer gateway supports (ipsec.1).

" - }, - "PublicIp":{ - "shape":"String", - "documentation":"

The Internet-routable IP address for the customer gateway's outside interface. The address must be static.

", - "locationName":"IpAddress" - }, - "BgpAsn":{ - "shape":"Integer", - "documentation":"

For devices that support BGP, the customer gateway's BGP ASN.

Default: 65000

" - } - } - }, - "CreateCustomerGatewayResult":{ - "type":"structure", - "members":{ - "CustomerGateway":{ - "shape":"CustomerGateway", - "documentation":"

Information about the customer gateway.

", - "locationName":"customerGateway" - } - } - }, - "CreateDhcpOptionsRequest":{ - "type":"structure", - "required":["DhcpConfigurations"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "DhcpConfigurations":{ - "shape":"NewDhcpConfigurationList", - "documentation":"

A DHCP configuration option.

", - "locationName":"dhcpConfiguration" - } - } - }, - "CreateDhcpOptionsResult":{ - "type":"structure", - "members":{ - "DhcpOptions":{ - "shape":"DhcpOptions", - "documentation":"

A set of DHCP options.

", - "locationName":"dhcpOptions" - } - } - }, - "CreateImageRequest":{ - "type":"structure", - "required":[ - "InstanceId", - "Name" - ], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "InstanceId":{ - "shape":"String", - "documentation":"

The ID of the instance.

", - "locationName":"instanceId" - }, - "Name":{ - "shape":"String", - "documentation":"

A name for the new image.

Constraints: 3-128 alphanumeric characters, parentheses (()), square brackets ([]), spaces ( ), periods (.), slashes (/), dashes (-), single quotes ('), at-signs (@), or underscores(_)

", - "locationName":"name" - }, - "Description":{ - "shape":"String", - "documentation":"

A description for the new image.

", - "locationName":"description" - }, - "NoReboot":{ - "shape":"Boolean", - "documentation":"

By default, this parameter is set to false, which means Amazon EC2 attempts to shut down the instance cleanly before image creation and then reboots the instance. When the parameter is set to true, Amazon EC2 doesn't shut down the instance before creating the image. When this option is used, file system integrity on the created image can't be guaranteed.

", - "locationName":"noReboot" - }, - "BlockDeviceMappings":{ - "shape":"BlockDeviceMappingRequestList", - "documentation":"

Information about one or more block device mappings.

", - "locationName":"blockDeviceMapping" - } - } - }, - "CreateImageResult":{ - "type":"structure", - "members":{ - "ImageId":{ - "shape":"String", - "documentation":"

The ID of the new AMI.

", - "locationName":"imageId" - } - } - }, - "CreateInstanceExportTaskRequest":{ - "type":"structure", - "required":["InstanceId"], - "members":{ - "Description":{ - "shape":"String", - "documentation":"

A description for the conversion task or the resource being exported. The maximum length is 255 bytes.

", - "locationName":"description" - }, - "InstanceId":{ - "shape":"String", - "documentation":"

The ID of the instance.

", - "locationName":"instanceId" - }, - "TargetEnvironment":{ - "shape":"ExportEnvironment", - "documentation":"

The target virtualization environment.

", - "locationName":"targetEnvironment" - }, - "ExportToS3Task":{ - "shape":"ExportToS3TaskSpecification", - "locationName":"exportToS3" - } - } - }, - "CreateInstanceExportTaskResult":{ - "type":"structure", - "members":{ - "ExportTask":{ - "shape":"ExportTask", - "locationName":"exportTask" - } - } - }, - "CreateInternetGatewayRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - } - } - }, - "CreateInternetGatewayResult":{ - "type":"structure", - "members":{ - "InternetGateway":{ - "shape":"InternetGateway", - "documentation":"

Information about the Internet gateway.

", - "locationName":"internetGateway" - } - } - }, - "CreateKeyPairRequest":{ - "type":"structure", - "required":["KeyName"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "KeyName":{ - "shape":"String", - "documentation":"

A unique name for the key pair.

Constraints: Up to 255 ASCII characters

" - } - } - }, - "CreateNetworkAclEntryRequest":{ - "type":"structure", - "required":[ - "NetworkAclId", - "RuleNumber", - "Protocol", - "RuleAction", - "Egress", - "CidrBlock" - ], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "NetworkAclId":{ - "shape":"String", - "documentation":"

The ID of the network ACL.

", - "locationName":"networkAclId" - }, - "RuleNumber":{ - "shape":"Integer", - "documentation":"

The rule number for the entry (for example, 100). ACL entries are processed in ascending order by rule number.

Constraints: Positive integer from 1 to 32766

", - "locationName":"ruleNumber" - }, - "Protocol":{ - "shape":"String", - "documentation":"

The protocol. A value of -1 means all protocols.

", - "locationName":"protocol" - }, - "RuleAction":{ - "shape":"RuleAction", - "documentation":"

Indicates whether to allow or deny the traffic that matches the rule.

", - "locationName":"ruleAction" - }, - "Egress":{ - "shape":"Boolean", - "documentation":"

Indicates whether this is an egress rule (rule is applied to traffic leaving the subnet).

", - "locationName":"egress" - }, - "CidrBlock":{ - "shape":"String", - "documentation":"

The network range to allow or deny, in CIDR notation (for example 172.16.0.0/24).

", - "locationName":"cidrBlock" - }, - "IcmpTypeCode":{ - "shape":"IcmpTypeCode", - "documentation":"

ICMP protocol: The ICMP type and code. Required if specifying ICMP for the protocol.

", - "locationName":"Icmp" - }, - "PortRange":{ - "shape":"PortRange", - "documentation":"

TCP or UDP protocols: The range of ports the rule applies to.

", - "locationName":"portRange" - } - } - }, - "CreateNetworkAclRequest":{ - "type":"structure", - "required":["VpcId"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "VpcId":{ - "shape":"String", - "documentation":"

The ID of the VPC.

", - "locationName":"vpcId" - } - } - }, - "CreateNetworkAclResult":{ - "type":"structure", - "members":{ - "NetworkAcl":{ - "shape":"NetworkAcl", - "documentation":"

Information about the network ACL.

", - "locationName":"networkAcl" - } - } - }, - "CreateNetworkInterfaceRequest":{ - "type":"structure", - "required":["SubnetId"], - "members":{ - "SubnetId":{ - "shape":"String", - "documentation":"

The ID of the subnet to associate with the network interface.

", - "locationName":"subnetId" - }, - "Description":{ - "shape":"String", - "documentation":"

A description for the network interface.

", - "locationName":"description" - }, - "PrivateIpAddress":{ - "shape":"String", - "documentation":"

The primary private IP address of the network interface. If you don't specify an IP address, Amazon EC2 selects one for you from the subnet range. If you specify an IP address, you cannot indicate any IP addresses specified in privateIpAddresses as primary (only one IP address can be designated as primary).

", - "locationName":"privateIpAddress" - }, - "Groups":{ - "shape":"SecurityGroupIdStringList", - "documentation":"

The IDs of one or more security groups.

", - "locationName":"SecurityGroupId" - }, - "PrivateIpAddresses":{ - "shape":"PrivateIpAddressSpecificationList", - "documentation":"

One or more private IP addresses.

", - "locationName":"privateIpAddresses" - }, - "SecondaryPrivateIpAddressCount":{ - "shape":"Integer", - "documentation":"

The number of secondary private IP addresses to assign to a network interface. When you specify a number of secondary IP addresses, Amazon EC2 selects these IP addresses within the subnet range. You can't specify this option and specify more than one private IP address using privateIpAddresses.

The number of IP addresses you can assign to a network interface varies by instance type. For more information, see Private IP Addresses Per ENI Per Instance Type in the Amazon Elastic Compute Cloud User Guide.

", - "locationName":"secondaryPrivateIpAddressCount" - }, - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - } - } - }, - "CreateNetworkInterfaceResult":{ - "type":"structure", - "members":{ - "NetworkInterface":{ - "shape":"NetworkInterface", - "documentation":"

Information about the network interface.

", - "locationName":"networkInterface" - } - } - }, - "CreatePlacementGroupRequest":{ - "type":"structure", - "required":[ - "GroupName", - "Strategy" - ], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "GroupName":{ - "shape":"String", - "documentation":"

A name for the placement group.

Constraints: Up to 255 ASCII characters

", - "locationName":"groupName" - }, - "Strategy":{ - "shape":"PlacementStrategy", - "documentation":"

The placement strategy.

", - "locationName":"strategy" - } - } - }, - "CreateReservedInstancesListingRequest":{ - "type":"structure", - "required":[ - "ReservedInstancesId", - "InstanceCount", - "PriceSchedules", - "ClientToken" - ], - "members":{ - "ReservedInstancesId":{ - "shape":"String", - "documentation":"

The ID of the active Reserved Instance.

", - "locationName":"reservedInstancesId" - }, - "InstanceCount":{ - "shape":"Integer", - "documentation":"

The number of instances that are a part of a Reserved Instance account to be listed in the Reserved Instance Marketplace. This number should be less than or equal to the instance count associated with the Reserved Instance ID specified in this call.

", - "locationName":"instanceCount" - }, - "PriceSchedules":{ - "shape":"PriceScheduleSpecificationList", - "documentation":"

A list specifying the price of the Reserved Instance for each month remaining in the Reserved Instance term.

", - "locationName":"priceSchedules" - }, - "ClientToken":{ - "shape":"String", - "documentation":"

Unique, case-sensitive identifier you provide to ensure idempotency of your listings. This helps avoid duplicate listings. For more information, see Ensuring Idempotency in the Amazon Elastic Compute Cloud User Guide.

", - "locationName":"clientToken" - } - } - }, - "CreateReservedInstancesListingResult":{ - "type":"structure", - "members":{ - "ReservedInstancesListings":{ - "shape":"ReservedInstancesListingList", - "documentation":"

Information about the Reserved Instances listing.

", - "locationName":"reservedInstancesListingsSet" - } - } - }, - "CreateRouteRequest":{ - "type":"structure", - "required":[ - "RouteTableId", - "DestinationCidrBlock" - ], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "RouteTableId":{ - "shape":"String", - "documentation":"

The ID of the route table for the route.

", - "locationName":"routeTableId" - }, - "DestinationCidrBlock":{ - "shape":"String", - "documentation":"

The CIDR address block used for the destination match. Routing decisions are based on the most specific match.

", - "locationName":"destinationCidrBlock" - }, - "GatewayId":{ - "shape":"String", - "documentation":"

The ID of an Internet gateway or virtual private gateway attached to your VPC.

", - "locationName":"gatewayId" - }, - "InstanceId":{ - "shape":"String", - "documentation":"

The ID of a NAT instance in your VPC. The operation fails if you specify an instance ID unless exactly one network interface is attached.

", - "locationName":"instanceId" - }, - "NetworkInterfaceId":{ - "shape":"String", - "documentation":"

The ID of a network interface.

", - "locationName":"networkInterfaceId" - }, - "VpcPeeringConnectionId":{ - "shape":"String", - "documentation":"

The ID of a VPC peering connection.

", - "locationName":"vpcPeeringConnectionId" - } - } - }, - "CreateRouteTableRequest":{ - "type":"structure", - "required":["VpcId"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "VpcId":{ - "shape":"String", - "documentation":"

The ID of the VPC.

", - "locationName":"vpcId" - } - } - }, - "CreateRouteTableResult":{ - "type":"structure", - "members":{ - "RouteTable":{ - "shape":"RouteTable", - "documentation":"

Information about the route table.

", - "locationName":"routeTable" - } - } - }, - "CreateSecurityGroupRequest":{ - "type":"structure", - "required":[ - "GroupName", - "Description" - ], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "GroupName":{ - "shape":"String", - "documentation":"

The name of the security group.

Constraints: Up to 255 characters in length

Constraints for EC2-Classic: ASCII characters

Constraints for EC2-VPC: a-z, A-Z, 0-9, spaces, and ._-:/()#,@[]+=&;{}!$*

" - }, - "Description":{ - "shape":"String", - "documentation":"

A description for the security group. This is informational only.

Constraints: Up to 255 characters in length

Constraints for EC2-Classic: ASCII characters

Constraints for EC2-VPC: a-z, A-Z, 0-9, spaces, and ._-:/()#,@[]+=&;{}!$*

", - "locationName":"GroupDescription" - }, - "VpcId":{ - "shape":"String", - "documentation":"

[EC2-VPC] The ID of the VPC. Required for EC2-VPC.

" - } - } - }, - "CreateSecurityGroupResult":{ - "type":"structure", - "members":{ - "GroupId":{ - "shape":"String", - "documentation":"

The ID of the security group.

", - "locationName":"groupId" - } - } - }, - "CreateSnapshotRequest":{ - "type":"structure", - "required":["VolumeId"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "VolumeId":{ - "shape":"String", - "documentation":"

The ID of the Amazon EBS volume.

" - }, - "Description":{ - "shape":"String", - "documentation":"

A description for the snapshot.

" - } - } - }, - "CreateSpotDatafeedSubscriptionRequest":{ - "type":"structure", - "required":["Bucket"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "Bucket":{ - "shape":"String", - "documentation":"

The Amazon S3 bucket in which to store the Spot Instance datafeed.

Constraints: Must be a valid bucket associated with your AWS account.

", - "locationName":"bucket" - }, - "Prefix":{ - "shape":"String", - "documentation":"

A prefix for the datafeed file names.

", - "locationName":"prefix" - } - } - }, - "CreateSpotDatafeedSubscriptionResult":{ - "type":"structure", - "members":{ - "SpotDatafeedSubscription":{ - "shape":"SpotDatafeedSubscription", - "documentation":"

The Spot Instance datafeed subscription.

", - "locationName":"spotDatafeedSubscription" - } - } - }, - "CreateSubnetRequest":{ - "type":"structure", - "required":[ - "VpcId", - "CidrBlock" - ], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "VpcId":{ - "shape":"String", - "documentation":"

The ID of the VPC.

" - }, - "CidrBlock":{ - "shape":"String", - "documentation":"

The network range for the subnet, in CIDR notation. For example, 10.0.0.0/24.

" - }, - "AvailabilityZone":{ - "shape":"String", - "documentation":"

The Availability Zone for the subnet.

Default: Amazon EC2 selects one for you (recommended).

" - } - } - }, - "CreateSubnetResult":{ - "type":"structure", - "members":{ - "Subnet":{ - "shape":"Subnet", - "documentation":"

Information about the subnet.

", - "locationName":"subnet" - } - } - }, - "CreateTagsRequest":{ - "type":"structure", - "required":[ - "Resources", - "Tags" - ], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "Resources":{ - "shape":"ResourceIdList", - "documentation":"

The IDs of one or more resources to tag. For example, ami-1a2b3c4d.

", - "locationName":"ResourceId" - }, - "Tags":{ - "shape":"TagList", - "documentation":"

One or more tags. The value parameter is required, but if you don't want the tag to have a value, specify the parameter with no value, and we set the value to an empty string.

", - "locationName":"Tag" - } - } - }, - "CreateVolumePermission":{ - "type":"structure", - "members":{ - "UserId":{ - "shape":"String", - "documentation":"

The specific AWS account ID that is to be added or removed from a volume's list of create volume permissions.

", - "locationName":"userId" - }, - "Group":{ - "shape":"PermissionGroup", - "documentation":"

The specific group that is to be added or removed from a volume's list of create volume permissions.

", - "locationName":"group" - } - } - }, - "CreateVolumePermissionList":{ - "type":"list", - "member":{ - "shape":"CreateVolumePermission", - "locationName":"item" - } - }, - "CreateVolumePermissionModifications":{ - "type":"structure", - "members":{ - "Add":{ - "shape":"CreateVolumePermissionList", - "documentation":"

Adds a specific AWS account ID or group to a volume's list of create volume permissions.

" - }, - "Remove":{ - "shape":"CreateVolumePermissionList", - "documentation":"

Removes a specific AWS account ID or group from a volume's list of create volume permissions.

" - } - } - }, - "CreateVolumeRequest":{ - "type":"structure", - "required":["AvailabilityZone"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "Size":{ - "shape":"Integer", - "documentation":"

The size of the volume, in GiBs.

Constraints: If the volume type is io1, the minimum size of the volume is 10 GiB.

Default: If you're creating the volume from a snapshot and don't specify a volume size, the default is the snapshot size.

" - }, - "SnapshotId":{ - "shape":"String", - "documentation":"

The snapshot from which to create the volume.

" - }, - "AvailabilityZone":{ - "shape":"String", - "documentation":"

The Availability Zone in which to create the volume. Use DescribeAvailabilityZones to list the Availability Zones that are currently available to you.

" - }, - "VolumeType":{ - "shape":"VolumeType", - "documentation":"

The volume type. This can be gp2 for General Purpose (SSD) volumes, io1 for Provisioned IOPS (SSD) volumes, or standard for Magnetic volumes.

Default: standard

" - }, - "Iops":{ - "shape":"Integer", - "documentation":"

Only valid for Provisioned IOPS (SSD) volumes. The number of I/O operations per second (IOPS) to provision for the volume.

" - }, - "Encrypted":{ - "shape":"Boolean", - "documentation":"

Specifies whether the volume should be encrypted.

", - "locationName":"encrypted" - } - } - }, - "CreateVpcPeeringConnectionRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "VpcId":{ - "shape":"String", - "documentation":"

The ID of the requester VPC.

", - "locationName":"vpcId" - }, - "PeerVpcId":{ - "shape":"String", - "documentation":"

The ID of the VPC with which you are creating the VPC peering connection.

", - "locationName":"peerVpcId" - }, - "PeerOwnerId":{ - "shape":"String", - "documentation":"

The AWS account ID of the owner of the peer VPC.

Default: Your AWS account ID

", - "locationName":"peerOwnerId" - } - } - }, - "CreateVpcPeeringConnectionResult":{ - "type":"structure", - "members":{ - "VpcPeeringConnection":{ - "shape":"VpcPeeringConnection", - "documentation":"

Information about the VPC peering connection.

", - "locationName":"vpcPeeringConnection" - } - } - }, - "CreateVpcRequest":{ - "type":"structure", - "required":["CidrBlock"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "CidrBlock":{ - "shape":"String", - "documentation":"

The network range for the VPC, in CIDR notation. For example, 10.0.0.0/16.

" - }, - "InstanceTenancy":{ - "shape":"Tenancy", - "documentation":"

The supported tenancy options for instances launched into the VPC. A value of default means that instances can be launched with any tenancy; a value of dedicated means all instances launched into the VPC are launched as dedicated tenancy instances regardless of the tenancy assigned to the instance at launch. Dedicated tenancy instances run on single-tenant hardware.

Default: default

", - "locationName":"instanceTenancy" - } - } - }, - "CreateVpcResult":{ - "type":"structure", - "members":{ - "Vpc":{ - "shape":"Vpc", - "documentation":"

Information about the VPC.

", - "locationName":"vpc" - } - } - }, - "CreateVpnConnectionRequest":{ - "type":"structure", - "required":[ - "Type", - "CustomerGatewayId", - "VpnGatewayId" - ], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "Type":{ - "shape":"String", - "documentation":"

The type of VPN connection (ipsec.1).

" - }, - "CustomerGatewayId":{ - "shape":"String", - "documentation":"

The ID of the customer gateway.

" - }, - "VpnGatewayId":{ - "shape":"String", - "documentation":"

The ID of the virtual private gateway.

" - }, - "Options":{ - "shape":"VpnConnectionOptionsSpecification", - "documentation":"

Indicates whether the VPN connection requires static routes. If you are creating a VPN connection for a device that does not support BGP, you must specify true.

Default: false

", - "locationName":"options" - } - } - }, - "CreateVpnConnectionResult":{ - "type":"structure", - "members":{ - "VpnConnection":{ - "shape":"VpnConnection", - "documentation":"

Information about the VPN connection.

", - "locationName":"vpnConnection" - } - } - }, - "CreateVpnConnectionRouteRequest":{ - "type":"structure", - "required":[ - "VpnConnectionId", - "DestinationCidrBlock" - ], - "members":{ - "VpnConnectionId":{ - "shape":"String", - "documentation":"

The ID of the VPN connection.

" - }, - "DestinationCidrBlock":{ - "shape":"String", - "documentation":"

The CIDR block associated with the local subnet of the customer network.

" - } - } - }, - "CreateVpnGatewayRequest":{ - "type":"structure", - "required":["Type"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "Type":{ - "shape":"GatewayType", - "documentation":"

The type of VPN connection this virtual private gateway supports.

" - }, - "AvailabilityZone":{ - "shape":"String", - "documentation":"

The Availability Zone for the virtual private gateway.

" - } - } - }, - "CreateVpnGatewayResult":{ - "type":"structure", - "members":{ - "VpnGateway":{ - "shape":"VpnGateway", - "documentation":"

Information about the virtual private gateway.

", - "locationName":"vpnGateway" - } - } - }, - "CurrencyCodeValues":{ - "type":"string", - "enum":["USD"] - }, - "CustomerGateway":{ - "type":"structure", - "members":{ - "CustomerGatewayId":{ - "shape":"String", - "documentation":"

The ID of the customer gateway.

", - "locationName":"customerGatewayId" - }, - "State":{ - "shape":"String", - "documentation":"

The current state of the customer gateway (pending | available | deleting | deleted).

", - "locationName":"state" - }, - "Type":{ - "shape":"String", - "documentation":"

The type of VPN connection the customer gateway supports (ipsec.1).

", - "locationName":"type" - }, - "IpAddress":{ - "shape":"String", - "documentation":"

The Internet-routable IP address of the customer gateway's outside interface.

", - "locationName":"ipAddress" - }, - "BgpAsn":{ - "shape":"String", - "documentation":"

The customer gateway's Border Gateway Protocol (BGP) Autonomous System Number (ASN).

", - "locationName":"bgpAsn" - }, - "Tags":{ - "shape":"TagList", - "documentation":"

Any tags assigned to the customer gateway.

", - "locationName":"tagSet" - } - }, - "documentation":"

Describes a customer gateway.

" - }, - "CustomerGatewayIdStringList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"CustomerGatewayId" - } - }, - "CustomerGatewayList":{ - "type":"list", - "member":{ - "shape":"CustomerGateway", - "locationName":"item" - } - }, - "DatafeedSubscriptionState":{ - "type":"string", - "enum":[ - "Active", - "Inactive" - ] - }, - "DateTime":{"type":"timestamp"}, - "DeleteCustomerGatewayRequest":{ - "type":"structure", - "required":["CustomerGatewayId"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "CustomerGatewayId":{ - "shape":"String", - "documentation":"

The ID of the customer gateway.

" - } - } - }, - "DeleteDhcpOptionsRequest":{ - "type":"structure", - "required":["DhcpOptionsId"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "DhcpOptionsId":{ - "shape":"String", - "documentation":"

The ID of the DHCP options set.

" - } - } - }, - "DeleteInternetGatewayRequest":{ - "type":"structure", - "required":["InternetGatewayId"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "InternetGatewayId":{ - "shape":"String", - "documentation":"

The ID of the Internet gateway.

", - "locationName":"internetGatewayId" - } - } - }, - "DeleteKeyPairRequest":{ - "type":"structure", - "required":["KeyName"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "KeyName":{ - "shape":"String", - "documentation":"

The name of the key pair.

" - } - } - }, - "DeleteNetworkAclEntryRequest":{ - "type":"structure", - "required":[ - "NetworkAclId", - "RuleNumber", - "Egress" - ], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "NetworkAclId":{ - "shape":"String", - "documentation":"

The ID of the network ACL.

", - "locationName":"networkAclId" - }, - "RuleNumber":{ - "shape":"Integer", - "documentation":"

The rule number of the entry to delete.

", - "locationName":"ruleNumber" - }, - "Egress":{ - "shape":"Boolean", - "documentation":"

Indicates whether the rule is an egress rule.

", - "locationName":"egress" - } - } - }, - "DeleteNetworkAclRequest":{ - "type":"structure", - "required":["NetworkAclId"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "NetworkAclId":{ - "shape":"String", - "documentation":"

The ID of the network ACL.

", - "locationName":"networkAclId" - } - } - }, - "DeleteNetworkInterfaceRequest":{ - "type":"structure", - "required":["NetworkInterfaceId"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "NetworkInterfaceId":{ - "shape":"String", - "documentation":"

The ID of the network interface.

", - "locationName":"networkInterfaceId" - } - } - }, - "DeletePlacementGroupRequest":{ - "type":"structure", - "required":["GroupName"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "GroupName":{ - "shape":"String", - "documentation":"

The name of the placement group.

", - "locationName":"groupName" - } - } - }, - "DeleteRouteRequest":{ - "type":"structure", - "required":[ - "RouteTableId", - "DestinationCidrBlock" - ], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "RouteTableId":{ - "shape":"String", - "documentation":"

The ID of the route table.

", - "locationName":"routeTableId" - }, - "DestinationCidrBlock":{ - "shape":"String", - "documentation":"

The CIDR range for the route. The value you specify must match the CIDR for the route exactly.

", - "locationName":"destinationCidrBlock" - } - } - }, - "DeleteRouteTableRequest":{ - "type":"structure", - "required":["RouteTableId"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "RouteTableId":{ - "shape":"String", - "documentation":"

The ID of the route table.

", - "locationName":"routeTableId" - } - } - }, - "DeleteSecurityGroupRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "GroupName":{ - "shape":"String", - "documentation":"

[EC2-Classic, default VPC] The name of the security group. You can specify either the security group name or the security group ID.

" - }, - "GroupId":{ - "shape":"String", - "documentation":"

The ID of the security group. Required for a nondefault VPC.

" - } - } - }, - "DeleteSnapshotRequest":{ - "type":"structure", - "required":["SnapshotId"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "SnapshotId":{ - "shape":"String", - "documentation":"

The ID of the Amazon EBS snapshot.

" - } - } - }, - "DeleteSpotDatafeedSubscriptionRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - } - } - }, - "DeleteSubnetRequest":{ - "type":"structure", - "required":["SubnetId"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "SubnetId":{ - "shape":"String", - "documentation":"

The ID of the subnet.

" - } - } - }, - "DeleteTagsRequest":{ - "type":"structure", - "required":["Resources"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "Resources":{ - "shape":"ResourceIdList", - "documentation":"

The ID of the resource. For example, ami-1a2b3c4d. You can specify more than one resource ID.

", - "locationName":"resourceId" - }, - "Tags":{ - "shape":"TagList", - "documentation":"

One or more tags to delete. If you omit the value parameter, we delete the tag regardless of its value. If you specify this parameter with an empty string as the value, we delete the key only if its value is an empty string.

", - "locationName":"tag" - } - } - }, - "DeleteVolumeRequest":{ - "type":"structure", - "required":["VolumeId"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "VolumeId":{ - "shape":"String", - "documentation":"

The ID of the volume.

" - } - } - }, - "DeleteVpcPeeringConnectionRequest":{ - "type":"structure", - "required":["VpcPeeringConnectionId"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "VpcPeeringConnectionId":{ - "shape":"String", - "documentation":"

The ID of the VPC peering connection.

", - "locationName":"vpcPeeringConnectionId" - } - } - }, - "DeleteVpcPeeringConnectionResult":{ - "type":"structure", - "members":{ - "Return":{ - "shape":"Boolean", - "documentation":"

Returns true if the request succeeds; otherwise, it returns an error.

", - "locationName":"return" - } - } - }, - "DeleteVpcRequest":{ - "type":"structure", - "required":["VpcId"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "VpcId":{ - "shape":"String", - "documentation":"

The ID of the VPC.

" - } - } - }, - "DeleteVpnConnectionRequest":{ - "type":"structure", - "required":["VpnConnectionId"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "VpnConnectionId":{ - "shape":"String", - "documentation":"

The ID of the VPN connection.

" - } - } - }, - "DeleteVpnConnectionRouteRequest":{ - "type":"structure", - "required":[ - "VpnConnectionId", - "DestinationCidrBlock" - ], - "members":{ - "VpnConnectionId":{ - "shape":"String", - "documentation":"

The ID of the VPN connection.

" - }, - "DestinationCidrBlock":{ - "shape":"String", - "documentation":"

The CIDR block associated with the local subnet of the customer network.

" - } - } - }, - "DeleteVpnGatewayRequest":{ - "type":"structure", - "required":["VpnGatewayId"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "VpnGatewayId":{ - "shape":"String", - "documentation":"

The ID of the virtual private gateway.

" - } - } - }, - "DeregisterImageRequest":{ - "type":"structure", - "required":["ImageId"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "ImageId":{ - "shape":"String", - "documentation":"

The ID of the AMI.

" - } - } - }, - "DescribeAccountAttributesRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "AttributeNames":{ - "shape":"AccountAttributeNameStringList", - "documentation":"

One or more account attribute names.

", - "locationName":"attributeName" - } - } - }, - "DescribeAccountAttributesResult":{ - "type":"structure", - "members":{ - "AccountAttributes":{ - "shape":"AccountAttributeList", - "documentation":"

Information about one or more account attributes.

", - "locationName":"accountAttributeSet" - } - } - }, - "DescribeAddressesRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "PublicIps":{ - "shape":"PublicIpStringList", - "documentation":"

[EC2-Classic] One or more Elastic IP addresses.

Default: Describes all your Elastic IP addresses.

", - "locationName":"PublicIp" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

One or more filters. Filter names and values are case-sensitive.

", - "locationName":"Filter" - }, - "AllocationIds":{ - "shape":"AllocationIdList", - "documentation":"

[EC2-VPC] One or more allocation IDs.

Default: Describes all your Elastic IP addresses.

", - "locationName":"AllocationId" - } - } - }, - "DescribeAddressesResult":{ - "type":"structure", - "members":{ - "Addresses":{ - "shape":"AddressList", - "documentation":"

Information about one or more Elastic IP addresses.

", - "locationName":"addressesSet" - } - } - }, - "DescribeAvailabilityZonesRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "ZoneNames":{ - "shape":"ZoneNameStringList", - "documentation":"

The names of one or more Availability Zones.

", - "locationName":"ZoneName" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

One or more filters.

", - "locationName":"Filter" - } - } - }, - "DescribeAvailabilityZonesResult":{ - "type":"structure", - "members":{ - "AvailabilityZones":{ - "shape":"AvailabilityZoneList", - "documentation":"

Information about one or more Availability Zones.

", - "locationName":"availabilityZoneInfo" - } - } - }, - "DescribeBundleTasksRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "BundleIds":{ - "shape":"BundleIdStringList", - "documentation":"

One or more bundle task IDs.

Default: Describes all your bundle tasks.

", - "locationName":"BundleId" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

One or more filters.

", - "locationName":"Filter" - } - } - }, - "DescribeBundleTasksResult":{ - "type":"structure", - "members":{ - "BundleTasks":{ - "shape":"BundleTaskList", - "documentation":"

Information about one or more bundle tasks.

", - "locationName":"bundleInstanceTasksSet" - } - } - }, - "DescribeConversionTaskList":{ - "type":"list", - "member":{ - "shape":"ConversionTask", - "locationName":"item" - } - }, - "DescribeConversionTasksRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "Filters":{ - "shape":"FilterList", - "locationName":"filter" - }, - "ConversionTaskIds":{ - "shape":"ConversionIdStringList", - "documentation":"

One or more conversion task IDs.

", - "locationName":"conversionTaskId" - } - } - }, - "DescribeConversionTasksResult":{ - "type":"structure", - "members":{ - "ConversionTasks":{ - "shape":"DescribeConversionTaskList", - "locationName":"conversionTasks" - } - } - }, - "DescribeCustomerGatewaysRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "CustomerGatewayIds":{ - "shape":"CustomerGatewayIdStringList", - "documentation":"

One or more customer gateway IDs.

Default: Describes all your customer gateways.

", - "locationName":"CustomerGatewayId" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

One or more filters.

", - "locationName":"Filter" - } - } - }, - "DescribeCustomerGatewaysResult":{ - "type":"structure", - "members":{ - "CustomerGateways":{ - "shape":"CustomerGatewayList", - "documentation":"

Information about one or more customer gateways.

", - "locationName":"customerGatewaySet" - } - } - }, - "DescribeDhcpOptionsRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "DhcpOptionsIds":{ - "shape":"DhcpOptionsIdStringList", - "documentation":"

The IDs of one or more DHCP options sets.

Default: Describes all your DHCP options sets.

", - "locationName":"DhcpOptionsId" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

One or more filters.

", - "locationName":"Filter" - } - } - }, - "DescribeDhcpOptionsResult":{ - "type":"structure", - "members":{ - "DhcpOptions":{ - "shape":"DhcpOptionsList", - "documentation":"

Information about one or more DHCP options sets.

", - "locationName":"dhcpOptionsSet" - } - } - }, - "DescribeExportTasksRequest":{ - "type":"structure", - "members":{ - "ExportTaskIds":{ - "shape":"ExportTaskIdStringList", - "documentation":"

One or more export task IDs.

", - "locationName":"exportTaskId" - } - } - }, - "DescribeExportTasksResult":{ - "type":"structure", - "members":{ - "ExportTasks":{ - "shape":"ExportTaskList", - "locationName":"exportTaskSet" - } - } - }, - "DescribeImageAttributeRequest":{ - "type":"structure", - "required":[ - "ImageId", - "Attribute" - ], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "ImageId":{ - "shape":"String", - "documentation":"

The ID of the AMI.

" - }, - "Attribute":{ - "shape":"ImageAttributeName", - "documentation":"

The AMI attribute.

" - } - } - }, - "DescribeImagesRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "ImageIds":{ - "shape":"ImageIdStringList", - "documentation":"

One or more image IDs.

Default: Describes all images available to you.

", - "locationName":"ImageId" - }, - "Owners":{ - "shape":"OwnerStringList", - "documentation":"

Filters the images by the owner. Specify an AWS account ID, amazon (owner is Amazon), aws-marketplace (owner is AWS Marketplace), self (owner is the sender of the request), or all (all owners).

", - "locationName":"Owner" - }, - "ExecutableUsers":{ - "shape":"ExecutableByStringList", - "documentation":"

Scopes the images by users with explicit launch permissions. Specify an AWS account ID, self (the sender of the request), or all (public AMIs).

", - "locationName":"ExecutableBy" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

One or more filters.

", - "locationName":"Filter" - } - } - }, - "DescribeImagesResult":{ - "type":"structure", - "members":{ - "Images":{ - "shape":"ImageList", - "documentation":"

Information about one or more images.

", - "locationName":"imagesSet" - } - } - }, - "DescribeInstanceAttributeRequest":{ - "type":"structure", - "required":[ - "InstanceId", - "Attribute" - ], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "InstanceId":{ - "shape":"String", - "documentation":"

The ID of the instance.

", - "locationName":"instanceId" - }, - "Attribute":{ - "shape":"InstanceAttributeName", - "documentation":"

The instance attribute.

", - "locationName":"attribute" - } - } - }, - "DescribeInstanceStatusRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "InstanceIds":{ - "shape":"InstanceIdStringList", - "documentation":"

One or more instance IDs.

Default: Describes all your instances.

Constraints: Maximum 100 explicitly specified instance IDs.

", - "locationName":"InstanceId" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

One or more filters.

", - "locationName":"Filter" - }, - "NextToken":{ - "shape":"String", - "documentation":"

The next paginated set of results to return. (You received this token from a prior call.)

" - }, - "MaxResults":{ - "shape":"Integer", - "documentation":"

The maximum number of paginated instance items per response. The call also returns a token that you can specify in a subsequent call to get the next set of results. If the value is greater than 1000, we return only 1000 items.

Default: 1000

" - }, - "IncludeAllInstances":{ - "shape":"Boolean", - "documentation":"

When true, includes the health status for all instances. When false, includes the health status for running instances only.

Default: false

", - "locationName":"includeAllInstances" - } - } - }, - "DescribeInstanceStatusResult":{ - "type":"structure", - "members":{ - "InstanceStatuses":{ - "shape":"InstanceStatusList", - "documentation":"

One or more instance status descriptions.

", - "locationName":"instanceStatusSet" - }, - "NextToken":{ - "shape":"String", - "documentation":"

The next paginated set of results to return.

", - "locationName":"nextToken" - } - } - }, - "DescribeInstancesRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "InstanceIds":{ - "shape":"InstanceIdStringList", - "documentation":"

One or more instance IDs.

Default: Describes all your instances.

", - "locationName":"InstanceId" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

One or more filters.

", - "locationName":"Filter" - }, - "NextToken":{ - "shape":"String", - "documentation":"

The token for the next set of items to return. (You received this token from a prior call.)

", - "locationName":"nextToken" - }, - "MaxResults":{ - "shape":"Integer", - "documentation":"

The maximum number of items to return for this call. The call also returns a token that you can specify in a subsequent call to get the next set of results. If the value is greater than 1000, we return only 1000 items.

", - "locationName":"maxResults" - } - } - }, - "DescribeInstancesResult":{ - "type":"structure", - "members":{ - "Reservations":{ - "shape":"ReservationList", - "documentation":"

One or more reservations.

", - "locationName":"reservationSet" - }, - "NextToken":{ - "shape":"String", - "documentation":"

The token to use when requesting the next set of items. If there are no additional items to return, the string is empty.

", - "locationName":"nextToken" - } - } - }, - "DescribeInternetGatewaysRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "InternetGatewayIds":{ - "shape":"ValueStringList", - "documentation":"

One or more Internet gateway IDs.

Default: Describes all your Internet gateways.

", - "locationName":"internetGatewayId" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

One or more filters.

", - "locationName":"Filter" - } - } - }, - "DescribeInternetGatewaysResult":{ - "type":"structure", - "members":{ - "InternetGateways":{ - "shape":"InternetGatewayList", - "documentation":"

Information about one or more Internet gateways.

", - "locationName":"internetGatewaySet" - } - } - }, - "DescribeKeyPairsRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "KeyNames":{ - "shape":"KeyNameStringList", - "documentation":"

One or more key pair names.

Default: Describes all your key pairs.

", - "locationName":"KeyName" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

One or more filters.

", - "locationName":"Filter" - } - } - }, - "DescribeKeyPairsResult":{ - "type":"structure", - "members":{ - "KeyPairs":{ - "shape":"KeyPairList", - "documentation":"

Information about one or more key pairs.

", - "locationName":"keySet" - } - } - }, - "DescribeNetworkAclsRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "NetworkAclIds":{ - "shape":"ValueStringList", - "documentation":"

One or more network ACL IDs.

Default: Describes all your network ACLs.

", - "locationName":"NetworkAclId" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

One or more filters.

", - "locationName":"Filter" - } - } - }, - "DescribeNetworkAclsResult":{ - "type":"structure", - "members":{ - "NetworkAcls":{ - "shape":"NetworkAclList", - "documentation":"

Information about one or more network ACLs.

", - "locationName":"networkAclSet" - } - } - }, - "DescribeNetworkInterfaceAttributeRequest":{ - "type":"structure", - "required":["NetworkInterfaceId"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "NetworkInterfaceId":{ - "shape":"String", - "documentation":"

The ID of the network interface.

", - "locationName":"networkInterfaceId" - }, - "Attribute":{ - "shape":"NetworkInterfaceAttribute", - "documentation":"

The attribute of the network interface.

", - "locationName":"attribute" - } - } - }, - "DescribeNetworkInterfaceAttributeResult":{ - "type":"structure", - "members":{ - "NetworkInterfaceId":{ - "shape":"String", - "documentation":"

The ID of the network interface.

", - "locationName":"networkInterfaceId" - }, - "Description":{ - "shape":"AttributeValue", - "documentation":"

The description of the network interface.

", - "locationName":"description" - }, - "SourceDestCheck":{ - "shape":"AttributeBooleanValue", - "documentation":"

Indicates whether source/destination checking is enabled.

", - "locationName":"sourceDestCheck" - }, - "Groups":{ - "shape":"GroupIdentifierList", - "documentation":"

The security groups associated with the network interface.

", - "locationName":"groupSet" - }, - "Attachment":{ - "shape":"NetworkInterfaceAttachment", - "documentation":"

The attachment (if any) of the network interface.

", - "locationName":"attachment" - } - } - }, - "DescribeNetworkInterfacesRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "NetworkInterfaceIds":{ - "shape":"NetworkInterfaceIdList", - "documentation":"

One or more network interface IDs.

Default: Describes all your network interfaces.

", - "locationName":"NetworkInterfaceId" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

One or more filters.

", - "locationName":"filter" - } - } - }, - "DescribeNetworkInterfacesResult":{ - "type":"structure", - "members":{ - "NetworkInterfaces":{ - "shape":"NetworkInterfaceList", - "documentation":"

Information about one or more network interfaces.

", - "locationName":"networkInterfaceSet" - } - } - }, - "DescribePlacementGroupsRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "GroupNames":{ - "shape":"PlacementGroupStringList", - "documentation":"

One or more placement group names.

Default: Describes all your placement groups, or only those otherwise specified.

", - "locationName":"groupName" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

One or more filters.

", - "locationName":"Filter" - } - } - }, - "DescribePlacementGroupsResult":{ - "type":"structure", - "members":{ - "PlacementGroups":{ - "shape":"PlacementGroupList", - "documentation":"

One or more placement groups.

", - "locationName":"placementGroupSet" - } - } - }, - "DescribeRegionsRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "RegionNames":{ - "shape":"RegionNameStringList", - "documentation":"

The names of one or more regions.

", - "locationName":"RegionName" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

One or more filters.

", - "locationName":"Filter" - } - } - }, - "DescribeRegionsResult":{ - "type":"structure", - "members":{ - "Regions":{ - "shape":"RegionList", - "documentation":"

Information about one or more regions.

", - "locationName":"regionInfo" - } - } - }, - "DescribeReservedInstancesListingsRequest":{ - "type":"structure", - "members":{ - "ReservedInstancesId":{ - "shape":"String", - "documentation":"

One or more Reserved Instance IDs.

", - "locationName":"reservedInstancesId" - }, - "ReservedInstancesListingId":{ - "shape":"String", - "documentation":"

One or more Reserved Instance Listing IDs.

", - "locationName":"reservedInstancesListingId" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

One or more filters.

", - "locationName":"filters" - } - } - }, - "DescribeReservedInstancesListingsResult":{ - "type":"structure", - "members":{ - "ReservedInstancesListings":{ - "shape":"ReservedInstancesListingList", - "documentation":"

Information about the Reserved Instance listing.

", - "locationName":"reservedInstancesListingsSet" - } - } - }, - "DescribeReservedInstancesModificationsRequest":{ - "type":"structure", - "members":{ - "ReservedInstancesModificationIds":{ - "shape":"ReservedInstancesModificationIdStringList", - "documentation":"

IDs for the submitted modification request.

", - "locationName":"ReservedInstancesModificationId" - }, - "NextToken":{ - "shape":"String", - "documentation":"

The token for the next page of data.

", - "locationName":"nextToken" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

One or more filters.

", - "locationName":"Filter" - } - } - }, - "DescribeReservedInstancesModificationsResult":{ - "type":"structure", - "members":{ - "ReservedInstancesModifications":{ - "shape":"ReservedInstancesModificationList", - "documentation":"

The Reserved Instance modification information.

", - "locationName":"reservedInstancesModificationsSet" - }, - "NextToken":{ - "shape":"String", - "documentation":"

The token for the next page of data.

", - "locationName":"nextToken" - } - } - }, - "DescribeReservedInstancesOfferingsRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "ReservedInstancesOfferingIds":{ - "shape":"ReservedInstancesOfferingIdStringList", - "documentation":"

One or more Reserved Instances offering IDs.

", - "locationName":"ReservedInstancesOfferingId" - }, - "InstanceType":{ - "shape":"InstanceType", - "documentation":"

The instance type on which the Reserved Instance can be used. For more information, see Instance Types in the Amazon Elastic Compute Cloud User Guide.

" - }, - "AvailabilityZone":{ - "shape":"String", - "documentation":"

The Availability Zone in which the Reserved Instance can be used.

" - }, - "ProductDescription":{ - "shape":"RIProductDescription", - "documentation":"

The Reserved Instance description. Instances that include (Amazon VPC) in the description are for use with Amazon VPC.

" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

One or more filters.

", - "locationName":"Filter" - }, - "InstanceTenancy":{ - "shape":"Tenancy", - "documentation":"

The tenancy of the Reserved Instance offering. A Reserved Instance with dedicated tenancy runs on single-tenant hardware and can only be launched within a VPC.

Default: default

", - "locationName":"instanceTenancy" - }, - "OfferingType":{ - "shape":"OfferingTypeValues", - "documentation":"

The Reserved Instance offering type. If you are using tools that predate the 2011-11-01 API version, you only have access to the Medium Utilization Reserved Instance offering type.

", - "locationName":"offeringType" - }, - "NextToken":{ - "shape":"String", - "documentation":"

The token to use when requesting the next paginated set of offerings.

", - "locationName":"nextToken" - }, - "MaxResults":{ - "shape":"Integer", - "documentation":"

The maximum number of offerings to return. The maximum is 100.

Default: 100

", - "locationName":"maxResults" - }, - "IncludeMarketplace":{ - "shape":"Boolean", - "documentation":"

Include Marketplace offerings in the response.

" - }, - "MinDuration":{ - "shape":"Long", - "documentation":"

The minimum duration (in seconds) to filter when searching for offerings.

Default: 2592000 (1 month)

" - }, - "MaxDuration":{ - "shape":"Long", - "documentation":"

The maximum duration (in seconds) to filter when searching for offerings.

Default: 94608000 (3 years)

" - }, - "MaxInstanceCount":{ - "shape":"Integer", - "documentation":"

The maximum number of instances to filter when searching for offerings.

Default: 20

" - } - } - }, - "DescribeReservedInstancesOfferingsResult":{ - "type":"structure", - "members":{ - "ReservedInstancesOfferings":{ - "shape":"ReservedInstancesOfferingList", - "documentation":"

A list of Reserved Instances offerings.

", - "locationName":"reservedInstancesOfferingsSet" - }, - "NextToken":{ - "shape":"String", - "documentation":"

The next paginated set of results to return.

", - "locationName":"nextToken" - } - } - }, - "DescribeReservedInstancesRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "ReservedInstancesIds":{ - "shape":"ReservedInstancesIdStringList", - "documentation":"

One or more Reserved Instance IDs.

Default: Describes all your Reserved Instances, or only those otherwise specified.

", - "locationName":"ReservedInstancesId" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

One or more filters.

", - "locationName":"Filter" - }, - "OfferingType":{ - "shape":"OfferingTypeValues", - "documentation":"

The Reserved Instance offering type. If you are using tools that predate the 2011-11-01 API version, you only have access to the Medium Utilization Reserved Instance offering type.

", - "locationName":"offeringType" - } - } - }, - "DescribeReservedInstancesResult":{ - "type":"structure", - "members":{ - "ReservedInstances":{ - "shape":"ReservedInstancesList", - "documentation":"

A list of Reserved Instances.

", - "locationName":"reservedInstancesSet" - } - } - }, - "DescribeRouteTablesRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "RouteTableIds":{ - "shape":"ValueStringList", - "documentation":"

One or more route table IDs.

Default: Describes all your route tables.

", - "locationName":"RouteTableId" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

One or more filters.

", - "locationName":"Filter" - } - } - }, - "DescribeRouteTablesResult":{ - "type":"structure", - "members":{ - "RouteTables":{ - "shape":"RouteTableList", - "documentation":"

Information about one or more route tables.

", - "locationName":"routeTableSet" - } - } - }, - "DescribeSecurityGroupsRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "GroupNames":{ - "shape":"GroupNameStringList", - "documentation":"

[EC2-Classic, default VPC] One or more security group names. You can specify either the security group name or the security group ID.

Default: Describes all your security groups.

", - "locationName":"GroupName" - }, - "GroupIds":{ - "shape":"GroupIdStringList", - "documentation":"

One or more security group IDs. Required for nondefault VPCs.

Default: Describes all your security groups.

", - "locationName":"GroupId" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

One or more filters.

", - "locationName":"Filter" - } - } - }, - "DescribeSecurityGroupsResult":{ - "type":"structure", - "members":{ - "SecurityGroups":{ - "shape":"SecurityGroupList", - "documentation":"

Information about one or more security groups.

", - "locationName":"securityGroupInfo" - } - } - }, - "DescribeSnapshotAttributeRequest":{ - "type":"structure", - "required":[ - "SnapshotId", - "Attribute" - ], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "SnapshotId":{ - "shape":"String", - "documentation":"

The ID of the Amazon EBS snapshot.

" - }, - "Attribute":{ - "shape":"SnapshotAttributeName", - "documentation":"

The snapshot attribute you would like to view.

" - } - } - }, - "DescribeSnapshotAttributeResult":{ - "type":"structure", - "members":{ - "SnapshotId":{ - "shape":"String", - "documentation":"

The ID of the Amazon EBS snapshot.

", - "locationName":"snapshotId" - }, - "CreateVolumePermissions":{ - "shape":"CreateVolumePermissionList", - "documentation":"

A list of permissions for creating volumes from the snapshot.

", - "locationName":"createVolumePermission" - }, - "ProductCodes":{ - "shape":"ProductCodeList", - "documentation":"

A list of product codes.

", - "locationName":"productCodes" - } - } - }, - "DescribeSnapshotsRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "SnapshotIds":{ - "shape":"SnapshotIdStringList", - "documentation":"

One or more snapshot IDs.

Default: Describes snapshots for which you have launch permissions.

", - "locationName":"SnapshotId" - }, - "OwnerIds":{ - "shape":"OwnerStringList", - "documentation":"

Returns the snapshots owned by the specified owner. Multiple owners can be specified.

", - "locationName":"Owner" - }, - "RestorableByUserIds":{ - "shape":"RestorableByStringList", - "documentation":"

One or more AWS accounts IDs that can create volumes from the snapshot.

", - "locationName":"RestorableBy" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

One or more filters.

", - "locationName":"Filter" - } - } - }, - "DescribeSnapshotsResult":{ - "type":"structure", - "members":{ - "Snapshots":{ - "shape":"SnapshotList", - "locationName":"snapshotSet" - } - } - }, - "DescribeSpotDatafeedSubscriptionRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - } - } - }, - "DescribeSpotDatafeedSubscriptionResult":{ - "type":"structure", - "members":{ - "SpotDatafeedSubscription":{ - "shape":"SpotDatafeedSubscription", - "documentation":"

The Spot Instance datafeed subscription.

", - "locationName":"spotDatafeedSubscription" - } - } - }, - "DescribeSpotInstanceRequestsRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "SpotInstanceRequestIds":{ - "shape":"SpotInstanceRequestIdList", - "documentation":"

One or more Spot Instance request IDs.

", - "locationName":"SpotInstanceRequestId" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

One or more filters.

", - "locationName":"Filter" - } - } - }, - "DescribeSpotInstanceRequestsResult":{ - "type":"structure", - "members":{ - "SpotInstanceRequests":{ - "shape":"SpotInstanceRequestList", - "documentation":"

One or more Spot Instance requests.

", - "locationName":"spotInstanceRequestSet" - } - } - }, - "DescribeSpotPriceHistoryRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "StartTime":{ - "shape":"DateTime", - "documentation":"

The start date and time of the Spot Price history data.

", - "locationName":"startTime" - }, - "EndTime":{ - "shape":"DateTime", - "documentation":"

The end date and time of the Spot Price history data.

", - "locationName":"endTime" - }, - "InstanceTypes":{ - "shape":"InstanceTypeList", - "documentation":"

One or more instance types.

", - "locationName":"InstanceType" - }, - "ProductDescriptions":{ - "shape":"ProductDescriptionList", - "documentation":"

One or more basic product descriptions.

", - "locationName":"ProductDescription" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

One or more filters.

", - "locationName":"Filter" - }, - "AvailabilityZone":{ - "shape":"String", - "documentation":"

The Availability Zone.

", - "locationName":"availabilityZone" - }, - "MaxResults":{ - "shape":"Integer", - "documentation":"

The number of rows to return.

", - "locationName":"maxResults" - }, - "NextToken":{ - "shape":"String", - "documentation":"

The next set of rows to return.

", - "locationName":"nextToken" - } - } - }, - "DescribeSpotPriceHistoryResult":{ - "type":"structure", - "members":{ - "SpotPriceHistory":{ - "shape":"SpotPriceHistoryList", - "documentation":"

The historical Spot Prices.

", - "locationName":"spotPriceHistorySet" - }, - "NextToken":{ - "shape":"String", - "documentation":"

The string marking the next set of results. This is empty if there are no more results.

", - "locationName":"nextToken" - } - } - }, - "DescribeSubnetsRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "SubnetIds":{ - "shape":"SubnetIdStringList", - "documentation":"

One or more subnet IDs.

Default: Describes all your subnets.

", - "locationName":"SubnetId" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

One or more filters.

", - "locationName":"Filter" - } - } - }, - "DescribeSubnetsResult":{ - "type":"structure", - "members":{ - "Subnets":{ - "shape":"SubnetList", - "documentation":"

Information about one or more subnets.

", - "locationName":"subnetSet" - } - } - }, - "DescribeTagsRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

One or more filters.

", - "locationName":"Filter" - }, - "MaxResults":{ - "shape":"Integer", - "documentation":"

The maximum number of items to return for this call. The call also returns a token that you can specify in a subsequent call to get the next set of results. If the value is greater than 1000, we return only 1000 items.

", - "locationName":"maxResults" - }, - "NextToken":{ - "shape":"String", - "documentation":"

The token for the next set of items to return. (You received this token from a prior call.)

", - "locationName":"nextToken" - } - } - }, - "DescribeTagsResult":{ - "type":"structure", - "members":{ - "Tags":{ - "shape":"TagDescriptionList", - "documentation":"

A list of tags.

", - "locationName":"tagSet" - }, - "NextToken":{ - "shape":"String", - "documentation":"

The token to use when requesting the next set of items. If there are no additional items to return, the string is empty.

", - "locationName":"nextToken" - } - } - }, - "DescribeVolumeAttributeRequest":{ - "type":"structure", - "required":["VolumeId"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "VolumeId":{ - "shape":"String", - "documentation":"

The ID of the volume.

" - }, - "Attribute":{ - "shape":"VolumeAttributeName", - "documentation":"

The instance attribute.

" - } - } - }, - "DescribeVolumeAttributeResult":{ - "type":"structure", - "members":{ - "VolumeId":{ - "shape":"String", - "documentation":"

The ID of the volume.

", - "locationName":"volumeId" - }, - "AutoEnableIO":{ - "shape":"AttributeBooleanValue", - "documentation":"

The state of autoEnableIO attribute.

", - "locationName":"autoEnableIO" - }, - "ProductCodes":{ - "shape":"ProductCodeList", - "documentation":"

A list of product codes.

", - "locationName":"productCodes" - } - } - }, - "DescribeVolumeStatusRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "VolumeIds":{ - "shape":"VolumeIdStringList", - "documentation":"

One or more volume IDs.

Default: Describes all your volumes.

", - "locationName":"VolumeId" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

One or more filters.

", - "locationName":"Filter" - }, - "NextToken":{ - "shape":"String", - "documentation":"

The next paginated set of results to return using the pagination token returned by a previous call.

" - }, - "MaxResults":{ - "shape":"Integer", - "documentation":"

The maximum number of paginated volume items per response.

" - } - } - }, - "DescribeVolumeStatusResult":{ - "type":"structure", - "members":{ - "VolumeStatuses":{ - "shape":"VolumeStatusList", - "documentation":"

A list of volumes.

", - "locationName":"volumeStatusSet" - }, - "NextToken":{ - "shape":"String", - "documentation":"

The next paginated set of results to return.

", - "locationName":"nextToken" - } - } - }, - "DescribeVolumesRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "VolumeIds":{ - "shape":"VolumeIdStringList", - "documentation":"

One or more volume IDs.

", - "locationName":"VolumeId" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

One or more filters.

", - "locationName":"Filter" - }, - "NextToken":{ - "shape":"String", - "documentation":"

The NextToken value returned from a previous paginated DescribeVolumes request where MaxResults was used and the results exceeded the value of that parameter. Pagination continues from the end of the previous results that returned the NextToken value. This value is null when there are no more results to return.

", - "locationName":"nextToken" - }, - "MaxResults":{ - "shape":"Integer", - "documentation":"

The maximum number of volume results returned by DescribeVolumes in paginated output. When this parameter is used, DescribeVolumes only returns MaxResults results in a single page along with a NextToken response element. The remaining results of the initial request can be seen by sending another DescribeVolumes request with the returned NextToken value. This value can be between 5 and 1000; if MaxResults is given a value larger than 1000, only 1000 results are returned. If this parameter is not used, then DescribeVolumes returns all results.

", - "locationName":"maxResults" - } - } - }, - "DescribeVolumesResult":{ - "type":"structure", - "members":{ - "Volumes":{ - "shape":"VolumeList", - "locationName":"volumeSet" - }, - "NextToken":{ - "shape":"String", - "documentation":"

The NextToken value to include in a future DescribeVolumes request. When the results of a DescribeVolumes request exceed MaxResults, this value can be used to retrieve the next page of results. This value is null when there are no more results to return.

", - "locationName":"nextToken" - } - } - }, - "DescribeVpcAttributeRequest":{ - "type":"structure", - "required":["VpcId"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "VpcId":{ - "shape":"String", - "documentation":"

The ID of the VPC.

" - }, - "Attribute":{ - "shape":"VpcAttributeName", - "documentation":"

The VPC attribute.

" - } - } - }, - "DescribeVpcAttributeResult":{ - "type":"structure", - "members":{ - "VpcId":{ - "shape":"String", - "documentation":"

The ID of the VPC.

", - "locationName":"vpcId" - }, - "EnableDnsSupport":{ - "shape":"AttributeBooleanValue", - "documentation":"

Indicates whether DNS resolution is enabled 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.

", - "locationName":"enableDnsSupport" - }, - "EnableDnsHostnames":{ - "shape":"AttributeBooleanValue", - "documentation":"

Indicates 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.

", - "locationName":"enableDnsHostnames" - } - } - }, - "DescribeVpcPeeringConnectionsRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "VpcPeeringConnectionIds":{ - "shape":"ValueStringList", - "documentation":"

One or more VPC peering connection IDs.

Default: Describes all your VPC peering connections.

", - "locationName":"VpcPeeringConnectionId" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

One or more filters.

", - "locationName":"Filter" - } - } - }, - "DescribeVpcPeeringConnectionsResult":{ - "type":"structure", - "members":{ - "VpcPeeringConnections":{ - "shape":"VpcPeeringConnectionList", - "documentation":"

Information about the VPC peering connections.

", - "locationName":"vpcPeeringConnectionSet" - } - } - }, - "DescribeVpcsRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "VpcIds":{ - "shape":"VpcIdStringList", - "documentation":"

One or more VPC IDs.

Default: Describes all your VPCs.

", - "locationName":"VpcId" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

One or more filters.

", - "locationName":"Filter" - } - } - }, - "DescribeVpcsResult":{ - "type":"structure", - "members":{ - "Vpcs":{ - "shape":"VpcList", - "documentation":"

Information about one or more VPCs.

", - "locationName":"vpcSet" - } - } - }, - "DescribeVpnConnectionsRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "VpnConnectionIds":{ - "shape":"VpnConnectionIdStringList", - "documentation":"

One or more VPN connection IDs.

Default: Describes your VPN connections.

", - "locationName":"VpnConnectionId" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

One or more filters.

", - "locationName":"Filter" - } - } - }, - "DescribeVpnConnectionsResult":{ - "type":"structure", - "members":{ - "VpnConnections":{ - "shape":"VpnConnectionList", - "documentation":"

Information about one or more VPN connections.

", - "locationName":"vpnConnectionSet" - } - } - }, - "DescribeVpnGatewaysRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "VpnGatewayIds":{ - "shape":"VpnGatewayIdStringList", - "documentation":"

One or more virtual private gateway IDs.

Default: Describes all your virtual private gateways.

", - "locationName":"VpnGatewayId" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

One or more filters.

", - "locationName":"Filter" - } - } - }, - "DescribeVpnGatewaysResult":{ - "type":"structure", - "members":{ - "VpnGateways":{ - "shape":"VpnGatewayList", - "documentation":"

Information about one or more virtual private gateways.

", - "locationName":"vpnGatewaySet" - } - } - }, - "DetachInternetGatewayRequest":{ - "type":"structure", - "required":[ - "InternetGatewayId", - "VpcId" - ], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "InternetGatewayId":{ - "shape":"String", - "documentation":"

The ID of the Internet gateway.

", - "locationName":"internetGatewayId" - }, - "VpcId":{ - "shape":"String", - "documentation":"

The ID of the VPC.

", - "locationName":"vpcId" - } - } - }, - "DetachNetworkInterfaceRequest":{ - "type":"structure", - "required":["AttachmentId"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "AttachmentId":{ - "shape":"String", - "documentation":"

The ID of the attachment.

", - "locationName":"attachmentId" - }, - "Force":{ - "shape":"Boolean", - "documentation":"

Specifies whether to force a detachment.

", - "locationName":"force" - } - } - }, - "DetachVolumeRequest":{ - "type":"structure", - "required":["VolumeId"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "VolumeId":{ - "shape":"String", - "documentation":"

The ID of the volume.

" - }, - "InstanceId":{ - "shape":"String", - "documentation":"

The ID of the instance.

" - }, - "Device":{ - "shape":"String", - "documentation":"

The device name.

" - }, - "Force":{ - "shape":"Boolean", - "documentation":"

Forces detachment if the previous detachment attempt did not occur cleanly (for example, logging into an instance, unmounting the volume, and detaching normally). This option can lead to data loss or a corrupted file system. Use this option only as a last resort to detach a volume from a failed instance. The instance won't have an opportunity to flush file system caches or file system metadata. If you use this option, you must perform file system check and repair procedures.

" - } - } - }, - "DetachVpnGatewayRequest":{ - "type":"structure", - "required":[ - "VpnGatewayId", - "VpcId" - ], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "VpnGatewayId":{ - "shape":"String", - "documentation":"

The ID of the virtual private gateway.

" - }, - "VpcId":{ - "shape":"String", - "documentation":"

The ID of the VPC.

" - } - } - }, - "DeviceType":{ - "type":"string", - "enum":[ - "ebs", - "instance-store" - ] - }, - "DhcpConfiguration":{ - "type":"structure", - "members":{ - "Key":{ - "shape":"String", - "documentation":"

The name of a DHCP option.

", - "locationName":"key" - }, - "Values":{ - "shape":"DhcpConfigurationValueList", - "documentation":"

One or more values for the DHCP option.

", - "locationName":"valueSet" - } - }, - "documentation":"

Describes a DHCP configuration option.

" - }, - "DhcpConfigurationList":{ - "type":"list", - "member":{ - "shape":"DhcpConfiguration", - "locationName":"item" - } - }, - "DhcpOptions":{ - "type":"structure", - "members":{ - "DhcpOptionsId":{ - "shape":"String", - "documentation":"

The ID of the set of DHCP options.

", - "locationName":"dhcpOptionsId" - }, - "DhcpConfigurations":{ - "shape":"DhcpConfigurationList", - "documentation":"

One or more DHCP options in the set.

", - "locationName":"dhcpConfigurationSet" - }, - "Tags":{ - "shape":"TagList", - "documentation":"

Any tags assigned to the DHCP options set.

", - "locationName":"tagSet" - } - }, - "documentation":"

Describes a set of DHCP options.

" - }, - "DhcpOptionsIdStringList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"DhcpOptionsId" - } - }, - "DhcpOptionsList":{ - "type":"list", - "member":{ - "shape":"DhcpOptions", - "locationName":"item" - } - }, - "DisableVgwRoutePropagationRequest":{ - "type":"structure", - "required":[ - "RouteTableId", - "GatewayId" - ], - "members":{ - "RouteTableId":{ - "shape":"String", - "documentation":"

The ID of the route table.

" - }, - "GatewayId":{ - "shape":"String", - "documentation":"

The ID of the virtual private gateway.

" - } - } - }, - "DisassociateAddressRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "PublicIp":{ - "shape":"String", - "documentation":"

[EC2-Classic] The Elastic IP address. Required for EC2-Classic.

" - }, - "AssociationId":{ - "shape":"String", - "documentation":"

[EC2-VPC] The association ID. Required for EC2-VPC.

" - } - } - }, - "DisassociateRouteTableRequest":{ - "type":"structure", - "required":["AssociationId"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "AssociationId":{ - "shape":"String", - "documentation":"

The association ID representing the current association between the route table and subnet.

", - "locationName":"associationId" - } - } - }, - "DiskImage":{ - "type":"structure", - "members":{ - "Image":{"shape":"DiskImageDetail"}, - "Description":{"shape":"String"}, - "Volume":{"shape":"VolumeDetail"} - }, - "documentation":"

Describes a disk image.

" - }, - "DiskImageDescription":{ - "type":"structure", - "required":[ - "Format", - "Size", - "ImportManifestUrl" - ], - "members":{ - "Format":{ - "shape":"DiskImageFormat", - "documentation":"

The disk image format.

", - "locationName":"format" - }, - "Size":{ - "shape":"Long", - "documentation":"

The size of the disk image.

", - "locationName":"size" - }, - "ImportManifestUrl":{ - "shape":"String", - "documentation":"

A presigned URL for the import manifest stored in Amazon S3. For information about creating a presigned URL for an Amazon S3 object, read the \"Query String Request Authentication Alternative\" section of the Authenticating REST Requests topic in the Amazon Simple Storage Service Developer Guide.

", - "locationName":"importManifestUrl" - }, - "Checksum":{ - "shape":"String", - "documentation":"

The checksum computed for the disk image.

", - "locationName":"checksum" - } - } - }, - "DiskImageDetail":{ - "type":"structure", - "required":[ - "Format", - "Bytes", - "ImportManifestUrl" - ], - "members":{ - "Format":{ - "shape":"DiskImageFormat", - "documentation":"

The disk image format.

", - "locationName":"format" - }, - "Bytes":{ - "shape":"Long", - "locationName":"bytes" - }, - "ImportManifestUrl":{ - "shape":"String", - "documentation":"

A presigned URL for the import manifest stored in Amazon S3. For information about creating a presigned URL for an Amazon S3 object, read the \"Query String Request Authentication Alternative\" section of the Authenticating REST Requests topic in the Amazon Simple Storage Service Developer Guide.

", - "locationName":"importManifestUrl" - } - } - }, - "DiskImageFormat":{ - "type":"string", - "enum":[ - "VMDK", - "RAW", - "VHD" - ] - }, - "DiskImageList":{ - "type":"list", - "member":{"shape":"DiskImage"} - }, - "DiskImageVolumeDescription":{ - "type":"structure", - "required":["Id"], - "members":{ - "Size":{ - "shape":"Long", - "documentation":"

The size of the volume.

", - "locationName":"size" - }, - "Id":{ - "shape":"String", - "documentation":"

The volume identifier.

", - "locationName":"id" - } - } - }, - "DomainType":{ - "type":"string", - "enum":[ - "vpc", - "standard" - ] - }, - "Double":{"type":"double"}, - "EbsBlockDevice":{ - "type":"structure", - "members":{ - "SnapshotId":{ - "shape":"String", - "documentation":"

The ID of the snapshot.

", - "locationName":"snapshotId" - }, - "VolumeSize":{ - "shape":"Integer", - "documentation":"

The size of the volume, in GiB.

Constraints: If the volume type is io1, the minimum size of the volume is 10 GiB; otherwise, the minimum size is 1 GiB. The maximum volume size is 1024 GiB. 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.

", - "locationName":"volumeSize" - }, - "DeleteOnTermination":{ - "shape":"Boolean", - "documentation":"

Indicates whether the Amazon EBS volume is deleted on instance termination.

", - "locationName":"deleteOnTermination" - }, - "VolumeType":{ - "shape":"VolumeType", - "documentation":"

The volume type. gp2 for General Purpose (SSD) volumes, io1 for Provisioned IOPS (SSD) volumes, and standard for Magnetic volumes.

Default: standard

", - "locationName":"volumeType" - }, - "Iops":{ - "shape":"Integer", - "documentation":"

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. For more information on General Purpose (SSD) baseline performance, I/O credits, and bursting, see Amazon EBS Volume Types in the Amazon Elastic Compute Cloud User Guide.

Constraint: Range is 100 to 4000 for Provisioned IOPS (SSD) volumes and 3 to 3072 for General Purpose (SSD) volumes.

Condition: This parameter is required for requests to create io1 volumes; it is not used in requests to create standard or gp2 volumes.

", - "locationName":"iops" - }, - "Encrypted":{ - "shape":"Boolean", - "documentation":"

Indicates whether the Amazon EBS volume is encrypted. Encrypted Amazon EBS volumes may only be attached to instances that support Amazon EBS encryption.

", - "locationName":"encrypted" - } - }, - "documentation":"

Describes an Amazon EBS block device.

" - }, - "EbsInstanceBlockDevice":{ - "type":"structure", - "members":{ - "VolumeId":{ - "shape":"String", - "documentation":"

The ID of the Amazon EBS volume.

", - "locationName":"volumeId" - }, - "Status":{ - "shape":"AttachmentStatus", - "documentation":"

The attachment state.

", - "locationName":"status" - }, - "AttachTime":{ - "shape":"DateTime", - "documentation":"

The time stamp when the attachment initiated.

", - "locationName":"attachTime" - }, - "DeleteOnTermination":{ - "shape":"Boolean", - "documentation":"

Indicates whether the volume is deleted on instance termination.

", - "locationName":"deleteOnTermination" - } - }, - "documentation":"

Describes a parameter used to set up an Amazon EBS volume in a block device mapping.

" - }, - "EbsInstanceBlockDeviceSpecification":{ - "type":"structure", - "members":{ - "VolumeId":{ - "shape":"String", - "documentation":"

The ID of the Amazon EBS volume.

", - "locationName":"volumeId" - }, - "DeleteOnTermination":{ - "shape":"Boolean", - "documentation":"

Indicates whether the volume is deleted on instance termination.

", - "locationName":"deleteOnTermination" - } - } - }, - "EnableVgwRoutePropagationRequest":{ - "type":"structure", - "required":[ - "RouteTableId", - "GatewayId" - ], - "members":{ - "RouteTableId":{ - "shape":"String", - "documentation":"

The ID of the route table.

" - }, - "GatewayId":{ - "shape":"String", - "documentation":"

The ID of the virtual private gateway.

" - } - } - }, - "EnableVolumeIORequest":{ - "type":"structure", - "required":["VolumeId"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "VolumeId":{ - "shape":"String", - "documentation":"

The ID of the volume.

", - "locationName":"volumeId" - } - } - }, - "EventCode":{ - "type":"string", - "enum":[ - "instance-reboot", - "system-reboot", - "system-maintenance", - "instance-retirement", - "instance-stop" - ] - }, - "ExecutableByStringList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"ExecutableBy" - } - }, - "ExportEnvironment":{ - "type":"string", - "enum":[ - "citrix", - "vmware", - "microsoft" - ] - }, - "ExportTask":{ - "type":"structure", - "members":{ - "ExportTaskId":{ - "shape":"String", - "documentation":"

The ID of the export task.

", - "locationName":"exportTaskId" - }, - "Description":{ - "shape":"String", - "documentation":"

A description of the resource being exported.

", - "locationName":"description" - }, - "State":{ - "shape":"ExportTaskState", - "documentation":"

The state of the conversion task.

", - "locationName":"state" - }, - "StatusMessage":{ - "shape":"String", - "documentation":"

The status message related to the export task.

", - "locationName":"statusMessage" - }, - "InstanceExportDetails":{ - "shape":"InstanceExportDetails", - "documentation":"

The instance being exported.

", - "locationName":"instanceExport" - }, - "ExportToS3Task":{ - "shape":"ExportToS3Task", - "locationName":"exportToS3" - } - }, - "documentation":"

Describes an export task.

" - }, - "ExportTaskIdStringList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"ExportTaskId" - } - }, - "ExportTaskList":{ - "type":"list", - "member":{ - "shape":"ExportTask", - "locationName":"item" - } - }, - "ExportTaskState":{ - "type":"string", - "enum":[ - "active", - "cancelling", - "cancelled", - "completed" - ] - }, - "ExportToS3Task":{ - "type":"structure", - "members":{ - "DiskImageFormat":{ - "shape":"DiskImageFormat", - "documentation":"

The format for the exported image.

", - "locationName":"diskImageFormat" - }, - "ContainerFormat":{ - "shape":"ContainerFormat", - "documentation":"

The container format used to combine disk images with metadata (such as OVF). If absent, only the disk image is exported.

", - "locationName":"containerFormat" - }, - "S3Bucket":{ - "shape":"String", - "documentation":"

The Amazon S3 bucket for the destination image. The destination bucket must exist and grant WRITE and READ_ACL permissions to the AWS account vm-import-export@amazon.com.

", - "locationName":"s3Bucket" - }, - "S3Key":{ - "shape":"String", - "locationName":"s3Key" - } - } - }, - "ExportToS3TaskSpecification":{ - "type":"structure", - "members":{ - "DiskImageFormat":{ - "shape":"DiskImageFormat", - "locationName":"diskImageFormat" - }, - "ContainerFormat":{ - "shape":"ContainerFormat", - "locationName":"containerFormat" - }, - "S3Bucket":{ - "shape":"String", - "locationName":"s3Bucket" - }, - "S3Prefix":{ - "shape":"String", - "documentation":"

The image is written to a single object in the Amazon S3 bucket at the S3 key s3prefix + exportTaskId + '.' + diskImageFormat.

", - "locationName":"s3Prefix" - } - } - }, - "Filter":{ - "type":"structure", - "members":{ - "Name":{ - "shape":"String", - "documentation":"

The name of the filter.

" - }, - "Values":{ - "shape":"ValueStringList", - "documentation":"

One or more filter values.

", - "locationName":"Value" - } - } - }, - "FilterList":{ - "type":"list", - "member":{ - "shape":"Filter", - "locationName":"Filter" - } - }, - "Float":{"type":"float"}, - "GatewayType":{ - "type":"string", - "enum":["ipsec.1"] - }, - "GetConsoleOutputRequest":{ - "type":"structure", - "required":["InstanceId"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "InstanceId":{ - "shape":"String", - "documentation":"

The ID of the instance.

" - } - } - }, - "GetConsoleOutputResult":{ - "type":"structure", - "members":{ - "InstanceId":{ - "shape":"String", - "documentation":"

The ID of the instance.

", - "locationName":"instanceId" - }, - "Timestamp":{ - "shape":"DateTime", - "documentation":"

The time the output was last updated.

", - "locationName":"timestamp" - }, - "Output":{ - "shape":"String", - "documentation":"

The console output, Base64 encoded.

", - "locationName":"output" - } - } - }, - "GetPasswordDataRequest":{ - "type":"structure", - "required":["InstanceId"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "InstanceId":{ - "shape":"String", - "documentation":"

The ID of the Windows instance.

" - } - } - }, - "GetPasswordDataResult":{ - "type":"structure", - "members":{ - "InstanceId":{ - "shape":"String", - "documentation":"

The ID of the Windows instance.

", - "locationName":"instanceId" - }, - "Timestamp":{ - "shape":"DateTime", - "documentation":"

The time the data was last updated.

", - "locationName":"timestamp" - }, - "PasswordData":{ - "shape":"String", - "documentation":"

The password of the instance.

", - "locationName":"passwordData" - } - } - }, - "GroupIdStringList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"groupId" - } - }, - "GroupIdentifier":{ - "type":"structure", - "members":{ - "GroupName":{ - "shape":"String", - "documentation":"

The name of the security group.

", - "locationName":"groupName" - }, - "GroupId":{ - "shape":"String", - "documentation":"

The ID of the security group.

", - "locationName":"groupId" - } - }, - "documentation":"

Describes a security group.

" - }, - "GroupIdentifierList":{ - "type":"list", - "member":{ - "shape":"GroupIdentifier", - "locationName":"item" - } - }, - "GroupNameStringList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"GroupName" - } - }, - "HypervisorType":{ - "type":"string", - "enum":[ - "ovm", - "xen" - ] - }, - "IamInstanceProfile":{ - "type":"structure", - "members":{ - "Arn":{ - "shape":"String", - "documentation":"

The Amazon Resource Name (ARN) of the instance profile.

", - "locationName":"arn" - }, - "Id":{ - "shape":"String", - "documentation":"

The ID of the instance profile.

", - "locationName":"id" - } - }, - "documentation":"

Describes an IAM instance profile.

" - }, - "IamInstanceProfileSpecification":{ - "type":"structure", - "members":{ - "Arn":{ - "shape":"String", - "documentation":"

The Amazon Resource Name (ARN) of the instance profile.

", - "locationName":"arn" - }, - "Name":{ - "shape":"String", - "documentation":"

The name of the instance profile.

", - "locationName":"name" - } - }, - "documentation":"

Describes an IAM instance profile.

" - }, - "IcmpTypeCode":{ - "type":"structure", - "members":{ - "Type":{ - "shape":"Integer", - "documentation":"

The ICMP code. A value of -1 means all codes for the specified ICMP type.

", - "locationName":"type" - }, - "Code":{ - "shape":"Integer", - "documentation":"

The ICMP type. A value of -1 means all types.

", - "locationName":"code" - } - }, - "documentation":"

Describes the ICMP type and code.

" - }, - "Image":{ - "type":"structure", - "members":{ - "ImageId":{ - "shape":"String", - "documentation":"

The ID of the AMI.

", - "locationName":"imageId" - }, - "ImageLocation":{ - "shape":"String", - "documentation":"

The location of the AMI.

", - "locationName":"imageLocation" - }, - "State":{ - "shape":"ImageState", - "documentation":"

The current state of the AMI. If the state is available, the image is successfully registered and can be used to launch an instance.

", - "locationName":"imageState" - }, - "OwnerId":{ - "shape":"String", - "documentation":"

The AWS account ID of the image owner.

", - "locationName":"imageOwnerId" - }, - "Public":{ - "shape":"Boolean", - "documentation":"

Indicates whether the image has public launch permissions. The value is true if this image has public launch permissions or false if it has only implicit and explicit launch permissions.

", - "locationName":"isPublic" - }, - "ProductCodes":{ - "shape":"ProductCodeList", - "documentation":"

Any product codes associated with the AMI.

", - "locationName":"productCodes" - }, - "Architecture":{ - "shape":"ArchitectureValues", - "documentation":"

The architecture of the image.

", - "locationName":"architecture" - }, - "ImageType":{ - "shape":"ImageTypeValues", - "documentation":"

The type of image.

", - "locationName":"imageType" - }, - "KernelId":{ - "shape":"String", - "documentation":"

The kernel associated with the image, if any. Only applicable for machine images.

", - "locationName":"kernelId" - }, - "RamdiskId":{ - "shape":"String", - "documentation":"

The RAM disk associated with the image, if any. Only applicable for machine images.

", - "locationName":"ramdiskId" - }, - "Platform":{ - "shape":"PlatformValues", - "documentation":"

The value is Windows for Windows AMIs; otherwise blank.

", - "locationName":"platform" - }, - "SriovNetSupport":{ - "shape":"String", - "documentation":"

Specifies whether enhanced networking is enabled.

", - "locationName":"sriovNetSupport" - }, - "StateReason":{ - "shape":"StateReason", - "documentation":"

The reason for the state change.

", - "locationName":"stateReason" - }, - "ImageOwnerAlias":{ - "shape":"String", - "documentation":"

The AWS account alias (for example, amazon, self) or the AWS account ID of the AMI owner.

", - "locationName":"imageOwnerAlias" - }, - "Name":{ - "shape":"String", - "documentation":"

The name of the AMI that was provided during image creation.

", - "locationName":"name" - }, - "Description":{ - "shape":"String", - "documentation":"

The description of the AMI that was provided during image creation.

", - "locationName":"description" - }, - "RootDeviceType":{ - "shape":"DeviceType", - "documentation":"

The type of root device used by the AMI. The AMI can use an Amazon EBS volume or an instance store volume.

", - "locationName":"rootDeviceType" - }, - "RootDeviceName":{ - "shape":"String", - "documentation":"

The device name of the root device (for example, /dev/sda1 or xvda).

", - "locationName":"rootDeviceName" - }, - "BlockDeviceMappings":{ - "shape":"BlockDeviceMappingList", - "documentation":"

Any block device mapping entries.

", - "locationName":"blockDeviceMapping" - }, - "VirtualizationType":{ - "shape":"VirtualizationType", - "documentation":"

The type of virtualization of the AMI.

", - "locationName":"virtualizationType" - }, - "Tags":{ - "shape":"TagList", - "documentation":"

Any tags assigned to the image.

", - "locationName":"tagSet" - }, - "Hypervisor":{ - "shape":"HypervisorType", - "documentation":"

The hypervisor type of the image.

", - "locationName":"hypervisor" - } - }, - "documentation":"

Describes an image.

" - }, - "ImageAttribute":{ - "type":"structure", - "members":{ - "ImageId":{ - "shape":"String", - "documentation":"

The ID of the AMI.

", - "locationName":"imageId" - }, - "LaunchPermissions":{ - "shape":"LaunchPermissionList", - "documentation":"

One or more launch permissions.

", - "locationName":"launchPermission" - }, - "ProductCodes":{ - "shape":"ProductCodeList", - "documentation":"

One or more product codes.

", - "locationName":"productCodes" - }, - "KernelId":{ - "shape":"AttributeValue", - "documentation":"

The kernel ID.

", - "locationName":"kernel" - }, - "RamdiskId":{ - "shape":"AttributeValue", - "documentation":"

The RAM disk ID.

", - "locationName":"ramdisk" - }, - "Description":{ - "shape":"AttributeValue", - "documentation":"

A description for the AMI.

", - "locationName":"description" - }, - "SriovNetSupport":{ - "shape":"AttributeValue", - "locationName":"sriovNetSupport" - }, - "BlockDeviceMappings":{ - "shape":"BlockDeviceMappingList", - "documentation":"

One or more block device mapping entries.

", - "locationName":"blockDeviceMapping" - } - }, - "documentation":"

Describes an image attribute.

" - }, - "ImageAttributeName":{ - "type":"string", - "enum":[ - "description", - "kernel", - "ramdisk", - "launchPermission", - "productCodes", - "blockDeviceMapping" - ] - }, - "ImageIdStringList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"ImageId" - } - }, - "ImageList":{ - "type":"list", - "member":{ - "shape":"Image", - "locationName":"item" - } - }, - "ImageState":{ - "type":"string", - "enum":[ - "available", - "deregistered" - ] - }, - "ImageTypeValues":{ - "type":"string", - "enum":[ - "machine", - "kernel", - "ramdisk" - ] - }, - "ImportInstanceLaunchSpecification":{ - "type":"structure", - "members":{ - "Architecture":{ - "shape":"ArchitectureValues", - "documentation":"

The architecture of the instance.

", - "locationName":"architecture" - }, - "GroupNames":{ - "shape":"SecurityGroupStringList", - "documentation":"

One or more security group names.

", - "locationName":"GroupName" - }, - "GroupIds":{ - "shape":"SecurityGroupIdStringList", - "locationName":"GroupId" - }, - "AdditionalInfo":{ - "shape":"String", - "locationName":"additionalInfo" - }, - "UserData":{ - "shape":"String", - "documentation":"

User data to be made available to the instance.

", - "locationName":"userData" - }, - "InstanceType":{ - "shape":"InstanceType", - "documentation":"

The instance type. For more information, see Instance Types in the Amazon Elastic Compute Cloud User Guide.

", - "locationName":"instanceType" - }, - "Placement":{ - "shape":"Placement", - "locationName":"placement" - }, - "Monitoring":{ - "shape":"Boolean", - "locationName":"monitoring" - }, - "SubnetId":{ - "shape":"String", - "documentation":"

[EC2-VPC] The ID of the subnet to launch the instance into.

", - "locationName":"subnetId" - }, - "InstanceInitiatedShutdownBehavior":{ - "shape":"ShutdownBehavior", - "documentation":"

Indicates whether an instance stops or terminates when you initiate shutdown from the instance (using the operating system command for system shutdown).

", - "locationName":"instanceInitiatedShutdownBehavior" - }, - "PrivateIpAddress":{ - "shape":"String", - "documentation":"

[EC2-VPC] Optionally, you can use this parameter to assign the instance a specific available IP address from the IP address range of the subnet.

", - "locationName":"privateIpAddress" - } - } - }, - "ImportInstanceRequest":{ - "type":"structure", - "required":["Platform"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "Description":{ - "shape":"String", - "documentation":"

A description for the instance being imported.

", - "locationName":"description" - }, - "LaunchSpecification":{ - "shape":"ImportInstanceLaunchSpecification", - "documentation":"

", - "locationName":"launchSpecification" - }, - "DiskImages":{ - "shape":"DiskImageList", - "locationName":"diskImage" - }, - "Platform":{ - "shape":"PlatformValues", - "documentation":"

The instance operating system.

", - "locationName":"platform" - } - } - }, - "ImportInstanceResult":{ - "type":"structure", - "members":{ - "ConversionTask":{ - "shape":"ConversionTask", - "locationName":"conversionTask" - } - } - }, - "ImportInstanceTaskDetails":{ - "type":"structure", - "required":["Volumes"], - "members":{ - "Volumes":{ - "shape":"ImportInstanceVolumeDetailSet", - "locationName":"volumes" - }, - "InstanceId":{ - "shape":"String", - "locationName":"instanceId" - }, - "Platform":{ - "shape":"PlatformValues", - "documentation":"

The instance operating system.

", - "locationName":"platform" - }, - "Description":{ - "shape":"String", - "locationName":"description" - } - } - }, - "ImportInstanceVolumeDetailItem":{ - "type":"structure", - "required":[ - "BytesConverted", - "AvailabilityZone", - "Image", - "Volume", - "Status" - ], - "members":{ - "BytesConverted":{ - "shape":"Long", - "documentation":"

The number of bytes converted so far.

", - "locationName":"bytesConverted" - }, - "AvailabilityZone":{ - "shape":"String", - "documentation":"

The Availability Zone where the resulting instance will reside.

", - "locationName":"availabilityZone" - }, - "Image":{ - "shape":"DiskImageDescription", - "documentation":"

The image.

", - "locationName":"image" - }, - "Volume":{ - "shape":"DiskImageVolumeDescription", - "documentation":"

The volume.

", - "locationName":"volume" - }, - "Status":{ - "shape":"String", - "documentation":"

The status of the import of this particular disk image.

", - "locationName":"status" - }, - "StatusMessage":{ - "shape":"String", - "documentation":"

The status information or errors related to the disk image.

", - "locationName":"statusMessage" - }, - "Description":{ - "shape":"String", - "locationName":"description" - } - }, - "documentation":"

Describes an import volume task.

" - }, - "ImportInstanceVolumeDetailSet":{ - "type":"list", - "member":{ - "shape":"ImportInstanceVolumeDetailItem", - "locationName":"item" - } - }, - "ImportKeyPairRequest":{ - "type":"structure", - "required":[ - "KeyName", - "PublicKeyMaterial" - ], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "KeyName":{ - "shape":"String", - "documentation":"

A unique name for the key pair.

", - "locationName":"keyName" - }, - "PublicKeyMaterial":{ - "shape":"Blob", - "documentation":"

The public key. You must base64 encode the public key material before sending it to AWS.

", - "locationName":"publicKeyMaterial" - } - } - }, - "ImportKeyPairResult":{ - "type":"structure", - "members":{ - "KeyName":{ - "shape":"String", - "documentation":"

The key pair name you provided.

", - "locationName":"keyName" - }, - "KeyFingerprint":{ - "shape":"String", - "documentation":"

The MD5 public key fingerprint as specified in section 4 of RFC 4716.

", - "locationName":"keyFingerprint" - } - } - }, - "ImportVolumeRequest":{ - "type":"structure", - "required":[ - "AvailabilityZone", - "Image", - "Volume" - ], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "AvailabilityZone":{ - "shape":"String", - "documentation":"

The Availability Zone for the resulting Amazon EBS volume.

", - "locationName":"availabilityZone" - }, - "Image":{ - "shape":"DiskImageDetail", - "locationName":"image" - }, - "Description":{ - "shape":"String", - "documentation":"

An optional description for the volume being imported.

", - "locationName":"description" - }, - "Volume":{ - "shape":"VolumeDetail", - "locationName":"volume" - } - } - }, - "ImportVolumeResult":{ - "type":"structure", - "members":{ - "ConversionTask":{ - "shape":"ConversionTask", - "locationName":"conversionTask" - } - } - }, - "ImportVolumeTaskDetails":{ - "type":"structure", - "required":[ - "BytesConverted", - "AvailabilityZone", - "Image", - "Volume" - ], - "members":{ - "BytesConverted":{ - "shape":"Long", - "documentation":"

The number of bytes converted so far.

", - "locationName":"bytesConverted" - }, - "AvailabilityZone":{ - "shape":"String", - "documentation":"

The Availability Zone where the resulting volume will reside.

", - "locationName":"availabilityZone" - }, - "Description":{ - "shape":"String", - "documentation":"

The description you provided when starting the import volume task.

", - "locationName":"description" - }, - "Image":{ - "shape":"DiskImageDescription", - "documentation":"

The image.

", - "locationName":"image" - }, - "Volume":{ - "shape":"DiskImageVolumeDescription", - "documentation":"

The volume.

", - "locationName":"volume" - } - }, - "documentation":"

Describes an import volume task.

" - }, - "Instance":{ - "type":"structure", - "members":{ - "InstanceId":{ - "shape":"String", - "documentation":"

The ID of the instance.

", - "locationName":"instanceId" - }, - "ImageId":{ - "shape":"String", - "documentation":"

The ID of the AMI used to launch the instance.

", - "locationName":"imageId" - }, - "State":{ - "shape":"InstanceState", - "documentation":"

The current state of the instance.

", - "locationName":"instanceState" - }, - "PrivateDnsName":{ - "shape":"String", - "documentation":"

The private DNS name assigned to the instance. This DNS name can only be used inside the Amazon EC2 network. This name is not available until the instance enters the running state.

", - "locationName":"privateDnsName" - }, - "PublicDnsName":{ - "shape":"String", - "documentation":"

The public DNS name assigned to the instance. This name is not available until the instance enters the running state.

", - "locationName":"dnsName" - }, - "StateTransitionReason":{ - "shape":"String", - "documentation":"

The reason for the most recent state transition. This might be an empty string.

", - "locationName":"reason" - }, - "KeyName":{ - "shape":"String", - "documentation":"

The name of the key pair, if this instance was launched with an associated key pair.

", - "locationName":"keyName" - }, - "AmiLaunchIndex":{ - "shape":"Integer", - "documentation":"

The AMI launch index, which can be used to find this instance in the launch group.

", - "locationName":"amiLaunchIndex" - }, - "ProductCodes":{ - "shape":"ProductCodeList", - "documentation":"

The product codes attached to this instance.

", - "locationName":"productCodes" - }, - "InstanceType":{ - "shape":"InstanceType", - "documentation":"

The instance type.

", - "locationName":"instanceType" - }, - "LaunchTime":{ - "shape":"DateTime", - "documentation":"

The time the instance was launched.

", - "locationName":"launchTime" - }, - "Placement":{ - "shape":"Placement", - "documentation":"

The location where the instance launched.

", - "locationName":"placement" - }, - "KernelId":{ - "shape":"String", - "documentation":"

The kernel associated with this instance.

", - "locationName":"kernelId" - }, - "RamdiskId":{ - "shape":"String", - "documentation":"

The RAM disk associated with this instance.

", - "locationName":"ramdiskId" - }, - "Platform":{ - "shape":"PlatformValues", - "documentation":"

The value is Windows for Windows instances; otherwise blank.

", - "locationName":"platform" - }, - "Monitoring":{ - "shape":"Monitoring", - "documentation":"

The monitoring information for the instance.

", - "locationName":"monitoring" - }, - "SubnetId":{ - "shape":"String", - "documentation":"

The ID of the subnet in which the instance is running.

", - "locationName":"subnetId" - }, - "VpcId":{ - "shape":"String", - "documentation":"

The ID of the VPC in which the instance is running.

", - "locationName":"vpcId" - }, - "PrivateIpAddress":{ - "shape":"String", - "documentation":"

The private IP address assigned to the instance.

", - "locationName":"privateIpAddress" - }, - "PublicIpAddress":{ - "shape":"String", - "documentation":"

The public IP address assigned to the instance.

", - "locationName":"ipAddress" - }, - "StateReason":{ - "shape":"StateReason", - "documentation":"

The reason for the most recent state transition.

", - "locationName":"stateReason" - }, - "Architecture":{ - "shape":"ArchitectureValues", - "documentation":"

The architecture of the image.

", - "locationName":"architecture" - }, - "RootDeviceType":{ - "shape":"DeviceType", - "documentation":"

The root device type used by the AMI. The AMI can use an Amazon EBS volume or an instance store volume.

", - "locationName":"rootDeviceType" - }, - "RootDeviceName":{ - "shape":"String", - "documentation":"

The root device name (for example, /dev/sda1).

", - "locationName":"rootDeviceName" - }, - "BlockDeviceMappings":{ - "shape":"InstanceBlockDeviceMappingList", - "documentation":"

Any block device mapping entries for the instance.

", - "locationName":"blockDeviceMapping" - }, - "VirtualizationType":{ - "shape":"VirtualizationType", - "documentation":"

The virtualization type of the instance.

", - "locationName":"virtualizationType" - }, - "InstanceLifecycle":{ - "shape":"InstanceLifecycleType", - "documentation":"

Indicates whether this is a Spot Instance.

", - "locationName":"instanceLifecycle" - }, - "SpotInstanceRequestId":{ - "shape":"String", - "documentation":"

The ID of the Spot Instance request.

", - "locationName":"spotInstanceRequestId" - }, - "ClientToken":{ - "shape":"String", - "documentation":"

The idempotency token you provided when you launched the instance.

", - "locationName":"clientToken" - }, - "Tags":{ - "shape":"TagList", - "documentation":"

Any tags assigned to the instance.

", - "locationName":"tagSet" - }, - "SecurityGroups":{ - "shape":"GroupIdentifierList", - "documentation":"

One or more security groups for the instance.

", - "locationName":"groupSet" - }, - "SourceDestCheck":{ - "shape":"Boolean", - "documentation":"

Specifies whether to enable an instance launched in a VPC to perform NAT. This controls whether source/destination checking is enabled on the instance. A value of true means checking is enabled, and false means checking is disabled. The value must be false for the instance to perform NAT. For more information, see NAT Instances in the Amazon Virtual Private Cloud User Guide.

", - "locationName":"sourceDestCheck" - }, - "Hypervisor":{ - "shape":"HypervisorType", - "documentation":"

The hypervisor type of the instance.

", - "locationName":"hypervisor" - }, - "NetworkInterfaces":{ - "shape":"InstanceNetworkInterfaceList", - "documentation":"

[EC2-VPC] One or more network interfaces for the instance.

", - "locationName":"networkInterfaceSet" - }, - "IamInstanceProfile":{ - "shape":"IamInstanceProfile", - "documentation":"

The IAM instance profile associated with the instance.

", - "locationName":"iamInstanceProfile" - }, - "EbsOptimized":{ - "shape":"Boolean", - "documentation":"

Indicates whether the instance is optimized for EBS I/O. This optimization provides dedicated throughput to Amazon EBS and an optimized configuration stack to provide optimal I/O performance. This optimization isn't available with all instance types. Additional usage charges apply when using an EBS Optimized instance.

", - "locationName":"ebsOptimized" - }, - "SriovNetSupport":{ - "shape":"String", - "documentation":"

Specifies whether enhanced networking is enabled.

", - "locationName":"sriovNetSupport" - } - }, - "documentation":"

Describes an instance.

" - }, - "InstanceAttribute":{ - "type":"structure", - "members":{ - "InstanceId":{ - "shape":"String", - "documentation":"

The ID of the instance.

", - "locationName":"instanceId" - }, - "InstanceType":{ - "shape":"AttributeValue", - "documentation":"

The instance type.

", - "locationName":"instanceType" - }, - "KernelId":{ - "shape":"AttributeValue", - "documentation":"

The kernel ID.

", - "locationName":"kernel" - }, - "RamdiskId":{ - "shape":"AttributeValue", - "documentation":"

The RAM disk ID.

", - "locationName":"ramdisk" - }, - "UserData":{ - "shape":"AttributeValue", - "documentation":"

The Base64-encoded MIME user data.

", - "locationName":"userData" - }, - "DisableApiTermination":{ - "shape":"AttributeBooleanValue", - "documentation":"

If the value is true, you can't terminate the instance through the Amazon EC2 console, CLI, or API; otherwise, you can.

", - "locationName":"disableApiTermination" - }, - "InstanceInitiatedShutdownBehavior":{ - "shape":"AttributeValue", - "documentation":"

Indicates whether an instance stops or terminates when you initiate shutdown from the instance (using the operating system command for system shutdown).

", - "locationName":"instanceInitiatedShutdownBehavior" - }, - "RootDeviceName":{ - "shape":"AttributeValue", - "documentation":"

The name of the root device (for example, /dev/sda1).

", - "locationName":"rootDeviceName" - }, - "BlockDeviceMappings":{ - "shape":"InstanceBlockDeviceMappingList", - "documentation":"

The block device mapping of the instance.

", - "locationName":"blockDeviceMapping" - }, - "ProductCodes":{ - "shape":"ProductCodeList", - "documentation":"

A list of product codes.

", - "locationName":"productCodes" - }, - "EbsOptimized":{ - "shape":"AttributeBooleanValue", - "documentation":"

Indicates whether the instance is optimized for EBS I/O.

", - "locationName":"ebsOptimized" - }, - "SriovNetSupport":{ - "shape":"AttributeValue", - "locationName":"sriovNetSupport" - }, - "SourceDestCheck":{ - "shape":"AttributeBooleanValue", - "documentation":"

Indicates whether source/destination checking is enabled. A value of true means checking is enabled, and false means checking is disabled. This value must be false for a NAT instance to perform NAT.

", - "locationName":"sourceDestCheck" - }, - "Groups":{ - "shape":"GroupIdentifierList", - "documentation":"

The security groups associated with the instance.

", - "locationName":"groupSet" - } - }, - "documentation":"

Describes an instance attribute.

" - }, - "InstanceAttributeName":{ - "type":"string", - "enum":[ - "instanceType", - "kernel", - "ramdisk", - "userData", - "disableApiTermination", - "instanceInitiatedShutdownBehavior", - "rootDeviceName", - "blockDeviceMapping", - "productCodes", - "sourceDestCheck", - "groupSet", - "ebsOptimized", - "sriovNetSupport" - ] - }, - "InstanceBlockDeviceMapping":{ - "type":"structure", - "members":{ - "DeviceName":{ - "shape":"String", - "documentation":"

The device name exposed to the instance (for example, /dev/sdh).

", - "locationName":"deviceName" - }, - "Ebs":{ - "shape":"EbsInstanceBlockDevice", - "documentation":"

Parameters used to automatically set up Amazon EBS volumes when the instance is launched.

", - "locationName":"ebs" - } - }, - "documentation":"

Describes a block device mapping.

" - }, - "InstanceBlockDeviceMappingList":{ - "type":"list", - "member":{ - "shape":"InstanceBlockDeviceMapping", - "locationName":"item" - } - }, - "InstanceBlockDeviceMappingSpecification":{ - "type":"structure", - "members":{ - "DeviceName":{ - "shape":"String", - "documentation":"

The device name exposed to the instance (for example, /dev/sdh).

", - "locationName":"deviceName" - }, - "Ebs":{ - "shape":"EbsInstanceBlockDeviceSpecification", - "documentation":"

Parameters used to automatically set up Amazon EBS volumes when the instance is launched.

", - "locationName":"ebs" - }, - "VirtualName":{ - "shape":"String", - "documentation":"

The virtual device name.

", - "locationName":"virtualName" - }, - "NoDevice":{ - "shape":"String", - "documentation":"

suppress the specified device included in the block device mapping.

", - "locationName":"noDevice" - } - }, - "documentation":"

Describes a block device mapping entry.

" - }, - "InstanceBlockDeviceMappingSpecificationList":{ - "type":"list", - "member":{ - "shape":"InstanceBlockDeviceMappingSpecification", - "locationName":"item" - } - }, - "InstanceCount":{ - "type":"structure", - "members":{ - "State":{ - "shape":"ListingState", - "documentation":"

The states of the listed Reserved Instances.

", - "locationName":"state" - }, - "InstanceCount":{ - "shape":"Integer", - "documentation":"

he number of listed Reserved Instances in the state specified by the state.

", - "locationName":"instanceCount" - } - }, - "documentation":"

Describes a Reserved Instance listing state.

" - }, - "InstanceCountList":{ - "type":"list", - "member":{ - "shape":"InstanceCount", - "locationName":"item" - } - }, - "InstanceExportDetails":{ - "type":"structure", - "members":{ - "InstanceId":{ - "shape":"String", - "documentation":"

The ID of the resource being exported.

", - "locationName":"instanceId" - }, - "TargetEnvironment":{ - "shape":"ExportEnvironment", - "documentation":"

The target virtualization environment.

", - "locationName":"targetEnvironment" - } - }, - "documentation":"

Describes an instance export task.

" - }, - "InstanceIdStringList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"InstanceId" - } - }, - "InstanceLifecycleType":{ - "type":"string", - "enum":["spot"] - }, - "InstanceList":{ - "type":"list", - "member":{ - "shape":"Instance", - "locationName":"item" - } - }, - "InstanceMonitoring":{ - "type":"structure", - "members":{ - "InstanceId":{ - "shape":"String", - "documentation":"

The ID of the instance.

", - "locationName":"instanceId" - }, - "Monitoring":{ - "shape":"Monitoring", - "documentation":"

The monitoring information.

", - "locationName":"monitoring" - } - }, - "documentation":"

Describes the monitoring information of the instance.

" - }, - "InstanceMonitoringList":{ - "type":"list", - "member":{ - "shape":"InstanceMonitoring", - "locationName":"item" - } - }, - "InstanceNetworkInterface":{ - "type":"structure", - "members":{ - "NetworkInterfaceId":{ - "shape":"String", - "documentation":"

The ID of the network interface.

", - "locationName":"networkInterfaceId" - }, - "SubnetId":{ - "shape":"String", - "documentation":"

The ID of the subnet.

", - "locationName":"subnetId" - }, - "VpcId":{ - "shape":"String", - "documentation":"

The ID of the VPC.

", - "locationName":"vpcId" - }, - "Description":{ - "shape":"String", - "documentation":"

The description.

", - "locationName":"description" - }, - "OwnerId":{ - "shape":"String", - "documentation":"

The ID of the AWS account that created the network interface.

", - "locationName":"ownerId" - }, - "Status":{ - "shape":"NetworkInterfaceStatus", - "documentation":"

The status of the network interface.

", - "locationName":"status" - }, - "MacAddress":{ - "shape":"String", - "documentation":"

The MAC address.

", - "locationName":"macAddress" - }, - "PrivateIpAddress":{ - "shape":"String", - "documentation":"

The IP address of the network interface within the subnet.

", - "locationName":"privateIpAddress" - }, - "PrivateDnsName":{ - "shape":"String", - "documentation":"

The private DNS name.

", - "locationName":"privateDnsName" - }, - "SourceDestCheck":{ - "shape":"Boolean", - "documentation":"

Indicates whether to validate network traffic to or from this network interface.

", - "locationName":"sourceDestCheck" - }, - "Groups":{ - "shape":"GroupIdentifierList", - "documentation":"

One or more security groups.

", - "locationName":"groupSet" - }, - "Attachment":{ - "shape":"InstanceNetworkInterfaceAttachment", - "documentation":"

The network interface attachment.

", - "locationName":"attachment" - }, - "Association":{ - "shape":"InstanceNetworkInterfaceAssociation", - "documentation":"

The association information for an Elastic IP associated with the network interface.

", - "locationName":"association" - }, - "PrivateIpAddresses":{ - "shape":"InstancePrivateIpAddressList", - "documentation":"

The private IP addresses associated with the network interface.

", - "locationName":"privateIpAddressesSet" - } - }, - "documentation":"

Describes a network interface.

" - }, - "InstanceNetworkInterfaceAssociation":{ - "type":"structure", - "members":{ - "PublicIp":{ - "shape":"String", - "documentation":"

The public IP address or Elastic IP address bound to the network interface.

", - "locationName":"publicIp" - }, - "PublicDnsName":{ - "shape":"String", - "documentation":"

The public DNS name.

", - "locationName":"publicDnsName" - }, - "IpOwnerId":{ - "shape":"String", - "documentation":"

The ID of the owner of the Elastic IP address.

", - "locationName":"ipOwnerId" - } - }, - "documentation":"

Describes association information for an Elastic IP address.

" - }, - "InstanceNetworkInterfaceAttachment":{ - "type":"structure", - "members":{ - "AttachmentId":{ - "shape":"String", - "documentation":"

The ID of the network interface attachment.

", - "locationName":"attachmentId" - }, - "DeviceIndex":{ - "shape":"Integer", - "documentation":"

The index of the device on the instance for the network interface attachment.

", - "locationName":"deviceIndex" - }, - "Status":{ - "shape":"AttachmentStatus", - "documentation":"

The attachment state.

", - "locationName":"status" - }, - "AttachTime":{ - "shape":"DateTime", - "documentation":"

The time stamp when the attachment initiated.

", - "locationName":"attachTime" - }, - "DeleteOnTermination":{ - "shape":"Boolean", - "documentation":"

Indicates whether the network interface is deleted when the instance is terminated.

", - "locationName":"deleteOnTermination" - } - }, - "documentation":"

Describes a network interface attachment.

" - }, - "InstanceNetworkInterfaceList":{ - "type":"list", - "member":{ - "shape":"InstanceNetworkInterface", - "locationName":"item" - } - }, - "InstanceNetworkInterfaceSpecification":{ - "type":"structure", - "members":{ - "NetworkInterfaceId":{ - "shape":"String", - "documentation":"

The ID of the network interface.

", - "locationName":"networkInterfaceId" - }, - "DeviceIndex":{ - "shape":"Integer", - "documentation":"

The index of the device on the instance for the network interface attachment. If you are specifying a network interface in a RunInstances request, you must provide the device index.

", - "locationName":"deviceIndex" - }, - "SubnetId":{ - "shape":"String", - "documentation":"

The ID of the subnet associated with the network string. Applies only if creating a network interface when launching an instance.

", - "locationName":"subnetId" - }, - "Description":{ - "shape":"String", - "documentation":"

The description of the network interface. Applies only if creating a network interface when launching an instance.

", - "locationName":"description" - }, - "PrivateIpAddress":{ - "shape":"String", - "documentation":"

The private IP address of the network interface. Applies only if creating a network interface when launching an instance.

", - "locationName":"privateIpAddress" - }, - "Groups":{ - "shape":"SecurityGroupIdStringList", - "documentation":"

The IDs of the security groups for the network interface. Applies only if creating a network interface when launching an instance.

", - "locationName":"SecurityGroupId" - }, - "DeleteOnTermination":{ - "shape":"Boolean", - "documentation":"

If set to true, the interface is deleted when the instance is terminated. You can specify true only if creating a new network interface when launching an instance.

", - "locationName":"deleteOnTermination" - }, - "PrivateIpAddresses":{ - "shape":"PrivateIpAddressSpecificationList", - "documentation":"

One or more private IP addresses to assign to the network interface. Only one private IP address can be designated as primary.

", - "locationName":"privateIpAddressesSet", - "queryName":"PrivateIpAddresses" - }, - "SecondaryPrivateIpAddressCount":{ - "shape":"Integer", - "documentation":"

The number of secondary private IP addresses. You can't specify this option and specify more than one private IP address using the private IP addresses option.

", - "locationName":"secondaryPrivateIpAddressCount" - }, - "AssociatePublicIpAddress":{ - "shape":"Boolean", - "documentation":"

Indicates whether to assign a public IP address to an instance you launch in a VPC. The public IP address can only be assigned to a network interface for eth0, and can only be assigned to a new network interface, not an existing one. You cannot specify more than one network interface in the request. If luanching into a default subnet, the default value is true.

", - "locationName":"associatePublicIpAddress" - } - }, - "documentation":"

Describes a network interface.

" - }, - "InstanceNetworkInterfaceSpecificationList":{ - "type":"list", - "member":{ - "shape":"InstanceNetworkInterfaceSpecification", - "locationName":"item" - } - }, - "InstancePrivateIpAddress":{ - "type":"structure", - "members":{ - "PrivateIpAddress":{ - "shape":"String", - "documentation":"

The private IP address of the network interface.

", - "locationName":"privateIpAddress" - }, - "PrivateDnsName":{ - "shape":"String", - "documentation":"

The private DNS name.

", - "locationName":"privateDnsName" - }, - "Primary":{ - "shape":"Boolean", - "documentation":"

Indicates whether this IP address is the primary private IP address of the network interface.

", - "locationName":"primary" - }, - "Association":{ - "shape":"InstanceNetworkInterfaceAssociation", - "documentation":"

The association information for an Elastic IP address for the network interface.

", - "locationName":"association" - } - }, - "documentation":"

Describes a private IP address.

" - }, - "InstancePrivateIpAddressList":{ - "type":"list", - "member":{ - "shape":"InstancePrivateIpAddress", - "locationName":"item" - } - }, - "InstanceState":{ - "type":"structure", - "members":{ - "Code":{ - "shape":"Integer", - "documentation":"

The low byte represents the state. The high byte is an opaque internal value and should be ignored.

", - "locationName":"code" - }, - "Name":{ - "shape":"InstanceStateName", - "documentation":"

The current state of the instance.

", - "locationName":"name" - } - }, - "documentation":"

Describes the current state of the instance.

" - }, - "InstanceStateChange":{ - "type":"structure", - "members":{ - "InstanceId":{ - "shape":"String", - "documentation":"

The ID of the instance.

", - "locationName":"instanceId" - }, - "CurrentState":{ - "shape":"InstanceState", - "documentation":"

The current state of the instance.

", - "locationName":"currentState" - }, - "PreviousState":{ - "shape":"InstanceState", - "documentation":"

The previous state of the instance.

", - "locationName":"previousState" - } - }, - "documentation":"

Describes an instance state change.

" - }, - "InstanceStateChangeList":{ - "type":"list", - "member":{ - "shape":"InstanceStateChange", - "locationName":"item" - } - }, - "InstanceStateName":{ - "type":"string", - "enum":[ - "pending", - "running", - "shutting-down", - "terminated", - "stopping", - "stopped" - ] - }, - "InstanceStatus":{ - "type":"structure", - "members":{ - "InstanceId":{ - "shape":"String", - "documentation":"

The ID of the instance.

", - "locationName":"instanceId" - }, - "AvailabilityZone":{ - "shape":"String", - "documentation":"

The Availability Zone of the instance.

", - "locationName":"availabilityZone" - }, - "Events":{ - "shape":"InstanceStatusEventList", - "documentation":"

Extra information regarding events associated with the instance.

", - "locationName":"eventsSet" - }, - "InstanceState":{ - "shape":"InstanceState", - "documentation":"

The intended state of the instance. DescribeInstanceStatus requires that an instance be in the running state.

", - "locationName":"instanceState" - }, - "SystemStatus":{ - "shape":"InstanceStatusSummary", - "documentation":"

Reports impaired functionality that stems from issues related to the systems that support an instance, such as hardware failures and network connectivity problems.

", - "locationName":"systemStatus" - }, - "InstanceStatus":{ - "shape":"InstanceStatusSummary", - "documentation":"

Reports impaired functionality that stems from issues internal to the instance, such as impaired reachability.

", - "locationName":"instanceStatus" - } - }, - "documentation":"

Describes the status of an instance.

" - }, - "InstanceStatusDetails":{ - "type":"structure", - "members":{ - "Name":{ - "shape":"StatusName", - "documentation":"

The type of instance status.

", - "locationName":"name" - }, - "Status":{ - "shape":"StatusType", - "documentation":"

The status.

", - "locationName":"status" - }, - "ImpairedSince":{ - "shape":"DateTime", - "documentation":"

The time when a status check failed. For an instance that was launched and impaired, this is the time when the instance was launched.

", - "locationName":"impairedSince" - } - }, - "documentation":"

Describes the instance status.

" - }, - "InstanceStatusDetailsList":{ - "type":"list", - "member":{ - "shape":"InstanceStatusDetails", - "locationName":"item" - } - }, - "InstanceStatusEvent":{ - "type":"structure", - "members":{ - "Code":{ - "shape":"EventCode", - "documentation":"

The associated code of the event.

", - "locationName":"code" - }, - "Description":{ - "shape":"String", - "documentation":"

A description of the event.

", - "locationName":"description" - }, - "NotBefore":{ - "shape":"DateTime", - "documentation":"

The earliest scheduled start time for the event.

", - "locationName":"notBefore" - }, - "NotAfter":{ - "shape":"DateTime", - "documentation":"

The latest scheduled end time for the event.

", - "locationName":"notAfter" - } - }, - "documentation":"

Describes an instance event.

" - }, - "InstanceStatusEventList":{ - "type":"list", - "member":{ - "shape":"InstanceStatusEvent", - "locationName":"item" - } - }, - "InstanceStatusList":{ - "type":"list", - "member":{ - "shape":"InstanceStatus", - "locationName":"item" - } - }, - "InstanceStatusSummary":{ - "type":"structure", - "members":{ - "Status":{ - "shape":"SummaryStatus", - "documentation":"

The status.

", - "locationName":"status" - }, - "Details":{ - "shape":"InstanceStatusDetailsList", - "documentation":"

The system instance health or application instance health.

", - "locationName":"details" - } - }, - "documentation":"

Describes the status of an instance.

" - }, - "InstanceType":{ - "type":"string", - "enum":[ - "t1.micro", - "m1.small", - "m1.medium", - "m1.large", - "m1.xlarge", - "m3.medium", - "m3.large", - "m3.xlarge", - "m3.2xlarge", - "t2.micro", - "t2.small", - "t2.medium", - "m2.xlarge", - "m2.2xlarge", - "m2.4xlarge", - "cr1.8xlarge", - "i2.xlarge", - "i2.2xlarge", - "i2.4xlarge", - "i2.8xlarge", - "hi1.4xlarge", - "hs1.8xlarge", - "c1.medium", - "c1.xlarge", - "c3.large", - "c3.xlarge", - "c3.2xlarge", - "c3.4xlarge", - "c3.8xlarge", - "cc1.4xlarge", - "cc2.8xlarge", - "g2.2xlarge", - "cg1.4xlarge", - "r3.large", - "r3.xlarge", - "r3.2xlarge", - "r3.4xlarge", - "r3.8xlarge" - ] - }, - "InstanceTypeList":{ - "type":"list", - "member":{"shape":"InstanceType"} - }, - "Integer":{"type":"integer"}, - "InternetGateway":{ - "type":"structure", - "members":{ - "InternetGatewayId":{ - "shape":"String", - "documentation":"

The ID of the Internet gateway.

", - "locationName":"internetGatewayId" - }, - "Attachments":{ - "shape":"InternetGatewayAttachmentList", - "documentation":"

Any VPCs attached to the Internet gateway.

", - "locationName":"attachmentSet" - }, - "Tags":{ - "shape":"TagList", - "documentation":"

Any tags assigned to the Internet gateway.

", - "locationName":"tagSet" - } - }, - "documentation":"

Describes an Internet gateway.

" - }, - "InternetGatewayAttachment":{ - "type":"structure", - "members":{ - "VpcId":{ - "shape":"String", - "documentation":"

The ID of the VPC.

", - "locationName":"vpcId" - }, - "State":{ - "shape":"AttachmentStatus", - "documentation":"

The current state of the attachment.

", - "locationName":"state" - } - }, - "documentation":"

Describes the attachment of a VPC to an Internet gateway.

" - }, - "InternetGatewayAttachmentList":{ - "type":"list", - "member":{ - "shape":"InternetGatewayAttachment", - "locationName":"item" - } - }, - "InternetGatewayList":{ - "type":"list", - "member":{ - "shape":"InternetGateway", - "locationName":"item" - } - }, - "IpPermission":{ - "type":"structure", - "members":{ - "IpProtocol":{ - "shape":"String", - "documentation":"

The protocol.

When you call DescribeSecurityGroups, the protocol value returned is the number. Exception: For TCP, UDP, and ICMP, the value returned is the name (for example, tcp, udp, or icmp). For a list of protocol numbers, see Protocol Numbers.

", - "locationName":"ipProtocol" - }, - "FromPort":{ - "shape":"Integer", - "documentation":"

The start of port range for the TCP and UDP protocols, or an ICMP type number. A value of -1 indicates all ICMP types.

", - "locationName":"fromPort" - }, - "ToPort":{ - "shape":"Integer", - "documentation":"

The end of port range for the TCP and UDP protocols, or an ICMP code. A value of -1 indicates all ICMP codes for the specified ICMP type.

", - "locationName":"toPort" - }, - "UserIdGroupPairs":{ - "shape":"UserIdGroupPairList", - "documentation":"

One or more security group and AWS account ID pairs.

", - "locationName":"groups" - }, - "IpRanges":{ - "shape":"IpRangeList", - "documentation":"

One or more IP ranges.

", - "locationName":"ipRanges" - } - }, - "documentation":"

Describes a security group rule.

" - }, - "IpPermissionList":{ - "type":"list", - "member":{ - "shape":"IpPermission", - "locationName":"item" - } - }, - "IpRange":{ - "type":"structure", - "members":{ - "CidrIp":{ - "shape":"String", - "documentation":"

The CIDR range. You can either specify a CIDR range or a source security group, not both.

", - "locationName":"cidrIp" - } - }, - "documentation":"

Describes an IP range.

" - }, - "IpRangeList":{ - "type":"list", - "member":{ - "shape":"IpRange", - "locationName":"item" - } - }, - "KeyNameStringList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"KeyName" - } - }, - "KeyPair":{ - "type":"structure", - "members":{ - "KeyName":{ - "shape":"String", - "documentation":"

The name of the key pair.

", - "locationName":"keyName" - }, - "KeyFingerprint":{ - "shape":"String", - "documentation":"

The SHA-1 digest of the DER encoded private key.

", - "locationName":"keyFingerprint" - }, - "KeyMaterial":{ - "shape":"String", - "documentation":"

An unencrypted PEM encoded RSA private key.

", - "locationName":"keyMaterial" - } - }, - "documentation":"

Describes a key pair.

" - }, - "KeyPairInfo":{ - "type":"structure", - "members":{ - "KeyName":{ - "shape":"String", - "documentation":"

The name of the key pair.

", - "locationName":"keyName" - }, - "KeyFingerprint":{ - "shape":"String", - "documentation":"

If you used CreateKeyPair to create the key pair, this is the SHA-1 digest of the DER encoded private key. If you used ImportKeyPair to provide AWS the public key, this is the MD5 public key fingerprint as specified in section 4 of RFC4716.

", - "locationName":"keyFingerprint" - } - }, - "documentation":"

Describes a key pair.

" - }, - "KeyPairList":{ - "type":"list", - "member":{ - "shape":"KeyPairInfo", - "locationName":"item" - } - }, - "LaunchPermission":{ - "type":"structure", - "members":{ - "UserId":{ - "shape":"String", - "documentation":"

The AWS account ID.

", - "locationName":"userId" - }, - "Group":{ - "shape":"PermissionGroup", - "documentation":"

The name of the group.

", - "locationName":"group" - } - }, - "documentation":"

Describes a launch permission.

" - }, - "LaunchPermissionList":{ - "type":"list", - "member":{ - "shape":"LaunchPermission", - "locationName":"item" - } - }, - "LaunchPermissionModifications":{ - "type":"structure", - "members":{ - "Add":{ - "shape":"LaunchPermissionList", - "documentation":"

The AWS account ID to add to the list of launch permissions for the AMI.

" - }, - "Remove":{ - "shape":"LaunchPermissionList", - "documentation":"

The AWS account ID to remove from the list of launch permissions for the AMI.

" - } - }, - "documentation":"

Describes a launch permission modification.

" - }, - "LaunchSpecification":{ - "type":"structure", - "members":{ - "ImageId":{ - "shape":"String", - "documentation":"

The ID of the AMI.

", - "locationName":"imageId" - }, - "KeyName":{ - "shape":"String", - "documentation":"

The name of the key pair.

", - "locationName":"keyName" - }, - "SecurityGroups":{ - "shape":"GroupIdentifierList", - "documentation":"

One or more security groups. If requesting a Spot Instance in a nondefault VPC, you must specify the security group ID. If requesting a Spot Instance in EC2-Classic or a default VPC, you can specify either the security group name or ID.

", - "locationName":"groupSet" - }, - "UserData":{ - "shape":"String", - "documentation":"

The Base64-encoded MIME user data to make available to the instances.

", - "locationName":"userData" - }, - "AddressingType":{ - "shape":"String", - "documentation":"

Deprecated.

", - "locationName":"addressingType" - }, - "InstanceType":{ - "shape":"InstanceType", - "documentation":"

The instance type.

Default: m1.small

", - "locationName":"instanceType" - }, - "Placement":{ - "shape":"SpotPlacement", - "documentation":"

The placement information for the instance.

", - "locationName":"placement" - }, - "KernelId":{ - "shape":"String", - "documentation":"

The ID of the kernel.

", - "locationName":"kernelId" - }, - "RamdiskId":{ - "shape":"String", - "documentation":"

The ID of the RAM disk.

", - "locationName":"ramdiskId" - }, - "BlockDeviceMappings":{ - "shape":"BlockDeviceMappingList", - "documentation":"

One or more block device mapping entries.

", - "locationName":"blockDeviceMapping" - }, - "SubnetId":{ - "shape":"String", - "documentation":"

The ID of the subnet in which to launch the Spot Instance.

", - "locationName":"subnetId" - }, - "NetworkInterfaces":{ - "shape":"InstanceNetworkInterfaceSpecificationList", - "documentation":"

One or more network interfaces.

", - "locationName":"networkInterfaceSet" - }, - "IamInstanceProfile":{ - "shape":"IamInstanceProfileSpecification", - "documentation":"

The IAM instance profile.

", - "locationName":"iamInstanceProfile" - }, - "EbsOptimized":{ - "shape":"Boolean", - "documentation":"

Indicates whether the instance 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. This optimization isn't available with all instance types. Additional usage charges apply when using an EBS Optimized instance.

Default: false

", - "locationName":"ebsOptimized" - }, - "Monitoring":{ - "shape":"RunInstancesMonitoringEnabled", - "locationName":"monitoring" - } - }, - "documentation":"

Describes the launch specification of a Spot Instance.

" - }, - "ListingState":{ - "type":"string", - "enum":[ - "available", - "sold", - "cancelled", - "pending" - ] - }, - "ListingStatus":{ - "type":"string", - "enum":[ - "active", - "pending", - "cancelled", - "closed" - ] - }, - "Long":{"type":"long"}, - "ModifyImageAttributeRequest":{ - "type":"structure", - "required":["ImageId"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "ImageId":{ - "shape":"String", - "documentation":"

The ID of the AMI.

" - }, - "Attribute":{ - "shape":"String", - "documentation":"

The name of the attribute to modify.

" - }, - "OperationType":{ - "shape":"String", - "documentation":"

The operation type.

" - }, - "UserIds":{ - "shape":"UserIdStringList", - "documentation":"

One or more AWS account IDs. This is only valid when modifying the launchPermission attribute.

", - "locationName":"UserId" - }, - "UserGroups":{ - "shape":"UserGroupStringList", - "documentation":"

One or more user groups. This is only valid when modifying the launchPermission attribute.

", - "locationName":"UserGroup" - }, - "ProductCodes":{ - "shape":"ProductCodeStringList", - "documentation":"

One or more product codes. After you add a product code to an AMI, it can't be removed. This is only valid when modifying the productCodes attribute.

", - "locationName":"ProductCode" - }, - "Value":{ - "shape":"String", - "documentation":"

The value of the attribute being modified. This is only valid when modifying the description attribute.

" - }, - "LaunchPermission":{ - "shape":"LaunchPermissionModifications", - "documentation":"

" - }, - "Description":{ - "shape":"AttributeValue", - "documentation":"

A description for the AMI.

" - } - } - }, - "ModifyInstanceAttributeRequest":{ - "type":"structure", - "required":["InstanceId"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "InstanceId":{ - "shape":"String", - "documentation":"

The ID of the instance.

", - "locationName":"instanceId" - }, - "Attribute":{ - "shape":"InstanceAttributeName", - "documentation":"

The name of the attribute.

", - "locationName":"attribute" - }, - "Value":{ - "shape":"String", - "documentation":"

A new value for the attribute. Use only with the kernel, ramdisk, userData, disableApiTermination, or intanceInitiateShutdownBehavior attribute.

", - "locationName":"value" - }, - "BlockDeviceMappings":{ - "shape":"InstanceBlockDeviceMappingSpecificationList", - "documentation":"

Modifies the DeleteOnTermination attribute for volumes that are currently attached. The volume must be owned by the caller. If no value is specified for DeleteOnTermination, the default is true and the volume is deleted when the instance is terminated.

To add instance store volumes to an Amazon EBS-backed instance, you must add them when you launch the instance. For more information, see Updating the Block Device Mapping when Launching an Instance in the Amazon Elastic Compute Cloud User Guide.

", - "locationName":"blockDeviceMapping" - }, - "SourceDestCheck":{ - "shape":"AttributeBooleanValue", - "documentation":"

Specifies whether source/destination checking is enabled. A value of true means that checking is enabled, and false means checking is disabled. This value must be false for a NAT instance to perform NAT.

" - }, - "DisableApiTermination":{ - "shape":"AttributeBooleanValue", - "documentation":"

If the value is true, you can't terminate the instance using the Amazon EC2 console, CLI, or API; otherwise, you can.

", - "locationName":"disableApiTermination" - }, - "InstanceType":{ - "shape":"AttributeValue", - "documentation":"

Changes the instance type to the specified value. For more information, see Instance Types. If the instance type is not valid, the error returned is InvalidInstanceAttributeValue.

", - "locationName":"instanceType" - }, - "Kernel":{ - "shape":"AttributeValue", - "documentation":"

Changes the instance's kernel to the specified value. We recommend that you use PV-GRUB instead of kernels and RAM disks. For more information, see PV-GRUB.

", - "locationName":"kernel" - }, - "Ramdisk":{ - "shape":"AttributeValue", - "documentation":"

Changes the instance's RAM disk to the specified value. We recommend that you use PV-GRUB instead of kernels and RAM disks. For more information, see PV-GRUB.

", - "locationName":"ramdisk" - }, - "UserData":{ - "shape":"BlobAttributeValue", - "documentation":"

Changes the instance's user data to the specified value.

", - "locationName":"userData" - }, - "InstanceInitiatedShutdownBehavior":{ - "shape":"AttributeValue", - "documentation":"

Specifies whether an instance stops or terminates when you initiate shutdown from the instance (using the operating system command for system shutdown).

", - "locationName":"instanceInitiatedShutdownBehavior" - }, - "Groups":{ - "shape":"GroupIdStringList", - "documentation":"

[EC2-VPC] Changes the security groups of the instance. You must specify at least one security group, even if it's just the default security group for the VPC. You must specify the security group ID, not the security group name.

For example, if you want the instance to be in sg-1a1a1a1a and sg-9b9b9b9b, specify GroupId.1=sg-1a1a1a1a and GroupId.2=sg-9b9b9b9b.

", - "locationName":"GroupId" - }, - "EbsOptimized":{ - "shape":"AttributeBooleanValue", - "documentation":"

Specifies whether the instance 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. This optimization isn't available with all instance types. Additional usage charges apply when using an EBS Optimized instance.

", - "locationName":"ebsOptimized" - }, - "SriovNetSupport":{ - "shape":"AttributeValue", - "documentation":"

Set to simple to enable enhanced networking for the instance.

There is no way to disable enhanced networking at this time.

This option is supported only for HVM instances. Specifying this option with a PV instance can make it unreachable.

", - "locationName":"sriovNetSupport" - } - } - }, - "ModifyNetworkInterfaceAttributeRequest":{ - "type":"structure", - "required":["NetworkInterfaceId"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "NetworkInterfaceId":{ - "shape":"String", - "documentation":"

The ID of the network interface.

", - "locationName":"networkInterfaceId" - }, - "Description":{ - "shape":"AttributeValue", - "documentation":"

A description for the network interface.

", - "locationName":"description" - }, - "SourceDestCheck":{ - "shape":"AttributeBooleanValue", - "documentation":"

Indicates whether source/destination checking is enabled. A value of true means checking is enabled, and false means checking is disabled. This value must be false for a NAT instance to perform NAT. For more information, see NAT Instances in the Amazon Virtual Private Cloud User Guide.

", - "locationName":"sourceDestCheck" - }, - "Groups":{ - "shape":"SecurityGroupIdStringList", - "documentation":"

Changes the security groups for the network interface. The new set of groups you specify replaces the current set. You must specify at least one group, even if it's just the default security group in the VPC. You must specify the ID of the security group, not the name.

", - "locationName":"SecurityGroupId" - }, - "Attachment":{ - "shape":"NetworkInterfaceAttachmentChanges", - "documentation":"

Information about the interface attachment. If modifying the 'delete on termination' attribute, you must specify the ID of the interface attachment.

", - "locationName":"attachment" - } - } - }, - "ModifyReservedInstancesRequest":{ - "type":"structure", - "required":[ - "ReservedInstancesIds", - "TargetConfigurations" - ], - "members":{ - "ClientToken":{ - "shape":"String", - "documentation":"

A unique, case-sensitive token you provide to ensure idempotency of your modification request.

", - "locationName":"clientToken" - }, - "ReservedInstancesIds":{ - "shape":"ReservedInstancesIdStringList", - "documentation":"

The IDs of the Reserved Instances to modify.

", - "locationName":"ReservedInstancesId" - }, - "TargetConfigurations":{ - "shape":"ReservedInstancesConfigurationList", - "documentation":"

The configuration settings for the Reserved Instances to modify.

", - "locationName":"ReservedInstancesConfigurationSetItemType" - } - } - }, - "ModifyReservedInstancesResult":{ - "type":"structure", - "members":{ - "ReservedInstancesModificationId":{ - "shape":"String", - "documentation":"

The ID for the modification.

", - "locationName":"reservedInstancesModificationId" - } - } - }, - "ModifySnapshotAttributeRequest":{ - "type":"structure", - "required":["SnapshotId"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "SnapshotId":{ - "shape":"String", - "documentation":"

The ID of the snapshot.

" - }, - "Attribute":{ - "shape":"SnapshotAttributeName", - "documentation":"

The snapshot attribute to modify.

" - }, - "OperationType":{ - "shape":"String", - "documentation":"

The type of operation to perform to the attribute.

" - }, - "UserIds":{ - "shape":"UserIdStringList", - "documentation":"

The account ID to modify for the snapshot.

", - "locationName":"UserId" - }, - "GroupNames":{ - "shape":"GroupNameStringList", - "documentation":"

The group to modify for the snapshot.

", - "locationName":"UserGroup" - }, - "CreateVolumePermission":{ - "shape":"CreateVolumePermissionModifications", - "documentation":"

A JSON representation of the snapshot attribute modification.

" - } - } - }, - "ModifySubnetAttributeRequest":{ - "type":"structure", - "required":["SubnetId"], - "members":{ - "SubnetId":{ - "shape":"String", - "documentation":"

The ID of the subnet.

", - "locationName":"subnetId" - }, - "MapPublicIpOnLaunch":{"shape":"AttributeBooleanValue"} - } - }, - "ModifyVolumeAttributeRequest":{ - "type":"structure", - "required":["VolumeId"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "VolumeId":{ - "shape":"String", - "documentation":"

The ID of the volume.

" - }, - "AutoEnableIO":{ - "shape":"AttributeBooleanValue", - "documentation":"

Indicates whether the volume should be auto-enabled for I/O operations.

" - } - } - }, - "ModifyVpcAttributeRequest":{ - "type":"structure", - "required":["VpcId"], - "members":{ - "VpcId":{ - "shape":"String", - "documentation":"

The ID of the VPC.

", - "locationName":"vpcId" - }, - "EnableDnsSupport":{ - "shape":"AttributeBooleanValue", - "documentation":"

Indicates whether the DNS resolution is supported for the VPC. If enabled, queries to the Amazon provided DNS server at the 169.254.169.253 IP address, or the reserved IP address at the base of the VPC network range \"plus two\" will succeed. If disabled, the Amazon provided DNS service in the VPC that resolves public DNS hostnames to IP addresses is not enabled.

" - }, - "EnableDnsHostnames":{ - "shape":"AttributeBooleanValue", - "documentation":"

Indicates whether the instances launched in the VPC get DNS hostnames. If enabled, instances in the VPC get DNS hostnames; otherwise, they do not.

You can only enable DNS hostnames if you also enable DNS support.

" - } - } - }, - "MonitorInstancesRequest":{ - "type":"structure", - "required":["InstanceIds"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "InstanceIds":{ - "shape":"InstanceIdStringList", - "documentation":"

One or more instance IDs.

", - "locationName":"InstanceId" - } - } - }, - "MonitorInstancesResult":{ - "type":"structure", - "members":{ - "InstanceMonitorings":{ - "shape":"InstanceMonitoringList", - "documentation":"

Monitoring information for one or more instances.

", - "locationName":"instancesSet" - } - } - }, - "Monitoring":{ - "type":"structure", - "members":{ - "State":{ - "shape":"MonitoringState", - "documentation":"

Indicates whether monitoring is enabled for the instance.

", - "locationName":"state" - } - }, - "documentation":"

Describes the monitoring for the instance.

" - }, - "MonitoringState":{ - "type":"string", - "enum":[ - "disabled", - "enabled", - "pending" - ] - }, - "NetworkAcl":{ - "type":"structure", - "members":{ - "NetworkAclId":{ - "shape":"String", - "documentation":"

The ID of the network ACL.

", - "locationName":"networkAclId" - }, - "VpcId":{ - "shape":"String", - "documentation":"

The ID of the VPC for the network ACL.

", - "locationName":"vpcId" - }, - "IsDefault":{ - "shape":"Boolean", - "documentation":"

Indicates whether this is the default network ACL for the VPC.

", - "locationName":"default" - }, - "Entries":{ - "shape":"NetworkAclEntryList", - "documentation":"

One or more entries (rules) in the network ACL.

", - "locationName":"entrySet" - }, - "Associations":{ - "shape":"NetworkAclAssociationList", - "documentation":"

Any associations between the network ACL and one or more subnets

", - "locationName":"associationSet" - }, - "Tags":{ - "shape":"TagList", - "documentation":"

Any tags assigned to the network ACL.

", - "locationName":"tagSet" - } - }, - "documentation":"

Describes a network ACL.

" - }, - "NetworkAclAssociation":{ - "type":"structure", - "members":{ - "NetworkAclAssociationId":{ - "shape":"String", - "documentation":"

The ID of the association between a network ACL and a subnet.

", - "locationName":"networkAclAssociationId" - }, - "NetworkAclId":{ - "shape":"String", - "documentation":"

The ID of the network ACL.

", - "locationName":"networkAclId" - }, - "SubnetId":{ - "shape":"String", - "documentation":"

The ID of the subnet.

", - "locationName":"subnetId" - } - }, - "documentation":"

Describes an association between a network ACL and a subnet.

" - }, - "NetworkAclAssociationList":{ - "type":"list", - "member":{ - "shape":"NetworkAclAssociation", - "locationName":"item" - } - }, - "NetworkAclEntry":{ - "type":"structure", - "members":{ - "RuleNumber":{ - "shape":"Integer", - "documentation":"

The rule number for the entry. ACL entries are processed in ascending order by rule number.

", - "locationName":"ruleNumber" - }, - "Protocol":{ - "shape":"String", - "documentation":"

The protocol. A value of -1 means all protocols.

", - "locationName":"protocol" - }, - "RuleAction":{ - "shape":"RuleAction", - "documentation":"

Indicates whether to allow or deny the traffic that matches the rule.

", - "locationName":"ruleAction" - }, - "Egress":{ - "shape":"Boolean", - "documentation":"

Indicates whether the rule is an egress rule (applied to traffic leaving the subnet).

", - "locationName":"egress" - }, - "CidrBlock":{ - "shape":"String", - "documentation":"

The network range to allow or deny, in CIDR notation.

", - "locationName":"cidrBlock" - }, - "IcmpTypeCode":{ - "shape":"IcmpTypeCode", - "documentation":"

ICMP protocol: The ICMP type and code.

", - "locationName":"icmpTypeCode" - }, - "PortRange":{ - "shape":"PortRange", - "documentation":"

TCP or UDP protocols: The range of ports the rule applies to.

", - "locationName":"portRange" - } - }, - "documentation":"

Describes an entry in a network ACL.

" - }, - "NetworkAclEntryList":{ - "type":"list", - "member":{ - "shape":"NetworkAclEntry", - "locationName":"item" - } - }, - "NetworkAclList":{ - "type":"list", - "member":{ - "shape":"NetworkAcl", - "locationName":"item" - } - }, - "NetworkInterface":{ - "type":"structure", - "members":{ - "NetworkInterfaceId":{ - "shape":"String", - "documentation":"

The ID of the network interface.

", - "locationName":"networkInterfaceId" - }, - "SubnetId":{ - "shape":"String", - "documentation":"

The ID of the subnet.

", - "locationName":"subnetId" - }, - "VpcId":{ - "shape":"String", - "documentation":"

The ID of the VPC.

", - "locationName":"vpcId" - }, - "AvailabilityZone":{ - "shape":"String", - "documentation":"

The Availability Zone.

", - "locationName":"availabilityZone" - }, - "Description":{ - "shape":"String", - "documentation":"

A description.

", - "locationName":"description" - }, - "OwnerId":{ - "shape":"String", - "documentation":"

The AWS account ID of the owner of the network interface.

", - "locationName":"ownerId" - }, - "RequesterId":{ - "shape":"String", - "documentation":"

The ID of the entity that launched the instance on your behalf (for example, AWS Management Console or Auto Scaling).

", - "locationName":"requesterId" - }, - "RequesterManaged":{ - "shape":"Boolean", - "documentation":"

Indicates whether the network interface is being managed by AWS.

", - "locationName":"requesterManaged" - }, - "Status":{ - "shape":"NetworkInterfaceStatus", - "documentation":"

The status of the network interface.

", - "locationName":"status" - }, - "MacAddress":{ - "shape":"String", - "documentation":"

The MAC address.

", - "locationName":"macAddress" - }, - "PrivateIpAddress":{ - "shape":"String", - "documentation":"

The IP address of the network interface within the subnet.

", - "locationName":"privateIpAddress" - }, - "PrivateDnsName":{ - "shape":"String", - "documentation":"

The private DNS name.

", - "locationName":"privateDnsName" - }, - "SourceDestCheck":{ - "shape":"Boolean", - "documentation":"

Indicates whether traffic to or from the instance is validated.

", - "locationName":"sourceDestCheck" - }, - "Groups":{ - "shape":"GroupIdentifierList", - "documentation":"

Any security groups for the network interface.

", - "locationName":"groupSet" - }, - "Attachment":{ - "shape":"NetworkInterfaceAttachment", - "documentation":"

The network interface attachment.

", - "locationName":"attachment" - }, - "Association":{ - "shape":"NetworkInterfaceAssociation", - "documentation":"

The association information for an Elastic IP associated with the network interface.

", - "locationName":"association" - }, - "TagSet":{ - "shape":"TagList", - "documentation":"

Any tags assigned to the network interface.

", - "locationName":"tagSet" - }, - "PrivateIpAddresses":{ - "shape":"NetworkInterfacePrivateIpAddressList", - "documentation":"

The private IP addresses associated with the network interface.

", - "locationName":"privateIpAddressesSet" - } - }, - "documentation":"

Describes a network interface.

" - }, - "NetworkInterfaceAssociation":{ - "type":"structure", - "members":{ - "PublicIp":{ - "shape":"String", - "documentation":"

The address of the Elastic IP address bound to the network interface.

", - "locationName":"publicIp" - }, - "PublicDnsName":{ - "shape":"String", - "documentation":"

The public DNS name.

", - "locationName":"publicDnsName" - }, - "IpOwnerId":{ - "shape":"String", - "documentation":"

The ID of the Elastic IP address owner.

", - "locationName":"ipOwnerId" - }, - "AllocationId":{ - "shape":"String", - "documentation":"

The allocation ID.

", - "locationName":"allocationId" - }, - "AssociationId":{ - "shape":"String", - "documentation":"

The association ID.

", - "locationName":"associationId" - } - }, - "documentation":"

Describes association information for an Elastic IP address.

" - }, - "NetworkInterfaceAttachment":{ - "type":"structure", - "members":{ - "AttachmentId":{ - "shape":"String", - "documentation":"

The ID of the network interface attachment.

", - "locationName":"attachmentId" - }, - "InstanceId":{ - "shape":"String", - "documentation":"

The ID of the instance.

", - "locationName":"instanceId" - }, - "InstanceOwnerId":{ - "shape":"String", - "documentation":"

The AWS account ID of the owner of the instance.

", - "locationName":"instanceOwnerId" - }, - "DeviceIndex":{ - "shape":"Integer", - "documentation":"

The device index of the network interface attachment on the instance.

", - "locationName":"deviceIndex" - }, - "Status":{ - "shape":"AttachmentStatus", - "documentation":"

The attachment state.

", - "locationName":"status" - }, - "AttachTime":{ - "shape":"DateTime", - "documentation":"

The timestamp indicating when the attachment initiated.

", - "locationName":"attachTime" - }, - "DeleteOnTermination":{ - "shape":"Boolean", - "documentation":"

Indicates whether the network interface is deleted when the instance is terminated.

", - "locationName":"deleteOnTermination" - } - }, - "documentation":"

Describes a network interface attachment.

" - }, - "NetworkInterfaceAttachmentChanges":{ - "type":"structure", - "members":{ - "AttachmentId":{ - "shape":"String", - "documentation":"

The ID of the network interface attachment.

", - "locationName":"attachmentId" - }, - "DeleteOnTermination":{ - "shape":"Boolean", - "documentation":"

Indicates whether the network interface is deleted when the instance is terminated.

", - "locationName":"deleteOnTermination" - } - }, - "documentation":"

Describes an attachment change.

" - }, - "NetworkInterfaceAttribute":{ - "type":"string", - "enum":[ - "description", - "groupSet", - "sourceDestCheck", - "attachment" - ] - }, - "NetworkInterfaceIdList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"item" - } - }, - "NetworkInterfaceList":{ - "type":"list", - "member":{ - "shape":"NetworkInterface", - "locationName":"item" - } - }, - "NetworkInterfacePrivateIpAddress":{ - "type":"structure", - "members":{ - "PrivateIpAddress":{ - "shape":"String", - "documentation":"

The private IP address.

", - "locationName":"privateIpAddress" - }, - "PrivateDnsName":{ - "shape":"String", - "documentation":"

The private DNS name.

", - "locationName":"privateDnsName" - }, - "Primary":{ - "shape":"Boolean", - "documentation":"

Indicates whether this IP address is the primary private IP address of the network interface.

", - "locationName":"primary" - }, - "Association":{ - "shape":"NetworkInterfaceAssociation", - "documentation":"

The association information for an Elastic IP address associated with the network interface.

", - "locationName":"association" - } - }, - "documentation":"

Describes the private IP address of a network interface.

" - }, - "NetworkInterfacePrivateIpAddressList":{ - "type":"list", - "member":{ - "shape":"NetworkInterfacePrivateIpAddress", - "locationName":"item" - } - }, - "NetworkInterfaceStatus":{ - "type":"string", - "enum":[ - "available", - "attaching", - "in-use", - "detaching" - ] - }, - "OfferingTypeValues":{ - "type":"string", - "enum":[ - "Heavy Utilization", - "Medium Utilization", - "Light Utilization" - ] - }, - "OwnerStringList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"Owner" - } - }, - "PermissionGroup":{ - "type":"string", - "enum":["all"] - }, - "Placement":{ - "type":"structure", - "members":{ - "AvailabilityZone":{ - "shape":"String", - "documentation":"

The Availability Zone of the instance.

", - "locationName":"availabilityZone" - }, - "GroupName":{ - "shape":"String", - "documentation":"

The name of the placement group the instance is in (for cluster compute instances).

", - "locationName":"groupName" - }, - "Tenancy":{ - "shape":"Tenancy", - "documentation":"

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.

", - "locationName":"tenancy" - } - }, - "documentation":"

Describes the placement for the instance.

" - }, - "PlacementGroup":{ - "type":"structure", - "members":{ - "GroupName":{ - "shape":"String", - "documentation":"

The name of the placement group.

", - "locationName":"groupName" - }, - "Strategy":{ - "shape":"PlacementStrategy", - "documentation":"

The placement strategy.

", - "locationName":"strategy" - }, - "State":{ - "shape":"PlacementGroupState", - "documentation":"

The state of the placement group.

", - "locationName":"state" - } - }, - "documentation":"

Describes a placement group.

" - }, - "PlacementGroupList":{ - "type":"list", - "member":{ - "shape":"PlacementGroup", - "locationName":"item" - } - }, - "PlacementGroupState":{ - "type":"string", - "enum":[ - "pending", - "available", - "deleting", - "deleted" - ] - }, - "PlacementGroupStringList":{ - "type":"list", - "member":{"shape":"String"} - }, - "PlacementStrategy":{ - "type":"string", - "enum":["cluster"] - }, - "PlatformValues":{ - "type":"string", - "enum":["Windows"] - }, - "PortRange":{ - "type":"structure", - "members":{ - "From":{ - "shape":"Integer", - "documentation":"

The first port in the range.

", - "locationName":"from" - }, - "To":{ - "shape":"Integer", - "documentation":"

The last port in the range.

", - "locationName":"to" - } - }, - "documentation":"

Describes a range of ports.

" - }, - "PriceSchedule":{ - "type":"structure", - "members":{ - "Term":{ - "shape":"Long", - "documentation":"

The number of months remaining in the reservation. For example, 2 is the second to the last month before the capacity reservation expires.

", - "locationName":"term" - }, - "Price":{ - "shape":"Double", - "documentation":"

The fixed price for the term.

", - "locationName":"price" - }, - "CurrencyCode":{ - "shape":"CurrencyCodeValues", - "documentation":"

The currency for transacting the Reserved Instance resale. At this time, the only supported currency is USD.

", - "locationName":"currencyCode" - }, - "Active":{ - "shape":"Boolean", - "documentation":"

The current price schedule, as determined by the term remaining for the Reserved Instance in the listing.

A specific price schedule is always in effect, but only one price schedule can be active at any time. Take, for example, a Reserved Instance listing that has five months remaining in its term. When you specify price schedules for five months and two months, this means that schedule 1, covering the first three months of the remaining term, will be active during months 5, 4, and 3. Then schedule 2, covering the last two months of the term, will be active for months 2 and 1.

", - "locationName":"active" - } - }, - "documentation":"

Describes the price for a Reserved Instance.

" - }, - "PriceScheduleList":{ - "type":"list", - "member":{ - "shape":"PriceSchedule", - "locationName":"item" - } - }, - "PriceScheduleSpecification":{ - "type":"structure", - "members":{ - "Term":{ - "shape":"Long", - "documentation":"

The number of months remaining in the reservation. For example, 2 is the second to the last month before the capacity reservation expires.

", - "locationName":"term" - }, - "Price":{ - "shape":"Double", - "documentation":"

The fixed price for the term.

", - "locationName":"price" - }, - "CurrencyCode":{ - "shape":"CurrencyCodeValues", - "documentation":"

The currency for transacting the Reserved Instance resale. At this time, the only supported currency is USD.

", - "locationName":"currencyCode" - } - }, - "documentation":"

Describes the price for a Reserved Instance.

" - }, - "PriceScheduleSpecificationList":{ - "type":"list", - "member":{ - "shape":"PriceScheduleSpecification", - "locationName":"item" - } - }, - "PricingDetail":{ - "type":"structure", - "members":{ - "Price":{ - "shape":"Double", - "documentation":"

The price per instance.

", - "locationName":"price" - }, - "Count":{ - "shape":"Integer", - "documentation":"

The number of instances available for the price.

", - "locationName":"count" - } - }, - "documentation":"

Describes a Reserved Instance offering.

" - }, - "PricingDetailsList":{ - "type":"list", - "member":{ - "shape":"PricingDetail", - "locationName":"item" - } - }, - "PrivateIpAddressSpecification":{ - "type":"structure", - "required":["PrivateIpAddress"], - "members":{ - "PrivateIpAddress":{ - "shape":"String", - "documentation":"

The private IP addresses.

", - "locationName":"privateIpAddress" - }, - "Primary":{ - "shape":"Boolean", - "documentation":"

Indicates whether the private IP address is the primary private IP address. Only one IP address can be designated as primary.

", - "locationName":"primary" - } - }, - "documentation":"

Describes a secondary private IP address for a network interface.

" - }, - "PrivateIpAddressSpecificationList":{ - "type":"list", - "member":{ - "shape":"PrivateIpAddressSpecification", - "locationName":"item" - } - }, - "PrivateIpAddressStringList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"PrivateIpAddress" - } - }, - "ProductCode":{ - "type":"structure", - "members":{ - "ProductCodeId":{ - "shape":"String", - "documentation":"

The product code.

", - "locationName":"productCode" - }, - "ProductCodeType":{ - "shape":"ProductCodeValues", - "documentation":"

The type of product code.

", - "locationName":"type" - } - }, - "documentation":"

Describes a product code.

" - }, - "ProductCodeList":{ - "type":"list", - "member":{ - "shape":"ProductCode", - "locationName":"item" - } - }, - "ProductCodeStringList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"ProductCode" - } - }, - "ProductCodeValues":{ - "type":"string", - "enum":[ - "devpay", - "marketplace" - ] - }, - "ProductDescriptionList":{ - "type":"list", - "member":{"shape":"String"} - }, - "PropagatingVgw":{ - "type":"structure", - "members":{ - "GatewayId":{ - "shape":"String", - "documentation":"

The ID of the virtual private gateway (VGW).

", - "locationName":"gatewayId" - } - }, - "documentation":"

Describes a virtual private gateway propagating route.

" - }, - "PropagatingVgwList":{ - "type":"list", - "member":{ - "shape":"PropagatingVgw", - "locationName":"item" - } - }, - "PublicIpStringList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"PublicIp" - } - }, - "PurchaseReservedInstancesOfferingRequest":{ - "type":"structure", - "required":[ - "ReservedInstancesOfferingId", - "InstanceCount" - ], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "ReservedInstancesOfferingId":{ - "shape":"String", - "documentation":"

The ID of the Reserved Instance offering to purchase.

" - }, - "InstanceCount":{ - "shape":"Integer", - "documentation":"

The number of Reserved Instances to purchase.

" - }, - "LimitPrice":{ - "shape":"ReservedInstanceLimitPrice", - "documentation":"

Specified for Reserved Instance Marketplace offerings to limit the total order and ensure that the Reserved Instances are not purchased at unexpected prices.

", - "locationName":"limitPrice" - } - } - }, - "PurchaseReservedInstancesOfferingResult":{ - "type":"structure", - "members":{ - "ReservedInstancesId":{ - "shape":"String", - "documentation":"

The IDs of the purchased Reserved Instances.

", - "locationName":"reservedInstancesId" - } - } - }, - "RIProductDescription":{ - "type":"string", - "enum":[ - "Linux/UNIX", - "Linux/UNIX (Amazon VPC)", - "Windows", - "Windows (Amazon VPC)" - ] - }, - "ReasonCodesList":{ - "type":"list", - "member":{ - "shape":"ReportInstanceReasonCodes", - "locationName":"item" - } - }, - "RebootInstancesRequest":{ - "type":"structure", - "required":["InstanceIds"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "InstanceIds":{ - "shape":"InstanceIdStringList", - "documentation":"

One or more instance IDs.

", - "locationName":"InstanceId" - } - } - }, - "RecurringCharge":{ - "type":"structure", - "members":{ - "Frequency":{ - "shape":"RecurringChargeFrequency", - "documentation":"

The frequency of the recurring charge.

", - "locationName":"frequency" - }, - "Amount":{ - "shape":"Double", - "documentation":"

The amount of the recurring charge.

", - "locationName":"amount" - } - }, - "documentation":"

Describes a recurring charge.

" - }, - "RecurringChargeFrequency":{ - "type":"string", - "enum":["Hourly"] - }, - "RecurringChargesList":{ - "type":"list", - "member":{ - "shape":"RecurringCharge", - "locationName":"item" - } - }, - "Region":{ - "type":"structure", - "members":{ - "RegionName":{ - "shape":"String", - "documentation":"

The name of the region.

", - "locationName":"regionName" - }, - "Endpoint":{ - "shape":"String", - "documentation":"

The region service endpoint.

", - "locationName":"regionEndpoint" - } - }, - "documentation":"

Describes a region.

" - }, - "RegionList":{ - "type":"list", - "member":{ - "shape":"Region", - "locationName":"item" - } - }, - "RegionNameStringList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"RegionName" - } - }, - "RegisterImageRequest":{ - "type":"structure", - "required":["Name"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "ImageLocation":{ - "shape":"String", - "documentation":"

The full path to your AMI manifest in Amazon S3 storage.

" - }, - "Name":{ - "shape":"String", - "documentation":"

A name for your AMI.

Constraints: 3-128 alphanumeric characters, parentheses (()), square brackets ([]), spaces ( ), periods (.), slashes (/), dashes (-), single quotes ('), at-signs (@), or underscores(_)

", - "locationName":"name" - }, - "Description":{ - "shape":"String", - "documentation":"

A description for your AMI.

", - "locationName":"description" - }, - "Architecture":{ - "shape":"ArchitectureValues", - "documentation":"

The architecture of the AMI.

Default: For Amazon EBS-backed AMIs, i386. For instance store-backed AMIs, the architecture specified in the manifest file.

", - "locationName":"architecture" - }, - "KernelId":{ - "shape":"String", - "documentation":"

The ID of the kernel.

", - "locationName":"kernelId" - }, - "RamdiskId":{ - "shape":"String", - "documentation":"

The ID of the RAM disk.

", - "locationName":"ramdiskId" - }, - "RootDeviceName":{ - "shape":"String", - "documentation":"

The name of the root device (for example, /dev/sda1, or xvda).

", - "locationName":"rootDeviceName" - }, - "BlockDeviceMappings":{ - "shape":"BlockDeviceMappingRequestList", - "documentation":"

One or more block device mapping entries.

", - "locationName":"BlockDeviceMapping" - }, - "VirtualizationType":{ - "shape":"String", - "documentation":"

The type of virtualization.

Default: paravirtual

", - "locationName":"virtualizationType" - }, - "SriovNetSupport":{ - "shape":"String", - "documentation":"

Set to simple to enable enhanced networking for the AMI and any instances that you launch from the AMI.

There is no way to disable enhanced networking at this time.

This option is supported only for HVM AMIs. Specifying this option with a PV AMI can make instances launched from the AMI unreachable.

", - "locationName":"sriovNetSupport" - } - } - }, - "RegisterImageResult":{ - "type":"structure", - "members":{ - "ImageId":{ - "shape":"String", - "documentation":"

The ID of the newly registered AMI.

", - "locationName":"imageId" - } - } - }, - "RejectVpcPeeringConnectionRequest":{ - "type":"structure", - "required":["VpcPeeringConnectionId"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "VpcPeeringConnectionId":{ - "shape":"String", - "documentation":"

The ID of the VPC peering connection.

", - "locationName":"vpcPeeringConnectionId" - } - } - }, - "RejectVpcPeeringConnectionResult":{ - "type":"structure", - "members":{ - "Return":{ - "shape":"Boolean", - "documentation":"

Returns true if the request succeeds; otherwise, it returns an error.

", - "locationName":"return" - } - } - }, - "ReleaseAddressRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "PublicIp":{ - "shape":"String", - "documentation":"

[EC2-Classic] The Elastic IP address. Required for EC2-Classic.

" - }, - "AllocationId":{ - "shape":"String", - "documentation":"

[EC2-VPC] The allocation ID. Required for EC2-VPC.

" - } - } - }, - "ReplaceNetworkAclAssociationRequest":{ - "type":"structure", - "required":[ - "AssociationId", - "NetworkAclId" - ], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "AssociationId":{ - "shape":"String", - "documentation":"

The ID of the current association between the original network ACL and the subnet.

", - "locationName":"associationId" - }, - "NetworkAclId":{ - "shape":"String", - "documentation":"

The ID of the new network ACL to associate with the subnet.

", - "locationName":"networkAclId" - } - } - }, - "ReplaceNetworkAclAssociationResult":{ - "type":"structure", - "members":{ - "NewAssociationId":{ - "shape":"String", - "documentation":"

The ID of the new association.

", - "locationName":"newAssociationId" - } - } - }, - "ReplaceNetworkAclEntryRequest":{ - "type":"structure", - "required":[ - "NetworkAclId", - "RuleNumber", - "Protocol", - "RuleAction", - "Egress", - "CidrBlock" - ], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "NetworkAclId":{ - "shape":"String", - "documentation":"

The ID of the ACL.

", - "locationName":"networkAclId" - }, - "RuleNumber":{ - "shape":"Integer", - "documentation":"

The rule number of the entry to replace.

", - "locationName":"ruleNumber" - }, - "Protocol":{ - "shape":"String", - "documentation":"

The IP protocol. You can specify all or -1 to mean all protocols.

", - "locationName":"protocol" - }, - "RuleAction":{ - "shape":"RuleAction", - "documentation":"

Indicates whether to allow or deny the traffic that matches the rule.

", - "locationName":"ruleAction" - }, - "Egress":{ - "shape":"Boolean", - "documentation":"

Indicates whether to replace the egress rule.

Default: If no value is specified, we replace the ingress rule.

", - "locationName":"egress" - }, - "CidrBlock":{ - "shape":"String", - "documentation":"

The network range to allow or deny, in CIDR notation.

", - "locationName":"cidrBlock" - }, - "IcmpTypeCode":{ - "shape":"IcmpTypeCode", - "documentation":"

ICMP protocol: The ICMP type and code. Required if specifying 1 (ICMP) for the protocol.

", - "locationName":"Icmp" - }, - "PortRange":{ - "shape":"PortRange", - "documentation":"

TCP or UDP protocols: The range of ports the rule applies to. Required if specifying 6 (TCP) or 17 (UDP) for the protocol.

", - "locationName":"portRange" - } - } - }, - "ReplaceRouteRequest":{ - "type":"structure", - "required":[ - "RouteTableId", - "DestinationCidrBlock" - ], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "RouteTableId":{ - "shape":"String", - "documentation":"

The ID of the route table.

", - "locationName":"routeTableId" - }, - "DestinationCidrBlock":{ - "shape":"String", - "documentation":"

The CIDR address block used for the destination match. The value you provide must match the CIDR of an existing route in the table.

", - "locationName":"destinationCidrBlock" - }, - "GatewayId":{ - "shape":"String", - "documentation":"

The ID of an Internet gateway or virtual private gateway.

", - "locationName":"gatewayId" - }, - "InstanceId":{ - "shape":"String", - "documentation":"

The ID of a NAT instance in your VPC.

", - "locationName":"instanceId" - }, - "NetworkInterfaceId":{ - "shape":"String", - "documentation":"

The ID of a network interface.

", - "locationName":"networkInterfaceId" - }, - "VpcPeeringConnectionId":{ - "shape":"String", - "documentation":"

The ID of a VPC peering connection.

", - "locationName":"vpcPeeringConnectionId" - } - } - }, - "ReplaceRouteTableAssociationRequest":{ - "type":"structure", - "required":[ - "AssociationId", - "RouteTableId" - ], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "AssociationId":{ - "shape":"String", - "documentation":"

The association ID.

", - "locationName":"associationId" - }, - "RouteTableId":{ - "shape":"String", - "documentation":"

The ID of the new route table to associate with the subnet.

", - "locationName":"routeTableId" - } - } - }, - "ReplaceRouteTableAssociationResult":{ - "type":"structure", - "members":{ - "NewAssociationId":{ - "shape":"String", - "documentation":"

The ID of the new association.

", - "locationName":"newAssociationId" - } - } - }, - "ReportInstanceReasonCodes":{ - "type":"string", - "enum":[ - "instance-stuck-in-state", - "unresponsive", - "not-accepting-credentials", - "password-not-available", - "performance-network", - "performance-instance-store", - "performance-ebs-volume", - "performance-other", - "other" - ] - }, - "ReportInstanceStatusRequest":{ - "type":"structure", - "required":[ - "Instances", - "Status", - "ReasonCodes" - ], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "Instances":{ - "shape":"InstanceIdStringList", - "documentation":"

One or more instances.

", - "locationName":"instanceId" - }, - "Status":{ - "shape":"ReportStatusType", - "documentation":"

The status of all instances listed.

", - "locationName":"status" - }, - "StartTime":{ - "shape":"DateTime", - "documentation":"

The time at which the reported instance health state began.

", - "locationName":"startTime" - }, - "EndTime":{ - "shape":"DateTime", - "documentation":"

The time at which the reported instance health state ended.

", - "locationName":"endTime" - }, - "ReasonCodes":{ - "shape":"ReasonCodesList", - "documentation":"

One or more reason codes that describes the health state of your instance.

", - "locationName":"reasonCode" - }, - "Description":{ - "shape":"String", - "documentation":"

Descriptive text about the health state of your instance.

", - "locationName":"description" - } - } - }, - "ReportStatusType":{ - "type":"string", - "enum":[ - "ok", - "impaired" - ] - }, - "RequestSpotInstancesRequest":{ - "type":"structure", - "required":["SpotPrice"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "SpotPrice":{ - "shape":"String", - "documentation":"

The maximum hourly price for any Spot Instance launched to fulfill the request.

", - "locationName":"spotPrice" - }, - "InstanceCount":{ - "shape":"Integer", - "documentation":"

The maximum number of Spot Instances to launch.

Default: 1

", - "locationName":"instanceCount" - }, - "Type":{ - "shape":"SpotInstanceType", - "documentation":"

The Spot Instance request type.

Default: one-time

", - "locationName":"type" - }, - "ValidFrom":{ - "shape":"DateTime", - "documentation":"

The start date of the request. If this is a one-time request, the request becomes active at this date and time and remains active until all instances launch, the request expires, or the request is canceled. If the request is persistent, the request becomes active at this date and time and remains active until it expires or is canceled.

Default: The request is effective indefinitely.

", - "locationName":"validFrom" - }, - "ValidUntil":{ - "shape":"DateTime", - "documentation":"

The end date of the request. If this is a one-time request, the request remains active until all instances launch, the request is canceled, or this date is reached. If the request is persistent, it remains active until it is canceled or this date and time is reached.

Default: The request is effective indefinitely.

", - "locationName":"validUntil" - }, - "LaunchGroup":{ - "shape":"String", - "documentation":"

The instance launch group. Launch groups are Spot Instances that launch together and terminate together.

Default: Instances are launched and terminated individually

", - "locationName":"launchGroup" - }, - "AvailabilityZoneGroup":{ - "shape":"String", - "documentation":"

The user-specified name for a logical grouping of bids.

When you specify an Availability Zone group in a Spot Instance request, all Spot Instances in the request are launched in the same Availability Zone. Instance proximity is maintained with this parameter, but the choice of Availability Zone is not. The group applies only to bids for Spot Instances of the same instance type. Any additional Spot Instance requests that are specified with the same Availability Zone group name are launched in that same Availability Zone, as long as at least one instance from the group is still active.

If there is no active instance running in the Availability Zone group that you specify for a new Spot Instance request (all instances are terminated, the bid is expired, or the bid falls below current market), then Amazon EC2 launches the instance in any Availability Zone where the constraint can be met. Consequently, the subsequent set of Spot Instances could be placed in a different zone from the original request, even if you specified the same Availability Zone group.

Default: Instances are launched in any available Availability Zone.

", - "locationName":"availabilityZoneGroup" - }, - "LaunchSpecification":{"shape":"RequestSpotLaunchSpecification"} - } - }, - "RequestSpotInstancesResult":{ - "type":"structure", - "members":{ - "SpotInstanceRequests":{ - "shape":"SpotInstanceRequestList", - "documentation":"

Information about the Spot Instance request.

", - "locationName":"spotInstanceRequestSet" - } - } - }, - "Reservation":{ - "type":"structure", - "members":{ - "ReservationId":{ - "shape":"String", - "documentation":"

The ID of the reservation.

", - "locationName":"reservationId" - }, - "OwnerId":{ - "shape":"String", - "documentation":"

The ID of the AWS account that owns the reservation.

", - "locationName":"ownerId" - }, - "RequesterId":{ - "shape":"String", - "documentation":"

The ID of the requester that launched the instances on your behalf (for example, AWS Management Console or Auto Scaling).

", - "locationName":"requesterId" - }, - "Groups":{ - "shape":"GroupIdentifierList", - "documentation":"

One or more security groups.

", - "locationName":"groupSet" - }, - "Instances":{ - "shape":"InstanceList", - "documentation":"

One or more instances.

", - "locationName":"instancesSet" - } - }, - "documentation":"

Describes a reservation.

" - }, - "ReservationList":{ - "type":"list", - "member":{ - "shape":"Reservation", - "locationName":"item" - } - }, - "ReservedInstanceLimitPrice":{ - "type":"structure", - "members":{ - "Amount":{ - "shape":"Double", - "documentation":"

Used for Reserved Instance Marketplace offerings. Specifies the limit price on the total order (instanceCount * price).

", - "locationName":"amount" - }, - "CurrencyCode":{ - "shape":"CurrencyCodeValues", - "documentation":"

The currency in which the limitPrice amount is specified. At this time, the only supported currency is USD.

", - "locationName":"currencyCode" - } - }, - "documentation":"

Describes the limit price of a Reserved Instance offering.

" - }, - "ReservedInstanceState":{ - "type":"string", - "enum":[ - "payment-pending", - "active", - "payment-failed", - "retired" - ] - }, - "ReservedInstances":{ - "type":"structure", - "members":{ - "ReservedInstancesId":{ - "shape":"String", - "documentation":"

The ID of the Reserved Instance.

", - "locationName":"reservedInstancesId" - }, - "InstanceType":{ - "shape":"InstanceType", - "documentation":"

The instance type on which the Reserved Instance can be used.

", - "locationName":"instanceType" - }, - "AvailabilityZone":{ - "shape":"String", - "documentation":"

The Availability Zone in which the Reserved Instance can be used.

", - "locationName":"availabilityZone" - }, - "Start":{ - "shape":"DateTime", - "documentation":"

The date and time the Reserved Instance started.

", - "locationName":"start" - }, - "End":{ - "shape":"DateTime", - "documentation":"

The time when the Reserved Instance expires.

", - "locationName":"end" - }, - "Duration":{ - "shape":"Long", - "documentation":"

The duration of the Reserved Instance, in seconds.

", - "locationName":"duration" - }, - "UsagePrice":{ - "shape":"Float", - "documentation":"

The usage price of the Reserved Instance, per hour.

", - "locationName":"usagePrice" - }, - "FixedPrice":{ - "shape":"Float", - "documentation":"

The purchase price of the Reserved Instance.

", - "locationName":"fixedPrice" - }, - "InstanceCount":{ - "shape":"Integer", - "documentation":"

The number of Reserved Instances purchased.

", - "locationName":"instanceCount" - }, - "ProductDescription":{ - "shape":"RIProductDescription", - "documentation":"

The Reserved Instance description.

", - "locationName":"productDescription" - }, - "State":{ - "shape":"ReservedInstanceState", - "documentation":"

The state of the Reserved Instance purchase.

", - "locationName":"state" - }, - "Tags":{ - "shape":"TagList", - "documentation":"

Any tags assigned to the resource.

", - "locationName":"tagSet" - }, - "InstanceTenancy":{ - "shape":"Tenancy", - "documentation":"

The tenancy of the reserved instance.

", - "locationName":"instanceTenancy" - }, - "CurrencyCode":{ - "shape":"CurrencyCodeValues", - "documentation":"

The currency of the Reserved Instance. It's specified using ISO 4217 standard currency codes. At this time, the only supported currency is USD.

", - "locationName":"currencyCode" - }, - "OfferingType":{ - "shape":"OfferingTypeValues", - "documentation":"

The Reserved Instance offering type.

", - "locationName":"offeringType" - }, - "RecurringCharges":{ - "shape":"RecurringChargesList", - "documentation":"

The recurring charge tag assigned to the resource.

", - "locationName":"recurringCharges" - } - }, - "documentation":"

Describes a Reserved Instance.

" - }, - "ReservedInstancesConfiguration":{ - "type":"structure", - "members":{ - "AvailabilityZone":{ - "shape":"String", - "documentation":"

The Availability Zone for the modified Reserved Instances.

", - "locationName":"availabilityZone" - }, - "Platform":{ - "shape":"String", - "documentation":"

The network platform of the modified Reserved Instances, which is either EC2-Classic or EC2-VPC.

", - "locationName":"platform" - }, - "InstanceCount":{ - "shape":"Integer", - "documentation":"

The number of modified Reserved Instances.

", - "locationName":"instanceCount" - }, - "InstanceType":{ - "shape":"InstanceType", - "documentation":"

The instance type for the modified Reserved Instances.

", - "locationName":"instanceType" - } - }, - "documentation":"

Describes the configuration settings for the modified Reserved Instances.

" - }, - "ReservedInstancesConfigurationList":{ - "type":"list", - "member":{ - "shape":"ReservedInstancesConfiguration", - "locationName":"item" - } - }, - "ReservedInstancesId":{ - "type":"structure", - "members":{ - "ReservedInstancesId":{ - "shape":"String", - "documentation":"

The ID of the Reserved Instance.

", - "locationName":"reservedInstancesId" - } - }, - "documentation":"

Describes the ID of a Reserved Instance.

" - }, - "ReservedInstancesIdStringList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"ReservedInstancesId" - } - }, - "ReservedInstancesList":{ - "type":"list", - "member":{ - "shape":"ReservedInstances", - "locationName":"item" - } - }, - "ReservedInstancesListing":{ - "type":"structure", - "members":{ - "ReservedInstancesListingId":{ - "shape":"String", - "documentation":"

The ID of the Reserved Instance listing.

", - "locationName":"reservedInstancesListingId" - }, - "ReservedInstancesId":{ - "shape":"String", - "documentation":"

The ID of the Reserved Instance.

", - "locationName":"reservedInstancesId" - }, - "CreateDate":{ - "shape":"DateTime", - "documentation":"

The time the listing was created.

", - "locationName":"createDate" - }, - "UpdateDate":{ - "shape":"DateTime", - "documentation":"

The last modified timestamp of the listing.

", - "locationName":"updateDate" - }, - "Status":{ - "shape":"ListingStatus", - "documentation":"

The status of the Reserved Instance listing.

", - "locationName":"status" - }, - "StatusMessage":{ - "shape":"String", - "documentation":"

The reason for the current status of the Reserved Instance listing. The response can be blank.

", - "locationName":"statusMessage" - }, - "InstanceCounts":{ - "shape":"InstanceCountList", - "documentation":"

The number of instances in this state.

", - "locationName":"instanceCounts" - }, - "PriceSchedules":{ - "shape":"PriceScheduleList", - "documentation":"

The price of the Reserved Instance listing.

", - "locationName":"priceSchedules" - }, - "Tags":{ - "shape":"TagList", - "documentation":"

Any tags assigned to the resource.

", - "locationName":"tagSet" - }, - "ClientToken":{ - "shape":"String", - "documentation":"

The idempotency token you provided when you created the listing.

", - "locationName":"clientToken" - } - }, - "documentation":"

Describes a Reserved Instance listing.

" - }, - "ReservedInstancesListingList":{ - "type":"list", - "member":{ - "shape":"ReservedInstancesListing", - "locationName":"item" - } - }, - "ReservedInstancesModification":{ - "type":"structure", - "members":{ - "ReservedInstancesModificationId":{ - "shape":"String", - "documentation":"

A unique ID for the Reserved Instance modification.

", - "locationName":"reservedInstancesModificationId" - }, - "ReservedInstancesIds":{ - "shape":"ReservedIntancesIds", - "documentation":"

The IDs of one or more Reserved Instances.

", - "locationName":"reservedInstancesSet" - }, - "ModificationResults":{ - "shape":"ReservedInstancesModificationResultList", - "documentation":"

Contains target configurations along with their corresponding new Reserved Instance IDs.

", - "locationName":"modificationResultSet" - }, - "CreateDate":{ - "shape":"DateTime", - "documentation":"

The time when the modification request was created.

", - "locationName":"createDate" - }, - "UpdateDate":{ - "shape":"DateTime", - "documentation":"

The time when the modification request was last updated.

", - "locationName":"updateDate" - }, - "EffectiveDate":{ - "shape":"DateTime", - "documentation":"

The time for the modification to become effective.

", - "locationName":"effectiveDate" - }, - "Status":{ - "shape":"String", - "documentation":"

The status of the Reserved Instances modification request.

", - "locationName":"status" - }, - "StatusMessage":{ - "shape":"String", - "documentation":"

The reason for the status.

", - "locationName":"statusMessage" - }, - "ClientToken":{ - "shape":"String", - "documentation":"

A unique, case-sensitive key supplied by the client to ensure that the modification request is idempotent.

", - "locationName":"clientToken" - } - }, - "documentation":"

Describes a Reserved Instance modification.

" - }, - "ReservedInstancesModificationIdStringList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"ReservedInstancesModificationId" - } - }, - "ReservedInstancesModificationList":{ - "type":"list", - "member":{ - "shape":"ReservedInstancesModification", - "locationName":"item" - } - }, - "ReservedInstancesModificationResult":{ - "type":"structure", - "members":{ - "ReservedInstancesId":{ - "shape":"String", - "documentation":"

The ID for the Reserved Instances that were created as part of the modification request. This field is only available when the modification is fulfilled.

", - "locationName":"reservedInstancesId" - }, - "TargetConfiguration":{ - "shape":"ReservedInstancesConfiguration", - "documentation":"

The target Reserved Instances configurations supplied as part of the modification request.

", - "locationName":"targetConfiguration" - } - } - }, - "ReservedInstancesModificationResultList":{ - "type":"list", - "member":{ - "shape":"ReservedInstancesModificationResult", - "locationName":"item" - } - }, - "ReservedInstancesOffering":{ - "type":"structure", - "members":{ - "ReservedInstancesOfferingId":{ - "shape":"String", - "documentation":"

The ID of the Reserved Instance offering.

", - "locationName":"reservedInstancesOfferingId" - }, - "InstanceType":{ - "shape":"InstanceType", - "documentation":"

The instance type on which the Reserved Instance can be used.

", - "locationName":"instanceType" - }, - "AvailabilityZone":{ - "shape":"String", - "documentation":"

The Availability Zone in which the Reserved Instance can be used.

", - "locationName":"availabilityZone" - }, - "Duration":{ - "shape":"Long", - "documentation":"

The duration of the Reserved Instance, in seconds.

", - "locationName":"duration" - }, - "UsagePrice":{ - "shape":"Float", - "documentation":"

The usage price of the Reserved Instance, per hour.

", - "locationName":"usagePrice" - }, - "FixedPrice":{ - "shape":"Float", - "documentation":"

The purchase price of the Reserved Instance.

", - "locationName":"fixedPrice" - }, - "ProductDescription":{ - "shape":"RIProductDescription", - "documentation":"

The Reserved Instance description.

", - "locationName":"productDescription" - }, - "InstanceTenancy":{ - "shape":"Tenancy", - "documentation":"

The tenancy of the reserved instance.

", - "locationName":"instanceTenancy" - }, - "CurrencyCode":{ - "shape":"CurrencyCodeValues", - "documentation":"

The currency of the Reserved Instance offering you are purchasing. It's specified using ISO 4217 standard currency codes. At this time, the only supported currency is USD.

", - "locationName":"currencyCode" - }, - "OfferingType":{ - "shape":"OfferingTypeValues", - "documentation":"

The Reserved Instance offering type.

", - "locationName":"offeringType" - }, - "RecurringCharges":{ - "shape":"RecurringChargesList", - "documentation":"

The recurring charge tag assigned to the resource.

", - "locationName":"recurringCharges" - }, - "Marketplace":{ - "shape":"Boolean", - "documentation":"

Indicates whether the offering is available through the Reserved Instance Marketplace (resale) or AWS. If it's a Reserved Instance Marketplace offering, this is true.

", - "locationName":"marketplace" - }, - "PricingDetails":{ - "shape":"PricingDetailsList", - "documentation":"

The pricing details of the Reserved Instance offering.

", - "locationName":"pricingDetailsSet" - } - }, - "documentation":"

Describes a Reserved Instance offering.

" - }, - "ReservedInstancesOfferingIdStringList":{ - "type":"list", - "member":{"shape":"String"} - }, - "ReservedInstancesOfferingList":{ - "type":"list", - "member":{ - "shape":"ReservedInstancesOffering", - "locationName":"item" - } - }, - "ReservedIntancesIds":{ - "type":"list", - "member":{ - "shape":"ReservedInstancesId", - "locationName":"item" - } - }, - "ResetImageAttributeName":{ - "type":"string", - "enum":["launchPermission"] - }, - "ResetImageAttributeRequest":{ - "type":"structure", - "required":[ - "ImageId", - "Attribute" - ], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "ImageId":{ - "shape":"String", - "documentation":"

The ID of the AMI.

" - }, - "Attribute":{ - "shape":"ResetImageAttributeName", - "documentation":"

The attribute to reset (currently you can only reset the launch permission attribute).

" - } - } - }, - "ResetInstanceAttributeRequest":{ - "type":"structure", - "required":[ - "InstanceId", - "Attribute" - ], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "InstanceId":{ - "shape":"String", - "documentation":"

The ID of the instance.

", - "locationName":"instanceId" - }, - "Attribute":{ - "shape":"InstanceAttributeName", - "documentation":"

The attribute to reset.

", - "locationName":"attribute" - } - } - }, - "ResetNetworkInterfaceAttributeRequest":{ - "type":"structure", - "required":["NetworkInterfaceId"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "NetworkInterfaceId":{ - "shape":"String", - "documentation":"

The ID of the network interface.

", - "locationName":"networkInterfaceId" - }, - "SourceDestCheck":{ - "shape":"String", - "documentation":"

The source/destination checking attribute. Resets the value to true.

", - "locationName":"sourceDestCheck" - } - } - }, - "ResetSnapshotAttributeRequest":{ - "type":"structure", - "required":[ - "SnapshotId", - "Attribute" - ], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "SnapshotId":{ - "shape":"String", - "documentation":"

The ID of the snapshot.

" - }, - "Attribute":{ - "shape":"SnapshotAttributeName", - "documentation":"

The attribute to reset (currently only the attribute for permission to create volumes can be reset).

" - } - } - }, - "ResourceIdList":{ - "type":"list", - "member":{"shape":"String"} - }, - "ResourceType":{ - "type":"string", - "enum":[ - "customer-gateway", - "dhcp-options", - "image", - "instance", - "internet-gateway", - "network-acl", - "network-interface", - "reserved-instances", - "route-table", - "snapshot", - "spot-instances-request", - "subnet", - "security-group", - "volume", - "vpc", - "vpn-connection", - "vpn-gateway" - ] - }, - "RestorableByStringList":{ - "type":"list", - "member":{"shape":"String"} - }, - "RevokeSecurityGroupEgressRequest":{ - "type":"structure", - "required":["GroupId"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "GroupId":{ - "shape":"String", - "documentation":"

The ID of the security group.

", - "locationName":"groupId" - }, - "SourceSecurityGroupName":{ - "shape":"String", - "documentation":"

[EC2-Classic, default VPC] The name of the destination security group. You can't specify a destination security group and a CIDR IP address range.

", - "locationName":"sourceSecurityGroupName" - }, - "SourceSecurityGroupOwnerId":{ - "shape":"String", - "documentation":"

The ID of the destination security group. You can't specify a destination security group and a CIDR IP address range.

", - "locationName":"sourceSecurityGroupOwnerId" - }, - "IpProtocol":{ - "shape":"String", - "documentation":"

The IP protocol name (tcp, udp, icmp) or number (see Protocol Numbers). Use -1 to specify all.

", - "locationName":"ipProtocol" - }, - "FromPort":{ - "shape":"Integer", - "documentation":"

The start of port range for the TCP and UDP protocols, or an ICMP type number. For the ICMP type number, use -1 to specify all ICMP types.

", - "locationName":"fromPort" - }, - "ToPort":{ - "shape":"Integer", - "documentation":"

The end of port range for the TCP and UDP protocols, or an ICMP code number. For the ICMP code number, use -1 to specify all ICMP codes for the ICMP type.

", - "locationName":"toPort" - }, - "CidrIp":{ - "shape":"String", - "documentation":"

The CIDR IP address range. You can't specify this parameter when specifying a source security group.

", - "locationName":"cidrIp" - }, - "IpPermissions":{ - "shape":"IpPermissionList", - "documentation":"

A set of IP permissions. You can't specify a destination security group and a CIDR IP address range.

", - "locationName":"ipPermissions" - } - } - }, - "RevokeSecurityGroupIngressRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "GroupName":{ - "shape":"String", - "documentation":"

[EC2-Classic, default VPC] The name of the security group.

" - }, - "GroupId":{ - "shape":"String", - "documentation":"

The ID of the security group.

" - }, - "SourceSecurityGroupName":{ - "shape":"String", - "documentation":"

[EC2-Classic, default VPC] The name of the source security group. You can't specify a source security group and a CIDR IP address range.

" - }, - "SourceSecurityGroupOwnerId":{ - "shape":"String", - "documentation":"

The ID of the source security group. You can't specify a source security group and a CIDR IP address range.

" - }, - "IpProtocol":{ - "shape":"String", - "documentation":"

The IP protocol name (tcp, udp, icmp) or number (see Protocol Numbers). Use -1 to specify all.

" - }, - "FromPort":{ - "shape":"Integer", - "documentation":"

The start of port range for the TCP and UDP protocols, or an ICMP type number. For the ICMP type number, use -1 to specify all ICMP types.

" - }, - "ToPort":{ - "shape":"Integer", - "documentation":"

The end of port range for the TCP and UDP protocols, or an ICMP code number. For the ICMP code number, use -1 to specify all ICMP codes for the ICMP type.

" - }, - "CidrIp":{ - "shape":"String", - "documentation":"

The CIDR IP address range. You can't specify this parameter when specifying a source security group.

" - }, - "IpPermissions":{ - "shape":"IpPermissionList", - "documentation":"

A set of IP permissions. You can't specify a source security group and a CIDR IP address range.

" - } - } - }, - "Route":{ - "type":"structure", - "members":{ - "DestinationCidrBlock":{ - "shape":"String", - "documentation":"

The CIDR block used for the destination match.

", - "locationName":"destinationCidrBlock" - }, - "GatewayId":{ - "shape":"String", - "documentation":"

The ID of a gateway attached to your VPC.

", - "locationName":"gatewayId" - }, - "InstanceId":{ - "shape":"String", - "documentation":"

The ID of a NAT instance in your VPC.

", - "locationName":"instanceId" - }, - "InstanceOwnerId":{ - "shape":"String", - "documentation":"

The AWS account ID of the owner of the instance.

", - "locationName":"instanceOwnerId" - }, - "NetworkInterfaceId":{ - "shape":"String", - "documentation":"

The ID of the network interface.

", - "locationName":"networkInterfaceId" - }, - "VpcPeeringConnectionId":{ - "shape":"String", - "documentation":"

The ID of the VPC peering connection.

", - "locationName":"vpcPeeringConnectionId" - }, - "State":{ - "shape":"RouteState", - "documentation":"

The state of the route. The blackhole state indicates that the route's target isn't available (for example, the specified gateway isn't attached to the VPC, or the specified NAT instance has been terminated).

", - "locationName":"state" - }, - "Origin":{ - "shape":"RouteOrigin", - "documentation":"

Describes how the route was created.

", - "locationName":"origin" - } - }, - "documentation":"

Describes a route in a route table.

" - }, - "RouteList":{ - "type":"list", - "member":{ - "shape":"Route", - "locationName":"item" - } - }, - "RouteOrigin":{ - "type":"string", - "enum":[ - "CreateRouteTable", - "CreateRoute", - "EnableVgwRoutePropagation" - ] - }, - "RouteState":{ - "type":"string", - "enum":[ - "active", - "blackhole" - ] - }, - "RouteTable":{ - "type":"structure", - "members":{ - "RouteTableId":{ - "shape":"String", - "documentation":"

The ID of the route table.

", - "locationName":"routeTableId" - }, - "VpcId":{ - "shape":"String", - "documentation":"

The ID of the VPC.

", - "locationName":"vpcId" - }, - "Routes":{ - "shape":"RouteList", - "documentation":"

The routes in the route table.

", - "locationName":"routeSet" - }, - "Associations":{ - "shape":"RouteTableAssociationList", - "documentation":"

The associations between the route table and one or more subnets.

", - "locationName":"associationSet" - }, - "Tags":{ - "shape":"TagList", - "documentation":"

Any tags assigned to the route table.

", - "locationName":"tagSet" - }, - "PropagatingVgws":{ - "shape":"PropagatingVgwList", - "documentation":"

Any virtual private gateway (VGW) propagating routes.

", - "locationName":"propagatingVgwSet" - } - }, - "documentation":"

Describes a route table.

" - }, - "RouteTableAssociation":{ - "type":"structure", - "members":{ - "RouteTableAssociationId":{ - "shape":"String", - "documentation":"

The ID of the association between a route table and a subnet.

", - "locationName":"routeTableAssociationId" - }, - "RouteTableId":{ - "shape":"String", - "documentation":"

The ID of the route table.

", - "locationName":"routeTableId" - }, - "SubnetId":{ - "shape":"String", - "documentation":"

The ID of the subnet.

", - "locationName":"subnetId" - }, - "Main":{ - "shape":"Boolean", - "documentation":"

Indicates whether this is the main route table.

", - "locationName":"main" - } - }, - "documentation":"

Describes an association between a route table and a subnet.

" - }, - "RouteTableAssociationList":{ - "type":"list", - "member":{ - "shape":"RouteTableAssociation", - "locationName":"item" - } - }, - "RouteTableList":{ - "type":"list", - "member":{ - "shape":"RouteTable", - "locationName":"item" - } - }, - "RuleAction":{ - "type":"string", - "enum":[ - "allow", - "deny" - ] - }, - "RunInstancesMonitoringEnabled":{ - "type":"structure", - "required":["Enabled"], - "members":{ - "Enabled":{ - "shape":"Boolean", - "documentation":"

Indicates whether monitoring is enabled for the instance.

", - "locationName":"enabled" - } - }, - "documentation":"

Describes the monitoring for the instance.

" - }, - "RunInstancesRequest":{ - "type":"structure", - "required":[ - "ImageId", - "MinCount", - "MaxCount" - ], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "ImageId":{ - "shape":"String", - "documentation":"

The ID of the AMI, which you can get by calling DescribeImages.

" - }, - "MinCount":{ - "shape":"Integer", - "documentation":"

The minimum number of instances to launch. If you specify a minimum that is more instances than Amazon EC2 can launch in the target Availability Zone, Amazon EC2 launches no instances.

Constraints: Between 1 and the maximum number you're allowed for the specified instance type. For more information about the default limits, and how to request an increase, see How many instances can I run in Amazon EC2 in the Amazon EC2 General FAQ.

" - }, - "MaxCount":{ - "shape":"Integer", - "documentation":"

The maximum number of instances to launch. If you specify more instances than Amazon EC2 can launch in the target Availability Zone, Amazon EC2 launches the largest possible number of instances above MinCount.

Constraints: Between 1 and the maximum number you're allowed for the specified instance type. For more information about the default limits, and how to request an increase, see How many instances can I run in Amazon EC2 in the Amazon EC2 General FAQ.

" - }, - "KeyName":{ - "shape":"String", - "documentation":"

The name of the key pair. You can create a key pair using CreateKeyPair or ImportKeyPair.

If you launch an instance without specifying a key pair, you can't connect to the instance.

" - }, - "SecurityGroups":{ - "shape":"SecurityGroupStringList", - "documentation":"

[EC2-Classic, default VPC] One or more security group names. For a nondefault VPC, you must use security group IDs instead.

Default: Amazon EC2 uses the default security group.

", - "locationName":"SecurityGroup" - }, - "SecurityGroupIds":{ - "shape":"SecurityGroupIdStringList", - "documentation":"

One or more security group IDs. You can create a security group using CreateSecurityGroup.

Default: Amazon EC2 uses the default security group.

", - "locationName":"SecurityGroupId" - }, - "UserData":{ - "shape":"String", - "documentation":"

The Base64-encoded MIME user data for the instances.

" - }, - "InstanceType":{ - "shape":"InstanceType", - "documentation":"

The instance type. For more information, see Instance Types in the Amazon Elastic Compute Cloud User Guide.

Default: m1.small

" - }, - "Placement":{ - "shape":"Placement", - "documentation":"

The placement for the instance.

" - }, - "KernelId":{ - "shape":"String", - "documentation":"

The ID of the kernel.

We recommend that you use PV-GRUB instead of kernels and RAM disks. For more information, see PV-GRUB in the Amazon Elastic Compute Cloud User Guide.

" - }, - "RamdiskId":{ - "shape":"String", - "documentation":"

The ID of the RAM disk.

We recommend that you use PV-GRUB instead of kernels and RAM disks. For more information, see PV-GRUB in the Amazon Elastic Compute Cloud User Guide.

" - }, - "BlockDeviceMappings":{ - "shape":"BlockDeviceMappingRequestList", - "documentation":"

The block device mapping.

", - "locationName":"BlockDeviceMapping" - }, - "Monitoring":{ - "shape":"RunInstancesMonitoringEnabled", - "documentation":"

The monitoring for the instance.

" - }, - "SubnetId":{ - "shape":"String", - "documentation":"

[EC2-VPC] The ID of the subnet to launch the instance into.

" - }, - "DisableApiTermination":{ - "shape":"Boolean", - "documentation":"

If you set this parameter to true, you can't terminate the instance using the Amazon EC2 console, CLI, or API; otherwise, you can. If you set this parameter to true and then later want to be able to terminate the instance, you must first change the value of the disableApiTermination attribute to false using ModifyInstanceAttribute. Alternatively, if you set InstanceInitiatedShutdownBehavior to terminate, you can terminate the instance by running the shutdown command from the instance.

Default: false

", - "locationName":"disableApiTermination" - }, - "InstanceInitiatedShutdownBehavior":{ - "shape":"ShutdownBehavior", - "documentation":"

Indicates whether an instance stops or terminates when you initiate shutdown from the instance (using the operating system command for system shutdown).

Default: stop

", - "locationName":"instanceInitiatedShutdownBehavior" - }, - "PrivateIpAddress":{ - "shape":"String", - "documentation":"

[EC2-VPC] The primary IP address. You must specify a value from the IP address range of the subnet.

Only one private IP address can be designated as primary. Therefore, you can't specify this parameter if PrivateIpAddresses.n.Primary is set to true and PrivateIpAddresses.n.PrivateIpAddress is set to an IP address.

Default: We select an IP address from the IP address range of the subnet.

", - "locationName":"privateIpAddress" - }, - "ClientToken":{ - "shape":"String", - "documentation":"

Unique, case-sensitive identifier you provide to ensure the idempotency of the request. For more information, see How to Ensure Idempotency in the Amazon Elastic Compute Cloud User Guide.

Constraints: Maximum 64 ASCII characters

", - "locationName":"clientToken" - }, - "AdditionalInfo":{ - "shape":"String", - "documentation":"

Reserved.

", - "locationName":"additionalInfo" - }, - "NetworkInterfaces":{ - "shape":"InstanceNetworkInterfaceSpecificationList", - "documentation":"

One or more network interfaces.

", - "locationName":"networkInterface" - }, - "IamInstanceProfile":{ - "shape":"IamInstanceProfileSpecification", - "documentation":"

The IAM instance profile.

", - "locationName":"iamInstanceProfile" - }, - "EbsOptimized":{ - "shape":"Boolean", - "documentation":"

Indicates whether the instance is optimized for 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.

Default: false

", - "locationName":"ebsOptimized" - } - } - }, - "S3Storage":{ - "type":"structure", - "members":{ - "Bucket":{ - "shape":"String", - "documentation":"

The bucket in which to store the AMI. You can specify a bucket that you already own or a new bucket that Amazon EC2 creates on your behalf. If you specify a bucket that belongs to someone else, Amazon EC2 returns an error.

", - "locationName":"bucket" - }, - "Prefix":{ - "shape":"String", - "documentation":"

The beginning of the file name of the AMI.

", - "locationName":"prefix" - }, - "AWSAccessKeyId":{ - "shape":"String", - "documentation":"

The access key ID of the owner of the bucket. Before you specify a value for your access key ID, review and follow the guidance in Best Practices for Managing AWS Access Keys.

" - }, - "UploadPolicy":{ - "shape":"Blob", - "documentation":"

A Base64-encoded Amazon S3 upload policy that gives Amazon EC2 permission to upload items into Amazon S3 on your behalf.

", - "locationName":"uploadPolicy" - }, - "UploadPolicySignature":{ - "shape":"String", - "documentation":"

The signature of the Base64 encoded JSON document.

", - "locationName":"uploadPolicySignature" - } - }, - "documentation":"

Describes the S3 bucket for an instance store-backed AMI.

" - }, - "SecurityGroup":{ - "type":"structure", - "members":{ - "OwnerId":{ - "shape":"String", - "documentation":"

The AWS account ID of the owner of the security group.

", - "locationName":"ownerId" - }, - "GroupName":{ - "shape":"String", - "documentation":"

The name of the security group.

", - "locationName":"groupName" - }, - "GroupId":{ - "shape":"String", - "documentation":"

The ID of the security group.

", - "locationName":"groupId" - }, - "Description":{ - "shape":"String", - "documentation":"

A description of the security group.

", - "locationName":"groupDescription" - }, - "IpPermissions":{ - "shape":"IpPermissionList", - "documentation":"

One or more inbound rules associated with the security group.

", - "locationName":"ipPermissions" - }, - "IpPermissionsEgress":{ - "shape":"IpPermissionList", - "documentation":"

[EC2-VPC] One or more outbound rules associated with the security group.

", - "locationName":"ipPermissionsEgress" - }, - "VpcId":{ - "shape":"String", - "documentation":"

[EC2-VPC] The ID of the VPC for the security group.

", - "locationName":"vpcId" - }, - "Tags":{ - "shape":"TagList", - "documentation":"

Any tags assigned to the security group.

", - "locationName":"tagSet" - } - }, - "documentation":"

Describes a security group

" - }, - "SecurityGroupIdStringList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"SecurityGroupId" - } - }, - "SecurityGroupList":{ - "type":"list", - "member":{ - "shape":"SecurityGroup", - "locationName":"item" - } - }, - "SecurityGroupStringList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"SecurityGroup" - } - }, - "ShutdownBehavior":{ - "type":"string", - "enum":[ - "stop", - "terminate" - ] - }, - "Snapshot":{ - "type":"structure", - "members":{ - "SnapshotId":{ - "shape":"String", - "documentation":"

The ID of the snapshot.

", - "locationName":"snapshotId" - }, - "VolumeId":{ - "shape":"String", - "documentation":"

The ID of the volume.

", - "locationName":"volumeId" - }, - "State":{ - "shape":"SnapshotState", - "documentation":"

The snapshot state.

", - "locationName":"status" - }, - "StartTime":{ - "shape":"DateTime", - "documentation":"

The time stamp when the snapshot was initiated.

", - "locationName":"startTime" - }, - "Progress":{ - "shape":"String", - "documentation":"

The progress of the snapshot, as a percentage.

", - "locationName":"progress" - }, - "OwnerId":{ - "shape":"String", - "documentation":"

The AWS account ID of the Amazon EBS snapshot owner.

", - "locationName":"ownerId" - }, - "Description":{ - "shape":"String", - "documentation":"

The description for the snapshot.

", - "locationName":"description" - }, - "VolumeSize":{ - "shape":"Integer", - "documentation":"

The size of the volume, in GiB.

", - "locationName":"volumeSize" - }, - "OwnerAlias":{ - "shape":"String", - "documentation":"

The AWS account alias (for example, amazon, self) or AWS account ID that owns the snapshot.

", - "locationName":"ownerAlias" - }, - "Tags":{ - "shape":"TagList", - "documentation":"

Any tags assigned to the snapshot.

", - "locationName":"tagSet" - }, - "Encrypted":{ - "shape":"Boolean", - "documentation":"

Indicates whether the snapshot is encrypted.

", - "locationName":"encrypted" - } - }, - "documentation":"

Describes a snapshot.

" - }, - "SnapshotAttributeName":{ - "type":"string", - "enum":[ - "productCodes", - "createVolumePermission" - ] - }, - "SnapshotIdStringList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"SnapshotId" - } - }, - "SnapshotList":{ - "type":"list", - "member":{ - "shape":"Snapshot", - "locationName":"item" - } - }, - "SnapshotState":{ - "type":"string", - "enum":[ - "pending", - "completed", - "error" - ] - }, - "SpotDatafeedSubscription":{ - "type":"structure", - "members":{ - "OwnerId":{ - "shape":"String", - "documentation":"

The AWS account ID of the account.

", - "locationName":"ownerId" - }, - "Bucket":{ - "shape":"String", - "documentation":"

The Amazon S3 bucket where the Spot Instance datafeed is located.

", - "locationName":"bucket" - }, - "Prefix":{ - "shape":"String", - "documentation":"

The prefix that is prepended to datafeed files.

", - "locationName":"prefix" - }, - "State":{ - "shape":"DatafeedSubscriptionState", - "documentation":"

The state of the Spot Instance datafeed subscription.

", - "locationName":"state" - }, - "Fault":{ - "shape":"SpotInstanceStateFault", - "documentation":"

The fault codes for the Spot Instance request, if any.

", - "locationName":"fault" - } - }, - "documentation":"

Describes the datafeed for a Spot Instance.

" - }, - "SpotInstanceRequest":{ - "type":"structure", - "members":{ - "SpotInstanceRequestId":{ - "shape":"String", - "documentation":"

The ID of the Spot Instance request.

", - "locationName":"spotInstanceRequestId" - }, - "SpotPrice":{ - "shape":"String", - "documentation":"

The maximum hourly price for any Spot Instance launched to fulfill the request.

", - "locationName":"spotPrice" - }, - "Type":{ - "shape":"SpotInstanceType", - "documentation":"

The Spot Instance request type.

", - "locationName":"type" - }, - "State":{ - "shape":"SpotInstanceState", - "documentation":"

The state of the Spot Instance request. Spot bid status information can help you track your Spot Instance requests. For information, see Tracking Spot Requests with Bid Status Codes in the Amazon Elastic Compute Cloud User Guide.

", - "locationName":"state" - }, - "Fault":{ - "shape":"SpotInstanceStateFault", - "documentation":"

The fault codes for the Spot Instance request, if any.

", - "locationName":"fault" - }, - "Status":{ - "shape":"SpotInstanceStatus", - "documentation":"

The status code and status message describing the Spot Instance request.

", - "locationName":"status" - }, - "ValidFrom":{ - "shape":"DateTime", - "documentation":"

The start date of the request. If this is a one-time request, the request becomes active at this date and time and remains active until all instances launch, the request expires, or the request is canceled. If the request is persistent, the request becomes active at this date and time and remains active until it expires or is canceled.

", - "locationName":"validFrom" - }, - "ValidUntil":{ - "shape":"DateTime", - "documentation":"

The end date of the request. If this is a one-time request, the request remains active until all instances launch, the request is canceled, or this date is reached. If the request is persistent, it remains active until it is canceled or this date is reached.

", - "locationName":"validUntil" - }, - "LaunchGroup":{ - "shape":"String", - "documentation":"

The instance launch group. Launch groups are Spot Instances that launch together and terminate together.

", - "locationName":"launchGroup" - }, - "AvailabilityZoneGroup":{ - "shape":"String", - "documentation":"

The Availability Zone group. If you specify the same Availability Zone group for all Spot Instance requests, all Spot Instances are launched in the same Availability Zone.

", - "locationName":"availabilityZoneGroup" - }, - "LaunchSpecification":{ - "shape":"LaunchSpecification", - "documentation":"

Additional information for launching instances.

", - "locationName":"launchSpecification" - }, - "InstanceId":{ - "shape":"String", - "documentation":"

The instance ID, if an instance has been launched to fulfill the Spot Instance request.

", - "locationName":"instanceId" - }, - "CreateTime":{ - "shape":"DateTime", - "documentation":"

The time stamp when the Spot Instance request was created.

", - "locationName":"createTime" - }, - "ProductDescription":{ - "shape":"RIProductDescription", - "documentation":"

The product description associated with the Spot Instance.

", - "locationName":"productDescription" - }, - "Tags":{ - "shape":"TagList", - "documentation":"

Any tags assigned to the resource.

", - "locationName":"tagSet" - }, - "LaunchedAvailabilityZone":{ - "shape":"String", - "documentation":"

The Availability Zone in which the bid is launched.

", - "locationName":"launchedAvailabilityZone" - } - }, - "documentation":"

Describe a Spot Instance request.

" - }, - "SpotInstanceRequestIdList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"SpotInstanceRequestId" - } - }, - "SpotInstanceRequestList":{ - "type":"list", - "member":{ - "shape":"SpotInstanceRequest", - "locationName":"item" - } - }, - "SpotInstanceState":{ - "type":"string", - "enum":[ - "open", - "active", - "closed", - "cancelled", - "failed" - ] - }, - "SpotInstanceStateFault":{ - "type":"structure", - "members":{ - "Code":{ - "shape":"String", - "documentation":"

The reason code for the Spot Instance state change.

", - "locationName":"code" - }, - "Message":{ - "shape":"String", - "documentation":"

The message for the Spot Instance state change.

", - "locationName":"message" - } - }, - "documentation":"

Describes a Spot Instance state change.

" - }, - "SpotInstanceStatus":{ - "type":"structure", - "members":{ - "Code":{ - "shape":"String", - "documentation":"

The status code of the request.

", - "locationName":"code" - }, - "UpdateTime":{ - "shape":"DateTime", - "documentation":"

The time of the most recent status update.

", - "locationName":"updateTime" - }, - "Message":{ - "shape":"String", - "documentation":"

The description for the status code for the Spot request.

", - "locationName":"message" - } - }, - "documentation":"

Describes a Spot Instance request.

" - }, - "SpotInstanceType":{ - "type":"string", - "enum":[ - "one-time", - "persistent" - ] - }, - "SpotPlacement":{ - "type":"structure", - "members":{ - "AvailabilityZone":{ - "shape":"String", - "documentation":"

The Availability Zone.

", - "locationName":"availabilityZone" - }, - "GroupName":{ - "shape":"String", - "documentation":"

The name of the placement group (for cluster instances).

", - "locationName":"groupName" - } - }, - "documentation":"

Describes Spot Instance placement.

" - }, - "SpotPrice":{ - "type":"structure", - "members":{ - "InstanceType":{ - "shape":"InstanceType", - "documentation":"

The instance type.

", - "locationName":"instanceType" - }, - "ProductDescription":{ - "shape":"RIProductDescription", - "documentation":"

A general description of the AMI.

", - "locationName":"productDescription" - }, - "SpotPrice":{ - "shape":"String", - "documentation":"

The maximum price you will pay to launch one or more Spot Instances.

", - "locationName":"spotPrice" - }, - "Timestamp":{ - "shape":"DateTime", - "documentation":"

The date and time the request was created.

", - "locationName":"timestamp" - }, - "AvailabilityZone":{ - "shape":"String", - "documentation":"

The Availability Zone.

", - "locationName":"availabilityZone" - } - }, - "documentation":"

Describes the Spot Price.

" - }, - "SpotPriceHistoryList":{ - "type":"list", - "member":{ - "shape":"SpotPrice", - "locationName":"item" - } - }, - "StartInstancesRequest":{ - "type":"structure", - "required":["InstanceIds"], - "members":{ - "InstanceIds":{ - "shape":"InstanceIdStringList", - "documentation":"

One or more instance IDs.

", - "locationName":"InstanceId" - }, - "AdditionalInfo":{ - "shape":"String", - "documentation":"

Reserved.

", - "locationName":"additionalInfo" - }, - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - } - } - }, - "StartInstancesResult":{ - "type":"structure", - "members":{ - "StartingInstances":{ - "shape":"InstanceStateChangeList", - "documentation":"

Information about one or more started instances.

", - "locationName":"instancesSet" - } - } - }, - "StateReason":{ - "type":"structure", - "members":{ - "Code":{ - "shape":"String", - "documentation":"

The reason code for the state change.

", - "locationName":"code" - }, - "Message":{ - "shape":"String", - "documentation":"

The message for the state change.

", - "locationName":"message" - } - }, - "documentation":"

Describes a state change.

" - }, - "StatusName":{ - "type":"string", - "enum":["reachability"] - }, - "StatusType":{ - "type":"string", - "enum":[ - "passed", - "failed", - "insufficient-data" - ] - }, - "StopInstancesRequest":{ - "type":"structure", - "required":["InstanceIds"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "InstanceIds":{ - "shape":"InstanceIdStringList", - "documentation":"

One or more instance IDs.

", - "locationName":"InstanceId" - }, - "Force":{ - "shape":"Boolean", - "documentation":"

Forces the instances to stop. The instances do not have an opportunity to flush file system caches or file system metadata. If you use this option, you must perform file system check and repair procedures. This option is not recommended for Windows instances.

Default: false

", - "locationName":"force" - } - } - }, - "StopInstancesResult":{ - "type":"structure", - "members":{ - "StoppingInstances":{ - "shape":"InstanceStateChangeList", - "documentation":"

Information about one or more stopped instances.

", - "locationName":"instancesSet" - } - } - }, - "Storage":{ - "type":"structure", - "members":{ - "S3":{ - "shape":"S3Storage", - "documentation":"

An Amazon S3 storage location.

" - } - }, - "documentation":"

Describes the storage location for an instance store-backed AMI.

" - }, - "String":{"type":"string"}, - "Subnet":{ - "type":"structure", - "members":{ - "SubnetId":{ - "shape":"String", - "documentation":"

The ID of the subnet.

", - "locationName":"subnetId" - }, - "State":{ - "shape":"SubnetState", - "documentation":"

The current state of the subnet.

", - "locationName":"state" - }, - "VpcId":{ - "shape":"String", - "documentation":"

The ID of the VPC the subnet is in.

", - "locationName":"vpcId" - }, - "CidrBlock":{ - "shape":"String", - "documentation":"

The CIDR block assigned to the subnet.

", - "locationName":"cidrBlock" - }, - "AvailableIpAddressCount":{ - "shape":"Integer", - "documentation":"

The number of unused IP addresses in the subnet. Note that the IP addresses for any stopped instances are considered unavailable.

", - "locationName":"availableIpAddressCount" - }, - "AvailabilityZone":{ - "shape":"String", - "documentation":"

The Availability Zone of the subnet.

", - "locationName":"availabilityZone" - }, - "DefaultForAz":{ - "shape":"Boolean", - "documentation":"

Indicates whether this is the default subnet for the Availability Zone.

", - "locationName":"defaultForAz" - }, - "MapPublicIpOnLaunch":{ - "shape":"Boolean", - "documentation":"

Indicates whether instances launched in this subnet receive a public IP address.

", - "locationName":"mapPublicIpOnLaunch" - }, - "Tags":{ - "shape":"TagList", - "documentation":"

Any tags assigned to the subnet.

", - "locationName":"tagSet" - } - }, - "documentation":"

Describes a subnet.

" - }, - "SubnetIdStringList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"SubnetId" - } - }, - "SubnetList":{ - "type":"list", - "member":{ - "shape":"Subnet", - "locationName":"item" - } - }, - "SubnetState":{ - "type":"string", - "enum":[ - "pending", - "available" - ] - }, - "SummaryStatus":{ - "type":"string", - "enum":[ - "ok", - "impaired", - "insufficient-data", - "not-applicable" - ] - }, - "Tag":{ - "type":"structure", - "members":{ - "Key":{ - "shape":"String", - "documentation":"

The key of the tag.

Constraints: Tag keys are case-sensitive and accept a maximum of 127 Unicode characters. May not begin with aws:

", - "locationName":"key" - }, - "Value":{ - "shape":"String", - "documentation":"

The value of the tag.

Constraints: Tag values are case-sensitive and accept a maximum of 255 Unicode characters.

", - "locationName":"value" - } - }, - "documentation":"

Describes a tag.

" - }, - "TagDescription":{ - "type":"structure", - "members":{ - "ResourceId":{ - "shape":"String", - "documentation":"

The ID of the resource. For example, ami-1a2b3c4d.

", - "locationName":"resourceId" - }, - "ResourceType":{ - "shape":"ResourceType", - "documentation":"

The type of resource.

", - "locationName":"resourceType" - }, - "Key":{ - "shape":"String", - "documentation":"

The key of the tag.

", - "locationName":"key" - }, - "Value":{ - "shape":"String", - "documentation":"

The value of the tag.

", - "locationName":"value" - } - }, - "documentation":"

Describes a tag.

" - }, - "TagDescriptionList":{ - "type":"list", - "member":{ - "shape":"TagDescription", - "locationName":"item" - } - }, - "TagList":{ - "type":"list", - "member":{ - "shape":"Tag", - "locationName":"item" - } - }, - "TelemetryStatus":{ - "type":"string", - "enum":[ - "UP", - "DOWN" - ] - }, - "Tenancy":{ - "type":"string", - "enum":[ - "default", - "dedicated" - ] - }, - "TerminateInstancesRequest":{ - "type":"structure", - "required":["InstanceIds"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "InstanceIds":{ - "shape":"InstanceIdStringList", - "documentation":"

One or more instance IDs.

", - "locationName":"InstanceId" - } - } - }, - "TerminateInstancesResult":{ - "type":"structure", - "members":{ - "TerminatingInstances":{ - "shape":"InstanceStateChangeList", - "documentation":"

Information about one or more terminated instances.

", - "locationName":"instancesSet" - } - } - }, - "UnassignPrivateIpAddressesRequest":{ - "type":"structure", - "required":[ - "NetworkInterfaceId", - "PrivateIpAddresses" - ], - "members":{ - "NetworkInterfaceId":{ - "shape":"String", - "documentation":"

The ID of the network interface.

", - "locationName":"networkInterfaceId" - }, - "PrivateIpAddresses":{ - "shape":"PrivateIpAddressStringList", - "documentation":"

The secondary private IP addresses to unassign from the network interface. You can specify this option multiple times to unassign more than one IP address.

", - "locationName":"privateIpAddress" - } - } - }, - "UnmonitorInstancesRequest":{ - "type":"structure", - "required":["InstanceIds"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "InstanceIds":{ - "shape":"InstanceIdStringList", - "documentation":"

One or more instance IDs.

", - "locationName":"InstanceId" - } - } - }, - "UnmonitorInstancesResult":{ - "type":"structure", - "members":{ - "InstanceMonitorings":{ - "shape":"InstanceMonitoringList", - "documentation":"

Monitoring information for one or more instances.

", - "locationName":"instancesSet" - } - } - }, - "UserGroupStringList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"UserGroup" - } - }, - "UserIdGroupPair":{ - "type":"structure", - "members":{ - "UserId":{ - "shape":"String", - "documentation":"

The ID of an AWS account.

", - "locationName":"userId" - }, - "GroupName":{ - "shape":"String", - "documentation":"

The ID of the security group owned by the specified AWS account.

", - "locationName":"groupName" - }, - "GroupId":{ - "shape":"String", - "documentation":"

The name of the security group in the specified AWS account.

", - "locationName":"groupId" - } - }, - "documentation":"

Describes a security group and AWS account ID pair for EC2-Classic.

" - }, - "UserIdGroupPairList":{ - "type":"list", - "member":{ - "shape":"UserIdGroupPair", - "locationName":"item" - } - }, - "UserIdStringList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"UserId" - } - }, - "ValueStringList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"item" - } - }, - "VgwTelemetry":{ - "type":"structure", - "members":{ - "OutsideIpAddress":{ - "shape":"String", - "documentation":"

The Internet-routable IP address of the virtual private gateway's outside interface.

", - "locationName":"outsideIpAddress" - }, - "Status":{ - "shape":"TelemetryStatus", - "documentation":"

The status of the VPN tunnel.

", - "locationName":"status" - }, - "LastStatusChange":{ - "shape":"DateTime", - "documentation":"

The date and time of the last change in status.

", - "locationName":"lastStatusChange" - }, - "StatusMessage":{ - "shape":"String", - "documentation":"

If an error occurs, a description of the error.

", - "locationName":"statusMessage" - }, - "AcceptedRouteCount":{ - "shape":"Integer", - "documentation":"

The number of accepted routes.

", - "locationName":"acceptedRouteCount" - } - }, - "documentation":"

Describes telemetry for a VPN tunnel.

" - }, - "VgwTelemetryList":{ - "type":"list", - "member":{ - "shape":"VgwTelemetry", - "locationName":"item" - } - }, - "VirtualizationType":{ - "type":"string", - "enum":[ - "hvm", - "paravirtual" - ] - }, - "Volume":{ - "type":"structure", - "members":{ - "VolumeId":{ - "shape":"String", - "documentation":"

The ID of the volume.

", - "locationName":"volumeId" - }, - "Size":{ - "shape":"Integer", - "documentation":"

The size of the volume, in GiBs.

", - "locationName":"size" - }, - "SnapshotId":{ - "shape":"String", - "documentation":"

The snapshot from which the volume was created, if applicable.

", - "locationName":"snapshotId" - }, - "AvailabilityZone":{ - "shape":"String", - "documentation":"

The Availability Zone for the volume.

", - "locationName":"availabilityZone" - }, - "State":{ - "shape":"VolumeState", - "documentation":"

The volume state.

", - "locationName":"status" - }, - "CreateTime":{ - "shape":"DateTime", - "documentation":"

The time stamp when volume creation was initiated.

", - "locationName":"createTime" - }, - "Attachments":{ - "shape":"VolumeAttachmentList", - "locationName":"attachmentSet" - }, - "Tags":{ - "shape":"TagList", - "documentation":"

Any tags assigned to the volume.

", - "locationName":"tagSet" - }, - "VolumeType":{ - "shape":"VolumeType", - "documentation":"

The volume type. This can be gp2 for General Purpose (SSD) volumes, io1 for Provisioned IOPS (SSD) volumes, or standard for Magnetic volumes.

", - "locationName":"volumeType" - }, - "Iops":{ - "shape":"Integer", - "documentation":"

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. For more information on General Purpose (SSD) baseline performance, I/O credits, and bursting, see Amazon EBS Volume Types in the Amazon Elastic Compute Cloud User Guide.

Constraint: Range is 100 to 4000 for Provisioned IOPS (SSD) volumes and 3 to 3072 for General Purpose (SSD) volumes.

Condition: This parameter is required for requests to create io1 volumes; it is not used in requests to create standard or gp2 volumes.

", - "locationName":"iops" - }, - "Encrypted":{ - "shape":"Boolean", - "documentation":"

Indicates whether the volume is encrypted.

", - "locationName":"encrypted" - } - }, - "documentation":"

Describes a volume.

" - }, - "VolumeAttachment":{ - "type":"structure", - "members":{ - "VolumeId":{ - "shape":"String", - "documentation":"

The ID of the volume.

", - "locationName":"volumeId" - }, - "InstanceId":{ - "shape":"String", - "documentation":"

The ID of the instance.

", - "locationName":"instanceId" - }, - "Device":{ - "shape":"String", - "documentation":"

The device name.

", - "locationName":"device" - }, - "State":{ - "shape":"VolumeAttachmentState", - "documentation":"

The attachment state of the volume.

", - "locationName":"status" - }, - "AttachTime":{ - "shape":"DateTime", - "documentation":"

The time stamp when the attachment initiated.

", - "locationName":"attachTime" - }, - "DeleteOnTermination":{ - "shape":"Boolean", - "documentation":"

Indicates whether the Amazon EBS volume is deleted on instance termination.

", - "locationName":"deleteOnTermination" - } - }, - "documentation":"

Describes volume attachment details.

" - }, - "VolumeAttachmentList":{ - "type":"list", - "member":{ - "shape":"VolumeAttachment", - "locationName":"item" - } - }, - "VolumeAttachmentState":{ - "type":"string", - "enum":[ - "attaching", - "attached", - "detaching", - "detached" - ] - }, - "VolumeAttributeName":{ - "type":"string", - "enum":[ - "autoEnableIO", - "productCodes" - ] - }, - "VolumeDetail":{ - "type":"structure", - "required":["Size"], - "members":{ - "Size":{ - "shape":"Long", - "documentation":"

The size of the volume, in GiB.

", - "locationName":"size" - } - }, - "documentation":"

Describes an Amazon EBS volume.

" - }, - "VolumeIdStringList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"VolumeId" - } - }, - "VolumeList":{ - "type":"list", - "member":{ - "shape":"Volume", - "locationName":"item" - } - }, - "VolumeState":{ - "type":"string", - "enum":[ - "creating", - "available", - "in-use", - "deleting", - "deleted", - "error" - ] - }, - "VolumeStatusAction":{ - "type":"structure", - "members":{ - "Code":{ - "shape":"String", - "documentation":"

The code identifying the operation, for example, enable-volume-io.

", - "locationName":"code" - }, - "Description":{ - "shape":"String", - "documentation":"

A description of the operation.

", - "locationName":"description" - }, - "EventType":{ - "shape":"String", - "documentation":"

The event type associated with this operation.

", - "locationName":"eventType" - }, - "EventId":{ - "shape":"String", - "documentation":"

The ID of the event associated with this operation.

", - "locationName":"eventId" - } - }, - "documentation":"

Describes a volume status operation code.

" - }, - "VolumeStatusActionsList":{ - "type":"list", - "member":{ - "shape":"VolumeStatusAction", - "locationName":"item" - } - }, - "VolumeStatusDetails":{ - "type":"structure", - "members":{ - "Name":{ - "shape":"VolumeStatusName", - "documentation":"

The name of the volume status.

", - "locationName":"name" - }, - "Status":{ - "shape":"String", - "documentation":"

The intended status of the volume status.

", - "locationName":"status" - } - }, - "documentation":"

Describes a volume status.

" - }, - "VolumeStatusDetailsList":{ - "type":"list", - "member":{ - "shape":"VolumeStatusDetails", - "locationName":"item" - } - }, - "VolumeStatusEvent":{ - "type":"structure", - "members":{ - "EventType":{ - "shape":"String", - "documentation":"

The type of this event.

", - "locationName":"eventType" - }, - "Description":{ - "shape":"String", - "documentation":"

A description of the event.

", - "locationName":"description" - }, - "NotBefore":{ - "shape":"DateTime", - "documentation":"

The earliest start time of the event.

", - "locationName":"notBefore" - }, - "NotAfter":{ - "shape":"DateTime", - "documentation":"

The latest end time of the event.

", - "locationName":"notAfter" - }, - "EventId":{ - "shape":"String", - "documentation":"

The ID of this event.

", - "locationName":"eventId" - } - }, - "documentation":"

Describes a volume status event.

" - }, - "VolumeStatusEventsList":{ - "type":"list", - "member":{ - "shape":"VolumeStatusEvent", - "locationName":"item" - } - }, - "VolumeStatusInfo":{ - "type":"structure", - "members":{ - "Status":{ - "shape":"VolumeStatusInfoStatus", - "documentation":"

The status of the volume.

", - "locationName":"status" - }, - "Details":{ - "shape":"VolumeStatusDetailsList", - "documentation":"

The details of the volume status.

", - "locationName":"details" - } - }, - "documentation":"

Describes the status of a volume.

" - }, - "VolumeStatusInfoStatus":{ - "type":"string", - "enum":[ - "ok", - "impaired", - "insufficient-data" - ] - }, - "VolumeStatusItem":{ - "type":"structure", - "members":{ - "VolumeId":{ - "shape":"String", - "documentation":"

The volume ID.

", - "locationName":"volumeId" - }, - "AvailabilityZone":{ - "shape":"String", - "documentation":"

The Availability Zone of the volume.

", - "locationName":"availabilityZone" - }, - "VolumeStatus":{ - "shape":"VolumeStatusInfo", - "documentation":"

The volume status.

", - "locationName":"volumeStatus" - }, - "Events":{ - "shape":"VolumeStatusEventsList", - "documentation":"

A list of events associated with the volume.

", - "locationName":"eventsSet" - }, - "Actions":{ - "shape":"VolumeStatusActionsList", - "documentation":"

The details of the operation.

", - "locationName":"actionsSet" - } - }, - "documentation":"

Describes the volume status.

" - }, - "VolumeStatusList":{ - "type":"list", - "member":{ - "shape":"VolumeStatusItem", - "locationName":"item" - } - }, - "VolumeStatusName":{ - "type":"string", - "enum":[ - "io-enabled", - "io-performance" - ] - }, - "VolumeType":{ - "type":"string", - "enum":[ - "standard", - "io1", - "gp2" - ] - }, - "Vpc":{ - "type":"structure", - "members":{ - "VpcId":{ - "shape":"String", - "documentation":"

The ID of the VPC.

", - "locationName":"vpcId" - }, - "State":{ - "shape":"VpcState", - "documentation":"

The current state of the VPC.

", - "locationName":"state" - }, - "CidrBlock":{ - "shape":"String", - "documentation":"

The CIDR block for the VPC.

", - "locationName":"cidrBlock" - }, - "DhcpOptionsId":{ - "shape":"String", - "documentation":"

The ID of the set of DHCP options you've associated with the VPC (or default if the default options are associated with the VPC).

", - "locationName":"dhcpOptionsId" - }, - "Tags":{ - "shape":"TagList", - "documentation":"

Any tags assigned to the VPC.

", - "locationName":"tagSet" - }, - "InstanceTenancy":{ - "shape":"Tenancy", - "documentation":"

The allowed tenancy of instances launched into the VPC.

", - "locationName":"instanceTenancy" - }, - "IsDefault":{ - "shape":"Boolean", - "documentation":"

Indicates whether the VPC is the default VPC.

", - "locationName":"isDefault" - } - }, - "documentation":"

Describes a VPC.

" - }, - "VpcAttachment":{ - "type":"structure", - "members":{ - "VpcId":{ - "shape":"String", - "documentation":"

The ID of the VPC.

", - "locationName":"vpcId" - }, - "State":{ - "shape":"AttachmentStatus", - "documentation":"

The current state of the attachment.

", - "locationName":"state" - } - }, - "documentation":"

Describes an attachment between a virtual private gateway and a VPC.

" - }, - "VpcAttachmentList":{ - "type":"list", - "member":{ - "shape":"VpcAttachment", - "locationName":"item" - } - }, - "VpcAttributeName":{ - "type":"string", - "enum":[ - "enableDnsSupport", - "enableDnsHostnames" - ] - }, - "VpcIdStringList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"VpcId" - } - }, - "VpcList":{ - "type":"list", - "member":{ - "shape":"Vpc", - "locationName":"item" - } - }, - "VpcPeeringConnection":{ - "type":"structure", - "members":{ - "AccepterVpcInfo":{ - "shape":"VpcPeeringConnectionVpcInfo", - "documentation":"

The information of the peer VPC.

", - "locationName":"accepterVpcInfo" - }, - "ExpirationTime":{ - "shape":"DateTime", - "documentation":"

The time that an unaccepted VPC peering connection will expire.

", - "locationName":"expirationTime" - }, - "RequesterVpcInfo":{ - "shape":"VpcPeeringConnectionVpcInfo", - "documentation":"

The information of the requester VPC.

", - "locationName":"requesterVpcInfo" - }, - "Status":{ - "shape":"VpcPeeringConnectionStateReason", - "documentation":"

The status of the VPC peering connection.

", - "locationName":"status" - }, - "Tags":{ - "shape":"TagList", - "documentation":"

Any tags assigned to the resource.

", - "locationName":"tagSet" - }, - "VpcPeeringConnectionId":{ - "shape":"String", - "documentation":"

The ID of the VPC peering connection.

", - "locationName":"vpcPeeringConnectionId" - } - }, - "documentation":"

Describes a VPC peering connection.

" - }, - "VpcPeeringConnectionList":{ - "type":"list", - "member":{ - "shape":"VpcPeeringConnection", - "locationName":"item" - } - }, - "VpcPeeringConnectionStateReason":{ - "type":"structure", - "members":{ - "Code":{ - "shape":"String", - "documentation":"

The status of the VPC peering connection.

", - "locationName":"code" - }, - "Message":{ - "shape":"String", - "documentation":"

A message that provides more information about the status, if applicable.

", - "locationName":"message" - } - }, - "documentation":"

Describes the status of a VPC peering connection.

" - }, - "VpcPeeringConnectionVpcInfo":{ - "type":"structure", - "members":{ - "CidrBlock":{ - "shape":"String", - "documentation":"

The CIDR block for the VPC.

", - "locationName":"cidrBlock" - }, - "OwnerId":{ - "shape":"String", - "documentation":"

The AWS account ID of the VPC owner.

", - "locationName":"ownerId" - }, - "VpcId":{ - "shape":"String", - "documentation":"

The ID of the VPC.

", - "locationName":"vpcId" - } - }, - "documentation":"

Describes a VPC in a VPC peering connection.

" - }, - "VpcState":{ - "type":"string", - "enum":[ - "pending", - "available" - ] - }, - "VpnConnection":{ - "type":"structure", - "members":{ - "VpnConnectionId":{ - "shape":"String", - "documentation":"

The ID of the VPN connection.

", - "locationName":"vpnConnectionId" - }, - "State":{ - "shape":"VpnState", - "documentation":"

The current state of the VPN connection.

", - "locationName":"state" - }, - "CustomerGatewayConfiguration":{ - "shape":"String", - "documentation":"

The configuration information for the VPN connection's customer gateway (in the native XML format). This element is always present in the CreateVpnConnection response; however, it's present in the DescribeVpnConnections response only if the VPN connection is in the pending or available state.

", - "locationName":"customerGatewayConfiguration" - }, - "Type":{ - "shape":"GatewayType", - "documentation":"

The type of VPN connection.

", - "locationName":"type" - }, - "CustomerGatewayId":{ - "shape":"String", - "documentation":"

The ID of the customer gateway at your end of the VPN connection.

", - "locationName":"customerGatewayId" - }, - "VpnGatewayId":{ - "shape":"String", - "documentation":"

The ID of the virtual private gateway at the AWS side of the VPN connection.

", - "locationName":"vpnGatewayId" - }, - "Tags":{ - "shape":"TagList", - "documentation":"

Any tags assigned to the VPN connection.

", - "locationName":"tagSet" - }, - "VgwTelemetry":{ - "shape":"VgwTelemetryList", - "documentation":"

Information about the VPN tunnel.

", - "locationName":"vgwTelemetry" - }, - "Options":{ - "shape":"VpnConnectionOptions", - "documentation":"

The VPN connection options.

", - "locationName":"options" - }, - "Routes":{ - "shape":"VpnStaticRouteList", - "documentation":"

The static routes associated with the VPN connection.

", - "locationName":"routes" - } - }, - "documentation":"

Describes a VPN connection.

" - }, - "VpnConnectionIdStringList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"VpnConnectionId" - } - }, - "VpnConnectionList":{ - "type":"list", - "member":{ - "shape":"VpnConnection", - "locationName":"item" - } - }, - "VpnConnectionOptions":{ - "type":"structure", - "members":{ - "StaticRoutesOnly":{ - "shape":"Boolean", - "documentation":"

Indicates whether the VPN connection uses static routes only. Static routes must be used for devices that don't support BGP.

", - "locationName":"staticRoutesOnly" - } - }, - "documentation":"

Describes VPN connection options.

" - }, - "VpnConnectionOptionsSpecification":{ - "type":"structure", - "members":{ - "StaticRoutesOnly":{ - "shape":"Boolean", - "documentation":"

Indicates whether the VPN connection uses static routes only. Static routes must be used for devices that don't support BGP.

", - "locationName":"staticRoutesOnly" - } - }, - "documentation":"

Describes VPN connection options.

" - }, - "VpnGateway":{ - "type":"structure", - "members":{ - "VpnGatewayId":{ - "shape":"String", - "documentation":"

The ID of the virtual private gateway.

", - "locationName":"vpnGatewayId" - }, - "State":{ - "shape":"VpnState", - "documentation":"

The current state of the virtual private gateway.

", - "locationName":"state" - }, - "Type":{ - "shape":"GatewayType", - "documentation":"

The type of VPN connection the virtual private gateway supports.

", - "locationName":"type" - }, - "AvailabilityZone":{ - "shape":"String", - "documentation":"

The Availability Zone where the virtual private gateway was created.

", - "locationName":"availabilityZone" - }, - "VpcAttachments":{ - "shape":"VpcAttachmentList", - "documentation":"

Any VPCs attached to the virtual private gateway.

", - "locationName":"attachments" - }, - "Tags":{ - "shape":"TagList", - "documentation":"

Any tags assigned to the virtual private gateway.

", - "locationName":"tagSet" - } - }, - "documentation":"

Describes a virtual private gateway.

" - }, - "VpnGatewayIdStringList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"VpnGatewayId" - } - }, - "VpnGatewayList":{ - "type":"list", - "member":{ - "shape":"VpnGateway", - "locationName":"item" - } - }, - "VpnState":{ - "type":"string", - "enum":[ - "pending", - "available", - "deleting", - "deleted" - ] - }, - "VpnStaticRoute":{ - "type":"structure", - "members":{ - "DestinationCidrBlock":{ - "shape":"String", - "documentation":"

The CIDR block associated with the local subnet of the customer data center.

", - "locationName":"destinationCidrBlock" - }, - "Source":{ - "shape":"VpnStaticRouteSource", - "documentation":"

Indicates how the routes were provided.

", - "locationName":"source" - }, - "State":{ - "shape":"VpnState", - "documentation":"

The current state of the static route.

", - "locationName":"state" - } - }, - "documentation":"

Describes a static route for a VPN connection.

" - }, - "VpnStaticRouteList":{ - "type":"list", - "member":{ - "shape":"VpnStaticRoute", - "locationName":"item" - } - }, - "VpnStaticRouteSource":{ - "type":"string", - "enum":["Static"] - }, - "ZoneNameStringList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"ZoneName" - } - }, - "NewDhcpConfigurationList":{ - "type":"list", - "member":{ - "shape":"NewDhcpConfiguration", - "locationName":"item" - } - }, - "NewDhcpConfiguration":{ - "type":"structure", - "members":{ - "Key":{ - "shape":"String", - "locationName":"key" - }, - "Values":{ - "shape":"ValueStringList", - "locationName":"Value" - } - } - }, - "DhcpConfigurationValueList":{ - "type":"list", - "member":{ - "shape":"AttributeValue", - "locationName":"item" - } - }, - "Blob":{"type":"blob"}, - "BlobAttributeValue":{ - "type":"structure", - "members":{ - "Value":{ - "shape":"Blob", - "locationName":"value" - } - } - }, - "RequestSpotLaunchSpecification":{ - "type":"structure", - "members":{ - "ImageId":{ - "shape":"String", - "documentation":"

The ID of the AMI.

", - "locationName":"imageId" - }, - "KeyName":{ - "shape":"String", - "documentation":"

The name of the key pair.

", - "locationName":"keyName" - }, - "SecurityGroups":{ - "shape":"ValueStringList", - "locationName":"SecurityGroup" - }, - "UserData":{ - "shape":"String", - "documentation":"

The Base64-encoded MIME user data to make available to the instances.

", - "locationName":"userData" - }, - "AddressingType":{ - "shape":"String", - "documentation":"

Deprecated.

", - "locationName":"addressingType" - }, - "InstanceType":{ - "shape":"InstanceType", - "documentation":"

The instance type.

Default: m1.small

", - "locationName":"instanceType" - }, - "Placement":{ - "shape":"SpotPlacement", - "documentation":"

The placement information for the instance.

", - "locationName":"placement" - }, - "KernelId":{ - "shape":"String", - "documentation":"

The ID of the kernel.

", - "locationName":"kernelId" - }, - "RamdiskId":{ - "shape":"String", - "documentation":"

The ID of the RAM disk.

", - "locationName":"ramdiskId" - }, - "BlockDeviceMappings":{ - "shape":"BlockDeviceMappingList", - "documentation":"

One or more block device mapping entries.

", - "locationName":"blockDeviceMapping" - }, - "SubnetId":{ - "shape":"String", - "documentation":"

The ID of the subnet in which to launch the Spot Instance.

", - "locationName":"subnetId" - }, - "NetworkInterfaces":{ - "shape":"InstanceNetworkInterfaceSpecificationList", - "documentation":"

One or more network interfaces.

", - "locationName":"NetworkInterface" - }, - "IamInstanceProfile":{ - "shape":"IamInstanceProfileSpecification", - "documentation":"

The IAM instance profile.

", - "locationName":"iamInstanceProfile" - }, - "EbsOptimized":{ - "shape":"Boolean", - "documentation":"

Indicates whether the instance 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. This optimization isn't available with all instance types. Additional usage charges apply when using an EBS Optimized instance.

Default: false

", - "locationName":"ebsOptimized" - }, - "Monitoring":{ - "shape":"RunInstancesMonitoringEnabled", - "locationName":"monitoring" - }, - "SecurityGroupIds":{ - "shape":"ValueStringList", - "locationName":"SecurityGroupId" - } - }, - "documentation":"

Describes the launch specification of a Spot Instance.

" - } - } -} diff --git a/src/github.com/getlantern/aws-sdk-go/apis/ec2/2014-09-01.paginators.json b/src/github.com/getlantern/aws-sdk-go/apis/ec2/2014-09-01.paginators.json deleted file mode 100644 index b643e696c1..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/apis/ec2/2014-09-01.paginators.json +++ /dev/null @@ -1,45 +0,0 @@ -{ - "pagination": { - "DescribeInstanceStatus": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxResults", - "result_key": "InstanceStatuses" - }, - "DescribeInstances": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxResults", - "result_key": "Reservations" - }, - "DescribeReservedInstancesModifications": { - "input_token": "NextToken", - "output_token": "NextToken", - "result_key": "ReservedInstancesModifications" - }, - "DescribeReservedInstancesOfferings": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxResults", - "result_key": "ReservedInstancesOfferings" - }, - "DescribeSpotPriceHistory": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxResults", - "result_key": "SpotPriceHistory" - }, - "DescribeTags": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxResults", - "result_key": "Tags" - }, - "DescribeVolumeStatus": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxResults", - "result_key": "VolumeStatuses" - } - } -} diff --git a/src/github.com/getlantern/aws-sdk-go/apis/ec2/2014-09-01.waiters.json b/src/github.com/getlantern/aws-sdk-go/apis/ec2/2014-09-01.waiters.json deleted file mode 100644 index fb8c16bdf2..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/apis/ec2/2014-09-01.waiters.json +++ /dev/null @@ -1,341 +0,0 @@ -{ - "version": 2, - "waiters": { - "BundleTaskComplete": { - "delay": 15, - "operation": "DescribeBundleTasks", - "maxAttempts": 40, - "acceptors": [ - { - "expected": "complete", - "matcher": "pathAll", - "state": "success", - "argument": "BundleTasks[].State" - }, - { - "expected": "failed", - "matcher": "pathAny", - "state": "failure", - "argument": "BundleTasks[].State" - } - ] - }, - "ConversionTaskCancelled": { - "delay": 15, - "operation": "DescribeConversionTasks", - "maxAttempts": 40, - "acceptors": [ - { - "expected": "cancelled", - "matcher": "pathAll", - "state": "success", - "argument": "ConversionTasks[].State" - } - ] - }, - "ConversionTaskCompleted": { - "delay": 15, - "operation": "DescribeConversionTasks", - "maxAttempts": 40, - "acceptors": [ - { - "expected": "completed", - "matcher": "pathAll", - "state": "success", - "argument": "ConversionTasks[].State" - }, - { - "expected": "cancelled", - "matcher": "pathAny", - "state": "failure", - "argument": "ConversionTasks[].State" - }, - { - "expected": "cancelling", - "matcher": "pathAny", - "state": "failure", - "argument": "ConversionTasks[].State" - } - ] - }, - "ConversionTaskDeleted": { - "delay": 15, - "operation": "DescribeConversionTasks", - "maxAttempts": 40, - "acceptors": [ - { - "expected": "deleted", - "matcher": "pathAll", - "state": "success", - "argument": "ConversionTasks[].State" - } - ] - }, - "CustomerGatewayAvailable": { - "delay": 15, - "operation": "DescribeCustomerGateways", - "maxAttempts": 40, - "acceptors": [ - { - "expected": "available", - "matcher": "pathAll", - "state": "success", - "argument": "CustomerGateways[].State" - }, - { - "expected": "deleted", - "matcher": "pathAny", - "state": "failure", - "argument": "CustomerGateways[].State" - }, - { - "expected": "deleting", - "matcher": "pathAny", - "state": "failure", - "argument": "CustomerGateways[].State" - } - ] - }, - "ExportTaskCancelled": { - "delay": 15, - "operation": "DescribeExportTasks", - "maxAttempts": 40, - "acceptors": [ - { - "expected": "cancelled", - "matcher": "pathAll", - "state": "success", - "argument": "ExportTasks[].State" - } - ] - }, - "ExportTaskCompleted": { - "delay": 15, - "operation": "DescribeExportTasks", - "maxAttempts": 40, - "acceptors": [ - { - "expected": "completed", - "matcher": "pathAll", - "state": "success", - "argument": "ExportTasks[].State" - } - ] - }, - "InstanceRunning": { - "delay": 15, - "operation": "DescribeInstances", - "maxAttempts": 40, - "acceptors": [ - { - "expected": "running", - "matcher": "pathAll", - "state": "success", - "argument": "Reservations[].Instances[].State.Name" - }, - { - "expected": "shutting-down", - "matcher": "pathAny", - "state": "failure", - "argument": "Reservations[].Instances[].State.Name" - }, - { - "expected": "terminated", - "matcher": "pathAny", - "state": "failure", - "argument": "Reservations[].Instances[].State.Name" - }, - { - "expected": "stopping", - "matcher": "pathAny", - "state": "failure", - "argument": "Reservations[].Instances[].State.Name" - } - ] - }, - "InstanceStopped": { - "delay": 15, - "operation": "DescribeInstances", - "maxAttempts": 40, - "acceptors": [ - { - "expected": "stopped", - "matcher": "pathAll", - "state": "success", - "argument": "Reservations[].Instances[].State.Name" - }, - { - "expected": "pending", - "matcher": "pathAny", - "state": "failure", - "argument": "Reservations[].Instances[].State.Name" - }, - { - "expected": "terminated", - "matcher": "pathAny", - "state": "failure", - "argument": "Reservations[].Instances[].State.Name" - } - ] - }, - "InstanceTerminated": { - "delay": 15, - "operation": "DescribeInstances", - "maxAttempts": 40, - "acceptors": [ - { - "expected": "terminated", - "matcher": "pathAll", - "state": "success", - "argument": "Reservations[].Instances[].State.Name" - }, - { - "expected": "pending", - "matcher": "pathAny", - "state": "failure", - "argument": "Reservations[].Instances[].State.Name" - }, - { - "expected": "stopping", - "matcher": "pathAny", - "state": "failure", - "argument": "Reservations[].Instances[].State.Name" - } - ] - }, - "SnapshotCompleted": { - "delay": 15, - "operation": "DescribeSnapshots", - "maxAttempts": 40, - "acceptors": [ - { - "expected": "completed", - "matcher": "pathAll", - "state": "success", - "argument": "Snapshots[].State" - } - ] - }, - "SubnetAvailable": { - "delay": 15, - "operation": "DescribeSubnets", - "maxAttempts": 40, - "acceptors": [ - { - "expected": "available", - "matcher": "pathAll", - "state": "success", - "argument": "Subnets[].State" - } - ] - }, - "VolumeAvailable": { - "delay": 15, - "operation": "DescribeVolumes", - "maxAttempts": 40, - "acceptors": [ - { - "expected": "available", - "matcher": "pathAll", - "state": "success", - "argument": "Volumes[].State" - }, - { - "expected": "deleted", - "matcher": "pathAny", - "state": "failure", - "argument": "Volumes[].State" - } - ] - }, - "VolumeDeleted": { - "delay": 15, - "operation": "DescribeVolumes", - "maxAttempts": 40, - "acceptors": [ - { - "expected": "deleted", - "matcher": "pathAll", - "state": "success", - "argument": "Volumes[].State" - } - ] - }, - "VolumeInUse": { - "delay": 15, - "operation": "DescribeVolumes", - "maxAttempts": 40, - "acceptors": [ - { - "expected": "in-use", - "matcher": "pathAll", - "state": "success", - "argument": "Volumes[].State" - }, - { - "expected": "deleted", - "matcher": "pathAny", - "state": "failure", - "argument": "Volumes[].State" - } - ] - }, - "VpcAvailable": { - "delay": 15, - "operation": "DescribeVpcs", - "maxAttempts": 40, - "acceptors": [ - { - "expected": "available", - "matcher": "pathAll", - "state": "success", - "argument": "Vpcs[].State" - } - ] - }, - "VpnConnectionAvailable": { - "delay": 15, - "operation": "DescribeVpnConnections", - "maxAttempts": 40, - "acceptors": [ - { - "expected": "available", - "matcher": "pathAll", - "state": "success", - "argument": "VpnConnections[].State" - }, - { - "expected": "deleting", - "matcher": "pathAny", - "state": "failure", - "argument": "VpnConnections[].State" - }, - { - "expected": "deleted", - "matcher": "pathAny", - "state": "failure", - "argument": "VpnConnections[].State" - } - ] - }, - "VpnConnectionDeleted": { - "delay": 15, - "operation": "DescribeVpnConnections", - "maxAttempts": 40, - "acceptors": [ - { - "expected": "deleted", - "matcher": "pathAll", - "state": "success", - "argument": "VpnConnections[].State" - }, - { - "expected": "pending", - "matcher": "pathAny", - "state": "failure", - "argument": "VpnConnections[].State" - } - ] - } - } -} diff --git a/src/github.com/getlantern/aws-sdk-go/apis/ec2/2014-10-01.normal.json b/src/github.com/getlantern/aws-sdk-go/apis/ec2/2014-10-01.normal.json deleted file mode 100644 index d86342b083..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/apis/ec2/2014-10-01.normal.json +++ /dev/null @@ -1,12061 +0,0 @@ -{ - "metadata":{ - "apiVersion":"2014-10-01", - "endpointPrefix":"ec2", - "serviceAbbreviation":"Amazon EC2", - "serviceFullName":"Amazon Elastic Compute Cloud", - "signatureVersion":"v4", - "xmlNamespace":"http://ec2.amazonaws.com/doc/2014-10-01", - "protocol":"ec2" - }, - "documentation":"Amazon Elastic Compute Cloud

Amazon Elastic Compute Cloud (Amazon EC2) provides resizable computing capacity in the Amazon Web Services (AWS) cloud. Using Amazon EC2 eliminates your need to invest in hardware up front, so you can develop and deploy applications faster.

", - "operations":{ - "AcceptVpcPeeringConnection":{ - "name":"AcceptVpcPeeringConnection", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"AcceptVpcPeeringConnectionRequest"}, - "output":{"shape":"AcceptVpcPeeringConnectionResult"}, - "documentation":"

Accept a VPC peering connection request. To accept a request, the VPC peering connection must be in the pending-acceptance state, and you must be the owner of the peer VPC. Use the DescribeVpcPeeringConnections request to view your outstanding VPC peering connection requests.

" - }, - "AllocateAddress":{ - "name":"AllocateAddress", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"AllocateAddressRequest"}, - "output":{"shape":"AllocateAddressResult"}, - "documentation":"

Acquires an Elastic IP address.

An Elastic IP address is for use either in the EC2-Classic platform or in a VPC. For more information, see Elastic IP Addresses in the Amazon Elastic Compute Cloud User Guide for Linux.

" - }, - "AssignPrivateIpAddresses":{ - "name":"AssignPrivateIpAddresses", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"AssignPrivateIpAddressesRequest"}, - "documentation":"

Assigns one or more secondary private IP addresses to the specified network interface. You can specify one or more specific secondary IP addresses, or you can specify the number of secondary IP addresses to be automatically assigned within the subnet's CIDR block range. The number of secondary IP addresses that you can assign to an instance varies by instance type. For information about instance types, see Instance Types in the Amazon Elastic Compute Cloud User Guide for Linux. For more information about Elastic IP addresses, see Elastic IP Addresses in the Amazon Elastic Compute Cloud User Guide for Linux.

AssignPrivateIpAddresses is available only in EC2-VPC.

" - }, - "AssociateAddress":{ - "name":"AssociateAddress", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"AssociateAddressRequest"}, - "output":{"shape":"AssociateAddressResult"}, - "documentation":"

Associates an Elastic IP address with an instance or a network interface.

An Elastic IP address is for use in either the EC2-Classic platform or in a VPC. For more information, see Elastic IP Addresses in the Amazon Elastic Compute Cloud User Guide for Linux.

[EC2-Classic, VPC in an EC2-VPC-only account] If the Elastic IP address is already associated with a different instance, it is disassociated from that instance and associated with the specified instance.

[VPC in an EC2-Classic account] If you don't specify a private IP address, the Elastic IP address is associated with the primary IP address. If the Elastic IP address is already associated with a different instance or a network interface, you get an error unless you allow reassociation.

This is an idempotent operation. If you perform the operation more than once, Amazon EC2 doesn't return an error.

" - }, - "AssociateDhcpOptions":{ - "name":"AssociateDhcpOptions", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"AssociateDhcpOptionsRequest"}, - "documentation":"

Associates a set of DHCP options (that you've previously created) with the specified VPC, or associates no DHCP options with the VPC.

After you associate the options with the VPC, any existing instances and all new instances that you launch in that VPC use the options. You don't need to restart or relaunch the instances. They automatically pick up the changes within a few hours, depending on how frequently the instance renews its DHCP lease. You can explicitly renew the lease using the operating system on the instance.

For more information, see DHCP Options Sets in the Amazon Virtual Private Cloud User Guide.

" - }, - "AssociateRouteTable":{ - "name":"AssociateRouteTable", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"AssociateRouteTableRequest"}, - "output":{"shape":"AssociateRouteTableResult"}, - "documentation":"

Associates a subnet with a route table. The subnet and route table must be in the same VPC. This association causes traffic originating from the subnet to be routed according to the routes in the route table. The action returns an association ID, which you need in order to disassociate the route table from the subnet later. A route table can be associated with multiple subnets.

For more information about route tables, see Route Tables in the Amazon Virtual Private Cloud User Guide.

" - }, - "AttachClassicLinkVpc":{ - "name":"AttachClassicLinkVpc", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"AttachClassicLinkVpcRequest"}, - "output":{"shape":"AttachClassicLinkVpcResult"}, - "documentation":"

Links an EC2-Classic instance to a ClassicLink-enabled VPC through one or more of the VPC's security groups. You cannot link an EC2-Classic instance to more than one VPC at a time. You can only link an instance that's in the running state. An instance is automatically unlinked from a VPC when it's stopped - you can link it to the VPC again when you restart it.

After you've linked an instance, you cannot change the VPC security groups that are associated with it. To change the security groups, you must first unlink the instance, and then link it again.

Linking your instance to a VPC is sometimes referred to as attaching your instance.

" - }, - "AttachInternetGateway":{ - "name":"AttachInternetGateway", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"AttachInternetGatewayRequest"}, - "documentation":"

Attaches an Internet gateway to a VPC, enabling connectivity between the Internet and the VPC. For more information about your VPC and Internet gateway, see the Amazon Virtual Private Cloud User Guide.

" - }, - "AttachNetworkInterface":{ - "name":"AttachNetworkInterface", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"AttachNetworkInterfaceRequest"}, - "output":{"shape":"AttachNetworkInterfaceResult"}, - "documentation":"

Attaches a network interface to an instance.

" - }, - "AttachVolume":{ - "name":"AttachVolume", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"AttachVolumeRequest"}, - "output":{ - "shape":"VolumeAttachment", - "locationName":"attachment" - }, - "documentation":"

Attaches an Amazon EBS volume to a running or stopped instance and exposes it to the instance with the specified device name.

Encrypted Amazon EBS volumes may only be attached to instances that support Amazon EBS encryption. For more information, see Amazon EBS Encryption in the Amazon Elastic Compute Cloud User Guide for Linux.

For a list of supported device names, see Attaching an Amazon EBS Volume to an Instance. Any device names that aren't reserved for instance store volumes can be used for Amazon EBS volumes. For more information, see Amazon EC2 Instance Store in the Amazon Elastic Compute Cloud User Guide for Linux.

If a volume has an AWS Marketplace product code:

For an overview of the AWS Marketplace, see Introducing AWS Marketplace.

For more information about Amazon EBS volumes, see Attaching Amazon EBS Volumes in the Amazon Elastic Compute Cloud User Guide for Linux.

" - }, - "AttachVpnGateway":{ - "name":"AttachVpnGateway", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"AttachVpnGatewayRequest"}, - "output":{"shape":"AttachVpnGatewayResult"}, - "documentation":"

Attaches a virtual private gateway to a VPC. For more information, see Adding a Hardware Virtual Private Gateway to Your VPC in the Amazon Virtual Private Cloud User Guide.

" - }, - "AuthorizeSecurityGroupEgress":{ - "name":"AuthorizeSecurityGroupEgress", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"AuthorizeSecurityGroupEgressRequest"}, - "documentation":"

Adds one or more egress rules to a security group for use with a VPC. Specifically, this action permits instances to send traffic to one or more destination CIDR IP address ranges, or to one or more destination security groups for the same VPC.

You can have up to 50 rules per security group (covering both ingress and egress rules).

A security group is for use with instances either in the EC2-Classic platform or in a specific VPC. This action doesn't apply to security groups for use in EC2-Classic. For more information, see Security Groups for Your VPC in the Amazon Virtual Private Cloud User Guide.

Each rule consists of the protocol (for example, TCP), plus either a CIDR range or a source group. For the TCP and UDP protocols, you must also specify the destination port or port range. For the ICMP protocol, you must also specify the ICMP type and code. You can use -1 for the type or code to mean all types or all codes.

Rule changes are propagated to affected instances as quickly as possible. However, a small delay might occur.

" - }, - "AuthorizeSecurityGroupIngress":{ - "name":"AuthorizeSecurityGroupIngress", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"AuthorizeSecurityGroupIngressRequest"}, - "documentation":"

Adds one or more ingress rules to a security group.

EC2-Classic: You can have up to 100 rules per group.

EC2-VPC: You can have up to 50 rules per group (covering both ingress and egress rules).

Rule changes are propagated to instances within the security group as quickly as possible. However, a small delay might occur.

[EC2-Classic] This action gives one or more CIDR IP address ranges permission to access a security group in your account, or gives one or more security groups (called the source groups) permission to access a security group for your account. A source group can be for your own AWS account, or another.

[EC2-VPC] This action gives one or more CIDR IP address ranges permission to access a security group in your VPC, or gives one or more other security groups (called the source groups) permission to access a security group for your VPC. The security groups must all be for the same VPC.

" - }, - "BundleInstance":{ - "name":"BundleInstance", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"BundleInstanceRequest"}, - "output":{"shape":"BundleInstanceResult"}, - "documentation":"

Bundles an Amazon instance store-backed Windows instance.

During bundling, only the root device volume (C:\\) is bundled. Data on other instance store volumes is not preserved.

This action is not applicable for Linux/Unix instances or Windows instances that are backed by Amazon EBS.

For more information, see Creating an Instance Store-Backed Windows AMI.

" - }, - "CancelBundleTask":{ - "name":"CancelBundleTask", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CancelBundleTaskRequest"}, - "output":{"shape":"CancelBundleTaskResult"}, - "documentation":"

Cancels a bundling operation for an instance store-backed Windows instance.

" - }, - "CancelConversionTask":{ - "name":"CancelConversionTask", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CancelConversionRequest"}, - "documentation":"

Cancels an active conversion task. The task can be the import of an instance or volume. The action removes all artifacts of the conversion, including a partially uploaded volume or instance. If the conversion is complete or is in the process of transferring the final disk image, the command fails and returns an exception.

For more information, see Using the Command Line Tools to Import Your Virtual Machine to Amazon EC2 in the Amazon Elastic Compute Cloud User Guide for Linux.

" - }, - "CancelExportTask":{ - "name":"CancelExportTask", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CancelExportTaskRequest"}, - "documentation":"

Cancels an active export task. The request removes all artifacts of the export, including any partially-created Amazon S3 objects. If the export task is complete or is in the process of transferring the final disk image, the command fails and returns an error.

" - }, - "CancelReservedInstancesListing":{ - "name":"CancelReservedInstancesListing", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CancelReservedInstancesListingRequest"}, - "output":{"shape":"CancelReservedInstancesListingResult"}, - "documentation":"

Cancels the specified Reserved Instance listing in the Reserved Instance Marketplace.

For more information, see Reserved Instance Marketplace in the Amazon Elastic Compute Cloud User Guide for Linux.

" - }, - "CancelSpotInstanceRequests":{ - "name":"CancelSpotInstanceRequests", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CancelSpotInstanceRequestsRequest"}, - "output":{"shape":"CancelSpotInstanceRequestsResult"}, - "documentation":"

Cancels one or more Spot Instance requests. Spot Instances are instances that Amazon EC2 starts on your behalf when the bid price that you specify exceeds the current Spot Price. Amazon EC2 periodically sets the Spot Price based on available Spot Instance capacity and current Spot Instance requests. For more information, see Spot Instance Requests in the Amazon Elastic Compute Cloud User Guide for Linux.

Canceling a Spot Instance request does not terminate running Spot Instances associated with the request.

" - }, - "ConfirmProductInstance":{ - "name":"ConfirmProductInstance", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"ConfirmProductInstanceRequest"}, - "output":{"shape":"ConfirmProductInstanceResult"}, - "documentation":"

Determines whether a product code is associated with an instance. This action can only be used by the owner of the product code. It is useful when a product code owner needs to verify whether another user's instance is eligible for support.

" - }, - "CopyImage":{ - "name":"CopyImage", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CopyImageRequest"}, - "output":{"shape":"CopyImageResult"}, - "documentation":"

Initiates the copy of an AMI from the specified source region to the current region. You specify the destination region by using its endpoint when making the request. AMIs that use encrypted Amazon EBS snapshots cannot be copied with this method.

For more information, see Copying AMIs in the Amazon Elastic Compute Cloud User Guide for Linux.

" - }, - "CopySnapshot":{ - "name":"CopySnapshot", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CopySnapshotRequest"}, - "output":{"shape":"CopySnapshotResult"}, - "documentation":"

Copies a point-in-time snapshot of an Amazon EBS volume and stores it in Amazon S3. You can copy the snapshot within the same region or from one region to another. You can use the snapshot to create Amazon EBS volumes or Amazon Machine Images (AMIs). The snapshot is copied to the regional endpoint that you send the HTTP request to.

Copies of encrypted Amazon EBS snapshots remain encrypted. Copies of unencrypted snapshots remain unencrypted.

Copying snapshots that were encrypted with non-default AWS Key Management Service (KMS) master keys is not supported at this time.

For more information, see Copying an Amazon EBS Snapshot in the Amazon Elastic Compute Cloud User Guide for Linux.

" - }, - "CreateCustomerGateway":{ - "name":"CreateCustomerGateway", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CreateCustomerGatewayRequest"}, - "output":{"shape":"CreateCustomerGatewayResult"}, - "documentation":"

Provides information to AWS about your VPN customer gateway device. The customer gateway is the appliance at your end of the VPN connection. (The device on the AWS side of the VPN connection is the virtual private gateway.) You must provide the Internet-routable IP address of the customer gateway's external interface. The IP address must be static and can't be behind a device performing network address translation (NAT).

For devices that use Border Gateway Protocol (BGP), you can also provide the device's BGP Autonomous System Number (ASN). You can use an existing ASN assigned to your network. If you don't have an ASN already, you can use a private ASN (in the 64512 - 65534 range).

Amazon EC2 supports all 2-byte ASN numbers in the range of 1 - 65534, with the exception of 7224, which is reserved in the us-east-1 region, and 9059, which is reserved in the eu-west-1 region.

For more information about VPN customer gateways, see Adding a Hardware Virtual Private Gateway to Your VPC in the Amazon Virtual Private Cloud User Guide.

" - }, - "CreateDhcpOptions":{ - "name":"CreateDhcpOptions", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CreateDhcpOptionsRequest"}, - "output":{"shape":"CreateDhcpOptionsResult"}, - "documentation":"

Creates a set of DHCP options for your VPC. After creating the set, you must associate it with the VPC, causing all existing and new instances that you launch in the VPC to use this set of DHCP options. The following are the individual DHCP options you can specify. For more information about the options, see RFC 2132.

Your VPC automatically starts out with a set of DHCP options that includes only a DNS server that we provide (AmazonProvidedDNS). If you create a set of options, and if your VPC has an Internet gateway, make sure to set the domain-name-servers option either to AmazonProvidedDNS or to a domain name server of your choice. For more information about DHCP options, see DHCP Options Sets in the Amazon Virtual Private Cloud User Guide.

" - }, - "CreateImage":{ - "name":"CreateImage", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CreateImageRequest"}, - "output":{"shape":"CreateImageResult"}, - "documentation":"

Creates an Amazon EBS-backed AMI from an Amazon EBS-backed instance that is either running or stopped.

If you customized your instance with instance store volumes or EBS volumes in addition to the root device volume, the new AMI contains block device mapping information for those volumes. When you launch an instance from this new AMI, the instance automatically launches with those additional volumes.

For more information, see Creating Amazon EBS-Backed Linux AMIs in the Amazon Elastic Compute Cloud User Guide for Linux.

" - }, - "CreateInstanceExportTask":{ - "name":"CreateInstanceExportTask", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CreateInstanceExportTaskRequest"}, - "output":{"shape":"CreateInstanceExportTaskResult"}, - "documentation":"

Exports a running or stopped instance to an Amazon S3 bucket.

For information about the supported operating systems, image formats, and known limitations for the types of instances you can export, see Exporting EC2 Instances in the Amazon Elastic Compute Cloud User Guide for Linux.

" - }, - "CreateInternetGateway":{ - "name":"CreateInternetGateway", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CreateInternetGatewayRequest"}, - "output":{"shape":"CreateInternetGatewayResult"}, - "documentation":"

Creates an Internet gateway for use with a VPC. After creating the Internet gateway, you attach it to a VPC using AttachInternetGateway.

For more information about your VPC and Internet gateway, see the Amazon Virtual Private Cloud User Guide.

" - }, - "CreateKeyPair":{ - "name":"CreateKeyPair", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CreateKeyPairRequest"}, - "output":{ - "shape":"KeyPair", - "documentation":"

Information about the key pair.

", - "locationName":"keyPair" - }, - "documentation":"

Creates a 2048-bit RSA key pair with the specified name. Amazon EC2 stores the public key and displays the private key for you to save to a file. The private key is returned as an unencrypted PEM encoded PKCS#8 private key. If a key with the specified name already exists, Amazon EC2 returns an error.

You can have up to five thousand key pairs per region.

The key pair returned to you is available only in the region in which you create it. To create a key pair that is available in all regions, use ImportKeyPair.

For more information about key pairs, see Key Pairs in the Amazon Elastic Compute Cloud User Guide for Linux.

" - }, - "CreateNetworkAcl":{ - "name":"CreateNetworkAcl", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CreateNetworkAclRequest"}, - "output":{"shape":"CreateNetworkAclResult"}, - "documentation":"

Creates a network ACL in a VPC. Network ACLs provide an optional layer of security (in addition to security groups) for the instances in your VPC.

For more information about network ACLs, see Network ACLs in the Amazon Virtual Private Cloud User Guide.

" - }, - "CreateNetworkAclEntry":{ - "name":"CreateNetworkAclEntry", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CreateNetworkAclEntryRequest"}, - "documentation":"

Creates an entry (a rule) in a network ACL with the specified rule number. Each network ACL has a set of numbered ingress rules and a separate set of numbered egress rules. When determining whether a packet should be allowed in or out of a subnet associated with the ACL, we process the entries in the ACL according to the rule numbers, in ascending order. Each network ACL has a set of ingress rules and a separate set of egress rules.

We recommend that you leave room between the rule numbers (for example, 100, 110, 120, ...), and not number them one right after the other (for example, 101, 102, 103, ...). This makes it easier to add a rule between existing ones without having to renumber the rules.

After you add an entry, you can't modify it; you must either replace it, or create an entry and delete the old one.

For more information about network ACLs, see Network ACLs in the Amazon Virtual Private Cloud User Guide.

" - }, - "CreateNetworkInterface":{ - "name":"CreateNetworkInterface", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CreateNetworkInterfaceRequest"}, - "output":{"shape":"CreateNetworkInterfaceResult"}, - "documentation":"

Creates a network interface in the specified subnet.

For more information about network interfaces, see Elastic Network Interfaces in the Amazon Elastic Compute Cloud User Guide for Linux.

" - }, - "CreatePlacementGroup":{ - "name":"CreatePlacementGroup", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CreatePlacementGroupRequest"}, - "documentation":"

Creates a placement group that you launch cluster instances into. You must give the group a name that's unique within the scope of your account.

For more information about placement groups and cluster instances, see Cluster Instances in the Amazon Elastic Compute Cloud User Guide for Linux.

" - }, - "CreateReservedInstancesListing":{ - "name":"CreateReservedInstancesListing", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CreateReservedInstancesListingRequest"}, - "output":{"shape":"CreateReservedInstancesListingResult"}, - "documentation":"

Creates a listing for Amazon EC2 Reserved Instances to be sold in the Reserved Instance Marketplace. You can submit one Reserved Instance listing at a time. To get a list of your Reserved Instances, you can use the DescribeReservedInstances operation.

The Reserved Instance Marketplace matches sellers who want to resell Reserved Instance capacity that they no longer need with buyers who want to purchase additional capacity. Reserved Instances bought and sold through the Reserved Instance Marketplace work like any other Reserved Instances.

To sell your Reserved Instances, you must first register as a Seller in the Reserved Instance Marketplace. After completing the registration process, you can create a Reserved Instance Marketplace listing of some or all of your Reserved Instances, and specify the upfront price to receive for them. Your Reserved Instance listings then become available for purchase. To view the details of your Reserved Instance listing, you can use the DescribeReservedInstancesListings operation.

For more information, see Reserved Instance Marketplace in the Amazon Elastic Compute Cloud User Guide for Linux.

" - }, - "CreateRoute":{ - "name":"CreateRoute", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CreateRouteRequest"}, - "documentation":"

Creates a route in a route table within a VPC.

You must specify one of the following targets: Internet gateway or virtual private gateway, NAT instance, VPC peering connection, or network interface.

When determining how to route traffic, we use the route with the most specific match. For example, let's say the traffic is destined for 192.0.2.3, and the route table includes the following two routes:

Both routes apply to the traffic destined for 192.0.2.3. However, the second route in the list covers a smaller number of IP addresses and is therefore more specific, so we use that route to determine where to target the traffic.

For more information about route tables, see Route Tables in the Amazon Virtual Private Cloud User Guide.

" - }, - "CreateRouteTable":{ - "name":"CreateRouteTable", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CreateRouteTableRequest"}, - "output":{"shape":"CreateRouteTableResult"}, - "documentation":"

Creates a route table for the specified VPC. After you create a route table, you can add routes and associate the table with a subnet.

For more information about route tables, see Route Tables in the Amazon Virtual Private Cloud User Guide.

" - }, - "CreateSecurityGroup":{ - "name":"CreateSecurityGroup", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CreateSecurityGroupRequest"}, - "output":{"shape":"CreateSecurityGroupResult"}, - "documentation":"

Creates a security group.

A security group is for use with instances either in the EC2-Classic platform or in a specific VPC. For more information, see Amazon EC2 Security Groups in the Amazon Elastic Compute Cloud User Guide for Linux and Security Groups for Your VPC in the Amazon Virtual Private Cloud User Guide.

EC2-Classic: You can have up to 500 security groups.

EC2-VPC: You can create up to 100 security groups per VPC.

When you create a security group, you specify a friendly name of your choice. You can have a security group for use in EC2-Classic with the same name as a security group for use in a VPC. However, you can't have two security groups for use in EC2-Classic with the same name or two security groups for use in a VPC with the same name.

You have a default security group for use in EC2-Classic and a default security group for use in your VPC. If you don't specify a security group when you launch an instance, the instance is launched into the appropriate default security group. A default security group includes a default rule that grants instances unrestricted network access to each other.

You can add or remove rules from your security groups using AuthorizeSecurityGroupIngress, AuthorizeSecurityGroupEgress, RevokeSecurityGroupIngress, and RevokeSecurityGroupEgress.

" - }, - "CreateSnapshot":{ - "name":"CreateSnapshot", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CreateSnapshotRequest"}, - "output":{ - "shape":"Snapshot", - "locationName":"snapshot" - }, - "documentation":"

Creates a snapshot of an Amazon EBS volume and stores it in Amazon S3. You can use snapshots for backups, to make copies of Amazon EBS volumes, and to save data before shutting down an instance.

When a snapshot is created, any AWS Marketplace product codes that are associated with the source volume are propagated to the snapshot.

You can take a snapshot of an attached volume that is in use. However, snapshots only capture data that has been written to your Amazon EBS volume at the time the snapshot command is issued; this may exclude any data that has been cached by any applications or the operating system. If you can pause any file systems on the volume long enough to take a snapshot, your snapshot should be complete. However, if you cannot pause all file writes to the volume, you should unmount the volume from within the instance, issue the snapshot command, and then remount the volume to ensure a consistent and complete snapshot. You may remount and use your volume while the snapshot status is pending.

To create a snapshot for Amazon EBS volumes that serve as root devices, you should stop the instance before taking the snapshot.

Snapshots that are taken from encrypted volumes are automatically encrypted. Volumes that are created from encrypted snapshots are also automatically encrypted. Your encrypted volumes and any associated snapshots always remain protected.

For more information, see Amazon Elastic Block Store and Amazon EBS Encryption in the Amazon Elastic Compute Cloud User Guide for Linux.

" - }, - "CreateSpotDatafeedSubscription":{ - "name":"CreateSpotDatafeedSubscription", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CreateSpotDatafeedSubscriptionRequest"}, - "output":{"shape":"CreateSpotDatafeedSubscriptionResult"}, - "documentation":"

Creates a data feed for Spot Instances, enabling you to view Spot Instance usage logs. You can create one data feed per AWS account. For more information, see Spot Instance Data Feed in the Amazon Elastic Compute Cloud User Guide for Linux.

" - }, - "CreateSubnet":{ - "name":"CreateSubnet", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CreateSubnetRequest"}, - "output":{"shape":"CreateSubnetResult"}, - "documentation":"

Creates a subnet in an existing VPC.

When you create each subnet, you provide the VPC ID and the CIDR block you want for the subnet. After you create a subnet, you can't change its CIDR block. The subnet's CIDR block can be the same as the VPC's CIDR block (assuming you want only a single subnet in the VPC), or a subset of the VPC's CIDR block. If you create more than one subnet in a VPC, the subnets' CIDR blocks must not overlap. The smallest subnet (and VPC) you can create uses a /28 netmask (16 IP addresses), and the largest uses a /16 netmask (65,536 IP addresses).

AWS reserves both the first four and the last IP address in each subnet's CIDR block. They're not available for use.

If you add more than one subnet to a VPC, they're set up in a star topology with a logical router in the middle.

If you launch an instance in a VPC using an Amazon EBS-backed AMI, the IP address doesn't change if you stop and restart the instance (unlike a similar instance launched outside a VPC, which gets a new IP address when restarted). It's therefore possible to have a subnet with no running instances (they're all stopped), but no remaining IP addresses available.

For more information about subnets, see Your VPC and Subnets in the Amazon Virtual Private Cloud User Guide.

" - }, - "CreateTags":{ - "name":"CreateTags", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CreateTagsRequest"}, - "documentation":"

Adds or overwrites one or more tags for the specified Amazon EC2 resource or resources. Each resource can have a maximum of 10 tags. Each tag consists of a key and optional value. Tag keys must be unique per resource.

For more information about tags, see Tagging Your Resources in the Amazon Elastic Compute Cloud User Guide for Linux.

" - }, - "CreateVolume":{ - "name":"CreateVolume", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CreateVolumeRequest"}, - "output":{ - "shape":"Volume", - "locationName":"volume" - }, - "documentation":"

Creates an Amazon EBS volume that can be attached to an instance in the same Availability Zone. The volume is created in the regional endpoint that you send the HTTP request to. For more information see Regions and Endpoints.

You can create a new empty volume or restore a volume from an Amazon EBS snapshot. Any AWS Marketplace product codes from the snapshot are propagated to the volume.

You can create encrypted volumes with the Encrypted parameter. Encrypted volumes may only be attached to instances that support Amazon EBS encryption. Volumes that are created from encrypted snapshots are also automatically encrypted. For more information, see Amazon EBS Encryption in the Amazon Elastic Compute Cloud User Guide for Linux.

For more information, see Creating or Restoring an Amazon EBS Volume in the Amazon Elastic Compute Cloud User Guide for Linux.

" - }, - "CreateVpc":{ - "name":"CreateVpc", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CreateVpcRequest"}, - "output":{"shape":"CreateVpcResult"}, - "documentation":"

Creates a VPC with the specified CIDR block.

The smallest VPC you can create uses a /28 netmask (16 IP addresses), and the largest uses a /16 netmask (65,536 IP addresses). To help you decide how big to make your VPC, see Your VPC and Subnets in the Amazon Virtual Private Cloud User Guide.

By default, each instance you launch in the VPC has the default DHCP options, which includes only a default DNS server that we provide (AmazonProvidedDNS). For more information about DHCP options, see DHCP Options Sets in the Amazon Virtual Private Cloud User Guide.

" - }, - "CreateVpcPeeringConnection":{ - "name":"CreateVpcPeeringConnection", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CreateVpcPeeringConnectionRequest"}, - "output":{"shape":"CreateVpcPeeringConnectionResult"}, - "documentation":"

Requests a VPC peering connection between two VPCs: a requester VPC that you own and a peer VPC with which to create the connection. The peer VPC can belong to another AWS account. The requester VPC and peer VPC cannot have overlapping CIDR blocks.

The owner of the peer VPC must accept the peering request to activate the peering connection. The VPC peering connection request expires after 7 days, after which it cannot be accepted or rejected.

A CreateVpcPeeringConnection request between VPCs with overlapping CIDR blocks results in the VPC peering connection having a status of failed.

" - }, - "CreateVpnConnection":{ - "name":"CreateVpnConnection", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CreateVpnConnectionRequest"}, - "output":{"shape":"CreateVpnConnectionResult"}, - "documentation":"

Creates a VPN connection between an existing virtual private gateway and a VPN customer gateway. The only supported connection type is ipsec.1.

The response includes information that you need to give to your network administrator to configure your customer gateway.

We strongly recommend that you use HTTPS when calling this operation because the response contains sensitive cryptographic information for configuring your customer gateway.

If you decide to shut down your VPN connection for any reason and later create a new VPN connection, you must reconfigure your customer gateway with the new information returned from this call.

For more information about VPN connections, see Adding a Hardware Virtual Private Gateway to Your VPC in the Amazon Virtual Private Cloud User Guide.

" - }, - "CreateVpnConnectionRoute":{ - "name":"CreateVpnConnectionRoute", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CreateVpnConnectionRouteRequest"}, - "documentation":"

Creates a static route associated with a VPN connection between an existing virtual private gateway and a VPN customer gateway. The static route allows traffic to be routed from the virtual private gateway to the VPN customer gateway.

For more information about VPN connections, see Adding a Hardware Virtual Private Gateway to Your VPC in the Amazon Virtual Private Cloud User Guide.

" - }, - "CreateVpnGateway":{ - "name":"CreateVpnGateway", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CreateVpnGatewayRequest"}, - "output":{"shape":"CreateVpnGatewayResult"}, - "documentation":"

Creates a virtual private gateway. A virtual private gateway is the endpoint on the VPC side of your VPN connection. You can create a virtual private gateway before creating the VPC itself.

For more information about virtual private gateways, see Adding a Hardware Virtual Private Gateway to Your VPC in the Amazon Virtual Private Cloud User Guide.

" - }, - "DeleteCustomerGateway":{ - "name":"DeleteCustomerGateway", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DeleteCustomerGatewayRequest"}, - "documentation":"

Deletes the specified customer gateway. You must delete the VPN connection before you can delete the customer gateway.

" - }, - "DeleteDhcpOptions":{ - "name":"DeleteDhcpOptions", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DeleteDhcpOptionsRequest"}, - "documentation":"

Deletes the specified set of DHCP options. You must disassociate the set of DHCP options before you can delete it. You can disassociate the set of DHCP options by associating either a new set of options or the default set of options with the VPC.

" - }, - "DeleteInternetGateway":{ - "name":"DeleteInternetGateway", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DeleteInternetGatewayRequest"}, - "documentation":"

Deletes the specified Internet gateway. You must detach the Internet gateway from the VPC before you can delete it.

" - }, - "DeleteKeyPair":{ - "name":"DeleteKeyPair", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DeleteKeyPairRequest"}, - "documentation":"

Deletes the specified key pair, by removing the public key from Amazon EC2.

" - }, - "DeleteNetworkAcl":{ - "name":"DeleteNetworkAcl", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DeleteNetworkAclRequest"}, - "documentation":"

Deletes the specified network ACL. You can't delete the ACL if it's associated with any subnets. You can't delete the default network ACL.

" - }, - "DeleteNetworkAclEntry":{ - "name":"DeleteNetworkAclEntry", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DeleteNetworkAclEntryRequest"}, - "documentation":"

Deletes the specified ingress or egress entry (rule) from the specified network ACL.

" - }, - "DeleteNetworkInterface":{ - "name":"DeleteNetworkInterface", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DeleteNetworkInterfaceRequest"}, - "documentation":"

Deletes the specified network interface. You must detach the network interface before you can delete it.

" - }, - "DeletePlacementGroup":{ - "name":"DeletePlacementGroup", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DeletePlacementGroupRequest"}, - "documentation":"

Deletes the specified placement group. You must terminate all instances in the placement group before you can delete the placement group. For more information about placement groups and cluster instances, see Cluster Instances in the Amazon Elastic Compute Cloud User Guide for Linux.

" - }, - "DeleteRoute":{ - "name":"DeleteRoute", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DeleteRouteRequest"}, - "documentation":"

Deletes the specified route from the specified route table.

" - }, - "DeleteRouteTable":{ - "name":"DeleteRouteTable", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DeleteRouteTableRequest"}, - "documentation":"

Deletes the specified route table. You must disassociate the route table from any subnets before you can delete it. You can't delete the main route table.

" - }, - "DeleteSecurityGroup":{ - "name":"DeleteSecurityGroup", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DeleteSecurityGroupRequest"}, - "documentation":"

Deletes a security group.

If you attempt to delete a security group that is associated with an instance, or is referenced by another security group, the operation fails with InvalidGroup.InUse in EC2-Classic or DependencyViolation in EC2-VPC.

" - }, - "DeleteSnapshot":{ - "name":"DeleteSnapshot", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DeleteSnapshotRequest"}, - "documentation":"

Deletes the specified snapshot.

When you make periodic snapshots of a volume, the snapshots are incremental, and only the blocks on the device that have changed since your last snapshot are saved in the new snapshot. When you delete a snapshot, only the data not needed for any other snapshot is removed. So regardless of which prior snapshots have been deleted, all active snapshots will have access to all the information needed to restore the volume.

You cannot delete a snapshot of the root device of an Amazon EBS volume used by a registered AMI. You must first de-register the AMI before you can delete the snapshot.

For more information, see Deleting an Amazon EBS Snapshot in the Amazon Elastic Compute Cloud User Guide for Linux.

" - }, - "DeleteSpotDatafeedSubscription":{ - "name":"DeleteSpotDatafeedSubscription", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DeleteSpotDatafeedSubscriptionRequest"}, - "documentation":"

Deletes the data feed for Spot Instances. For more information, see Spot Instance Data Feed in the Amazon Elastic Compute Cloud User Guide for Linux.

" - }, - "DeleteSubnet":{ - "name":"DeleteSubnet", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DeleteSubnetRequest"}, - "documentation":"

Deletes the specified subnet. You must terminate all running instances in the subnet before you can delete the subnet.

" - }, - "DeleteTags":{ - "name":"DeleteTags", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DeleteTagsRequest"}, - "documentation":"

Deletes the specified set of tags from the specified set of resources. This call is designed to follow a DescribeTags request.

For more information about tags, see Tagging Your Resources in the Amazon Elastic Compute Cloud User Guide for Linux.

" - }, - "DeleteVolume":{ - "name":"DeleteVolume", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DeleteVolumeRequest"}, - "documentation":"

Deletes the specified Amazon EBS volume. The volume must be in the available state (not attached to an instance).

The volume may remain in the deleting state for several minutes.

For more information, see Deleting an Amazon EBS Volume in the Amazon Elastic Compute Cloud User Guide for Linux.

" - }, - "DeleteVpc":{ - "name":"DeleteVpc", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DeleteVpcRequest"}, - "documentation":"

Deletes the specified VPC. You must detach or delete all gateways and resources that are associated with the VPC before you can delete it. For example, you must terminate all instances running in the VPC, delete all security groups associated with the VPC (except the default one), delete all route tables associated with the VPC (except the default one), and so on.

" - }, - "DeleteVpcPeeringConnection":{ - "name":"DeleteVpcPeeringConnection", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DeleteVpcPeeringConnectionRequest"}, - "output":{"shape":"DeleteVpcPeeringConnectionResult"}, - "documentation":"

Deletes a VPC peering connection. Either the owner of the requester VPC or the owner of the peer VPC can delete the VPC peering connection if it's in the active state. The owner of the requester VPC can delete a VPC peering connection in the pending-acceptance state.

" - }, - "DeleteVpnConnection":{ - "name":"DeleteVpnConnection", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DeleteVpnConnectionRequest"}, - "documentation":"

Deletes the specified VPN connection.

If you're deleting the VPC and its associated components, we recommend that you detach the virtual private gateway from the VPC and delete the VPC before deleting the VPN connection. If you believe that the tunnel credentials for your VPN connection have been compromised, you can delete the VPN connection and create a new one that has new keys, without needing to delete the VPC or virtual private gateway. If you create a new VPN connection, you must reconfigure the customer gateway using the new configuration information returned with the new VPN connection ID.

" - }, - "DeleteVpnConnectionRoute":{ - "name":"DeleteVpnConnectionRoute", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DeleteVpnConnectionRouteRequest"}, - "documentation":"

Deletes the specified static route associated with a VPN connection between an existing virtual private gateway and a VPN customer gateway. The static route allows traffic to be routed from the virtual private gateway to the VPN customer gateway.

" - }, - "DeleteVpnGateway":{ - "name":"DeleteVpnGateway", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DeleteVpnGatewayRequest"}, - "documentation":"

Deletes the specified virtual private gateway. We recommend that before you delete a virtual private gateway, you detach it from the VPC and delete the VPN connection. Note that you don't need to delete the virtual private gateway if you plan to delete and recreate the VPN connection between your VPC and your network.

" - }, - "DeregisterImage":{ - "name":"DeregisterImage", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DeregisterImageRequest"}, - "documentation":"

Deregisters the specified AMI. After you deregister an AMI, it can't be used to launch new instances.

This command does not delete the AMI.

" - }, - "DescribeAccountAttributes":{ - "name":"DescribeAccountAttributes", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeAccountAttributesRequest"}, - "output":{"shape":"DescribeAccountAttributesResult"}, - "documentation":"

Describes attributes of your AWS account. The following are the supported account attributes:

" - }, - "DescribeAddresses":{ - "name":"DescribeAddresses", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeAddressesRequest"}, - "output":{"shape":"DescribeAddressesResult"}, - "documentation":"

Describes one or more of your Elastic IP addresses.

An Elastic IP address is for use in either the EC2-Classic platform or in a VPC. For more information, see Elastic IP Addresses in the Amazon Elastic Compute Cloud User Guide for Linux.

" - }, - "DescribeAvailabilityZones":{ - "name":"DescribeAvailabilityZones", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeAvailabilityZonesRequest"}, - "output":{"shape":"DescribeAvailabilityZonesResult"}, - "documentation":"

Describes one or more of the Availability Zones that are available to you. The results include zones only for the region you're currently using. If there is an event impacting an Availability Zone, you can use this request to view the state and any provided message for that Availability Zone.

For more information, see Regions and Availability Zones in the Amazon Elastic Compute Cloud User Guide for Linux.

" - }, - "DescribeBundleTasks":{ - "name":"DescribeBundleTasks", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeBundleTasksRequest"}, - "output":{"shape":"DescribeBundleTasksResult"}, - "documentation":"

Describes one or more of your bundling tasks.

Completed bundle tasks are listed for only a limited time. If your bundle task is no longer in the list, you can still register an AMI from it. Just use RegisterImage with the Amazon S3 bucket name and image manifest name you provided to the bundle task.

" - }, - "DescribeClassicLinkInstances":{ - "name":"DescribeClassicLinkInstances", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeClassicLinkInstancesRequest"}, - "output":{"shape":"DescribeClassicLinkInstancesResult"}, - "documentation":"

Describes one or more of your linked EC2-Classic instances. This request only returns information about EC2-Classic instances linked to a VPC through ClassicLink; you cannot use this request to return information about other instances.

" - }, - "DescribeConversionTasks":{ - "name":"DescribeConversionTasks", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeConversionTasksRequest"}, - "output":{"shape":"DescribeConversionTasksResult"}, - "documentation":"

Describes one or more of your conversion tasks. For more information, see Using the Command Line Tools to Import Your Virtual Machine to Amazon EC2 in the Amazon Elastic Compute Cloud User Guide for Linux.

" - }, - "DescribeCustomerGateways":{ - "name":"DescribeCustomerGateways", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeCustomerGatewaysRequest"}, - "output":{"shape":"DescribeCustomerGatewaysResult"}, - "documentation":"

Describes one or more of your VPN customer gateways.

For more information about VPN customer gateways, see Adding a Hardware Virtual Private Gateway to Your VPC in the Amazon Virtual Private Cloud User Guide.

" - }, - "DescribeDhcpOptions":{ - "name":"DescribeDhcpOptions", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeDhcpOptionsRequest"}, - "output":{"shape":"DescribeDhcpOptionsResult"}, - "documentation":"

Describes one or more of your DHCP options sets.

For more information about DHCP options sets, see DHCP Options Sets in the Amazon Virtual Private Cloud User Guide.

" - }, - "DescribeExportTasks":{ - "name":"DescribeExportTasks", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeExportTasksRequest"}, - "output":{"shape":"DescribeExportTasksResult"}, - "documentation":"

Describes one or more of your export tasks.

" - }, - "DescribeImageAttribute":{ - "name":"DescribeImageAttribute", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeImageAttributeRequest"}, - "output":{ - "shape":"ImageAttribute", - "documentation":"

Information about the image attribute.

", - "locationName":"imageAttribute" - }, - "documentation":"

Describes the specified attribute of the specified AMI. You can specify only one attribute at a time.

" - }, - "DescribeImages":{ - "name":"DescribeImages", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeImagesRequest"}, - "output":{"shape":"DescribeImagesResult"}, - "documentation":"

Describes one or more of the images (AMIs, AKIs, and ARIs) available to you. Images available to you include public images, private images that you own, and private images owned by other AWS accounts but for which you have explicit launch permissions.

Deregistered images are included in the returned results for an unspecified interval after deregistration.

" - }, - "DescribeInstanceAttribute":{ - "name":"DescribeInstanceAttribute", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeInstanceAttributeRequest"}, - "output":{"shape":"InstanceAttribute"}, - "documentation":"

Describes the specified attribute of the specified instance. You can specify only one attribute at a time. Valid attribute values are: instanceType | kernel | ramdisk | userData | disableApiTermination | instanceInitiatedShutdownBehavior | rootDeviceName | blockDeviceMapping | productCodes | sourceDestCheck | groupSet | ebsOptimized | sriovNetSupport

" - }, - "DescribeInstanceStatus":{ - "name":"DescribeInstanceStatus", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeInstanceStatusRequest"}, - "output":{"shape":"DescribeInstanceStatusResult"}, - "documentation":"

Describes the status of one or more instances, including any scheduled events.

Instance status has two main components:

Instance status provides information about four types of scheduled events for an instance that may require your attention:

When your instance is retired, it will either be terminated (if its root device type is the instance-store) or stopped (if its root device type is an EBS volume). Instances stopped due to retirement will not be restarted, but you can do so manually. You can also avoid retirement of EBS-backed instances by manually restarting your instance when its event code is instance-retirement. This ensures that your instance is started on a different underlying host.

For more information about failed status checks, see Troubleshooting Instances with Failed Status Checks in the Amazon Elastic Compute Cloud User Guide for Linux. For more information about working with scheduled events, see Working with an Instance That Has a Scheduled Event in the Amazon Elastic Compute Cloud User Guide for Linux.

" - }, - "DescribeInstances":{ - "name":"DescribeInstances", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeInstancesRequest"}, - "output":{"shape":"DescribeInstancesResult"}, - "documentation":"

Describes one or more of your instances.

If you specify one or more instance IDs, Amazon EC2 returns information for those instances. If you do not specify instance IDs, Amazon EC2 returns information for all relevant instances. If you specify an instance ID that is not valid, an error is returned. If you specify an instance that you do not own, it is not included in the returned results.

Recently terminated instances might appear in the returned results. This interval is usually less than one hour.

" - }, - "DescribeInternetGateways":{ - "name":"DescribeInternetGateways", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeInternetGatewaysRequest"}, - "output":{"shape":"DescribeInternetGatewaysResult"}, - "documentation":"

Describes one or more of your Internet gateways.

" - }, - "DescribeKeyPairs":{ - "name":"DescribeKeyPairs", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeKeyPairsRequest"}, - "output":{"shape":"DescribeKeyPairsResult"}, - "documentation":"

Describes one or more of your key pairs.

For more information about key pairs, see Key Pairs in the Amazon Elastic Compute Cloud User Guide for Linux.

" - }, - "DescribeNetworkAcls":{ - "name":"DescribeNetworkAcls", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeNetworkAclsRequest"}, - "output":{"shape":"DescribeNetworkAclsResult"}, - "documentation":"

Describes one or more of your network ACLs.

For more information about network ACLs, see Network ACLs in the Amazon Virtual Private Cloud User Guide.

" - }, - "DescribeNetworkInterfaceAttribute":{ - "name":"DescribeNetworkInterfaceAttribute", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeNetworkInterfaceAttributeRequest"}, - "output":{"shape":"DescribeNetworkInterfaceAttributeResult"}, - "documentation":"

Describes a network interface attribute. You can specify only one attribute at a time.

" - }, - "DescribeNetworkInterfaces":{ - "name":"DescribeNetworkInterfaces", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeNetworkInterfacesRequest"}, - "output":{"shape":"DescribeNetworkInterfacesResult"}, - "documentation":"

Describes one or more of your network interfaces.

" - }, - "DescribePlacementGroups":{ - "name":"DescribePlacementGroups", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribePlacementGroupsRequest"}, - "output":{"shape":"DescribePlacementGroupsResult"}, - "documentation":"

Describes one or more of your placement groups. For more information about placement groups and cluster instances, see Cluster Instances in the Amazon Elastic Compute Cloud User Guide for Linux.

" - }, - "DescribeRegions":{ - "name":"DescribeRegions", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeRegionsRequest"}, - "output":{"shape":"DescribeRegionsResult"}, - "documentation":"

Describes one or more regions that are currently available to you.

For a list of the regions supported by Amazon EC2, see Regions and Endpoints.

" - }, - "DescribeReservedInstances":{ - "name":"DescribeReservedInstances", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeReservedInstancesRequest"}, - "output":{"shape":"DescribeReservedInstancesResult"}, - "documentation":"

Describes one or more of the Reserved Instances that you purchased.

For more information about Reserved Instances, see Reserved Instances in the Amazon Elastic Compute Cloud User Guide for Linux.

" - }, - "DescribeReservedInstancesListings":{ - "name":"DescribeReservedInstancesListings", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeReservedInstancesListingsRequest"}, - "output":{"shape":"DescribeReservedInstancesListingsResult"}, - "documentation":"

Describes your account's Reserved Instance listings in the Reserved Instance Marketplace.

The Reserved Instance Marketplace matches sellers who want to resell Reserved Instance capacity that they no longer need with buyers who want to purchase additional capacity. Reserved Instances bought and sold through the Reserved Instance Marketplace work like any other Reserved Instances.

As a seller, you choose to list some or all of your Reserved Instances, and you specify the upfront price to receive for them. Your Reserved Instances are then listed in the Reserved Instance Marketplace and are available for purchase.

As a buyer, you specify the configuration of the Reserved Instance to purchase, and the Marketplace matches what you're searching for with what's available. The Marketplace first sells the lowest priced Reserved Instances to you, and continues to sell available Reserved Instance listings to you until your demand is met. You are charged based on the total price of all of the listings that you purchase.

For more information, see Reserved Instance Marketplace in the Amazon Elastic Compute Cloud User Guide for Linux.

" - }, - "DescribeReservedInstancesModifications":{ - "name":"DescribeReservedInstancesModifications", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeReservedInstancesModificationsRequest"}, - "output":{"shape":"DescribeReservedInstancesModificationsResult"}, - "documentation":"

Describes the modifications made to your Reserved Instances. If no parameter is specified, information about all your Reserved Instances modification requests is returned. If a modification ID is specified, only information about the specific modification is returned.

For more information, see Modifying Reserved Instances in the Amazon Elastic Compute Cloud User Guide for Linux.

" - }, - "DescribeReservedInstancesOfferings":{ - "name":"DescribeReservedInstancesOfferings", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeReservedInstancesOfferingsRequest"}, - "output":{"shape":"DescribeReservedInstancesOfferingsResult"}, - "documentation":"

Describes Reserved Instance offerings that are available for purchase. With Reserved Instances, you purchase the right to launch instances for a period of time. During that time period, you do not receive insufficient capacity errors, and you pay a lower usage rate than the rate charged for On-Demand instances for the actual time used.

For more information, see Reserved Instance Marketplace in the Amazon Elastic Compute Cloud User Guide for Linux.

" - }, - "DescribeRouteTables":{ - "name":"DescribeRouteTables", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeRouteTablesRequest"}, - "output":{"shape":"DescribeRouteTablesResult"}, - "documentation":"

Describes one or more of your route tables.

For more information about route tables, see Route Tables in the Amazon Virtual Private Cloud User Guide.

" - }, - "DescribeSecurityGroups":{ - "name":"DescribeSecurityGroups", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeSecurityGroupsRequest"}, - "output":{"shape":"DescribeSecurityGroupsResult"}, - "documentation":"

Describes one or more of your security groups.

A security group is for use with instances either in the EC2-Classic platform or in a specific VPC. For more information, see Amazon EC2 Security Groups in the Amazon Elastic Compute Cloud User Guide for Linux and Security Groups for Your VPC in the Amazon Virtual Private Cloud User Guide.

" - }, - "DescribeSnapshotAttribute":{ - "name":"DescribeSnapshotAttribute", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeSnapshotAttributeRequest"}, - "output":{"shape":"DescribeSnapshotAttributeResult"}, - "documentation":"

Describes the specified attribute of the specified snapshot. You can specify only one attribute at a time.

For more information about Amazon EBS snapshots, see Amazon EBS Snapshots in the Amazon Elastic Compute Cloud User Guide for Linux.

" - }, - "DescribeSnapshots":{ - "name":"DescribeSnapshots", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeSnapshotsRequest"}, - "output":{"shape":"DescribeSnapshotsResult"}, - "documentation":"

Describes one or more of the Amazon EBS snapshots available to you. Available snapshots include public snapshots available for any AWS account to launch, private snapshots that you own, and private snapshots owned by another AWS account but for which you've been given explicit create volume permissions.

The create volume permissions fall into the following categories:

The list of snapshots returned can be modified by specifying snapshot IDs, snapshot owners, or AWS accounts with create volume permissions. If no options are specified, Amazon EC2 returns all snapshots for which you have create volume permissions.

If you specify one or more snapshot IDs, only snapshots that have the specified IDs are returned. If you specify an invalid snapshot ID, an error is returned. If you specify a snapshot ID for which you do not have access, it is not included in the returned results.

If you specify one or more snapshot owners, only snapshots from the specified owners and for which you have access are returned. The results can include the AWS account IDs of the specified owners, amazon for snapshots owned by Amazon, or self for snapshots that you own.

If you specify a list of restorable users, only snapshots with create snapshot permissions for those users are returned. You can specify AWS account IDs (if you own the snapshots), self for snapshots for which you own or have explicit permissions, or all for public snapshots.

For more information about Amazon EBS snapshots, see Amazon EBS Snapshots in the Amazon Elastic Compute Cloud User Guide for Linux.

" - }, - "DescribeSpotDatafeedSubscription":{ - "name":"DescribeSpotDatafeedSubscription", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeSpotDatafeedSubscriptionRequest"}, - "output":{"shape":"DescribeSpotDatafeedSubscriptionResult"}, - "documentation":"

Describes the data feed for Spot Instances. For more information, see Spot Instance Data Feed in the Amazon Elastic Compute Cloud User Guide for Linux.

" - }, - "DescribeSpotInstanceRequests":{ - "name":"DescribeSpotInstanceRequests", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeSpotInstanceRequestsRequest"}, - "output":{"shape":"DescribeSpotInstanceRequestsResult"}, - "documentation":"

Describes the Spot Instance requests that belong to your account. Spot Instances are instances that Amazon EC2 launches when the bid price that you specify exceeds the current Spot Price. Amazon EC2 periodically sets the Spot Price based on available Spot Instance capacity and current Spot Instance requests. For more information, see Spot Instance Requests in the Amazon Elastic Compute Cloud User Guide for Linux.

You can use DescribeSpotInstanceRequests to find a running Spot Instance by examining the response. If the status of the Spot Instance is fulfilled, the instance ID appears in the response and contains the identifier of the instance. Alternatively, you can use DescribeInstances with a filter to look for instances where the instance lifecycle is spot.

" - }, - "DescribeSpotPriceHistory":{ - "name":"DescribeSpotPriceHistory", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeSpotPriceHistoryRequest"}, - "output":{"shape":"DescribeSpotPriceHistoryResult"}, - "documentation":"

Describes the Spot Price history. Spot Instances are instances that Amazon EC2 starts on your behalf when the maximum price that you specify exceeds the current Spot Price. Amazon EC2 periodically sets the Spot Price based on available Spot Instance capacity and current Spot Instance requests. For more information, see Spot Instance Pricing History in the Amazon Elastic Compute Cloud User Guide for Linux.

When you specify an Availability Zone, this operation describes the price history for the specified Availability Zone with the most recent set of prices listed first. If you don't specify an Availability Zone, you get the prices across all Availability Zones, starting with the most recent set. However, if you're using an API version earlier than 2011-05-15, you get the lowest price across the region for the specified time period. The prices returned are listed in chronological order, from the oldest to the most recent.

When you specify the start and end time options, this operation returns two pieces of data: the prices of the instance types within the time range that you specified and the time when the price changed. The price is valid within the time period that you specified; the response merely indicates the last time that the price changed.

" - }, - "DescribeSubnets":{ - "name":"DescribeSubnets", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeSubnetsRequest"}, - "output":{"shape":"DescribeSubnetsResult"}, - "documentation":"

Describes one or more of your subnets.

For more information about subnets, see Your VPC and Subnets in the Amazon Virtual Private Cloud User Guide.

" - }, - "DescribeTags":{ - "name":"DescribeTags", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeTagsRequest"}, - "output":{"shape":"DescribeTagsResult"}, - "documentation":"

Describes one or more of the tags for your EC2 resources.

For more information about tags, see Tagging Your Resources in the Amazon Elastic Compute Cloud User Guide for Linux.

" - }, - "DescribeVolumeAttribute":{ - "name":"DescribeVolumeAttribute", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeVolumeAttributeRequest"}, - "output":{"shape":"DescribeVolumeAttributeResult"}, - "documentation":"

Describes the specified attribute of the specified volume. You can specify only one attribute at a time.

For more information about Amazon EBS volumes, see Amazon EBS Volumes in the Amazon Elastic Compute Cloud User Guide for Linux.

" - }, - "DescribeVolumeStatus":{ - "name":"DescribeVolumeStatus", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeVolumeStatusRequest"}, - "output":{"shape":"DescribeVolumeStatusResult"}, - "documentation":"

Describes the status of the specified volumes. Volume status provides the result of the checks performed on your volumes to determine events that can impair the performance of your volumes. The performance of a volume can be affected if an issue occurs on the volume's underlying host. If the volume's underlying host experiences a power outage or system issue, after the system is restored, there could be data inconsistencies on the volume. Volume events notify you if this occurs. Volume actions notify you if any action needs to be taken in response to the event.

The DescribeVolumeStatus operation provides the following information about the specified volumes:

Status: Reflects the current status of the volume. The possible values are ok, impaired , warning, or insufficient-data. If all checks pass, the overall status of the volume is ok. If the check fails, the overall status is impaired. If the status is insufficient-data, then the checks may still be taking place on your volume at the time. We recommend that you retry the request. For more information on volume status, see Monitoring the Status of Your Volumes.

Events: Reflect the cause of a volume status and may require you to take action. For example, if your volume returns an impaired status, then the volume event might be potential-data-inconsistency. This means that your volume has been affected by an issue with the underlying host, has all I/O operations disabled, and may have inconsistent data.

Actions: Reflect the actions you may have to take in response to an event. For example, if the status of the volume is impaired and the volume event shows potential-data-inconsistency, then the action shows enable-volume-io. This means that you may want to enable the I/O operations for the volume by calling the EnableVolumeIO action and then check the volume for data consistency.

Volume status is based on the volume status checks, and does not reflect the volume state. Therefore, volume status does not indicate volumes in the error state (for example, when a volume is incapable of accepting I/O.)

" - }, - "DescribeVolumes":{ - "name":"DescribeVolumes", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeVolumesRequest"}, - "output":{"shape":"DescribeVolumesResult"}, - "documentation":"

Describes the specified Amazon EBS volumes.

If you are describing a long list of volumes, you can paginate the output to make the list more manageable. The MaxResults parameter sets the maximum number of results returned in a single page. If the list of results exceeds your MaxResults value, then that number of results is returned along with a NextToken value that can be passed to a subsequent DescribeVolumes request to retrieve the remaining results.

For more information about Amazon EBS volumes, see Amazon EBS Volumes in the Amazon Elastic Compute Cloud User Guide for Linux.

" - }, - "DescribeVpcAttribute":{ - "name":"DescribeVpcAttribute", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeVpcAttributeRequest"}, - "output":{"shape":"DescribeVpcAttributeResult"}, - "documentation":"

Describes the specified attribute of the specified VPC. You can specify only one attribute at a time.

" - }, - "DescribeVpcClassicLink":{ - "name":"DescribeVpcClassicLink", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeVpcClassicLinkRequest"}, - "output":{"shape":"DescribeVpcClassicLinkResult"}, - "documentation":"

Describes the ClassicLink status of one or more VPCs.

" - }, - "DescribeVpcPeeringConnections":{ - "name":"DescribeVpcPeeringConnections", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeVpcPeeringConnectionsRequest"}, - "output":{"shape":"DescribeVpcPeeringConnectionsResult"}, - "documentation":"

Describes one or more of your VPC peering connections.

" - }, - "DescribeVpcs":{ - "name":"DescribeVpcs", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeVpcsRequest"}, - "output":{"shape":"DescribeVpcsResult"}, - "documentation":"

Describes one or more of your VPCs.

" - }, - "DescribeVpnConnections":{ - "name":"DescribeVpnConnections", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeVpnConnectionsRequest"}, - "output":{"shape":"DescribeVpnConnectionsResult"}, - "documentation":"

Describes one or more of your VPN connections.

For more information about VPN connections, see Adding a Hardware Virtual Private Gateway to Your VPC in the Amazon Virtual Private Cloud User Guide.

" - }, - "DescribeVpnGateways":{ - "name":"DescribeVpnGateways", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeVpnGatewaysRequest"}, - "output":{"shape":"DescribeVpnGatewaysResult"}, - "documentation":"

Describes one or more of your virtual private gateways.

For more information about virtual private gateways, see Adding an IPsec Hardware VPN to Your VPC in the Amazon Virtual Private Cloud User Guide.

" - }, - "DetachClassicLinkVpc":{ - "name":"DetachClassicLinkVpc", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DetachClassicLinkVpcRequest"}, - "output":{"shape":"DetachClassicLinkVpcResult"}, - "documentation":"

Unlinks (detaches) a linked EC2-Classic instance from a VPC. After the instance has been unlinked, the VPC security groups are no longer associated with it. An instance is automatically unlinked from a VPC when it's stopped.

" - }, - "DetachInternetGateway":{ - "name":"DetachInternetGateway", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DetachInternetGatewayRequest"}, - "documentation":"

Detaches an Internet gateway from a VPC, disabling connectivity between the Internet and the VPC. The VPC must not contain any running instances with Elastic IP addresses.

" - }, - "DetachNetworkInterface":{ - "name":"DetachNetworkInterface", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DetachNetworkInterfaceRequest"}, - "documentation":"

Detaches a network interface from an instance.

" - }, - "DetachVolume":{ - "name":"DetachVolume", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DetachVolumeRequest"}, - "output":{ - "shape":"VolumeAttachment", - "locationName":"attachment" - }, - "documentation":"

Detaches an Amazon EBS volume from an instance. Make sure to unmount any file systems on the device within your operating system before detaching the volume. Failure to do so results in the volume being stuck in a busy state while detaching.

If an Amazon EBS volume is the root device of an instance, it can't be detached while the instance is running. To detach the root volume, stop the instance first.

When a volume with an AWS Marketplace product code is detached from an instance, the product code is no longer associated with the instance.

For more information, see Detaching an Amazon EBS Volume in the Amazon Elastic Compute Cloud User Guide for Linux.

" - }, - "DetachVpnGateway":{ - "name":"DetachVpnGateway", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DetachVpnGatewayRequest"}, - "documentation":"

Detaches a virtual private gateway from a VPC. You do this if you're planning to turn off the VPC and not use it anymore. You can confirm a virtual private gateway has been completely detached from a VPC by describing the virtual private gateway (any attachments to the virtual private gateway are also described).

You must wait for the attachment's state to switch to detached before you can delete the VPC or attach a different VPC to the virtual private gateway.

" - }, - "DisableVgwRoutePropagation":{ - "name":"DisableVgwRoutePropagation", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DisableVgwRoutePropagationRequest"}, - "documentation":"

Disables a virtual private gateway (VGW) from propagating routes to a specified route table of a VPC.

" - }, - "DisableVpcClassicLink":{ - "name":"DisableVpcClassicLink", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DisableVpcClassicLinkRequest"}, - "output":{"shape":"DisableVpcClassicLinkResult"}, - "documentation":"

Disables ClassicLink for a VPC. You cannot disable ClassicLink for a VPC that has EC2-Classic instances linked to it.

" - }, - "DisassociateAddress":{ - "name":"DisassociateAddress", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DisassociateAddressRequest"}, - "documentation":"

Disassociates an Elastic IP address from the instance or network interface it's associated with.

An Elastic IP address is for use in either the EC2-Classic platform or in a VPC. For more information, see Elastic IP Addresses in the Amazon Elastic Compute Cloud User Guide for Linux.

This is an idempotent operation. If you perform the operation more than once, Amazon EC2 doesn't return an error.

" - }, - "DisassociateRouteTable":{ - "name":"DisassociateRouteTable", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DisassociateRouteTableRequest"}, - "documentation":"

Disassociates a subnet from a route table.

After you perform this action, the subnet no longer uses the routes in the route table. Instead, it uses the routes in the VPC's main route table. For more information about route tables, see Route Tables in the Amazon Virtual Private Cloud User Guide.

" - }, - "EnableVgwRoutePropagation":{ - "name":"EnableVgwRoutePropagation", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"EnableVgwRoutePropagationRequest"}, - "documentation":"

Enables a virtual private gateway (VGW) to propagate routes to the specified route table of a VPC.

" - }, - "EnableVolumeIO":{ - "name":"EnableVolumeIO", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"EnableVolumeIORequest"}, - "documentation":"

Enables I/O operations for a volume that had I/O operations disabled because the data on the volume was potentially inconsistent.

" - }, - "EnableVpcClassicLink":{ - "name":"EnableVpcClassicLink", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"EnableVpcClassicLinkRequest"}, - "output":{"shape":"EnableVpcClassicLinkResult"}, - "documentation":"

Enables a VPC for ClassicLink. You can then link EC2-Classic instances to your ClassicLink-enabled VPC to allow communication over private IP addresses. You cannot enable your VPC for ClassicLink if any of your VPC's route tables have existing routes for address ranges within the 10.0.0.0/8 IP address range, excluding local routes for VPCs in the 10.0.0.0/16 and 10.1.0.0/16 IP address ranges. For more information, see ClassicLink in the Amazon Elastic Compute Cloud User Guide for Linux.

" - }, - "GetConsoleOutput":{ - "name":"GetConsoleOutput", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"GetConsoleOutputRequest"}, - "output":{"shape":"GetConsoleOutputResult"}, - "documentation":"

Gets the console output for the specified instance.

Instances do not have a physical monitor through which you can view their console output. They also lack physical controls that allow you to power up, reboot, or shut them down. To allow these actions, we provide them through the Amazon EC2 API and command line interface.

Instance console output is buffered and posted shortly after instance boot, reboot, and termination. Amazon EC2 preserves the most recent 64 KB output which is available for at least one hour after the most recent post.

For Linux/Unix instances, the instance console output displays the exact console output that would normally be displayed on a physical monitor attached to a machine. This output is buffered because the instance produces it and then posts it to a store where the instance's owner can retrieve it.

For Windows instances, the instance console output displays the last three system event log errors.

" - }, - "GetPasswordData":{ - "name":"GetPasswordData", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"GetPasswordDataRequest"}, - "output":{"shape":"GetPasswordDataResult"}, - "documentation":"

Retrieves the encrypted administrator password for an instance running Windows.

The Windows password is generated at boot if the EC2Config service plugin, Ec2SetPassword, is enabled. This usually only happens the first time an AMI is launched, and then Ec2SetPassword is automatically disabled. The password is not generated for rebundled AMIs unless Ec2SetPassword is enabled before bundling.

The password is encrypted using the key pair that you specified when you launched the instance. You must provide the corresponding key pair file.

Password generation and encryption takes a few moments. We recommend that you wait up to 15 minutes after launching an instance before trying to retrieve the generated password.

" - }, - "ImportInstance":{ - "name":"ImportInstance", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"ImportInstanceRequest"}, - "output":{"shape":"ImportInstanceResult"}, - "documentation":"

Creates an import instance task using metadata from the specified disk image. After importing the image, you then upload it using the ec2-import-volume command in the EC2 command line tools. For more information, see Using the Command Line Tools to Import Your Virtual Machine to Amazon EC2 in the Amazon Elastic Compute Cloud User Guide for Linux.

" - }, - "ImportKeyPair":{ - "name":"ImportKeyPair", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"ImportKeyPairRequest"}, - "output":{"shape":"ImportKeyPairResult"}, - "documentation":"

Imports the public key from an RSA key pair that you created with a third-party tool. Compare this with CreateKeyPair, in which AWS creates the key pair and gives the keys to you (AWS keeps a copy of the public key). With ImportKeyPair, you create the key pair and give AWS just the public key. The private key is never transferred between you and AWS.

For more information about key pairs, see Key Pairs in the Amazon Elastic Compute Cloud User Guide for Linux.

" - }, - "ImportVolume":{ - "name":"ImportVolume", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"ImportVolumeRequest"}, - "output":{"shape":"ImportVolumeResult"}, - "documentation":"

Creates an import volume task using metadata from the specified disk image. After importing the image, you then upload it using the ec2-import-volume command in the Amazon EC2 command-line interface (CLI) tools. For more information, see Using the Command Line Tools to Import Your Virtual Machine to Amazon EC2 in the Amazon Elastic Compute Cloud User Guide for Linux.

" - }, - "ModifyImageAttribute":{ - "name":"ModifyImageAttribute", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"ModifyImageAttributeRequest"}, - "documentation":"

Modifies the specified attribute of the specified AMI. You can specify only one attribute at a time.

AWS Marketplace product codes cannot be modified. Images with an AWS Marketplace product code cannot be made public.

" - }, - "ModifyInstanceAttribute":{ - "name":"ModifyInstanceAttribute", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"ModifyInstanceAttributeRequest"}, - "documentation":"

Modifies the specified attribute of the specified instance. You can specify only one attribute at a time.

To modify some attributes, the instance must be stopped. For more information, see Modifying Attributes of a Stopped Instance in the Amazon Elastic Compute Cloud User Guide for Linux.

" - }, - "ModifyNetworkInterfaceAttribute":{ - "name":"ModifyNetworkInterfaceAttribute", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"ModifyNetworkInterfaceAttributeRequest"}, - "documentation":"

Modifies the specified network interface attribute. You can specify only one attribute at a time.

" - }, - "ModifyReservedInstances":{ - "name":"ModifyReservedInstances", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"ModifyReservedInstancesRequest"}, - "output":{"shape":"ModifyReservedInstancesResult"}, - "documentation":"

Modifies the Availability Zone, instance count, instance type, or network platform (EC2-Classic or EC2-VPC) of your Reserved Instances. The Reserved Instances to be modified must be identical, except for Availability Zone, network platform, and instance type.

For more information, see Modifying Reserved Instances in the Amazon Elastic Compute Cloud User Guide for Linux.

" - }, - "ModifySnapshotAttribute":{ - "name":"ModifySnapshotAttribute", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"ModifySnapshotAttributeRequest"}, - "documentation":"

Adds or removes permission settings for the specified snapshot. You may add or remove specified AWS account IDs from a snapshot's list of create volume permissions, but you cannot do both in a single API call. If you need to both add and remove account IDs for a snapshot, you must use multiple API calls.

For more information on modifying snapshot permissions, see Sharing Snapshots in the Amazon Elastic Compute Cloud User Guide for Linux.

Snapshots with AWS Marketplace product codes cannot be made public.

" - }, - "ModifySubnetAttribute":{ - "name":"ModifySubnetAttribute", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"ModifySubnetAttributeRequest"}, - "documentation":"

Modifies a subnet attribute.

" - }, - "ModifyVolumeAttribute":{ - "name":"ModifyVolumeAttribute", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"ModifyVolumeAttributeRequest"}, - "documentation":"

Modifies a volume attribute.

By default, all I/O operations for the volume are suspended when the data on the volume is determined to be potentially inconsistent, to prevent undetectable, latent data corruption. The I/O access to the volume can be resumed by first enabling I/O access and then checking the data consistency on your volume.

You can change the default behavior to resume I/O operations. We recommend that you change this only for boot volumes or for volumes that are stateless or disposable.

" - }, - "ModifyVpcAttribute":{ - "name":"ModifyVpcAttribute", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"ModifyVpcAttributeRequest"}, - "documentation":"

Modifies the specified attribute of the specified VPC.

" - }, - "MonitorInstances":{ - "name":"MonitorInstances", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"MonitorInstancesRequest"}, - "output":{"shape":"MonitorInstancesResult"}, - "documentation":"

Enables monitoring for a running instance. For more information about monitoring instances, see Monitoring Your Instances and Volumes in the Amazon Elastic Compute Cloud User Guide for Linux.

" - }, - "PurchaseReservedInstancesOffering":{ - "name":"PurchaseReservedInstancesOffering", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"PurchaseReservedInstancesOfferingRequest"}, - "output":{"shape":"PurchaseReservedInstancesOfferingResult"}, - "documentation":"

Purchases a Reserved Instance for use with your account. With Amazon EC2 Reserved Instances, you obtain a capacity reservation for a certain instance configuration over a specified period of time. You pay a lower usage rate than with On-Demand instances for the time that you actually use the capacity reservation.

Use DescribeReservedInstancesOfferings to get a list of Reserved Instance offerings that match your specifications. After you've purchased a Reserved Instance, you can check for your new Reserved Instance with DescribeReservedInstances.

For more information, see Reserved Instances and Reserved Instance Marketplace in the Amazon Elastic Compute Cloud User Guide for Linux.

" - }, - "RebootInstances":{ - "name":"RebootInstances", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"RebootInstancesRequest"}, - "documentation":"

Requests a reboot of one or more instances. This operation is asynchronous; it only queues a request to reboot the specified instances. The operation succeeds if the instances are valid and belong to you. Requests to reboot terminated instances are ignored.

If a Linux/Unix instance does not cleanly shut down within four minutes, Amazon EC2 performs a hard reboot.

For more information about troubleshooting, see Getting Console Output and Rebooting Instances in the Amazon Elastic Compute Cloud User Guide for Linux.

" - }, - "RegisterImage":{ - "name":"RegisterImage", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"RegisterImageRequest"}, - "output":{"shape":"RegisterImageResult"}, - "documentation":"

Registers an AMI. When you're creating an AMI, this is the final step you must complete before you can launch an instance from the AMI. For more information about creating AMIs, see Creating Your Own AMIs in the Amazon Elastic Compute Cloud User Guide for Linux.

For Amazon EBS-backed instances, CreateImage creates and registers the AMI in a single request, so you don't have to register the AMI yourself.

You can also use RegisterImage to create an Amazon EBS-backed AMI from a snapshot of a root device volume. For more information, see Launching an Instance from a Snapshot in the Amazon Elastic Compute Cloud User Guide for Linux.

If needed, you can deregister an AMI at any time. Any modifications you make to an AMI backed by an instance store volume invalidates its registration. If you make changes to an image, deregister the previous image and register the new image.

You can't register an image where a secondary (non-root) snapshot has AWS Marketplace product codes.

" - }, - "RejectVpcPeeringConnection":{ - "name":"RejectVpcPeeringConnection", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"RejectVpcPeeringConnectionRequest"}, - "output":{"shape":"RejectVpcPeeringConnectionResult"}, - "documentation":"

Rejects a VPC peering connection request. The VPC peering connection must be in the pending-acceptance state. Use the DescribeVpcPeeringConnections request to view your outstanding VPC peering connection requests. To delete an active VPC peering connection, or to delete a VPC peering connection request that you initiated, use DeleteVpcPeeringConnection.

" - }, - "ReleaseAddress":{ - "name":"ReleaseAddress", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"ReleaseAddressRequest"}, - "documentation":"

Releases the specified Elastic IP address.

After releasing an Elastic IP address, it is released to the IP address pool and might be unavailable to you. Be sure to update your DNS records and any servers or devices that communicate with the address. If you attempt to release an Elastic IP address that you already released, you'll get an AuthFailure error if the address is already allocated to another AWS account.

[EC2-Classic, default VPC] Releasing an Elastic IP address automatically disassociates it from any instance that it's associated with. To disassociate an Elastic IP address without releasing it, use DisassociateAddress.

[Nondefault VPC] You must use DisassociateAddress to disassociate the Elastic IP address before you try to release it. Otherwise, Amazon EC2 returns an error (InvalidIPAddress.InUse).

" - }, - "ReplaceNetworkAclAssociation":{ - "name":"ReplaceNetworkAclAssociation", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"ReplaceNetworkAclAssociationRequest"}, - "output":{"shape":"ReplaceNetworkAclAssociationResult"}, - "documentation":"

Changes which network ACL a subnet is associated with. By default when you create a subnet, it's automatically associated with the default network ACL. For more information about network ACLs, see Network ACLs in the Amazon Virtual Private Cloud User Guide.

" - }, - "ReplaceNetworkAclEntry":{ - "name":"ReplaceNetworkAclEntry", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"ReplaceNetworkAclEntryRequest"}, - "documentation":"

Replaces an entry (rule) in a network ACL. For more information about network ACLs, see Network ACLs in the Amazon Virtual Private Cloud User Guide.

" - }, - "ReplaceRoute":{ - "name":"ReplaceRoute", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"ReplaceRouteRequest"}, - "documentation":"

Replaces an existing route within a route table in a VPC. You must provide only one of the following: Internet gateway or virtual private gateway, NAT instance, VPC peering connection, or network interface.

For more information about route tables, see Route Tables in the Amazon Virtual Private Cloud User Guide.

" - }, - "ReplaceRouteTableAssociation":{ - "name":"ReplaceRouteTableAssociation", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"ReplaceRouteTableAssociationRequest"}, - "output":{"shape":"ReplaceRouteTableAssociationResult"}, - "documentation":"

Changes the route table associated with a given subnet in a VPC. After the operation completes, the subnet uses the routes in the new route table it's associated with. For more information about route tables, see Route Tables in the Amazon Virtual Private Cloud User Guide.

You can also use ReplaceRouteTableAssociation to change which table is the main route table in the VPC. You just specify the main route table's association ID and the route table to be the new main route table.

" - }, - "ReportInstanceStatus":{ - "name":"ReportInstanceStatus", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"ReportInstanceStatusRequest"}, - "documentation":"

Submits feedback about the status of an instance. The instance must be in the running state. If your experience with the instance differs from the instance status returned by DescribeInstanceStatus, use ReportInstanceStatus to report your experience with the instance. Amazon EC2 collects this information to improve the accuracy of status checks.

Use of this action does not change the value returned by DescribeInstanceStatus.

" - }, - "RequestSpotInstances":{ - "name":"RequestSpotInstances", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"RequestSpotInstancesRequest"}, - "output":{"shape":"RequestSpotInstancesResult"}, - "documentation":"

Creates a Spot Instance request. Spot Instances are instances that Amazon EC2 starts on your behalf when the maximum price that you specify exceeds the current Spot Price. Amazon EC2 periodically sets the Spot Price based on available Spot Instance capacity and current Spot Instance requests. For more information, see Spot Instance Requests in the Amazon Elastic Compute Cloud User Guide for Linux.

Users must be subscribed to the required product to run an instance with AWS Marketplace product codes.

" - }, - "ResetImageAttribute":{ - "name":"ResetImageAttribute", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"ResetImageAttributeRequest"}, - "documentation":"

Resets an attribute of an AMI to its default value.

The productCodes attribute can't be reset.

" - }, - "ResetInstanceAttribute":{ - "name":"ResetInstanceAttribute", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"ResetInstanceAttributeRequest"}, - "documentation":"

Resets an attribute of an instance to its default value. To reset the kernel or ramdisk, the instance must be in a stopped state. To reset the SourceDestCheck, the instance can be either running or stopped.

The SourceDestCheck attribute controls whether source/destination checking is enabled. The default value is true, which means checking is enabled. This value must be false for a NAT instance to perform NAT. For more information, see NAT Instances in the Amazon Virtual Private Cloud User Guide.

" - }, - "ResetNetworkInterfaceAttribute":{ - "name":"ResetNetworkInterfaceAttribute", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"ResetNetworkInterfaceAttributeRequest"}, - "documentation":"

Resets a network interface attribute. You can specify only one attribute at a time.

" - }, - "ResetSnapshotAttribute":{ - "name":"ResetSnapshotAttribute", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"ResetSnapshotAttributeRequest"}, - "documentation":"

Resets permission settings for the specified snapshot.

For more information on modifying snapshot permissions, see Sharing Snapshots in the Amazon Elastic Compute Cloud User Guide for Linux.

" - }, - "RevokeSecurityGroupEgress":{ - "name":"RevokeSecurityGroupEgress", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"RevokeSecurityGroupEgressRequest"}, - "documentation":"

Removes one or more egress rules from a security group for EC2-VPC. The values that you specify in the revoke request (for example, ports) must match the existing rule's values for the rule to be revoked.

Each rule consists of the protocol and the CIDR range or source security group. For the TCP and UDP protocols, you must also specify the destination port or range of ports. For the ICMP protocol, you must also specify the ICMP type and code.

Rule changes are propagated to instances within the security group as quickly as possible. However, a small delay might occur.

" - }, - "RevokeSecurityGroupIngress":{ - "name":"RevokeSecurityGroupIngress", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"RevokeSecurityGroupIngressRequest"}, - "documentation":"

Removes one or more ingress rules from a security group. The values that you specify in the revoke request (for example, ports) must match the existing rule's values for the rule to be removed.

Each rule consists of the protocol and the CIDR range or source security group. For the TCP and UDP protocols, you must also specify the destination port or range of ports. For the ICMP protocol, you must also specify the ICMP type and code.

Rule changes are propagated to instances within the security group as quickly as possible. However, a small delay might occur.

" - }, - "RunInstances":{ - "name":"RunInstances", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"RunInstancesRequest"}, - "output":{ - "shape":"Reservation", - "documentation":"

One or more reservations.

", - "locationName":"reservation" - }, - "documentation":"

Launches the specified number of instances using an AMI for which you have permissions.

When you launch an instance, it enters the pending state. After the instance is ready for you, it enters the running state. To check the state of your instance, call DescribeInstances.

If you don't specify a security group when launching an instance, Amazon EC2 uses the default security group. For more information, see Security Groups in the Amazon Elastic Compute Cloud User Guide for Linux.

Linux instances have access to the public key of the key pair at boot. You can use this key to provide secure access to the instance. Amazon EC2 public images use this feature to provide secure access without passwords. For more information, see Key Pairs in the Amazon Elastic Compute Cloud User Guide for Linux.

You can provide optional user data when launching an instance. For more information, see Instance Metadata in the Amazon Elastic Compute Cloud User Guide for Linux.

If any of the AMIs have a product code attached for which the user has not subscribed, RunInstances fails.

T2 instance types can only be launched into a VPC. If you do not have a default VPC, or if you do not specify a subnet ID in the request, RunInstances fails.

For more information about troubleshooting, see What To Do If An Instance Immediately Terminates, and Troubleshooting Connecting to Your Instance in the Amazon Elastic Compute Cloud User Guide for Linux.

" - }, - "StartInstances":{ - "name":"StartInstances", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"StartInstancesRequest"}, - "output":{"shape":"StartInstancesResult"}, - "documentation":"

Starts an Amazon EBS-backed AMI that you've previously stopped.

Instances that use Amazon EBS volumes as their root devices can be quickly stopped and started. When an instance is stopped, the compute resources are released and you are not billed for hourly instance usage. However, your root partition Amazon EBS volume remains, continues to persist your data, and you are charged for Amazon EBS volume usage. You can restart your instance at any time. Each time you transition an instance from stopped to started, Amazon EC2 charges a full instance hour, even if transitions happen multiple times within a single hour.

Before stopping an instance, make sure it is in a state from which it can be restarted. Stopping an instance does not preserve data stored in RAM.

Performing this operation on an instance that uses an instance store as its root device returns an error.

For more information, see Stopping Instances in the Amazon Elastic Compute Cloud User Guide for Linux.

" - }, - "StopInstances":{ - "name":"StopInstances", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"StopInstancesRequest"}, - "output":{"shape":"StopInstancesResult"}, - "documentation":"

Stops an Amazon EBS-backed instance. Each time you transition an instance from stopped to started, Amazon EC2 charges a full instance hour, even if transitions happen multiple times within a single hour.

You can't start or stop Spot Instances.

Instances that use Amazon EBS volumes as their root devices can be quickly stopped and started. When an instance is stopped, the compute resources are released and you are not billed for hourly instance usage. However, your root partition Amazon EBS volume remains, continues to persist your data, and you are charged for Amazon EBS volume usage. You can restart your instance at any time.

Before stopping an instance, make sure it is in a state from which it can be restarted. Stopping an instance does not preserve data stored in RAM.

Performing this operation on an instance that uses an instance store as its root device returns an error.

You can stop, start, and terminate EBS-backed instances. You can only terminate instance store-backed instances. What happens to an instance differs if you stop it or terminate it. For example, when you stop an instance, the root device and any other devices attached to the instance persist. When you terminate an instance, the root device and any other devices attached during the instance launch are automatically deleted. For more information about the differences between stopping and terminating instances, see Instance Lifecycle in the Amazon Elastic Compute Cloud User Guide for Linux.

For more information about troubleshooting, see Troubleshooting Stopping Your Instance in the Amazon Elastic Compute Cloud User Guide for Linux.

" - }, - "TerminateInstances":{ - "name":"TerminateInstances", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"TerminateInstancesRequest"}, - "output":{"shape":"TerminateInstancesResult"}, - "documentation":"

Shuts down one or more instances. This operation is idempotent; if you terminate an instance more than once, each call succeeds.

Terminated instances remain visible after termination (for approximately one hour).

By default, Amazon EC2 deletes all Amazon EBS volumes that were attached when the instance launched. Volumes attached after instance launch continue running.

You can stop, start, and terminate EBS-backed instances. You can only terminate instance store-backed instances. What happens to an instance differs if you stop it or terminate it. For example, when you stop an instance, the root device and any other devices attached to the instance persist. When you terminate an instance, the root device and any other devices attached during the instance launch are automatically deleted. For more information about the differences between stopping and terminating instances, see Instance Lifecycle in the Amazon Elastic Compute Cloud User Guide for Linux.

For more information about troubleshooting, see Troubleshooting Terminating Your Instance in the Amazon Elastic Compute Cloud User Guide for Linux.

" - }, - "UnassignPrivateIpAddresses":{ - "name":"UnassignPrivateIpAddresses", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"UnassignPrivateIpAddressesRequest"}, - "documentation":"

Unassigns one or more secondary private IP addresses from a network interface.

" - }, - "UnmonitorInstances":{ - "name":"UnmonitorInstances", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"UnmonitorInstancesRequest"}, - "output":{"shape":"UnmonitorInstancesResult"}, - "documentation":"

Disables monitoring for a running instance. For more information about monitoring instances, see Monitoring Your Instances and Volumes in the Amazon Elastic Compute Cloud User Guide for Linux.

" - } - }, - "shapes":{ - "AcceptVpcPeeringConnectionRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "VpcPeeringConnectionId":{ - "shape":"String", - "documentation":"

The ID of the VPC peering connection.

", - "locationName":"vpcPeeringConnectionId" - } - } - }, - "AcceptVpcPeeringConnectionResult":{ - "type":"structure", - "members":{ - "VpcPeeringConnection":{ - "shape":"VpcPeeringConnection", - "documentation":"

Information about the VPC peering connection.

", - "locationName":"vpcPeeringConnection" - } - } - }, - "AccountAttribute":{ - "type":"structure", - "members":{ - "AttributeName":{ - "shape":"String", - "documentation":"

The name of the account attribute.

", - "locationName":"attributeName" - }, - "AttributeValues":{ - "shape":"AccountAttributeValueList", - "documentation":"

One or more values for the account attribute.

", - "locationName":"attributeValueSet" - } - }, - "documentation":"

Describes an account attribute.

" - }, - "AccountAttributeList":{ - "type":"list", - "member":{ - "shape":"AccountAttribute", - "locationName":"item" - } - }, - "AccountAttributeName":{ - "type":"string", - "enum":[ - "supported-platforms", - "default-vpc" - ] - }, - "AccountAttributeNameStringList":{ - "type":"list", - "member":{ - "shape":"AccountAttributeName", - "locationName":"attributeName" - } - }, - "AccountAttributeValue":{ - "type":"structure", - "members":{ - "AttributeValue":{ - "shape":"String", - "documentation":"

The value of the attribute.

", - "locationName":"attributeValue" - } - }, - "documentation":"

Describes a value of an account attribute.

" - }, - "AccountAttributeValueList":{ - "type":"list", - "member":{ - "shape":"AccountAttributeValue", - "locationName":"item" - } - }, - "Address":{ - "type":"structure", - "members":{ - "InstanceId":{ - "shape":"String", - "documentation":"

The ID of the instance the address is associated with (if any).

", - "locationName":"instanceId" - }, - "PublicIp":{ - "shape":"String", - "documentation":"

The Elastic IP address.

", - "locationName":"publicIp" - }, - "AllocationId":{ - "shape":"String", - "documentation":"

The ID representing the allocation of the address for use with EC2-VPC.

", - "locationName":"allocationId" - }, - "AssociationId":{ - "shape":"String", - "documentation":"

The ID representing the association of the address with an instance in a VPC.

", - "locationName":"associationId" - }, - "Domain":{ - "shape":"DomainType", - "documentation":"

Indicates whether this Elastic IP address is for use with instances in EC2-Classic (standard) or instances in a VPC (vpc).

", - "locationName":"domain" - }, - "NetworkInterfaceId":{ - "shape":"String", - "documentation":"

The ID of the network interface.

", - "locationName":"networkInterfaceId" - }, - "NetworkInterfaceOwnerId":{ - "shape":"String", - "documentation":"

The ID of the AWS account that owns the network interface.

", - "locationName":"networkInterfaceOwnerId" - }, - "PrivateIpAddress":{ - "shape":"String", - "documentation":"

The private IP address associated with the Elastic IP address.

", - "locationName":"privateIpAddress" - } - }, - "documentation":"

Describes an Elastic IP address.

" - }, - "AddressList":{ - "type":"list", - "member":{ - "shape":"Address", - "locationName":"item" - } - }, - "AllocateAddressRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "Domain":{ - "shape":"DomainType", - "documentation":"

Set to vpc to allocate the address for use with instances in a VPC.

Default: The address is for use with instances in EC2-Classic.

" - } - } - }, - "AllocateAddressResult":{ - "type":"structure", - "members":{ - "PublicIp":{ - "shape":"String", - "documentation":"

The Elastic IP address.

", - "locationName":"publicIp" - }, - "Domain":{ - "shape":"DomainType", - "documentation":"

Indicates whether this Elastic IP address is for use with instances in EC2-Classic (standard) or instances in a VPC (vpc).

", - "locationName":"domain" - }, - "AllocationId":{ - "shape":"String", - "documentation":"

[EC2-VPC] The ID that AWS assigns to represent the allocation of the Elastic IP address for use with instances in a VPC.

", - "locationName":"allocationId" - } - } - }, - "AllocationIdList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"AllocationId" - } - }, - "ArchitectureValues":{ - "type":"string", - "enum":[ - "i386", - "x86_64" - ] - }, - "AssignPrivateIpAddressesRequest":{ - "type":"structure", - "required":["NetworkInterfaceId"], - "members":{ - "NetworkInterfaceId":{ - "shape":"String", - "documentation":"

The ID of the network interface.

", - "locationName":"networkInterfaceId" - }, - "PrivateIpAddresses":{ - "shape":"PrivateIpAddressStringList", - "documentation":"

One or more IP addresses to be assigned as a secondary private IP address to the network interface. You can't specify this parameter when also specifying a number of secondary IP addresses.

If you don't specify an IP address, Amazon EC2 automatically selects an IP address within the subnet range.

", - "locationName":"privateIpAddress" - }, - "SecondaryPrivateIpAddressCount":{ - "shape":"Integer", - "documentation":"

The number of secondary IP addresses to assign to the network interface. You can't specify this parameter when also specifying private IP addresses.

", - "locationName":"secondaryPrivateIpAddressCount" - }, - "AllowReassignment":{ - "shape":"Boolean", - "documentation":"

Indicates whether to allow an IP address that is already assigned to another network interface or instance to be reassigned to the specified network interface.

", - "locationName":"allowReassignment" - } - } - }, - "AssociateAddressRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "InstanceId":{ - "shape":"String", - "documentation":"

The ID of the instance. This is required for EC2-Classic. For EC2-VPC, you can specify either the instance ID or the network interface ID, but not both. The operation fails if you specify an instance ID unless exactly one network interface is attached.

" - }, - "PublicIp":{ - "shape":"String", - "documentation":"

The Elastic IP address. This is required for EC2-Classic.

" - }, - "AllocationId":{ - "shape":"String", - "documentation":"

[EC2-VPC] The allocation ID. This is required for EC2-VPC.

" - }, - "NetworkInterfaceId":{ - "shape":"String", - "documentation":"

[EC2-VPC] The ID of the network interface. If the instance has more than one network interface, you must specify a network interface ID.

", - "locationName":"networkInterfaceId" - }, - "PrivateIpAddress":{ - "shape":"String", - "documentation":"

[EC2-VPC] The primary or secondary private IP address to associate with the Elastic IP address. If no private IP address is specified, the Elastic IP address is associated with the primary private IP address.

", - "locationName":"privateIpAddress" - }, - "AllowReassociation":{ - "shape":"Boolean", - "documentation":"

[EC2-VPC] Allows an Elastic IP address that is already associated with an instance or network interface to be re-associated with the specified instance or network interface. Otherwise, the operation fails.

Default: false

", - "locationName":"allowReassociation" - } - } - }, - "AssociateAddressResult":{ - "type":"structure", - "members":{ - "AssociationId":{ - "shape":"String", - "documentation":"

[EC2-VPC] The ID that represents the association of the Elastic IP address with an instance.

", - "locationName":"associationId" - } - } - }, - "AssociateDhcpOptionsRequest":{ - "type":"structure", - "required":[ - "DhcpOptionsId", - "VpcId" - ], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "DhcpOptionsId":{ - "shape":"String", - "documentation":"

The ID of the DHCP options set, or default to associate no DHCP options with the VPC.

" - }, - "VpcId":{ - "shape":"String", - "documentation":"

The ID of the VPC.

" - } - } - }, - "AssociateRouteTableRequest":{ - "type":"structure", - "required":[ - "SubnetId", - "RouteTableId" - ], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "SubnetId":{ - "shape":"String", - "documentation":"

The ID of the subnet.

", - "locationName":"subnetId" - }, - "RouteTableId":{ - "shape":"String", - "documentation":"

The ID of the route table.

", - "locationName":"routeTableId" - } - } - }, - "AssociateRouteTableResult":{ - "type":"structure", - "members":{ - "AssociationId":{ - "shape":"String", - "documentation":"

The route table association ID (needed to disassociate the route table).

", - "locationName":"associationId" - } - } - }, - "AttachClassicLinkVpcRequest":{ - "type":"structure", - "required":[ - "InstanceId", - "VpcId", - "Groups" - ], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "InstanceId":{ - "shape":"String", - "documentation":"

The ID of an EC2-Classic instance to link to the ClassicLink-enabled VPC.

", - "locationName":"instanceId" - }, - "VpcId":{ - "shape":"String", - "documentation":"

The ID of a ClassicLink-enabled VPC.

", - "locationName":"vpcId" - }, - "Groups":{ - "shape":"GroupIdStringList", - "documentation":"

The ID of one or more of the VPC's security groups. You cannot specify security groups from a different VPC.

", - "locationName":"SecurityGroupId" - } - } - }, - "AttachClassicLinkVpcResult":{ - "type":"structure", - "members":{ - "Return":{ - "shape":"Boolean", - "documentation":"

Returns true if the request succeeds; otherwise, it returns an error.

", - "locationName":"return" - } - } - }, - "AttachInternetGatewayRequest":{ - "type":"structure", - "required":[ - "InternetGatewayId", - "VpcId" - ], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "InternetGatewayId":{ - "shape":"String", - "documentation":"

The ID of the Internet gateway.

", - "locationName":"internetGatewayId" - }, - "VpcId":{ - "shape":"String", - "documentation":"

The ID of the VPC.

", - "locationName":"vpcId" - } - } - }, - "AttachNetworkInterfaceRequest":{ - "type":"structure", - "required":[ - "NetworkInterfaceId", - "InstanceId", - "DeviceIndex" - ], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "NetworkInterfaceId":{ - "shape":"String", - "documentation":"

The ID of the network interface.

", - "locationName":"networkInterfaceId" - }, - "InstanceId":{ - "shape":"String", - "documentation":"

The ID of the instance.

", - "locationName":"instanceId" - }, - "DeviceIndex":{ - "shape":"Integer", - "documentation":"

The index of the device for the network interface attachment.

", - "locationName":"deviceIndex" - } - } - }, - "AttachNetworkInterfaceResult":{ - "type":"structure", - "members":{ - "AttachmentId":{ - "shape":"String", - "documentation":"

The ID of the network interface attachment.

", - "locationName":"attachmentId" - } - } - }, - "AttachVolumeRequest":{ - "type":"structure", - "required":[ - "VolumeId", - "InstanceId", - "Device" - ], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "VolumeId":{ - "shape":"String", - "documentation":"

The ID of the Amazon EBS volume. The volume and instance must be within the same Availability Zone.

" - }, - "InstanceId":{ - "shape":"String", - "documentation":"

The ID of the instance.

" - }, - "Device":{ - "shape":"String", - "documentation":"

The device name to expose to the instance (for example, /dev/sdh or xvdh).

" - } - } - }, - "AttachVpnGatewayRequest":{ - "type":"structure", - "required":[ - "VpnGatewayId", - "VpcId" - ], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "VpnGatewayId":{ - "shape":"String", - "documentation":"

The ID of the virtual private gateway.

" - }, - "VpcId":{ - "shape":"String", - "documentation":"

The ID of the VPC.

" - } - } - }, - "AttachVpnGatewayResult":{ - "type":"structure", - "members":{ - "VpcAttachment":{ - "shape":"VpcAttachment", - "documentation":"

Information about the attachment.

", - "locationName":"attachment" - } - } - }, - "AttachmentStatus":{ - "type":"string", - "enum":[ - "attaching", - "attached", - "detaching", - "detached" - ] - }, - "AttributeBooleanValue":{ - "type":"structure", - "members":{ - "Value":{ - "shape":"Boolean", - "documentation":"

Valid values are true or false.

", - "locationName":"value" - } - }, - "documentation":"

The value to use when a resource attribute accepts a Boolean value.

" - }, - "AttributeValue":{ - "type":"structure", - "members":{ - "Value":{ - "shape":"String", - "documentation":"

Valid values are case-sensitive and vary by action.

", - "locationName":"value" - } - }, - "documentation":"

The value to use for a resource attribute.

" - }, - "AuthorizeSecurityGroupEgressRequest":{ - "type":"structure", - "required":["GroupId"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "GroupId":{ - "shape":"String", - "documentation":"

The ID of the security group.

", - "locationName":"groupId" - }, - "SourceSecurityGroupName":{ - "shape":"String", - "documentation":"

[EC2-Classic, default VPC] The name of the destination security group. You can't specify a destination security group and a CIDR IP address range.

", - "locationName":"sourceSecurityGroupName" - }, - "SourceSecurityGroupOwnerId":{ - "shape":"String", - "documentation":"

The ID of the destination security group. You can't specify a destination security group and a CIDR IP address range.

", - "locationName":"sourceSecurityGroupOwnerId" - }, - "IpProtocol":{ - "shape":"String", - "documentation":"

The IP protocol name (tcp, udp, icmp) or number (see Protocol Numbers). Use -1 to specify all.

", - "locationName":"ipProtocol" - }, - "FromPort":{ - "shape":"Integer", - "documentation":"

The start of port range for the TCP and UDP protocols, or an ICMP type number. For the ICMP type number, use -1 to specify all ICMP types.

", - "locationName":"fromPort" - }, - "ToPort":{ - "shape":"Integer", - "documentation":"

The end of port range for the TCP and UDP protocols, or an ICMP code number. For the ICMP code number, use -1 to specify all ICMP codes for the ICMP type.

", - "locationName":"toPort" - }, - "CidrIp":{ - "shape":"String", - "documentation":"

The CIDR IP address range. You can't specify this parameter when specifying a source security group.

", - "locationName":"cidrIp" - }, - "IpPermissions":{ - "shape":"IpPermissionList", - "documentation":"

A set of IP permissions. You can't specify a destination security group and a CIDR IP address range.

", - "locationName":"ipPermissions" - } - } - }, - "AuthorizeSecurityGroupIngressRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "GroupName":{ - "shape":"String", - "documentation":"

[EC2-Classic, default VPC] The name of the security group.

" - }, - "GroupId":{ - "shape":"String", - "documentation":"

The ID of the security group.

" - }, - "SourceSecurityGroupName":{ - "shape":"String", - "documentation":"

[EC2-Classic, default VPC] The name of the source security group. You can't specify a source security group and a CIDR IP address range.

" - }, - "SourceSecurityGroupOwnerId":{ - "shape":"String", - "documentation":"

The ID of the source security group. You can't specify a source security group and a CIDR IP address range.

" - }, - "IpProtocol":{ - "shape":"String", - "documentation":"

The IP protocol name (tcp, udp, icmp) or number (see Protocol Numbers). Use -1 to specify all.

" - }, - "FromPort":{ - "shape":"Integer", - "documentation":"

The start of port range for the TCP and UDP protocols, or an ICMP type number. For the ICMP type number, use -1 to specify all ICMP types.

" - }, - "ToPort":{ - "shape":"Integer", - "documentation":"

The end of port range for the TCP and UDP protocols, or an ICMP code number. For the ICMP code number, use -1 to specify all ICMP codes for the ICMP type.

" - }, - "CidrIp":{ - "shape":"String", - "documentation":"

The CIDR IP address range. You can't specify this parameter when specifying a source security group.

" - }, - "IpPermissions":{ - "shape":"IpPermissionList", - "documentation":"

A set of IP permissions. You can't specify a source security group and a CIDR IP address range.

" - } - } - }, - "AvailabilityZone":{ - "type":"structure", - "members":{ - "ZoneName":{ - "shape":"String", - "documentation":"

The name of the Availability Zone.

", - "locationName":"zoneName" - }, - "State":{ - "shape":"AvailabilityZoneState", - "documentation":"

The state of the Availability Zone (available | impaired | unavailable).

", - "locationName":"zoneState" - }, - "RegionName":{ - "shape":"String", - "documentation":"

The name of the region.

", - "locationName":"regionName" - }, - "Messages":{ - "shape":"AvailabilityZoneMessageList", - "documentation":"

Any messages about the Availability Zone.

", - "locationName":"messageSet" - } - }, - "documentation":"

Describes an Availability Zone.

" - }, - "AvailabilityZoneList":{ - "type":"list", - "member":{ - "shape":"AvailabilityZone", - "locationName":"item" - } - }, - "AvailabilityZoneMessage":{ - "type":"structure", - "members":{ - "Message":{ - "shape":"String", - "documentation":"

The message about the Availability Zone.

", - "locationName":"message" - } - }, - "documentation":"

Describes a message about an Availability Zone.

" - }, - "AvailabilityZoneMessageList":{ - "type":"list", - "member":{ - "shape":"AvailabilityZoneMessage", - "locationName":"item" - } - }, - "AvailabilityZoneState":{ - "type":"string", - "enum":["available"] - }, - "BlockDeviceMapping":{ - "type":"structure", - "members":{ - "VirtualName":{ - "shape":"String", - "documentation":"

The virtual device name (ephemeralN). Instance store volumes are numbered starting from 0. An instance type with 2 available instance store volumes can specify mappings for ephemeral0 and ephemeral1.The number of available instance store volumes depends on the instance type. After you connect to the instance, you must mount the volume.

Constraints: For M3 instances, you must specify instance store volumes in the block device mapping for the instance. When you launch an M3 instance, we ignore any instance store volumes specified in the block device mapping for the AMI.

", - "locationName":"virtualName" - }, - "DeviceName":{ - "shape":"String", - "documentation":"

The device name exposed to the instance (for example, /dev/sdh).

", - "locationName":"deviceName" - }, - "Ebs":{ - "shape":"EbsBlockDevice", - "documentation":"

Parameters used to automatically set up Amazon EBS volumes when the instance is launched.

", - "locationName":"ebs" - }, - "NoDevice":{ - "shape":"String", - "documentation":"

Suppresses the specified device included in the block device mapping of the AMI.

", - "locationName":"noDevice" - } - }, - "documentation":"

Describes a block device mapping.

" - }, - "BlockDeviceMappingList":{ - "type":"list", - "member":{ - "shape":"BlockDeviceMapping", - "locationName":"item" - } - }, - "BlockDeviceMappingRequestList":{ - "type":"list", - "member":{ - "shape":"BlockDeviceMapping", - "locationName":"BlockDeviceMapping" - } - }, - "Boolean":{"type":"boolean"}, - "BundleIdStringList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"BundleId" - } - }, - "BundleInstanceRequest":{ - "type":"structure", - "required":[ - "InstanceId", - "Storage" - ], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "InstanceId":{ - "shape":"String", - "documentation":"

The ID of the instance to bundle.

Type: String

Default: None

Required: Yes

" - }, - "Storage":{ - "shape":"Storage", - "documentation":"

The bucket in which to store the AMI. You can specify a bucket that you already own or a new bucket that Amazon EC2 creates on your behalf. If you specify a bucket that belongs to someone else, Amazon EC2 returns an error.

" - } - } - }, - "BundleInstanceResult":{ - "type":"structure", - "members":{ - "BundleTask":{ - "shape":"BundleTask", - "documentation":"

Information about the bundle task.

", - "locationName":"bundleInstanceTask" - } - } - }, - "BundleTask":{ - "type":"structure", - "members":{ - "InstanceId":{ - "shape":"String", - "documentation":"

The ID of the instance associated with this bundle task.

", - "locationName":"instanceId" - }, - "BundleId":{ - "shape":"String", - "documentation":"

The ID of the bundle task.

", - "locationName":"bundleId" - }, - "State":{ - "shape":"BundleTaskState", - "documentation":"

The state of the task.

", - "locationName":"state" - }, - "StartTime":{ - "shape":"DateTime", - "documentation":"

The time this task started.

", - "locationName":"startTime" - }, - "UpdateTime":{ - "shape":"DateTime", - "documentation":"

The time of the most recent update for the task.

", - "locationName":"updateTime" - }, - "Storage":{ - "shape":"Storage", - "documentation":"

The Amazon S3 storage locations.

", - "locationName":"storage" - }, - "Progress":{ - "shape":"String", - "documentation":"

The level of task completion, as a percent (for example, 20%).

", - "locationName":"progress" - }, - "BundleTaskError":{ - "shape":"BundleTaskError", - "documentation":"

If the task fails, a description of the error.

", - "locationName":"error" - } - }, - "documentation":"

Describes a bundle task.

" - }, - "BundleTaskError":{ - "type":"structure", - "members":{ - "Code":{ - "shape":"String", - "documentation":"

The error code.

", - "locationName":"code" - }, - "Message":{ - "shape":"String", - "documentation":"

The error message.

", - "locationName":"message" - } - }, - "documentation":"

Describes an error for BundleInstance.

" - }, - "BundleTaskList":{ - "type":"list", - "member":{ - "shape":"BundleTask", - "locationName":"item" - } - }, - "BundleTaskState":{ - "type":"string", - "enum":[ - "pending", - "waiting-for-shutdown", - "bundling", - "storing", - "cancelling", - "complete", - "failed" - ] - }, - "CancelBundleTaskRequest":{ - "type":"structure", - "required":["BundleId"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "BundleId":{ - "shape":"String", - "documentation":"

The ID of the bundle task.

" - } - } - }, - "CancelBundleTaskResult":{ - "type":"structure", - "members":{ - "BundleTask":{ - "shape":"BundleTask", - "documentation":"

The bundle task.

", - "locationName":"bundleInstanceTask" - } - } - }, - "CancelConversionRequest":{ - "type":"structure", - "required":["ConversionTaskId"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "ConversionTaskId":{ - "shape":"String", - "documentation":"

The ID of the conversion task.

", - "locationName":"conversionTaskId" - }, - "ReasonMessage":{ - "shape":"String", - "locationName":"reasonMessage" - } - } - }, - "CancelExportTaskRequest":{ - "type":"structure", - "required":["ExportTaskId"], - "members":{ - "ExportTaskId":{ - "shape":"String", - "documentation":"

The ID of the export task. This is the ID returned by CreateInstanceExportTask.

", - "locationName":"exportTaskId" - } - } - }, - "CancelReservedInstancesListingRequest":{ - "type":"structure", - "required":["ReservedInstancesListingId"], - "members":{ - "ReservedInstancesListingId":{ - "shape":"String", - "documentation":"

The ID of the Reserved Instance listing.

", - "locationName":"reservedInstancesListingId" - } - } - }, - "CancelReservedInstancesListingResult":{ - "type":"structure", - "members":{ - "ReservedInstancesListings":{ - "shape":"ReservedInstancesListingList", - "documentation":"

The Reserved Instance listing.

", - "locationName":"reservedInstancesListingsSet" - } - } - }, - "CancelSpotInstanceRequestState":{ - "type":"string", - "enum":[ - "active", - "open", - "closed", - "cancelled", - "completed" - ] - }, - "CancelSpotInstanceRequestsRequest":{ - "type":"structure", - "required":["SpotInstanceRequestIds"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "SpotInstanceRequestIds":{ - "shape":"SpotInstanceRequestIdList", - "documentation":"

One or more Spot Instance request IDs.

", - "locationName":"SpotInstanceRequestId" - } - } - }, - "CancelSpotInstanceRequestsResult":{ - "type":"structure", - "members":{ - "CancelledSpotInstanceRequests":{ - "shape":"CancelledSpotInstanceRequestList", - "documentation":"

One or more Spot Instance requests.

", - "locationName":"spotInstanceRequestSet" - } - } - }, - "CancelledSpotInstanceRequest":{ - "type":"structure", - "members":{ - "SpotInstanceRequestId":{ - "shape":"String", - "documentation":"

The ID of the Spot Instance request.

", - "locationName":"spotInstanceRequestId" - }, - "State":{ - "shape":"CancelSpotInstanceRequestState", - "documentation":"

The state of the Spot Instance request.

", - "locationName":"state" - } - }, - "documentation":"

Describes a request to cancel a Spot Instance.

" - }, - "CancelledSpotInstanceRequestList":{ - "type":"list", - "member":{ - "shape":"CancelledSpotInstanceRequest", - "locationName":"item" - } - }, - "ClassicLinkInstance":{ - "type":"structure", - "members":{ - "InstanceId":{ - "shape":"String", - "documentation":"

The ID of the instance.

", - "locationName":"instanceId" - }, - "VpcId":{ - "shape":"String", - "documentation":"

The ID of the VPC.

", - "locationName":"vpcId" - }, - "Groups":{ - "shape":"GroupIdentifierList", - "documentation":"

A list of security groups.

", - "locationName":"groupSet" - }, - "Tags":{ - "shape":"TagList", - "documentation":"

Any tags assigned to the instance.

", - "locationName":"tagSet" - } - }, - "documentation":"

Describes a linked EC2-Classic instance.

" - }, - "ClassicLinkInstanceList":{ - "type":"list", - "member":{ - "shape":"ClassicLinkInstance", - "locationName":"item" - } - }, - "ConfirmProductInstanceRequest":{ - "type":"structure", - "required":[ - "ProductCode", - "InstanceId" - ], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "ProductCode":{ - "shape":"String", - "documentation":"

The product code. This must be a product code that you own.

" - }, - "InstanceId":{ - "shape":"String", - "documentation":"

The ID of the instance.

" - } - } - }, - "ConfirmProductInstanceResult":{ - "type":"structure", - "members":{ - "OwnerId":{ - "shape":"String", - "documentation":"

The AWS account ID of the instance owner. This is only present if the product code is attached to the instance.

", - "locationName":"ownerId" - } - } - }, - "ContainerFormat":{ - "type":"string", - "enum":["ova"] - }, - "ConversionIdStringList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"item" - } - }, - "ConversionTask":{ - "type":"structure", - "required":[ - "ConversionTaskId", - "State" - ], - "members":{ - "ConversionTaskId":{ - "shape":"String", - "documentation":"

The ID of the conversion task.

", - "locationName":"conversionTaskId" - }, - "ExpirationTime":{ - "shape":"String", - "documentation":"

The time when the task expires. If the upload isn't complete before the expiration time, we automatically cancel the task.

", - "locationName":"expirationTime" - }, - "ImportInstance":{ - "shape":"ImportInstanceTaskDetails", - "documentation":"

If the task is for importing an instance, this contains information about the import instance task.

", - "locationName":"importInstance" - }, - "ImportVolume":{ - "shape":"ImportVolumeTaskDetails", - "documentation":"

If the task is for importing a volume, this contains information about the import volume task.

", - "locationName":"importVolume" - }, - "State":{ - "shape":"ConversionTaskState", - "documentation":"

The state of the conversion task.

", - "locationName":"state" - }, - "StatusMessage":{ - "shape":"String", - "documentation":"

The status message related to the conversion task.

", - "locationName":"statusMessage" - }, - "Tags":{ - "shape":"TagList", - "locationName":"tagSet" - } - }, - "documentation":"

Describes a conversion task.

" - }, - "ConversionTaskState":{ - "type":"string", - "enum":[ - "active", - "cancelling", - "cancelled", - "completed" - ] - }, - "CopyImageRequest":{ - "type":"structure", - "required":[ - "SourceRegion", - "SourceImageId", - "Name" - ], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "SourceRegion":{ - "shape":"String", - "documentation":"

The name of the region that contains the AMI to copy.

" - }, - "SourceImageId":{ - "shape":"String", - "documentation":"

The ID of the AMI to copy.

" - }, - "Name":{ - "shape":"String", - "documentation":"

The name of the new AMI in the destination region.

" - }, - "Description":{ - "shape":"String", - "documentation":"

A description for the new AMI in the destination region.

" - }, - "ClientToken":{ - "shape":"String", - "documentation":"

Unique, case-sensitive identifier you provide to ensure idempotency of the request. For more information, see How to Ensure Idempotency in the Amazon Elastic Compute Cloud User Guide for Linux.

" - } - } - }, - "CopyImageResult":{ - "type":"structure", - "members":{ - "ImageId":{ - "shape":"String", - "documentation":"

The ID of the new AMI.

", - "locationName":"imageId" - } - } - }, - "CopySnapshotRequest":{ - "type":"structure", - "required":[ - "SourceRegion", - "SourceSnapshotId" - ], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "SourceRegion":{ - "shape":"String", - "documentation":"

The ID of the region that contains the snapshot to be copied.

" - }, - "SourceSnapshotId":{ - "shape":"String", - "documentation":"

The ID of the Amazon EBS snapshot to copy.

" - }, - "Description":{ - "shape":"String", - "documentation":"

A description for the new Amazon EBS snapshot.

" - }, - "DestinationRegion":{ - "shape":"String", - "documentation":"

The destination region of the snapshot copy operation. This parameter is required in the PresignedUrl.

", - "locationName":"destinationRegion" - }, - "PresignedUrl":{ - "shape":"String", - "documentation":"

The pre-signed URL that facilitates copying an encrypted snapshot. This parameter is only required when copying an encrypted snapshot with the Amazon EC2 Query API; it is available as an optional parameter in all other cases. The PresignedUrl should use the snapshot source endpoint, the CopySnapshot action, and include the SourceRegion, SourceSnapshotId, and DestinationRegion parameters. The PresignedUrl must be signed using AWS Signature Version 4. Because Amazon EBS snapshots are stored in Amazon S3, the signing algorithm for this parameter uses the same logic that is described in Authenticating Requests by Using Query Parameters (AWS Signature Version 4) in the Amazon Simple Storage Service API Reference. An invalid or improperly signed PresignedUrl will cause the copy operation to fail asynchronously, and the snapshot will move to an error state.

", - "locationName":"presignedUrl" - } - } - }, - "CopySnapshotResult":{ - "type":"structure", - "members":{ - "SnapshotId":{ - "shape":"String", - "documentation":"

The ID of the new snapshot.

", - "locationName":"snapshotId" - } - } - }, - "CreateCustomerGatewayRequest":{ - "type":"structure", - "required":[ - "Type", - "PublicIp", - "BgpAsn" - ], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "Type":{ - "shape":"GatewayType", - "documentation":"

The type of VPN connection that this customer gateway supports (ipsec.1).

" - }, - "PublicIp":{ - "shape":"String", - "documentation":"

The Internet-routable IP address for the customer gateway's outside interface. The address must be static.

", - "locationName":"IpAddress" - }, - "BgpAsn":{ - "shape":"Integer", - "documentation":"

For devices that support BGP, the customer gateway's BGP ASN.

Default: 65000

" - } - } - }, - "CreateCustomerGatewayResult":{ - "type":"structure", - "members":{ - "CustomerGateway":{ - "shape":"CustomerGateway", - "documentation":"

Information about the customer gateway.

", - "locationName":"customerGateway" - } - } - }, - "CreateDhcpOptionsRequest":{ - "type":"structure", - "required":["DhcpConfigurations"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "DhcpConfigurations":{ - "shape":"NewDhcpConfigurationList", - "documentation":"

A DHCP configuration option.

", - "locationName":"dhcpConfiguration" - } - } - }, - "CreateDhcpOptionsResult":{ - "type":"structure", - "members":{ - "DhcpOptions":{ - "shape":"DhcpOptions", - "documentation":"

A set of DHCP options.

", - "locationName":"dhcpOptions" - } - } - }, - "CreateImageRequest":{ - "type":"structure", - "required":[ - "InstanceId", - "Name" - ], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "InstanceId":{ - "shape":"String", - "documentation":"

The ID of the instance.

", - "locationName":"instanceId" - }, - "Name":{ - "shape":"String", - "documentation":"

A name for the new image.

Constraints: 3-128 alphanumeric characters, parentheses (()), square brackets ([]), spaces ( ), periods (.), slashes (/), dashes (-), single quotes ('), at-signs (@), or underscores(_)

", - "locationName":"name" - }, - "Description":{ - "shape":"String", - "documentation":"

A description for the new image.

", - "locationName":"description" - }, - "NoReboot":{ - "shape":"Boolean", - "documentation":"

By default, this parameter is set to false, which means Amazon EC2 attempts to shut down the instance cleanly before image creation and then reboots the instance. When the parameter is set to true, Amazon EC2 doesn't shut down the instance before creating the image. When this option is used, file system integrity on the created image can't be guaranteed.

", - "locationName":"noReboot" - }, - "BlockDeviceMappings":{ - "shape":"BlockDeviceMappingRequestList", - "documentation":"

Information about one or more block device mappings.

", - "locationName":"blockDeviceMapping" - } - } - }, - "CreateImageResult":{ - "type":"structure", - "members":{ - "ImageId":{ - "shape":"String", - "documentation":"

The ID of the new AMI.

", - "locationName":"imageId" - } - } - }, - "CreateInstanceExportTaskRequest":{ - "type":"structure", - "required":["InstanceId"], - "members":{ - "Description":{ - "shape":"String", - "documentation":"

A description for the conversion task or the resource being exported. The maximum length is 255 bytes.

", - "locationName":"description" - }, - "InstanceId":{ - "shape":"String", - "documentation":"

The ID of the instance.

", - "locationName":"instanceId" - }, - "TargetEnvironment":{ - "shape":"ExportEnvironment", - "documentation":"

The target virtualization environment.

", - "locationName":"targetEnvironment" - }, - "ExportToS3Task":{ - "shape":"ExportToS3TaskSpecification", - "locationName":"exportToS3" - } - } - }, - "CreateInstanceExportTaskResult":{ - "type":"structure", - "members":{ - "ExportTask":{ - "shape":"ExportTask", - "locationName":"exportTask" - } - } - }, - "CreateInternetGatewayRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - } - } - }, - "CreateInternetGatewayResult":{ - "type":"structure", - "members":{ - "InternetGateway":{ - "shape":"InternetGateway", - "documentation":"

Information about the Internet gateway.

", - "locationName":"internetGateway" - } - } - }, - "CreateKeyPairRequest":{ - "type":"structure", - "required":["KeyName"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "KeyName":{ - "shape":"String", - "documentation":"

A unique name for the key pair.

Constraints: Up to 255 ASCII characters

" - } - } - }, - "CreateNetworkAclEntryRequest":{ - "type":"structure", - "required":[ - "NetworkAclId", - "RuleNumber", - "Protocol", - "RuleAction", - "Egress", - "CidrBlock" - ], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "NetworkAclId":{ - "shape":"String", - "documentation":"

The ID of the network ACL.

", - "locationName":"networkAclId" - }, - "RuleNumber":{ - "shape":"Integer", - "documentation":"

The rule number for the entry (for example, 100). ACL entries are processed in ascending order by rule number.

Constraints: Positive integer from 1 to 32766

", - "locationName":"ruleNumber" - }, - "Protocol":{ - "shape":"String", - "documentation":"

The protocol. A value of -1 means all protocols.

", - "locationName":"protocol" - }, - "RuleAction":{ - "shape":"RuleAction", - "documentation":"

Indicates whether to allow or deny the traffic that matches the rule.

", - "locationName":"ruleAction" - }, - "Egress":{ - "shape":"Boolean", - "documentation":"

Indicates whether this is an egress rule (rule is applied to traffic leaving the subnet).

", - "locationName":"egress" - }, - "CidrBlock":{ - "shape":"String", - "documentation":"

The network range to allow or deny, in CIDR notation (for example 172.16.0.0/24).

", - "locationName":"cidrBlock" - }, - "IcmpTypeCode":{ - "shape":"IcmpTypeCode", - "documentation":"

ICMP protocol: The ICMP type and code. Required if specifying ICMP for the protocol.

", - "locationName":"Icmp" - }, - "PortRange":{ - "shape":"PortRange", - "documentation":"

TCP or UDP protocols: The range of ports the rule applies to.

", - "locationName":"portRange" - } - } - }, - "CreateNetworkAclRequest":{ - "type":"structure", - "required":["VpcId"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "VpcId":{ - "shape":"String", - "documentation":"

The ID of the VPC.

", - "locationName":"vpcId" - } - } - }, - "CreateNetworkAclResult":{ - "type":"structure", - "members":{ - "NetworkAcl":{ - "shape":"NetworkAcl", - "documentation":"

Information about the network ACL.

", - "locationName":"networkAcl" - } - } - }, - "CreateNetworkInterfaceRequest":{ - "type":"structure", - "required":["SubnetId"], - "members":{ - "SubnetId":{ - "shape":"String", - "documentation":"

The ID of the subnet to associate with the network interface.

", - "locationName":"subnetId" - }, - "Description":{ - "shape":"String", - "documentation":"

A description for the network interface.

", - "locationName":"description" - }, - "PrivateIpAddress":{ - "shape":"String", - "documentation":"

The primary private IP address of the network interface. If you don't specify an IP address, Amazon EC2 selects one for you from the subnet range. If you specify an IP address, you cannot indicate any IP addresses specified in privateIpAddresses as primary (only one IP address can be designated as primary).

", - "locationName":"privateIpAddress" - }, - "Groups":{ - "shape":"SecurityGroupIdStringList", - "documentation":"

The IDs of one or more security groups.

", - "locationName":"SecurityGroupId" - }, - "PrivateIpAddresses":{ - "shape":"PrivateIpAddressSpecificationList", - "documentation":"

One or more private IP addresses.

", - "locationName":"privateIpAddresses" - }, - "SecondaryPrivateIpAddressCount":{ - "shape":"Integer", - "documentation":"

The number of secondary private IP addresses to assign to a network interface. When you specify a number of secondary IP addresses, Amazon EC2 selects these IP addresses within the subnet range. You can't specify this option and specify more than one private IP address using privateIpAddresses.

The number of IP addresses you can assign to a network interface varies by instance type. For more information, see Private IP Addresses Per ENI Per Instance Type in the Amazon Elastic Compute Cloud User Guide for Linux.

", - "locationName":"secondaryPrivateIpAddressCount" - }, - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - } - } - }, - "CreateNetworkInterfaceResult":{ - "type":"structure", - "members":{ - "NetworkInterface":{ - "shape":"NetworkInterface", - "documentation":"

Information about the network interface.

", - "locationName":"networkInterface" - } - } - }, - "CreatePlacementGroupRequest":{ - "type":"structure", - "required":[ - "GroupName", - "Strategy" - ], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "GroupName":{ - "shape":"String", - "documentation":"

A name for the placement group.

Constraints: Up to 255 ASCII characters

", - "locationName":"groupName" - }, - "Strategy":{ - "shape":"PlacementStrategy", - "documentation":"

The placement strategy.

", - "locationName":"strategy" - } - } - }, - "CreateReservedInstancesListingRequest":{ - "type":"structure", - "required":[ - "ReservedInstancesId", - "InstanceCount", - "PriceSchedules", - "ClientToken" - ], - "members":{ - "ReservedInstancesId":{ - "shape":"String", - "documentation":"

The ID of the active Reserved Instance.

", - "locationName":"reservedInstancesId" - }, - "InstanceCount":{ - "shape":"Integer", - "documentation":"

The number of instances that are a part of a Reserved Instance account to be listed in the Reserved Instance Marketplace. This number should be less than or equal to the instance count associated with the Reserved Instance ID specified in this call.

", - "locationName":"instanceCount" - }, - "PriceSchedules":{ - "shape":"PriceScheduleSpecificationList", - "documentation":"

A list specifying the price of the Reserved Instance for each month remaining in the Reserved Instance term.

", - "locationName":"priceSchedules" - }, - "ClientToken":{ - "shape":"String", - "documentation":"

Unique, case-sensitive identifier you provide to ensure idempotency of your listings. This helps avoid duplicate listings. For more information, see Ensuring Idempotency in the Amazon Elastic Compute Cloud User Guide for Linux.

", - "locationName":"clientToken" - } - } - }, - "CreateReservedInstancesListingResult":{ - "type":"structure", - "members":{ - "ReservedInstancesListings":{ - "shape":"ReservedInstancesListingList", - "documentation":"

Information about the Reserved Instances listing.

", - "locationName":"reservedInstancesListingsSet" - } - } - }, - "CreateRouteRequest":{ - "type":"structure", - "required":[ - "RouteTableId", - "DestinationCidrBlock" - ], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "RouteTableId":{ - "shape":"String", - "documentation":"

The ID of the route table for the route.

", - "locationName":"routeTableId" - }, - "DestinationCidrBlock":{ - "shape":"String", - "documentation":"

The CIDR address block used for the destination match. Routing decisions are based on the most specific match.

", - "locationName":"destinationCidrBlock" - }, - "GatewayId":{ - "shape":"String", - "documentation":"

The ID of an Internet gateway or virtual private gateway attached to your VPC.

", - "locationName":"gatewayId" - }, - "InstanceId":{ - "shape":"String", - "documentation":"

The ID of a NAT instance in your VPC. The operation fails if you specify an instance ID unless exactly one network interface is attached.

", - "locationName":"instanceId" - }, - "NetworkInterfaceId":{ - "shape":"String", - "documentation":"

The ID of a network interface.

", - "locationName":"networkInterfaceId" - }, - "VpcPeeringConnectionId":{ - "shape":"String", - "documentation":"

The ID of a VPC peering connection.

", - "locationName":"vpcPeeringConnectionId" - } - } - }, - "CreateRouteTableRequest":{ - "type":"structure", - "required":["VpcId"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "VpcId":{ - "shape":"String", - "documentation":"

The ID of the VPC.

", - "locationName":"vpcId" - } - } - }, - "CreateRouteTableResult":{ - "type":"structure", - "members":{ - "RouteTable":{ - "shape":"RouteTable", - "documentation":"

Information about the route table.

", - "locationName":"routeTable" - } - } - }, - "CreateSecurityGroupRequest":{ - "type":"structure", - "required":[ - "GroupName", - "Description" - ], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "GroupName":{ - "shape":"String", - "documentation":"

The name of the security group.

Constraints: Up to 255 characters in length

Constraints for EC2-Classic: ASCII characters

Constraints for EC2-VPC: a-z, A-Z, 0-9, spaces, and ._-:/()#,@[]+=&;{}!$*

" - }, - "Description":{ - "shape":"String", - "documentation":"

A description for the security group. This is informational only.

Constraints: Up to 255 characters in length

Constraints for EC2-Classic: ASCII characters

Constraints for EC2-VPC: a-z, A-Z, 0-9, spaces, and ._-:/()#,@[]+=&;{}!$*

", - "locationName":"GroupDescription" - }, - "VpcId":{ - "shape":"String", - "documentation":"

[EC2-VPC] The ID of the VPC. Required for EC2-VPC.

" - } - } - }, - "CreateSecurityGroupResult":{ - "type":"structure", - "members":{ - "GroupId":{ - "shape":"String", - "documentation":"

The ID of the security group.

", - "locationName":"groupId" - } - } - }, - "CreateSnapshotRequest":{ - "type":"structure", - "required":["VolumeId"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "VolumeId":{ - "shape":"String", - "documentation":"

The ID of the Amazon EBS volume.

" - }, - "Description":{ - "shape":"String", - "documentation":"

A description for the snapshot.

" - } - } - }, - "CreateSpotDatafeedSubscriptionRequest":{ - "type":"structure", - "required":["Bucket"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "Bucket":{ - "shape":"String", - "documentation":"

The Amazon S3 bucket in which to store the Spot Instance data feed.

", - "locationName":"bucket" - }, - "Prefix":{ - "shape":"String", - "documentation":"

A prefix for the data feed file names.

", - "locationName":"prefix" - } - } - }, - "CreateSpotDatafeedSubscriptionResult":{ - "type":"structure", - "members":{ - "SpotDatafeedSubscription":{ - "shape":"SpotDatafeedSubscription", - "documentation":"

The Spot Instance data feed subscription.

", - "locationName":"spotDatafeedSubscription" - } - } - }, - "CreateSubnetRequest":{ - "type":"structure", - "required":[ - "VpcId", - "CidrBlock" - ], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "VpcId":{ - "shape":"String", - "documentation":"

The ID of the VPC.

" - }, - "CidrBlock":{ - "shape":"String", - "documentation":"

The network range for the subnet, in CIDR notation. For example, 10.0.0.0/24.

" - }, - "AvailabilityZone":{ - "shape":"String", - "documentation":"

The Availability Zone for the subnet.

Default: Amazon EC2 selects one for you (recommended).

" - } - } - }, - "CreateSubnetResult":{ - "type":"structure", - "members":{ - "Subnet":{ - "shape":"Subnet", - "documentation":"

Information about the subnet.

", - "locationName":"subnet" - } - } - }, - "CreateTagsRequest":{ - "type":"structure", - "required":[ - "Resources", - "Tags" - ], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "Resources":{ - "shape":"ResourceIdList", - "documentation":"

The IDs of one or more resources to tag. For example, ami-1a2b3c4d.

", - "locationName":"ResourceId" - }, - "Tags":{ - "shape":"TagList", - "documentation":"

One or more tags. The value parameter is required, but if you don't want the tag to have a value, specify the parameter with no value, and we set the value to an empty string.

", - "locationName":"Tag" - } - } - }, - "CreateVolumePermission":{ - "type":"structure", - "members":{ - "UserId":{ - "shape":"String", - "documentation":"

The specific AWS account ID that is to be added or removed from a volume's list of create volume permissions.

", - "locationName":"userId" - }, - "Group":{ - "shape":"PermissionGroup", - "documentation":"

The specific group that is to be added or removed from a volume's list of create volume permissions.

", - "locationName":"group" - } - } - }, - "CreateVolumePermissionList":{ - "type":"list", - "member":{ - "shape":"CreateVolumePermission", - "locationName":"item" - } - }, - "CreateVolumePermissionModifications":{ - "type":"structure", - "members":{ - "Add":{ - "shape":"CreateVolumePermissionList", - "documentation":"

Adds a specific AWS account ID or group to a volume's list of create volume permissions.

" - }, - "Remove":{ - "shape":"CreateVolumePermissionList", - "documentation":"

Removes a specific AWS account ID or group from a volume's list of create volume permissions.

" - } - } - }, - "CreateVolumeRequest":{ - "type":"structure", - "required":["AvailabilityZone"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "Size":{ - "shape":"Integer", - "documentation":"

The size of the volume, in GiBs.

Constraints: If the volume type is io1, the minimum size of the volume is 4 GiB.

Default: If you're creating the volume from a snapshot and don't specify a volume size, the default is the snapshot size.

" - }, - "SnapshotId":{ - "shape":"String", - "documentation":"

The snapshot from which to create the volume.

" - }, - "AvailabilityZone":{ - "shape":"String", - "documentation":"

The Availability Zone in which to create the volume. Use DescribeAvailabilityZones to list the Availability Zones that are currently available to you.

" - }, - "VolumeType":{ - "shape":"VolumeType", - "documentation":"

The volume type. This can be gp2 for General Purpose (SSD) volumes, io1 for Provisioned IOPS (SSD) volumes, or standard for Magnetic volumes.

Default: standard

" - }, - "Iops":{ - "shape":"Integer", - "documentation":"

Only valid for Provisioned IOPS (SSD) volumes. The number of I/O operations per second (IOPS) to provision for the volume.

" - }, - "Encrypted":{ - "shape":"Boolean", - "documentation":"

Specifies whether the volume should be encrypted. Encrypted Amazon EBS volumes may only be attached to instances that support Amazon EBS encryption. Volumes that are created from encrypted snapshots are automatically encrypted. There is no way to create an encrypted volume from an unencrypted snapshot or vice versa. If your AMI uses encrypted volumes, you can only launch it on supported instance types. For more information, see Amazon EBS Encryption in the Amazon Elastic Compute Cloud User Guide for Linux.

", - "locationName":"encrypted" - }, - "KmsKeyId":{ - "shape":"String", - "documentation":"

The full ARN of the AWS Key Management Service (KMS) master key to use when creating the encrypted volume. This parameter is only required if you want to use a non-default master key; if this parameter is not specified, the default master key is used. The ARN contains the arn:aws:kms namespace, followed by the region of the master key, the AWS account ID of the master key owner, the key namespace, and then the master key ID. For example, arn:aws:kms:us-east-1:012345678910:key/abcd1234-a123-456a-a12b-a123b4cd56ef.

" - } - } - }, - "CreateVpcPeeringConnectionRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "VpcId":{ - "shape":"String", - "documentation":"

The ID of the requester VPC.

", - "locationName":"vpcId" - }, - "PeerVpcId":{ - "shape":"String", - "documentation":"

The ID of the VPC with which you are creating the VPC peering connection.

", - "locationName":"peerVpcId" - }, - "PeerOwnerId":{ - "shape":"String", - "documentation":"

The AWS account ID of the owner of the peer VPC.

Default: Your AWS account ID

", - "locationName":"peerOwnerId" - } - } - }, - "CreateVpcPeeringConnectionResult":{ - "type":"structure", - "members":{ - "VpcPeeringConnection":{ - "shape":"VpcPeeringConnection", - "documentation":"

Information about the VPC peering connection.

", - "locationName":"vpcPeeringConnection" - } - } - }, - "CreateVpcRequest":{ - "type":"structure", - "required":["CidrBlock"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "CidrBlock":{ - "shape":"String", - "documentation":"

The network range for the VPC, in CIDR notation. For example, 10.0.0.0/16.

" - }, - "InstanceTenancy":{ - "shape":"Tenancy", - "documentation":"

The supported tenancy options for instances launched into the VPC. A value of default means that instances can be launched with any tenancy; a value of dedicated means all instances launched into the VPC are launched as dedicated tenancy instances regardless of the tenancy assigned to the instance at launch. Dedicated tenancy instances run on single-tenant hardware.

Default: default

", - "locationName":"instanceTenancy" - } - } - }, - "CreateVpcResult":{ - "type":"structure", - "members":{ - "Vpc":{ - "shape":"Vpc", - "documentation":"

Information about the VPC.

", - "locationName":"vpc" - } - } - }, - "CreateVpnConnectionRequest":{ - "type":"structure", - "required":[ - "Type", - "CustomerGatewayId", - "VpnGatewayId" - ], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "Type":{ - "shape":"String", - "documentation":"

The type of VPN connection (ipsec.1).

" - }, - "CustomerGatewayId":{ - "shape":"String", - "documentation":"

The ID of the customer gateway.

" - }, - "VpnGatewayId":{ - "shape":"String", - "documentation":"

The ID of the virtual private gateway.

" - }, - "Options":{ - "shape":"VpnConnectionOptionsSpecification", - "documentation":"

Indicates whether the VPN connection requires static routes. If you are creating a VPN connection for a device that does not support BGP, you must specify true.

Default: false

", - "locationName":"options" - } - } - }, - "CreateVpnConnectionResult":{ - "type":"structure", - "members":{ - "VpnConnection":{ - "shape":"VpnConnection", - "documentation":"

Information about the VPN connection.

", - "locationName":"vpnConnection" - } - } - }, - "CreateVpnConnectionRouteRequest":{ - "type":"structure", - "required":[ - "VpnConnectionId", - "DestinationCidrBlock" - ], - "members":{ - "VpnConnectionId":{ - "shape":"String", - "documentation":"

The ID of the VPN connection.

" - }, - "DestinationCidrBlock":{ - "shape":"String", - "documentation":"

The CIDR block associated with the local subnet of the customer network.

" - } - } - }, - "CreateVpnGatewayRequest":{ - "type":"structure", - "required":["Type"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "Type":{ - "shape":"GatewayType", - "documentation":"

The type of VPN connection this virtual private gateway supports.

" - }, - "AvailabilityZone":{ - "shape":"String", - "documentation":"

The Availability Zone for the virtual private gateway.

" - } - } - }, - "CreateVpnGatewayResult":{ - "type":"structure", - "members":{ - "VpnGateway":{ - "shape":"VpnGateway", - "documentation":"

Information about the virtual private gateway.

", - "locationName":"vpnGateway" - } - } - }, - "CurrencyCodeValues":{ - "type":"string", - "enum":["USD"] - }, - "CustomerGateway":{ - "type":"structure", - "members":{ - "CustomerGatewayId":{ - "shape":"String", - "documentation":"

The ID of the customer gateway.

", - "locationName":"customerGatewayId" - }, - "State":{ - "shape":"String", - "documentation":"

The current state of the customer gateway (pending | available | deleting | deleted).

", - "locationName":"state" - }, - "Type":{ - "shape":"String", - "documentation":"

The type of VPN connection the customer gateway supports (ipsec.1).

", - "locationName":"type" - }, - "IpAddress":{ - "shape":"String", - "documentation":"

The Internet-routable IP address of the customer gateway's outside interface.

", - "locationName":"ipAddress" - }, - "BgpAsn":{ - "shape":"String", - "documentation":"

The customer gateway's Border Gateway Protocol (BGP) Autonomous System Number (ASN).

", - "locationName":"bgpAsn" - }, - "Tags":{ - "shape":"TagList", - "documentation":"

Any tags assigned to the customer gateway.

", - "locationName":"tagSet" - } - }, - "documentation":"

Describes a customer gateway.

" - }, - "CustomerGatewayIdStringList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"CustomerGatewayId" - } - }, - "CustomerGatewayList":{ - "type":"list", - "member":{ - "shape":"CustomerGateway", - "locationName":"item" - } - }, - "DatafeedSubscriptionState":{ - "type":"string", - "enum":[ - "Active", - "Inactive" - ] - }, - "DateTime":{"type":"timestamp"}, - "DeleteCustomerGatewayRequest":{ - "type":"structure", - "required":["CustomerGatewayId"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "CustomerGatewayId":{ - "shape":"String", - "documentation":"

The ID of the customer gateway.

" - } - } - }, - "DeleteDhcpOptionsRequest":{ - "type":"structure", - "required":["DhcpOptionsId"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "DhcpOptionsId":{ - "shape":"String", - "documentation":"

The ID of the DHCP options set.

" - } - } - }, - "DeleteInternetGatewayRequest":{ - "type":"structure", - "required":["InternetGatewayId"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "InternetGatewayId":{ - "shape":"String", - "documentation":"

The ID of the Internet gateway.

", - "locationName":"internetGatewayId" - } - } - }, - "DeleteKeyPairRequest":{ - "type":"structure", - "required":["KeyName"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "KeyName":{ - "shape":"String", - "documentation":"

The name of the key pair.

" - } - } - }, - "DeleteNetworkAclEntryRequest":{ - "type":"structure", - "required":[ - "NetworkAclId", - "RuleNumber", - "Egress" - ], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "NetworkAclId":{ - "shape":"String", - "documentation":"

The ID of the network ACL.

", - "locationName":"networkAclId" - }, - "RuleNumber":{ - "shape":"Integer", - "documentation":"

The rule number of the entry to delete.

", - "locationName":"ruleNumber" - }, - "Egress":{ - "shape":"Boolean", - "documentation":"

Indicates whether the rule is an egress rule.

", - "locationName":"egress" - } - } - }, - "DeleteNetworkAclRequest":{ - "type":"structure", - "required":["NetworkAclId"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "NetworkAclId":{ - "shape":"String", - "documentation":"

The ID of the network ACL.

", - "locationName":"networkAclId" - } - } - }, - "DeleteNetworkInterfaceRequest":{ - "type":"structure", - "required":["NetworkInterfaceId"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "NetworkInterfaceId":{ - "shape":"String", - "documentation":"

The ID of the network interface.

", - "locationName":"networkInterfaceId" - } - } - }, - "DeletePlacementGroupRequest":{ - "type":"structure", - "required":["GroupName"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "GroupName":{ - "shape":"String", - "documentation":"

The name of the placement group.

", - "locationName":"groupName" - } - } - }, - "DeleteRouteRequest":{ - "type":"structure", - "required":[ - "RouteTableId", - "DestinationCidrBlock" - ], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "RouteTableId":{ - "shape":"String", - "documentation":"

The ID of the route table.

", - "locationName":"routeTableId" - }, - "DestinationCidrBlock":{ - "shape":"String", - "documentation":"

The CIDR range for the route. The value you specify must match the CIDR for the route exactly.

", - "locationName":"destinationCidrBlock" - } - } - }, - "DeleteRouteTableRequest":{ - "type":"structure", - "required":["RouteTableId"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "RouteTableId":{ - "shape":"String", - "documentation":"

The ID of the route table.

", - "locationName":"routeTableId" - } - } - }, - "DeleteSecurityGroupRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "GroupName":{ - "shape":"String", - "documentation":"

[EC2-Classic, default VPC] The name of the security group. You can specify either the security group name or the security group ID.

" - }, - "GroupId":{ - "shape":"String", - "documentation":"

The ID of the security group. Required for a nondefault VPC.

" - } - } - }, - "DeleteSnapshotRequest":{ - "type":"structure", - "required":["SnapshotId"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "SnapshotId":{ - "shape":"String", - "documentation":"

The ID of the Amazon EBS snapshot.

" - } - } - }, - "DeleteSpotDatafeedSubscriptionRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - } - } - }, - "DeleteSubnetRequest":{ - "type":"structure", - "required":["SubnetId"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "SubnetId":{ - "shape":"String", - "documentation":"

The ID of the subnet.

" - } - } - }, - "DeleteTagsRequest":{ - "type":"structure", - "required":["Resources"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "Resources":{ - "shape":"ResourceIdList", - "documentation":"

The ID of the resource. For example, ami-1a2b3c4d. You can specify more than one resource ID.

", - "locationName":"resourceId" - }, - "Tags":{ - "shape":"TagList", - "documentation":"

One or more tags to delete. If you omit the value parameter, we delete the tag regardless of its value. If you specify this parameter with an empty string as the value, we delete the key only if its value is an empty string.

", - "locationName":"tag" - } - } - }, - "DeleteVolumeRequest":{ - "type":"structure", - "required":["VolumeId"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "VolumeId":{ - "shape":"String", - "documentation":"

The ID of the volume.

" - } - } - }, - "DeleteVpcPeeringConnectionRequest":{ - "type":"structure", - "required":["VpcPeeringConnectionId"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "VpcPeeringConnectionId":{ - "shape":"String", - "documentation":"

The ID of the VPC peering connection.

", - "locationName":"vpcPeeringConnectionId" - } - } - }, - "DeleteVpcPeeringConnectionResult":{ - "type":"structure", - "members":{ - "Return":{ - "shape":"Boolean", - "documentation":"

Returns true if the request succeeds; otherwise, it returns an error.

", - "locationName":"return" - } - } - }, - "DeleteVpcRequest":{ - "type":"structure", - "required":["VpcId"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "VpcId":{ - "shape":"String", - "documentation":"

The ID of the VPC.

" - } - } - }, - "DeleteVpnConnectionRequest":{ - "type":"structure", - "required":["VpnConnectionId"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "VpnConnectionId":{ - "shape":"String", - "documentation":"

The ID of the VPN connection.

" - } - } - }, - "DeleteVpnConnectionRouteRequest":{ - "type":"structure", - "required":[ - "VpnConnectionId", - "DestinationCidrBlock" - ], - "members":{ - "VpnConnectionId":{ - "shape":"String", - "documentation":"

The ID of the VPN connection.

" - }, - "DestinationCidrBlock":{ - "shape":"String", - "documentation":"

The CIDR block associated with the local subnet of the customer network.

" - } - } - }, - "DeleteVpnGatewayRequest":{ - "type":"structure", - "required":["VpnGatewayId"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "VpnGatewayId":{ - "shape":"String", - "documentation":"

The ID of the virtual private gateway.

" - } - } - }, - "DeregisterImageRequest":{ - "type":"structure", - "required":["ImageId"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "ImageId":{ - "shape":"String", - "documentation":"

The ID of the AMI.

" - } - } - }, - "DescribeAccountAttributesRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "AttributeNames":{ - "shape":"AccountAttributeNameStringList", - "documentation":"

One or more account attribute names.

", - "locationName":"attributeName" - } - } - }, - "DescribeAccountAttributesResult":{ - "type":"structure", - "members":{ - "AccountAttributes":{ - "shape":"AccountAttributeList", - "documentation":"

Information about one or more account attributes.

", - "locationName":"accountAttributeSet" - } - } - }, - "DescribeAddressesRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "PublicIps":{ - "shape":"PublicIpStringList", - "documentation":"

[EC2-Classic] One or more Elastic IP addresses.

Default: Describes all your Elastic IP addresses.

", - "locationName":"PublicIp" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

One or more filters. Filter names and values are case-sensitive.

", - "locationName":"Filter" - }, - "AllocationIds":{ - "shape":"AllocationIdList", - "documentation":"

[EC2-VPC] One or more allocation IDs.

Default: Describes all your Elastic IP addresses.

", - "locationName":"AllocationId" - } - } - }, - "DescribeAddressesResult":{ - "type":"structure", - "members":{ - "Addresses":{ - "shape":"AddressList", - "documentation":"

Information about one or more Elastic IP addresses.

", - "locationName":"addressesSet" - } - } - }, - "DescribeAvailabilityZonesRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "ZoneNames":{ - "shape":"ZoneNameStringList", - "documentation":"

The names of one or more Availability Zones.

", - "locationName":"ZoneName" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

One or more filters.

", - "locationName":"Filter" - } - } - }, - "DescribeAvailabilityZonesResult":{ - "type":"structure", - "members":{ - "AvailabilityZones":{ - "shape":"AvailabilityZoneList", - "documentation":"

Information about one or more Availability Zones.

", - "locationName":"availabilityZoneInfo" - } - } - }, - "DescribeBundleTasksRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "BundleIds":{ - "shape":"BundleIdStringList", - "documentation":"

One or more bundle task IDs.

Default: Describes all your bundle tasks.

", - "locationName":"BundleId" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

One or more filters.

", - "locationName":"Filter" - } - } - }, - "DescribeBundleTasksResult":{ - "type":"structure", - "members":{ - "BundleTasks":{ - "shape":"BundleTaskList", - "documentation":"

Information about one or more bundle tasks.

", - "locationName":"bundleInstanceTasksSet" - } - } - }, - "DescribeClassicLinkInstancesRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "InstanceIds":{ - "shape":"InstanceIdStringList", - "documentation":"

One or more instance IDs. Must be instances linked to a VPC through ClassicLink.

", - "locationName":"InstanceId" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

One or more filters.

", - "locationName":"Filter" - }, - "NextToken":{ - "shape":"String", - "documentation":"

The token for the next set of items to return. (You received this token from a prior call.)

", - "locationName":"nextToken" - }, - "MaxResults":{ - "shape":"Integer", - "documentation":"

The maximum number of items to return for this request. The request returns a token that you can specify in a subsequent call to get the next set of results.

Constraint: If the value is greater than 1000, we return only 1000 items.

", - "locationName":"maxResults" - } - } - }, - "DescribeClassicLinkInstancesResult":{ - "type":"structure", - "members":{ - "Instances":{ - "shape":"ClassicLinkInstanceList", - "documentation":"

Information about one or more linked EC2-Classic instances.

", - "locationName":"instancesSet" - }, - "NextToken":{ - "shape":"String", - "documentation":"

The token to use when requesting the next set of items. If there are no additional items to return, the string is empty.

", - "locationName":"nextToken" - } - } - }, - "DescribeConversionTaskList":{ - "type":"list", - "member":{ - "shape":"ConversionTask", - "locationName":"item" - } - }, - "DescribeConversionTasksRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "Filters":{ - "shape":"FilterList", - "locationName":"filter" - }, - "ConversionTaskIds":{ - "shape":"ConversionIdStringList", - "documentation":"

One or more conversion task IDs.

", - "locationName":"conversionTaskId" - } - } - }, - "DescribeConversionTasksResult":{ - "type":"structure", - "members":{ - "ConversionTasks":{ - "shape":"DescribeConversionTaskList", - "locationName":"conversionTasks" - } - } - }, - "DescribeCustomerGatewaysRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "CustomerGatewayIds":{ - "shape":"CustomerGatewayIdStringList", - "documentation":"

One or more customer gateway IDs.

Default: Describes all your customer gateways.

", - "locationName":"CustomerGatewayId" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

One or more filters.

", - "locationName":"Filter" - } - } - }, - "DescribeCustomerGatewaysResult":{ - "type":"structure", - "members":{ - "CustomerGateways":{ - "shape":"CustomerGatewayList", - "documentation":"

Information about one or more customer gateways.

", - "locationName":"customerGatewaySet" - } - } - }, - "DescribeDhcpOptionsRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "DhcpOptionsIds":{ - "shape":"DhcpOptionsIdStringList", - "documentation":"

The IDs of one or more DHCP options sets.

Default: Describes all your DHCP options sets.

", - "locationName":"DhcpOptionsId" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

One or more filters.

", - "locationName":"Filter" - } - } - }, - "DescribeDhcpOptionsResult":{ - "type":"structure", - "members":{ - "DhcpOptions":{ - "shape":"DhcpOptionsList", - "documentation":"

Information about one or more DHCP options sets.

", - "locationName":"dhcpOptionsSet" - } - } - }, - "DescribeExportTasksRequest":{ - "type":"structure", - "members":{ - "ExportTaskIds":{ - "shape":"ExportTaskIdStringList", - "documentation":"

One or more export task IDs.

", - "locationName":"exportTaskId" - } - } - }, - "DescribeExportTasksResult":{ - "type":"structure", - "members":{ - "ExportTasks":{ - "shape":"ExportTaskList", - "locationName":"exportTaskSet" - } - } - }, - "DescribeImageAttributeRequest":{ - "type":"structure", - "required":[ - "ImageId", - "Attribute" - ], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "ImageId":{ - "shape":"String", - "documentation":"

The ID of the AMI.

" - }, - "Attribute":{ - "shape":"ImageAttributeName", - "documentation":"

The AMI attribute.

" - } - } - }, - "DescribeImagesRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "ImageIds":{ - "shape":"ImageIdStringList", - "documentation":"

One or more image IDs.

Default: Describes all images available to you.

", - "locationName":"ImageId" - }, - "Owners":{ - "shape":"OwnerStringList", - "documentation":"

Filters the images by the owner. Specify an AWS account ID, amazon (owner is Amazon), aws-marketplace (owner is AWS Marketplace), self (owner is the sender of the request). Omitting this option returns all images for which you have launch permissions, regardless of ownership.

", - "locationName":"Owner" - }, - "ExecutableUsers":{ - "shape":"ExecutableByStringList", - "documentation":"

Scopes the images by users with explicit launch permissions. Specify an AWS account ID, self (the sender of the request), or all (public AMIs).

", - "locationName":"ExecutableBy" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

One or more filters.

", - "locationName":"Filter" - } - } - }, - "DescribeImagesResult":{ - "type":"structure", - "members":{ - "Images":{ - "shape":"ImageList", - "documentation":"

Information about one or more images.

", - "locationName":"imagesSet" - } - } - }, - "DescribeInstanceAttributeRequest":{ - "type":"structure", - "required":[ - "InstanceId", - "Attribute" - ], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "InstanceId":{ - "shape":"String", - "documentation":"

The ID of the instance.

", - "locationName":"instanceId" - }, - "Attribute":{ - "shape":"InstanceAttributeName", - "documentation":"

The instance attribute.

", - "locationName":"attribute" - } - } - }, - "DescribeInstanceStatusRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "InstanceIds":{ - "shape":"InstanceIdStringList", - "documentation":"

One or more instance IDs.

Default: Describes all your instances.

Constraints: Maximum 100 explicitly specified instance IDs.

", - "locationName":"InstanceId" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

One or more filters.

", - "locationName":"Filter" - }, - "NextToken":{ - "shape":"String", - "documentation":"

The next paginated set of results to return. (You received this token from a prior call.)

" - }, - "MaxResults":{ - "shape":"Integer", - "documentation":"

The maximum number of paginated instance items per response. The call also returns a token that you can specify in a subsequent call to get the next set of results. If the value is greater than 1000, we return only 1000 items.

Default: 1000

" - }, - "IncludeAllInstances":{ - "shape":"Boolean", - "documentation":"

When true, includes the health status for all instances. When false, includes the health status for running instances only.

Default: false

", - "locationName":"includeAllInstances" - } - } - }, - "DescribeInstanceStatusResult":{ - "type":"structure", - "members":{ - "InstanceStatuses":{ - "shape":"InstanceStatusList", - "documentation":"

One or more instance status descriptions.

", - "locationName":"instanceStatusSet" - }, - "NextToken":{ - "shape":"String", - "documentation":"

The next paginated set of results to return.

", - "locationName":"nextToken" - } - } - }, - "DescribeInstancesRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "InstanceIds":{ - "shape":"InstanceIdStringList", - "documentation":"

One or more instance IDs.

Default: Describes all your instances.

", - "locationName":"InstanceId" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

One or more filters.

", - "locationName":"Filter" - }, - "NextToken":{ - "shape":"String", - "documentation":"

The token for the next set of items to return. (You received this token from a prior call.)

", - "locationName":"nextToken" - }, - "MaxResults":{ - "shape":"Integer", - "documentation":"

The maximum number of items to return for this call. The call also returns a token that you can specify in a subsequent call to get the next set of results. If the value is greater than 1000, we return only 1000 items.

", - "locationName":"maxResults" - } - } - }, - "DescribeInstancesResult":{ - "type":"structure", - "members":{ - "Reservations":{ - "shape":"ReservationList", - "documentation":"

One or more reservations.

", - "locationName":"reservationSet" - }, - "NextToken":{ - "shape":"String", - "documentation":"

The token to use when requesting the next set of items. If there are no additional items to return, the string is empty.

", - "locationName":"nextToken" - } - } - }, - "DescribeInternetGatewaysRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "InternetGatewayIds":{ - "shape":"ValueStringList", - "documentation":"

One or more Internet gateway IDs.

Default: Describes all your Internet gateways.

", - "locationName":"internetGatewayId" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

One or more filters.

", - "locationName":"Filter" - } - } - }, - "DescribeInternetGatewaysResult":{ - "type":"structure", - "members":{ - "InternetGateways":{ - "shape":"InternetGatewayList", - "documentation":"

Information about one or more Internet gateways.

", - "locationName":"internetGatewaySet" - } - } - }, - "DescribeKeyPairsRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "KeyNames":{ - "shape":"KeyNameStringList", - "documentation":"

One or more key pair names.

Default: Describes all your key pairs.

", - "locationName":"KeyName" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

One or more filters.

", - "locationName":"Filter" - } - } - }, - "DescribeKeyPairsResult":{ - "type":"structure", - "members":{ - "KeyPairs":{ - "shape":"KeyPairList", - "documentation":"

Information about one or more key pairs.

", - "locationName":"keySet" - } - } - }, - "DescribeNetworkAclsRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "NetworkAclIds":{ - "shape":"ValueStringList", - "documentation":"

One or more network ACL IDs.

Default: Describes all your network ACLs.

", - "locationName":"NetworkAclId" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

One or more filters.

", - "locationName":"Filter" - } - } - }, - "DescribeNetworkAclsResult":{ - "type":"structure", - "members":{ - "NetworkAcls":{ - "shape":"NetworkAclList", - "documentation":"

Information about one or more network ACLs.

", - "locationName":"networkAclSet" - } - } - }, - "DescribeNetworkInterfaceAttributeRequest":{ - "type":"structure", - "required":["NetworkInterfaceId"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "NetworkInterfaceId":{ - "shape":"String", - "documentation":"

The ID of the network interface.

", - "locationName":"networkInterfaceId" - }, - "Attribute":{ - "shape":"NetworkInterfaceAttribute", - "documentation":"

The attribute of the network interface.

", - "locationName":"attribute" - } - } - }, - "DescribeNetworkInterfaceAttributeResult":{ - "type":"structure", - "members":{ - "NetworkInterfaceId":{ - "shape":"String", - "documentation":"

The ID of the network interface.

", - "locationName":"networkInterfaceId" - }, - "Description":{ - "shape":"AttributeValue", - "documentation":"

The description of the network interface.

", - "locationName":"description" - }, - "SourceDestCheck":{ - "shape":"AttributeBooleanValue", - "documentation":"

Indicates whether source/destination checking is enabled.

", - "locationName":"sourceDestCheck" - }, - "Groups":{ - "shape":"GroupIdentifierList", - "documentation":"

The security groups associated with the network interface.

", - "locationName":"groupSet" - }, - "Attachment":{ - "shape":"NetworkInterfaceAttachment", - "documentation":"

The attachment (if any) of the network interface.

", - "locationName":"attachment" - } - } - }, - "DescribeNetworkInterfacesRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "NetworkInterfaceIds":{ - "shape":"NetworkInterfaceIdList", - "documentation":"

One or more network interface IDs.

Default: Describes all your network interfaces.

", - "locationName":"NetworkInterfaceId" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

One or more filters.

", - "locationName":"filter" - } - } - }, - "DescribeNetworkInterfacesResult":{ - "type":"structure", - "members":{ - "NetworkInterfaces":{ - "shape":"NetworkInterfaceList", - "documentation":"

Information about one or more network interfaces.

", - "locationName":"networkInterfaceSet" - } - } - }, - "DescribePlacementGroupsRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "GroupNames":{ - "shape":"PlacementGroupStringList", - "documentation":"

One or more placement group names.

Default: Describes all your placement groups, or only those otherwise specified.

", - "locationName":"groupName" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

One or more filters.

", - "locationName":"Filter" - } - } - }, - "DescribePlacementGroupsResult":{ - "type":"structure", - "members":{ - "PlacementGroups":{ - "shape":"PlacementGroupList", - "documentation":"

One or more placement groups.

", - "locationName":"placementGroupSet" - } - } - }, - "DescribeRegionsRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "RegionNames":{ - "shape":"RegionNameStringList", - "documentation":"

The names of one or more regions.

", - "locationName":"RegionName" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

One or more filters.

", - "locationName":"Filter" - } - } - }, - "DescribeRegionsResult":{ - "type":"structure", - "members":{ - "Regions":{ - "shape":"RegionList", - "documentation":"

Information about one or more regions.

", - "locationName":"regionInfo" - } - } - }, - "DescribeReservedInstancesListingsRequest":{ - "type":"structure", - "members":{ - "ReservedInstancesId":{ - "shape":"String", - "documentation":"

One or more Reserved Instance IDs.

", - "locationName":"reservedInstancesId" - }, - "ReservedInstancesListingId":{ - "shape":"String", - "documentation":"

One or more Reserved Instance Listing IDs.

", - "locationName":"reservedInstancesListingId" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

One or more filters.

", - "locationName":"filters" - } - } - }, - "DescribeReservedInstancesListingsResult":{ - "type":"structure", - "members":{ - "ReservedInstancesListings":{ - "shape":"ReservedInstancesListingList", - "documentation":"

Information about the Reserved Instance listing.

", - "locationName":"reservedInstancesListingsSet" - } - } - }, - "DescribeReservedInstancesModificationsRequest":{ - "type":"structure", - "members":{ - "ReservedInstancesModificationIds":{ - "shape":"ReservedInstancesModificationIdStringList", - "documentation":"

IDs for the submitted modification request.

", - "locationName":"ReservedInstancesModificationId" - }, - "NextToken":{ - "shape":"String", - "documentation":"

The token for the next page of data.

", - "locationName":"nextToken" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

One or more filters.

", - "locationName":"Filter" - } - } - }, - "DescribeReservedInstancesModificationsResult":{ - "type":"structure", - "members":{ - "ReservedInstancesModifications":{ - "shape":"ReservedInstancesModificationList", - "documentation":"

The Reserved Instance modification information.

", - "locationName":"reservedInstancesModificationsSet" - }, - "NextToken":{ - "shape":"String", - "documentation":"

The token for the next page of data.

", - "locationName":"nextToken" - } - } - }, - "DescribeReservedInstancesOfferingsRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "ReservedInstancesOfferingIds":{ - "shape":"ReservedInstancesOfferingIdStringList", - "documentation":"

One or more Reserved Instances offering IDs.

", - "locationName":"ReservedInstancesOfferingId" - }, - "InstanceType":{ - "shape":"InstanceType", - "documentation":"

The instance type on which the Reserved Instance can be used. For more information, see Instance Types in the Amazon Elastic Compute Cloud User Guide for Linux.

" - }, - "AvailabilityZone":{ - "shape":"String", - "documentation":"

The Availability Zone in which the Reserved Instance can be used.

" - }, - "ProductDescription":{ - "shape":"RIProductDescription", - "documentation":"

The Reserved Instance description. Instances that include (Amazon VPC) in the description are for use with Amazon VPC.

" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

One or more filters.

", - "locationName":"Filter" - }, - "InstanceTenancy":{ - "shape":"Tenancy", - "documentation":"

The tenancy of the Reserved Instance offering. A Reserved Instance with dedicated tenancy runs on single-tenant hardware and can only be launched within a VPC.

Default: default

", - "locationName":"instanceTenancy" - }, - "OfferingType":{ - "shape":"OfferingTypeValues", - "documentation":"

The Reserved Instance offering type. If you are using tools that predate the 2011-11-01 API version, you only have access to the Medium Utilization Reserved Instance offering type.

", - "locationName":"offeringType" - }, - "NextToken":{ - "shape":"String", - "documentation":"

The token to use when requesting the next paginated set of offerings.

", - "locationName":"nextToken" - }, - "MaxResults":{ - "shape":"Integer", - "documentation":"

The maximum number of offerings to return. The maximum is 100.

Default: 100

", - "locationName":"maxResults" - }, - "IncludeMarketplace":{ - "shape":"Boolean", - "documentation":"

Include Marketplace offerings in the response.

" - }, - "MinDuration":{ - "shape":"Long", - "documentation":"

The minimum duration (in seconds) to filter when searching for offerings.

Default: 2592000 (1 month)

" - }, - "MaxDuration":{ - "shape":"Long", - "documentation":"

The maximum duration (in seconds) to filter when searching for offerings.

Default: 94608000 (3 years)

" - }, - "MaxInstanceCount":{ - "shape":"Integer", - "documentation":"

The maximum number of instances to filter when searching for offerings.

Default: 20

" - } - } - }, - "DescribeReservedInstancesOfferingsResult":{ - "type":"structure", - "members":{ - "ReservedInstancesOfferings":{ - "shape":"ReservedInstancesOfferingList", - "documentation":"

A list of Reserved Instances offerings.

", - "locationName":"reservedInstancesOfferingsSet" - }, - "NextToken":{ - "shape":"String", - "documentation":"

The next paginated set of results to return.

", - "locationName":"nextToken" - } - } - }, - "DescribeReservedInstancesRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "ReservedInstancesIds":{ - "shape":"ReservedInstancesIdStringList", - "documentation":"

One or more Reserved Instance IDs.

Default: Describes all your Reserved Instances, or only those otherwise specified.

", - "locationName":"ReservedInstancesId" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

One or more filters.

", - "locationName":"Filter" - }, - "OfferingType":{ - "shape":"OfferingTypeValues", - "documentation":"

The Reserved Instance offering type. If you are using tools that predate the 2011-11-01 API version, you only have access to the Medium Utilization Reserved Instance offering type.

", - "locationName":"offeringType" - } - } - }, - "DescribeReservedInstancesResult":{ - "type":"structure", - "members":{ - "ReservedInstances":{ - "shape":"ReservedInstancesList", - "documentation":"

A list of Reserved Instances.

", - "locationName":"reservedInstancesSet" - } - } - }, - "DescribeRouteTablesRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "RouteTableIds":{ - "shape":"ValueStringList", - "documentation":"

One or more route table IDs.

Default: Describes all your route tables.

", - "locationName":"RouteTableId" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

One or more filters.

", - "locationName":"Filter" - } - } - }, - "DescribeRouteTablesResult":{ - "type":"structure", - "members":{ - "RouteTables":{ - "shape":"RouteTableList", - "documentation":"

Information about one or more route tables.

", - "locationName":"routeTableSet" - } - } - }, - "DescribeSecurityGroupsRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "GroupNames":{ - "shape":"GroupNameStringList", - "documentation":"

[EC2-Classic, default VPC] One or more security group names. You can specify either the security group name or the security group ID.

Default: Describes all your security groups.

", - "locationName":"GroupName" - }, - "GroupIds":{ - "shape":"GroupIdStringList", - "documentation":"

One or more security group IDs. Required for nondefault VPCs.

Default: Describes all your security groups.

", - "locationName":"GroupId" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

One or more filters.

", - "locationName":"Filter" - } - } - }, - "DescribeSecurityGroupsResult":{ - "type":"structure", - "members":{ - "SecurityGroups":{ - "shape":"SecurityGroupList", - "documentation":"

Information about one or more security groups.

", - "locationName":"securityGroupInfo" - } - } - }, - "DescribeSnapshotAttributeRequest":{ - "type":"structure", - "required":[ - "SnapshotId", - "Attribute" - ], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "SnapshotId":{ - "shape":"String", - "documentation":"

The ID of the Amazon EBS snapshot.

" - }, - "Attribute":{ - "shape":"SnapshotAttributeName", - "documentation":"

The snapshot attribute you would like to view.

" - } - } - }, - "DescribeSnapshotAttributeResult":{ - "type":"structure", - "members":{ - "SnapshotId":{ - "shape":"String", - "documentation":"

The ID of the Amazon EBS snapshot.

", - "locationName":"snapshotId" - }, - "CreateVolumePermissions":{ - "shape":"CreateVolumePermissionList", - "documentation":"

A list of permissions for creating volumes from the snapshot.

", - "locationName":"createVolumePermission" - }, - "ProductCodes":{ - "shape":"ProductCodeList", - "documentation":"

A list of product codes.

", - "locationName":"productCodes" - } - } - }, - "DescribeSnapshotsRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "SnapshotIds":{ - "shape":"SnapshotIdStringList", - "documentation":"

One or more snapshot IDs.

Default: Describes snapshots for which you have launch permissions.

", - "locationName":"SnapshotId" - }, - "OwnerIds":{ - "shape":"OwnerStringList", - "documentation":"

Returns the snapshots owned by the specified owner. Multiple owners can be specified.

", - "locationName":"Owner" - }, - "RestorableByUserIds":{ - "shape":"RestorableByStringList", - "documentation":"

One or more AWS accounts IDs that can create volumes from the snapshot.

", - "locationName":"RestorableBy" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

One or more filters.

", - "locationName":"Filter" - } - } - }, - "DescribeSnapshotsResult":{ - "type":"structure", - "members":{ - "Snapshots":{ - "shape":"SnapshotList", - "locationName":"snapshotSet" - } - } - }, - "DescribeSpotDatafeedSubscriptionRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - } - } - }, - "DescribeSpotDatafeedSubscriptionResult":{ - "type":"structure", - "members":{ - "SpotDatafeedSubscription":{ - "shape":"SpotDatafeedSubscription", - "documentation":"

The Spot Instance data feed subscription.

", - "locationName":"spotDatafeedSubscription" - } - } - }, - "DescribeSpotInstanceRequestsRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "SpotInstanceRequestIds":{ - "shape":"SpotInstanceRequestIdList", - "documentation":"

One or more Spot Instance request IDs.

", - "locationName":"SpotInstanceRequestId" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

One or more filters.

", - "locationName":"Filter" - } - } - }, - "DescribeSpotInstanceRequestsResult":{ - "type":"structure", - "members":{ - "SpotInstanceRequests":{ - "shape":"SpotInstanceRequestList", - "documentation":"

One or more Spot Instance requests.

", - "locationName":"spotInstanceRequestSet" - } - } - }, - "DescribeSpotPriceHistoryRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "StartTime":{ - "shape":"DateTime", - "documentation":"

The start date and time of the Spot Price history data.

", - "locationName":"startTime" - }, - "EndTime":{ - "shape":"DateTime", - "documentation":"

The end date and time of the Spot Price history data.

", - "locationName":"endTime" - }, - "InstanceTypes":{ - "shape":"InstanceTypeList", - "documentation":"

One or more instance types.

", - "locationName":"InstanceType" - }, - "ProductDescriptions":{ - "shape":"ProductDescriptionList", - "documentation":"

One or more basic product descriptions.

", - "locationName":"ProductDescription" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

One or more filters.

", - "locationName":"Filter" - }, - "AvailabilityZone":{ - "shape":"String", - "documentation":"

The Availability Zone.

", - "locationName":"availabilityZone" - }, - "MaxResults":{ - "shape":"Integer", - "documentation":"

The number of rows to return.

", - "locationName":"maxResults" - }, - "NextToken":{ - "shape":"String", - "documentation":"

The next set of rows to return.

", - "locationName":"nextToken" - } - } - }, - "DescribeSpotPriceHistoryResult":{ - "type":"structure", - "members":{ - "SpotPriceHistory":{ - "shape":"SpotPriceHistoryList", - "documentation":"

The historical Spot Prices.

", - "locationName":"spotPriceHistorySet" - }, - "NextToken":{ - "shape":"String", - "documentation":"

The string marking the next set of results. This is empty if there are no more results.

", - "locationName":"nextToken" - } - } - }, - "DescribeSubnetsRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "SubnetIds":{ - "shape":"SubnetIdStringList", - "documentation":"

One or more subnet IDs.

Default: Describes all your subnets.

", - "locationName":"SubnetId" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

One or more filters.

", - "locationName":"Filter" - } - } - }, - "DescribeSubnetsResult":{ - "type":"structure", - "members":{ - "Subnets":{ - "shape":"SubnetList", - "documentation":"

Information about one or more subnets.

", - "locationName":"subnetSet" - } - } - }, - "DescribeTagsRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

One or more filters.

", - "locationName":"Filter" - }, - "MaxResults":{ - "shape":"Integer", - "documentation":"

The maximum number of items to return for this call. The call also returns a token that you can specify in a subsequent call to get the next set of results. If the value is greater than 1000, we return only 1000 items.

", - "locationName":"maxResults" - }, - "NextToken":{ - "shape":"String", - "documentation":"

The token for the next set of items to return. (You received this token from a prior call.)

", - "locationName":"nextToken" - } - } - }, - "DescribeTagsResult":{ - "type":"structure", - "members":{ - "Tags":{ - "shape":"TagDescriptionList", - "documentation":"

A list of tags.

", - "locationName":"tagSet" - }, - "NextToken":{ - "shape":"String", - "documentation":"

The token to use when requesting the next set of items. If there are no additional items to return, the string is empty.

", - "locationName":"nextToken" - } - } - }, - "DescribeVolumeAttributeRequest":{ - "type":"structure", - "required":["VolumeId"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "VolumeId":{ - "shape":"String", - "documentation":"

The ID of the volume.

" - }, - "Attribute":{ - "shape":"VolumeAttributeName", - "documentation":"

The instance attribute.

" - } - } - }, - "DescribeVolumeAttributeResult":{ - "type":"structure", - "members":{ - "VolumeId":{ - "shape":"String", - "documentation":"

The ID of the volume.

", - "locationName":"volumeId" - }, - "AutoEnableIO":{ - "shape":"AttributeBooleanValue", - "documentation":"

The state of autoEnableIO attribute.

", - "locationName":"autoEnableIO" - }, - "ProductCodes":{ - "shape":"ProductCodeList", - "documentation":"

A list of product codes.

", - "locationName":"productCodes" - } - } - }, - "DescribeVolumeStatusRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "VolumeIds":{ - "shape":"VolumeIdStringList", - "documentation":"

One or more volume IDs.

Default: Describes all your volumes.

", - "locationName":"VolumeId" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

One or more filters.

", - "locationName":"Filter" - }, - "NextToken":{ - "shape":"String", - "documentation":"

The next paginated set of results to return using the pagination token returned by a previous call.

" - }, - "MaxResults":{ - "shape":"Integer", - "documentation":"

The maximum number of paginated volume items per response.

" - } - } - }, - "DescribeVolumeStatusResult":{ - "type":"structure", - "members":{ - "VolumeStatuses":{ - "shape":"VolumeStatusList", - "documentation":"

A list of volumes.

", - "locationName":"volumeStatusSet" - }, - "NextToken":{ - "shape":"String", - "documentation":"

The next paginated set of results to return.

", - "locationName":"nextToken" - } - } - }, - "DescribeVolumesRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "VolumeIds":{ - "shape":"VolumeIdStringList", - "documentation":"

One or more volume IDs.

", - "locationName":"VolumeId" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

One or more filters.

", - "locationName":"Filter" - }, - "NextToken":{ - "shape":"String", - "documentation":"

The NextToken value returned from a previous paginated DescribeVolumes request where MaxResults was used and the results exceeded the value of that parameter. Pagination continues from the end of the previous results that returned the NextToken value. This value is null when there are no more results to return.

", - "locationName":"nextToken" - }, - "MaxResults":{ - "shape":"Integer", - "documentation":"

The maximum number of volume results returned by DescribeVolumes in paginated output. When this parameter is used, DescribeVolumes only returns MaxResults results in a single page along with a NextToken response element. The remaining results of the initial request can be seen by sending another DescribeVolumes request with the returned NextToken value. This value can be between 5 and 1000; if MaxResults is given a value larger than 1000, only 1000 results are returned. If this parameter is not used, then DescribeVolumes returns all results.

", - "locationName":"maxResults" - } - } - }, - "DescribeVolumesResult":{ - "type":"structure", - "members":{ - "Volumes":{ - "shape":"VolumeList", - "locationName":"volumeSet" - }, - "NextToken":{ - "shape":"String", - "documentation":"

The NextToken value to include in a future DescribeVolumes request. When the results of a DescribeVolumes request exceed MaxResults, this value can be used to retrieve the next page of results. This value is null when there are no more results to return.

", - "locationName":"nextToken" - } - } - }, - "DescribeVpcAttributeRequest":{ - "type":"structure", - "required":["VpcId"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "VpcId":{ - "shape":"String", - "documentation":"

The ID of the VPC.

" - }, - "Attribute":{ - "shape":"VpcAttributeName", - "documentation":"

The VPC attribute.

" - } - } - }, - "DescribeVpcAttributeResult":{ - "type":"structure", - "members":{ - "VpcId":{ - "shape":"String", - "documentation":"

The ID of the VPC.

", - "locationName":"vpcId" - }, - "EnableDnsSupport":{ - "shape":"AttributeBooleanValue", - "documentation":"

Indicates whether DNS resolution is enabled 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.

", - "locationName":"enableDnsSupport" - }, - "EnableDnsHostnames":{ - "shape":"AttributeBooleanValue", - "documentation":"

Indicates 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.

", - "locationName":"enableDnsHostnames" - } - } - }, - "DescribeVpcClassicLinkRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "VpcIds":{ - "shape":"VpcClassicLinkIdList", - "documentation":"

One or more VPCs for which you want to describe the ClassicLink status.

", - "locationName":"VpcId" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

One or more filters.

", - "locationName":"Filter" - } - } - }, - "DescribeVpcClassicLinkResult":{ - "type":"structure", - "members":{ - "Vpcs":{ - "shape":"VpcClassicLinkList", - "documentation":"

The ClassicLink status of one or more VPCs.

", - "locationName":"vpcSet" - } - } - }, - "DescribeVpcPeeringConnectionsRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "VpcPeeringConnectionIds":{ - "shape":"ValueStringList", - "documentation":"

One or more VPC peering connection IDs.

Default: Describes all your VPC peering connections.

", - "locationName":"VpcPeeringConnectionId" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

One or more filters.

", - "locationName":"Filter" - } - } - }, - "DescribeVpcPeeringConnectionsResult":{ - "type":"structure", - "members":{ - "VpcPeeringConnections":{ - "shape":"VpcPeeringConnectionList", - "documentation":"

Information about the VPC peering connections.

", - "locationName":"vpcPeeringConnectionSet" - } - } - }, - "DescribeVpcsRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "VpcIds":{ - "shape":"VpcIdStringList", - "documentation":"

One or more VPC IDs.

Default: Describes all your VPCs.

", - "locationName":"VpcId" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

One or more filters.

", - "locationName":"Filter" - } - } - }, - "DescribeVpcsResult":{ - "type":"structure", - "members":{ - "Vpcs":{ - "shape":"VpcList", - "documentation":"

Information about one or more VPCs.

", - "locationName":"vpcSet" - } - } - }, - "DescribeVpnConnectionsRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "VpnConnectionIds":{ - "shape":"VpnConnectionIdStringList", - "documentation":"

One or more VPN connection IDs.

Default: Describes your VPN connections.

", - "locationName":"VpnConnectionId" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

One or more filters.

", - "locationName":"Filter" - } - } - }, - "DescribeVpnConnectionsResult":{ - "type":"structure", - "members":{ - "VpnConnections":{ - "shape":"VpnConnectionList", - "documentation":"

Information about one or more VPN connections.

", - "locationName":"vpnConnectionSet" - } - } - }, - "DescribeVpnGatewaysRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "VpnGatewayIds":{ - "shape":"VpnGatewayIdStringList", - "documentation":"

One or more virtual private gateway IDs.

Default: Describes all your virtual private gateways.

", - "locationName":"VpnGatewayId" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

One or more filters.

", - "locationName":"Filter" - } - } - }, - "DescribeVpnGatewaysResult":{ - "type":"structure", - "members":{ - "VpnGateways":{ - "shape":"VpnGatewayList", - "documentation":"

Information about one or more virtual private gateways.

", - "locationName":"vpnGatewaySet" - } - } - }, - "DetachClassicLinkVpcRequest":{ - "type":"structure", - "required":[ - "InstanceId", - "VpcId" - ], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "InstanceId":{ - "shape":"String", - "documentation":"

The ID of the instance to unlink from the VPC.

", - "locationName":"instanceId" - }, - "VpcId":{ - "shape":"String", - "documentation":"

The ID of the VPC to which the instance is linked.

", - "locationName":"vpcId" - } - } - }, - "DetachClassicLinkVpcResult":{ - "type":"structure", - "members":{ - "Return":{ - "shape":"Boolean", - "documentation":"

Returns true if the request succeeds; otherwise, it returns an error.

", - "locationName":"return" - } - } - }, - "DetachInternetGatewayRequest":{ - "type":"structure", - "required":[ - "InternetGatewayId", - "VpcId" - ], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "InternetGatewayId":{ - "shape":"String", - "documentation":"

The ID of the Internet gateway.

", - "locationName":"internetGatewayId" - }, - "VpcId":{ - "shape":"String", - "documentation":"

The ID of the VPC.

", - "locationName":"vpcId" - } - } - }, - "DetachNetworkInterfaceRequest":{ - "type":"structure", - "required":["AttachmentId"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "AttachmentId":{ - "shape":"String", - "documentation":"

The ID of the attachment.

", - "locationName":"attachmentId" - }, - "Force":{ - "shape":"Boolean", - "documentation":"

Specifies whether to force a detachment.

", - "locationName":"force" - } - } - }, - "DetachVolumeRequest":{ - "type":"structure", - "required":["VolumeId"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "VolumeId":{ - "shape":"String", - "documentation":"

The ID of the volume.

" - }, - "InstanceId":{ - "shape":"String", - "documentation":"

The ID of the instance.

" - }, - "Device":{ - "shape":"String", - "documentation":"

The device name.

" - }, - "Force":{ - "shape":"Boolean", - "documentation":"

Forces detachment if the previous detachment attempt did not occur cleanly (for example, logging into an instance, unmounting the volume, and detaching normally). This option can lead to data loss or a corrupted file system. Use this option only as a last resort to detach a volume from a failed instance. The instance won't have an opportunity to flush file system caches or file system metadata. If you use this option, you must perform file system check and repair procedures.

" - } - } - }, - "DetachVpnGatewayRequest":{ - "type":"structure", - "required":[ - "VpnGatewayId", - "VpcId" - ], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "VpnGatewayId":{ - "shape":"String", - "documentation":"

The ID of the virtual private gateway.

" - }, - "VpcId":{ - "shape":"String", - "documentation":"

The ID of the VPC.

" - } - } - }, - "DeviceType":{ - "type":"string", - "enum":[ - "ebs", - "instance-store" - ] - }, - "DhcpConfiguration":{ - "type":"structure", - "members":{ - "Key":{ - "shape":"String", - "documentation":"

The name of a DHCP option.

", - "locationName":"key" - }, - "Values":{ - "shape":"DhcpConfigurationValueList", - "documentation":"

One or more values for the DHCP option.

", - "locationName":"valueSet" - } - }, - "documentation":"

Describes a DHCP configuration option.

" - }, - "DhcpConfigurationList":{ - "type":"list", - "member":{ - "shape":"DhcpConfiguration", - "locationName":"item" - } - }, - "DhcpOptions":{ - "type":"structure", - "members":{ - "DhcpOptionsId":{ - "shape":"String", - "documentation":"

The ID of the set of DHCP options.

", - "locationName":"dhcpOptionsId" - }, - "DhcpConfigurations":{ - "shape":"DhcpConfigurationList", - "documentation":"

One or more DHCP options in the set.

", - "locationName":"dhcpConfigurationSet" - }, - "Tags":{ - "shape":"TagList", - "documentation":"

Any tags assigned to the DHCP options set.

", - "locationName":"tagSet" - } - }, - "documentation":"

Describes a set of DHCP options.

" - }, - "DhcpOptionsIdStringList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"DhcpOptionsId" - } - }, - "DhcpOptionsList":{ - "type":"list", - "member":{ - "shape":"DhcpOptions", - "locationName":"item" - } - }, - "DisableVgwRoutePropagationRequest":{ - "type":"structure", - "required":[ - "RouteTableId", - "GatewayId" - ], - "members":{ - "RouteTableId":{ - "shape":"String", - "documentation":"

The ID of the route table.

" - }, - "GatewayId":{ - "shape":"String", - "documentation":"

The ID of the virtual private gateway.

" - } - } - }, - "DisableVpcClassicLinkRequest":{ - "type":"structure", - "required":["VpcId"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "VpcId":{ - "shape":"String", - "documentation":"

The ID of the VPC.

", - "locationName":"vpcId" - } - } - }, - "DisableVpcClassicLinkResult":{ - "type":"structure", - "members":{ - "Return":{ - "shape":"Boolean", - "documentation":"

Returns true if the request succeeds; otherwise, it returns an error.

", - "locationName":"return" - } - } - }, - "DisassociateAddressRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "PublicIp":{ - "shape":"String", - "documentation":"

[EC2-Classic] The Elastic IP address. Required for EC2-Classic.

" - }, - "AssociationId":{ - "shape":"String", - "documentation":"

[EC2-VPC] The association ID. Required for EC2-VPC.

" - } - } - }, - "DisassociateRouteTableRequest":{ - "type":"structure", - "required":["AssociationId"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "AssociationId":{ - "shape":"String", - "documentation":"

The association ID representing the current association between the route table and subnet.

", - "locationName":"associationId" - } - } - }, - "DiskImage":{ - "type":"structure", - "members":{ - "Image":{"shape":"DiskImageDetail"}, - "Description":{"shape":"String"}, - "Volume":{"shape":"VolumeDetail"} - }, - "documentation":"

Describes a disk image.

" - }, - "DiskImageDescription":{ - "type":"structure", - "required":[ - "Format", - "Size", - "ImportManifestUrl" - ], - "members":{ - "Format":{ - "shape":"DiskImageFormat", - "documentation":"

The disk image format.

", - "locationName":"format" - }, - "Size":{ - "shape":"Long", - "documentation":"

The size of the disk image.

", - "locationName":"size" - }, - "ImportManifestUrl":{ - "shape":"String", - "documentation":"

A presigned URL for the import manifest stored in Amazon S3. For information about creating a presigned URL for an Amazon S3 object, read the \"Query String Request Authentication Alternative\" section of the Authenticating REST Requests topic in the Amazon Simple Storage Service Developer Guide.

", - "locationName":"importManifestUrl" - }, - "Checksum":{ - "shape":"String", - "documentation":"

The checksum computed for the disk image.

", - "locationName":"checksum" - } - } - }, - "DiskImageDetail":{ - "type":"structure", - "required":[ - "Format", - "Bytes", - "ImportManifestUrl" - ], - "members":{ - "Format":{ - "shape":"DiskImageFormat", - "documentation":"

The disk image format.

", - "locationName":"format" - }, - "Bytes":{ - "shape":"Long", - "locationName":"bytes" - }, - "ImportManifestUrl":{ - "shape":"String", - "documentation":"

A presigned URL for the import manifest stored in Amazon S3 and presented here as an Amazon S3 presigned URL. For information about creating a presigned URL for an Amazon S3 object, read the \"Query String Request Authentication Alternative\" section of the Authenticating REST Requests topic in the Amazon Simple Storage Service Developer Guide.

", - "locationName":"importManifestUrl" - } - } - }, - "DiskImageFormat":{ - "type":"string", - "enum":[ - "VMDK", - "RAW", - "VHD" - ] - }, - "DiskImageList":{ - "type":"list", - "member":{"shape":"DiskImage"} - }, - "DiskImageVolumeDescription":{ - "type":"structure", - "required":["Id"], - "members":{ - "Size":{ - "shape":"Long", - "documentation":"

The size of the volume.

", - "locationName":"size" - }, - "Id":{ - "shape":"String", - "documentation":"

The volume identifier.

", - "locationName":"id" - } - } - }, - "DomainType":{ - "type":"string", - "enum":[ - "vpc", - "standard" - ] - }, - "Double":{"type":"double"}, - "EbsBlockDevice":{ - "type":"structure", - "members":{ - "SnapshotId":{ - "shape":"String", - "documentation":"

The ID of the snapshot.

", - "locationName":"snapshotId" - }, - "VolumeSize":{ - "shape":"Integer", - "documentation":"

The size of the volume, in GiB.

Constraints: If the volume type is io1, the minimum size of the volume is 10 GiB; otherwise, the minimum size is 1 GiB. The maximum volume size is 1024 GiB. 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.

", - "locationName":"volumeSize" - }, - "DeleteOnTermination":{ - "shape":"Boolean", - "documentation":"

Indicates whether the Amazon EBS volume is deleted on instance termination.

", - "locationName":"deleteOnTermination" - }, - "VolumeType":{ - "shape":"VolumeType", - "documentation":"

The volume type. gp2 for General Purpose (SSD) volumes, io1 for Provisioned IOPS (SSD) volumes, and standard for Magnetic volumes.

Default: standard

", - "locationName":"volumeType" - }, - "Iops":{ - "shape":"Integer", - "documentation":"

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. For more information on General Purpose (SSD) baseline performance, I/O credits, and bursting, see Amazon EBS Volume Types in the Amazon Elastic Compute Cloud User Guide for Linux.

Constraint: Range is 100 to 4000 for Provisioned IOPS (SSD) volumes and 3 to 3072 for General Purpose (SSD) volumes.

Condition: This parameter is required for requests to create io1 volumes; it is not used in requests to create standard or gp2 volumes.

", - "locationName":"iops" - }, - "Encrypted":{ - "shape":"Boolean", - "documentation":"

Indicates whether the Amazon EBS volume is encrypted. Encrypted Amazon EBS volumes may only be attached to instances that support Amazon EBS encryption.

", - "locationName":"encrypted" - } - }, - "documentation":"

Describes an Amazon EBS block device.

" - }, - "EbsInstanceBlockDevice":{ - "type":"structure", - "members":{ - "VolumeId":{ - "shape":"String", - "documentation":"

The ID of the Amazon EBS volume.

", - "locationName":"volumeId" - }, - "Status":{ - "shape":"AttachmentStatus", - "documentation":"

The attachment state.

", - "locationName":"status" - }, - "AttachTime":{ - "shape":"DateTime", - "documentation":"

The time stamp when the attachment initiated.

", - "locationName":"attachTime" - }, - "DeleteOnTermination":{ - "shape":"Boolean", - "documentation":"

Indicates whether the volume is deleted on instance termination.

", - "locationName":"deleteOnTermination" - } - }, - "documentation":"

Describes a parameter used to set up an Amazon EBS volume in a block device mapping.

" - }, - "EbsInstanceBlockDeviceSpecification":{ - "type":"structure", - "members":{ - "VolumeId":{ - "shape":"String", - "documentation":"

The ID of the Amazon EBS volume.

", - "locationName":"volumeId" - }, - "DeleteOnTermination":{ - "shape":"Boolean", - "documentation":"

Indicates whether the volume is deleted on instance termination.

", - "locationName":"deleteOnTermination" - } - } - }, - "EnableVgwRoutePropagationRequest":{ - "type":"structure", - "required":[ - "RouteTableId", - "GatewayId" - ], - "members":{ - "RouteTableId":{ - "shape":"String", - "documentation":"

The ID of the route table.

" - }, - "GatewayId":{ - "shape":"String", - "documentation":"

The ID of the virtual private gateway.

" - } - } - }, - "EnableVolumeIORequest":{ - "type":"structure", - "required":["VolumeId"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "VolumeId":{ - "shape":"String", - "documentation":"

The ID of the volume.

", - "locationName":"volumeId" - } - } - }, - "EnableVpcClassicLinkRequest":{ - "type":"structure", - "required":["VpcId"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "VpcId":{ - "shape":"String", - "documentation":"

The ID of the VPC.

", - "locationName":"vpcId" - } - } - }, - "EnableVpcClassicLinkResult":{ - "type":"structure", - "members":{ - "Return":{ - "shape":"Boolean", - "documentation":"

Returns true if the request succeeds; otherwise, it returns an error.

", - "locationName":"return" - } - } - }, - "EventCode":{ - "type":"string", - "enum":[ - "instance-reboot", - "system-reboot", - "system-maintenance", - "instance-retirement", - "instance-stop" - ] - }, - "ExecutableByStringList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"ExecutableBy" - } - }, - "ExportEnvironment":{ - "type":"string", - "enum":[ - "citrix", - "vmware", - "microsoft" - ] - }, - "ExportTask":{ - "type":"structure", - "members":{ - "ExportTaskId":{ - "shape":"String", - "documentation":"

The ID of the export task.

", - "locationName":"exportTaskId" - }, - "Description":{ - "shape":"String", - "documentation":"

A description of the resource being exported.

", - "locationName":"description" - }, - "State":{ - "shape":"ExportTaskState", - "documentation":"

The state of the conversion task.

", - "locationName":"state" - }, - "StatusMessage":{ - "shape":"String", - "documentation":"

The status message related to the export task.

", - "locationName":"statusMessage" - }, - "InstanceExportDetails":{ - "shape":"InstanceExportDetails", - "documentation":"

The instance being exported.

", - "locationName":"instanceExport" - }, - "ExportToS3Task":{ - "shape":"ExportToS3Task", - "locationName":"exportToS3" - } - }, - "documentation":"

Describes an export task.

" - }, - "ExportTaskIdStringList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"ExportTaskId" - } - }, - "ExportTaskList":{ - "type":"list", - "member":{ - "shape":"ExportTask", - "locationName":"item" - } - }, - "ExportTaskState":{ - "type":"string", - "enum":[ - "active", - "cancelling", - "cancelled", - "completed" - ] - }, - "ExportToS3Task":{ - "type":"structure", - "members":{ - "DiskImageFormat":{ - "shape":"DiskImageFormat", - "documentation":"

The format for the exported image.

", - "locationName":"diskImageFormat" - }, - "ContainerFormat":{ - "shape":"ContainerFormat", - "documentation":"

The container format used to combine disk images with metadata (such as OVF). If absent, only the disk image is exported.

", - "locationName":"containerFormat" - }, - "S3Bucket":{ - "shape":"String", - "documentation":"

The Amazon S3 bucket for the destination image. The destination bucket must exist and grant WRITE and READ_ACL permissions to the AWS account vm-import-export@amazon.com.

", - "locationName":"s3Bucket" - }, - "S3Key":{ - "shape":"String", - "locationName":"s3Key" - } - } - }, - "ExportToS3TaskSpecification":{ - "type":"structure", - "members":{ - "DiskImageFormat":{ - "shape":"DiskImageFormat", - "locationName":"diskImageFormat" - }, - "ContainerFormat":{ - "shape":"ContainerFormat", - "locationName":"containerFormat" - }, - "S3Bucket":{ - "shape":"String", - "locationName":"s3Bucket" - }, - "S3Prefix":{ - "shape":"String", - "documentation":"

The image is written to a single object in the Amazon S3 bucket at the S3 key s3prefix + exportTaskId + '.' + diskImageFormat.

", - "locationName":"s3Prefix" - } - } - }, - "Filter":{ - "type":"structure", - "members":{ - "Name":{ - "shape":"String", - "documentation":"

The name of the filter. Filter names are case-sensitive.

" - }, - "Values":{ - "shape":"ValueStringList", - "documentation":"

One or more filter values. Filter values are case-sensitive.

", - "locationName":"Value" - } - }, - "documentation":"

A filter name and value pair that is used to return a more specific list of results. Filters can be used to match a set of resources by various criteria, such as tags, attributes, or IDs.

" - }, - "FilterList":{ - "type":"list", - "member":{ - "shape":"Filter", - "locationName":"Filter" - } - }, - "Float":{"type":"float"}, - "GatewayType":{ - "type":"string", - "enum":["ipsec.1"] - }, - "GetConsoleOutputRequest":{ - "type":"structure", - "required":["InstanceId"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "InstanceId":{ - "shape":"String", - "documentation":"

The ID of the instance.

" - } - } - }, - "GetConsoleOutputResult":{ - "type":"structure", - "members":{ - "InstanceId":{ - "shape":"String", - "documentation":"

The ID of the instance.

", - "locationName":"instanceId" - }, - "Timestamp":{ - "shape":"DateTime", - "documentation":"

The time the output was last updated.

", - "locationName":"timestamp" - }, - "Output":{ - "shape":"String", - "documentation":"

The console output, Base64 encoded.

", - "locationName":"output" - } - } - }, - "GetPasswordDataRequest":{ - "type":"structure", - "required":["InstanceId"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "InstanceId":{ - "shape":"String", - "documentation":"

The ID of the Windows instance.

" - } - } - }, - "GetPasswordDataResult":{ - "type":"structure", - "members":{ - "InstanceId":{ - "shape":"String", - "documentation":"

The ID of the Windows instance.

", - "locationName":"instanceId" - }, - "Timestamp":{ - "shape":"DateTime", - "documentation":"

The time the data was last updated.

", - "locationName":"timestamp" - }, - "PasswordData":{ - "shape":"String", - "documentation":"

The password of the instance.

", - "locationName":"passwordData" - } - } - }, - "GroupIdStringList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"groupId" - } - }, - "GroupIdentifier":{ - "type":"structure", - "members":{ - "GroupName":{ - "shape":"String", - "documentation":"

The name of the security group.

", - "locationName":"groupName" - }, - "GroupId":{ - "shape":"String", - "documentation":"

The ID of the security group.

", - "locationName":"groupId" - } - }, - "documentation":"

Describes a security group.

" - }, - "GroupIdentifierList":{ - "type":"list", - "member":{ - "shape":"GroupIdentifier", - "locationName":"item" - } - }, - "GroupNameStringList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"GroupName" - } - }, - "HypervisorType":{ - "type":"string", - "enum":[ - "ovm", - "xen" - ] - }, - "IamInstanceProfile":{ - "type":"structure", - "members":{ - "Arn":{ - "shape":"String", - "documentation":"

The Amazon Resource Name (ARN) of the instance profile.

", - "locationName":"arn" - }, - "Id":{ - "shape":"String", - "documentation":"

The ID of the instance profile.

", - "locationName":"id" - } - }, - "documentation":"

Describes an IAM instance profile.

" - }, - "IamInstanceProfileSpecification":{ - "type":"structure", - "members":{ - "Arn":{ - "shape":"String", - "documentation":"

The Amazon Resource Name (ARN) of the instance profile.

", - "locationName":"arn" - }, - "Name":{ - "shape":"String", - "documentation":"

The name of the instance profile.

", - "locationName":"name" - } - }, - "documentation":"

Describes an IAM instance profile.

" - }, - "IcmpTypeCode":{ - "type":"structure", - "members":{ - "Type":{ - "shape":"Integer", - "documentation":"

The ICMP code. A value of -1 means all codes for the specified ICMP type.

", - "locationName":"type" - }, - "Code":{ - "shape":"Integer", - "documentation":"

The ICMP type. A value of -1 means all types.

", - "locationName":"code" - } - }, - "documentation":"

Describes the ICMP type and code.

" - }, - "Image":{ - "type":"structure", - "members":{ - "ImageId":{ - "shape":"String", - "documentation":"

The ID of the AMI.

", - "locationName":"imageId" - }, - "ImageLocation":{ - "shape":"String", - "documentation":"

The location of the AMI.

", - "locationName":"imageLocation" - }, - "State":{ - "shape":"ImageState", - "documentation":"

The current state of the AMI. If the state is available, the image is successfully registered and can be used to launch an instance.

", - "locationName":"imageState" - }, - "OwnerId":{ - "shape":"String", - "documentation":"

The AWS account ID of the image owner.

", - "locationName":"imageOwnerId" - }, - "CreationDate":{ - "shape":"String", - "documentation":"

The date and time the image was created.

", - "locationName":"creationDate" - }, - "Public":{ - "shape":"Boolean", - "documentation":"

Indicates whether the image has public launch permissions. The value is true if this image has public launch permissions or false if it has only implicit and explicit launch permissions.

", - "locationName":"isPublic" - }, - "ProductCodes":{ - "shape":"ProductCodeList", - "documentation":"

Any product codes associated with the AMI.

", - "locationName":"productCodes" - }, - "Architecture":{ - "shape":"ArchitectureValues", - "documentation":"

The architecture of the image.

", - "locationName":"architecture" - }, - "ImageType":{ - "shape":"ImageTypeValues", - "documentation":"

The type of image.

", - "locationName":"imageType" - }, - "KernelId":{ - "shape":"String", - "documentation":"

The kernel associated with the image, if any. Only applicable for machine images.

", - "locationName":"kernelId" - }, - "RamdiskId":{ - "shape":"String", - "documentation":"

The RAM disk associated with the image, if any. Only applicable for machine images.

", - "locationName":"ramdiskId" - }, - "Platform":{ - "shape":"PlatformValues", - "documentation":"

The value is Windows for Windows AMIs; otherwise blank.

", - "locationName":"platform" - }, - "SriovNetSupport":{ - "shape":"String", - "documentation":"

Specifies whether enhanced networking is enabled.

", - "locationName":"sriovNetSupport" - }, - "StateReason":{ - "shape":"StateReason", - "documentation":"

The reason for the state change.

", - "locationName":"stateReason" - }, - "ImageOwnerAlias":{ - "shape":"String", - "documentation":"

The AWS account alias (for example, amazon, self) or the AWS account ID of the AMI owner.

", - "locationName":"imageOwnerAlias" - }, - "Name":{ - "shape":"String", - "documentation":"

The name of the AMI that was provided during image creation.

", - "locationName":"name" - }, - "Description":{ - "shape":"String", - "documentation":"

The description of the AMI that was provided during image creation.

", - "locationName":"description" - }, - "RootDeviceType":{ - "shape":"DeviceType", - "documentation":"

The type of root device used by the AMI. The AMI can use an Amazon EBS volume or an instance store volume.

", - "locationName":"rootDeviceType" - }, - "RootDeviceName":{ - "shape":"String", - "documentation":"

The device name of the root device (for example, /dev/sda1 or xvda).

", - "locationName":"rootDeviceName" - }, - "BlockDeviceMappings":{ - "shape":"BlockDeviceMappingList", - "documentation":"

Any block device mapping entries.

", - "locationName":"blockDeviceMapping" - }, - "VirtualizationType":{ - "shape":"VirtualizationType", - "documentation":"

The type of virtualization of the AMI.

", - "locationName":"virtualizationType" - }, - "Tags":{ - "shape":"TagList", - "documentation":"

Any tags assigned to the image.

", - "locationName":"tagSet" - }, - "Hypervisor":{ - "shape":"HypervisorType", - "documentation":"

The hypervisor type of the image.

", - "locationName":"hypervisor" - } - }, - "documentation":"

Describes an image.

" - }, - "ImageAttribute":{ - "type":"structure", - "members":{ - "ImageId":{ - "shape":"String", - "documentation":"

The ID of the AMI.

", - "locationName":"imageId" - }, - "LaunchPermissions":{ - "shape":"LaunchPermissionList", - "documentation":"

One or more launch permissions.

", - "locationName":"launchPermission" - }, - "ProductCodes":{ - "shape":"ProductCodeList", - "documentation":"

One or more product codes.

", - "locationName":"productCodes" - }, - "KernelId":{ - "shape":"AttributeValue", - "documentation":"

The kernel ID.

", - "locationName":"kernel" - }, - "RamdiskId":{ - "shape":"AttributeValue", - "documentation":"

The RAM disk ID.

", - "locationName":"ramdisk" - }, - "Description":{ - "shape":"AttributeValue", - "documentation":"

A description for the AMI.

", - "locationName":"description" - }, - "SriovNetSupport":{ - "shape":"AttributeValue", - "locationName":"sriovNetSupport" - }, - "BlockDeviceMappings":{ - "shape":"BlockDeviceMappingList", - "documentation":"

One or more block device mapping entries.

", - "locationName":"blockDeviceMapping" - } - }, - "documentation":"

Describes an image attribute.

" - }, - "ImageAttributeName":{ - "type":"string", - "enum":[ - "description", - "kernel", - "ramdisk", - "launchPermission", - "productCodes", - "blockDeviceMapping" - ] - }, - "ImageIdStringList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"ImageId" - } - }, - "ImageList":{ - "type":"list", - "member":{ - "shape":"Image", - "locationName":"item" - } - }, - "ImageState":{ - "type":"string", - "enum":[ - "available", - "deregistered" - ] - }, - "ImageTypeValues":{ - "type":"string", - "enum":[ - "machine", - "kernel", - "ramdisk" - ] - }, - "ImportInstanceLaunchSpecification":{ - "type":"structure", - "members":{ - "Architecture":{ - "shape":"ArchitectureValues", - "documentation":"

The architecture of the instance.

", - "locationName":"architecture" - }, - "GroupNames":{ - "shape":"SecurityGroupStringList", - "documentation":"

One or more security group names.

", - "locationName":"GroupName" - }, - "GroupIds":{ - "shape":"SecurityGroupIdStringList", - "documentation":"

One or more security group IDs.

", - "locationName":"GroupId" - }, - "AdditionalInfo":{ - "shape":"String", - "locationName":"additionalInfo" - }, - "UserData":{ - "shape":"UserData", - "documentation":"

User data to be made available to the instance.

", - "locationName":"userData" - }, - "InstanceType":{ - "shape":"InstanceType", - "documentation":"

The instance type. This is not supported for VMs imported into a VPC, which are assigned the default security group. After a VM is imported into a VPC, you can specify another security group using the AWS Management Console. For more information, see Instance Types in the Amazon Elastic Compute Cloud User Guide for Linux. For more information about the Linux instance types you can import, see Before You Get Started in the Amazon Elastic Compute Cloud User Guide for Linux.

", - "locationName":"instanceType" - }, - "Placement":{ - "shape":"Placement", - "locationName":"placement" - }, - "Monitoring":{ - "shape":"Boolean", - "locationName":"monitoring" - }, - "SubnetId":{ - "shape":"String", - "documentation":"

[EC2-VPC] The ID of the subnet to launch the instance into.

", - "locationName":"subnetId" - }, - "InstanceInitiatedShutdownBehavior":{ - "shape":"ShutdownBehavior", - "documentation":"

Indicates whether an instance stops or terminates when you initiate shutdown from the instance (using the operating system command for system shutdown).

", - "locationName":"instanceInitiatedShutdownBehavior" - }, - "PrivateIpAddress":{ - "shape":"String", - "documentation":"

[EC2-VPC] Optionally, you can use this parameter to assign the instance a specific available IP address from the IP address range of the subnet.

", - "locationName":"privateIpAddress" - } - } - }, - "ImportInstanceRequest":{ - "type":"structure", - "required":["Platform"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "Description":{ - "shape":"String", - "documentation":"

A description for the instance being imported.

", - "locationName":"description" - }, - "LaunchSpecification":{ - "shape":"ImportInstanceLaunchSpecification", - "documentation":"

", - "locationName":"launchSpecification" - }, - "DiskImages":{ - "shape":"DiskImageList", - "locationName":"diskImage" - }, - "Platform":{ - "shape":"PlatformValues", - "documentation":"

The instance operating system.

", - "locationName":"platform" - } - } - }, - "ImportInstanceResult":{ - "type":"structure", - "members":{ - "ConversionTask":{ - "shape":"ConversionTask", - "locationName":"conversionTask" - } - } - }, - "ImportInstanceTaskDetails":{ - "type":"structure", - "required":["Volumes"], - "members":{ - "Volumes":{ - "shape":"ImportInstanceVolumeDetailSet", - "locationName":"volumes" - }, - "InstanceId":{ - "shape":"String", - "locationName":"instanceId" - }, - "Platform":{ - "shape":"PlatformValues", - "documentation":"

The instance operating system.

", - "locationName":"platform" - }, - "Description":{ - "shape":"String", - "locationName":"description" - } - } - }, - "ImportInstanceVolumeDetailItem":{ - "type":"structure", - "required":[ - "BytesConverted", - "AvailabilityZone", - "Image", - "Volume", - "Status" - ], - "members":{ - "BytesConverted":{ - "shape":"Long", - "documentation":"

The number of bytes converted so far.

", - "locationName":"bytesConverted" - }, - "AvailabilityZone":{ - "shape":"String", - "documentation":"

The Availability Zone where the resulting instance will reside.

", - "locationName":"availabilityZone" - }, - "Image":{ - "shape":"DiskImageDescription", - "documentation":"

The image.

", - "locationName":"image" - }, - "Volume":{ - "shape":"DiskImageVolumeDescription", - "documentation":"

The volume.

", - "locationName":"volume" - }, - "Status":{ - "shape":"String", - "documentation":"

The status of the import of this particular disk image.

", - "locationName":"status" - }, - "StatusMessage":{ - "shape":"String", - "documentation":"

The status information or errors related to the disk image.

", - "locationName":"statusMessage" - }, - "Description":{ - "shape":"String", - "locationName":"description" - } - }, - "documentation":"

Describes an import volume task.

" - }, - "ImportInstanceVolumeDetailSet":{ - "type":"list", - "member":{ - "shape":"ImportInstanceVolumeDetailItem", - "locationName":"item" - } - }, - "ImportKeyPairRequest":{ - "type":"structure", - "required":[ - "KeyName", - "PublicKeyMaterial" - ], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "KeyName":{ - "shape":"String", - "documentation":"

A unique name for the key pair.

", - "locationName":"keyName" - }, - "PublicKeyMaterial":{ - "shape":"Blob", - "documentation":"

The public key. You must base64 encode the public key material before sending it to AWS.

", - "locationName":"publicKeyMaterial" - } - } - }, - "ImportKeyPairResult":{ - "type":"structure", - "members":{ - "KeyName":{ - "shape":"String", - "documentation":"

The key pair name you provided.

", - "locationName":"keyName" - }, - "KeyFingerprint":{ - "shape":"String", - "documentation":"

The MD5 public key fingerprint as specified in section 4 of RFC 4716.

", - "locationName":"keyFingerprint" - } - } - }, - "ImportVolumeRequest":{ - "type":"structure", - "required":[ - "AvailabilityZone", - "Image", - "Volume" - ], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "AvailabilityZone":{ - "shape":"String", - "documentation":"

The Availability Zone for the resulting Amazon EBS volume.

", - "locationName":"availabilityZone" - }, - "Image":{ - "shape":"DiskImageDetail", - "locationName":"image" - }, - "Description":{ - "shape":"String", - "documentation":"

An optional description for the volume being imported.

", - "locationName":"description" - }, - "Volume":{ - "shape":"VolumeDetail", - "locationName":"volume" - } - } - }, - "ImportVolumeResult":{ - "type":"structure", - "members":{ - "ConversionTask":{ - "shape":"ConversionTask", - "locationName":"conversionTask" - } - } - }, - "ImportVolumeTaskDetails":{ - "type":"structure", - "required":[ - "BytesConverted", - "AvailabilityZone", - "Image", - "Volume" - ], - "members":{ - "BytesConverted":{ - "shape":"Long", - "documentation":"

The number of bytes converted so far.

", - "locationName":"bytesConverted" - }, - "AvailabilityZone":{ - "shape":"String", - "documentation":"

The Availability Zone where the resulting volume will reside.

", - "locationName":"availabilityZone" - }, - "Description":{ - "shape":"String", - "documentation":"

The description you provided when starting the import volume task.

", - "locationName":"description" - }, - "Image":{ - "shape":"DiskImageDescription", - "documentation":"

The image.

", - "locationName":"image" - }, - "Volume":{ - "shape":"DiskImageVolumeDescription", - "documentation":"

The volume.

", - "locationName":"volume" - } - }, - "documentation":"

Describes an import volume task.

" - }, - "Instance":{ - "type":"structure", - "members":{ - "InstanceId":{ - "shape":"String", - "documentation":"

The ID of the instance.

", - "locationName":"instanceId" - }, - "ImageId":{ - "shape":"String", - "documentation":"

The ID of the AMI used to launch the instance.

", - "locationName":"imageId" - }, - "State":{ - "shape":"InstanceState", - "documentation":"

The current state of the instance.

", - "locationName":"instanceState" - }, - "PrivateDnsName":{ - "shape":"String", - "documentation":"

The private DNS name assigned to the instance. This DNS name can only be used inside the Amazon EC2 network. This name is not available until the instance enters the running state.

", - "locationName":"privateDnsName" - }, - "PublicDnsName":{ - "shape":"String", - "documentation":"

The public DNS name assigned to the instance. This name is not available until the instance enters the running state.

", - "locationName":"dnsName" - }, - "StateTransitionReason":{ - "shape":"String", - "documentation":"

The reason for the most recent state transition. This might be an empty string.

", - "locationName":"reason" - }, - "KeyName":{ - "shape":"String", - "documentation":"

The name of the key pair, if this instance was launched with an associated key pair.

", - "locationName":"keyName" - }, - "AmiLaunchIndex":{ - "shape":"Integer", - "documentation":"

The AMI launch index, which can be used to find this instance in the launch group.

", - "locationName":"amiLaunchIndex" - }, - "ProductCodes":{ - "shape":"ProductCodeList", - "documentation":"

The product codes attached to this instance.

", - "locationName":"productCodes" - }, - "InstanceType":{ - "shape":"InstanceType", - "documentation":"

The instance type.

", - "locationName":"instanceType" - }, - "LaunchTime":{ - "shape":"DateTime", - "documentation":"

The time the instance was launched.

", - "locationName":"launchTime" - }, - "Placement":{ - "shape":"Placement", - "documentation":"

The location where the instance launched.

", - "locationName":"placement" - }, - "KernelId":{ - "shape":"String", - "documentation":"

The kernel associated with this instance.

", - "locationName":"kernelId" - }, - "RamdiskId":{ - "shape":"String", - "documentation":"

The RAM disk associated with this instance.

", - "locationName":"ramdiskId" - }, - "Platform":{ - "shape":"PlatformValues", - "documentation":"

The value is Windows for Windows instances; otherwise blank.

", - "locationName":"platform" - }, - "Monitoring":{ - "shape":"Monitoring", - "documentation":"

The monitoring information for the instance.

", - "locationName":"monitoring" - }, - "SubnetId":{ - "shape":"String", - "documentation":"

The ID of the subnet in which the instance is running.

", - "locationName":"subnetId" - }, - "VpcId":{ - "shape":"String", - "documentation":"

The ID of the VPC in which the instance is running.

", - "locationName":"vpcId" - }, - "PrivateIpAddress":{ - "shape":"String", - "documentation":"

The private IP address assigned to the instance.

", - "locationName":"privateIpAddress" - }, - "PublicIpAddress":{ - "shape":"String", - "documentation":"

The public IP address assigned to the instance.

", - "locationName":"ipAddress" - }, - "StateReason":{ - "shape":"StateReason", - "documentation":"

The reason for the most recent state transition.

", - "locationName":"stateReason" - }, - "Architecture":{ - "shape":"ArchitectureValues", - "documentation":"

The architecture of the image.

", - "locationName":"architecture" - }, - "RootDeviceType":{ - "shape":"DeviceType", - "documentation":"

The root device type used by the AMI. The AMI can use an Amazon EBS volume or an instance store volume.

", - "locationName":"rootDeviceType" - }, - "RootDeviceName":{ - "shape":"String", - "documentation":"

The root device name (for example, /dev/sda1).

", - "locationName":"rootDeviceName" - }, - "BlockDeviceMappings":{ - "shape":"InstanceBlockDeviceMappingList", - "documentation":"

Any block device mapping entries for the instance.

", - "locationName":"blockDeviceMapping" - }, - "VirtualizationType":{ - "shape":"VirtualizationType", - "documentation":"

The virtualization type of the instance.

", - "locationName":"virtualizationType" - }, - "InstanceLifecycle":{ - "shape":"InstanceLifecycleType", - "documentation":"

Indicates whether this is a Spot Instance.

", - "locationName":"instanceLifecycle" - }, - "SpotInstanceRequestId":{ - "shape":"String", - "documentation":"

The ID of the Spot Instance request.

", - "locationName":"spotInstanceRequestId" - }, - "ClientToken":{ - "shape":"String", - "documentation":"

The idempotency token you provided when you launched the instance.

", - "locationName":"clientToken" - }, - "Tags":{ - "shape":"TagList", - "documentation":"

Any tags assigned to the instance.

", - "locationName":"tagSet" - }, - "SecurityGroups":{ - "shape":"GroupIdentifierList", - "documentation":"

One or more security groups for the instance.

", - "locationName":"groupSet" - }, - "SourceDestCheck":{ - "shape":"Boolean", - "documentation":"

Specifies whether to enable an instance launched in a VPC to perform NAT. This controls whether source/destination checking is enabled on the instance. A value of true means checking is enabled, and false means checking is disabled. The value must be false for the instance to perform NAT. For more information, see NAT Instances in the Amazon Virtual Private Cloud User Guide.

", - "locationName":"sourceDestCheck" - }, - "Hypervisor":{ - "shape":"HypervisorType", - "documentation":"

The hypervisor type of the instance.

", - "locationName":"hypervisor" - }, - "NetworkInterfaces":{ - "shape":"InstanceNetworkInterfaceList", - "documentation":"

[EC2-VPC] One or more network interfaces for the instance.

", - "locationName":"networkInterfaceSet" - }, - "IamInstanceProfile":{ - "shape":"IamInstanceProfile", - "documentation":"

The IAM instance profile associated with the instance.

", - "locationName":"iamInstanceProfile" - }, - "EbsOptimized":{ - "shape":"Boolean", - "documentation":"

Indicates whether the instance is optimized for EBS I/O. This optimization provides dedicated throughput to Amazon EBS and an optimized configuration stack to provide optimal I/O performance. This optimization isn't available with all instance types. Additional usage charges apply when using an EBS Optimized instance.

", - "locationName":"ebsOptimized" - }, - "SriovNetSupport":{ - "shape":"String", - "documentation":"

Specifies whether enhanced networking is enabled.

", - "locationName":"sriovNetSupport" - } - }, - "documentation":"

Describes an instance.

" - }, - "InstanceAttribute":{ - "type":"structure", - "members":{ - "InstanceId":{ - "shape":"String", - "documentation":"

The ID of the instance.

", - "locationName":"instanceId" - }, - "InstanceType":{ - "shape":"AttributeValue", - "documentation":"

The instance type.

", - "locationName":"instanceType" - }, - "KernelId":{ - "shape":"AttributeValue", - "documentation":"

The kernel ID.

", - "locationName":"kernel" - }, - "RamdiskId":{ - "shape":"AttributeValue", - "documentation":"

The RAM disk ID.

", - "locationName":"ramdisk" - }, - "UserData":{ - "shape":"AttributeValue", - "documentation":"

The Base64-encoded MIME user data.

", - "locationName":"userData" - }, - "DisableApiTermination":{ - "shape":"AttributeBooleanValue", - "documentation":"

If the value is true, you can't terminate the instance through the Amazon EC2 console, CLI, or API; otherwise, you can.

", - "locationName":"disableApiTermination" - }, - "InstanceInitiatedShutdownBehavior":{ - "shape":"AttributeValue", - "documentation":"

Indicates whether an instance stops or terminates when you initiate shutdown from the instance (using the operating system command for system shutdown).

", - "locationName":"instanceInitiatedShutdownBehavior" - }, - "RootDeviceName":{ - "shape":"AttributeValue", - "documentation":"

The name of the root device (for example, /dev/sda1).

", - "locationName":"rootDeviceName" - }, - "BlockDeviceMappings":{ - "shape":"InstanceBlockDeviceMappingList", - "documentation":"

The block device mapping of the instance.

", - "locationName":"blockDeviceMapping" - }, - "ProductCodes":{ - "shape":"ProductCodeList", - "documentation":"

A list of product codes.

", - "locationName":"productCodes" - }, - "EbsOptimized":{ - "shape":"AttributeBooleanValue", - "documentation":"

Indicates whether the instance is optimized for EBS I/O.

", - "locationName":"ebsOptimized" - }, - "SriovNetSupport":{ - "shape":"AttributeValue", - "locationName":"sriovNetSupport" - }, - "SourceDestCheck":{ - "shape":"AttributeBooleanValue", - "documentation":"

Indicates whether source/destination checking is enabled. A value of true means checking is enabled, and false means checking is disabled. This value must be false for a NAT instance to perform NAT.

", - "locationName":"sourceDestCheck" - }, - "Groups":{ - "shape":"GroupIdentifierList", - "documentation":"

The security groups associated with the instance.

", - "locationName":"groupSet" - } - }, - "documentation":"

Describes an instance attribute.

" - }, - "InstanceAttributeName":{ - "type":"string", - "enum":[ - "instanceType", - "kernel", - "ramdisk", - "userData", - "disableApiTermination", - "instanceInitiatedShutdownBehavior", - "rootDeviceName", - "blockDeviceMapping", - "productCodes", - "sourceDestCheck", - "groupSet", - "ebsOptimized", - "sriovNetSupport" - ] - }, - "InstanceBlockDeviceMapping":{ - "type":"structure", - "members":{ - "DeviceName":{ - "shape":"String", - "documentation":"

The device name exposed to the instance (for example, /dev/sdh).

", - "locationName":"deviceName" - }, - "Ebs":{ - "shape":"EbsInstanceBlockDevice", - "documentation":"

Parameters used to automatically set up Amazon EBS volumes when the instance is launched.

", - "locationName":"ebs" - } - }, - "documentation":"

Describes a block device mapping.

" - }, - "InstanceBlockDeviceMappingList":{ - "type":"list", - "member":{ - "shape":"InstanceBlockDeviceMapping", - "locationName":"item" - } - }, - "InstanceBlockDeviceMappingSpecification":{ - "type":"structure", - "members":{ - "DeviceName":{ - "shape":"String", - "documentation":"

The device name exposed to the instance (for example, /dev/sdh).

", - "locationName":"deviceName" - }, - "Ebs":{ - "shape":"EbsInstanceBlockDeviceSpecification", - "documentation":"

Parameters used to automatically set up Amazon EBS volumes when the instance is launched.

", - "locationName":"ebs" - }, - "VirtualName":{ - "shape":"String", - "documentation":"

The virtual device name.

", - "locationName":"virtualName" - }, - "NoDevice":{ - "shape":"String", - "documentation":"

suppress the specified device included in the block device mapping.

", - "locationName":"noDevice" - } - }, - "documentation":"

Describes a block device mapping entry.

" - }, - "InstanceBlockDeviceMappingSpecificationList":{ - "type":"list", - "member":{ - "shape":"InstanceBlockDeviceMappingSpecification", - "locationName":"item" - } - }, - "InstanceCount":{ - "type":"structure", - "members":{ - "State":{ - "shape":"ListingState", - "documentation":"

The states of the listed Reserved Instances.

", - "locationName":"state" - }, - "InstanceCount":{ - "shape":"Integer", - "documentation":"

he number of listed Reserved Instances in the state specified by the state.

", - "locationName":"instanceCount" - } - }, - "documentation":"

Describes a Reserved Instance listing state.

" - }, - "InstanceCountList":{ - "type":"list", - "member":{ - "shape":"InstanceCount", - "locationName":"item" - } - }, - "InstanceExportDetails":{ - "type":"structure", - "members":{ - "InstanceId":{ - "shape":"String", - "documentation":"

The ID of the resource being exported.

", - "locationName":"instanceId" - }, - "TargetEnvironment":{ - "shape":"ExportEnvironment", - "documentation":"

The target virtualization environment.

", - "locationName":"targetEnvironment" - } - }, - "documentation":"

Describes an instance export task.

" - }, - "InstanceIdStringList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"InstanceId" - } - }, - "InstanceLifecycleType":{ - "type":"string", - "enum":["spot"] - }, - "InstanceList":{ - "type":"list", - "member":{ - "shape":"Instance", - "locationName":"item" - } - }, - "InstanceMonitoring":{ - "type":"structure", - "members":{ - "InstanceId":{ - "shape":"String", - "documentation":"

The ID of the instance.

", - "locationName":"instanceId" - }, - "Monitoring":{ - "shape":"Monitoring", - "documentation":"

The monitoring information.

", - "locationName":"monitoring" - } - }, - "documentation":"

Describes the monitoring information of the instance.

" - }, - "InstanceMonitoringList":{ - "type":"list", - "member":{ - "shape":"InstanceMonitoring", - "locationName":"item" - } - }, - "InstanceNetworkInterface":{ - "type":"structure", - "members":{ - "NetworkInterfaceId":{ - "shape":"String", - "documentation":"

The ID of the network interface.

", - "locationName":"networkInterfaceId" - }, - "SubnetId":{ - "shape":"String", - "documentation":"

The ID of the subnet.

", - "locationName":"subnetId" - }, - "VpcId":{ - "shape":"String", - "documentation":"

The ID of the VPC.

", - "locationName":"vpcId" - }, - "Description":{ - "shape":"String", - "documentation":"

The description.

", - "locationName":"description" - }, - "OwnerId":{ - "shape":"String", - "documentation":"

The ID of the AWS account that created the network interface.

", - "locationName":"ownerId" - }, - "Status":{ - "shape":"NetworkInterfaceStatus", - "documentation":"

The status of the network interface.

", - "locationName":"status" - }, - "MacAddress":{ - "shape":"String", - "documentation":"

The MAC address.

", - "locationName":"macAddress" - }, - "PrivateIpAddress":{ - "shape":"String", - "documentation":"

The IP address of the network interface within the subnet.

", - "locationName":"privateIpAddress" - }, - "PrivateDnsName":{ - "shape":"String", - "documentation":"

The private DNS name.

", - "locationName":"privateDnsName" - }, - "SourceDestCheck":{ - "shape":"Boolean", - "documentation":"

Indicates whether to validate network traffic to or from this network interface.

", - "locationName":"sourceDestCheck" - }, - "Groups":{ - "shape":"GroupIdentifierList", - "documentation":"

One or more security groups.

", - "locationName":"groupSet" - }, - "Attachment":{ - "shape":"InstanceNetworkInterfaceAttachment", - "documentation":"

The network interface attachment.

", - "locationName":"attachment" - }, - "Association":{ - "shape":"InstanceNetworkInterfaceAssociation", - "documentation":"

The association information for an Elastic IP associated with the network interface.

", - "locationName":"association" - }, - "PrivateIpAddresses":{ - "shape":"InstancePrivateIpAddressList", - "documentation":"

The private IP addresses associated with the network interface.

", - "locationName":"privateIpAddressesSet" - } - }, - "documentation":"

Describes a network interface.

" - }, - "InstanceNetworkInterfaceAssociation":{ - "type":"structure", - "members":{ - "PublicIp":{ - "shape":"String", - "documentation":"

The public IP address or Elastic IP address bound to the network interface.

", - "locationName":"publicIp" - }, - "PublicDnsName":{ - "shape":"String", - "documentation":"

The public DNS name.

", - "locationName":"publicDnsName" - }, - "IpOwnerId":{ - "shape":"String", - "documentation":"

The ID of the owner of the Elastic IP address.

", - "locationName":"ipOwnerId" - } - }, - "documentation":"

Describes association information for an Elastic IP address.

" - }, - "InstanceNetworkInterfaceAttachment":{ - "type":"structure", - "members":{ - "AttachmentId":{ - "shape":"String", - "documentation":"

The ID of the network interface attachment.

", - "locationName":"attachmentId" - }, - "DeviceIndex":{ - "shape":"Integer", - "documentation":"

The index of the device on the instance for the network interface attachment.

", - "locationName":"deviceIndex" - }, - "Status":{ - "shape":"AttachmentStatus", - "documentation":"

The attachment state.

", - "locationName":"status" - }, - "AttachTime":{ - "shape":"DateTime", - "documentation":"

The time stamp when the attachment initiated.

", - "locationName":"attachTime" - }, - "DeleteOnTermination":{ - "shape":"Boolean", - "documentation":"

Indicates whether the network interface is deleted when the instance is terminated.

", - "locationName":"deleteOnTermination" - } - }, - "documentation":"

Describes a network interface attachment.

" - }, - "InstanceNetworkInterfaceList":{ - "type":"list", - "member":{ - "shape":"InstanceNetworkInterface", - "locationName":"item" - } - }, - "InstanceNetworkInterfaceSpecification":{ - "type":"structure", - "members":{ - "NetworkInterfaceId":{ - "shape":"String", - "documentation":"

The ID of the network interface.

", - "locationName":"networkInterfaceId" - }, - "DeviceIndex":{ - "shape":"Integer", - "documentation":"

The index of the device on the instance for the network interface attachment. If you are specifying a network interface in a RunInstances request, you must provide the device index.

", - "locationName":"deviceIndex" - }, - "SubnetId":{ - "shape":"String", - "documentation":"

The ID of the subnet associated with the network string. Applies only if creating a network interface when launching an instance.

", - "locationName":"subnetId" - }, - "Description":{ - "shape":"String", - "documentation":"

The description of the network interface. Applies only if creating a network interface when launching an instance.

", - "locationName":"description" - }, - "PrivateIpAddress":{ - "shape":"String", - "documentation":"

The private IP address of the network interface. Applies only if creating a network interface when launching an instance.

", - "locationName":"privateIpAddress" - }, - "Groups":{ - "shape":"SecurityGroupIdStringList", - "documentation":"

The IDs of the security groups for the network interface. Applies only if creating a network interface when launching an instance.

", - "locationName":"SecurityGroupId" - }, - "DeleteOnTermination":{ - "shape":"Boolean", - "documentation":"

If set to true, the interface is deleted when the instance is terminated. You can specify true only if creating a new network interface when launching an instance.

", - "locationName":"deleteOnTermination" - }, - "PrivateIpAddresses":{ - "shape":"PrivateIpAddressSpecificationList", - "documentation":"

One or more private IP addresses to assign to the network interface. Only one private IP address can be designated as primary.

", - "locationName":"privateIpAddressesSet", - "queryName":"PrivateIpAddresses" - }, - "SecondaryPrivateIpAddressCount":{ - "shape":"Integer", - "documentation":"

The number of secondary private IP addresses. You can't specify this option and specify more than one private IP address using the private IP addresses option.

", - "locationName":"secondaryPrivateIpAddressCount" - }, - "AssociatePublicIpAddress":{ - "shape":"Boolean", - "documentation":"

Indicates whether to assign a public IP address to an instance you launch in a VPC. The public IP address can only be assigned to a network interface for eth0, and can only be assigned to a new network interface, not an existing one. You cannot specify more than one network interface in the request. If luanching into a default subnet, the default value is true.

", - "locationName":"associatePublicIpAddress" - } - }, - "documentation":"

Describes a network interface.

" - }, - "InstanceNetworkInterfaceSpecificationList":{ - "type":"list", - "member":{ - "shape":"InstanceNetworkInterfaceSpecification", - "locationName":"item" - } - }, - "InstancePrivateIpAddress":{ - "type":"structure", - "members":{ - "PrivateIpAddress":{ - "shape":"String", - "documentation":"

The private IP address of the network interface.

", - "locationName":"privateIpAddress" - }, - "PrivateDnsName":{ - "shape":"String", - "documentation":"

The private DNS name.

", - "locationName":"privateDnsName" - }, - "Primary":{ - "shape":"Boolean", - "documentation":"

Indicates whether this IP address is the primary private IP address of the network interface.

", - "locationName":"primary" - }, - "Association":{ - "shape":"InstanceNetworkInterfaceAssociation", - "documentation":"

The association information for an Elastic IP address for the network interface.

", - "locationName":"association" - } - }, - "documentation":"

Describes a private IP address.

" - }, - "InstancePrivateIpAddressList":{ - "type":"list", - "member":{ - "shape":"InstancePrivateIpAddress", - "locationName":"item" - } - }, - "InstanceState":{ - "type":"structure", - "members":{ - "Code":{ - "shape":"Integer", - "documentation":"

The low byte represents the state. The high byte is an opaque internal value and should be ignored.

", - "locationName":"code" - }, - "Name":{ - "shape":"InstanceStateName", - "documentation":"

The current state of the instance.

", - "locationName":"name" - } - }, - "documentation":"

Describes the current state of the instance.

" - }, - "InstanceStateChange":{ - "type":"structure", - "members":{ - "InstanceId":{ - "shape":"String", - "documentation":"

The ID of the instance.

", - "locationName":"instanceId" - }, - "CurrentState":{ - "shape":"InstanceState", - "documentation":"

The current state of the instance.

", - "locationName":"currentState" - }, - "PreviousState":{ - "shape":"InstanceState", - "documentation":"

The previous state of the instance.

", - "locationName":"previousState" - } - }, - "documentation":"

Describes an instance state change.

" - }, - "InstanceStateChangeList":{ - "type":"list", - "member":{ - "shape":"InstanceStateChange", - "locationName":"item" - } - }, - "InstanceStateName":{ - "type":"string", - "enum":[ - "pending", - "running", - "shutting-down", - "terminated", - "stopping", - "stopped" - ] - }, - "InstanceStatus":{ - "type":"structure", - "members":{ - "InstanceId":{ - "shape":"String", - "documentation":"

The ID of the instance.

", - "locationName":"instanceId" - }, - "AvailabilityZone":{ - "shape":"String", - "documentation":"

The Availability Zone of the instance.

", - "locationName":"availabilityZone" - }, - "Events":{ - "shape":"InstanceStatusEventList", - "documentation":"

Extra information regarding events associated with the instance.

", - "locationName":"eventsSet" - }, - "InstanceState":{ - "shape":"InstanceState", - "documentation":"

The intended state of the instance. DescribeInstanceStatus requires that an instance be in the running state.

", - "locationName":"instanceState" - }, - "SystemStatus":{ - "shape":"InstanceStatusSummary", - "documentation":"

Reports impaired functionality that stems from issues related to the systems that support an instance, such as hardware failures and network connectivity problems.

", - "locationName":"systemStatus" - }, - "InstanceStatus":{ - "shape":"InstanceStatusSummary", - "documentation":"

Reports impaired functionality that stems from issues internal to the instance, such as impaired reachability.

", - "locationName":"instanceStatus" - } - }, - "documentation":"

Describes the status of an instance.

" - }, - "InstanceStatusDetails":{ - "type":"structure", - "members":{ - "Name":{ - "shape":"StatusName", - "documentation":"

The type of instance status.

", - "locationName":"name" - }, - "Status":{ - "shape":"StatusType", - "documentation":"

The status.

", - "locationName":"status" - }, - "ImpairedSince":{ - "shape":"DateTime", - "documentation":"

The time when a status check failed. For an instance that was launched and impaired, this is the time when the instance was launched.

", - "locationName":"impairedSince" - } - }, - "documentation":"

Describes the instance status.

" - }, - "InstanceStatusDetailsList":{ - "type":"list", - "member":{ - "shape":"InstanceStatusDetails", - "locationName":"item" - } - }, - "InstanceStatusEvent":{ - "type":"structure", - "members":{ - "Code":{ - "shape":"EventCode", - "documentation":"

The associated code of the event.

", - "locationName":"code" - }, - "Description":{ - "shape":"String", - "documentation":"

A description of the event.

", - "locationName":"description" - }, - "NotBefore":{ - "shape":"DateTime", - "documentation":"

The earliest scheduled start time for the event.

", - "locationName":"notBefore" - }, - "NotAfter":{ - "shape":"DateTime", - "documentation":"

The latest scheduled end time for the event.

", - "locationName":"notAfter" - } - }, - "documentation":"

Describes an instance event.

" - }, - "InstanceStatusEventList":{ - "type":"list", - "member":{ - "shape":"InstanceStatusEvent", - "locationName":"item" - } - }, - "InstanceStatusList":{ - "type":"list", - "member":{ - "shape":"InstanceStatus", - "locationName":"item" - } - }, - "InstanceStatusSummary":{ - "type":"structure", - "members":{ - "Status":{ - "shape":"SummaryStatus", - "documentation":"

The status.

", - "locationName":"status" - }, - "Details":{ - "shape":"InstanceStatusDetailsList", - "documentation":"

The system instance health or application instance health.

", - "locationName":"details" - } - }, - "documentation":"

Describes the status of an instance.

" - }, - "InstanceType":{ - "type":"string", - "enum":[ - "t1.micro", - "m1.small", - "m1.medium", - "m1.large", - "m1.xlarge", - "m3.medium", - "m3.large", - "m3.xlarge", - "m3.2xlarge", - "t2.micro", - "t2.small", - "t2.medium", - "m2.xlarge", - "m2.2xlarge", - "m2.4xlarge", - "cr1.8xlarge", - "i2.xlarge", - "i2.2xlarge", - "i2.4xlarge", - "i2.8xlarge", - "hi1.4xlarge", - "hs1.8xlarge", - "c1.medium", - "c1.xlarge", - "c3.large", - "c3.xlarge", - "c3.2xlarge", - "c3.4xlarge", - "c3.8xlarge", - "c4.large", - "c4.xlarge", - "c4.2xlarge", - "c4.4xlarge", - "c4.8xlarge", - "cc1.4xlarge", - "cc2.8xlarge", - "g2.2xlarge", - "cg1.4xlarge", - "r3.large", - "r3.xlarge", - "r3.2xlarge", - "r3.4xlarge", - "r3.8xlarge" - ] - }, - "InstanceTypeList":{ - "type":"list", - "member":{"shape":"InstanceType"} - }, - "Integer":{"type":"integer"}, - "InternetGateway":{ - "type":"structure", - "members":{ - "InternetGatewayId":{ - "shape":"String", - "documentation":"

The ID of the Internet gateway.

", - "locationName":"internetGatewayId" - }, - "Attachments":{ - "shape":"InternetGatewayAttachmentList", - "documentation":"

Any VPCs attached to the Internet gateway.

", - "locationName":"attachmentSet" - }, - "Tags":{ - "shape":"TagList", - "documentation":"

Any tags assigned to the Internet gateway.

", - "locationName":"tagSet" - } - }, - "documentation":"

Describes an Internet gateway.

" - }, - "InternetGatewayAttachment":{ - "type":"structure", - "members":{ - "VpcId":{ - "shape":"String", - "documentation":"

The ID of the VPC.

", - "locationName":"vpcId" - }, - "State":{ - "shape":"AttachmentStatus", - "documentation":"

The current state of the attachment.

", - "locationName":"state" - } - }, - "documentation":"

Describes the attachment of a VPC to an Internet gateway.

" - }, - "InternetGatewayAttachmentList":{ - "type":"list", - "member":{ - "shape":"InternetGatewayAttachment", - "locationName":"item" - } - }, - "InternetGatewayList":{ - "type":"list", - "member":{ - "shape":"InternetGateway", - "locationName":"item" - } - }, - "IpPermission":{ - "type":"structure", - "members":{ - "IpProtocol":{ - "shape":"String", - "documentation":"

The protocol.

When you call DescribeSecurityGroups, the protocol value returned is the number. Exception: For TCP, UDP, and ICMP, the value returned is the name (for example, tcp, udp, or icmp). For a list of protocol numbers, see Protocol Numbers.

", - "locationName":"ipProtocol" - }, - "FromPort":{ - "shape":"Integer", - "documentation":"

The start of port range for the TCP and UDP protocols, or an ICMP type number. A value of -1 indicates all ICMP types.

", - "locationName":"fromPort" - }, - "ToPort":{ - "shape":"Integer", - "documentation":"

The end of port range for the TCP and UDP protocols, or an ICMP code. A value of -1 indicates all ICMP codes for the specified ICMP type.

", - "locationName":"toPort" - }, - "UserIdGroupPairs":{ - "shape":"UserIdGroupPairList", - "documentation":"

One or more security group and AWS account ID pairs.

", - "locationName":"groups" - }, - "IpRanges":{ - "shape":"IpRangeList", - "documentation":"

One or more IP ranges.

", - "locationName":"ipRanges" - } - }, - "documentation":"

Describes a security group rule.

" - }, - "IpPermissionList":{ - "type":"list", - "member":{ - "shape":"IpPermission", - "locationName":"item" - } - }, - "IpRange":{ - "type":"structure", - "members":{ - "CidrIp":{ - "shape":"String", - "documentation":"

The CIDR range. You can either specify a CIDR range or a source security group, not both.

", - "locationName":"cidrIp" - } - }, - "documentation":"

Describes an IP range.

" - }, - "IpRangeList":{ - "type":"list", - "member":{ - "shape":"IpRange", - "locationName":"item" - } - }, - "KeyNameStringList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"KeyName" - } - }, - "KeyPair":{ - "type":"structure", - "members":{ - "KeyName":{ - "shape":"String", - "documentation":"

The name of the key pair.

", - "locationName":"keyName" - }, - "KeyFingerprint":{ - "shape":"String", - "documentation":"

The SHA-1 digest of the DER encoded private key.

", - "locationName":"keyFingerprint" - }, - "KeyMaterial":{ - "shape":"String", - "documentation":"

An unencrypted PEM encoded RSA private key.

", - "locationName":"keyMaterial" - } - }, - "documentation":"

Describes a key pair.

" - }, - "KeyPairInfo":{ - "type":"structure", - "members":{ - "KeyName":{ - "shape":"String", - "documentation":"

The name of the key pair.

", - "locationName":"keyName" - }, - "KeyFingerprint":{ - "shape":"String", - "documentation":"

If you used CreateKeyPair to create the key pair, this is the SHA-1 digest of the DER encoded private key. If you used ImportKeyPair to provide AWS the public key, this is the MD5 public key fingerprint as specified in section 4 of RFC4716.

", - "locationName":"keyFingerprint" - } - }, - "documentation":"

Describes a key pair.

" - }, - "KeyPairList":{ - "type":"list", - "member":{ - "shape":"KeyPairInfo", - "locationName":"item" - } - }, - "LaunchPermission":{ - "type":"structure", - "members":{ - "UserId":{ - "shape":"String", - "documentation":"

The AWS account ID.

", - "locationName":"userId" - }, - "Group":{ - "shape":"PermissionGroup", - "documentation":"

The name of the group.

", - "locationName":"group" - } - }, - "documentation":"

Describes a launch permission.

" - }, - "LaunchPermissionList":{ - "type":"list", - "member":{ - "shape":"LaunchPermission", - "locationName":"item" - } - }, - "LaunchPermissionModifications":{ - "type":"structure", - "members":{ - "Add":{ - "shape":"LaunchPermissionList", - "documentation":"

The AWS account ID to add to the list of launch permissions for the AMI.

" - }, - "Remove":{ - "shape":"LaunchPermissionList", - "documentation":"

The AWS account ID to remove from the list of launch permissions for the AMI.

" - } - }, - "documentation":"

Describes a launch permission modification.

" - }, - "LaunchSpecification":{ - "type":"structure", - "members":{ - "ImageId":{ - "shape":"String", - "documentation":"

The ID of the AMI.

", - "locationName":"imageId" - }, - "KeyName":{ - "shape":"String", - "documentation":"

The name of the key pair.

", - "locationName":"keyName" - }, - "SecurityGroups":{ - "shape":"GroupIdentifierList", - "documentation":"

One or more security groups. To request an instance in a nondefault VPC, you must specify the ID of the security group. To request an instance in EC2-Classic or a default VPC, you can specify the name or the ID of the security group.

", - "locationName":"groupSet" - }, - "UserData":{ - "shape":"String", - "documentation":"

The Base64-encoded MIME user data to make available to the instances.

", - "locationName":"userData" - }, - "AddressingType":{ - "shape":"String", - "documentation":"

Deprecated.

", - "locationName":"addressingType" - }, - "InstanceType":{ - "shape":"InstanceType", - "documentation":"

The instance type.

Default: m1.small

", - "locationName":"instanceType" - }, - "Placement":{ - "shape":"SpotPlacement", - "documentation":"

The placement information for the instance.

", - "locationName":"placement" - }, - "KernelId":{ - "shape":"String", - "documentation":"

The ID of the kernel.

", - "locationName":"kernelId" - }, - "RamdiskId":{ - "shape":"String", - "documentation":"

The ID of the RAM disk.

", - "locationName":"ramdiskId" - }, - "BlockDeviceMappings":{ - "shape":"BlockDeviceMappingList", - "documentation":"

One or more block device mapping entries.

", - "locationName":"blockDeviceMapping" - }, - "SubnetId":{ - "shape":"String", - "documentation":"

The ID of the subnet in which to launch the instance.

", - "locationName":"subnetId" - }, - "NetworkInterfaces":{ - "shape":"InstanceNetworkInterfaceSpecificationList", - "documentation":"

One or more network interfaces.

", - "locationName":"networkInterfaceSet" - }, - "IamInstanceProfile":{ - "shape":"IamInstanceProfileSpecification", - "documentation":"

The IAM instance profile.

", - "locationName":"iamInstanceProfile" - }, - "EbsOptimized":{ - "shape":"Boolean", - "documentation":"

Indicates whether the instance 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. This optimization isn't available with all instance types. Additional usage charges apply when using an EBS Optimized instance.

Default: false

", - "locationName":"ebsOptimized" - }, - "Monitoring":{ - "shape":"RunInstancesMonitoringEnabled", - "locationName":"monitoring" - } - }, - "documentation":"

Describes the launch specification for an instance.

" - }, - "ListingState":{ - "type":"string", - "enum":[ - "available", - "sold", - "cancelled", - "pending" - ] - }, - "ListingStatus":{ - "type":"string", - "enum":[ - "active", - "pending", - "cancelled", - "closed" - ] - }, - "Long":{"type":"long"}, - "ModifyImageAttributeRequest":{ - "type":"structure", - "required":["ImageId"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "ImageId":{ - "shape":"String", - "documentation":"

The ID of the AMI.

" - }, - "Attribute":{ - "shape":"String", - "documentation":"

The name of the attribute to modify.

" - }, - "OperationType":{ - "shape":"String", - "documentation":"

The operation type.

" - }, - "UserIds":{ - "shape":"UserIdStringList", - "documentation":"

One or more AWS account IDs. This is only valid when modifying the launchPermission attribute.

", - "locationName":"UserId" - }, - "UserGroups":{ - "shape":"UserGroupStringList", - "documentation":"

One or more user groups. This is only valid when modifying the launchPermission attribute.

", - "locationName":"UserGroup" - }, - "ProductCodes":{ - "shape":"ProductCodeStringList", - "documentation":"

One or more product codes. After you add a product code to an AMI, it can't be removed. This is only valid when modifying the productCodes attribute.

", - "locationName":"ProductCode" - }, - "Value":{ - "shape":"String", - "documentation":"

The value of the attribute being modified. This is only valid when modifying the description attribute.

" - }, - "LaunchPermission":{ - "shape":"LaunchPermissionModifications", - "documentation":"

" - }, - "Description":{ - "shape":"AttributeValue", - "documentation":"

A description for the AMI.

" - } - } - }, - "ModifyInstanceAttributeRequest":{ - "type":"structure", - "required":["InstanceId"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "InstanceId":{ - "shape":"String", - "documentation":"

The ID of the instance.

", - "locationName":"instanceId" - }, - "Attribute":{ - "shape":"InstanceAttributeName", - "documentation":"

The name of the attribute.

", - "locationName":"attribute" - }, - "Value":{ - "shape":"String", - "documentation":"

A new value for the attribute. Use only with the kernel, ramdisk, userData, disableApiTermination, or intanceInitiateShutdownBehavior attribute.

", - "locationName":"value" - }, - "BlockDeviceMappings":{ - "shape":"InstanceBlockDeviceMappingSpecificationList", - "documentation":"

Modifies the DeleteOnTermination attribute for volumes that are currently attached. The volume must be owned by the caller. If no value is specified for DeleteOnTermination, the default is true and the volume is deleted when the instance is terminated.

To add instance store volumes to an Amazon EBS-backed instance, you must add them when you launch the instance. For more information, see Updating the Block Device Mapping when Launching an Instance in the Amazon Elastic Compute Cloud User Guide for Linux.

", - "locationName":"blockDeviceMapping" - }, - "SourceDestCheck":{ - "shape":"AttributeBooleanValue", - "documentation":"

Specifies whether source/destination checking is enabled. A value of true means that checking is enabled, and false means checking is disabled. This value must be false for a NAT instance to perform NAT.

" - }, - "DisableApiTermination":{ - "shape":"AttributeBooleanValue", - "documentation":"

If the value is true, you can't terminate the instance using the Amazon EC2 console, CLI, or API; otherwise, you can.

", - "locationName":"disableApiTermination" - }, - "InstanceType":{ - "shape":"AttributeValue", - "documentation":"

Changes the instance type to the specified value. For more information, see Instance Types. If the instance type is not valid, the error returned is InvalidInstanceAttributeValue.

", - "locationName":"instanceType" - }, - "Kernel":{ - "shape":"AttributeValue", - "documentation":"

Changes the instance's kernel to the specified value. We recommend that you use PV-GRUB instead of kernels and RAM disks. For more information, see PV-GRUB.

", - "locationName":"kernel" - }, - "Ramdisk":{ - "shape":"AttributeValue", - "documentation":"

Changes the instance's RAM disk to the specified value. We recommend that you use PV-GRUB instead of kernels and RAM disks. For more information, see PV-GRUB.

", - "locationName":"ramdisk" - }, - "UserData":{ - "shape":"BlobAttributeValue", - "documentation":"

Changes the instance's user data to the specified value.

", - "locationName":"userData" - }, - "InstanceInitiatedShutdownBehavior":{ - "shape":"AttributeValue", - "documentation":"

Specifies whether an instance stops or terminates when you initiate shutdown from the instance (using the operating system command for system shutdown).

", - "locationName":"instanceInitiatedShutdownBehavior" - }, - "Groups":{ - "shape":"GroupIdStringList", - "documentation":"

[EC2-VPC] Changes the security groups of the instance. You must specify at least one security group, even if it's just the default security group for the VPC. You must specify the security group ID, not the security group name.

For example, if you want the instance to be in sg-1a1a1a1a and sg-9b9b9b9b, specify GroupId.1=sg-1a1a1a1a and GroupId.2=sg-9b9b9b9b.

", - "locationName":"GroupId" - }, - "EbsOptimized":{ - "shape":"AttributeBooleanValue", - "documentation":"

Specifies whether the instance 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. This optimization isn't available with all instance types. Additional usage charges apply when using an EBS Optimized instance.

", - "locationName":"ebsOptimized" - }, - "SriovNetSupport":{ - "shape":"AttributeValue", - "documentation":"

Set to simple to enable enhanced networking for the instance.

There is no way to disable enhanced networking at this time.

This option is supported only for HVM instances. Specifying this option with a PV instance can make it unreachable.

", - "locationName":"sriovNetSupport" - } - } - }, - "ModifyNetworkInterfaceAttributeRequest":{ - "type":"structure", - "required":["NetworkInterfaceId"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "NetworkInterfaceId":{ - "shape":"String", - "documentation":"

The ID of the network interface.

", - "locationName":"networkInterfaceId" - }, - "Description":{ - "shape":"AttributeValue", - "documentation":"

A description for the network interface.

", - "locationName":"description" - }, - "SourceDestCheck":{ - "shape":"AttributeBooleanValue", - "documentation":"

Indicates whether source/destination checking is enabled. A value of true means checking is enabled, and false means checking is disabled. This value must be false for a NAT instance to perform NAT. For more information, see NAT Instances in the Amazon Virtual Private Cloud User Guide.

", - "locationName":"sourceDestCheck" - }, - "Groups":{ - "shape":"SecurityGroupIdStringList", - "documentation":"

Changes the security groups for the network interface. The new set of groups you specify replaces the current set. You must specify at least one group, even if it's just the default security group in the VPC. You must specify the ID of the security group, not the name.

", - "locationName":"SecurityGroupId" - }, - "Attachment":{ - "shape":"NetworkInterfaceAttachmentChanges", - "documentation":"

Information about the interface attachment. If modifying the 'delete on termination' attribute, you must specify the ID of the interface attachment.

", - "locationName":"attachment" - } - } - }, - "ModifyReservedInstancesRequest":{ - "type":"structure", - "required":[ - "ReservedInstancesIds", - "TargetConfigurations" - ], - "members":{ - "ClientToken":{ - "shape":"String", - "documentation":"

A unique, case-sensitive token you provide to ensure idempotency of your modification request.

", - "locationName":"clientToken" - }, - "ReservedInstancesIds":{ - "shape":"ReservedInstancesIdStringList", - "documentation":"

The IDs of the Reserved Instances to modify.

", - "locationName":"ReservedInstancesId" - }, - "TargetConfigurations":{ - "shape":"ReservedInstancesConfigurationList", - "documentation":"

The configuration settings for the Reserved Instances to modify.

", - "locationName":"ReservedInstancesConfigurationSetItemType" - } - } - }, - "ModifyReservedInstancesResult":{ - "type":"structure", - "members":{ - "ReservedInstancesModificationId":{ - "shape":"String", - "documentation":"

The ID for the modification.

", - "locationName":"reservedInstancesModificationId" - } - } - }, - "ModifySnapshotAttributeRequest":{ - "type":"structure", - "required":["SnapshotId"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "SnapshotId":{ - "shape":"String", - "documentation":"

The ID of the snapshot.

" - }, - "Attribute":{ - "shape":"SnapshotAttributeName", - "documentation":"

The snapshot attribute to modify.

" - }, - "OperationType":{ - "shape":"String", - "documentation":"

The type of operation to perform to the attribute.

" - }, - "UserIds":{ - "shape":"UserIdStringList", - "documentation":"

The account ID to modify for the snapshot.

", - "locationName":"UserId" - }, - "GroupNames":{ - "shape":"GroupNameStringList", - "documentation":"

The group to modify for the snapshot.

", - "locationName":"UserGroup" - }, - "CreateVolumePermission":{ - "shape":"CreateVolumePermissionModifications", - "documentation":"

A JSON representation of the snapshot attribute modification.

" - } - } - }, - "ModifySubnetAttributeRequest":{ - "type":"structure", - "required":["SubnetId"], - "members":{ - "SubnetId":{ - "shape":"String", - "documentation":"

The ID of the subnet.

", - "locationName":"subnetId" - }, - "MapPublicIpOnLaunch":{"shape":"AttributeBooleanValue"} - } - }, - "ModifyVolumeAttributeRequest":{ - "type":"structure", - "required":["VolumeId"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "VolumeId":{ - "shape":"String", - "documentation":"

The ID of the volume.

" - }, - "AutoEnableIO":{ - "shape":"AttributeBooleanValue", - "documentation":"

Indicates whether the volume should be auto-enabled for I/O operations.

" - } - } - }, - "ModifyVpcAttributeRequest":{ - "type":"structure", - "required":["VpcId"], - "members":{ - "VpcId":{ - "shape":"String", - "documentation":"

The ID of the VPC.

", - "locationName":"vpcId" - }, - "EnableDnsSupport":{ - "shape":"AttributeBooleanValue", - "documentation":"

Indicates whether the DNS resolution is supported for the VPC. If enabled, queries to the Amazon provided DNS server at the 169.254.169.253 IP address, or the reserved IP address at the base of the VPC network range \"plus two\" will succeed. If disabled, the Amazon provided DNS service in the VPC that resolves public DNS hostnames to IP addresses is not enabled.

" - }, - "EnableDnsHostnames":{ - "shape":"AttributeBooleanValue", - "documentation":"

Indicates whether the instances launched in the VPC get DNS hostnames. If enabled, instances in the VPC get DNS hostnames; otherwise, they do not.

You can only enable DNS hostnames if you also enable DNS support.

" - } - } - }, - "MonitorInstancesRequest":{ - "type":"structure", - "required":["InstanceIds"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "InstanceIds":{ - "shape":"InstanceIdStringList", - "documentation":"

One or more instance IDs.

", - "locationName":"InstanceId" - } - } - }, - "MonitorInstancesResult":{ - "type":"structure", - "members":{ - "InstanceMonitorings":{ - "shape":"InstanceMonitoringList", - "documentation":"

Monitoring information for one or more instances.

", - "locationName":"instancesSet" - } - } - }, - "Monitoring":{ - "type":"structure", - "members":{ - "State":{ - "shape":"MonitoringState", - "documentation":"

Indicates whether monitoring is enabled for the instance.

", - "locationName":"state" - } - }, - "documentation":"

Describes the monitoring for the instance.

" - }, - "MonitoringState":{ - "type":"string", - "enum":[ - "disabled", - "enabled", - "pending" - ] - }, - "NetworkAcl":{ - "type":"structure", - "members":{ - "NetworkAclId":{ - "shape":"String", - "documentation":"

The ID of the network ACL.

", - "locationName":"networkAclId" - }, - "VpcId":{ - "shape":"String", - "documentation":"

The ID of the VPC for the network ACL.

", - "locationName":"vpcId" - }, - "IsDefault":{ - "shape":"Boolean", - "documentation":"

Indicates whether this is the default network ACL for the VPC.

", - "locationName":"default" - }, - "Entries":{ - "shape":"NetworkAclEntryList", - "documentation":"

One or more entries (rules) in the network ACL.

", - "locationName":"entrySet" - }, - "Associations":{ - "shape":"NetworkAclAssociationList", - "documentation":"

Any associations between the network ACL and one or more subnets

", - "locationName":"associationSet" - }, - "Tags":{ - "shape":"TagList", - "documentation":"

Any tags assigned to the network ACL.

", - "locationName":"tagSet" - } - }, - "documentation":"

Describes a network ACL.

" - }, - "NetworkAclAssociation":{ - "type":"structure", - "members":{ - "NetworkAclAssociationId":{ - "shape":"String", - "documentation":"

The ID of the association between a network ACL and a subnet.

", - "locationName":"networkAclAssociationId" - }, - "NetworkAclId":{ - "shape":"String", - "documentation":"

The ID of the network ACL.

", - "locationName":"networkAclId" - }, - "SubnetId":{ - "shape":"String", - "documentation":"

The ID of the subnet.

", - "locationName":"subnetId" - } - }, - "documentation":"

Describes an association between a network ACL and a subnet.

" - }, - "NetworkAclAssociationList":{ - "type":"list", - "member":{ - "shape":"NetworkAclAssociation", - "locationName":"item" - } - }, - "NetworkAclEntry":{ - "type":"structure", - "members":{ - "RuleNumber":{ - "shape":"Integer", - "documentation":"

The rule number for the entry. ACL entries are processed in ascending order by rule number.

", - "locationName":"ruleNumber" - }, - "Protocol":{ - "shape":"String", - "documentation":"

The protocol. A value of -1 means all protocols.

", - "locationName":"protocol" - }, - "RuleAction":{ - "shape":"RuleAction", - "documentation":"

Indicates whether to allow or deny the traffic that matches the rule.

", - "locationName":"ruleAction" - }, - "Egress":{ - "shape":"Boolean", - "documentation":"

Indicates whether the rule is an egress rule (applied to traffic leaving the subnet).

", - "locationName":"egress" - }, - "CidrBlock":{ - "shape":"String", - "documentation":"

The network range to allow or deny, in CIDR notation.

", - "locationName":"cidrBlock" - }, - "IcmpTypeCode":{ - "shape":"IcmpTypeCode", - "documentation":"

ICMP protocol: The ICMP type and code.

", - "locationName":"icmpTypeCode" - }, - "PortRange":{ - "shape":"PortRange", - "documentation":"

TCP or UDP protocols: The range of ports the rule applies to.

", - "locationName":"portRange" - } - }, - "documentation":"

Describes an entry in a network ACL.

" - }, - "NetworkAclEntryList":{ - "type":"list", - "member":{ - "shape":"NetworkAclEntry", - "locationName":"item" - } - }, - "NetworkAclList":{ - "type":"list", - "member":{ - "shape":"NetworkAcl", - "locationName":"item" - } - }, - "NetworkInterface":{ - "type":"structure", - "members":{ - "NetworkInterfaceId":{ - "shape":"String", - "documentation":"

The ID of the network interface.

", - "locationName":"networkInterfaceId" - }, - "SubnetId":{ - "shape":"String", - "documentation":"

The ID of the subnet.

", - "locationName":"subnetId" - }, - "VpcId":{ - "shape":"String", - "documentation":"

The ID of the VPC.

", - "locationName":"vpcId" - }, - "AvailabilityZone":{ - "shape":"String", - "documentation":"

The Availability Zone.

", - "locationName":"availabilityZone" - }, - "Description":{ - "shape":"String", - "documentation":"

A description.

", - "locationName":"description" - }, - "OwnerId":{ - "shape":"String", - "documentation":"

The AWS account ID of the owner of the network interface.

", - "locationName":"ownerId" - }, - "RequesterId":{ - "shape":"String", - "documentation":"

The ID of the entity that launched the instance on your behalf (for example, AWS Management Console or Auto Scaling).

", - "locationName":"requesterId" - }, - "RequesterManaged":{ - "shape":"Boolean", - "documentation":"

Indicates whether the network interface is being managed by AWS.

", - "locationName":"requesterManaged" - }, - "Status":{ - "shape":"NetworkInterfaceStatus", - "documentation":"

The status of the network interface.

", - "locationName":"status" - }, - "MacAddress":{ - "shape":"String", - "documentation":"

The MAC address.

", - "locationName":"macAddress" - }, - "PrivateIpAddress":{ - "shape":"String", - "documentation":"

The IP address of the network interface within the subnet.

", - "locationName":"privateIpAddress" - }, - "PrivateDnsName":{ - "shape":"String", - "documentation":"

The private DNS name.

", - "locationName":"privateDnsName" - }, - "SourceDestCheck":{ - "shape":"Boolean", - "documentation":"

Indicates whether traffic to or from the instance is validated.

", - "locationName":"sourceDestCheck" - }, - "Groups":{ - "shape":"GroupIdentifierList", - "documentation":"

Any security groups for the network interface.

", - "locationName":"groupSet" - }, - "Attachment":{ - "shape":"NetworkInterfaceAttachment", - "documentation":"

The network interface attachment.

", - "locationName":"attachment" - }, - "Association":{ - "shape":"NetworkInterfaceAssociation", - "documentation":"

The association information for an Elastic IP associated with the network interface.

", - "locationName":"association" - }, - "TagSet":{ - "shape":"TagList", - "documentation":"

Any tags assigned to the network interface.

", - "locationName":"tagSet" - }, - "PrivateIpAddresses":{ - "shape":"NetworkInterfacePrivateIpAddressList", - "documentation":"

The private IP addresses associated with the network interface.

", - "locationName":"privateIpAddressesSet" - } - }, - "documentation":"

Describes a network interface.

" - }, - "NetworkInterfaceAssociation":{ - "type":"structure", - "members":{ - "PublicIp":{ - "shape":"String", - "documentation":"

The address of the Elastic IP address bound to the network interface.

", - "locationName":"publicIp" - }, - "PublicDnsName":{ - "shape":"String", - "documentation":"

The public DNS name.

", - "locationName":"publicDnsName" - }, - "IpOwnerId":{ - "shape":"String", - "documentation":"

The ID of the Elastic IP address owner.

", - "locationName":"ipOwnerId" - }, - "AllocationId":{ - "shape":"String", - "documentation":"

The allocation ID.

", - "locationName":"allocationId" - }, - "AssociationId":{ - "shape":"String", - "documentation":"

The association ID.

", - "locationName":"associationId" - } - }, - "documentation":"

Describes association information for an Elastic IP address.

" - }, - "NetworkInterfaceAttachment":{ - "type":"structure", - "members":{ - "AttachmentId":{ - "shape":"String", - "documentation":"

The ID of the network interface attachment.

", - "locationName":"attachmentId" - }, - "InstanceId":{ - "shape":"String", - "documentation":"

The ID of the instance.

", - "locationName":"instanceId" - }, - "InstanceOwnerId":{ - "shape":"String", - "documentation":"

The AWS account ID of the owner of the instance.

", - "locationName":"instanceOwnerId" - }, - "DeviceIndex":{ - "shape":"Integer", - "documentation":"

The device index of the network interface attachment on the instance.

", - "locationName":"deviceIndex" - }, - "Status":{ - "shape":"AttachmentStatus", - "documentation":"

The attachment state.

", - "locationName":"status" - }, - "AttachTime":{ - "shape":"DateTime", - "documentation":"

The timestamp indicating when the attachment initiated.

", - "locationName":"attachTime" - }, - "DeleteOnTermination":{ - "shape":"Boolean", - "documentation":"

Indicates whether the network interface is deleted when the instance is terminated.

", - "locationName":"deleteOnTermination" - } - }, - "documentation":"

Describes a network interface attachment.

" - }, - "NetworkInterfaceAttachmentChanges":{ - "type":"structure", - "members":{ - "AttachmentId":{ - "shape":"String", - "documentation":"

The ID of the network interface attachment.

", - "locationName":"attachmentId" - }, - "DeleteOnTermination":{ - "shape":"Boolean", - "documentation":"

Indicates whether the network interface is deleted when the instance is terminated.

", - "locationName":"deleteOnTermination" - } - }, - "documentation":"

Describes an attachment change.

" - }, - "NetworkInterfaceAttribute":{ - "type":"string", - "enum":[ - "description", - "groupSet", - "sourceDestCheck", - "attachment" - ] - }, - "NetworkInterfaceIdList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"item" - } - }, - "NetworkInterfaceList":{ - "type":"list", - "member":{ - "shape":"NetworkInterface", - "locationName":"item" - } - }, - "NetworkInterfacePrivateIpAddress":{ - "type":"structure", - "members":{ - "PrivateIpAddress":{ - "shape":"String", - "documentation":"

The private IP address.

", - "locationName":"privateIpAddress" - }, - "PrivateDnsName":{ - "shape":"String", - "documentation":"

The private DNS name.

", - "locationName":"privateDnsName" - }, - "Primary":{ - "shape":"Boolean", - "documentation":"

Indicates whether this IP address is the primary private IP address of the network interface.

", - "locationName":"primary" - }, - "Association":{ - "shape":"NetworkInterfaceAssociation", - "documentation":"

The association information for an Elastic IP address associated with the network interface.

", - "locationName":"association" - } - }, - "documentation":"

Describes the private IP address of a network interface.

" - }, - "NetworkInterfacePrivateIpAddressList":{ - "type":"list", - "member":{ - "shape":"NetworkInterfacePrivateIpAddress", - "locationName":"item" - } - }, - "NetworkInterfaceStatus":{ - "type":"string", - "enum":[ - "available", - "attaching", - "in-use", - "detaching" - ] - }, - "OfferingTypeValues":{ - "type":"string", - "enum":[ - "Heavy Utilization", - "Medium Utilization", - "Light Utilization" - ] - }, - "OwnerStringList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"Owner" - } - }, - "PermissionGroup":{ - "type":"string", - "enum":["all"] - }, - "Placement":{ - "type":"structure", - "members":{ - "AvailabilityZone":{ - "shape":"String", - "documentation":"

The Availability Zone of the instance.

", - "locationName":"availabilityZone" - }, - "GroupName":{ - "shape":"String", - "documentation":"

The name of the placement group the instance is in (for cluster compute instances).

", - "locationName":"groupName" - }, - "Tenancy":{ - "shape":"Tenancy", - "documentation":"

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.

", - "locationName":"tenancy" - } - }, - "documentation":"

Describes the placement for the instance.

" - }, - "PlacementGroup":{ - "type":"structure", - "members":{ - "GroupName":{ - "shape":"String", - "documentation":"

The name of the placement group.

", - "locationName":"groupName" - }, - "Strategy":{ - "shape":"PlacementStrategy", - "documentation":"

The placement strategy.

", - "locationName":"strategy" - }, - "State":{ - "shape":"PlacementGroupState", - "documentation":"

The state of the placement group.

", - "locationName":"state" - } - }, - "documentation":"

Describes a placement group.

" - }, - "PlacementGroupList":{ - "type":"list", - "member":{ - "shape":"PlacementGroup", - "locationName":"item" - } - }, - "PlacementGroupState":{ - "type":"string", - "enum":[ - "pending", - "available", - "deleting", - "deleted" - ] - }, - "PlacementGroupStringList":{ - "type":"list", - "member":{"shape":"String"} - }, - "PlacementStrategy":{ - "type":"string", - "enum":["cluster"] - }, - "PlatformValues":{ - "type":"string", - "enum":["Windows"] - }, - "PortRange":{ - "type":"structure", - "members":{ - "From":{ - "shape":"Integer", - "documentation":"

The first port in the range.

", - "locationName":"from" - }, - "To":{ - "shape":"Integer", - "documentation":"

The last port in the range.

", - "locationName":"to" - } - }, - "documentation":"

Describes a range of ports.

" - }, - "PriceSchedule":{ - "type":"structure", - "members":{ - "Term":{ - "shape":"Long", - "documentation":"

The number of months remaining in the reservation. For example, 2 is the second to the last month before the capacity reservation expires.

", - "locationName":"term" - }, - "Price":{ - "shape":"Double", - "documentation":"

The fixed price for the term.

", - "locationName":"price" - }, - "CurrencyCode":{ - "shape":"CurrencyCodeValues", - "documentation":"

The currency for transacting the Reserved Instance resale. At this time, the only supported currency is USD.

", - "locationName":"currencyCode" - }, - "Active":{ - "shape":"Boolean", - "documentation":"

The current price schedule, as determined by the term remaining for the Reserved Instance in the listing.

A specific price schedule is always in effect, but only one price schedule can be active at any time. Take, for example, a Reserved Instance listing that has five months remaining in its term. When you specify price schedules for five months and two months, this means that schedule 1, covering the first three months of the remaining term, will be active during months 5, 4, and 3. Then schedule 2, covering the last two months of the term, will be active for months 2 and 1.

", - "locationName":"active" - } - }, - "documentation":"

Describes the price for a Reserved Instance.

" - }, - "PriceScheduleList":{ - "type":"list", - "member":{ - "shape":"PriceSchedule", - "locationName":"item" - } - }, - "PriceScheduleSpecification":{ - "type":"structure", - "members":{ - "Term":{ - "shape":"Long", - "documentation":"

The number of months remaining in the reservation. For example, 2 is the second to the last month before the capacity reservation expires.

", - "locationName":"term" - }, - "Price":{ - "shape":"Double", - "documentation":"

The fixed price for the term.

", - "locationName":"price" - }, - "CurrencyCode":{ - "shape":"CurrencyCodeValues", - "documentation":"

The currency for transacting the Reserved Instance resale. At this time, the only supported currency is USD.

", - "locationName":"currencyCode" - } - }, - "documentation":"

Describes the price for a Reserved Instance.

" - }, - "PriceScheduleSpecificationList":{ - "type":"list", - "member":{ - "shape":"PriceScheduleSpecification", - "locationName":"item" - } - }, - "PricingDetail":{ - "type":"structure", - "members":{ - "Price":{ - "shape":"Double", - "documentation":"

The price per instance.

", - "locationName":"price" - }, - "Count":{ - "shape":"Integer", - "documentation":"

The number of instances available for the price.

", - "locationName":"count" - } - }, - "documentation":"

Describes a Reserved Instance offering.

" - }, - "PricingDetailsList":{ - "type":"list", - "member":{ - "shape":"PricingDetail", - "locationName":"item" - } - }, - "PrivateIpAddressSpecification":{ - "type":"structure", - "required":["PrivateIpAddress"], - "members":{ - "PrivateIpAddress":{ - "shape":"String", - "documentation":"

The private IP addresses.

", - "locationName":"privateIpAddress" - }, - "Primary":{ - "shape":"Boolean", - "documentation":"

Indicates whether the private IP address is the primary private IP address. Only one IP address can be designated as primary.

", - "locationName":"primary" - } - }, - "documentation":"

Describes a secondary private IP address for a network interface.

" - }, - "PrivateIpAddressSpecificationList":{ - "type":"list", - "member":{ - "shape":"PrivateIpAddressSpecification", - "locationName":"item" - } - }, - "PrivateIpAddressStringList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"PrivateIpAddress" - } - }, - "ProductCode":{ - "type":"structure", - "members":{ - "ProductCodeId":{ - "shape":"String", - "documentation":"

The product code.

", - "locationName":"productCode" - }, - "ProductCodeType":{ - "shape":"ProductCodeValues", - "documentation":"

The type of product code.

", - "locationName":"type" - } - }, - "documentation":"

Describes a product code.

" - }, - "ProductCodeList":{ - "type":"list", - "member":{ - "shape":"ProductCode", - "locationName":"item" - } - }, - "ProductCodeStringList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"ProductCode" - } - }, - "ProductCodeValues":{ - "type":"string", - "enum":[ - "devpay", - "marketplace" - ] - }, - "ProductDescriptionList":{ - "type":"list", - "member":{"shape":"String"} - }, - "PropagatingVgw":{ - "type":"structure", - "members":{ - "GatewayId":{ - "shape":"String", - "documentation":"

The ID of the virtual private gateway (VGW).

", - "locationName":"gatewayId" - } - }, - "documentation":"

Describes a virtual private gateway propagating route.

" - }, - "PropagatingVgwList":{ - "type":"list", - "member":{ - "shape":"PropagatingVgw", - "locationName":"item" - } - }, - "PublicIpStringList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"PublicIp" - } - }, - "PurchaseReservedInstancesOfferingRequest":{ - "type":"structure", - "required":[ - "ReservedInstancesOfferingId", - "InstanceCount" - ], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "ReservedInstancesOfferingId":{ - "shape":"String", - "documentation":"

The ID of the Reserved Instance offering to purchase.

" - }, - "InstanceCount":{ - "shape":"Integer", - "documentation":"

The number of Reserved Instances to purchase.

" - }, - "LimitPrice":{ - "shape":"ReservedInstanceLimitPrice", - "documentation":"

Specified for Reserved Instance Marketplace offerings to limit the total order and ensure that the Reserved Instances are not purchased at unexpected prices.

", - "locationName":"limitPrice" - } - } - }, - "PurchaseReservedInstancesOfferingResult":{ - "type":"structure", - "members":{ - "ReservedInstancesId":{ - "shape":"String", - "documentation":"

The IDs of the purchased Reserved Instances.

", - "locationName":"reservedInstancesId" - } - } - }, - "RIProductDescription":{ - "type":"string", - "enum":[ - "Linux/UNIX", - "Linux/UNIX (Amazon VPC)", - "Windows", - "Windows (Amazon VPC)" - ] - }, - "ReasonCodesList":{ - "type":"list", - "member":{ - "shape":"ReportInstanceReasonCodes", - "locationName":"item" - } - }, - "RebootInstancesRequest":{ - "type":"structure", - "required":["InstanceIds"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "InstanceIds":{ - "shape":"InstanceIdStringList", - "documentation":"

One or more instance IDs.

", - "locationName":"InstanceId" - } - } - }, - "RecurringCharge":{ - "type":"structure", - "members":{ - "Frequency":{ - "shape":"RecurringChargeFrequency", - "documentation":"

The frequency of the recurring charge.

", - "locationName":"frequency" - }, - "Amount":{ - "shape":"Double", - "documentation":"

The amount of the recurring charge.

", - "locationName":"amount" - } - }, - "documentation":"

Describes a recurring charge.

" - }, - "RecurringChargeFrequency":{ - "type":"string", - "enum":["Hourly"] - }, - "RecurringChargesList":{ - "type":"list", - "member":{ - "shape":"RecurringCharge", - "locationName":"item" - } - }, - "Region":{ - "type":"structure", - "members":{ - "RegionName":{ - "shape":"String", - "documentation":"

The name of the region.

", - "locationName":"regionName" - }, - "Endpoint":{ - "shape":"String", - "documentation":"

The region service endpoint.

", - "locationName":"regionEndpoint" - } - }, - "documentation":"

Describes a region.

" - }, - "RegionList":{ - "type":"list", - "member":{ - "shape":"Region", - "locationName":"item" - } - }, - "RegionNameStringList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"RegionName" - } - }, - "RegisterImageRequest":{ - "type":"structure", - "required":["Name"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "ImageLocation":{ - "shape":"String", - "documentation":"

The full path to your AMI manifest in Amazon S3 storage.

" - }, - "Name":{ - "shape":"String", - "documentation":"

A name for your AMI.

Constraints: 3-128 alphanumeric characters, parentheses (()), square brackets ([]), spaces ( ), periods (.), slashes (/), dashes (-), single quotes ('), at-signs (@), or underscores(_)

", - "locationName":"name" - }, - "Description":{ - "shape":"String", - "documentation":"

A description for your AMI.

", - "locationName":"description" - }, - "Architecture":{ - "shape":"ArchitectureValues", - "documentation":"

The architecture of the AMI.

Default: For Amazon EBS-backed AMIs, i386. For instance store-backed AMIs, the architecture specified in the manifest file.

", - "locationName":"architecture" - }, - "KernelId":{ - "shape":"String", - "documentation":"

The ID of the kernel.

", - "locationName":"kernelId" - }, - "RamdiskId":{ - "shape":"String", - "documentation":"

The ID of the RAM disk.

", - "locationName":"ramdiskId" - }, - "RootDeviceName":{ - "shape":"String", - "documentation":"

The name of the root device (for example, /dev/sda1, or xvda).

", - "locationName":"rootDeviceName" - }, - "BlockDeviceMappings":{ - "shape":"BlockDeviceMappingRequestList", - "documentation":"

One or more block device mapping entries.

", - "locationName":"BlockDeviceMapping" - }, - "VirtualizationType":{ - "shape":"String", - "documentation":"

The type of virtualization.

Default: paravirtual

", - "locationName":"virtualizationType" - }, - "SriovNetSupport":{ - "shape":"String", - "documentation":"

Set to simple to enable enhanced networking for the AMI and any instances that you launch from the AMI.

There is no way to disable enhanced networking at this time.

This option is supported only for HVM AMIs. Specifying this option with a PV AMI can make instances launched from the AMI unreachable.

", - "locationName":"sriovNetSupport" - } - } - }, - "RegisterImageResult":{ - "type":"structure", - "members":{ - "ImageId":{ - "shape":"String", - "documentation":"

The ID of the newly registered AMI.

", - "locationName":"imageId" - } - } - }, - "RejectVpcPeeringConnectionRequest":{ - "type":"structure", - "required":["VpcPeeringConnectionId"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "VpcPeeringConnectionId":{ - "shape":"String", - "documentation":"

The ID of the VPC peering connection.

", - "locationName":"vpcPeeringConnectionId" - } - } - }, - "RejectVpcPeeringConnectionResult":{ - "type":"structure", - "members":{ - "Return":{ - "shape":"Boolean", - "documentation":"

Returns true if the request succeeds; otherwise, it returns an error.

", - "locationName":"return" - } - } - }, - "ReleaseAddressRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "PublicIp":{ - "shape":"String", - "documentation":"

[EC2-Classic] The Elastic IP address. Required for EC2-Classic.

" - }, - "AllocationId":{ - "shape":"String", - "documentation":"

[EC2-VPC] The allocation ID. Required for EC2-VPC.

" - } - } - }, - "ReplaceNetworkAclAssociationRequest":{ - "type":"structure", - "required":[ - "AssociationId", - "NetworkAclId" - ], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "AssociationId":{ - "shape":"String", - "documentation":"

The ID of the current association between the original network ACL and the subnet.

", - "locationName":"associationId" - }, - "NetworkAclId":{ - "shape":"String", - "documentation":"

The ID of the new network ACL to associate with the subnet.

", - "locationName":"networkAclId" - } - } - }, - "ReplaceNetworkAclAssociationResult":{ - "type":"structure", - "members":{ - "NewAssociationId":{ - "shape":"String", - "documentation":"

The ID of the new association.

", - "locationName":"newAssociationId" - } - } - }, - "ReplaceNetworkAclEntryRequest":{ - "type":"structure", - "required":[ - "NetworkAclId", - "RuleNumber", - "Protocol", - "RuleAction", - "Egress", - "CidrBlock" - ], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "NetworkAclId":{ - "shape":"String", - "documentation":"

The ID of the ACL.

", - "locationName":"networkAclId" - }, - "RuleNumber":{ - "shape":"Integer", - "documentation":"

The rule number of the entry to replace.

", - "locationName":"ruleNumber" - }, - "Protocol":{ - "shape":"String", - "documentation":"

The IP protocol. You can specify all or -1 to mean all protocols.

", - "locationName":"protocol" - }, - "RuleAction":{ - "shape":"RuleAction", - "documentation":"

Indicates whether to allow or deny the traffic that matches the rule.

", - "locationName":"ruleAction" - }, - "Egress":{ - "shape":"Boolean", - "documentation":"

Indicates whether to replace the egress rule.

Default: If no value is specified, we replace the ingress rule.

", - "locationName":"egress" - }, - "CidrBlock":{ - "shape":"String", - "documentation":"

The network range to allow or deny, in CIDR notation.

", - "locationName":"cidrBlock" - }, - "IcmpTypeCode":{ - "shape":"IcmpTypeCode", - "documentation":"

ICMP protocol: The ICMP type and code. Required if specifying 1 (ICMP) for the protocol.

", - "locationName":"Icmp" - }, - "PortRange":{ - "shape":"PortRange", - "documentation":"

TCP or UDP protocols: The range of ports the rule applies to. Required if specifying 6 (TCP) or 17 (UDP) for the protocol.

", - "locationName":"portRange" - } - } - }, - "ReplaceRouteRequest":{ - "type":"structure", - "required":[ - "RouteTableId", - "DestinationCidrBlock" - ], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "RouteTableId":{ - "shape":"String", - "documentation":"

The ID of the route table.

", - "locationName":"routeTableId" - }, - "DestinationCidrBlock":{ - "shape":"String", - "documentation":"

The CIDR address block used for the destination match. The value you provide must match the CIDR of an existing route in the table.

", - "locationName":"destinationCidrBlock" - }, - "GatewayId":{ - "shape":"String", - "documentation":"

The ID of an Internet gateway or virtual private gateway.

", - "locationName":"gatewayId" - }, - "InstanceId":{ - "shape":"String", - "documentation":"

The ID of a NAT instance in your VPC.

", - "locationName":"instanceId" - }, - "NetworkInterfaceId":{ - "shape":"String", - "documentation":"

The ID of a network interface.

", - "locationName":"networkInterfaceId" - }, - "VpcPeeringConnectionId":{ - "shape":"String", - "documentation":"

The ID of a VPC peering connection.

", - "locationName":"vpcPeeringConnectionId" - } - } - }, - "ReplaceRouteTableAssociationRequest":{ - "type":"structure", - "required":[ - "AssociationId", - "RouteTableId" - ], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "AssociationId":{ - "shape":"String", - "documentation":"

The association ID.

", - "locationName":"associationId" - }, - "RouteTableId":{ - "shape":"String", - "documentation":"

The ID of the new route table to associate with the subnet.

", - "locationName":"routeTableId" - } - } - }, - "ReplaceRouteTableAssociationResult":{ - "type":"structure", - "members":{ - "NewAssociationId":{ - "shape":"String", - "documentation":"

The ID of the new association.

", - "locationName":"newAssociationId" - } - } - }, - "ReportInstanceReasonCodes":{ - "type":"string", - "enum":[ - "instance-stuck-in-state", - "unresponsive", - "not-accepting-credentials", - "password-not-available", - "performance-network", - "performance-instance-store", - "performance-ebs-volume", - "performance-other", - "other" - ] - }, - "ReportInstanceStatusRequest":{ - "type":"structure", - "required":[ - "Instances", - "Status", - "ReasonCodes" - ], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "Instances":{ - "shape":"InstanceIdStringList", - "documentation":"

One or more instances.

", - "locationName":"instanceId" - }, - "Status":{ - "shape":"ReportStatusType", - "documentation":"

The status of all instances listed.

", - "locationName":"status" - }, - "StartTime":{ - "shape":"DateTime", - "documentation":"

The time at which the reported instance health state began.

", - "locationName":"startTime" - }, - "EndTime":{ - "shape":"DateTime", - "documentation":"

The time at which the reported instance health state ended.

", - "locationName":"endTime" - }, - "ReasonCodes":{ - "shape":"ReasonCodesList", - "documentation":"

One or more reason codes that describes the health state of your instance.

", - "locationName":"reasonCode" - }, - "Description":{ - "shape":"String", - "documentation":"

Descriptive text about the health state of your instance.

", - "locationName":"description" - } - } - }, - "ReportStatusType":{ - "type":"string", - "enum":[ - "ok", - "impaired" - ] - }, - "RequestSpotInstancesRequest":{ - "type":"structure", - "required":["SpotPrice"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "SpotPrice":{ - "shape":"String", - "documentation":"

The maximum hourly price for any Spot Instance launched to fulfill the request.

", - "locationName":"spotPrice" - }, - "InstanceCount":{ - "shape":"Integer", - "documentation":"

The maximum number of Spot Instances to launch.

Default: 1

", - "locationName":"instanceCount" - }, - "Type":{ - "shape":"SpotInstanceType", - "documentation":"

The Spot Instance request type.

Default: one-time

", - "locationName":"type" - }, - "ValidFrom":{ - "shape":"DateTime", - "documentation":"

The start date of the request. If this is a one-time request, the request becomes active at this date and time and remains active until all instances launch, the request expires, or the request is canceled. If the request is persistent, the request becomes active at this date and time and remains active until it expires or is canceled.

Default: The request is effective indefinitely.

", - "locationName":"validFrom" - }, - "ValidUntil":{ - "shape":"DateTime", - "documentation":"

The end date of the request. If this is a one-time request, the request remains active until all instances launch, the request is canceled, or this date is reached. If the request is persistent, it remains active until it is canceled or this date and time is reached.

Default: The request is effective indefinitely.

", - "locationName":"validUntil" - }, - "LaunchGroup":{ - "shape":"String", - "documentation":"

The instance launch group. Launch groups are Spot Instances that launch together and terminate together.

Default: Instances are launched and terminated individually

", - "locationName":"launchGroup" - }, - "AvailabilityZoneGroup":{ - "shape":"String", - "documentation":"

The user-specified name for a logical grouping of bids.

When you specify an Availability Zone group in a Spot Instance request, all Spot Instances in the request are launched in the same Availability Zone. Instance proximity is maintained with this parameter, but the choice of Availability Zone is not. The group applies only to bids for Spot Instances of the same instance type. Any additional Spot Instance requests that are specified with the same Availability Zone group name are launched in that same Availability Zone, as long as at least one instance from the group is still active.

If there is no active instance running in the Availability Zone group that you specify for a new Spot Instance request (all instances are terminated, the bid is expired, or the bid falls below current market), then Amazon EC2 launches the instance in any Availability Zone where the constraint can be met. Consequently, the subsequent set of Spot Instances could be placed in a different zone from the original request, even if you specified the same Availability Zone group.

Default: Instances are launched in any available Availability Zone.

", - "locationName":"availabilityZoneGroup" - }, - "LaunchSpecification":{"shape":"RequestSpotLaunchSpecification"} - } - }, - "RequestSpotInstancesResult":{ - "type":"structure", - "members":{ - "SpotInstanceRequests":{ - "shape":"SpotInstanceRequestList", - "documentation":"

One or more Spot Instance requests.

", - "locationName":"spotInstanceRequestSet" - } - } - }, - "Reservation":{ - "type":"structure", - "members":{ - "ReservationId":{ - "shape":"String", - "documentation":"

The ID of the reservation.

", - "locationName":"reservationId" - }, - "OwnerId":{ - "shape":"String", - "documentation":"

The ID of the AWS account that owns the reservation.

", - "locationName":"ownerId" - }, - "RequesterId":{ - "shape":"String", - "documentation":"

The ID of the requester that launched the instances on your behalf (for example, AWS Management Console or Auto Scaling).

", - "locationName":"requesterId" - }, - "Groups":{ - "shape":"GroupIdentifierList", - "documentation":"

One or more security groups.

", - "locationName":"groupSet" - }, - "Instances":{ - "shape":"InstanceList", - "documentation":"

One or more instances.

", - "locationName":"instancesSet" - } - }, - "documentation":"

Describes a reservation.

" - }, - "ReservationList":{ - "type":"list", - "member":{ - "shape":"Reservation", - "locationName":"item" - } - }, - "ReservedInstanceLimitPrice":{ - "type":"structure", - "members":{ - "Amount":{ - "shape":"Double", - "documentation":"

Used for Reserved Instance Marketplace offerings. Specifies the limit price on the total order (instanceCount * price).

", - "locationName":"amount" - }, - "CurrencyCode":{ - "shape":"CurrencyCodeValues", - "documentation":"

The currency in which the limitPrice amount is specified. At this time, the only supported currency is USD.

", - "locationName":"currencyCode" - } - }, - "documentation":"

Describes the limit price of a Reserved Instance offering.

" - }, - "ReservedInstanceState":{ - "type":"string", - "enum":[ - "payment-pending", - "active", - "payment-failed", - "retired" - ] - }, - "ReservedInstances":{ - "type":"structure", - "members":{ - "ReservedInstancesId":{ - "shape":"String", - "documentation":"

The ID of the Reserved Instance.

", - "locationName":"reservedInstancesId" - }, - "InstanceType":{ - "shape":"InstanceType", - "documentation":"

The instance type on which the Reserved Instance can be used.

", - "locationName":"instanceType" - }, - "AvailabilityZone":{ - "shape":"String", - "documentation":"

The Availability Zone in which the Reserved Instance can be used.

", - "locationName":"availabilityZone" - }, - "Start":{ - "shape":"DateTime", - "documentation":"

The date and time the Reserved Instance started.

", - "locationName":"start" - }, - "End":{ - "shape":"DateTime", - "documentation":"

The time when the Reserved Instance expires.

", - "locationName":"end" - }, - "Duration":{ - "shape":"Long", - "documentation":"

The duration of the Reserved Instance, in seconds.

", - "locationName":"duration" - }, - "UsagePrice":{ - "shape":"Float", - "documentation":"

The usage price of the Reserved Instance, per hour.

", - "locationName":"usagePrice" - }, - "FixedPrice":{ - "shape":"Float", - "documentation":"

The purchase price of the Reserved Instance.

", - "locationName":"fixedPrice" - }, - "InstanceCount":{ - "shape":"Integer", - "documentation":"

The number of Reserved Instances purchased.

", - "locationName":"instanceCount" - }, - "ProductDescription":{ - "shape":"RIProductDescription", - "documentation":"

The Reserved Instance description.

", - "locationName":"productDescription" - }, - "State":{ - "shape":"ReservedInstanceState", - "documentation":"

The state of the Reserved Instance purchase.

", - "locationName":"state" - }, - "Tags":{ - "shape":"TagList", - "documentation":"

Any tags assigned to the resource.

", - "locationName":"tagSet" - }, - "InstanceTenancy":{ - "shape":"Tenancy", - "documentation":"

The tenancy of the reserved instance.

", - "locationName":"instanceTenancy" - }, - "CurrencyCode":{ - "shape":"CurrencyCodeValues", - "documentation":"

The currency of the Reserved Instance. It's specified using ISO 4217 standard currency codes. At this time, the only supported currency is USD.

", - "locationName":"currencyCode" - }, - "OfferingType":{ - "shape":"OfferingTypeValues", - "documentation":"

The Reserved Instance offering type.

", - "locationName":"offeringType" - }, - "RecurringCharges":{ - "shape":"RecurringChargesList", - "documentation":"

The recurring charge tag assigned to the resource.

", - "locationName":"recurringCharges" - } - }, - "documentation":"

Describes a Reserved Instance.

" - }, - "ReservedInstancesConfiguration":{ - "type":"structure", - "members":{ - "AvailabilityZone":{ - "shape":"String", - "documentation":"

The Availability Zone for the modified Reserved Instances.

", - "locationName":"availabilityZone" - }, - "Platform":{ - "shape":"String", - "documentation":"

The network platform of the modified Reserved Instances, which is either EC2-Classic or EC2-VPC.

", - "locationName":"platform" - }, - "InstanceCount":{ - "shape":"Integer", - "documentation":"

The number of modified Reserved Instances.

", - "locationName":"instanceCount" - }, - "InstanceType":{ - "shape":"InstanceType", - "documentation":"

The instance type for the modified Reserved Instances.

", - "locationName":"instanceType" - } - }, - "documentation":"

Describes the configuration settings for the modified Reserved Instances.

" - }, - "ReservedInstancesConfigurationList":{ - "type":"list", - "member":{ - "shape":"ReservedInstancesConfiguration", - "locationName":"item" - } - }, - "ReservedInstancesId":{ - "type":"structure", - "members":{ - "ReservedInstancesId":{ - "shape":"String", - "documentation":"

The ID of the Reserved Instance.

", - "locationName":"reservedInstancesId" - } - }, - "documentation":"

Describes the ID of a Reserved Instance.

" - }, - "ReservedInstancesIdStringList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"ReservedInstancesId" - } - }, - "ReservedInstancesList":{ - "type":"list", - "member":{ - "shape":"ReservedInstances", - "locationName":"item" - } - }, - "ReservedInstancesListing":{ - "type":"structure", - "members":{ - "ReservedInstancesListingId":{ - "shape":"String", - "documentation":"

The ID of the Reserved Instance listing.

", - "locationName":"reservedInstancesListingId" - }, - "ReservedInstancesId":{ - "shape":"String", - "documentation":"

The ID of the Reserved Instance.

", - "locationName":"reservedInstancesId" - }, - "CreateDate":{ - "shape":"DateTime", - "documentation":"

The time the listing was created.

", - "locationName":"createDate" - }, - "UpdateDate":{ - "shape":"DateTime", - "documentation":"

The last modified timestamp of the listing.

", - "locationName":"updateDate" - }, - "Status":{ - "shape":"ListingStatus", - "documentation":"

The status of the Reserved Instance listing.

", - "locationName":"status" - }, - "StatusMessage":{ - "shape":"String", - "documentation":"

The reason for the current status of the Reserved Instance listing. The response can be blank.

", - "locationName":"statusMessage" - }, - "InstanceCounts":{ - "shape":"InstanceCountList", - "documentation":"

The number of instances in this state.

", - "locationName":"instanceCounts" - }, - "PriceSchedules":{ - "shape":"PriceScheduleList", - "documentation":"

The price of the Reserved Instance listing.

", - "locationName":"priceSchedules" - }, - "Tags":{ - "shape":"TagList", - "documentation":"

Any tags assigned to the resource.

", - "locationName":"tagSet" - }, - "ClientToken":{ - "shape":"String", - "documentation":"

The idempotency token you provided when you created the listing.

", - "locationName":"clientToken" - } - }, - "documentation":"

Describes a Reserved Instance listing.

" - }, - "ReservedInstancesListingList":{ - "type":"list", - "member":{ - "shape":"ReservedInstancesListing", - "locationName":"item" - } - }, - "ReservedInstancesModification":{ - "type":"structure", - "members":{ - "ReservedInstancesModificationId":{ - "shape":"String", - "documentation":"

A unique ID for the Reserved Instance modification.

", - "locationName":"reservedInstancesModificationId" - }, - "ReservedInstancesIds":{ - "shape":"ReservedIntancesIds", - "documentation":"

The IDs of one or more Reserved Instances.

", - "locationName":"reservedInstancesSet" - }, - "ModificationResults":{ - "shape":"ReservedInstancesModificationResultList", - "documentation":"

Contains target configurations along with their corresponding new Reserved Instance IDs.

", - "locationName":"modificationResultSet" - }, - "CreateDate":{ - "shape":"DateTime", - "documentation":"

The time when the modification request was created.

", - "locationName":"createDate" - }, - "UpdateDate":{ - "shape":"DateTime", - "documentation":"

The time when the modification request was last updated.

", - "locationName":"updateDate" - }, - "EffectiveDate":{ - "shape":"DateTime", - "documentation":"

The time for the modification to become effective.

", - "locationName":"effectiveDate" - }, - "Status":{ - "shape":"String", - "documentation":"

The status of the Reserved Instances modification request.

", - "locationName":"status" - }, - "StatusMessage":{ - "shape":"String", - "documentation":"

The reason for the status.

", - "locationName":"statusMessage" - }, - "ClientToken":{ - "shape":"String", - "documentation":"

A unique, case-sensitive key supplied by the client to ensure that the modification request is idempotent.

", - "locationName":"clientToken" - } - }, - "documentation":"

Describes a Reserved Instance modification.

" - }, - "ReservedInstancesModificationIdStringList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"ReservedInstancesModificationId" - } - }, - "ReservedInstancesModificationList":{ - "type":"list", - "member":{ - "shape":"ReservedInstancesModification", - "locationName":"item" - } - }, - "ReservedInstancesModificationResult":{ - "type":"structure", - "members":{ - "ReservedInstancesId":{ - "shape":"String", - "documentation":"

The ID for the Reserved Instances that were created as part of the modification request. This field is only available when the modification is fulfilled.

", - "locationName":"reservedInstancesId" - }, - "TargetConfiguration":{ - "shape":"ReservedInstancesConfiguration", - "documentation":"

The target Reserved Instances configurations supplied as part of the modification request.

", - "locationName":"targetConfiguration" - } - } - }, - "ReservedInstancesModificationResultList":{ - "type":"list", - "member":{ - "shape":"ReservedInstancesModificationResult", - "locationName":"item" - } - }, - "ReservedInstancesOffering":{ - "type":"structure", - "members":{ - "ReservedInstancesOfferingId":{ - "shape":"String", - "documentation":"

The ID of the Reserved Instance offering.

", - "locationName":"reservedInstancesOfferingId" - }, - "InstanceType":{ - "shape":"InstanceType", - "documentation":"

The instance type on which the Reserved Instance can be used.

", - "locationName":"instanceType" - }, - "AvailabilityZone":{ - "shape":"String", - "documentation":"

The Availability Zone in which the Reserved Instance can be used.

", - "locationName":"availabilityZone" - }, - "Duration":{ - "shape":"Long", - "documentation":"

The duration of the Reserved Instance, in seconds.

", - "locationName":"duration" - }, - "UsagePrice":{ - "shape":"Float", - "documentation":"

The usage price of the Reserved Instance, per hour.

", - "locationName":"usagePrice" - }, - "FixedPrice":{ - "shape":"Float", - "documentation":"

The purchase price of the Reserved Instance.

", - "locationName":"fixedPrice" - }, - "ProductDescription":{ - "shape":"RIProductDescription", - "documentation":"

The Reserved Instance description.

", - "locationName":"productDescription" - }, - "InstanceTenancy":{ - "shape":"Tenancy", - "documentation":"

The tenancy of the reserved instance.

", - "locationName":"instanceTenancy" - }, - "CurrencyCode":{ - "shape":"CurrencyCodeValues", - "documentation":"

The currency of the Reserved Instance offering you are purchasing. It's specified using ISO 4217 standard currency codes. At this time, the only supported currency is USD.

", - "locationName":"currencyCode" - }, - "OfferingType":{ - "shape":"OfferingTypeValues", - "documentation":"

The Reserved Instance offering type.

", - "locationName":"offeringType" - }, - "RecurringCharges":{ - "shape":"RecurringChargesList", - "documentation":"

The recurring charge tag assigned to the resource.

", - "locationName":"recurringCharges" - }, - "Marketplace":{ - "shape":"Boolean", - "documentation":"

Indicates whether the offering is available through the Reserved Instance Marketplace (resale) or AWS. If it's a Reserved Instance Marketplace offering, this is true.

", - "locationName":"marketplace" - }, - "PricingDetails":{ - "shape":"PricingDetailsList", - "documentation":"

The pricing details of the Reserved Instance offering.

", - "locationName":"pricingDetailsSet" - } - }, - "documentation":"

Describes a Reserved Instance offering.

" - }, - "ReservedInstancesOfferingIdStringList":{ - "type":"list", - "member":{"shape":"String"} - }, - "ReservedInstancesOfferingList":{ - "type":"list", - "member":{ - "shape":"ReservedInstancesOffering", - "locationName":"item" - } - }, - "ReservedIntancesIds":{ - "type":"list", - "member":{ - "shape":"ReservedInstancesId", - "locationName":"item" - } - }, - "ResetImageAttributeName":{ - "type":"string", - "enum":["launchPermission"] - }, - "ResetImageAttributeRequest":{ - "type":"structure", - "required":[ - "ImageId", - "Attribute" - ], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "ImageId":{ - "shape":"String", - "documentation":"

The ID of the AMI.

" - }, - "Attribute":{ - "shape":"ResetImageAttributeName", - "documentation":"

The attribute to reset (currently you can only reset the launch permission attribute).

" - } - } - }, - "ResetInstanceAttributeRequest":{ - "type":"structure", - "required":[ - "InstanceId", - "Attribute" - ], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "InstanceId":{ - "shape":"String", - "documentation":"

The ID of the instance.

", - "locationName":"instanceId" - }, - "Attribute":{ - "shape":"InstanceAttributeName", - "documentation":"

The attribute to reset.

", - "locationName":"attribute" - } - } - }, - "ResetNetworkInterfaceAttributeRequest":{ - "type":"structure", - "required":["NetworkInterfaceId"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "NetworkInterfaceId":{ - "shape":"String", - "documentation":"

The ID of the network interface.

", - "locationName":"networkInterfaceId" - }, - "SourceDestCheck":{ - "shape":"String", - "documentation":"

The source/destination checking attribute. Resets the value to true.

", - "locationName":"sourceDestCheck" - } - } - }, - "ResetSnapshotAttributeRequest":{ - "type":"structure", - "required":[ - "SnapshotId", - "Attribute" - ], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "SnapshotId":{ - "shape":"String", - "documentation":"

The ID of the snapshot.

" - }, - "Attribute":{ - "shape":"SnapshotAttributeName", - "documentation":"

The attribute to reset (currently only the attribute for permission to create volumes can be reset).

" - } - } - }, - "ResourceIdList":{ - "type":"list", - "member":{"shape":"String"} - }, - "ResourceType":{ - "type":"string", - "enum":[ - "customer-gateway", - "dhcp-options", - "image", - "instance", - "internet-gateway", - "network-acl", - "network-interface", - "reserved-instances", - "route-table", - "snapshot", - "spot-instances-request", - "subnet", - "security-group", - "volume", - "vpc", - "vpn-connection", - "vpn-gateway" - ] - }, - "RestorableByStringList":{ - "type":"list", - "member":{"shape":"String"} - }, - "RevokeSecurityGroupEgressRequest":{ - "type":"structure", - "required":["GroupId"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "GroupId":{ - "shape":"String", - "documentation":"

The ID of the security group.

", - "locationName":"groupId" - }, - "SourceSecurityGroupName":{ - "shape":"String", - "documentation":"

[EC2-Classic, default VPC] The name of the destination security group. You can't specify a destination security group and a CIDR IP address range.

", - "locationName":"sourceSecurityGroupName" - }, - "SourceSecurityGroupOwnerId":{ - "shape":"String", - "documentation":"

The ID of the destination security group. You can't specify a destination security group and a CIDR IP address range.

", - "locationName":"sourceSecurityGroupOwnerId" - }, - "IpProtocol":{ - "shape":"String", - "documentation":"

The IP protocol name (tcp, udp, icmp) or number (see Protocol Numbers). Use -1 to specify all.

", - "locationName":"ipProtocol" - }, - "FromPort":{ - "shape":"Integer", - "documentation":"

The start of port range for the TCP and UDP protocols, or an ICMP type number. For the ICMP type number, use -1 to specify all ICMP types.

", - "locationName":"fromPort" - }, - "ToPort":{ - "shape":"Integer", - "documentation":"

The end of port range for the TCP and UDP protocols, or an ICMP code number. For the ICMP code number, use -1 to specify all ICMP codes for the ICMP type.

", - "locationName":"toPort" - }, - "CidrIp":{ - "shape":"String", - "documentation":"

The CIDR IP address range. You can't specify this parameter when specifying a source security group.

", - "locationName":"cidrIp" - }, - "IpPermissions":{ - "shape":"IpPermissionList", - "documentation":"

A set of IP permissions. You can't specify a destination security group and a CIDR IP address range.

", - "locationName":"ipPermissions" - } - } - }, - "RevokeSecurityGroupIngressRequest":{ - "type":"structure", - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "GroupName":{ - "shape":"String", - "documentation":"

[EC2-Classic, default VPC] The name of the security group.

" - }, - "GroupId":{ - "shape":"String", - "documentation":"

The ID of the security group.

" - }, - "SourceSecurityGroupName":{ - "shape":"String", - "documentation":"

[EC2-Classic, default VPC] The name of the source security group. You can't specify a source security group and a CIDR IP address range.

" - }, - "SourceSecurityGroupOwnerId":{ - "shape":"String", - "documentation":"

The ID of the source security group. You can't specify a source security group and a CIDR IP address range.

" - }, - "IpProtocol":{ - "shape":"String", - "documentation":"

The IP protocol name (tcp, udp, icmp) or number (see Protocol Numbers). Use -1 to specify all.

" - }, - "FromPort":{ - "shape":"Integer", - "documentation":"

The start of port range for the TCP and UDP protocols, or an ICMP type number. For the ICMP type number, use -1 to specify all ICMP types.

" - }, - "ToPort":{ - "shape":"Integer", - "documentation":"

The end of port range for the TCP and UDP protocols, or an ICMP code number. For the ICMP code number, use -1 to specify all ICMP codes for the ICMP type.

" - }, - "CidrIp":{ - "shape":"String", - "documentation":"

The CIDR IP address range. You can't specify this parameter when specifying a source security group.

" - }, - "IpPermissions":{ - "shape":"IpPermissionList", - "documentation":"

A set of IP permissions. You can't specify a source security group and a CIDR IP address range.

" - } - } - }, - "Route":{ - "type":"structure", - "members":{ - "DestinationCidrBlock":{ - "shape":"String", - "documentation":"

The CIDR block used for the destination match.

", - "locationName":"destinationCidrBlock" - }, - "GatewayId":{ - "shape":"String", - "documentation":"

The ID of a gateway attached to your VPC.

", - "locationName":"gatewayId" - }, - "InstanceId":{ - "shape":"String", - "documentation":"

The ID of a NAT instance in your VPC.

", - "locationName":"instanceId" - }, - "InstanceOwnerId":{ - "shape":"String", - "documentation":"

The AWS account ID of the owner of the instance.

", - "locationName":"instanceOwnerId" - }, - "NetworkInterfaceId":{ - "shape":"String", - "documentation":"

The ID of the network interface.

", - "locationName":"networkInterfaceId" - }, - "VpcPeeringConnectionId":{ - "shape":"String", - "documentation":"

The ID of the VPC peering connection.

", - "locationName":"vpcPeeringConnectionId" - }, - "State":{ - "shape":"RouteState", - "documentation":"

The state of the route. The blackhole state indicates that the route's target isn't available (for example, the specified gateway isn't attached to the VPC, or the specified NAT instance has been terminated).

", - "locationName":"state" - }, - "Origin":{ - "shape":"RouteOrigin", - "documentation":"

Describes how the route was created.

", - "locationName":"origin" - } - }, - "documentation":"

Describes a route in a route table.

" - }, - "RouteList":{ - "type":"list", - "member":{ - "shape":"Route", - "locationName":"item" - } - }, - "RouteOrigin":{ - "type":"string", - "enum":[ - "CreateRouteTable", - "CreateRoute", - "EnableVgwRoutePropagation" - ] - }, - "RouteState":{ - "type":"string", - "enum":[ - "active", - "blackhole" - ] - }, - "RouteTable":{ - "type":"structure", - "members":{ - "RouteTableId":{ - "shape":"String", - "documentation":"

The ID of the route table.

", - "locationName":"routeTableId" - }, - "VpcId":{ - "shape":"String", - "documentation":"

The ID of the VPC.

", - "locationName":"vpcId" - }, - "Routes":{ - "shape":"RouteList", - "documentation":"

The routes in the route table.

", - "locationName":"routeSet" - }, - "Associations":{ - "shape":"RouteTableAssociationList", - "documentation":"

The associations between the route table and one or more subnets.

", - "locationName":"associationSet" - }, - "Tags":{ - "shape":"TagList", - "documentation":"

Any tags assigned to the route table.

", - "locationName":"tagSet" - }, - "PropagatingVgws":{ - "shape":"PropagatingVgwList", - "documentation":"

Any virtual private gateway (VGW) propagating routes.

", - "locationName":"propagatingVgwSet" - } - }, - "documentation":"

Describes a route table.

" - }, - "RouteTableAssociation":{ - "type":"structure", - "members":{ - "RouteTableAssociationId":{ - "shape":"String", - "documentation":"

The ID of the association between a route table and a subnet.

", - "locationName":"routeTableAssociationId" - }, - "RouteTableId":{ - "shape":"String", - "documentation":"

The ID of the route table.

", - "locationName":"routeTableId" - }, - "SubnetId":{ - "shape":"String", - "documentation":"

The ID of the subnet.

", - "locationName":"subnetId" - }, - "Main":{ - "shape":"Boolean", - "documentation":"

Indicates whether this is the main route table.

", - "locationName":"main" - } - }, - "documentation":"

Describes an association between a route table and a subnet.

" - }, - "RouteTableAssociationList":{ - "type":"list", - "member":{ - "shape":"RouteTableAssociation", - "locationName":"item" - } - }, - "RouteTableList":{ - "type":"list", - "member":{ - "shape":"RouteTable", - "locationName":"item" - } - }, - "RuleAction":{ - "type":"string", - "enum":[ - "allow", - "deny" - ] - }, - "RunInstancesMonitoringEnabled":{ - "type":"structure", - "required":["Enabled"], - "members":{ - "Enabled":{ - "shape":"Boolean", - "documentation":"

Indicates whether monitoring is enabled for the instance.

", - "locationName":"enabled" - } - }, - "documentation":"

Describes the monitoring for the instance.

" - }, - "RunInstancesRequest":{ - "type":"structure", - "required":[ - "ImageId", - "MinCount", - "MaxCount" - ], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "ImageId":{ - "shape":"String", - "documentation":"

The ID of the AMI, which you can get by calling DescribeImages.

" - }, - "MinCount":{ - "shape":"Integer", - "documentation":"

The minimum number of instances to launch. If you specify a minimum that is more instances than Amazon EC2 can launch in the target Availability Zone, Amazon EC2 launches no instances.

Constraints: Between 1 and the maximum number you're allowed for the specified instance type. For more information about the default limits, and how to request an increase, see How many instances can I run in Amazon EC2 in the Amazon EC2 General FAQ.

" - }, - "MaxCount":{ - "shape":"Integer", - "documentation":"

The maximum number of instances to launch. If you specify more instances than Amazon EC2 can launch in the target Availability Zone, Amazon EC2 launches the largest possible number of instances above MinCount.

Constraints: Between 1 and the maximum number you're allowed for the specified instance type. For more information about the default limits, and how to request an increase, see How many instances can I run in Amazon EC2 in the Amazon EC2 General FAQ.

" - }, - "KeyName":{ - "shape":"String", - "documentation":"

The name of the key pair. You can create a key pair using CreateKeyPair or ImportKeyPair.

If you launch an instance without specifying a key pair, you can't connect to the instance.

" - }, - "SecurityGroups":{ - "shape":"SecurityGroupStringList", - "documentation":"

[EC2-Classic, default VPC] One or more security group names. For a nondefault VPC, you must use security group IDs instead.

Default: Amazon EC2 uses the default security group.

", - "locationName":"SecurityGroup" - }, - "SecurityGroupIds":{ - "shape":"SecurityGroupIdStringList", - "documentation":"

One or more security group IDs. You can create a security group using CreateSecurityGroup.

Default: Amazon EC2 uses the default security group.

", - "locationName":"SecurityGroupId" - }, - "UserData":{ - "shape":"String", - "documentation":"

The Base64-encoded MIME user data for the instances.

" - }, - "InstanceType":{ - "shape":"InstanceType", - "documentation":"

The instance type. For more information, see Instance Types in the Amazon Elastic Compute Cloud User Guide for Linux.

Default: m1.small

" - }, - "Placement":{ - "shape":"Placement", - "documentation":"

The placement for the instance.

" - }, - "KernelId":{ - "shape":"String", - "documentation":"

The ID of the kernel.

We recommend that you use PV-GRUB instead of kernels and RAM disks. For more information, see PV-GRUB in the Amazon Elastic Compute Cloud User Guide for Linux.

" - }, - "RamdiskId":{ - "shape":"String", - "documentation":"

The ID of the RAM disk.

We recommend that you use PV-GRUB instead of kernels and RAM disks. For more information, see PV-GRUB in the Amazon Elastic Compute Cloud User Guide for Linux.

" - }, - "BlockDeviceMappings":{ - "shape":"BlockDeviceMappingRequestList", - "documentation":"

The block device mapping.

", - "locationName":"BlockDeviceMapping" - }, - "Monitoring":{ - "shape":"RunInstancesMonitoringEnabled", - "documentation":"

The monitoring for the instance.

" - }, - "SubnetId":{ - "shape":"String", - "documentation":"

[EC2-VPC] The ID of the subnet to launch the instance into.

" - }, - "DisableApiTermination":{ - "shape":"Boolean", - "documentation":"

If you set this parameter to true, you can't terminate the instance using the Amazon EC2 console, CLI, or API; otherwise, you can. If you set this parameter to true and then later want to be able to terminate the instance, you must first change the value of the disableApiTermination attribute to false using ModifyInstanceAttribute. Alternatively, if you set InstanceInitiatedShutdownBehavior to terminate, you can terminate the instance by running the shutdown command from the instance.

Default: false

", - "locationName":"disableApiTermination" - }, - "InstanceInitiatedShutdownBehavior":{ - "shape":"ShutdownBehavior", - "documentation":"

Indicates whether an instance stops or terminates when you initiate shutdown from the instance (using the operating system command for system shutdown).

Default: stop

", - "locationName":"instanceInitiatedShutdownBehavior" - }, - "PrivateIpAddress":{ - "shape":"String", - "documentation":"

[EC2-VPC] The primary IP address. You must specify a value from the IP address range of the subnet.

Only one private IP address can be designated as primary. Therefore, you can't specify this parameter if PrivateIpAddresses.n.Primary is set to true and PrivateIpAddresses.n.PrivateIpAddress is set to an IP address.

Default: We select an IP address from the IP address range of the subnet.

", - "locationName":"privateIpAddress" - }, - "ClientToken":{ - "shape":"String", - "documentation":"

Unique, case-sensitive identifier you provide to ensure the idempotency of the request. For more information, see How to Ensure Idempotency in the Amazon Elastic Compute Cloud User Guide for Linux.

Constraints: Maximum 64 ASCII characters

", - "locationName":"clientToken" - }, - "AdditionalInfo":{ - "shape":"String", - "documentation":"

Reserved.

", - "locationName":"additionalInfo" - }, - "NetworkInterfaces":{ - "shape":"InstanceNetworkInterfaceSpecificationList", - "documentation":"

One or more network interfaces.

", - "locationName":"networkInterface" - }, - "IamInstanceProfile":{ - "shape":"IamInstanceProfileSpecification", - "documentation":"

The IAM instance profile.

", - "locationName":"iamInstanceProfile" - }, - "EbsOptimized":{ - "shape":"Boolean", - "documentation":"

Indicates whether the instance is optimized for 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.

Default: false

", - "locationName":"ebsOptimized" - } - } - }, - "S3Storage":{ - "type":"structure", - "members":{ - "Bucket":{ - "shape":"String", - "documentation":"

The bucket in which to store the AMI. You can specify a bucket that you already own or a new bucket that Amazon EC2 creates on your behalf. If you specify a bucket that belongs to someone else, Amazon EC2 returns an error.

", - "locationName":"bucket" - }, - "Prefix":{ - "shape":"String", - "documentation":"

The beginning of the file name of the AMI.

", - "locationName":"prefix" - }, - "AWSAccessKeyId":{ - "shape":"String", - "documentation":"

The access key ID of the owner of the bucket. Before you specify a value for your access key ID, review and follow the guidance in Best Practices for Managing AWS Access Keys.

" - }, - "UploadPolicy":{ - "shape":"Blob", - "documentation":"

A Base64-encoded Amazon S3 upload policy that gives Amazon EC2 permission to upload items into Amazon S3 on your behalf.

", - "locationName":"uploadPolicy" - }, - "UploadPolicySignature":{ - "shape":"String", - "documentation":"

The signature of the Base64 encoded JSON document.

", - "locationName":"uploadPolicySignature" - } - }, - "documentation":"

Describes the storage parameters for S3 and S3 buckets for an instance store-backed AMI.

" - }, - "SecurityGroup":{ - "type":"structure", - "members":{ - "OwnerId":{ - "shape":"String", - "documentation":"

The AWS account ID of the owner of the security group.

", - "locationName":"ownerId" - }, - "GroupName":{ - "shape":"String", - "documentation":"

The name of the security group.

", - "locationName":"groupName" - }, - "GroupId":{ - "shape":"String", - "documentation":"

The ID of the security group.

", - "locationName":"groupId" - }, - "Description":{ - "shape":"String", - "documentation":"

A description of the security group.

", - "locationName":"groupDescription" - }, - "IpPermissions":{ - "shape":"IpPermissionList", - "documentation":"

One or more inbound rules associated with the security group.

", - "locationName":"ipPermissions" - }, - "IpPermissionsEgress":{ - "shape":"IpPermissionList", - "documentation":"

[EC2-VPC] One or more outbound rules associated with the security group.

", - "locationName":"ipPermissionsEgress" - }, - "VpcId":{ - "shape":"String", - "documentation":"

[EC2-VPC] The ID of the VPC for the security group.

", - "locationName":"vpcId" - }, - "Tags":{ - "shape":"TagList", - "documentation":"

Any tags assigned to the security group.

", - "locationName":"tagSet" - } - }, - "documentation":"

Describes a security group

" - }, - "SecurityGroupIdStringList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"SecurityGroupId" - } - }, - "SecurityGroupList":{ - "type":"list", - "member":{ - "shape":"SecurityGroup", - "locationName":"item" - } - }, - "SecurityGroupStringList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"SecurityGroup" - } - }, - "ShutdownBehavior":{ - "type":"string", - "enum":[ - "stop", - "terminate" - ] - }, - "Snapshot":{ - "type":"structure", - "members":{ - "SnapshotId":{ - "shape":"String", - "documentation":"

The ID of the snapshot.

", - "locationName":"snapshotId" - }, - "VolumeId":{ - "shape":"String", - "documentation":"

The ID of the volume.

", - "locationName":"volumeId" - }, - "State":{ - "shape":"SnapshotState", - "documentation":"

The snapshot state.

", - "locationName":"status" - }, - "StartTime":{ - "shape":"DateTime", - "documentation":"

The time stamp when the snapshot was initiated.

", - "locationName":"startTime" - }, - "Progress":{ - "shape":"String", - "documentation":"

The progress of the snapshot, as a percentage.

", - "locationName":"progress" - }, - "OwnerId":{ - "shape":"String", - "documentation":"

The AWS account ID of the Amazon EBS snapshot owner.

", - "locationName":"ownerId" - }, - "Description":{ - "shape":"String", - "documentation":"

The description for the snapshot.

", - "locationName":"description" - }, - "VolumeSize":{ - "shape":"Integer", - "documentation":"

The size of the volume, in GiB.

", - "locationName":"volumeSize" - }, - "OwnerAlias":{ - "shape":"String", - "documentation":"

The AWS account alias (for example, amazon, self) or AWS account ID that owns the snapshot.

", - "locationName":"ownerAlias" - }, - "Tags":{ - "shape":"TagList", - "documentation":"

Any tags assigned to the snapshot.

", - "locationName":"tagSet" - }, - "Encrypted":{ - "shape":"Boolean", - "documentation":"

Indicates whether the snapshot is encrypted.

", - "locationName":"encrypted" - }, - "KmsKeyId":{ - "shape":"String", - "documentation":"

The full ARN of the AWS Key Management Service (KMS) master key that was used to protect the volume encryption key for the parent volume.

", - "locationName":"kmsKeyId" - } - }, - "documentation":"

Describes a snapshot.

" - }, - "SnapshotAttributeName":{ - "type":"string", - "enum":[ - "productCodes", - "createVolumePermission" - ] - }, - "SnapshotIdStringList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"SnapshotId" - } - }, - "SnapshotList":{ - "type":"list", - "member":{ - "shape":"Snapshot", - "locationName":"item" - } - }, - "SnapshotState":{ - "type":"string", - "enum":[ - "pending", - "completed", - "error" - ] - }, - "SpotDatafeedSubscription":{ - "type":"structure", - "members":{ - "OwnerId":{ - "shape":"String", - "documentation":"

The AWS account ID of the account.

", - "locationName":"ownerId" - }, - "Bucket":{ - "shape":"String", - "documentation":"

The Amazon S3 bucket where the Spot Instance data feed is located.

", - "locationName":"bucket" - }, - "Prefix":{ - "shape":"String", - "documentation":"

The prefix that is prepended to data feed files.

", - "locationName":"prefix" - }, - "State":{ - "shape":"DatafeedSubscriptionState", - "documentation":"

The state of the Spot Instance data feed subscription.

", - "locationName":"state" - }, - "Fault":{ - "shape":"SpotInstanceStateFault", - "documentation":"

The fault codes for the Spot Instance request, if any.

", - "locationName":"fault" - } - }, - "documentation":"

Describes the data feed for a Spot Instance.

" - }, - "SpotInstanceRequest":{ - "type":"structure", - "members":{ - "SpotInstanceRequestId":{ - "shape":"String", - "documentation":"

The ID of the Spot Instance request.

", - "locationName":"spotInstanceRequestId" - }, - "SpotPrice":{ - "shape":"String", - "documentation":"

The maximum hourly price for any Spot Instance launched to fulfill the request.

", - "locationName":"spotPrice" - }, - "Type":{ - "shape":"SpotInstanceType", - "documentation":"

The Spot Instance request type.

", - "locationName":"type" - }, - "State":{ - "shape":"SpotInstanceState", - "documentation":"

The state of the Spot Instance request. Spot bid status information can help you track your Spot Instance requests. For more information, see Spot Bid Status in the Amazon Elastic Compute Cloud User Guide for Linux.

", - "locationName":"state" - }, - "Fault":{ - "shape":"SpotInstanceStateFault", - "documentation":"

The fault codes for the Spot Instance request, if any.

", - "locationName":"fault" - }, - "Status":{ - "shape":"SpotInstanceStatus", - "documentation":"

The status code and status message describing the Spot Instance request.

", - "locationName":"status" - }, - "ValidFrom":{ - "shape":"DateTime", - "documentation":"

The start date of the request. If this is a one-time request, the request becomes active at this date and time and remains active until all instances launch, the request expires, or the request is canceled. If the request is persistent, the request becomes active at this date and time and remains active until it expires or is canceled.

", - "locationName":"validFrom" - }, - "ValidUntil":{ - "shape":"DateTime", - "documentation":"

The end date of the request. If this is a one-time request, the request remains active until all instances launch, the request is canceled, or this date is reached. If the request is persistent, it remains active until it is canceled or this date is reached.

", - "locationName":"validUntil" - }, - "LaunchGroup":{ - "shape":"String", - "documentation":"

The instance launch group. Launch groups are Spot Instances that launch together and terminate together.

", - "locationName":"launchGroup" - }, - "AvailabilityZoneGroup":{ - "shape":"String", - "documentation":"

The Availability Zone group. If you specify the same Availability Zone group for all Spot Instance requests, all Spot Instances are launched in the same Availability Zone.

", - "locationName":"availabilityZoneGroup" - }, - "LaunchSpecification":{ - "shape":"LaunchSpecification", - "documentation":"

Additional information for launching instances.

", - "locationName":"launchSpecification" - }, - "InstanceId":{ - "shape":"String", - "documentation":"

The instance ID, if an instance has been launched to fulfill the Spot Instance request.

", - "locationName":"instanceId" - }, - "CreateTime":{ - "shape":"DateTime", - "documentation":"

The time stamp when the Spot Instance request was created.

", - "locationName":"createTime" - }, - "ProductDescription":{ - "shape":"RIProductDescription", - "documentation":"

The product description associated with the Spot Instance.

", - "locationName":"productDescription" - }, - "Tags":{ - "shape":"TagList", - "documentation":"

Any tags assigned to the resource.

", - "locationName":"tagSet" - }, - "LaunchedAvailabilityZone":{ - "shape":"String", - "documentation":"

The Availability Zone in which the bid is launched.

", - "locationName":"launchedAvailabilityZone" - } - }, - "documentation":"

Describe a Spot Instance request.

" - }, - "SpotInstanceRequestIdList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"SpotInstanceRequestId" - } - }, - "SpotInstanceRequestList":{ - "type":"list", - "member":{ - "shape":"SpotInstanceRequest", - "locationName":"item" - } - }, - "SpotInstanceState":{ - "type":"string", - "enum":[ - "open", - "active", - "closed", - "cancelled", - "failed" - ] - }, - "SpotInstanceStateFault":{ - "type":"structure", - "members":{ - "Code":{ - "shape":"String", - "documentation":"

The reason code for the Spot Instance state change.

", - "locationName":"code" - }, - "Message":{ - "shape":"String", - "documentation":"

The message for the Spot Instance state change.

", - "locationName":"message" - } - }, - "documentation":"

Describes a Spot Instance state change.

" - }, - "SpotInstanceStatus":{ - "type":"structure", - "members":{ - "Code":{ - "shape":"String", - "documentation":"

The status code of the request.

", - "locationName":"code" - }, - "UpdateTime":{ - "shape":"DateTime", - "documentation":"

The time of the most recent status update.

", - "locationName":"updateTime" - }, - "Message":{ - "shape":"String", - "documentation":"

The description for the status code for the Spot request.

", - "locationName":"message" - } - }, - "documentation":"

Describes a Spot Instance request.

" - }, - "SpotInstanceType":{ - "type":"string", - "enum":[ - "one-time", - "persistent" - ] - }, - "SpotPlacement":{ - "type":"structure", - "members":{ - "AvailabilityZone":{ - "shape":"String", - "documentation":"

The Availability Zone.

", - "locationName":"availabilityZone" - }, - "GroupName":{ - "shape":"String", - "documentation":"

The name of the placement group (for cluster instances).

", - "locationName":"groupName" - } - }, - "documentation":"

Describes Spot Instance placement.

" - }, - "SpotPrice":{ - "type":"structure", - "members":{ - "InstanceType":{ - "shape":"InstanceType", - "documentation":"

The instance type.

", - "locationName":"instanceType" - }, - "ProductDescription":{ - "shape":"RIProductDescription", - "documentation":"

A general description of the AMI.

", - "locationName":"productDescription" - }, - "SpotPrice":{ - "shape":"String", - "documentation":"

The maximum price you will pay to launch one or more Spot Instances.

", - "locationName":"spotPrice" - }, - "Timestamp":{ - "shape":"DateTime", - "documentation":"

The date and time the request was created.

", - "locationName":"timestamp" - }, - "AvailabilityZone":{ - "shape":"String", - "documentation":"

The Availability Zone.

", - "locationName":"availabilityZone" - } - }, - "documentation":"

Describes the Spot Price.

" - }, - "SpotPriceHistoryList":{ - "type":"list", - "member":{ - "shape":"SpotPrice", - "locationName":"item" - } - }, - "StartInstancesRequest":{ - "type":"structure", - "required":["InstanceIds"], - "members":{ - "InstanceIds":{ - "shape":"InstanceIdStringList", - "documentation":"

One or more instance IDs.

", - "locationName":"InstanceId" - }, - "AdditionalInfo":{ - "shape":"String", - "documentation":"

Reserved.

", - "locationName":"additionalInfo" - }, - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - } - } - }, - "StartInstancesResult":{ - "type":"structure", - "members":{ - "StartingInstances":{ - "shape":"InstanceStateChangeList", - "documentation":"

Information about one or more started instances.

", - "locationName":"instancesSet" - } - } - }, - "StateReason":{ - "type":"structure", - "members":{ - "Code":{ - "shape":"String", - "documentation":"

The reason code for the state change.

", - "locationName":"code" - }, - "Message":{ - "shape":"String", - "documentation":"

The message for the state change.

", - "locationName":"message" - } - }, - "documentation":"

Describes a state change.

" - }, - "StatusName":{ - "type":"string", - "enum":["reachability"] - }, - "StatusType":{ - "type":"string", - "enum":[ - "passed", - "failed", - "insufficient-data" - ] - }, - "StopInstancesRequest":{ - "type":"structure", - "required":["InstanceIds"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "InstanceIds":{ - "shape":"InstanceIdStringList", - "documentation":"

One or more instance IDs.

", - "locationName":"InstanceId" - }, - "Force":{ - "shape":"Boolean", - "documentation":"

Forces the instances to stop. The instances do not have an opportunity to flush file system caches or file system metadata. If you use this option, you must perform file system check and repair procedures. This option is not recommended for Windows instances.

Default: false

", - "locationName":"force" - } - } - }, - "StopInstancesResult":{ - "type":"structure", - "members":{ - "StoppingInstances":{ - "shape":"InstanceStateChangeList", - "documentation":"

Information about one or more stopped instances.

", - "locationName":"instancesSet" - } - } - }, - "Storage":{ - "type":"structure", - "members":{ - "S3":{ - "shape":"S3Storage", - "documentation":"

An Amazon S3 storage location.

" - } - }, - "documentation":"

Describes the storage location for an instance store-backed AMI.

" - }, - "String":{"type":"string"}, - "Subnet":{ - "type":"structure", - "members":{ - "SubnetId":{ - "shape":"String", - "documentation":"

The ID of the subnet.

", - "locationName":"subnetId" - }, - "State":{ - "shape":"SubnetState", - "documentation":"

The current state of the subnet.

", - "locationName":"state" - }, - "VpcId":{ - "shape":"String", - "documentation":"

The ID of the VPC the subnet is in.

", - "locationName":"vpcId" - }, - "CidrBlock":{ - "shape":"String", - "documentation":"

The CIDR block assigned to the subnet.

", - "locationName":"cidrBlock" - }, - "AvailableIpAddressCount":{ - "shape":"Integer", - "documentation":"

The number of unused IP addresses in the subnet. Note that the IP addresses for any stopped instances are considered unavailable.

", - "locationName":"availableIpAddressCount" - }, - "AvailabilityZone":{ - "shape":"String", - "documentation":"

The Availability Zone of the subnet.

", - "locationName":"availabilityZone" - }, - "DefaultForAz":{ - "shape":"Boolean", - "documentation":"

Indicates whether this is the default subnet for the Availability Zone.

", - "locationName":"defaultForAz" - }, - "MapPublicIpOnLaunch":{ - "shape":"Boolean", - "documentation":"

Indicates whether instances launched in this subnet receive a public IP address.

", - "locationName":"mapPublicIpOnLaunch" - }, - "Tags":{ - "shape":"TagList", - "documentation":"

Any tags assigned to the subnet.

", - "locationName":"tagSet" - } - }, - "documentation":"

Describes a subnet.

" - }, - "SubnetIdStringList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"SubnetId" - } - }, - "SubnetList":{ - "type":"list", - "member":{ - "shape":"Subnet", - "locationName":"item" - } - }, - "SubnetState":{ - "type":"string", - "enum":[ - "pending", - "available" - ] - }, - "SummaryStatus":{ - "type":"string", - "enum":[ - "ok", - "impaired", - "insufficient-data", - "not-applicable" - ] - }, - "Tag":{ - "type":"structure", - "members":{ - "Key":{ - "shape":"String", - "documentation":"

The key of the tag.

Constraints: Tag keys are case-sensitive and accept a maximum of 127 Unicode characters. May not begin with aws:

", - "locationName":"key" - }, - "Value":{ - "shape":"String", - "documentation":"

The value of the tag.

Constraints: Tag values are case-sensitive and accept a maximum of 255 Unicode characters.

", - "locationName":"value" - } - }, - "documentation":"

Describes a tag.

" - }, - "TagDescription":{ - "type":"structure", - "members":{ - "ResourceId":{ - "shape":"String", - "documentation":"

The ID of the resource. For example, ami-1a2b3c4d.

", - "locationName":"resourceId" - }, - "ResourceType":{ - "shape":"ResourceType", - "documentation":"

The resource type.

", - "locationName":"resourceType" - }, - "Key":{ - "shape":"String", - "documentation":"

The tag key.

", - "locationName":"key" - }, - "Value":{ - "shape":"String", - "documentation":"

The tag value.

", - "locationName":"value" - } - }, - "documentation":"

Describes a tag.

" - }, - "TagDescriptionList":{ - "type":"list", - "member":{ - "shape":"TagDescription", - "locationName":"item" - } - }, - "TagList":{ - "type":"list", - "member":{ - "shape":"Tag", - "locationName":"item" - } - }, - "TelemetryStatus":{ - "type":"string", - "enum":[ - "UP", - "DOWN" - ] - }, - "Tenancy":{ - "type":"string", - "enum":[ - "default", - "dedicated" - ] - }, - "TerminateInstancesRequest":{ - "type":"structure", - "required":["InstanceIds"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "InstanceIds":{ - "shape":"InstanceIdStringList", - "documentation":"

One or more instance IDs.

", - "locationName":"InstanceId" - } - } - }, - "TerminateInstancesResult":{ - "type":"structure", - "members":{ - "TerminatingInstances":{ - "shape":"InstanceStateChangeList", - "documentation":"

Information about one or more terminated instances.

", - "locationName":"instancesSet" - } - } - }, - "UnassignPrivateIpAddressesRequest":{ - "type":"structure", - "required":[ - "NetworkInterfaceId", - "PrivateIpAddresses" - ], - "members":{ - "NetworkInterfaceId":{ - "shape":"String", - "documentation":"

The ID of the network interface.

", - "locationName":"networkInterfaceId" - }, - "PrivateIpAddresses":{ - "shape":"PrivateIpAddressStringList", - "documentation":"

The secondary private IP addresses to unassign from the network interface. You can specify this option multiple times to unassign more than one IP address.

", - "locationName":"privateIpAddress" - } - } - }, - "UnmonitorInstancesRequest":{ - "type":"structure", - "required":["InstanceIds"], - "members":{ - "DryRun":{ - "shape":"Boolean", - "locationName":"dryRun" - }, - "InstanceIds":{ - "shape":"InstanceIdStringList", - "documentation":"

One or more instance IDs.

", - "locationName":"InstanceId" - } - } - }, - "UnmonitorInstancesResult":{ - "type":"structure", - "members":{ - "InstanceMonitorings":{ - "shape":"InstanceMonitoringList", - "documentation":"

Monitoring information for one or more instances.

", - "locationName":"instancesSet" - } - } - }, - "UserData":{ - "type":"structure", - "members":{ - "Data":{ - "shape":"String", - "locationName":"data" - } - } - }, - "UserGroupStringList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"UserGroup" - } - }, - "UserIdGroupPair":{ - "type":"structure", - "members":{ - "UserId":{ - "shape":"String", - "documentation":"

The ID of an AWS account.

", - "locationName":"userId" - }, - "GroupName":{ - "shape":"String", - "documentation":"

The ID of the security group owned by the specified AWS account.

", - "locationName":"groupName" - }, - "GroupId":{ - "shape":"String", - "documentation":"

The name of the security group in the specified AWS account.

", - "locationName":"groupId" - } - }, - "documentation":"

Describes a security group and AWS account ID pair for EC2-Classic.

" - }, - "UserIdGroupPairList":{ - "type":"list", - "member":{ - "shape":"UserIdGroupPair", - "locationName":"item" - } - }, - "UserIdStringList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"UserId" - } - }, - "ValueStringList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"item" - } - }, - "VgwTelemetry":{ - "type":"structure", - "members":{ - "OutsideIpAddress":{ - "shape":"String", - "documentation":"

The Internet-routable IP address of the virtual private gateway's outside interface.

", - "locationName":"outsideIpAddress" - }, - "Status":{ - "shape":"TelemetryStatus", - "documentation":"

The status of the VPN tunnel.

", - "locationName":"status" - }, - "LastStatusChange":{ - "shape":"DateTime", - "documentation":"

The date and time of the last change in status.

", - "locationName":"lastStatusChange" - }, - "StatusMessage":{ - "shape":"String", - "documentation":"

If an error occurs, a description of the error.

", - "locationName":"statusMessage" - }, - "AcceptedRouteCount":{ - "shape":"Integer", - "documentation":"

The number of accepted routes.

", - "locationName":"acceptedRouteCount" - } - }, - "documentation":"

Describes telemetry for a VPN tunnel.

" - }, - "VgwTelemetryList":{ - "type":"list", - "member":{ - "shape":"VgwTelemetry", - "locationName":"item" - } - }, - "VirtualizationType":{ - "type":"string", - "enum":[ - "hvm", - "paravirtual" - ] - }, - "Volume":{ - "type":"structure", - "members":{ - "VolumeId":{ - "shape":"String", - "documentation":"

The ID of the volume.

", - "locationName":"volumeId" - }, - "Size":{ - "shape":"Integer", - "documentation":"

The size of the volume, in GiBs.

", - "locationName":"size" - }, - "SnapshotId":{ - "shape":"String", - "documentation":"

The snapshot from which the volume was created, if applicable.

", - "locationName":"snapshotId" - }, - "AvailabilityZone":{ - "shape":"String", - "documentation":"

The Availability Zone for the volume.

", - "locationName":"availabilityZone" - }, - "State":{ - "shape":"VolumeState", - "documentation":"

The volume state.

", - "locationName":"status" - }, - "CreateTime":{ - "shape":"DateTime", - "documentation":"

The time stamp when volume creation was initiated.

", - "locationName":"createTime" - }, - "Attachments":{ - "shape":"VolumeAttachmentList", - "locationName":"attachmentSet" - }, - "Tags":{ - "shape":"TagList", - "documentation":"

Any tags assigned to the volume.

", - "locationName":"tagSet" - }, - "VolumeType":{ - "shape":"VolumeType", - "documentation":"

The volume type. This can be gp2 for General Purpose (SSD) volumes, io1 for Provisioned IOPS (SSD) volumes, or standard for Magnetic volumes.

", - "locationName":"volumeType" - }, - "Iops":{ - "shape":"Integer", - "documentation":"

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. For more information on General Purpose (SSD) baseline performance, I/O credits, and bursting, see Amazon EBS Volume Types in the Amazon Elastic Compute Cloud User Guide for Linux.

Constraint: Range is 100 to 4000 for Provisioned IOPS (SSD) volumes and 3 to 3072 for General Purpose (SSD) volumes.

Condition: This parameter is required for requests to create io1 volumes; it is not used in requests to create standard or gp2 volumes.

", - "locationName":"iops" - }, - "Encrypted":{ - "shape":"Boolean", - "documentation":"

Indicates whether the volume will be encrypted.

", - "locationName":"encrypted" - }, - "KmsKeyId":{ - "shape":"String", - "documentation":"

The full ARN of the AWS Key Management Service (KMS) master key that was used to protect the volume encryption key for the volume.

", - "locationName":"kmsKeyId" - } - }, - "documentation":"

Describes a volume.

" - }, - "VolumeAttachment":{ - "type":"structure", - "members":{ - "VolumeId":{ - "shape":"String", - "documentation":"

The ID of the volume.

", - "locationName":"volumeId" - }, - "InstanceId":{ - "shape":"String", - "documentation":"

The ID of the instance.

", - "locationName":"instanceId" - }, - "Device":{ - "shape":"String", - "documentation":"

The device name.

", - "locationName":"device" - }, - "State":{ - "shape":"VolumeAttachmentState", - "documentation":"

The attachment state of the volume.

", - "locationName":"status" - }, - "AttachTime":{ - "shape":"DateTime", - "documentation":"

The time stamp when the attachment initiated.

", - "locationName":"attachTime" - }, - "DeleteOnTermination":{ - "shape":"Boolean", - "documentation":"

Indicates whether the Amazon EBS volume is deleted on instance termination.

", - "locationName":"deleteOnTermination" - } - }, - "documentation":"

Describes volume attachment details.

" - }, - "VolumeAttachmentList":{ - "type":"list", - "member":{ - "shape":"VolumeAttachment", - "locationName":"item" - } - }, - "VolumeAttachmentState":{ - "type":"string", - "enum":[ - "attaching", - "attached", - "detaching", - "detached" - ] - }, - "VolumeAttributeName":{ - "type":"string", - "enum":[ - "autoEnableIO", - "productCodes" - ] - }, - "VolumeDetail":{ - "type":"structure", - "required":["Size"], - "members":{ - "Size":{ - "shape":"Long", - "documentation":"

The size of the volume, in GiB.

", - "locationName":"size" - } - }, - "documentation":"

Describes an Amazon EBS volume.

" - }, - "VolumeIdStringList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"VolumeId" - } - }, - "VolumeList":{ - "type":"list", - "member":{ - "shape":"Volume", - "locationName":"item" - } - }, - "VolumeState":{ - "type":"string", - "enum":[ - "creating", - "available", - "in-use", - "deleting", - "deleted", - "error" - ] - }, - "VolumeStatusAction":{ - "type":"structure", - "members":{ - "Code":{ - "shape":"String", - "documentation":"

The code identifying the operation, for example, enable-volume-io.

", - "locationName":"code" - }, - "Description":{ - "shape":"String", - "documentation":"

A description of the operation.

", - "locationName":"description" - }, - "EventType":{ - "shape":"String", - "documentation":"

The event type associated with this operation.

", - "locationName":"eventType" - }, - "EventId":{ - "shape":"String", - "documentation":"

The ID of the event associated with this operation.

", - "locationName":"eventId" - } - }, - "documentation":"

Describes a volume status operation code.

" - }, - "VolumeStatusActionsList":{ - "type":"list", - "member":{ - "shape":"VolumeStatusAction", - "locationName":"item" - } - }, - "VolumeStatusDetails":{ - "type":"structure", - "members":{ - "Name":{ - "shape":"VolumeStatusName", - "documentation":"

The name of the volume status.

", - "locationName":"name" - }, - "Status":{ - "shape":"String", - "documentation":"

The intended status of the volume status.

", - "locationName":"status" - } - }, - "documentation":"

Describes a volume status.

" - }, - "VolumeStatusDetailsList":{ - "type":"list", - "member":{ - "shape":"VolumeStatusDetails", - "locationName":"item" - } - }, - "VolumeStatusEvent":{ - "type":"structure", - "members":{ - "EventType":{ - "shape":"String", - "documentation":"

The type of this event.

", - "locationName":"eventType" - }, - "Description":{ - "shape":"String", - "documentation":"

A description of the event.

", - "locationName":"description" - }, - "NotBefore":{ - "shape":"DateTime", - "documentation":"

The earliest start time of the event.

", - "locationName":"notBefore" - }, - "NotAfter":{ - "shape":"DateTime", - "documentation":"

The latest end time of the event.

", - "locationName":"notAfter" - }, - "EventId":{ - "shape":"String", - "documentation":"

The ID of this event.

", - "locationName":"eventId" - } - }, - "documentation":"

Describes a volume status event.

" - }, - "VolumeStatusEventsList":{ - "type":"list", - "member":{ - "shape":"VolumeStatusEvent", - "locationName":"item" - } - }, - "VolumeStatusInfo":{ - "type":"structure", - "members":{ - "Status":{ - "shape":"VolumeStatusInfoStatus", - "documentation":"

The status of the volume.

", - "locationName":"status" - }, - "Details":{ - "shape":"VolumeStatusDetailsList", - "documentation":"

The details of the volume status.

", - "locationName":"details" - } - }, - "documentation":"

Describes the status of a volume.

" - }, - "VolumeStatusInfoStatus":{ - "type":"string", - "enum":[ - "ok", - "impaired", - "insufficient-data" - ] - }, - "VolumeStatusItem":{ - "type":"structure", - "members":{ - "VolumeId":{ - "shape":"String", - "documentation":"

The volume ID.

", - "locationName":"volumeId" - }, - "AvailabilityZone":{ - "shape":"String", - "documentation":"

The Availability Zone of the volume.

", - "locationName":"availabilityZone" - }, - "VolumeStatus":{ - "shape":"VolumeStatusInfo", - "documentation":"

The volume status.

", - "locationName":"volumeStatus" - }, - "Events":{ - "shape":"VolumeStatusEventsList", - "documentation":"

A list of events associated with the volume.

", - "locationName":"eventsSet" - }, - "Actions":{ - "shape":"VolumeStatusActionsList", - "documentation":"

The details of the operation.

", - "locationName":"actionsSet" - } - }, - "documentation":"

Describes the volume status.

" - }, - "VolumeStatusList":{ - "type":"list", - "member":{ - "shape":"VolumeStatusItem", - "locationName":"item" - } - }, - "VolumeStatusName":{ - "type":"string", - "enum":[ - "io-enabled", - "io-performance" - ] - }, - "VolumeType":{ - "type":"string", - "enum":[ - "standard", - "io1", - "gp2" - ] - }, - "Vpc":{ - "type":"structure", - "members":{ - "VpcId":{ - "shape":"String", - "documentation":"

The ID of the VPC.

", - "locationName":"vpcId" - }, - "State":{ - "shape":"VpcState", - "documentation":"

The current state of the VPC.

", - "locationName":"state" - }, - "CidrBlock":{ - "shape":"String", - "documentation":"

The CIDR block for the VPC.

", - "locationName":"cidrBlock" - }, - "DhcpOptionsId":{ - "shape":"String", - "documentation":"

The ID of the set of DHCP options you've associated with the VPC (or default if the default options are associated with the VPC).

", - "locationName":"dhcpOptionsId" - }, - "Tags":{ - "shape":"TagList", - "documentation":"

Any tags assigned to the VPC.

", - "locationName":"tagSet" - }, - "InstanceTenancy":{ - "shape":"Tenancy", - "documentation":"

The allowed tenancy of instances launched into the VPC.

", - "locationName":"instanceTenancy" - }, - "IsDefault":{ - "shape":"Boolean", - "documentation":"

Indicates whether the VPC is the default VPC.

", - "locationName":"isDefault" - } - }, - "documentation":"

Describes a VPC.

" - }, - "VpcAttachment":{ - "type":"structure", - "members":{ - "VpcId":{ - "shape":"String", - "documentation":"

The ID of the VPC.

", - "locationName":"vpcId" - }, - "State":{ - "shape":"AttachmentStatus", - "documentation":"

The current state of the attachment.

", - "locationName":"state" - } - }, - "documentation":"

Describes an attachment between a virtual private gateway and a VPC.

" - }, - "VpcAttachmentList":{ - "type":"list", - "member":{ - "shape":"VpcAttachment", - "locationName":"item" - } - }, - "VpcAttributeName":{ - "type":"string", - "enum":[ - "enableDnsSupport", - "enableDnsHostnames" - ] - }, - "VpcClassicLink":{ - "type":"structure", - "members":{ - "VpcId":{ - "shape":"String", - "documentation":"

The ID of the VPC.

", - "locationName":"vpcId" - }, - "ClassicLinkEnabled":{ - "shape":"Boolean", - "documentation":"

Indicates whether the VPC is enabled for ClassicLink.

", - "locationName":"classicLinkEnabled" - }, - "Tags":{ - "shape":"TagList", - "documentation":"

Any tags assigned to the VPC.

", - "locationName":"tagSet" - } - }, - "documentation":"

Describes whether a VPC is enabled for ClassicLink.

" - }, - "VpcClassicLinkIdList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"VpcId" - } - }, - "VpcClassicLinkList":{ - "type":"list", - "member":{ - "shape":"VpcClassicLink", - "locationName":"item" - } - }, - "VpcIdStringList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"VpcId" - } - }, - "VpcList":{ - "type":"list", - "member":{ - "shape":"Vpc", - "locationName":"item" - } - }, - "VpcPeeringConnection":{ - "type":"structure", - "members":{ - "AccepterVpcInfo":{ - "shape":"VpcPeeringConnectionVpcInfo", - "documentation":"

The information of the peer VPC.

", - "locationName":"accepterVpcInfo" - }, - "ExpirationTime":{ - "shape":"DateTime", - "documentation":"

The time that an unaccepted VPC peering connection will expire.

", - "locationName":"expirationTime" - }, - "RequesterVpcInfo":{ - "shape":"VpcPeeringConnectionVpcInfo", - "documentation":"

The information of the requester VPC.

", - "locationName":"requesterVpcInfo" - }, - "Status":{ - "shape":"VpcPeeringConnectionStateReason", - "documentation":"

The status of the VPC peering connection.

", - "locationName":"status" - }, - "Tags":{ - "shape":"TagList", - "documentation":"

Any tags assigned to the resource.

", - "locationName":"tagSet" - }, - "VpcPeeringConnectionId":{ - "shape":"String", - "documentation":"

The ID of the VPC peering connection.

", - "locationName":"vpcPeeringConnectionId" - } - }, - "documentation":"

Describes a VPC peering connection.

" - }, - "VpcPeeringConnectionList":{ - "type":"list", - "member":{ - "shape":"VpcPeeringConnection", - "locationName":"item" - } - }, - "VpcPeeringConnectionStateReason":{ - "type":"structure", - "members":{ - "Code":{ - "shape":"String", - "documentation":"

The status of the VPC peering connection.

", - "locationName":"code" - }, - "Message":{ - "shape":"String", - "documentation":"

A message that provides more information about the status, if applicable.

", - "locationName":"message" - } - }, - "documentation":"

Describes the status of a VPC peering connection.

" - }, - "VpcPeeringConnectionVpcInfo":{ - "type":"structure", - "members":{ - "CidrBlock":{ - "shape":"String", - "documentation":"

The CIDR block for the VPC.

", - "locationName":"cidrBlock" - }, - "OwnerId":{ - "shape":"String", - "documentation":"

The AWS account ID of the VPC owner.

", - "locationName":"ownerId" - }, - "VpcId":{ - "shape":"String", - "documentation":"

The ID of the VPC.

", - "locationName":"vpcId" - } - }, - "documentation":"

Describes a VPC in a VPC peering connection.

" - }, - "VpcState":{ - "type":"string", - "enum":[ - "pending", - "available" - ] - }, - "VpnConnection":{ - "type":"structure", - "members":{ - "VpnConnectionId":{ - "shape":"String", - "documentation":"

The ID of the VPN connection.

", - "locationName":"vpnConnectionId" - }, - "State":{ - "shape":"VpnState", - "documentation":"

The current state of the VPN connection.

", - "locationName":"state" - }, - "CustomerGatewayConfiguration":{ - "shape":"String", - "documentation":"

The configuration information for the VPN connection's customer gateway (in the native XML format). This element is always present in the CreateVpnConnection response; however, it's present in the DescribeVpnConnections response only if the VPN connection is in the pending or available state.

", - "locationName":"customerGatewayConfiguration" - }, - "Type":{ - "shape":"GatewayType", - "documentation":"

The type of VPN connection.

", - "locationName":"type" - }, - "CustomerGatewayId":{ - "shape":"String", - "documentation":"

The ID of the customer gateway at your end of the VPN connection.

", - "locationName":"customerGatewayId" - }, - "VpnGatewayId":{ - "shape":"String", - "documentation":"

The ID of the virtual private gateway at the AWS side of the VPN connection.

", - "locationName":"vpnGatewayId" - }, - "Tags":{ - "shape":"TagList", - "documentation":"

Any tags assigned to the VPN connection.

", - "locationName":"tagSet" - }, - "VgwTelemetry":{ - "shape":"VgwTelemetryList", - "documentation":"

Information about the VPN tunnel.

", - "locationName":"vgwTelemetry" - }, - "Options":{ - "shape":"VpnConnectionOptions", - "documentation":"

The VPN connection options.

", - "locationName":"options" - }, - "Routes":{ - "shape":"VpnStaticRouteList", - "documentation":"

The static routes associated with the VPN connection.

", - "locationName":"routes" - } - }, - "documentation":"

Describes a VPN connection.

" - }, - "VpnConnectionIdStringList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"VpnConnectionId" - } - }, - "VpnConnectionList":{ - "type":"list", - "member":{ - "shape":"VpnConnection", - "locationName":"item" - } - }, - "VpnConnectionOptions":{ - "type":"structure", - "members":{ - "StaticRoutesOnly":{ - "shape":"Boolean", - "documentation":"

Indicates whether the VPN connection uses static routes only. Static routes must be used for devices that don't support BGP.

", - "locationName":"staticRoutesOnly" - } - }, - "documentation":"

Describes VPN connection options.

" - }, - "VpnConnectionOptionsSpecification":{ - "type":"structure", - "members":{ - "StaticRoutesOnly":{ - "shape":"Boolean", - "documentation":"

Indicates whether the VPN connection uses static routes only. Static routes must be used for devices that don't support BGP.

", - "locationName":"staticRoutesOnly" - } - }, - "documentation":"

Describes VPN connection options.

" - }, - "VpnGateway":{ - "type":"structure", - "members":{ - "VpnGatewayId":{ - "shape":"String", - "documentation":"

The ID of the virtual private gateway.

", - "locationName":"vpnGatewayId" - }, - "State":{ - "shape":"VpnState", - "documentation":"

The current state of the virtual private gateway.

", - "locationName":"state" - }, - "Type":{ - "shape":"GatewayType", - "documentation":"

The type of VPN connection the virtual private gateway supports.

", - "locationName":"type" - }, - "AvailabilityZone":{ - "shape":"String", - "documentation":"

The Availability Zone where the virtual private gateway was created.

", - "locationName":"availabilityZone" - }, - "VpcAttachments":{ - "shape":"VpcAttachmentList", - "documentation":"

Any VPCs attached to the virtual private gateway.

", - "locationName":"attachments" - }, - "Tags":{ - "shape":"TagList", - "documentation":"

Any tags assigned to the virtual private gateway.

", - "locationName":"tagSet" - } - }, - "documentation":"

Describes a virtual private gateway.

" - }, - "VpnGatewayIdStringList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"VpnGatewayId" - } - }, - "VpnGatewayList":{ - "type":"list", - "member":{ - "shape":"VpnGateway", - "locationName":"item" - } - }, - "VpnState":{ - "type":"string", - "enum":[ - "pending", - "available", - "deleting", - "deleted" - ] - }, - "VpnStaticRoute":{ - "type":"structure", - "members":{ - "DestinationCidrBlock":{ - "shape":"String", - "documentation":"

The CIDR block associated with the local subnet of the customer data center.

", - "locationName":"destinationCidrBlock" - }, - "Source":{ - "shape":"VpnStaticRouteSource", - "documentation":"

Indicates how the routes were provided.

", - "locationName":"source" - }, - "State":{ - "shape":"VpnState", - "documentation":"

The current state of the static route.

", - "locationName":"state" - } - }, - "documentation":"

Describes a static route for a VPN connection.

" - }, - "VpnStaticRouteList":{ - "type":"list", - "member":{ - "shape":"VpnStaticRoute", - "locationName":"item" - } - }, - "VpnStaticRouteSource":{ - "type":"string", - "enum":["Static"] - }, - "ZoneNameStringList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"ZoneName" - } - }, - "NewDhcpConfigurationList":{ - "type":"list", - "member":{ - "shape":"NewDhcpConfiguration", - "locationName":"item" - } - }, - "NewDhcpConfiguration":{ - "type":"structure", - "members":{ - "Key":{ - "shape":"String", - "locationName":"key" - }, - "Values":{ - "shape":"ValueStringList", - "locationName":"Value" - } - } - }, - "DhcpConfigurationValueList":{ - "type":"list", - "member":{ - "shape":"AttributeValue", - "locationName":"item" - } - }, - "Blob":{"type":"blob"}, - "BlobAttributeValue":{ - "type":"structure", - "members":{ - "Value":{ - "shape":"Blob", - "locationName":"value" - } - } - }, - "RequestSpotLaunchSpecification":{ - "type":"structure", - "members":{ - "ImageId":{ - "shape":"String", - "documentation":"

The ID of the AMI.

", - "locationName":"imageId" - }, - "KeyName":{ - "shape":"String", - "documentation":"

The name of the key pair.

", - "locationName":"keyName" - }, - "SecurityGroups":{ - "shape":"ValueStringList", - "locationName":"SecurityGroup" - }, - "UserData":{ - "shape":"String", - "documentation":"

The Base64-encoded MIME user data to make available to the instances.

", - "locationName":"userData" - }, - "AddressingType":{ - "shape":"String", - "documentation":"

Deprecated.

", - "locationName":"addressingType" - }, - "InstanceType":{ - "shape":"InstanceType", - "documentation":"

The instance type.

Default: m1.small

", - "locationName":"instanceType" - }, - "Placement":{ - "shape":"SpotPlacement", - "documentation":"

The placement information for the instance.

", - "locationName":"placement" - }, - "KernelId":{ - "shape":"String", - "documentation":"

The ID of the kernel.

", - "locationName":"kernelId" - }, - "RamdiskId":{ - "shape":"String", - "documentation":"

The ID of the RAM disk.

", - "locationName":"ramdiskId" - }, - "BlockDeviceMappings":{ - "shape":"BlockDeviceMappingList", - "documentation":"

One or more block device mapping entries.

", - "locationName":"blockDeviceMapping" - }, - "SubnetId":{ - "shape":"String", - "documentation":"

The ID of the subnet in which to launch the instance.

", - "locationName":"subnetId" - }, - "NetworkInterfaces":{ - "shape":"InstanceNetworkInterfaceSpecificationList", - "documentation":"

One or more network interfaces.

", - "locationName":"NetworkInterface" - }, - "IamInstanceProfile":{ - "shape":"IamInstanceProfileSpecification", - "documentation":"

The IAM instance profile.

", - "locationName":"iamInstanceProfile" - }, - "EbsOptimized":{ - "shape":"Boolean", - "documentation":"

Indicates whether the instance 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. This optimization isn't available with all instance types. Additional usage charges apply when using an EBS Optimized instance.

Default: false

", - "locationName":"ebsOptimized" - }, - "Monitoring":{ - "shape":"RunInstancesMonitoringEnabled", - "locationName":"monitoring" - }, - "SecurityGroupIds":{ - "shape":"ValueStringList", - "locationName":"SecurityGroupId" - } - }, - "documentation":"

Describes the launch specification for an instance.

" - } - } -} diff --git a/src/github.com/getlantern/aws-sdk-go/apis/ec2/2014-10-01.paginators.json b/src/github.com/getlantern/aws-sdk-go/apis/ec2/2014-10-01.paginators.json deleted file mode 100644 index b643e696c1..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/apis/ec2/2014-10-01.paginators.json +++ /dev/null @@ -1,45 +0,0 @@ -{ - "pagination": { - "DescribeInstanceStatus": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxResults", - "result_key": "InstanceStatuses" - }, - "DescribeInstances": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxResults", - "result_key": "Reservations" - }, - "DescribeReservedInstancesModifications": { - "input_token": "NextToken", - "output_token": "NextToken", - "result_key": "ReservedInstancesModifications" - }, - "DescribeReservedInstancesOfferings": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxResults", - "result_key": "ReservedInstancesOfferings" - }, - "DescribeSpotPriceHistory": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxResults", - "result_key": "SpotPriceHistory" - }, - "DescribeTags": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxResults", - "result_key": "Tags" - }, - "DescribeVolumeStatus": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxResults", - "result_key": "VolumeStatuses" - } - } -} diff --git a/src/github.com/getlantern/aws-sdk-go/apis/ec2/2014-10-01.waiters.json b/src/github.com/getlantern/aws-sdk-go/apis/ec2/2014-10-01.waiters.json deleted file mode 100644 index fb8c16bdf2..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/apis/ec2/2014-10-01.waiters.json +++ /dev/null @@ -1,341 +0,0 @@ -{ - "version": 2, - "waiters": { - "BundleTaskComplete": { - "delay": 15, - "operation": "DescribeBundleTasks", - "maxAttempts": 40, - "acceptors": [ - { - "expected": "complete", - "matcher": "pathAll", - "state": "success", - "argument": "BundleTasks[].State" - }, - { - "expected": "failed", - "matcher": "pathAny", - "state": "failure", - "argument": "BundleTasks[].State" - } - ] - }, - "ConversionTaskCancelled": { - "delay": 15, - "operation": "DescribeConversionTasks", - "maxAttempts": 40, - "acceptors": [ - { - "expected": "cancelled", - "matcher": "pathAll", - "state": "success", - "argument": "ConversionTasks[].State" - } - ] - }, - "ConversionTaskCompleted": { - "delay": 15, - "operation": "DescribeConversionTasks", - "maxAttempts": 40, - "acceptors": [ - { - "expected": "completed", - "matcher": "pathAll", - "state": "success", - "argument": "ConversionTasks[].State" - }, - { - "expected": "cancelled", - "matcher": "pathAny", - "state": "failure", - "argument": "ConversionTasks[].State" - }, - { - "expected": "cancelling", - "matcher": "pathAny", - "state": "failure", - "argument": "ConversionTasks[].State" - } - ] - }, - "ConversionTaskDeleted": { - "delay": 15, - "operation": "DescribeConversionTasks", - "maxAttempts": 40, - "acceptors": [ - { - "expected": "deleted", - "matcher": "pathAll", - "state": "success", - "argument": "ConversionTasks[].State" - } - ] - }, - "CustomerGatewayAvailable": { - "delay": 15, - "operation": "DescribeCustomerGateways", - "maxAttempts": 40, - "acceptors": [ - { - "expected": "available", - "matcher": "pathAll", - "state": "success", - "argument": "CustomerGateways[].State" - }, - { - "expected": "deleted", - "matcher": "pathAny", - "state": "failure", - "argument": "CustomerGateways[].State" - }, - { - "expected": "deleting", - "matcher": "pathAny", - "state": "failure", - "argument": "CustomerGateways[].State" - } - ] - }, - "ExportTaskCancelled": { - "delay": 15, - "operation": "DescribeExportTasks", - "maxAttempts": 40, - "acceptors": [ - { - "expected": "cancelled", - "matcher": "pathAll", - "state": "success", - "argument": "ExportTasks[].State" - } - ] - }, - "ExportTaskCompleted": { - "delay": 15, - "operation": "DescribeExportTasks", - "maxAttempts": 40, - "acceptors": [ - { - "expected": "completed", - "matcher": "pathAll", - "state": "success", - "argument": "ExportTasks[].State" - } - ] - }, - "InstanceRunning": { - "delay": 15, - "operation": "DescribeInstances", - "maxAttempts": 40, - "acceptors": [ - { - "expected": "running", - "matcher": "pathAll", - "state": "success", - "argument": "Reservations[].Instances[].State.Name" - }, - { - "expected": "shutting-down", - "matcher": "pathAny", - "state": "failure", - "argument": "Reservations[].Instances[].State.Name" - }, - { - "expected": "terminated", - "matcher": "pathAny", - "state": "failure", - "argument": "Reservations[].Instances[].State.Name" - }, - { - "expected": "stopping", - "matcher": "pathAny", - "state": "failure", - "argument": "Reservations[].Instances[].State.Name" - } - ] - }, - "InstanceStopped": { - "delay": 15, - "operation": "DescribeInstances", - "maxAttempts": 40, - "acceptors": [ - { - "expected": "stopped", - "matcher": "pathAll", - "state": "success", - "argument": "Reservations[].Instances[].State.Name" - }, - { - "expected": "pending", - "matcher": "pathAny", - "state": "failure", - "argument": "Reservations[].Instances[].State.Name" - }, - { - "expected": "terminated", - "matcher": "pathAny", - "state": "failure", - "argument": "Reservations[].Instances[].State.Name" - } - ] - }, - "InstanceTerminated": { - "delay": 15, - "operation": "DescribeInstances", - "maxAttempts": 40, - "acceptors": [ - { - "expected": "terminated", - "matcher": "pathAll", - "state": "success", - "argument": "Reservations[].Instances[].State.Name" - }, - { - "expected": "pending", - "matcher": "pathAny", - "state": "failure", - "argument": "Reservations[].Instances[].State.Name" - }, - { - "expected": "stopping", - "matcher": "pathAny", - "state": "failure", - "argument": "Reservations[].Instances[].State.Name" - } - ] - }, - "SnapshotCompleted": { - "delay": 15, - "operation": "DescribeSnapshots", - "maxAttempts": 40, - "acceptors": [ - { - "expected": "completed", - "matcher": "pathAll", - "state": "success", - "argument": "Snapshots[].State" - } - ] - }, - "SubnetAvailable": { - "delay": 15, - "operation": "DescribeSubnets", - "maxAttempts": 40, - "acceptors": [ - { - "expected": "available", - "matcher": "pathAll", - "state": "success", - "argument": "Subnets[].State" - } - ] - }, - "VolumeAvailable": { - "delay": 15, - "operation": "DescribeVolumes", - "maxAttempts": 40, - "acceptors": [ - { - "expected": "available", - "matcher": "pathAll", - "state": "success", - "argument": "Volumes[].State" - }, - { - "expected": "deleted", - "matcher": "pathAny", - "state": "failure", - "argument": "Volumes[].State" - } - ] - }, - "VolumeDeleted": { - "delay": 15, - "operation": "DescribeVolumes", - "maxAttempts": 40, - "acceptors": [ - { - "expected": "deleted", - "matcher": "pathAll", - "state": "success", - "argument": "Volumes[].State" - } - ] - }, - "VolumeInUse": { - "delay": 15, - "operation": "DescribeVolumes", - "maxAttempts": 40, - "acceptors": [ - { - "expected": "in-use", - "matcher": "pathAll", - "state": "success", - "argument": "Volumes[].State" - }, - { - "expected": "deleted", - "matcher": "pathAny", - "state": "failure", - "argument": "Volumes[].State" - } - ] - }, - "VpcAvailable": { - "delay": 15, - "operation": "DescribeVpcs", - "maxAttempts": 40, - "acceptors": [ - { - "expected": "available", - "matcher": "pathAll", - "state": "success", - "argument": "Vpcs[].State" - } - ] - }, - "VpnConnectionAvailable": { - "delay": 15, - "operation": "DescribeVpnConnections", - "maxAttempts": 40, - "acceptors": [ - { - "expected": "available", - "matcher": "pathAll", - "state": "success", - "argument": "VpnConnections[].State" - }, - { - "expected": "deleting", - "matcher": "pathAny", - "state": "failure", - "argument": "VpnConnections[].State" - }, - { - "expected": "deleted", - "matcher": "pathAny", - "state": "failure", - "argument": "VpnConnections[].State" - } - ] - }, - "VpnConnectionDeleted": { - "delay": 15, - "operation": "DescribeVpnConnections", - "maxAttempts": 40, - "acceptors": [ - { - "expected": "deleted", - "matcher": "pathAll", - "state": "success", - "argument": "VpnConnections[].State" - }, - { - "expected": "pending", - "matcher": "pathAny", - "state": "failure", - "argument": "VpnConnections[].State" - } - ] - } - } -} diff --git a/src/github.com/getlantern/aws-sdk-go/apis/ecs/2014-11-13.normal.json b/src/github.com/getlantern/aws-sdk-go/apis/ecs/2014-11-13.normal.json deleted file mode 100644 index b973fcb04a..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/apis/ecs/2014-11-13.normal.json +++ /dev/null @@ -1,1393 +0,0 @@ -{ - "metadata":{ - "apiVersion":"2014-11-13", - "endpointPrefix":"ecs", - "serviceAbbreviation":"Amazon ECS", - "serviceFullName":"Amazon EC2 Container Service", - "signatureVersion":"v4", - "signingName":"ecs", - "xmlNamespace":"http://ecs.amazonaws.com/doc/2014-11-13/", - "protocol":"query" - }, - "documentation":"

Amazon EC2 Container Service (Amazon ECS) is a highly scalable, fast, container management service that makes it easy to run, stop, and manage Docker containers on a cluster of Amazon EC2 instances. Amazon ECS lets you launch and stop container-enabled applications with simple API calls, allows you to get the state of your cluster from a centralized service, and gives you access to many familiar Amazon EC2 features like security groups, Amazon EBS volumes, and IAM roles.

You can use Amazon ECS to schedule the placement of containers across your cluster based on your resource needs, isolation policies, and availability requirements. Amazon EC2 Container Service eliminates the need for you to operate your own cluster management and configuration management systems or worry about scaling your management infrastructure.

", - "operations":{ - "CreateCluster":{ - "name":"CreateCluster", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CreateClusterRequest"}, - "output":{ - "shape":"CreateClusterResponse", - "resultWrapper":"CreateClusterResult" - }, - "errors":[ - { - "shape":"ServerException", - "exception":true, - "documentation":"

These errors are usually caused by a server-side issue.

" - }, - { - "shape":"ClientException", - "exception":true, - "documentation":"

These errors are usually caused by something the client did, such as use an action or resource on behalf of a user that doesn't have permission to use the action or resource, or specify an identifier that is not valid.

" - } - ], - "documentation":"

Creates a new Amazon ECS cluster. By default, your account will receive a default cluster when you launch your first container instance. However, you can create your own cluster with a unique name with the CreateCluster action.

During the preview, each account is limited to two clusters.

" - }, - "DeleteCluster":{ - "name":"DeleteCluster", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DeleteClusterRequest"}, - "output":{ - "shape":"DeleteClusterResponse", - "resultWrapper":"DeleteClusterResult" - }, - "errors":[ - { - "shape":"ServerException", - "exception":true, - "documentation":"

These errors are usually caused by a server-side issue.

" - }, - { - "shape":"ClientException", - "exception":true, - "documentation":"

These errors are usually caused by something the client did, such as use an action or resource on behalf of a user that doesn't have permission to use the action or resource, or specify an identifier that is not valid.

" - } - ], - "documentation":"

Deletes the specified cluster. You must deregister all container instances from this cluster before you may delete it. You can list the container instances in a cluster with ListContainerInstances and deregister them with DeregisterContainerInstance.

" - }, - "DeregisterContainerInstance":{ - "name":"DeregisterContainerInstance", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DeregisterContainerInstanceRequest"}, - "output":{ - "shape":"DeregisterContainerInstanceResponse", - "resultWrapper":"DeregisterContainerInstanceResult" - }, - "errors":[ - { - "shape":"ServerException", - "exception":true, - "documentation":"

These errors are usually caused by a server-side issue.

" - }, - { - "shape":"ClientException", - "exception":true, - "documentation":"

These errors are usually caused by something the client did, such as use an action or resource on behalf of a user that doesn't have permission to use the action or resource, or specify an identifier that is not valid.

" - } - ], - "documentation":"

Deregisters an Amazon ECS container instance from the specified cluster. This instance will no longer be available to run tasks.

" - }, - "DeregisterTaskDefinition":{ - "name":"DeregisterTaskDefinition", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DeregisterTaskDefinitionRequest"}, - "output":{ - "shape":"DeregisterTaskDefinitionResponse", - "resultWrapper":"DeregisterTaskDefinitionResult" - }, - "errors":[ - { - "shape":"ServerException", - "exception":true, - "documentation":"

These errors are usually caused by a server-side issue.

" - }, - { - "shape":"ClientException", - "exception":true, - "documentation":"

These errors are usually caused by something the client did, such as use an action or resource on behalf of a user that doesn't have permission to use the action or resource, or specify an identifier that is not valid.

" - } - ], - "documentation":"

Deregisters the specified task definition. You will no longer be able to run tasks from this definition after deregistration.

" - }, - "DescribeClusters":{ - "name":"DescribeClusters", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeClustersRequest"}, - "output":{ - "shape":"DescribeClustersResponse", - "resultWrapper":"DescribeClustersResult" - }, - "errors":[ - { - "shape":"ServerException", - "exception":true, - "documentation":"

These errors are usually caused by a server-side issue.

" - }, - { - "shape":"ClientException", - "exception":true, - "documentation":"

These errors are usually caused by something the client did, such as use an action or resource on behalf of a user that doesn't have permission to use the action or resource, or specify an identifier that is not valid.

" - } - ], - "documentation":"

Describes one or more of your clusters.

" - }, - "DescribeContainerInstances":{ - "name":"DescribeContainerInstances", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeContainerInstancesRequest"}, - "output":{ - "shape":"DescribeContainerInstancesResponse", - "resultWrapper":"DescribeContainerInstancesResult" - }, - "errors":[ - { - "shape":"ServerException", - "exception":true, - "documentation":"

These errors are usually caused by a server-side issue.

" - }, - { - "shape":"ClientException", - "exception":true, - "documentation":"

These errors are usually caused by something the client did, such as use an action or resource on behalf of a user that doesn't have permission to use the action or resource, or specify an identifier that is not valid.

" - } - ], - "documentation":"

Describes Amazon EC2 Container Service container instances. Returns metadata about registered and remaining resources on each container instance requested.

" - }, - "DescribeTaskDefinition":{ - "name":"DescribeTaskDefinition", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeTaskDefinitionRequest"}, - "output":{ - "shape":"DescribeTaskDefinitionResponse", - "resultWrapper":"DescribeTaskDefinitionResult" - }, - "errors":[ - { - "shape":"ServerException", - "exception":true, - "documentation":"

These errors are usually caused by a server-side issue.

" - }, - { - "shape":"ClientException", - "exception":true, - "documentation":"

These errors are usually caused by something the client did, such as use an action or resource on behalf of a user that doesn't have permission to use the action or resource, or specify an identifier that is not valid.

" - } - ], - "documentation":"

Describes a task definition.

" - }, - "DescribeTasks":{ - "name":"DescribeTasks", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeTasksRequest"}, - "output":{ - "shape":"DescribeTasksResponse", - "resultWrapper":"DescribeTasksResult" - }, - "errors":[ - { - "shape":"ServerException", - "exception":true, - "documentation":"

These errors are usually caused by a server-side issue.

" - }, - { - "shape":"ClientException", - "exception":true, - "documentation":"

These errors are usually caused by something the client did, such as use an action or resource on behalf of a user that doesn't have permission to use the action or resource, or specify an identifier that is not valid.

" - } - ], - "documentation":"

Describes a specified task or tasks.

" - }, - "DiscoverPollEndpoint":{ - "name":"DiscoverPollEndpoint", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DiscoverPollEndpointRequest"}, - "output":{ - "shape":"DiscoverPollEndpointResponse", - "resultWrapper":"DiscoverPollEndpointResult" - }, - "errors":[ - { - "shape":"ServerException", - "exception":true, - "documentation":"

These errors are usually caused by a server-side issue.

" - }, - { - "shape":"ClientException", - "exception":true, - "documentation":"

These errors are usually caused by something the client did, such as use an action or resource on behalf of a user that doesn't have permission to use the action or resource, or specify an identifier that is not valid.

" - } - ], - "documentation":"

This action is only used by the Amazon EC2 Container Service agent, and it is not intended for use outside of the agent.

Returns an endpoint for the Amazon EC2 Container Service agent to poll for updates.

" - }, - "ListClusters":{ - "name":"ListClusters", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"ListClustersRequest"}, - "output":{ - "shape":"ListClustersResponse", - "resultWrapper":"ListClustersResult" - }, - "errors":[ - { - "shape":"ServerException", - "exception":true, - "documentation":"

These errors are usually caused by a server-side issue.

" - }, - { - "shape":"ClientException", - "exception":true, - "documentation":"

These errors are usually caused by something the client did, such as use an action or resource on behalf of a user that doesn't have permission to use the action or resource, or specify an identifier that is not valid.

" - } - ], - "documentation":"

Returns a list of existing clusters.

" - }, - "ListContainerInstances":{ - "name":"ListContainerInstances", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"ListContainerInstancesRequest"}, - "output":{ - "shape":"ListContainerInstancesResponse", - "resultWrapper":"ListContainerInstancesResult" - }, - "errors":[ - { - "shape":"ServerException", - "exception":true, - "documentation":"

These errors are usually caused by a server-side issue.

" - }, - { - "shape":"ClientException", - "exception":true, - "documentation":"

These errors are usually caused by something the client did, such as use an action or resource on behalf of a user that doesn't have permission to use the action or resource, or specify an identifier that is not valid.

" - } - ], - "documentation":"

Returns a list of container instances in a specified cluster.

" - }, - "ListTaskDefinitions":{ - "name":"ListTaskDefinitions", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"ListTaskDefinitionsRequest"}, - "output":{ - "shape":"ListTaskDefinitionsResponse", - "resultWrapper":"ListTaskDefinitionsResult" - }, - "errors":[ - { - "shape":"ServerException", - "exception":true, - "documentation":"

These errors are usually caused by a server-side issue.

" - }, - { - "shape":"ClientException", - "exception":true, - "documentation":"

These errors are usually caused by something the client did, such as use an action or resource on behalf of a user that doesn't have permission to use the action or resource, or specify an identifier that is not valid.

" - } - ], - "documentation":"

Returns a list of task definitions that are registered to your account. You can filter the results by family name with the familyPrefix parameter.

" - }, - "ListTasks":{ - "name":"ListTasks", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"ListTasksRequest"}, - "output":{ - "shape":"ListTasksResponse", - "resultWrapper":"ListTasksResult" - }, - "errors":[ - { - "shape":"ServerException", - "exception":true, - "documentation":"

These errors are usually caused by a server-side issue.

" - }, - { - "shape":"ClientException", - "exception":true, - "documentation":"

These errors are usually caused by something the client did, such as use an action or resource on behalf of a user that doesn't have permission to use the action or resource, or specify an identifier that is not valid.

" - } - ], - "documentation":"

Returns a list of tasks for a specified cluster. You can filter the results by family name or by a particular container instance with the family and containerInstance parameters.

" - }, - "RegisterContainerInstance":{ - "name":"RegisterContainerInstance", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"RegisterContainerInstanceRequest"}, - "output":{ - "shape":"RegisterContainerInstanceResponse", - "resultWrapper":"RegisterContainerInstanceResult" - }, - "errors":[ - { - "shape":"ServerException", - "exception":true, - "documentation":"

These errors are usually caused by a server-side issue.

" - }, - { - "shape":"ClientException", - "exception":true, - "documentation":"

These errors are usually caused by something the client did, such as use an action or resource on behalf of a user that doesn't have permission to use the action or resource, or specify an identifier that is not valid.

" - } - ], - "documentation":"

This action is only used by the Amazon EC2 Container Service agent, and it is not intended for use outside of the agent.

Registers an Amazon EC2 instance into the specified cluster. This instance will become available to place containers on.

" - }, - "RegisterTaskDefinition":{ - "name":"RegisterTaskDefinition", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"RegisterTaskDefinitionRequest"}, - "output":{ - "shape":"RegisterTaskDefinitionResponse", - "resultWrapper":"RegisterTaskDefinitionResult" - }, - "errors":[ - { - "shape":"ServerException", - "exception":true, - "documentation":"

These errors are usually caused by a server-side issue.

" - }, - { - "shape":"ClientException", - "exception":true, - "documentation":"

These errors are usually caused by something the client did, such as use an action or resource on behalf of a user that doesn't have permission to use the action or resource, or specify an identifier that is not valid.

" - } - ], - "documentation":"

Registers a new task definition from the supplied family and containerDefinitions.

" - }, - "RunTask":{ - "name":"RunTask", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"RunTaskRequest"}, - "output":{ - "shape":"RunTaskResponse", - "resultWrapper":"RunTaskResult" - }, - "errors":[ - { - "shape":"ServerException", - "exception":true, - "documentation":"

These errors are usually caused by a server-side issue.

" - }, - { - "shape":"ClientException", - "exception":true, - "documentation":"

These errors are usually caused by something the client did, such as use an action or resource on behalf of a user that doesn't have permission to use the action or resource, or specify an identifier that is not valid.

" - } - ], - "documentation":"

Start a task using random placement and the default Amazon ECS scheduler. If you want to use your own scheduler or place a task on a specific container instance, use StartTask instead.

" - }, - "StartTask":{ - "name":"StartTask", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"StartTaskRequest"}, - "output":{ - "shape":"StartTaskResponse", - "resultWrapper":"StartTaskResult" - }, - "errors":[ - { - "shape":"ServerException", - "exception":true, - "documentation":"

These errors are usually caused by a server-side issue.

" - }, - { - "shape":"ClientException", - "exception":true, - "documentation":"

These errors are usually caused by something the client did, such as use an action or resource on behalf of a user that doesn't have permission to use the action or resource, or specify an identifier that is not valid.

" - } - ], - "documentation":"

Starts a new task from the specified task definition on the specified container instance or instances. If you want to use the default Amazon ECS scheduler to place your task, use RunTask instead.

" - }, - "StopTask":{ - "name":"StopTask", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"StopTaskRequest"}, - "output":{ - "shape":"StopTaskResponse", - "resultWrapper":"StopTaskResult" - }, - "errors":[ - { - "shape":"ServerException", - "exception":true, - "documentation":"

These errors are usually caused by a server-side issue.

" - }, - { - "shape":"ClientException", - "exception":true, - "documentation":"

These errors are usually caused by something the client did, such as use an action or resource on behalf of a user that doesn't have permission to use the action or resource, or specify an identifier that is not valid.

" - } - ], - "documentation":"

Stops a running task.

" - }, - "SubmitContainerStateChange":{ - "name":"SubmitContainerStateChange", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"SubmitContainerStateChangeRequest"}, - "output":{ - "shape":"SubmitContainerStateChangeResponse", - "resultWrapper":"SubmitContainerStateChangeResult" - }, - "errors":[ - { - "shape":"ServerException", - "exception":true, - "documentation":"

These errors are usually caused by a server-side issue.

" - }, - { - "shape":"ClientException", - "exception":true, - "documentation":"

These errors are usually caused by something the client did, such as use an action or resource on behalf of a user that doesn't have permission to use the action or resource, or specify an identifier that is not valid.

" - } - ], - "documentation":"

This action is only used by the Amazon EC2 Container Service agent, and it is not intended for use outside of the agent.

Sent to acknowledge that a container changed states.

" - }, - "SubmitTaskStateChange":{ - "name":"SubmitTaskStateChange", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"SubmitTaskStateChangeRequest"}, - "output":{ - "shape":"SubmitTaskStateChangeResponse", - "resultWrapper":"SubmitTaskStateChangeResult" - }, - "errors":[ - { - "shape":"ServerException", - "exception":true, - "documentation":"

These errors are usually caused by a server-side issue.

" - }, - { - "shape":"ClientException", - "exception":true, - "documentation":"

These errors are usually caused by something the client did, such as use an action or resource on behalf of a user that doesn't have permission to use the action or resource, or specify an identifier that is not valid.

" - } - ], - "documentation":"

This action is only used by the Amazon EC2 Container Service agent, and it is not intended for use outside of the agent.

Sent to acknowledge that a task changed states.

" - } - }, - "shapes":{ - "Boolean":{"type":"boolean"}, - "BoxedBoolean":{ - "type":"boolean", - "box":true - }, - "BoxedInteger":{ - "type":"integer", - "box":true - }, - "ClientException":{ - "type":"structure", - "members":{ - "message":{"shape":"String"} - }, - "exception":true, - "documentation":"

These errors are usually caused by something the client did, such as use an action or resource on behalf of a user that doesn't have permission to use the action or resource, or specify an identifier that is not valid.

" - }, - "Cluster":{ - "type":"structure", - "members":{ - "clusterArn":{ - "shape":"String", - "documentation":"

The Amazon Resource Name (ARN) that identifies the cluster. The ARN contains the arn:aws:ecs namespace, followed by the region of the cluster, the AWS account ID of the cluster owner, the cluster namespace, and then the cluster name. For example, arn:aws:ecs:region:012345678910:cluster/test.

" - }, - "clusterName":{ - "shape":"String", - "documentation":"

A user-generated string that you can use to identify your cluster.

" - }, - "status":{ - "shape":"String", - "documentation":"

The status of the cluster. The valid values are ACTIVE or INACTIVE. ACTIVE indicates that you can register container instances with the cluster and the associated instances can accept tasks.

" - } - }, - "documentation":"

A regional grouping of one or more container instances on which you can run task requests. Each account receives a default cluster the first time you use the Amazon ECS service, but you may also create other clusters. Clusters may contain more than one instance type simultaneously.

During the preview, each account is limited to two clusters.

" - }, - "Clusters":{ - "type":"list", - "member":{"shape":"Cluster"} - }, - "Container":{ - "type":"structure", - "members":{ - "containerArn":{ - "shape":"String", - "documentation":"

The Amazon Resource Name (ARN) of the container.

" - }, - "taskArn":{ - "shape":"String", - "documentation":"

The Amazon Resource Name (ARN) of the task.

" - }, - "name":{ - "shape":"String", - "documentation":"

The name of the container.

" - }, - "lastStatus":{ - "shape":"String", - "documentation":"

The last known status of the container.

" - }, - "exitCode":{ - "shape":"BoxedInteger", - "documentation":"

The exit code returned from the container.

" - }, - "reason":{ - "shape":"String", - "documentation":"

A short (255 max characters) human-readable string to provide additional detail about a running or stopped container.

" - }, - "networkBindings":{"shape":"NetworkBindings"} - } - }, - "ContainerDefinition":{ - "type":"structure", - "members":{ - "name":{ - "shape":"String", - "documentation":"

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.

" - }, - "image":{ - "shape":"String", - "documentation":"

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 repository-url/image:tag.

" - }, - "cpu":{ - "shape":"Integer", - "documentation":"

The number of cpu units reserved for the container. A container instance has 1,024 cpu units for every CPU core.

" - }, - "memory":{ - "shape":"Integer", - "documentation":"

The number of MiB of memory reserved for the container. Docker will allocate a minimum of 4 MiB of memory to a container.

" - }, - "links":{ - "shape":"StringList", - "documentation":"

The link parameter allows containers to communicate with each other without the need for port mappings, using the name parameter. For more information on linking Docker containers, see https://docs.docker.com/userguide/dockerlinks/.

" - }, - "portMappings":{ - "shape":"PortMappingList", - "documentation":"

The list of port mappings for the container.

" - }, - "essential":{ - "shape":"BoxedBoolean", - "documentation":"

If the essential parameter of a container is marked as true, the failure of that container will stop the task. If the essential parameter of a container is marked as false, then its failure will not affect the rest of the containers in a task.

" - }, - "entryPoint":{ - "shape":"StringList", - "documentation":"

The ENTRYPOINT that is passed to the container. For more information on the Docker ENTRYPOINT parameter, see https://docs.docker.com/reference/builder/#entrypoint.

" - }, - "command":{ - "shape":"StringList", - "documentation":"

The CMD that is passed to the container. For more information on the Docker CMD parameter, see https://docs.docker.com/reference/builder/#cmd.

" - }, - "environment":{ - "shape":"EnvironmentVariables", - "documentation":"

The environment variables to pass to a container.

" - } - }, - "documentation":"

Container definitions are used in task definitions to describe the different containers that are launched as part of a task.

" - }, - "ContainerDefinitions":{ - "type":"list", - "member":{"shape":"ContainerDefinition"} - }, - "ContainerInstance":{ - "type":"structure", - "members":{ - "containerInstanceArn":{ - "shape":"String", - "documentation":"

The Amazon Resource Name (ARN) of the container instance. The ARN contains the arn:aws:ecs namespace, followed by the region of the container instance, the AWS account ID of the container instance owner, the container-instance namespace, and then the container instance UUID. For example, arn:aws:ecs:region:aws_account_id:container-instance/container_instance_UUID.

" - }, - "ec2InstanceId":{ - "shape":"String", - "documentation":"

The Amazon EC2 instance ID of the container instance.

" - }, - "remainingResources":{ - "shape":"Resources", - "documentation":"

The remaining resources of the container instance that are available for new tasks.

" - }, - "registeredResources":{ - "shape":"Resources", - "documentation":"

The registered resources on the container instance that are in use by current tasks.

" - }, - "status":{ - "shape":"String", - "documentation":"

The status of the container instance. The valid values are ACTIVE or INACTIVE. ACTIVE indicates that the container instance can accept tasks.

" - }, - "agentConnected":{ - "shape":"Boolean", - "documentation":"

This parameter returns true if the agent is actually connected to Amazon ECS. Registered instances with an agent that may be unhealthy or stopped will return false, and instances without a connected agent cannot accept placement request.

" - } - }, - "documentation":"

An Amazon EC2 instance that is running the Amazon ECS agent and has been registered with a cluster.

" - }, - "ContainerInstances":{ - "type":"list", - "member":{"shape":"ContainerInstance"} - }, - "ContainerOverride":{ - "type":"structure", - "members":{ - "name":{ - "shape":"String", - "documentation":"

The name of the container that receives the override.

" - }, - "command":{ - "shape":"StringList", - "documentation":"

The command to send to the container that receives the override.

" - } - } - }, - "ContainerOverrides":{ - "type":"list", - "member":{"shape":"ContainerOverride"} - }, - "Containers":{ - "type":"list", - "member":{"shape":"Container"} - }, - "CreateClusterRequest":{ - "type":"structure", - "members":{ - "clusterName":{ - "shape":"String", - "documentation":"

The name of your cluster. If you do not specify a name for your cluster, you will create a cluster named default.

" - } - } - }, - "CreateClusterResponse":{ - "type":"structure", - "members":{ - "cluster":{ - "shape":"Cluster", - "documentation":"

The full description of your new cluster.

" - } - } - }, - "DeleteClusterRequest":{ - "type":"structure", - "required":["cluster"], - "members":{ - "cluster":{ - "shape":"String", - "documentation":"

The cluster you want to delete.

" - } - } - }, - "DeleteClusterResponse":{ - "type":"structure", - "members":{ - "cluster":{ - "shape":"Cluster", - "documentation":"

The full description of the deleted cluster.

" - } - } - }, - "DeregisterContainerInstanceRequest":{ - "type":"structure", - "required":["containerInstance"], - "members":{ - "cluster":{ - "shape":"String", - "documentation":"

The short name or full Amazon Resource Name (ARN) of the cluster that hosts the container instance you want to deregister. If you do not specify a cluster, the default cluster is assumed.

" - }, - "containerInstance":{ - "shape":"String", - "documentation":"

The container instance UUID or full Amazon Resource Name (ARN) of the container instance you want to deregister. The ARN contains the arn:aws:ecs namespace, followed by the region of the container instance, the AWS account ID of the container instance owner, the container-instance namespace, and then the container instance UUID. For example, arn:aws:ecs:region:aws_account_id:container-instance/container_instance_UUID.

" - }, - "force":{ - "shape":"BoxedBoolean", - "documentation":"

Force the deregistration of the container instance. You can use the force parameter if you have several tasks running on a container instance and you don't want to run StopTask for each task before deregistering the container instance.

" - } - } - }, - "DeregisterContainerInstanceResponse":{ - "type":"structure", - "members":{ - "containerInstance":{"shape":"ContainerInstance"} - } - }, - "DeregisterTaskDefinitionRequest":{ - "type":"structure", - "required":["taskDefinition"], - "members":{ - "taskDefinition":{ - "shape":"String", - "documentation":"

The family and revision (family:revision) or full Amazon Resource Name (ARN) of the task definition that you want to deregister.

" - } - } - }, - "DeregisterTaskDefinitionResponse":{ - "type":"structure", - "members":{ - "taskDefinition":{ - "shape":"TaskDefinition", - "documentation":"

The full description of the deregistered task.

" - } - } - }, - "DescribeClustersRequest":{ - "type":"structure", - "members":{ - "clusters":{ - "shape":"StringList", - "documentation":"

A space-separated list of cluster names or full cluster Amazon Resource Name (ARN) entries. If you do not specify a cluster, the default cluster is assumed.

" - } - } - }, - "DescribeClustersResponse":{ - "type":"structure", - "members":{ - "clusters":{ - "shape":"Clusters", - "documentation":"

The list of clusters.

" - }, - "failures":{"shape":"Failures"} - } - }, - "DescribeContainerInstancesRequest":{ - "type":"structure", - "required":["containerInstances"], - "members":{ - "cluster":{ - "shape":"String", - "documentation":"

The short name or full Amazon Resource Name (ARN) of the cluster that hosts the container instances you want to describe. If you do not specify a cluster, the default cluster is assumed.

" - }, - "containerInstances":{ - "shape":"StringList", - "documentation":"

A space-separated list of container instance UUIDs or full Amazon Resource Name (ARN) entries.

" - } - } - }, - "DescribeContainerInstancesResponse":{ - "type":"structure", - "members":{ - "containerInstances":{ - "shape":"ContainerInstances", - "documentation":"

The list of container instances.

" - }, - "failures":{"shape":"Failures"} - } - }, - "DescribeTaskDefinitionRequest":{ - "type":"structure", - "required":["taskDefinition"], - "members":{ - "taskDefinition":{ - "shape":"String", - "documentation":"

The family and revision (family:revision) or full Amazon Resource Name (ARN) of the task definition that you want to describe.

" - } - } - }, - "DescribeTaskDefinitionResponse":{ - "type":"structure", - "members":{ - "taskDefinition":{ - "shape":"TaskDefinition", - "documentation":"

The full task definition description.

" - } - } - }, - "DescribeTasksRequest":{ - "type":"structure", - "required":["tasks"], - "members":{ - "cluster":{ - "shape":"String", - "documentation":"

The short name or full Amazon Resource Name (ARN) of the cluster that hosts the task you want to describe. If you do not specify a cluster, the default cluster is assumed.

" - }, - "tasks":{ - "shape":"StringList", - "documentation":"

A space-separated list of task UUIDs or full Amazon Resource Name (ARN) entries.

" - } - } - }, - "DescribeTasksResponse":{ - "type":"structure", - "members":{ - "tasks":{ - "shape":"Tasks", - "documentation":"

The list of tasks.

" - }, - "failures":{"shape":"Failures"} - } - }, - "DiscoverPollEndpointRequest":{ - "type":"structure", - "members":{ - "containerInstance":{ - "shape":"String", - "documentation":"

The container instance UUID or full Amazon Resource Name (ARN) of the container instance. The ARN contains the arn:aws:ecs namespace, followed by the region of the container instance, the AWS account ID of the container instance owner, the container-instance namespace, and then the container instance UUID. For example, arn:aws:ecs:region:aws_account_id:container-instance/container_instance_UUID.

" - } - } - }, - "DiscoverPollEndpointResponse":{ - "type":"structure", - "members":{ - "endpoint":{ - "shape":"String", - "documentation":"

The endpoint for the Amazon ECS agent to poll.

" - } - } - }, - "Double":{"type":"double"}, - "EnvironmentVariables":{ - "type":"list", - "member":{"shape":"KeyValuePair"} - }, - "Failure":{ - "type":"structure", - "members":{ - "arn":{ - "shape":"String", - "documentation":"

The Amazon Resource Name (ARN) of the failed resource.

" - }, - "reason":{ - "shape":"String", - "documentation":"

The reason for the failure.

" - } - } - }, - "Failures":{ - "type":"list", - "member":{"shape":"Failure"} - }, - "Integer":{"type":"integer"}, - "KeyValuePair":{ - "type":"structure", - "members":{ - "name":{ - "shape":"String", - "documentation":"

The name of the key value pair.

" - }, - "value":{ - "shape":"String", - "documentation":"

The value of the key value pair.

" - } - } - }, - "ListClustersRequest":{ - "type":"structure", - "members":{ - "nextToken":{ - "shape":"String", - "documentation":"

The nextToken value returned from a previous paginated ListClusters request where maxResults was used and the results exceeded the value of that parameter. Pagination continues from the end of the previous results that returned the nextToken value. This value is null when there are no more results to return.

" - }, - "maxResults":{ - "shape":"BoxedInteger", - "documentation":"

The maximum number of cluster results returned by ListClusters in paginated output. When this parameter is used, ListClusters only returns maxResults results in a single page along with a nextToken response element. The remaining results of the initial request can be seen by sending another ListClusters request with the returned nextToken value. This value can be between 1 and 100. If this parameter is not used, then ListClusters returns up to 100 results and a nextToken value if applicable.

" - } - } - }, - "ListClustersResponse":{ - "type":"structure", - "members":{ - "clusterArns":{ - "shape":"StringList", - "documentation":"

The list of full Amazon Resource Name (ARN) entries for each cluster associated with your account.

" - }, - "nextToken":{ - "shape":"String", - "documentation":"

The nextToken value to include in a future ListClusters request. When the results of a ListClusters request exceed maxResults, this value can be used to retrieve the next page of results. This value is null when there are no more results to return.

" - } - } - }, - "ListContainerInstancesRequest":{ - "type":"structure", - "members":{ - "cluster":{ - "shape":"String", - "documentation":"

The short name or full Amazon Resource Name (ARN) of the cluster that hosts the container instances you want to list. If you do not specify a cluster, the default cluster is assumed..

" - }, - "nextToken":{ - "shape":"String", - "documentation":"

The nextToken value returned from a previous paginated ListContainerInstances request where maxResults was used and the results exceeded the value of that parameter. Pagination continues from the end of the previous results that returned the nextToken value. This value is null when there are no more results to return.

" - }, - "maxResults":{ - "shape":"BoxedInteger", - "documentation":"

The maximum number of container instance results returned by ListContainerInstances in paginated output. When this parameter is used, ListContainerInstances only returns maxResults results in a single page along with a nextToken response element. The remaining results of the initial request can be seen by sending another ListContainerInstances request with the returned nextToken value. This value can be between 1 and 100. If this parameter is not used, then ListContainerInstances returns up to 100 results and a nextToken value if applicable.

" - } - } - }, - "ListContainerInstancesResponse":{ - "type":"structure", - "members":{ - "containerInstanceArns":{ - "shape":"StringList", - "documentation":"

The list of container instance full Amazon Resource Name (ARN) entries for each container instance associated with the specified cluster.

" - }, - "nextToken":{ - "shape":"String", - "documentation":"

The nextToken value to include in a future ListContainerInstances request. When the results of a ListContainerInstances request exceed maxResults, this value can be used to retrieve the next page of results. This value is null when there are no more results to return.

" - } - } - }, - "ListTaskDefinitionsRequest":{ - "type":"structure", - "members":{ - "familyPrefix":{ - "shape":"String", - "documentation":"

The name of the family that you want to filter the ListTaskDefinitions results with. Specifying a familyPrefix will limit the listed task definitions to definitions that belong to that family.

" - }, - "nextToken":{ - "shape":"String", - "documentation":"

The nextToken value returned from a previous paginated ListTaskDefinitions request where maxResults was used and the results exceeded the value of that parameter. Pagination continues from the end of the previous results that returned the nextToken value. This value is null when there are no more results to return.

" - }, - "maxResults":{ - "shape":"BoxedInteger", - "documentation":"

The maximum number of task definition results returned by ListTaskDefinitions in paginated output. When this parameter is used, ListTaskDefinitions only returns maxResults results in a single page along with a nextToken response element. The remaining results of the initial request can be seen by sending another ListTaskDefinitions request with the returned nextToken value. This value can be between 1 and 100. If this parameter is not used, then ListTaskDefinitions returns up to 100 results and a nextToken value if applicable.

" - } - } - }, - "ListTaskDefinitionsResponse":{ - "type":"structure", - "members":{ - "taskDefinitionArns":{ - "shape":"StringList", - "documentation":"

The list of task definition Amazon Resource Name (ARN) entries for the ListTaskDefintions request.

" - }, - "nextToken":{ - "shape":"String", - "documentation":"

The nextToken value to include in a future ListTaskDefinitions request. When the results of a ListTaskDefinitions request exceed maxResults, this value can be used to retrieve the next page of results. This value is null when there are no more results to return.

" - } - } - }, - "ListTasksRequest":{ - "type":"structure", - "members":{ - "cluster":{ - "shape":"String", - "documentation":"

The short name or full Amazon Resource Name (ARN) of the cluster that hosts the tasks you want to list. If you do not specify a cluster, the default cluster is assumed..

" - }, - "containerInstance":{ - "shape":"String", - "documentation":"

The container instance UUID or full Amazon Resource Name (ARN) of the container instance that you want to filter the ListTasks results with. Specifying a containerInstance will limit the results to tasks that belong to that container instance.

" - }, - "family":{ - "shape":"String", - "documentation":"

The name of the family that you want to filter the ListTasks results with. Specifying a family will limit the results to tasks that belong to that family.

" - }, - "nextToken":{ - "shape":"String", - "documentation":"

The nextToken value returned from a previous paginated ListTasks request where maxResults was used and the results exceeded the value of that parameter. Pagination continues from the end of the previous results that returned the nextToken value. This value is null when there are no more results to return.

" - }, - "maxResults":{ - "shape":"BoxedInteger", - "documentation":"

The maximum number of task results returned by ListTasks in paginated output. When this parameter is used, ListTasks only returns maxResults results in a single page along with a nextToken response element. The remaining results of the initial request can be seen by sending another ListTasks request with the returned nextToken value. This value can be between 1 and 100. If this parameter is not used, then ListTasks returns up to 100 results and a nextToken value if applicable.

" - } - } - }, - "ListTasksResponse":{ - "type":"structure", - "members":{ - "taskArns":{ - "shape":"StringList", - "documentation":"

The list of task Amazon Resource Name (ARN) entries for the ListTasks request.

" - }, - "nextToken":{ - "shape":"String", - "documentation":"

The nextToken value to include in a future ListTasks request. When the results of a ListTasks request exceed maxResults, this value can be used to retrieve the next page of results. This value is null when there are no more results to return.

" - } - } - }, - "Long":{"type":"long"}, - "NetworkBinding":{ - "type":"structure", - "members":{ - "bindIP":{ - "shape":"String", - "documentation":"

The IP address that the container is bound to on the container instance.

" - }, - "containerPort":{ - "shape":"BoxedInteger", - "documentation":"

The port number on the container that should be used with the network binding.

" - }, - "hostPort":{ - "shape":"BoxedInteger", - "documentation":"

The port number on the host that should be used with the network binding.

" - } - } - }, - "NetworkBindings":{ - "type":"list", - "member":{"shape":"NetworkBinding"} - }, - "PortMapping":{ - "type":"structure", - "members":{ - "containerPort":{ - "shape":"Integer", - "documentation":"

The port number on the container that should be used with the port mapping.

" - }, - "hostPort":{ - "shape":"Integer", - "documentation":"

The port number on the host that should be used with the port mapping.

" - } - }, - "documentation":"

Port mappings allow containers to access ports on the host container instance to send or receive traffic. Port mappings are specified as part of the container definition.

" - }, - "PortMappingList":{ - "type":"list", - "member":{"shape":"PortMapping"} - }, - "RegisterContainerInstanceRequest":{ - "type":"structure", - "members":{ - "cluster":{ - "shape":"String", - "documentation":"

The short name or full Amazon Resource Name (ARN) of the cluster that you want to register your container instance with. If you do not specify a cluster, the default cluster is assumed..

" - }, - "instanceIdentityDocument":{"shape":"String"}, - "instanceIdentityDocumentSignature":{"shape":"String"}, - "totalResources":{"shape":"Resources"} - } - }, - "RegisterContainerInstanceResponse":{ - "type":"structure", - "members":{ - "containerInstance":{"shape":"ContainerInstance"} - } - }, - "RegisterTaskDefinitionRequest":{ - "type":"structure", - "required":[ - "family", - "containerDefinitions" - ], - "members":{ - "family":{ - "shape":"String", - "documentation":"

You can specify a family for a task definition, which allows you to track multiple versions of the same task definition. You can think of the family as a name for your task definition.

" - }, - "containerDefinitions":{ - "shape":"ContainerDefinitions", - "documentation":"

A list of container definitions in JSON format that describe the different containers that make up your task.

" - } - } - }, - "RegisterTaskDefinitionResponse":{ - "type":"structure", - "members":{ - "taskDefinition":{"shape":"TaskDefinition"} - } - }, - "Resource":{ - "type":"structure", - "members":{ - "name":{ - "shape":"String", - "documentation":"

The name of the resource, such as CPU, MEMORY, PORTS, or a user-defined resource.

" - }, - "type":{ - "shape":"String", - "documentation":"

The type of the resource, such as INTEGER, DOUBLE, LONG, or STRINGSET.

" - }, - "doubleValue":{ - "shape":"Double", - "documentation":"

When the doubleValue type is set, the value of the resource must be a double precision floating-point type.

" - }, - "longValue":{ - "shape":"Long", - "documentation":"

When the longValue type is set, the value of the resource must be an extended precision floating-point type.

" - }, - "integerValue":{ - "shape":"Integer", - "documentation":"

When the integerValue type is set, the value of the resource must be an integer.

" - }, - "stringSetValue":{ - "shape":"StringList", - "documentation":"

When the stringSetValue type is set, the value of the resource must be a string type.

" - } - }, - "documentation":"

Describes the resources available for a container instance.

" - }, - "Resources":{ - "type":"list", - "member":{"shape":"Resource"} - }, - "RunTaskRequest":{ - "type":"structure", - "required":["taskDefinition"], - "members":{ - "cluster":{ - "shape":"String", - "documentation":"

The short name or full Amazon Resource Name (ARN) of the cluster that you want to run your task on. If you do not specify a cluster, the default cluster is assumed..

" - }, - "taskDefinition":{ - "shape":"String", - "documentation":"

The family and revision (family:revision) or full Amazon Resource Name (ARN) of the task definition that you want to run.

" - }, - "overrides":{"shape":"TaskOverride"}, - "count":{ - "shape":"BoxedInteger", - "documentation":"

The number of instances of the specified task that you would like to place on your cluster.

" - } - } - }, - "RunTaskResponse":{ - "type":"structure", - "members":{ - "tasks":{ - "shape":"Tasks", - "documentation":"

A full description of the tasks that were run. Each task that was successfully placed on your cluster will be described here.

" - }, - "failures":{ - "shape":"Failures", - "documentation":"

Any failed tasks from your RunTask action are listed here.

" - } - } - }, - "ServerException":{ - "type":"structure", - "members":{ - "message":{"shape":"String"} - }, - "exception":true, - "documentation":"

These errors are usually caused by a server-side issue.

" - }, - "StartTaskRequest":{ - "type":"structure", - "required":[ - "taskDefinition", - "containerInstances" - ], - "members":{ - "cluster":{ - "shape":"String", - "documentation":"

The short name or full Amazon Resource Name (ARN) of the cluster that you want to start your task on. If you do not specify a cluster, the default cluster is assumed..

" - }, - "taskDefinition":{ - "shape":"String", - "documentation":"

The family and revision (family:revision) or full Amazon Resource Name (ARN) of the task definition that you want to start.

" - }, - "overrides":{"shape":"TaskOverride"}, - "containerInstances":{ - "shape":"StringList", - "documentation":"

The container instance UUIDs or full Amazon Resource Name (ARN) entries for the container instances on which you would like to place your task.

" - } - } - }, - "StartTaskResponse":{ - "type":"structure", - "members":{ - "tasks":{ - "shape":"Tasks", - "documentation":"

A full description of the tasks that were started. Each task that was successfully placed on your container instances will be described here.

" - }, - "failures":{ - "shape":"Failures", - "documentation":"

Any failed tasks from your StartTask action are listed here.

" - } - } - }, - "StopTaskRequest":{ - "type":"structure", - "required":["task"], - "members":{ - "cluster":{ - "shape":"String", - "documentation":"

The short name or full Amazon Resource Name (ARN) of the cluster that hosts the task you want to stop. If you do not specify a cluster, the default cluster is assumed..

" - }, - "task":{ - "shape":"String", - "documentation":"

The task UUIDs or full Amazon Resource Name (ARN) entry of the task you would like to stop.

" - } - } - }, - "StopTaskResponse":{ - "type":"structure", - "members":{ - "task":{"shape":"Task"} - } - }, - "String":{"type":"string"}, - "StringList":{ - "type":"list", - "member":{"shape":"String"} - }, - "SubmitContainerStateChangeRequest":{ - "type":"structure", - "members":{ - "cluster":{ - "shape":"String", - "documentation":"

The short name or full Amazon Resource Name (ARN) of the cluster that hosts the container.

" - }, - "task":{ - "shape":"String", - "documentation":"

The task UUID or full Amazon Resource Name (ARN) of the task that hosts the container.

" - }, - "containerName":{ - "shape":"String", - "documentation":"

The name of the container.

" - }, - "status":{ - "shape":"String", - "documentation":"

The status of the state change request.

" - }, - "exitCode":{ - "shape":"BoxedInteger", - "documentation":"

The exit code returned for the state change request.

" - }, - "reason":{ - "shape":"String", - "documentation":"

The reason for the state change request.

" - }, - "networkBindings":{ - "shape":"NetworkBindings", - "documentation":"

The network bindings of the container.

" - } - } - }, - "SubmitContainerStateChangeResponse":{ - "type":"structure", - "members":{ - "acknowledgment":{ - "shape":"String", - "documentation":"

Acknowledgement of the state change.

" - } - } - }, - "SubmitTaskStateChangeRequest":{ - "type":"structure", - "members":{ - "cluster":{ - "shape":"String", - "documentation":"

The short name or full Amazon Resource Name (ARN) of the cluster that hosts the task.

" - }, - "task":{ - "shape":"String", - "documentation":"

The task UUID or full Amazon Resource Name (ARN) of the task in the state change request.

" - }, - "status":{ - "shape":"String", - "documentation":"

The status of the state change request.

" - }, - "reason":{ - "shape":"String", - "documentation":"

The reason for the state change request.

" - } - } - }, - "SubmitTaskStateChangeResponse":{ - "type":"structure", - "members":{ - "acknowledgment":{ - "shape":"String", - "documentation":"

Acknowledgement of the state change.

" - } - } - }, - "Task":{ - "type":"structure", - "members":{ - "taskArn":{ - "shape":"String", - "documentation":"

The Amazon Resource Name (ARN) of the task.

" - }, - "clusterArn":{ - "shape":"String", - "documentation":"

The Amazon Resource Name (ARN) of the of the cluster that hosts the task.

" - }, - "taskDefinitionArn":{ - "shape":"String", - "documentation":"

The Amazon Resource Name (ARN) of the of the task definition that creates the task.

" - }, - "containerInstanceArn":{ - "shape":"String", - "documentation":"

The Amazon Resource Name (ARN) of the container instances that host the task.

" - }, - "overrides":{ - "shape":"TaskOverride", - "documentation":"

One or more container overrides.

" - }, - "lastStatus":{ - "shape":"String", - "documentation":"

The last known status of the task.

" - }, - "desiredStatus":{ - "shape":"String", - "documentation":"

The desired status of the task.

" - }, - "containers":{ - "shape":"Containers", - "documentation":"

The containers associated with the task.

" - } - } - }, - "TaskDefinition":{ - "type":"structure", - "members":{ - "taskDefinitionArn":{ - "shape":"String", - "documentation":"

The full Amazon Resource Name (ARN) of the of the task definition.

" - }, - "containerDefinitions":{ - "shape":"ContainerDefinitions", - "documentation":"

A list of container definitions in JSON format that describe the different containers that make up your task.

" - }, - "family":{ - "shape":"String", - "documentation":"

The family of your task definition. You can think of the family as the name of your task definition.

" - }, - "revision":{ - "shape":"Integer", - "documentation":"

The revision of the task in a particular family. You can think of the revision as a version number of a task definition in a family. When you register a task definition for the first time, the revision is 1, and each time you register a task definition in the same family, the revision value increases by one.

" - } - } - }, - "TaskOverride":{ - "type":"structure", - "members":{ - "containerOverrides":{ - "shape":"ContainerOverrides", - "documentation":"

One or more container overrides to send when running a task.

" - } - } - }, - "Tasks":{ - "type":"list", - "member":{"shape":"Task"} - } - } -} diff --git a/src/github.com/getlantern/aws-sdk-go/apis/elasticache/2014-09-30.normal.json b/src/github.com/getlantern/aws-sdk-go/apis/elasticache/2014-09-30.normal.json deleted file mode 100644 index ca9a335164..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/apis/elasticache/2014-09-30.normal.json +++ /dev/null @@ -1,5049 +0,0 @@ -{ - "metadata":{ - "apiVersion":"2014-09-30", - "endpointPrefix":"elasticache", - "serviceFullName":"Amazon ElastiCache", - "signatureVersion":"v4", - "xmlNamespace":"http://elasticache.amazonaws.com/doc/2014-09-30/", - "protocol":"query" - }, - "documentation":"Amazon ElastiCache

Amazon ElastiCache is a web service that makes it easier to set up, operate, and scale a distributed cache in the cloud.

With ElastiCache, customers gain all of the benefits of a high-performance, in-memory cache with far less of the administrative burden of launching and managing a distributed cache. The service makes setup, scaling, and cluster failure handling much simpler than in a self-managed cache deployment.

In addition, through integration with Amazon CloudWatch, customers get enhanced visibility into the key performance statistics associated with their cache and can receive alarms if a part of their cache runs hot.

", - "operations":{ - "AuthorizeCacheSecurityGroupIngress":{ - "name":"AuthorizeCacheSecurityGroupIngress", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"AuthorizeCacheSecurityGroupIngressMessage", - "documentation":"

Represents the input of an AuthorizeCacheSecurityGroupIngress operation.

" - }, - "output":{ - "shape":"AuthorizeCacheSecurityGroupIngressResult", - "wrapper":true, - "documentation":"

Represents the output of one of the following operations:

", - "resultWrapper":"AuthorizeCacheSecurityGroupIngressResult" - }, - "errors":[ - { - "shape":"CacheSecurityGroupNotFoundFault", - "error":{ - "code":"CacheSecurityGroupNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The requested cache security group name does not refer to an existing cache security group.

" - }, - { - "shape":"InvalidCacheSecurityGroupStateFault", - "error":{ - "code":"InvalidCacheSecurityGroupState", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The current state of the cache security group does not allow deletion.

" - }, - { - "shape":"AuthorizationAlreadyExistsFault", - "error":{ - "code":"AuthorizationAlreadyExists", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified Amazon EC2 security group is already authorized for the specified cache security group.

" - }, - { - "shape":"InvalidParameterValueException", - "error":{ - "code":"InvalidParameterValue", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The value for a parameter is invalid.

" - }, - { - "shape":"InvalidParameterCombinationException", - "error":{ - "code":"InvalidParameterCombination", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Two or more incompatible parameters were specified.

" - } - ], - "documentation":"

The AuthorizeCacheSecurityGroupIngress operation allows network ingress to a cache security group. Applications using ElastiCache must be running on Amazon EC2, and Amazon EC2 security groups are used as the authorization mechanism.

" - }, - "CopySnapshot":{ - "name":"CopySnapshot", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"CopySnapshotMessage", - "documentation":"

Represents the input of a CopySnapshotMessage operation.

" - }, - "output":{ - "shape":"CopySnapshotResult", - "wrapper":true, - "documentation":"

Represents a copy of an entire cache cluster as of the time when the snapshot was taken.

", - "resultWrapper":"CopySnapshotResult" - }, - "errors":[ - { - "shape":"SnapshotAlreadyExistsFault", - "error":{ - "code":"SnapshotAlreadyExistsFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

You already have a snapshot with the given name.

" - }, - { - "shape":"SnapshotNotFoundFault", - "error":{ - "code":"SnapshotNotFoundFault", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The requested snapshot name does not refer to an existing snapshot.

" - }, - { - "shape":"SnapshotQuotaExceededFault", - "error":{ - "code":"SnapshotQuotaExceededFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request cannot be processed because it would exceed the maximum number of snapshots.

" - }, - { - "shape":"InvalidSnapshotStateFault", - "error":{ - "code":"InvalidSnapshotState", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The current state of the snapshot does not allow the requested action to occur.

" - }, - { - "shape":"InvalidParameterValueException", - "error":{ - "code":"InvalidParameterValue", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The value for a parameter is invalid.

" - }, - { - "shape":"InvalidParameterCombinationException", - "error":{ - "code":"InvalidParameterCombination", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Two or more incompatible parameters were specified.

" - } - ], - "documentation":"

The CopySnapshot operation makes a copy of an existing snapshot.

" - }, - "CreateCacheCluster":{ - "name":"CreateCacheCluster", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"CreateCacheClusterMessage", - "documentation":"

Represents the input of a CreateCacheCluster operation.

" - }, - "output":{ - "shape":"CreateCacheClusterResult", - "wrapper":true, - "documentation":"

Contains all of the attributes of a specific cache cluster.

", - "resultWrapper":"CreateCacheClusterResult" - }, - "errors":[ - { - "shape":"ReplicationGroupNotFoundFault", - "error":{ - "code":"ReplicationGroupNotFoundFault", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified replication group does not exist.

" - }, - { - "shape":"InvalidReplicationGroupStateFault", - "error":{ - "code":"InvalidReplicationGroupState", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The requested replication group is not in the available state.

" - }, - { - "shape":"CacheClusterAlreadyExistsFault", - "error":{ - "code":"CacheClusterAlreadyExists", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

You already have a cache cluster with the given identifier.

" - }, - { - "shape":"InsufficientCacheClusterCapacityFault", - "error":{ - "code":"InsufficientCacheClusterCapacity", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The requested cache node type is not available in the specified Availability Zone.

" - }, - { - "shape":"CacheSecurityGroupNotFoundFault", - "error":{ - "code":"CacheSecurityGroupNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The requested cache security group name does not refer to an existing cache security group.

" - }, - { - "shape":"CacheSubnetGroupNotFoundFault", - "error":{ - "code":"CacheSubnetGroupNotFoundFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The requested cache subnet group name does not refer to an existing cache subnet group.

" - }, - { - "shape":"ClusterQuotaForCustomerExceededFault", - "error":{ - "code":"ClusterQuotaForCustomerExceeded", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request cannot be processed because it would exceed the allowed number of cache clusters per customer.

" - }, - { - "shape":"NodeQuotaForClusterExceededFault", - "error":{ - "code":"NodeQuotaForClusterExceeded", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request cannot be processed because it would exceed the allowed number of cache nodes in a single cache cluster.

" - }, - { - "shape":"NodeQuotaForCustomerExceededFault", - "error":{ - "code":"NodeQuotaForCustomerExceeded", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request cannot be processed because it would exceed the allowed number of cache nodes per customer.

" - }, - { - "shape":"CacheParameterGroupNotFoundFault", - "error":{ - "code":"CacheParameterGroupNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The requested cache parameter group name does not refer to an existing cache parameter group.

" - }, - { - "shape":"InvalidVPCNetworkStateFault", - "error":{ - "code":"InvalidVPCNetworkStateFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The VPC network is in an invalid state.

" - }, - { - "shape":"InvalidParameterValueException", - "error":{ - "code":"InvalidParameterValue", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The value for a parameter is invalid.

" - }, - { - "shape":"InvalidParameterCombinationException", - "error":{ - "code":"InvalidParameterCombination", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Two or more incompatible parameters were specified.

" - } - ], - "documentation":"

The CreateCacheCluster operation creates a cache cluster. All nodes in the cache cluster run the same protocol-compliant cache engine software, either Memcached or Redis.

" - }, - "CreateCacheParameterGroup":{ - "name":"CreateCacheParameterGroup", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"CreateCacheParameterGroupMessage", - "documentation":"

Represents the input of a CreateCacheParameterGroup operation.

" - }, - "output":{ - "shape":"CreateCacheParameterGroupResult", - "wrapper":true, - "documentation":"

Represents the output of a CreateCacheParameterGroup operation.

", - "resultWrapper":"CreateCacheParameterGroupResult" - }, - "errors":[ - { - "shape":"CacheParameterGroupQuotaExceededFault", - "error":{ - "code":"CacheParameterGroupQuotaExceeded", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request cannot be processed because it would exceed the maximum number of cache security groups.

" - }, - { - "shape":"CacheParameterGroupAlreadyExistsFault", - "error":{ - "code":"CacheParameterGroupAlreadyExists", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

A cache parameter group with the requested name already exists.

" - }, - { - "shape":"InvalidCacheParameterGroupStateFault", - "error":{ - "code":"InvalidCacheParameterGroupState", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The current state of the cache parameter group does not allow the requested action to occur.

" - }, - { - "shape":"InvalidParameterValueException", - "error":{ - "code":"InvalidParameterValue", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The value for a parameter is invalid.

" - }, - { - "shape":"InvalidParameterCombinationException", - "error":{ - "code":"InvalidParameterCombination", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Two or more incompatible parameters were specified.

" - } - ], - "documentation":"

The CreateCacheParameterGroup operation creates a new cache parameter group. A cache parameter group is a collection of parameters that you apply to all of the nodes in a cache cluster.

" - }, - "CreateCacheSecurityGroup":{ - "name":"CreateCacheSecurityGroup", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"CreateCacheSecurityGroupMessage", - "documentation":"

Represents the input of a CreateCacheSecurityGroup operation.

" - }, - "output":{ - "shape":"CreateCacheSecurityGroupResult", - "wrapper":true, - "documentation":"

Represents the output of one of the following operations:

", - "resultWrapper":"CreateCacheSecurityGroupResult" - }, - "errors":[ - { - "shape":"CacheSecurityGroupAlreadyExistsFault", - "error":{ - "code":"CacheSecurityGroupAlreadyExists", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

A cache security group with the specified name already exists.

" - }, - { - "shape":"CacheSecurityGroupQuotaExceededFault", - "error":{ - "code":"QuotaExceeded.CacheSecurityGroup", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request cannot be processed because it would exceed the allowed number of cache security groups.

" - }, - { - "shape":"InvalidParameterValueException", - "error":{ - "code":"InvalidParameterValue", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The value for a parameter is invalid.

" - }, - { - "shape":"InvalidParameterCombinationException", - "error":{ - "code":"InvalidParameterCombination", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Two or more incompatible parameters were specified.

" - } - ], - "documentation":"

The CreateCacheSecurityGroup operation creates a new cache security group. Use a cache security group to control access to one or more cache clusters.

Cache security groups are only used when you are creating a cache cluster outside of an Amazon Virtual Private Cloud (VPC). If you are creating a cache cluster inside of a VPC, use a cache subnet group instead. For more information, see CreateCacheSubnetGroup.

" - }, - "CreateCacheSubnetGroup":{ - "name":"CreateCacheSubnetGroup", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"CreateCacheSubnetGroupMessage", - "documentation":"

Represents the input of a CreateCacheSubnetGroup operation.

" - }, - "output":{ - "shape":"CreateCacheSubnetGroupResult", - "wrapper":true, - "documentation":"

Represents the output of one of the following operations:

", - "resultWrapper":"CreateCacheSubnetGroupResult" - }, - "errors":[ - { - "shape":"CacheSubnetGroupAlreadyExistsFault", - "error":{ - "code":"CacheSubnetGroupAlreadyExists", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The requested cache subnet group name is already in use by an existing cache subnet group.

" - }, - { - "shape":"CacheSubnetGroupQuotaExceededFault", - "error":{ - "code":"CacheSubnetGroupQuotaExceeded", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request cannot be processed because it would exceed the allowed number of cache subnet groups.

" - }, - { - "shape":"CacheSubnetQuotaExceededFault", - "error":{ - "code":"CacheSubnetQuotaExceededFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request cannot be processed because it would exceed the allowed number of subnets in a cache subnet group.

" - }, - { - "shape":"InvalidSubnet", - "error":{ - "code":"InvalidSubnet", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

An invalid subnet identifier was specified.

" - } - ], - "documentation":"

The CreateCacheSubnetGroup operation creates a new cache subnet group.

Use this parameter only when you are creating a cluster in an Amazon Virtual Private Cloud (VPC).

" - }, - "CreateReplicationGroup":{ - "name":"CreateReplicationGroup", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"CreateReplicationGroupMessage", - "documentation":"

Represents the input of a CreateReplicationGroup operation.

" - }, - "output":{ - "shape":"CreateReplicationGroupResult", - "wrapper":true, - "documentation":"

Contains all of the attributes of a specific replication group.

", - "resultWrapper":"CreateReplicationGroupResult" - }, - "errors":[ - { - "shape":"CacheClusterNotFoundFault", - "error":{ - "code":"CacheClusterNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The requested cache cluster ID does not refer to an existing cache cluster.

" - }, - { - "shape":"InvalidCacheClusterStateFault", - "error":{ - "code":"InvalidCacheClusterState", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The requested cache cluster is not in the available state.

" - }, - { - "shape":"ReplicationGroupAlreadyExistsFault", - "error":{ - "code":"ReplicationGroupAlreadyExists", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified replication group already exists.

" - }, - { - "shape":"InsufficientCacheClusterCapacityFault", - "error":{ - "code":"InsufficientCacheClusterCapacity", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The requested cache node type is not available in the specified Availability Zone.

" - }, - { - "shape":"CacheSecurityGroupNotFoundFault", - "error":{ - "code":"CacheSecurityGroupNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The requested cache security group name does not refer to an existing cache security group.

" - }, - { - "shape":"CacheSubnetGroupNotFoundFault", - "error":{ - "code":"CacheSubnetGroupNotFoundFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The requested cache subnet group name does not refer to an existing cache subnet group.

" - }, - { - "shape":"ClusterQuotaForCustomerExceededFault", - "error":{ - "code":"ClusterQuotaForCustomerExceeded", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request cannot be processed because it would exceed the allowed number of cache clusters per customer.

" - }, - { - "shape":"NodeQuotaForClusterExceededFault", - "error":{ - "code":"NodeQuotaForClusterExceeded", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request cannot be processed because it would exceed the allowed number of cache nodes in a single cache cluster.

" - }, - { - "shape":"NodeQuotaForCustomerExceededFault", - "error":{ - "code":"NodeQuotaForCustomerExceeded", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request cannot be processed because it would exceed the allowed number of cache nodes per customer.

" - }, - { - "shape":"CacheParameterGroupNotFoundFault", - "error":{ - "code":"CacheParameterGroupNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The requested cache parameter group name does not refer to an existing cache parameter group.

" - }, - { - "shape":"InvalidVPCNetworkStateFault", - "error":{ - "code":"InvalidVPCNetworkStateFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The VPC network is in an invalid state.

" - }, - { - "shape":"InvalidParameterValueException", - "error":{ - "code":"InvalidParameterValue", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The value for a parameter is invalid.

" - }, - { - "shape":"InvalidParameterCombinationException", - "error":{ - "code":"InvalidParameterCombination", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Two or more incompatible parameters were specified.

" - } - ], - "documentation":"

The CreateReplicationGroup operation creates a replication group. A replication group is a collection of cache clusters, where one of the cache clusters is a read/write primary and the others are read-only replicas. Writes to the primary are automatically propagated to the replicas.

When you create a replication group, you must specify an existing cache cluster that is in the primary role. When the replication group has been successfully created, you can add one or more read replica replicas to it, up to a total of five read replicas.

Note: This action is valid only for Redis.

" - }, - "CreateSnapshot":{ - "name":"CreateSnapshot", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"CreateSnapshotMessage", - "documentation":"

Represents the input of a CreateSnapshot operation.

" - }, - "output":{ - "shape":"CreateSnapshotResult", - "wrapper":true, - "documentation":"

Represents a copy of an entire cache cluster as of the time when the snapshot was taken.

", - "resultWrapper":"CreateSnapshotResult" - }, - "errors":[ - { - "shape":"SnapshotAlreadyExistsFault", - "error":{ - "code":"SnapshotAlreadyExistsFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

You already have a snapshot with the given name.

" - }, - { - "shape":"CacheClusterNotFoundFault", - "error":{ - "code":"CacheClusterNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The requested cache cluster ID does not refer to an existing cache cluster.

" - }, - { - "shape":"InvalidCacheClusterStateFault", - "error":{ - "code":"InvalidCacheClusterState", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The requested cache cluster is not in the available state.

" - }, - { - "shape":"SnapshotQuotaExceededFault", - "error":{ - "code":"SnapshotQuotaExceededFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request cannot be processed because it would exceed the maximum number of snapshots.

" - }, - { - "shape":"SnapshotFeatureNotSupportedFault", - "error":{ - "code":"SnapshotFeatureNotSupportedFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

You attempted one of the following actions:

Neither of these are supported by ElastiCache.

" - }, - { - "shape":"InvalidParameterCombinationException", - "error":{ - "code":"InvalidParameterCombination", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Two or more incompatible parameters were specified.

" - }, - { - "shape":"InvalidParameterValueException", - "error":{ - "code":"InvalidParameterValue", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The value for a parameter is invalid.

" - } - ], - "documentation":"

The CreateSnapshot operation creates a copy of an entire cache cluster at a specific moment in time.

" - }, - "DeleteCacheCluster":{ - "name":"DeleteCacheCluster", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DeleteCacheClusterMessage", - "documentation":"

Represents the input of a DeleteCacheCluster operation.

" - }, - "output":{ - "shape":"DeleteCacheClusterResult", - "wrapper":true, - "documentation":"

Contains all of the attributes of a specific cache cluster.

", - "resultWrapper":"DeleteCacheClusterResult" - }, - "errors":[ - { - "shape":"CacheClusterNotFoundFault", - "error":{ - "code":"CacheClusterNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The requested cache cluster ID does not refer to an existing cache cluster.

" - }, - { - "shape":"InvalidCacheClusterStateFault", - "error":{ - "code":"InvalidCacheClusterState", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The requested cache cluster is not in the available state.

" - }, - { - "shape":"SnapshotAlreadyExistsFault", - "error":{ - "code":"SnapshotAlreadyExistsFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

You already have a snapshot with the given name.

" - }, - { - "shape":"SnapshotFeatureNotSupportedFault", - "error":{ - "code":"SnapshotFeatureNotSupportedFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

You attempted one of the following actions:

Neither of these are supported by ElastiCache.

" - }, - { - "shape":"SnapshotQuotaExceededFault", - "error":{ - "code":"SnapshotQuotaExceededFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request cannot be processed because it would exceed the maximum number of snapshots.

" - }, - { - "shape":"InvalidParameterValueException", - "error":{ - "code":"InvalidParameterValue", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The value for a parameter is invalid.

" - }, - { - "shape":"InvalidParameterCombinationException", - "error":{ - "code":"InvalidParameterCombination", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Two or more incompatible parameters were specified.

" - } - ], - "documentation":"

The DeleteCacheCluster operation deletes a previously provisioned cache cluster. DeleteCacheCluster deletes all associated cache nodes, node endpoints and the cache cluster itself. When you receive a successful response from this operation, Amazon ElastiCache immediately begins deleting the cache cluster; you cannot cancel or revert this operation.

This API cannot be used to delete a cache cluster that is the last read replica of a replication group that has automatic failover mode enabled.

" - }, - "DeleteCacheParameterGroup":{ - "name":"DeleteCacheParameterGroup", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DeleteCacheParameterGroupMessage", - "documentation":"

Represents the input of a DeleteCacheParameterGroup operation.

" - }, - "errors":[ - { - "shape":"InvalidCacheParameterGroupStateFault", - "error":{ - "code":"InvalidCacheParameterGroupState", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The current state of the cache parameter group does not allow the requested action to occur.

" - }, - { - "shape":"CacheParameterGroupNotFoundFault", - "error":{ - "code":"CacheParameterGroupNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The requested cache parameter group name does not refer to an existing cache parameter group.

" - }, - { - "shape":"InvalidParameterValueException", - "error":{ - "code":"InvalidParameterValue", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The value for a parameter is invalid.

" - }, - { - "shape":"InvalidParameterCombinationException", - "error":{ - "code":"InvalidParameterCombination", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Two or more incompatible parameters were specified.

" - } - ], - "documentation":"

The DeleteCacheParameterGroup operation deletes the specified cache parameter group. You cannot delete a cache parameter group if it is associated with any cache clusters.

" - }, - "DeleteCacheSecurityGroup":{ - "name":"DeleteCacheSecurityGroup", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DeleteCacheSecurityGroupMessage", - "documentation":"

Represents the input of a DeleteCacheSecurityGroup operation.

" - }, - "errors":[ - { - "shape":"InvalidCacheSecurityGroupStateFault", - "error":{ - "code":"InvalidCacheSecurityGroupState", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The current state of the cache security group does not allow deletion.

" - }, - { - "shape":"CacheSecurityGroupNotFoundFault", - "error":{ - "code":"CacheSecurityGroupNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The requested cache security group name does not refer to an existing cache security group.

" - }, - { - "shape":"InvalidParameterValueException", - "error":{ - "code":"InvalidParameterValue", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The value for a parameter is invalid.

" - }, - { - "shape":"InvalidParameterCombinationException", - "error":{ - "code":"InvalidParameterCombination", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Two or more incompatible parameters were specified.

" - } - ], - "documentation":"

The DeleteCacheSecurityGroup operation deletes a cache security group.

" - }, - "DeleteCacheSubnetGroup":{ - "name":"DeleteCacheSubnetGroup", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DeleteCacheSubnetGroupMessage", - "documentation":"

Represents the input of a DeleteCacheSubnetGroup operation.

" - }, - "errors":[ - { - "shape":"CacheSubnetGroupInUse", - "error":{ - "code":"CacheSubnetGroupInUse", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The requested cache subnet group is currently in use.

" - }, - { - "shape":"CacheSubnetGroupNotFoundFault", - "error":{ - "code":"CacheSubnetGroupNotFoundFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The requested cache subnet group name does not refer to an existing cache subnet group.

" - } - ], - "documentation":"

The DeleteCacheSubnetGroup operation deletes a cache subnet group.

" - }, - "DeleteReplicationGroup":{ - "name":"DeleteReplicationGroup", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DeleteReplicationGroupMessage", - "documentation":"

Represents the input of a DeleteReplicationGroup operation.

" - }, - "output":{ - "shape":"DeleteReplicationGroupResult", - "wrapper":true, - "documentation":"

Contains all of the attributes of a specific replication group.

", - "resultWrapper":"DeleteReplicationGroupResult" - }, - "errors":[ - { - "shape":"ReplicationGroupNotFoundFault", - "error":{ - "code":"ReplicationGroupNotFoundFault", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified replication group does not exist.

" - }, - { - "shape":"InvalidReplicationGroupStateFault", - "error":{ - "code":"InvalidReplicationGroupState", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The requested replication group is not in the available state.

" - }, - { - "shape":"SnapshotAlreadyExistsFault", - "error":{ - "code":"SnapshotAlreadyExistsFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

You already have a snapshot with the given name.

" - }, - { - "shape":"SnapshotFeatureNotSupportedFault", - "error":{ - "code":"SnapshotFeatureNotSupportedFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

You attempted one of the following actions:

Neither of these are supported by ElastiCache.

" - }, - { - "shape":"SnapshotQuotaExceededFault", - "error":{ - "code":"SnapshotQuotaExceededFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request cannot be processed because it would exceed the maximum number of snapshots.

" - }, - { - "shape":"InvalidParameterValueException", - "error":{ - "code":"InvalidParameterValue", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The value for a parameter is invalid.

" - }, - { - "shape":"InvalidParameterCombinationException", - "error":{ - "code":"InvalidParameterCombination", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Two or more incompatible parameters were specified.

" - } - ], - "documentation":"

The DeleteReplicationGroup operation deletes an existing cluster. By default, this operation deletes the entire cluster, including the primary node group and all of the read replicas. You can optionally delete only the read replicas, while retaining the primary node group.

When you receive a successful response from this operation, Amazon ElastiCache immediately begins deleting the selected resources; you cannot cancel or revert this operation.

" - }, - "DeleteSnapshot":{ - "name":"DeleteSnapshot", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DeleteSnapshotMessage", - "documentation":"

Represents the input of a DeleteSnapshot operation.

" - }, - "output":{ - "shape":"DeleteSnapshotResult", - "wrapper":true, - "documentation":"

Represents a copy of an entire cache cluster as of the time when the snapshot was taken.

", - "resultWrapper":"DeleteSnapshotResult" - }, - "errors":[ - { - "shape":"SnapshotNotFoundFault", - "error":{ - "code":"SnapshotNotFoundFault", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The requested snapshot name does not refer to an existing snapshot.

" - }, - { - "shape":"InvalidSnapshotStateFault", - "error":{ - "code":"InvalidSnapshotState", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The current state of the snapshot does not allow the requested action to occur.

" - }, - { - "shape":"InvalidParameterValueException", - "error":{ - "code":"InvalidParameterValue", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The value for a parameter is invalid.

" - }, - { - "shape":"InvalidParameterCombinationException", - "error":{ - "code":"InvalidParameterCombination", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Two or more incompatible parameters were specified.

" - } - ], - "documentation":"

The DeleteSnapshot operation deletes an existing snapshot. When you receive a successful response from this operation, ElastiCache immediately begins deleting the snapshot; you cannot cancel or revert this operation.

" - }, - "DescribeCacheClusters":{ - "name":"DescribeCacheClusters", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DescribeCacheClustersMessage", - "documentation":"

Represents the input of a DescribeCacheClusters operation.

" - }, - "output":{ - "shape":"CacheClusterMessage", - "documentation":"

Represents the output of a DescribeCacheClusters operation.

", - "resultWrapper":"DescribeCacheClustersResult" - }, - "errors":[ - { - "shape":"CacheClusterNotFoundFault", - "error":{ - "code":"CacheClusterNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The requested cache cluster ID does not refer to an existing cache cluster.

" - }, - { - "shape":"InvalidParameterValueException", - "error":{ - "code":"InvalidParameterValue", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The value for a parameter is invalid.

" - }, - { - "shape":"InvalidParameterCombinationException", - "error":{ - "code":"InvalidParameterCombination", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Two or more incompatible parameters were specified.

" - } - ], - "documentation":"

The DescribeCacheClusters operation returns information about all provisioned cache clusters if no cache cluster identifier is specified, or about a specific cache cluster if a cache cluster identifier is supplied.

By default, abbreviated information about the cache clusters(s) will be returned. You can use the optional ShowDetails flag to retrieve detailed information about the cache nodes associated with the cache clusters. These details include the DNS address and port for the cache node endpoint.

If the cluster is in the CREATING state, only cluster level information will be displayed until all of the nodes are successfully provisioned.

If the cluster is in the DELETING state, only cluster level information will be displayed.

If cache nodes are currently being added to the cache cluster, node endpoint information and creation time for the additional nodes will not be displayed until they are completely provisioned. When the cache cluster state is available, the cluster is ready for use.

If cache nodes are currently being removed from the cache cluster, no endpoint information for the removed nodes is displayed.

" - }, - "DescribeCacheEngineVersions":{ - "name":"DescribeCacheEngineVersions", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DescribeCacheEngineVersionsMessage", - "documentation":"

Represents the input of a DescribeCacheEngineVersions operation.

" - }, - "output":{ - "shape":"CacheEngineVersionMessage", - "documentation":"

Represents the output of a DescribeCacheEngineVersions operation.

", - "resultWrapper":"DescribeCacheEngineVersionsResult" - }, - "documentation":"

The DescribeCacheEngineVersions operation returns a list of the available cache engines and their versions.

" - }, - "DescribeCacheParameterGroups":{ - "name":"DescribeCacheParameterGroups", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DescribeCacheParameterGroupsMessage", - "documentation":"

Represents the input of a DescribeCacheParameterGroups operation.

" - }, - "output":{ - "shape":"CacheParameterGroupsMessage", - "documentation":"

Represents the output of a DescribeCacheParameterGroups operation.

", - "resultWrapper":"DescribeCacheParameterGroupsResult" - }, - "errors":[ - { - "shape":"CacheParameterGroupNotFoundFault", - "error":{ - "code":"CacheParameterGroupNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The requested cache parameter group name does not refer to an existing cache parameter group.

" - }, - { - "shape":"InvalidParameterValueException", - "error":{ - "code":"InvalidParameterValue", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The value for a parameter is invalid.

" - }, - { - "shape":"InvalidParameterCombinationException", - "error":{ - "code":"InvalidParameterCombination", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Two or more incompatible parameters were specified.

" - } - ], - "documentation":"

The DescribeCacheParameterGroups operation returns a list of cache parameter group descriptions. If a cache parameter group name is specified, the list will contain only the descriptions for that group.

" - }, - "DescribeCacheParameters":{ - "name":"DescribeCacheParameters", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DescribeCacheParametersMessage", - "documentation":"

Represents the input of a DescribeCacheParameters operation.

" - }, - "output":{ - "shape":"CacheParameterGroupDetails", - "documentation":"

Represents the output of a DescribeCacheParameters operation.

", - "resultWrapper":"DescribeCacheParametersResult" - }, - "errors":[ - { - "shape":"CacheParameterGroupNotFoundFault", - "error":{ - "code":"CacheParameterGroupNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The requested cache parameter group name does not refer to an existing cache parameter group.

" - }, - { - "shape":"InvalidParameterValueException", - "error":{ - "code":"InvalidParameterValue", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The value for a parameter is invalid.

" - }, - { - "shape":"InvalidParameterCombinationException", - "error":{ - "code":"InvalidParameterCombination", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Two or more incompatible parameters were specified.

" - } - ], - "documentation":"

The DescribeCacheParameters operation returns the detailed parameter list for a particular cache parameter group.

" - }, - "DescribeCacheSecurityGroups":{ - "name":"DescribeCacheSecurityGroups", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DescribeCacheSecurityGroupsMessage", - "documentation":"

Represents the input of a DescribeCacheSecurityGroups operation.

" - }, - "output":{ - "shape":"CacheSecurityGroupMessage", - "documentation":"

Represents the output of a DescribeCacheSecurityGroups operation.

", - "resultWrapper":"DescribeCacheSecurityGroupsResult" - }, - "errors":[ - { - "shape":"CacheSecurityGroupNotFoundFault", - "error":{ - "code":"CacheSecurityGroupNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The requested cache security group name does not refer to an existing cache security group.

" - }, - { - "shape":"InvalidParameterValueException", - "error":{ - "code":"InvalidParameterValue", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The value for a parameter is invalid.

" - }, - { - "shape":"InvalidParameterCombinationException", - "error":{ - "code":"InvalidParameterCombination", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Two or more incompatible parameters were specified.

" - } - ], - "documentation":"

The DescribeCacheSecurityGroups operation returns a list of cache security group descriptions. If a cache security group name is specified, the list will contain only the description of that group.

" - }, - "DescribeCacheSubnetGroups":{ - "name":"DescribeCacheSubnetGroups", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DescribeCacheSubnetGroupsMessage", - "documentation":"

Represents the input of a DescribeCacheSubnetGroups operation.

" - }, - "output":{ - "shape":"CacheSubnetGroupMessage", - "documentation":"

Represents the output of a DescribeCacheSubnetGroups operation.

", - "resultWrapper":"DescribeCacheSubnetGroupsResult" - }, - "errors":[ - { - "shape":"CacheSubnetGroupNotFoundFault", - "error":{ - "code":"CacheSubnetGroupNotFoundFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The requested cache subnet group name does not refer to an existing cache subnet group.

" - } - ], - "documentation":"

The DescribeCacheSubnetGroups operation returns a list of cache subnet group descriptions. If a subnet group name is specified, the list will contain only the description of that group.

" - }, - "DescribeEngineDefaultParameters":{ - "name":"DescribeEngineDefaultParameters", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DescribeEngineDefaultParametersMessage", - "documentation":"

Represents the input of a DescribeEngineDefaultParameters operation.

" - }, - "output":{ - "shape":"DescribeEngineDefaultParametersResult", - "wrapper":true, - "documentation":"

Represents the output of a DescribeEngineDefaultParameters operation.

", - "resultWrapper":"DescribeEngineDefaultParametersResult" - }, - "errors":[ - { - "shape":"InvalidParameterValueException", - "error":{ - "code":"InvalidParameterValue", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The value for a parameter is invalid.

" - }, - { - "shape":"InvalidParameterCombinationException", - "error":{ - "code":"InvalidParameterCombination", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Two or more incompatible parameters were specified.

" - } - ], - "documentation":"

The DescribeEngineDefaultParameters operation returns the default engine and system parameter information for the specified cache engine.

" - }, - "DescribeEvents":{ - "name":"DescribeEvents", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DescribeEventsMessage", - "documentation":"

Represents the input of a DescribeEvents operation.

" - }, - "output":{ - "shape":"EventsMessage", - "documentation":"

Represents the output of a DescribeEvents operation.

", - "resultWrapper":"DescribeEventsResult" - }, - "errors":[ - { - "shape":"InvalidParameterValueException", - "error":{ - "code":"InvalidParameterValue", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The value for a parameter is invalid.

" - }, - { - "shape":"InvalidParameterCombinationException", - "error":{ - "code":"InvalidParameterCombination", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Two or more incompatible parameters were specified.

" - } - ], - "documentation":"

The DescribeEvents operation returns events related to cache clusters, cache security groups, and cache parameter groups. You can obtain events specific to a particular cache cluster, cache security group, or cache parameter group by providing the name as a parameter.

By default, only the events occurring within the last hour are returned; however, you can retrieve up to 14 days' worth of events if necessary.

" - }, - "DescribeReplicationGroups":{ - "name":"DescribeReplicationGroups", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DescribeReplicationGroupsMessage", - "documentation":"

Represents the input of a DescribeReplicationGroups operation.

" - }, - "output":{ - "shape":"ReplicationGroupMessage", - "documentation":"

Represents the output of a DescribeReplicationGroups operation.

", - "resultWrapper":"DescribeReplicationGroupsResult" - }, - "errors":[ - { - "shape":"ReplicationGroupNotFoundFault", - "error":{ - "code":"ReplicationGroupNotFoundFault", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified replication group does not exist.

" - }, - { - "shape":"InvalidParameterValueException", - "error":{ - "code":"InvalidParameterValue", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The value for a parameter is invalid.

" - }, - { - "shape":"InvalidParameterCombinationException", - "error":{ - "code":"InvalidParameterCombination", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Two or more incompatible parameters were specified.

" - } - ], - "documentation":"

The DescribeReplicationGroups operation returns information about a particular replication group. If no identifier is specified, DescribeReplicationGroups returns information about all replication groups.

" - }, - "DescribeReservedCacheNodes":{ - "name":"DescribeReservedCacheNodes", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DescribeReservedCacheNodesMessage", - "documentation":"

Represents the input of a DescribeReservedCacheNodes operation.

" - }, - "output":{ - "shape":"ReservedCacheNodeMessage", - "documentation":"

Represents the output of a DescribeReservedCacheNodes operation.

", - "resultWrapper":"DescribeReservedCacheNodesResult" - }, - "errors":[ - { - "shape":"ReservedCacheNodeNotFoundFault", - "error":{ - "code":"ReservedCacheNodeNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The requested reserved cache node was not found.

" - }, - { - "shape":"InvalidParameterValueException", - "error":{ - "code":"InvalidParameterValue", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The value for a parameter is invalid.

" - }, - { - "shape":"InvalidParameterCombinationException", - "error":{ - "code":"InvalidParameterCombination", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Two or more incompatible parameters were specified.

" - } - ], - "documentation":"

The DescribeReservedCacheNodes operation returns information about reserved cache nodes for this account, or about a specified reserved cache node.

" - }, - "DescribeReservedCacheNodesOfferings":{ - "name":"DescribeReservedCacheNodesOfferings", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DescribeReservedCacheNodesOfferingsMessage", - "documentation":"

Represents the input of a DescribeReservedCacheNodesOfferings operation.

" - }, - "output":{ - "shape":"ReservedCacheNodesOfferingMessage", - "documentation":"

Represents the output of a DescribeReservedCacheNodesOfferings operation.

", - "resultWrapper":"DescribeReservedCacheNodesOfferingsResult" - }, - "errors":[ - { - "shape":"ReservedCacheNodesOfferingNotFoundFault", - "error":{ - "code":"ReservedCacheNodesOfferingNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The requested cache node offering does not exist.

" - }, - { - "shape":"InvalidParameterValueException", - "error":{ - "code":"InvalidParameterValue", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The value for a parameter is invalid.

" - }, - { - "shape":"InvalidParameterCombinationException", - "error":{ - "code":"InvalidParameterCombination", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Two or more incompatible parameters were specified.

" - } - ], - "documentation":"

The DescribeReservedCacheNodesOfferings operation lists available reserved cache node offerings.

" - }, - "DescribeSnapshots":{ - "name":"DescribeSnapshots", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DescribeSnapshotsMessage", - "documentation":"

Represents the input of a DescribeSnapshotsMessage operation.

" - }, - "output":{ - "shape":"DescribeSnapshotsListMessage", - "documentation":"

Represents the output of a DescribeSnapshots operation.

", - "resultWrapper":"DescribeSnapshotsResult" - }, - "errors":[ - { - "shape":"CacheClusterNotFoundFault", - "error":{ - "code":"CacheClusterNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The requested cache cluster ID does not refer to an existing cache cluster.

" - }, - { - "shape":"SnapshotNotFoundFault", - "error":{ - "code":"SnapshotNotFoundFault", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The requested snapshot name does not refer to an existing snapshot.

" - }, - { - "shape":"InvalidParameterValueException", - "error":{ - "code":"InvalidParameterValue", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The value for a parameter is invalid.

" - }, - { - "shape":"InvalidParameterCombinationException", - "error":{ - "code":"InvalidParameterCombination", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Two or more incompatible parameters were specified.

" - } - ], - "documentation":"

The DescribeSnapshots operation returns information about cache cluster snapshots. By default, DescribeSnapshots lists all of your snapshots; it can optionally describe a single snapshot, or just the snapshots associated with a particular cache cluster.

" - }, - "ModifyCacheCluster":{ - "name":"ModifyCacheCluster", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"ModifyCacheClusterMessage", - "documentation":"

Represents the input of a ModifyCacheCluster operation.

" - }, - "output":{ - "shape":"ModifyCacheClusterResult", - "wrapper":true, - "documentation":"

Contains all of the attributes of a specific cache cluster.

", - "resultWrapper":"ModifyCacheClusterResult" - }, - "errors":[ - { - "shape":"InvalidCacheClusterStateFault", - "error":{ - "code":"InvalidCacheClusterState", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The requested cache cluster is not in the available state.

" - }, - { - "shape":"InvalidCacheSecurityGroupStateFault", - "error":{ - "code":"InvalidCacheSecurityGroupState", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The current state of the cache security group does not allow deletion.

" - }, - { - "shape":"InsufficientCacheClusterCapacityFault", - "error":{ - "code":"InsufficientCacheClusterCapacity", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The requested cache node type is not available in the specified Availability Zone.

" - }, - { - "shape":"CacheClusterNotFoundFault", - "error":{ - "code":"CacheClusterNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The requested cache cluster ID does not refer to an existing cache cluster.

" - }, - { - "shape":"NodeQuotaForClusterExceededFault", - "error":{ - "code":"NodeQuotaForClusterExceeded", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request cannot be processed because it would exceed the allowed number of cache nodes in a single cache cluster.

" - }, - { - "shape":"NodeQuotaForCustomerExceededFault", - "error":{ - "code":"NodeQuotaForCustomerExceeded", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request cannot be processed because it would exceed the allowed number of cache nodes per customer.

" - }, - { - "shape":"CacheSecurityGroupNotFoundFault", - "error":{ - "code":"CacheSecurityGroupNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The requested cache security group name does not refer to an existing cache security group.

" - }, - { - "shape":"CacheParameterGroupNotFoundFault", - "error":{ - "code":"CacheParameterGroupNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The requested cache parameter group name does not refer to an existing cache parameter group.

" - }, - { - "shape":"InvalidVPCNetworkStateFault", - "error":{ - "code":"InvalidVPCNetworkStateFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The VPC network is in an invalid state.

" - }, - { - "shape":"InvalidParameterValueException", - "error":{ - "code":"InvalidParameterValue", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The value for a parameter is invalid.

" - }, - { - "shape":"InvalidParameterCombinationException", - "error":{ - "code":"InvalidParameterCombination", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Two or more incompatible parameters were specified.

" - } - ], - "documentation":"

The ModifyCacheCluster operation modifies the settings for a cache cluster. You can use this operation to change one or more cluster configuration parameters by specifying the parameters and the new values.

" - }, - "ModifyCacheParameterGroup":{ - "name":"ModifyCacheParameterGroup", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"ModifyCacheParameterGroupMessage", - "documentation":"

Represents the input of a ModifyCacheParameterGroup operation.

" - }, - "output":{ - "shape":"CacheParameterGroupNameMessage", - "documentation":"

Represents the output of one of the following operations:

", - "resultWrapper":"ModifyCacheParameterGroupResult" - }, - "errors":[ - { - "shape":"CacheParameterGroupNotFoundFault", - "error":{ - "code":"CacheParameterGroupNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The requested cache parameter group name does not refer to an existing cache parameter group.

" - }, - { - "shape":"InvalidCacheParameterGroupStateFault", - "error":{ - "code":"InvalidCacheParameterGroupState", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The current state of the cache parameter group does not allow the requested action to occur.

" - }, - { - "shape":"InvalidParameterValueException", - "error":{ - "code":"InvalidParameterValue", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The value for a parameter is invalid.

" - }, - { - "shape":"InvalidParameterCombinationException", - "error":{ - "code":"InvalidParameterCombination", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Two or more incompatible parameters were specified.

" - } - ], - "documentation":"

The ModifyCacheParameterGroup operation modifies the parameters of a cache parameter group. You can modify up to 20 parameters in a single request by submitting a list parameter name and value pairs.

" - }, - "ModifyCacheSubnetGroup":{ - "name":"ModifyCacheSubnetGroup", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"ModifyCacheSubnetGroupMessage", - "documentation":"

Represents the input of a ModifyCacheSubnetGroup operation.

" - }, - "output":{ - "shape":"ModifyCacheSubnetGroupResult", - "wrapper":true, - "documentation":"

Represents the output of one of the following operations:

", - "resultWrapper":"ModifyCacheSubnetGroupResult" - }, - "errors":[ - { - "shape":"CacheSubnetGroupNotFoundFault", - "error":{ - "code":"CacheSubnetGroupNotFoundFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The requested cache subnet group name does not refer to an existing cache subnet group.

" - }, - { - "shape":"CacheSubnetQuotaExceededFault", - "error":{ - "code":"CacheSubnetQuotaExceededFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request cannot be processed because it would exceed the allowed number of subnets in a cache subnet group.

" - }, - { - "shape":"SubnetInUse", - "error":{ - "code":"SubnetInUse", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The requested subnet is being used by another cache subnet group.

" - }, - { - "shape":"InvalidSubnet", - "error":{ - "code":"InvalidSubnet", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

An invalid subnet identifier was specified.

" - } - ], - "documentation":"

The ModifyCacheSubnetGroup operation modifies an existing cache subnet group.

" - }, - "ModifyReplicationGroup":{ - "name":"ModifyReplicationGroup", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"ModifyReplicationGroupMessage", - "documentation":"

Represents the input of a ModifyReplicationGroups operation.

" - }, - "output":{ - "shape":"ModifyReplicationGroupResult", - "wrapper":true, - "documentation":"

Contains all of the attributes of a specific replication group.

", - "resultWrapper":"ModifyReplicationGroupResult" - }, - "errors":[ - { - "shape":"ReplicationGroupNotFoundFault", - "error":{ - "code":"ReplicationGroupNotFoundFault", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified replication group does not exist.

" - }, - { - "shape":"InvalidReplicationGroupStateFault", - "error":{ - "code":"InvalidReplicationGroupState", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The requested replication group is not in the available state.

" - }, - { - "shape":"InvalidCacheClusterStateFault", - "error":{ - "code":"InvalidCacheClusterState", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The requested cache cluster is not in the available state.

" - }, - { - "shape":"InvalidCacheSecurityGroupStateFault", - "error":{ - "code":"InvalidCacheSecurityGroupState", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The current state of the cache security group does not allow deletion.

" - }, - { - "shape":"InsufficientCacheClusterCapacityFault", - "error":{ - "code":"InsufficientCacheClusterCapacity", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The requested cache node type is not available in the specified Availability Zone.

" - }, - { - "shape":"CacheClusterNotFoundFault", - "error":{ - "code":"CacheClusterNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The requested cache cluster ID does not refer to an existing cache cluster.

" - }, - { - "shape":"NodeQuotaForClusterExceededFault", - "error":{ - "code":"NodeQuotaForClusterExceeded", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request cannot be processed because it would exceed the allowed number of cache nodes in a single cache cluster.

" - }, - { - "shape":"NodeQuotaForCustomerExceededFault", - "error":{ - "code":"NodeQuotaForCustomerExceeded", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request cannot be processed because it would exceed the allowed number of cache nodes per customer.

" - }, - { - "shape":"CacheSecurityGroupNotFoundFault", - "error":{ - "code":"CacheSecurityGroupNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The requested cache security group name does not refer to an existing cache security group.

" - }, - { - "shape":"CacheParameterGroupNotFoundFault", - "error":{ - "code":"CacheParameterGroupNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The requested cache parameter group name does not refer to an existing cache parameter group.

" - }, - { - "shape":"InvalidVPCNetworkStateFault", - "error":{ - "code":"InvalidVPCNetworkStateFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The VPC network is in an invalid state.

" - }, - { - "shape":"InvalidParameterValueException", - "error":{ - "code":"InvalidParameterValue", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The value for a parameter is invalid.

" - }, - { - "shape":"InvalidParameterCombinationException", - "error":{ - "code":"InvalidParameterCombination", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Two or more incompatible parameters were specified.

" - } - ], - "documentation":"

The ModifyReplicationGroup operation modifies the settings for a replication group.

" - }, - "PurchaseReservedCacheNodesOffering":{ - "name":"PurchaseReservedCacheNodesOffering", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"PurchaseReservedCacheNodesOfferingMessage", - "documentation":"

Represents the input of a PurchaseReservedCacheNodesOffering operation.

" - }, - "output":{ - "shape":"PurchaseReservedCacheNodesOfferingResult", - "wrapper":true, - "documentation":"

Represents the output of a PurchaseReservedCacheNodesOffering operation.

", - "resultWrapper":"PurchaseReservedCacheNodesOfferingResult" - }, - "errors":[ - { - "shape":"ReservedCacheNodesOfferingNotFoundFault", - "error":{ - "code":"ReservedCacheNodesOfferingNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The requested cache node offering does not exist.

" - }, - { - "shape":"ReservedCacheNodeAlreadyExistsFault", - "error":{ - "code":"ReservedCacheNodeAlreadyExists", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

You already have a reservation with the given identifier.

" - }, - { - "shape":"ReservedCacheNodeQuotaExceededFault", - "error":{ - "code":"ReservedCacheNodeQuotaExceeded", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request cannot be processed because it would exceed the user's cache node quota.

" - }, - { - "shape":"InvalidParameterValueException", - "error":{ - "code":"InvalidParameterValue", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The value for a parameter is invalid.

" - }, - { - "shape":"InvalidParameterCombinationException", - "error":{ - "code":"InvalidParameterCombination", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Two or more incompatible parameters were specified.

" - } - ], - "documentation":"

The PurchaseReservedCacheNodesOffering operation allows you to purchase a reserved cache node offering.

" - }, - "RebootCacheCluster":{ - "name":"RebootCacheCluster", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"RebootCacheClusterMessage", - "documentation":"

Represents the input of a RebootCacheCluster operation.

" - }, - "output":{ - "shape":"RebootCacheClusterResult", - "wrapper":true, - "documentation":"

Contains all of the attributes of a specific cache cluster.

", - "resultWrapper":"RebootCacheClusterResult" - }, - "errors":[ - { - "shape":"InvalidCacheClusterStateFault", - "error":{ - "code":"InvalidCacheClusterState", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The requested cache cluster is not in the available state.

" - }, - { - "shape":"CacheClusterNotFoundFault", - "error":{ - "code":"CacheClusterNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The requested cache cluster ID does not refer to an existing cache cluster.

" - } - ], - "documentation":"

The RebootCacheCluster operation reboots some, or all, of the cache nodes within a provisioned cache cluster. This API will apply any modified cache parameter groups to the cache cluster. The reboot action takes place as soon as possible, and results in a momentary outage to the cache cluster. During the reboot, the cache cluster status is set to REBOOTING.

The reboot causes the contents of the cache (for each cache node being rebooted) to be lost.

When the reboot is complete, a cache cluster event is created.

" - }, - "ResetCacheParameterGroup":{ - "name":"ResetCacheParameterGroup", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"ResetCacheParameterGroupMessage", - "documentation":"

Represents the input of a ResetCacheParameterGroup operation.

" - }, - "output":{ - "shape":"CacheParameterGroupNameMessage", - "documentation":"

Represents the output of one of the following operations:

", - "resultWrapper":"ResetCacheParameterGroupResult" - }, - "errors":[ - { - "shape":"InvalidCacheParameterGroupStateFault", - "error":{ - "code":"InvalidCacheParameterGroupState", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The current state of the cache parameter group does not allow the requested action to occur.

" - }, - { - "shape":"CacheParameterGroupNotFoundFault", - "error":{ - "code":"CacheParameterGroupNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The requested cache parameter group name does not refer to an existing cache parameter group.

" - }, - { - "shape":"InvalidParameterValueException", - "error":{ - "code":"InvalidParameterValue", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The value for a parameter is invalid.

" - }, - { - "shape":"InvalidParameterCombinationException", - "error":{ - "code":"InvalidParameterCombination", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Two or more incompatible parameters were specified.

" - } - ], - "documentation":"

The ResetCacheParameterGroup operation modifies the parameters of a cache parameter group to the engine or system default value. You can reset specific parameters by submitting a list of parameter names. To reset the entire cache parameter group, specify the ResetAllParameters and CacheParameterGroupName parameters.

" - }, - "RevokeCacheSecurityGroupIngress":{ - "name":"RevokeCacheSecurityGroupIngress", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"RevokeCacheSecurityGroupIngressMessage", - "documentation":"

Represents the input of a RevokeCacheSecurityGroupIngress operation.

" - }, - "output":{ - "shape":"RevokeCacheSecurityGroupIngressResult", - "wrapper":true, - "documentation":"

Represents the output of one of the following operations:

", - "resultWrapper":"RevokeCacheSecurityGroupIngressResult" - }, - "errors":[ - { - "shape":"CacheSecurityGroupNotFoundFault", - "error":{ - "code":"CacheSecurityGroupNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The requested cache security group name does not refer to an existing cache security group.

" - }, - { - "shape":"AuthorizationNotFoundFault", - "error":{ - "code":"AuthorizationNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified Amazon EC2 security group is not authorized for the specified cache security group.

" - }, - { - "shape":"InvalidCacheSecurityGroupStateFault", - "error":{ - "code":"InvalidCacheSecurityGroupState", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The current state of the cache security group does not allow deletion.

" - }, - { - "shape":"InvalidParameterValueException", - "error":{ - "code":"InvalidParameterValue", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The value for a parameter is invalid.

" - }, - { - "shape":"InvalidParameterCombinationException", - "error":{ - "code":"InvalidParameterCombination", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Two or more incompatible parameters were specified.

" - } - ], - "documentation":"

The RevokeCacheSecurityGroupIngress operation revokes ingress from a cache security group. Use this operation to disallow access from an Amazon EC2 security group that had been previously authorized.

" - } - }, - "shapes":{ - "AZMode":{ - "type":"string", - "enum":[ - "single-az", - "cross-az" - ] - }, - "AuthorizationAlreadyExistsFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"AuthorizationAlreadyExists", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified Amazon EC2 security group is already authorized for the specified cache security group.

" - }, - "AuthorizationNotFoundFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"AuthorizationNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified Amazon EC2 security group is not authorized for the specified cache security group.

" - }, - "AuthorizeCacheSecurityGroupIngressMessage":{ - "type":"structure", - "required":[ - "CacheSecurityGroupName", - "EC2SecurityGroupName", - "EC2SecurityGroupOwnerId" - ], - "members":{ - "CacheSecurityGroupName":{ - "shape":"String", - "documentation":"

The cache security group which will allow network ingress.

" - }, - "EC2SecurityGroupName":{ - "shape":"String", - "documentation":"

The Amazon EC2 security group to be authorized for ingress to the cache security group.

" - }, - "EC2SecurityGroupOwnerId":{ - "shape":"String", - "documentation":"

The AWS account number of the Amazon EC2 security group owner. Note that this is not the same thing as an AWS access key ID - you must provide a valid AWS account number for this parameter.

" - } - }, - "documentation":"

Represents the input of an AuthorizeCacheSecurityGroupIngress operation.

" - }, - "AutomaticFailoverStatus":{ - "type":"string", - "enum":[ - "enabled", - "disabled", - "enabling", - "disabling" - ] - }, - "AvailabilityZone":{ - "type":"structure", - "members":{ - "Name":{ - "shape":"String", - "documentation":"

The name of the Availability Zone.

" - } - }, - "wrapper":true, - "documentation":"

Describes an Availability Zone in which the cache cluster is launched.

" - }, - "AvailabilityZonesList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"AvailabilityZone" - } - }, - "AwsQueryErrorMessage":{"type":"string"}, - "Boolean":{"type":"boolean"}, - "BooleanOptional":{"type":"boolean"}, - "CacheCluster":{ - "type":"structure", - "members":{ - "CacheClusterId":{ - "shape":"String", - "documentation":"

The user-supplied identifier of the cache cluster. This identifier is a unique key that identifies a cache cluster.

" - }, - "ConfigurationEndpoint":{"shape":"Endpoint"}, - "ClientDownloadLandingPage":{ - "shape":"String", - "documentation":"

The URL of the web page where you can download the latest ElastiCache client library.

" - }, - "CacheNodeType":{ - "shape":"String", - "documentation":"

The name of the compute and memory capacity node type for the cache cluster.

" - }, - "Engine":{ - "shape":"String", - "documentation":"

The name of the cache engine (memcached or redis) to be used for this cache cluster.

" - }, - "EngineVersion":{ - "shape":"String", - "documentation":"

The version of the cache engine version that is used in this cache cluster.

" - }, - "CacheClusterStatus":{ - "shape":"String", - "documentation":"

The current state of this cache cluster, one of the following values: available, creating, deleted, deleting, incompatible-network, modifying, rebooting cache cluster nodes, restore-failed, or snapshotting.

" - }, - "NumCacheNodes":{ - "shape":"IntegerOptional", - "documentation":"

The number of cache nodes in the cache cluster.

" - }, - "PreferredAvailabilityZone":{ - "shape":"String", - "documentation":"

The name of the Availability Zone in which the cache cluster is located or \"Multiple\" if the cache nodes are located in different Availability Zones.

" - }, - "CacheClusterCreateTime":{ - "shape":"TStamp", - "documentation":"

The date and time when the cache cluster was created.

" - }, - "PreferredMaintenanceWindow":{ - "shape":"String", - "documentation":"

The time range (in UTC) during which weekly system maintenance can occur.

" - }, - "PendingModifiedValues":{"shape":"PendingModifiedValues"}, - "NotificationConfiguration":{"shape":"NotificationConfiguration"}, - "CacheSecurityGroups":{ - "shape":"CacheSecurityGroupMembershipList", - "documentation":"

A list of cache security group elements, composed of name and status sub-elements.

" - }, - "CacheParameterGroup":{"shape":"CacheParameterGroupStatus"}, - "CacheSubnetGroupName":{ - "shape":"String", - "documentation":"

The name of the cache subnet group associated with the cache cluster.

" - }, - "CacheNodes":{ - "shape":"CacheNodeList", - "documentation":"

A list of cache nodes that are members of the cache cluster.

" - }, - "AutoMinorVersionUpgrade":{ - "shape":"Boolean", - "documentation":"

If true, then minor version patches are applied automatically; if false, then automatic minor version patches are disabled.

" - }, - "SecurityGroups":{ - "shape":"SecurityGroupMembershipList", - "documentation":"

A list of VPC Security Groups associated with the cache cluster.

" - }, - "ReplicationGroupId":{ - "shape":"String", - "documentation":"

The replication group to which this cache cluster belongs. If this field is empty, the cache cluster is not associated with any replication group.

" - }, - "SnapshotRetentionLimit":{ - "shape":"IntegerOptional", - "documentation":"

The number of days for which ElastiCache will retain automatic cache cluster snapshots before deleting them. For example, if you set SnapshotRetentionLimit to 5, then a snapshot that was taken today will be retained for 5 days before being deleted.

Important
If the value of SnapshotRetentionLimit is set to zero (0), backups are turned off.

" - }, - "SnapshotWindow":{ - "shape":"String", - "documentation":"

The daily time range (in UTC) during which ElastiCache will begin taking a daily snapshot of your cache cluster.

Example: 05:00-09:00

" - } - }, - "wrapper":true, - "documentation":"

Contains all of the attributes of a specific cache cluster.

" - }, - "CacheClusterAlreadyExistsFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"CacheClusterAlreadyExists", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

You already have a cache cluster with the given identifier.

" - }, - "CacheClusterList":{ - "type":"list", - "member":{ - "shape":"CacheCluster", - "locationName":"CacheCluster" - } - }, - "CacheClusterMessage":{ - "type":"structure", - "members":{ - "Marker":{ - "shape":"String", - "documentation":"

Provides an identifier to allow retrieval of paginated results.

" - }, - "CacheClusters":{ - "shape":"CacheClusterList", - "documentation":"

A list of cache clusters. Each item in the list contains detailed information about one cache cluster.

" - } - }, - "documentation":"

Represents the output of a DescribeCacheClusters operation.

" - }, - "CacheClusterNotFoundFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"CacheClusterNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The requested cache cluster ID does not refer to an existing cache cluster.

" - }, - "CacheEngineVersion":{ - "type":"structure", - "members":{ - "Engine":{ - "shape":"String", - "documentation":"

The name of the cache engine.

" - }, - "EngineVersion":{ - "shape":"String", - "documentation":"

The version number of the cache engine.

" - }, - "CacheParameterGroupFamily":{ - "shape":"String", - "documentation":"

The name of the cache parameter group family associated with this cache engine.

" - }, - "CacheEngineDescription":{ - "shape":"String", - "documentation":"

The description of the cache engine.

" - }, - "CacheEngineVersionDescription":{ - "shape":"String", - "documentation":"

The description of the cache engine version.

" - } - }, - "documentation":"

Provides all of the details about a particular cache engine version.

" - }, - "CacheEngineVersionList":{ - "type":"list", - "member":{ - "shape":"CacheEngineVersion", - "locationName":"CacheEngineVersion" - } - }, - "CacheEngineVersionMessage":{ - "type":"structure", - "members":{ - "Marker":{ - "shape":"String", - "documentation":"

Provides an identifier to allow retrieval of paginated results.

" - }, - "CacheEngineVersions":{ - "shape":"CacheEngineVersionList", - "documentation":"

A list of cache engine version details. Each element in the list contains detailed information about one cache engine version.

" - } - }, - "documentation":"

Represents the output of a DescribeCacheEngineVersions operation.

" - }, - "CacheNode":{ - "type":"structure", - "members":{ - "CacheNodeId":{ - "shape":"String", - "documentation":"

The cache node identifier. A node ID is a numeric identifier (0001, 0002, etc.). The combination of cluster ID and node ID uniquely identifies every cache node used in a customer's AWS account.

" - }, - "CacheNodeStatus":{ - "shape":"String", - "documentation":"

The current state of this cache node.

" - }, - "CacheNodeCreateTime":{ - "shape":"TStamp", - "documentation":"

The date and time when the cache node was created.

" - }, - "Endpoint":{ - "shape":"Endpoint", - "documentation":"

The hostname and IP address for connecting to this cache node.

" - }, - "ParameterGroupStatus":{ - "shape":"String", - "documentation":"

The status of the parameter group applied to this cache node.

" - }, - "SourceCacheNodeId":{ - "shape":"String", - "documentation":"

The ID of the primary node to which this read replica node is synchronized. If this field is empty, then this node is not associated with a primary cache cluster.

" - }, - "CustomerAvailabilityZone":{ - "shape":"String", - "documentation":"

The Availability Zone where this node was created and now resides.

" - } - }, - "documentation":"

Represents an individual cache node within a cache cluster. Each cache node runs its own instance of the cluster's protocol-compliant caching software - either Memcached or Redis.

" - }, - "CacheNodeIdsList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"CacheNodeId" - } - }, - "CacheNodeList":{ - "type":"list", - "member":{ - "shape":"CacheNode", - "locationName":"CacheNode" - } - }, - "CacheNodeTypeSpecificParameter":{ - "type":"structure", - "members":{ - "ParameterName":{ - "shape":"String", - "documentation":"

The name of the parameter.

" - }, - "Description":{ - "shape":"String", - "documentation":"

A description of the parameter.

" - }, - "Source":{ - "shape":"String", - "documentation":"

The source of the parameter value.

" - }, - "DataType":{ - "shape":"String", - "documentation":"

The valid data type for the parameter.

" - }, - "AllowedValues":{ - "shape":"String", - "documentation":"

The valid range of values for the parameter.

" - }, - "IsModifiable":{ - "shape":"Boolean", - "documentation":"

Indicates whether (true) or not (false) the parameter can be modified. Some parameters have security or operational implications that prevent them from being changed.

" - }, - "MinimumEngineVersion":{ - "shape":"String", - "documentation":"

The earliest cache engine version to which the parameter can apply.

" - }, - "CacheNodeTypeSpecificValues":{ - "shape":"CacheNodeTypeSpecificValueList", - "documentation":"

A list of cache node types and their corresponding values for this parameter.

" - } - }, - "documentation":"

A parameter that has a different value for each cache node type it is applied to. For example, in a Redis cache cluster, a cache.m1.large cache node type would have a larger maxmemory value than a cache.m1.small type.

" - }, - "CacheNodeTypeSpecificParametersList":{ - "type":"list", - "member":{ - "shape":"CacheNodeTypeSpecificParameter", - "locationName":"CacheNodeTypeSpecificParameter" - } - }, - "CacheNodeTypeSpecificValue":{ - "type":"structure", - "members":{ - "CacheNodeType":{ - "shape":"String", - "documentation":"

The cache node type for which this value applies.

" - }, - "Value":{ - "shape":"String", - "documentation":"

The value for the cache node type.

" - } - }, - "documentation":"

A value that applies only to a certain cache node type.

" - }, - "CacheNodeTypeSpecificValueList":{ - "type":"list", - "member":{ - "shape":"CacheNodeTypeSpecificValue", - "locationName":"CacheNodeTypeSpecificValue" - } - }, - "CacheParameterGroup":{ - "type":"structure", - "members":{ - "CacheParameterGroupName":{ - "shape":"String", - "documentation":"

The name of the cache parameter group.

" - }, - "CacheParameterGroupFamily":{ - "shape":"String", - "documentation":"

The name of the cache parameter group family that this cache parameter group is compatible with.

" - }, - "Description":{ - "shape":"String", - "documentation":"

The description for this cache parameter group.

" - } - }, - "wrapper":true, - "documentation":"

Represents the output of a CreateCacheParameterGroup operation.

" - }, - "CacheParameterGroupAlreadyExistsFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"CacheParameterGroupAlreadyExists", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

A cache parameter group with the requested name already exists.

" - }, - "CacheParameterGroupDetails":{ - "type":"structure", - "members":{ - "Marker":{ - "shape":"String", - "documentation":"

Provides an identifier to allow retrieval of paginated results.

" - }, - "Parameters":{ - "shape":"ParametersList", - "documentation":"

A list of Parameter instances.

" - }, - "CacheNodeTypeSpecificParameters":{ - "shape":"CacheNodeTypeSpecificParametersList", - "documentation":"

A list of parameters specific to a particular cache node type. Each element in the list contains detailed information about one parameter.

" - } - }, - "documentation":"

Represents the output of a DescribeCacheParameters operation.

" - }, - "CacheParameterGroupList":{ - "type":"list", - "member":{ - "shape":"CacheParameterGroup", - "locationName":"CacheParameterGroup" - } - }, - "CacheParameterGroupNameMessage":{ - "type":"structure", - "members":{ - "CacheParameterGroupName":{ - "shape":"String", - "documentation":"

The name of the cache parameter group.

" - } - }, - "documentation":"

Represents the output of one of the following operations:

" - }, - "CacheParameterGroupNotFoundFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"CacheParameterGroupNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The requested cache parameter group name does not refer to an existing cache parameter group.

" - }, - "CacheParameterGroupQuotaExceededFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"CacheParameterGroupQuotaExceeded", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request cannot be processed because it would exceed the maximum number of cache security groups.

" - }, - "CacheParameterGroupStatus":{ - "type":"structure", - "members":{ - "CacheParameterGroupName":{ - "shape":"String", - "documentation":"

The name of the cache parameter group.

" - }, - "ParameterApplyStatus":{ - "shape":"String", - "documentation":"

The status of parameter updates.

" - }, - "CacheNodeIdsToReboot":{ - "shape":"CacheNodeIdsList", - "documentation":"

A list of the cache node IDs which need to be rebooted for parameter changes to be applied. A node ID is a numeric identifier (0001, 0002, etc.).

" - } - }, - "documentation":"

The status of the cache parameter group.

" - }, - "CacheParameterGroupsMessage":{ - "type":"structure", - "members":{ - "Marker":{ - "shape":"String", - "documentation":"

Provides an identifier to allow retrieval of paginated results.

" - }, - "CacheParameterGroups":{ - "shape":"CacheParameterGroupList", - "documentation":"

A list of cache parameter groups. Each element in the list contains detailed information about one cache parameter group.

" - } - }, - "documentation":"

Represents the output of a DescribeCacheParameterGroups operation.

" - }, - "CacheSecurityGroup":{ - "type":"structure", - "members":{ - "OwnerId":{ - "shape":"String", - "documentation":"

The AWS account ID of the cache security group owner.

" - }, - "CacheSecurityGroupName":{ - "shape":"String", - "documentation":"

The name of the cache security group.

" - }, - "Description":{ - "shape":"String", - "documentation":"

The description of the cache security group.

" - }, - "EC2SecurityGroups":{ - "shape":"EC2SecurityGroupList", - "documentation":"

A list of Amazon EC2 security groups that are associated with this cache security group.

" - } - }, - "wrapper":true, - "documentation":"

Represents the output of one of the following operations:

" - }, - "CacheSecurityGroupAlreadyExistsFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"CacheSecurityGroupAlreadyExists", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

A cache security group with the specified name already exists.

" - }, - "CacheSecurityGroupMembership":{ - "type":"structure", - "members":{ - "CacheSecurityGroupName":{ - "shape":"String", - "documentation":"

The name of the cache security group.

" - }, - "Status":{ - "shape":"String", - "documentation":"

The membership status in the cache security group. The status changes when a cache security group is modified, or when the cache security groups assigned to a cache cluster are modified.

" - } - }, - "documentation":"

Represents a cache cluster's status within a particular cache security group.

" - }, - "CacheSecurityGroupMembershipList":{ - "type":"list", - "member":{ - "shape":"CacheSecurityGroupMembership", - "locationName":"CacheSecurityGroup" - } - }, - "CacheSecurityGroupMessage":{ - "type":"structure", - "members":{ - "Marker":{ - "shape":"String", - "documentation":"

Provides an identifier to allow retrieval of paginated results.

" - }, - "CacheSecurityGroups":{ - "shape":"CacheSecurityGroups", - "documentation":"

A list of cache security groups. Each element in the list contains detailed information about one group.

" - } - }, - "documentation":"

Represents the output of a DescribeCacheSecurityGroups operation.

" - }, - "CacheSecurityGroupNameList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"CacheSecurityGroupName" - } - }, - "CacheSecurityGroupNotFoundFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"CacheSecurityGroupNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The requested cache security group name does not refer to an existing cache security group.

" - }, - "CacheSecurityGroupQuotaExceededFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"QuotaExceeded.CacheSecurityGroup", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request cannot be processed because it would exceed the allowed number of cache security groups.

" - }, - "CacheSecurityGroups":{ - "type":"list", - "member":{ - "shape":"CacheSecurityGroup", - "locationName":"CacheSecurityGroup" - } - }, - "CacheSubnetGroup":{ - "type":"structure", - "members":{ - "CacheSubnetGroupName":{ - "shape":"String", - "documentation":"

The name of the cache subnet group.

" - }, - "CacheSubnetGroupDescription":{ - "shape":"String", - "documentation":"

The description of the cache subnet group.

" - }, - "VpcId":{ - "shape":"String", - "documentation":"

The Amazon Virtual Private Cloud identifier (VPC ID) of the cache subnet group.

" - }, - "Subnets":{ - "shape":"SubnetList", - "documentation":"

A list of subnets associated with the cache subnet group.

" - } - }, - "wrapper":true, - "documentation":"

Represents the output of one of the following operations:

" - }, - "CacheSubnetGroupAlreadyExistsFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"CacheSubnetGroupAlreadyExists", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The requested cache subnet group name is already in use by an existing cache subnet group.

" - }, - "CacheSubnetGroupInUse":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"CacheSubnetGroupInUse", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The requested cache subnet group is currently in use.

" - }, - "CacheSubnetGroupMessage":{ - "type":"structure", - "members":{ - "Marker":{ - "shape":"String", - "documentation":"

Provides an identifier to allow retrieval of paginated results.

" - }, - "CacheSubnetGroups":{ - "shape":"CacheSubnetGroups", - "documentation":"

A list of cache subnet groups. Each element in the list contains detailed information about one group.

" - } - }, - "documentation":"

Represents the output of a DescribeCacheSubnetGroups operation.

" - }, - "CacheSubnetGroupNotFoundFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"CacheSubnetGroupNotFoundFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The requested cache subnet group name does not refer to an existing cache subnet group.

" - }, - "CacheSubnetGroupQuotaExceededFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"CacheSubnetGroupQuotaExceeded", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request cannot be processed because it would exceed the allowed number of cache subnet groups.

" - }, - "CacheSubnetGroups":{ - "type":"list", - "member":{ - "shape":"CacheSubnetGroup", - "locationName":"CacheSubnetGroup" - } - }, - "CacheSubnetQuotaExceededFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"CacheSubnetQuotaExceededFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request cannot be processed because it would exceed the allowed number of subnets in a cache subnet group.

" - }, - "ClusterIdList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"ClusterId" - } - }, - "ClusterQuotaForCustomerExceededFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"ClusterQuotaForCustomerExceeded", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request cannot be processed because it would exceed the allowed number of cache clusters per customer.

" - }, - "CopySnapshotMessage":{ - "type":"structure", - "required":[ - "SourceSnapshotName", - "TargetSnapshotName" - ], - "members":{ - "SourceSnapshotName":{ - "shape":"String", - "documentation":"

The name of an existing snapshot from which to copy.

" - }, - "TargetSnapshotName":{ - "shape":"String", - "documentation":"

A name for the copied snapshot.

" - } - }, - "documentation":"

Represents the input of a CopySnapshotMessage operation.

" - }, - "CreateCacheClusterMessage":{ - "type":"structure", - "required":["CacheClusterId"], - "members":{ - "CacheClusterId":{ - "shape":"String", - "documentation":"

The node group identifier. This parameter is stored as a lowercase string.

Constraints:

" - }, - "ReplicationGroupId":{ - "shape":"String", - "documentation":"

The ID of the replication group to which this cache cluster should belong. If this parameter is specified, the cache cluster will be added to the specified replication group as a read replica; otherwise, the cache cluster will be a standalone primary that is not part of any replication group.

If the specified replication group is Automatic Failover enabled and the availability zone is not specified, the cache cluster will be created in availability zones that provide the best spread of read replicas across availability zones.

Note: This parameter is only valid if the Engine parameter is redis.

" - }, - "AZMode":{ - "shape":"AZMode", - "documentation":"

Specifies whether the nodes in this Memcached node group are created in a single Availability Zone or created across multiple Availability Zones in the cluster's region.

This parameter is only supported for Memcached cache clusters.

If the AZMode and PreferredAvailabilityZones are not specified, ElastiCache assumes single-az mode.

" - }, - "PreferredAvailabilityZone":{ - "shape":"String", - "documentation":"

The EC2 Availability Zone in which the cache cluster will be created.

All nodes belonging to this Memcached cache cluster are placed in the preferred Availability Zone. If you want to create your nodes across multiple Availability Zones, use PreferredAvailabilityZones.

Default: System chosen Availability Zone.

" - }, - "PreferredAvailabilityZones":{ - "shape":"PreferredAvailabilityZoneList", - "documentation":"

A list of the Availability Zones in which cache nodes will be created. The order of the zones in the list is not important.

This option is only supported on Memcached.

If you want all the nodes in the same Availability Zone, use PreferredAvailabilityZone instead, or repeat the Availability Zone multiple times in the list.

Default: System chosen Availability Zones.

Example: One Memcached node in each of three different Availability Zones: PreferredAvailabilityZones.member.1=us-east-1a&PreferredAvailabilityZones.member.2=us-east-1b&PreferredAvailabilityZones.member.3=us-east-1d

Example: All three Memcached nodes in one Availability Zone: PreferredAvailabilityZones.member.1=us-east-1a&PreferredAvailabilityZones.member.2=us-east-1a&PreferredAvailabilityZones.member.3=us-east-1a

" - }, - "NumCacheNodes":{ - "shape":"IntegerOptional", - "documentation":"

The initial number of cache nodes that the cache cluster will have.

For Memcached, valid values are between 1 and 20. If you need to exceed this limit, please fill out the ElastiCache Limit Increase Request form at http://aws.amazon.com/contact-us/elasticache-node-limit-request/.

For Redis, only single-node cache cluster are supported at this time, so the value for this parameter must be 1.

" - }, - "CacheNodeType":{ - "shape":"String", - "documentation":"

The compute and memory capacity of the nodes in the node group.

Valid node types are as follows:

Notes:

For a complete listing of cache node types and specifications, see Amazon ElastiCache Product Features and Details and Cache Node Type-Specific Parameters for Memcached or Cache Node Type-Specific Parameters for Redis.

" - }, - "Engine":{ - "shape":"String", - "documentation":"

The name of the cache engine to be used for this cache cluster.

Valid values for this parameter are:

memcached | redis

" - }, - "EngineVersion":{ - "shape":"String", - "documentation":"

The version number of the cache engine to be used for this cache cluster. To view the supported cache engine versions, use the DescribeCacheEngineVersions operation.

" - }, - "CacheParameterGroupName":{ - "shape":"String", - "documentation":"

The name of the parameter group to associate with this cache cluster. If this argument is omitted, the default parameter group for the specified engine is used.

" - }, - "CacheSubnetGroupName":{ - "shape":"String", - "documentation":"

The name of the subnet group to be used for the cache cluster.

Use this parameter only when you are creating a cache cluster in an Amazon Virtual Private Cloud (VPC).

" - }, - "CacheSecurityGroupNames":{ - "shape":"CacheSecurityGroupNameList", - "documentation":"

A list of security group names to associate with this cache cluster.

Use this parameter only when you are creating a cache cluster outside of an Amazon Virtual Private Cloud (VPC).

" - }, - "SecurityGroupIds":{ - "shape":"SecurityGroupIdsList", - "documentation":"

One or more VPC security groups associated with the cache cluster.

Use this parameter only when you are creating a cache cluster in an Amazon Virtual Private Cloud (VPC).

" - }, - "SnapshotArns":{ - "shape":"SnapshotArnsList", - "documentation":"

A single-element string list containing an Amazon Resource Name (ARN) that uniquely identifies a Redis RDB snapshot file stored in Amazon S3. The snapshot file will be used to populate the node group. The Amazon S3 object name in the ARN cannot contain any commas.

Note: This parameter is only valid if the Engine parameter is redis.

Example of an Amazon S3 ARN: arn:aws:s3:::my_bucket/snapshot1.rdb

" - }, - "SnapshotName":{ - "shape":"String", - "documentation":"

The name of a snapshot from which to restore data into the new node group. The snapshot status changes to restoring while the new node group is being created.

Note: This parameter is only valid if the Engine parameter is redis.

" - }, - "PreferredMaintenanceWindow":{ - "shape":"String", - "documentation":"

The weekly time range (in UTC) during which system maintenance can occur.

Example: sun:05:00-sun:09:00

" - }, - "Port":{ - "shape":"IntegerOptional", - "documentation":"

The port number on which each of the cache nodes will accept connections.

" - }, - "NotificationTopicArn":{ - "shape":"String", - "documentation":"

The Amazon Resource Name (ARN) of the Amazon Simple Notification Service (SNS) topic to which notifications will be sent.

" - }, - "AutoMinorVersionUpgrade":{ - "shape":"BooleanOptional", - "documentation":"

Determines whether minor engine upgrades will be applied automatically to the node group during the maintenance window. A value of true allows these upgrades to occur; false disables automatic upgrades.

Default: true

" - }, - "SnapshotRetentionLimit":{ - "shape":"IntegerOptional", - "documentation":"

The number of days for which ElastiCache will retain automatic snapshots before deleting them. For example, if you set SnapshotRetentionLimit to 5, then a snapshot that was taken today will be retained for 5 days before being deleted.

Note: This parameter is only valid if the Engine parameter is redis.

Default: 0 (i.e., automatic backups are disabled for this cache cluster).

" - }, - "SnapshotWindow":{ - "shape":"String", - "documentation":"

The daily time range (in UTC) during which ElastiCache will begin taking a daily snapshot of your node group.

Example: 05:00-09:00

If you do not specify this parameter, then ElastiCache will automatically choose an appropriate time range.

Note: This parameter is only valid if the Engine parameter is redis.

" - } - }, - "documentation":"

Represents the input of a CreateCacheCluster operation.

" - }, - "CreateCacheParameterGroupMessage":{ - "type":"structure", - "required":[ - "CacheParameterGroupName", - "CacheParameterGroupFamily", - "Description" - ], - "members":{ - "CacheParameterGroupName":{ - "shape":"String", - "documentation":"

A user-specified name for the cache parameter group.

" - }, - "CacheParameterGroupFamily":{ - "shape":"String", - "documentation":"

The name of the cache parameter group family the cache parameter group can be used with.

Valid values are: memcached1.4 | redis2.6 | redis2.8

" - }, - "Description":{ - "shape":"String", - "documentation":"

A user-specified description for the cache parameter group.

" - } - }, - "documentation":"

Represents the input of a CreateCacheParameterGroup operation.

" - }, - "CreateCacheSecurityGroupMessage":{ - "type":"structure", - "required":[ - "CacheSecurityGroupName", - "Description" - ], - "members":{ - "CacheSecurityGroupName":{ - "shape":"String", - "documentation":"

A name for the cache security group. This value is stored as a lowercase string.

Constraints: Must contain no more than 255 alphanumeric characters. Cannot be the word \"Default\".

Example: mysecuritygroup

" - }, - "Description":{ - "shape":"String", - "documentation":"

A description for the cache security group.

" - } - }, - "documentation":"

Represents the input of a CreateCacheSecurityGroup operation.

" - }, - "CreateCacheSubnetGroupMessage":{ - "type":"structure", - "required":[ - "CacheSubnetGroupName", - "CacheSubnetGroupDescription", - "SubnetIds" - ], - "members":{ - "CacheSubnetGroupName":{ - "shape":"String", - "documentation":"

A name for the cache subnet group. This value is stored as a lowercase string.

Constraints: Must contain no more than 255 alphanumeric characters or hyphens.

Example: mysubnetgroup

" - }, - "CacheSubnetGroupDescription":{ - "shape":"String", - "documentation":"

A description for the cache subnet group.

" - }, - "SubnetIds":{ - "shape":"SubnetIdentifierList", - "documentation":"

A list of VPC subnet IDs for the cache subnet group.

" - } - }, - "documentation":"

Represents the input of a CreateCacheSubnetGroup operation.

" - }, - "CreateReplicationGroupMessage":{ - "type":"structure", - "required":[ - "ReplicationGroupId", - "ReplicationGroupDescription" - ], - "members":{ - "ReplicationGroupId":{ - "shape":"String", - "documentation":"

The replication group identifier. This parameter is stored as a lowercase string.

Constraints:

" - }, - "ReplicationGroupDescription":{ - "shape":"String", - "documentation":"

A user-created description for the replication group.

" - }, - "PrimaryClusterId":{ - "shape":"String", - "documentation":"

The identifier of the cache cluster that will serve as the primary for this replication group. This cache cluster must already exist and have a status of available.

This parameter is not required if NumCacheClusters is specified.

" - }, - "AutomaticFailoverEnabled":{ - "shape":"BooleanOptional", - "documentation":"

Specifies whether a read-only replica will be automatically promoted to read/write primary if the existing primary fails.

If true, automatic failover is enabled for this replication group. If false, automatic failover is disabled for this replication group.

Default: false

" - }, - "NumCacheClusters":{ - "shape":"IntegerOptional", - "documentation":"

The number of cache clusters this replication group will initially have.

If AutomaticFailover is enabled, the value of this parameter must be at least 2.

The maximum permitted value for NumCacheClusters is 6 (primary plus 5 replicas). If you need to exceed this limit, please fill out the ElastiCache Limit Increase Request forrm at http://aws.amazon.com/contact-us/elasticache-node-limit-request.

" - }, - "PreferredCacheClusterAZs":{ - "shape":"AvailabilityZonesList", - "documentation":"

A list of EC2 availability zones in which the replication group's cache clusters will be created. The order of the availability zones in the list is not important.

Default: system chosen availability zones.

Example: One Redis cache cluster in each of three availability zones. PreferredAvailabilityZones.member.1=us-east-1a PreferredAvailabilityZones.member.2=us-east-1c PreferredAvailabilityZones.member.3=us-east-1d

" - }, - "CacheNodeType":{ - "shape":"String", - "documentation":"

The compute and memory capacity of the nodes in the node group.

Valid node types are as follows:

Notes:

For a complete listing of cache node types and specifications, see Amazon ElastiCache Product Features and Details and Cache Node Type-Specific Parameters for Memcached or Cache Node Type-Specific Parameters for Redis.

" - }, - "Engine":{ - "shape":"String", - "documentation":"

The name of the cache engine to be used for the cache clusters in this replication group.

Default: redis

" - }, - "EngineVersion":{ - "shape":"String", - "documentation":"

The version number of the cach engine to be used for the cache clusters in this replication group. To view the supported cache engine versions, use the DescribeCacheEngineVersions operation.

" - }, - "CacheParameterGroupName":{ - "shape":"String", - "documentation":"

The name of the parameter group to associate with this replication group. If this argument is omitted, the default cache parameter group for the specified engine is used.

" - }, - "CacheSubnetGroupName":{ - "shape":"String", - "documentation":"

The name of the cache subnet group to be used for the replication group.

" - }, - "CacheSecurityGroupNames":{ - "shape":"CacheSecurityGroupNameList", - "documentation":"

A list of cache security group names to associate with this replication group.

" - }, - "SecurityGroupIds":{ - "shape":"SecurityGroupIdsList", - "documentation":"

One or more Amazon VPC security groups associated with this replication group.

Use this parameter only when you are creating a replication group in an Amazon Virtual Private Cloud (VPC).

" - }, - "SnapshotArns":{ - "shape":"SnapshotArnsList", - "documentation":"

A single-element string list containing an Amazon Resource Name (ARN) that uniquely identifies a Redis RDB snapshot file stored in Amazon S3. The snapshot file will be used to populate the node group. The Amazon S3 object name in the ARN cannot contain any commas.

Note: This parameter is only valid if the Engine parameter is redis.

Example of an Amazon S3 ARN: arn:aws:s3:::my_bucket/snapshot1.rdb

" - }, - "SnapshotName":{ - "shape":"String", - "documentation":"

The name of a snapshot from which to restore data into the new node group. The snapshot status changes to restoring while the new node group is being created.

Note: This parameter is only valid if the Engine parameter is redis.

" - }, - "PreferredMaintenanceWindow":{ - "shape":"String", - "documentation":"

The weekly time range (in UTC) during which system maintenance can occur.

Example: sun:05:00-sun:09:00

" - }, - "Port":{ - "shape":"IntegerOptional", - "documentation":"

The port number on which each member of the replication group will accept connections.

" - }, - "NotificationTopicArn":{ - "shape":"String", - "documentation":"

The Amazon Resource Name (ARN) of the Amazon Simple Notification Service (SNS) topic to which notifications will be sent.

" - }, - "AutoMinorVersionUpgrade":{ - "shape":"BooleanOptional", - "documentation":"

Determines whether minor engine upgrades will be applied automatically to the node group during the maintenance window. A value of true allows these upgrades to occur; false disables automatic upgrades.

Default: true

" - }, - "SnapshotRetentionLimit":{ - "shape":"IntegerOptional", - "documentation":"

The number of days for which ElastiCache will retain automatic snapshots before deleting them. For example, if you set SnapshotRetentionLimit to 5, then a snapshot that was taken today will be retained for 5 days before being deleted.

Note: This parameter is only valid if the Engine parameter is redis.

Default: 0 (i.e., automatic backups are disabled for this cache cluster).

" - }, - "SnapshotWindow":{ - "shape":"String", - "documentation":"

The daily time range (in UTC) during which ElastiCache will begin taking a daily snapshot of your node group.

Example: 05:00-09:00

If you do not specify this parameter, then ElastiCache will automatically choose an appropriate time range.

Note: This parameter is only valid if the Engine parameter is redis.

" - } - }, - "documentation":"

Represents the input of a CreateReplicationGroup operation.

" - }, - "CreateSnapshotMessage":{ - "type":"structure", - "required":[ - "CacheClusterId", - "SnapshotName" - ], - "members":{ - "CacheClusterId":{ - "shape":"String", - "documentation":"

The identifier of an existing cache cluster. The snapshot will be created from this cache cluster.

" - }, - "SnapshotName":{ - "shape":"String", - "documentation":"

A name for the snapshot being created.

" - } - }, - "documentation":"

Represents the input of a CreateSnapshot operation.

" - }, - "DeleteCacheClusterMessage":{ - "type":"structure", - "required":["CacheClusterId"], - "members":{ - "CacheClusterId":{ - "shape":"String", - "documentation":"

The cache cluster identifier for the cluster to be deleted. This parameter is not case sensitive.

" - }, - "FinalSnapshotIdentifier":{ - "shape":"String", - "documentation":"

The user-supplied name of a final cache cluster snapshot. This is the unique name that identifies the snapshot. ElastiCache creates the snapshot, and then deletes the cache cluster immediately afterward.

" - } - }, - "documentation":"

Represents the input of a DeleteCacheCluster operation.

" - }, - "DeleteCacheParameterGroupMessage":{ - "type":"structure", - "required":["CacheParameterGroupName"], - "members":{ - "CacheParameterGroupName":{ - "shape":"String", - "documentation":"

The name of the cache parameter group to delete.

" - } - }, - "documentation":"

Represents the input of a DeleteCacheParameterGroup operation.

" - }, - "DeleteCacheSecurityGroupMessage":{ - "type":"structure", - "required":["CacheSecurityGroupName"], - "members":{ - "CacheSecurityGroupName":{ - "shape":"String", - "documentation":"

The name of the cache security group to delete.

" - } - }, - "documentation":"

Represents the input of a DeleteCacheSecurityGroup operation.

" - }, - "DeleteCacheSubnetGroupMessage":{ - "type":"structure", - "required":["CacheSubnetGroupName"], - "members":{ - "CacheSubnetGroupName":{ - "shape":"String", - "documentation":"

The name of the cache subnet group to delete.

Constraints: Must contain no more than 255 alphanumeric characters or hyphens.

" - } - }, - "documentation":"

Represents the input of a DeleteCacheSubnetGroup operation.

" - }, - "DeleteReplicationGroupMessage":{ - "type":"structure", - "required":["ReplicationGroupId"], - "members":{ - "ReplicationGroupId":{ - "shape":"String", - "documentation":"

The identifier for the cluster to be deleted. This parameter is not case sensitive.

" - }, - "RetainPrimaryCluster":{ - "shape":"BooleanOptional", - "documentation":"

If set to true, all of the read replicas will be deleted, but the primary node will be retained.

" - }, - "FinalSnapshotIdentifier":{ - "shape":"String", - "documentation":"

The name of a final node group snapshot. ElastiCache creates the snapshot from the primary node in the cluster, rather than one of the replicas; this is to ensure that it captures the freshest data. After the final snapshot is taken, the cluster is immediately deleted.

" - } - }, - "documentation":"

Represents the input of a DeleteReplicationGroup operation.

" - }, - "DeleteSnapshotMessage":{ - "type":"structure", - "required":["SnapshotName"], - "members":{ - "SnapshotName":{ - "shape":"String", - "documentation":"

The name of the snapshot to be deleted.

" - } - }, - "documentation":"

Represents the input of a DeleteSnapshot operation.

" - }, - "DescribeCacheClustersMessage":{ - "type":"structure", - "members":{ - "CacheClusterId":{ - "shape":"String", - "documentation":"

The user-supplied cluster identifier. If this parameter is specified, only information about that specific cache cluster is returned. This parameter isn't case sensitive.

" - }, - "MaxRecords":{ - "shape":"IntegerOptional", - "documentation":"

The maximum number of records to include in the response. If more records exist than the specified MaxRecords value, a marker is included in the response so that the remaining results can be retrieved.

Default: 100

Constraints: minimum 20; maximum 100.

" - }, - "Marker":{ - "shape":"String", - "documentation":"

An optional marker returned from a prior request. Use this marker for pagination of results from this operation. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords.

" - }, - "ShowCacheNodeInfo":{ - "shape":"BooleanOptional", - "documentation":"

An optional flag that can be included in the DescribeCacheCluster request to retrieve information about the individual cache nodes.

" - } - }, - "documentation":"

Represents the input of a DescribeCacheClusters operation.

" - }, - "DescribeCacheEngineVersionsMessage":{ - "type":"structure", - "members":{ - "Engine":{ - "shape":"String", - "documentation":"

The cache engine to return. Valid values: memcached | redis

" - }, - "EngineVersion":{ - "shape":"String", - "documentation":"

The cache engine version to return.

Example: 1.4.14

" - }, - "CacheParameterGroupFamily":{ - "shape":"String", - "documentation":"

The name of a specific cache parameter group family to return details for.

Constraints:

" - }, - "MaxRecords":{ - "shape":"IntegerOptional", - "documentation":"

The maximum number of records to include in the response. If more records exist than the specified MaxRecords value, a marker is included in the response so that the remaining results can be retrieved.

Default: 100

Constraints: minimum 20; maximum 100.

" - }, - "Marker":{ - "shape":"String", - "documentation":"

An optional marker returned from a prior request. Use this marker for pagination of results from this operation. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords.

" - }, - "DefaultOnly":{ - "shape":"Boolean", - "documentation":"

If true, specifies that only the default version of the specified engine or engine and major version combination is to be returned.

" - } - }, - "documentation":"

Represents the input of a DescribeCacheEngineVersions operation.

" - }, - "DescribeCacheParameterGroupsMessage":{ - "type":"structure", - "members":{ - "CacheParameterGroupName":{ - "shape":"String", - "documentation":"

The name of a specific cache parameter group to return details for.

" - }, - "MaxRecords":{ - "shape":"IntegerOptional", - "documentation":"

The maximum number of records to include in the response. If more records exist than the specified MaxRecords value, a marker is included in the response so that the remaining results can be retrieved.

Default: 100

Constraints: minimum 20; maximum 100.

" - }, - "Marker":{ - "shape":"String", - "documentation":"

An optional marker returned from a prior request. Use this marker for pagination of results from this operation. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords.

" - } - }, - "documentation":"

Represents the input of a DescribeCacheParameterGroups operation.

" - }, - "DescribeCacheParametersMessage":{ - "type":"structure", - "required":["CacheParameterGroupName"], - "members":{ - "CacheParameterGroupName":{ - "shape":"String", - "documentation":"

The name of a specific cache parameter group to return details for.

" - }, - "Source":{ - "shape":"String", - "documentation":"

The parameter types to return.

Valid values: user | system | engine-default

" - }, - "MaxRecords":{ - "shape":"IntegerOptional", - "documentation":"

The maximum number of records to include in the response. If more records exist than the specified MaxRecords value, a marker is included in the response so that the remaining results can be retrieved.

Default: 100

Constraints: minimum 20; maximum 100.

" - }, - "Marker":{ - "shape":"String", - "documentation":"

An optional marker returned from a prior request. Use this marker for pagination of results from this operation. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords.

" - } - }, - "documentation":"

Represents the input of a DescribeCacheParameters operation.

" - }, - "DescribeCacheSecurityGroupsMessage":{ - "type":"structure", - "members":{ - "CacheSecurityGroupName":{ - "shape":"String", - "documentation":"

The name of the cache security group to return details for.

" - }, - "MaxRecords":{ - "shape":"IntegerOptional", - "documentation":"

The maximum number of records to include in the response. If more records exist than the specified MaxRecords value, a marker is included in the response so that the remaining results can be retrieved.

Default: 100

Constraints: minimum 20; maximum 100.

" - }, - "Marker":{ - "shape":"String", - "documentation":"

An optional marker returned from a prior request. Use this marker for pagination of results from this operation. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords.

" - } - }, - "documentation":"

Represents the input of a DescribeCacheSecurityGroups operation.

" - }, - "DescribeCacheSubnetGroupsMessage":{ - "type":"structure", - "members":{ - "CacheSubnetGroupName":{ - "shape":"String", - "documentation":"

The name of the cache subnet group to return details for.

" - }, - "MaxRecords":{ - "shape":"IntegerOptional", - "documentation":"

The maximum number of records to include in the response. If more records exist than the specified MaxRecords value, a marker is included in the response so that the remaining results can be retrieved.

Default: 100

Constraints: minimum 20; maximum 100.

" - }, - "Marker":{ - "shape":"String", - "documentation":"

An optional marker returned from a prior request. Use this marker for pagination of results from this operation. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords.

" - } - }, - "documentation":"

Represents the input of a DescribeCacheSubnetGroups operation.

" - }, - "DescribeEngineDefaultParametersMessage":{ - "type":"structure", - "required":["CacheParameterGroupFamily"], - "members":{ - "CacheParameterGroupFamily":{ - "shape":"String", - "documentation":"

The name of the cache parameter group family. Valid values are: memcached1.4 | redis2.6 | redis2.8

" - }, - "MaxRecords":{ - "shape":"IntegerOptional", - "documentation":"

The maximum number of records to include in the response. If more records exist than the specified MaxRecords value, a marker is included in the response so that the remaining results can be retrieved.

Default: 100

Constraints: minimum 20; maximum 100.

" - }, - "Marker":{ - "shape":"String", - "documentation":"

An optional marker returned from a prior request. Use this marker for pagination of results from this operation. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords.

" - } - }, - "documentation":"

Represents the input of a DescribeEngineDefaultParameters operation.

" - }, - "DescribeEventsMessage":{ - "type":"structure", - "members":{ - "SourceIdentifier":{ - "shape":"String", - "documentation":"

The identifier of the event source for which events will be returned. If not specified, then all sources are included in the response.

" - }, - "SourceType":{ - "shape":"SourceType", - "documentation":"

The event source to retrieve events for. If no value is specified, all events are returned.

Valid values are: cache-cluster | cache-parameter-group | cache-security-group | cache-subnet-group

" - }, - "StartTime":{ - "shape":"TStamp", - "documentation":"

The beginning of the time interval to retrieve events for, specified in ISO 8601 format.

" - }, - "EndTime":{ - "shape":"TStamp", - "documentation":"

The end of the time interval for which to retrieve events, specified in ISO 8601 format.

" - }, - "Duration":{ - "shape":"IntegerOptional", - "documentation":"

The number of minutes' worth of events to retrieve.

" - }, - "MaxRecords":{ - "shape":"IntegerOptional", - "documentation":"

The maximum number of records to include in the response. If more records exist than the specified MaxRecords value, a marker is included in the response so that the remaining results can be retrieved.

Default: 100

Constraints: minimum 20; maximum 100.

" - }, - "Marker":{ - "shape":"String", - "documentation":"

An optional marker returned from a prior request. Use this marker for pagination of results from this operation. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords.

" - } - }, - "documentation":"

Represents the input of a DescribeEvents operation.

" - }, - "DescribeReplicationGroupsMessage":{ - "type":"structure", - "members":{ - "ReplicationGroupId":{ - "shape":"String", - "documentation":"

The identifier for the replication group to be described. This parameter is not case sensitive.

If you do not specify this parameter, information about all replication groups is returned.

" - }, - "MaxRecords":{ - "shape":"IntegerOptional", - "documentation":"

The maximum number of records to include in the response. If more records exist than the specified MaxRecords value, a marker is included in the response so that the remaining results can be retrieved.

Default: 100

Constraints: minimum 20; maximum 100.

" - }, - "Marker":{ - "shape":"String", - "documentation":"

An optional marker returned from a prior request. Use this marker for pagination of results from this operation. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords.

" - } - }, - "documentation":"

Represents the input of a DescribeReplicationGroups operation.

" - }, - "DescribeReservedCacheNodesMessage":{ - "type":"structure", - "members":{ - "ReservedCacheNodeId":{ - "shape":"String", - "documentation":"

The reserved cache node identifier filter value. Use this parameter to show only the reservation that matches the specified reservation ID.

" - }, - "ReservedCacheNodesOfferingId":{ - "shape":"String", - "documentation":"

The offering identifier filter value. Use this parameter to show only purchased reservations matching the specified offering identifier.

" - }, - "CacheNodeType":{ - "shape":"String", - "documentation":"

The cache node type filter value. Use this parameter to show only those reservations matching the specified cache node type.

" - }, - "Duration":{ - "shape":"String", - "documentation":"

The duration filter value, specified in years or seconds. Use this parameter to show only reservations for this duration.

Valid Values: 1 | 3 | 31536000 | 94608000

" - }, - "ProductDescription":{ - "shape":"String", - "documentation":"

The product description filter value. Use this parameter to show only those reservations matching the specified product description.

" - }, - "OfferingType":{ - "shape":"String", - "documentation":"

The offering type filter value. Use this parameter to show only the available offerings matching the specified offering type.

Valid values: \"Light Utilization\" | \"Medium Utilization\" | \"Heavy Utilization\"

" - }, - "MaxRecords":{ - "shape":"IntegerOptional", - "documentation":"

The maximum number of records to include in the response. If more records exist than the specified MaxRecords value, a marker is included in the response so that the remaining results can be retrieved.

Default: 100

Constraints: minimum 20; maximum 100.

" - }, - "Marker":{ - "shape":"String", - "documentation":"

An optional marker returned from a prior request. Use this marker for pagination of results from this operation. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords.

" - } - }, - "documentation":"

Represents the input of a DescribeReservedCacheNodes operation.

" - }, - "DescribeReservedCacheNodesOfferingsMessage":{ - "type":"structure", - "members":{ - "ReservedCacheNodesOfferingId":{ - "shape":"String", - "documentation":"

The offering identifier filter value. Use this parameter to show only the available offering that matches the specified reservation identifier.

Example: 438012d3-4052-4cc7-b2e3-8d3372e0e706

" - }, - "CacheNodeType":{ - "shape":"String", - "documentation":"

The cache node type filter value. Use this parameter to show only the available offerings matching the specified cache node type.

" - }, - "Duration":{ - "shape":"String", - "documentation":"

Duration filter value, specified in years or seconds. Use this parameter to show only reservations for a given duration.

Valid Values: 1 | 3 | 31536000 | 94608000

" - }, - "ProductDescription":{ - "shape":"String", - "documentation":"

The product description filter value. Use this parameter to show only the available offerings matching the specified product description.

" - }, - "OfferingType":{ - "shape":"String", - "documentation":"

The offering type filter value. Use this parameter to show only the available offerings matching the specified offering type.

Valid Values: \"Light Utilization\" | \"Medium Utilization\" | \"Heavy Utilization\"

" - }, - "MaxRecords":{ - "shape":"IntegerOptional", - "documentation":"

The maximum number of records to include in the response. If more records exist than the specified MaxRecords value, a marker is included in the response so that the remaining results can be retrieved.

Default: 100

Constraints: minimum 20; maximum 100.

" - }, - "Marker":{ - "shape":"String", - "documentation":"

An optional marker returned from a prior request. Use this marker for pagination of results from this operation. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords.

" - } - }, - "documentation":"

Represents the input of a DescribeReservedCacheNodesOfferings operation.

" - }, - "DescribeSnapshotsListMessage":{ - "type":"structure", - "members":{ - "Marker":{ - "shape":"String", - "documentation":"

An optional marker returned from a prior request. Use this marker for pagination of results from this operation. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords.

" - }, - "Snapshots":{ - "shape":"SnapshotList", - "documentation":"

A list of snapshots. Each item in the list contains detailed information about one snapshot.

" - } - }, - "documentation":"

Represents the output of a DescribeSnapshots operation.

" - }, - "DescribeSnapshotsMessage":{ - "type":"structure", - "members":{ - "CacheClusterId":{ - "shape":"String", - "documentation":"

A user-supplied cluster identifier. If this parameter is specified, only snapshots associated with that specific cache cluster will be described.

" - }, - "SnapshotName":{ - "shape":"String", - "documentation":"

A user-supplied name of the snapshot. If this parameter is specified, only this snapshot will be described.

" - }, - "SnapshotSource":{ - "shape":"String", - "documentation":"

If set to system, the output shows snapshots that were automatically created by ElastiCache. If set to user the output shows snapshots that were manually created. If omitted, the output shows both automatically and manually created snapshots.

" - }, - "Marker":{ - "shape":"String", - "documentation":"

An optional marker returned from a prior request. Use this marker for pagination of results from this operation. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords.

" - }, - "MaxRecords":{ - "shape":"IntegerOptional", - "documentation":"

The maximum number of records to include in the response. If more records exist than the specified MaxRecords value, a marker is included in the response so that the remaining results can be retrieved.

Default: 50

Constraints: minimum 20; maximum 50.

" - } - }, - "documentation":"

Represents the input of a DescribeSnapshotsMessage operation.

" - }, - "Double":{"type":"double"}, - "EC2SecurityGroup":{ - "type":"structure", - "members":{ - "Status":{ - "shape":"String", - "documentation":"

The status of the Amazon EC2 security group.

" - }, - "EC2SecurityGroupName":{ - "shape":"String", - "documentation":"

The name of the Amazon EC2 security group.

" - }, - "EC2SecurityGroupOwnerId":{ - "shape":"String", - "documentation":"

The AWS account ID of the Amazon EC2 security group owner.

" - } - }, - "documentation":"

Provides ownership and status information for an Amazon EC2 security group.

" - }, - "EC2SecurityGroupList":{ - "type":"list", - "member":{ - "shape":"EC2SecurityGroup", - "locationName":"EC2SecurityGroup" - } - }, - "Endpoint":{ - "type":"structure", - "members":{ - "Address":{ - "shape":"String", - "documentation":"

The DNS hostname of the cache node.

" - }, - "Port":{ - "shape":"Integer", - "documentation":"

The port number that the cache engine is listening on.

" - } - }, - "documentation":"

Represents the information required for client programs to connect to a cache node.

" - }, - "EngineDefaults":{ - "type":"structure", - "members":{ - "CacheParameterGroupFamily":{ - "shape":"String", - "documentation":"

Specifies the name of the cache parameter group family to which the engine default parameters apply.

" - }, - "Marker":{ - "shape":"String", - "documentation":"

Provides an identifier to allow retrieval of paginated results.

" - }, - "Parameters":{ - "shape":"ParametersList", - "documentation":"

Contains a list of engine default parameters.

" - }, - "CacheNodeTypeSpecificParameters":{ - "shape":"CacheNodeTypeSpecificParametersList", - "documentation":"

A list of parameters specific to a particular cache node type. Each element in the list contains detailed information about one parameter.

" - } - }, - "wrapper":true, - "documentation":"

Represents the output of a DescribeEngineDefaultParameters operation.

" - }, - "Event":{ - "type":"structure", - "members":{ - "SourceIdentifier":{ - "shape":"String", - "documentation":"

The identifier for the source of the event. For example, if the event occurred at the cache cluster level, the identifier would be the name of the cache cluster.

" - }, - "SourceType":{ - "shape":"SourceType", - "documentation":"

Specifies the origin of this event - a cache cluster, a parameter group, a security group, etc.

" - }, - "Message":{ - "shape":"String", - "documentation":"

The text of the event.

" - }, - "Date":{ - "shape":"TStamp", - "documentation":"

The date and time when the event occurred.

" - } - }, - "documentation":"

Represents a single occurrence of something interesting within the system. Some examples of events are creating a cache cluster, adding or removing a cache node, or rebooting a node.

" - }, - "EventList":{ - "type":"list", - "member":{ - "shape":"Event", - "locationName":"Event" - } - }, - "EventsMessage":{ - "type":"structure", - "members":{ - "Marker":{ - "shape":"String", - "documentation":"

Provides an identifier to allow retrieval of paginated results.

" - }, - "Events":{ - "shape":"EventList", - "documentation":"

A list of events. Each element in the list contains detailed information about one event.

" - } - }, - "documentation":"

Represents the output of a DescribeEvents operation.

" - }, - "InsufficientCacheClusterCapacityFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"InsufficientCacheClusterCapacity", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The requested cache node type is not available in the specified Availability Zone.

" - }, - "Integer":{"type":"integer"}, - "IntegerOptional":{"type":"integer"}, - "InvalidCacheClusterStateFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"InvalidCacheClusterState", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The requested cache cluster is not in the available state.

" - }, - "InvalidCacheParameterGroupStateFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"InvalidCacheParameterGroupState", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The current state of the cache parameter group does not allow the requested action to occur.

" - }, - "InvalidCacheSecurityGroupStateFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"InvalidCacheSecurityGroupState", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The current state of the cache security group does not allow deletion.

" - }, - "InvalidParameterCombinationException":{ - "type":"structure", - "members":{ - "message":{ - "shape":"AwsQueryErrorMessage", - "documentation":"

Two or more parameters that must not be used together were used together.

" - } - }, - "error":{ - "code":"InvalidParameterCombination", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Two or more incompatible parameters were specified.

" - }, - "InvalidParameterValueException":{ - "type":"structure", - "members":{ - "message":{ - "shape":"AwsQueryErrorMessage", - "documentation":"

A parameter value is invalid.

" - } - }, - "error":{ - "code":"InvalidParameterValue", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The value for a parameter is invalid.

" - }, - "InvalidReplicationGroupStateFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"InvalidReplicationGroupState", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The requested replication group is not in the available state.

" - }, - "InvalidSnapshotStateFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"InvalidSnapshotState", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The current state of the snapshot does not allow the requested action to occur.

" - }, - "InvalidSubnet":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"InvalidSubnet", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

An invalid subnet identifier was specified.

" - }, - "InvalidVPCNetworkStateFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"InvalidVPCNetworkStateFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The VPC network is in an invalid state.

" - }, - "ModifyCacheClusterMessage":{ - "type":"structure", - "required":["CacheClusterId"], - "members":{ - "CacheClusterId":{ - "shape":"String", - "documentation":"

The cache cluster identifier. This value is stored as a lowercase string.

" - }, - "NumCacheNodes":{ - "shape":"IntegerOptional", - "documentation":"

The number of cache nodes that the cache cluster should have. If the value for NumCacheNodes is greater than the sum of the number of current cache nodes and the number of cache nodes pending creation (which may be zero), then more nodes will be added. If the value is less than the number of existing cache nodes, then nodes will be removed. If the value is equal to the number of current cache nodes, then any pending add or remove requests are canceled.

If you are removing cache nodes, you must use the CacheNodeIdsToRemove parameter to provide the IDs of the specific cache nodes to remove.

For cache clusters running Redis, the value of NumCacheNodesmust be 1.

Note:
Adding or removing Memcached cache nodes can be applied immediately or as a pending action. See ApplyImmediately.
A pending action to modify the number of cache nodes in a cluster during its maintenance window, whether by adding or removing nodes in accordance with the scale out architecture, is not queued. The customer's latest request to add or remove nodes to the cluster overrides any previous pending actions to modify the number of cache nodes in the cluster. For example, a request to remove 2 nodes would override a previous pending action to remove 3 nodes. Similarly, a request to add 2 nodes would override a previous pending action to remove 3 nodes and vice versa. As Memcached cache nodes may now be provisioned in different Availability Zones with flexible cache node placement, a request to add nodes does not automatically override a previous pending action to add nodes. The customer can modify the previous pending action to add more nodes or explicitly cancel the pending request and retry the new request. To cancel pending actions to modify the number of cache nodes in a cluster, use the ModifyCacheCluster request and set NumCacheNodes equal to the number of cache nodes currently in the cache cluster.

" - }, - "CacheNodeIdsToRemove":{ - "shape":"CacheNodeIdsList", - "documentation":"

A list of cache node IDs to be removed. A node ID is a numeric identifier (0001, 0002, etc.). This parameter is only valid when NumCacheNodes is less than the existing number of cache nodes. The number of cache node IDs supplied in this parameter must match the difference between the existing number of cache nodes in the cluster or pending cache nodes, whichever is greater, and the value of NumCacheNodes in the request.

For example: If you have 3 active cache nodes, 7 pending cache nodes, and the number of cache nodes in this ModifyCacheCluser call is 5, you must list 2 (7 - 5) cache node IDs to remove.

" - }, - "AZMode":{ - "shape":"AZMode", - "documentation":"

Specifies whether the new nodes in this Memcached cache cluster are all created in a single Availability Zone or created across multiple Availability Zones.

Valid values: single-az | cross-az.

This option is only supported for Memcached cache clusters.

" - }, - "NewAvailabilityZones":{ - "shape":"PreferredAvailabilityZoneList", - "documentation":"

The list of Availability Zones where the new Memcached cache nodes will be created.

This parameter is only valid when NumCacheNodes in the request is greater than the sum of the number of active cache nodes and the number of cache nodes pending creation (which may be zero). The number of Availability Zones supplied in this list must match the cache nodes being added in this request.

This option is only supported on Memcached clusters.

Scenarios:

The Availability Zone placement of nodes pending creation cannot be modified. If you wish to cancel any nodes pending creation, add 0 nodes by setting NumCacheNodes to the number of current nodes.

If cross-az is specified, existing Memcached nodes remain in their current Availability Zone. Only newly created nodes can be located in different Availability Zones. For guidance on how to move existing Memcached nodes to different Availability Zones, see the Availability Zone Considerations section of Cache Node Considerations for Memcached.

Impact of new add/remove requests upon pending requests

Scenarios Pending Operation New Request Results
Scenario-1 Delete Delete The new delete, pending or immediate, replaces the pending delete.
Scenario-2 Delete Create The new create, pending or immediate, replaces the pending delete.
Scenario-3 Create Delete The new delete, pending or immediate, replaces the pending create.
Scenario-4 Create Create The new create is added to the pending create.
Important:
If the new create request is Apply Immediately - Yes, all creates are performed immediately. If the new create request is Apply Immediately - No, all creates are pending.

Example: NewAvailabilityZones.member.1=us-east-1a&NewAvailabilityZones.member.2=us-east-1b&NewAvailabilityZones.member.3=us-east-1d

" - }, - "CacheSecurityGroupNames":{ - "shape":"CacheSecurityGroupNameList", - "documentation":"

A list of cache security group names to authorize on this cache cluster. This change is asynchronously applied as soon as possible.

This parameter can be used only with clusters that are created outside of an Amazon Virtual Private Cloud (VPC).

Constraints: Must contain no more than 255 alphanumeric characters. Must not be \"Default\".

" - }, - "SecurityGroupIds":{ - "shape":"SecurityGroupIdsList", - "documentation":"

Specifies the VPC Security Groups associated with the cache cluster.

This parameter can be used only with clusters that are created in an Amazon Virtual Private Cloud (VPC).

" - }, - "PreferredMaintenanceWindow":{ - "shape":"String", - "documentation":"

The weekly time range (in UTC) during which system maintenance can occur. Note that system maintenance may result in an outage. This change is made immediately. If you are moving this window to the current time, there must be at least 120 minutes between the current time and end of the window to ensure that pending changes are applied.

" - }, - "NotificationTopicArn":{ - "shape":"String", - "documentation":"

The Amazon Resource Name (ARN) of the Amazon SNS topic to which notifications will be sent.

" - }, - "CacheParameterGroupName":{ - "shape":"String", - "documentation":"

The name of the cache parameter group to apply to this cache cluster. This change is asynchronously applied as soon as possible for parameters when the ApplyImmediately parameter is specified as true for this request.

" - }, - "NotificationTopicStatus":{ - "shape":"String", - "documentation":"

The status of the Amazon SNS notification topic. Notifications are sent only if the status is active.

Valid values: active | inactive

" - }, - "ApplyImmediately":{ - "shape":"Boolean", - "documentation":"

If true, this parameter causes the modifications in this request and any pending modifications to be applied, asynchronously and as soon as possible, regardless of the PreferredMaintenanceWindow setting for the cache cluster.

If false, then changes to the cache cluster are applied on the next maintenance reboot, or the next failure reboot, whichever occurs first.

If you perform a ModifyCacheCluster before a pending modification is applied, the pending modification is replaced by the newer modification.

Valid values: true | false

Default: false

" - }, - "EngineVersion":{ - "shape":"String", - "documentation":"

The upgraded version of the cache engine to be run on the cache nodes.

" - }, - "AutoMinorVersionUpgrade":{ - "shape":"BooleanOptional", - "documentation":"

If true, then minor engine upgrades will be applied automatically to the cache cluster during the maintenance window.

Valid values: true | false

Default: true

" - }, - "SnapshotRetentionLimit":{ - "shape":"IntegerOptional", - "documentation":"

The number of days for which ElastiCache will retain automatic cache cluster snapshots before deleting them. For example, if you set SnapshotRetentionLimit to 5, then a snapshot that was taken today will be retained for 5 days before being deleted.

Important
If the value of SnapshotRetentionLimit is set to zero (0), backups are turned off.

" - }, - "SnapshotWindow":{ - "shape":"String", - "documentation":"

The daily time range (in UTC) during which ElastiCache will begin taking a daily snapshot of your cache cluster.

" - } - }, - "documentation":"

Represents the input of a ModifyCacheCluster operation.

" - }, - "ModifyCacheParameterGroupMessage":{ - "type":"structure", - "required":[ - "CacheParameterGroupName", - "ParameterNameValues" - ], - "members":{ - "CacheParameterGroupName":{ - "shape":"String", - "documentation":"

The name of the cache parameter group to modify.

" - }, - "ParameterNameValues":{ - "shape":"ParameterNameValueList", - "documentation":"

An array of parameter names and values for the parameter update. You must supply at least one parameter name and value; subsequent arguments are optional. A maximum of 20 parameters may be modified per request.

" - } - }, - "documentation":"

Represents the input of a ModifyCacheParameterGroup operation.

" - }, - "ModifyCacheSubnetGroupMessage":{ - "type":"structure", - "required":["CacheSubnetGroupName"], - "members":{ - "CacheSubnetGroupName":{ - "shape":"String", - "documentation":"

The name for the cache subnet group. This value is stored as a lowercase string.

Constraints: Must contain no more than 255 alphanumeric characters or hyphens.

Example: mysubnetgroup

" - }, - "CacheSubnetGroupDescription":{ - "shape":"String", - "documentation":"

A description for the cache subnet group.

" - }, - "SubnetIds":{ - "shape":"SubnetIdentifierList", - "documentation":"

The EC2 subnet IDs for the cache subnet group.

" - } - }, - "documentation":"

Represents the input of a ModifyCacheSubnetGroup operation.

" - }, - "ModifyReplicationGroupMessage":{ - "type":"structure", - "required":["ReplicationGroupId"], - "members":{ - "ReplicationGroupId":{ - "shape":"String", - "documentation":"

The identifier of the replication group to modify.

" - }, - "ReplicationGroupDescription":{ - "shape":"String", - "documentation":"

A description for the replication group. Maximum length is 255 characters.

" - }, - "PrimaryClusterId":{ - "shape":"String", - "documentation":"

If this parameter is specified, ElastiCache will promote each of the cache clusters in the specified replication group to the primary role. The nodes of all other cache clusters in the replication group will be read replicas.

" - }, - "SnapshottingClusterId":{ - "shape":"String", - "documentation":"

The cache cluster ID that will be used as the daily snapshot source for the replication group.

" - }, - "AutomaticFailoverEnabled":{ - "shape":"BooleanOptional", - "documentation":"

Whether a read replica will be automatically promoted to read/write primary if the existing primary encounters a failure.

Valid values: true | false

" - }, - "CacheSecurityGroupNames":{ - "shape":"CacheSecurityGroupNameList", - "documentation":"

A list of cache security group names to authorize for the clusters in this replication group. This change is asynchronously applied as soon as possible.

This parameter can be used only with replication group containing cache clusters running outside of an Amazon Virtual Private Cloud (VPC).

Constraints: Must contain no more than 255 alphanumeric characters. Must not be \"Default\".

" - }, - "SecurityGroupIds":{ - "shape":"SecurityGroupIdsList", - "documentation":"

Specifies the VPC Security Groups associated with the cache clusters in the replication group.

This parameter can be used only with replication group containing cache clusters running in an Amazon Virtual Private Cloud (VPC).

" - }, - "PreferredMaintenanceWindow":{ - "shape":"String", - "documentation":"

The weekly time range (in UTC) during which replication group system maintenance can occur. Note that system maintenance may result in an outage. This change is made immediately. If you are moving this window to the current time, there must be at least 120 minutes between the current time and end of the window to ensure that pending changes are applied.

" - }, - "NotificationTopicArn":{ - "shape":"String", - "documentation":"

The Amazon Resource Name (ARN) of the Amazon SNS topic to which notifications will be sent.

" - }, - "CacheParameterGroupName":{ - "shape":"String", - "documentation":"

The name of the cache parameter group to apply to all of the clusters in this replication group. This change is asynchronously applied as soon as possible for parameters when the ApplyImmediately parameter is specified as true for this request.

" - }, - "NotificationTopicStatus":{ - "shape":"String", - "documentation":"

The status of the Amazon SNS notification topic for the replication group. Notifications are sent only if the status is active.

Valid values: active | inactive

" - }, - "ApplyImmediately":{ - "shape":"Boolean", - "documentation":"

If true, this parameter causes the modifications in this request and any pending modifications to be applied, asynchronously and as soon as possible, regardless of the PreferredMaintenanceWindow setting for the replication group.

If false, then changes to the nodes in the replication group are applied on the next maintenance reboot, or the next failure reboot, whichever occurs first.

Valid values: true | false

Default: false

" - }, - "EngineVersion":{ - "shape":"String", - "documentation":"

The upgraded version of the cache engine to be run on the cache clusters in the replication group.

" - }, - "AutoMinorVersionUpgrade":{ - "shape":"BooleanOptional", - "documentation":"

Determines whether minor engine upgrades will be applied automatically to all of the clusters in the replication group during the maintenance window. A value of true allows these upgrades to occur; false disables automatic upgrades.

" - }, - "SnapshotRetentionLimit":{ - "shape":"IntegerOptional", - "documentation":"

The number of days for which ElastiCache will retain automatic node group snapshots before deleting them. For example, if you set SnapshotRetentionLimit to 5, then a snapshot that was taken today will be retained for 5 days before being deleted.

Important
If the value of SnapshotRetentionLimit is set to zero (0), backups are turned off.

" - }, - "SnapshotWindow":{ - "shape":"String", - "documentation":"

The daily time range (in UTC) during which ElastiCache will begin taking a daily snapshot of the node group specified by SnapshottingClusterId.

Example: 05:00-09:00

If you do not specify this parameter, then ElastiCache will automatically choose an appropriate time range.

" - } - }, - "documentation":"

Represents the input of a ModifyReplicationGroups operation.

" - }, - "NodeGroup":{ - "type":"structure", - "members":{ - "NodeGroupId":{ - "shape":"String", - "documentation":"

The identifier for the node group. A replication group contains only one node group; therefore, the node group ID is 0001.

" - }, - "Status":{ - "shape":"String", - "documentation":"

The current state of this replication group - creating, available, etc.

" - }, - "PrimaryEndpoint":{"shape":"Endpoint"}, - "NodeGroupMembers":{ - "shape":"NodeGroupMemberList", - "documentation":"

A list containing information about individual nodes within the node group.

" - } - }, - "documentation":"

Represents a collection of cache nodes in a replication group.

" - }, - "NodeGroupList":{ - "type":"list", - "member":{ - "shape":"NodeGroup", - "locationName":"NodeGroup" - } - }, - "NodeGroupMember":{ - "type":"structure", - "members":{ - "CacheClusterId":{ - "shape":"String", - "documentation":"

The ID of the cache cluster to which the node belongs.

" - }, - "CacheNodeId":{ - "shape":"String", - "documentation":"

The ID of the node within its cache cluster. A node ID is a numeric identifier (0001, 0002, etc.).

" - }, - "ReadEndpoint":{"shape":"Endpoint"}, - "PreferredAvailabilityZone":{ - "shape":"String", - "documentation":"

The name of the Availability Zone in which the node is located.

" - }, - "CurrentRole":{ - "shape":"String", - "documentation":"

The role that is currently assigned to the node - primary or replica.

" - } - }, - "documentation":"

Represents a single node within a node group.

" - }, - "NodeGroupMemberList":{ - "type":"list", - "member":{ - "shape":"NodeGroupMember", - "locationName":"NodeGroupMember" - } - }, - "NodeQuotaForClusterExceededFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"NodeQuotaForClusterExceeded", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request cannot be processed because it would exceed the allowed number of cache nodes in a single cache cluster.

" - }, - "NodeQuotaForCustomerExceededFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"NodeQuotaForCustomerExceeded", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request cannot be processed because it would exceed the allowed number of cache nodes per customer.

" - }, - "NodeSnapshot":{ - "type":"structure", - "members":{ - "CacheNodeId":{ - "shape":"String", - "documentation":"

The cache node identifier for the node in the source cache cluster.

" - }, - "CacheSize":{ - "shape":"String", - "documentation":"

The size of the cache on the source cache node.

" - }, - "CacheNodeCreateTime":{ - "shape":"TStamp", - "documentation":"

The date and time when the cache node was created in the source cache cluster.

" - }, - "SnapshotCreateTime":{ - "shape":"TStamp", - "documentation":"

The date and time when the source node's metadata and cache data set was obtained for the snapshot.

" - } - }, - "wrapper":true, - "documentation":"

Represents an individual cache node in a snapshot of a cache cluster.

" - }, - "NodeSnapshotList":{ - "type":"list", - "member":{ - "shape":"NodeSnapshot", - "locationName":"NodeSnapshot" - } - }, - "NotificationConfiguration":{ - "type":"structure", - "members":{ - "TopicArn":{ - "shape":"String", - "documentation":"

The Amazon Resource Name (ARN) that identifies the topic.

" - }, - "TopicStatus":{ - "shape":"String", - "documentation":"

The current state of the topic.

" - } - }, - "documentation":"

Describes a notification topic and its status. Notification topics are used for publishing ElastiCache events to subscribers using Amazon Simple Notification Service (SNS).

" - }, - "Parameter":{ - "type":"structure", - "members":{ - "ParameterName":{ - "shape":"String", - "documentation":"

The name of the parameter.

" - }, - "ParameterValue":{ - "shape":"String", - "documentation":"

The value of the parameter.

" - }, - "Description":{ - "shape":"String", - "documentation":"

A description of the parameter.

" - }, - "Source":{ - "shape":"String", - "documentation":"

The source of the parameter.

" - }, - "DataType":{ - "shape":"String", - "documentation":"

The valid data type for the parameter.

" - }, - "AllowedValues":{ - "shape":"String", - "documentation":"

The valid range of values for the parameter.

" - }, - "IsModifiable":{ - "shape":"Boolean", - "documentation":"

Indicates whether (true) or not (false) the parameter can be modified. Some parameters have security or operational implications that prevent them from being changed.

" - }, - "MinimumEngineVersion":{ - "shape":"String", - "documentation":"

The earliest cache engine version to which the parameter can apply.

" - } - }, - "documentation":"

Describes an individual setting that controls some aspect of ElastiCache behavior.

" - }, - "ParameterNameValue":{ - "type":"structure", - "members":{ - "ParameterName":{ - "shape":"String", - "documentation":"

The name of the parameter.

" - }, - "ParameterValue":{ - "shape":"String", - "documentation":"

The value of the parameter.

" - } - }, - "documentation":"

Describes a name-value pair that is used to update the value of a parameter.

" - }, - "ParameterNameValueList":{ - "type":"list", - "member":{ - "shape":"ParameterNameValue", - "locationName":"ParameterNameValue" - } - }, - "ParametersList":{ - "type":"list", - "member":{ - "shape":"Parameter", - "locationName":"Parameter" - } - }, - "PendingAutomaticFailoverStatus":{ - "type":"string", - "enum":[ - "enabled", - "disabled" - ] - }, - "PendingModifiedValues":{ - "type":"structure", - "members":{ - "NumCacheNodes":{ - "shape":"IntegerOptional", - "documentation":"

The new number of cache nodes for the cache cluster.

" - }, - "CacheNodeIdsToRemove":{ - "shape":"CacheNodeIdsList", - "documentation":"

A list of cache node IDs that are being removed (or will be removed) from the cache cluster. A node ID is a numeric identifier (0001, 0002, etc.).

" - }, - "EngineVersion":{ - "shape":"String", - "documentation":"

The new cache engine version that the cache cluster will run.

" - } - }, - "documentation":"

A group of settings that will be applied to the cache cluster in the future, or that are currently being applied.

" - }, - "PreferredAvailabilityZoneList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"PreferredAvailabilityZone" - } - }, - "PurchaseReservedCacheNodesOfferingMessage":{ - "type":"structure", - "required":["ReservedCacheNodesOfferingId"], - "members":{ - "ReservedCacheNodesOfferingId":{ - "shape":"String", - "documentation":"

The ID of the reserved cache node offering to purchase.

Example: 438012d3-4052-4cc7-b2e3-8d3372e0e706

" - }, - "ReservedCacheNodeId":{ - "shape":"String", - "documentation":"

A customer-specified identifier to track this reservation.

Example: myreservationID

" - }, - "CacheNodeCount":{ - "shape":"IntegerOptional", - "documentation":"

The number of cache node instances to reserve.

Default: 1

" - } - }, - "documentation":"

Represents the input of a PurchaseReservedCacheNodesOffering operation.

" - }, - "RebootCacheClusterMessage":{ - "type":"structure", - "required":[ - "CacheClusterId", - "CacheNodeIdsToReboot" - ], - "members":{ - "CacheClusterId":{ - "shape":"String", - "documentation":"

The cache cluster identifier. This parameter is stored as a lowercase string.

" - }, - "CacheNodeIdsToReboot":{ - "shape":"CacheNodeIdsList", - "documentation":"

A list of cache node IDs to reboot. A node ID is a numeric identifier (0001, 0002, etc.). To reboot an entire cache cluster, specify all of the cache node IDs.

" - } - }, - "documentation":"

Represents the input of a RebootCacheCluster operation.

" - }, - "RecurringCharge":{ - "type":"structure", - "members":{ - "RecurringChargeAmount":{ - "shape":"Double", - "documentation":"

The monetary amount of the recurring charge.

" - }, - "RecurringChargeFrequency":{ - "shape":"String", - "documentation":"

The frequency of the recurring charge.

" - } - }, - "wrapper":true, - "documentation":"

Contains the specific price and frequency of a recurring charges for a reserved cache node, or for a reserved cache node offering.

" - }, - "RecurringChargeList":{ - "type":"list", - "member":{ - "shape":"RecurringCharge", - "locationName":"RecurringCharge" - } - }, - "ReplicationGroup":{ - "type":"structure", - "members":{ - "ReplicationGroupId":{ - "shape":"String", - "documentation":"

The identifier for the replication group.

" - }, - "Description":{ - "shape":"String", - "documentation":"

The description of the replication group.

" - }, - "Status":{ - "shape":"String", - "documentation":"

The current state of this replication group - creating, available, etc.

" - }, - "PendingModifiedValues":{ - "shape":"ReplicationGroupPendingModifiedValues", - "documentation":"

A group of settings to be applied to the replication group, either immediately or during the next maintenance window.

" - }, - "MemberClusters":{ - "shape":"ClusterIdList", - "documentation":"

The names of all the cache clusters that are part of this replication group.

" - }, - "NodeGroups":{ - "shape":"NodeGroupList", - "documentation":"

A single element list with information about the nodes in the replication group.

" - }, - "SnapshottingClusterId":{ - "shape":"String", - "documentation":"

The cache cluster ID that is used as the daily snapshot source for the replication group.

" - }, - "AutomaticFailover":{ - "shape":"AutomaticFailoverStatus", - "documentation":"

Indicates the status of automatic failover for this replication group.

" - } - }, - "wrapper":true, - "documentation":"

Contains all of the attributes of a specific replication group.

" - }, - "ReplicationGroupAlreadyExistsFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"ReplicationGroupAlreadyExists", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified replication group already exists.

" - }, - "ReplicationGroupList":{ - "type":"list", - "member":{ - "shape":"ReplicationGroup", - "locationName":"ReplicationGroup" - } - }, - "ReplicationGroupMessage":{ - "type":"structure", - "members":{ - "Marker":{ - "shape":"String", - "documentation":"

Provides an identifier to allow retrieval of paginated results.

" - }, - "ReplicationGroups":{ - "shape":"ReplicationGroupList", - "documentation":"

A list of replication groups. Each item in the list contains detailed information about one replication group.

" - } - }, - "documentation":"

Represents the output of a DescribeReplicationGroups operation.

" - }, - "ReplicationGroupNotFoundFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"ReplicationGroupNotFoundFault", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified replication group does not exist.

" - }, - "ReplicationGroupPendingModifiedValues":{ - "type":"structure", - "members":{ - "PrimaryClusterId":{ - "shape":"String", - "documentation":"

The primary cluster ID which will be applied immediately (if --apply-immediately was specified), or during the next maintenance window.

" - }, - "AutomaticFailoverStatus":{ - "shape":"PendingAutomaticFailoverStatus", - "documentation":"

Indicates the status of automatic failover for this replication group.

" - } - }, - "documentation":"

The settings to be applied to the replication group, either immediately or during the next maintenance window.

" - }, - "ReservedCacheNode":{ - "type":"structure", - "members":{ - "ReservedCacheNodeId":{ - "shape":"String", - "documentation":"

The unique identifier for the reservation.

" - }, - "ReservedCacheNodesOfferingId":{ - "shape":"String", - "documentation":"

The offering identifier.

" - }, - "CacheNodeType":{ - "shape":"String", - "documentation":"

The cache node type for the reserved cache nodes.

" - }, - "StartTime":{ - "shape":"TStamp", - "documentation":"

The time the reservation started.

" - }, - "Duration":{ - "shape":"Integer", - "documentation":"

The duration of the reservation in seconds.

" - }, - "FixedPrice":{ - "shape":"Double", - "documentation":"

The fixed price charged for this reserved cache node.

" - }, - "UsagePrice":{ - "shape":"Double", - "documentation":"

The hourly price charged for this reserved cache node.

" - }, - "CacheNodeCount":{ - "shape":"Integer", - "documentation":"

The number of cache nodes that have been reserved.

" - }, - "ProductDescription":{ - "shape":"String", - "documentation":"

The description of the reserved cache node.

" - }, - "OfferingType":{ - "shape":"String", - "documentation":"

The offering type of this reserved cache node.

" - }, - "State":{ - "shape":"String", - "documentation":"

The state of the reserved cache node.

" - }, - "RecurringCharges":{ - "shape":"RecurringChargeList", - "documentation":"

The recurring price charged to run this reserved cache node.

" - } - }, - "wrapper":true, - "documentation":"

Represents the output of a PurchaseReservedCacheNodesOffering operation.

" - }, - "ReservedCacheNodeAlreadyExistsFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"ReservedCacheNodeAlreadyExists", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

You already have a reservation with the given identifier.

" - }, - "ReservedCacheNodeList":{ - "type":"list", - "member":{ - "shape":"ReservedCacheNode", - "locationName":"ReservedCacheNode" - } - }, - "ReservedCacheNodeMessage":{ - "type":"structure", - "members":{ - "Marker":{ - "shape":"String", - "documentation":"

Provides an identifier to allow retrieval of paginated results.

" - }, - "ReservedCacheNodes":{ - "shape":"ReservedCacheNodeList", - "documentation":"

A list of reserved cache nodes. Each element in the list contains detailed information about one node.

" - } - }, - "documentation":"

Represents the output of a DescribeReservedCacheNodes operation.

" - }, - "ReservedCacheNodeNotFoundFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"ReservedCacheNodeNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The requested reserved cache node was not found.

" - }, - "ReservedCacheNodeQuotaExceededFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"ReservedCacheNodeQuotaExceeded", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request cannot be processed because it would exceed the user's cache node quota.

" - }, - "ReservedCacheNodesOffering":{ - "type":"structure", - "members":{ - "ReservedCacheNodesOfferingId":{ - "shape":"String", - "documentation":"

A unique identifier for the reserved cache node offering.

" - }, - "CacheNodeType":{ - "shape":"String", - "documentation":"

The cache node type for the reserved cache node.

" - }, - "Duration":{ - "shape":"Integer", - "documentation":"

The duration of the offering. in seconds.

" - }, - "FixedPrice":{ - "shape":"Double", - "documentation":"

The fixed price charged for this offering.

" - }, - "UsagePrice":{ - "shape":"Double", - "documentation":"

The hourly price charged for this offering.

" - }, - "ProductDescription":{ - "shape":"String", - "documentation":"

The cache engine used by the offering.

" - }, - "OfferingType":{ - "shape":"String", - "documentation":"

The offering type.

" - }, - "RecurringCharges":{ - "shape":"RecurringChargeList", - "documentation":"

The recurring price charged to run this reserved cache node.

" - } - }, - "wrapper":true, - "documentation":"

Describes all of the attributes of a reserved cache node offering.

" - }, - "ReservedCacheNodesOfferingList":{ - "type":"list", - "member":{ - "shape":"ReservedCacheNodesOffering", - "locationName":"ReservedCacheNodesOffering" - } - }, - "ReservedCacheNodesOfferingMessage":{ - "type":"structure", - "members":{ - "Marker":{ - "shape":"String", - "documentation":"

Provides an identifier to allow retrieval of paginated results.

" - }, - "ReservedCacheNodesOfferings":{ - "shape":"ReservedCacheNodesOfferingList", - "documentation":"

A list of reserved cache node offerings. Each element in the list contains detailed information about one offering.

" - } - }, - "documentation":"

Represents the output of a DescribeReservedCacheNodesOfferings operation.

" - }, - "ReservedCacheNodesOfferingNotFoundFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"ReservedCacheNodesOfferingNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The requested cache node offering does not exist.

" - }, - "ResetCacheParameterGroupMessage":{ - "type":"structure", - "required":[ - "CacheParameterGroupName", - "ParameterNameValues" - ], - "members":{ - "CacheParameterGroupName":{ - "shape":"String", - "documentation":"

The name of the cache parameter group to reset.

" - }, - "ResetAllParameters":{ - "shape":"Boolean", - "documentation":"

If true, all parameters in the cache parameter group will be reset to default values. If false, no such action occurs.

Valid values: true | false

" - }, - "ParameterNameValues":{ - "shape":"ParameterNameValueList", - "documentation":"

An array of parameter names to be reset. If you are not resetting the entire cache parameter group, you must specify at least one parameter name.

" - } - }, - "documentation":"

Represents the input of a ResetCacheParameterGroup operation.

" - }, - "RevokeCacheSecurityGroupIngressMessage":{ - "type":"structure", - "required":[ - "CacheSecurityGroupName", - "EC2SecurityGroupName", - "EC2SecurityGroupOwnerId" - ], - "members":{ - "CacheSecurityGroupName":{ - "shape":"String", - "documentation":"

The name of the cache security group to revoke ingress from.

" - }, - "EC2SecurityGroupName":{ - "shape":"String", - "documentation":"

The name of the Amazon EC2 security group to revoke access from.

" - }, - "EC2SecurityGroupOwnerId":{ - "shape":"String", - "documentation":"

The AWS account number of the Amazon EC2 security group owner. Note that this is not the same thing as an AWS access key ID - you must provide a valid AWS account number for this parameter.

" - } - }, - "documentation":"

Represents the input of a RevokeCacheSecurityGroupIngress operation.

" - }, - "SecurityGroupIdsList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"SecurityGroupId" - } - }, - "SecurityGroupMembership":{ - "type":"structure", - "members":{ - "SecurityGroupId":{ - "shape":"String", - "documentation":"

The identifier of the cache security group.

" - }, - "Status":{ - "shape":"String", - "documentation":"

The status of the cache security group membership. The status changes whenever a cache security group is modified, or when the cache security groups assigned to a cache cluster are modified.

" - } - }, - "documentation":"

Represents a single cache security group and its status..

" - }, - "SecurityGroupMembershipList":{ - "type":"list", - "member":{"shape":"SecurityGroupMembership"} - }, - "Snapshot":{ - "type":"structure", - "members":{ - "SnapshotName":{ - "shape":"String", - "documentation":"

The name of a snapshot. For an automatic snapshot, the name is system-generated; for a manual snapshot, this is the user-provided name.

" - }, - "CacheClusterId":{ - "shape":"String", - "documentation":"

The user-supplied identifier of the source cache cluster.

" - }, - "SnapshotStatus":{ - "shape":"String", - "documentation":"

The status of the snapshot. Valid values: creating | available | restoring | copying | deleting.

" - }, - "SnapshotSource":{ - "shape":"String", - "documentation":"

Indicates whether the snapshot is from an automatic backup (automated) or was created manually (manual).

" - }, - "CacheNodeType":{ - "shape":"String", - "documentation":"

The name of the compute and memory capacity node type for the source cache cluster.

" - }, - "Engine":{ - "shape":"String", - "documentation":"

The name of the cache engine (memcached or redis) used by the source cache cluster.

" - }, - "EngineVersion":{ - "shape":"String", - "documentation":"

The version of the cache engine version that is used by the source cache cluster.

" - }, - "NumCacheNodes":{ - "shape":"IntegerOptional", - "documentation":"

The number of cache nodes in the source cache cluster.

" - }, - "PreferredAvailabilityZone":{ - "shape":"String", - "documentation":"

The name of the Availability Zone in which the source cache cluster is located.

" - }, - "CacheClusterCreateTime":{ - "shape":"TStamp", - "documentation":"

The date and time when the source cache cluster was created.

" - }, - "PreferredMaintenanceWindow":{ - "shape":"String", - "documentation":"

The time range (in UTC) during which weekly system maintenance can occur on the source cache cluster.

" - }, - "TopicArn":{ - "shape":"String", - "documentation":"

The Amazon Resource Name (ARN) for the topic used by the source cache cluster for publishing notifications.

" - }, - "Port":{ - "shape":"IntegerOptional", - "documentation":"

The port number used by each cache nodes in the source cache cluster.

" - }, - "CacheParameterGroupName":{ - "shape":"String", - "documentation":"

The cache parameter group that is associated with the source cache cluster.

" - }, - "CacheSubnetGroupName":{ - "shape":"String", - "documentation":"

The name of the cache subnet group associated with the source cache cluster.

" - }, - "VpcId":{ - "shape":"String", - "documentation":"

The Amazon Virtual Private Cloud identifier (VPC ID) of the cache subnet group for the source cache cluster.

" - }, - "AutoMinorVersionUpgrade":{ - "shape":"Boolean", - "documentation":"

For the source cache cluster, indicates whether minor version patches are applied automatically (true) or not (false).

" - }, - "SnapshotRetentionLimit":{ - "shape":"IntegerOptional", - "documentation":"

For an automatic snapshot, the number of days for which ElastiCache will retain the snapshot before deleting it.

For manual snapshots, this field reflects the SnapshotRetentionLimit for the source cache cluster when the snapshot was created. This field is otherwise ignored: Manual snapshots do not expire, and can only be deleted using the DeleteSnapshot action.

Important
If the value of SnapshotRetentionLimit is set to zero (0), backups are turned off.

" - }, - "SnapshotWindow":{ - "shape":"String", - "documentation":"

The daily time range during which ElastiCache takes daily snapshots of the source cache cluster.

" - }, - "NodeSnapshots":{ - "shape":"NodeSnapshotList", - "documentation":"

A list of the cache nodes in the source cache cluster.

" - } - }, - "wrapper":true, - "documentation":"

Represents a copy of an entire cache cluster as of the time when the snapshot was taken.

" - }, - "SnapshotAlreadyExistsFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"SnapshotAlreadyExistsFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

You already have a snapshot with the given name.

" - }, - "SnapshotArnsList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"SnapshotArn" - } - }, - "SnapshotFeatureNotSupportedFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"SnapshotFeatureNotSupportedFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

You attempted one of the following actions:

Neither of these are supported by ElastiCache.

" - }, - "SnapshotList":{ - "type":"list", - "member":{ - "shape":"Snapshot", - "locationName":"Snapshot" - } - }, - "SnapshotNotFoundFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"SnapshotNotFoundFault", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The requested snapshot name does not refer to an existing snapshot.

" - }, - "SnapshotQuotaExceededFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"SnapshotQuotaExceededFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request cannot be processed because it would exceed the maximum number of snapshots.

" - }, - "SourceType":{ - "type":"string", - "enum":[ - "cache-cluster", - "cache-parameter-group", - "cache-security-group", - "cache-subnet-group" - ] - }, - "String":{"type":"string"}, - "Subnet":{ - "type":"structure", - "members":{ - "SubnetIdentifier":{ - "shape":"String", - "documentation":"

The unique identifier for the subnet

" - }, - "SubnetAvailabilityZone":{ - "shape":"AvailabilityZone", - "documentation":"

The Availability Zone associated with the subnet

" - } - }, - "documentation":"

Represents the subnet associated with a cache cluster. This parameter refers to subnets defined in Amazon Virtual Private Cloud (Amazon VPC) and used with ElastiCache.

" - }, - "SubnetIdentifierList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"SubnetIdentifier" - } - }, - "SubnetInUse":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"SubnetInUse", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The requested subnet is being used by another cache subnet group.

" - }, - "SubnetList":{ - "type":"list", - "member":{ - "shape":"Subnet", - "locationName":"Subnet" - } - }, - "TStamp":{"type":"timestamp"}, - "AuthorizeCacheSecurityGroupIngressResult":{ - "type":"structure", - "members":{ - "CacheSecurityGroup":{"shape":"CacheSecurityGroup"} - } - }, - "CopySnapshotResult":{ - "type":"structure", - "members":{ - "Snapshot":{"shape":"Snapshot"} - } - }, - "CreateCacheClusterResult":{ - "type":"structure", - "members":{ - "CacheCluster":{"shape":"CacheCluster"} - } - }, - "CreateCacheParameterGroupResult":{ - "type":"structure", - "members":{ - "CacheParameterGroup":{"shape":"CacheParameterGroup"} - } - }, - "CreateCacheSecurityGroupResult":{ - "type":"structure", - "members":{ - "CacheSecurityGroup":{"shape":"CacheSecurityGroup"} - } - }, - "CreateCacheSubnetGroupResult":{ - "type":"structure", - "members":{ - "CacheSubnetGroup":{"shape":"CacheSubnetGroup"} - } - }, - "CreateReplicationGroupResult":{ - "type":"structure", - "members":{ - "ReplicationGroup":{"shape":"ReplicationGroup"} - } - }, - "CreateSnapshotResult":{ - "type":"structure", - "members":{ - "Snapshot":{"shape":"Snapshot"} - } - }, - "DeleteCacheClusterResult":{ - "type":"structure", - "members":{ - "CacheCluster":{"shape":"CacheCluster"} - } - }, - "DeleteReplicationGroupResult":{ - "type":"structure", - "members":{ - "ReplicationGroup":{"shape":"ReplicationGroup"} - } - }, - "DeleteSnapshotResult":{ - "type":"structure", - "members":{ - "Snapshot":{"shape":"Snapshot"} - } - }, - "DescribeEngineDefaultParametersResult":{ - "type":"structure", - "members":{ - "EngineDefaults":{"shape":"EngineDefaults"} - } - }, - "ModifyCacheClusterResult":{ - "type":"structure", - "members":{ - "CacheCluster":{"shape":"CacheCluster"} - } - }, - "ModifyCacheSubnetGroupResult":{ - "type":"structure", - "members":{ - "CacheSubnetGroup":{"shape":"CacheSubnetGroup"} - } - }, - "ModifyReplicationGroupResult":{ - "type":"structure", - "members":{ - "ReplicationGroup":{"shape":"ReplicationGroup"} - } - }, - "PurchaseReservedCacheNodesOfferingResult":{ - "type":"structure", - "members":{ - "ReservedCacheNode":{"shape":"ReservedCacheNode"} - } - }, - "RebootCacheClusterResult":{ - "type":"structure", - "members":{ - "CacheCluster":{"shape":"CacheCluster"} - } - }, - "RevokeCacheSecurityGroupIngressResult":{ - "type":"structure", - "members":{ - "CacheSecurityGroup":{"shape":"CacheSecurityGroup"} - } - } - } -} diff --git a/src/github.com/getlantern/aws-sdk-go/apis/elasticache/2014-09-30.paginators.json b/src/github.com/getlantern/aws-sdk-go/apis/elasticache/2014-09-30.paginators.json deleted file mode 100644 index 8724740d6f..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/apis/elasticache/2014-09-30.paginators.json +++ /dev/null @@ -1,76 +0,0 @@ -{ - "pagination": { - "DescribeCacheClusters": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "CacheClusters" - }, - "DescribeCacheEngineVersions": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "CacheEngineVersions" - }, - "DescribeCacheParameterGroups": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "CacheParameterGroups" - }, - "DescribeCacheParameters": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "Parameters" - }, - "DescribeCacheSecurityGroups": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "CacheSecurityGroups" - }, - "DescribeCacheSubnetGroups": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "CacheSubnetGroups" - }, - "DescribeEngineDefaultParameters": { - "input_token": "Marker", - "output_token": "EngineDefaults.Marker", - "limit_key": "MaxRecords", - "result_key": "EngineDefaults.Parameters" - }, - "DescribeEvents": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "Events" - }, - "DescribeReservedCacheNodes": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "ReservedCacheNodes" - }, - "DescribeReservedCacheNodesOfferings": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "ReservedCacheNodesOfferings" - }, - "DescribeReplicationGroups": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "ReplicationGroups" - }, - "DescribeSnapshots": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "Snapshots" - } - } -} diff --git a/src/github.com/getlantern/aws-sdk-go/apis/elasticbeanstalk/2010-12-01.normal.json b/src/github.com/getlantern/aws-sdk-go/apis/elasticbeanstalk/2010-12-01.normal.json deleted file mode 100644 index dfdf988ce3..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/apis/elasticbeanstalk/2010-12-01.normal.json +++ /dev/null @@ -1,2442 +0,0 @@ -{ - "metadata":{ - "apiVersion":"2010-12-01", - "endpointPrefix":"elasticbeanstalk", - "serviceAbbreviation":"Elastic Beanstalk", - "serviceFullName":"AWS Elastic Beanstalk", - "signatureVersion":"v4", - "xmlNamespace":"http://elasticbeanstalk.amazonaws.com/docs/2010-12-01/", - "protocol":"query" - }, - "documentation":"AWS Elastic Beanstalk

This is the AWS Elastic Beanstalk API Reference. This guide provides detailed information about AWS Elastic Beanstalk actions, data types, parameters, and errors.

AWS Elastic Beanstalk is a tool that makes it easy for you to create, deploy, and manage scalable, fault-tolerant applications running on Amazon Web Services cloud resources.

For more information about this product, go to the AWS Elastic Beanstalk details page. The location of the latest AWS Elastic Beanstalk WSDL is http://elasticbeanstalk.s3.amazonaws.com/doc/2010-12-01/AWSElasticBeanstalk.wsdl.

Endpoints

For a list of region-specific endpoints that AWS Elastic Beanstalk supports, go to Regions and Endpoints in the Amazon Web Services Glossary.

", - "operations":{ - "CheckDNSAvailability":{ - "name":"CheckDNSAvailability", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"CheckDNSAvailabilityMessage", - "documentation":"

Results message indicating whether a CNAME is available.

" - }, - "output":{ - "shape":"CheckDNSAvailabilityResultMessage", - "documentation":"

Indicates if the specified CNAME is available.

", - "resultWrapper":"CheckDNSAvailabilityResult" - }, - "documentation":"

Checks if the specified CNAME is available.

" - }, - "CreateApplication":{ - "name":"CreateApplication", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"CreateApplicationMessage", - "documentation":"

This documentation target is not reported in the API reference.

" - }, - "output":{ - "shape":"ApplicationDescriptionMessage", - "documentation":"

Result message containing a single description of an application.

", - "resultWrapper":"CreateApplicationResult" - }, - "errors":[ - { - "shape":"TooManyApplicationsException", - "error":{ - "code":"TooManyApplicationsException", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The caller has exceeded the limit on the number of applications associated with their account.

" - } - ], - "documentation":"

Creates an application that has one configuration template named default and no application versions.

" - }, - "CreateApplicationVersion":{ - "name":"CreateApplicationVersion", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"CreateApplicationVersionMessage", - "documentation":"

" - }, - "output":{ - "shape":"ApplicationVersionDescriptionMessage", - "documentation":"

Result message wrapping a single description of an application version.

", - "resultWrapper":"CreateApplicationVersionResult" - }, - "errors":[ - { - "shape":"TooManyApplicationsException", - "error":{ - "code":"TooManyApplicationsException", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The caller has exceeded the limit on the number of applications associated with their account.

" - }, - { - "shape":"TooManyApplicationVersionsException", - "exception":true, - "documentation":"

The caller has exceeded the limit on the number of application versions associated with their account.

" - }, - { - "shape":"InsufficientPrivilegesException", - "error":{ - "code":"InsufficientPrivilegesException", - "httpStatusCode":403, - "senderFault":true - }, - "exception":true, - "documentation":"

Unable to perform the specified operation because the user does not have enough privileges for one of more downstream aws services

" - }, - { - "shape":"S3LocationNotInServiceRegionException", - "error":{ - "code":"S3LocationNotInServiceRegionException", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified S3 bucket does not belong to the S3 region in which the service is running.

" - } - ], - "documentation":"

Creates an application version for the specified application.

" - }, - "CreateConfigurationTemplate":{ - "name":"CreateConfigurationTemplate", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"CreateConfigurationTemplateMessage", - "documentation":"

This documentation target is not reported in the API reference.

" - }, - "output":{ - "shape":"ConfigurationSettingsDescription", - "documentation":"

Describes the settings for a configuration set.

", - "resultWrapper":"CreateConfigurationTemplateResult" - }, - "errors":[ - { - "shape":"InsufficientPrivilegesException", - "error":{ - "code":"InsufficientPrivilegesException", - "httpStatusCode":403, - "senderFault":true - }, - "exception":true, - "documentation":"

Unable to perform the specified operation because the user does not have enough privileges for one of more downstream aws services

" - }, - { - "shape":"TooManyConfigurationTemplatesException", - "error":{ - "code":"TooManyConfigurationTemplatesException", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The caller has exceeded the limit on the number of configuration templates associated with their account.

" - } - ], - "documentation":"

Creates a configuration template. Templates are associated with a specific application and are used to deploy different versions of the application with the same configuration settings.

Related Topics

" - }, - "CreateEnvironment":{ - "name":"CreateEnvironment", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"CreateEnvironmentMessage", - "documentation":"

" - }, - "output":{ - "shape":"EnvironmentDescription", - "documentation":"

Describes the properties of an environment.

", - "resultWrapper":"CreateEnvironmentResult" - }, - "errors":[ - { - "shape":"TooManyEnvironmentsException", - "error":{ - "code":"TooManyEnvironmentsException", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The caller has exceeded the limit of allowed environments associated with the account.

" - }, - { - "shape":"InsufficientPrivilegesException", - "error":{ - "code":"InsufficientPrivilegesException", - "httpStatusCode":403, - "senderFault":true - }, - "exception":true, - "documentation":"

Unable to perform the specified operation because the user does not have enough privileges for one of more downstream aws services

" - } - ], - "documentation":"

Launches an environment for the specified application using the specified configuration.

" - }, - "CreateStorageLocation":{ - "name":"CreateStorageLocation", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "output":{ - "shape":"CreateStorageLocationResultMessage", - "documentation":"

Results of a CreateStorageLocationResult call.

", - "resultWrapper":"CreateStorageLocationResult" - }, - "errors":[ - { - "shape":"TooManyBucketsException", - "error":{ - "code":"TooManyBucketsException", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The web service attempted to create a bucket in an Amazon S3 account that already has 100 buckets.

" - }, - { - "shape":"S3SubscriptionRequiredException", - "error":{ - "code":"S3SubscriptionRequiredException", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The caller does not have a subscription to Amazon S3.

" - }, - { - "shape":"InsufficientPrivilegesException", - "error":{ - "code":"InsufficientPrivilegesException", - "httpStatusCode":403, - "senderFault":true - }, - "exception":true, - "documentation":"

Unable to perform the specified operation because the user does not have enough privileges for one of more downstream aws services

" - } - ], - "documentation":"

Creates the Amazon S3 storage location for the account.

This location is used to store user log files.

" - }, - "DeleteApplication":{ - "name":"DeleteApplication", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DeleteApplicationMessage", - "documentation":"

This documentation target is not reported in the API reference.

" - }, - "errors":[ - { - "shape":"OperationInProgressException", - "error":{ - "code":"OperationInProgressFailure", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Unable to perform the specified operation because another operation is already in progress affecting an an element in this activity.

" - } - ], - "documentation":"

Deletes the specified application along with all associated versions and configurations. The application versions will not be deleted from your Amazon S3 bucket.

" - }, - "DeleteApplicationVersion":{ - "name":"DeleteApplicationVersion", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DeleteApplicationVersionMessage", - "documentation":"

This documentation target is not reported in the API reference.

" - }, - "errors":[ - { - "shape":"SourceBundleDeletionException", - "error":{ - "code":"SourceBundleDeletionFailure", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Unable to delete the Amazon S3 source bundle associated with the application version, although the application version deleted successfully.

" - }, - { - "shape":"InsufficientPrivilegesException", - "error":{ - "code":"InsufficientPrivilegesException", - "httpStatusCode":403, - "senderFault":true - }, - "exception":true, - "documentation":"

Unable to perform the specified operation because the user does not have enough privileges for one of more downstream aws services

" - }, - { - "shape":"OperationInProgressException", - "error":{ - "code":"OperationInProgressFailure", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Unable to perform the specified operation because another operation is already in progress affecting an an element in this activity.

" - }, - { - "shape":"S3LocationNotInServiceRegionException", - "error":{ - "code":"S3LocationNotInServiceRegionException", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified S3 bucket does not belong to the S3 region in which the service is running.

" - } - ], - "documentation":"

Deletes the specified version from the specified application.

" - }, - "DeleteConfigurationTemplate":{ - "name":"DeleteConfigurationTemplate", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DeleteConfigurationTemplateMessage", - "documentation":"

This documentation target is not reported in the API reference.

" - }, - "errors":[ - { - "shape":"OperationInProgressException", - "error":{ - "code":"OperationInProgressFailure", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Unable to perform the specified operation because another operation is already in progress affecting an an element in this activity.

" - } - ], - "documentation":"

Deletes the specified configuration template.

" - }, - "DeleteEnvironmentConfiguration":{ - "name":"DeleteEnvironmentConfiguration", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DeleteEnvironmentConfigurationMessage", - "documentation":"

This documentation target is not reported in the API reference.

" - }, - "documentation":"

Deletes the draft configuration associated with the running environment.

Updating a running environment with any configuration changes creates a draft configuration set. You can get the draft configuration using DescribeConfigurationSettings while the update is in progress or if the update fails. The DeploymentStatus for the draft configuration indicates whether the deployment is in process or has failed. The draft configuration remains in existence until it is deleted with this action.

" - }, - "DescribeApplicationVersions":{ - "name":"DescribeApplicationVersions", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DescribeApplicationVersionsMessage", - "documentation":"

Result message containing a list of configuration descriptions.

" - }, - "output":{ - "shape":"ApplicationVersionDescriptionsMessage", - "documentation":"

Result message wrapping a list of application version descriptions.

", - "resultWrapper":"DescribeApplicationVersionsResult" - }, - "documentation":"

Returns descriptions for existing application versions.

" - }, - "DescribeApplications":{ - "name":"DescribeApplications", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DescribeApplicationsMessage", - "documentation":"

This documentation target is not reported in the API reference.

" - }, - "output":{ - "shape":"ApplicationDescriptionsMessage", - "documentation":"

Result message containing a list of application descriptions.

", - "resultWrapper":"DescribeApplicationsResult" - }, - "documentation":"

Returns the descriptions of existing applications.

" - }, - "DescribeConfigurationOptions":{ - "name":"DescribeConfigurationOptions", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DescribeConfigurationOptionsMessage", - "documentation":"

Result message containig a list of application version descriptions.

" - }, - "output":{ - "shape":"ConfigurationOptionsDescription", - "documentation":"

Describes the settings for a specified configuration set.

", - "resultWrapper":"DescribeConfigurationOptionsResult" - }, - "documentation":"

Describes the configuration options that are used in a particular configuration template or environment, or that a specified solution stack defines. The description includes the values the options, their default values, and an indication of the required action on a running environment if an option value is changed.

" - }, - "DescribeConfigurationSettings":{ - "name":"DescribeConfigurationSettings", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DescribeConfigurationSettingsMessage", - "documentation":"

Result message containing all of the configuration settings for a specified solution stack or configuration template.

" - }, - "output":{ - "shape":"ConfigurationSettingsDescriptions", - "documentation":"

The results from a request to change the configuration settings of an environment.

", - "resultWrapper":"DescribeConfigurationSettingsResult" - }, - "documentation":"

Returns a description of the settings for the specified configuration set, that is, either a configuration template or the configuration set associated with a running environment.

When describing the settings for the configuration set associated with a running environment, it is possible to receive two sets of setting descriptions. One is the deployed configuration set, and the other is a draft configuration of an environment that is either in the process of deployment or that failed to deploy.

Related Topics

" - }, - "DescribeEnvironmentResources":{ - "name":"DescribeEnvironmentResources", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DescribeEnvironmentResourcesMessage", - "documentation":"

This documentation target is not reported in the API reference.

" - }, - "output":{ - "shape":"EnvironmentResourceDescriptionsMessage", - "documentation":"

Result message containing a list of environment resource descriptions.

", - "resultWrapper":"DescribeEnvironmentResourcesResult" - }, - "errors":[ - { - "shape":"InsufficientPrivilegesException", - "error":{ - "code":"InsufficientPrivilegesException", - "httpStatusCode":403, - "senderFault":true - }, - "exception":true, - "documentation":"

Unable to perform the specified operation because the user does not have enough privileges for one of more downstream aws services

" - } - ], - "documentation":"

Returns AWS resources for this environment.

" - }, - "DescribeEnvironments":{ - "name":"DescribeEnvironments", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DescribeEnvironmentsMessage", - "documentation":"

This documentation target is not reported in the API reference.

" - }, - "output":{ - "shape":"EnvironmentDescriptionsMessage", - "documentation":"

Result message containing a list of environment descriptions.

", - "resultWrapper":"DescribeEnvironmentsResult" - }, - "documentation":"

Returns descriptions for existing environments.

" - }, - "DescribeEvents":{ - "name":"DescribeEvents", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DescribeEventsMessage", - "documentation":"

This documentation target is not reported in the API reference.

" - }, - "output":{ - "shape":"EventDescriptionsMessage", - "documentation":"

Result message wrapping a list of event descriptions.

", - "resultWrapper":"DescribeEventsResult" - }, - "documentation":"

Returns list of event descriptions matching criteria up to the last 6 weeks.

" - }, - "ListAvailableSolutionStacks":{ - "name":"ListAvailableSolutionStacks", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "output":{ - "shape":"ListAvailableSolutionStacksResultMessage", - "documentation":"

A list of available AWS Elastic Beanstalk solution stacks.

", - "resultWrapper":"ListAvailableSolutionStacksResult" - }, - "documentation":"

Returns a list of the available solution stack names.

" - }, - "RebuildEnvironment":{ - "name":"RebuildEnvironment", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"RebuildEnvironmentMessage", - "documentation":"

" - }, - "errors":[ - { - "shape":"InsufficientPrivilegesException", - "error":{ - "code":"InsufficientPrivilegesException", - "httpStatusCode":403, - "senderFault":true - }, - "exception":true, - "documentation":"

Unable to perform the specified operation because the user does not have enough privileges for one of more downstream aws services

" - } - ], - "documentation":"

Deletes and recreates all of the AWS resources (for example: the Auto Scaling group, load balancer, etc.) for a specified environment and forces a restart.

" - }, - "RequestEnvironmentInfo":{ - "name":"RequestEnvironmentInfo", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"RequestEnvironmentInfoMessage", - "documentation":"

This documentation target is not reported in the API reference.

" - }, - "documentation":"

Initiates a request to compile the specified type of information of the deployed environment.

Setting the InfoType to tail compiles the last lines from the application server log files of every Amazon EC2 instance in your environment. Use RetrieveEnvironmentInfo to access the compiled information.

Related Topics

" - }, - "RestartAppServer":{ - "name":"RestartAppServer", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"RestartAppServerMessage", - "documentation":"

" - }, - "documentation":"

Causes the environment to restart the application container server running on each Amazon EC2 instance.

" - }, - "RetrieveEnvironmentInfo":{ - "name":"RetrieveEnvironmentInfo", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"RetrieveEnvironmentInfoMessage", - "documentation":"

This documentation target is not reported in the API reference.

" - }, - "output":{ - "shape":"RetrieveEnvironmentInfoResultMessage", - "documentation":"

Result message containing a description of the requested environment info.

", - "resultWrapper":"RetrieveEnvironmentInfoResult" - }, - "documentation":"

Retrieves the compiled information from a RequestEnvironmentInfo request.

Related Topics

" - }, - "SwapEnvironmentCNAMEs":{ - "name":"SwapEnvironmentCNAMEs", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"SwapEnvironmentCNAMEsMessage", - "documentation":"

" - }, - "documentation":"

Swaps the CNAMEs of two environments.

" - }, - "TerminateEnvironment":{ - "name":"TerminateEnvironment", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"TerminateEnvironmentMessage", - "documentation":"

This documentation target is not reported in the API reference.

" - }, - "output":{ - "shape":"EnvironmentDescription", - "documentation":"

Describes the properties of an environment.

", - "resultWrapper":"TerminateEnvironmentResult" - }, - "errors":[ - { - "shape":"InsufficientPrivilegesException", - "error":{ - "code":"InsufficientPrivilegesException", - "httpStatusCode":403, - "senderFault":true - }, - "exception":true, - "documentation":"

Unable to perform the specified operation because the user does not have enough privileges for one of more downstream aws services

" - } - ], - "documentation":"

Terminates the specified environment.

" - }, - "UpdateApplication":{ - "name":"UpdateApplication", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"UpdateApplicationMessage", - "documentation":"

This documentation target is not reported in the API reference.

" - }, - "output":{ - "shape":"ApplicationDescriptionMessage", - "documentation":"

Result message containing a single description of an application.

", - "resultWrapper":"UpdateApplicationResult" - }, - "documentation":"

Updates the specified application to have the specified properties.

" - }, - "UpdateApplicationVersion":{ - "name":"UpdateApplicationVersion", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"UpdateApplicationVersionMessage", - "documentation":"

" - }, - "output":{ - "shape":"ApplicationVersionDescriptionMessage", - "documentation":"

Result message wrapping a single description of an application version.

", - "resultWrapper":"UpdateApplicationVersionResult" - }, - "documentation":"

Updates the specified application version to have the specified properties.

" - }, - "UpdateConfigurationTemplate":{ - "name":"UpdateConfigurationTemplate", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"UpdateConfigurationTemplateMessage", - "documentation":"

The result message containing the options for the specified solution stack.

" - }, - "output":{ - "shape":"ConfigurationSettingsDescription", - "documentation":"

Describes the settings for a configuration set.

", - "resultWrapper":"UpdateConfigurationTemplateResult" - }, - "errors":[ - { - "shape":"InsufficientPrivilegesException", - "error":{ - "code":"InsufficientPrivilegesException", - "httpStatusCode":403, - "senderFault":true - }, - "exception":true, - "documentation":"

Unable to perform the specified operation because the user does not have enough privileges for one of more downstream aws services

" - } - ], - "documentation":"

Updates the specified configuration template to have the specified properties or configuration option values.

Related Topics

" - }, - "UpdateEnvironment":{ - "name":"UpdateEnvironment", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"UpdateEnvironmentMessage", - "documentation":"

This documentation target is not reported in the API reference.

" - }, - "output":{ - "shape":"EnvironmentDescription", - "documentation":"

Describes the properties of an environment.

", - "resultWrapper":"UpdateEnvironmentResult" - }, - "errors":[ - { - "shape":"InsufficientPrivilegesException", - "error":{ - "code":"InsufficientPrivilegesException", - "httpStatusCode":403, - "senderFault":true - }, - "exception":true, - "documentation":"

Unable to perform the specified operation because the user does not have enough privileges for one of more downstream aws services

" - } - ], - "documentation":"

Updates the environment description, deploys a new application version, updates the configuration settings to an entirely new configuration template, or updates select configuration option values in the running environment.

Attempting to update both the release and configuration is not allowed and AWS Elastic Beanstalk returns an InvalidParameterCombination error.

When updating the configuration settings to a new template or individual settings, a draft configuration is created and DescribeConfigurationSettings for this environment returns two setting descriptions with different DeploymentStatus values.

" - }, - "ValidateConfigurationSettings":{ - "name":"ValidateConfigurationSettings", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"ValidateConfigurationSettingsMessage", - "documentation":"

A list of validation messages for a specified configuration template.

" - }, - "output":{ - "shape":"ConfigurationSettingsValidationMessages", - "documentation":"

Provides a list of validation messages.

", - "resultWrapper":"ValidateConfigurationSettingsResult" - }, - "errors":[ - { - "shape":"InsufficientPrivilegesException", - "error":{ - "code":"InsufficientPrivilegesException", - "httpStatusCode":403, - "senderFault":true - }, - "exception":true, - "documentation":"

Unable to perform the specified operation because the user does not have enough privileges for one of more downstream aws services

" - } - ], - "documentation":"

Takes a set of configuration settings and either a configuration template or environment, and determines whether those values are valid.

This action returns a list of messages indicating any errors or warnings associated with the selection of option values.

" - } - }, - "shapes":{ - "ApplicationDescription":{ - "type":"structure", - "members":{ - "ApplicationName":{ - "shape":"ApplicationName", - "documentation":"

The name of the application.

" - }, - "Description":{ - "shape":"Description", - "documentation":"

User-defined description of the application.

" - }, - "DateCreated":{ - "shape":"CreationDate", - "documentation":"

The date when the application was created.

" - }, - "DateUpdated":{ - "shape":"UpdateDate", - "documentation":"

The date when the application was last modified.

" - }, - "Versions":{ - "shape":"VersionLabelsList", - "documentation":"

The names of the versions for this application.

" - }, - "ConfigurationTemplates":{ - "shape":"ConfigurationTemplateNamesList", - "documentation":"

The names of the configuration templates associated with this application.

" - } - }, - "documentation":"

Describes the properties of an application.

" - }, - "ApplicationDescriptionList":{ - "type":"list", - "member":{"shape":"ApplicationDescription"} - }, - "ApplicationDescriptionMessage":{ - "type":"structure", - "members":{ - "Application":{ - "shape":"ApplicationDescription", - "documentation":"

The ApplicationDescription of the application.

" - } - }, - "documentation":"

Result message containing a single description of an application.

" - }, - "ApplicationDescriptionsMessage":{ - "type":"structure", - "members":{ - "Applications":{ - "shape":"ApplicationDescriptionList", - "documentation":"

This parameter contains a list of ApplicationDescription.

" - } - }, - "documentation":"

Result message containing a list of application descriptions.

" - }, - "ApplicationName":{ - "type":"string", - "min":1, - "max":100 - }, - "ApplicationNamesList":{ - "type":"list", - "member":{"shape":"ApplicationName"} - }, - "ApplicationVersionDescription":{ - "type":"structure", - "members":{ - "ApplicationName":{ - "shape":"ApplicationName", - "documentation":"

The name of the application associated with this release.

" - }, - "Description":{ - "shape":"Description", - "documentation":"

The description of this application version.

" - }, - "VersionLabel":{ - "shape":"VersionLabel", - "documentation":"

A label uniquely identifying the version for the associated application.

" - }, - "SourceBundle":{ - "shape":"S3Location", - "documentation":"

The location where the source bundle is located for this version.

" - }, - "DateCreated":{ - "shape":"CreationDate", - "documentation":"

The creation date of the application version.

" - }, - "DateUpdated":{ - "shape":"UpdateDate", - "documentation":"

The last modified date of the application version.

" - } - }, - "documentation":"

Describes the properties of an application version.

" - }, - "ApplicationVersionDescriptionList":{ - "type":"list", - "member":{"shape":"ApplicationVersionDescription"} - }, - "ApplicationVersionDescriptionMessage":{ - "type":"structure", - "members":{ - "ApplicationVersion":{ - "shape":"ApplicationVersionDescription", - "documentation":"

The ApplicationVersionDescription of the application version.

" - } - }, - "documentation":"

Result message wrapping a single description of an application version.

" - }, - "ApplicationVersionDescriptionsMessage":{ - "type":"structure", - "members":{ - "ApplicationVersions":{ - "shape":"ApplicationVersionDescriptionList", - "documentation":"

A list of ApplicationVersionDescription .

" - } - }, - "documentation":"

Result message wrapping a list of application version descriptions.

" - }, - "AutoCreateApplication":{"type":"boolean"}, - "AutoScalingGroup":{ - "type":"structure", - "members":{ - "Name":{ - "shape":"ResourceId", - "documentation":"

The name of the AutoScalingGroup .

" - } - }, - "documentation":"

Describes an Auto Scaling launch configuration.

" - }, - "AutoScalingGroupList":{ - "type":"list", - "member":{"shape":"AutoScalingGroup"} - }, - "AvailableSolutionStackDetailsList":{ - "type":"list", - "member":{"shape":"SolutionStackDescription"} - }, - "AvailableSolutionStackNamesList":{ - "type":"list", - "member":{"shape":"SolutionStackName"} - }, - "CheckDNSAvailabilityMessage":{ - "type":"structure", - "required":["CNAMEPrefix"], - "members":{ - "CNAMEPrefix":{ - "shape":"DNSCnamePrefix", - "documentation":"

The prefix used when this CNAME is reserved.

" - } - }, - "documentation":"

Results message indicating whether a CNAME is available.

" - }, - "CheckDNSAvailabilityResultMessage":{ - "type":"structure", - "members":{ - "Available":{ - "shape":"CnameAvailability", - "documentation":"

Indicates if the specified CNAME is available:

true : The CNAME is available.

true : The CNAME is not available.

" - }, - "FullyQualifiedCNAME":{ - "shape":"DNSCname", - "documentation":"

The fully qualified CNAME to reserve when CreateEnvironment is called with the provided prefix.

" - } - }, - "documentation":"

Indicates if the specified CNAME is available.

" - }, - "CnameAvailability":{"type":"boolean"}, - "ConfigurationDeploymentStatus":{ - "type":"string", - "enum":[ - "deployed", - "pending", - "failed" - ] - }, - "ConfigurationOptionDefaultValue":{"type":"string"}, - "ConfigurationOptionDescription":{ - "type":"structure", - "members":{ - "Namespace":{ - "shape":"OptionNamespace", - "documentation":"

A unique namespace identifying the option's associated AWS resource.

" - }, - "Name":{ - "shape":"ConfigurationOptionName", - "documentation":"

The name of the configuration option.

" - }, - "DefaultValue":{ - "shape":"ConfigurationOptionDefaultValue", - "documentation":"

The default value for this configuration option.

" - }, - "ChangeSeverity":{ - "shape":"ConfigurationOptionSeverity", - "documentation":"

An indication of which action is required if the value for this configuration option changes:

NoInterruption - There is no interruption to the environment or application availability.

RestartEnvironment - The environment is restarted, all AWS resources are deleted and recreated, and the environment is unavailable during the process.

RestartApplicationServer - The environment is available the entire time. However, a short application outage occurs when the application servers on the running Amazon EC2 instances are restarted.

" - }, - "UserDefined":{ - "shape":"UserDefinedOption", - "documentation":"

An indication of whether the user defined this configuration option:

true : This configuration option was defined by the user. It is a valid choice for specifying this as an Option to Remove when updating configuration settings.

false : This configuration was not defined by the user.

Constraint: You can remove only UserDefined options from a configuration.

Valid Values: true | false

" - }, - "ValueType":{ - "shape":"ConfigurationOptionValueType", - "documentation":"

An indication of which type of values this option has and whether it is allowable to select one or more than one of the possible values:

Scalar : Values for this option are a single selection from the possible values, or a unformatted string or numeric value governed by the MIN/MAX/Regex constraints:

List : Values for this option are multiple selections of the possible values.

Boolean : Values for this option are either true or false .

" - }, - "ValueOptions":{ - "shape":"ConfigurationOptionPossibleValues", - "documentation":"

If specified, values for the configuration option are selected from this list.

" - }, - "MinValue":{ - "shape":"OptionRestrictionMinValue", - "documentation":"

If specified, the configuration option must be a numeric value greater than this value.

" - }, - "MaxValue":{ - "shape":"OptionRestrictionMaxValue", - "documentation":"

If specified, the configuration option must be a numeric value less than this value.

" - }, - "MaxLength":{ - "shape":"OptionRestrictionMaxLength", - "documentation":"

If specified, the configuration option must be a string value no longer than this value.

" - }, - "Regex":{ - "shape":"OptionRestrictionRegex", - "documentation":"

If specified, the configuration option must be a string value that satisfies this regular expression.

" - } - }, - "documentation":"

Describes the possible values for a configuration option.

" - }, - "ConfigurationOptionDescriptionsList":{ - "type":"list", - "member":{"shape":"ConfigurationOptionDescription"} - }, - "ConfigurationOptionName":{"type":"string"}, - "ConfigurationOptionPossibleValue":{"type":"string"}, - "ConfigurationOptionPossibleValues":{ - "type":"list", - "member":{"shape":"ConfigurationOptionPossibleValue"} - }, - "ConfigurationOptionSetting":{ - "type":"structure", - "members":{ - "Namespace":{ - "shape":"OptionNamespace", - "documentation":"

A unique namespace identifying the option's associated AWS resource.

" - }, - "OptionName":{ - "shape":"ConfigurationOptionName", - "documentation":"

The name of the configuration option.

" - }, - "Value":{ - "shape":"ConfigurationOptionValue", - "documentation":"

The current value for the configuration option.

" - } - }, - "documentation":"

A specification identifying an individual configuration option along with its current value. For a list of possible option values, go to Option Values in the AWS Elastic Beanstalk Developer Guide.

" - }, - "ConfigurationOptionSettingsList":{ - "type":"list", - "member":{"shape":"ConfigurationOptionSetting"} - }, - "ConfigurationOptionSeverity":{"type":"string"}, - "ConfigurationOptionValue":{"type":"string"}, - "ConfigurationOptionValueType":{ - "type":"string", - "enum":[ - "Scalar", - "List" - ] - }, - "ConfigurationOptionsDescription":{ - "type":"structure", - "members":{ - "SolutionStackName":{ - "shape":"SolutionStackName", - "documentation":"

The name of the solution stack these configuration options belong to.

" - }, - "Options":{ - "shape":"ConfigurationOptionDescriptionsList", - "documentation":"

A list of ConfigurationOptionDescription.

" - } - }, - "documentation":"

Describes the settings for a specified configuration set.

" - }, - "ConfigurationSettingsDescription":{ - "type":"structure", - "members":{ - "SolutionStackName":{ - "shape":"SolutionStackName", - "documentation":"

The name of the solution stack this configuration set uses.

" - }, - "ApplicationName":{ - "shape":"ApplicationName", - "documentation":"

The name of the application associated with this configuration set.

" - }, - "TemplateName":{ - "shape":"ConfigurationTemplateName", - "documentation":"

If not null, the name of the configuration template for this configuration set.

" - }, - "Description":{ - "shape":"Description", - "documentation":"

Describes this configuration set.

" - }, - "EnvironmentName":{ - "shape":"EnvironmentName", - "documentation":"

If not null, the name of the environment for this configuration set.

" - }, - "DeploymentStatus":{ - "shape":"ConfigurationDeploymentStatus", - "documentation":"

If this configuration set is associated with an environment, the DeploymentStatus parameter indicates the deployment status of this configuration set:

null: This configuration is not associated with a running environment.

pending: This is a draft configuration that is not deployed to the associated environment but is in the process of deploying.

deployed: This is the configuration that is currently deployed to the associated running environment.

failed: This is a draft configuration, that failed to successfully deploy.

" - }, - "DateCreated":{ - "shape":"CreationDate", - "documentation":"

The date (in UTC time) when this configuration set was created.

" - }, - "DateUpdated":{ - "shape":"UpdateDate", - "documentation":"

The date (in UTC time) when this configuration set was last modified.

" - }, - "OptionSettings":{ - "shape":"ConfigurationOptionSettingsList", - "documentation":"

A list of the configuration options and their values in this configuration set.

" - } - }, - "documentation":"

Describes the settings for a configuration set.

" - }, - "ConfigurationSettingsDescriptionList":{ - "type":"list", - "member":{"shape":"ConfigurationSettingsDescription"} - }, - "ConfigurationSettingsDescriptions":{ - "type":"structure", - "members":{ - "ConfigurationSettings":{ - "shape":"ConfigurationSettingsDescriptionList", - "documentation":"

A list of ConfigurationSettingsDescription.

" - } - }, - "documentation":"

The results from a request to change the configuration settings of an environment.

" - }, - "ConfigurationSettingsValidationMessages":{ - "type":"structure", - "members":{ - "Messages":{ - "shape":"ValidationMessagesList", - "documentation":"

A list of ValidationMessage.

" - } - }, - "documentation":"

Provides a list of validation messages.

" - }, - "ConfigurationTemplateName":{ - "type":"string", - "min":1, - "max":100 - }, - "ConfigurationTemplateNamesList":{ - "type":"list", - "member":{"shape":"ConfigurationTemplateName"} - }, - "CreateApplicationMessage":{ - "type":"structure", - "required":["ApplicationName"], - "members":{ - "ApplicationName":{ - "shape":"ApplicationName", - "documentation":"

The name of the application.

Constraint: This name must be unique within your account. If the specified name already exists, the action returns an InvalidParameterValue error.

" - }, - "Description":{ - "shape":"Description", - "documentation":"

Describes the application.

" - } - }, - "documentation":"

This documentation target is not reported in the API reference.

" - }, - "CreateApplicationVersionMessage":{ - "type":"structure", - "required":[ - "ApplicationName", - "VersionLabel" - ], - "members":{ - "ApplicationName":{ - "shape":"ApplicationName", - "documentation":"

The name of the application. If no application is found with this name, and AutoCreateApplication is false, returns an InvalidParameterValue error.

" - }, - "VersionLabel":{ - "shape":"VersionLabel", - "documentation":"

A label identifying this version.

Constraint: Must be unique per application. If an application version already exists with this label for the specified application, AWS Elastic Beanstalk returns an InvalidParameterValue error.

" - }, - "Description":{ - "shape":"Description", - "documentation":"

Describes this version.

" - }, - "SourceBundle":{ - "shape":"S3Location", - "documentation":"

The Amazon S3 bucket and key that identify the location of the source bundle for this version.

If data found at the Amazon S3 location exceeds the maximum allowed source bundle size, AWS Elastic Beanstalk returns an InvalidParameterValue error. The maximum size allowed is 512 MB.

Default: If not specified, AWS Elastic Beanstalk uses a sample application. If only partially specified (for example, a bucket is provided but not the key) or if no data is found at the Amazon S3 location, AWS Elastic Beanstalk returns an InvalidParameterCombination error.

" - }, - "AutoCreateApplication":{ - "shape":"AutoCreateApplication", - "documentation":"

Determines how the system behaves if the specified application for this version does not already exist:

true: Automatically creates the specified application for this version if it does not already exist.

false: Returns an InvalidParameterValue if the specified application for this version does not already exist.

Default: false

Valid Values: true | false

" - } - }, - "documentation":"

" - }, - "CreateConfigurationTemplateMessage":{ - "type":"structure", - "required":[ - "ApplicationName", - "TemplateName" - ], - "members":{ - "ApplicationName":{ - "shape":"ApplicationName", - "documentation":"

The name of the application to associate with this configuration template. If no application is found with this name, AWS Elastic Beanstalk returns an InvalidParameterValue error.

" - }, - "TemplateName":{ - "shape":"ConfigurationTemplateName", - "documentation":"

The name of the configuration template.

Constraint: This name must be unique per application.

Default: If a configuration template already exists with this name, AWS Elastic Beanstalk returns an InvalidParameterValue error.

" - }, - "SolutionStackName":{ - "shape":"SolutionStackName", - "documentation":"

The name of the solution stack used by this configuration. The solution stack specifies the operating system, architecture, and application server for a configuration template. It determines the set of configuration options as well as the possible and default values.

Use ListAvailableSolutionStacks to obtain a list of available solution stacks.

A solution stack name or a source configuration parameter must be specified, otherwise AWS Elastic Beanstalk returns an InvalidParameterValue error.

If a solution stack name is not specified and the source configuration parameter is specified, AWS Elastic Beanstalk uses the same solution stack as the source configuration template.

" - }, - "SourceConfiguration":{ - "shape":"SourceConfiguration", - "documentation":"

If specified, AWS Elastic Beanstalk uses the configuration values from the specified configuration template to create a new configuration.

Values specified in the OptionSettings parameter of this call overrides any values obtained from the SourceConfiguration.

If no configuration template is found, returns an InvalidParameterValue error.

Constraint: If both the solution stack name parameter and the source configuration parameters are specified, the solution stack of the source configuration template must match the specified solution stack name or else AWS Elastic Beanstalk returns an InvalidParameterCombination error.

" - }, - "EnvironmentId":{ - "shape":"EnvironmentId", - "documentation":"

The ID of the environment used with this configuration template.

" - }, - "Description":{ - "shape":"Description", - "documentation":"

Describes this configuration.

" - }, - "OptionSettings":{ - "shape":"ConfigurationOptionSettingsList", - "documentation":"

If specified, AWS Elastic Beanstalk sets the specified configuration option to the requested value. The new value overrides the value obtained from the solution stack or the source configuration template.

" - } - }, - "documentation":"

This documentation target is not reported in the API reference.

" - }, - "CreateEnvironmentMessage":{ - "type":"structure", - "required":[ - "ApplicationName", - "EnvironmentName" - ], - "members":{ - "ApplicationName":{ - "shape":"ApplicationName", - "documentation":"

The name of the application that contains the version to be deployed.

If no application is found with this name, CreateEnvironment returns an InvalidParameterValue error.

" - }, - "EnvironmentName":{ - "shape":"EnvironmentName", - "documentation":"

A unique name for the deployment environment. Used in the application URL.

Constraint: Must be from 4 to 23 characters in length. The name can contain only letters, numbers, and hyphens. It cannot start or end with a hyphen. This name must be unique in your account. If the specified name already exists, AWS Elastic Beanstalk returns an InvalidParameterValue error.

Default: If the CNAME parameter is not specified, the environment name becomes part of the CNAME, and therefore part of the visible URL for your application.

" - }, - "Description":{ - "shape":"Description", - "documentation":"

Describes this environment.

" - }, - "CNAMEPrefix":{ - "shape":"DNSCnamePrefix", - "documentation":"

If specified, the environment attempts to use this value as the prefix for the CNAME. If not specified, the CNAME is generated automatically by appending a random alphanumeric string to the environment name.

" - }, - "Tier":{ - "shape":"EnvironmentTier", - "documentation":"

This specifies the tier to use for creating this environment.

" - }, - "Tags":{ - "shape":"Tags", - "documentation":"

This specifies the tags applied to resources in the environment.

" - }, - "VersionLabel":{ - "shape":"VersionLabel", - "documentation":"

The name of the application version to deploy.

If the specified application has no associated application versions, AWS Elastic Beanstalk UpdateEnvironment returns an InvalidParameterValue error.

Default: If not specified, AWS Elastic Beanstalk attempts to launch the sample application in the container.

" - }, - "TemplateName":{ - "shape":"ConfigurationTemplateName", - "documentation":"

The name of the configuration template to use in deployment. If no configuration template is found with this name, AWS Elastic Beanstalk returns an InvalidParameterValue error.

Condition: You must specify either this parameter or a SolutionStackName, but not both. If you specify both, AWS Elastic Beanstalk returns an InvalidParameterCombination error. If you do not specify either, AWS Elastic Beanstalk returns a MissingRequiredParameter error.

" - }, - "SolutionStackName":{ - "shape":"SolutionStackName", - "documentation":"

This is an alternative to specifying a configuration name. If specified, AWS Elastic Beanstalk sets the configuration values to the default values associated with the specified solution stack.

Condition: You must specify either this or a TemplateName, but not both. If you specify both, AWS Elastic Beanstalk returns an InvalidParameterCombination error. If you do not specify either, AWS Elastic Beanstalk returns a MissingRequiredParameter error.

" - }, - "OptionSettings":{ - "shape":"ConfigurationOptionSettingsList", - "documentation":"

If specified, AWS Elastic Beanstalk sets the specified configuration options to the requested value in the configuration set for the new environment. These override the values obtained from the solution stack or the configuration template.

" - }, - "OptionsToRemove":{ - "shape":"OptionsSpecifierList", - "documentation":"

A list of custom user-defined configuration options to remove from the configuration set for this new environment.

" - } - }, - "documentation":"

" - }, - "CreateStorageLocationResultMessage":{ - "type":"structure", - "members":{ - "S3Bucket":{ - "shape":"S3Bucket", - "documentation":"

The name of the Amazon S3 bucket created.

" - } - }, - "documentation":"

Results of a CreateStorageLocationResult call.

" - }, - "CreationDate":{"type":"timestamp"}, - "DNSCname":{ - "type":"string", - "min":1, - "max":255 - }, - "DNSCnamePrefix":{ - "type":"string", - "min":4, - "max":63 - }, - "DeleteApplicationMessage":{ - "type":"structure", - "required":["ApplicationName"], - "members":{ - "ApplicationName":{ - "shape":"ApplicationName", - "documentation":"

The name of the application to delete.

" - }, - "TerminateEnvByForce":{ - "shape":"TerminateEnvForce", - "documentation":"

When set to true, running environments will be terminated before deleting the application.

" - } - }, - "documentation":"

This documentation target is not reported in the API reference.

" - }, - "DeleteApplicationVersionMessage":{ - "type":"structure", - "required":[ - "ApplicationName", - "VersionLabel" - ], - "members":{ - "ApplicationName":{ - "shape":"ApplicationName", - "documentation":"

The name of the application to delete releases from.

" - }, - "VersionLabel":{ - "shape":"VersionLabel", - "documentation":"

The label of the version to delete.

" - }, - "DeleteSourceBundle":{ - "shape":"DeleteSourceBundle", - "documentation":"

Indicates whether to delete the associated source bundle from Amazon S3:

Valid Values: true | false

" - } - }, - "documentation":"

This documentation target is not reported in the API reference.

" - }, - "DeleteConfigurationTemplateMessage":{ - "type":"structure", - "required":[ - "ApplicationName", - "TemplateName" - ], - "members":{ - "ApplicationName":{ - "shape":"ApplicationName", - "documentation":"

The name of the application to delete the configuration template from.

" - }, - "TemplateName":{ - "shape":"ConfigurationTemplateName", - "documentation":"

The name of the configuration template to delete.

" - } - }, - "documentation":"

This documentation target is not reported in the API reference.

" - }, - "DeleteEnvironmentConfigurationMessage":{ - "type":"structure", - "required":[ - "ApplicationName", - "EnvironmentName" - ], - "members":{ - "ApplicationName":{ - "shape":"ApplicationName", - "documentation":"

The name of the application the environment is associated with.

" - }, - "EnvironmentName":{ - "shape":"EnvironmentName", - "documentation":"

The name of the environment to delete the draft configuration from.

" - } - }, - "documentation":"

This documentation target is not reported in the API reference.

" - }, - "DeleteSourceBundle":{"type":"boolean"}, - "DescribeApplicationVersionsMessage":{ - "type":"structure", - "members":{ - "ApplicationName":{ - "shape":"ApplicationName", - "documentation":"

If specified, AWS Elastic Beanstalk restricts the returned descriptions to only include ones that are associated with the specified application.

" - }, - "VersionLabels":{ - "shape":"VersionLabelsList", - "documentation":"

If specified, restricts the returned descriptions to only include ones that have the specified version labels.

" - } - }, - "documentation":"

Result message containing a list of configuration descriptions.

" - }, - "DescribeApplicationsMessage":{ - "type":"structure", - "members":{ - "ApplicationNames":{ - "shape":"ApplicationNamesList", - "documentation":"

If specified, AWS Elastic Beanstalk restricts the returned descriptions to only include those with the specified names.

" - } - }, - "documentation":"

This documentation target is not reported in the API reference.

" - }, - "DescribeConfigurationOptionsMessage":{ - "type":"structure", - "members":{ - "ApplicationName":{ - "shape":"ApplicationName", - "documentation":"

The name of the application associated with the configuration template or environment. Only needed if you want to describe the configuration options associated with either the configuration template or environment.

" - }, - "TemplateName":{ - "shape":"ConfigurationTemplateName", - "documentation":"

The name of the configuration template whose configuration options you want to describe.

" - }, - "EnvironmentName":{ - "shape":"EnvironmentName", - "documentation":"

The name of the environment whose configuration options you want to describe.

" - }, - "SolutionStackName":{ - "shape":"SolutionStackName", - "documentation":"

The name of the solution stack whose configuration options you want to describe.

" - }, - "Options":{ - "shape":"OptionsSpecifierList", - "documentation":"

If specified, restricts the descriptions to only the specified options.

" - } - }, - "documentation":"

Result message containig a list of application version descriptions.

" - }, - "DescribeConfigurationSettingsMessage":{ - "type":"structure", - "required":["ApplicationName"], - "members":{ - "ApplicationName":{ - "shape":"ApplicationName", - "documentation":"

The application for the environment or configuration template.

" - }, - "TemplateName":{ - "shape":"ConfigurationTemplateName", - "documentation":"

The name of the configuration template to describe.

Conditional: You must specify either this parameter or an EnvironmentName, but not both. If you specify both, AWS Elastic Beanstalk returns an InvalidParameterCombination error. If you do not specify either, AWS Elastic Beanstalk returns a MissingRequiredParameter error.

" - }, - "EnvironmentName":{ - "shape":"EnvironmentName", - "documentation":"

The name of the environment to describe.

Condition: You must specify either this or a TemplateName, but not both. If you specify both, AWS Elastic Beanstalk returns an InvalidParameterCombination error. If you do not specify either, AWS Elastic Beanstalk returns MissingRequiredParameter error.

" - } - }, - "documentation":"

Result message containing all of the configuration settings for a specified solution stack or configuration template.

" - }, - "DescribeEnvironmentResourcesMessage":{ - "type":"structure", - "members":{ - "EnvironmentId":{ - "shape":"EnvironmentId", - "documentation":"

The ID of the environment to retrieve AWS resource usage data.

Condition: You must specify either this or an EnvironmentName, or both. If you do not specify either, AWS Elastic Beanstalk returns MissingRequiredParameter error.

" - }, - "EnvironmentName":{ - "shape":"EnvironmentName", - "documentation":"

The name of the environment to retrieve AWS resource usage data.

Condition: You must specify either this or an EnvironmentId, or both. If you do not specify either, AWS Elastic Beanstalk returns MissingRequiredParameter error.

" - } - }, - "documentation":"

This documentation target is not reported in the API reference.

" - }, - "DescribeEnvironmentsMessage":{ - "type":"structure", - "members":{ - "ApplicationName":{ - "shape":"ApplicationName", - "documentation":"

If specified, AWS Elastic Beanstalk restricts the returned descriptions to include only those that are associated with this application.

" - }, - "VersionLabel":{ - "shape":"VersionLabel", - "documentation":"

If specified, AWS Elastic Beanstalk restricts the returned descriptions to include only those that are associated with this application version.

" - }, - "EnvironmentIds":{ - "shape":"EnvironmentIdList", - "documentation":"

If specified, AWS Elastic Beanstalk restricts the returned descriptions to include only those that have the specified IDs.

" - }, - "EnvironmentNames":{ - "shape":"EnvironmentNamesList", - "documentation":"

If specified, AWS Elastic Beanstalk restricts the returned descriptions to include only those that have the specified names.

" - }, - "IncludeDeleted":{ - "shape":"IncludeDeleted", - "documentation":"

Indicates whether to include deleted environments:

true: Environments that have been deleted after IncludedDeletedBackTo are displayed.

false: Do not include deleted environments.

" - }, - "IncludedDeletedBackTo":{ - "shape":"IncludeDeletedBackTo", - "documentation":"

If specified when IncludeDeleted is set to true, then environments deleted after this date are displayed.

" - } - }, - "documentation":"

This documentation target is not reported in the API reference.

" - }, - "DescribeEventsMessage":{ - "type":"structure", - "members":{ - "ApplicationName":{ - "shape":"ApplicationName", - "documentation":"

If specified, AWS Elastic Beanstalk restricts the returned descriptions to include only those associated with this application.

" - }, - "VersionLabel":{ - "shape":"VersionLabel", - "documentation":"

If specified, AWS Elastic Beanstalk restricts the returned descriptions to those associated with this application version.

" - }, - "TemplateName":{ - "shape":"ConfigurationTemplateName", - "documentation":"

If specified, AWS Elastic Beanstalk restricts the returned descriptions to those that are associated with this environment configuration.

" - }, - "EnvironmentId":{ - "shape":"EnvironmentId", - "documentation":"

If specified, AWS Elastic Beanstalk restricts the returned descriptions to those associated with this environment.

" - }, - "EnvironmentName":{ - "shape":"EnvironmentName", - "documentation":"

If specified, AWS Elastic Beanstalk restricts the returned descriptions to those associated with this environment.

" - }, - "RequestId":{ - "shape":"RequestId", - "documentation":"

If specified, AWS Elastic Beanstalk restricts the described events to include only those associated with this request ID.

" - }, - "Severity":{ - "shape":"EventSeverity", - "documentation":"

If specified, limits the events returned from this call to include only those with the specified severity or higher.

" - }, - "StartTime":{ - "shape":"TimeFilterStart", - "documentation":"

If specified, AWS Elastic Beanstalk restricts the returned descriptions to those that occur on or after this time.

" - }, - "EndTime":{ - "shape":"TimeFilterEnd", - "documentation":"

If specified, AWS Elastic Beanstalk restricts the returned descriptions to those that occur up to, but not including, the EndTime.

" - }, - "MaxRecords":{ - "shape":"MaxRecords", - "documentation":"

Specifies the maximum number of events that can be returned, beginning with the most recent event.

" - }, - "NextToken":{ - "shape":"Token", - "documentation":"

Pagination token. If specified, the events return the next batch of results.

" - } - }, - "documentation":"

This documentation target is not reported in the API reference.

" - }, - "Description":{ - "type":"string", - "max":200 - }, - "Ec2InstanceId":{"type":"string"}, - "EndpointURL":{"type":"string"}, - "EnvironmentDescription":{ - "type":"structure", - "members":{ - "EnvironmentName":{ - "shape":"EnvironmentName", - "documentation":"

The name of this environment.

" - }, - "EnvironmentId":{ - "shape":"EnvironmentId", - "documentation":"

The ID of this environment.

" - }, - "ApplicationName":{ - "shape":"ApplicationName", - "documentation":"

The name of the application associated with this environment.

" - }, - "VersionLabel":{ - "shape":"VersionLabel", - "documentation":"

The application version deployed in this environment.

" - }, - "SolutionStackName":{ - "shape":"SolutionStackName", - "documentation":"

The name of the SolutionStack deployed with this environment.

" - }, - "TemplateName":{ - "shape":"ConfigurationTemplateName", - "documentation":"

The name of the configuration template used to originally launch this environment.

" - }, - "Description":{ - "shape":"Description", - "documentation":"

Describes this environment.

" - }, - "EndpointURL":{ - "shape":"EndpointURL", - "documentation":"

For load-balanced, autoscaling environments, the URL to the LoadBalancer. For single-instance environments, the IP address of the instance.

" - }, - "CNAME":{ - "shape":"DNSCname", - "documentation":"

The URL to the CNAME for this environment.

" - }, - "DateCreated":{ - "shape":"CreationDate", - "documentation":"

The creation date for this environment.

" - }, - "DateUpdated":{ - "shape":"UpdateDate", - "documentation":"

The last modified date for this environment.

" - }, - "Status":{ - "shape":"EnvironmentStatus", - "documentation":"

The current operational status of the environment:

" - }, - "Health":{ - "shape":"EnvironmentHealth", - "documentation":"

Describes the health status of the environment. AWS Elastic Beanstalk indicates the failure levels for a running environment:

Red : Indicates the environment is not working.

Yellow: Indicates that something is wrong, the application might not be available, but the instances appear running.

Green: Indicates the environment is healthy and fully functional.

Default: Grey

" - }, - "Resources":{ - "shape":"EnvironmentResourcesDescription", - "documentation":"

The description of the AWS resources used by this environment.

" - }, - "Tier":{ - "shape":"EnvironmentTier", - "documentation":"

Describes the current tier of this environment.

" - } - }, - "documentation":"

Describes the properties of an environment.

" - }, - "EnvironmentDescriptionsList":{ - "type":"list", - "member":{"shape":"EnvironmentDescription"} - }, - "EnvironmentDescriptionsMessage":{ - "type":"structure", - "members":{ - "Environments":{ - "shape":"EnvironmentDescriptionsList", - "documentation":"

Returns an EnvironmentDescription list.

" - } - }, - "documentation":"

Result message containing a list of environment descriptions.

" - }, - "EnvironmentHealth":{ - "type":"string", - "enum":[ - "Green", - "Yellow", - "Red", - "Grey" - ] - }, - "EnvironmentId":{"type":"string"}, - "EnvironmentIdList":{ - "type":"list", - "member":{"shape":"EnvironmentId"} - }, - "EnvironmentInfoDescription":{ - "type":"structure", - "members":{ - "InfoType":{ - "shape":"EnvironmentInfoType", - "documentation":"

The type of information retrieved.

" - }, - "Ec2InstanceId":{ - "shape":"Ec2InstanceId", - "documentation":"

The Amazon EC2 Instance ID for this information.

" - }, - "SampleTimestamp":{ - "shape":"SampleTimestamp", - "documentation":"

The time stamp when this information was retrieved.

" - }, - "Message":{ - "shape":"Message", - "documentation":"

The retrieved information.

" - } - }, - "documentation":"

The information retrieved from the Amazon EC2 instances.

" - }, - "EnvironmentInfoDescriptionList":{ - "type":"list", - "member":{"shape":"EnvironmentInfoDescription"} - }, - "EnvironmentInfoType":{ - "type":"string", - "enum":["tail"] - }, - "EnvironmentName":{ - "type":"string", - "min":4, - "max":23 - }, - "EnvironmentNamesList":{ - "type":"list", - "member":{"shape":"EnvironmentName"} - }, - "EnvironmentResourceDescription":{ - "type":"structure", - "members":{ - "EnvironmentName":{ - "shape":"EnvironmentName", - "documentation":"

The name of the environment.

" - }, - "AutoScalingGroups":{ - "shape":"AutoScalingGroupList", - "documentation":"

The AutoScalingGroups used by this environment.

" - }, - "Instances":{ - "shape":"InstanceList", - "documentation":"

The Amazon EC2 instances used by this environment.

" - }, - "LaunchConfigurations":{ - "shape":"LaunchConfigurationList", - "documentation":"

The Auto Scaling launch configurations in use by this environment.

" - }, - "LoadBalancers":{ - "shape":"LoadBalancerList", - "documentation":"

The LoadBalancers in use by this environment.

" - }, - "Triggers":{ - "shape":"TriggerList", - "documentation":"

The AutoScaling triggers in use by this environment.

" - }, - "Queues":{ - "shape":"QueueList", - "documentation":"

The queues used by this environment.

" - } - }, - "documentation":"

Describes the AWS resources in use by this environment. This data is live.

" - }, - "EnvironmentResourceDescriptionsMessage":{ - "type":"structure", - "members":{ - "EnvironmentResources":{ - "shape":"EnvironmentResourceDescription", - "documentation":"

A list of EnvironmentResourceDescription.

" - } - }, - "documentation":"

Result message containing a list of environment resource descriptions.

" - }, - "EnvironmentResourcesDescription":{ - "type":"structure", - "members":{ - "LoadBalancer":{ - "shape":"LoadBalancerDescription", - "documentation":"

Describes the LoadBalancer.

" - } - }, - "documentation":"

Describes the AWS resources in use by this environment. This data is not live data.

" - }, - "EnvironmentStatus":{ - "type":"string", - "enum":[ - "Launching", - "Updating", - "Ready", - "Terminating", - "Terminated" - ] - }, - "EnvironmentTier":{ - "type":"structure", - "members":{ - "Name":{ - "shape":"String", - "documentation":"

The name of this environment tier.

" - }, - "Type":{ - "shape":"String", - "documentation":"

The type of this environment tier.

" - }, - "Version":{ - "shape":"String", - "documentation":"

The version of this environment tier.

" - } - }, - "documentation":"

Describes the properties of an environment tier

" - }, - "EventDate":{"type":"timestamp"}, - "EventDescription":{ - "type":"structure", - "members":{ - "EventDate":{ - "shape":"EventDate", - "documentation":"

The date when the event occurred.

" - }, - "Message":{ - "shape":"EventMessage", - "documentation":"

The event message.

" - }, - "ApplicationName":{ - "shape":"ApplicationName", - "documentation":"

The application associated with the event.

" - }, - "VersionLabel":{ - "shape":"VersionLabel", - "documentation":"

The release label for the application version associated with this event.

" - }, - "TemplateName":{ - "shape":"ConfigurationTemplateName", - "documentation":"

The name of the configuration associated with this event.

" - }, - "EnvironmentName":{ - "shape":"EnvironmentName", - "documentation":"

The name of the environment associated with this event.

" - }, - "RequestId":{ - "shape":"RequestId", - "documentation":"

The web service request ID for the activity of this event.

" - }, - "Severity":{ - "shape":"EventSeverity", - "documentation":"

The severity level of this event.

" - } - }, - "documentation":"

Describes an event.

" - }, - "EventDescriptionList":{ - "type":"list", - "member":{"shape":"EventDescription"} - }, - "EventDescriptionsMessage":{ - "type":"structure", - "members":{ - "Events":{ - "shape":"EventDescriptionList", - "documentation":"

A list of EventDescription.

" - }, - "NextToken":{ - "shape":"Token", - "documentation":"

If returned, this indicates that there are more results to obtain. Use this token in the next DescribeEvents call to get the next batch of events.

" - } - }, - "documentation":"

Result message wrapping a list of event descriptions.

" - }, - "EventMessage":{"type":"string"}, - "EventSeverity":{ - "type":"string", - "enum":[ - "TRACE", - "DEBUG", - "INFO", - "WARN", - "ERROR", - "FATAL" - ] - }, - "FileTypeExtension":{ - "type":"string", - "min":1, - "max":100 - }, - "IncludeDeleted":{"type":"boolean"}, - "IncludeDeletedBackTo":{"type":"timestamp"}, - "Instance":{ - "type":"structure", - "members":{ - "Id":{ - "shape":"ResourceId", - "documentation":"

The ID of the Amazon EC2 instance.

" - } - }, - "documentation":"

The description of an Amazon EC2 instance.

" - }, - "InstanceList":{ - "type":"list", - "member":{"shape":"Instance"} - }, - "InsufficientPrivilegesException":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"InsufficientPrivilegesException", - "httpStatusCode":403, - "senderFault":true - }, - "exception":true, - "documentation":"

Unable to perform the specified operation because the user does not have enough privileges for one of more downstream aws services

" - }, - "Integer":{"type":"integer"}, - "LaunchConfiguration":{ - "type":"structure", - "members":{ - "Name":{ - "shape":"ResourceId", - "documentation":"

The name of the launch configuration.

" - } - }, - "documentation":"

Describes an Auto Scaling launch configuration.

" - }, - "LaunchConfigurationList":{ - "type":"list", - "member":{"shape":"LaunchConfiguration"} - }, - "ListAvailableSolutionStacksResultMessage":{ - "type":"structure", - "members":{ - "SolutionStacks":{ - "shape":"AvailableSolutionStackNamesList", - "documentation":"

A list of available solution stacks.

" - }, - "SolutionStackDetails":{ - "shape":"AvailableSolutionStackDetailsList", - "documentation":"

A list of available solution stacks and their SolutionStackDescription.

" - } - }, - "documentation":"

A list of available AWS Elastic Beanstalk solution stacks.

" - }, - "Listener":{ - "type":"structure", - "members":{ - "Protocol":{ - "shape":"String", - "documentation":"

The protocol that is used by the Listener.

" - }, - "Port":{ - "shape":"Integer", - "documentation":"

The port that is used by the Listener.

" - } - }, - "documentation":"

Describes the properties of a Listener for the LoadBalancer.

" - }, - "LoadBalancer":{ - "type":"structure", - "members":{ - "Name":{ - "shape":"ResourceId", - "documentation":"

The name of the LoadBalancer.

" - } - }, - "documentation":"

Describes a LoadBalancer.

" - }, - "LoadBalancerDescription":{ - "type":"structure", - "members":{ - "LoadBalancerName":{ - "shape":"String", - "documentation":"

The name of the LoadBalancer.

" - }, - "Domain":{ - "shape":"String", - "documentation":"

The domain name of the LoadBalancer.

" - }, - "Listeners":{ - "shape":"LoadBalancerListenersDescription", - "documentation":"

A list of Listeners used by the LoadBalancer.

" - } - }, - "documentation":"

Describes the details of a LoadBalancer.

" - }, - "LoadBalancerList":{ - "type":"list", - "member":{"shape":"LoadBalancer"} - }, - "LoadBalancerListenersDescription":{ - "type":"list", - "member":{"shape":"Listener"} - }, - "MaxRecords":{ - "type":"integer", - "min":1, - "max":1000 - }, - "Message":{"type":"string"}, - "OperationInProgressException":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"OperationInProgressFailure", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Unable to perform the specified operation because another operation is already in progress affecting an an element in this activity.

" - }, - "OptionNamespace":{"type":"string"}, - "OptionRestrictionMaxLength":{"type":"integer"}, - "OptionRestrictionMaxValue":{"type":"integer"}, - "OptionRestrictionMinValue":{"type":"integer"}, - "OptionRestrictionRegex":{ - "type":"structure", - "members":{ - "Pattern":{ - "shape":"RegexPattern", - "documentation":"

The regular expression pattern that a string configuration option value with this restriction must match.

" - }, - "Label":{ - "shape":"RegexLabel", - "documentation":"

A unique name representing this regular expression.

" - } - }, - "documentation":"

A regular expression representing a restriction on a string configuration option value.

" - }, - "OptionSpecification":{ - "type":"structure", - "members":{ - "Namespace":{ - "shape":"OptionNamespace", - "documentation":"

A unique namespace identifying the option's associated AWS resource.

" - }, - "OptionName":{ - "shape":"ConfigurationOptionName", - "documentation":"

The name of the configuration option.

" - } - }, - "documentation":"

A specification identifying an individual configuration option.

" - }, - "OptionsSpecifierList":{ - "type":"list", - "member":{"shape":"OptionSpecification"} - }, - "Queue":{ - "type":"structure", - "members":{ - "Name":{ - "shape":"String", - "documentation":"

The name of the queue.

" - }, - "URL":{ - "shape":"String", - "documentation":"

The URL of the queue.

" - } - }, - "documentation":"

Describes a queue.

" - }, - "QueueList":{ - "type":"list", - "member":{"shape":"Queue"} - }, - "RebuildEnvironmentMessage":{ - "type":"structure", - "members":{ - "EnvironmentId":{ - "shape":"EnvironmentId", - "documentation":"

The ID of the environment to rebuild.

Condition: You must specify either this or an EnvironmentName, or both. If you do not specify either, AWS Elastic Beanstalk returns MissingRequiredParameter error.

" - }, - "EnvironmentName":{ - "shape":"EnvironmentName", - "documentation":"

The name of the environment to rebuild.

Condition: You must specify either this or an EnvironmentId, or both. If you do not specify either, AWS Elastic Beanstalk returns MissingRequiredParameter error.

" - } - }, - "documentation":"

" - }, - "RegexLabel":{"type":"string"}, - "RegexPattern":{"type":"string"}, - "RequestEnvironmentInfoMessage":{ - "type":"structure", - "required":["InfoType"], - "members":{ - "EnvironmentId":{ - "shape":"EnvironmentId", - "documentation":"

The ID of the environment of the requested data.

If no such environment is found, RequestEnvironmentInfo returns an InvalidParameterValue error.

Condition: You must specify either this or an EnvironmentName, or both. If you do not specify either, AWS Elastic Beanstalk returns MissingRequiredParameter error.

" - }, - "EnvironmentName":{ - "shape":"EnvironmentName", - "documentation":"

The name of the environment of the requested data.

If no such environment is found, RequestEnvironmentInfo returns an InvalidParameterValue error.

Condition: You must specify either this or an EnvironmentId, or both. If you do not specify either, AWS Elastic Beanstalk returns MissingRequiredParameter error.

" - }, - "InfoType":{ - "shape":"EnvironmentInfoType", - "documentation":"

The type of information to request.

" - } - }, - "documentation":"

This documentation target is not reported in the API reference.

" - }, - "RequestId":{"type":"string"}, - "ResourceId":{"type":"string"}, - "RestartAppServerMessage":{ - "type":"structure", - "members":{ - "EnvironmentId":{ - "shape":"EnvironmentId", - "documentation":"

The ID of the environment to restart the server for.

Condition: You must specify either this or an EnvironmentName, or both. If you do not specify either, AWS Elastic Beanstalk returns MissingRequiredParameter error.

" - }, - "EnvironmentName":{ - "shape":"EnvironmentName", - "documentation":"

The name of the environment to restart the server for.

Condition: You must specify either this or an EnvironmentId, or both. If you do not specify either, AWS Elastic Beanstalk returns MissingRequiredParameter error.

" - } - }, - "documentation":"

" - }, - "RetrieveEnvironmentInfoMessage":{ - "type":"structure", - "required":["InfoType"], - "members":{ - "EnvironmentId":{ - "shape":"EnvironmentId", - "documentation":"

The ID of the data's environment.

If no such environment is found, returns an InvalidParameterValue error.

Condition: You must specify either this or an EnvironmentName, or both. If you do not specify either, AWS Elastic Beanstalk returns MissingRequiredParameter error.

" - }, - "EnvironmentName":{ - "shape":"EnvironmentName", - "documentation":"

The name of the data's environment.

If no such environment is found, returns an InvalidParameterValue error.

Condition: You must specify either this or an EnvironmentId, or both. If you do not specify either, AWS Elastic Beanstalk returns MissingRequiredParameter error.

" - }, - "InfoType":{ - "shape":"EnvironmentInfoType", - "documentation":"

The type of information to retrieve.

" - } - }, - "documentation":"

This documentation target is not reported in the API reference.

" - }, - "RetrieveEnvironmentInfoResultMessage":{ - "type":"structure", - "members":{ - "EnvironmentInfo":{ - "shape":"EnvironmentInfoDescriptionList", - "documentation":"

The EnvironmentInfoDescription of the environment.

" - } - }, - "documentation":"

Result message containing a description of the requested environment info.

" - }, - "S3Bucket":{ - "type":"string", - "max":255 - }, - "S3Key":{ - "type":"string", - "max":1024 - }, - "S3Location":{ - "type":"structure", - "members":{ - "S3Bucket":{ - "shape":"S3Bucket", - "documentation":"

The Amazon S3 bucket where the data is located.

" - }, - "S3Key":{ - "shape":"S3Key", - "documentation":"

The Amazon S3 key where the data is located.

" - } - }, - "documentation":"

A specification of a location in Amazon S3.

" - }, - "S3LocationNotInServiceRegionException":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"S3LocationNotInServiceRegionException", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified S3 bucket does not belong to the S3 region in which the service is running.

" - }, - "S3SubscriptionRequiredException":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"S3SubscriptionRequiredException", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The caller does not have a subscription to Amazon S3.

" - }, - "SampleTimestamp":{"type":"timestamp"}, - "SolutionStackDescription":{ - "type":"structure", - "members":{ - "SolutionStackName":{ - "shape":"SolutionStackName", - "documentation":"

The name of the solution stack.

" - }, - "PermittedFileTypes":{ - "shape":"SolutionStackFileTypeList", - "documentation":"

The permitted file types allowed for a solution stack.

" - } - }, - "documentation":"

Describes the solution stack.

" - }, - "SolutionStackFileTypeList":{ - "type":"list", - "member":{"shape":"FileTypeExtension"} - }, - "SolutionStackName":{ - "type":"string", - "max":100 - }, - "SourceBundleDeletionException":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"SourceBundleDeletionFailure", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Unable to delete the Amazon S3 source bundle associated with the application version, although the application version deleted successfully.

" - }, - "SourceConfiguration":{ - "type":"structure", - "members":{ - "ApplicationName":{ - "shape":"ApplicationName", - "documentation":"

The name of the application associated with the configuration.

" - }, - "TemplateName":{ - "shape":"ConfigurationTemplateName", - "documentation":"

The name of the configuration template.

" - } - }, - "documentation":"

A specification for an environment configuration

" - }, - "String":{"type":"string"}, - "SwapEnvironmentCNAMEsMessage":{ - "type":"structure", - "members":{ - "SourceEnvironmentId":{ - "shape":"EnvironmentId", - "documentation":"

The ID of the source environment.

Condition: You must specify at least the SourceEnvironmentID or the SourceEnvironmentName. You may also specify both. If you specify the SourceEnvironmentId, you must specify the DestinationEnvironmentId.

" - }, - "SourceEnvironmentName":{ - "shape":"EnvironmentName", - "documentation":"

The name of the source environment.

Condition: You must specify at least the SourceEnvironmentID or the SourceEnvironmentName. You may also specify both. If you specify the SourceEnvironmentName, you must specify the DestinationEnvironmentName.

" - }, - "DestinationEnvironmentId":{ - "shape":"EnvironmentId", - "documentation":"

The ID of the destination environment.

Condition: You must specify at least the DestinationEnvironmentID or the DestinationEnvironmentName. You may also specify both. You must specify the SourceEnvironmentId with the DestinationEnvironmentId.

" - }, - "DestinationEnvironmentName":{ - "shape":"EnvironmentName", - "documentation":"

The name of the destination environment.

Condition: You must specify at least the DestinationEnvironmentID or the DestinationEnvironmentName. You may also specify both. You must specify the SourceEnvironmentName with the DestinationEnvironmentName.

" - } - }, - "documentation":"

" - }, - "Tag":{ - "type":"structure", - "members":{ - "Key":{ - "shape":"TagKey", - "documentation":"

The key of the tag.

" - }, - "Value":{ - "shape":"TagValue", - "documentation":"

The value of the tag.

" - } - }, - "documentation":"

Describes a tag applied to a resource in an environment.

" - }, - "TagKey":{ - "type":"string", - "min":1, - "max":128 - }, - "TagValue":{ - "type":"string", - "min":1, - "max":256 - }, - "Tags":{ - "type":"list", - "member":{"shape":"Tag"} - }, - "TerminateEnvForce":{"type":"boolean"}, - "TerminateEnvironmentMessage":{ - "type":"structure", - "members":{ - "EnvironmentId":{ - "shape":"EnvironmentId", - "documentation":"

The ID of the environment to terminate.

Condition: You must specify either this or an EnvironmentName, or both. If you do not specify either, AWS Elastic Beanstalk returns MissingRequiredParameter error.

" - }, - "EnvironmentName":{ - "shape":"EnvironmentName", - "documentation":"

The name of the environment to terminate.

Condition: You must specify either this or an EnvironmentId, or both. If you do not specify either, AWS Elastic Beanstalk returns MissingRequiredParameter error.

" - }, - "TerminateResources":{ - "shape":"TerminateEnvironmentResources", - "documentation":"

Indicates whether the associated AWS resources should shut down when the environment is terminated:

true: (default) The user AWS resources (for example, the Auto Scaling group, LoadBalancer, etc.) are terminated along with the environment.

false: The environment is removed from the AWS Elastic Beanstalk but the AWS resources continue to operate.

For more information, see the AWS Elastic Beanstalk User Guide.

Default: true

Valid Values: true | false

" - } - }, - "documentation":"

This documentation target is not reported in the API reference.

" - }, - "TerminateEnvironmentResources":{"type":"boolean"}, - "TimeFilterEnd":{"type":"timestamp"}, - "TimeFilterStart":{"type":"timestamp"}, - "Token":{"type":"string"}, - "TooManyApplicationVersionsException":{ - "type":"structure", - "members":{ - }, - "exception":true, - "documentation":"

The caller has exceeded the limit on the number of application versions associated with their account.

" - }, - "TooManyApplicationsException":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"TooManyApplicationsException", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The caller has exceeded the limit on the number of applications associated with their account.

" - }, - "TooManyBucketsException":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"TooManyBucketsException", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The web service attempted to create a bucket in an Amazon S3 account that already has 100 buckets.

" - }, - "TooManyConfigurationTemplatesException":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"TooManyConfigurationTemplatesException", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The caller has exceeded the limit on the number of configuration templates associated with their account.

" - }, - "TooManyEnvironmentsException":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"TooManyEnvironmentsException", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The caller has exceeded the limit of allowed environments associated with the account.

" - }, - "Trigger":{ - "type":"structure", - "members":{ - "Name":{ - "shape":"ResourceId", - "documentation":"

The name of the trigger.

" - } - }, - "documentation":"

Describes a trigger.

" - }, - "TriggerList":{ - "type":"list", - "member":{"shape":"Trigger"} - }, - "UpdateApplicationMessage":{ - "type":"structure", - "required":["ApplicationName"], - "members":{ - "ApplicationName":{ - "shape":"ApplicationName", - "documentation":"

The name of the application to update. If no such application is found, UpdateApplication returns an InvalidParameterValue error.

" - }, - "Description":{ - "shape":"Description", - "documentation":"

A new description for the application.

Default: If not specified, AWS Elastic Beanstalk does not update the description.

" - } - }, - "documentation":"

This documentation target is not reported in the API reference.

" - }, - "UpdateApplicationVersionMessage":{ - "type":"structure", - "required":[ - "ApplicationName", - "VersionLabel" - ], - "members":{ - "ApplicationName":{ - "shape":"ApplicationName", - "documentation":"

The name of the application associated with this version.

If no application is found with this name, UpdateApplication returns an InvalidParameterValue error.

" - }, - "VersionLabel":{ - "shape":"VersionLabel", - "documentation":"

The name of the version to update.

If no application version is found with this label, UpdateApplication returns an InvalidParameterValue error.

" - }, - "Description":{ - "shape":"Description", - "documentation":"

A new description for this release.

" - } - }, - "documentation":"

" - }, - "UpdateConfigurationTemplateMessage":{ - "type":"structure", - "required":[ - "ApplicationName", - "TemplateName" - ], - "members":{ - "ApplicationName":{ - "shape":"ApplicationName", - "documentation":"

The name of the application associated with the configuration template to update.

If no application is found with this name, UpdateConfigurationTemplate returns an InvalidParameterValue error.

" - }, - "TemplateName":{ - "shape":"ConfigurationTemplateName", - "documentation":"

The name of the configuration template to update.

If no configuration template is found with this name, UpdateConfigurationTemplate returns an InvalidParameterValue error.

" - }, - "Description":{ - "shape":"Description", - "documentation":"

A new description for the configuration.

" - }, - "OptionSettings":{ - "shape":"ConfigurationOptionSettingsList", - "documentation":"

A list of configuration option settings to update with the new specified option value.

" - }, - "OptionsToRemove":{ - "shape":"OptionsSpecifierList", - "documentation":"

A list of configuration options to remove from the configuration set.

Constraint: You can remove only UserDefined configuration options.

" - } - }, - "documentation":"

The result message containing the options for the specified solution stack.

" - }, - "UpdateDate":{"type":"timestamp"}, - "UpdateEnvironmentMessage":{ - "type":"structure", - "members":{ - "EnvironmentId":{ - "shape":"EnvironmentId", - "documentation":"

The ID of the environment to update.

If no environment with this ID exists, AWS Elastic Beanstalk returns an InvalidParameterValue error.

Condition: You must specify either this or an EnvironmentName, or both. If you do not specify either, AWS Elastic Beanstalk returns MissingRequiredParameter error.

" - }, - "EnvironmentName":{ - "shape":"EnvironmentName", - "documentation":"

The name of the environment to update. If no environment with this name exists, AWS Elastic Beanstalk returns an InvalidParameterValue error.

Condition: You must specify either this or an EnvironmentId, or both. If you do not specify either, AWS Elastic Beanstalk returns MissingRequiredParameter error.

" - }, - "Description":{ - "shape":"Description", - "documentation":"

If this parameter is specified, AWS Elastic Beanstalk updates the description of this environment.

" - }, - "Tier":{ - "shape":"EnvironmentTier", - "documentation":"

This specifies the tier to use to update the environment.

Condition: You can only update the tier version for an environment. If you change the name of the type, AWS Elastic Beanstalk returns InvalidParameterValue error.

" - }, - "VersionLabel":{ - "shape":"VersionLabel", - "documentation":"

If this parameter is specified, AWS Elastic Beanstalk deploys the named application version to the environment. If no such application version is found, returns an InvalidParameterValue error.

" - }, - "TemplateName":{ - "shape":"ConfigurationTemplateName", - "documentation":"

If this parameter is specified, AWS Elastic Beanstalk deploys this configuration template to the environment. If no such configuration template is found, AWS Elastic Beanstalk returns an InvalidParameterValue error.

" - }, - "OptionSettings":{ - "shape":"ConfigurationOptionSettingsList", - "documentation":"

If specified, AWS Elastic Beanstalk updates the configuration set associated with the running environment and sets the specified configuration options to the requested value.

" - }, - "OptionsToRemove":{ - "shape":"OptionsSpecifierList", - "documentation":"

A list of custom user-defined configuration options to remove from the configuration set for this environment.

" - } - }, - "documentation":"

This documentation target is not reported in the API reference.

" - }, - "UserDefinedOption":{"type":"boolean"}, - "ValidateConfigurationSettingsMessage":{ - "type":"structure", - "required":[ - "ApplicationName", - "OptionSettings" - ], - "members":{ - "ApplicationName":{ - "shape":"ApplicationName", - "documentation":"

The name of the application that the configuration template or environment belongs to.

" - }, - "TemplateName":{ - "shape":"ConfigurationTemplateName", - "documentation":"

The name of the configuration template to validate the settings against.

Condition: You cannot specify both this and an environment name.

" - }, - "EnvironmentName":{ - "shape":"EnvironmentName", - "documentation":"

The name of the environment to validate the settings against.

Condition: You cannot specify both this and a configuration template name.

" - }, - "OptionSettings":{ - "shape":"ConfigurationOptionSettingsList", - "documentation":"

A list of the options and desired values to evaluate.

" - } - }, - "documentation":"

A list of validation messages for a specified configuration template.

" - }, - "ValidationMessage":{ - "type":"structure", - "members":{ - "Message":{ - "shape":"ValidationMessageString", - "documentation":"

A message describing the error or warning.

" - }, - "Severity":{ - "shape":"ValidationSeverity", - "documentation":"

An indication of the severity of this message:

error: This message indicates that this is not a valid setting for an option.

warning: This message is providing information you should take into account.

" - }, - "Namespace":{ - "shape":"OptionNamespace", - "documentation":"

" - }, - "OptionName":{ - "shape":"ConfigurationOptionName", - "documentation":"

" - } - }, - "documentation":"

An error or warning for a desired configuration option value.

" - }, - "ValidationMessageString":{"type":"string"}, - "ValidationMessagesList":{ - "type":"list", - "member":{"shape":"ValidationMessage"} - }, - "ValidationSeverity":{ - "type":"string", - "enum":[ - "error", - "warning" - ] - }, - "VersionLabel":{ - "type":"string", - "min":1, - "max":100 - }, - "VersionLabelsList":{ - "type":"list", - "member":{"shape":"VersionLabel"} - } - } -} diff --git a/src/github.com/getlantern/aws-sdk-go/apis/elasticbeanstalk/2010-12-01.paginators.json b/src/github.com/getlantern/aws-sdk-go/apis/elasticbeanstalk/2010-12-01.paginators.json deleted file mode 100644 index 350cce4dba..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/apis/elasticbeanstalk/2010-12-01.paginators.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "pagination": { - "DescribeEvents": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxRecords", - "result_key": "Events" - } - } -} diff --git a/src/github.com/getlantern/aws-sdk-go/apis/elastictranscoder/2012-09-25.normal.json b/src/github.com/getlantern/aws-sdk-go/apis/elastictranscoder/2012-09-25.normal.json deleted file mode 100644 index 2637accf71..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/apis/elastictranscoder/2012-09-25.normal.json +++ /dev/null @@ -1,2629 +0,0 @@ -{ - "metadata":{ - "apiVersion":"2012-09-25", - "endpointPrefix":"elastictranscoder", - "serviceFullName":"Amazon Elastic Transcoder", - "signatureVersion":"v4", - "protocol":"rest-json" - }, - "documentation":"AWS Elastic Transcoder Service

The AWS Elastic Transcoder Service.

", - "operations":{ - "CancelJob":{ - "name":"CancelJob", - "http":{ - "method":"DELETE", - "requestUri":"/2012-09-25/jobs/{Id}", - "responseCode":202 - }, - "input":{ - "shape":"CancelJobRequest", - "documentation":"

The CancelJobRequest structure.

" - }, - "output":{ - "shape":"CancelJobResponse", - "documentation":"

The response body contains a JSON object. If the job is successfully canceled, the value of Success is true.

" - }, - "errors":[ - { - "shape":"ValidationException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

One or more required parameter values were not provided in the request.

" - }, - { - "shape":"IncompatibleVersionException", - "error":{"httpStatusCode":400}, - "exception":true - }, - { - "shape":"ResourceNotFoundException", - "error":{"httpStatusCode":404}, - "exception":true, - "documentation":"

The requested resource does not exist or is not available. For example, the pipeline to which you're trying to add a job doesn't exist or is still being created.

" - }, - { - "shape":"ResourceInUseException", - "error":{"httpStatusCode":409}, - "exception":true, - "documentation":"

The resource you are attempting to change is in use. For example, you are attempting to delete a pipeline that is currently in use.

" - }, - { - "shape":"AccessDeniedException", - "error":{"httpStatusCode":403}, - "exception":true, - "documentation":"

General authentication failure. The request was not signed correctly.

" - }, - { - "shape":"InternalServiceException", - "exception":true, - "fault":true, - "documentation":"

Elastic Transcoder encountered an unexpected exception while trying to fulfill the request.

" - } - ], - "documentation":"

The CancelJob operation cancels an unfinished job.

You can only cancel a job that has a status of Submitted. To prevent a pipeline from starting to process a job while you're getting the job identifier, use UpdatePipelineStatus to temporarily pause the pipeline." - }, - "CreateJob":{ - "name":"CreateJob", - "http":{ - "method":"POST", - "requestUri":"/2012-09-25/jobs", - "responseCode":201 - }, - "input":{ - "shape":"CreateJobRequest", - "documentation":"

The CreateJobRequest structure.

" - }, - "output":{ - "shape":"CreateJobResponse", - "documentation":"

The CreateJobResponse structure.

" - }, - "errors":[ - { - "shape":"ValidationException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

One or more required parameter values were not provided in the request.

" - }, - { - "shape":"IncompatibleVersionException", - "error":{"httpStatusCode":400}, - "exception":true - }, - { - "shape":"ResourceNotFoundException", - "error":{"httpStatusCode":404}, - "exception":true, - "documentation":"

The requested resource does not exist or is not available. For example, the pipeline to which you're trying to add a job doesn't exist or is still being created.

" - }, - { - "shape":"AccessDeniedException", - "error":{"httpStatusCode":403}, - "exception":true, - "documentation":"

General authentication failure. The request was not signed correctly.

" - }, - { - "shape":"LimitExceededException", - "error":{"httpStatusCode":429}, - "exception":true, - "documentation":"

Too many operations for a given AWS account. For example, the number of pipelines exceeds the maximum allowed.

" - }, - { - "shape":"InternalServiceException", - "exception":true, - "fault":true, - "documentation":"

Elastic Transcoder encountered an unexpected exception while trying to fulfill the request.

" - } - ], - "documentation":"

When you create a job, Elastic Transcoder returns JSON data that includes the values that you specified plus information about the job that is created.

If you have specified more than one output for your jobs (for example, one output for the Kindle Fire and another output for the Apple iPhone 4s), you currently must use the Elastic Transcoder API to list the jobs (as opposed to the AWS Console).

" - }, - "CreatePipeline":{ - "name":"CreatePipeline", - "http":{ - "method":"POST", - "requestUri":"/2012-09-25/pipelines", - "responseCode":201 - }, - "input":{ - "shape":"CreatePipelineRequest", - "documentation":"

The CreatePipelineRequest structure.

" - }, - "output":{ - "shape":"CreatePipelineResponse", - "documentation":"

When you create a pipeline, Elastic Transcoder returns the values that you specified in the request.

" - }, - "errors":[ - { - "shape":"ValidationException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

One or more required parameter values were not provided in the request.

" - }, - { - "shape":"IncompatibleVersionException", - "error":{"httpStatusCode":400}, - "exception":true - }, - { - "shape":"AccessDeniedException", - "error":{"httpStatusCode":403}, - "exception":true, - "documentation":"

General authentication failure. The request was not signed correctly.

" - }, - { - "shape":"ResourceNotFoundException", - "error":{"httpStatusCode":404}, - "exception":true, - "documentation":"

The requested resource does not exist or is not available. For example, the pipeline to which you're trying to add a job doesn't exist or is still being created.

" - }, - { - "shape":"LimitExceededException", - "error":{"httpStatusCode":429}, - "exception":true, - "documentation":"

Too many operations for a given AWS account. For example, the number of pipelines exceeds the maximum allowed.

" - }, - { - "shape":"InternalServiceException", - "exception":true, - "fault":true, - "documentation":"

Elastic Transcoder encountered an unexpected exception while trying to fulfill the request.

" - } - ], - "documentation":"

The CreatePipeline operation creates a pipeline with settings that you specify.

" - }, - "CreatePreset":{ - "name":"CreatePreset", - "http":{ - "method":"POST", - "requestUri":"/2012-09-25/presets", - "responseCode":201 - }, - "input":{ - "shape":"CreatePresetRequest", - "documentation":"

The CreatePresetRequest structure.

" - }, - "output":{ - "shape":"CreatePresetResponse", - "documentation":"

The CreatePresetResponse structure.

" - }, - "errors":[ - { - "shape":"ValidationException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

One or more required parameter values were not provided in the request.

" - }, - { - "shape":"IncompatibleVersionException", - "error":{"httpStatusCode":400}, - "exception":true - }, - { - "shape":"AccessDeniedException", - "error":{"httpStatusCode":403}, - "exception":true, - "documentation":"

General authentication failure. The request was not signed correctly.

" - }, - { - "shape":"LimitExceededException", - "error":{"httpStatusCode":429}, - "exception":true, - "documentation":"

Too many operations for a given AWS account. For example, the number of pipelines exceeds the maximum allowed.

" - }, - { - "shape":"InternalServiceException", - "exception":true, - "fault":true, - "documentation":"

Elastic Transcoder encountered an unexpected exception while trying to fulfill the request.

" - } - ], - "documentation":"

The CreatePreset operation creates a preset with settings that you specify.

Elastic Transcoder checks the CreatePreset settings to ensure that they meet Elastic Transcoder requirements and to determine whether they comply with H.264 standards. If your settings are not valid for Elastic Transcoder, Elastic Transcoder returns an HTTP 400 response (ValidationException) and does not create the preset. If the settings are valid for Elastic Transcoder but aren't strictly compliant with the H.264 standard, Elastic Transcoder creates the preset and returns a warning message in the response. This helps you determine whether your settings comply with the H.264 standard while giving you greater flexibility with respect to the video that Elastic Transcoder produces.

Elastic Transcoder uses the H.264 video-compression format. For more information, see the International Telecommunication Union publication Recommendation ITU-T H.264: Advanced video coding for generic audiovisual services.

" - }, - "DeletePipeline":{ - "name":"DeletePipeline", - "http":{ - "method":"DELETE", - "requestUri":"/2012-09-25/pipelines/{Id}", - "responseCode":202 - }, - "input":{ - "shape":"DeletePipelineRequest", - "documentation":"

The DeletePipelineRequest structure.

" - }, - "output":{ - "shape":"DeletePipelineResponse", - "documentation":"

The DeletePipelineResponse structure.

" - }, - "errors":[ - { - "shape":"ValidationException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

One or more required parameter values were not provided in the request.

" - }, - { - "shape":"IncompatibleVersionException", - "error":{"httpStatusCode":400}, - "exception":true - }, - { - "shape":"ResourceNotFoundException", - "error":{"httpStatusCode":404}, - "exception":true, - "documentation":"

The requested resource does not exist or is not available. For example, the pipeline to which you're trying to add a job doesn't exist or is still being created.

" - }, - { - "shape":"ResourceInUseException", - "error":{"httpStatusCode":409}, - "exception":true, - "documentation":"

The resource you are attempting to change is in use. For example, you are attempting to delete a pipeline that is currently in use.

" - }, - { - "shape":"AccessDeniedException", - "error":{"httpStatusCode":403}, - "exception":true, - "documentation":"

General authentication failure. The request was not signed correctly.

" - }, - { - "shape":"InternalServiceException", - "exception":true, - "fault":true, - "documentation":"

Elastic Transcoder encountered an unexpected exception while trying to fulfill the request.

" - } - ], - "documentation":"

The DeletePipeline operation removes a pipeline.

You can only delete a pipeline that has never been used or that is not currently in use (doesn't contain any active jobs). If the pipeline is currently in use, DeletePipeline returns an error.

" - }, - "DeletePreset":{ - "name":"DeletePreset", - "http":{ - "method":"DELETE", - "requestUri":"/2012-09-25/presets/{Id}", - "responseCode":202 - }, - "input":{ - "shape":"DeletePresetRequest", - "documentation":"

The DeletePresetRequest structure.

" - }, - "output":{ - "shape":"DeletePresetResponse", - "documentation":"

The DeletePresetResponse structure.

" - }, - "errors":[ - { - "shape":"ValidationException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

One or more required parameter values were not provided in the request.

" - }, - { - "shape":"IncompatibleVersionException", - "error":{"httpStatusCode":400}, - "exception":true - }, - { - "shape":"ResourceNotFoundException", - "error":{"httpStatusCode":404}, - "exception":true, - "documentation":"

The requested resource does not exist or is not available. For example, the pipeline to which you're trying to add a job doesn't exist or is still being created.

" - }, - { - "shape":"AccessDeniedException", - "error":{"httpStatusCode":403}, - "exception":true, - "documentation":"

General authentication failure. The request was not signed correctly.

" - }, - { - "shape":"InternalServiceException", - "exception":true, - "fault":true, - "documentation":"

Elastic Transcoder encountered an unexpected exception while trying to fulfill the request.

" - } - ], - "documentation":"

The DeletePreset operation removes a preset that you've added in an AWS region.

You can't delete the default presets that are included with Elastic Transcoder.

" - }, - "ListJobsByPipeline":{ - "name":"ListJobsByPipeline", - "http":{ - "method":"GET", - "requestUri":"/2012-09-25/jobsByPipeline/{PipelineId}" - }, - "input":{ - "shape":"ListJobsByPipelineRequest", - "documentation":"

The ListJobsByPipelineRequest structure.

" - }, - "output":{ - "shape":"ListJobsByPipelineResponse", - "documentation":"

The ListJobsByPipelineResponse structure.

" - }, - "errors":[ - { - "shape":"ValidationException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

One or more required parameter values were not provided in the request.

" - }, - { - "shape":"IncompatibleVersionException", - "error":{"httpStatusCode":400}, - "exception":true - }, - { - "shape":"ResourceNotFoundException", - "error":{"httpStatusCode":404}, - "exception":true, - "documentation":"

The requested resource does not exist or is not available. For example, the pipeline to which you're trying to add a job doesn't exist or is still being created.

" - }, - { - "shape":"AccessDeniedException", - "error":{"httpStatusCode":403}, - "exception":true, - "documentation":"

General authentication failure. The request was not signed correctly.

" - }, - { - "shape":"InternalServiceException", - "exception":true, - "fault":true, - "documentation":"

Elastic Transcoder encountered an unexpected exception while trying to fulfill the request.

" - } - ], - "documentation":"

The ListJobsByPipeline operation gets a list of the jobs currently in a pipeline.

Elastic Transcoder returns all of the jobs currently in the specified pipeline. The response body contains one element for each job that satisfies the search criteria.

" - }, - "ListJobsByStatus":{ - "name":"ListJobsByStatus", - "http":{ - "method":"GET", - "requestUri":"/2012-09-25/jobsByStatus/{Status}" - }, - "input":{ - "shape":"ListJobsByStatusRequest", - "documentation":"

The ListJobsByStatusRequest structure.

" - }, - "output":{ - "shape":"ListJobsByStatusResponse", - "documentation":"

The ListJobsByStatusResponse structure.

" - }, - "errors":[ - { - "shape":"ValidationException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

One or more required parameter values were not provided in the request.

" - }, - { - "shape":"IncompatibleVersionException", - "error":{"httpStatusCode":400}, - "exception":true - }, - { - "shape":"ResourceNotFoundException", - "error":{"httpStatusCode":404}, - "exception":true, - "documentation":"

The requested resource does not exist or is not available. For example, the pipeline to which you're trying to add a job doesn't exist or is still being created.

" - }, - { - "shape":"AccessDeniedException", - "error":{"httpStatusCode":403}, - "exception":true, - "documentation":"

General authentication failure. The request was not signed correctly.

" - }, - { - "shape":"InternalServiceException", - "exception":true, - "fault":true, - "documentation":"

Elastic Transcoder encountered an unexpected exception while trying to fulfill the request.

" - } - ], - "documentation":"

The ListJobsByStatus operation gets a list of jobs that have a specified status. The response body contains one element for each job that satisfies the search criteria.

" - }, - "ListPipelines":{ - "name":"ListPipelines", - "http":{ - "method":"GET", - "requestUri":"/2012-09-25/pipelines" - }, - "input":{ - "shape":"ListPipelinesRequest", - "documentation":"

The ListPipelineRequest structure.

" - }, - "output":{ - "shape":"ListPipelinesResponse", - "documentation":"

A list of the pipelines associated with the current AWS account.

" - }, - "errors":[ - { - "shape":"ValidationException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

One or more required parameter values were not provided in the request.

" - }, - { - "shape":"IncompatibleVersionException", - "error":{"httpStatusCode":400}, - "exception":true - }, - { - "shape":"AccessDeniedException", - "error":{"httpStatusCode":403}, - "exception":true, - "documentation":"

General authentication failure. The request was not signed correctly.

" - }, - { - "shape":"InternalServiceException", - "exception":true, - "fault":true, - "documentation":"

Elastic Transcoder encountered an unexpected exception while trying to fulfill the request.

" - } - ], - "documentation":"

The ListPipelines operation gets a list of the pipelines associated with the current AWS account.

" - }, - "ListPresets":{ - "name":"ListPresets", - "http":{ - "method":"GET", - "requestUri":"/2012-09-25/presets" - }, - "input":{ - "shape":"ListPresetsRequest", - "documentation":"

The ListPresetsRequest structure.

" - }, - "output":{ - "shape":"ListPresetsResponse", - "documentation":"

The ListPresetsResponse structure.

" - }, - "errors":[ - { - "shape":"ValidationException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

One or more required parameter values were not provided in the request.

" - }, - { - "shape":"IncompatibleVersionException", - "error":{"httpStatusCode":400}, - "exception":true - }, - { - "shape":"AccessDeniedException", - "error":{"httpStatusCode":403}, - "exception":true, - "documentation":"

General authentication failure. The request was not signed correctly.

" - }, - { - "shape":"InternalServiceException", - "exception":true, - "fault":true, - "documentation":"

Elastic Transcoder encountered an unexpected exception while trying to fulfill the request.

" - } - ], - "documentation":"

The ListPresets operation gets a list of the default presets included with Elastic Transcoder and the presets that you've added in an AWS region.

" - }, - "ReadJob":{ - "name":"ReadJob", - "http":{ - "method":"GET", - "requestUri":"/2012-09-25/jobs/{Id}" - }, - "input":{ - "shape":"ReadJobRequest", - "documentation":"

The ReadJobRequest structure.

" - }, - "output":{ - "shape":"ReadJobResponse", - "documentation":"

The ReadJobResponse structure.

" - }, - "errors":[ - { - "shape":"ValidationException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

One or more required parameter values were not provided in the request.

" - }, - { - "shape":"IncompatibleVersionException", - "error":{"httpStatusCode":400}, - "exception":true - }, - { - "shape":"ResourceNotFoundException", - "error":{"httpStatusCode":404}, - "exception":true, - "documentation":"

The requested resource does not exist or is not available. For example, the pipeline to which you're trying to add a job doesn't exist or is still being created.

" - }, - { - "shape":"AccessDeniedException", - "error":{"httpStatusCode":403}, - "exception":true, - "documentation":"

General authentication failure. The request was not signed correctly.

" - }, - { - "shape":"InternalServiceException", - "exception":true, - "fault":true, - "documentation":"

Elastic Transcoder encountered an unexpected exception while trying to fulfill the request.

" - } - ], - "documentation":"

The ReadJob operation returns detailed information about a job.

" - }, - "ReadPipeline":{ - "name":"ReadPipeline", - "http":{ - "method":"GET", - "requestUri":"/2012-09-25/pipelines/{Id}" - }, - "input":{ - "shape":"ReadPipelineRequest", - "documentation":"

The ReadPipelineRequest structure.

" - }, - "output":{ - "shape":"ReadPipelineResponse", - "documentation":"

The ReadPipelineResponse structure.

" - }, - "errors":[ - { - "shape":"ValidationException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

One or more required parameter values were not provided in the request.

" - }, - { - "shape":"IncompatibleVersionException", - "error":{"httpStatusCode":400}, - "exception":true - }, - { - "shape":"ResourceNotFoundException", - "error":{"httpStatusCode":404}, - "exception":true, - "documentation":"

The requested resource does not exist or is not available. For example, the pipeline to which you're trying to add a job doesn't exist or is still being created.

" - }, - { - "shape":"AccessDeniedException", - "error":{"httpStatusCode":403}, - "exception":true, - "documentation":"

General authentication failure. The request was not signed correctly.

" - }, - { - "shape":"InternalServiceException", - "exception":true, - "fault":true, - "documentation":"

Elastic Transcoder encountered an unexpected exception while trying to fulfill the request.

" - } - ], - "documentation":"

The ReadPipeline operation gets detailed information about a pipeline.

" - }, - "ReadPreset":{ - "name":"ReadPreset", - "http":{ - "method":"GET", - "requestUri":"/2012-09-25/presets/{Id}" - }, - "input":{ - "shape":"ReadPresetRequest", - "documentation":"

The ReadPresetRequest structure.

" - }, - "output":{ - "shape":"ReadPresetResponse", - "documentation":"

The ReadPresetResponse structure.

" - }, - "errors":[ - { - "shape":"ValidationException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

One or more required parameter values were not provided in the request.

" - }, - { - "shape":"IncompatibleVersionException", - "error":{"httpStatusCode":400}, - "exception":true - }, - { - "shape":"ResourceNotFoundException", - "error":{"httpStatusCode":404}, - "exception":true, - "documentation":"

The requested resource does not exist or is not available. For example, the pipeline to which you're trying to add a job doesn't exist or is still being created.

" - }, - { - "shape":"AccessDeniedException", - "error":{"httpStatusCode":403}, - "exception":true, - "documentation":"

General authentication failure. The request was not signed correctly.

" - }, - { - "shape":"InternalServiceException", - "exception":true, - "fault":true, - "documentation":"

Elastic Transcoder encountered an unexpected exception while trying to fulfill the request.

" - } - ], - "documentation":"

The ReadPreset operation gets detailed information about a preset.

" - }, - "TestRole":{ - "name":"TestRole", - "http":{ - "method":"POST", - "requestUri":"/2012-09-25/roleTests", - "responseCode":200 - }, - "input":{ - "shape":"TestRoleRequest", - "documentation":"

The TestRoleRequest structure.

" - }, - "output":{ - "shape":"TestRoleResponse", - "documentation":"

The TestRoleResponse structure.

" - }, - "errors":[ - { - "shape":"ValidationException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

One or more required parameter values were not provided in the request.

" - }, - { - "shape":"IncompatibleVersionException", - "error":{"httpStatusCode":400}, - "exception":true - }, - { - "shape":"ResourceNotFoundException", - "error":{"httpStatusCode":404}, - "exception":true, - "documentation":"

The requested resource does not exist or is not available. For example, the pipeline to which you're trying to add a job doesn't exist or is still being created.

" - }, - { - "shape":"AccessDeniedException", - "error":{"httpStatusCode":403}, - "exception":true, - "documentation":"

General authentication failure. The request was not signed correctly.

" - }, - { - "shape":"InternalServiceException", - "exception":true, - "fault":true, - "documentation":"

Elastic Transcoder encountered an unexpected exception while trying to fulfill the request.

" - } - ], - "documentation":"

The TestRole operation tests the IAM role used to create the pipeline.

The TestRole action lets you determine whether the IAM role you are using has sufficient permissions to let Elastic Transcoder perform tasks associated with the transcoding process. The action attempts to assume the specified IAM role, checks read access to the input and output buckets, and tries to send a test notification to Amazon SNS topics that you specify.

" - }, - "UpdatePipeline":{ - "name":"UpdatePipeline", - "http":{ - "method":"PUT", - "requestUri":"/2012-09-25/pipelines/{Id}", - "responseCode":200 - }, - "input":{ - "shape":"UpdatePipelineRequest", - "documentation":"

The UpdatePipelineRequest structure.

" - }, - "output":{ - "shape":"UpdatePipelineResponse", - "documentation":"

When you update a pipeline, Elastic Transcoder returns the values that you specified in the request.

" - }, - "errors":[ - { - "shape":"ValidationException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

One or more required parameter values were not provided in the request.

" - }, - { - "shape":"IncompatibleVersionException", - "error":{"httpStatusCode":400}, - "exception":true - }, - { - "shape":"AccessDeniedException", - "error":{"httpStatusCode":403}, - "exception":true, - "documentation":"

General authentication failure. The request was not signed correctly.

" - }, - { - "shape":"ResourceInUseException", - "error":{"httpStatusCode":409}, - "exception":true, - "documentation":"

The resource you are attempting to change is in use. For example, you are attempting to delete a pipeline that is currently in use.

" - }, - { - "shape":"ResourceNotFoundException", - "error":{"httpStatusCode":404}, - "exception":true, - "documentation":"

The requested resource does not exist or is not available. For example, the pipeline to which you're trying to add a job doesn't exist or is still being created.

" - }, - { - "shape":"InternalServiceException", - "exception":true, - "fault":true, - "documentation":"

Elastic Transcoder encountered an unexpected exception while trying to fulfill the request.

" - } - ], - "documentation":"

Use the UpdatePipeline operation to update settings for a pipeline. When you change pipeline settings, your changes take effect immediately. Jobs that you have already submitted and that Elastic Transcoder has not started to process are affected in addition to jobs that you submit after you change settings.

" - }, - "UpdatePipelineNotifications":{ - "name":"UpdatePipelineNotifications", - "http":{ - "method":"POST", - "requestUri":"/2012-09-25/pipelines/{Id}/notifications" - }, - "input":{ - "shape":"UpdatePipelineNotificationsRequest", - "documentation":"

The UpdatePipelineNotificationsRequest structure.

" - }, - "output":{ - "shape":"UpdatePipelineNotificationsResponse", - "documentation":"

The UpdatePipelineNotificationsResponse structure.

" - }, - "errors":[ - { - "shape":"ValidationException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

One or more required parameter values were not provided in the request.

" - }, - { - "shape":"IncompatibleVersionException", - "error":{"httpStatusCode":400}, - "exception":true - }, - { - "shape":"ResourceNotFoundException", - "error":{"httpStatusCode":404}, - "exception":true, - "documentation":"

The requested resource does not exist or is not available. For example, the pipeline to which you're trying to add a job doesn't exist or is still being created.

" - }, - { - "shape":"ResourceInUseException", - "error":{"httpStatusCode":409}, - "exception":true, - "documentation":"

The resource you are attempting to change is in use. For example, you are attempting to delete a pipeline that is currently in use.

" - }, - { - "shape":"AccessDeniedException", - "error":{"httpStatusCode":403}, - "exception":true, - "documentation":"

General authentication failure. The request was not signed correctly.

" - }, - { - "shape":"InternalServiceException", - "exception":true, - "fault":true, - "documentation":"

Elastic Transcoder encountered an unexpected exception while trying to fulfill the request.

" - } - ], - "documentation":"

With the UpdatePipelineNotifications operation, you can update Amazon Simple Notification Service (Amazon SNS) notifications for a pipeline.

When you update notifications for a pipeline, Elastic Transcoder returns the values that you specified in the request.

" - }, - "UpdatePipelineStatus":{ - "name":"UpdatePipelineStatus", - "http":{ - "method":"POST", - "requestUri":"/2012-09-25/pipelines/{Id}/status" - }, - "input":{ - "shape":"UpdatePipelineStatusRequest", - "documentation":"

The UpdatePipelineStatusRequest structure.

" - }, - "output":{ - "shape":"UpdatePipelineStatusResponse", - "documentation":"When you update status for a pipeline, Elastic Transcoder returns the values that you specified in the request." - }, - "errors":[ - { - "shape":"ValidationException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

One or more required parameter values were not provided in the request.

" - }, - { - "shape":"IncompatibleVersionException", - "error":{"httpStatusCode":400}, - "exception":true - }, - { - "shape":"ResourceNotFoundException", - "error":{"httpStatusCode":404}, - "exception":true, - "documentation":"

The requested resource does not exist or is not available. For example, the pipeline to which you're trying to add a job doesn't exist or is still being created.

" - }, - { - "shape":"ResourceInUseException", - "error":{"httpStatusCode":409}, - "exception":true, - "documentation":"

The resource you are attempting to change is in use. For example, you are attempting to delete a pipeline that is currently in use.

" - }, - { - "shape":"AccessDeniedException", - "error":{"httpStatusCode":403}, - "exception":true, - "documentation":"

General authentication failure. The request was not signed correctly.

" - }, - { - "shape":"InternalServiceException", - "exception":true, - "fault":true, - "documentation":"

Elastic Transcoder encountered an unexpected exception while trying to fulfill the request.

" - } - ], - "documentation":"

The UpdatePipelineStatus operation pauses or reactivates a pipeline, so that the pipeline stops or restarts the processing of jobs.

Changing the pipeline status is useful if you want to cancel one or more jobs. You can't cancel jobs after Elastic Transcoder has started processing them; if you pause the pipeline to which you submitted the jobs, you have more time to get the job IDs for the jobs that you want to cancel, and to send a CancelJob request.

" - } - }, - "shapes":{ - "AccessControl":{ - "type":"string", - "pattern":"(^FullControl$)|(^Read$)|(^ReadAcp$)|(^WriteAcp$)" - }, - "AccessControls":{ - "type":"list", - "member":{"shape":"AccessControl"}, - "max":30 - }, - "AccessDeniedException":{ - "type":"structure", - "members":{ - }, - "error":{"httpStatusCode":403}, - "exception":true, - "documentation":"

General authentication failure. The request was not signed correctly.

" - }, - "Artwork":{ - "type":"structure", - "members":{ - "InputKey":{ - "shape":"WatermarkKey", - "documentation":"

The name of the file to be used as album art. To determine which Amazon S3 bucket contains the specified file, Elastic Transcoder checks the pipeline specified by PipelineId; the InputBucket object in that pipeline identifies the bucket.

If the file name includes a prefix, for example, cooking/pie.jpg, include the prefix in the key. If the file isn't in the specified bucket, Elastic Transcoder returns an error.

" - }, - "MaxWidth":{ - "shape":"DigitsOrAuto", - "documentation":"

The maximum width of the output album art in pixels. If you specify auto, Elastic Transcoder uses 600 as the default value. If you specify a numeric value, enter an even integer between 32 and 4096, inclusive.

" - }, - "MaxHeight":{ - "shape":"DigitsOrAuto", - "documentation":"

The maximum height of the output album art in pixels. If you specify auto, Elastic Transcoder uses 600 as the default value. If you specify a numeric value, enter an even integer between 32 and 3072, inclusive.

" - }, - "SizingPolicy":{ - "shape":"SizingPolicy", - "documentation":"

Specify one of the following values to control scaling of the output album art:

" - }, - "PaddingPolicy":{ - "shape":"PaddingPolicy", - "documentation":"

When you set PaddingPolicy to Pad, Elastic Transcoder may add white bars to the top and bottom and/or left and right sides of the output album art to make the total size of the output art match the values that you specified for MaxWidth and MaxHeight.

" - }, - "AlbumArtFormat":{ - "shape":"JpgOrPng", - "documentation":"

The format of album art, if any. Valid formats are .jpg and .png.

" - }, - "Encryption":{ - "shape":"Encryption", - "documentation":"

The encryption settings, if any, that you want Elastic Transcoder to apply to your artwork.

" - } - }, - "documentation":"

The file to be used as album art. There can be multiple artworks associated with an audio file, to a maximum of 20.

To remove artwork or leave the artwork empty, you can either set Artwork to null, or set the Merge Policy to \"Replace\" and use an empty Artwork array.

To pass through existing artwork unchanged, set the Merge Policy to \"Prepend\", \"Append\", or \"Fallback\", and use an empty Artwork array.

" - }, - "Artworks":{ - "type":"list", - "member":{"shape":"Artwork"} - }, - "Ascending":{ - "type":"string", - "pattern":"(^true$)|(^false$)" - }, - "AspectRatio":{ - "type":"string", - "pattern":"(^auto$)|(^1:1$)|(^4:3$)|(^3:2$)|(^16:9$)" - }, - "AudioBitRate":{ - "type":"string", - "pattern":"^\\d{1,3}$" - }, - "AudioChannels":{ - "type":"string", - "pattern":"(^auto$)|(^0$)|(^1$)|(^2$)" - }, - "AudioCodec":{ - "type":"string", - "pattern":"(^AAC$)|(^vorbis$)|(^mp3$)" - }, - "AudioCodecOptions":{ - "type":"structure", - "members":{ - "Profile":{ - "shape":"AudioCodecProfile", - "documentation":"

You can only choose an audio profile when you specify AAC for the value of Audio:Codec.

Specify the AAC profile for the output file. Elastic Transcoder supports the following profiles:

All outputs in a Smooth playlist must have the same value for Profile.

If you created any presets before AAC profiles were added, Elastic Transcoder automatically updated your presets to use AAC-LC. You can change the value as required.

" - } - }, - "documentation":"

Options associated with your audio codec.

" - }, - "AudioCodecProfile":{ - "type":"string", - "pattern":"(^auto$)|(^AAC-LC$)|(^HE-AAC$)|(^HE-AACv2$)" - }, - "AudioParameters":{ - "type":"structure", - "members":{ - "Codec":{ - "shape":"AudioCodec", - "documentation":"

The audio codec for the output file. Valid values include aac, mp3, and vorbis.

" - }, - "SampleRate":{ - "shape":"AudioSampleRate", - "documentation":"

The sample rate of the audio stream in the output file, in Hertz. Valid values include:

auto, 22050, 32000, 44100, 48000, 96000

If you specify auto, Elastic Transcoder automatically detects the sample rate.

" - }, - "BitRate":{ - "shape":"AudioBitRate", - "documentation":"

The bit rate of the audio stream in the output file, in kilobits/second. Enter an integer between 64 and 320, inclusive.

" - }, - "Channels":{ - "shape":"AudioChannels", - "documentation":"

The number of audio channels in the output file. Valid values include:

auto, 0, 1, 2

If you specify auto, Elastic Transcoder automatically detects the number of channels in the input file.

" - }, - "CodecOptions":{ - "shape":"AudioCodecOptions", - "documentation":"

If you specified AAC for Audio:Codec, this is the AAC compression profile to use. Valid values include:

auto, AAC-LC, HE-AAC, HE-AACv2

If you specify auto, Elastic Transcoder chooses a profile based on the bit rate of the output file.

" - } - }, - "documentation":"

Parameters required for transcoding audio.

" - }, - "AudioSampleRate":{ - "type":"string", - "pattern":"(^auto$)|(^22050$)|(^32000$)|(^44100$)|(^48000$)|(^96000$)" - }, - "Base64EncodedString":{ - "type":"string", - "pattern":"^$|(^(?:[A-Za-z0-9\\+/]{4})*(?:[A-Za-z0-9\\+/]{2}==|[A-Za-z0-9\\+/]{3}=)?$)" - }, - "BucketName":{ - "type":"string", - "pattern":"^(\\w|\\.|-){1,255}$" - }, - "CancelJobRequest":{ - "type":"structure", - "required":["Id"], - "members":{ - "Id":{ - "shape":"Id", - "location":"uri", - "locationName":"Id", - "documentation":"

The identifier of the job that you want to cancel.

To get a list of the jobs (including their jobId) that have a status of Submitted, use the ListJobsByStatus API action.

" - } - }, - "documentation":"

The CancelJobRequest structure.

" - }, - "CancelJobResponse":{ - "type":"structure", - "members":{ - }, - "documentation":"

The response body contains a JSON object. If the job is successfully canceled, the value of Success is true.

" - }, - "CaptionFormat":{ - "type":"structure", - "members":{ - "Format":{ - "shape":"CaptionFormatFormat", - "documentation":"

The format you specify determines whether Elastic Transcoder generates an embedded or sidecar caption for this output.

" - }, - "Pattern":{ - "shape":"CaptionFormatPattern", - "documentation":"

The prefix for caption filenames, in the form description-{language}, where:

If you don't include {language} in the file name pattern, Elastic Transcoder automatically appends \"{language}\" to the value that you specify for the description. In addition, Elastic Transcoder automatically appends the count to the end of the segment files.

For example, suppose you're transcoding into srt format. When you enter \"Sydney-{language}-sunrise\", and the language of the captions is English (en), the name of the first caption file will be Sydney-en-sunrise00000.srt.

" - }, - "Encryption":{ - "shape":"Encryption", - "documentation":"

The encryption settings, if any, that you want Elastic Transcoder to apply to your caption formats.

" - } - }, - "documentation":"

The file format of the output captions. If you leave this value blank, Elastic Transcoder returns an error.

" - }, - "CaptionFormatFormat":{ - "type":"string", - "pattern":"(^mov-text$)|(^srt$)|(^scc$)|(^webvtt$)|(^dfxp$)" - }, - "CaptionFormatPattern":{ - "type":"string", - "pattern":"(^$)|(^.*\\{language\\}.*$)" - }, - "CaptionFormats":{ - "type":"list", - "member":{"shape":"CaptionFormat"}, - "max":4 - }, - "CaptionMergePolicy":{ - "type":"string", - "pattern":"(^MergeOverride$)|(^MergeRetain$)|(^Override$)" - }, - "CaptionSource":{ - "type":"structure", - "members":{ - "Key":{ - "shape":"Key", - "documentation":"

The name of the sidecar caption file that you want Elastic Transcoder to include in the output file.

" - }, - "Language":{ - "shape":"Key", - "documentation":"

A string that specifies the language of the caption. Specify this as one of:

For more information on ISO language codes and language names, see the List of ISO 639-1 codes.

" - }, - "TimeOffset":{ - "shape":"TimeOffset", - "documentation":"

For clip generation or captions that do not start at the same time as the associated video file, the TimeOffset tells Elastic Transcoder how much of the video to encode before including captions.

Specify the TimeOffset in the form [+-]SS.sss or [+-]HH:mm:SS.ss.

" - }, - "Label":{ - "shape":"Name", - "documentation":"

The label of the caption shown in the player when choosing a language. We recommend that you put the caption language name here, in the language of the captions.

" - }, - "Encryption":{ - "shape":"Encryption", - "documentation":"

The encryption settings, if any, that you want Elastic Transcoder to apply to your caption sources.

" - } - }, - "documentation":"

A source file for the input sidecar captions used during the transcoding process.

" - }, - "CaptionSources":{ - "type":"list", - "member":{"shape":"CaptionSource"}, - "max":20 - }, - "Captions":{ - "type":"structure", - "members":{ - "MergePolicy":{ - "shape":"CaptionMergePolicy", - "documentation":"

A policy that determines how Elastic Transcoder handles the existence of multiple captions.

MergePolicy cannot be null.

" - }, - "CaptionSources":{ - "shape":"CaptionSources", - "documentation":"

Source files for the input sidecar captions used during the transcoding process. To omit all sidecar captions, leave CaptionSources blank.

" - }, - "CaptionFormats":{ - "shape":"CaptionFormats", - "documentation":"

The array of file formats for the output captions. If you leave this value blank, Elastic Transcoder returns an error.

" - } - }, - "documentation":"

The captions to be created, if any.

" - }, - "Clip":{ - "type":"structure", - "members":{ - "TimeSpan":{ - "shape":"TimeSpan", - "documentation":"

Settings that determine when a clip begins and how long it lasts.

" - } - }, - "documentation":"

Settings for one clip in a composition. All jobs in a playlist must have the same clip settings.

" - }, - "CodecOption":{ - "type":"string", - "min":1, - "max":255 - }, - "CodecOptions":{ - "type":"map", - "key":{"shape":"CodecOption"}, - "value":{"shape":"CodecOption"}, - "max":30 - }, - "Composition":{ - "type":"list", - "member":{"shape":"Clip"} - }, - "CreateJobOutput":{ - "type":"structure", - "members":{ - "Key":{ - "shape":"Key", - "documentation":"

The name to assign to the transcoded file. Elastic Transcoder saves the file in the Amazon S3 bucket specified by the OutputBucket object in the pipeline that is specified by the pipeline ID. If a file with the specified name already exists in the output bucket, the job fails.

" - }, - "ThumbnailPattern":{ - "shape":"ThumbnailPattern", - "documentation":"

Whether you want Elastic Transcoder to create thumbnails for your videos and, if so, how you want Elastic Transcoder to name the files.

If you don't want Elastic Transcoder to create thumbnails, specify \"\".

If you do want Elastic Transcoder to create thumbnails, specify the information that you want to include in the file name for each thumbnail. You can specify the following values in any sequence:

When creating thumbnails, Elastic Transcoder automatically saves the files in the format (.jpg or .png) that appears in the preset that you specified in the PresetID value of CreateJobOutput. Elastic Transcoder also appends the applicable file name extension.

" - }, - "ThumbnailEncryption":{ - "shape":"Encryption", - "documentation":"

The encryption settings, if any, that you want Elastic Transcoder to apply to your thumbnail.

" - }, - "Rotate":{ - "shape":"Rotate", - "documentation":"

The number of degrees clockwise by which you want Elastic Transcoder to rotate the output relative to the input. Enter one of the following values: auto, 0, 90, 180, 270. The value auto generally works only if the file that you're transcoding contains rotation metadata.

" - }, - "PresetId":{ - "shape":"Id", - "documentation":"

The Id of the preset to use for this job. The preset determines the audio, video, and thumbnail settings that Elastic Transcoder uses for transcoding.

" - }, - "SegmentDuration":{ - "shape":"Float", - "documentation":"

(Outputs in Fragmented MP4 or MPEG-TS format only.If you specify a preset in PresetId for which the value of Container is fmp4 (Fragmented MP4) or ts (MPEG-TS), SegmentDuration is the target maximum duration of each segment in seconds. For HLSv3 format playlists, each media segment is stored in a separate .ts file. For HLSv4 and Smooth playlists, all media segments for an output are stored in a single file. Each segment is approximately the length of the SegmentDuration, though individual segments might be shorter or longer.

The range of valid values is 1 to 60 seconds. If the duration of the video is not evenly divisible by SegmentDuration, the duration of the last segment is the remainder of total length/SegmentDuration.

Elastic Transcoder creates an output-specific playlist for each output HLS output that you specify in OutputKeys. To add an output to the master playlist for this job, include it in the OutputKeys of the associated playlist.

" - }, - "Watermarks":{ - "shape":"JobWatermarks", - "documentation":"

Information about the watermarks that you want Elastic Transcoder to add to the video during transcoding. You can specify up to four watermarks for each output. Settings for each watermark must be defined in the preset for the current output.

" - }, - "AlbumArt":{ - "shape":"JobAlbumArt", - "documentation":"

Information about the album art that you want Elastic Transcoder to add to the file during transcoding. You can specify up to twenty album artworks for each output. Settings for each artwork must be defined in the job for the current output.

" - }, - "Composition":{ - "shape":"Composition", - "documentation":"

You can create an output file that contains an excerpt from the input file. This excerpt, called a clip, can come from the beginning, middle, or end of the file. The Composition object contains settings for the clips that make up an output file. For the current release, you can only specify settings for a single clip per output file. The Composition object cannot be null.

" - }, - "Captions":{ - "shape":"Captions", - "documentation":"

You can configure Elastic Transcoder to transcode captions, or subtitles, from one format to another. All captions must be in UTF-8. Elastic Transcoder supports two types of captions:

If you want ttml or smpte-tt compatible captions, specify dfxp as your output format.

Elastic Transcoder does not support OCR (Optical Character Recognition), does not accept pictures as a valid input for captions, and is not available for audio-only transcoding. Elastic Transcoder does not preserve text formatting (for example, italics) during the transcoding process.

To remove captions or leave the captions empty, set Captions to null. To pass through existing captions unchanged, set the MergePolicy to MergeRetain, and pass in a null CaptionSources array.

For more information on embedded files, see the Subtitles Wikipedia page.

For more information on sidecar files, see the Extensible Metadata Platform and Sidecar file Wikipedia pages.

" - }, - "Encryption":{ - "shape":"Encryption", - "documentation":"

You can specify encryption settings for any output files that you want to use for a transcoding job. This includes the output file and any watermarks, thumbnails, album art, or captions that you want to use. You must specify encryption settings for each file individually.

" - } - }, - "documentation":"

The CreateJobOutput structure.

" - }, - "CreateJobOutputs":{ - "type":"list", - "member":{"shape":"CreateJobOutput"}, - "max":30 - }, - "CreateJobPlaylist":{ - "type":"structure", - "members":{ - "Name":{ - "shape":"Filename", - "documentation":"

The name that you want Elastic Transcoder to assign to the master playlist, for example, nyc-vacation.m3u8. If the name includes a / character, the section of the name before the last / must be identical for all Name objects. If you create more than one master playlist, the values of all Name objects must be unique.

Note: Elastic Transcoder automatically appends the relevant file extension to the file name (.m3u8 for HLSv3 and HLSv4 playlists, and .ism and .ismc for Smooth playlists). If you include a file extension in Name, the file name will have two extensions.

" - }, - "Format":{ - "shape":"PlaylistFormat", - "documentation":"

The format of the output playlist. Valid formats include HLSv3, HLSv4, and Smooth.

" - }, - "OutputKeys":{ - "shape":"OutputKeys", - "documentation":"

For each output in this job that you want to include in a master playlist, the value of the Outputs:Key object.

Elastic Transcoder automatically appends the relevant file extension to the file name. If you include a file extension in Output Key, the file name will have two extensions.

If you include more than one output in a playlist, any segment duration settings, clip settings, or caption settings must be the same for all outputs in the playlist. For Smooth playlists, the Audio:Profile, Video:Profile, and Video:FrameRate to Video:KeyframesMaxDist ratio must be the same for all outputs.

" - }, - "HlsContentProtection":{ - "shape":"HlsContentProtection", - "documentation":"

The HLS content protection settings, if any, that you want Elastic Transcoder to apply to the output files associated with this playlist.

" - } - }, - "documentation":"

Information about the master playlist.

" - }, - "CreateJobPlaylists":{ - "type":"list", - "member":{"shape":"CreateJobPlaylist"}, - "max":30 - }, - "CreateJobRequest":{ - "type":"structure", - "required":[ - "PipelineId", - "Input" - ], - "members":{ - "PipelineId":{ - "shape":"Id", - "documentation":"

The Id of the pipeline that you want Elastic Transcoder to use for transcoding. The pipeline determines several settings, including the Amazon S3 bucket from which Elastic Transcoder gets the files to transcode and the bucket into which Elastic Transcoder puts the transcoded files.

" - }, - "Input":{ - "shape":"JobInput", - "documentation":"

A section of the request body that provides information about the file that is being transcoded.

" - }, - "Output":{"shape":"CreateJobOutput"}, - "Outputs":{ - "shape":"CreateJobOutputs", - "documentation":"

A section of the request body that provides information about the transcoded (target) files. We recommend that you use the Outputs syntax instead of the Output syntax.

" - }, - "OutputKeyPrefix":{ - "shape":"Key", - "documentation":"

The value, if any, that you want Elastic Transcoder to prepend to the names of all files that this job creates, including output files, thumbnails, and playlists.

" - }, - "Playlists":{ - "shape":"CreateJobPlaylists", - "documentation":"

If you specify a preset in PresetId for which the value of Container is fmp4 (Fragmented MP4) or ts (MPEG-TS), Playlists contains information about the master playlists that you want Elastic Transcoder to create.

The maximum number of master playlists in a job is 30.

" - }, - "UserMetadata":{ - "shape":"UserMetadata", - "documentation":"

User-defined metadata that you want to associate with an Elastic Transcoder job. You specify metadata in key/value pairs, and you can add up to 10 key/value pairs per job. Elastic Transcoder does not guarantee that key/value pairs will be returned in the same order in which you specify them.

" - } - }, - "documentation":"

The CreateJobRequest structure.

" - }, - "CreateJobResponse":{ - "type":"structure", - "members":{ - "Job":{ - "shape":"Job", - "documentation":"

A section of the response body that provides information about the job that is created.

" - } - }, - "documentation":"

The CreateJobResponse structure.

" - }, - "CreatePipelineRequest":{ - "type":"structure", - "required":[ - "Name", - "InputBucket", - "Role" - ], - "members":{ - "Name":{ - "shape":"Name", - "documentation":"

The name of the pipeline. We recommend that the name be unique within the AWS account, but uniqueness is not enforced.

Constraints: Maximum 40 characters.

" - }, - "InputBucket":{ - "shape":"BucketName", - "documentation":"

The Amazon S3 bucket in which you saved the media files that you want to transcode.

" - }, - "OutputBucket":{ - "shape":"BucketName", - "documentation":"

The Amazon S3 bucket in which you want Elastic Transcoder to save the transcoded files. (Use this, or use ContentConfig:Bucket plus ThumbnailConfig:Bucket.)

Specify this value when all of the following are true:

If you want to save transcoded files and playlists in one bucket and thumbnails in another bucket, specify which users can access the transcoded files or the permissions the users have, or change the Amazon S3 storage class, omit OutputBucket and specify values for ContentConfig and ThumbnailConfig instead.

" - }, - "Role":{ - "shape":"Role", - "documentation":"

The IAM Amazon Resource Name (ARN) for the role that you want Elastic Transcoder to use to create the pipeline.

" - }, - "AwsKmsKeyArn":{ - "shape":"KeyArn", - "documentation":"

The AWS Key Management Service (AWS KMS) key that you want to use with this pipeline.

If you use either S3 or S3-AWS-KMS as your Encryption:Mode, you don't need to provide a key with your job because a default key, known as an AWS-KMS key, is created for you automatically. You need to provide an AWS-KMS key only if you want to use a non-default AWS-KMS key, or if you are using an Encryption:Mode of AES-PKCS7, AES-CTR, or AES-GCM.

" - }, - "Notifications":{ - "shape":"Notifications", - "documentation":"

The Amazon Simple Notification Service (Amazon SNS) topic that you want to notify to report job status.

To receive notifications, you must also subscribe to the new topic in the Amazon SNS console. " - }, - "ContentConfig":{ - "shape":"PipelineOutputConfig", - "documentation":"

The optional ContentConfig object specifies information about the Amazon S3 bucket in which you want Elastic Transcoder to save transcoded files and playlists: which bucket to use, which users you want to have access to the files, the type of access you want users to have, and the storage class that you want to assign to the files.

If you specify values for ContentConfig, you must also specify values for ThumbnailConfig.

If you specify values for ContentConfig and ThumbnailConfig, omit the OutputBucket object.

" - }, - "ThumbnailConfig":{ - "shape":"PipelineOutputConfig", - "documentation":"

The ThumbnailConfig object specifies several values, including the Amazon S3 bucket in which you want Elastic Transcoder to save thumbnail files, which users you want to have access to the files, the type of access you want users to have, and the storage class that you want to assign to the files.

If you specify values for ContentConfig, you must also specify values for ThumbnailConfig even if you don't want to create thumbnails.

If you specify values for ContentConfig and ThumbnailConfig, omit the OutputBucket object.

" - } - }, - "documentation":"

The CreatePipelineRequest structure.

" - }, - "CreatePipelineResponse":{ - "type":"structure", - "members":{ - "Pipeline":{ - "shape":"Pipeline", - "documentation":"

A section of the response body that provides information about the pipeline that is created.

" - } - }, - "documentation":"

When you create a pipeline, Elastic Transcoder returns the values that you specified in the request.

" - }, - "CreatePresetRequest":{ - "type":"structure", - "required":[ - "Name", - "Container" - ], - "members":{ - "Name":{ - "shape":"Name", - "documentation":"

The name of the preset. We recommend that the name be unique within the AWS account, but uniqueness is not enforced.

" - }, - "Description":{ - "shape":"Description", - "documentation":"

A description of the preset.

" - }, - "Container":{ - "shape":"PresetContainer", - "documentation":"

The container type for the output file. Valid values include fmp4, mp3, mp4, ogg, ts, and webm.

" - }, - "Video":{ - "shape":"VideoParameters", - "documentation":"

A section of the request body that specifies the video parameters.

" - }, - "Audio":{ - "shape":"AudioParameters", - "documentation":"

A section of the request body that specifies the audio parameters.

" - }, - "Thumbnails":{ - "shape":"Thumbnails", - "documentation":"

A section of the request body that specifies the thumbnail parameters, if any.

" - } - }, - "documentation":"

The CreatePresetRequest structure.

" - }, - "CreatePresetResponse":{ - "type":"structure", - "members":{ - "Preset":{ - "shape":"Preset", - "documentation":"

A section of the response body that provides information about the preset that is created.

" - }, - "Warning":{ - "shape":"String", - "documentation":"

If the preset settings don't comply with the standards for the video codec but Elastic Transcoder created the preset, this message explains the reason the preset settings don't meet the standard. Elastic Transcoder created the preset because the settings might produce acceptable output.

" - } - }, - "documentation":"

The CreatePresetResponse structure.

" - }, - "DeletePipelineRequest":{ - "type":"structure", - "required":["Id"], - "members":{ - "Id":{ - "shape":"Id", - "location":"uri", - "locationName":"Id", - "documentation":"

The identifier of the pipeline that you want to delete.

" - } - }, - "documentation":"

The DeletePipelineRequest structure.

" - }, - "DeletePipelineResponse":{ - "type":"structure", - "members":{ - }, - "documentation":"

The DeletePipelineResponse structure.

" - }, - "DeletePresetRequest":{ - "type":"structure", - "required":["Id"], - "members":{ - "Id":{ - "shape":"Id", - "location":"uri", - "locationName":"Id", - "documentation":"

The identifier of the preset for which you want to get detailed information.

" - } - }, - "documentation":"

The DeletePresetRequest structure.

" - }, - "DeletePresetResponse":{ - "type":"structure", - "members":{ - }, - "documentation":"

The DeletePresetResponse structure.

" - }, - "Description":{ - "type":"string", - "min":0, - "max":255 - }, - "Digits":{ - "type":"string", - "pattern":"^\\d{1,5}$" - }, - "DigitsOrAuto":{ - "type":"string", - "pattern":"(^auto$)|(^\\d{2,4}$)" - }, - "Encryption":{ - "type":"structure", - "members":{ - "Mode":{ - "shape":"EncryptionMode", - "documentation":"

The specific server-side encryption mode that you want Elastic Transcoder to use when decrypting your input files or encrypting your output files. Elastic Transcoder supports the following options:

For all three AES options, you must provide the following settings, which must be base64-encoded:

For the AES modes, your private encryption keys and your unencrypted data are never stored by AWS; therefore, it is important that you safely manage your encryption keys. If you lose them, you won't be able to unencrypt your data.

" - }, - "Key":{ - "shape":"Base64EncodedString", - "documentation":"

The data encryption key that you want Elastic Transcoder to use to encrypt your output file, or that was used to encrypt your input file. The key must be base64-encoded and it must be one of the following bit lengths before being base64-encoded:

128, 192, or 256.

The key must also be encrypted by using the Amazon Key Management Service.

" - }, - "KeyMd5":{ - "shape":"Base64EncodedString", - "documentation":"

The MD5 digest of the key that you used to encrypt your input file, or that you want Elastic Transcoder to use to encrypt your output file. Elastic Transcoder uses the key digest as a checksum to make sure your key was not corrupted in transit. The key MD5 must be base64-encoded, and it must be exactly 16 bytes long before being base64-encoded.

" - }, - "InitializationVector":{ - "shape":"ZeroTo255String", - "documentation":"

The series of random bits created by a random bit generator, unique for every encryption operation, that you used to encrypt your input files or that you want Elastic Transcoder to use to encrypt your output files. The initialization vector must be base64-encoded, and it must be exactly 16 bytes long before being base64-encoded.

" - } - }, - "documentation":"

The encryption settings, if any, that are used for decrypting your input files or encrypting your output files. If your input file is encrypted, you must specify the mode that Elastic Transcoder will use to decrypt your file, otherwise you must specify the mode you want Elastic Transcoder to use to encrypt your output files.

" - }, - "EncryptionMode":{ - "type":"string", - "pattern":"(^s3$)|(^s3-aws-kms$)|(^aes-cbc-pkcs7$)|(^aes-ctr$)|(^aes-gcm$)" - }, - "ExceptionMessages":{ - "type":"list", - "member":{"shape":"String"} - }, - "Filename":{ - "type":"string", - "min":1, - "max":255 - }, - "FixedGOP":{ - "type":"string", - "pattern":"(^true$)|(^false$)" - }, - "Float":{ - "type":"string", - "pattern":"^\\d{1,5}(\\.\\d{0,5})?$" - }, - "FrameRate":{ - "type":"string", - "pattern":"(^auto$)|(^10$)|(^15$)|(^23.97$)|(^24$)|(^25$)|(^29.97$)|(^30$)|(^50$)|(^60$)" - }, - "Grantee":{ - "type":"string", - "min":1, - "max":255 - }, - "GranteeType":{ - "type":"string", - "pattern":"(^Canonical$)|(^Email$)|(^Group$)" - }, - "HlsContentProtection":{ - "type":"structure", - "members":{ - "Method":{ - "shape":"HlsContentProtectionMethod", - "documentation":"

The content protection method for your output. The only valid value is: aes-128.

This value will be written into the method attribute of the EXT-X-KEY metadata tag in the output playlist.

" - }, - "Key":{ - "shape":"Base64EncodedString", - "documentation":"

If you want Elastic Transcoder to generate a key for you, leave this field blank.

If you choose to supply your own key, you must encrypt the key by using AWS KMS. The key must be base64-encoded, and it must be one of the following bit lengths before being base64-encoded:

128, 192, or 256.

" - }, - "KeyMd5":{ - "shape":"Base64EncodedString", - "documentation":"

If Elastic Transcoder is generating your key for you, you must leave this field blank.

The MD5 digest of the key that you want Elastic Transcoder to use to encrypt your output file, and that you want Elastic Transcoder to use as a checksum to make sure your key was not corrupted in transit. The key MD5 must be base64-encoded, and it must be exactly 16 bytes before being base64- encoded.

" - }, - "InitializationVector":{ - "shape":"ZeroTo255String", - "documentation":"

If Elastic Transcoder is generating your key for you, you must leave this field blank.

The series of random bits created by a random bit generator, unique for every encryption operation, that you want Elastic Transcoder to use to encrypt your output files. The initialization vector must be base64-encoded, and it must be exactly 16 bytes before being base64-encoded.

" - }, - "LicenseAcquisitionUrl":{ - "shape":"ZeroTo512String", - "documentation":"

The location of the license key required to decrypt your HLS playlist. The URL must be an absolute path, and is referenced in the URI attribute of the EXT-X-KEY metadata tag in the playlist file.

" - }, - "KeyStoragePolicy":{ - "shape":"KeyStoragePolicy", - "documentation":"

Specify whether you want Elastic Transcoder to write your HLS license key to an Amazon S3 bucket. If you choose WithVariantPlaylists, LicenseAcquisitionUrl must be left blank and Elastic Transcoder writes your data key into the same bucket as the associated playlist.

" - } - }, - "documentation":"

The HLS content protection settings, if any, that you want Elastic Transcoder to apply to your output files.

" - }, - "HlsContentProtectionMethod":{ - "type":"string", - "pattern":"(^aes-128$)" - }, - "HorizontalAlign":{ - "type":"string", - "pattern":"(^Left$)|(^Right$)|(^Center$)" - }, - "Id":{ - "type":"string", - "pattern":"^\\d{13}-\\w{6}$" - }, - "IncompatibleVersionException":{ - "type":"structure", - "members":{ - }, - "error":{"httpStatusCode":400}, - "exception":true - }, - "Interlaced":{ - "type":"string", - "pattern":"(^auto$)|(^true$)|(^false$)" - }, - "InternalServiceException":{ - "type":"structure", - "members":{ - }, - "exception":true, - "fault":true, - "documentation":"

Elastic Transcoder encountered an unexpected exception while trying to fulfill the request.

" - }, - "Job":{ - "type":"structure", - "members":{ - "Id":{ - "shape":"Id", - "documentation":"

The identifier that Elastic Transcoder assigned to the job. You use this value to get settings for the job or to delete the job.

" - }, - "Arn":{ - "shape":"String", - "documentation":"

The Amazon Resource Name (ARN) for the job.

" - }, - "PipelineId":{ - "shape":"Id", - "documentation":"

The Id of the pipeline that you want Elastic Transcoder to use for transcoding. The pipeline determines several settings, including the Amazon S3 bucket from which Elastic Transcoder gets the files to transcode and the bucket into which Elastic Transcoder puts the transcoded files.

" - }, - "Input":{ - "shape":"JobInput", - "documentation":"

A section of the request or response body that provides information about the file that is being transcoded.

" - }, - "Output":{ - "shape":"JobOutput", - "documentation":"

If you specified one output for a job, information about that output. If you specified multiple outputs for a job, the Output object lists information about the first output. This duplicates the information that is listed for the first output in the Outputs object.

Outputs recommended instead. A section of the request or response body that provides information about the transcoded (target) file.

" - }, - "Outputs":{ - "shape":"JobOutputs", - "documentation":"

Information about the output files. We recommend that you use the Outputs syntax for all jobs, even when you want Elastic Transcoder to transcode a file into only one format. Do not use both the Outputs and Output syntaxes in the same request. You can create a maximum of 30 outputs per job.

If you specify more than one output for a job, Elastic Transcoder creates the files for each output in the order in which you specify them in the job.

" - }, - "OutputKeyPrefix":{ - "shape":"Key", - "documentation":"

The value, if any, that you want Elastic Transcoder to prepend to the names of all files that this job creates, including output files, thumbnails, and playlists. We recommend that you add a / or some other delimiter to the end of the OutputKeyPrefix.

" - }, - "Playlists":{ - "shape":"Playlists", - "documentation":"

Outputs in Fragmented MP4 or MPEG-TS format only.If you specify a preset in PresetId for which the value of Container is fmp4 (Fragmented MP4) or ts (MPEG-TS), Playlists contains information about the master playlists that you want Elastic Transcoder to create.

The maximum number of master playlists in a job is 30.

" - }, - "Status":{ - "shape":"JobStatus", - "documentation":"

The status of the job: Submitted, Progressing, Complete, Canceled, or Error.

" - }, - "UserMetadata":{ - "shape":"UserMetadata", - "documentation":"

User-defined metadata that you want to associate with an Elastic Transcoder job. You specify metadata in key/value pairs, and you can add up to 10 key/value pairs per job. Elastic Transcoder does not guarantee that key/value pairs will be returned in the same order in which you specify them.

Metadata keys and values must use characters from the following list:

" - } - }, - "documentation":"

A section of the response body that provides information about the job that is created.

" - }, - "JobAlbumArt":{ - "type":"structure", - "members":{ - "MergePolicy":{ - "shape":"MergePolicy", - "documentation":"

A policy that determines how Elastic Transcoder will handle the existence of multiple album artwork files.

" - }, - "Artwork":{ - "shape":"Artworks", - "documentation":"

The file to be used as album art. There can be multiple artworks associated with an audio file, to a maximum of 20. Valid formats are .jpg and .png

" - } - }, - "documentation":"

The .jpg or .png file associated with an audio file.

" - }, - "JobContainer":{ - "type":"string", - "pattern":"(^auto$)|(^3gp$)|(^asf$)|(^avi$)|(^divx$)|(^flv$)|(^mkv$)|(^mov$)|(^mp4$)|(^mpeg$)|(^mpeg-ps$)|(^mpeg-ts$)|(^mxf$)|(^ogg$)|(^ts$)|(^vob$)|(^wav$)|(^webm$)|(^mp3$)|(^m4a$)|(^aac$)" - }, - "JobInput":{ - "type":"structure", - "members":{ - "Key":{ - "shape":"Key", - "documentation":"

The name of the file to transcode. Elsewhere in the body of the JSON block is the the ID of the pipeline to use for processing the job. The InputBucket object in that pipeline tells Elastic Transcoder which Amazon S3 bucket to get the file from.

If the file name includes a prefix, such as cooking/lasagna.mpg, include the prefix in the key. If the file isn't in the specified bucket, Elastic Transcoder returns an error.

" - }, - "FrameRate":{ - "shape":"FrameRate", - "documentation":"

The frame rate of the input file. If you want Elastic Transcoder to automatically detect the frame rate of the input file, specify auto. If you want to specify the frame rate for the input file, enter one of the following values:

10, 15, 23.97, 24, 25, 29.97, 30, 60

If you specify a value other than auto, Elastic Transcoder disables automatic detection of the frame rate.

" - }, - "Resolution":{ - "shape":"Resolution", - "documentation":"

This value must be auto, which causes Elastic Transcoder to automatically detect the resolution of the input file.

" - }, - "AspectRatio":{ - "shape":"AspectRatio", - "documentation":"

The aspect ratio of the input file. If you want Elastic Transcoder to automatically detect the aspect ratio of the input file, specify auto. If you want to specify the aspect ratio for the output file, enter one of the following values:

1:1, 4:3, 3:2, 16:9

If you specify a value other than auto, Elastic Transcoder disables automatic detection of the aspect ratio.

" - }, - "Interlaced":{ - "shape":"Interlaced", - "documentation":"

Whether the input file is interlaced. If you want Elastic Transcoder to automatically detect whether the input file is interlaced, specify auto. If you want to specify whether the input file is interlaced, enter one of the following values:

true, false

If you specify a value other than auto, Elastic Transcoder disables automatic detection of interlacing.

" - }, - "Container":{ - "shape":"JobContainer", - "documentation":"

The container type for the input file. If you want Elastic Transcoder to automatically detect the container type of the input file, specify auto. If you want to specify the container type for the input file, enter one of the following values:

3gp, aac, asf, avi, divx, flv, m4a, mkv, mov, mp3, mp4, mpeg, mpeg-ps, mpeg-ts, mxf, ogg, vob, wav, webm

" - }, - "Encryption":{ - "shape":"Encryption", - "documentation":"

The encryption settings, if any, that are used for decrypting your input files. If your input file is encrypted, you must specify the mode that Elastic Transcoder will use to decrypt your file.

" - } - }, - "documentation":"

Information about the file that you're transcoding.

" - }, - "JobOutput":{ - "type":"structure", - "members":{ - "Id":{ - "shape":"String", - "documentation":"

A sequential counter, starting with 1, that identifies an output among the outputs from the current job. In the Output syntax, this value is always 1.

" - }, - "Key":{ - "shape":"Key", - "documentation":"

The name to assign to the transcoded file. Elastic Transcoder saves the file in the Amazon S3 bucket specified by the OutputBucket object in the pipeline that is specified by the pipeline ID.

" - }, - "ThumbnailPattern":{ - "shape":"ThumbnailPattern", - "documentation":"

Whether you want Elastic Transcoder to create thumbnails for your videos and, if so, how you want Elastic Transcoder to name the files.

If you don't want Elastic Transcoder to create thumbnails, specify \"\".

If you do want Elastic Transcoder to create thumbnails, specify the information that you want to include in the file name for each thumbnail. You can specify the following values in any sequence:

When creating thumbnails, Elastic Transcoder automatically saves the files in the format (.jpg or .png) that appears in the preset that you specified in the PresetID value of CreateJobOutput. Elastic Transcoder also appends the applicable file name extension.

" - }, - "ThumbnailEncryption":{ - "shape":"Encryption", - "documentation":"

The encryption settings, if any, that you want Elastic Transcoder to apply to your thumbnail.

" - }, - "Rotate":{ - "shape":"Rotate", - "documentation":"

The number of degrees clockwise by which you want Elastic Transcoder to rotate the output relative to the input. Enter one of the following values:

auto, 0, 90, 180, 270

The value auto generally works only if the file that you're transcoding contains rotation metadata.

" - }, - "PresetId":{ - "shape":"Id", - "documentation":"

The value of the Id object for the preset that you want to use for this job. The preset determines the audio, video, and thumbnail settings that Elastic Transcoder uses for transcoding. To use a preset that you created, specify the preset ID that Elastic Transcoder returned in the response when you created the preset. You can also use the Elastic Transcoder system presets, which you can get with ListPresets.

" - }, - "SegmentDuration":{ - "shape":"Float", - "documentation":"

(Outputs in Fragmented MP4 or MPEG-TS format only.If you specify a preset in PresetId for which the value of Container is fmp4 (Fragmented MP4) or ts (MPEG-TS), SegmentDuration is the target maximum duration of each segment in seconds. For HLSv3 format playlists, each media segment is stored in a separate .ts file. For HLSv4 and Smooth playlists, all media segments for an output are stored in a single file. Each segment is approximately the length of the SegmentDuration, though individual segments might be shorter or longer.

The range of valid values is 1 to 60 seconds. If the duration of the video is not evenly divisible by SegmentDuration, the duration of the last segment is the remainder of total length/SegmentDuration.

Elastic Transcoder creates an output-specific playlist for each output HLS output that you specify in OutputKeys. To add an output to the master playlist for this job, include it in the OutputKeys of the associated playlist.

" - }, - "Status":{ - "shape":"JobStatus", - "documentation":"

The status of one output in a job. If you specified only one output for the job, Outputs:Status is always the same as Job:Status. If you specified more than one output:

The value of Status is one of the following: Submitted, Progressing, Complete, Canceled, or Error.

" - }, - "StatusDetail":{ - "shape":"Description", - "documentation":"

Information that further explains Status.

" - }, - "Duration":{ - "shape":"NullableLong", - "documentation":"

Duration of the output file, in seconds.

" - }, - "Width":{ - "shape":"NullableInteger", - "documentation":"

Specifies the width of the output file in pixels.

" - }, - "Height":{ - "shape":"NullableInteger", - "documentation":"

Height of the output file, in pixels.

" - }, - "Watermarks":{ - "shape":"JobWatermarks", - "documentation":"

Information about the watermarks that you want Elastic Transcoder to add to the video during transcoding. You can specify up to four watermarks for each output. Settings for each watermark must be defined in the preset that you specify in Preset for the current output.

Watermarks are added to the output video in the sequence in which you list them in the job output—the first watermark in the list is added to the output video first, the second watermark in the list is added next, and so on. As a result, if the settings in a preset cause Elastic Transcoder to place all watermarks in the same location, the second watermark that you add will cover the first one, the third one will cover the second, and the fourth one will cover the third.

" - }, - "AlbumArt":{ - "shape":"JobAlbumArt", - "documentation":"

The album art to be associated with the output file, if any.

" - }, - "Composition":{ - "shape":"Composition", - "documentation":"

You can create an output file that contains an excerpt from the input file. This excerpt, called a clip, can come from the beginning, middle, or end of the file. The Composition object contains settings for the clips that make up an output file. For the current release, you can only specify settings for a single clip per output file. The Composition object cannot be null.

" - }, - "Captions":{ - "shape":"Captions", - "documentation":"

You can configure Elastic Transcoder to transcode captions, or subtitles, from one format to another. All captions must be in UTF-8. Elastic Transcoder supports two types of captions:

If you want ttml or smpte-tt compatible captions, specify dfxp as your output format.

Elastic Transcoder does not support OCR (Optical Character Recognition), does not accept pictures as a valid input for captions, and is not available for audio-only transcoding. Elastic Transcoder does not preserve text formatting (for example, italics) during the transcoding process.

To remove captions or leave the captions empty, set Captions to null. To pass through existing captions unchanged, set the MergePolicy to MergeRetain, and pass in a null CaptionSources array.

For more information on embedded files, see the Subtitles Wikipedia page.

For more information on sidecar files, see the Extensible Metadata Platform and Sidecar file Wikipedia pages.

" - }, - "Encryption":{ - "shape":"Encryption", - "documentation":"

The encryption settings, if any, that you want Elastic Transcoder to apply to your output files. If you choose to use encryption, you must specify a mode to use. If you choose not to use encryption, Elastic Transcoder will write an unencrypted file to your Amazon S3 bucket.

" - } - }, - "documentation":"

Outputs recommended instead.If you specified one output for a job, information about that output. If you specified multiple outputs for a job, the Output object lists information about the first output. This duplicates the information that is listed for the first output in the Outputs object.

" - }, - "JobOutputs":{ - "type":"list", - "member":{"shape":"JobOutput"} - }, - "JobStatus":{ - "type":"string", - "pattern":"(^Submitted$)|(^Progressing$)|(^Complete$)|(^Canceled$)|(^Error$)" - }, - "JobWatermark":{ - "type":"structure", - "members":{ - "PresetWatermarkId":{ - "shape":"PresetWatermarkId", - "documentation":"

The ID of the watermark settings that Elastic Transcoder uses to add watermarks to the video during transcoding. The settings are in the preset specified by Preset for the current output. In that preset, the value of Watermarks Id tells Elastic Transcoder which settings to use.

" - }, - "InputKey":{ - "shape":"WatermarkKey", - "documentation":"

The name of the .png or .jpg file that you want to use for the watermark. To determine which Amazon S3 bucket contains the specified file, Elastic Transcoder checks the pipeline specified by Pipeline; the Input Bucket object in that pipeline identifies the bucket.

If the file name includes a prefix, for example, logos/128x64.png, include the prefix in the key. If the file isn't in the specified bucket, Elastic Transcoder returns an error.

" - }, - "Encryption":{ - "shape":"Encryption", - "documentation":"

The encryption settings, if any, that you want Elastic Transcoder to apply to your watermarks.

" - } - }, - "documentation":"

Watermarks can be in .png or .jpg format. If you want to display a watermark that is not rectangular, use the .png format, which supports transparency.

" - }, - "JobWatermarks":{ - "type":"list", - "member":{"shape":"JobWatermark"} - }, - "Jobs":{ - "type":"list", - "member":{"shape":"Job"} - }, - "JpgOrPng":{ - "type":"string", - "pattern":"(^jpg$)|(^png$)" - }, - "Key":{ - "type":"string", - "min":1, - "max":255 - }, - "KeyArn":{ - "type":"string", - "min":0, - "max":255 - }, - "KeyStoragePolicy":{ - "type":"string", - "pattern":"(^NoStore$)|(^WithVariantPlaylists$)" - }, - "KeyframesMaxDist":{ - "type":"string", - "pattern":"^\\d{1,6}$" - }, - "LimitExceededException":{ - "type":"structure", - "members":{ - }, - "error":{"httpStatusCode":429}, - "exception":true, - "documentation":"

Too many operations for a given AWS account. For example, the number of pipelines exceeds the maximum allowed.

" - }, - "ListJobsByPipelineRequest":{ - "type":"structure", - "required":["PipelineId"], - "members":{ - "PipelineId":{ - "shape":"Id", - "location":"uri", - "locationName":"PipelineId", - "documentation":"

The ID of the pipeline for which you want to get job information.

" - }, - "Ascending":{ - "shape":"Ascending", - "location":"querystring", - "locationName":"Ascending", - "documentation":"

To list jobs in chronological order by the date and time that they were submitted, enter true. To list jobs in reverse chronological order, enter false.

" - }, - "PageToken":{ - "shape":"Id", - "location":"querystring", - "locationName":"PageToken", - "documentation":"

When Elastic Transcoder returns more than one page of results, use pageToken in subsequent GET requests to get each successive page of results.

" - } - }, - "documentation":"

The ListJobsByPipelineRequest structure.

" - }, - "ListJobsByPipelineResponse":{ - "type":"structure", - "members":{ - "Jobs":{ - "shape":"Jobs", - "documentation":"

An array of Job objects that are in the specified pipeline.

" - }, - "NextPageToken":{ - "shape":"Id", - "documentation":"

A value that you use to access the second and subsequent pages of results, if any. When the jobs in the specified pipeline fit on one page or when you've reached the last page of results, the value of NextPageToken is null.

" - } - }, - "documentation":"

The ListJobsByPipelineResponse structure.

" - }, - "ListJobsByStatusRequest":{ - "type":"structure", - "required":["Status"], - "members":{ - "Status":{ - "shape":"JobStatus", - "location":"uri", - "locationName":"Status", - "documentation":"

To get information about all of the jobs associated with the current AWS account that have a given status, specify the following status: Submitted, Progressing, Complete, Canceled, or Error.

" - }, - "Ascending":{ - "shape":"Ascending", - "location":"querystring", - "locationName":"Ascending", - "documentation":"

To list jobs in chronological order by the date and time that they were submitted, enter true. To list jobs in reverse chronological order, enter false.

" - }, - "PageToken":{ - "shape":"Id", - "location":"querystring", - "locationName":"PageToken", - "documentation":"

When Elastic Transcoder returns more than one page of results, use pageToken in subsequent GET requests to get each successive page of results.

" - } - }, - "documentation":"

The ListJobsByStatusRequest structure.

" - }, - "ListJobsByStatusResponse":{ - "type":"structure", - "members":{ - "Jobs":{ - "shape":"Jobs", - "documentation":"

An array of Job objects that have the specified status.

" - }, - "NextPageToken":{ - "shape":"Id", - "documentation":"

A value that you use to access the second and subsequent pages of results, if any. When the jobs in the specified pipeline fit on one page or when you've reached the last page of results, the value of NextPageToken is null.

" - } - }, - "documentation":"

The ListJobsByStatusResponse structure.

" - }, - "ListPipelinesRequest":{ - "type":"structure", - "members":{ - "Ascending":{ - "shape":"Ascending", - "location":"querystring", - "locationName":"Ascending", - "documentation":"

To list pipelines in chronological order by the date and time that they were created, enter true. To list pipelines in reverse chronological order, enter false.

" - }, - "PageToken":{ - "shape":"Id", - "location":"querystring", - "locationName":"PageToken", - "documentation":"

When Elastic Transcoder returns more than one page of results, use pageToken in subsequent GET requests to get each successive page of results.

" - } - }, - "documentation":"

The ListPipelineRequest structure.

" - }, - "ListPipelinesResponse":{ - "type":"structure", - "members":{ - "Pipelines":{ - "shape":"Pipelines", - "documentation":"

An array of Pipeline objects.

" - }, - "NextPageToken":{ - "shape":"Id", - "documentation":"

A value that you use to access the second and subsequent pages of results, if any. When the pipelines fit on one page or when you've reached the last page of results, the value of NextPageToken is null.

" - } - }, - "documentation":"

A list of the pipelines associated with the current AWS account.

" - }, - "ListPresetsRequest":{ - "type":"structure", - "members":{ - "Ascending":{ - "shape":"Ascending", - "location":"querystring", - "locationName":"Ascending", - "documentation":"

To list presets in chronological order by the date and time that they were created, enter true. To list presets in reverse chronological order, enter false.

" - }, - "PageToken":{ - "shape":"Id", - "location":"querystring", - "locationName":"PageToken", - "documentation":"

When Elastic Transcoder returns more than one page of results, use pageToken in subsequent GET requests to get each successive page of results.

" - } - }, - "documentation":"

The ListPresetsRequest structure.

" - }, - "ListPresetsResponse":{ - "type":"structure", - "members":{ - "Presets":{ - "shape":"Presets", - "documentation":"

An array of Preset objects.

" - }, - "NextPageToken":{ - "shape":"Id", - "documentation":"

A value that you use to access the second and subsequent pages of results, if any. When the presets fit on one page or when you've reached the last page of results, the value of NextPageToken is null.

" - } - }, - "documentation":"

The ListPresetsResponse structure.

" - }, - "MaxFrameRate":{ - "type":"string", - "pattern":"(^10$)|(^15$)|(^23.97$)|(^24$)|(^25$)|(^29.97$)|(^30$)|(^50$)|(^60$)" - }, - "MergePolicy":{ - "type":"string", - "pattern":"(^Replace$)|(^Prepend$)|(^Append$)|(^Fallback$)" - }, - "Name":{ - "type":"string", - "min":1, - "max":40 - }, - "Notifications":{ - "type":"structure", - "members":{ - "Progressing":{ - "shape":"SnsTopic", - "documentation":"

The Amazon Simple Notification Service (Amazon SNS) topic that you want to notify when Elastic Transcoder has started to process the job.

" - }, - "Completed":{ - "shape":"SnsTopic", - "documentation":"

The Amazon SNS topic that you want to notify when Elastic Transcoder has finished processing the job.

" - }, - "Warning":{ - "shape":"SnsTopic", - "documentation":"

The Amazon SNS topic that you want to notify when Elastic Transcoder encounters a warning condition.

" - }, - "Error":{ - "shape":"SnsTopic", - "documentation":"

The Amazon SNS topic that you want to notify when Elastic Transcoder encounters an error condition.

" - } - }, - "documentation":"

The Amazon Simple Notification Service (Amazon SNS) topic or topics to notify in order to report job status.

To receive notifications, you must also subscribe to the new topic in the Amazon SNS console." - }, - "NullableInteger":{"type":"integer"}, - "NullableLong":{"type":"long"}, - "Opacity":{ - "type":"string", - "pattern":"^\\d{1,3}(\\.\\d{0,20})?$" - }, - "OutputKeys":{ - "type":"list", - "member":{"shape":"Key"}, - "max":30 - }, - "PaddingPolicy":{ - "type":"string", - "pattern":"(^Pad$)|(^NoPad$)" - }, - "Permission":{ - "type":"structure", - "members":{ - "GranteeType":{ - "shape":"GranteeType", - "documentation":"

The type of value that appears in the Grantee object:

" - }, - "Grantee":{ - "shape":"Grantee", - "documentation":"

The AWS user or group that you want to have access to transcoded files and playlists. To identify the user or group, you can specify the canonical user ID for an AWS account, an origin access identity for a CloudFront distribution, the registered email address of an AWS account, or a predefined Amazon S3 group.

" - }, - "Access":{ - "shape":"AccessControls", - "documentation":"

The permission that you want to give to the AWS user that is listed in Grantee. Valid values include:

" - } - }, - "documentation":"

The Permission structure.

" - }, - "Permissions":{ - "type":"list", - "member":{"shape":"Permission"}, - "max":30 - }, - "Pipeline":{ - "type":"structure", - "members":{ - "Id":{ - "shape":"Id", - "documentation":"

The identifier for the pipeline. You use this value to identify the pipeline in which you want to perform a variety of operations, such as creating a job or a preset.

" - }, - "Arn":{ - "shape":"String", - "documentation":"

The Amazon Resource Name (ARN) for the pipeline.

" - }, - "Name":{ - "shape":"Name", - "documentation":"

The name of the pipeline. We recommend that the name be unique within the AWS account, but uniqueness is not enforced.

Constraints: Maximum 40 characters

" - }, - "Status":{ - "shape":"PipelineStatus", - "documentation":"

The current status of the pipeline:

" - }, - "InputBucket":{ - "shape":"BucketName", - "documentation":"

The Amazon S3 bucket from which Elastic Transcoder gets media files for transcoding and the graphics files, if any, that you want to use for watermarks.

" - }, - "OutputBucket":{ - "shape":"BucketName", - "documentation":"

The Amazon S3 bucket in which you want Elastic Transcoder to save transcoded files, thumbnails, and playlists. Either you specify this value, or you specify both ContentConfig and ThumbnailConfig.

" - }, - "Role":{ - "shape":"Role", - "documentation":"

The IAM Amazon Resource Name (ARN) for the role that Elastic Transcoder uses to transcode jobs for this pipeline.

" - }, - "AwsKmsKeyArn":{ - "shape":"KeyArn", - "documentation":"

The AWS Key Management Service (AWS KMS) key that you want to use with this pipeline.

If you use either S3 or S3-AWS-KMS as your Encryption:Mode, you don't need to provide a key with your job because a default key, known as an AWS-KMS key, is created for you automatically. You need to provide an AWS-KMS key only if you want to use a non-default AWS-KMS key, or if you are using an Encryption:Mode of AES-PKCS7, AES-CTR, or AES-GCM.

" - }, - "Notifications":{ - "shape":"Notifications", - "documentation":"

The Amazon Simple Notification Service (Amazon SNS) topic that you want to notify to report job status.

To receive notifications, you must also subscribe to the new topic in the Amazon SNS console. " - }, - "ContentConfig":{ - "shape":"PipelineOutputConfig", - "documentation":"

Information about the Amazon S3 bucket in which you want Elastic Transcoder to save transcoded files and playlists. Either you specify both ContentConfig and ThumbnailConfig, or you specify OutputBucket.

" - }, - "ThumbnailConfig":{ - "shape":"PipelineOutputConfig", - "documentation":"

Information about the Amazon S3 bucket in which you want Elastic Transcoder to save thumbnail files. Either you specify both ContentConfig and ThumbnailConfig, or you specify OutputBucket.

" - } - }, - "documentation":"

The pipeline (queue) that is used to manage jobs.

" - }, - "PipelineOutputConfig":{ - "type":"structure", - "members":{ - "Bucket":{ - "shape":"BucketName", - "documentation":"

The Amazon S3 bucket in which you want Elastic Transcoder to save the transcoded files. Specify this value when all of the following are true:

If you want to save transcoded files and playlists in one bucket and thumbnails in another bucket, specify which users can access the transcoded files or the permissions the users have, or change the Amazon S3 storage class, omit OutputBucket and specify values for ContentConfig and ThumbnailConfig instead.

" - }, - "StorageClass":{ - "shape":"StorageClass", - "documentation":"

The Amazon S3 storage class, Standard or ReducedRedundancy, that you want Elastic Transcoder to assign to the video files and playlists that it stores in your Amazon S3 bucket.

" - }, - "Permissions":{ - "shape":"Permissions", - "documentation":"

Optional. The Permissions object specifies which users and/or predefined Amazon S3 groups you want to have access to transcoded files and playlists, and the type of access you want them to have. You can grant permissions to a maximum of 30 users and/or predefined Amazon S3 groups.

If you include Permissions, Elastic Transcoder grants only the permissions that you specify. It does not grant full permissions to the owner of the role specified by Role. If you want that user to have full control, you must explicitly grant full control to the user.

If you omit Permissions, Elastic Transcoder grants full control over the transcoded files and playlists to the owner of the role specified by Role, and grants no other permissions to any other user or group.

" - } - }, - "documentation":"

The PipelineOutputConfig structure.

" - }, - "PipelineStatus":{ - "type":"string", - "pattern":"(^Active$)|(^Paused$)" - }, - "Pipelines":{ - "type":"list", - "member":{"shape":"Pipeline"} - }, - "PixelsOrPercent":{ - "type":"string", - "pattern":"(^\\d{1,3}(\\.\\d{0,5})?%$)|(^\\d{1,4}?px$)" - }, - "Playlist":{ - "type":"structure", - "members":{ - "Name":{ - "shape":"Filename", - "documentation":"

The name that you want Elastic Transcoder to assign to the master playlist, for example, nyc-vacation.m3u8. If the name includes a / character, the section of the name before the last / must be identical for all Name objects. If you create more than one master playlist, the values of all Name objects must be unique.

Note: Elastic Transcoder automatically appends the relevant file extension to the file name (.m3u8 for HLSv3 and HLSv4 playlists, and .ism and .ismc for Smooth playlists). If you include a file extension in Name, the file name will have two extensions.

" - }, - "Format":{ - "shape":"PlaylistFormat", - "documentation":"

The format of the output playlist. Valid formats include HLSv3, HLSv4, and Smooth.

" - }, - "OutputKeys":{ - "shape":"OutputKeys", - "documentation":"

For each output in this job that you want to include in a master playlist, the value of the Outputs:Key object.

Elastic Transcoder automatically appends the relevant file extension to the file name. If you include a file extension in Output Key, the file name will have two extensions.

If you include more than one output in a playlist, any segment duration settings, clip settings, or caption settings must be the same for all outputs in the playlist. For Smooth playlists, the Audio:Profile, Video:Profile, and Video:FrameRate to Video:KeyframesMaxDist ratio must be the same for all outputs.

" - }, - "HlsContentProtection":{ - "shape":"HlsContentProtection", - "documentation":"

The HLS content protection settings, if any, that you want Elastic Transcoder to apply to the output files associated with this playlist.

" - }, - "Status":{ - "shape":"JobStatus", - "documentation":"

The status of the job with which the playlist is associated.

" - }, - "StatusDetail":{ - "shape":"Description", - "documentation":"

Information that further explains the status.

" - } - }, - "documentation":"

Use Only for Fragmented MP4 or MPEG-TS Outputs. If you specify a preset for which the value of Container is fmp4 (Fragmented MP4) or ts (MPEG-TS), Playlists contains information about the master playlists that you want Elastic Transcoder to create. We recommend that you create only one master playlist per output format. The maximum number of master playlists in a job is 30.

" - }, - "PlaylistFormat":{ - "type":"string", - "pattern":"(^HLSv3$)|(^HLSv4$)|(^Smooth$)" - }, - "Playlists":{ - "type":"list", - "member":{"shape":"Playlist"} - }, - "Preset":{ - "type":"structure", - "members":{ - "Id":{ - "shape":"Id", - "documentation":"

Identifier for the new preset. You use this value to get settings for the preset or to delete it.

" - }, - "Arn":{ - "shape":"String", - "documentation":"

The Amazon Resource Name (ARN) for the preset.

" - }, - "Name":{ - "shape":"Name", - "documentation":"

The name of the preset.

" - }, - "Description":{ - "shape":"Description", - "documentation":"

A description of the preset.

" - }, - "Container":{ - "shape":"PresetContainer", - "documentation":"

The container type for the output file. Valid values include fmp4, mp3, mp4, ogg, ts, and webm.

" - }, - "Audio":{ - "shape":"AudioParameters", - "documentation":"

A section of the response body that provides information about the audio preset values.

" - }, - "Video":{ - "shape":"VideoParameters", - "documentation":"

A section of the response body that provides information about the video preset values.

" - }, - "Thumbnails":{ - "shape":"Thumbnails", - "documentation":"

A section of the response body that provides information about the thumbnail preset values, if any.

" - }, - "Type":{ - "shape":"PresetType", - "documentation":"

Whether the preset is a default preset provided by Elastic Transcoder (System) or a preset that you have defined (Custom).

" - } - }, - "documentation":"

Presets are templates that contain most of the settings for transcoding media files from one format to another. Elastic Transcoder includes some default presets for common formats, for example, several iPod and iPhone versions. You can also create your own presets for formats that aren't included among the default presets. You specify which preset you want to use when you create a job.

" - }, - "PresetContainer":{ - "type":"string", - "pattern":"(^mp4$)|(^ts$)|(^webm$)|(^mp3$)|(^ogg$)|(^fmp4$)" - }, - "PresetType":{ - "type":"string", - "pattern":"(^System$)|(^Custom$)" - }, - "PresetWatermark":{ - "type":"structure", - "members":{ - "Id":{ - "shape":"PresetWatermarkId", - "documentation":"A unique identifier for the settings for one watermark. The value of Id can be up to 40 characters long." - }, - "MaxWidth":{ - "shape":"PixelsOrPercent", - "documentation":"

The maximum width of the watermark in one of the following formats:

" - }, - "MaxHeight":{ - "shape":"PixelsOrPercent", - "documentation":"

The maximum height of the watermark in one of the following formats:

If you specify the value in pixels, it must be less than or equal to the value of MaxHeight.

" - }, - "SizingPolicy":{ - "shape":"WatermarkSizingPolicy", - "documentation":"

A value that controls scaling of the watermark:

" - }, - "HorizontalAlign":{ - "shape":"HorizontalAlign", - "documentation":"

The horizontal position of the watermark unless you specify a non-zero value for HorizontalOffset:

" - }, - "HorizontalOffset":{ - "shape":"PixelsOrPercent", - "documentation":"

The amount by which you want the horizontal position of the watermark to be offset from the position specified by HorizontalAlign:

For example, if you specify Left for HorizontalAlign and 5px for HorizontalOffset, the left side of the watermark appears 5 pixels from the left border of the output video.

HorizontalOffset is only valid when the value of HorizontalAlign is Left or Right. If you specify an offset that causes the watermark to extend beyond the left or right border and Elastic Transcoder has not added black bars, the watermark is cropped. If Elastic Transcoder has added black bars, the watermark extends into the black bars. If the watermark extends beyond the black bars, it is cropped.

Use the value of Target to specify whether you want to include the black bars that are added by Elastic Transcoder, if any, in the offset calculation.

" - }, - "VerticalAlign":{ - "shape":"VerticalAlign", - "documentation":"

The vertical position of the watermark unless you specify a non-zero value for VerticalOffset:

" - }, - "VerticalOffset":{ - "shape":"PixelsOrPercent", - "documentation":"VerticalOffset

The amount by which you want the vertical position of the watermark to be offset from the position specified by VerticalAlign:

For example, if you specify Top for VerticalAlign and 5px for VerticalOffset, the top of the watermark appears 5 pixels from the top border of the output video.

VerticalOffset is only valid when the value of VerticalAlign is Top or Bottom.

If you specify an offset that causes the watermark to extend beyond the top or bottom border and Elastic Transcoder has not added black bars, the watermark is cropped. If Elastic Transcoder has added black bars, the watermark extends into the black bars. If the watermark extends beyond the black bars, it is cropped.

Use the value of Target to specify whether you want Elastic Transcoder to include the black bars that are added by Elastic Transcoder, if any, in the offset calculation.

" - }, - "Opacity":{ - "shape":"Opacity", - "documentation":"

A percentage that indicates how much you want a watermark to obscure the video in the location where it appears. Valid values are 0 (the watermark is invisible) to 100 (the watermark completely obscures the video in the specified location). The datatype of Opacity is float.

Elastic Transcoder supports transparent .png graphics. If you use a transparent .png, the transparent portion of the video appears as if you had specified a value of 0 for Opacity. The .jpg file format doesn't support transparency.

" - }, - "Target":{ - "shape":"Target", - "documentation":"

A value that determines how Elastic Transcoder interprets values that you specified for HorizontalOffset, VerticalOffset, MaxWidth, and MaxHeight:

" - } - }, - "documentation":"

Settings for the size, location, and opacity of graphics that you want Elastic Transcoder to overlay over videos that are transcoded using this preset. You can specify settings for up to four watermarks. Watermarks appear in the specified size and location, and with the specified opacity for the duration of the transcoded video.

Watermarks can be in .png or .jpg format. If you want to display a watermark that is not rectangular, use the .png format, which supports transparency.

When you create a job that uses this preset, you specify the .png or .jpg graphics that you want Elastic Transcoder to include in the transcoded videos. You can specify fewer graphics in the job than you specify watermark settings in the preset, which allows you to use the same preset for up to four watermarks that have different dimensions.

" - }, - "PresetWatermarkId":{ - "type":"string", - "min":1, - "max":40 - }, - "PresetWatermarks":{ - "type":"list", - "member":{"shape":"PresetWatermark"} - }, - "Presets":{ - "type":"list", - "member":{"shape":"Preset"} - }, - "ReadJobRequest":{ - "type":"structure", - "required":["Id"], - "members":{ - "Id":{ - "shape":"Id", - "location":"uri", - "locationName":"Id", - "documentation":"

The identifier of the job for which you want to get detailed information.

" - } - }, - "documentation":"

The ReadJobRequest structure.

" - }, - "ReadJobResponse":{ - "type":"structure", - "members":{ - "Job":{ - "shape":"Job", - "documentation":"

A section of the response body that provides information about the job.

" - } - }, - "documentation":"

The ReadJobResponse structure.

" - }, - "ReadPipelineRequest":{ - "type":"structure", - "required":["Id"], - "members":{ - "Id":{ - "shape":"Id", - "location":"uri", - "locationName":"Id", - "documentation":"

The identifier of the pipeline to read.

" - } - }, - "documentation":"

The ReadPipelineRequest structure.

" - }, - "ReadPipelineResponse":{ - "type":"structure", - "members":{ - "Pipeline":{ - "shape":"Pipeline", - "documentation":"

A section of the response body that provides information about the pipeline.

" - } - }, - "documentation":"

The ReadPipelineResponse structure.

" - }, - "ReadPresetRequest":{ - "type":"structure", - "required":["Id"], - "members":{ - "Id":{ - "shape":"Id", - "location":"uri", - "locationName":"Id", - "documentation":"

The identifier of the preset for which you want to get detailed information.

" - } - }, - "documentation":"

The ReadPresetRequest structure.

" - }, - "ReadPresetResponse":{ - "type":"structure", - "members":{ - "Preset":{ - "shape":"Preset", - "documentation":"

A section of the response body that provides information about the preset.

" - } - }, - "documentation":"

The ReadPresetResponse structure.

" - }, - "Resolution":{ - "type":"string", - "pattern":"(^auto$)|(^\\d{1,5}x\\d{1,5}$)" - }, - "ResourceInUseException":{ - "type":"structure", - "members":{ - }, - "error":{"httpStatusCode":409}, - "exception":true, - "documentation":"

The resource you are attempting to change is in use. For example, you are attempting to delete a pipeline that is currently in use.

" - }, - "ResourceNotFoundException":{ - "type":"structure", - "members":{ - }, - "error":{"httpStatusCode":404}, - "exception":true, - "documentation":"

The requested resource does not exist or is not available. For example, the pipeline to which you're trying to add a job doesn't exist or is still being created.

" - }, - "Role":{ - "type":"string", - "pattern":"^arn:aws:iam::\\w{12}:role/.+$" - }, - "Rotate":{ - "type":"string", - "pattern":"(^auto$)|(^0$)|(^90$)|(^180$)|(^270$)" - }, - "SizingPolicy":{ - "type":"string", - "pattern":"(^Fit$)|(^Fill$)|(^Stretch$)|(^Keep$)|(^ShrinkToFit$)|(^ShrinkToFill$)" - }, - "SnsTopic":{ - "type":"string", - "pattern":"(^$)|(^arn:aws:sns:.*:\\w{12}:.+$)" - }, - "SnsTopics":{ - "type":"list", - "member":{"shape":"SnsTopic"}, - "max":30 - }, - "StorageClass":{ - "type":"string", - "pattern":"(^ReducedRedundancy$)|(^Standard$)" - }, - "String":{"type":"string"}, - "Success":{ - "type":"string", - "pattern":"(^true$)|(^false$)" - }, - "Target":{ - "type":"string", - "pattern":"(^Content$)|(^Frame$)" - }, - "TestRoleRequest":{ - "type":"structure", - "required":[ - "Role", - "InputBucket", - "OutputBucket", - "Topics" - ], - "members":{ - "Role":{ - "shape":"Role", - "documentation":"

The IAM Amazon Resource Name (ARN) for the role that you want Elastic Transcoder to test.

" - }, - "InputBucket":{ - "shape":"BucketName", - "documentation":"

The Amazon S3 bucket that contains media files to be transcoded. The action attempts to read from this bucket.

" - }, - "OutputBucket":{ - "shape":"BucketName", - "documentation":"

The Amazon S3 bucket that Elastic Transcoder will write transcoded media files to. The action attempts to read from this bucket.

" - }, - "Topics":{ - "shape":"SnsTopics", - "documentation":"

The ARNs of one or more Amazon Simple Notification Service (Amazon SNS) topics that you want the action to send a test notification to.

" - } - }, - "documentation":"

The TestRoleRequest structure.

" - }, - "TestRoleResponse":{ - "type":"structure", - "members":{ - "Success":{ - "shape":"Success", - "documentation":"

If the operation is successful, this value is true; otherwise, the value is false.

" - }, - "Messages":{ - "shape":"ExceptionMessages", - "documentation":"

If the Success element contains false, this value is an array of one or more error messages that were generated during the test process.

" - } - }, - "documentation":"

The TestRoleResponse structure.

" - }, - "ThumbnailPattern":{ - "type":"string", - "pattern":"(^$)|(^.*\\{count\\}.*$)" - }, - "ThumbnailResolution":{ - "type":"string", - "pattern":"^\\d{1,5}x\\d{1,5}$" - }, - "Thumbnails":{ - "type":"structure", - "members":{ - "Format":{ - "shape":"JpgOrPng", - "documentation":"

The format of thumbnails, if any. Valid values are jpg and png.

You specify whether you want Elastic Transcoder to create thumbnails when you create a job.

" - }, - "Interval":{ - "shape":"Digits", - "documentation":"

The approximate number of seconds between thumbnails. Specify an integer value.

" - }, - "Resolution":{ - "shape":"ThumbnailResolution", - "documentation":"

To better control resolution and aspect ratio of thumbnails, we recommend that you use the values MaxWidth, MaxHeight, SizingPolicy, and PaddingPolicy instead of Resolution and AspectRatio. The two groups of settings are mutually exclusive. Do not use them together.

The width and height of thumbnail files in pixels. Specify a value in the format width x height where both values are even integers. The values cannot exceed the width and height that you specified in the Video:Resolution object.

" - }, - "AspectRatio":{ - "shape":"AspectRatio", - "documentation":"

To better control resolution and aspect ratio of thumbnails, we recommend that you use the values MaxWidth, MaxHeight, SizingPolicy, and PaddingPolicy instead of Resolution and AspectRatio. The two groups of settings are mutually exclusive. Do not use them together.

The aspect ratio of thumbnails. Valid values include:

auto, 1:1, 4:3, 3:2, 16:9

If you specify auto, Elastic Transcoder tries to preserve the aspect ratio of the video in the output file.

" - }, - "MaxWidth":{ - "shape":"DigitsOrAuto", - "documentation":"

The maximum width of thumbnails in pixels. If you specify auto, Elastic Transcoder uses 1920 (Full HD) as the default value. If you specify a numeric value, enter an even integer between 32 and 4096.

" - }, - "MaxHeight":{ - "shape":"DigitsOrAuto", - "documentation":"

The maximum height of thumbnails in pixels. If you specify auto, Elastic Transcoder uses 1080 (Full HD) as the default value. If you specify a numeric value, enter an even integer between 32 and 3072.

" - }, - "SizingPolicy":{ - "shape":"SizingPolicy", - "documentation":"

Specify one of the following values to control scaling of thumbnails:

" - }, - "PaddingPolicy":{ - "shape":"PaddingPolicy", - "documentation":"

When you set PaddingPolicy to Pad, Elastic Transcoder may add black bars to the top and bottom and/or left and right sides of thumbnails to make the total size of the thumbnails match the values that you specified for thumbnail MaxWidth and MaxHeight settings.

" - } - }, - "documentation":"

Thumbnails for videos.

" - }, - "Time":{ - "type":"string", - "pattern":"(^\\d{1,5}(\\.\\d{0,3})?$)|(^([0-1]?[0-9]:|2[0-3]:)?([0-5]?[0-9]:)?[0-5]?[0-9](\\.\\d{0,3})?$)" - }, - "TimeOffset":{ - "type":"string", - "pattern":"(^[+-]?\\d{1,5}(\\.\\d{0,3})?$)|(^[+-]?([0-1]?[0-9]:|2[0-3]:)?([0-5]?[0-9]:)?[0-5]?[0-9](\\.\\d{0,3})?$)" - }, - "TimeSpan":{ - "type":"structure", - "members":{ - "StartTime":{ - "shape":"Time", - "documentation":"

The place in the input file where you want a clip to start. The format can be either HH:mm:ss.SSS (maximum value: 23:59:59.999; SSS is thousandths of a second) or sssss.SSS (maximum value: 86399.999). If you don't specify a value, Elastic Transcoder starts at the beginning of the input file.

" - }, - "Duration":{ - "shape":"Time", - "documentation":"

The duration of the clip. The format can be either HH:mm:ss.SSS (maximum value: 23:59:59.999; SSS is thousandths of a second) or sssss.SSS (maximum value: 86399.999). If you don't specify a value, Elastic Transcoder creates an output file from StartTime to the end of the file.

If you specify a value longer than the duration of the input file, Elastic Transcoder transcodes the file and returns a warning message.

" - } - }, - "documentation":"

Settings that determine when a clip begins and how long it lasts.

" - }, - "UpdatePipelineNotificationsRequest":{ - "type":"structure", - "required":[ - "Id", - "Notifications" - ], - "members":{ - "Id":{ - "shape":"Id", - "location":"uri", - "locationName":"Id", - "documentation":"

The identifier of the pipeline for which you want to change notification settings.

" - }, - "Notifications":{ - "shape":"Notifications", - "documentation":"

The topic ARN for the Amazon Simple Notification Service (Amazon SNS) topic that you want to notify to report job status.

To receive notifications, you must also subscribe to the new topic in the Amazon SNS console. " - } - }, - "documentation":"

The UpdatePipelineNotificationsRequest structure.

" - }, - "UpdatePipelineNotificationsResponse":{ - "type":"structure", - "members":{ - "Pipeline":{ - "shape":"Pipeline", - "documentation":"

A section of the response body that provides information about the pipeline.

" - } - }, - "documentation":"

The UpdatePipelineNotificationsResponse structure.

" - }, - "UpdatePipelineRequest":{ - "type":"structure", - "required":["Id"], - "members":{ - "Id":{ - "shape":"Id", - "location":"uri", - "locationName":"Id", - "documentation":"

The ID of the pipeline that you want to update.

" - }, - "Name":{ - "shape":"Name", - "documentation":"

The name of the pipeline. We recommend that the name be unique within the AWS account, but uniqueness is not enforced.

Constraints: Maximum 40 characters

" - }, - "InputBucket":{ - "shape":"BucketName", - "documentation":"

The Amazon S3 bucket in which you saved the media files that you want to transcode and the graphics that you want to use as watermarks.

" - }, - "Role":{ - "shape":"Role", - "documentation":"

The IAM Amazon Resource Name (ARN) for the role that you want Elastic Transcoder to use to transcode jobs for this pipeline.

" - }, - "AwsKmsKeyArn":{ - "shape":"KeyArn", - "documentation":"

The AWS Key Management Service (AWS KMS) key that you want to use with this pipeline.

If you use either S3 or S3-AWS-KMS as your Encryption:Mode, you don't need to provide a key with your job because a default key, known as an AWS-KMS key, is created for you automatically. You need to provide an AWS-KMS key only if you want to use a non-default AWS-KMS key, or if you are using an Encryption:Mode of AES-PKCS7, AES-CTR, or AES-GCM.

" - }, - "Notifications":{"shape":"Notifications"}, - "ContentConfig":{ - "shape":"PipelineOutputConfig", - "documentation":"

The optional ContentConfig object specifies information about the Amazon S3 bucket in which you want Elastic Transcoder to save transcoded files and playlists: which bucket to use, which users you want to have access to the files, the type of access you want users to have, and the storage class that you want to assign to the files.

If you specify values for ContentConfig, you must also specify values for ThumbnailConfig.

If you specify values for ContentConfig and ThumbnailConfig, omit the OutputBucket object.

" - }, - "ThumbnailConfig":{ - "shape":"PipelineOutputConfig", - "documentation":"

The ThumbnailConfig object specifies several values, including the Amazon S3 bucket in which you want Elastic Transcoder to save thumbnail files, which users you want to have access to the files, the type of access you want users to have, and the storage class that you want to assign to the files.

If you specify values for ContentConfig, you must also specify values for ThumbnailConfig even if you don't want to create thumbnails.

If you specify values for ContentConfig and ThumbnailConfig, omit the OutputBucket object.

" - } - }, - "documentation":"

The UpdatePipelineRequest structure.

" - }, - "UpdatePipelineResponse":{ - "type":"structure", - "members":{ - "Pipeline":{"shape":"Pipeline"} - }, - "documentation":"

When you update a pipeline, Elastic Transcoder returns the values that you specified in the request.

" - }, - "UpdatePipelineStatusRequest":{ - "type":"structure", - "required":[ - "Id", - "Status" - ], - "members":{ - "Id":{ - "shape":"Id", - "location":"uri", - "locationName":"Id", - "documentation":"

The identifier of the pipeline to update.

" - }, - "Status":{ - "shape":"PipelineStatus", - "documentation":"

The desired status of the pipeline:

" - } - }, - "documentation":"

The UpdatePipelineStatusRequest structure.

" - }, - "UpdatePipelineStatusResponse":{ - "type":"structure", - "members":{ - "Pipeline":{ - "shape":"Pipeline", - "documentation":"

A section of the response body that provides information about the pipeline.

" - } - }, - "documentation":"When you update status for a pipeline, Elastic Transcoder returns the values that you specified in the request." - }, - "UserMetadata":{ - "type":"map", - "key":{"shape":"String"}, - "value":{"shape":"String"} - }, - "ValidationException":{ - "type":"structure", - "members":{ - }, - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

One or more required parameter values were not provided in the request.

" - }, - "VerticalAlign":{ - "type":"string", - "pattern":"(^Top$)|(^Bottom$)|(^Center$)" - }, - "VideoBitRate":{ - "type":"string", - "pattern":"(^\\d{2,5}$)|(^auto$)" - }, - "VideoCodec":{ - "type":"string", - "pattern":"(^H\\.264$)|(^vp8$)" - }, - "VideoParameters":{ - "type":"structure", - "members":{ - "Codec":{ - "shape":"VideoCodec", - "documentation":"

The video codec for the output file. Valid values include H.264 and vp8. You can only specify vp8 when the container type is webm.

" - }, - "CodecOptions":{ - "shape":"CodecOptions", - "documentation":"

Profile

The H.264 profile that you want to use for the output file. Elastic Transcoder supports the following profiles:

Level (H.264 Only)

The H.264 level that you want to use for the output file. Elastic Transcoder supports the following levels:

1, 1b, 1.1, 1.2, 1.3, 2, 2.1, 2.2, 3, 3.1, 3.2, 4, 4.1

MaxReferenceFrames (H.264 Only)

Applicable only when the value of Video:Codec is H.264. The maximum number of previously decoded frames to use as a reference for decoding future frames. Valid values are integers 0 through 16, but we recommend that you not use a value greater than the following:

Min(Floor(Maximum decoded picture buffer in macroblocks * 256 / (Width in pixels * Height in pixels)), 16)

where Width in pixels and Height in pixels represent either MaxWidth and MaxHeight, or Resolution. Maximum decoded picture buffer in macroblocks depends on the value of the Level object. See the list below. (A macroblock is a block of pixels measuring 16x16.)

MaxBitRate

The maximum number of bits per second in a video buffer; the size of the buffer is specified by BufferSize. Specify a value between 16 and 62,500. You can reduce the bandwidth required to stream a video by reducing the maximum bit rate, but this also reduces the quality of the video.

BufferSize

The maximum number of bits in any x seconds of the output video. This window is commonly 10 seconds, the standard segment duration when you're using FMP4 or MPEG-TS for the container type of the output video. Specify an integer greater than 0. If you specify MaxBitRate and omit BufferSize, Elastic Transcoder sets BufferSize to 10 times the value of MaxBitRate.

" - }, - "KeyframesMaxDist":{ - "shape":"KeyframesMaxDist", - "documentation":"

The maximum number of frames between key frames. Key frames are fully encoded frames; the frames between key frames are encoded based, in part, on the content of the key frames. The value is an integer formatted as a string; valid values are between 1 (every frame is a key frame) and 100000, inclusive. A higher value results in higher compression but may also discernibly decrease video quality.

For Smooth outputs, the FrameRate must have a constant ratio to the KeyframesMaxDist. This allows Smooth playlists to switch between different quality levels while the file is being played.

For example, an input file can have a FrameRate of 30 with a KeyframesMaxDist of 90. The output file then needs to have a ratio of 1:3. Valid outputs would have FrameRate of 30, 25, and 10, and KeyframesMaxDist of 90, 75, and 30, respectively.

Alternately, this can be achieved by setting FrameRate to auto and having the same values for MaxFrameRate and KeyframesMaxDist.

" - }, - "FixedGOP":{ - "shape":"FixedGOP", - "documentation":"

Whether to use a fixed value for FixedGOP. Valid values are true and false:

FixedGOP must be set to true for fmp4 containers.

" - }, - "BitRate":{ - "shape":"VideoBitRate", - "documentation":"

The bit rate of the video stream in the output file, in kilobits/second. Valid values depend on the values of Level and Profile. If you specify auto, Elastic Transcoder uses the detected bit rate of the input source. If you specify a value other than auto, we recommend that you specify a value less than or equal to the maximum H.264-compliant value listed for your level and profile:

Level - Maximum video bit rate in kilobits/second (baseline and main Profile) : maximum video bit rate in kilobits/second (high Profile)

" - }, - "FrameRate":{ - "shape":"FrameRate", - "documentation":"

The frames per second for the video stream in the output file. Valid values include:

auto, 10, 15, 23.97, 24, 25, 29.97, 30, 60

If you specify auto, Elastic Transcoder uses the detected frame rate of the input source. If you specify a frame rate, we recommend that you perform the following calculation:

Frame rate = maximum recommended decoding speed in luma samples/second / (width in pixels * height in pixels)

where:

The maximum recommended decoding speed in Luma samples/second for each level is described in the following list (Level - Decoding speed):

" - }, - "MaxFrameRate":{ - "shape":"MaxFrameRate", - "documentation":"

If you specify auto for FrameRate, Elastic Transcoder uses the frame rate of the input video for the frame rate of the output video. Specify the maximum frame rate that you want Elastic Transcoder to use when the frame rate of the input video is greater than the desired maximum frame rate of the output video. Valid values include: 10, 15, 23.97, 24, 25, 29.97, 30, 60.

" - }, - "Resolution":{ - "shape":"Resolution", - "documentation":"

To better control resolution and aspect ratio of output videos, we recommend that you use the values MaxWidth, MaxHeight, SizingPolicy, PaddingPolicy, and DisplayAspectRatio instead of Resolution and AspectRatio. The two groups of settings are mutually exclusive. Do not use them together.

The width and height of the video in the output file, in pixels. Valid values are auto and width x height:

Note the following about specifying the width and height:

" - }, - "AspectRatio":{ - "shape":"AspectRatio", - "documentation":"

To better control resolution and aspect ratio of output videos, we recommend that you use the values MaxWidth, MaxHeight, SizingPolicy, PaddingPolicy, and DisplayAspectRatio instead of Resolution and AspectRatio. The two groups of settings are mutually exclusive. Do not use them together.

The display aspect ratio of the video in the output file. Valid values include:

auto, 1:1, 4:3, 3:2, 16:9

If you specify auto, Elastic Transcoder tries to preserve the aspect ratio of the input file.

If you specify an aspect ratio for the output file that differs from aspect ratio of the input file, Elastic Transcoder adds pillarboxing (black bars on the sides) or letterboxing (black bars on the top and bottom) to maintain the aspect ratio of the active region of the video.

" - }, - "MaxWidth":{ - "shape":"DigitsOrAuto", - "documentation":"

The maximum width of the output video in pixels. If you specify auto, Elastic Transcoder uses 1920 (Full HD) as the default value. If you specify a numeric value, enter an even integer between 128 and 4096.

" - }, - "MaxHeight":{ - "shape":"DigitsOrAuto", - "documentation":"

The maximum height of the output video in pixels. If you specify auto, Elastic Transcoder uses 1080 (Full HD) as the default value. If you specify a numeric value, enter an even integer between 96 and 3072.

" - }, - "DisplayAspectRatio":{ - "shape":"AspectRatio", - "documentation":"

The value that Elastic Transcoder adds to the metadata in the output file.

" - }, - "SizingPolicy":{ - "shape":"SizingPolicy", - "documentation":"

Specify one of the following values to control scaling of the output video:

" - }, - "PaddingPolicy":{ - "shape":"PaddingPolicy", - "documentation":"

When you set PaddingPolicy to Pad, Elastic Transcoder may add black bars to the top and bottom and/or left and right sides of the output video to make the total size of the output video match the values that you specified for MaxWidth and MaxHeight.

" - }, - "Watermarks":{ - "shape":"PresetWatermarks", - "documentation":"

Settings for the size, location, and opacity of graphics that you want Elastic Transcoder to overlay over videos that are transcoded using this preset. You can specify settings for up to four watermarks. Watermarks appear in the specified size and location, and with the specified opacity for the duration of the transcoded video.

Watermarks can be in .png or .jpg format. If you want to display a watermark that is not rectangular, use the .png format, which supports transparency.

When you create a job that uses this preset, you specify the .png or .jpg graphics that you want Elastic Transcoder to include in the transcoded videos. You can specify fewer graphics in the job than you specify watermark settings in the preset, which allows you to use the same preset for up to four watermarks that have different dimensions.

" - } - }, - "documentation":"

The VideoParameters structure.

" - }, - "WatermarkKey":{ - "type":"string", - "min":1, - "max":255, - "pattern":"(^.{1,}.jpg$)|(^.{1,}.jpeg$)|(^.{1,}.png$)" - }, - "WatermarkSizingPolicy":{ - "type":"string", - "pattern":"(^Fit$)|(^Stretch$)|(^ShrinkToFit$)" - }, - "ZeroTo255String":{ - "type":"string", - "min":0, - "max":255 - }, - "ZeroTo512String":{ - "type":"string", - "min":0, - "max":512 - } - } -} diff --git a/src/github.com/getlantern/aws-sdk-go/apis/elastictranscoder/2012-09-25.paginators.json b/src/github.com/getlantern/aws-sdk-go/apis/elastictranscoder/2012-09-25.paginators.json deleted file mode 100644 index 5a145d3688..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/apis/elastictranscoder/2012-09-25.paginators.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "pagination": { - "ListJobsByPipeline": { - "input_token": "PageToken", - "output_token": "NextPageToken", - "result_key": "Jobs" - }, - "ListJobsByStatus": { - "input_token": "PageToken", - "output_token": "NextPageToken", - "result_key": "Jobs" - }, - "ListPipelines": { - "input_token": "PageToken", - "output_token": "NextPageToken", - "result_key": "Pipelines" - }, - "ListPresets": { - "input_token": "PageToken", - "output_token": "NextPageToken", - "result_key": "Presets" - } - } -} diff --git a/src/github.com/getlantern/aws-sdk-go/apis/elastictranscoder/2012-09-25.waiters.json b/src/github.com/getlantern/aws-sdk-go/apis/elastictranscoder/2012-09-25.waiters.json deleted file mode 100644 index 55c362807c..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/apis/elastictranscoder/2012-09-25.waiters.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "version": 2, - "waiters": { - "JobComplete": { - "delay": 30, - "operation": "ReadJob", - "maxAttempts": 120, - "acceptors": [ - { - "expected": "Complete", - "matcher": "path", - "state": "success", - "argument": "Job.Status" - }, - { - "expected": "Canceled", - "matcher": "path", - "state": "failure", - "argument": "Job.Status" - }, - { - "expected": "Error", - "matcher": "path", - "state": "failure", - "argument": "Job.Status" - } - ] - } - } -} diff --git a/src/github.com/getlantern/aws-sdk-go/apis/elb/2012-06-01.normal.json b/src/github.com/getlantern/aws-sdk-go/apis/elb/2012-06-01.normal.json deleted file mode 100644 index f5d36ca5f4..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/apis/elb/2012-06-01.normal.json +++ /dev/null @@ -1,2917 +0,0 @@ -{ - "metadata":{ - "apiVersion":"2012-06-01", - "endpointPrefix":"elasticloadbalancing", - "serviceFullName":"Elastic Load Balancing", - "signatureVersion":"v4", - "xmlNamespace":"http://elasticloadbalancing.amazonaws.com/doc/2012-06-01/", - "protocol":"query" - }, - "documentation":"Elastic Load Balancing

Elastic Load Balancing is a way to automatically distribute incoming web traffic across applications that run on multiple Amazon Elastic Compute Cloud (Amazon EC2) instances.

You can create, access, and manage Elastic Load Balancing using the AWS Management Console or the Elastic Load Balancing API. For more information about Elastic Load Balancing interfaces, see Accessing Elastic Load Balancing.

This reference guide contains documentation for the Query API and the AWS command line interface commands, to manage Elastic Load Balancing.

For detailed information about Elastic Load Balancing features and their associated actions or commands, go to Managing Load Balancers in the Elastic Load Balancing Developer Guide.

This reference guide is based on the current WSDL, which is available at: .

Endpoints

The examples in this guide assume that your load balancers are created in the US East (Northern Virginia) region and use us-east-1 as the endpoint.

You can create your load balancers in other AWS regions. For information about regions and endpoints supported by Elastic Load Balancing, see Regions and Endpoints in the Amazon Web Services General Reference.

", - "operations":{ - "AddTags":{ - "name":"AddTags", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"AddTagsInput", - "documentation":"The input for the AddTags action" - }, - "output":{ - "shape":"AddTagsOutput", - "documentation":"The output for the AddTags action.", - "resultWrapper":"AddTagsResult" - }, - "errors":[ - { - "shape":"AccessPointNotFoundException", - "error":{ - "code":"LoadBalancerNotFound", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified load balancer could not be found.

" - }, - { - "shape":"TooManyTagsException", - "error":{ - "code":"TooManyTags", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The quota for the number of tags that can be assigned to a load balancer has been reached.

" - }, - { - "shape":"DuplicateTagKeysException", - "error":{ - "code":"DuplicateTagKeys", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The same tag key specified multiple times.

" - } - ], - "documentation":"

Adds one or more tags for the specified load balancer. Each load balancer can have a maximum of 10 tags. Each tag consists of a key and an optional value.

Tag keys must be unique for each load balancer. If a tag with the same key is already associated with the load balancer, this action will update the value of the key.

For more information, see Tagging in the Elastic Load Balancing Developer Guide.

" - }, - "ApplySecurityGroupsToLoadBalancer":{ - "name":"ApplySecurityGroupsToLoadBalancer", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"ApplySecurityGroupsToLoadBalancerInput", - "documentation":"

The input for the ApplySecurityGroupsToLoadBalancer action.

" - }, - "output":{ - "shape":"ApplySecurityGroupsToLoadBalancerOutput", - "documentation":"

The out for the ApplySecurityGroupsToLoadBalancer action.

", - "resultWrapper":"ApplySecurityGroupsToLoadBalancerResult" - }, - "errors":[ - { - "shape":"AccessPointNotFoundException", - "error":{ - "code":"LoadBalancerNotFound", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified load balancer could not be found.

" - }, - { - "shape":"InvalidConfigurationRequestException", - "error":{ - "code":"InvalidConfigurationRequest", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

Requested configuration change is invalid.

" - }, - { - "shape":"InvalidSecurityGroupException", - "error":{ - "code":"InvalidSecurityGroup", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

One or more specified security groups do not exist.

" - } - ], - "documentation":"

Associates one or more security groups with your load balancer in Amazon Virtual Private Cloud (Amazon VPC). The provided security group IDs will override any currently applied security groups.

For more information, see Manage Security Groups in Amazon VPC in the Elastic Load Balancing Developer Guide.

" - }, - "AttachLoadBalancerToSubnets":{ - "name":"AttachLoadBalancerToSubnets", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"AttachLoadBalancerToSubnetsInput", - "documentation":"

The input for the AttachLoadBalancerToSubnets action.

" - }, - "output":{ - "shape":"AttachLoadBalancerToSubnetsOutput", - "documentation":"

The output for the AttachLoadBalancerToSubnets action.

", - "resultWrapper":"AttachLoadBalancerToSubnetsResult" - }, - "errors":[ - { - "shape":"AccessPointNotFoundException", - "error":{ - "code":"LoadBalancerNotFound", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified load balancer could not be found.

" - }, - { - "shape":"InvalidConfigurationRequestException", - "error":{ - "code":"InvalidConfigurationRequest", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

Requested configuration change is invalid.

" - }, - { - "shape":"SubnetNotFoundException", - "error":{ - "code":"SubnetNotFound", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

One or more subnets were not found.

" - }, - { - "shape":"InvalidSubnetException", - "error":{ - "code":"InvalidSubnet", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The VPC has no Internet gateway.

" - } - ], - "documentation":"

Adds one or more subnets to the set of configured subnets in the Amazon Virtual Private Cloud (Amazon VPC) for the load balancer.

The load balancers evenly distribute requests across all of the registered subnets. For more information, see Deploy Elastic Load Balancing in Amazon VPC in the Elastic Load Balancing Developer Guide.

" - }, - "ConfigureHealthCheck":{ - "name":"ConfigureHealthCheck", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"ConfigureHealthCheckInput", - "documentation":"

Input for the ConfigureHealthCheck action.

" - }, - "output":{ - "shape":"ConfigureHealthCheckOutput", - "documentation":"

The output for the ConfigureHealthCheck action.

", - "resultWrapper":"ConfigureHealthCheckResult" - }, - "errors":[ - { - "shape":"AccessPointNotFoundException", - "error":{ - "code":"LoadBalancerNotFound", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified load balancer could not be found.

" - } - ], - "documentation":"

Specifies the health check settings to use for evaluating the health state of your back-end instances.

For more information, see Health Check in the Elastic Load Balancing Developer Guide.

" - }, - "CreateAppCookieStickinessPolicy":{ - "name":"CreateAppCookieStickinessPolicy", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"CreateAppCookieStickinessPolicyInput", - "documentation":"

The input for the CreateAppCookieStickinessPolicy action.

" - }, - "output":{ - "shape":"CreateAppCookieStickinessPolicyOutput", - "documentation":"

The output for the CreateAppCookieStickinessPolicy action.

", - "resultWrapper":"CreateAppCookieStickinessPolicyResult" - }, - "errors":[ - { - "shape":"AccessPointNotFoundException", - "error":{ - "code":"LoadBalancerNotFound", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified load balancer could not be found.

" - }, - { - "shape":"DuplicatePolicyNameException", - "error":{ - "code":"DuplicatePolicyName", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Policy with the same name exists for this load balancer. Please choose another name.

" - }, - { - "shape":"TooManyPoliciesException", - "error":{ - "code":"TooManyPolicies", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Quota for number of policies for this load balancer has already been reached.

" - }, - { - "shape":"InvalidConfigurationRequestException", - "error":{ - "code":"InvalidConfigurationRequest", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

Requested configuration change is invalid.

" - } - ], - "documentation":"

Generates a stickiness policy with sticky session lifetimes that follow that of an application-generated cookie. This policy can be associated only with HTTP/HTTPS listeners.

This policy is similar to the policy created by CreateLBCookieStickinessPolicy, except that the lifetime of the special Elastic Load Balancing cookie follows the lifetime of the application-generated cookie specified in the policy configuration. The load balancer only inserts a new stickiness cookie when the application response includes a new application cookie.

If the application cookie is explicitly removed or expires, the session stops being sticky until a new application cookie is issued.

An application client must receive and send two cookies: the application-generated cookie and the special Elastic Load Balancing cookie named AWSELB. This is the default behavior for many common web browsers.

For more information, see Enabling Application-Controlled Session Stickiness in the Elastic Load Balancing Developer Guide.

" - }, - "CreateLBCookieStickinessPolicy":{ - "name":"CreateLBCookieStickinessPolicy", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"CreateLBCookieStickinessPolicyInput", - "documentation":"

The input for the CreateLBCookieStickinessPolicy action.

" - }, - "output":{ - "shape":"CreateLBCookieStickinessPolicyOutput", - "documentation":"

The output for the CreateLBCookieStickinessPolicy action.

", - "resultWrapper":"CreateLBCookieStickinessPolicyResult" - }, - "errors":[ - { - "shape":"AccessPointNotFoundException", - "error":{ - "code":"LoadBalancerNotFound", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified load balancer could not be found.

" - }, - { - "shape":"DuplicatePolicyNameException", - "error":{ - "code":"DuplicatePolicyName", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Policy with the same name exists for this load balancer. Please choose another name.

" - }, - { - "shape":"TooManyPoliciesException", - "error":{ - "code":"TooManyPolicies", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Quota for number of policies for this load balancer has already been reached.

" - }, - { - "shape":"InvalidConfigurationRequestException", - "error":{ - "code":"InvalidConfigurationRequest", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

Requested configuration change is invalid.

" - } - ], - "documentation":"

Generates a stickiness policy with sticky session lifetimes controlled by the lifetime of the browser (user-agent) or a specified expiration period. This policy can be associated only with HTTP/HTTPS listeners.

When a load balancer implements this policy, the load balancer uses a special cookie to track the backend server instance for each request. When the load balancer receives a request, it first checks to see if this cookie is present in the request. If so, the load balancer sends the request to the application server specified in the cookie. If not, the load balancer sends the request to a server that is chosen based on the existing load balancing algorithm.

A cookie is inserted into the response for binding subsequent requests from the same user to that server. The validity of the cookie is based on the cookie expiration time, which is specified in the policy configuration.

For more information, see Enabling Duration-Based Session Stickiness in the Elastic Load Balancing Developer Guide.

" - }, - "CreateLoadBalancer":{ - "name":"CreateLoadBalancer", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"CreateAccessPointInput", - "documentation":"

The input for the CreateLoadBalancer action.

" - }, - "output":{ - "shape":"CreateAccessPointOutput", - "documentation":"

The output for the CreateLoadBalancer action.

", - "resultWrapper":"CreateLoadBalancerResult" - }, - "errors":[ - { - "shape":"DuplicateAccessPointNameException", - "error":{ - "code":"DuplicateLoadBalancerName", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The load balancer name already exists for this account. Please choose another name.

" - }, - { - "shape":"TooManyAccessPointsException", - "error":{ - "code":"TooManyLoadBalancers", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The quota for the number of load balancers has already been reached.

" - }, - { - "shape":"CertificateNotFoundException", - "error":{ - "code":"CertificateNotFound", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified SSL ID does not refer to a valid SSL certificate in the AWS Identity and Access Management Service.

" - }, - { - "shape":"InvalidConfigurationRequestException", - "error":{ - "code":"InvalidConfigurationRequest", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

Requested configuration change is invalid.

" - }, - { - "shape":"SubnetNotFoundException", - "error":{ - "code":"SubnetNotFound", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

One or more subnets were not found.

" - }, - { - "shape":"InvalidSubnetException", - "error":{ - "code":"InvalidSubnet", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The VPC has no Internet gateway.

" - }, - { - "shape":"InvalidSecurityGroupException", - "error":{ - "code":"InvalidSecurityGroup", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

One or more specified security groups do not exist.

" - }, - { - "shape":"InvalidSchemeException", - "error":{ - "code":"InvalidScheme", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Invalid value for scheme. Scheme can only be specified for load balancers in VPC.

" - }, - { - "shape":"TooManyTagsException", - "error":{ - "code":"TooManyTags", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The quota for the number of tags that can be assigned to a load balancer has been reached.

" - }, - { - "shape":"DuplicateTagKeysException", - "error":{ - "code":"DuplicateTagKeys", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The same tag key specified multiple times.

" - } - ], - "documentation":"

Creates a new load balancer.

After the call has completed successfully, a new load balancer is created with a unique Domain Name Service (DNS) name. The DNS name includes the name of the AWS region in which the load balance was created. For example, if your load balancer was created in the United States, the DNS name might end with either of the following:

For information about the AWS regions supported by Elastic Load Balancing, see Regions and Endpoints.

You can create up to 20 load balancers per region per account.

Elastic Load Balancing supports load balancing your Amazon EC2 instances launched within any one of the following platforms:

" - }, - "CreateLoadBalancerListeners":{ - "name":"CreateLoadBalancerListeners", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"CreateLoadBalancerListenerInput", - "documentation":"

The input for the CreateLoadBalancerListeners action.

" - }, - "output":{ - "shape":"CreateLoadBalancerListenerOutput", - "documentation":"

The output for the CreateLoadBalancerListeners action.

", - "resultWrapper":"CreateLoadBalancerListenersResult" - }, - "errors":[ - { - "shape":"AccessPointNotFoundException", - "error":{ - "code":"LoadBalancerNotFound", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified load balancer could not be found.

" - }, - { - "shape":"DuplicateListenerException", - "error":{ - "code":"DuplicateListener", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

A Listener already exists for the given LoadBalancerName and LoadBalancerPort, but with a different InstancePort, Protocol, or SSLCertificateId.

" - }, - { - "shape":"CertificateNotFoundException", - "error":{ - "code":"CertificateNotFound", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified SSL ID does not refer to a valid SSL certificate in the AWS Identity and Access Management Service.

" - }, - { - "shape":"InvalidConfigurationRequestException", - "error":{ - "code":"InvalidConfigurationRequest", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

Requested configuration change is invalid.

" - } - ], - "documentation":"

Creates one or more listeners on a load balancer for the specified port. If a listener with the given port does not already exist, it will be created; otherwise, the properties of the new listener must match the properties of the existing listener.

For more information, see Add a Listener to Your Load Balancer in the Elastic Load Balancing Developer Guide.

" - }, - "CreateLoadBalancerPolicy":{ - "name":"CreateLoadBalancerPolicy", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CreateLoadBalancerPolicyInput"}, - "output":{ - "shape":"CreateLoadBalancerPolicyOutput", - "documentation":"

The output for the CreateLoadBalancerPolicy action.

", - "resultWrapper":"CreateLoadBalancerPolicyResult" - }, - "errors":[ - { - "shape":"AccessPointNotFoundException", - "error":{ - "code":"LoadBalancerNotFound", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified load balancer could not be found.

" - }, - { - "shape":"PolicyTypeNotFoundException", - "error":{ - "code":"PolicyTypeNotFound", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

One or more of the specified policy types do not exist.

" - }, - { - "shape":"DuplicatePolicyNameException", - "error":{ - "code":"DuplicatePolicyName", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Policy with the same name exists for this load balancer. Please choose another name.

" - }, - { - "shape":"TooManyPoliciesException", - "error":{ - "code":"TooManyPolicies", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Quota for number of policies for this load balancer has already been reached.

" - }, - { - "shape":"InvalidConfigurationRequestException", - "error":{ - "code":"InvalidConfigurationRequest", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

Requested configuration change is invalid.

" - } - ], - "documentation":"

Creates a new policy that contains the necessary attributes depending on the policy type. Policies are settings that are saved for your load balancer and that can be applied to the front-end listener, or the back-end application server, depending on your policy type.

" - }, - "DeleteLoadBalancer":{ - "name":"DeleteLoadBalancer", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DeleteAccessPointInput", - "documentation":"

The input for the DeleteLoadBalancer action.

" - }, - "output":{ - "shape":"DeleteAccessPointOutput", - "documentation":"

The output for the DeleteLoadBalancer action.

", - "resultWrapper":"DeleteLoadBalancerResult" - }, - "documentation":"

Deletes the specified load balancer.

If attempting to recreate the load balancer, you must reconfigure all the settings. The DNS name associated with a deleted load balancer will no longer be usable. Once deleted, the name and associated DNS record of the load balancer no longer exist and traffic sent to any of its IP addresses will no longer be delivered to back-end instances.

To successfully call this API, you must provide the same account credentials as were used to create the load balancer.

By design, if the load balancer does not exist or has already been deleted, a call to DeleteLoadBalancer action still succeeds. " - }, - "DeleteLoadBalancerListeners":{ - "name":"DeleteLoadBalancerListeners", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DeleteLoadBalancerListenerInput", - "documentation":"

The input for the DeleteLoadBalancerListeners action.

" - }, - "output":{ - "shape":"DeleteLoadBalancerListenerOutput", - "documentation":"

The output for the DeleteLoadBalancerListeners action.

", - "resultWrapper":"DeleteLoadBalancerListenersResult" - }, - "errors":[ - { - "shape":"AccessPointNotFoundException", - "error":{ - "code":"LoadBalancerNotFound", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified load balancer could not be found.

" - } - ], - "documentation":"

Deletes listeners from the load balancer for the specified port.

" - }, - "DeleteLoadBalancerPolicy":{ - "name":"DeleteLoadBalancerPolicy", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DeleteLoadBalancerPolicyInput", - "documentation":"

The input for the DeleteLoadBalancerPolicy action.

" - }, - "output":{ - "shape":"DeleteLoadBalancerPolicyOutput", - "documentation":"

The output for the DeleteLoadBalancerPolicy action.

", - "resultWrapper":"DeleteLoadBalancerPolicyResult" - }, - "errors":[ - { - "shape":"AccessPointNotFoundException", - "error":{ - "code":"LoadBalancerNotFound", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified load balancer could not be found.

" - }, - { - "shape":"InvalidConfigurationRequestException", - "error":{ - "code":"InvalidConfigurationRequest", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

Requested configuration change is invalid.

" - } - ], - "documentation":"

Deletes a policy from the load balancer. The specified policy must not be enabled for any listeners.

" - }, - "DeregisterInstancesFromLoadBalancer":{ - "name":"DeregisterInstancesFromLoadBalancer", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DeregisterEndPointsInput", - "documentation":"

The input for the DeregisterInstancesFromLoadBalancer action.

" - }, - "output":{ - "shape":"DeregisterEndPointsOutput", - "documentation":"

The output for the DeregisterInstancesFromLoadBalancer action.

", - "resultWrapper":"DeregisterInstancesFromLoadBalancerResult" - }, - "errors":[ - { - "shape":"AccessPointNotFoundException", - "error":{ - "code":"LoadBalancerNotFound", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified load balancer could not be found.

" - }, - { - "shape":"InvalidEndPointException", - "error":{ - "code":"InvalidInstance", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified EndPoint is not valid.

" - } - ], - "documentation":"

Deregisters instances from the load balancer. Once the instance is deregistered, it will stop receiving traffic from the load balancer.

In order to successfully call this API, the same account credentials as those used to create the load balancer must be provided.

For more information, see De-register and Register Amazon EC2 Instances in the Elastic Load Balancing Developer Guide.

You can use DescribeLoadBalancers to verify if the instance is deregistered from the load balancer.

" - }, - "DescribeInstanceHealth":{ - "name":"DescribeInstanceHealth", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DescribeEndPointStateInput", - "documentation":"

The input for the DescribeEndPointState action.

" - }, - "output":{ - "shape":"DescribeEndPointStateOutput", - "documentation":"

The output for the DescribeInstanceHealth action.

", - "resultWrapper":"DescribeInstanceHealthResult" - }, - "errors":[ - { - "shape":"AccessPointNotFoundException", - "error":{ - "code":"LoadBalancerNotFound", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified load balancer could not be found.

" - }, - { - "shape":"InvalidEndPointException", - "error":{ - "code":"InvalidInstance", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified EndPoint is not valid.

" - } - ], - "documentation":"

Returns the current state of the specified instances registered with the specified load balancer. If no instances are specified, the state of all the instances registered with the load balancer is returned.

You must provide the same account credentials as those that were used to create the load balancer. " - }, - "DescribeLoadBalancerAttributes":{ - "name":"DescribeLoadBalancerAttributes", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DescribeLoadBalancerAttributesInput", - "documentation":"

The input for the DescribeLoadBalancerAttributes action.

" - }, - "output":{ - "shape":"DescribeLoadBalancerAttributesOutput", - "documentation":"

The following element is returned in a structure named DescribeLoadBalancerAttributesResult.

", - "resultWrapper":"DescribeLoadBalancerAttributesResult" - }, - "errors":[ - { - "shape":"AccessPointNotFoundException", - "error":{ - "code":"LoadBalancerNotFound", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified load balancer could not be found.

" - }, - { - "shape":"LoadBalancerAttributeNotFoundException", - "error":{ - "code":"LoadBalancerAttributeNotFound", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified load balancer attribute could not be found.

" - } - ], - "documentation":"

Returns detailed information about all of the attributes associated with the specified load balancer.

" - }, - "DescribeLoadBalancerPolicies":{ - "name":"DescribeLoadBalancerPolicies", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeLoadBalancerPoliciesInput"}, - "output":{ - "shape":"DescribeLoadBalancerPoliciesOutput", - "documentation":"

The output for the DescribeLoadBalancerPolicies action.

", - "resultWrapper":"DescribeLoadBalancerPoliciesResult" - }, - "errors":[ - { - "shape":"AccessPointNotFoundException", - "error":{ - "code":"LoadBalancerNotFound", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified load balancer could not be found.

" - }, - { - "shape":"PolicyNotFoundException", - "error":{ - "code":"PolicyNotFound", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

One or more specified policies were not found.

" - } - ], - "documentation":"

Returns detailed descriptions of the policies. If you specify a load balancer name, the action returns the descriptions of all the policies created for the load balancer. If you specify a policy name associated with your load balancer, the action returns the description of that policy. If you don't specify a load balancer name, the action returns descriptions of the specified sample policies, or descriptions of all the sample policies. The names of the sample policies have the ELBSample- prefix.

" - }, - "DescribeLoadBalancerPolicyTypes":{ - "name":"DescribeLoadBalancerPolicyTypes", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeLoadBalancerPolicyTypesInput"}, - "output":{ - "shape":"DescribeLoadBalancerPolicyTypesOutput", - "documentation":"

The output for the DescribeLoadBalancerPolicyTypes action.

", - "resultWrapper":"DescribeLoadBalancerPolicyTypesResult" - }, - "errors":[ - { - "shape":"PolicyTypeNotFoundException", - "error":{ - "code":"PolicyTypeNotFound", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

One or more of the specified policy types do not exist.

" - } - ], - "documentation":"

Returns meta-information on the specified load balancer policies defined by the Elastic Load Balancing service. The policy types that are returned from this action can be used in a CreateLoadBalancerPolicy action to instantiate specific policy configurations that will be applied to a load balancer.

" - }, - "DescribeLoadBalancers":{ - "name":"DescribeLoadBalancers", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DescribeAccessPointsInput", - "documentation":"

The input for the DescribeLoadBalancers action.

" - }, - "output":{ - "shape":"DescribeAccessPointsOutput", - "documentation":"

The output for the DescribeLoadBalancers action.

", - "resultWrapper":"DescribeLoadBalancersResult" - }, - "errors":[ - { - "shape":"AccessPointNotFoundException", - "error":{ - "code":"LoadBalancerNotFound", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified load balancer could not be found.

" - } - ], - "documentation":"

Returns detailed configuration information for all the load balancers created for the account. If you specify load balancer names, the action returns configuration information of the specified load balancers.

In order to retrieve this information, you must provide the same account credentials that was used to create the load balancer." - }, - "DescribeTags":{ - "name":"DescribeTags", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DescribeTagsInput", - "documentation":"

The input for the DescribeTags action.

" - }, - "output":{ - "shape":"DescribeTagsOutput", - "documentation":"

The output for the DescribeTags action.

", - "resultWrapper":"DescribeTagsResult" - }, - "errors":[ - { - "shape":"AccessPointNotFoundException", - "error":{ - "code":"LoadBalancerNotFound", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified load balancer could not be found.

" - } - ], - "documentation":"

Describes the tags associated with one or more load balancers.

" - }, - "DetachLoadBalancerFromSubnets":{ - "name":"DetachLoadBalancerFromSubnets", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DetachLoadBalancerFromSubnetsInput", - "documentation":"

The input for the DetachLoadBalancerFromSubnets action.

" - }, - "output":{ - "shape":"DetachLoadBalancerFromSubnetsOutput", - "documentation":"

The output for the DetachLoadBalancerFromSubnets action.

", - "resultWrapper":"DetachLoadBalancerFromSubnetsResult" - }, - "errors":[ - { - "shape":"AccessPointNotFoundException", - "error":{ - "code":"LoadBalancerNotFound", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified load balancer could not be found.

" - }, - { - "shape":"InvalidConfigurationRequestException", - "error":{ - "code":"InvalidConfigurationRequest", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

Requested configuration change is invalid.

" - } - ], - "documentation":"

Removes subnets from the set of configured subnets in the Amazon Virtual Private Cloud (Amazon VPC) for the load balancer.

After a subnet is removed all of the EC2 instances registered with the load balancer that are in the removed subnet will go into the OutOfService state. When a subnet is removed, the load balancer will balance the traffic among the remaining routable subnets for the load balancer.

" - }, - "DisableAvailabilityZonesForLoadBalancer":{ - "name":"DisableAvailabilityZonesForLoadBalancer", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"RemoveAvailabilityZonesInput", - "documentation":"

The input for the DisableAvailabilityZonesForLoadBalancer action.

" - }, - "output":{ - "shape":"RemoveAvailabilityZonesOutput", - "documentation":"

The output for the DisableAvailabilityZonesForLoadBalancer action.

", - "resultWrapper":"DisableAvailabilityZonesForLoadBalancerResult" - }, - "errors":[ - { - "shape":"AccessPointNotFoundException", - "error":{ - "code":"LoadBalancerNotFound", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified load balancer could not be found.

" - }, - { - "shape":"InvalidConfigurationRequestException", - "error":{ - "code":"InvalidConfigurationRequest", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

Requested configuration change is invalid.

" - } - ], - "documentation":"

Removes the specified EC2 Availability Zones from the set of configured Availability Zones for the load balancer.

There must be at least one Availability Zone registered with a load balancer at all times. Once an Availability Zone is removed, all the instances registered with the load balancer that are in the removed Availability Zone go into the OutOfService state. Upon Availability Zone removal, the load balancer attempts to equally balance the traffic among its remaining usable Availability Zones. Trying to remove an Availability Zone that was not associated with the load balancer does nothing.

For more information, see Disable an Availability Zone from a Load-Balanced Application in the Elastic Load Balancing Developer Guide.

" - }, - "EnableAvailabilityZonesForLoadBalancer":{ - "name":"EnableAvailabilityZonesForLoadBalancer", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"AddAvailabilityZonesInput", - "documentation":"

The input for the EnableAvailabilityZonesForLoadBalancer action.

" - }, - "output":{ - "shape":"AddAvailabilityZonesOutput", - "documentation":"

The output for the EnableAvailabilityZonesForLoadBalancer action.

", - "resultWrapper":"EnableAvailabilityZonesForLoadBalancerResult" - }, - "errors":[ - { - "shape":"AccessPointNotFoundException", - "error":{ - "code":"LoadBalancerNotFound", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified load balancer could not be found.

" - } - ], - "documentation":"

Adds one or more EC2 Availability Zones to the load balancer.

The load balancer evenly distributes requests across all its registered Availability Zones that contain instances.

The new EC2 Availability Zones to be added must be in the same EC2 Region as the Availability Zones for which the load balancer was created.

For more information, see Expand a Load Balanced Application to an Additional Availability Zone in the Elastic Load Balancing Developer Guide.

" - }, - "ModifyLoadBalancerAttributes":{ - "name":"ModifyLoadBalancerAttributes", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"ModifyLoadBalancerAttributesInput", - "documentation":"

The input for the ModifyLoadBalancerAttributes action.

" - }, - "output":{ - "shape":"ModifyLoadBalancerAttributesOutput", - "documentation":"

The output for the ModifyLoadBalancerAttributes action.

", - "resultWrapper":"ModifyLoadBalancerAttributesResult" - }, - "errors":[ - { - "shape":"AccessPointNotFoundException", - "error":{ - "code":"LoadBalancerNotFound", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified load balancer could not be found.

" - }, - { - "shape":"LoadBalancerAttributeNotFoundException", - "error":{ - "code":"LoadBalancerAttributeNotFound", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified load balancer attribute could not be found.

" - }, - { - "shape":"InvalidConfigurationRequestException", - "error":{ - "code":"InvalidConfigurationRequest", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

Requested configuration change is invalid.

" - } - ], - "documentation":"

Modifies the attributes of a specified load balancer.

You can modify the load balancer attributes, such as AccessLogs, ConnectionDraining, and CrossZoneLoadBalancing by either enabling or disabling them. Or, you can modify the load balancer attribute ConnectionSettings by specifying an idle connection timeout value for your load balancer.

For more information, see the following:

" - }, - "RegisterInstancesWithLoadBalancer":{ - "name":"RegisterInstancesWithLoadBalancer", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"RegisterEndPointsInput", - "documentation":"

The input for the RegisterInstancesWithLoadBalancer action.

" - }, - "output":{ - "shape":"RegisterEndPointsOutput", - "documentation":"

The output for the RegisterInstancesWithLoadBalancer action.

", - "resultWrapper":"RegisterInstancesWithLoadBalancerResult" - }, - "errors":[ - { - "shape":"AccessPointNotFoundException", - "error":{ - "code":"LoadBalancerNotFound", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified load balancer could not be found.

" - }, - { - "shape":"InvalidEndPointException", - "error":{ - "code":"InvalidInstance", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified EndPoint is not valid.

" - } - ], - "documentation":"

Adds new instances to the load balancer.

Once the instance is registered, it starts receiving traffic and requests from the load balancer. Any instance that is not in any of the Availability Zones registered for the load balancer will be moved to the OutOfService state. It will move to the InService state when the Availability Zone is added to the load balancer.

When an instance registered with a load balancer is stopped and then restarted, the IP addresses associated with the instance changes. Elastic Load Balancing cannot recognize the new IP address, which prevents it from routing traffic to the instances. We recommend that you de-register your Amazon EC2 instances from your load balancer after you stop your instance, and then register the load balancer with your instance after you've restarted. To de-register your instances from load balancer, use DeregisterInstancesFromLoadBalancer action.

For more information, see De-register and Register Amazon EC2 Instances in the Elastic Load Balancing Developer Guide.

In order for this call to be successful, you must provide the same account credentials as those that were used to create the load balancer. Completion of this API does not guarantee that operation has completed. Rather, it means that the request has been registered and the changes will happen shortly.

You can use DescribeLoadBalancers or DescribeInstanceHealth action to check the state of the newly registered instances.

" - }, - "RemoveTags":{ - "name":"RemoveTags", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"RemoveTagsInput", - "documentation":"

The input for the RemoveTags action.

" - }, - "output":{ - "shape":"RemoveTagsOutput", - "documentation":"

The output for the RemoveTags action.

", - "resultWrapper":"RemoveTagsResult" - }, - "errors":[ - { - "shape":"AccessPointNotFoundException", - "error":{ - "code":"LoadBalancerNotFound", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified load balancer could not be found.

" - } - ], - "documentation":"

Removes one or more tags from the specified load balancer.

" - }, - "SetLoadBalancerListenerSSLCertificate":{ - "name":"SetLoadBalancerListenerSSLCertificate", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"SetLoadBalancerListenerSSLCertificateInput", - "documentation":"

The input for the SetLoadBalancerListenerSSLCertificate action.

" - }, - "output":{ - "shape":"SetLoadBalancerListenerSSLCertificateOutput", - "documentation":"

The output for the SetLoadBalancerListenerSSLCertificate action.

", - "resultWrapper":"SetLoadBalancerListenerSSLCertificateResult" - }, - "errors":[ - { - "shape":"CertificateNotFoundException", - "error":{ - "code":"CertificateNotFound", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified SSL ID does not refer to a valid SSL certificate in the AWS Identity and Access Management Service.

" - }, - { - "shape":"AccessPointNotFoundException", - "error":{ - "code":"LoadBalancerNotFound", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified load balancer could not be found.

" - }, - { - "shape":"ListenerNotFoundException", - "error":{ - "code":"ListenerNotFound", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Load balancer does not have a listener configured at the given port.

" - }, - { - "shape":"InvalidConfigurationRequestException", - "error":{ - "code":"InvalidConfigurationRequest", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

Requested configuration change is invalid.

" - } - ], - "documentation":"

Sets the certificate that terminates the specified listener's SSL connections. The specified certificate replaces any prior certificate that was used on the same load balancer and port.

For more information on updating your SSL certificate, see Updating an SSL Certificate for a Load Balancer in the Elastic Load Balancing Developer Guide.

" - }, - "SetLoadBalancerPoliciesForBackendServer":{ - "name":"SetLoadBalancerPoliciesForBackendServer", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"SetLoadBalancerPoliciesForBackendServerInput", - "documentation":"

The input for the SetLoadBalancerPoliciesForBackendServer action.

" - }, - "output":{ - "shape":"SetLoadBalancerPoliciesForBackendServerOutput", - "documentation":"

The output for the SetLoadBalancerPoliciesForBackendServer action.

", - "resultWrapper":"SetLoadBalancerPoliciesForBackendServerResult" - }, - "errors":[ - { - "shape":"AccessPointNotFoundException", - "error":{ - "code":"LoadBalancerNotFound", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified load balancer could not be found.

" - }, - { - "shape":"PolicyNotFoundException", - "error":{ - "code":"PolicyNotFound", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

One or more specified policies were not found.

" - }, - { - "shape":"InvalidConfigurationRequestException", - "error":{ - "code":"InvalidConfigurationRequest", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

Requested configuration change is invalid.

" - } - ], - "documentation":"

Replaces the current set of policies associated with a port on which the back-end server is listening with a new set of policies. After the policies have been created using CreateLoadBalancerPolicy, they can be applied here as a list. At this time, only the back-end server authentication policy type can be applied to the back-end ports; this policy type is composed of multiple public key policies.

The SetLoadBalancerPoliciesForBackendServer replaces the current set of policies associated with the specified instance port. Every time you use this action to enable the policies, use the PolicyNames parameter to list all the policies you want to enable.

You can use DescribeLoadBalancers or DescribeLoadBalancerPolicies action to verify that the policy has been associated with the back-end server.

" - }, - "SetLoadBalancerPoliciesOfListener":{ - "name":"SetLoadBalancerPoliciesOfListener", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"SetLoadBalancerPoliciesOfListenerInput", - "documentation":"

The input for the SetLoadBalancerPoliciesOfListener action.

" - }, - "output":{ - "shape":"SetLoadBalancerPoliciesOfListenerOutput", - "documentation":"

The output for the SetLoadBalancerPoliciesOfListener action.

", - "resultWrapper":"SetLoadBalancerPoliciesOfListenerResult" - }, - "errors":[ - { - "shape":"AccessPointNotFoundException", - "error":{ - "code":"LoadBalancerNotFound", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified load balancer could not be found.

" - }, - { - "shape":"PolicyNotFoundException", - "error":{ - "code":"PolicyNotFound", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

One or more specified policies were not found.

" - }, - { - "shape":"ListenerNotFoundException", - "error":{ - "code":"ListenerNotFound", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Load balancer does not have a listener configured at the given port.

" - }, - { - "shape":"InvalidConfigurationRequestException", - "error":{ - "code":"InvalidConfigurationRequest", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

Requested configuration change is invalid.

" - } - ], - "documentation":"

Associates, updates, or disables a policy with a listener on the load balancer. You can associate multiple policies with a listener.

" - } - }, - "shapes":{ - "AccessLog":{ - "type":"structure", - "required":["Enabled"], - "members":{ - "Enabled":{ - "shape":"AccessLogEnabled", - "documentation":"

Specifies whether access log is enabled for the load balancer.

" - }, - "S3BucketName":{ - "shape":"S3BucketName", - "documentation":"

The name of the Amazon S3 bucket where the access logs are stored.

" - }, - "EmitInterval":{ - "shape":"AccessLogInterval", - "documentation":"

The interval for publishing the access logs. You can specify an interval of either 5 minutes or 60 minutes.

Default: 60 minutes

" - }, - "S3BucketPrefix":{ - "shape":"AccessLogPrefix", - "documentation":"

The logical hierarchy you created for your Amazon S3 bucket, for example my-bucket-prefix/prod. If the prefix is not provided, the log is placed at the root level of the bucket.

" - } - }, - "documentation":"

The AccessLog data type.

" - }, - "AccessLogEnabled":{"type":"boolean"}, - "AccessLogInterval":{"type":"integer"}, - "AccessLogPrefix":{"type":"string"}, - "AccessPointName":{"type":"string"}, - "AccessPointNotFoundException":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"LoadBalancerNotFound", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified load balancer could not be found.

" - }, - "AccessPointPort":{"type":"integer"}, - "AddAvailabilityZonesInput":{ - "type":"structure", - "required":[ - "LoadBalancerName", - "AvailabilityZones" - ], - "members":{ - "LoadBalancerName":{ - "shape":"AccessPointName", - "documentation":"

The name associated with the load balancer.

" - }, - "AvailabilityZones":{ - "shape":"AvailabilityZones", - "documentation":"

A list of new Availability Zones for the load balancer. Each Availability Zone must be in the same region as the load balancer.

" - } - }, - "documentation":"

The input for the EnableAvailabilityZonesForLoadBalancer action.

" - }, - "AddAvailabilityZonesOutput":{ - "type":"structure", - "members":{ - "AvailabilityZones":{ - "shape":"AvailabilityZones", - "documentation":"

An updated list of Availability Zones for the load balancer.

" - } - }, - "documentation":"

The output for the EnableAvailabilityZonesForLoadBalancer action.

" - }, - "AddTagsInput":{ - "type":"structure", - "required":[ - "LoadBalancerNames", - "Tags" - ], - "members":{ - "LoadBalancerNames":{ - "shape":"LoadBalancerNames", - "documentation":"

The name of the load balancer to tag. You can specify a maximum of one load balancer name.

" - }, - "Tags":{ - "shape":"TagList", - "documentation":"

A list of tags for each load balancer.

" - } - }, - "documentation":"The input for the AddTags action" - }, - "AddTagsOutput":{ - "type":"structure", - "members":{ - }, - "documentation":"The output for the AddTags action." - }, - "AdditionalAttribute":{ - "type":"structure", - "members":{ - "Key":{"shape":"StringVal"}, - "Value":{"shape":"StringVal"} - } - }, - "AdditionalAttributes":{ - "type":"list", - "member":{"shape":"AdditionalAttribute"} - }, - "AppCookieStickinessPolicies":{ - "type":"list", - "member":{"shape":"AppCookieStickinessPolicy"} - }, - "AppCookieStickinessPolicy":{ - "type":"structure", - "members":{ - "PolicyName":{ - "shape":"PolicyName", - "documentation":"

The mnemonic name for the policy being created. The name must be unique within a set of policies for this load balancer.

" - }, - "CookieName":{ - "shape":"CookieName", - "documentation":"

The name of the application cookie used for stickiness.

" - } - }, - "documentation":"

The AppCookieStickinessPolicy data type.

" - }, - "ApplySecurityGroupsToLoadBalancerInput":{ - "type":"structure", - "required":[ - "LoadBalancerName", - "SecurityGroups" - ], - "members":{ - "LoadBalancerName":{ - "shape":"AccessPointName", - "documentation":"

The name associated with the load balancer. The name must be unique within the set of load balancers associated with your AWS account.

" - }, - "SecurityGroups":{ - "shape":"SecurityGroups", - "documentation":"

A list of security group IDs to associate with your load balancer in VPC. The security group IDs must be provided as the ID and not the security group name (For example, sg-1234).

" - } - }, - "documentation":"

The input for the ApplySecurityGroupsToLoadBalancer action.

" - }, - "ApplySecurityGroupsToLoadBalancerOutput":{ - "type":"structure", - "members":{ - "SecurityGroups":{ - "shape":"SecurityGroups", - "documentation":"

A list of security group IDs associated with your load balancer.

" - } - }, - "documentation":"

The out for the ApplySecurityGroupsToLoadBalancer action.

" - }, - "AttachLoadBalancerToSubnetsInput":{ - "type":"structure", - "required":[ - "LoadBalancerName", - "Subnets" - ], - "members":{ - "LoadBalancerName":{ - "shape":"AccessPointName", - "documentation":"

The name associated with the load balancer. The name must be unique within the set of load balancers associated with your AWS account.

" - }, - "Subnets":{ - "shape":"Subnets", - "documentation":"

A list of subnet IDs to add for the load balancer. You can add only one subnet per Availability Zone.

" - } - }, - "documentation":"

The input for the AttachLoadBalancerToSubnets action.

" - }, - "AttachLoadBalancerToSubnetsOutput":{ - "type":"structure", - "members":{ - "Subnets":{ - "shape":"Subnets", - "documentation":"

A list of subnet IDs attached to the load balancer.

" - } - }, - "documentation":"

The output for the AttachLoadBalancerToSubnets action.

" - }, - "AttributeName":{"type":"string"}, - "AttributeType":{"type":"string"}, - "AttributeValue":{"type":"string"}, - "AvailabilityZone":{"type":"string"}, - "AvailabilityZones":{ - "type":"list", - "member":{"shape":"AvailabilityZone"} - }, - "BackendServerDescription":{ - "type":"structure", - "members":{ - "InstancePort":{ - "shape":"InstancePort", - "documentation":"

Provides the port on which the back-end server is listening.

" - }, - "PolicyNames":{ - "shape":"PolicyNames", - "documentation":"

Provides a list of policy names enabled for the back-end server.

" - } - }, - "documentation":"

This data type is used as a response element in the DescribeLoadBalancers action to describe the configuration of the back-end server.

" - }, - "BackendServerDescriptions":{ - "type":"list", - "member":{"shape":"BackendServerDescription"} - }, - "Cardinality":{"type":"string"}, - "CertificateNotFoundException":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"CertificateNotFound", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified SSL ID does not refer to a valid SSL certificate in the AWS Identity and Access Management Service.

" - }, - "ConfigureHealthCheckInput":{ - "type":"structure", - "required":[ - "LoadBalancerName", - "HealthCheck" - ], - "members":{ - "LoadBalancerName":{ - "shape":"AccessPointName", - "documentation":"

The mnemonic name associated with the load balancer. The name must be unique within the set of load balancers associated with your AWS account.

" - }, - "HealthCheck":{ - "shape":"HealthCheck", - "documentation":"

A structure containing the configuration information for the new healthcheck.

" - } - }, - "documentation":"

Input for the ConfigureHealthCheck action.

" - }, - "ConfigureHealthCheckOutput":{ - "type":"structure", - "members":{ - "HealthCheck":{ - "shape":"HealthCheck", - "documentation":"

The updated healthcheck for the instances.

" - } - }, - "documentation":"

The output for the ConfigureHealthCheck action.

" - }, - "ConnectionDraining":{ - "type":"structure", - "required":["Enabled"], - "members":{ - "Enabled":{ - "shape":"ConnectionDrainingEnabled", - "documentation":"

Specifies whether connection draining is enabled for the load balancer.

" - }, - "Timeout":{ - "shape":"ConnectionDrainingTimeout", - "documentation":"

Specifies the maximum time (in seconds) to keep the existing connections open before deregistering the instances.

" - } - }, - "documentation":"

The ConnectionDraining data type.

" - }, - "ConnectionDrainingEnabled":{"type":"boolean"}, - "ConnectionDrainingTimeout":{"type":"integer"}, - "ConnectionSettings":{ - "type":"structure", - "required":["IdleTimeout"], - "members":{ - "IdleTimeout":{ - "shape":"IdleTimeout", - "documentation":"

Specifies the time (in seconds) the connection is allowed to be idle (no data has been sent over the connection) before it is closed by the load balancer.

" - } - }, - "documentation":"

The ConnectionSettings data type.

" - }, - "CookieExpirationPeriod":{"type":"long"}, - "CookieName":{"type":"string"}, - "CreateAccessPointInput":{ - "type":"structure", - "required":[ - "LoadBalancerName", - "Listeners" - ], - "members":{ - "LoadBalancerName":{ - "shape":"AccessPointName", - "documentation":"

The name associated with the load balancer. The name must be unique within your set of load balancers, must have a maximum of 32 characters, and must only contain alphanumeric characters or hyphens.

" - }, - "Listeners":{ - "shape":"Listeners", - "documentation":"

A list of the following tuples: Protocol, LoadBalancerPort, InstanceProtocol, InstancePort, and SSLCertificateId.

" - }, - "AvailabilityZones":{ - "shape":"AvailabilityZones", - "documentation":"

A list of Availability Zones.

At least one Availability Zone must be specified. Specified Availability Zones must be in the same EC2 Region as the load balancer. Traffic will be equally distributed across all zones.

You can later add more Availability Zones after the creation of the load balancer by calling EnableAvailabilityZonesForLoadBalancer action.

" - }, - "Subnets":{ - "shape":"Subnets", - "documentation":"

A list of subnet IDs in your VPC to attach to your load balancer. Specify one subnet per Availability Zone.

" - }, - "SecurityGroups":{ - "shape":"SecurityGroups", - "documentation":"

The security groups to assign to your load balancer within your VPC.

" - }, - "Scheme":{ - "shape":"LoadBalancerScheme", - "documentation":"

The type of a load balancer.

By default, Elastic Load Balancing creates an Internet-facing load balancer with a publicly resolvable DNS name, which resolves to public IP addresses. For more information about Internet-facing and Internal load balancers, see Internet-facing and Internal Load Balancers.

Specify the value internal for this option to create an internal load balancer with a DNS name that resolves to private IP addresses.

This option is only available for load balancers created within EC2-VPC.

" - }, - "Tags":{ - "shape":"TagList", - "documentation":"

A list of tags to assign to the load balancer.

For more information about setting tags for your load balancer, see Tagging.

" - } - }, - "documentation":"

The input for the CreateLoadBalancer action.

" - }, - "CreateAccessPointOutput":{ - "type":"structure", - "members":{ - "DNSName":{ - "shape":"DNSName", - "documentation":"

The DNS name for the load balancer.

" - } - }, - "documentation":"

The output for the CreateLoadBalancer action.

" - }, - "CreateAppCookieStickinessPolicyInput":{ - "type":"structure", - "required":[ - "LoadBalancerName", - "PolicyName", - "CookieName" - ], - "members":{ - "LoadBalancerName":{ - "shape":"AccessPointName", - "documentation":"

The name of the load balancer.

" - }, - "PolicyName":{ - "shape":"PolicyName", - "documentation":"

The name of the policy being created. The name must be unique within the set of policies for this load balancer.

" - }, - "CookieName":{ - "shape":"CookieName", - "documentation":"

Name of the application cookie used for stickiness.

" - } - }, - "documentation":"

The input for the CreateAppCookieStickinessPolicy action.

" - }, - "CreateAppCookieStickinessPolicyOutput":{ - "type":"structure", - "members":{ - }, - "documentation":"

The output for the CreateAppCookieStickinessPolicy action.

" - }, - "CreateLBCookieStickinessPolicyInput":{ - "type":"structure", - "required":[ - "LoadBalancerName", - "PolicyName" - ], - "members":{ - "LoadBalancerName":{ - "shape":"AccessPointName", - "documentation":"

The name associated with the load balancer.

" - }, - "PolicyName":{ - "shape":"PolicyName", - "documentation":"

The name of the policy being created. The name must be unique within the set of policies for this load balancer.

" - }, - "CookieExpirationPeriod":{ - "shape":"CookieExpirationPeriod", - "documentation":"

The time period in seconds after which the cookie should be considered stale. Not specifying this parameter indicates that the sticky session will last for the duration of the browser session.

" - } - }, - "documentation":"

The input for the CreateLBCookieStickinessPolicy action.

" - }, - "CreateLBCookieStickinessPolicyOutput":{ - "type":"structure", - "members":{ - }, - "documentation":"

The output for the CreateLBCookieStickinessPolicy action.

" - }, - "CreateLoadBalancerListenerInput":{ - "type":"structure", - "required":[ - "LoadBalancerName", - "Listeners" - ], - "members":{ - "LoadBalancerName":{ - "shape":"AccessPointName", - "documentation":"

The name of the load balancer.

" - }, - "Listeners":{ - "shape":"Listeners", - "documentation":"

A list of LoadBalancerPort, InstancePort, Protocol, InstanceProtocol, and SSLCertificateId items.

" - } - }, - "documentation":"

The input for the CreateLoadBalancerListeners action.

" - }, - "CreateLoadBalancerListenerOutput":{ - "type":"structure", - "members":{ - }, - "documentation":"

The output for the CreateLoadBalancerListeners action.

" - }, - "CreateLoadBalancerPolicyInput":{ - "type":"structure", - "required":[ - "LoadBalancerName", - "PolicyName", - "PolicyTypeName" - ], - "members":{ - "LoadBalancerName":{ - "shape":"AccessPointName", - "documentation":"

The name associated with the LoadBalancer for which the policy is being created.

" - }, - "PolicyName":{ - "shape":"PolicyName", - "documentation":"

The name of the load balancer policy being created. The name must be unique within the set of policies for this load balancer.

" - }, - "PolicyTypeName":{ - "shape":"PolicyTypeName", - "documentation":"

The name of the base policy type being used to create this policy. To get the list of policy types, use the DescribeLoadBalancerPolicyTypes action.

" - }, - "PolicyAttributes":{ - "shape":"PolicyAttributes", - "documentation":"

A list of attributes associated with the policy being created.

" - } - } - }, - "CreateLoadBalancerPolicyOutput":{ - "type":"structure", - "members":{ - }, - "documentation":"

The output for the CreateLoadBalancerPolicy action.

" - }, - "CreatedTime":{"type":"timestamp"}, - "CrossZoneLoadBalancing":{ - "type":"structure", - "required":["Enabled"], - "members":{ - "Enabled":{ - "shape":"CrossZoneLoadBalancingEnabled", - "documentation":"

Specifies whether cross-zone load balancing is enabled for the load balancer.

" - } - }, - "documentation":"

The CrossZoneLoadBalancing data type.

" - }, - "CrossZoneLoadBalancingEnabled":{"type":"boolean"}, - "DNSName":{"type":"string"}, - "DefaultValue":{"type":"string"}, - "DeleteAccessPointInput":{ - "type":"structure", - "required":["LoadBalancerName"], - "members":{ - "LoadBalancerName":{ - "shape":"AccessPointName", - "documentation":"

The name associated with the load balancer.

" - } - }, - "documentation":"

The input for the DeleteLoadBalancer action.

" - }, - "DeleteAccessPointOutput":{ - "type":"structure", - "members":{ - }, - "documentation":"

The output for the DeleteLoadBalancer action.

" - }, - "DeleteLoadBalancerListenerInput":{ - "type":"structure", - "required":[ - "LoadBalancerName", - "LoadBalancerPorts" - ], - "members":{ - "LoadBalancerName":{ - "shape":"AccessPointName", - "documentation":"

The mnemonic name associated with the load balancer.

" - }, - "LoadBalancerPorts":{ - "shape":"Ports", - "documentation":"

The client port number(s) of the load balancer listener(s) to be removed.

" - } - }, - "documentation":"

The input for the DeleteLoadBalancerListeners action.

" - }, - "DeleteLoadBalancerListenerOutput":{ - "type":"structure", - "members":{ - }, - "documentation":"

The output for the DeleteLoadBalancerListeners action.

" - }, - "DeleteLoadBalancerPolicyInput":{ - "type":"structure", - "required":[ - "LoadBalancerName", - "PolicyName" - ], - "members":{ - "LoadBalancerName":{ - "shape":"AccessPointName", - "documentation":"

The mnemonic name associated with the load balancer.

" - }, - "PolicyName":{ - "shape":"PolicyName", - "documentation":"

The mnemonic name for the policy being deleted.

" - } - }, - "documentation":"

The input for the DeleteLoadBalancerPolicy action.

" - }, - "DeleteLoadBalancerPolicyOutput":{ - "type":"structure", - "members":{ - }, - "documentation":"

The output for the DeleteLoadBalancerPolicy action.

" - }, - "DeregisterEndPointsInput":{ - "type":"structure", - "required":[ - "LoadBalancerName", - "Instances" - ], - "members":{ - "LoadBalancerName":{ - "shape":"AccessPointName", - "documentation":"

The name associated with the load balancer.

" - }, - "Instances":{ - "shape":"Instances", - "documentation":"

A list of EC2 instance IDs consisting of all instances to be deregistered.

" - } - }, - "documentation":"

The input for the DeregisterInstancesFromLoadBalancer action.

" - }, - "DeregisterEndPointsOutput":{ - "type":"structure", - "members":{ - "Instances":{ - "shape":"Instances", - "documentation":"

An updated list of remaining instances registered with the load balancer.

" - } - }, - "documentation":"

The output for the DeregisterInstancesFromLoadBalancer action.

" - }, - "DescribeAccessPointsInput":{ - "type":"structure", - "members":{ - "LoadBalancerNames":{ - "shape":"LoadBalancerNames", - "documentation":"

A list of load balancer names associated with the account.

" - }, - "Marker":{ - "shape":"Marker", - "documentation":"

An optional parameter used for pagination of results from this call. If specified, the response includes only records beyond the marker.

" - }, - "PageSize":{ - "shape":"PageSize", - "documentation":"

The number of results returned in each page. The default is 400. You cannot specify a page size greater than 400 or less than 1.

" - } - }, - "documentation":"

The input for the DescribeLoadBalancers action.

" - }, - "DescribeAccessPointsOutput":{ - "type":"structure", - "members":{ - "LoadBalancerDescriptions":{ - "shape":"LoadBalancerDescriptions", - "documentation":"

A list of load balancer description structures.

" - }, - "NextMarker":{ - "shape":"Marker", - "documentation":"

Specifies the value of next marker if the request returned more than one page of results.

" - } - }, - "documentation":"

The output for the DescribeLoadBalancers action.

" - }, - "DescribeEndPointStateInput":{ - "type":"structure", - "required":["LoadBalancerName"], - "members":{ - "LoadBalancerName":{ - "shape":"AccessPointName", - "documentation":"

The name of the load balancer.

" - }, - "Instances":{ - "shape":"Instances", - "documentation":"

A list of instance IDs whose states are being queried.

" - } - }, - "documentation":"

The input for the DescribeEndPointState action.

" - }, - "DescribeEndPointStateOutput":{ - "type":"structure", - "members":{ - "InstanceStates":{ - "shape":"InstanceStates", - "documentation":"

A list containing health information for the specified instances.

" - } - }, - "documentation":"

The output for the DescribeInstanceHealth action.

" - }, - "DescribeLoadBalancerAttributesInput":{ - "type":"structure", - "required":["LoadBalancerName"], - "members":{ - "LoadBalancerName":{ - "shape":"AccessPointName", - "documentation":"

The name of the load balancer.

" - } - }, - "documentation":"

The input for the DescribeLoadBalancerAttributes action.

" - }, - "DescribeLoadBalancerAttributesOutput":{ - "type":"structure", - "members":{ - "LoadBalancerAttributes":{ - "shape":"LoadBalancerAttributes", - "documentation":"

The load balancer attributes structure.

" - } - }, - "documentation":"

The following element is returned in a structure named DescribeLoadBalancerAttributesResult.

" - }, - "DescribeLoadBalancerPoliciesInput":{ - "type":"structure", - "members":{ - "LoadBalancerName":{ - "shape":"AccessPointName", - "documentation":"

The mnemonic name associated with the load balancer. If no name is specified, the operation returns the attributes of either all the sample policies pre-defined by Elastic Load Balancing or the specified sample polices.

" - }, - "PolicyNames":{ - "shape":"PolicyNames", - "documentation":"

The names of load balancer policies you've created or Elastic Load Balancing sample policy names.

" - } - } - }, - "DescribeLoadBalancerPoliciesOutput":{ - "type":"structure", - "members":{ - "PolicyDescriptions":{ - "shape":"PolicyDescriptions", - "documentation":"

A list of policy description structures.

" - } - }, - "documentation":"

The output for the DescribeLoadBalancerPolicies action.

" - }, - "DescribeLoadBalancerPolicyTypesInput":{ - "type":"structure", - "members":{ - "PolicyTypeNames":{ - "shape":"PolicyTypeNames", - "documentation":"

Specifies the name of the policy types. If no names are specified, returns the description of all the policy types defined by Elastic Load Balancing service.

" - } - } - }, - "DescribeLoadBalancerPolicyTypesOutput":{ - "type":"structure", - "members":{ - "PolicyTypeDescriptions":{ - "shape":"PolicyTypeDescriptions", - "documentation":"

List of policy type description structures of the specified policy type. If no policy type names are specified, returns the description of all the policy types defined by Elastic Load Balancing service.

" - } - }, - "documentation":"

The output for the DescribeLoadBalancerPolicyTypes action.

" - }, - "DescribeTagsInput":{ - "type":"structure", - "required":["LoadBalancerNames"], - "members":{ - "LoadBalancerNames":{ - "shape":"LoadBalancerNamesMax20", - "documentation":"

The names of the load balancers.

" - } - }, - "documentation":"

The input for the DescribeTags action.

" - }, - "DescribeTagsOutput":{ - "type":"structure", - "members":{ - "TagDescriptions":{ - "shape":"TagDescriptions", - "documentation":"

A list of tag description structures.

" - } - }, - "documentation":"

The output for the DescribeTags action.

" - }, - "Description":{"type":"string"}, - "DetachLoadBalancerFromSubnetsInput":{ - "type":"structure", - "required":[ - "LoadBalancerName", - "Subnets" - ], - "members":{ - "LoadBalancerName":{ - "shape":"AccessPointName", - "documentation":"

The name associated with the load balancer to be detached.

" - }, - "Subnets":{ - "shape":"Subnets", - "documentation":"

A list of subnet IDs to remove from the set of configured subnets for the load balancer.

" - } - }, - "documentation":"

The input for the DetachLoadBalancerFromSubnets action.

" - }, - "DetachLoadBalancerFromSubnetsOutput":{ - "type":"structure", - "members":{ - "Subnets":{ - "shape":"Subnets", - "documentation":"

A list of subnet IDs the load balancer is now attached to.

" - } - }, - "documentation":"

The output for the DetachLoadBalancerFromSubnets action.

" - }, - "DuplicateAccessPointNameException":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"DuplicateLoadBalancerName", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The load balancer name already exists for this account. Please choose another name.

" - }, - "DuplicateListenerException":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"DuplicateListener", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

A Listener already exists for the given LoadBalancerName and LoadBalancerPort, but with a different InstancePort, Protocol, or SSLCertificateId.

" - }, - "DuplicatePolicyNameException":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"DuplicatePolicyName", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Policy with the same name exists for this load balancer. Please choose another name.

" - }, - "DuplicateTagKeysException":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"DuplicateTagKeys", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The same tag key specified multiple times.

" - }, - "EndPointPort":{"type":"integer"}, - "HealthCheck":{ - "type":"structure", - "required":[ - "Target", - "Interval", - "Timeout", - "UnhealthyThreshold", - "HealthyThreshold" - ], - "members":{ - "Target":{ - "shape":"HealthCheckTarget", - "documentation":"

Specifies the instance being checked. The protocol is either TCP, HTTP, HTTPS, or SSL. The range of valid ports is one (1) through 65535.

TCP is the default, specified as a TCP: port pair, for example \"TCP:5000\". In this case a healthcheck simply attempts to open a TCP connection to the instance on the specified port. Failure to connect within the configured timeout is considered unhealthy.

SSL is also specified as SSL: port pair, for example, SSL:5000.

For HTTP or HTTPS protocol, the situation is different. You have to include a ping path in the string. HTTP is specified as a HTTP:port;/;PathToPing; grouping, for example \"HTTP:80/weather/us/wa/seattle\". In this case, a HTTP GET request is issued to the instance on the given port and path. Any answer other than \"200 OK\" within the timeout period is considered unhealthy.

The total length of the HTTP ping target needs to be 1024 16-bit Unicode characters or less.

" - }, - "Interval":{ - "shape":"HealthCheckInterval", - "documentation":"

Specifies the approximate interval, in seconds, between health checks of an individual instance.

" - }, - "Timeout":{ - "shape":"HealthCheckTimeout", - "documentation":"

Specifies the amount of time, in seconds, during which no response means a failed health probe.

This value must be less than the Interval value. " - }, - "UnhealthyThreshold":{ - "shape":"UnhealthyThreshold", - "documentation":"

Specifies the number of consecutive health probe failures required before moving the instance to the Unhealthy state.

" - }, - "HealthyThreshold":{ - "shape":"HealthyThreshold", - "documentation":"

Specifies the number of consecutive health probe successes required before moving the instance to the Healthy state.

" - } - }, - "documentation":"

The HealthCheck data type.

" - }, - "HealthCheckInterval":{ - "type":"integer", - "min":1, - "max":300 - }, - "HealthCheckTarget":{"type":"string"}, - "HealthCheckTimeout":{ - "type":"integer", - "min":1, - "max":300 - }, - "HealthyThreshold":{ - "type":"integer", - "min":2, - "max":10 - }, - "IdleTimeout":{ - "type":"integer", - "min":1, - "max":3600 - }, - "Instance":{ - "type":"structure", - "members":{ - "InstanceId":{ - "shape":"InstanceId", - "documentation":"

Provides an EC2 instance ID.

" - } - }, - "documentation":"

The Instance data type.

" - }, - "InstanceId":{"type":"string"}, - "InstancePort":{ - "type":"integer", - "min":1, - "max":65535 - }, - "InstanceState":{ - "type":"structure", - "members":{ - "InstanceId":{ - "shape":"InstanceId", - "documentation":"

Provides an EC2 instance ID.

" - }, - "State":{ - "shape":"State", - "documentation":"

Specifies the current state of the instance.

Valid value: InService|OutOfService|Unknown

" - }, - "ReasonCode":{ - "shape":"ReasonCode", - "documentation":"

Provides information about the cause of OutOfService instances. Specifically, it indicates whether the cause is Elastic Load Balancing or the instance behind the load balancer.

Valid value: ELB|Instance|N/A

" - }, - "Description":{ - "shape":"Description", - "documentation":"

Provides a description of the instance state.

" - } - }, - "documentation":"

The InstanceState data type.

" - }, - "InstanceStates":{ - "type":"list", - "member":{"shape":"InstanceState"} - }, - "Instances":{ - "type":"list", - "member":{"shape":"Instance"} - }, - "InvalidConfigurationRequestException":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"InvalidConfigurationRequest", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

Requested configuration change is invalid.

" - }, - "InvalidEndPointException":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"InvalidInstance", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified EndPoint is not valid.

" - }, - "InvalidSchemeException":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"InvalidScheme", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Invalid value for scheme. Scheme can only be specified for load balancers in VPC.

" - }, - "InvalidSecurityGroupException":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"InvalidSecurityGroup", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

One or more specified security groups do not exist.

" - }, - "InvalidSubnetException":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"InvalidSubnet", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The VPC has no Internet gateway.

" - }, - "LBCookieStickinessPolicies":{ - "type":"list", - "member":{"shape":"LBCookieStickinessPolicy"} - }, - "LBCookieStickinessPolicy":{ - "type":"structure", - "members":{ - "PolicyName":{ - "shape":"PolicyName", - "documentation":"

The name for the policy being created. The name must be unique within the set of policies for this load balancer.

" - }, - "CookieExpirationPeriod":{ - "shape":"CookieExpirationPeriod", - "documentation":"

The time period in seconds after which the cookie should be considered stale. Not specifying this parameter indicates that the stickiness session will last for the duration of the browser session.

" - } - }, - "documentation":"

The LBCookieStickinessPolicy data type.

" - }, - "Listener":{ - "type":"structure", - "required":[ - "Protocol", - "LoadBalancerPort", - "InstancePort" - ], - "members":{ - "Protocol":{ - "shape":"Protocol", - "documentation":"

Specifies the load balancer transport protocol to use for routing - HTTP, HTTPS, TCP or SSL. This property cannot be modified for the life of the load balancer.

" - }, - "LoadBalancerPort":{ - "shape":"AccessPointPort", - "documentation":"

Specifies the external load balancer port number. This property cannot be modified for the life of the load balancer.

" - }, - "InstanceProtocol":{ - "shape":"Protocol", - "documentation":"

Specifies the protocol to use for routing traffic to back-end instances - HTTP, HTTPS, TCP, or SSL. This property cannot be modified for the life of the load balancer.

If the front-end protocol is HTTP or HTTPS, InstanceProtocol has to be at the same protocol layer, i.e., HTTP or HTTPS. Likewise, if the front-end protocol is TCP or SSL, InstanceProtocol has to be TCP or SSL. If there is another listener with the same InstancePort whose InstanceProtocol is secure, i.e., HTTPS or SSL, the listener's InstanceProtocol has to be secure, i.e., HTTPS or SSL. If there is another listener with the same InstancePort whose InstanceProtocol is HTTP or TCP, the listener's InstanceProtocol must be either HTTP or TCP. " - }, - "InstancePort":{ - "shape":"InstancePort", - "documentation":"

Specifies the TCP port on which the instance server is listening. This property cannot be modified for the life of the load balancer.

" - }, - "SSLCertificateId":{ - "shape":"SSLCertificateId", - "documentation":"

The ARN string of the server certificate. To get the ARN of the server certificate, call the AWS Identity and Access Management UploadServerCertificate API.

" - } - }, - "documentation":"

The Listener data type.

" - }, - "ListenerDescription":{ - "type":"structure", - "members":{ - "Listener":{"shape":"Listener"}, - "PolicyNames":{ - "shape":"PolicyNames", - "documentation":"

A list of policies enabled for this listener. An empty list indicates that no policies are enabled.

" - } - }, - "documentation":"

The ListenerDescription data type.

" - }, - "ListenerDescriptions":{ - "type":"list", - "member":{"shape":"ListenerDescription"} - }, - "ListenerNotFoundException":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"ListenerNotFound", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Load balancer does not have a listener configured at the given port.

" - }, - "Listeners":{ - "type":"list", - "member":{"shape":"Listener"} - }, - "LoadBalancerAttributeNotFoundException":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"LoadBalancerAttributeNotFound", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified load balancer attribute could not be found.

" - }, - "LoadBalancerAttributes":{ - "type":"structure", - "members":{ - "CrossZoneLoadBalancing":{ - "shape":"CrossZoneLoadBalancing", - "documentation":"

The name of the load balancer attribute. If enabled, the load balancer routes the request traffic evenly across all back-end instances regardless of the Availability Zones.

For more information, see Enable Cross-Zone Load Balancing.

" - }, - "AccessLog":{ - "shape":"AccessLog", - "documentation":"

The name of the load balancer attribute. If enabled, the load balancer captures detailed information of all the requests and delivers the information to the Amazon S3 bucket that you specify.

For more information, see Enable Access Logs.

" - }, - "ConnectionDraining":{ - "shape":"ConnectionDraining", - "documentation":"

The name of the load balancer attribute. If enabled, the load balancer allows existing requests to complete before the load balancer shifts traffic away from a deregistered or unhealthy back-end instance.

For more information, see Enable Connection Draining.

" - }, - "ConnectionSettings":{ - "shape":"ConnectionSettings", - "documentation":"

The name of the load balancer attribute.

By default, Elastic Load Balancing maintains a 60-second idle connection timeout for both front-end and back-end connections of your load balancer. If the ConnectionSettings attribute is set, Elastic Load Balancing will allow the connections to remain idle (no data is sent over the connection) for the specified duration.

For more information, see Configure Idle Connection Timeout.

" - }, - "AdditionalAttributes":{"shape":"AdditionalAttributes"} - }, - "documentation":"

The LoadBalancerAttributes data type.

" - }, - "LoadBalancerDescription":{ - "type":"structure", - "members":{ - "LoadBalancerName":{ - "shape":"AccessPointName", - "documentation":"

Specifies the name associated with the load balancer.

" - }, - "DNSName":{ - "shape":"DNSName", - "documentation":"

Specifies the external DNS name associated with the load balancer.

" - }, - "CanonicalHostedZoneName":{ - "shape":"DNSName", - "documentation":"

Provides the name of the Amazon Route 53 hosted zone that is associated with the load balancer. For information on how to associate your load balancer with a hosted zone, go to Using Domain Names With Elastic Load Balancing in the Elastic Load Balancing Developer Guide.

" - }, - "CanonicalHostedZoneNameID":{ - "shape":"DNSName", - "documentation":"

Provides the ID of the Amazon Route 53 hosted zone name that is associated with the load balancer. For information on how to associate or disassociate your load balancer with a hosted zone, go to Using Domain Names With Elastic Load Balancing in the Elastic Load Balancing Developer Guide.

" - }, - "ListenerDescriptions":{ - "shape":"ListenerDescriptions", - "documentation":"

LoadBalancerPort, InstancePort, Protocol, InstanceProtocol, and PolicyNames are returned in a list of tuples in the ListenerDescriptions element.

" - }, - "Policies":{ - "shape":"Policies", - "documentation":"

Provides a list of policies defined for the load balancer.

" - }, - "BackendServerDescriptions":{ - "shape":"BackendServerDescriptions", - "documentation":"

Contains a list of back-end server descriptions.

" - }, - "AvailabilityZones":{ - "shape":"AvailabilityZones", - "documentation":"

Specifies a list of Availability Zones.

" - }, - "Subnets":{ - "shape":"Subnets", - "documentation":"

Provides a list of VPC subnet IDs for the load balancer.

" - }, - "VPCId":{ - "shape":"VPCId", - "documentation":"

Provides the ID of the VPC attached to the load balancer.

" - }, - "Instances":{ - "shape":"Instances", - "documentation":"

Provides a list of EC2 instance IDs for the load balancer.

" - }, - "HealthCheck":{ - "shape":"HealthCheck", - "documentation":"

Specifies information regarding the various health probes conducted on the load balancer.

" - }, - "SourceSecurityGroup":{ - "shape":"SourceSecurityGroup", - "documentation":"

The security group that you can use as part of your inbound rules for your load balancer's back-end Amazon EC2 application instances. To only allow traffic from load balancers, add a security group rule to your back end instance that specifies this source security group as the inbound source.

" - }, - "SecurityGroups":{ - "shape":"SecurityGroups", - "documentation":"

The security groups the load balancer is a member of (VPC only).

" - }, - "CreatedTime":{ - "shape":"CreatedTime", - "documentation":"

Provides the date and time the load balancer was created.

" - }, - "Scheme":{ - "shape":"LoadBalancerScheme", - "documentation":"

Specifies the type of load balancer.

If the Scheme is internet-facing, the load balancer has a publicly resolvable DNS name that resolves to public IP addresses.

If the Scheme is internal, the load balancer has a publicly resolvable DNS name that resolves to private IP addresses.

This option is only available for load balancers attached to an Amazon VPC.

" - } - }, - "documentation":"

Contains the result of a successful invocation of DescribeLoadBalancers.

" - }, - "LoadBalancerDescriptions":{ - "type":"list", - "member":{"shape":"LoadBalancerDescription"} - }, - "LoadBalancerNames":{ - "type":"list", - "member":{"shape":"AccessPointName"} - }, - "LoadBalancerNamesMax20":{ - "type":"list", - "member":{"shape":"AccessPointName"}, - "min":1, - "max":20 - }, - "LoadBalancerScheme":{"type":"string"}, - "Marker":{"type":"string"}, - "ModifyLoadBalancerAttributesInput":{ - "type":"structure", - "required":[ - "LoadBalancerName", - "LoadBalancerAttributes" - ], - "members":{ - "LoadBalancerName":{ - "shape":"AccessPointName", - "documentation":"

The name of the load balancer.

" - }, - "LoadBalancerAttributes":{ - "shape":"LoadBalancerAttributes", - "documentation":"

Attributes of the load balancer.

" - } - }, - "documentation":"

The input for the ModifyLoadBalancerAttributes action.

" - }, - "ModifyLoadBalancerAttributesOutput":{ - "type":"structure", - "members":{ - "LoadBalancerName":{ - "shape":"AccessPointName", - "documentation":"

The name of the load balancer.

" - }, - "LoadBalancerAttributes":{"shape":"LoadBalancerAttributes"} - }, - "documentation":"

The output for the ModifyLoadBalancerAttributes action.

" - }, - "PageSize":{ - "type":"integer", - "min":1, - "max":400 - }, - "Policies":{ - "type":"structure", - "members":{ - "AppCookieStickinessPolicies":{ - "shape":"AppCookieStickinessPolicies", - "documentation":"

A list of the AppCookieStickinessPolicy objects created with CreateAppCookieStickinessPolicy.

" - }, - "LBCookieStickinessPolicies":{ - "shape":"LBCookieStickinessPolicies", - "documentation":"

A list of LBCookieStickinessPolicy objects created with CreateAppCookieStickinessPolicy.

" - }, - "OtherPolicies":{ - "shape":"PolicyNames", - "documentation":"

A list of policy names other than the stickiness policies.

" - } - }, - "documentation":"

The policies data type.

" - }, - "PolicyAttribute":{ - "type":"structure", - "members":{ - "AttributeName":{ - "shape":"AttributeName", - "documentation":"

The name of the attribute associated with the policy.

" - }, - "AttributeValue":{ - "shape":"AttributeValue", - "documentation":"

The value of the attribute associated with the policy.

" - } - }, - "documentation":"

The PolicyAttribute data type. This data type contains a key/value pair that defines properties of a specific policy.

" - }, - "PolicyAttributeDescription":{ - "type":"structure", - "members":{ - "AttributeName":{ - "shape":"AttributeName", - "documentation":"

The name of the attribute associated with the policy.

" - }, - "AttributeValue":{ - "shape":"AttributeValue", - "documentation":"

The value of the attribute associated with the policy.

" - } - }, - "documentation":"

The PolicyAttributeDescription data type. This data type is used to describe the attributes and values associated with a policy.

" - }, - "PolicyAttributeDescriptions":{ - "type":"list", - "member":{"shape":"PolicyAttributeDescription"} - }, - "PolicyAttributeTypeDescription":{ - "type":"structure", - "members":{ - "AttributeName":{ - "shape":"AttributeName", - "documentation":"

The name of the attribute associated with the policy type.

" - }, - "AttributeType":{ - "shape":"AttributeType", - "documentation":"

The type of attribute. For example, Boolean, Integer, etc.

" - }, - "Description":{ - "shape":"Description", - "documentation":"

A human-readable description of the attribute.

" - }, - "DefaultValue":{ - "shape":"DefaultValue", - "documentation":"

The default value of the attribute, if applicable.

" - }, - "Cardinality":{ - "shape":"Cardinality", - "documentation":"

The cardinality of the attribute. Valid Values:

" - } - }, - "documentation":"

The PolicyAttributeTypeDescription data type. This data type is used to describe values that are acceptable for the policy attribute.

" - }, - "PolicyAttributeTypeDescriptions":{ - "type":"list", - "member":{"shape":"PolicyAttributeTypeDescription"} - }, - "PolicyAttributes":{ - "type":"list", - "member":{"shape":"PolicyAttribute"} - }, - "PolicyDescription":{ - "type":"structure", - "members":{ - "PolicyName":{ - "shape":"PolicyName", - "documentation":"

The name of the policy associated with the load balancer.

" - }, - "PolicyTypeName":{ - "shape":"PolicyTypeName", - "documentation":"

The name of the policy type associated with the load balancer.

" - }, - "PolicyAttributeDescriptions":{ - "shape":"PolicyAttributeDescriptions", - "documentation":"

A list of policy attribute description structures.

" - } - }, - "documentation":"

The PolicyDescription data type.

" - }, - "PolicyDescriptions":{ - "type":"list", - "member":{"shape":"PolicyDescription"} - }, - "PolicyName":{"type":"string"}, - "PolicyNames":{ - "type":"list", - "member":{"shape":"PolicyName"} - }, - "PolicyNotFoundException":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"PolicyNotFound", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

One or more specified policies were not found.

" - }, - "PolicyTypeDescription":{ - "type":"structure", - "members":{ - "PolicyTypeName":{ - "shape":"PolicyTypeName", - "documentation":"

The name of the policy type.

" - }, - "Description":{ - "shape":"Description", - "documentation":"

A human-readable description of the policy type.

" - }, - "PolicyAttributeTypeDescriptions":{ - "shape":"PolicyAttributeTypeDescriptions", - "documentation":"

The description of the policy attributes associated with the load balancer policies defined by the Elastic Load Balancing service.

" - } - }, - "documentation":"

The PolicyTypeDescription data type.

" - }, - "PolicyTypeDescriptions":{ - "type":"list", - "member":{"shape":"PolicyTypeDescription"} - }, - "PolicyTypeName":{"type":"string"}, - "PolicyTypeNames":{ - "type":"list", - "member":{"shape":"PolicyTypeName"} - }, - "PolicyTypeNotFoundException":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"PolicyTypeNotFound", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

One or more of the specified policy types do not exist.

" - }, - "Ports":{ - "type":"list", - "member":{"shape":"AccessPointPort"} - }, - "Protocol":{"type":"string"}, - "ReasonCode":{"type":"string"}, - "RegisterEndPointsInput":{ - "type":"structure", - "required":[ - "LoadBalancerName", - "Instances" - ], - "members":{ - "LoadBalancerName":{ - "shape":"AccessPointName", - "documentation":"

The name associated with the load balancer. The name must be unique within your set of load balancers.

" - }, - "Instances":{ - "shape":"Instances", - "documentation":"

A list of instance IDs that should be registered with the load balancer.

" - } - }, - "documentation":"

The input for the RegisterInstancesWithLoadBalancer action.

" - }, - "RegisterEndPointsOutput":{ - "type":"structure", - "members":{ - "Instances":{ - "shape":"Instances", - "documentation":"

An updated list of instances for the load balancer.

" - } - }, - "documentation":"

The output for the RegisterInstancesWithLoadBalancer action.

" - }, - "RemoveAvailabilityZonesInput":{ - "type":"structure", - "required":[ - "LoadBalancerName", - "AvailabilityZones" - ], - "members":{ - "LoadBalancerName":{ - "shape":"AccessPointName", - "documentation":"

The name associated with the load balancer.

" - }, - "AvailabilityZones":{ - "shape":"AvailabilityZones", - "documentation":"

A list of Availability Zones to be removed from the load balancer.

There must be at least one Availability Zone registered with a load balancer at all times. Specified Availability Zones must be in the same region. " - } - }, - "documentation":"

The input for the DisableAvailabilityZonesForLoadBalancer action.

" - }, - "RemoveAvailabilityZonesOutput":{ - "type":"structure", - "members":{ - "AvailabilityZones":{ - "shape":"AvailabilityZones", - "documentation":"

A list of updated Availability Zones for the load balancer.

" - } - }, - "documentation":"

The output for the DisableAvailabilityZonesForLoadBalancer action.

" - }, - "RemoveTagsInput":{ - "type":"structure", - "required":[ - "LoadBalancerNames", - "Tags" - ], - "members":{ - "LoadBalancerNames":{ - "shape":"LoadBalancerNames", - "documentation":"

The name of the load balancer. You can specify a maximum of one load balancer name.

" - }, - "Tags":{ - "shape":"TagKeyList", - "documentation":"

A list of tag keys to remove.

" - } - }, - "documentation":"

The input for the RemoveTags action.

" - }, - "RemoveTagsOutput":{ - "type":"structure", - "members":{ - }, - "documentation":"

The output for the RemoveTags action.

" - }, - "S3BucketName":{"type":"string"}, - "SSLCertificateId":{"type":"string"}, - "SecurityGroupId":{"type":"string"}, - "SecurityGroupName":{"type":"string"}, - "SecurityGroupOwnerAlias":{"type":"string"}, - "SecurityGroups":{ - "type":"list", - "member":{"shape":"SecurityGroupId"} - }, - "SetLoadBalancerListenerSSLCertificateInput":{ - "type":"structure", - "required":[ - "LoadBalancerName", - "LoadBalancerPort", - "SSLCertificateId" - ], - "members":{ - "LoadBalancerName":{ - "shape":"AccessPointName", - "documentation":"

The name of the load balancer.

" - }, - "LoadBalancerPort":{ - "shape":"AccessPointPort", - "documentation":"

The port that uses the specified SSL certificate.

" - }, - "SSLCertificateId":{ - "shape":"SSLCertificateId", - "documentation":"

The Amazon Resource Number (ARN) of the SSL certificate chain to use. For more information on SSL certificates, see Managing Server Certificates in the AWS Identity and Access Management User Guide.

" - } - }, - "documentation":"

The input for the SetLoadBalancerListenerSSLCertificate action.

" - }, - "SetLoadBalancerListenerSSLCertificateOutput":{ - "type":"structure", - "members":{ - }, - "documentation":"

The output for the SetLoadBalancerListenerSSLCertificate action.

" - }, - "SetLoadBalancerPoliciesForBackendServerInput":{ - "type":"structure", - "required":[ - "LoadBalancerName", - "InstancePort", - "PolicyNames" - ], - "members":{ - "LoadBalancerName":{ - "shape":"AccessPointName", - "documentation":"

The mnemonic name associated with the load balancer. This name must be unique within the set of your load balancers.

" - }, - "InstancePort":{ - "shape":"EndPointPort", - "documentation":"

The port number associated with the back-end server.

" - }, - "PolicyNames":{ - "shape":"PolicyNames", - "documentation":"

List of policy names to be set. If the list is empty, then all current polices are removed from the back-end server.

" - } - }, - "documentation":"

The input for the SetLoadBalancerPoliciesForBackendServer action.

" - }, - "SetLoadBalancerPoliciesForBackendServerOutput":{ - "type":"structure", - "members":{ - }, - "documentation":"

The output for the SetLoadBalancerPoliciesForBackendServer action.

" - }, - "SetLoadBalancerPoliciesOfListenerInput":{ - "type":"structure", - "required":[ - "LoadBalancerName", - "LoadBalancerPort", - "PolicyNames" - ], - "members":{ - "LoadBalancerName":{ - "shape":"AccessPointName", - "documentation":"

The name of the load balancer.

" - }, - "LoadBalancerPort":{ - "shape":"AccessPointPort", - "documentation":"

The external port of the load balancer to associate the policy.

" - }, - "PolicyNames":{ - "shape":"PolicyNames", - "documentation":"

List of policies to be associated with the listener. If the list is empty, the current policy is removed from the listener.

" - } - }, - "documentation":"

The input for the SetLoadBalancerPoliciesOfListener action.

" - }, - "SetLoadBalancerPoliciesOfListenerOutput":{ - "type":"structure", - "members":{ - }, - "documentation":"

The output for the SetLoadBalancerPoliciesOfListener action.

" - }, - "SourceSecurityGroup":{ - "type":"structure", - "members":{ - "OwnerAlias":{ - "shape":"SecurityGroupOwnerAlias", - "documentation":"

Owner of the source security group. Use this value for the --source-group-user parameter of the ec2-authorize command in the Amazon EC2 command line tool.

" - }, - "GroupName":{ - "shape":"SecurityGroupName", - "documentation":"

Name of the source security group. Use this value for the --source-group parameter of the ec2-authorize command in the Amazon EC2 command line tool.

" - } - }, - "documentation":"

This data type is used as a response element in the DescribeLoadBalancers action. For information about Elastic Load Balancing security groups, go to Using Security Groups With Elastic Load Balancing in the Elastic Load Balancing Developer Guide.

" - }, - "State":{"type":"string"}, - "StringVal":{"type":"string"}, - "SubnetId":{"type":"string"}, - "SubnetNotFoundException":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"SubnetNotFound", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

One or more subnets were not found.

" - }, - "Subnets":{ - "type":"list", - "member":{"shape":"SubnetId"} - }, - "Tag":{ - "type":"structure", - "required":["Key"], - "members":{ - "Key":{ - "shape":"TagKey", - "documentation":"

The key of the tag.

" - }, - "Value":{ - "shape":"TagValue", - "documentation":"

The value of the tag.

" - } - }, - "documentation":"

Metadata assigned to a load balancer consisting of key-value pair.

For more information, see Tagging in the Elastic Load Balancing Developer Guide.

" - }, - "TagDescription":{ - "type":"structure", - "members":{ - "LoadBalancerName":{ - "shape":"AccessPointName", - "documentation":"

The name of the load balancer.

" - }, - "Tags":{ - "shape":"TagList", - "documentation":"

List of tags associated with the load balancer.

" - } - }, - "documentation":"

The descriptions of all the tags associated with load balancer.

" - }, - "TagDescriptions":{ - "type":"list", - "member":{"shape":"TagDescription"} - }, - "TagKey":{ - "type":"string", - "min":1, - "max":128, - "pattern":"^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$" - }, - "TagKeyList":{ - "type":"list", - "member":{"shape":"TagKeyOnly"}, - "min":1 - }, - "TagKeyOnly":{ - "type":"structure", - "members":{ - "Key":{ - "shape":"TagKey", - "documentation":"

The name of the key.

" - } - }, - "documentation":"

The key of a tag to be removed.

" - }, - "TagList":{ - "type":"list", - "member":{"shape":"Tag"}, - "min":1 - }, - "TagValue":{ - "type":"string", - "min":0, - "max":256, - "pattern":"^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$" - }, - "TooManyAccessPointsException":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"TooManyLoadBalancers", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The quota for the number of load balancers has already been reached.

" - }, - "TooManyPoliciesException":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"TooManyPolicies", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Quota for number of policies for this load balancer has already been reached.

" - }, - "TooManyTagsException":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"TooManyTags", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The quota for the number of tags that can be assigned to a load balancer has been reached.

" - }, - "UnhealthyThreshold":{ - "type":"integer", - "min":2, - "max":10 - }, - "VPCId":{"type":"string"} - } -} diff --git a/src/github.com/getlantern/aws-sdk-go/apis/elb/2012-06-01.paginators.json b/src/github.com/getlantern/aws-sdk-go/apis/elb/2012-06-01.paginators.json deleted file mode 100644 index 444a77a541..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/apis/elb/2012-06-01.paginators.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "pagination": { - "DescribeLoadBalancers": { - "input_token": "Marker", - "output_token": "NextMarker", - "result_key": "LoadBalancerDescriptions", - "limit_key": "PageSize" - } - } -} diff --git a/src/github.com/getlantern/aws-sdk-go/apis/emr/2009-03-31.normal.json b/src/github.com/getlantern/aws-sdk-go/apis/emr/2009-03-31.normal.json deleted file mode 100644 index 13b4a5e46b..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/apis/emr/2009-03-31.normal.json +++ /dev/null @@ -1,2342 +0,0 @@ -{ - "metadata":{ - "apiVersion":"2009-03-31", - "endpointPrefix":"elasticmapreduce", - "jsonVersion":"1.1", - "serviceAbbreviation":"Amazon EMR", - "serviceFullName":"Amazon Elastic MapReduce", - "signatureVersion":"v4", - "targetPrefix":"ElasticMapReduce", - "timestampFormat":"unixTimestamp", - "protocol":"json" - }, - "documentation":"

Amazon Elastic MapReduce (Amazon EMR) is a web service that makes it easy to process large amounts of data efficiently. Amazon EMR uses Hadoop processing combined with several AWS products to do tasks such as web indexing, data mining, log file analysis, machine learning, scientific simulation, and data warehousing.

", - "operations":{ - "AddInstanceGroups":{ - "name":"AddInstanceGroups", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"AddInstanceGroupsInput", - "documentation":"

Input to an AddInstanceGroups call.

" - }, - "output":{ - "shape":"AddInstanceGroupsOutput", - "documentation":"

Output from an AddInstanceGroups call.

" - }, - "errors":[ - { - "shape":"InternalServerError", - "error":{ - "code":"InternalFailure", - "httpStatusCode":500 - }, - "exception":true, - "documentation":"

Indicates that an error occurred while processing the request and that the request was not completed.

" - } - ], - "documentation":"

AddInstanceGroups adds an instance group to a running cluster.

" - }, - "AddJobFlowSteps":{ - "name":"AddJobFlowSteps", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"AddJobFlowStepsInput", - "documentation":"

The input argument to the AddJobFlowSteps operation.

" - }, - "output":{ - "shape":"AddJobFlowStepsOutput", - "documentation":"

The output for the AddJobFlowSteps operation.

" - }, - "errors":[ - { - "shape":"InternalServerError", - "error":{ - "code":"InternalFailure", - "httpStatusCode":500 - }, - "exception":true, - "documentation":"

Indicates that an error occurred while processing the request and that the request was not completed.

" - } - ], - "documentation":"

AddJobFlowSteps adds new steps to a running job flow. A maximum of 256 steps are allowed in each job flow.

If your job flow is long-running (such as a Hive data warehouse) or complex, you may require more than 256 steps to process your data. You can bypass the 256-step limitation in various ways, including using the SSH shell to connect to the master node and submitting queries directly to the software running on the master node, such as Hive and Hadoop. For more information on how to do this, go to Add More than 256 Steps to a Job Flow in the Amazon Elastic MapReduce Developer's Guide.

A step specifies the location of a JAR file stored either on the master node of the job flow or in Amazon S3. Each step is performed by the main function of the main class of the JAR file. The main class can be specified either in the manifest of the JAR or by using the MainFunction parameter of the step.

Elastic MapReduce executes each step in the order listed. For a step to be considered complete, the main function must exit with a zero exit code and all Hadoop jobs started while the step was running must have completed and run successfully.

You can only add steps to a job flow that is in one of the following states: STARTING, BOOTSTRAPPING, RUNNING, or WAITING.

" - }, - "AddTags":{ - "name":"AddTags", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"AddTagsInput", - "documentation":"

This input identifies a cluster and a list of tags to attach.

" - }, - "output":{ - "shape":"AddTagsOutput", - "documentation":"

This output indicates the result of adding tags to a resource.

" - }, - "errors":[ - { - "shape":"InternalServerException", - "exception":true, - "fault":true, - "documentation":"

This exception occurs when there is an internal failure in the EMR service.

" - }, - { - "shape":"InvalidRequestException", - "exception":true, - "documentation":"

This exception occurs when there is something wrong with user input.

" - } - ], - "documentation":"

Adds tags to an Amazon EMR resource. Tags make it easier to associate clusters in various ways, such as grouping clusters to track your Amazon EMR resource allocation costs. For more information, see Tagging Amazon EMR Resources.

" - }, - "DescribeCluster":{ - "name":"DescribeCluster", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DescribeClusterInput", - "documentation":"

This input determines which cluster to describe.

" - }, - "output":{ - "shape":"DescribeClusterOutput", - "documentation":"

This output contains the description of the cluster.

" - }, - "errors":[ - { - "shape":"InternalServerException", - "exception":true, - "fault":true, - "documentation":"

This exception occurs when there is an internal failure in the EMR service.

" - }, - { - "shape":"InvalidRequestException", - "exception":true, - "documentation":"

This exception occurs when there is something wrong with user input.

" - } - ], - "documentation":"

Provides cluster-level details including status, hardware and software configuration, VPC settings, and so on. For information about the cluster steps, see ListSteps.

" - }, - "DescribeJobFlows":{ - "name":"DescribeJobFlows", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DescribeJobFlowsInput", - "documentation":"

The input for the DescribeJobFlows operation.

" - }, - "output":{ - "shape":"DescribeJobFlowsOutput", - "documentation":"

The output for the DescribeJobFlows operation.

" - }, - "errors":[ - { - "shape":"InternalServerError", - "error":{ - "code":"InternalFailure", - "httpStatusCode":500 - }, - "exception":true, - "documentation":"

Indicates that an error occurred while processing the request and that the request was not completed.

" - } - ], - "deprecated":true, - "documentation":"

This API is deprecated and will eventually be removed. We recommend you use ListClusters, DescribeCluster, ListSteps, ListInstanceGroups and ListBootstrapActions instead.

DescribeJobFlows returns a list of job flows that match all of the supplied parameters. The parameters can include a list of job flow IDs, job flow states, and restrictions on job flow creation date and time.

Regardless of supplied parameters, only job flows created within the last two months are returned.

If no parameters are supplied, then job flows matching either of the following criteria are returned:

Amazon Elastic MapReduce can return a maximum of 512 job flow descriptions.

" - }, - "DescribeStep":{ - "name":"DescribeStep", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DescribeStepInput", - "documentation":"

This input determines which step to describe.

" - }, - "output":{ - "shape":"DescribeStepOutput", - "documentation":"

This output contains the description of the cluster step.

" - }, - "errors":[ - { - "shape":"InternalServerException", - "exception":true, - "fault":true, - "documentation":"

This exception occurs when there is an internal failure in the EMR service.

" - }, - { - "shape":"InvalidRequestException", - "exception":true, - "documentation":"

This exception occurs when there is something wrong with user input.

" - } - ], - "documentation":"

Provides more detail about the cluster step.

" - }, - "ListBootstrapActions":{ - "name":"ListBootstrapActions", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"ListBootstrapActionsInput", - "documentation":"

This input determines which bootstrap actions to retrieve.

" - }, - "output":{ - "shape":"ListBootstrapActionsOutput", - "documentation":"

This output contains the boostrap actions detail .

" - }, - "errors":[ - { - "shape":"InternalServerException", - "exception":true, - "fault":true, - "documentation":"

This exception occurs when there is an internal failure in the EMR service.

" - }, - { - "shape":"InvalidRequestException", - "exception":true, - "documentation":"

This exception occurs when there is something wrong with user input.

" - } - ], - "documentation":"

Provides information about the bootstrap actions associated with a cluster.

" - }, - "ListClusters":{ - "name":"ListClusters", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"ListClustersInput", - "documentation":"

This input determines how the ListClusters action filters the list of clusters that it returns.

" - }, - "output":{ - "shape":"ListClustersOutput", - "documentation":"

This contains a ClusterSummaryList with the cluster details; for example, the cluster IDs, names, and status.

" - }, - "errors":[ - { - "shape":"InternalServerException", - "exception":true, - "fault":true, - "documentation":"

This exception occurs when there is an internal failure in the EMR service.

" - }, - { - "shape":"InvalidRequestException", - "exception":true, - "documentation":"

This exception occurs when there is something wrong with user input.

" - } - ], - "documentation":"

Provides the status of all clusters visible to this AWS account. Allows you to filter the list of clusters based on certain criteria; for example, filtering by cluster creation date and time or by status. This call returns a maximum of 50 clusters per call, but returns a marker to track the paging of the cluster list across multiple ListClusters calls.

" - }, - "ListInstanceGroups":{ - "name":"ListInstanceGroups", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"ListInstanceGroupsInput", - "documentation":"

This input determines which instance groups to retrieve.

" - }, - "output":{ - "shape":"ListInstanceGroupsOutput", - "documentation":"

This input determines which instance groups to retrieve.

" - }, - "errors":[ - { - "shape":"InternalServerException", - "exception":true, - "fault":true, - "documentation":"

This exception occurs when there is an internal failure in the EMR service.

" - }, - { - "shape":"InvalidRequestException", - "exception":true, - "documentation":"

This exception occurs when there is something wrong with user input.

" - } - ], - "documentation":"

Provides all available details about the instance groups in a cluster.

" - }, - "ListInstances":{ - "name":"ListInstances", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"ListInstancesInput", - "documentation":"

This input determines which instances to list.

" - }, - "output":{ - "shape":"ListInstancesOutput", - "documentation":"

This output contains the list of instances.

" - }, - "errors":[ - { - "shape":"InternalServerException", - "exception":true, - "fault":true, - "documentation":"

This exception occurs when there is an internal failure in the EMR service.

" - }, - { - "shape":"InvalidRequestException", - "exception":true, - "documentation":"

This exception occurs when there is something wrong with user input.

" - } - ], - "documentation":"

Provides information about the cluster instances that Amazon EMR provisions on behalf of a user when it creates the cluster. For example, this operation indicates when the EC2 instances reach the Ready state, when instances become available to Amazon EMR to use for jobs, and the IP addresses for cluster instances, etc.

" - }, - "ListSteps":{ - "name":"ListSteps", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"ListStepsInput", - "documentation":"

This input determines which steps to list.

" - }, - "output":{ - "shape":"ListStepsOutput", - "documentation":"

This output contains the list of steps.

" - }, - "errors":[ - { - "shape":"InternalServerException", - "exception":true, - "fault":true, - "documentation":"

This exception occurs when there is an internal failure in the EMR service.

" - }, - { - "shape":"InvalidRequestException", - "exception":true, - "documentation":"

This exception occurs when there is something wrong with user input.

" - } - ], - "documentation":"

Provides a list of steps for the cluster.

" - }, - "ModifyInstanceGroups":{ - "name":"ModifyInstanceGroups", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"ModifyInstanceGroupsInput", - "documentation":"

Change the size of some instance groups.

" - }, - "errors":[ - { - "shape":"InternalServerError", - "error":{ - "code":"InternalFailure", - "httpStatusCode":500 - }, - "exception":true, - "documentation":"

Indicates that an error occurred while processing the request and that the request was not completed.

" - } - ], - "documentation":"

ModifyInstanceGroups modifies the number of nodes and configuration settings of an instance group. The input parameters include the new target instance count for the group and the instance group ID. The call will either succeed or fail atomically.

" - }, - "RemoveTags":{ - "name":"RemoveTags", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"RemoveTagsInput", - "documentation":"

This input identifies a cluster and a list of tags to remove.

" - }, - "output":{ - "shape":"RemoveTagsOutput", - "documentation":"

This output indicates the result of removing tags from a resource.

" - }, - "errors":[ - { - "shape":"InternalServerException", - "exception":true, - "fault":true, - "documentation":"

This exception occurs when there is an internal failure in the EMR service.

" - }, - { - "shape":"InvalidRequestException", - "exception":true, - "documentation":"

This exception occurs when there is something wrong with user input.

" - } - ], - "documentation":"

Removes tags from an Amazon EMR resource. Tags make it easier to associate clusters in various ways, such as grouping clusters to track your Amazon EMR resource allocation costs. For more information, see Tagging Amazon EMR Resources.

The following example removes the stack tag with value Prod from a cluster:

" - }, - "RunJobFlow":{ - "name":"RunJobFlow", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"RunJobFlowInput", - "documentation":"

Input to the RunJobFlow operation.

" - }, - "output":{ - "shape":"RunJobFlowOutput", - "documentation":"

The result of the RunJobFlow operation.

" - }, - "errors":[ - { - "shape":"InternalServerError", - "error":{ - "code":"InternalFailure", - "httpStatusCode":500 - }, - "exception":true, - "documentation":"

Indicates that an error occurred while processing the request and that the request was not completed.

" - } - ], - "documentation":"

RunJobFlow creates and starts running a new job flow. The job flow will run the steps specified. Once the job flow completes, the cluster is stopped and the HDFS partition is lost. To prevent loss of data, configure the last step of the job flow to store results in Amazon S3. If the JobFlowInstancesConfig KeepJobFlowAliveWhenNoSteps parameter is set to TRUE, the job flow will transition to the WAITING state rather than shutting down once the steps have completed.

For additional protection, you can set the JobFlowInstancesConfig TerminationProtected parameter to TRUE to lock the job flow and prevent it from being terminated by API call, user intervention, or in the event of a job flow error.

A maximum of 256 steps are allowed in each job flow.

If your job flow is long-running (such as a Hive data warehouse) or complex, you may require more than 256 steps to process your data. You can bypass the 256-step limitation in various ways, including using the SSH shell to connect to the master node and submitting queries directly to the software running on the master node, such as Hive and Hadoop. For more information on how to do this, go to Add More than 256 Steps to a Job Flow in the Amazon Elastic MapReduce Developer's Guide.

For long running job flows, we recommend that you periodically store your results.

" - }, - "SetTerminationProtection":{ - "name":"SetTerminationProtection", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"SetTerminationProtectionInput", - "documentation":"

The input argument to the TerminationProtection operation.

" - }, - "errors":[ - { - "shape":"InternalServerError", - "error":{ - "code":"InternalFailure", - "httpStatusCode":500 - }, - "exception":true, - "documentation":"

Indicates that an error occurred while processing the request and that the request was not completed.

" - } - ], - "documentation":"

SetTerminationProtection locks a job flow so the Amazon EC2 instances in the cluster cannot be terminated by user intervention, an API call, or in the event of a job-flow error. The cluster still terminates upon successful completion of the job flow. Calling SetTerminationProtection on a job flow is analogous to calling the Amazon EC2 DisableAPITermination API on all of the EC2 instances in a cluster.

SetTerminationProtection is used to prevent accidental termination of a job flow and to ensure that in the event of an error, the instances will persist so you can recover any data stored in their ephemeral instance storage.

To terminate a job flow that has been locked by setting SetTerminationProtection to true, you must first unlock the job flow by a subsequent call to SetTerminationProtection in which you set the value to false.

For more information, go to Protecting a Job Flow from Termination in the Amazon Elastic MapReduce Developer's Guide.

" - }, - "SetVisibleToAllUsers":{ - "name":"SetVisibleToAllUsers", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"SetVisibleToAllUsersInput", - "documentation":"

The input to the SetVisibleToAllUsers action.

" - }, - "errors":[ - { - "shape":"InternalServerError", - "error":{ - "code":"InternalFailure", - "httpStatusCode":500 - }, - "exception":true, - "documentation":"

Indicates that an error occurred while processing the request and that the request was not completed.

" - } - ], - "documentation":"

Sets whether all AWS Identity and Access Management (IAM) users under your account can access the specified job flows. This action works on running job flows. You can also set the visibility of a job flow when you launch it using the VisibleToAllUsers parameter of RunJobFlow. The SetVisibleToAllUsers action can be called only by an IAM user who created the job flow or the AWS account that owns the job flow.

" - }, - "TerminateJobFlows":{ - "name":"TerminateJobFlows", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"TerminateJobFlowsInput", - "documentation":"

Input to the TerminateJobFlows operation.

" - }, - "errors":[ - { - "shape":"InternalServerError", - "error":{ - "code":"InternalFailure", - "httpStatusCode":500 - }, - "exception":true, - "documentation":"

Indicates that an error occurred while processing the request and that the request was not completed.

" - } - ], - "documentation":"

TerminateJobFlows shuts a list of job flows down. When a job flow is shut down, any step not yet completed is canceled and the EC2 instances on which the job flow is running are stopped. Any log files not already saved are uploaded to Amazon S3 if a LogUri was specified when the job flow was created.

The maximum number of JobFlows allowed is 10. The call to TerminateJobFlows is asynchronous. Depending on the configuration of the job flow, it may take up to 5-20 minutes for the job flow to completely terminate and release allocated resources, such as Amazon EC2 instances.

" - } - }, - "shapes":{ - "ActionOnFailure":{ - "type":"string", - "enum":[ - "TERMINATE_JOB_FLOW", - "TERMINATE_CLUSTER", - "CANCEL_AND_WAIT", - "CONTINUE" - ] - }, - "AddInstanceGroupsInput":{ - "type":"structure", - "required":[ - "InstanceGroups", - "JobFlowId" - ], - "members":{ - "InstanceGroups":{ - "shape":"InstanceGroupConfigList", - "documentation":"

Instance Groups to add.

" - }, - "JobFlowId":{ - "shape":"XmlStringMaxLen256", - "documentation":"

Job flow in which to add the instance groups.

" - } - }, - "documentation":"

Input to an AddInstanceGroups call.

" - }, - "AddInstanceGroupsOutput":{ - "type":"structure", - "members":{ - "JobFlowId":{ - "shape":"XmlStringMaxLen256", - "documentation":"

The job flow ID in which the instance groups are added.

" - }, - "InstanceGroupIds":{ - "shape":"InstanceGroupIdsList", - "documentation":"

Instance group IDs of the newly created instance groups.

" - } - }, - "documentation":"

Output from an AddInstanceGroups call.

" - }, - "AddJobFlowStepsInput":{ - "type":"structure", - "required":[ - "JobFlowId", - "Steps" - ], - "members":{ - "JobFlowId":{ - "shape":"XmlStringMaxLen256", - "documentation":"

A string that uniquely identifies the job flow. This identifier is returned by RunJobFlow and can also be obtained from ListClusters.

" - }, - "Steps":{ - "shape":"StepConfigList", - "documentation":"

A list of StepConfig to be executed by the job flow.

" - } - }, - "documentation":"

The input argument to the AddJobFlowSteps operation.

" - }, - "AddJobFlowStepsOutput":{ - "type":"structure", - "members":{ - "StepIds":{ - "shape":"StepIdsList", - "documentation":"

The identifiers of the list of steps added to the job flow.

" - } - }, - "documentation":"

The output for the AddJobFlowSteps operation.

" - }, - "AddTagsInput":{ - "type":"structure", - "required":[ - "ResourceId", - "Tags" - ], - "members":{ - "ResourceId":{ - "shape":"ResourceId", - "documentation":"

The Amazon EMR resource identifier to which tags will be added. This value must be a cluster identifier.

" - }, - "Tags":{ - "shape":"TagList", - "documentation":"

A list of tags to associate with a cluster and propagate to Amazon EC2 instances. Tags are user-defined key/value pairs that consist of a required key string with a maximum of 128 characters, and an optional value string with a maximum of 256 characters.

" - } - }, - "documentation":"

This input identifies a cluster and a list of tags to attach.

" - }, - "AddTagsOutput":{ - "type":"structure", - "members":{ - }, - "documentation":"

This output indicates the result of adding tags to a resource.

" - }, - "Application":{ - "type":"structure", - "members":{ - "Name":{ - "shape":"String", - "documentation":"

The name of the application.

" - }, - "Version":{ - "shape":"String", - "documentation":"

The version of the application.

" - }, - "Args":{ - "shape":"StringList", - "documentation":"

Arguments for Amazon EMR to pass to the application.

" - }, - "AdditionalInfo":{ - "shape":"StringMap", - "documentation":"

This option is for advanced users only. This is meta information about third-party applications that third-party vendors use for testing purposes.

" - } - }, - "documentation":"

An application is any Amazon or third-party software that you can add to the cluster. This structure contains a list of strings that indicates the software to use with the cluster and accepts a user argument list. Amazon EMR accepts and forwards the argument list to the corresponding installation script as bootstrap action argument. For more information, see Launch a Job Flow on the MapR Distribution for Hadoop. Currently supported values are:

" - }, - "ApplicationList":{ - "type":"list", - "member":{"shape":"Application"} - }, - "Boolean":{"type":"boolean"}, - "BootstrapActionConfig":{ - "type":"structure", - "required":[ - "Name", - "ScriptBootstrapAction" - ], - "members":{ - "Name":{ - "shape":"XmlStringMaxLen256", - "documentation":"

The name of the bootstrap action.

" - }, - "ScriptBootstrapAction":{ - "shape":"ScriptBootstrapActionConfig", - "documentation":"

The script run by the bootstrap action.

" - } - }, - "documentation":"

Configuration of a bootstrap action.

" - }, - "BootstrapActionConfigList":{ - "type":"list", - "member":{"shape":"BootstrapActionConfig"} - }, - "BootstrapActionDetail":{ - "type":"structure", - "members":{ - "BootstrapActionConfig":{ - "shape":"BootstrapActionConfig", - "documentation":"

A description of the bootstrap action.

" - } - }, - "documentation":"

Reports the configuration of a bootstrap action in a job flow.

" - }, - "BootstrapActionDetailList":{ - "type":"list", - "member":{"shape":"BootstrapActionDetail"} - }, - "Cluster":{ - "type":"structure", - "members":{ - "Id":{ - "shape":"ClusterId", - "documentation":"

The unique identifier for the cluster.

" - }, - "Name":{ - "shape":"String", - "documentation":"

The name of the cluster.

" - }, - "Status":{ - "shape":"ClusterStatus", - "documentation":"

The current status details about the cluster.

" - }, - "Ec2InstanceAttributes":{"shape":"Ec2InstanceAttributes"}, - "LogUri":{ - "shape":"String", - "documentation":"

The path to the Amazon S3 location where logs for this cluster are stored.

" - }, - "RequestedAmiVersion":{ - "shape":"String", - "documentation":"

The AMI version requested for this cluster.

" - }, - "RunningAmiVersion":{ - "shape":"String", - "documentation":"

The AMI version running on this cluster. This differs from the requested version only if the requested version is a meta version, such as \"latest\".

" - }, - "AutoTerminate":{ - "shape":"Boolean", - "documentation":"

Specifies whether the cluster should terminate after completing all steps.

" - }, - "TerminationProtected":{ - "shape":"Boolean", - "documentation":"

Indicates whether Amazon EMR will lock the cluster to prevent the EC2 instances from being terminated by an API call or user intervention, or in the event of a cluster error.

" - }, - "VisibleToAllUsers":{ - "shape":"Boolean", - "documentation":"

Indicates whether the job flow is visible to all IAM users of the AWS account associated with the job flow. If this value is set to true, all IAM users of that AWS account can view and manage the job flow if they have the proper policy permissions set. If this value is false, only the IAM user that created the cluster can view and manage it. This value can be changed using the SetVisibleToAllUsers action.

" - }, - "Applications":{ - "shape":"ApplicationList", - "documentation":"

The applications installed on this cluster.

" - }, - "Tags":{ - "shape":"TagList", - "documentation":"

A list of tags associated with a cluster.

" - }, - "ServiceRole":{ - "shape":"String", - "documentation":"

The IAM role that will be assumed by the Amazon EMR service to access AWS resources on your behalf.

" - }, - "NormalizedInstanceHours":{ - "shape":"Integer", - "documentation":"

An approximation of the cost of the job flow, represented in m1.small/hours. This value is incremented one time for every hour an m1.small instance runs. Larger instances are weighted more, so an EC2 instance that is roughly four times more expensive would result in the normalized instance hours being incremented by four. This result is only an approximation and does not reflect the actual billing rate.

" - }, - "MasterPublicDnsName":{ - "shape":"String", - "documentation":"

The public DNS name of the master Ec2 instance.

" - } - }, - "documentation":"

The detailed description of the cluster.

" - }, - "ClusterId":{"type":"string"}, - "ClusterState":{ - "type":"string", - "enum":[ - "STARTING", - "BOOTSTRAPPING", - "RUNNING", - "WAITING", - "TERMINATING", - "TERMINATED", - "TERMINATED_WITH_ERRORS" - ] - }, - "ClusterStateChangeReason":{ - "type":"structure", - "members":{ - "Code":{ - "shape":"ClusterStateChangeReasonCode", - "documentation":"

The programmatic code for the state change reason.

" - }, - "Message":{ - "shape":"String", - "documentation":"

The descriptive message for the state change reason.

" - } - }, - "documentation":"

The reason that the cluster changed to its current state.

" - }, - "ClusterStateChangeReasonCode":{ - "type":"string", - "enum":[ - "INTERNAL_ERROR", - "VALIDATION_ERROR", - "INSTANCE_FAILURE", - "BOOTSTRAP_FAILURE", - "USER_REQUEST", - "STEP_FAILURE", - "ALL_STEPS_COMPLETED" - ] - }, - "ClusterStateList":{ - "type":"list", - "member":{"shape":"ClusterState"} - }, - "ClusterStatus":{ - "type":"structure", - "members":{ - "State":{ - "shape":"ClusterState", - "documentation":"

The current state of the cluster.

" - }, - "StateChangeReason":{ - "shape":"ClusterStateChangeReason", - "documentation":"

The reason for the cluster status change.

" - }, - "Timeline":{ - "shape":"ClusterTimeline", - "documentation":"

A timeline that represents the status of a cluster over the lifetime of the cluster.

" - } - }, - "documentation":"

The detailed status of the cluster.

" - }, - "ClusterSummary":{ - "type":"structure", - "members":{ - "Id":{ - "shape":"ClusterId", - "documentation":"

The unique identifier for the cluster.

" - }, - "Name":{ - "shape":"String", - "documentation":"

The name of the cluster.

" - }, - "Status":{ - "shape":"ClusterStatus", - "documentation":"

The details about the current status of the cluster.

" - }, - "NormalizedInstanceHours":{ - "shape":"Integer", - "documentation":"

An approximation of the cost of the job flow, represented in m1.small/hours. This value is incremented one time for every hour an m1.small instance runs. Larger instances are weighted more, so an EC2 instance that is roughly four times more expensive would result in the normalized instance hours being incremented by four. This result is only an approximation and does not reflect the actual billing rate.

" - } - }, - "documentation":"

The summary description of the cluster.

" - }, - "ClusterSummaryList":{ - "type":"list", - "member":{"shape":"ClusterSummary"} - }, - "ClusterTimeline":{ - "type":"structure", - "members":{ - "CreationDateTime":{ - "shape":"Date", - "documentation":"

The creation date and time of the cluster.

" - }, - "ReadyDateTime":{ - "shape":"Date", - "documentation":"

The date and time when the cluster was ready to execute steps.

" - }, - "EndDateTime":{ - "shape":"Date", - "documentation":"

The date and time when the cluster was terminated.

" - } - }, - "documentation":"

Represents the timeline of the cluster's lifecycle.

" - }, - "Command":{ - "type":"structure", - "members":{ - "Name":{ - "shape":"String", - "documentation":"

The name of the command.

" - }, - "ScriptPath":{ - "shape":"String", - "documentation":"

The Amazon S3 location of the command script.

" - }, - "Args":{ - "shape":"StringList", - "documentation":"

Arguments for Amazon EMR to pass to the command for execution.

" - } - }, - "documentation":"

An entity describing an executable that runs on a cluster.

" - }, - "CommandList":{ - "type":"list", - "member":{"shape":"Command"} - }, - "Date":{"type":"timestamp"}, - "DescribeClusterInput":{ - "type":"structure", - "required":["ClusterId"], - "members":{ - "ClusterId":{ - "shape":"ClusterId", - "documentation":"

The identifier of the cluster to describe.

" - } - }, - "documentation":"

This input determines which cluster to describe.

" - }, - "DescribeClusterOutput":{ - "type":"structure", - "members":{ - "Cluster":{ - "shape":"Cluster", - "documentation":"

This output contains the details for the requested cluster.

" - } - }, - "documentation":"

This output contains the description of the cluster.

" - }, - "DescribeJobFlowsInput":{ - "type":"structure", - "members":{ - "CreatedAfter":{ - "shape":"Date", - "documentation":"

Return only job flows created after this date and time.

" - }, - "CreatedBefore":{ - "shape":"Date", - "documentation":"

Return only job flows created before this date and time.

" - }, - "JobFlowIds":{ - "shape":"XmlStringList", - "documentation":"

Return only job flows whose job flow ID is contained in this list.

" - }, - "JobFlowStates":{ - "shape":"JobFlowExecutionStateList", - "documentation":"

Return only job flows whose state is contained in this list.

" - } - }, - "documentation":"

The input for the DescribeJobFlows operation.

" - }, - "DescribeJobFlowsOutput":{ - "type":"structure", - "members":{ - "JobFlows":{ - "shape":"JobFlowDetailList", - "documentation":"

A list of job flows matching the parameters supplied.

" - } - }, - "documentation":"

The output for the DescribeJobFlows operation.

" - }, - "DescribeStepInput":{ - "type":"structure", - "required":[ - "ClusterId", - "StepId" - ], - "members":{ - "ClusterId":{ - "shape":"ClusterId", - "documentation":"

The identifier of the cluster with steps to describe.

" - }, - "StepId":{ - "shape":"StepId", - "documentation":"

The identifier of the step to describe.

" - } - }, - "documentation":"

This input determines which step to describe.

" - }, - "DescribeStepOutput":{ - "type":"structure", - "members":{ - "Step":{ - "shape":"Step", - "documentation":"

The step details for the requested step identifier.

" - } - }, - "documentation":"

This output contains the description of the cluster step.

" - }, - "EC2InstanceIdsToTerminateList":{ - "type":"list", - "member":{"shape":"InstanceId"} - }, - "Ec2InstanceAttributes":{ - "type":"structure", - "members":{ - "Ec2KeyName":{ - "shape":"String", - "documentation":"

The name of the Amazon EC2 key pair to use when connecting with SSH into the master node as a user named \"hadoop\".

" - }, - "Ec2SubnetId":{ - "shape":"String", - "documentation":"

To launch the job flow in Amazon VPC, set this parameter to the identifier of the Amazon VPC subnet where you want the job flow to launch. If you do not specify this value, the job flow is launched in the normal AWS cloud, outside of a VPC.

Amazon VPC currently does not support cluster compute quadruple extra large (cc1.4xlarge) instances. Thus, you cannot specify the cc1.4xlarge instance type for nodes of a job flow launched in a VPC.

" - }, - "Ec2AvailabilityZone":{ - "shape":"String", - "documentation":"

The Availability Zone in which the cluster will run.

" - }, - "IamInstanceProfile":{ - "shape":"String", - "documentation":"

The IAM role that was specified when the job flow was launched. The EC2 instances of the job flow assume this role.

" - }, - "EmrManagedMasterSecurityGroup":{ - "shape":"String", - "documentation":"

The identifier of the Amazon EC2 security group (managed by Amazon Elastic MapReduce) for the master node.

" - }, - "EmrManagedSlaveSecurityGroup":{ - "shape":"String", - "documentation":"

The identifier of the Amazon EC2 security group (managed by Amazon Elastic MapReduce) for the slave nodes.

" - }, - "AdditionalMasterSecurityGroups":{ - "shape":"StringList", - "documentation":"

A list of additional Amazon EC2 security group IDs for the master node.

" - }, - "AdditionalSlaveSecurityGroups":{ - "shape":"StringList", - "documentation":"

A list of additional Amazon EC2 security group IDs for the slave nodes.

" - } - }, - "documentation":"

Provides information about the EC2 instances in a cluster grouped by category. For example, key name, subnet ID, IAM instance profile, and so on.

" - }, - "ErrorCode":{ - "type":"string", - "min":1, - "max":256 - }, - "ErrorMessage":{"type":"string"}, - "HadoopJarStepConfig":{ - "type":"structure", - "required":["Jar"], - "members":{ - "Properties":{ - "shape":"KeyValueList", - "documentation":"

A list of Java properties that are set when the step runs. You can use these properties to pass key value pairs to your main function.

" - }, - "Jar":{ - "shape":"XmlString", - "documentation":"

A path to a JAR file run during the step.

" - }, - "MainClass":{ - "shape":"XmlString", - "documentation":"

The name of the main class in the specified Java file. If not specified, the JAR file should specify a Main-Class in its manifest file.

" - }, - "Args":{ - "shape":"XmlStringList", - "documentation":"

A list of command line arguments passed to the JAR file's main function when executed.

" - } - }, - "documentation":"

A job flow step consisting of a JAR file whose main function will be executed. The main function submits a job for Hadoop to execute and waits for the job to finish or fail.

" - }, - "HadoopStepConfig":{ - "type":"structure", - "members":{ - "Jar":{ - "shape":"String", - "documentation":"

The path to the JAR file that runs during the step.

" - }, - "Properties":{ - "shape":"StringMap", - "documentation":"

The list of Java properties that are set when the step runs. You can use these properties to pass key value pairs to your main function.

" - }, - "MainClass":{ - "shape":"String", - "documentation":"

The name of the main class in the specified Java file. If not specified, the JAR file should specify a main class in its manifest file.

" - }, - "Args":{ - "shape":"StringList", - "documentation":"

The list of command line arguments to pass to the JAR file's main function for execution.

" - } - }, - "documentation":"

A cluster step consisting of a JAR file whose main function will be executed. The main function submits a job for Hadoop to execute and waits for the job to finish or fail.

" - }, - "Instance":{ - "type":"structure", - "members":{ - "Id":{ - "shape":"InstanceId", - "documentation":"

The unique identifier for the instance in Amazon EMR.

" - }, - "Ec2InstanceId":{ - "shape":"InstanceId", - "documentation":"

The unique identifier of the instance in Amazon EC2.

" - }, - "PublicDnsName":{ - "shape":"String", - "documentation":"

The public DNS name of the instance.

" - }, - "PublicIpAddress":{ - "shape":"String", - "documentation":"

The public IP address of the instance.

" - }, - "PrivateDnsName":{ - "shape":"String", - "documentation":"

The private DNS name of the instance.

" - }, - "PrivateIpAddress":{ - "shape":"String", - "documentation":"

The private IP address of the instance.

" - }, - "Status":{ - "shape":"InstanceStatus", - "documentation":"

The current status of the instance.

" - } - }, - "documentation":"

Represents an EC2 instance provisioned as part of cluster.

" - }, - "InstanceGroup":{ - "type":"structure", - "members":{ - "Id":{ - "shape":"InstanceGroupId", - "documentation":"

The identifier of the instance group.

" - }, - "Name":{ - "shape":"String", - "documentation":"

The name of the instance group.

" - }, - "Market":{ - "shape":"MarketType", - "documentation":"

The marketplace to provision instances for this group. Valid values are ON_DEMAND or SPOT.

" - }, - "InstanceGroupType":{ - "shape":"InstanceGroupType", - "documentation":"

The type of the instance group. Valid values are MASTER, CORE or TASK.

" - }, - "BidPrice":{ - "shape":"String", - "documentation":"

The bid price for each EC2 instance in the instance group when launching nodes as Spot Instances, expressed in USD.

" - }, - "InstanceType":{ - "shape":"InstanceType", - "documentation":"

The EC2 instance type for all instances in the instance group.

" - }, - "RequestedInstanceCount":{ - "shape":"Integer", - "documentation":"

The target number of instances for the instance group.

" - }, - "RunningInstanceCount":{ - "shape":"Integer", - "documentation":"

The number of instances currently running in this instance group.

" - }, - "Status":{ - "shape":"InstanceGroupStatus", - "documentation":"

The current status of the instance group.

" - } - }, - "documentation":"

This entity represents an instance group, which is a group of instances that have common purpose. For example, CORE instance group is used for HDFS.

" - }, - "InstanceGroupConfig":{ - "type":"structure", - "required":[ - "InstanceRole", - "InstanceType", - "InstanceCount" - ], - "members":{ - "Name":{ - "shape":"XmlStringMaxLen256", - "documentation":"

Friendly name given to the instance group.

" - }, - "Market":{ - "shape":"MarketType", - "documentation":"

Market type of the Amazon EC2 instances used to create a cluster node.

" - }, - "InstanceRole":{ - "shape":"InstanceRoleType", - "documentation":"

The role of the instance group in the cluster.

" - }, - "BidPrice":{ - "shape":"XmlStringMaxLen256", - "documentation":"

Bid price for each Amazon EC2 instance in the instance group when launching nodes as Spot Instances, expressed in USD.

" - }, - "InstanceType":{ - "shape":"InstanceType", - "documentation":"

The Amazon EC2 instance type for all instances in the instance group.

" - }, - "InstanceCount":{ - "shape":"Integer", - "documentation":"

Target number of instances for the instance group.

" - } - }, - "documentation":"

Configuration defining a new instance group.

" - }, - "InstanceGroupConfigList":{ - "type":"list", - "member":{"shape":"InstanceGroupConfig"} - }, - "InstanceGroupDetail":{ - "type":"structure", - "required":[ - "Market", - "InstanceRole", - "InstanceType", - "InstanceRequestCount", - "InstanceRunningCount", - "State", - "CreationDateTime" - ], - "members":{ - "InstanceGroupId":{ - "shape":"XmlStringMaxLen256", - "documentation":"

Unique identifier for the instance group.

" - }, - "Name":{ - "shape":"XmlStringMaxLen256", - "documentation":"

Friendly name for the instance group.

" - }, - "Market":{ - "shape":"MarketType", - "documentation":"

Market type of the Amazon EC2 instances used to create a cluster node.

" - }, - "InstanceRole":{ - "shape":"InstanceRoleType", - "documentation":"

Instance group role in the cluster

" - }, - "BidPrice":{ - "shape":"XmlStringMaxLen256", - "documentation":"

Bid price for EC2 Instances when launching nodes as Spot Instances, expressed in USD.

" - }, - "InstanceType":{ - "shape":"InstanceType", - "documentation":"

Amazon EC2 Instance type.

" - }, - "InstanceRequestCount":{ - "shape":"Integer", - "documentation":"

Target number of instances to run in the instance group.

" - }, - "InstanceRunningCount":{ - "shape":"Integer", - "documentation":"

Actual count of running instances.

" - }, - "State":{ - "shape":"InstanceGroupState", - "documentation":"

State of instance group. The following values are deprecated: STARTING, TERMINATED, and FAILED.

" - }, - "LastStateChangeReason":{ - "shape":"XmlString", - "documentation":"

Details regarding the state of the instance group.

" - }, - "CreationDateTime":{ - "shape":"Date", - "documentation":"

The date/time the instance group was created.

" - }, - "StartDateTime":{ - "shape":"Date", - "documentation":"

The date/time the instance group was started.

" - }, - "ReadyDateTime":{ - "shape":"Date", - "documentation":"

The date/time the instance group was available to the cluster.

" - }, - "EndDateTime":{ - "shape":"Date", - "documentation":"

The date/time the instance group was terminated.

" - } - }, - "documentation":"

Detailed information about an instance group.

" - }, - "InstanceGroupDetailList":{ - "type":"list", - "member":{"shape":"InstanceGroupDetail"} - }, - "InstanceGroupId":{"type":"string"}, - "InstanceGroupIdsList":{ - "type":"list", - "member":{"shape":"XmlStringMaxLen256"} - }, - "InstanceGroupList":{ - "type":"list", - "member":{"shape":"InstanceGroup"} - }, - "InstanceGroupModifyConfig":{ - "type":"structure", - "required":["InstanceGroupId"], - "members":{ - "InstanceGroupId":{ - "shape":"XmlStringMaxLen256", - "documentation":"

Unique ID of the instance group to expand or shrink.

" - }, - "InstanceCount":{ - "shape":"Integer", - "documentation":"

Target size for the instance group.

" - }, - "EC2InstanceIdsToTerminate":{ - "shape":"EC2InstanceIdsToTerminateList", - "documentation":"

The EC2 InstanceIds to terminate. For advanced users only. Once you terminate the instances, the instance group will not return to its original requested size.

" - } - }, - "documentation":"

Modify an instance group size.

" - }, - "InstanceGroupModifyConfigList":{ - "type":"list", - "member":{"shape":"InstanceGroupModifyConfig"} - }, - "InstanceGroupState":{ - "type":"string", - "enum":[ - "PROVISIONING", - "BOOTSTRAPPING", - "RUNNING", - "RESIZING", - "SUSPENDED", - "TERMINATING", - "TERMINATED", - "ARRESTED", - "SHUTTING_DOWN", - "ENDED" - ] - }, - "InstanceGroupStateChangeReason":{ - "type":"structure", - "members":{ - "Code":{ - "shape":"InstanceGroupStateChangeReasonCode", - "documentation":"

The programmable code for the state change reason.

" - }, - "Message":{ - "shape":"String", - "documentation":"

The status change reason description.

" - } - }, - "documentation":"

The status change reason details for the instance group.

" - }, - "InstanceGroupStateChangeReasonCode":{ - "type":"string", - "enum":[ - "INTERNAL_ERROR", - "VALIDATION_ERROR", - "INSTANCE_FAILURE", - "CLUSTER_TERMINATED" - ] - }, - "InstanceGroupStatus":{ - "type":"structure", - "members":{ - "State":{ - "shape":"InstanceGroupState", - "documentation":"

The current state of the instance group.

" - }, - "StateChangeReason":{ - "shape":"InstanceGroupStateChangeReason", - "documentation":"

The status change reason details for the instance group.

" - }, - "Timeline":{ - "shape":"InstanceGroupTimeline", - "documentation":"

The timeline of the instance group status over time.

" - } - }, - "documentation":"

The details of the instance group status.

" - }, - "InstanceGroupTimeline":{ - "type":"structure", - "members":{ - "CreationDateTime":{ - "shape":"Date", - "documentation":"

The creation date and time of the instance group.

" - }, - "ReadyDateTime":{ - "shape":"Date", - "documentation":"

The date and time when the instance group became ready to perform tasks.

" - }, - "EndDateTime":{ - "shape":"Date", - "documentation":"

The date and time when the instance group terminated.

" - } - }, - "documentation":"

The timeline of the instance group lifecycle.

" - }, - "InstanceGroupType":{ - "type":"string", - "enum":[ - "MASTER", - "CORE", - "TASK" - ] - }, - "InstanceGroupTypeList":{ - "type":"list", - "member":{"shape":"InstanceGroupType"} - }, - "InstanceId":{"type":"string"}, - "InstanceList":{ - "type":"list", - "member":{"shape":"Instance"} - }, - "InstanceRoleType":{ - "type":"string", - "enum":[ - "MASTER", - "CORE", - "TASK" - ] - }, - "InstanceState":{ - "type":"string", - "enum":[ - "AWAITING_FULFILLMENT", - "PROVISIONING", - "BOOTSTRAPPING", - "RUNNING", - "TERMINATED" - ] - }, - "InstanceStateChangeReason":{ - "type":"structure", - "members":{ - "Code":{ - "shape":"InstanceStateChangeReasonCode", - "documentation":"

The programmable code for the state change reason.

" - }, - "Message":{ - "shape":"String", - "documentation":"

The status change reason description.

" - } - }, - "documentation":"

The details of the status change reason for the instance.

" - }, - "InstanceStateChangeReasonCode":{ - "type":"string", - "enum":[ - "INTERNAL_ERROR", - "VALIDATION_ERROR", - "INSTANCE_FAILURE", - "BOOTSTRAP_FAILURE", - "CLUSTER_TERMINATED" - ] - }, - "InstanceStatus":{ - "type":"structure", - "members":{ - "State":{ - "shape":"InstanceState", - "documentation":"

The current state of the instance.

" - }, - "StateChangeReason":{ - "shape":"InstanceStateChangeReason", - "documentation":"

The details of the status change reason for the instance.

" - }, - "Timeline":{ - "shape":"InstanceTimeline", - "documentation":"

The timeline of the instance status over time.

" - } - }, - "documentation":"

The instance status details.

" - }, - "InstanceTimeline":{ - "type":"structure", - "members":{ - "CreationDateTime":{ - "shape":"Date", - "documentation":"

The creation date and time of the instance.

" - }, - "ReadyDateTime":{ - "shape":"Date", - "documentation":"

The date and time when the instance was ready to perform tasks.

" - }, - "EndDateTime":{ - "shape":"Date", - "documentation":"

The date and time when the instance was terminated.

" - } - }, - "documentation":"

The timeline of the instance lifecycle.

" - }, - "InstanceType":{ - "type":"string", - "min":1, - "max":256, - "pattern":"[\\u0020-\\uD7FF\\uE000-\\uFFFD\\uD800\\uDC00-\\uDBFF\\uDFFF\\r\\n\\t]*" - }, - "Integer":{"type":"integer"}, - "InternalServerError":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"InternalFailure", - "httpStatusCode":500 - }, - "exception":true, - "documentation":"

Indicates that an error occurred while processing the request and that the request was not completed.

" - }, - "InternalServerException":{ - "type":"structure", - "members":{ - "Message":{ - "shape":"ErrorMessage", - "documentation":"

The message associated with the exception.

" - } - }, - "exception":true, - "fault":true, - "documentation":"

This exception occurs when there is an internal failure in the EMR service.

" - }, - "InvalidRequestException":{ - "type":"structure", - "members":{ - "ErrorCode":{ - "shape":"ErrorCode", - "documentation":"

The error code associated with the exception.

" - }, - "Message":{ - "shape":"ErrorMessage", - "documentation":"

The message associated with the exception.

" - } - }, - "exception":true, - "documentation":"

This exception occurs when there is something wrong with user input.

" - }, - "JobFlowDetail":{ - "type":"structure", - "required":[ - "JobFlowId", - "Name", - "ExecutionStatusDetail", - "Instances" - ], - "members":{ - "JobFlowId":{ - "shape":"XmlStringMaxLen256", - "documentation":"

The job flow identifier.

" - }, - "Name":{ - "shape":"XmlStringMaxLen256", - "documentation":"

The name of the job flow.

" - }, - "LogUri":{ - "shape":"XmlString", - "documentation":"

The location in Amazon S3 where log files for the job are stored.

" - }, - "AmiVersion":{ - "shape":"XmlStringMaxLen256", - "documentation":"

The version of the AMI used to initialize Amazon EC2 instances in the job flow. For a list of AMI versions currently supported by Amazon ElasticMapReduce, go to AMI Versions Supported in Elastic MapReduce in the Amazon Elastic MapReduce Developer's Guide.

" - }, - "ExecutionStatusDetail":{ - "shape":"JobFlowExecutionStatusDetail", - "documentation":"

Describes the execution status of the job flow.

" - }, - "Instances":{ - "shape":"JobFlowInstancesDetail", - "documentation":"

Describes the Amazon EC2 instances of the job flow.

" - }, - "Steps":{ - "shape":"StepDetailList", - "documentation":"

A list of steps run by the job flow.

" - }, - "BootstrapActions":{ - "shape":"BootstrapActionDetailList", - "documentation":"

A list of the bootstrap actions run by the job flow.

" - }, - "SupportedProducts":{ - "shape":"SupportedProductsList", - "documentation":"

A list of strings set by third party software when the job flow is launched. If you are not using third party software to manage the job flow this value is empty.

" - }, - "VisibleToAllUsers":{ - "shape":"Boolean", - "documentation":"

Specifies whether the job flow is visible to all IAM users of the AWS account associated with the job flow. If this value is set to true, all IAM users of that AWS account can view and (if they have the proper policy permissions set) manage the job flow. If it is set to false, only the IAM user that created the job flow can view and manage it. This value can be changed using the SetVisibleToAllUsers action.

" - }, - "JobFlowRole":{ - "shape":"XmlString", - "documentation":"

The IAM role that was specified when the job flow was launched. The EC2 instances of the job flow assume this role.

" - }, - "ServiceRole":{ - "shape":"XmlString", - "documentation":"

The IAM role that will be assumed by the Amazon EMR service to access AWS resources on your behalf.

" - } - }, - "documentation":"

A description of a job flow.

" - }, - "JobFlowDetailList":{ - "type":"list", - "member":{"shape":"JobFlowDetail"} - }, - "JobFlowExecutionState":{ - "type":"string", - "enum":[ - "STARTING", - "BOOTSTRAPPING", - "RUNNING", - "WAITING", - "SHUTTING_DOWN", - "TERMINATED", - "COMPLETED", - "FAILED" - ], - "documentation":"

The type of instance.

A small instance

A large instance

" - }, - "JobFlowExecutionStateList":{ - "type":"list", - "member":{"shape":"JobFlowExecutionState"} - }, - "JobFlowExecutionStatusDetail":{ - "type":"structure", - "required":[ - "State", - "CreationDateTime" - ], - "members":{ - "State":{ - "shape":"JobFlowExecutionState", - "documentation":"

The state of the job flow.

" - }, - "CreationDateTime":{ - "shape":"Date", - "documentation":"

The creation date and time of the job flow.

" - }, - "StartDateTime":{ - "shape":"Date", - "documentation":"

The start date and time of the job flow.

" - }, - "ReadyDateTime":{ - "shape":"Date", - "documentation":"

The date and time when the job flow was ready to start running bootstrap actions.

" - }, - "EndDateTime":{ - "shape":"Date", - "documentation":"

The completion date and time of the job flow.

" - }, - "LastStateChangeReason":{ - "shape":"XmlString", - "documentation":"

Description of the job flow last changed state.

" - } - }, - "documentation":"

Describes the status of the job flow.

" - }, - "JobFlowInstancesConfig":{ - "type":"structure", - "members":{ - "MasterInstanceType":{ - "shape":"InstanceType", - "documentation":"

The EC2 instance type of the master node.

" - }, - "SlaveInstanceType":{ - "shape":"InstanceType", - "documentation":"

The EC2 instance type of the slave nodes.

" - }, - "InstanceCount":{ - "shape":"Integer", - "documentation":"

The number of Amazon EC2 instances used to execute the job flow.

" - }, - "InstanceGroups":{ - "shape":"InstanceGroupConfigList", - "documentation":"

Configuration for the job flow's instance groups.

" - }, - "Ec2KeyName":{ - "shape":"XmlStringMaxLen256", - "documentation":"

The name of the Amazon EC2 key pair that can be used to ssh to the master node as the user called \"hadoop.\"

" - }, - "Placement":{ - "shape":"PlacementType", - "documentation":"

The Availability Zone the job flow will run in.

" - }, - "KeepJobFlowAliveWhenNoSteps":{ - "shape":"Boolean", - "documentation":"

Specifies whether the job flow should terminate after completing all steps.

" - }, - "TerminationProtected":{ - "shape":"Boolean", - "documentation":"

Specifies whether to lock the job flow to prevent the Amazon EC2 instances from being terminated by API call, user intervention, or in the event of a job flow error.

" - }, - "HadoopVersion":{ - "shape":"XmlStringMaxLen256", - "documentation":"

The Hadoop version for the job flow. Valid inputs are \"0.18\", \"0.20\", \"0.20.205\", \"1.0.3\", \"2.2.0\", or \"2.4.0\". If you do not set this value, the default of 0.18 is used, unless the AmiVersion parameter is set in the RunJobFlow call, in which case the default version of Hadoop for that AMI version is used.

" - }, - "Ec2SubnetId":{ - "shape":"XmlStringMaxLen256", - "documentation":"

To launch the job flow in Amazon Virtual Private Cloud (Amazon VPC), set this parameter to the identifier of the Amazon VPC subnet where you want the job flow to launch. If you do not specify this value, the job flow is launched in the normal Amazon Web Services cloud, outside of an Amazon VPC.

Amazon VPC currently does not support cluster compute quadruple extra large (cc1.4xlarge) instances. Thus you cannot specify the cc1.4xlarge instance type for nodes of a job flow launched in a Amazon VPC.

" - }, - "EmrManagedMasterSecurityGroup":{ - "shape":"XmlStringMaxLen256", - "documentation":"

The identifier of the Amazon EC2 security group (managed by Amazon ElasticMapReduce) for the master node.

" - }, - "EmrManagedSlaveSecurityGroup":{ - "shape":"XmlStringMaxLen256", - "documentation":"

The identifier of the Amazon EC2 security group (managed by Amazon ElasticMapReduce) for the slave nodes.

" - }, - "AdditionalMasterSecurityGroups":{ - "shape":"SecurityGroupsList", - "documentation":"

A list of additional Amazon EC2 security group IDs for the master node.

" - }, - "AdditionalSlaveSecurityGroups":{ - "shape":"SecurityGroupsList", - "documentation":"

A list of additional Amazon EC2 security group IDs for the slave nodes.

" - } - }, - "documentation":"

A description of the Amazon EC2 instance running the job flow. A valid JobFlowInstancesConfig must contain at least InstanceGroups, which is the recommended configuration. However, a valid alternative is to have MasterInstanceType, SlaveInstanceType, and InstanceCount (all three must be present).

" - }, - "JobFlowInstancesDetail":{ - "type":"structure", - "required":[ - "MasterInstanceType", - "SlaveInstanceType", - "InstanceCount" - ], - "members":{ - "MasterInstanceType":{ - "shape":"InstanceType", - "documentation":"

The Amazon EC2 master node instance type.

" - }, - "MasterPublicDnsName":{ - "shape":"XmlString", - "documentation":"

The DNS name of the master node.

" - }, - "MasterInstanceId":{ - "shape":"XmlString", - "documentation":"

The Amazon EC2 instance identifier of the master node.

" - }, - "SlaveInstanceType":{ - "shape":"InstanceType", - "documentation":"

The Amazon EC2 slave node instance type.

" - }, - "InstanceCount":{ - "shape":"Integer", - "documentation":"

The number of Amazon EC2 instances in the cluster. If the value is 1, the same instance serves as both the master and slave node. If the value is greater than 1, one instance is the master node and all others are slave nodes.

" - }, - "InstanceGroups":{ - "shape":"InstanceGroupDetailList", - "documentation":"

Details about the job flow's instance groups.

" - }, - "NormalizedInstanceHours":{ - "shape":"Integer", - "documentation":"

An approximation of the cost of the job flow, represented in m1.small/hours. This value is incremented once for every hour an m1.small runs. Larger instances are weighted more, so an Amazon EC2 instance that is roughly four times more expensive would result in the normalized instance hours being incremented by four. This result is only an approximation and does not reflect the actual billing rate.

" - }, - "Ec2KeyName":{ - "shape":"XmlStringMaxLen256", - "documentation":"

The name of an Amazon EC2 key pair that can be used to ssh to the master node of job flow.

" - }, - "Ec2SubnetId":{ - "shape":"XmlStringMaxLen256", - "documentation":"

For job flows launched within Amazon Virtual Private Cloud, this value specifies the identifier of the subnet where the job flow was launched.

" - }, - "Placement":{ - "shape":"PlacementType", - "documentation":"

The Amazon EC2 Availability Zone for the job flow.

" - }, - "KeepJobFlowAliveWhenNoSteps":{ - "shape":"Boolean", - "documentation":"

Specifies whether the job flow should terminate after completing all steps.

" - }, - "TerminationProtected":{ - "shape":"Boolean", - "documentation":"

Specifies whether the Amazon EC2 instances in the cluster are protected from termination by API calls, user intervention, or in the event of a job flow error.

" - }, - "HadoopVersion":{ - "shape":"XmlStringMaxLen256", - "documentation":"

The Hadoop version for the job flow.

" - } - }, - "documentation":"

Specify the type of Amazon EC2 instances to run the job flow on.

" - }, - "KeyValue":{ - "type":"structure", - "members":{ - "Key":{ - "shape":"XmlString", - "documentation":"

The unique identifier of a key value pair.

" - }, - "Value":{ - "shape":"XmlString", - "documentation":"

The value part of the identified key.

" - } - }, - "documentation":"

A key value pair.

" - }, - "KeyValueList":{ - "type":"list", - "member":{"shape":"KeyValue"} - }, - "ListBootstrapActionsInput":{ - "type":"structure", - "required":["ClusterId"], - "members":{ - "ClusterId":{ - "shape":"ClusterId", - "documentation":"

The cluster identifier for the bootstrap actions to list .

" - }, - "Marker":{ - "shape":"Marker", - "documentation":"

The pagination token that indicates the next set of results to retrieve .

" - } - }, - "documentation":"

This input determines which bootstrap actions to retrieve.

" - }, - "ListBootstrapActionsOutput":{ - "type":"structure", - "members":{ - "BootstrapActions":{ - "shape":"CommandList", - "documentation":"

The bootstrap actions associated with the cluster .

" - }, - "Marker":{ - "shape":"Marker", - "documentation":"

The pagination token that indicates the next set of results to retrieve .

" - } - }, - "documentation":"

This output contains the boostrap actions detail .

" - }, - "ListClustersInput":{ - "type":"structure", - "members":{ - "CreatedAfter":{ - "shape":"Date", - "documentation":"

The creation date and time beginning value filter for listing clusters .

" - }, - "CreatedBefore":{ - "shape":"Date", - "documentation":"

The creation date and time end value filter for listing clusters .

" - }, - "ClusterStates":{ - "shape":"ClusterStateList", - "documentation":"

The cluster state filters to apply when listing clusters.

" - }, - "Marker":{ - "shape":"Marker", - "documentation":"

The pagination token that indicates the next set of results to retrieve.

" - } - }, - "documentation":"

This input determines how the ListClusters action filters the list of clusters that it returns.

" - }, - "ListClustersOutput":{ - "type":"structure", - "members":{ - "Clusters":{ - "shape":"ClusterSummaryList", - "documentation":"

The list of clusters for the account based on the given filters.

" - }, - "Marker":{ - "shape":"Marker", - "documentation":"

The pagination token that indicates the next set of results to retrieve.

" - } - }, - "documentation":"

This contains a ClusterSummaryList with the cluster details; for example, the cluster IDs, names, and status.

" - }, - "ListInstanceGroupsInput":{ - "type":"structure", - "required":["ClusterId"], - "members":{ - "ClusterId":{ - "shape":"ClusterId", - "documentation":"

The identifier of the cluster for which to list the instance groups.

" - }, - "Marker":{ - "shape":"Marker", - "documentation":"

The pagination token that indicates the next set of results to retrieve.

" - } - }, - "documentation":"

This input determines which instance groups to retrieve.

" - }, - "ListInstanceGroupsOutput":{ - "type":"structure", - "members":{ - "InstanceGroups":{ - "shape":"InstanceGroupList", - "documentation":"

The list of instance groups for the cluster and given filters.

" - }, - "Marker":{ - "shape":"Marker", - "documentation":"

The pagination token that indicates the next set of results to retrieve.

" - } - }, - "documentation":"

This input determines which instance groups to retrieve.

" - }, - "ListInstancesInput":{ - "type":"structure", - "required":["ClusterId"], - "members":{ - "ClusterId":{ - "shape":"ClusterId", - "documentation":"

The identifier of the cluster for which to list the instances.

" - }, - "InstanceGroupId":{ - "shape":"InstanceGroupId", - "documentation":"

The identifier of the instance group for which to list the instances.

" - }, - "InstanceGroupTypes":{ - "shape":"InstanceGroupTypeList", - "documentation":"

The type of instance group for which to list the instances.

" - }, - "Marker":{ - "shape":"Marker", - "documentation":"

The pagination token that indicates the next set of results to retrieve.

" - } - }, - "documentation":"

This input determines which instances to list.

" - }, - "ListInstancesOutput":{ - "type":"structure", - "members":{ - "Instances":{ - "shape":"InstanceList", - "documentation":"

The list of instances for the cluster and given filters.

" - }, - "Marker":{ - "shape":"Marker", - "documentation":"

The pagination token that indicates the next set of results to retrieve.

" - } - }, - "documentation":"

This output contains the list of instances.

" - }, - "ListStepsInput":{ - "type":"structure", - "required":["ClusterId"], - "members":{ - "ClusterId":{ - "shape":"ClusterId", - "documentation":"

The identifier of the cluster for which to list the steps.

" - }, - "StepStates":{ - "shape":"StepStateList", - "documentation":"

The filter to limit the step list based on certain states.

" - }, - "StepIds":{ - "shape":"XmlStringList", - "documentation":"

The filter to limit the step list based on the identifier of the steps.

" - }, - "Marker":{ - "shape":"Marker", - "documentation":"

The pagination token that indicates the next set of results to retrieve.

" - } - }, - "documentation":"

This input determines which steps to list.

" - }, - "ListStepsOutput":{ - "type":"structure", - "members":{ - "Steps":{ - "shape":"StepSummaryList", - "documentation":"

The filtered list of steps for the cluster.

" - }, - "Marker":{ - "shape":"Marker", - "documentation":"

The pagination token that indicates the next set of results to retrieve.

" - } - }, - "documentation":"

This output contains the list of steps.

" - }, - "Marker":{"type":"string"}, - "MarketType":{ - "type":"string", - "enum":[ - "ON_DEMAND", - "SPOT" - ] - }, - "ModifyInstanceGroupsInput":{ - "type":"structure", - "members":{ - "InstanceGroups":{ - "shape":"InstanceGroupModifyConfigList", - "documentation":"

Instance groups to change.

" - } - }, - "documentation":"

Change the size of some instance groups.

" - }, - "NewSupportedProductsList":{ - "type":"list", - "member":{"shape":"SupportedProductConfig"} - }, - "PlacementType":{ - "type":"structure", - "required":["AvailabilityZone"], - "members":{ - "AvailabilityZone":{ - "shape":"XmlString", - "documentation":"

The Amazon EC2 Availability Zone for the job flow.

" - } - }, - "documentation":"

The Amazon EC2 location for the job flow.

" - }, - "RemoveTagsInput":{ - "type":"structure", - "required":[ - "ResourceId", - "TagKeys" - ], - "members":{ - "ResourceId":{ - "shape":"ResourceId", - "documentation":"

The Amazon EMR resource identifier from which tags will be removed. This value must be a cluster identifier.

" - }, - "TagKeys":{ - "shape":"StringList", - "documentation":"

A list of tag keys to remove from a resource.

" - } - }, - "documentation":"

This input identifies a cluster and a list of tags to remove.

" - }, - "RemoveTagsOutput":{ - "type":"structure", - "members":{ - }, - "documentation":"

This output indicates the result of removing tags from a resource.

" - }, - "ResourceId":{"type":"string"}, - "RunJobFlowInput":{ - "type":"structure", - "required":[ - "Name", - "Instances" - ], - "members":{ - "Name":{ - "shape":"XmlStringMaxLen256", - "documentation":"

The name of the job flow.

" - }, - "LogUri":{ - "shape":"XmlString", - "documentation":"

The location in Amazon S3 to write the log files of the job flow. If a value is not provided, logs are not created.

" - }, - "AdditionalInfo":{ - "shape":"XmlString", - "documentation":"

A JSON string for selecting additional features.

" - }, - "AmiVersion":{ - "shape":"XmlStringMaxLen256", - "documentation":"

The version of the Amazon Machine Image (AMI) to use when launching Amazon EC2 instances in the job flow. The following values are valid:

If the AMI supports multiple versions of Hadoop (for example, AMI 1.0 supports both Hadoop 0.18 and 0.20) you can use the JobFlowInstancesConfig HadoopVersion parameter to modify the version of Hadoop from the defaults shown above.

For details about the AMI versions currently supported by Amazon Elastic MapReduce, go to AMI Versions Supported in Elastic MapReduce in the Amazon Elastic MapReduce Developer's Guide.

" - }, - "Instances":{ - "shape":"JobFlowInstancesConfig", - "documentation":"

A specification of the number and type of Amazon EC2 instances on which to run the job flow.

" - }, - "Steps":{ - "shape":"StepConfigList", - "documentation":"

A list of steps to be executed by the job flow.

" - }, - "BootstrapActions":{ - "shape":"BootstrapActionConfigList", - "documentation":"

A list of bootstrap actions that will be run before Hadoop is started on the cluster nodes.

" - }, - "SupportedProducts":{ - "shape":"SupportedProductsList", - "documentation":"

A list of strings that indicates third-party software to use with the job flow. For more information, go to Use Third Party Applications with Amazon EMR. Currently supported values are:

" - }, - "NewSupportedProducts":{ - "shape":"NewSupportedProductsList", - "documentation":"

A list of strings that indicates third-party software to use with the job flow that accepts a user argument list. EMR accepts and forwards the argument list to the corresponding installation script as bootstrap action arguments. For more information, see Launch a Job Flow on the MapR Distribution for Hadoop. Currently supported values are:

" - }, - "VisibleToAllUsers":{ - "shape":"Boolean", - "documentation":"

Whether the job flow is visible to all IAM users of the AWS account associated with the job flow. If this value is set to true, all IAM users of that AWS account can view and (if they have the proper policy permissions set) manage the job flow. If it is set to false, only the IAM user that created the job flow can view and manage it.

" - }, - "JobFlowRole":{ - "shape":"XmlString", - "documentation":"

An IAM role for the job flow. The EC2 instances of the job flow assume this role. The default role is EMRJobflowDefault. In order to use the default role, you must have already created it using the CLI.

" - }, - "ServiceRole":{ - "shape":"XmlString", - "documentation":"

The IAM role that will be assumed by the Amazon EMR service to access AWS resources on your behalf.

" - }, - "Tags":{ - "shape":"TagList", - "documentation":"

A list of tags to associate with a cluster and propagate to Amazon EC2 instances.

" - } - }, - "documentation":"

Input to the RunJobFlow operation.

" - }, - "RunJobFlowOutput":{ - "type":"structure", - "members":{ - "JobFlowId":{ - "shape":"XmlStringMaxLen256", - "documentation":"

An unique identifier for the job flow.

" - } - }, - "documentation":"

The result of the RunJobFlow operation.

" - }, - "ScriptBootstrapActionConfig":{ - "type":"structure", - "required":["Path"], - "members":{ - "Path":{ - "shape":"XmlString", - "documentation":"

Location of the script to run during a bootstrap action. Can be either a location in Amazon S3 or on a local file system.

" - }, - "Args":{ - "shape":"XmlStringList", - "documentation":"

A list of command line arguments to pass to the bootstrap action script.

" - } - }, - "documentation":"

Configuration of the script to run during a bootstrap action.

" - }, - "SecurityGroupsList":{ - "type":"list", - "member":{"shape":"XmlStringMaxLen256"} - }, - "SetTerminationProtectionInput":{ - "type":"structure", - "required":[ - "JobFlowIds", - "TerminationProtected" - ], - "members":{ - "JobFlowIds":{ - "shape":"XmlStringList", - "documentation":"

A list of strings that uniquely identify the job flows to protect. This identifier is returned by RunJobFlow and can also be obtained from DescribeJobFlows .

" - }, - "TerminationProtected":{ - "shape":"Boolean", - "documentation":"

A Boolean that indicates whether to protect the job flow and prevent the Amazon EC2 instances in the cluster from shutting down due to API calls, user intervention, or job-flow error.

" - } - }, - "documentation":"

The input argument to the TerminationProtection operation.

" - }, - "SetVisibleToAllUsersInput":{ - "type":"structure", - "required":[ - "JobFlowIds", - "VisibleToAllUsers" - ], - "members":{ - "JobFlowIds":{ - "shape":"XmlStringList", - "documentation":"

Identifiers of the job flows to receive the new visibility setting.

" - }, - "VisibleToAllUsers":{ - "shape":"Boolean", - "documentation":"

Whether the specified job flows are visible to all IAM users of the AWS account associated with the job flow. If this value is set to True, all IAM users of that AWS account can view and, if they have the proper IAM policy permissions set, manage the job flows. If it is set to False, only the IAM user that created a job flow can view and manage it.

" - } - }, - "documentation":"

The input to the SetVisibleToAllUsers action.

" - }, - "Step":{ - "type":"structure", - "members":{ - "Id":{ - "shape":"StepId", - "documentation":"

The identifier of the cluster step.

" - }, - "Name":{ - "shape":"String", - "documentation":"

The name of the cluster step.

" - }, - "Config":{ - "shape":"HadoopStepConfig", - "documentation":"

The Hadoop job configuration of the cluster step.

" - }, - "ActionOnFailure":{ - "shape":"ActionOnFailure", - "documentation":"

This specifies what action to take when the cluster step fails. Possible values are TERMINATE_CLUSTER, CANCEL_AND_WAIT, and CONTINUE.

" - }, - "Status":{ - "shape":"StepStatus", - "documentation":"

The current execution status details of the cluster step.

" - } - }, - "documentation":"

This represents a step in a cluster.

" - }, - "StepConfig":{ - "type":"structure", - "required":[ - "Name", - "HadoopJarStep" - ], - "members":{ - "Name":{ - "shape":"XmlStringMaxLen256", - "documentation":"

The name of the job flow step.

" - }, - "ActionOnFailure":{ - "shape":"ActionOnFailure", - "documentation":"

The action to take if the job flow step fails.

" - }, - "HadoopJarStep":{ - "shape":"HadoopJarStepConfig", - "documentation":"

The JAR file used for the job flow step.

" - } - }, - "documentation":"

Specification of a job flow step.

" - }, - "StepConfigList":{ - "type":"list", - "member":{"shape":"StepConfig"} - }, - "StepDetail":{ - "type":"structure", - "required":[ - "StepConfig", - "ExecutionStatusDetail" - ], - "members":{ - "StepConfig":{ - "shape":"StepConfig", - "documentation":"

The step configuration.

" - }, - "ExecutionStatusDetail":{ - "shape":"StepExecutionStatusDetail", - "documentation":"

The description of the step status.

" - } - }, - "documentation":"

Combines the execution state and configuration of a step.

" - }, - "StepDetailList":{ - "type":"list", - "member":{"shape":"StepDetail"} - }, - "StepExecutionState":{ - "type":"string", - "enum":[ - "PENDING", - "RUNNING", - "CONTINUE", - "COMPLETED", - "CANCELLED", - "FAILED", - "INTERRUPTED" - ] - }, - "StepExecutionStatusDetail":{ - "type":"structure", - "required":[ - "State", - "CreationDateTime" - ], - "members":{ - "State":{ - "shape":"StepExecutionState", - "documentation":"

The state of the job flow step.

" - }, - "CreationDateTime":{ - "shape":"Date", - "documentation":"

The creation date and time of the step.

" - }, - "StartDateTime":{ - "shape":"Date", - "documentation":"

The start date and time of the step.

" - }, - "EndDateTime":{ - "shape":"Date", - "documentation":"

The completion date and time of the step.

" - }, - "LastStateChangeReason":{ - "shape":"XmlString", - "documentation":"

A description of the step's current state.

" - } - }, - "documentation":"

The execution state of a step.

" - }, - "StepId":{"type":"string"}, - "StepIdsList":{ - "type":"list", - "member":{"shape":"XmlStringMaxLen256"} - }, - "StepState":{ - "type":"string", - "enum":[ - "PENDING", - "RUNNING", - "COMPLETED", - "CANCELLED", - "FAILED", - "INTERRUPTED" - ] - }, - "StepStateChangeReason":{ - "type":"structure", - "members":{ - "Code":{ - "shape":"StepStateChangeReasonCode", - "documentation":"

The programmable code for the state change reason.

" - }, - "Message":{ - "shape":"String", - "documentation":"

The descriptive message for the state change reason.

" - } - }, - "documentation":"

The details of the step state change reason.

" - }, - "StepStateChangeReasonCode":{ - "type":"string", - "enum":["NONE"] - }, - "StepStateList":{ - "type":"list", - "member":{"shape":"StepState"} - }, - "StepStatus":{ - "type":"structure", - "members":{ - "State":{ - "shape":"StepState", - "documentation":"

The execution state of the cluster step.

" - }, - "StateChangeReason":{ - "shape":"StepStateChangeReason", - "documentation":"

The reason for the step execution status change.

" - }, - "Timeline":{ - "shape":"StepTimeline", - "documentation":"

The timeline of the cluster step status over time.

" - } - }, - "documentation":"

The execution status details of the cluster step.

" - }, - "StepSummary":{ - "type":"structure", - "members":{ - "Id":{ - "shape":"StepId", - "documentation":"

The identifier of the cluster step.

" - }, - "Name":{ - "shape":"String", - "documentation":"

The name of the cluster step.

" - }, - "Config":{ - "shape":"HadoopStepConfig", - "documentation":"

The Hadoop job configuration of the cluster step.

" - }, - "ActionOnFailure":{ - "shape":"ActionOnFailure", - "documentation":"

This specifies what action to take when the cluster step fails. Possible values are TERMINATE_CLUSTER, CANCEL_AND_WAIT, and CONTINUE.

" - }, - "Status":{ - "shape":"StepStatus", - "documentation":"

The current execution status details of the cluster step.

" - } - }, - "documentation":"

The summary of the cluster step.

" - }, - "StepSummaryList":{ - "type":"list", - "member":{"shape":"StepSummary"} - }, - "StepTimeline":{ - "type":"structure", - "members":{ - "CreationDateTime":{ - "shape":"Date", - "documentation":"

The date and time when the cluster step was created.

" - }, - "StartDateTime":{ - "shape":"Date", - "documentation":"

The date and time when the cluster step execution started.

" - }, - "EndDateTime":{ - "shape":"Date", - "documentation":"

The date and time when the cluster step execution completed or failed.

" - } - }, - "documentation":"

The timeline of the cluster step lifecycle.

" - }, - "String":{"type":"string"}, - "StringList":{ - "type":"list", - "member":{"shape":"String"} - }, - "StringMap":{ - "type":"map", - "key":{"shape":"String"}, - "value":{"shape":"String"} - }, - "SupportedProductConfig":{ - "type":"structure", - "members":{ - "Name":{ - "shape":"XmlStringMaxLen256", - "documentation":"

The name of the product configuration.

" - }, - "Args":{ - "shape":"XmlStringList", - "documentation":"

The list of user-supplied arguments.

" - } - }, - "documentation":"

The list of supported product configurations which allow user-supplied arguments. EMR accepts these arguments and forwards them to the corresponding installation script as bootstrap action arguments.

" - }, - "SupportedProductsList":{ - "type":"list", - "member":{"shape":"XmlStringMaxLen256"} - }, - "Tag":{ - "type":"structure", - "members":{ - "Key":{ - "shape":"String", - "documentation":"

A user-defined key, which is the minimum required information for a valid tag. For more information, see Tagging Amazon EMR Resources.

" - }, - "Value":{ - "shape":"String", - "documentation":"

A user-defined value, which is optional in a tag. For more information, see Tagging Amazon EMR Resources.

" - } - }, - "documentation":"

A key/value pair containing user-defined metadata that you can associate with an Amazon EMR resource. Tags make it easier to associate clusters in various ways, such as grouping clu\\ sters to track your Amazon EMR resource allocation costs. For more information, see Tagging Amazon EMR Resources.

" - }, - "TagList":{ - "type":"list", - "member":{"shape":"Tag"} - }, - "TerminateJobFlowsInput":{ - "type":"structure", - "required":["JobFlowIds"], - "members":{ - "JobFlowIds":{ - "shape":"XmlStringList", - "documentation":"

A list of job flows to be shutdown.

" - } - }, - "documentation":"

Input to the TerminateJobFlows operation.

" - }, - "XmlString":{ - "type":"string", - "min":0, - "max":10280, - "pattern":"[\\u0020-\\uD7FF\\uE000-\\uFFFD\\uD800\\uDC00-\\uDBFF\\uDFFF\\r\\n\\t]*" - }, - "XmlStringList":{ - "type":"list", - "member":{"shape":"XmlString"} - }, - "XmlStringMaxLen256":{ - "type":"string", - "min":0, - "max":256, - "pattern":"[\\u0020-\\uD7FF\\uE000-\\uFFFD\\uD800\\uDC00-\\uDBFF\\uDFFF\\r\\n\\t]*" - } - } -} diff --git a/src/github.com/getlantern/aws-sdk-go/apis/emr/2009-03-31.paginators.json b/src/github.com/getlantern/aws-sdk-go/apis/emr/2009-03-31.paginators.json deleted file mode 100644 index 8092b5984e..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/apis/emr/2009-03-31.paginators.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "pagination": { - "ListBootstrapActions": { - "input_token": "Marker", - "output_token": "Marker", - "result_key": "BootstrapActions" - }, - "ListClusters": { - "input_token": "Marker", - "output_token": "Marker", - "result_key": "Clusters" - }, - "ListInstanceGroups": { - "input_token": "Marker", - "output_token": "Marker", - "result_key": "InstanceGroups" - }, - "ListInstances": { - "input_token": "Marker", - "output_token": "Marker", - "result_key": "Instances" - }, - "ListSteps": { - "input_token": "Marker", - "output_token": "Marker", - "result_key": "Steps" - } - } -} diff --git a/src/github.com/getlantern/aws-sdk-go/apis/emr/2009-03-31.waiters.json b/src/github.com/getlantern/aws-sdk-go/apis/emr/2009-03-31.waiters.json deleted file mode 100644 index 9c68bdda0c..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/apis/emr/2009-03-31.waiters.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "version": 2, - "waiters": { - "ClusterRunning": { - "delay": 30, - "operation": "DescribeCluster", - "maxAttempts": 60, - "acceptors": [ - { - "state": "success", - "matcher": "path", - "argument": "Cluster.Status.State", - "expected": "RUNNING" - }, - { - "state": "success", - "matcher": "path", - "argument": "Cluster.Status.State", - "expected": "WAITING" - }, - { - "state": "failure", - "matcher": "path", - "argument": "Cluster.Status.State", - "expected": "TERMINATING" - }, - { - "state": "failure", - "matcher": "path", - "argument": "Cluster.Status.State", - "expected": "TERMINATED" - }, - { - "state": "failure", - "matcher": "path", - "argument": "Cluster.Status.State", - "expected": "TERMINATED_WITH_ERRORS" - } - ] - } - } -} diff --git a/src/github.com/getlantern/aws-sdk-go/apis/glacier/2012-06-01.normal.json b/src/github.com/getlantern/aws-sdk-go/apis/glacier/2012-06-01.normal.json deleted file mode 100644 index 4c831e705e..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/apis/glacier/2012-06-01.normal.json +++ /dev/null @@ -1,2132 +0,0 @@ -{ - "metadata":{ - "apiVersion":"2012-06-01", - "checksumFormat":"sha256", - "endpointPrefix":"glacier", - "serviceFullName":"Amazon Glacier", - "signatureVersion":"v4", - "protocol":"rest-json" - }, - "documentation":"

Amazon Glacier is a storage solution for \"cold data.\"

Amazon Glacier is an extremely low-cost storage service that provides secure, durable, and easy-to-use storage for data backup and archival. With Amazon Glacier, customers can store their data cost effectively for months, years, or decades. Amazon Glacier also enables customers to offload the administrative burdens of operating and scaling storage to AWS, so they don't have to worry about capacity planning, hardware provisioning, data replication, hardware failure and recovery, or time-consuming hardware migrations.

Amazon Glacier is a great storage choice when low storage cost is paramount, your data is rarely retrieved, and retrieval latency of several hours is acceptable. If your application requires fast or frequent access to your data, consider using Amazon S3. For more information, go to Amazon Simple Storage Service (Amazon S3).

You can store any kind of data in any format. There is no maximum limit on the total amount of data you can store in Amazon Glacier.

If you are a first-time user of Amazon Glacier, we recommend that you begin by reading the following sections in the Amazon Glacier Developer Guide:

", - "operations":{ - "AbortMultipartUpload":{ - "name":"AbortMultipartUpload", - "http":{ - "method":"DELETE", - "requestUri":"/{accountId}/vaults/{vaultName}/multipart-uploads/{uploadId}", - "responseCode":204 - }, - "input":{ - "shape":"AbortMultipartUploadInput", - "documentation":"

Provides options to abort a multipart upload identified by the upload ID.

For information about the underlying REST API, go to Abort Multipart Upload. For conceptual information, go to Working with Archives in Amazon Glacier.

" - }, - "errors":[ - { - "shape":"ResourceNotFoundException", - "error":{"httpStatusCode":404}, - "exception":true, - "documentation":"

Returned if the specified resource, such as a vault, upload ID, or job ID, does not exist.

" - }, - { - "shape":"InvalidParameterValueException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

Returned if a parameter of the request is incorrectly specified.

" - }, - { - "shape":"MissingParameterValueException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

Returned if a required header or parameter is missing from the request.

" - }, - { - "shape":"ServiceUnavailableException", - "error":{"httpStatusCode":500}, - "exception":true, - "documentation":"

Returned if the service cannot complete the request.

" - } - ], - "documentation":"

This operation aborts a multipart upload identified by the upload ID.

After the Abort Multipart Upload request succeeds, you cannot upload any more parts to the multipart upload or complete the multipart upload. Aborting a completed upload fails. However, aborting an already-aborted upload will succeed, for a short time. For more information about uploading a part and completing a multipart upload, see UploadMultipartPart and CompleteMultipartUpload.

This operation is idempotent.

An AWS account has full permission to perform all operations (actions). However, AWS Identity and Access Management (IAM) users don't have any permissions by default. You must grant them explicit permission to perform specific actions. For more information, see Access Control Using AWS Identity and Access Management (IAM).

For conceptual information and underlying REST API, go to Working with Archives in Amazon Glacier and Abort Multipart Upload in the Amazon Glacier Developer Guide.

" - }, - "CompleteMultipartUpload":{ - "name":"CompleteMultipartUpload", - "http":{ - "method":"POST", - "requestUri":"/{accountId}/vaults/{vaultName}/multipart-uploads/{uploadId}", - "responseCode":201 - }, - "input":{ - "shape":"CompleteMultipartUploadInput", - "documentation":"

Provides options to complete a multipart upload operation. This informs Amazon Glacier that all the archive parts have been uploaded and Amazon Glacier can now assemble the archive from the uploaded parts. After assembling and saving the archive to the vault, Amazon Glacier returns the URI path of the newly created archive resource.

" - }, - "output":{ - "shape":"ArchiveCreationOutput", - "documentation":"

Contains the Amazon Glacier response to your request.

For information about the underlying REST API, go to Upload Archive. For conceptual information, go to Working with Archives in Amazon Glacier.

" - }, - "errors":[ - { - "shape":"ResourceNotFoundException", - "error":{"httpStatusCode":404}, - "exception":true, - "documentation":"

Returned if the specified resource, such as a vault, upload ID, or job ID, does not exist.

" - }, - { - "shape":"InvalidParameterValueException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

Returned if a parameter of the request is incorrectly specified.

" - }, - { - "shape":"MissingParameterValueException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

Returned if a required header or parameter is missing from the request.

" - }, - { - "shape":"ServiceUnavailableException", - "error":{"httpStatusCode":500}, - "exception":true, - "documentation":"

Returned if the service cannot complete the request.

" - } - ], - "documentation":"

You call this operation to inform Amazon Glacier that all the archive parts have been uploaded and that Amazon Glacier can now assemble the archive from the uploaded parts. After assembling and saving the archive to the vault, Amazon Glacier returns the URI path of the newly created archive resource. Using the URI path, you can then access the archive. After you upload an archive, you should save the archive ID returned to retrieve the archive at a later point. You can also get the vault inventory to obtain a list of archive IDs in a vault. For more information, see InitiateJob.

In the request, you must include the computed SHA256 tree hash of the entire archive you have uploaded. For information about computing a SHA256 tree hash, see Computing Checksums. On the server side, Amazon Glacier also constructs the SHA256 tree hash of the assembled archive. If the values match, Amazon Glacier saves the archive to the vault; otherwise, it returns an error, and the operation fails. The ListParts operation returns a list of parts uploaded for a specific multipart upload. It includes checksum information for each uploaded part that can be used to debug a bad checksum issue.

Additionally, Amazon Glacier also checks for any missing content ranges when assembling the archive, if missing content ranges are found, Amazon Glacier returns an error and the operation fails.

Complete Multipart Upload is an idempotent operation. After your first successful complete multipart upload, if you call the operation again within a short period, the operation will succeed and return the same archive ID. This is useful in the event you experience a network issue that causes an aborted connection or receive a 500 server error, in which case you can repeat your Complete Multipart Upload request and get the same archive ID without creating duplicate archives. Note, however, that after the multipart upload completes, you cannot call the List Parts operation and the multipart upload will not appear in List Multipart Uploads response, even if idempotent complete is possible.

An AWS account has full permission to perform all operations (actions). However, AWS Identity and Access Management (IAM) users don't have any permissions by default. You must grant them explicit permission to perform specific actions. For more information, see Access Control Using AWS Identity and Access Management (IAM).

For conceptual information and underlying REST API, go to Uploading Large Archives in Parts (Multipart Upload) and Complete Multipart Upload in the Amazon Glacier Developer Guide.

" - }, - "CreateVault":{ - "name":"CreateVault", - "http":{ - "method":"PUT", - "requestUri":"/{accountId}/vaults/{vaultName}", - "responseCode":201 - }, - "input":{ - "shape":"CreateVaultInput", - "documentation":"

Provides options to create a vault.

" - }, - "output":{ - "shape":"CreateVaultOutput", - "documentation":"

Contains the Amazon Glacier response to your request.

" - }, - "errors":[ - { - "shape":"InvalidParameterValueException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

Returned if a parameter of the request is incorrectly specified.

" - }, - { - "shape":"MissingParameterValueException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

Returned if a required header or parameter is missing from the request.

" - }, - { - "shape":"ServiceUnavailableException", - "error":{"httpStatusCode":500}, - "exception":true, - "documentation":"

Returned if the service cannot complete the request.

" - }, - { - "shape":"LimitExceededException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

Returned if the request results in a vault or account limit being exceeded.

" - } - ], - "documentation":"

This operation creates a new vault with the specified name. The name of the vault must be unique within a region for an AWS account. You can create up to 1,000 vaults per account. If you need to create more vaults, contact Amazon Glacier.

You must use the following guidelines when naming a vault.

This operation is idempotent.

An AWS account has full permission to perform all operations (actions). However, AWS Identity and Access Management (IAM) users don't have any permissions by default. You must grant them explicit permission to perform specific actions. For more information, see Access Control Using AWS Identity and Access Management (IAM).

For conceptual information and underlying REST API, go to Creating a Vault in Amazon Glacier and Create Vault in the Amazon Glacier Developer Guide.

" - }, - "DeleteArchive":{ - "name":"DeleteArchive", - "http":{ - "method":"DELETE", - "requestUri":"/{accountId}/vaults/{vaultName}/archives/{archiveId}", - "responseCode":204 - }, - "input":{ - "shape":"DeleteArchiveInput", - "documentation":"

Provides options for deleting an archive from an Amazon Glacier vault.

" - }, - "errors":[ - { - "shape":"ResourceNotFoundException", - "error":{"httpStatusCode":404}, - "exception":true, - "documentation":"

Returned if the specified resource, such as a vault, upload ID, or job ID, does not exist.

" - }, - { - "shape":"InvalidParameterValueException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

Returned if a parameter of the request is incorrectly specified.

" - }, - { - "shape":"MissingParameterValueException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

Returned if a required header or parameter is missing from the request.

" - }, - { - "shape":"ServiceUnavailableException", - "error":{"httpStatusCode":500}, - "exception":true, - "documentation":"

Returned if the service cannot complete the request.

" - } - ], - "documentation":"

This operation deletes an archive from a vault. Subsequent requests to initiate a retrieval of this archive will fail. Archive retrievals that are in progress for this archive ID may or may not succeed according to the following scenarios:

This operation is idempotent. Attempting to delete an already-deleted archive does not result in an error.

An AWS account has full permission to perform all operations (actions). However, AWS Identity and Access Management (IAM) users don't have any permissions by default. You must grant them explicit permission to perform specific actions. For more information, see Access Control Using AWS Identity and Access Management (IAM).

For conceptual information and underlying REST API, go to Deleting an Archive in Amazon Glacier and Delete Archive in the Amazon Glacier Developer Guide.

" - }, - "DeleteVault":{ - "name":"DeleteVault", - "http":{ - "method":"DELETE", - "requestUri":"/{accountId}/vaults/{vaultName}", - "responseCode":204 - }, - "input":{ - "shape":"DeleteVaultInput", - "documentation":"

Provides options for deleting a vault from Amazon Glacier.

" - }, - "errors":[ - { - "shape":"ResourceNotFoundException", - "error":{"httpStatusCode":404}, - "exception":true, - "documentation":"

Returned if the specified resource, such as a vault, upload ID, or job ID, does not exist.

" - }, - { - "shape":"InvalidParameterValueException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

Returned if a parameter of the request is incorrectly specified.

" - }, - { - "shape":"MissingParameterValueException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

Returned if a required header or parameter is missing from the request.

" - }, - { - "shape":"ServiceUnavailableException", - "error":{"httpStatusCode":500}, - "exception":true, - "documentation":"

Returned if the service cannot complete the request.

" - } - ], - "documentation":"

This operation deletes a vault. Amazon Glacier will delete a vault only if there are no archives in the vault as of the last inventory and there have been no writes to the vault since the last inventory. If either of these conditions is not satisfied, the vault deletion fails (that is, the vault is not removed) and Amazon Glacier returns an error. You can use DescribeVault to return the number of archives in a vault, and you can use Initiate a Job (POST jobs) to initiate a new inventory retrieval for a vault. The inventory contains the archive IDs you use to delete archives using Delete Archive (DELETE archive).

This operation is idempotent.

An AWS account has full permission to perform all operations (actions). However, AWS Identity and Access Management (IAM) users don't have any permissions by default. You must grant them explicit permission to perform specific actions. For more information, see Access Control Using AWS Identity and Access Management (IAM).

For conceptual information and underlying REST API, go to Deleting a Vault in Amazon Glacier and Delete Vault in the Amazon Glacier Developer Guide.

" - }, - "DeleteVaultNotifications":{ - "name":"DeleteVaultNotifications", - "http":{ - "method":"DELETE", - "requestUri":"/{accountId}/vaults/{vaultName}/notification-configuration", - "responseCode":204 - }, - "input":{ - "shape":"DeleteVaultNotificationsInput", - "documentation":"

Provides options for deleting a vault notification configuration from an Amazon Glacier vault.

" - }, - "errors":[ - { - "shape":"ResourceNotFoundException", - "error":{"httpStatusCode":404}, - "exception":true, - "documentation":"

Returned if the specified resource, such as a vault, upload ID, or job ID, does not exist.

" - }, - { - "shape":"InvalidParameterValueException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

Returned if a parameter of the request is incorrectly specified.

" - }, - { - "shape":"MissingParameterValueException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

Returned if a required header or parameter is missing from the request.

" - }, - { - "shape":"ServiceUnavailableException", - "error":{"httpStatusCode":500}, - "exception":true, - "documentation":"

Returned if the service cannot complete the request.

" - } - ], - "documentation":"

This operation deletes the notification configuration set for a vault. The operation is eventually consistent;that is, it might take some time for Amazon Glacier to completely disable the notifications and you might still receive some notifications for a short time after you send the delete request.

An AWS account has full permission to perform all operations (actions). However, AWS Identity and Access Management (IAM) users don't have any permissions by default. You must grant them explicit permission to perform specific actions. For more information, see Access Control Using AWS Identity and Access Management (IAM).

For conceptual information and underlying REST API, go to Configuring Vault Notifications in Amazon Glacier and Delete Vault Notification Configuration in the Amazon Glacier Developer Guide.

" - }, - "DescribeJob":{ - "name":"DescribeJob", - "http":{ - "method":"GET", - "requestUri":"/{accountId}/vaults/{vaultName}/jobs/{jobId}" - }, - "input":{ - "shape":"DescribeJobInput", - "documentation":"

Provides options for retrieving a job description.

" - }, - "output":{ - "shape":"GlacierJobDescription", - "documentation":"

Describes an Amazon Glacier job.

" - }, - "errors":[ - { - "shape":"ResourceNotFoundException", - "error":{"httpStatusCode":404}, - "exception":true, - "documentation":"

Returned if the specified resource, such as a vault, upload ID, or job ID, does not exist.

" - }, - { - "shape":"InvalidParameterValueException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

Returned if a parameter of the request is incorrectly specified.

" - }, - { - "shape":"MissingParameterValueException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

Returned if a required header or parameter is missing from the request.

" - }, - { - "shape":"ServiceUnavailableException", - "error":{"httpStatusCode":500}, - "exception":true, - "documentation":"

Returned if the service cannot complete the request.

" - } - ], - "documentation":"

This operation returns information about a job you previously initiated, including the job initiation date, the user who initiated the job, the job status code/message and the Amazon SNS topic to notify after Amazon Glacier completes the job. For more information about initiating a job, see InitiateJob.

This operation enables you to check the status of your job. However, it is strongly recommended that you set up an Amazon SNS topic and specify it in your initiate job request so that Amazon Glacier can notify the topic after it completes the job.

A job ID will not expire for at least 24 hours after Amazon Glacier completes the job.

An AWS account has full permission to perform all operations (actions). However, AWS Identity and Access Management (IAM) users don't have any permissions by default. You must grant them explicit permission to perform specific actions. For more information, see Access Control Using AWS Identity and Access Management (IAM).

For information about the underlying REST API, go to Working with Archives in Amazon Glacier in the Amazon Glacier Developer Guide.

" - }, - "DescribeVault":{ - "name":"DescribeVault", - "http":{ - "method":"GET", - "requestUri":"/{accountId}/vaults/{vaultName}" - }, - "input":{ - "shape":"DescribeVaultInput", - "documentation":"

Provides options for retrieving metadata for a specific vault in Amazon Glacier.

" - }, - "output":{ - "shape":"DescribeVaultOutput", - "documentation":"

Contains the Amazon Glacier response to your request.

" - }, - "errors":[ - { - "shape":"ResourceNotFoundException", - "error":{"httpStatusCode":404}, - "exception":true, - "documentation":"

Returned if the specified resource, such as a vault, upload ID, or job ID, does not exist.

" - }, - { - "shape":"InvalidParameterValueException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

Returned if a parameter of the request is incorrectly specified.

" - }, - { - "shape":"MissingParameterValueException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

Returned if a required header or parameter is missing from the request.

" - }, - { - "shape":"ServiceUnavailableException", - "error":{"httpStatusCode":500}, - "exception":true, - "documentation":"

Returned if the service cannot complete the request.

" - } - ], - "documentation":"

This operation returns information about a vault, including the vault's Amazon Resource Name (ARN), the date the vault was created, the number of archives it contains, and the total size of all the archives in the vault. The number of archives and their total size are as of the last inventory generation. This means that if you add or remove an archive from a vault, and then immediately use Describe Vault, the change in contents will not be immediately reflected. If you want to retrieve the latest inventory of the vault, use InitiateJob. Amazon Glacier generates vault inventories approximately daily. For more information, see Downloading a Vault Inventory in Amazon Glacier.

An AWS account has full permission to perform all operations (actions). However, AWS Identity and Access Management (IAM) users don't have any permissions by default. You must grant them explicit permission to perform specific actions. For more information, see Access Control Using AWS Identity and Access Management (IAM).

For conceptual information and underlying REST API, go to Retrieving Vault Metadata in Amazon Glacier and Describe Vault in the Amazon Glacier Developer Guide.

" - }, - "GetDataRetrievalPolicy":{ - "name":"GetDataRetrievalPolicy", - "http":{ - "method":"GET", - "requestUri":"/{accountId}/policies/data-retrieval" - }, - "input":{"shape":"GetDataRetrievalPolicyInput"}, - "output":{"shape":"GetDataRetrievalPolicyOutput"}, - "errors":[ - { - "shape":"InvalidParameterValueException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

Returned if a parameter of the request is incorrectly specified.

" - }, - { - "shape":"MissingParameterValueException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

Returned if a required header or parameter is missing from the request.

" - }, - { - "shape":"ServiceUnavailableException", - "error":{"httpStatusCode":500}, - "exception":true, - "documentation":"

Returned if the service cannot complete the request.

" - } - ] - }, - "GetJobOutput":{ - "name":"GetJobOutput", - "http":{ - "method":"GET", - "requestUri":"/{accountId}/vaults/{vaultName}/jobs/{jobId}/output" - }, - "input":{ - "shape":"GetJobOutputInput", - "documentation":"

Provides options for downloading output of an Amazon Glacier job.

" - }, - "output":{ - "shape":"GetJobOutputOutput", - "documentation":"

Contains the Amazon Glacier response to your request.

" - }, - "errors":[ - { - "shape":"ResourceNotFoundException", - "error":{"httpStatusCode":404}, - "exception":true, - "documentation":"

Returned if the specified resource, such as a vault, upload ID, or job ID, does not exist.

" - }, - { - "shape":"InvalidParameterValueException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

Returned if a parameter of the request is incorrectly specified.

" - }, - { - "shape":"MissingParameterValueException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

Returned if a required header or parameter is missing from the request.

" - }, - { - "shape":"ServiceUnavailableException", - "error":{"httpStatusCode":500}, - "exception":true, - "documentation":"

Returned if the service cannot complete the request.

" - } - ], - "documentation":"

This operation downloads the output of the job you initiated using InitiateJob. Depending on the job type you specified when you initiated the job, the output will be either the content of an archive or a vault inventory.

A job ID will not expire for at least 24 hours after Amazon Glacier completes the job. That is, you can download the job output within the 24 hours period after Amazon Glacier completes the job.

If the job output is large, then you can use the Range request header to retrieve a portion of the output. This allows you to download the entire output in smaller chunks of bytes. For example, suppose you have 1 GB of job output you want to download and you decide to download 128 MB chunks of data at a time, which is a total of eight Get Job Output requests. You use the following process to download the job output:

  1. Download a 128 MB chunk of output by specifying the appropriate byte range using the Range header.

  2. Along with the data, the response includes a checksum of the payload. You compute the checksum of the payload on the client and compare it with the checksum you received in the response to ensure you received all the expected data.

  3. Repeat steps 1 and 2 for all the eight 128 MB chunks of output data, each time specifying the appropriate byte range.

  4. After downloading all the parts of the job output, you have a list of eight checksum values. Compute the tree hash of these values to find the checksum of the entire output. Using the DescribeJob API, obtain job information of the job that provided you the output. The response includes the checksum of the entire archive stored in Amazon Glacier. You compare this value with the checksum you computed to ensure you have downloaded the entire archive content with no errors.

An AWS account has full permission to perform all operations (actions). However, AWS Identity and Access Management (IAM) users don't have any permissions by default. You must grant them explicit permission to perform specific actions. For more information, see Access Control Using AWS Identity and Access Management (IAM).

For conceptual information and the underlying REST API, go to Downloading a Vault Inventory, Downloading an Archive, and Get Job Output

" - }, - "GetVaultNotifications":{ - "name":"GetVaultNotifications", - "http":{ - "method":"GET", - "requestUri":"/{accountId}/vaults/{vaultName}/notification-configuration" - }, - "input":{ - "shape":"GetVaultNotificationsInput", - "documentation":"

Provides options for retrieving the notification configuration set on an Amazon Glacier vault.

" - }, - "output":{ - "shape":"GetVaultNotificationsOutput", - "documentation":"

Contains the Amazon Glacier response to your request.

" - }, - "errors":[ - { - "shape":"ResourceNotFoundException", - "error":{"httpStatusCode":404}, - "exception":true, - "documentation":"

Returned if the specified resource, such as a vault, upload ID, or job ID, does not exist.

" - }, - { - "shape":"InvalidParameterValueException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

Returned if a parameter of the request is incorrectly specified.

" - }, - { - "shape":"MissingParameterValueException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

Returned if a required header or parameter is missing from the request.

" - }, - { - "shape":"ServiceUnavailableException", - "error":{"httpStatusCode":500}, - "exception":true, - "documentation":"

Returned if the service cannot complete the request.

" - } - ], - "documentation":"

This operation retrieves the notification-configuration subresource of the specified vault.

For information about setting a notification configuration on a vault, see SetVaultNotifications. If a notification configuration for a vault is not set, the operation returns a 404 Not Found error. For more information about vault notifications, see Configuring Vault Notifications in Amazon Glacier.

An AWS account has full permission to perform all operations (actions). However, AWS Identity and Access Management (IAM) users don't have any permissions by default. You must grant them explicit permission to perform specific actions. For more information, see Access Control Using AWS Identity and Access Management (IAM).

For conceptual information and underlying REST API, go to Configuring Vault Notifications in Amazon Glacier and Get Vault Notification Configuration in the Amazon Glacier Developer Guide.

" - }, - "InitiateJob":{ - "name":"InitiateJob", - "http":{ - "method":"POST", - "requestUri":"/{accountId}/vaults/{vaultName}/jobs", - "responseCode":202 - }, - "input":{ - "shape":"InitiateJobInput", - "documentation":"

Provides options for initiating an Amazon Glacier job.

" - }, - "output":{ - "shape":"InitiateJobOutput", - "documentation":"

Contains the Amazon Glacier response to your request.

" - }, - "errors":[ - { - "shape":"ResourceNotFoundException", - "error":{"httpStatusCode":404}, - "exception":true, - "documentation":"

Returned if the specified resource, such as a vault, upload ID, or job ID, does not exist.

" - }, - { - "shape":"PolicyEnforcedException", - "error":{"httpStatusCode":400}, - "exception":true - }, - { - "shape":"InvalidParameterValueException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

Returned if a parameter of the request is incorrectly specified.

" - }, - { - "shape":"MissingParameterValueException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

Returned if a required header or parameter is missing from the request.

" - }, - { - "shape":"ServiceUnavailableException", - "error":{"httpStatusCode":500}, - "exception":true, - "documentation":"

Returned if the service cannot complete the request.

" - } - ], - "documentation":"

This operation initiates a job of the specified type. In this release, you can initiate a job to retrieve either an archive or a vault inventory (a list of archives in a vault).

Retrieving data from Amazon Glacier is a two-step process:

  1. Initiate a retrieval job.

  2. After the job completes, download the bytes.

The retrieval request is executed asynchronously. When you initiate a retrieval job, Amazon Glacier creates a job and returns a job ID in the response. When Amazon Glacier completes the job, you can get the job output (archive or inventory data). For information about getting job output, see GetJobOutput operation.

The job must complete before you can get its output. To determine when a job is complete, you have the following options:

The information you get via notification is same that you get by calling DescribeJob.

If for a specific event, you add both the notification configuration on the vault and also specify an SNS topic in your initiate job request, Amazon Glacier sends both notifications. For more information, see SetVaultNotifications.

An AWS account has full permission to perform all operations (actions). However, AWS Identity and Access Management (IAM) users don't have any permissions by default. You must grant them explicit permission to perform specific actions. For more information, see Access Control Using AWS Identity and Access Management (IAM).

About the Vault Inventory

Amazon Glacier prepares an inventory for each vault periodically, every 24 hours. When you initiate a job for a vault inventory, Amazon Glacier returns the last inventory for the vault. The inventory data you get might be up to a day or two days old. Also, the initiate inventory job might take some time to complete before you can download the vault inventory. So you do not want to retrieve a vault inventory for each vault operation. However, in some scenarios, you might find the vault inventory useful. For example, when you upload an archive, you can provide an archive description but not an archive name. Amazon Glacier provides you a unique archive ID, an opaque string of characters. So, you might maintain your own database that maps archive names to their corresponding Amazon Glacier assigned archive IDs. You might find the vault inventory useful in the event you need to reconcile information in your database with the actual vault inventory.

Range Inventory Retrieval

You can limit the number of inventory items retrieved by filtering on the archive creation date or by setting a limit.

Filtering by Archive Creation Date

You can retrieve inventory items for archives created between StartDate and EndDate by specifying values for these parameters in the InitiateJob request. Archives created on or after the StartDate and before the EndDate will be returned. If you only provide the StartDate without the EndDate, you will retrieve the inventory for all archives created on or after the StartDate. If you only provide the EndDate without the StartDate, you will get back the inventory for all archives created before the EndDate.

Limiting Inventory Items per Retrieval

You can limit the number of inventory items returned by setting the Limit parameter in the InitiateJob request. The inventory job output will contain inventory items up to the specified Limit. If there are more inventory items available, the result is paginated. After a job is complete you can use the DescribeJob operation to get a marker that you use in a subsequent InitiateJob request. The marker will indicate the starting point to retrieve the next set of inventory items. You can page through your entire inventory by repeatedly making InitiateJob requests with the marker from the previous DescribeJob output, until you get a marker from DescribeJob that returns null, indicating that there are no more inventory items available.

You can use the Limit parameter together with the date range parameters.

About Ranged Archive Retrieval

You can initiate an archive retrieval for the whole archive or a range of the archive. In the case of ranged archive retrieval, you specify a byte range to return or the whole archive. The range specified must be megabyte (MB) aligned, that is the range start value must be divisible by 1 MB and range end value plus 1 must be divisible by 1 MB or equal the end of the archive. If the ranged archive retrieval is not megabyte aligned, this operation returns a 400 response. Furthermore, to ensure you get checksum values for data you download using Get Job Output API, the range must be tree hash aligned.

An AWS account has full permission to perform all operations (actions). However, AWS Identity and Access Management (IAM) users don't have any permissions by default. You must grant them explicit permission to perform specific actions. For more information, see Access Control Using AWS Identity and Access Management (IAM).

For conceptual information and the underlying REST API, go to Initiate a Job and Downloading a Vault Inventory

" - }, - "InitiateMultipartUpload":{ - "name":"InitiateMultipartUpload", - "http":{ - "method":"POST", - "requestUri":"/{accountId}/vaults/{vaultName}/multipart-uploads", - "responseCode":201 - }, - "input":{ - "shape":"InitiateMultipartUploadInput", - "documentation":"

Provides options for initiating a multipart upload to an Amazon Glacier vault.

" - }, - "output":{ - "shape":"InitiateMultipartUploadOutput", - "documentation":"

Contains the Amazon Glacier response to your request.

" - }, - "errors":[ - { - "shape":"ResourceNotFoundException", - "error":{"httpStatusCode":404}, - "exception":true, - "documentation":"

Returned if the specified resource, such as a vault, upload ID, or job ID, does not exist.

" - }, - { - "shape":"InvalidParameterValueException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

Returned if a parameter of the request is incorrectly specified.

" - }, - { - "shape":"MissingParameterValueException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

Returned if a required header or parameter is missing from the request.

" - }, - { - "shape":"ServiceUnavailableException", - "error":{"httpStatusCode":500}, - "exception":true, - "documentation":"

Returned if the service cannot complete the request.

" - } - ], - "documentation":"

This operation initiates a multipart upload. Amazon Glacier creates a multipart upload resource and returns its ID in the response. The multipart upload ID is used in subsequent requests to upload parts of an archive (see UploadMultipartPart).

When you initiate a multipart upload, you specify the part size in number of bytes. The part size must be a megabyte (1024 KB) multiplied by a power of 2-for example, 1048576 (1 MB), 2097152 (2 MB), 4194304 (4 MB), 8388608 (8 MB), and so on. The minimum allowable part size is 1 MB, and the maximum is 4 GB.

Every part you upload to this resource (see UploadMultipartPart), except the last one, must have the same size. The last one can be the same size or smaller. For example, suppose you want to upload a 16.2 MB file. If you initiate the multipart upload with a part size of 4 MB, you will upload four parts of 4 MB each and one part of 0.2 MB.

You don't need to know the size of the archive when you start a multipart upload because Amazon Glacier does not require you to specify the overall archive size.

After you complete the multipart upload, Amazon Glacier removes the multipart upload resource referenced by the ID. Amazon Glacier also removes the multipart upload resource if you cancel the multipart upload or it may be removed if there is no activity for a period of 24 hours.

An AWS account has full permission to perform all operations (actions). However, AWS Identity and Access Management (IAM) users don't have any permissions by default. You must grant them explicit permission to perform specific actions. For more information, see Access Control Using AWS Identity and Access Management (IAM).

For conceptual information and underlying REST API, go to Uploading Large Archives in Parts (Multipart Upload) and Initiate Multipart Upload in the Amazon Glacier Developer Guide.

" - }, - "ListJobs":{ - "name":"ListJobs", - "http":{ - "method":"GET", - "requestUri":"/{accountId}/vaults/{vaultName}/jobs" - }, - "input":{ - "shape":"ListJobsInput", - "documentation":"

Provides options for retrieving a job list for an Amazon Glacier vault.

" - }, - "output":{ - "shape":"ListJobsOutput", - "documentation":"

Contains the Amazon Glacier response to your request.

" - }, - "errors":[ - { - "shape":"ResourceNotFoundException", - "error":{"httpStatusCode":404}, - "exception":true, - "documentation":"

Returned if the specified resource, such as a vault, upload ID, or job ID, does not exist.

" - }, - { - "shape":"InvalidParameterValueException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

Returned if a parameter of the request is incorrectly specified.

" - }, - { - "shape":"MissingParameterValueException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

Returned if a required header or parameter is missing from the request.

" - }, - { - "shape":"ServiceUnavailableException", - "error":{"httpStatusCode":500}, - "exception":true, - "documentation":"

Returned if the service cannot complete the request.

" - } - ], - "documentation":"

This operation lists jobs for a vault, including jobs that are in-progress and jobs that have recently finished.

Amazon Glacier retains recently completed jobs for a period before deleting them; however, it eventually removes completed jobs. The output of completed jobs can be retrieved. Retaining completed jobs for a period of time after they have completed enables you to get a job output in the event you miss the job completion notification or your first attempt to download it fails. For example, suppose you start an archive retrieval job to download an archive. After the job completes, you start to download the archive but encounter a network error. In this scenario, you can retry and download the archive while the job exists.

To retrieve an archive or retrieve a vault inventory from Amazon Glacier, you first initiate a job, and after the job completes, you download the data. For an archive retrieval, the output is the archive data, and for an inventory retrieval, it is the inventory list. The List Job operation returns a list of these jobs sorted by job initiation time.

This List Jobs operation supports pagination. By default, this operation returns up to 1,000 jobs in the response. You should always check the response for a marker at which to continue the list; if there are no more items the marker is null. To return a list of jobs that begins at a specific job, set the marker request parameter to the value you obtained from a previous List Jobs request. You can also limit the number of jobs returned in the response by specifying the limit parameter in the request.

Additionally, you can filter the jobs list returned by specifying an optional statuscode (InProgress, Succeeded, or Failed) and completed (true, false) parameter. The statuscode allows you to specify that only jobs that match a specified status are returned. The completed parameter allows you to specify that only jobs in a specific completion state are returned.

An AWS account has full permission to perform all operations (actions). However, AWS Identity and Access Management (IAM) users don't have any permissions by default. You must grant them explicit permission to perform specific actions. For more information, see Access Control Using AWS Identity and Access Management (IAM).

For the underlying REST API, go to List Jobs

" - }, - "ListMultipartUploads":{ - "name":"ListMultipartUploads", - "http":{ - "method":"GET", - "requestUri":"/{accountId}/vaults/{vaultName}/multipart-uploads" - }, - "input":{ - "shape":"ListMultipartUploadsInput", - "documentation":"

Provides options for retrieving list of in-progress multipart uploads for an Amazon Glacier vault.

" - }, - "output":{ - "shape":"ListMultipartUploadsOutput", - "documentation":"

Contains the Amazon Glacier response to your request.

" - }, - "errors":[ - { - "shape":"ResourceNotFoundException", - "error":{"httpStatusCode":404}, - "exception":true, - "documentation":"

Returned if the specified resource, such as a vault, upload ID, or job ID, does not exist.

" - }, - { - "shape":"InvalidParameterValueException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

Returned if a parameter of the request is incorrectly specified.

" - }, - { - "shape":"MissingParameterValueException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

Returned if a required header or parameter is missing from the request.

" - }, - { - "shape":"ServiceUnavailableException", - "error":{"httpStatusCode":500}, - "exception":true, - "documentation":"

Returned if the service cannot complete the request.

" - } - ], - "documentation":"

This operation lists in-progress multipart uploads for the specified vault. An in-progress multipart upload is a multipart upload that has been initiated by an InitiateMultipartUpload request, but has not yet been completed or aborted. The list returned in the List Multipart Upload response has no guaranteed order.

The List Multipart Uploads operation supports pagination. By default, this operation returns up to 1,000 multipart uploads in the response. You should always check the response for a marker at which to continue the list; if there are no more items the marker is null. To return a list of multipart uploads that begins at a specific upload, set the marker request parameter to the value you obtained from a previous List Multipart Upload request. You can also limit the number of uploads returned in the response by specifying the limit parameter in the request.

Note the difference between this operation and listing parts (ListParts). The List Multipart Uploads operation lists all multipart uploads for a vault and does not require a multipart upload ID. The List Parts operation requires a multipart upload ID since parts are associated with a single upload.

An AWS account has full permission to perform all operations (actions). However, AWS Identity and Access Management (IAM) users don't have any permissions by default. You must grant them explicit permission to perform specific actions. For more information, see Access Control Using AWS Identity and Access Management (IAM).

For conceptual information and the underlying REST API, go to Working with Archives in Amazon Glacier and List Multipart Uploads in the Amazon Glacier Developer Guide.

" - }, - "ListParts":{ - "name":"ListParts", - "http":{ - "method":"GET", - "requestUri":"/{accountId}/vaults/{vaultName}/multipart-uploads/{uploadId}" - }, - "input":{ - "shape":"ListPartsInput", - "documentation":"

Provides options for retrieving a list of parts of an archive that have been uploaded in a specific multipart upload.

" - }, - "output":{ - "shape":"ListPartsOutput", - "documentation":"

Contains the Amazon Glacier response to your request.

" - }, - "errors":[ - { - "shape":"ResourceNotFoundException", - "error":{"httpStatusCode":404}, - "exception":true, - "documentation":"

Returned if the specified resource, such as a vault, upload ID, or job ID, does not exist.

" - }, - { - "shape":"InvalidParameterValueException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

Returned if a parameter of the request is incorrectly specified.

" - }, - { - "shape":"MissingParameterValueException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

Returned if a required header or parameter is missing from the request.

" - }, - { - "shape":"ServiceUnavailableException", - "error":{"httpStatusCode":500}, - "exception":true, - "documentation":"

Returned if the service cannot complete the request.

" - } - ], - "documentation":"

This operation lists the parts of an archive that have been uploaded in a specific multipart upload. You can make this request at any time during an in-progress multipart upload before you complete the upload (see CompleteMultipartUpload. List Parts returns an error for completed uploads. The list returned in the List Parts response is sorted by part range.

The List Parts operation supports pagination. By default, this operation returns up to 1,000 uploaded parts in the response. You should always check the response for a marker at which to continue the list; if there are no more items the marker is null. To return a list of parts that begins at a specific part, set the marker request parameter to the value you obtained from a previous List Parts request. You can also limit the number of parts returned in the response by specifying the limit parameter in the request.

An AWS account has full permission to perform all operations (actions). However, AWS Identity and Access Management (IAM) users don't have any permissions by default. You must grant them explicit permission to perform specific actions. For more information, see Access Control Using AWS Identity and Access Management (IAM).

For conceptual information and the underlying REST API, go to Working with Archives in Amazon Glacier and List Parts in the Amazon Glacier Developer Guide.

" - }, - "ListVaults":{ - "name":"ListVaults", - "http":{ - "method":"GET", - "requestUri":"/{accountId}/vaults" - }, - "input":{ - "shape":"ListVaultsInput", - "documentation":"

Provides options to retrieve the vault list owned by the calling user's account. The list provides metadata information for each vault.

" - }, - "output":{ - "shape":"ListVaultsOutput", - "documentation":"

Contains the Amazon Glacier response to your request.

" - }, - "errors":[ - { - "shape":"ResourceNotFoundException", - "error":{"httpStatusCode":404}, - "exception":true, - "documentation":"

Returned if the specified resource, such as a vault, upload ID, or job ID, does not exist.

" - }, - { - "shape":"InvalidParameterValueException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

Returned if a parameter of the request is incorrectly specified.

" - }, - { - "shape":"MissingParameterValueException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

Returned if a required header or parameter is missing from the request.

" - }, - { - "shape":"ServiceUnavailableException", - "error":{"httpStatusCode":500}, - "exception":true, - "documentation":"

Returned if the service cannot complete the request.

" - } - ], - "documentation":"

This operation lists all vaults owned by the calling user's account. The list returned in the response is ASCII-sorted by vault name.

By default, this operation returns up to 1,000 items. If there are more vaults to list, the response marker field contains the vault Amazon Resource Name (ARN) at which to continue the list with a new List Vaults request; otherwise, the marker field is null. To return a list of vaults that begins at a specific vault, set the marker request parameter to the vault ARN you obtained from a previous List Vaults request. You can also limit the number of vaults returned in the response by specifying the limit parameter in the request.

An AWS account has full permission to perform all operations (actions). However, AWS Identity and Access Management (IAM) users don't have any permissions by default. You must grant them explicit permission to perform specific actions. For more information, see Access Control Using AWS Identity and Access Management (IAM).

For conceptual information and underlying REST API, go to Retrieving Vault Metadata in Amazon Glacier and List Vaults in the Amazon Glacier Developer Guide.

" - }, - "SetDataRetrievalPolicy":{ - "name":"SetDataRetrievalPolicy", - "http":{ - "method":"PUT", - "requestUri":"/{accountId}/policies/data-retrieval", - "responseCode":204 - }, - "input":{"shape":"SetDataRetrievalPolicyInput"}, - "errors":[ - { - "shape":"InvalidParameterValueException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

Returned if a parameter of the request is incorrectly specified.

" - }, - { - "shape":"MissingParameterValueException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

Returned if a required header or parameter is missing from the request.

" - }, - { - "shape":"ServiceUnavailableException", - "error":{"httpStatusCode":500}, - "exception":true, - "documentation":"

Returned if the service cannot complete the request.

" - } - ] - }, - "SetVaultNotifications":{ - "name":"SetVaultNotifications", - "http":{ - "method":"PUT", - "requestUri":"/{accountId}/vaults/{vaultName}/notification-configuration", - "responseCode":204 - }, - "input":{ - "shape":"SetVaultNotificationsInput", - "documentation":"

Provides options to configure notifications that will be sent when specific events happen to a vault.

" - }, - "errors":[ - { - "shape":"ResourceNotFoundException", - "error":{"httpStatusCode":404}, - "exception":true, - "documentation":"

Returned if the specified resource, such as a vault, upload ID, or job ID, does not exist.

" - }, - { - "shape":"InvalidParameterValueException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

Returned if a parameter of the request is incorrectly specified.

" - }, - { - "shape":"MissingParameterValueException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

Returned if a required header or parameter is missing from the request.

" - }, - { - "shape":"ServiceUnavailableException", - "error":{"httpStatusCode":500}, - "exception":true, - "documentation":"

Returned if the service cannot complete the request.

" - } - ], - "documentation":"

This operation configures notifications that will be sent when specific events happen to a vault. By default, you don't get any notifications.

To configure vault notifications, send a PUT request to the notification-configuration subresource of the vault. The request should include a JSON document that provides an Amazon SNS topic and specific events for which you want Amazon Glacier to send notifications to the topic.

Amazon SNS topics must grant permission to the vault to be allowed to publish notifications to the topic. You can configure a vault to publish a notification for the following vault events:

An AWS account has full permission to perform all operations (actions). However, AWS Identity and Access Management (IAM) users don't have any permissions by default. You must grant them explicit permission to perform specific actions. For more information, see Access Control Using AWS Identity and Access Management (IAM).

For conceptual information and underlying REST API, go to Configuring Vault Notifications in Amazon Glacier and Set Vault Notification Configuration in the Amazon Glacier Developer Guide.

" - }, - "UploadArchive":{ - "name":"UploadArchive", - "http":{ - "method":"POST", - "requestUri":"/{accountId}/vaults/{vaultName}/archives", - "responseCode":201 - }, - "input":{ - "shape":"UploadArchiveInput", - "documentation":"

Provides options to add an archive to a vault.

" - }, - "output":{ - "shape":"ArchiveCreationOutput", - "documentation":"

Contains the Amazon Glacier response to your request.

For information about the underlying REST API, go to Upload Archive. For conceptual information, go to Working with Archives in Amazon Glacier.

" - }, - "errors":[ - { - "shape":"ResourceNotFoundException", - "error":{"httpStatusCode":404}, - "exception":true, - "documentation":"

Returned if the specified resource, such as a vault, upload ID, or job ID, does not exist.

" - }, - { - "shape":"InvalidParameterValueException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

Returned if a parameter of the request is incorrectly specified.

" - }, - { - "shape":"MissingParameterValueException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

Returned if a required header or parameter is missing from the request.

" - }, - { - "shape":"RequestTimeoutException", - "error":{"httpStatusCode":408}, - "exception":true, - "documentation":"

Returned if, when uploading an archive, Amazon Glacier times out while receiving the upload.

" - }, - { - "shape":"ServiceUnavailableException", - "error":{"httpStatusCode":500}, - "exception":true, - "documentation":"

Returned if the service cannot complete the request.

" - } - ], - "documentation":"

This operation adds an archive to a vault. This is a synchronous operation, and for a successful upload, your data is durably persisted. Amazon Glacier returns the archive ID in the x-amz-archive-id header of the response.

You must use the archive ID to access your data in Amazon Glacier. After you upload an archive, you should save the archive ID returned so that you can retrieve or delete the archive later. Besides saving the archive ID, you can also index it and give it a friendly name to allow for better searching. You can also use the optional archive description field to specify how the archive is referred to in an external index of archives, such as you might create in Amazon DynamoDB. You can also get the vault inventory to obtain a list of archive IDs in a vault. For more information, see InitiateJob.

You must provide a SHA256 tree hash of the data you are uploading. For information about computing a SHA256 tree hash, see Computing Checksums.

You can optionally specify an archive description of up to 1,024 printable ASCII characters. You can get the archive description when you either retrieve the archive or get the vault inventory. For more information, see InitiateJob. Amazon Glacier does not interpret the description in any way. An archive description does not need to be unique. You cannot use the description to retrieve or sort the archive list.

Archives are immutable. After you upload an archive, you cannot edit the archive or its description.

An AWS account has full permission to perform all operations (actions). However, AWS Identity and Access Management (IAM) users don't have any permissions by default. You must grant them explicit permission to perform specific actions. For more information, see Access Control Using AWS Identity and Access Management (IAM).

For conceptual information and underlying REST API, go to Uploading an Archive in Amazon Glacier and Upload Archive in the Amazon Glacier Developer Guide.

" - }, - "UploadMultipartPart":{ - "name":"UploadMultipartPart", - "http":{ - "method":"PUT", - "requestUri":"/{accountId}/vaults/{vaultName}/multipart-uploads/{uploadId}", - "responseCode":204 - }, - "input":{ - "shape":"UploadMultipartPartInput", - "documentation":"

Provides options to upload a part of an archive in a multipart upload operation.

" - }, - "output":{ - "shape":"UploadMultipartPartOutput", - "documentation":"

Contains the Amazon Glacier response to your request.

" - }, - "errors":[ - { - "shape":"ResourceNotFoundException", - "error":{"httpStatusCode":404}, - "exception":true, - "documentation":"

Returned if the specified resource, such as a vault, upload ID, or job ID, does not exist.

" - }, - { - "shape":"InvalidParameterValueException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

Returned if a parameter of the request is incorrectly specified.

" - }, - { - "shape":"MissingParameterValueException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

Returned if a required header or parameter is missing from the request.

" - }, - { - "shape":"RequestTimeoutException", - "error":{"httpStatusCode":408}, - "exception":true, - "documentation":"

Returned if, when uploading an archive, Amazon Glacier times out while receiving the upload.

" - }, - { - "shape":"ServiceUnavailableException", - "error":{"httpStatusCode":500}, - "exception":true, - "documentation":"

Returned if the service cannot complete the request.

" - } - ], - "documentation":"

This operation uploads a part of an archive. You can upload archive parts in any order. You can also upload them in parallel. You can upload up to 10,000 parts for a multipart upload.

Amazon Glacier rejects your upload part request if any of the following conditions is true:

This operation is idempotent. If you upload the same part multiple times, the data included in the most recent request overwrites the previously uploaded data.

An AWS account has full permission to perform all operations (actions). However, AWS Identity and Access Management (IAM) users don't have any permissions by default. You must grant them explicit permission to perform specific actions. For more information, see Access Control Using AWS Identity and Access Management (IAM).

For conceptual information and underlying REST API, go to Uploading Large Archives in Parts (Multipart Upload) and Upload Part in the Amazon Glacier Developer Guide.

" - } - }, - "shapes":{ - "AbortMultipartUploadInput":{ - "type":"structure", - "members":{ - "accountId":{ - "shape":"string", - "location":"uri", - "locationName":"accountId", - "documentation":"

The AccountId is the AWS Account ID. You can specify either the AWS Account ID or optionally a '-', in which case Amazon Glacier uses the AWS Account ID associated with the credentials used to sign the request. If you specify your Account ID, do not include hyphens in it.

" - }, - "vaultName":{ - "shape":"string", - "location":"uri", - "locationName":"vaultName", - "documentation":"

The name of the vault.

" - }, - "uploadId":{ - "shape":"string", - "location":"uri", - "locationName":"uploadId", - "documentation":"

The upload ID of the multipart upload to delete.

" - } - }, - "documentation":"

Provides options to abort a multipart upload identified by the upload ID.

For information about the underlying REST API, go to Abort Multipart Upload. For conceptual information, go to Working with Archives in Amazon Glacier.

", - "required":[ - "accountId", - "vaultName", - "uploadId" - ] - }, - "ActionCode":{ - "type":"string", - "enum":[ - "ArchiveRetrieval", - "InventoryRetrieval" - ] - }, - "ArchiveCreationOutput":{ - "type":"structure", - "members":{ - "location":{ - "shape":"string", - "location":"header", - "locationName":"Location", - "documentation":"

The relative URI path of the newly added archive resource.

" - }, - "checksum":{ - "shape":"string", - "location":"header", - "locationName":"x-amz-sha256-tree-hash", - "documentation":"

The checksum of the archive computed by Amazon Glacier.

" - }, - "archiveId":{ - "shape":"string", - "location":"header", - "locationName":"x-amz-archive-id", - "documentation":"

The ID of the archive. This value is also included as part of the location.

" - } - }, - "documentation":"

Contains the Amazon Glacier response to your request.

For information about the underlying REST API, go to Upload Archive. For conceptual information, go to Working with Archives in Amazon Glacier.

" - }, - "CompleteMultipartUploadInput":{ - "type":"structure", - "members":{ - "accountId":{ - "shape":"string", - "location":"uri", - "locationName":"accountId", - "documentation":"

The AccountId is the AWS Account ID. You can specify either the AWS Account ID or optionally a '-', in which case Amazon Glacier uses the AWS Account ID associated with the credentials used to sign the request. If you specify your Account ID, do not include hyphens in it.

" - }, - "vaultName":{ - "shape":"string", - "location":"uri", - "locationName":"vaultName", - "documentation":"

The name of the vault.

" - }, - "uploadId":{ - "shape":"string", - "location":"uri", - "locationName":"uploadId", - "documentation":"

The upload ID of the multipart upload.

" - }, - "archiveSize":{ - "shape":"string", - "location":"header", - "locationName":"x-amz-archive-size", - "documentation":"

The total size, in bytes, of the entire archive. This value should be the sum of all the sizes of the individual parts that you uploaded.

" - }, - "checksum":{ - "shape":"string", - "location":"header", - "locationName":"x-amz-sha256-tree-hash", - "documentation":"

The SHA256 tree hash of the entire archive. It is the tree hash of SHA256 tree hash of the individual parts. If the value you specify in the request does not match the SHA256 tree hash of the final assembled archive as computed by Amazon Glacier, Amazon Glacier returns an error and the request fails.

" - } - }, - "documentation":"

Provides options to complete a multipart upload operation. This informs Amazon Glacier that all the archive parts have been uploaded and Amazon Glacier can now assemble the archive from the uploaded parts. After assembling and saving the archive to the vault, Amazon Glacier returns the URI path of the newly created archive resource.

", - "required":[ - "accountId", - "vaultName", - "uploadId" - ] - }, - "CreateVaultInput":{ - "type":"structure", - "members":{ - "accountId":{ - "shape":"string", - "location":"uri", - "locationName":"accountId", - "documentation":"

The AccountId is the AWS Account ID. You can specify either the AWS Account ID or optionally a '-', in which case Amazon Glacier uses the AWS Account ID associated with the credentials used to sign the request. If you specify your Account ID, do not include hyphens in it.

" - }, - "vaultName":{ - "shape":"string", - "location":"uri", - "locationName":"vaultName", - "documentation":"

The name of the vault.

" - } - }, - "documentation":"

Provides options to create a vault.

", - "required":[ - "accountId", - "vaultName" - ] - }, - "CreateVaultOutput":{ - "type":"structure", - "members":{ - "location":{ - "shape":"string", - "location":"header", - "locationName":"Location", - "documentation":"

The URI of the vault that was created.

" - } - }, - "documentation":"

Contains the Amazon Glacier response to your request.

" - }, - "DataRetrievalPolicy":{ - "type":"structure", - "members":{ - "Rules":{"shape":"DataRetrievalRulesList"} - } - }, - "DataRetrievalRule":{ - "type":"structure", - "members":{ - "Strategy":{"shape":"string"}, - "BytesPerHour":{"shape":"NullableLong"} - } - }, - "DataRetrievalRulesList":{ - "type":"list", - "member":{"shape":"DataRetrievalRule"} - }, - "DateTime":{"type":"string"}, - "DeleteArchiveInput":{ - "type":"structure", - "members":{ - "accountId":{ - "shape":"string", - "location":"uri", - "locationName":"accountId", - "documentation":"

The AccountId is the AWS Account ID. You can specify either the AWS Account ID or optionally a '-', in which case Amazon Glacier uses the AWS Account ID associated with the credentials used to sign the request. If you specify your Account ID, do not include hyphens in it.

" - }, - "vaultName":{ - "shape":"string", - "location":"uri", - "locationName":"vaultName", - "documentation":"

The name of the vault.

" - }, - "archiveId":{ - "shape":"string", - "location":"uri", - "locationName":"archiveId", - "documentation":"

The ID of the archive to delete.

" - } - }, - "documentation":"

Provides options for deleting an archive from an Amazon Glacier vault.

", - "required":[ - "accountId", - "vaultName", - "archiveId" - ] - }, - "DeleteVaultInput":{ - "type":"structure", - "members":{ - "accountId":{ - "shape":"string", - "location":"uri", - "locationName":"accountId", - "documentation":"

The AccountId is the AWS Account ID. You can specify either the AWS Account ID or optionally a '-', in which case Amazon Glacier uses the AWS Account ID associated with the credentials used to sign the request. If you specify your Account ID, do not include hyphens in it.

" - }, - "vaultName":{ - "shape":"string", - "location":"uri", - "locationName":"vaultName", - "documentation":"

The name of the vault.

" - } - }, - "documentation":"

Provides options for deleting a vault from Amazon Glacier.

", - "required":[ - "accountId", - "vaultName" - ] - }, - "DeleteVaultNotificationsInput":{ - "type":"structure", - "members":{ - "accountId":{ - "shape":"string", - "location":"uri", - "locationName":"accountId", - "documentation":"

The AccountId is the AWS Account ID. You can specify either the AWS Account ID or optionally a '-', in which case Amazon Glacier uses the AWS Account ID associated with the credentials used to sign the request. If you specify your Account ID, do not include hyphens in it.

" - }, - "vaultName":{ - "shape":"string", - "location":"uri", - "locationName":"vaultName", - "documentation":"

The name of the vault.

" - } - }, - "documentation":"

Provides options for deleting a vault notification configuration from an Amazon Glacier vault.

", - "required":[ - "accountId", - "vaultName" - ] - }, - "DescribeJobInput":{ - "type":"structure", - "members":{ - "accountId":{ - "shape":"string", - "location":"uri", - "locationName":"accountId", - "documentation":"

The AccountId is the AWS Account ID. You can specify either the AWS Account ID or optionally a '-', in which case Amazon Glacier uses the AWS Account ID associated with the credentials used to sign the request. If you specify your Account ID, do not include hyphens in it.

" - }, - "vaultName":{ - "shape":"string", - "location":"uri", - "locationName":"vaultName", - "documentation":"

The name of the vault.

" - }, - "jobId":{ - "shape":"string", - "location":"uri", - "locationName":"jobId", - "documentation":"

The ID of the job to describe.

" - } - }, - "documentation":"

Provides options for retrieving a job description.

", - "required":[ - "accountId", - "vaultName", - "jobId" - ] - }, - "DescribeVaultInput":{ - "type":"structure", - "members":{ - "accountId":{ - "shape":"string", - "location":"uri", - "locationName":"accountId", - "documentation":"

The AccountId is the AWS Account ID. You can specify either the AWS Account ID or optionally a '-', in which case Amazon Glacier uses the AWS Account ID associated with the credentials used to sign the request. If you specify your Account ID, do not include hyphens in it.

" - }, - "vaultName":{ - "shape":"string", - "location":"uri", - "locationName":"vaultName", - "documentation":"

The name of the vault.

" - } - }, - "documentation":"

Provides options for retrieving metadata for a specific vault in Amazon Glacier.

", - "required":[ - "accountId", - "vaultName" - ] - }, - "DescribeVaultOutput":{ - "type":"structure", - "members":{ - "VaultARN":{ - "shape":"string", - "documentation":"

The Amazon Resource Name (ARN) of the vault.

" - }, - "VaultName":{ - "shape":"string", - "documentation":"

The name of the vault.

" - }, - "CreationDate":{ - "shape":"string", - "documentation":"

The UTC date when the vault was created. A string representation of ISO 8601 date format, for example, \"2012-03-20T17:03:43.221Z\".

" - }, - "LastInventoryDate":{ - "shape":"string", - "documentation":"

The UTC date when Amazon Glacier completed the last vault inventory. A string representation of ISO 8601 date format, for example, \"2012-03-20T17:03:43.221Z\".

" - }, - "NumberOfArchives":{ - "shape":"long", - "documentation":"

The number of archives in the vault as of the last inventory date. This field will return null if an inventory has not yet run on the vault, for example, if you just created the vault.

" - }, - "SizeInBytes":{ - "shape":"long", - "documentation":"

Total size, in bytes, of the archives in the vault as of the last inventory date. This field will return null if an inventory has not yet run on the vault, for example, if you just created the vault.

" - } - }, - "documentation":"

Contains the Amazon Glacier response to your request.

" - }, - "GetDataRetrievalPolicyInput":{ - "type":"structure", - "members":{ - "accountId":{ - "shape":"string", - "location":"uri", - "locationName":"accountId" - } - }, - "required":["accountId"] - }, - "GetDataRetrievalPolicyOutput":{ - "type":"structure", - "members":{ - "Policy":{"shape":"DataRetrievalPolicy"} - } - }, - "GetJobOutputInput":{ - "type":"structure", - "members":{ - "accountId":{ - "shape":"string", - "location":"uri", - "locationName":"accountId", - "documentation":"

The AccountId is the AWS Account ID. You can specify either the AWS Account ID or optionally a '-', in which case Amazon Glacier uses the AWS Account ID associated with the credentials used to sign the request. If you specify your Account ID, do not include hyphens in it.

" - }, - "vaultName":{ - "shape":"string", - "location":"uri", - "locationName":"vaultName", - "documentation":"

The name of the vault.

" - }, - "jobId":{ - "shape":"string", - "location":"uri", - "locationName":"jobId", - "documentation":"

The job ID whose data is downloaded.

" - }, - "range":{ - "shape":"string", - "location":"header", - "locationName":"Range", - "documentation":"

The range of bytes to retrieve from the output. For example, if you want to download the first 1,048,576 bytes, specify \"Range: bytes=0-1048575\". By default, this operation downloads the entire output.

" - } - }, - "documentation":"

Provides options for downloading output of an Amazon Glacier job.

", - "required":[ - "accountId", - "vaultName", - "jobId" - ] - }, - "GetJobOutputOutput":{ - "type":"structure", - "members":{ - "body":{ - "shape":"Stream", - "documentation":"

The job data, either archive data or inventory data.

" - }, - "checksum":{ - "shape":"string", - "location":"header", - "locationName":"x-amz-sha256-tree-hash", - "documentation":"

The checksum of the data in the response. This header is returned only when retrieving the output for an archive retrieval job. Furthermore, this header appears only under the following conditions:

" - }, - "status":{ - "shape":"httpstatus", - "location":"statusCode", - "documentation":"

The HTTP response code for a job output request. The value depends on whether a range was specified in the request.

" - }, - "contentRange":{ - "shape":"string", - "location":"header", - "locationName":"Content-Range", - "documentation":"

The range of bytes returned by Amazon Glacier. If only partial output is downloaded, the response provides the range of bytes Amazon Glacier returned. For example, bytes 0-1048575/8388608 returns the first 1 MB from 8 MB.

" - }, - "acceptRanges":{ - "shape":"string", - "location":"header", - "locationName":"Accept-Ranges", - "documentation":"

Indicates the range units accepted. For more information, go to RFC2616.

" - }, - "contentType":{ - "shape":"string", - "location":"header", - "locationName":"Content-Type", - "documentation":"

The Content-Type depends on whether the job output is an archive or a vault inventory. For archive data, the Content-Type is application/octet-stream. For vault inventory, if you requested CSV format when you initiated the job, the Content-Type is text/csv. Otherwise, by default, vault inventory is returned as JSON, and the Content-Type is application/json.

" - }, - "archiveDescription":{ - "shape":"string", - "location":"header", - "locationName":"x-amz-archive-description", - "documentation":"

The description of an archive.

" - } - }, - "documentation":"

Contains the Amazon Glacier response to your request.

", - "payload":"body" - }, - "GetVaultNotificationsInput":{ - "type":"structure", - "members":{ - "accountId":{ - "shape":"string", - "location":"uri", - "locationName":"accountId", - "documentation":"

The AccountId is the AWS Account ID. You can specify either the AWS Account ID or optionally a '-', in which case Amazon Glacier uses the AWS Account ID associated with the credentials used to sign the request. If you specify your Account ID, do not include hyphens in it.

" - }, - "vaultName":{ - "shape":"string", - "location":"uri", - "locationName":"vaultName", - "documentation":"

The name of the vault.

" - } - }, - "documentation":"

Provides options for retrieving the notification configuration set on an Amazon Glacier vault.

", - "required":[ - "accountId", - "vaultName" - ] - }, - "GetVaultNotificationsOutput":{ - "type":"structure", - "members":{ - "vaultNotificationConfig":{ - "shape":"VaultNotificationConfig", - "documentation":"

Returns the notification configuration set on the vault.

" - } - }, - "documentation":"

Contains the Amazon Glacier response to your request.

", - "payload":"vaultNotificationConfig" - }, - "GlacierJobDescription":{ - "type":"structure", - "members":{ - "JobId":{ - "shape":"string", - "documentation":"

An opaque string that identifies an Amazon Glacier job.

" - }, - "JobDescription":{ - "shape":"string", - "documentation":"

The job description you provided when you initiated the job.

" - }, - "Action":{ - "shape":"ActionCode", - "documentation":"

The job type. It is either ArchiveRetrieval or InventoryRetrieval.

" - }, - "ArchiveId":{ - "shape":"string", - "documentation":"

For an ArchiveRetrieval job, this is the archive ID requested for download. Otherwise, this field is null.

" - }, - "VaultARN":{ - "shape":"string", - "documentation":"

The Amazon Resource Name (ARN) of the vault from which the archive retrieval was requested.

" - }, - "CreationDate":{ - "shape":"string", - "documentation":"

The UTC date when the job was created. A string representation of ISO 8601 date format, for example, \"2012-03-20T17:03:43.221Z\".

" - }, - "Completed":{ - "shape":"boolean", - "documentation":"

The job status. When a job is completed, you get the job's output.

" - }, - "StatusCode":{ - "shape":"StatusCode", - "documentation":"

The status code can be InProgress, Succeeded, or Failed, and indicates the status of the job.

" - }, - "StatusMessage":{ - "shape":"string", - "documentation":"

A friendly message that describes the job status.

" - }, - "ArchiveSizeInBytes":{ - "shape":"Size", - "documentation":"

For an ArchiveRetrieval job, this is the size in bytes of the archive being requested for download. For the InventoryRetrieval job, the value is null.

" - }, - "InventorySizeInBytes":{ - "shape":"Size", - "documentation":"

For an InventoryRetrieval job, this is the size in bytes of the inventory requested for download. For the ArchiveRetrieval job, the value is null.

" - }, - "SNSTopic":{ - "shape":"string", - "documentation":"

An Amazon Simple Notification Service (Amazon SNS) topic that receives notification.

" - }, - "CompletionDate":{ - "shape":"string", - "documentation":"

The UTC time that the archive retrieval request completed. While the job is in progress, the value will be null.

" - }, - "SHA256TreeHash":{ - "shape":"string", - "documentation":"

For an ArchiveRetrieval job, it is the checksum of the archive. Otherwise, the value is null.

The SHA256 tree hash value for the requested range of an archive. If the Initiate a Job request for an archive specified a tree-hash aligned range, then this field returns a value.

For the specific case when the whole archive is retrieved, this value is the same as the ArchiveSHA256TreeHash value.

This field is null in the following situations:

" - }, - "ArchiveSHA256TreeHash":{ - "shape":"string", - "documentation":"

The SHA256 tree hash of the entire archive for an archive retrieval. For inventory retrieval jobs, this field is null.

" - }, - "RetrievalByteRange":{ - "shape":"string", - "documentation":"

The retrieved byte range for archive retrieval jobs in the form \"StartByteValue-EndByteValue\" If no range was specified in the archive retrieval, then the whole archive is retrieved and StartByteValue equals 0 and EndByteValue equals the size of the archive minus 1. For inventory retrieval jobs this field is null.

" - }, - "InventoryRetrievalParameters":{ - "shape":"InventoryRetrievalJobDescription", - "documentation":"

Parameters used for range inventory retrieval.

" - } - }, - "documentation":"

Describes an Amazon Glacier job.

" - }, - "InitiateJobInput":{ - "type":"structure", - "members":{ - "accountId":{ - "shape":"string", - "location":"uri", - "locationName":"accountId", - "documentation":"

The AccountId is the AWS Account ID. You can specify either the AWS Account ID or optionally a '-', in which case Amazon Glacier uses the AWS Account ID associated with the credentials used to sign the request. If you specify your Account ID, do not include hyphens in it.

" - }, - "vaultName":{ - "shape":"string", - "location":"uri", - "locationName":"vaultName", - "documentation":"

The name of the vault.

" - }, - "jobParameters":{ - "shape":"JobParameters", - "documentation":"

Provides options for specifying job information.

" - } - }, - "documentation":"

Provides options for initiating an Amazon Glacier job.

", - "required":[ - "accountId", - "vaultName" - ], - "payload":"jobParameters" - }, - "InitiateJobOutput":{ - "type":"structure", - "members":{ - "location":{ - "shape":"string", - "location":"header", - "locationName":"Location", - "documentation":"

The relative URI path of the job.

" - }, - "jobId":{ - "shape":"string", - "location":"header", - "locationName":"x-amz-job-id", - "documentation":"

The ID of the job.

" - } - }, - "documentation":"

Contains the Amazon Glacier response to your request.

" - }, - "InitiateMultipartUploadInput":{ - "type":"structure", - "members":{ - "accountId":{ - "shape":"string", - "location":"uri", - "locationName":"accountId", - "documentation":"

The AccountId is the AWS Account ID. You can specify either the AWS Account ID or optionally a '-', in which case Amazon Glacier uses the AWS Account ID associated with the credentials used to sign the request. If you specify your Account ID, do not include hyphens in it.

" - }, - "vaultName":{ - "shape":"string", - "location":"uri", - "locationName":"vaultName", - "documentation":"

The name of the vault.

" - }, - "archiveDescription":{ - "shape":"string", - "location":"header", - "locationName":"x-amz-archive-description", - "documentation":"

The archive description that you are uploading in parts.

The part size must be a megabyte (1024 KB) multiplied by a power of 2—for example, 1048576 (1 MB), 2097152 (2 MB), 4194304 (4 MB), 8388608 (8 MB), and so on. The minimum allowable part size is 1 MB, and the maximum is 4 GB (4096 MB).

" - }, - "partSize":{ - "shape":"string", - "location":"header", - "locationName":"x-amz-part-size", - "documentation":"

The size of each part except the last, in bytes. The last part can be smaller than this part size.

" - } - }, - "documentation":"

Provides options for initiating a multipart upload to an Amazon Glacier vault.

", - "required":[ - "accountId", - "vaultName" - ] - }, - "InitiateMultipartUploadOutput":{ - "type":"structure", - "members":{ - "location":{ - "shape":"string", - "location":"header", - "locationName":"Location", - "documentation":"

The relative URI path of the multipart upload ID Amazon Glacier created.

" - }, - "uploadId":{ - "shape":"string", - "location":"header", - "locationName":"x-amz-multipart-upload-id", - "documentation":"

The ID of the multipart upload. This value is also included as part of the location.

" - } - }, - "documentation":"

Contains the Amazon Glacier response to your request.

" - }, - "InvalidParameterValueException":{ - "type":"structure", - "members":{ - "type":{ - "shape":"string", - "documentation":"

Client

" - }, - "code":{ - "shape":"string", - "documentation":"

400 Bad Request

" - }, - "message":{"shape":"string"} - }, - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

Returned if a parameter of the request is incorrectly specified.

" - }, - "InventoryRetrievalJobDescription":{ - "type":"structure", - "members":{ - "Format":{ - "shape":"string", - "documentation":"

The output format for the vault inventory list, which is set by the InitiateJob request when initiating a job to retrieve a vault inventory. Valid values are \"CSV\" and \"JSON\".

" - }, - "StartDate":{ - "shape":"DateTime", - "documentation":"

The start of the date range in UTC for vault inventory retrieval that includes archives created on or after this date. A string representation of ISO 8601 date format, for example, 2013-03-20T17:03:43Z.

" - }, - "EndDate":{ - "shape":"DateTime", - "documentation":"

The end of the date range in UTC for vault inventory retrieval that includes archives created before this date. A string representation of ISO 8601 date format, for example, 2013-03-20T17:03:43Z.

" - }, - "Limit":{ - "shape":"string", - "documentation":"

Specifies the maximum number of inventory items returned per vault inventory retrieval request. This limit is set when initiating the job with the a InitiateJob request.

" - }, - "Marker":{ - "shape":"string", - "documentation":"

An opaque string that represents where to continue pagination of the vault inventory retrieval results. You use the marker in a new InitiateJob request to obtain additional inventory items. If there are no more inventory items, this value is null. For more information, see Range Inventory Retrieval.

" - } - }, - "documentation":"

Describes the options for a range inventory retrieval job.

" - }, - "InventoryRetrievalJobInput":{ - "type":"structure", - "members":{ - "StartDate":{ - "shape":"string", - "documentation":"

The start of the date range in UTC for vault inventory retrieval that includes archives created on or after this date. A string representation of ISO 8601 date format, for example, 2013-03-20T17:03:43Z.

" - }, - "EndDate":{ - "shape":"string", - "documentation":"

The end of the date range in UTC for vault inventory retrieval that includes archives created before this date. A string representation of ISO 8601 date format, for example, 2013-03-20T17:03:43Z.

" - }, - "Limit":{ - "shape":"string", - "documentation":"

Specifies the maximum number of inventory items returned per vault inventory retrieval request. Valid values are greater than or equal to 1.

" - }, - "Marker":{ - "shape":"string", - "documentation":"

An opaque string that represents where to continue pagination of the vault inventory retrieval results. You use the marker in a new InitiateJob request to obtain additional inventory items. If there are no more inventory items, this value is null.

" - } - }, - "documentation":"

Provides options for specifying a range inventory retrieval job.

" - }, - "JobList":{ - "type":"list", - "member":{"shape":"GlacierJobDescription"} - }, - "JobParameters":{ - "type":"structure", - "members":{ - "Format":{ - "shape":"string", - "documentation":"

When initiating a job to retrieve a vault inventory, you can optionally add this parameter to your request to specify the output format. If you are initiating an inventory job and do not specify a Format field, JSON is the default format. Valid values are \"CSV\" and \"JSON\".

" - }, - "Type":{ - "shape":"string", - "documentation":"

The job type. You can initiate a job to retrieve an archive or get an inventory of a vault. Valid values are \"archive-retrieval\" and \"inventory-retrieval\".

" - }, - "ArchiveId":{ - "shape":"string", - "documentation":"

The ID of the archive that you want to retrieve. This field is required only if Type is set to archive-retrieval. An error occurs if you specify this request parameter for an inventory retrieval job request.

" - }, - "Description":{ - "shape":"string", - "documentation":"

The optional description for the job. The description must be less than or equal to 1,024 bytes. The allowable characters are 7-bit ASCII without control codes-specifically, ASCII values 32-126 decimal or 0x20-0x7E hexadecimal.

" - }, - "SNSTopic":{ - "shape":"string", - "documentation":"

The Amazon SNS topic ARN to which Amazon Glacier sends a notification when the job is completed and the output is ready for you to download. The specified topic publishes the notification to its subscribers. The SNS topic must exist.

" - }, - "RetrievalByteRange":{ - "shape":"string", - "documentation":"

The byte range to retrieve for an archive retrieval. in the form \"StartByteValue-EndByteValue\" If not specified, the whole archive is retrieved. If specified, the byte range must be megabyte (1024*1024) aligned which means that StartByteValue must be divisible by 1 MB and EndByteValue plus 1 must be divisible by 1 MB or be the end of the archive specified as the archive byte size value minus 1. If RetrievalByteRange is not megabyte aligned, this operation returns a 400 response.

An error occurs if you specify this field for an inventory retrieval job request.

" - }, - "InventoryRetrievalParameters":{ - "shape":"InventoryRetrievalJobInput", - "documentation":"

Input parameters used for range inventory retrieval.

" - } - }, - "documentation":"

Provides options for defining a job.

" - }, - "LimitExceededException":{ - "type":"structure", - "members":{ - "type":{ - "shape":"string", - "documentation":"

Client

" - }, - "code":{ - "shape":"string", - "documentation":"

400 Bad Request

" - }, - "message":{"shape":"string"} - }, - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

Returned if the request results in a vault or account limit being exceeded.

" - }, - "ListJobsInput":{ - "type":"structure", - "members":{ - "accountId":{ - "shape":"string", - "location":"uri", - "locationName":"accountId", - "documentation":"

The AccountId is the AWS Account ID. You can specify either the AWS Account ID or optionally a '-', in which case Amazon Glacier uses the AWS Account ID associated with the credentials used to sign the request. If you specify your Account ID, do not include hyphens in it.

" - }, - "vaultName":{ - "shape":"string", - "location":"uri", - "locationName":"vaultName", - "documentation":"

The name of the vault.

" - }, - "limit":{ - "shape":"string", - "location":"querystring", - "locationName":"limit", - "documentation":"

Specifies that the response be limited to the specified number of items or fewer. If not specified, the List Jobs operation returns up to 1,000 jobs.

" - }, - "marker":{ - "shape":"string", - "location":"querystring", - "locationName":"marker", - "documentation":"

An opaque string used for pagination. This value specifies the job at which the listing of jobs should begin. Get the marker value from a previous List Jobs response. You need only include the marker if you are continuing the pagination of results started in a previous List Jobs request.

" - }, - "statuscode":{ - "shape":"string", - "location":"querystring", - "locationName":"statuscode", - "documentation":"

Specifies the type of job status to return. You can specify the following values: \"InProgress\", \"Succeeded\", or \"Failed\".

" - }, - "completed":{ - "shape":"string", - "location":"querystring", - "locationName":"completed", - "documentation":"

Specifies the state of the jobs to return. You can specify true or false.

" - } - }, - "documentation":"

Provides options for retrieving a job list for an Amazon Glacier vault.

", - "required":[ - "accountId", - "vaultName" - ] - }, - "ListJobsOutput":{ - "type":"structure", - "members":{ - "JobList":{ - "shape":"JobList", - "documentation":"

A list of job objects. Each job object contains metadata describing the job.

" - }, - "Marker":{ - "shape":"string", - "documentation":"

An opaque string that represents where to continue pagination of the results. You use this value in a new List Jobs request to obtain more jobs in the list. If there are no more jobs, this value is null.

" - } - }, - "documentation":"

Contains the Amazon Glacier response to your request.

" - }, - "ListMultipartUploadsInput":{ - "type":"structure", - "members":{ - "accountId":{ - "shape":"string", - "location":"uri", - "locationName":"accountId", - "documentation":"

The AccountId is the AWS Account ID. You can specify either the AWS Account ID or optionally a '-', in which case Amazon Glacier uses the AWS Account ID associated with the credentials used to sign the request. If you specify your Account ID, do not include hyphens in it.

" - }, - "vaultName":{ - "shape":"string", - "location":"uri", - "locationName":"vaultName", - "documentation":"

The name of the vault.

" - }, - "marker":{ - "shape":"string", - "location":"querystring", - "locationName":"marker", - "documentation":"

An opaque string used for pagination. This value specifies the upload at which the listing of uploads should begin. Get the marker value from a previous List Uploads response. You need only include the marker if you are continuing the pagination of results started in a previous List Uploads request.

" - }, - "limit":{ - "shape":"string", - "location":"querystring", - "locationName":"limit", - "documentation":"

Specifies the maximum number of uploads returned in the response body. If this value is not specified, the List Uploads operation returns up to 1,000 uploads.

" - } - }, - "documentation":"

Provides options for retrieving list of in-progress multipart uploads for an Amazon Glacier vault.

", - "required":[ - "accountId", - "vaultName" - ] - }, - "ListMultipartUploadsOutput":{ - "type":"structure", - "members":{ - "UploadsList":{ - "shape":"UploadsList", - "documentation":"

A list of in-progress multipart uploads.

" - }, - "Marker":{ - "shape":"string", - "documentation":"

An opaque string that represents where to continue pagination of the results. You use the marker in a new List Multipart Uploads request to obtain more uploads in the list. If there are no more uploads, this value is null.

" - } - }, - "documentation":"

Contains the Amazon Glacier response to your request.

" - }, - "ListPartsInput":{ - "type":"structure", - "members":{ - "accountId":{ - "shape":"string", - "location":"uri", - "locationName":"accountId", - "documentation":"

The AccountId is the AWS Account ID. You can specify either the AWS Account ID or optionally a '-', in which case Amazon Glacier uses the AWS Account ID associated with the credentials used to sign the request. If you specify your Account ID, do not include hyphens in it.

" - }, - "vaultName":{ - "shape":"string", - "location":"uri", - "locationName":"vaultName", - "documentation":"

The name of the vault.

" - }, - "uploadId":{ - "shape":"string", - "location":"uri", - "locationName":"uploadId", - "documentation":"

The upload ID of the multipart upload.

" - }, - "marker":{ - "shape":"string", - "location":"querystring", - "locationName":"marker", - "documentation":"

An opaque string used for pagination. This value specifies the part at which the listing of parts should begin. Get the marker value from the response of a previous List Parts response. You need only include the marker if you are continuing the pagination of results started in a previous List Parts request.

" - }, - "limit":{ - "shape":"string", - "location":"querystring", - "locationName":"limit", - "documentation":"

Specifies the maximum number of parts returned in the response body. If this value is not specified, the List Parts operation returns up to 1,000 uploads.

" - } - }, - "documentation":"

Provides options for retrieving a list of parts of an archive that have been uploaded in a specific multipart upload.

", - "required":[ - "accountId", - "vaultName", - "uploadId" - ] - }, - "ListPartsOutput":{ - "type":"structure", - "members":{ - "MultipartUploadId":{ - "shape":"string", - "documentation":"

The ID of the upload to which the parts are associated.

" - }, - "VaultARN":{ - "shape":"string", - "documentation":"

The Amazon Resource Name (ARN) of the vault to which the multipart upload was initiated.

" - }, - "ArchiveDescription":{ - "shape":"string", - "documentation":"

The description of the archive that was specified in the Initiate Multipart Upload request.

" - }, - "PartSizeInBytes":{ - "shape":"long", - "documentation":"

The part size in bytes.

" - }, - "CreationDate":{ - "shape":"string", - "documentation":"

The UTC time at which the multipart upload was initiated.

" - }, - "Parts":{ - "shape":"PartList", - "documentation":"

A list of the part sizes of the multipart upload.

" - }, - "Marker":{ - "shape":"string", - "documentation":"

An opaque string that represents where to continue pagination of the results. You use the marker in a new List Parts request to obtain more jobs in the list. If there are no more parts, this value is null.

" - } - }, - "documentation":"

Contains the Amazon Glacier response to your request.

" - }, - "ListVaultsInput":{ - "type":"structure", - "members":{ - "accountId":{ - "shape":"string", - "location":"uri", - "locationName":"accountId", - "documentation":"

The AccountId is the AWS Account ID. You can specify either the AWS Account ID or optionally a '-', in which case Amazon Glacier uses the AWS Account ID associated with the credentials used to sign the request. If you specify your Account ID, do not include hyphens in it.

" - }, - "marker":{ - "shape":"string", - "location":"querystring", - "locationName":"marker", - "documentation":"

A string used for pagination. The marker specifies the vault ARN after which the listing of vaults should begin.

" - }, - "limit":{ - "shape":"string", - "location":"querystring", - "locationName":"limit", - "documentation":"

The maximum number of items returned in the response. If you don't specify a value, the List Vaults operation returns up to 1,000 items.

" - } - }, - "documentation":"

Provides options to retrieve the vault list owned by the calling user's account. The list provides metadata information for each vault.

", - "required":["accountId"] - }, - "ListVaultsOutput":{ - "type":"structure", - "members":{ - "VaultList":{ - "shape":"VaultList", - "documentation":"

List of vaults.

" - }, - "Marker":{ - "shape":"string", - "documentation":"

The vault ARN at which to continue pagination of the results. You use the marker in another List Vaults request to obtain more vaults in the list.

" - } - }, - "documentation":"

Contains the Amazon Glacier response to your request.

" - }, - "MissingParameterValueException":{ - "type":"structure", - "members":{ - "type":{ - "shape":"string", - "documentation":"

Client.

" - }, - "code":{ - "shape":"string", - "documentation":"

400 Bad Request

" - }, - "message":{"shape":"string"} - }, - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

Returned if a required header or parameter is missing from the request.

" - }, - "NotificationEventList":{ - "type":"list", - "member":{"shape":"string"} - }, - "NullableLong":{"type":"long"}, - "PartList":{ - "type":"list", - "member":{"shape":"PartListElement"} - }, - "PartListElement":{ - "type":"structure", - "members":{ - "RangeInBytes":{ - "shape":"string", - "documentation":"

The byte range of a part, inclusive of the upper value of the range.

" - }, - "SHA256TreeHash":{ - "shape":"string", - "documentation":"

The SHA256 tree hash value that Amazon Glacier calculated for the part. This field is never null.

" - } - }, - "documentation":"

A list of the part sizes of the multipart upload.

" - }, - "PolicyEnforcedException":{ - "type":"structure", - "members":{ - "type":{"shape":"string"}, - "code":{"shape":"string"}, - "message":{"shape":"string"} - }, - "error":{"httpStatusCode":400}, - "exception":true - }, - "RequestTimeoutException":{ - "type":"structure", - "members":{ - "type":{ - "shape":"string", - "documentation":"

Client

" - }, - "code":{ - "shape":"string", - "documentation":"

408 Request Timeout

" - }, - "message":{"shape":"string"} - }, - "error":{"httpStatusCode":408}, - "exception":true, - "documentation":"

Returned if, when uploading an archive, Amazon Glacier times out while receiving the upload.

" - }, - "ResourceNotFoundException":{ - "type":"structure", - "members":{ - "type":{ - "shape":"string", - "documentation":"

Client

" - }, - "code":{ - "shape":"string", - "documentation":"

404 Not Found

" - }, - "message":{"shape":"string"} - }, - "error":{"httpStatusCode":404}, - "exception":true, - "documentation":"

Returned if the specified resource, such as a vault, upload ID, or job ID, does not exist.

" - }, - "ServiceUnavailableException":{ - "type":"structure", - "members":{ - "type":{ - "shape":"string", - "documentation":"

Server

" - }, - "code":{ - "shape":"string", - "documentation":"

500 Internal Server Error

" - }, - "message":{"shape":"string"} - }, - "error":{"httpStatusCode":500}, - "exception":true, - "documentation":"

Returned if the service cannot complete the request.

" - }, - "SetDataRetrievalPolicyInput":{ - "type":"structure", - "members":{ - "accountId":{ - "shape":"string", - "location":"uri", - "locationName":"accountId" - }, - "Policy":{"shape":"DataRetrievalPolicy"} - }, - "required":["accountId"] - }, - "SetVaultNotificationsInput":{ - "type":"structure", - "members":{ - "accountId":{ - "shape":"string", - "location":"uri", - "locationName":"accountId", - "documentation":"

The AccountId is the AWS Account ID. You can specify either the AWS Account ID or optionally a '-', in which case Amazon Glacier uses the AWS Account ID associated with the credentials used to sign the request. If you specify your Account ID, do not include hyphens in it.

" - }, - "vaultName":{ - "shape":"string", - "location":"uri", - "locationName":"vaultName", - "documentation":"

The name of the vault.

" - }, - "vaultNotificationConfig":{ - "shape":"VaultNotificationConfig", - "documentation":"

Provides options for specifying notification configuration.

" - } - }, - "documentation":"

Provides options to configure notifications that will be sent when specific events happen to a vault.

", - "required":[ - "accountId", - "vaultName" - ], - "payload":"vaultNotificationConfig" - }, - "Size":{"type":"long"}, - "StatusCode":{ - "type":"string", - "enum":[ - "InProgress", - "Succeeded", - "Failed" - ] - }, - "Stream":{ - "type":"blob", - "streaming":true - }, - "UploadArchiveInput":{ - "type":"structure", - "members":{ - "vaultName":{ - "shape":"string", - "location":"uri", - "locationName":"vaultName", - "documentation":"

The name of the vault.

" - }, - "accountId":{ - "shape":"string", - "location":"uri", - "locationName":"accountId", - "documentation":"

The AccountId is the AWS Account ID. You can specify either the AWS Account ID or optionally a '-', in which case Amazon Glacier uses the AWS Account ID associated with the credentials used to sign the request. If you specify your Account ID, do not include hyphens in it.

" - }, - "archiveDescription":{ - "shape":"string", - "location":"header", - "locationName":"x-amz-archive-description", - "documentation":"

The optional description of the archive you are uploading.

" - }, - "checksum":{ - "shape":"string", - "location":"header", - "locationName":"x-amz-sha256-tree-hash", - "documentation":"

The SHA256 checksum (a linear hash) of the payload.

" - }, - "body":{ - "shape":"Stream", - "documentation":"

The data to upload.

" - } - }, - "documentation":"

Provides options to add an archive to a vault.

", - "required":[ - "vaultName", - "accountId" - ], - "payload":"body" - }, - "UploadListElement":{ - "type":"structure", - "members":{ - "MultipartUploadId":{ - "shape":"string", - "documentation":"

The ID of a multipart upload.

" - }, - "VaultARN":{ - "shape":"string", - "documentation":"

The Amazon Resource Name (ARN) of the vault that contains the archive.

" - }, - "ArchiveDescription":{ - "shape":"string", - "documentation":"

The description of the archive that was specified in the Initiate Multipart Upload request.

" - }, - "PartSizeInBytes":{ - "shape":"long", - "documentation":"

The part size, in bytes, specified in the Initiate Multipart Upload request. This is the size of all the parts in the upload except the last part, which may be smaller than this size.

" - }, - "CreationDate":{ - "shape":"string", - "documentation":"

The UTC time at which the multipart upload was initiated.

" - } - }, - "documentation":"

A list of in-progress multipart uploads for a vault.

" - }, - "UploadMultipartPartInput":{ - "type":"structure", - "members":{ - "accountId":{ - "shape":"string", - "location":"uri", - "locationName":"accountId", - "documentation":"

The AccountId is the AWS Account ID. You can specify either the AWS Account ID or optionally a '-', in which case Amazon Glacier uses the AWS Account ID associated with the credentials used to sign the request. If you specify your Account ID, do not include hyphens in it.

" - }, - "vaultName":{ - "shape":"string", - "location":"uri", - "locationName":"vaultName", - "documentation":"

The name of the vault.

" - }, - "uploadId":{ - "shape":"string", - "location":"uri", - "locationName":"uploadId", - "documentation":"

The upload ID of the multipart upload.

" - }, - "checksum":{ - "shape":"string", - "location":"header", - "locationName":"x-amz-sha256-tree-hash", - "documentation":"

The SHA256 tree hash of the data being uploaded.

" - }, - "range":{ - "shape":"string", - "location":"header", - "locationName":"Content-Range", - "documentation":"

Identifies the range of bytes in the assembled archive that will be uploaded in this part. Amazon Glacier uses this information to assemble the archive in the proper sequence. The format of this header follows RFC 2616. An example header is Content-Range:bytes 0-4194303/*.

" - }, - "body":{ - "shape":"Stream", - "documentation":"

The data to upload.

" - } - }, - "documentation":"

Provides options to upload a part of an archive in a multipart upload operation.

", - "required":[ - "accountId", - "vaultName", - "uploadId" - ], - "payload":"body" - }, - "UploadMultipartPartOutput":{ - "type":"structure", - "members":{ - "checksum":{ - "shape":"string", - "location":"header", - "locationName":"x-amz-sha256-tree-hash", - "documentation":"

The SHA256 tree hash that Amazon Glacier computed for the uploaded part.

" - } - }, - "documentation":"

Contains the Amazon Glacier response to your request.

" - }, - "UploadsList":{ - "type":"list", - "member":{"shape":"UploadListElement"} - }, - "VaultList":{ - "type":"list", - "member":{"shape":"DescribeVaultOutput"} - }, - "VaultNotificationConfig":{ - "type":"structure", - "members":{ - "SNSTopic":{ - "shape":"string", - "documentation":"

The Amazon Simple Notification Service (Amazon SNS) topic Amazon Resource Name (ARN).

" - }, - "Events":{ - "shape":"NotificationEventList", - "documentation":"

A list of one or more events for which Amazon Glacier will send a notification to the specified Amazon SNS topic.

" - } - }, - "documentation":"

Represents a vault's notification configuration.

" - }, - "boolean":{"type":"boolean"}, - "httpstatus":{"type":"integer"}, - "long":{"type":"long"}, - "string":{"type":"string"} - } -} diff --git a/src/github.com/getlantern/aws-sdk-go/apis/iam/2010-05-08.normal.json b/src/github.com/getlantern/aws-sdk-go/apis/iam/2010-05-08.normal.json deleted file mode 100644 index 88178f68db..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/apis/iam/2010-05-08.normal.json +++ /dev/null @@ -1,5938 +0,0 @@ -{ - "metadata":{ - "apiVersion":"2010-05-08", - "endpointPrefix":"iam", - "globalEndpoint":"iam.amazonaws.com", - "serviceAbbreviation":"IAM", - "serviceFullName":"AWS Identity and Access Management", - "signatureVersion":"v4", - "xmlNamespace":"https://iam.amazonaws.com/doc/2010-05-08/", - "protocol":"query" - }, - "documentation":"AWS Identity and Access Management

AWS Identity and Access Management (IAM) is a web service that you can use to manage users and user permissions under your AWS account. This guide provides descriptions of IAM actions that you can call programmatically. For general information about IAM, see AWS Identity and Access Management (IAM). For the user guide for IAM, see Using IAM.

AWS provides SDKs that consist of libraries and sample code for various programming languages and platforms (Java, Ruby, .NET, iOS, Android, etc.). The SDKs provide a convenient way to create programmatic access to IAM and AWS. For example, the SDKs take care of tasks such as cryptographically signing requests (see below), managing errors, and retrying requests automatically. For information about the AWS SDKs, including how to download and install them, see the Tools for Amazon Web Services page.

We recommend that you use the AWS SDKs to make programmatic API calls to IAM. However, you can also use the IAM Query API to make direct calls to the IAM web service. To learn more about the IAM Query API, see Making Query Requests in the Using IAM guide. IAM supports GET and POST requests for all actions. That is, the API does not require you to use GET for some actions and POST for others. However, GET requests are subject to the limitation size of a URL. Therefore, for operations that require larger sizes, use a POST request.

Signing Requests

Requests must be signed using an access key ID and a secret access key. We strongly recommend that you do not use your AWS account access key ID and secret access key for everyday work with IAM. You can use the access key ID and secret access key for an IAM user or you can use the AWS Security Token Service to generate temporary security credentials and use those to sign requests.

To sign requests, we recommend that you use Signature Version 4. If you have an existing application that uses Signature Version 2, you do not have to update it to use Signature Version 4. However, some operations now require Signature Version 4. The documentation for operations that require version 4 indicate this requirement.

Recording API requests

IAM supports AWS CloudTrail, which is a service that records AWS calls for your AWS account and delivers log files to an Amazon S3 bucket. By using information collected by CloudTrail, you can determine what requests were successfully made to IAM, who made the request, when it was made, and so on. To learn more about CloudTrail, including how to turn it on and find your log files, see the AWS CloudTrail User Guide.

Additional Resources

For more information, see the following:

", - "operations":{ - "AddClientIDToOpenIDConnectProvider":{ - "name":"AddClientIDToOpenIDConnectProvider", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"AddClientIDToOpenIDConnectProviderRequest"}, - "errors":[ - { - "shape":"InvalidInputException", - "error":{ - "code":"InvalidInput", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because an invalid or out-of-range value was supplied for an input parameter.

" - }, - { - "shape":"NoSuchEntityException", - "error":{ - "code":"NoSuchEntity", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it referenced an entity that does not exist. The error message describes the entity.

" - }, - { - "shape":"LimitExceededException", - "error":{ - "code":"LimitExceeded", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it attempted to create resources beyond the current AWS account limits. The error message describes the limit exceeded.

" - } - ], - "documentation":"

Adds a new client ID (also known as audience) to the list of client IDs already registered for the specified IAM OpenID Connect provider.

This action is idempotent; it does not fail or return an error if you add an existing client ID to the provider.

" - }, - "AddRoleToInstanceProfile":{ - "name":"AddRoleToInstanceProfile", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"AddRoleToInstanceProfileRequest"}, - "errors":[ - { - "shape":"NoSuchEntityException", - "error":{ - "code":"NoSuchEntity", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it referenced an entity that does not exist. The error message describes the entity.

" - }, - { - "shape":"EntityAlreadyExistsException", - "error":{ - "code":"EntityAlreadyExists", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it attempted to create a resource that already exists.

" - }, - { - "shape":"LimitExceededException", - "error":{ - "code":"LimitExceeded", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it attempted to create resources beyond the current AWS account limits. The error message describes the limit exceeded.

" - } - ], - "documentation":"

Adds the specified role to the specified instance profile. For more information about roles, go to Working with Roles. For more information about instance profiles, go to About Instance Profiles.

" - }, - "AddUserToGroup":{ - "name":"AddUserToGroup", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"AddUserToGroupRequest"}, - "errors":[ - { - "shape":"NoSuchEntityException", - "error":{ - "code":"NoSuchEntity", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it referenced an entity that does not exist. The error message describes the entity.

" - }, - { - "shape":"LimitExceededException", - "error":{ - "code":"LimitExceeded", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it attempted to create resources beyond the current AWS account limits. The error message describes the limit exceeded.

" - } - ], - "documentation":"

Adds the specified user to the specified group.

" - }, - "ChangePassword":{ - "name":"ChangePassword", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"ChangePasswordRequest"}, - "errors":[ - { - "shape":"NoSuchEntityException", - "error":{ - "code":"NoSuchEntity", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it referenced an entity that does not exist. The error message describes the entity.

" - }, - { - "shape":"InvalidUserTypeException", - "error":{ - "code":"InvalidUserType", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because the type of user for the transaction was incorrect.

" - }, - { - "shape":"LimitExceededException", - "error":{ - "code":"LimitExceeded", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it attempted to create resources beyond the current AWS account limits. The error message describes the limit exceeded.

" - }, - { - "shape":"EntityTemporarilyUnmodifiableException", - "error":{ - "code":"EntityTemporarilyUnmodifiable", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it referenced an entity that is temporarily unmodifiable, such as a user name that was deleted and then recreated. The error indicates that the request is likely to succeed if you try again after waiting several minutes. The error message describes the entity.

" - }, - { - "shape":"PasswordPolicyViolationException", - "error":{ - "code":"PasswordPolicyViolation", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because the provided password did not meet the requirements imposed by the account password policy.

" - } - ], - "documentation":"

Changes the password of the IAM user who is calling this action. The root account password is not affected by this action.

To change the password for a different user, see UpdateLoginProfile. For more information about modifying passwords, see Managing Passwords in the Using IAM guide.

" - }, - "CreateAccessKey":{ - "name":"CreateAccessKey", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CreateAccessKeyRequest"}, - "output":{ - "shape":"CreateAccessKeyResponse", - "documentation":"

Contains the result of a successful invocation of the CreateAccessKey action.

", - "resultWrapper":"CreateAccessKeyResult" - }, - "errors":[ - { - "shape":"NoSuchEntityException", - "error":{ - "code":"NoSuchEntity", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it referenced an entity that does not exist. The error message describes the entity.

" - }, - { - "shape":"LimitExceededException", - "error":{ - "code":"LimitExceeded", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it attempted to create resources beyond the current AWS account limits. The error message describes the limit exceeded.

" - } - ], - "documentation":"

Creates a new AWS secret access key and corresponding AWS access key ID for the specified user. The default status for new keys is Active.

If you do not specify a user name, IAM determines the user name implicitly based on the AWS access key ID signing the request. Because this action works for access keys under the AWS account, you can use this action to manage root credentials even if the AWS account has no associated users.

For information about limits on the number of keys you can create, see Limitations on IAM Entities in the Using IAM guide.

To ensure the security of your AWS account, the secret access key is accessible only during key and user creation. You must save the key (for example, in a text file) if you want to be able to access it again. If a secret key is lost, you can delete the access keys for the associated user and then create new keys. " - }, - "CreateAccountAlias":{ - "name":"CreateAccountAlias", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CreateAccountAliasRequest"}, - "errors":[ - { - "shape":"EntityAlreadyExistsException", - "error":{ - "code":"EntityAlreadyExists", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it attempted to create a resource that already exists.

" - }, - { - "shape":"LimitExceededException", - "error":{ - "code":"LimitExceeded", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it attempted to create resources beyond the current AWS account limits. The error message describes the limit exceeded.

" - } - ], - "documentation":"

Creates an alias for your AWS account. For information about using an AWS account alias, see Using an Alias for Your AWS Account ID in the Using IAM guide.

" - }, - "CreateGroup":{ - "name":"CreateGroup", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CreateGroupRequest"}, - "output":{ - "shape":"CreateGroupResponse", - "documentation":"

Contains the result of a successful invocation of the CreateGroup action.

", - "resultWrapper":"CreateGroupResult" - }, - "errors":[ - { - "shape":"LimitExceededException", - "error":{ - "code":"LimitExceeded", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it attempted to create resources beyond the current AWS account limits. The error message describes the limit exceeded.

" - }, - { - "shape":"EntityAlreadyExistsException", - "error":{ - "code":"EntityAlreadyExists", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it attempted to create a resource that already exists.

" - }, - { - "shape":"NoSuchEntityException", - "error":{ - "code":"NoSuchEntity", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it referenced an entity that does not exist. The error message describes the entity.

" - } - ], - "documentation":"

Creates a new group.

For information about the number of groups you can create, see Limitations on IAM Entities in the Using IAM guide.

" - }, - "CreateInstanceProfile":{ - "name":"CreateInstanceProfile", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CreateInstanceProfileRequest"}, - "output":{ - "shape":"CreateInstanceProfileResponse", - "documentation":"

Contains the result of a successful invocation of the CreateInstanceProfileaction.

", - "resultWrapper":"CreateInstanceProfileResult" - }, - "errors":[ - { - "shape":"EntityAlreadyExistsException", - "error":{ - "code":"EntityAlreadyExists", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it attempted to create a resource that already exists.

" - }, - { - "shape":"LimitExceededException", - "error":{ - "code":"LimitExceeded", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it attempted to create resources beyond the current AWS account limits. The error message describes the limit exceeded.

" - } - ], - "documentation":"

Creates a new instance profile. For information about instance profiles, go to About Instance Profiles.

For information about the number of instance profiles you can create, see Limitations on IAM Entities in the Using IAM guide.

" - }, - "CreateLoginProfile":{ - "name":"CreateLoginProfile", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CreateLoginProfileRequest"}, - "output":{ - "shape":"CreateLoginProfileResponse", - "documentation":"

Contains the result of a successful invocation of the CreateLoginProfile action.

", - "resultWrapper":"CreateLoginProfileResult" - }, - "errors":[ - { - "shape":"EntityAlreadyExistsException", - "error":{ - "code":"EntityAlreadyExists", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it attempted to create a resource that already exists.

" - }, - { - "shape":"NoSuchEntityException", - "error":{ - "code":"NoSuchEntity", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it referenced an entity that does not exist. The error message describes the entity.

" - }, - { - "shape":"PasswordPolicyViolationException", - "error":{ - "code":"PasswordPolicyViolation", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because the provided password did not meet the requirements imposed by the account password policy.

" - }, - { - "shape":"LimitExceededException", - "error":{ - "code":"LimitExceeded", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it attempted to create resources beyond the current AWS account limits. The error message describes the limit exceeded.

" - } - ], - "documentation":"

Creates a password for the specified user, giving the user the ability to access AWS services through the AWS Management Console. For more information about managing passwords, see Managing Passwords in the Using IAM guide.

" - }, - "CreateOpenIDConnectProvider":{ - "name":"CreateOpenIDConnectProvider", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CreateOpenIDConnectProviderRequest"}, - "output":{ - "shape":"CreateOpenIDConnectProviderResponse", - "documentation":"

Contains the result of a successful invocation of the CreateOpenIDConnectProvider action.

", - "resultWrapper":"CreateOpenIDConnectProviderResult" - }, - "errors":[ - { - "shape":"InvalidInputException", - "error":{ - "code":"InvalidInput", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because an invalid or out-of-range value was supplied for an input parameter.

" - }, - { - "shape":"EntityAlreadyExistsException", - "error":{ - "code":"EntityAlreadyExists", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it attempted to create a resource that already exists.

" - }, - { - "shape":"LimitExceededException", - "error":{ - "code":"LimitExceeded", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it attempted to create resources beyond the current AWS account limits. The error message describes the limit exceeded.

" - } - ], - "documentation":"

Creates an IAM entity to describe an identity provider (IdP) that supports OpenID Connect (OIDC).

The OIDC provider that you create with this operation can be used as a principal in a role's trust policy to establish a trust relationship between AWS and the OIDC provider.

When you create the IAM OIDC provider, you specify the URL of the OIDC identity provider (IdP) to trust, a list of client IDs (also known as audiences) that identify the application or applications that are allowed to authenticate using the OIDC provider, and a list of thumbprints of the server certificate(s) that the IdP uses. You get all of this information from the OIDC IdP that you want to use for access to AWS.

Because trust for the OIDC provider is ultimately derived from the IAM provider that this action creates, it is a best practice to limit access to the CreateOpenIDConnectProvider action to highly-privileged users. " - }, - "CreateRole":{ - "name":"CreateRole", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CreateRoleRequest"}, - "output":{ - "shape":"CreateRoleResponse", - "documentation":"

Contains the result of a successful invocation of the CreateRole action.

", - "resultWrapper":"CreateRoleResult" - }, - "errors":[ - { - "shape":"LimitExceededException", - "error":{ - "code":"LimitExceeded", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it attempted to create resources beyond the current AWS account limits. The error message describes the limit exceeded.

" - }, - { - "shape":"EntityAlreadyExistsException", - "error":{ - "code":"EntityAlreadyExists", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it attempted to create a resource that already exists.

" - }, - { - "shape":"MalformedPolicyDocumentException", - "error":{ - "code":"MalformedPolicyDocument", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because the policy document was malformed. The error message describes the specific error.

" - } - ], - "documentation":"

Creates a new role for your AWS account. For more information about roles, go to Working with Roles. For information about limitations on role names and the number of roles you can create, go to Limitations on IAM Entities in the Using IAM guide.

The example policy grants permission to an EC2 instance to assume the role. The policy is URL-encoded according to RFC 3986. For more information about RFC 3986, go to http://www.faqs.org/rfcs/rfc3986.html.

" - }, - "CreateSAMLProvider":{ - "name":"CreateSAMLProvider", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CreateSAMLProviderRequest"}, - "output":{ - "shape":"CreateSAMLProviderResponse", - "documentation":"

Contains the result of a successful invocation of the CreateSAMLProvider action.

", - "resultWrapper":"CreateSAMLProviderResult" - }, - "errors":[ - { - "shape":"InvalidInputException", - "error":{ - "code":"InvalidInput", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because an invalid or out-of-range value was supplied for an input parameter.

" - }, - { - "shape":"EntityAlreadyExistsException", - "error":{ - "code":"EntityAlreadyExists", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it attempted to create a resource that already exists.

" - }, - { - "shape":"LimitExceededException", - "error":{ - "code":"LimitExceeded", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it attempted to create resources beyond the current AWS account limits. The error message describes the limit exceeded.

" - } - ], - "documentation":"

Creates an IAM entity to describe an identity provider (IdP) that supports SAML 2.0.

The SAML provider that you create with this operation can be used as a principal in a role's trust policy to establish a trust relationship between AWS and a SAML identity provider. You can create an IAM role that supports Web-based single sign-on (SSO) to the AWS Management Console or one that supports API access to AWS.

When you create the SAML provider, you upload an a SAML metadata document that you get from your IdP and that includes the issuer's name, expiration information, and keys that can be used to validate the SAML authentication response (assertions) that are received from the IdP. You must generate the metadata document using the identity management software that is used as your organization's IdP.

This operation requires Signature Version 4.

For more information, see Giving Console Access Using SAML and Creating Temporary Security Credentials for SAML Federation in the Using Temporary Credentials guide.

" - }, - "CreateUser":{ - "name":"CreateUser", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CreateUserRequest"}, - "output":{ - "shape":"CreateUserResponse", - "documentation":"

Contains the result of a successful invocation of the CreateUser action.

", - "resultWrapper":"CreateUserResult" - }, - "errors":[ - { - "shape":"LimitExceededException", - "error":{ - "code":"LimitExceeded", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it attempted to create resources beyond the current AWS account limits. The error message describes the limit exceeded.

" - }, - { - "shape":"EntityAlreadyExistsException", - "error":{ - "code":"EntityAlreadyExists", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it attempted to create a resource that already exists.

" - }, - { - "shape":"NoSuchEntityException", - "error":{ - "code":"NoSuchEntity", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it referenced an entity that does not exist. The error message describes the entity.

" - } - ], - "documentation":"

Creates a new user for your AWS account.

For information about limitations on the number of users you can create, see Limitations on IAM Entities in the Using IAM guide.

" - }, - "CreateVirtualMFADevice":{ - "name":"CreateVirtualMFADevice", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CreateVirtualMFADeviceRequest"}, - "output":{ - "shape":"CreateVirtualMFADeviceResponse", - "documentation":"

Contains the result of a successful invocation of the CreateVirtualMFADevice action.

", - "resultWrapper":"CreateVirtualMFADeviceResult" - }, - "errors":[ - { - "shape":"LimitExceededException", - "error":{ - "code":"LimitExceeded", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it attempted to create resources beyond the current AWS account limits. The error message describes the limit exceeded.

" - }, - { - "shape":"EntityAlreadyExistsException", - "error":{ - "code":"EntityAlreadyExists", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it attempted to create a resource that already exists.

" - } - ], - "documentation":"

Creates a new virtual MFA device for the AWS account. After creating the virtual MFA, use EnableMFADevice to attach the MFA device to an IAM user. For more information about creating and working with virtual MFA devices, go to Using a Virtual MFA Device in the Using IAM guide.

For information about limits on the number of MFA devices you can create, see Limitations on Entities in the Using IAM guide.

The seed information contained in the QR code and the Base32 string should be treated like any other secret access information, such as your AWS access keys or your passwords. After you provision your virtual device, you should ensure that the information is destroyed following secure procedures. " - }, - "DeactivateMFADevice":{ - "name":"DeactivateMFADevice", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DeactivateMFADeviceRequest"}, - "errors":[ - { - "shape":"EntityTemporarilyUnmodifiableException", - "error":{ - "code":"EntityTemporarilyUnmodifiable", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it referenced an entity that is temporarily unmodifiable, such as a user name that was deleted and then recreated. The error indicates that the request is likely to succeed if you try again after waiting several minutes. The error message describes the entity.

" - }, - { - "shape":"NoSuchEntityException", - "error":{ - "code":"NoSuchEntity", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it referenced an entity that does not exist. The error message describes the entity.

" - }, - { - "shape":"LimitExceededException", - "error":{ - "code":"LimitExceeded", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it attempted to create resources beyond the current AWS account limits. The error message describes the limit exceeded.

" - } - ], - "documentation":"

Deactivates the specified MFA device and removes it from association with the user name for which it was originally enabled.

For more information about creating and working with virtual MFA devices, go to Using a Virtual MFA Device in the Using IAM guide.

" - }, - "DeleteAccessKey":{ - "name":"DeleteAccessKey", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DeleteAccessKeyRequest"}, - "errors":[ - { - "shape":"NoSuchEntityException", - "error":{ - "code":"NoSuchEntity", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it referenced an entity that does not exist. The error message describes the entity.

" - }, - { - "shape":"LimitExceededException", - "error":{ - "code":"LimitExceeded", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it attempted to create resources beyond the current AWS account limits. The error message describes the limit exceeded.

" - } - ], - "documentation":"

Deletes the access key associated with the specified user.

If you do not specify a user name, IAM determines the user name implicitly based on the AWS access key ID signing the request. Because this action works for access keys under the AWS account, you can use this action to manage root credentials even if the AWS account has no associated users.

" - }, - "DeleteAccountAlias":{ - "name":"DeleteAccountAlias", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DeleteAccountAliasRequest"}, - "errors":[ - { - "shape":"NoSuchEntityException", - "error":{ - "code":"NoSuchEntity", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it referenced an entity that does not exist. The error message describes the entity.

" - }, - { - "shape":"LimitExceededException", - "error":{ - "code":"LimitExceeded", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it attempted to create resources beyond the current AWS account limits. The error message describes the limit exceeded.

" - } - ], - "documentation":"

Deletes the specified AWS account alias. For information about using an AWS account alias, see Using an Alias for Your AWS Account ID in the Using IAM guide.

" - }, - "DeleteAccountPasswordPolicy":{ - "name":"DeleteAccountPasswordPolicy", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "errors":[ - { - "shape":"NoSuchEntityException", - "error":{ - "code":"NoSuchEntity", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it referenced an entity that does not exist. The error message describes the entity.

" - }, - { - "shape":"LimitExceededException", - "error":{ - "code":"LimitExceeded", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it attempted to create resources beyond the current AWS account limits. The error message describes the limit exceeded.

" - } - ], - "documentation":"

Deletes the password policy for the AWS account.

" - }, - "DeleteGroup":{ - "name":"DeleteGroup", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DeleteGroupRequest"}, - "errors":[ - { - "shape":"NoSuchEntityException", - "error":{ - "code":"NoSuchEntity", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it referenced an entity that does not exist. The error message describes the entity.

" - }, - { - "shape":"DeleteConflictException", - "error":{ - "code":"DeleteConflict", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it attempted to delete a resource that has attached subordinate entities. The error message describes these entities.

" - }, - { - "shape":"LimitExceededException", - "error":{ - "code":"LimitExceeded", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it attempted to create resources beyond the current AWS account limits. The error message describes the limit exceeded.

" - } - ], - "documentation":"

Deletes the specified group. The group must not contain any users or have any attached policies.

" - }, - "DeleteGroupPolicy":{ - "name":"DeleteGroupPolicy", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DeleteGroupPolicyRequest"}, - "errors":[ - { - "shape":"NoSuchEntityException", - "error":{ - "code":"NoSuchEntity", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it referenced an entity that does not exist. The error message describes the entity.

" - }, - { - "shape":"LimitExceededException", - "error":{ - "code":"LimitExceeded", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it attempted to create resources beyond the current AWS account limits. The error message describes the limit exceeded.

" - } - ], - "documentation":"

Deletes the specified policy that is associated with the specified group.

" - }, - "DeleteInstanceProfile":{ - "name":"DeleteInstanceProfile", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DeleteInstanceProfileRequest"}, - "errors":[ - { - "shape":"NoSuchEntityException", - "error":{ - "code":"NoSuchEntity", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it referenced an entity that does not exist. The error message describes the entity.

" - }, - { - "shape":"DeleteConflictException", - "error":{ - "code":"DeleteConflict", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it attempted to delete a resource that has attached subordinate entities. The error message describes these entities.

" - }, - { - "shape":"LimitExceededException", - "error":{ - "code":"LimitExceeded", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it attempted to create resources beyond the current AWS account limits. The error message describes the limit exceeded.

" - } - ], - "documentation":"

Deletes the specified instance profile. The instance profile must not have an associated role.

Make sure you do not have any Amazon EC2 instances running with the instance profile you are about to delete. Deleting a role or instance profile that is associated with a running instance will break any applications running on the instance.

For more information about instance profiles, go to About Instance Profiles.

" - }, - "DeleteLoginProfile":{ - "name":"DeleteLoginProfile", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DeleteLoginProfileRequest"}, - "errors":[ - { - "shape":"EntityTemporarilyUnmodifiableException", - "error":{ - "code":"EntityTemporarilyUnmodifiable", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it referenced an entity that is temporarily unmodifiable, such as a user name that was deleted and then recreated. The error indicates that the request is likely to succeed if you try again after waiting several minutes. The error message describes the entity.

" - }, - { - "shape":"NoSuchEntityException", - "error":{ - "code":"NoSuchEntity", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it referenced an entity that does not exist. The error message describes the entity.

" - }, - { - "shape":"LimitExceededException", - "error":{ - "code":"LimitExceeded", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it attempted to create resources beyond the current AWS account limits. The error message describes the limit exceeded.

" - } - ], - "documentation":"

Deletes the password for the specified user, which terminates the user's ability to access AWS services through the AWS Management Console.

Deleting a user's password does not prevent a user from accessing IAM through the command line interface or the API. To prevent all user access you must also either make the access key inactive or delete it. For more information about making keys inactive or deleting them, see UpdateAccessKey and DeleteAccessKey. " - }, - "DeleteOpenIDConnectProvider":{ - "name":"DeleteOpenIDConnectProvider", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DeleteOpenIDConnectProviderRequest"}, - "errors":[ - { - "shape":"InvalidInputException", - "error":{ - "code":"InvalidInput", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because an invalid or out-of-range value was supplied for an input parameter.

" - }, - { - "shape":"NoSuchEntityException", - "error":{ - "code":"NoSuchEntity", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it referenced an entity that does not exist. The error message describes the entity.

" - } - ], - "documentation":"

Deletes an IAM OpenID Connect identity provider.

Deleting an OIDC provider does not update any roles that reference the provider as a principal in their trust policies. Any attempt to assume a role that references a provider that has been deleted will fail.

This action is idempotent; it does not fail or return an error if you call the action for a provider that was already deleted.

" - }, - "DeleteRole":{ - "name":"DeleteRole", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DeleteRoleRequest"}, - "errors":[ - { - "shape":"NoSuchEntityException", - "error":{ - "code":"NoSuchEntity", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it referenced an entity that does not exist. The error message describes the entity.

" - }, - { - "shape":"DeleteConflictException", - "error":{ - "code":"DeleteConflict", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it attempted to delete a resource that has attached subordinate entities. The error message describes these entities.

" - }, - { - "shape":"LimitExceededException", - "error":{ - "code":"LimitExceeded", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it attempted to create resources beyond the current AWS account limits. The error message describes the limit exceeded.

" - } - ], - "documentation":"

Deletes the specified role. The role must not have any policies attached. For more information about roles, go to Working with Roles.

Make sure you do not have any Amazon EC2 instances running with the role you are about to delete. Deleting a role or instance profile that is associated with a running instance will break any applications running on the instance. " - }, - "DeleteRolePolicy":{ - "name":"DeleteRolePolicy", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DeleteRolePolicyRequest"}, - "errors":[ - { - "shape":"NoSuchEntityException", - "error":{ - "code":"NoSuchEntity", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it referenced an entity that does not exist. The error message describes the entity.

" - }, - { - "shape":"LimitExceededException", - "error":{ - "code":"LimitExceeded", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it attempted to create resources beyond the current AWS account limits. The error message describes the limit exceeded.

" - } - ], - "documentation":"

Deletes the specified policy associated with the specified role.

" - }, - "DeleteSAMLProvider":{ - "name":"DeleteSAMLProvider", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DeleteSAMLProviderRequest"}, - "errors":[ - { - "shape":"InvalidInputException", - "error":{ - "code":"InvalidInput", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because an invalid or out-of-range value was supplied for an input parameter.

" - }, - { - "shape":"LimitExceededException", - "error":{ - "code":"LimitExceeded", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it attempted to create resources beyond the current AWS account limits. The error message describes the limit exceeded.

" - }, - { - "shape":"NoSuchEntityException", - "error":{ - "code":"NoSuchEntity", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it referenced an entity that does not exist. The error message describes the entity.

" - } - ], - "documentation":"

Deletes a SAML provider.

Deleting the provider does not update any roles that reference the SAML provider as a principal in their trust policies. Any attempt to assume a role that references a SAML provider that has been deleted will fail.

This operation requires Signature Version 4. " - }, - "DeleteServerCertificate":{ - "name":"DeleteServerCertificate", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DeleteServerCertificateRequest"}, - "errors":[ - { - "shape":"NoSuchEntityException", - "error":{ - "code":"NoSuchEntity", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it referenced an entity that does not exist. The error message describes the entity.

" - }, - { - "shape":"DeleteConflictException", - "error":{ - "code":"DeleteConflict", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it attempted to delete a resource that has attached subordinate entities. The error message describes these entities.

" - }, - { - "shape":"LimitExceededException", - "error":{ - "code":"LimitExceeded", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it attempted to create resources beyond the current AWS account limits. The error message describes the limit exceeded.

" - } - ], - "documentation":"

Deletes the specified server certificate.

If you are using a server certificate with Elastic Load Balancing, deleting the certificate could have implications for your application. If Elastic Load Balancing doesn't detect the deletion of bound certificates, it may continue to use the certificates. This could cause Elastic Load Balancing to stop accepting traffic. We recommend that you remove the reference to the certificate from Elastic Load Balancing before using this command to delete the certificate. For more information, go to DeleteLoadBalancerListeners in the Elastic Load Balancing API Reference. " - }, - "DeleteSigningCertificate":{ - "name":"DeleteSigningCertificate", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DeleteSigningCertificateRequest"}, - "errors":[ - { - "shape":"NoSuchEntityException", - "error":{ - "code":"NoSuchEntity", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it referenced an entity that does not exist. The error message describes the entity.

" - }, - { - "shape":"LimitExceededException", - "error":{ - "code":"LimitExceeded", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it attempted to create resources beyond the current AWS account limits. The error message describes the limit exceeded.

" - } - ], - "documentation":"

Deletes the specified signing certificate associated with the specified user.

If you do not specify a user name, IAM determines the user name implicitly based on the AWS access key ID signing the request. Because this action works for access keys under the AWS account, you can use this action to manage root credentials even if the AWS account has no associated users.

" - }, - "DeleteUser":{ - "name":"DeleteUser", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DeleteUserRequest"}, - "errors":[ - { - "shape":"LimitExceededException", - "error":{ - "code":"LimitExceeded", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it attempted to create resources beyond the current AWS account limits. The error message describes the limit exceeded.

" - }, - { - "shape":"NoSuchEntityException", - "error":{ - "code":"NoSuchEntity", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it referenced an entity that does not exist. The error message describes the entity.

" - }, - { - "shape":"DeleteConflictException", - "error":{ - "code":"DeleteConflict", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it attempted to delete a resource that has attached subordinate entities. The error message describes these entities.

" - } - ], - "documentation":"

Deletes the specified user. The user must not belong to any groups, have any keys or signing certificates, or have any attached policies.

" - }, - "DeleteUserPolicy":{ - "name":"DeleteUserPolicy", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DeleteUserPolicyRequest"}, - "errors":[ - { - "shape":"NoSuchEntityException", - "error":{ - "code":"NoSuchEntity", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it referenced an entity that does not exist. The error message describes the entity.

" - }, - { - "shape":"LimitExceededException", - "error":{ - "code":"LimitExceeded", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it attempted to create resources beyond the current AWS account limits. The error message describes the limit exceeded.

" - } - ], - "documentation":"

Deletes the specified policy associated with the specified user.

" - }, - "DeleteVirtualMFADevice":{ - "name":"DeleteVirtualMFADevice", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DeleteVirtualMFADeviceRequest"}, - "errors":[ - { - "shape":"NoSuchEntityException", - "error":{ - "code":"NoSuchEntity", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it referenced an entity that does not exist. The error message describes the entity.

" - }, - { - "shape":"DeleteConflictException", - "error":{ - "code":"DeleteConflict", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it attempted to delete a resource that has attached subordinate entities. The error message describes these entities.

" - }, - { - "shape":"LimitExceededException", - "error":{ - "code":"LimitExceeded", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it attempted to create resources beyond the current AWS account limits. The error message describes the limit exceeded.

" - } - ], - "documentation":"

Deletes a virtual MFA device.

You must deactivate a user's virtual MFA device before you can delete it. For information about deactivating MFA devices, see DeactivateMFADevice. " - }, - "EnableMFADevice":{ - "name":"EnableMFADevice", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"EnableMFADeviceRequest"}, - "errors":[ - { - "shape":"EntityAlreadyExistsException", - "error":{ - "code":"EntityAlreadyExists", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it attempted to create a resource that already exists.

" - }, - { - "shape":"EntityTemporarilyUnmodifiableException", - "error":{ - "code":"EntityTemporarilyUnmodifiable", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it referenced an entity that is temporarily unmodifiable, such as a user name that was deleted and then recreated. The error indicates that the request is likely to succeed if you try again after waiting several minutes. The error message describes the entity.

" - }, - { - "shape":"InvalidAuthenticationCodeException", - "error":{ - "code":"InvalidAuthenticationCode", - "httpStatusCode":403, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because the authentication code was not recognized. The error message describes the specific error.

" - }, - { - "shape":"LimitExceededException", - "error":{ - "code":"LimitExceeded", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it attempted to create resources beyond the current AWS account limits. The error message describes the limit exceeded.

" - }, - { - "shape":"NoSuchEntityException", - "error":{ - "code":"NoSuchEntity", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it referenced an entity that does not exist. The error message describes the entity.

" - } - ], - "documentation":"

Enables the specified MFA device and associates it with the specified user name. When enabled, the MFA device is required for every subsequent login by the user name associated with the device.

" - }, - "GenerateCredentialReport":{ - "name":"GenerateCredentialReport", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "output":{ - "shape":"GenerateCredentialReportResponse", - "documentation":"

Contains the result of a successful invocation of the GenerateCredentialReport action.

", - "resultWrapper":"GenerateCredentialReportResult" - }, - "errors":[ - { - "shape":"LimitExceededException", - "error":{ - "code":"LimitExceeded", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it attempted to create resources beyond the current AWS account limits. The error message describes the limit exceeded.

" - } - ], - "documentation":"

Generates a credential report for the AWS account. For more information about the credential report, see Getting Credential Reports in the Using IAM guide.

" - }, - "GetAccountAuthorizationDetails":{ - "name":"GetAccountAuthorizationDetails", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"GetAccountAuthorizationDetailsRequest"}, - "output":{ - "shape":"GetAccountAuthorizationDetailsResponse", - "documentation":"

Contains the result of a successful invocation of the GetAccountAuthorizationDetails action.

", - "resultWrapper":"GetAccountAuthorizationDetailsResult" - }, - "documentation":"

Retrieves information about all IAM users, groups, and roles in your account, including their relationships to one another and their attached policies. Use this API to obtain a snapshot of the configuration of IAM permissions (users, groups, roles, and policies) in your account.

You can optionally filter the results using the Filter parameter. You can paginate the results using the MaxItems and Marker parameters.

" - }, - "GetAccountPasswordPolicy":{ - "name":"GetAccountPasswordPolicy", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "output":{ - "shape":"GetAccountPasswordPolicyResponse", - "documentation":"

Contains the result of a successful invocation of the GetAccountPasswordPolicy action.

", - "resultWrapper":"GetAccountPasswordPolicyResult" - }, - "errors":[ - { - "shape":"NoSuchEntityException", - "error":{ - "code":"NoSuchEntity", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it referenced an entity that does not exist. The error message describes the entity.

" - } - ], - "documentation":"

Retrieves the password policy for the AWS account. For more information about using a password policy, go to Managing an IAM Password Policy.

" - }, - "GetAccountSummary":{ - "name":"GetAccountSummary", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "output":{ - "shape":"GetAccountSummaryResponse", - "documentation":"

Contains the result of a successful invocation of the GetAccountSummary action.

", - "resultWrapper":"GetAccountSummaryResult" - }, - "documentation":"

Retrieves account level information about account entity usage and IAM quotas.

For information about limitations on IAM entities, see Limitations on IAM Entities in the Using IAM guide.

" - }, - "GetCredentialReport":{ - "name":"GetCredentialReport", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "output":{ - "shape":"GetCredentialReportResponse", - "documentation":"

Contains the result of a successful invocation of the GetCredentialReport action.

", - "resultWrapper":"GetCredentialReportResult" - }, - "errors":[ - { - "shape":"CredentialReportNotPresentException", - "error":{ - "code":"ReportNotPresent", - "httpStatusCode":410, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because the credential report does not exist. To generate a credential report, use GenerateCredentialReport.

" - }, - { - "shape":"CredentialReportExpiredException", - "error":{ - "code":"ReportExpired", - "httpStatusCode":410, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because the most recent credential report has expired. To generate a new credential report, use GenerateCredentialReport. For more information about credential report expiration, see Getting Credential Reports in the Using IAM guide.

" - }, - { - "shape":"CredentialReportNotReadyException", - "error":{ - "code":"ReportInProgress", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because the credential report is still being generated.

" - } - ], - "documentation":"

Retrieves a credential report for the AWS account. For more information about the credential report, see Getting Credential Reports in the Using IAM guide.

" - }, - "GetGroup":{ - "name":"GetGroup", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"GetGroupRequest"}, - "output":{ - "shape":"GetGroupResponse", - "documentation":"

Contains the result of a successful invocation of the GetGroup action.

", - "resultWrapper":"GetGroupResult" - }, - "errors":[ - { - "shape":"NoSuchEntityException", - "error":{ - "code":"NoSuchEntity", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it referenced an entity that does not exist. The error message describes the entity.

" - } - ], - "documentation":"

Returns a list of users that are in the specified group. You can paginate the results using the MaxItems and Marker parameters.

" - }, - "GetGroupPolicy":{ - "name":"GetGroupPolicy", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"GetGroupPolicyRequest"}, - "output":{ - "shape":"GetGroupPolicyResponse", - "documentation":"

Contains the result of a successful invocation of the GetGroupPolicy action.

", - "resultWrapper":"GetGroupPolicyResult" - }, - "errors":[ - { - "shape":"NoSuchEntityException", - "error":{ - "code":"NoSuchEntity", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it referenced an entity that does not exist. The error message describes the entity.

" - } - ], - "documentation":"

Retrieves the specified policy document for the specified group. The returned policy is URL-encoded according to RFC 3986. For more information about RFC 3986, go to http://www.faqs.org/rfcs/rfc3986.html.

" - }, - "GetInstanceProfile":{ - "name":"GetInstanceProfile", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"GetInstanceProfileRequest"}, - "output":{ - "shape":"GetInstanceProfileResponse", - "documentation":"

Contains the result of a successful invocation of the GetInstanceProfile action.

", - "resultWrapper":"GetInstanceProfileResult" - }, - "errors":[ - { - "shape":"NoSuchEntityException", - "error":{ - "code":"NoSuchEntity", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it referenced an entity that does not exist. The error message describes the entity.

" - } - ], - "documentation":"

Retrieves information about the specified instance profile, including the instance profile's path, GUID, ARN, and role. For more information about instance profiles, go to About Instance Profiles. For more information about ARNs, go to ARNs.

" - }, - "GetLoginProfile":{ - "name":"GetLoginProfile", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"GetLoginProfileRequest"}, - "output":{ - "shape":"GetLoginProfileResponse", - "documentation":"

Contains the result of a successful invocation of the GetLoginProfile action.

", - "resultWrapper":"GetLoginProfileResult" - }, - "errors":[ - { - "shape":"NoSuchEntityException", - "error":{ - "code":"NoSuchEntity", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it referenced an entity that does not exist. The error message describes the entity.

" - } - ], - "documentation":"

Retrieves the user name and password-creation date for the specified user. If the user has not been assigned a password, the action returns a 404 (NoSuchEntity) error.

" - }, - "GetOpenIDConnectProvider":{ - "name":"GetOpenIDConnectProvider", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"GetOpenIDConnectProviderRequest"}, - "output":{ - "shape":"GetOpenIDConnectProviderResponse", - "documentation":"

Contains the result of a successful invocation of the GetOpenIDConnectProvider action.

", - "resultWrapper":"GetOpenIDConnectProviderResult" - }, - "errors":[ - { - "shape":"InvalidInputException", - "error":{ - "code":"InvalidInput", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because an invalid or out-of-range value was supplied for an input parameter.

" - }, - { - "shape":"NoSuchEntityException", - "error":{ - "code":"NoSuchEntity", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it referenced an entity that does not exist. The error message describes the entity.

" - } - ], - "documentation":"

Returns information about the specified OpenID Connect provider.

" - }, - "GetRole":{ - "name":"GetRole", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"GetRoleRequest"}, - "output":{ - "shape":"GetRoleResponse", - "documentation":"

Contains the result of a successful invocation of the GetRole action.

", - "resultWrapper":"GetRoleResult" - }, - "errors":[ - { - "shape":"NoSuchEntityException", - "error":{ - "code":"NoSuchEntity", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it referenced an entity that does not exist. The error message describes the entity.

" - } - ], - "documentation":"

Retrieves information about the specified role, including the role's path, GUID, ARN, and the policy granting permission to assume the role. For more information about ARNs, go to ARNs. For more information about roles, go to Working with Roles.

The returned policy is URL-encoded according to RFC 3986. For more information about RFC 3986, go to http://www.faqs.org/rfcs/rfc3986.html.

" - }, - "GetRolePolicy":{ - "name":"GetRolePolicy", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"GetRolePolicyRequest"}, - "output":{ - "shape":"GetRolePolicyResponse", - "documentation":"

Contains the result of a successful invocation of the GetRolePolicy action.

", - "resultWrapper":"GetRolePolicyResult" - }, - "errors":[ - { - "shape":"NoSuchEntityException", - "error":{ - "code":"NoSuchEntity", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it referenced an entity that does not exist. The error message describes the entity.

" - } - ], - "documentation":"

Retrieves the specified policy document for the specified role. For more information about roles, go to Working with Roles.

The returned policy is URL-encoded according to RFC 3986. For more information about RFC 3986, go to http://www.faqs.org/rfcs/rfc3986.html.

" - }, - "GetSAMLProvider":{ - "name":"GetSAMLProvider", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"GetSAMLProviderRequest"}, - "output":{ - "shape":"GetSAMLProviderResponse", - "documentation":"

Contains the result of a successful invocation of the GetSAMLProvider action.

", - "resultWrapper":"GetSAMLProviderResult" - }, - "errors":[ - { - "shape":"NoSuchEntityException", - "error":{ - "code":"NoSuchEntity", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it referenced an entity that does not exist. The error message describes the entity.

" - }, - { - "shape":"InvalidInputException", - "error":{ - "code":"InvalidInput", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because an invalid or out-of-range value was supplied for an input parameter.

" - } - ], - "documentation":"

Returns the SAML provider metadocument that was uploaded when the provider was created or updated.

This operation requires Signature Version 4. " - }, - "GetServerCertificate":{ - "name":"GetServerCertificate", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"GetServerCertificateRequest"}, - "output":{ - "shape":"GetServerCertificateResponse", - "documentation":"

Contains the result of a successful invocation of the GetServerCertificate action.

", - "resultWrapper":"GetServerCertificateResult" - }, - "errors":[ - { - "shape":"NoSuchEntityException", - "error":{ - "code":"NoSuchEntity", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it referenced an entity that does not exist. The error message describes the entity.

" - } - ], - "documentation":"

Retrieves information about the specified server certificate.

" - }, - "GetUser":{ - "name":"GetUser", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"GetUserRequest"}, - "output":{ - "shape":"GetUserResponse", - "documentation":"

Contains the result of a successful invocation of the GetUser action.

", - "resultWrapper":"GetUserResult" - }, - "errors":[ - { - "shape":"NoSuchEntityException", - "error":{ - "code":"NoSuchEntity", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it referenced an entity that does not exist. The error message describes the entity.

" - } - ], - "documentation":"

Retrieves information about the specified user, including the user's creation date, path, unique ID, and ARN.

If you do not specify a user name, IAM determines the user name implicitly based on the AWS access key ID used to sign the request.

" - }, - "GetUserPolicy":{ - "name":"GetUserPolicy", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"GetUserPolicyRequest"}, - "output":{ - "shape":"GetUserPolicyResponse", - "documentation":"

Contains the result of a successful invocation of the GetUserPolicy action.

", - "resultWrapper":"GetUserPolicyResult" - }, - "errors":[ - { - "shape":"NoSuchEntityException", - "error":{ - "code":"NoSuchEntity", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it referenced an entity that does not exist. The error message describes the entity.

" - } - ], - "documentation":"

Retrieves the specified policy document for the specified user. The returned policy is URL-encoded according to RFC 3986. For more information about RFC 3986, go to http://www.faqs.org/rfcs/rfc3986.html.

" - }, - "ListAccessKeys":{ - "name":"ListAccessKeys", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"ListAccessKeysRequest"}, - "output":{ - "shape":"ListAccessKeysResponse", - "documentation":"

Contains the result of a successful invocation of the ListAccessKeys action.

", - "resultWrapper":"ListAccessKeysResult" - }, - "errors":[ - { - "shape":"NoSuchEntityException", - "error":{ - "code":"NoSuchEntity", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it referenced an entity that does not exist. The error message describes the entity.

" - } - ], - "documentation":"

Returns information about the access key IDs associated with the specified user. If there are none, the action returns an empty list.

Although each user is limited to a small number of keys, you can still paginate the results using the MaxItems and Marker parameters.

If the UserName field is not specified, the UserName is determined implicitly based on the AWS access key ID used to sign the request. Because this action works for access keys under the AWS account, you can use this action to manage root credentials even if the AWS account has no associated users.

To ensure the security of your AWS account, the secret access key is accessible only during key and user creation. " - }, - "ListAccountAliases":{ - "name":"ListAccountAliases", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"ListAccountAliasesRequest"}, - "output":{ - "shape":"ListAccountAliasesResponse", - "documentation":"

Contains the result of a successful invocation of the ListAccountAliases action.

", - "resultWrapper":"ListAccountAliasesResult" - }, - "documentation":"

Lists the account aliases associated with the account. For information about using an AWS account alias, see Using an Alias for Your AWS Account ID in the Using IAM guide.

You can paginate the results using the MaxItems and Marker parameters.

" - }, - "ListGroupPolicies":{ - "name":"ListGroupPolicies", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"ListGroupPoliciesRequest"}, - "output":{ - "shape":"ListGroupPoliciesResponse", - "documentation":"

Contains the result of a successful invocation of the ListGroupPolicies action.

", - "resultWrapper":"ListGroupPoliciesResult" - }, - "errors":[ - { - "shape":"NoSuchEntityException", - "error":{ - "code":"NoSuchEntity", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it referenced an entity that does not exist. The error message describes the entity.

" - } - ], - "documentation":"

Lists the names of the policies associated with the specified group. If there are none, the action returns an empty list.

You can paginate the results using the MaxItems and Marker parameters.

" - }, - "ListGroups":{ - "name":"ListGroups", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"ListGroupsRequest"}, - "output":{ - "shape":"ListGroupsResponse", - "documentation":"

Contains the result of a successful invocation of the ListGroups action.

", - "resultWrapper":"ListGroupsResult" - }, - "documentation":"

Lists the groups that have the specified path prefix.

You can paginate the results using the MaxItems and Marker parameters.

" - }, - "ListGroupsForUser":{ - "name":"ListGroupsForUser", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"ListGroupsForUserRequest"}, - "output":{ - "shape":"ListGroupsForUserResponse", - "documentation":"

Contains the result of a successful invocation of the ListGroupsForUser action.

", - "resultWrapper":"ListGroupsForUserResult" - }, - "errors":[ - { - "shape":"NoSuchEntityException", - "error":{ - "code":"NoSuchEntity", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it referenced an entity that does not exist. The error message describes the entity.

" - } - ], - "documentation":"

Lists the groups the specified user belongs to.

You can paginate the results using the MaxItems and Marker parameters.

" - }, - "ListInstanceProfiles":{ - "name":"ListInstanceProfiles", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"ListInstanceProfilesRequest"}, - "output":{ - "shape":"ListInstanceProfilesResponse", - "documentation":"

Contains the result of a successful invocation of the ListInstanceProfiles action.

", - "resultWrapper":"ListInstanceProfilesResult" - }, - "documentation":"

Lists the instance profiles that have the specified path prefix. If there are none, the action returns an empty list. For more information about instance profiles, go to About Instance Profiles.

You can paginate the results using the MaxItems and Marker parameters.

" - }, - "ListInstanceProfilesForRole":{ - "name":"ListInstanceProfilesForRole", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"ListInstanceProfilesForRoleRequest"}, - "output":{ - "shape":"ListInstanceProfilesForRoleResponse", - "documentation":"

Contains the result of a successful invocation of the ListInstanceProfilesForRole action.

", - "resultWrapper":"ListInstanceProfilesForRoleResult" - }, - "errors":[ - { - "shape":"NoSuchEntityException", - "error":{ - "code":"NoSuchEntity", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it referenced an entity that does not exist. The error message describes the entity.

" - } - ], - "documentation":"

Lists the instance profiles that have the specified associated role. If there are none, the action returns an empty list. For more information about instance profiles, go to About Instance Profiles.

You can paginate the results using the MaxItems and Marker parameters.

" - }, - "ListMFADevices":{ - "name":"ListMFADevices", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"ListMFADevicesRequest"}, - "output":{ - "shape":"ListMFADevicesResponse", - "documentation":"

Contains the result of a successful invocation of the ListMFADevices action.

", - "resultWrapper":"ListMFADevicesResult" - }, - "errors":[ - { - "shape":"NoSuchEntityException", - "error":{ - "code":"NoSuchEntity", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it referenced an entity that does not exist. The error message describes the entity.

" - } - ], - "documentation":"

Lists the MFA devices. If the request includes the user name, then this action lists all the MFA devices associated with the specified user name. If you do not specify a user name, IAM determines the user name implicitly based on the AWS access key ID signing the request.

You can paginate the results using the MaxItems and Marker parameters.

" - }, - "ListOpenIDConnectProviders":{ - "name":"ListOpenIDConnectProviders", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"ListOpenIDConnectProvidersRequest"}, - "output":{ - "shape":"ListOpenIDConnectProvidersResponse", - "documentation":"

Contains the result of a successful invocation of the ListOpenIDConnectProviders action.

", - "resultWrapper":"ListOpenIDConnectProvidersResult" - }, - "documentation":"

Lists information about the OpenID Connect providers in the AWS account.

" - }, - "ListRolePolicies":{ - "name":"ListRolePolicies", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"ListRolePoliciesRequest"}, - "output":{ - "shape":"ListRolePoliciesResponse", - "documentation":"

Contains the result of a successful invocation of the ListRolePolicies action.

", - "resultWrapper":"ListRolePoliciesResult" - }, - "errors":[ - { - "shape":"NoSuchEntityException", - "error":{ - "code":"NoSuchEntity", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it referenced an entity that does not exist. The error message describes the entity.

" - } - ], - "documentation":"

Lists the names of the policies associated with the specified role. If there are none, the action returns an empty list.

You can paginate the results using the MaxItems and Marker parameters.

" - }, - "ListRoles":{ - "name":"ListRoles", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"ListRolesRequest"}, - "output":{ - "shape":"ListRolesResponse", - "documentation":"

Contains the result of a successful invocation of the ListRoles action.

", - "resultWrapper":"ListRolesResult" - }, - "documentation":"

Lists the roles that have the specified path prefix. If there are none, the action returns an empty list. For more information about roles, go to Working with Roles.

You can paginate the results using the MaxItems and Marker parameters.

The returned policy is URL-encoded according to RFC 3986. For more information about RFC 3986, go to http://www.faqs.org/rfcs/rfc3986.html.

" - }, - "ListSAMLProviders":{ - "name":"ListSAMLProviders", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"ListSAMLProvidersRequest"}, - "output":{ - "shape":"ListSAMLProvidersResponse", - "documentation":"

Contains the result of a successful invocation of the ListSAMLProviders action.

", - "resultWrapper":"ListSAMLProvidersResult" - }, - "documentation":"

Lists the SAML providers in the account.

This operation requires Signature Version 4. " - }, - "ListServerCertificates":{ - "name":"ListServerCertificates", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"ListServerCertificatesRequest"}, - "output":{ - "shape":"ListServerCertificatesResponse", - "documentation":"

Contains the result of a successful invocation of the ListServerCertificates action.

", - "resultWrapper":"ListServerCertificatesResult" - }, - "documentation":"

Lists the server certificates that have the specified path prefix. If none exist, the action returns an empty list.

You can paginate the results using the MaxItems and Marker parameters.

" - }, - "ListSigningCertificates":{ - "name":"ListSigningCertificates", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"ListSigningCertificatesRequest"}, - "output":{ - "shape":"ListSigningCertificatesResponse", - "documentation":"

Contains the result of a successful invocation of the ListSigningCertificates action.

", - "resultWrapper":"ListSigningCertificatesResult" - }, - "errors":[ - { - "shape":"NoSuchEntityException", - "error":{ - "code":"NoSuchEntity", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it referenced an entity that does not exist. The error message describes the entity.

" - } - ], - "documentation":"

Returns information about the signing certificates associated with the specified user. If there are none, the action returns an empty list.

Although each user is limited to a small number of signing certificates, you can still paginate the results using the MaxItems and Marker parameters.

If the UserName field is not specified, the user name is determined implicitly based on the AWS access key ID used to sign the request. Because this action works for access keys under the AWS account, you can use this action to manage root credentials even if the AWS account has no associated users.

" - }, - "ListUserPolicies":{ - "name":"ListUserPolicies", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"ListUserPoliciesRequest"}, - "output":{ - "shape":"ListUserPoliciesResponse", - "documentation":"

Contains the result of a successful invocation of the ListUserPolicies action.

", - "resultWrapper":"ListUserPoliciesResult" - }, - "errors":[ - { - "shape":"NoSuchEntityException", - "error":{ - "code":"NoSuchEntity", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it referenced an entity that does not exist. The error message describes the entity.

" - } - ], - "documentation":"

Lists the names of the policies associated with the specified user. If there are none, the action returns an empty list.

You can paginate the results using the MaxItems and Marker parameters.

" - }, - "ListUsers":{ - "name":"ListUsers", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"ListUsersRequest"}, - "output":{ - "shape":"ListUsersResponse", - "documentation":"

Contains the result of a successful invocation of the ListUsers action.

", - "resultWrapper":"ListUsersResult" - }, - "documentation":"

Lists the IAM users that have the specified path prefix. If no path prefix is specified, the action returns all users in the AWS account. If there are none, the action returns an empty list.

You can paginate the results using the MaxItems and Marker parameters.

" - }, - "ListVirtualMFADevices":{ - "name":"ListVirtualMFADevices", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"ListVirtualMFADevicesRequest"}, - "output":{ - "shape":"ListVirtualMFADevicesResponse", - "documentation":"

Contains the result of a successful invocation of the ListVirtualMFADevicesaction.

", - "resultWrapper":"ListVirtualMFADevicesResult" - }, - "documentation":"

Lists the virtual MFA devices under the AWS account by assignment status. If you do not specify an assignment status, the action returns a list of all virtual MFA devices. Assignment status can be Assigned, Unassigned, or Any.

You can paginate the results using the MaxItems and Marker parameters.

" - }, - "PutGroupPolicy":{ - "name":"PutGroupPolicy", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"PutGroupPolicyRequest"}, - "errors":[ - { - "shape":"LimitExceededException", - "error":{ - "code":"LimitExceeded", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it attempted to create resources beyond the current AWS account limits. The error message describes the limit exceeded.

" - }, - { - "shape":"MalformedPolicyDocumentException", - "error":{ - "code":"MalformedPolicyDocument", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because the policy document was malformed. The error message describes the specific error.

" - }, - { - "shape":"NoSuchEntityException", - "error":{ - "code":"NoSuchEntity", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it referenced an entity that does not exist. The error message describes the entity.

" - } - ], - "documentation":"

Adds (or updates) a policy document associated with the specified group. For information about policies, refer to Overview of Policies in the Using IAM guide.

For information about limits on the number of policies you can associate with a group, see Limitations on IAM Entities in the Using IAM guide.

Because policy documents can be large, you should use POST rather than GET when calling PutGroupPolicy. For information about setting up signatures and authorization through the API, go to Signing AWS API Requests in the AWS General Reference. For general information about using the Query API with IAM, go to Making Query Requests in the Using IAM guide. " - }, - "PutRolePolicy":{ - "name":"PutRolePolicy", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"PutRolePolicyRequest"}, - "errors":[ - { - "shape":"LimitExceededException", - "error":{ - "code":"LimitExceeded", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it attempted to create resources beyond the current AWS account limits. The error message describes the limit exceeded.

" - }, - { - "shape":"MalformedPolicyDocumentException", - "error":{ - "code":"MalformedPolicyDocument", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because the policy document was malformed. The error message describes the specific error.

" - }, - { - "shape":"NoSuchEntityException", - "error":{ - "code":"NoSuchEntity", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it referenced an entity that does not exist. The error message describes the entity.

" - } - ], - "documentation":"

Adds (or updates) a policy document associated with the specified role. For information about policies, go to Overview of Policies in the Using IAM guide.

For information about limits on the policies you can associate with a role, see Limitations on IAM Entities in the Using IAM guide.

Because policy documents can be large, you should use POST rather than GET when calling PutRolePolicy. For information about setting up signatures and authorization through the API, go to Signing AWS API Requests in the AWS General Reference. For general information about using the Query API with IAM, go to Making Query Requests in the Using IAM guide. " - }, - "PutUserPolicy":{ - "name":"PutUserPolicy", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"PutUserPolicyRequest"}, - "errors":[ - { - "shape":"LimitExceededException", - "error":{ - "code":"LimitExceeded", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it attempted to create resources beyond the current AWS account limits. The error message describes the limit exceeded.

" - }, - { - "shape":"MalformedPolicyDocumentException", - "error":{ - "code":"MalformedPolicyDocument", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because the policy document was malformed. The error message describes the specific error.

" - }, - { - "shape":"NoSuchEntityException", - "error":{ - "code":"NoSuchEntity", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it referenced an entity that does not exist. The error message describes the entity.

" - } - ], - "documentation":"

Adds (or updates) a policy document associated with the specified user. For information about policies, refer to Overview of Policies in the Using IAM guide.

For information about limits on the number of policies you can associate with a user, see Limitations on IAM Entities in the Using IAM guide.

Because policy documents can be large, you should use POST rather than GET when calling PutUserPolicy. For information about setting up signatures and authorization through the API, go to Signing AWS API Requests in the AWS General Reference. For general information about using the Query API with IAM, go to Making Query Requests in the Using IAM guide. " - }, - "RemoveClientIDFromOpenIDConnectProvider":{ - "name":"RemoveClientIDFromOpenIDConnectProvider", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"RemoveClientIDFromOpenIDConnectProviderRequest"}, - "errors":[ - { - "shape":"InvalidInputException", - "error":{ - "code":"InvalidInput", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because an invalid or out-of-range value was supplied for an input parameter.

" - }, - { - "shape":"NoSuchEntityException", - "error":{ - "code":"NoSuchEntity", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it referenced an entity that does not exist. The error message describes the entity.

" - } - ], - "documentation":"

Removes the specified client ID (also known as audience) from the list of client IDs registered for the specified IAM OpenID Connect provider.

This action is idempotent; it does not fail or return an error if you try to remove a client ID that was removed previously.

" - }, - "RemoveRoleFromInstanceProfile":{ - "name":"RemoveRoleFromInstanceProfile", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"RemoveRoleFromInstanceProfileRequest"}, - "errors":[ - { - "shape":"NoSuchEntityException", - "error":{ - "code":"NoSuchEntity", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it referenced an entity that does not exist. The error message describes the entity.

" - }, - { - "shape":"LimitExceededException", - "error":{ - "code":"LimitExceeded", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it attempted to create resources beyond the current AWS account limits. The error message describes the limit exceeded.

" - } - ], - "documentation":"

Removes the specified role from the specified instance profile.

Make sure you do not have any Amazon EC2 instances running with the role you are about to remove from the instance profile. Removing a role from an instance profile that is associated with a running instance will break any applications running on the instance.

For more information about roles, go to Working with Roles. For more information about instance profiles, go to About Instance Profiles.

" - }, - "RemoveUserFromGroup":{ - "name":"RemoveUserFromGroup", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"RemoveUserFromGroupRequest"}, - "errors":[ - { - "shape":"NoSuchEntityException", - "error":{ - "code":"NoSuchEntity", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it referenced an entity that does not exist. The error message describes the entity.

" - }, - { - "shape":"LimitExceededException", - "error":{ - "code":"LimitExceeded", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it attempted to create resources beyond the current AWS account limits. The error message describes the limit exceeded.

" - } - ], - "documentation":"

Removes the specified user from the specified group.

" - }, - "ResyncMFADevice":{ - "name":"ResyncMFADevice", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"ResyncMFADeviceRequest"}, - "errors":[ - { - "shape":"InvalidAuthenticationCodeException", - "error":{ - "code":"InvalidAuthenticationCode", - "httpStatusCode":403, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because the authentication code was not recognized. The error message describes the specific error.

" - }, - { - "shape":"NoSuchEntityException", - "error":{ - "code":"NoSuchEntity", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it referenced an entity that does not exist. The error message describes the entity.

" - }, - { - "shape":"LimitExceededException", - "error":{ - "code":"LimitExceeded", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it attempted to create resources beyond the current AWS account limits. The error message describes the limit exceeded.

" - } - ], - "documentation":"

Synchronizes the specified MFA device with AWS servers.

For more information about creating and working with virtual MFA devices, go to Using a Virtual MFA Device in the Using IAM guide.

" - }, - "UpdateAccessKey":{ - "name":"UpdateAccessKey", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"UpdateAccessKeyRequest"}, - "errors":[ - { - "shape":"NoSuchEntityException", - "error":{ - "code":"NoSuchEntity", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it referenced an entity that does not exist. The error message describes the entity.

" - }, - { - "shape":"LimitExceededException", - "error":{ - "code":"LimitExceeded", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it attempted to create resources beyond the current AWS account limits. The error message describes the limit exceeded.

" - } - ], - "documentation":"

Changes the status of the specified access key from Active to Inactive, or vice versa. This action can be used to disable a user's key as part of a key rotation work flow.

If the UserName field is not specified, the UserName is determined implicitly based on the AWS access key ID used to sign the request. Because this action works for access keys under the AWS account, you can use this action to manage root credentials even if the AWS account has no associated users.

For information about rotating keys, see Managing Keys and Certificates in the Using IAM guide.

" - }, - "UpdateAccountPasswordPolicy":{ - "name":"UpdateAccountPasswordPolicy", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"UpdateAccountPasswordPolicyRequest"}, - "errors":[ - { - "shape":"NoSuchEntityException", - "error":{ - "code":"NoSuchEntity", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it referenced an entity that does not exist. The error message describes the entity.

" - }, - { - "shape":"MalformedPolicyDocumentException", - "error":{ - "code":"MalformedPolicyDocument", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because the policy document was malformed. The error message describes the specific error.

" - }, - { - "shape":"LimitExceededException", - "error":{ - "code":"LimitExceeded", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it attempted to create resources beyond the current AWS account limits. The error message describes the limit exceeded.

" - } - ], - "documentation":"

Updates the password policy settings for the AWS account.

This action does not support partial updates. No parameters are required, but if you do not specify a parameter, that parameter's value reverts to its default value. See the Request Parameters section for each parameter's default value.

For more information about using a password policy, see Managing an IAM Password Policy in the Using IAM guide.

" - }, - "UpdateAssumeRolePolicy":{ - "name":"UpdateAssumeRolePolicy", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"UpdateAssumeRolePolicyRequest"}, - "errors":[ - { - "shape":"NoSuchEntityException", - "error":{ - "code":"NoSuchEntity", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it referenced an entity that does not exist. The error message describes the entity.

" - }, - { - "shape":"MalformedPolicyDocumentException", - "error":{ - "code":"MalformedPolicyDocument", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because the policy document was malformed. The error message describes the specific error.

" - }, - { - "shape":"LimitExceededException", - "error":{ - "code":"LimitExceeded", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it attempted to create resources beyond the current AWS account limits. The error message describes the limit exceeded.

" - } - ], - "documentation":"

Updates the policy that grants an entity permission to assume a role. For more information about roles, go to Working with Roles.

" - }, - "UpdateGroup":{ - "name":"UpdateGroup", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"UpdateGroupRequest"}, - "errors":[ - { - "shape":"NoSuchEntityException", - "error":{ - "code":"NoSuchEntity", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it referenced an entity that does not exist. The error message describes the entity.

" - }, - { - "shape":"EntityAlreadyExistsException", - "error":{ - "code":"EntityAlreadyExists", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it attempted to create a resource that already exists.

" - }, - { - "shape":"LimitExceededException", - "error":{ - "code":"LimitExceeded", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it attempted to create resources beyond the current AWS account limits. The error message describes the limit exceeded.

" - } - ], - "documentation":"

Updates the name and/or the path of the specified group.

You should understand the implications of changing a group's path or name. For more information, see Renaming Users and Groups in the Using IAM guide. To change a group name the requester must have appropriate permissions on both the source object and the target object. For example, to change Managers to MGRs, the entity making the request must have permission on Managers and MGRs, or must have permission on all (*). For more information about permissions, see Permissions and Policies. " - }, - "UpdateLoginProfile":{ - "name":"UpdateLoginProfile", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"UpdateLoginProfileRequest"}, - "errors":[ - { - "shape":"EntityTemporarilyUnmodifiableException", - "error":{ - "code":"EntityTemporarilyUnmodifiable", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it referenced an entity that is temporarily unmodifiable, such as a user name that was deleted and then recreated. The error indicates that the request is likely to succeed if you try again after waiting several minutes. The error message describes the entity.

" - }, - { - "shape":"NoSuchEntityException", - "error":{ - "code":"NoSuchEntity", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it referenced an entity that does not exist. The error message describes the entity.

" - }, - { - "shape":"PasswordPolicyViolationException", - "error":{ - "code":"PasswordPolicyViolation", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because the provided password did not meet the requirements imposed by the account password policy.

" - }, - { - "shape":"LimitExceededException", - "error":{ - "code":"LimitExceeded", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it attempted to create resources beyond the current AWS account limits. The error message describes the limit exceeded.

" - } - ], - "documentation":"

Changes the password for the specified user.

Users can change their own passwords by calling ChangePassword. For more information about modifying passwords, see Managing Passwords in the Using IAM guide.

" - }, - "UpdateOpenIDConnectProviderThumbprint":{ - "name":"UpdateOpenIDConnectProviderThumbprint", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"UpdateOpenIDConnectProviderThumbprintRequest"}, - "errors":[ - { - "shape":"InvalidInputException", - "error":{ - "code":"InvalidInput", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because an invalid or out-of-range value was supplied for an input parameter.

" - }, - { - "shape":"NoSuchEntityException", - "error":{ - "code":"NoSuchEntity", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it referenced an entity that does not exist. The error message describes the entity.

" - } - ], - "documentation":"

Replaces the existing list of server certificate thumbprints with a new list.

The list that you pass with this action completely replaces the existing list of thumbprints. (The lists are not merged.)

Typically, you need to update a thumbprint only when the identity provider's certificate changes, which occurs rarely. However, if the provider's certificate does change, any attempt to assume an IAM role that specifies the IAM provider as a principal will fail until the certificate thumbprint is updated.

Because trust for the OpenID Connect provider is ultimately derived from the provider's certificate and is validated by the thumbprint, it is a best practice to limit access to the UpdateOpenIDConnectProviderThumbprint action to highly-privileged users. " - }, - "UpdateSAMLProvider":{ - "name":"UpdateSAMLProvider", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"UpdateSAMLProviderRequest"}, - "output":{ - "shape":"UpdateSAMLProviderResponse", - "documentation":"

Contains the result of a successful invocation of the UpdateSAMLProvider action.

", - "resultWrapper":"UpdateSAMLProviderResult" - }, - "errors":[ - { - "shape":"NoSuchEntityException", - "error":{ - "code":"NoSuchEntity", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it referenced an entity that does not exist. The error message describes the entity.

" - }, - { - "shape":"InvalidInputException", - "error":{ - "code":"InvalidInput", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because an invalid or out-of-range value was supplied for an input parameter.

" - }, - { - "shape":"LimitExceededException", - "error":{ - "code":"LimitExceeded", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it attempted to create resources beyond the current AWS account limits. The error message describes the limit exceeded.

" - } - ], - "documentation":"

Updates the metadata document for an existing SAML provider.

This operation requires Signature Version 4. " - }, - "UpdateServerCertificate":{ - "name":"UpdateServerCertificate", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"UpdateServerCertificateRequest"}, - "errors":[ - { - "shape":"NoSuchEntityException", - "error":{ - "code":"NoSuchEntity", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it referenced an entity that does not exist. The error message describes the entity.

" - }, - { - "shape":"EntityAlreadyExistsException", - "error":{ - "code":"EntityAlreadyExists", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it attempted to create a resource that already exists.

" - }, - { - "shape":"LimitExceededException", - "error":{ - "code":"LimitExceeded", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it attempted to create resources beyond the current AWS account limits. The error message describes the limit exceeded.

" - } - ], - "documentation":"

Updates the name and/or the path of the specified server certificate.

You should understand the implications of changing a server certificate's path or name. For more information, see Managing Server Certificates in the Using IAM guide. To change a server certificate name the requester must have appropriate permissions on both the source object and the target object. For example, to change the name from ProductionCert to ProdCert, the entity making the request must have permission on ProductionCert and ProdCert, or must have permission on all (*). For more information about permissions, see Permissions and Policies. " - }, - "UpdateSigningCertificate":{ - "name":"UpdateSigningCertificate", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"UpdateSigningCertificateRequest"}, - "errors":[ - { - "shape":"NoSuchEntityException", - "error":{ - "code":"NoSuchEntity", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it referenced an entity that does not exist. The error message describes the entity.

" - }, - { - "shape":"LimitExceededException", - "error":{ - "code":"LimitExceeded", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it attempted to create resources beyond the current AWS account limits. The error message describes the limit exceeded.

" - } - ], - "documentation":"

Changes the status of the specified signing certificate from active to disabled, or vice versa. This action can be used to disable a user's signing certificate as part of a certificate rotation work flow.

If the UserName field is not specified, the UserName is determined implicitly based on the AWS access key ID used to sign the request. Because this action works for access keys under the AWS account, you can use this action to manage root credentials even if the AWS account has no associated users.

For information about rotating certificates, see Managing Keys and Certificates in the Using IAM guide.

" - }, - "UpdateUser":{ - "name":"UpdateUser", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"UpdateUserRequest"}, - "errors":[ - { - "shape":"NoSuchEntityException", - "error":{ - "code":"NoSuchEntity", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it referenced an entity that does not exist. The error message describes the entity.

" - }, - { - "shape":"LimitExceededException", - "error":{ - "code":"LimitExceeded", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it attempted to create resources beyond the current AWS account limits. The error message describes the limit exceeded.

" - }, - { - "shape":"EntityAlreadyExistsException", - "error":{ - "code":"EntityAlreadyExists", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it attempted to create a resource that already exists.

" - }, - { - "shape":"EntityTemporarilyUnmodifiableException", - "error":{ - "code":"EntityTemporarilyUnmodifiable", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it referenced an entity that is temporarily unmodifiable, such as a user name that was deleted and then recreated. The error indicates that the request is likely to succeed if you try again after waiting several minutes. The error message describes the entity.

" - } - ], - "documentation":"

Updates the name and/or the path of the specified user.

You should understand the implications of changing a user's path or name. For more information, see Renaming Users and Groups in the Using IAM guide. To change a user name the requester must have appropriate permissions on both the source object and the target object. For example, to change Bob to Robert, the entity making the request must have permission on Bob and Robert, or must have permission on all (*). For more information about permissions, see Permissions and Policies. " - }, - "UploadServerCertificate":{ - "name":"UploadServerCertificate", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"UploadServerCertificateRequest"}, - "output":{ - "shape":"UploadServerCertificateResponse", - "documentation":"

Contains the result of a successful invocation of the UploadServerCertificate action.

", - "resultWrapper":"UploadServerCertificateResult" - }, - "errors":[ - { - "shape":"LimitExceededException", - "error":{ - "code":"LimitExceeded", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it attempted to create resources beyond the current AWS account limits. The error message describes the limit exceeded.

" - }, - { - "shape":"EntityAlreadyExistsException", - "error":{ - "code":"EntityAlreadyExists", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it attempted to create a resource that already exists.

" - }, - { - "shape":"MalformedCertificateException", - "error":{ - "code":"MalformedCertificate", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because the certificate was malformed or expired. The error message describes the specific error.

" - }, - { - "shape":"KeyPairMismatchException", - "error":{ - "code":"KeyPairMismatch", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because the public key certificate and the private key do not match.

" - } - ], - "documentation":"

Uploads a server certificate entity for the AWS account. The server certificate entity includes a public key certificate, a private key, and an optional certificate chain, which should all be PEM-encoded.

For information about the number of server certificates you can upload, see Limitations on IAM Entities in the Using IAM guide.

Because the body of the public key certificate, private key, and the certificate chain can be large, you should use POST rather than GET when calling UploadServerCertificate. For information about setting up signatures and authorization through the API, go to Signing AWS API Requests in the AWS General Reference. For general information about using the Query API with IAM, go to Making Query Requests in the Using IAM guide. " - }, - "UploadSigningCertificate":{ - "name":"UploadSigningCertificate", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"UploadSigningCertificateRequest"}, - "output":{ - "shape":"UploadSigningCertificateResponse", - "documentation":"

Contains the result of a successful invocation of the UploadSigningCertificate action.

", - "resultWrapper":"UploadSigningCertificateResult" - }, - "errors":[ - { - "shape":"LimitExceededException", - "error":{ - "code":"LimitExceeded", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it attempted to create resources beyond the current AWS account limits. The error message describes the limit exceeded.

" - }, - { - "shape":"EntityAlreadyExistsException", - "error":{ - "code":"EntityAlreadyExists", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it attempted to create a resource that already exists.

" - }, - { - "shape":"MalformedCertificateException", - "error":{ - "code":"MalformedCertificate", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because the certificate was malformed or expired. The error message describes the specific error.

" - }, - { - "shape":"InvalidCertificateException", - "error":{ - "code":"InvalidCertificate", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because the certificate is invalid.

" - }, - { - "shape":"DuplicateCertificateException", - "error":{ - "code":"DuplicateCertificate", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because the same certificate is associated to another user under the account.

" - }, - { - "shape":"NoSuchEntityException", - "error":{ - "code":"NoSuchEntity", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it referenced an entity that does not exist. The error message describes the entity.

" - } - ], - "documentation":"

Uploads an X.509 signing certificate and associates it with the specified user. Some AWS services use X.509 signing certificates to validate requests that are signed with a corresponding private key. When you upload the certificate, its default status is Active.

If the UserName field is not specified, the user name is determined implicitly based on the AWS access key ID used to sign the request. Because this action works for access keys under the AWS account, you can use this action to manage root credentials even if the AWS account has no associated users.

Because the body of a X.509 certificate can be large, you should use POST rather than GET when calling UploadSigningCertificate. For information about setting up signatures and authorization through the API, go to Signing AWS API Requests in the AWS General Reference. For general information about using the Query API with IAM, go to Making Query Requests in the Using IAMguide. " - } - }, - "shapes":{ - "AccessKey":{ - "type":"structure", - "required":[ - "UserName", - "AccessKeyId", - "Status", - "SecretAccessKey" - ], - "members":{ - "UserName":{ - "shape":"userNameType", - "documentation":"

The name of the IAM user that the access key is associated with.

" - }, - "AccessKeyId":{ - "shape":"accessKeyIdType", - "documentation":"

The ID for this access key.

" - }, - "Status":{ - "shape":"statusType", - "documentation":"

The status of the access key. Active means the key is valid for API calls, while Inactive means it is not.

" - }, - "SecretAccessKey":{ - "shape":"accessKeySecretType", - "documentation":"

The secret key used to sign requests.

" - }, - "CreateDate":{ - "shape":"dateType", - "documentation":"

The date when the access key was created.

" - } - }, - "documentation":"

Contains information about an AWS access key.

This data type is used as a response element in the CreateAccessKey and ListAccessKeys actions.

The SecretAccessKey value is returned only in response to CreateAccessKey. You can get a secret access key only when you first create an access key; you cannot recover the secret access key later. If you lose a secret access key, you must create a new access key. " - }, - "AccessKeyMetadata":{ - "type":"structure", - "members":{ - "UserName":{ - "shape":"userNameType", - "documentation":"

The name of the IAM user that the key is associated with.

" - }, - "AccessKeyId":{ - "shape":"accessKeyIdType", - "documentation":"

The ID for this access key.

" - }, - "Status":{ - "shape":"statusType", - "documentation":"

The status of the access key. Active means the key is valid for API calls; Inactive means it is not.

" - }, - "CreateDate":{ - "shape":"dateType", - "documentation":"

The date when the access key was created.

" - } - }, - "documentation":"

Contains information about an AWS access key, without its secret key.

This data type is used as a response element in the ListAccessKeys action.

" - }, - "AddClientIDToOpenIDConnectProviderRequest":{ - "type":"structure", - "required":[ - "OpenIDConnectProviderArn", - "ClientID" - ], - "members":{ - "OpenIDConnectProviderArn":{ - "shape":"arnType", - "documentation":"

The Amazon Resource Name (ARN) of the IAM OpenID Connect (OIDC) provider to add the client ID to. You can get a list of OIDC provider ARNs by using the ListOpenIDConnectProviders action.

" - }, - "ClientID":{ - "shape":"clientIDType", - "documentation":"

The client ID (also known as audience) to add to the IAM OpenID Connect provider.

" - } - } - }, - "AddRoleToInstanceProfileRequest":{ - "type":"structure", - "required":[ - "InstanceProfileName", - "RoleName" - ], - "members":{ - "InstanceProfileName":{ - "shape":"instanceProfileNameType", - "documentation":"

The name of the instance profile to update.

" - }, - "RoleName":{ - "shape":"roleNameType", - "documentation":"

The name of the role to add.

" - } - } - }, - "AddUserToGroupRequest":{ - "type":"structure", - "required":[ - "GroupName", - "UserName" - ], - "members":{ - "GroupName":{ - "shape":"groupNameType", - "documentation":"

The name of the group to update.

" - }, - "UserName":{ - "shape":"existingUserNameType", - "documentation":"

The name of the user to add.

" - } - } - }, - "BootstrapDatum":{ - "type":"blob", - "sensitive":true - }, - "ChangePasswordRequest":{ - "type":"structure", - "required":[ - "OldPassword", - "NewPassword" - ], - "members":{ - "OldPassword":{ - "shape":"passwordType", - "documentation":"

The IAM user's current password.

" - }, - "NewPassword":{ - "shape":"passwordType", - "documentation":"

The new password. The new password must conform to the AWS account's password policy, if one exists.

" - } - } - }, - "CreateAccessKeyRequest":{ - "type":"structure", - "members":{ - "UserName":{ - "shape":"existingUserNameType", - "documentation":"

The user name that the new key will belong to.

" - } - } - }, - "CreateAccessKeyResponse":{ - "type":"structure", - "required":["AccessKey"], - "members":{ - "AccessKey":{ - "shape":"AccessKey", - "documentation":"

Information about the access key.

" - } - }, - "documentation":"

Contains the result of a successful invocation of the CreateAccessKey action.

" - }, - "CreateAccountAliasRequest":{ - "type":"structure", - "required":["AccountAlias"], - "members":{ - "AccountAlias":{ - "shape":"accountAliasType", - "documentation":"

The name of the account alias to create.

" - } - } - }, - "CreateGroupRequest":{ - "type":"structure", - "required":["GroupName"], - "members":{ - "Path":{ - "shape":"pathType", - "documentation":"

The path to the group. For more information about paths, see IAM Identifiers in the Using IAM guide.

This parameter is optional. If it is not included, it defaults to a slash (/).

" - }, - "GroupName":{ - "shape":"groupNameType", - "documentation":"

The name of the group to create. Do not include the path in this value.

" - } - } - }, - "CreateGroupResponse":{ - "type":"structure", - "required":["Group"], - "members":{ - "Group":{ - "shape":"Group", - "documentation":"

Information about the group.

" - } - }, - "documentation":"

Contains the result of a successful invocation of the CreateGroup action.

" - }, - "CreateInstanceProfileRequest":{ - "type":"structure", - "required":["InstanceProfileName"], - "members":{ - "InstanceProfileName":{ - "shape":"instanceProfileNameType", - "documentation":"

The name of the instance profile to create.

" - }, - "Path":{ - "shape":"pathType", - "documentation":"

The path to the instance profile. For more information about paths, see IAM Identifiers in the Using IAM guide.

This parameter is optional. If it is not included, it defaults to a slash (/).

" - } - } - }, - "CreateInstanceProfileResponse":{ - "type":"structure", - "required":["InstanceProfile"], - "members":{ - "InstanceProfile":{ - "shape":"InstanceProfile", - "documentation":"

Information about the instance profile.

" - } - }, - "documentation":"

Contains the result of a successful invocation of the CreateInstanceProfileaction.

" - }, - "CreateLoginProfileRequest":{ - "type":"structure", - "required":[ - "UserName", - "Password" - ], - "members":{ - "UserName":{ - "shape":"userNameType", - "documentation":"

The name of the user to create a password for.

" - }, - "Password":{ - "shape":"passwordType", - "documentation":"

The new password for the user.

" - }, - "PasswordResetRequired":{ - "shape":"booleanType", - "documentation":"

Specifies whether the user is required to set a new password on next sign-in.

" - } - } - }, - "CreateLoginProfileResponse":{ - "type":"structure", - "required":["LoginProfile"], - "members":{ - "LoginProfile":{ - "shape":"LoginProfile", - "documentation":"

The user name and password create date.

" - } - }, - "documentation":"

Contains the result of a successful invocation of the CreateLoginProfile action.

" - }, - "CreateOpenIDConnectProviderRequest":{ - "type":"structure", - "required":[ - "Url", - "ThumbprintList" - ], - "members":{ - "Url":{ - "shape":"OpenIDConnectProviderUrlType", - "documentation":"

The URL of the identity provider. The URL must begin with \"https://\" and should correspond to the iss claim in the provider's OpenID Connect ID tokens. Per the OIDC standard, path components are allowed but query parameters are not. Typically the URL consists of only a host name, like \"https://server.example.org\" or \"https://example.com\".

You cannot register the same provider multiple times in a single AWS account. If you try to submit a URL that has already been used for an OpenID Connect provider in the AWS account, you will get an error.

" - }, - "ClientIDList":{ - "shape":"clientIDListType", - "documentation":"

A list of client IDs (also known as audiences). When a mobile or web app registers with an OpenID Connect provider, they establish a value that identifies the application. (This is the value that's sent as the client_id parameter on OAuth requests.)

You can register multiple client IDs with the same provider. For example, you might have multiple applications that use the same OIDC provider. You cannot register more than 100 client IDs with a single IAM OIDC provider.

There is no defined format for a client ID. The CreateOpenIDConnectProviderRequest action accepts client IDs up to 255 characters long.

" - }, - "ThumbprintList":{ - "shape":"thumbprintListType", - "documentation":"

A list of server certificate thumbprints for the OpenID Connect (OIDC) identity provider's server certificate(s). Typically this list includes only one entry. However, IAM lets you have up to five thumbprints for an OIDC provider. This lets you maintain multiple thumbprints if the identity provider is rotating certificates.

The server certificate thumbprint is the hex-encoded SHA-1 hash value of the X.509 certificate used by the domain where the OpenID Connect provider makes its keys available. It is always a 40-character string.

You must provide at least one thumbprint when creating an IAM OIDC provider. For example, if the OIDC provider is server.example.com and the provider stores its keys at \"https://keys.server.example.com/openid-connect\", the thumbprint string would be the hex-encoded SHA-1 hash value of the certificate used by https://keys.server.example.com.

" - } - } - }, - "CreateOpenIDConnectProviderResponse":{ - "type":"structure", - "members":{ - "OpenIDConnectProviderArn":{ - "shape":"arnType", - "documentation":"

The Amazon Resource Name (ARN) of the IAM OpenID Connect provider that was created. For more information, see OpenIDConnectProviderListEntry.

" - } - }, - "documentation":"

Contains the result of a successful invocation of the CreateOpenIDConnectProvider action.

" - }, - "CreateRoleRequest":{ - "type":"structure", - "required":[ - "RoleName", - "AssumeRolePolicyDocument" - ], - "members":{ - "Path":{ - "shape":"pathType", - "documentation":"

The path to the role. For more information about paths, see IAM Identifiers in the Using IAM guide.

This parameter is optional. If it is not included, it defaults to a slash (/).

" - }, - "RoleName":{ - "shape":"roleNameType", - "documentation":"

The name of the role to create.

" - }, - "AssumeRolePolicyDocument":{ - "shape":"policyDocumentType", - "documentation":"

The policy that grants an entity permission to assume the role.

" - } - } - }, - "CreateRoleResponse":{ - "type":"structure", - "required":["Role"], - "members":{ - "Role":{ - "shape":"Role", - "documentation":"

Information about the role.

" - } - }, - "documentation":"

Contains the result of a successful invocation of the CreateRole action.

" - }, - "CreateSAMLProviderRequest":{ - "type":"structure", - "required":[ - "SAMLMetadataDocument", - "Name" - ], - "members":{ - "SAMLMetadataDocument":{ - "shape":"SAMLMetadataDocumentType", - "documentation":"

An XML document generated by an identity provider (IdP) that supports SAML 2.0. The document includes the issuer's name, expiration information, and keys that can be used to validate the SAML authentication response (assertions) that are received from the IdP. You must generate the metadata document using the identity management software that is used as your organization's IdP.

For more information, see Creating Temporary Security Credentials for SAML Federation in the Using Temporary Security Credentials guide.

" - }, - "Name":{ - "shape":"SAMLProviderNameType", - "documentation":"

The name of the provider to create.

" - } - } - }, - "CreateSAMLProviderResponse":{ - "type":"structure", - "members":{ - "SAMLProviderArn":{ - "shape":"arnType", - "documentation":"

The Amazon Resource Name (ARN) of the SAML provider.

" - } - }, - "documentation":"

Contains the result of a successful invocation of the CreateSAMLProvider action.

" - }, - "CreateUserRequest":{ - "type":"structure", - "required":["UserName"], - "members":{ - "Path":{ - "shape":"pathType", - "documentation":"

The path for the user name. For more information about paths, see IAM Identifiers in the Using IAM guide.

This parameter is optional. If it is not included, it defaults to a slash (/).

" - }, - "UserName":{ - "shape":"userNameType", - "documentation":"

The name of the user to create.

" - } - } - }, - "CreateUserResponse":{ - "type":"structure", - "members":{ - "User":{ - "shape":"User", - "documentation":"

Information about the user.

" - } - }, - "documentation":"

Contains the result of a successful invocation of the CreateUser action.

" - }, - "CreateVirtualMFADeviceRequest":{ - "type":"structure", - "required":["VirtualMFADeviceName"], - "members":{ - "Path":{ - "shape":"pathType", - "documentation":"

The path for the virtual MFA device. For more information about paths, see IAM Identifiers in the Using IAM guide.

This parameter is optional. If it is not included, it defaults to a slash (/).

" - }, - "VirtualMFADeviceName":{ - "shape":"virtualMFADeviceName", - "documentation":"

The name of the virtual MFA device. Use with path to uniquely identify a virtual MFA device.

" - } - } - }, - "CreateVirtualMFADeviceResponse":{ - "type":"structure", - "required":["VirtualMFADevice"], - "members":{ - "VirtualMFADevice":{ - "shape":"VirtualMFADevice", - "documentation":"

A newly created virtual MFA device.

" - } - }, - "documentation":"

Contains the result of a successful invocation of the CreateVirtualMFADevice action.

" - }, - "CredentialReportExpiredException":{ - "type":"structure", - "members":{ - "message":{"shape":"credentialReportExpiredExceptionMessage"} - }, - "error":{ - "code":"ReportExpired", - "httpStatusCode":410, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because the most recent credential report has expired. To generate a new credential report, use GenerateCredentialReport. For more information about credential report expiration, see Getting Credential Reports in the Using IAM guide.

" - }, - "CredentialReportNotPresentException":{ - "type":"structure", - "members":{ - "message":{"shape":"credentialReportNotPresentExceptionMessage"} - }, - "error":{ - "code":"ReportNotPresent", - "httpStatusCode":410, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because the credential report does not exist. To generate a credential report, use GenerateCredentialReport.

" - }, - "CredentialReportNotReadyException":{ - "type":"structure", - "members":{ - "message":{"shape":"credentialReportNotReadyExceptionMessage"} - }, - "error":{ - "code":"ReportInProgress", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because the credential report is still being generated.

" - }, - "DeactivateMFADeviceRequest":{ - "type":"structure", - "required":[ - "UserName", - "SerialNumber" - ], - "members":{ - "UserName":{ - "shape":"existingUserNameType", - "documentation":"

The name of the user whose MFA device you want to deactivate.

" - }, - "SerialNumber":{ - "shape":"serialNumberType", - "documentation":"

The serial number that uniquely identifies the MFA device. For virtual MFA devices, the serial number is the device ARN.

" - } - } - }, - "DeleteAccessKeyRequest":{ - "type":"structure", - "required":["AccessKeyId"], - "members":{ - "UserName":{ - "shape":"existingUserNameType", - "documentation":"

The name of the user whose key you want to delete.

" - }, - "AccessKeyId":{ - "shape":"accessKeyIdType", - "documentation":"

The access key ID for the access key ID and secret access key you want to delete.

" - } - } - }, - "DeleteAccountAliasRequest":{ - "type":"structure", - "required":["AccountAlias"], - "members":{ - "AccountAlias":{ - "shape":"accountAliasType", - "documentation":"

The name of the account alias to delete.

" - } - } - }, - "DeleteConflictException":{ - "type":"structure", - "members":{ - "message":{"shape":"deleteConflictMessage"} - }, - "error":{ - "code":"DeleteConflict", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it attempted to delete a resource that has attached subordinate entities. The error message describes these entities.

" - }, - "DeleteGroupPolicyRequest":{ - "type":"structure", - "required":[ - "GroupName", - "PolicyName" - ], - "members":{ - "GroupName":{ - "shape":"groupNameType", - "documentation":"

The name of the group the policy is associated with.

" - }, - "PolicyName":{ - "shape":"policyNameType", - "documentation":"

The name of the policy document to delete.

" - } - } - }, - "DeleteGroupRequest":{ - "type":"structure", - "required":["GroupName"], - "members":{ - "GroupName":{ - "shape":"groupNameType", - "documentation":"

The name of the group to delete.

" - } - } - }, - "DeleteInstanceProfileRequest":{ - "type":"structure", - "required":["InstanceProfileName"], - "members":{ - "InstanceProfileName":{ - "shape":"instanceProfileNameType", - "documentation":"

The name of the instance profile to delete.

" - } - } - }, - "DeleteLoginProfileRequest":{ - "type":"structure", - "required":["UserName"], - "members":{ - "UserName":{ - "shape":"userNameType", - "documentation":"

The name of the user whose password you want to delete.

" - } - } - }, - "DeleteOpenIDConnectProviderRequest":{ - "type":"structure", - "required":["OpenIDConnectProviderArn"], - "members":{ - "OpenIDConnectProviderArn":{ - "shape":"arnType", - "documentation":"

The Amazon Resource Name (ARN) of the IAM OpenID Connect provider to delete. You can get a list of OpenID Connect provider ARNs by using the ListOpenIDConnectProviders action.

" - } - } - }, - "DeleteRolePolicyRequest":{ - "type":"structure", - "required":[ - "RoleName", - "PolicyName" - ], - "members":{ - "RoleName":{ - "shape":"roleNameType", - "documentation":"

The name of the role the associated with the policy.

" - }, - "PolicyName":{ - "shape":"policyNameType", - "documentation":"

The name of the policy document to delete.

" - } - } - }, - "DeleteRoleRequest":{ - "type":"structure", - "required":["RoleName"], - "members":{ - "RoleName":{ - "shape":"roleNameType", - "documentation":"

The name of the role to delete.

" - } - } - }, - "DeleteSAMLProviderRequest":{ - "type":"structure", - "required":["SAMLProviderArn"], - "members":{ - "SAMLProviderArn":{ - "shape":"arnType", - "documentation":"

The Amazon Resource Name (ARN) of the SAML provider to delete.

" - } - } - }, - "DeleteServerCertificateRequest":{ - "type":"structure", - "required":["ServerCertificateName"], - "members":{ - "ServerCertificateName":{ - "shape":"serverCertificateNameType", - "documentation":"

The name of the server certificate you want to delete.

" - } - } - }, - "DeleteSigningCertificateRequest":{ - "type":"structure", - "required":["CertificateId"], - "members":{ - "UserName":{ - "shape":"existingUserNameType", - "documentation":"

The name of the user the signing certificate belongs to.

" - }, - "CertificateId":{ - "shape":"certificateIdType", - "documentation":"

The ID of the signing certificate to delete.

" - } - } - }, - "DeleteUserPolicyRequest":{ - "type":"structure", - "required":[ - "UserName", - "PolicyName" - ], - "members":{ - "UserName":{ - "shape":"existingUserNameType", - "documentation":"

The name of the user the policy is associated with.

" - }, - "PolicyName":{ - "shape":"policyNameType", - "documentation":"

The name of the policy document to delete.

" - } - } - }, - "DeleteUserRequest":{ - "type":"structure", - "required":["UserName"], - "members":{ - "UserName":{ - "shape":"existingUserNameType", - "documentation":"

The name of the user to delete.

" - } - } - }, - "DeleteVirtualMFADeviceRequest":{ - "type":"structure", - "required":["SerialNumber"], - "members":{ - "SerialNumber":{ - "shape":"serialNumberType", - "documentation":"

The serial number that uniquely identifies the MFA device. For virtual MFA devices, the serial number is the same as the ARN.

" - } - } - }, - "DuplicateCertificateException":{ - "type":"structure", - "members":{ - "message":{"shape":"duplicateCertificateMessage"} - }, - "error":{ - "code":"DuplicateCertificate", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because the same certificate is associated to another user under the account.

" - }, - "EnableMFADeviceRequest":{ - "type":"structure", - "required":[ - "UserName", - "SerialNumber", - "AuthenticationCode1", - "AuthenticationCode2" - ], - "members":{ - "UserName":{ - "shape":"existingUserNameType", - "documentation":"

The name of the user for whom you want to enable the MFA device.

" - }, - "SerialNumber":{ - "shape":"serialNumberType", - "documentation":"

The serial number that uniquely identifies the MFA device. For virtual MFA devices, the serial number is the device ARN.

" - }, - "AuthenticationCode1":{ - "shape":"authenticationCodeType", - "documentation":"

An authentication code emitted by the device.

" - }, - "AuthenticationCode2":{ - "shape":"authenticationCodeType", - "documentation":"

A subsequent authentication code emitted by the device.

" - } - } - }, - "EntityAlreadyExistsException":{ - "type":"structure", - "members":{ - "message":{"shape":"entityAlreadyExistsMessage"} - }, - "error":{ - "code":"EntityAlreadyExists", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it attempted to create a resource that already exists.

" - }, - "EntityTemporarilyUnmodifiableException":{ - "type":"structure", - "members":{ - "message":{"shape":"entityTemporarilyUnmodifiableMessage"} - }, - "error":{ - "code":"EntityTemporarilyUnmodifiable", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it referenced an entity that is temporarily unmodifiable, such as a user name that was deleted and then recreated. The error indicates that the request is likely to succeed if you try again after waiting several minutes. The error message describes the entity.

" - }, - "EntityType":{ - "type":"string", - "enum":[ - "User", - "Role", - "Group" - ] - }, - "GenerateCredentialReportResponse":{ - "type":"structure", - "members":{ - "State":{ - "shape":"ReportStateType", - "documentation":"

Information about the state of a credential report.

" - }, - "Description":{ - "shape":"ReportStateDescriptionType", - "documentation":"

Information about the credential report.

" - } - }, - "documentation":"

Contains the result of a successful invocation of the GenerateCredentialReport action.

" - }, - "GetAccountAuthorizationDetailsRequest":{ - "type":"structure", - "members":{ - "Filter":{ - "shape":"entityListType", - "documentation":"

A list of entity types (user, group, or role) for filtering the results.

" - }, - "MaxItems":{ - "shape":"maxItemsType", - "documentation":"

Use this only when paginating results to indicate the maximum number of items you want in the response. If there are additional items beyond the maximum you specify, the IsTruncated response element is true. This parameter is optional. If you do not include it, it defaults to 100.

" - }, - "Marker":{ - "shape":"markerType", - "documentation":"

Use this only when paginating results, and only in a subsequent request after you've received a response where the results are truncated. Set it to the value of the Marker element in the response you just received.

" - } - } - }, - "GetAccountAuthorizationDetailsResponse":{ - "type":"structure", - "members":{ - "UserDetailList":{ - "shape":"userDetailListType", - "documentation":"

A list containing information about IAM users.

" - }, - "GroupDetailList":{ - "shape":"groupDetailListType", - "documentation":"

A list containing information about IAM groups.

" - }, - "RoleDetailList":{ - "shape":"roleDetailListType", - "documentation":"

A list containing information about IAM roles.

" - }, - "IsTruncated":{ - "shape":"booleanType", - "documentation":"

A flag that indicates whether there are more items to return. If your results were truncated, you can make a subsequent pagination request using the Marker request parameter to retrieve more items.

" - }, - "Marker":{ - "shape":"markerType", - "documentation":"

If IsTruncated is true, this element is present and contains the value to use for the Marker parameter in a subsequent pagination request.

" - } - }, - "documentation":"

Contains the result of a successful invocation of the GetAccountAuthorizationDetails action.

" - }, - "GetAccountPasswordPolicyResponse":{ - "type":"structure", - "required":["PasswordPolicy"], - "members":{ - "PasswordPolicy":{"shape":"PasswordPolicy"} - }, - "documentation":"

Contains the result of a successful invocation of the GetAccountPasswordPolicy action.

" - }, - "GetAccountSummaryResponse":{ - "type":"structure", - "members":{ - "SummaryMap":{ - "shape":"summaryMapType", - "documentation":"

A set of key value pairs containing account-level information.

SummaryMap contains the following keys:

" - } - }, - "documentation":"

Contains the result of a successful invocation of the GetAccountSummary action.

" - }, - "GetCredentialReportResponse":{ - "type":"structure", - "members":{ - "Content":{ - "shape":"ReportContentType", - "documentation":"

Contains the credential report. The report is Base64-encoded.

" - }, - "ReportFormat":{ - "shape":"ReportFormatType", - "documentation":"

The format (MIME type) of the credential report.

" - }, - "GeneratedTime":{ - "shape":"dateType", - "documentation":"

The date and time when the credential report was created, in ISO 8601 date-time format.

" - } - }, - "documentation":"

Contains the result of a successful invocation of the GetCredentialReport action.

" - }, - "GetGroupPolicyRequest":{ - "type":"structure", - "required":[ - "GroupName", - "PolicyName" - ], - "members":{ - "GroupName":{ - "shape":"groupNameType", - "documentation":"

The name of the group the policy is associated with.

" - }, - "PolicyName":{ - "shape":"policyNameType", - "documentation":"

The name of the policy document to get.

" - } - } - }, - "GetGroupPolicyResponse":{ - "type":"structure", - "required":[ - "GroupName", - "PolicyName", - "PolicyDocument" - ], - "members":{ - "GroupName":{ - "shape":"groupNameType", - "documentation":"

The group the policy is associated with.

" - }, - "PolicyName":{ - "shape":"policyNameType", - "documentation":"

The name of the policy.

" - }, - "PolicyDocument":{ - "shape":"policyDocumentType", - "documentation":"

The policy document.

" - } - }, - "documentation":"

Contains the result of a successful invocation of the GetGroupPolicy action.

" - }, - "GetGroupRequest":{ - "type":"structure", - "required":["GroupName"], - "members":{ - "GroupName":{ - "shape":"groupNameType", - "documentation":"

The name of the group.

" - }, - "Marker":{ - "shape":"markerType", - "documentation":"

Use this only when paginating results, and only in a subsequent request after you've received a response where the results are truncated. Set it to the value of the Marker element in the response you just received.

" - }, - "MaxItems":{ - "shape":"maxItemsType", - "documentation":"

Use this only when paginating results to indicate the maximum number of groups you want in the response. If there are additional groups beyond the maximum you specify, the IsTruncated response element is true. This parameter is optional. If you do not include it, it defaults to 100.

" - } - } - }, - "GetGroupResponse":{ - "type":"structure", - "required":[ - "Group", - "Users" - ], - "members":{ - "Group":{ - "shape":"Group", - "documentation":"

Information about the group.

" - }, - "Users":{ - "shape":"userListType", - "documentation":"

A list of users in the group.

" - }, - "IsTruncated":{ - "shape":"booleanType", - "documentation":"

A flag that indicates whether there are more user names to list. If your results were truncated, you can make a subsequent pagination request using the Marker request parameter to retrieve more user names in the list.

" - }, - "Marker":{ - "shape":"markerType", - "documentation":"

If IsTruncated is true, then this element is present and contains the value to use for the Marker parameter in a subsequent pagination request.

" - } - }, - "documentation":"

Contains the result of a successful invocation of the GetGroup action.

" - }, - "GetInstanceProfileRequest":{ - "type":"structure", - "required":["InstanceProfileName"], - "members":{ - "InstanceProfileName":{ - "shape":"instanceProfileNameType", - "documentation":"

The name of the instance profile to get information about.

" - } - } - }, - "GetInstanceProfileResponse":{ - "type":"structure", - "required":["InstanceProfile"], - "members":{ - "InstanceProfile":{ - "shape":"InstanceProfile", - "documentation":"

Information about the instance profile.

" - } - }, - "documentation":"

Contains the result of a successful invocation of the GetInstanceProfile action.

" - }, - "GetLoginProfileRequest":{ - "type":"structure", - "required":["UserName"], - "members":{ - "UserName":{ - "shape":"userNameType", - "documentation":"

The name of the user whose login profile you want to retrieve.

" - } - } - }, - "GetLoginProfileResponse":{ - "type":"structure", - "required":["LoginProfile"], - "members":{ - "LoginProfile":{ - "shape":"LoginProfile", - "documentation":"

The user name and password create date for the user.

" - } - }, - "documentation":"

Contains the result of a successful invocation of the GetLoginProfile action.

" - }, - "GetOpenIDConnectProviderRequest":{ - "type":"structure", - "required":["OpenIDConnectProviderArn"], - "members":{ - "OpenIDConnectProviderArn":{ - "shape":"arnType", - "documentation":"

The Amazon Resource Name (ARN) of the IAM OpenID Connect (OIDC) provider to get information for. You can get a list of OIDC provider ARNs by using the ListOpenIDConnectProviders action.

" - } - } - }, - "GetOpenIDConnectProviderResponse":{ - "type":"structure", - "members":{ - "Url":{ - "shape":"OpenIDConnectProviderUrlType", - "documentation":"

The URL that the IAM OpenID Connect provider is associated with. For more information, see CreateOpenIDConnectProvider.

" - }, - "ClientIDList":{ - "shape":"clientIDListType", - "documentation":"

A list of client IDs (also known as audiences) that are associated with the specified IAM OpenID Connect provider. For more information, see CreateOpenIDConnectProvider.

" - }, - "ThumbprintList":{ - "shape":"thumbprintListType", - "documentation":"

A list of certificate thumbprints that are associated with the specified IAM OpenID Connect provider. For more information, see CreateOpenIDConnectProvider.

" - }, - "CreateDate":{ - "shape":"dateType", - "documentation":"

The date and time when the IAM OpenID Connect provider entity was created in the AWS account.

" - } - }, - "documentation":"

Contains the result of a successful invocation of the GetOpenIDConnectProvider action.

" - }, - "GetRolePolicyRequest":{ - "type":"structure", - "required":[ - "RoleName", - "PolicyName" - ], - "members":{ - "RoleName":{ - "shape":"roleNameType", - "documentation":"

The name of the role associated with the policy.

" - }, - "PolicyName":{ - "shape":"policyNameType", - "documentation":"

The name of the policy document to get.

" - } - } - }, - "GetRolePolicyResponse":{ - "type":"structure", - "required":[ - "RoleName", - "PolicyName", - "PolicyDocument" - ], - "members":{ - "RoleName":{ - "shape":"roleNameType", - "documentation":"

The role the policy is associated with.

" - }, - "PolicyName":{ - "shape":"policyNameType", - "documentation":"

The name of the policy.

" - }, - "PolicyDocument":{ - "shape":"policyDocumentType", - "documentation":"

The policy document.

" - } - }, - "documentation":"

Contains the result of a successful invocation of the GetRolePolicy action.

" - }, - "GetRoleRequest":{ - "type":"structure", - "required":["RoleName"], - "members":{ - "RoleName":{ - "shape":"roleNameType", - "documentation":"

The name of the role to get information about.

" - } - } - }, - "GetRoleResponse":{ - "type":"structure", - "required":["Role"], - "members":{ - "Role":{ - "shape":"Role", - "documentation":"

Information about the role.

" - } - }, - "documentation":"

Contains the result of a successful invocation of the GetRole action.

" - }, - "GetSAMLProviderRequest":{ - "type":"structure", - "required":["SAMLProviderArn"], - "members":{ - "SAMLProviderArn":{ - "shape":"arnType", - "documentation":"

The Amazon Resource Name (ARN) of the SAML provider to get information about.

" - } - } - }, - "GetSAMLProviderResponse":{ - "type":"structure", - "members":{ - "SAMLMetadataDocument":{ - "shape":"SAMLMetadataDocumentType", - "documentation":"

The XML metadata document that includes information about an identity provider.

" - }, - "CreateDate":{ - "shape":"dateType", - "documentation":"

The date and time when the SAML provider was created.

" - }, - "ValidUntil":{ - "shape":"dateType", - "documentation":"

The expiration date and time for the SAML provider.

" - } - }, - "documentation":"

Contains the result of a successful invocation of the GetSAMLProvider action.

" - }, - "GetServerCertificateRequest":{ - "type":"structure", - "required":["ServerCertificateName"], - "members":{ - "ServerCertificateName":{ - "shape":"serverCertificateNameType", - "documentation":"

The name of the server certificate you want to retrieve information about.

" - } - } - }, - "GetServerCertificateResponse":{ - "type":"structure", - "required":["ServerCertificate"], - "members":{ - "ServerCertificate":{ - "shape":"ServerCertificate", - "documentation":"

Information about the server certificate.

" - } - }, - "documentation":"

Contains the result of a successful invocation of the GetServerCertificate action.

" - }, - "GetUserPolicyRequest":{ - "type":"structure", - "required":[ - "UserName", - "PolicyName" - ], - "members":{ - "UserName":{ - "shape":"existingUserNameType", - "documentation":"

The name of the user who the policy is associated with.

" - }, - "PolicyName":{ - "shape":"policyNameType", - "documentation":"

The name of the policy document to get.

" - } - } - }, - "GetUserPolicyResponse":{ - "type":"structure", - "required":[ - "UserName", - "PolicyName", - "PolicyDocument" - ], - "members":{ - "UserName":{ - "shape":"existingUserNameType", - "documentation":"

The user the policy is associated with.

" - }, - "PolicyName":{ - "shape":"policyNameType", - "documentation":"

The name of the policy.

" - }, - "PolicyDocument":{ - "shape":"policyDocumentType", - "documentation":"

The policy document.

" - } - }, - "documentation":"

Contains the result of a successful invocation of the GetUserPolicy action.

" - }, - "GetUserRequest":{ - "type":"structure", - "members":{ - "UserName":{ - "shape":"existingUserNameType", - "documentation":"

The name of the user to get information about.

This parameter is optional. If it is not included, it defaults to the user making the request.

" - } - } - }, - "GetUserResponse":{ - "type":"structure", - "required":["User"], - "members":{ - "User":{ - "shape":"User", - "documentation":"

Information about the user.

" - } - }, - "documentation":"

Contains the result of a successful invocation of the GetUser action.

" - }, - "Group":{ - "type":"structure", - "required":[ - "Path", - "GroupName", - "GroupId", - "Arn", - "CreateDate" - ], - "members":{ - "Path":{ - "shape":"pathType", - "documentation":"

The path to the group. For more information about paths, see IAM Identifiers in the Using IAM guide.

" - }, - "GroupName":{ - "shape":"groupNameType", - "documentation":"

The friendly name that identifies the group.

" - }, - "GroupId":{ - "shape":"idType", - "documentation":"

The stable and unique string identifying the group. For more information about IDs, see IAM Identifiers in the Using IAM guide.

" - }, - "Arn":{ - "shape":"arnType", - "documentation":"

The Amazon Resource Name (ARN) specifying the group. For more information about ARNs and how to use them in policies, see IAM Identifiers in the Using IAM guide.

" - }, - "CreateDate":{ - "shape":"dateType", - "documentation":"

The date and time, in ISO 8601 date-time format, when the group was created.

" - } - }, - "documentation":"

Contains information about an IAM group entity.

This data type is used as a response element in the following actions:

" - }, - "GroupDetail":{ - "type":"structure", - "members":{ - "Path":{ - "shape":"pathType", - "documentation":"

The path to the group. For more information about paths, see IAM Identifiers in the Using IAM guide.

" - }, - "GroupName":{ - "shape":"groupNameType", - "documentation":"

The friendly name that identifies the group.

" - }, - "GroupId":{ - "shape":"idType", - "documentation":"

The stable and unique string identifying the group. For more information about IDs, see IAM Identifiers in the Using IAM guide.

" - }, - "Arn":{"shape":"arnType"}, - "CreateDate":{ - "shape":"dateType", - "documentation":"

The date and time, in ISO 8601 date-time format, when the group was created.

" - }, - "GroupPolicyList":{ - "shape":"policyDetailListType", - "documentation":"

A list of the policies attached to the group.

" - } - }, - "documentation":"

Contains information about an IAM group, including all of the policies attached to the group.

The data type is used as a response element in the GetAccountAuthorizationDetails action.

" - }, - "InstanceProfile":{ - "type":"structure", - "required":[ - "Path", - "InstanceProfileName", - "InstanceProfileId", - "Arn", - "CreateDate", - "Roles" - ], - "members":{ - "Path":{ - "shape":"pathType", - "documentation":"

The path to the instance profile. For more information about paths, see IAM Identifiers in the Using IAM guide.

" - }, - "InstanceProfileName":{ - "shape":"instanceProfileNameType", - "documentation":"

The name identifying the instance profile.

" - }, - "InstanceProfileId":{ - "shape":"idType", - "documentation":"

The stable and unique string identifying the instance profile. For more information about IDs, see IAM Identifiers in the Using IAM guide.

" - }, - "Arn":{ - "shape":"arnType", - "documentation":"

The Amazon Resource Name (ARN) specifying the instance profile. For more information about ARNs and how to use them in policies, see IAM Identifiers in the Using IAM guide.

" - }, - "CreateDate":{ - "shape":"dateType", - "documentation":"

The date when the instance profile was created.

" - }, - "Roles":{ - "shape":"roleListType", - "documentation":"

The role associated with the instance profile.

" - } - }, - "documentation":"

Contains information about an instance profile.

This data type is used as a response element in the following actions:

" - }, - "InvalidAuthenticationCodeException":{ - "type":"structure", - "members":{ - "message":{"shape":"invalidAuthenticationCodeMessage"} - }, - "error":{ - "code":"InvalidAuthenticationCode", - "httpStatusCode":403, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because the authentication code was not recognized. The error message describes the specific error.

" - }, - "InvalidCertificateException":{ - "type":"structure", - "members":{ - "message":{"shape":"invalidCertificateMessage"} - }, - "error":{ - "code":"InvalidCertificate", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because the certificate is invalid.

" - }, - "InvalidInputException":{ - "type":"structure", - "members":{ - "message":{"shape":"invalidInputMessage"} - }, - "error":{ - "code":"InvalidInput", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because an invalid or out-of-range value was supplied for an input parameter.

" - }, - "InvalidUserTypeException":{ - "type":"structure", - "members":{ - "message":{"shape":"invalidUserTypeMessage"} - }, - "error":{ - "code":"InvalidUserType", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because the type of user for the transaction was incorrect.

" - }, - "KeyPairMismatchException":{ - "type":"structure", - "members":{ - "message":{"shape":"keyPairMismatchMessage"} - }, - "error":{ - "code":"KeyPairMismatch", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because the public key certificate and the private key do not match.

" - }, - "LimitExceededException":{ - "type":"structure", - "members":{ - "message":{"shape":"limitExceededMessage"} - }, - "error":{ - "code":"LimitExceeded", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it attempted to create resources beyond the current AWS account limits. The error message describes the limit exceeded.

" - }, - "ListAccessKeysRequest":{ - "type":"structure", - "members":{ - "UserName":{ - "shape":"existingUserNameType", - "documentation":"

The name of the user.

" - }, - "Marker":{ - "shape":"markerType", - "documentation":"

Use this parameter only when paginating results, and only in a subsequent request after you've received a response where the results are truncated. Set it to the value of the Marker element in the response you just received.

" - }, - "MaxItems":{ - "shape":"maxItemsType", - "documentation":"

Use this parameter only when paginating results to indicate the maximum number of keys you want in the response. If there are additional keys beyond the maximum you specify, the IsTruncated response element is true. This parameter is optional. If you do not include it, it defaults to 100.

" - } - } - }, - "ListAccessKeysResponse":{ - "type":"structure", - "required":["AccessKeyMetadata"], - "members":{ - "AccessKeyMetadata":{ - "shape":"accessKeyMetadataListType", - "documentation":"

A list of access key metadata.

" - }, - "IsTruncated":{ - "shape":"booleanType", - "documentation":"

A flag that indicates whether there are more keys to list. If your results were truncated, you can make a subsequent pagination request using the Marker request parameter to retrieve more keys in the list.

" - }, - "Marker":{ - "shape":"markerType", - "documentation":"

If IsTruncated is true, this element is present and contains the value to use for the Marker parameter in a subsequent pagination request.

" - } - }, - "documentation":"

Contains the result of a successful invocation of the ListAccessKeys action.

" - }, - "ListAccountAliasesRequest":{ - "type":"structure", - "members":{ - "Marker":{ - "shape":"markerType", - "documentation":"

Use this only when paginating results, and only in a subsequent request after you've received a response where the results are truncated. Set it to the value of the Marker element in the response you just received.

" - }, - "MaxItems":{ - "shape":"maxItemsType", - "documentation":"

Use this only when paginating results to indicate the maximum number of account aliases you want in the response. If there are additional account aliases beyond the maximum you specify, the IsTruncated response element is true. This parameter is optional. If you do not include it, it defaults to 100.

" - } - } - }, - "ListAccountAliasesResponse":{ - "type":"structure", - "required":["AccountAliases"], - "members":{ - "AccountAliases":{ - "shape":"accountAliasListType", - "documentation":"

A list of aliases associated with the account.

" - }, - "IsTruncated":{ - "shape":"booleanType", - "documentation":"

A flag that indicates whether there are more account aliases to list. If your results were truncated, you can make a subsequent pagination request using the Marker request parameter to retrieve more account aliases in the list.

" - }, - "Marker":{ - "shape":"markerType", - "documentation":"

Use this only when paginating results, and only in a subsequent request after you've received a response where the results are truncated. Set it to the value of the Marker element in the response you just received.

" - } - }, - "documentation":"

Contains the result of a successful invocation of the ListAccountAliases action.

" - }, - "ListGroupPoliciesRequest":{ - "type":"structure", - "required":["GroupName"], - "members":{ - "GroupName":{ - "shape":"groupNameType", - "documentation":"

The name of the group to list policies for.

" - }, - "Marker":{ - "shape":"markerType", - "documentation":"

Use this only when paginating results, and only in a subsequent request after you've received a response where the results are truncated. Set it to the value of the Marker element in the response you just received.

" - }, - "MaxItems":{ - "shape":"maxItemsType", - "documentation":"

Use this only when paginating results to indicate the maximum number of policy names you want in the response. If there are additional policy names beyond the maximum you specify, the IsTruncated response element is true. This parameter is optional. If you do not include it, it defaults to 100.

" - } - } - }, - "ListGroupPoliciesResponse":{ - "type":"structure", - "required":["PolicyNames"], - "members":{ - "PolicyNames":{ - "shape":"policyNameListType", - "documentation":"

A list of policy names.

" - }, - "IsTruncated":{ - "shape":"booleanType", - "documentation":"

A flag that indicates whether there are more policy names to list. If your results were truncated, you can make a subsequent pagination request using the Marker request parameter to retrieve more policy names in the list.

" - }, - "Marker":{ - "shape":"markerType", - "documentation":"

If IsTruncated is true, this element is present and contains the value to use for the Marker parameter in a subsequent pagination request.

" - } - }, - "documentation":"

Contains the result of a successful invocation of the ListGroupPolicies action.

" - }, - "ListGroupsForUserRequest":{ - "type":"structure", - "required":["UserName"], - "members":{ - "UserName":{ - "shape":"existingUserNameType", - "documentation":"

The name of the user to list groups for.

" - }, - "Marker":{ - "shape":"markerType", - "documentation":"

Use this only when paginating results, and only in a subsequent request after you've received a response where the results are truncated. Set it to the value of the Marker element in the response you just received.

" - }, - "MaxItems":{ - "shape":"maxItemsType", - "documentation":"

Use this only when paginating results to indicate the maximum number of groups you want in the response. If there are additional groups beyond the maximum you specify, the IsTruncated response element is true. This parameter is optional. If you do not include it, it defaults to 100.

" - } - } - }, - "ListGroupsForUserResponse":{ - "type":"structure", - "required":["Groups"], - "members":{ - "Groups":{ - "shape":"groupListType", - "documentation":"

A list of groups.

" - }, - "IsTruncated":{ - "shape":"booleanType", - "documentation":"

A flag that indicates whether there are more groups to list. If your results were truncated, you can make a subsequent pagination request using the Marker request parameter to retrieve more groups in the list.

" - }, - "Marker":{ - "shape":"markerType", - "documentation":"

If IsTruncated is true, this element is present and contains the value to use for the Marker parameter in a subsequent pagination request.

" - } - }, - "documentation":"

Contains the result of a successful invocation of the ListGroupsForUser action.

" - }, - "ListGroupsRequest":{ - "type":"structure", - "members":{ - "PathPrefix":{ - "shape":"pathPrefixType", - "documentation":"

The path prefix for filtering the results. For example, the prefix /division_abc/subdivision_xyz/ gets all groups whose path starts with /division_abc/subdivision_xyz/.

This parameter is optional. If it is not included, it defaults to a slash (/), listing all groups.

" - }, - "Marker":{ - "shape":"markerType", - "documentation":"

Use this only when paginating results, and only in a subsequent request after you've received a response where the results are truncated. Set it to the value of the Marker element in the response you just received.

" - }, - "MaxItems":{ - "shape":"maxItemsType", - "documentation":"

Use this only when paginating results to indicate the maximum number of groups you want in the response. If there are additional groups beyond the maximum you specify, the IsTruncated response element is true. This parameter is optional. If you do not include it, it defaults to 100.

" - } - } - }, - "ListGroupsResponse":{ - "type":"structure", - "required":["Groups"], - "members":{ - "Groups":{ - "shape":"groupListType", - "documentation":"

A list of groups.

" - }, - "IsTruncated":{ - "shape":"booleanType", - "documentation":"

A flag that indicates whether there are more groups to list. If your results were truncated, you can make a subsequent pagination request using the Marker request parameter to retrieve more groups in the list.

" - }, - "Marker":{ - "shape":"markerType", - "documentation":"

If IsTruncated is true, this element is present and contains the value to use for the Marker parameter in a subsequent pagination request.

" - } - }, - "documentation":"

Contains the result of a successful invocation of the ListGroups action.

" - }, - "ListInstanceProfilesForRoleRequest":{ - "type":"structure", - "required":["RoleName"], - "members":{ - "RoleName":{ - "shape":"roleNameType", - "documentation":"

The name of the role to list instance profiles for.

" - }, - "Marker":{ - "shape":"markerType", - "documentation":"

Use this parameter only when paginating results, and only in a subsequent request after you've received a response where the results are truncated. Set it to the value of the Marker element in the response you just received.

" - }, - "MaxItems":{ - "shape":"maxItemsType", - "documentation":"

Use this parameter only when paginating results to indicate the maximum number of instance profiles you want in the response. If there are additional instance profiles beyond the maximum you specify, the IsTruncated response element is true. This parameter is optional. If you do not include it, it defaults to 100.

" - } - } - }, - "ListInstanceProfilesForRoleResponse":{ - "type":"structure", - "required":["InstanceProfiles"], - "members":{ - "InstanceProfiles":{ - "shape":"instanceProfileListType", - "documentation":"

A list of instance profiles.

" - }, - "IsTruncated":{ - "shape":"booleanType", - "documentation":"

A flag that indicates whether there are more instance profiles to list. If your results were truncated, you can make a subsequent pagination request using the Marker request parameter to retrieve more instance profiles in the list.

" - }, - "Marker":{ - "shape":"markerType", - "documentation":"

If IsTruncated is true, this element is present and contains the value to use for the Marker parameter in a subsequent pagination request.

" - } - }, - "documentation":"

Contains the result of a successful invocation of the ListInstanceProfilesForRole action.

" - }, - "ListInstanceProfilesRequest":{ - "type":"structure", - "members":{ - "PathPrefix":{ - "shape":"pathPrefixType", - "documentation":"

The path prefix for filtering the results. For example, the prefix /application_abc/component_xyz/ gets all instance profiles whose path starts with /application_abc/component_xyz/.

This parameter is optional. If it is not included, it defaults to a slash (/), listing all instance profiles.

" - }, - "Marker":{ - "shape":"markerType", - "documentation":"

Use this parameter only when paginating results, and only in a subsequent request after you've received a response where the results are truncated. Set it to the value of the Marker element in the response you just received.

" - }, - "MaxItems":{ - "shape":"maxItemsType", - "documentation":"

Use this parameter only when paginating results to indicate the maximum number of instance profiles you want in the response. If there are additional instance profiles beyond the maximum you specify, the IsTruncated response element is true. This parameter is optional. If you do not include it, it defaults to 100.

" - } - } - }, - "ListInstanceProfilesResponse":{ - "type":"structure", - "required":["InstanceProfiles"], - "members":{ - "InstanceProfiles":{ - "shape":"instanceProfileListType", - "documentation":"

A list of instance profiles.

" - }, - "IsTruncated":{ - "shape":"booleanType", - "documentation":"

A flag that indicates whether there are more instance profiles to list. If your results were truncated, you can make a subsequent pagination request using the Marker request parameter to retrieve more instance profiles in the list.

" - }, - "Marker":{ - "shape":"markerType", - "documentation":"

If IsTruncated is true, this element is present and contains the value to use for the Marker parameter in a subsequent pagination request.

" - } - }, - "documentation":"

Contains the result of a successful invocation of the ListInstanceProfiles action.

" - }, - "ListMFADevicesRequest":{ - "type":"structure", - "members":{ - "UserName":{ - "shape":"existingUserNameType", - "documentation":"

The name of the user whose MFA devices you want to list.

" - }, - "Marker":{ - "shape":"markerType", - "documentation":"

Use this only when paginating results, and only in a subsequent request after you've received a response where the results are truncated. Set it to the value of the Marker element in the response you just received.

" - }, - "MaxItems":{ - "shape":"maxItemsType", - "documentation":"

Use this only when paginating results to indicate the maximum number of MFA devices you want in the response. If there are additional MFA devices beyond the maximum you specify, the IsTruncated response element is true. This parameter is optional. If you do not include it, it defaults to 100.

" - } - } - }, - "ListMFADevicesResponse":{ - "type":"structure", - "required":["MFADevices"], - "members":{ - "MFADevices":{ - "shape":"mfaDeviceListType", - "documentation":"

A list of MFA devices.

" - }, - "IsTruncated":{ - "shape":"booleanType", - "documentation":"

A flag that indicates whether there are more MFA devices to list. If your results were truncated, you can make a subsequent pagination request using the Marker request parameter to retrieve more MFA devices in the list.

" - }, - "Marker":{ - "shape":"markerType", - "documentation":"

If IsTruncated is true, this element is present and contains the value to use for the Marker parameter in a subsequent pagination request.

" - } - }, - "documentation":"

Contains the result of a successful invocation of the ListMFADevices action.

" - }, - "ListOpenIDConnectProvidersRequest":{ - "type":"structure", - "members":{ - } - }, - "ListOpenIDConnectProvidersResponse":{ - "type":"structure", - "members":{ - "OpenIDConnectProviderList":{ - "shape":"OpenIDConnectProviderListType", - "documentation":"

The list of IAM OpenID Connect providers in the AWS account.

" - } - }, - "documentation":"

Contains the result of a successful invocation of the ListOpenIDConnectProviders action.

" - }, - "ListRolePoliciesRequest":{ - "type":"structure", - "required":["RoleName"], - "members":{ - "RoleName":{ - "shape":"roleNameType", - "documentation":"

The name of the role to list policies for.

" - }, - "Marker":{ - "shape":"markerType", - "documentation":"

Use this parameter only when paginating results, and only in a subsequent request after you've received a response where the results are truncated. Set it to the value of the Marker element in the response you just received.

" - }, - "MaxItems":{ - "shape":"maxItemsType", - "documentation":"

Use this parameter only when paginating results to indicate the maximum number of role policies you want in the response. If there are additional role policies beyond the maximum you specify, the IsTruncated response element is true. This parameter is optional. If you do not include it, it defaults to 100.

" - } - } - }, - "ListRolePoliciesResponse":{ - "type":"structure", - "required":["PolicyNames"], - "members":{ - "PolicyNames":{ - "shape":"policyNameListType", - "documentation":"

A list of policy names.

" - }, - "IsTruncated":{ - "shape":"booleanType", - "documentation":"

A flag that indicates whether there are more policy names to list. If your results were truncated, you can make a subsequent pagination request using the Marker request parameter to retrieve more policy names in the list.

" - }, - "Marker":{ - "shape":"markerType", - "documentation":"

If IsTruncated is true, this element is present and contains the value to use for the Marker parameter in a subsequent pagination request.

" - } - }, - "documentation":"

Contains the result of a successful invocation of the ListRolePolicies action.

" - }, - "ListRolesRequest":{ - "type":"structure", - "members":{ - "PathPrefix":{ - "shape":"pathPrefixType", - "documentation":"

The path prefix for filtering the results. For example, the prefix /application_abc/component_xyz/ gets all roles whose path starts with /application_abc/component_xyz/.

This parameter is optional. If it is not included, it defaults to a slash (/), listing all roles.

" - }, - "Marker":{ - "shape":"markerType", - "documentation":"

Use this parameter only when paginating results, and only in a subsequent request after you've received a response where the results are truncated. Set it to the value of the Marker element in the response you just received.

" - }, - "MaxItems":{ - "shape":"maxItemsType", - "documentation":"

Use this parameter only when paginating results to indicate the maximum number of roles you want in the response. If there are additional roles beyond the maximum you specify, the IsTruncated response element is true. This parameter is optional. If you do not include it, it defaults to 100.

" - } - } - }, - "ListRolesResponse":{ - "type":"structure", - "required":["Roles"], - "members":{ - "Roles":{ - "shape":"roleListType", - "documentation":"

A list of roles.

" - }, - "IsTruncated":{ - "shape":"booleanType", - "documentation":"

A flag that indicates whether there are more roles to list. If your results were truncated, you can make a subsequent pagination request using the Marker request parameter to retrieve more roles in the list.

" - }, - "Marker":{ - "shape":"markerType", - "documentation":"

If IsTruncated is true, this element is present and contains the value to use for the Marker parameter in a subsequent pagination request.

" - } - }, - "documentation":"

Contains the result of a successful invocation of the ListRoles action.

" - }, - "ListSAMLProvidersRequest":{ - "type":"structure", - "members":{ - } - }, - "ListSAMLProvidersResponse":{ - "type":"structure", - "members":{ - "SAMLProviderList":{ - "shape":"SAMLProviderListType", - "documentation":"

The list of SAML providers for this account.

" - } - }, - "documentation":"

Contains the result of a successful invocation of the ListSAMLProviders action.

" - }, - "ListServerCertificatesRequest":{ - "type":"structure", - "members":{ - "PathPrefix":{ - "shape":"pathPrefixType", - "documentation":"

The path prefix for filtering the results. For example: /company/servercerts would get all server certificates for which the path starts with /company/servercerts.

This parameter is optional. If it is not included, it defaults to a slash (/), listing all server certificates.

" - }, - "Marker":{ - "shape":"markerType", - "documentation":"

Use this only when paginating results, and only in a subsequent request after you've received a response where the results are truncated. Set it to the value of the Marker element in the response you just received.

" - }, - "MaxItems":{ - "shape":"maxItemsType", - "documentation":"

Use this only when paginating results to indicate the maximum number of server certificates you want in the response. If there are additional server certificates beyond the maximum you specify, the IsTruncated response element will be set to true. This parameter is optional. If you do not include it, it defaults to 100.

" - } - } - }, - "ListServerCertificatesResponse":{ - "type":"structure", - "required":["ServerCertificateMetadataList"], - "members":{ - "ServerCertificateMetadataList":{ - "shape":"serverCertificateMetadataListType", - "documentation":"

A list of server certificates.

" - }, - "IsTruncated":{ - "shape":"booleanType", - "documentation":"

A flag that indicates whether there are more server certificates to list. If your results were truncated, you can make a subsequent pagination request using the Marker request parameter to retrieve more server certificates in the list.

" - }, - "Marker":{ - "shape":"markerType", - "documentation":"

If IsTruncated is true, this element is present and contains the value to use for the Marker parameter in a subsequent pagination request.

" - } - }, - "documentation":"

Contains the result of a successful invocation of the ListServerCertificates action.

" - }, - "ListSigningCertificatesRequest":{ - "type":"structure", - "members":{ - "UserName":{ - "shape":"existingUserNameType", - "documentation":"

The name of the user.

" - }, - "Marker":{ - "shape":"markerType", - "documentation":"

Use this only when paginating results, and only in a subsequent request after you've received a response where the results are truncated. Set it to the value of the Marker element in the response you just received.

" - }, - "MaxItems":{ - "shape":"maxItemsType", - "documentation":"

Use this only when paginating results to indicate the maximum number of certificate IDs you want in the response. If there are additional certificate IDs beyond the maximum you specify, the IsTruncated response element is true. This parameter is optional. If you do not include it, it defaults to 100.

" - } - } - }, - "ListSigningCertificatesResponse":{ - "type":"structure", - "required":["Certificates"], - "members":{ - "Certificates":{ - "shape":"certificateListType", - "documentation":"

A list of the user's signing certificate information.

" - }, - "IsTruncated":{ - "shape":"booleanType", - "documentation":"

A flag that indicates whether there are more certificate IDs to list. If your results were truncated, you can make a subsequent pagination request using the Marker request parameter to retrieve more certificates in the list.

" - }, - "Marker":{ - "shape":"markerType", - "documentation":"

If IsTruncated is true, this element is present and contains the value to use for the Marker parameter in a subsequent pagination request.

" - } - }, - "documentation":"

Contains the result of a successful invocation of the ListSigningCertificates action.

" - }, - "ListUserPoliciesRequest":{ - "type":"structure", - "required":["UserName"], - "members":{ - "UserName":{ - "shape":"existingUserNameType", - "documentation":"

The name of the user to list policies for.

" - }, - "Marker":{ - "shape":"markerType", - "documentation":"

Use this only when paginating results, and only in a subsequent request after you've received a response where the results are truncated. Set it to the value of the Marker element in the response you just received.

" - }, - "MaxItems":{ - "shape":"maxItemsType", - "documentation":"

Use this only when paginating results to indicate the maximum number of policy names you want in the response. If there are additional policy names beyond the maximum you specify, the IsTruncated response element is true. This parameter is optional. If you do not include it, it defaults to 100.

" - } - } - }, - "ListUserPoliciesResponse":{ - "type":"structure", - "required":["PolicyNames"], - "members":{ - "PolicyNames":{ - "shape":"policyNameListType", - "documentation":"

A list of policy names.

" - }, - "IsTruncated":{ - "shape":"booleanType", - "documentation":"

A flag that indicates whether there are more policy names to list. If your results were truncated, you can make a subsequent pagination request using the Marker request parameter to retrieve more policy names in the list.

" - }, - "Marker":{ - "shape":"markerType", - "documentation":"

If IsTruncated is true, this element is present and contains the value to use for the Marker parameter in a subsequent pagination request.

" - } - }, - "documentation":"

Contains the result of a successful invocation of the ListUserPolicies action.

" - }, - "ListUsersRequest":{ - "type":"structure", - "members":{ - "PathPrefix":{ - "shape":"pathPrefixType", - "documentation":"

The path prefix for filtering the results. For example: /division_abc/subdivision_xyz/, which would get all user names whose path starts with /division_abc/subdivision_xyz/.

This parameter is optional. If it is not included, it defaults to a slash (/), listing all user names.

" - }, - "Marker":{ - "shape":"markerType", - "documentation":"

Use this parameter only when paginating results, and only in a subsequent request after you've received a response where the results are truncated. Set it to the value of the Marker element in the response you just received.

" - }, - "MaxItems":{ - "shape":"maxItemsType", - "documentation":"

Use this parameter only when paginating results to indicate the maximum number of user names you want in the response. If there are additional user names beyond the maximum you specify, the IsTruncated response element is true. This parameter is optional. If you do not include it, it defaults to 100.

" - } - } - }, - "ListUsersResponse":{ - "type":"structure", - "required":["Users"], - "members":{ - "Users":{ - "shape":"userListType", - "documentation":"

A list of users.

" - }, - "IsTruncated":{ - "shape":"booleanType", - "documentation":"

A flag that indicates whether there are more user names to list. If your results were truncated, you can make a subsequent pagination request using the Marker request parameter to retrieve more users in the list.

" - }, - "Marker":{ - "shape":"markerType", - "documentation":"

If IsTruncated is true, this element is present and contains the value to use for the Marker parameter in a subsequent pagination request.

" - } - }, - "documentation":"

Contains the result of a successful invocation of the ListUsers action.

" - }, - "ListVirtualMFADevicesRequest":{ - "type":"structure", - "members":{ - "AssignmentStatus":{ - "shape":"assignmentStatusType", - "documentation":"

The status (unassigned or assigned) of the devices to list. If you do not specify an AssignmentStatus, the action defaults to Any which lists both assigned and unassigned virtual MFA devices.

" - }, - "Marker":{ - "shape":"markerType", - "documentation":"

Use this parameter only when paginating results, and only in a subsequent request after you've received a response where the results are truncated. Set it to the value of the Marker element in the response you just received.

" - }, - "MaxItems":{ - "shape":"maxItemsType", - "documentation":"

Use this parameter only when paginating results to indicate the maximum number of MFA devices you want in the response. If there are additional MFA devices beyond the maximum you specify, the IsTruncated response element is true. This parameter is optional. If you do not include it, it defaults to 100.

" - } - } - }, - "ListVirtualMFADevicesResponse":{ - "type":"structure", - "required":["VirtualMFADevices"], - "members":{ - "VirtualMFADevices":{ - "shape":"virtualMFADeviceListType", - "documentation":"

The list of virtual MFA devices in the current account that match the AssignmentStatus value that was passed in the request.

" - }, - "IsTruncated":{ - "shape":"booleanType", - "documentation":"

A flag that indicates whether there are more items to list. If your results were truncated, you can make a subsequent pagination request using the Marker request parameter to retrieve more items the list.

" - }, - "Marker":{ - "shape":"markerType", - "documentation":"

If IsTruncated is true, this element is present and contains the value to use for the Marker parameter in a subsequent pagination request.

" - } - }, - "documentation":"

Contains the result of a successful invocation of the ListVirtualMFADevicesaction.

" - }, - "LoginProfile":{ - "type":"structure", - "required":[ - "UserName", - "CreateDate" - ], - "members":{ - "UserName":{ - "shape":"userNameType", - "documentation":"

The name of the user, which can be used for signing in to the AWS Management Console.

" - }, - "CreateDate":{ - "shape":"dateType", - "documentation":"

The date when the password for the user was created.

" - }, - "PasswordResetRequired":{ - "shape":"booleanType", - "documentation":"

Specifies whether the user is required to set a new password on next sign-in.

" - } - }, - "documentation":"

Contains the user name and password create date for a user.

This data type is used as a response element in the CreateLoginProfile and GetLoginProfile actions.

" - }, - "MFADevice":{ - "type":"structure", - "required":[ - "UserName", - "SerialNumber", - "EnableDate" - ], - "members":{ - "UserName":{ - "shape":"userNameType", - "documentation":"

The user with whom the MFA device is associated.

" - }, - "SerialNumber":{ - "shape":"serialNumberType", - "documentation":"

The serial number that uniquely identifies the MFA device. For virtual MFA devices, the serial number is the device ARN.

" - }, - "EnableDate":{ - "shape":"dateType", - "documentation":"

The date when the MFA device was enabled for the user.

" - } - }, - "documentation":"

Contains information about an MFA device.

This data type is used as a response element in the ListMFADevices action.

" - }, - "MalformedCertificateException":{ - "type":"structure", - "members":{ - "message":{"shape":"malformedCertificateMessage"} - }, - "error":{ - "code":"MalformedCertificate", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because the certificate was malformed or expired. The error message describes the specific error.

" - }, - "MalformedPolicyDocumentException":{ - "type":"structure", - "members":{ - "message":{"shape":"malformedPolicyDocumentMessage"} - }, - "error":{ - "code":"MalformedPolicyDocument", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because the policy document was malformed. The error message describes the specific error.

" - }, - "NoSuchEntityException":{ - "type":"structure", - "members":{ - "message":{"shape":"noSuchEntityMessage"} - }, - "error":{ - "code":"NoSuchEntity", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it referenced an entity that does not exist. The error message describes the entity.

" - }, - "OpenIDConnectProviderListEntry":{ - "type":"structure", - "members":{ - "Arn":{"shape":"arnType"} - }, - "documentation":"

Contains the Amazon Resource Name (ARN) for an IAM OpenID Connect provider.

" - }, - "OpenIDConnectProviderListType":{ - "type":"list", - "member":{"shape":"OpenIDConnectProviderListEntry"}, - "documentation":"

Contains a list of IAM OpenID Connect providers.

" - }, - "OpenIDConnectProviderUrlType":{ - "type":"string", - "min":1, - "max":255, - "documentation":"

Contains a URL that specifies the endpoint for an OpenID Connect provider.

" - }, - "PasswordPolicy":{ - "type":"structure", - "members":{ - "MinimumPasswordLength":{ - "shape":"minimumPasswordLengthType", - "documentation":"

Minimum length to require for IAM user passwords.

" - }, - "RequireSymbols":{ - "shape":"booleanType", - "documentation":"

Specifies whether to require symbols for IAM user passwords.

" - }, - "RequireNumbers":{ - "shape":"booleanType", - "documentation":"

Specifies whether to require numbers for IAM user passwords.

" - }, - "RequireUppercaseCharacters":{ - "shape":"booleanType", - "documentation":"

Specifies whether to require uppercase characters for IAM user passwords.

" - }, - "RequireLowercaseCharacters":{ - "shape":"booleanType", - "documentation":"

Specifies whether to require lowercase characters for IAM user passwords.

" - }, - "AllowUsersToChangePassword":{ - "shape":"booleanType", - "documentation":"

Specifies whether IAM users are allowed to change their own password.

" - }, - "ExpirePasswords":{ - "shape":"booleanType", - "documentation":"

Specifies whether IAM users are required to change their password after a specified number of days.

" - }, - "MaxPasswordAge":{ - "shape":"maxPasswordAgeType", - "documentation":"

The number of days that an IAM user password is valid.

" - }, - "PasswordReusePrevention":{ - "shape":"passwordReusePreventionType", - "documentation":"

Specifies the number of previous passwords that IAM users are prevented from reusing.

" - }, - "HardExpiry":{ - "shape":"booleanObjectType", - "documentation":"

Specifies whether IAM users are prevented from setting a new password after their password has expired.

" - } - }, - "documentation":"

Contains information about the account password policy.

This data type is used as a response element in the GetAccountPasswordPolicy action.

" - }, - "PasswordPolicyViolationException":{ - "type":"structure", - "members":{ - "message":{"shape":"passwordPolicyViolationMessage"} - }, - "error":{ - "code":"PasswordPolicyViolation", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because the provided password did not meet the requirements imposed by the account password policy.

" - }, - "PolicyDetail":{ - "type":"structure", - "members":{ - "PolicyName":{ - "shape":"policyNameType", - "documentation":"

The name of the policy.

" - }, - "PolicyDocument":{ - "shape":"policyDocumentType", - "documentation":"

The policy document.

The returned policy is URL-encoded according to RFC 3986.

" - } - }, - "documentation":"

Contains information about an IAM policy, including the policy document.

This data type is used as a response element in the GetAccountAuthorizationDetails action.

" - }, - "PutGroupPolicyRequest":{ - "type":"structure", - "required":[ - "GroupName", - "PolicyName", - "PolicyDocument" - ], - "members":{ - "GroupName":{ - "shape":"groupNameType", - "documentation":"

The name of the group to associate the policy with.

" - }, - "PolicyName":{ - "shape":"policyNameType", - "documentation":"

The name of the policy document.

" - }, - "PolicyDocument":{ - "shape":"policyDocumentType", - "documentation":"

The policy document.

" - } - } - }, - "PutRolePolicyRequest":{ - "type":"structure", - "required":[ - "RoleName", - "PolicyName", - "PolicyDocument" - ], - "members":{ - "RoleName":{ - "shape":"roleNameType", - "documentation":"

The name of the role to associate the policy with.

" - }, - "PolicyName":{ - "shape":"policyNameType", - "documentation":"

The name of the policy document.

" - }, - "PolicyDocument":{ - "shape":"policyDocumentType", - "documentation":"

The policy document.

" - } - } - }, - "PutUserPolicyRequest":{ - "type":"structure", - "required":[ - "UserName", - "PolicyName", - "PolicyDocument" - ], - "members":{ - "UserName":{ - "shape":"existingUserNameType", - "documentation":"

The name of the user to associate the policy with.

" - }, - "PolicyName":{ - "shape":"policyNameType", - "documentation":"

The name of the policy document.

" - }, - "PolicyDocument":{ - "shape":"policyDocumentType", - "documentation":"

The policy document.

" - } - } - }, - "RemoveClientIDFromOpenIDConnectProviderRequest":{ - "type":"structure", - "required":[ - "OpenIDConnectProviderArn", - "ClientID" - ], - "members":{ - "OpenIDConnectProviderArn":{ - "shape":"arnType", - "documentation":"

The Amazon Resource Name (ARN) of the IAM OpenID Connect (OIDC) provider to remove the client ID from. You can get a list of OIDC provider ARNs by using the ListOpenIDConnectProviders action.

" - }, - "ClientID":{ - "shape":"clientIDType", - "documentation":"

The client ID (also known as audience) to remove from the IAM OpenID Connect provider. For more information about client IDs, see CreateOpenIDConnectProvider.

" - } - } - }, - "RemoveRoleFromInstanceProfileRequest":{ - "type":"structure", - "required":[ - "InstanceProfileName", - "RoleName" - ], - "members":{ - "InstanceProfileName":{ - "shape":"instanceProfileNameType", - "documentation":"

The name of the instance profile to update.

" - }, - "RoleName":{ - "shape":"roleNameType", - "documentation":"

The name of the role to remove.

" - } - } - }, - "RemoveUserFromGroupRequest":{ - "type":"structure", - "required":[ - "GroupName", - "UserName" - ], - "members":{ - "GroupName":{ - "shape":"groupNameType", - "documentation":"

The name of the group to update.

" - }, - "UserName":{ - "shape":"existingUserNameType", - "documentation":"

The name of the user to remove.

" - } - } - }, - "ReportContentType":{"type":"blob"}, - "ReportFormatType":{ - "type":"string", - "enum":["text/csv"] - }, - "ReportStateDescriptionType":{"type":"string"}, - "ReportStateType":{ - "type":"string", - "enum":[ - "STARTED", - "INPROGRESS", - "COMPLETE" - ] - }, - "ResyncMFADeviceRequest":{ - "type":"structure", - "required":[ - "UserName", - "SerialNumber", - "AuthenticationCode1", - "AuthenticationCode2" - ], - "members":{ - "UserName":{ - "shape":"existingUserNameType", - "documentation":"

The name of the user whose MFA device you want to resynchronize.

" - }, - "SerialNumber":{ - "shape":"serialNumberType", - "documentation":"

Serial number that uniquely identifies the MFA device.

" - }, - "AuthenticationCode1":{ - "shape":"authenticationCodeType", - "documentation":"

An authentication code emitted by the device.

" - }, - "AuthenticationCode2":{ - "shape":"authenticationCodeType", - "documentation":"

A subsequent authentication code emitted by the device.

" - } - } - }, - "Role":{ - "type":"structure", - "required":[ - "Path", - "RoleName", - "RoleId", - "Arn", - "CreateDate" - ], - "members":{ - "Path":{ - "shape":"pathType", - "documentation":"

The path to the role. For more information about paths, see IAM Identifiers in the Using IAM guide.

" - }, - "RoleName":{ - "shape":"roleNameType", - "documentation":"

The friendly name that identifies the role.

" - }, - "RoleId":{ - "shape":"idType", - "documentation":"

The stable and unique string identifying the role. For more information about IDs, see IAM Identifiers in the Using IAM guide.

" - }, - "Arn":{ - "shape":"arnType", - "documentation":"

The Amazon Resource Name (ARN) specifying the role. For more information about ARNs and how to use them in policies, see IAM Identifiers in the Using IAM guide.

" - }, - "CreateDate":{ - "shape":"dateType", - "documentation":"

The date and time, in ISO 8601 date-time format, when the role was created.

" - }, - "AssumeRolePolicyDocument":{ - "shape":"policyDocumentType", - "documentation":"

The policy that grants an entity permission to assume the role.

The returned policy is URL-encoded according to RFC 3986.

" - } - }, - "documentation":"

Contains information about an IAM role.

This data type is used as a response element in the following actions:

" - }, - "RoleDetail":{ - "type":"structure", - "members":{ - "Path":{ - "shape":"pathType", - "documentation":"

The path to the role. For more information about paths, see IAM Identifiers in the Using IAM guide.

" - }, - "RoleName":{ - "shape":"roleNameType", - "documentation":"

The friendly name that identifies the role.

" - }, - "RoleId":{ - "shape":"idType", - "documentation":"

The stable and unique string identifying the role. For more information about IDs, see IAM Identifiers in the Using IAM guide.

" - }, - "Arn":{"shape":"arnType"}, - "CreateDate":{ - "shape":"dateType", - "documentation":"

The date and time, in ISO 8601 date-time format, when the role was created.

" - }, - "AssumeRolePolicyDocument":{ - "shape":"policyDocumentType", - "documentation":"

The trust policy that grants an entity permission to assume the role.

The returned policy is URL-encoded according to RFC 3986.

" - }, - "InstanceProfileList":{"shape":"instanceProfileListType"}, - "RolePolicyList":{ - "shape":"policyDetailListType", - "documentation":"

A list of the access (permissions) policies attached to the role.

" - } - }, - "documentation":"

Contains information about an IAM role, including all of the access policies attached to the role.

This data type is used as a response element in the GetAccountAuthorizationDetails action.

" - }, - "SAMLMetadataDocumentType":{ - "type":"string", - "min":1000, - "max":10000000 - }, - "SAMLProviderListEntry":{ - "type":"structure", - "members":{ - "Arn":{ - "shape":"arnType", - "documentation":"

The Amazon Resource Name (ARN) of the SAML provider.

" - }, - "ValidUntil":{ - "shape":"dateType", - "documentation":"

The expiration date and time for the SAML provider.

" - }, - "CreateDate":{ - "shape":"dateType", - "documentation":"

The date and time when the SAML provider was created.

" - } - }, - "documentation":"

Contains the list of SAML providers for this account.

" - }, - "SAMLProviderListType":{ - "type":"list", - "member":{"shape":"SAMLProviderListEntry"} - }, - "SAMLProviderNameType":{ - "type":"string", - "min":1, - "max":128, - "pattern":"[\\w._-]*" - }, - "ServerCertificate":{ - "type":"structure", - "required":[ - "ServerCertificateMetadata", - "CertificateBody" - ], - "members":{ - "ServerCertificateMetadata":{ - "shape":"ServerCertificateMetadata", - "documentation":"

The meta information of the server certificate, such as its name, path, ID, and ARN.

" - }, - "CertificateBody":{ - "shape":"certificateBodyType", - "documentation":"

The contents of the public key certificate.

" - }, - "CertificateChain":{ - "shape":"certificateChainType", - "documentation":"

The contents of the public key certificate chain.

" - } - }, - "documentation":"

Contains information about a server certificate.

This data type is used as a response element in the GetServerCertificate action.

" - }, - "ServerCertificateMetadata":{ - "type":"structure", - "required":[ - "Path", - "ServerCertificateName", - "ServerCertificateId", - "Arn" - ], - "members":{ - "Path":{ - "shape":"pathType", - "documentation":"

The path to the server certificate. For more information about paths, see IAM Identifiers in the Using IAM guide.

" - }, - "ServerCertificateName":{ - "shape":"serverCertificateNameType", - "documentation":"

The name that identifies the server certificate.

" - }, - "ServerCertificateId":{ - "shape":"idType", - "documentation":"

The stable and unique string identifying the server certificate. For more information about IDs, see IAM Identifiers in the Using IAM guide.

" - }, - "Arn":{ - "shape":"arnType", - "documentation":"

The Amazon Resource Name (ARN) specifying the server certificate. For more information about ARNs and how to use them in policies, see IAM Identifiers in the Using IAM guide.

" - }, - "UploadDate":{ - "shape":"dateType", - "documentation":"

The date when the server certificate was uploaded.

" - }, - "Expiration":{ - "shape":"dateType", - "documentation":"

The date on which the certificate is set to expire.

" - } - }, - "documentation":"

Contains information about a server certificate without its certificate body, certificate chain, and private key.

This data type is used as a response element in the UploadServerCertificate and ListServerCertificates actions.

" - }, - "SigningCertificate":{ - "type":"structure", - "required":[ - "UserName", - "CertificateId", - "CertificateBody", - "Status" - ], - "members":{ - "UserName":{ - "shape":"userNameType", - "documentation":"

The name of the user the signing certificate is associated with.

" - }, - "CertificateId":{ - "shape":"certificateIdType", - "documentation":"

The ID for the signing certificate.

" - }, - "CertificateBody":{ - "shape":"certificateBodyType", - "documentation":"

The contents of the signing certificate.

" - }, - "Status":{ - "shape":"statusType", - "documentation":"

The status of the signing certificate. Active means the key is valid for API calls, while Inactive means it is not.

" - }, - "UploadDate":{ - "shape":"dateType", - "documentation":"

The date when the signing certificate was uploaded.

" - } - }, - "documentation":"

Contains information about an X.509 signing certificate.

This data type is used as a response element in the UploadSigningCertificate and ListSigningCertificates actions.

" - }, - "UpdateAccessKeyRequest":{ - "type":"structure", - "required":[ - "AccessKeyId", - "Status" - ], - "members":{ - "UserName":{ - "shape":"existingUserNameType", - "documentation":"

The name of the user whose key you want to update.

" - }, - "AccessKeyId":{ - "shape":"accessKeyIdType", - "documentation":"

The access key ID of the secret access key you want to update.

" - }, - "Status":{ - "shape":"statusType", - "documentation":"

The status you want to assign to the secret access key. Active means the key can be used for API calls to AWS, while Inactive means the key cannot be used.

" - } - } - }, - "UpdateAccountPasswordPolicyRequest":{ - "type":"structure", - "members":{ - "MinimumPasswordLength":{ - "shape":"minimumPasswordLengthType", - "documentation":"

The minimum number of characters allowed in an IAM user password.

Default value: 6

" - }, - "RequireSymbols":{ - "shape":"booleanType", - "documentation":"

Specifies whether IAM user passwords must contain at least one of the following non-alphanumeric characters:

! @ # $ % ^ &amp; * ( ) _ + - = [ ] { } | '

Default value: false

" - }, - "RequireNumbers":{ - "shape":"booleanType", - "documentation":"

Specifies whether IAM user passwords must contain at least one numeric character (0 to 9).

Default value: false

" - }, - "RequireUppercaseCharacters":{ - "shape":"booleanType", - "documentation":"

Specifies whether IAM user passwords must contain at least one uppercase character from the ISO basic Latin alphabet (A to Z).

Default value: false

" - }, - "RequireLowercaseCharacters":{ - "shape":"booleanType", - "documentation":"

Specifies whether IAM user passwords must contain at least one lowercase character from the ISO basic Latin alphabet (a to z).

Default value: false

" - }, - "AllowUsersToChangePassword":{ - "shape":"booleanType", - "documentation":"

Allows all IAM users in your account to use the AWS Management Console to change their own passwords. For more information, see Letting IAM Users Change Their Own Passwords in the Using IAM guide.

Default value: false

" - }, - "MaxPasswordAge":{ - "shape":"maxPasswordAgeType", - "documentation":"

The number of days that an IAM user password is valid. The default value of 0 means IAM user passwords never expire.

Default value: 0

" - }, - "PasswordReusePrevention":{ - "shape":"passwordReusePreventionType", - "documentation":"

Specifies the number of previous passwords that IAM users are prevented from reusing. The default value of 0 means IAM users are not prevented from reusing previous passwords.

Default value: 0

" - }, - "HardExpiry":{ - "shape":"booleanObjectType", - "documentation":"

Prevents IAM users from setting a new password after their password has expired.

Default value: false

" - } - } - }, - "UpdateAssumeRolePolicyRequest":{ - "type":"structure", - "required":[ - "RoleName", - "PolicyDocument" - ], - "members":{ - "RoleName":{ - "shape":"roleNameType", - "documentation":"

The name of the role to update.

" - }, - "PolicyDocument":{ - "shape":"policyDocumentType", - "documentation":"

The policy that grants an entity permission to assume the role.

" - } - } - }, - "UpdateGroupRequest":{ - "type":"structure", - "required":["GroupName"], - "members":{ - "GroupName":{ - "shape":"groupNameType", - "documentation":"

Name of the group to update. If you're changing the name of the group, this is the original name.

" - }, - "NewPath":{ - "shape":"pathType", - "documentation":"

New path for the group. Only include this if changing the group's path.

" - }, - "NewGroupName":{ - "shape":"groupNameType", - "documentation":"

New name for the group. Only include this if changing the group's name.

" - } - } - }, - "UpdateLoginProfileRequest":{ - "type":"structure", - "required":["UserName"], - "members":{ - "UserName":{ - "shape":"userNameType", - "documentation":"

The name of the user whose password you want to update.

" - }, - "Password":{ - "shape":"passwordType", - "documentation":"

The new password for the specified user.

" - }, - "PasswordResetRequired":{ - "shape":"booleanObjectType", - "documentation":"

Require the specified user to set a new password on next sign-in.

" - } - } - }, - "UpdateOpenIDConnectProviderThumbprintRequest":{ - "type":"structure", - "required":[ - "OpenIDConnectProviderArn", - "ThumbprintList" - ], - "members":{ - "OpenIDConnectProviderArn":{ - "shape":"arnType", - "documentation":"

The Amazon Resource Name (ARN) of the IAM OpenID Connect (OIDC) provider to update the thumbprint for. You can get a list of OIDC provider ARNs by using the ListOpenIDConnectProviders action.

" - }, - "ThumbprintList":{ - "shape":"thumbprintListType", - "documentation":"

A list of certificate thumbprints that are associated with the specified IAM OpenID Connect provider. For more information, see CreateOpenIDConnectProvider.

" - } - } - }, - "UpdateSAMLProviderRequest":{ - "type":"structure", - "required":[ - "SAMLMetadataDocument", - "SAMLProviderArn" - ], - "members":{ - "SAMLMetadataDocument":{ - "shape":"SAMLMetadataDocumentType", - "documentation":"

An XML document generated by an identity provider (IdP) that supports SAML 2.0. The document includes the issuer's name, expiration information, and keys that can be used to validate the SAML authentication response (assertions) that are received from the IdP. You must generate the metadata document using the identity management software that is used as your organization's IdP.

" - }, - "SAMLProviderArn":{ - "shape":"arnType", - "documentation":"

The Amazon Resource Name (ARN) of the SAML provider to update.

" - } - } - }, - "UpdateSAMLProviderResponse":{ - "type":"structure", - "members":{ - "SAMLProviderArn":{ - "shape":"arnType", - "documentation":"

The Amazon Resource Name (ARN) of the SAML provider that was updated.

" - } - }, - "documentation":"

Contains the result of a successful invocation of the UpdateSAMLProvider action.

" - }, - "UpdateServerCertificateRequest":{ - "type":"structure", - "required":["ServerCertificateName"], - "members":{ - "ServerCertificateName":{ - "shape":"serverCertificateNameType", - "documentation":"

The name of the server certificate that you want to update.

" - }, - "NewPath":{ - "shape":"pathType", - "documentation":"

The new path for the server certificate. Include this only if you are updating the server certificate's path.

" - }, - "NewServerCertificateName":{ - "shape":"serverCertificateNameType", - "documentation":"

The new name for the server certificate. Include this only if you are updating the server certificate's name.

" - } - } - }, - "UpdateSigningCertificateRequest":{ - "type":"structure", - "required":[ - "CertificateId", - "Status" - ], - "members":{ - "UserName":{ - "shape":"existingUserNameType", - "documentation":"

The name of the user the signing certificate belongs to.

" - }, - "CertificateId":{ - "shape":"certificateIdType", - "documentation":"

The ID of the signing certificate you want to update.

" - }, - "Status":{ - "shape":"statusType", - "documentation":"

The status you want to assign to the certificate. Active means the certificate can be used for API calls to AWS, while Inactive means the certificate cannot be used.

" - } - } - }, - "UpdateUserRequest":{ - "type":"structure", - "required":["UserName"], - "members":{ - "UserName":{ - "shape":"existingUserNameType", - "documentation":"

Name of the user to update. If you're changing the name of the user, this is the original user name.

" - }, - "NewPath":{ - "shape":"pathType", - "documentation":"

New path for the user. Include this parameter only if you're changing the user's path.

" - }, - "NewUserName":{ - "shape":"userNameType", - "documentation":"

New name for the user. Include this parameter only if you're changing the user's name.

" - } - } - }, - "UploadServerCertificateRequest":{ - "type":"structure", - "required":[ - "ServerCertificateName", - "CertificateBody", - "PrivateKey" - ], - "members":{ - "Path":{ - "shape":"pathType", - "documentation":"

The path for the server certificate. For more information about paths, see IAM Identifiers in the Using IAM guide.

This parameter is optional. If it is not included, it defaults to a slash (/).

If you are uploading a server certificate specifically for use with Amazon CloudFront distributions, you must specify a path using the --path option. The path must begin with /cloudfront and must include a trailing slash (for example, /cloudfront/test/). " - }, - "ServerCertificateName":{ - "shape":"serverCertificateNameType", - "documentation":"

The name for the server certificate. Do not include the path in this value.

" - }, - "CertificateBody":{ - "shape":"certificateBodyType", - "documentation":"

The contents of the public key certificate in PEM-encoded format.

" - }, - "PrivateKey":{ - "shape":"privateKeyType", - "documentation":"

The contents of the private key in PEM-encoded format.

" - }, - "CertificateChain":{ - "shape":"certificateChainType", - "documentation":"

The contents of the certificate chain. This is typically a concatenation of the PEM-encoded public key certificates of the chain.

" - } - } - }, - "UploadServerCertificateResponse":{ - "type":"structure", - "members":{ - "ServerCertificateMetadata":{ - "shape":"ServerCertificateMetadata", - "documentation":"

The meta information of the uploaded server certificate without its certificate body, certificate chain, and private key.

" - } - }, - "documentation":"

Contains the result of a successful invocation of the UploadServerCertificate action.

" - }, - "UploadSigningCertificateRequest":{ - "type":"structure", - "required":["CertificateBody"], - "members":{ - "UserName":{ - "shape":"existingUserNameType", - "documentation":"

The name of the user the signing certificate is for.

" - }, - "CertificateBody":{ - "shape":"certificateBodyType", - "documentation":"

The contents of the signing certificate.

" - } - } - }, - "UploadSigningCertificateResponse":{ - "type":"structure", - "required":["Certificate"], - "members":{ - "Certificate":{ - "shape":"SigningCertificate", - "documentation":"

Information about the certificate.

" - } - }, - "documentation":"

Contains the result of a successful invocation of the UploadSigningCertificate action.

" - }, - "User":{ - "type":"structure", - "required":[ - "Path", - "UserName", - "UserId", - "Arn", - "CreateDate" - ], - "members":{ - "Path":{ - "shape":"pathType", - "documentation":"

The path to the user. For more information about paths, see IAM Identifiers in the Using IAM guide.

" - }, - "UserName":{ - "shape":"userNameType", - "documentation":"

The friendly name identifying the user.

" - }, - "UserId":{ - "shape":"idType", - "documentation":"

The stable and unique string identifying the user. For more information about IDs, see IAM Identifiers in the Using IAM guide.

" - }, - "Arn":{ - "shape":"arnType", - "documentation":"

The Amazon Resource Name (ARN) that identifies the user. For more information about ARNs and how to use ARNs in policies, see IAM Identifiers in the Using IAM guide.

" - }, - "CreateDate":{ - "shape":"dateType", - "documentation":"

The date and time, in ISO 8601 date-time format, when the user was created.

" - }, - "PasswordLastUsed":{ - "shape":"dateType", - "documentation":"

The date and time, in ISO 8601 date-time format, when the user's password was last used to sign in to an AWS website. For a list of AWS websites that capture a user's last sign-in time, see the Credential Reports topic in the Using IAM guide. If a password is used more than once in a five-minute span, only the first use is returned in this field. When the user does not have a password, this field is null (not present). When a user's password exists but has never been used, or when there is no sign-in data associated with the user, this field is null (not present).

This value is returned only in the GetUser and ListUsers actions.

" - } - }, - "documentation":"

Contains information about an IAM user entity.

This data type is used as a response element in the following actions:

" - }, - "UserDetail":{ - "type":"structure", - "members":{ - "Path":{ - "shape":"pathType", - "documentation":"

The path to the user. For more information about paths, see IAM Identifiers in the Using IAM guide.

" - }, - "UserName":{ - "shape":"userNameType", - "documentation":"

The friendly name identifying the user.

" - }, - "UserId":{ - "shape":"idType", - "documentation":"

The stable and unique string identifying the user. For more information about IDs, see IAM Identifiers in the Using IAM guide.

" - }, - "Arn":{"shape":"arnType"}, - "CreateDate":{ - "shape":"dateType", - "documentation":"

The date and time, in ISO 8601 date-time format, when the user was created.

" - }, - "UserPolicyList":{ - "shape":"policyDetailListType", - "documentation":"

A list of the policies attached to the user.

" - }, - "GroupList":{ - "shape":"groupNameListType", - "documentation":"

A list of the IAM groups that the user is in.

" - } - }, - "documentation":"

Contains information about an IAM user, including all the policies attached to the user and all the IAM groups the user is in.

This data type is used as a response element in the GetAccountAuthorizationDetails action.

" - }, - "VirtualMFADevice":{ - "type":"structure", - "required":["SerialNumber"], - "members":{ - "SerialNumber":{ - "shape":"serialNumberType", - "documentation":"

The serial number associated with VirtualMFADevice.

" - }, - "Base32StringSeed":{ - "shape":"BootstrapDatum", - "documentation":"

The Base32 seed defined as specified in RFC3548. The Base32StringSeed is Base64-encoded.

" - }, - "QRCodePNG":{ - "shape":"BootstrapDatum", - "documentation":"

A QR code PNG image that encodes otpauth://totp/$virtualMFADeviceName@$AccountName?secret=$Base32String where $virtualMFADeviceName is one of the create call arguments, AccountName is the user name if set (otherwise, the account ID otherwise), and Base32String is the seed in Base32 format. The Base32String value is Base64-encoded.

" - }, - "User":{"shape":"User"}, - "EnableDate":{ - "shape":"dateType", - "documentation":"

The date and time on which the virtual MFA device was enabled.

" - } - }, - "documentation":"

Contains information about a virtual MFA device.

" - }, - "accessKeyIdType":{ - "type":"string", - "min":16, - "max":32, - "pattern":"[\\w]*" - }, - "accessKeyMetadataListType":{ - "type":"list", - "member":{"shape":"AccessKeyMetadata"}, - "documentation":"

Contains a list of access key metadata.

This data type is used as a response element in the ListAccessKeys action.

" - }, - "accessKeySecretType":{ - "type":"string", - "sensitive":true - }, - "accountAliasListType":{ - "type":"list", - "member":{"shape":"accountAliasType"} - }, - "accountAliasType":{ - "type":"string", - "min":3, - "max":63, - "pattern":"^[a-z0-9](([a-z0-9]|-(?!-))*[a-z0-9])?$" - }, - "arnType":{ - "type":"string", - "min":20, - "max":2048, - "documentation":"

The Amazon Resource Name (ARN). ARNs are unique identifiers for AWS resources.

For more information about ARNs, go to Amazon Resource Names (ARNs) and AWS Service Namespaces in the AWS General Reference.

" - }, - "assignmentStatusType":{ - "type":"string", - "enum":[ - "Assigned", - "Unassigned", - "Any" - ] - }, - "authenticationCodeType":{ - "type":"string", - "min":6, - "max":6, - "pattern":"[\\d]*" - }, - "booleanObjectType":{ - "type":"boolean", - "box":true - }, - "booleanType":{"type":"boolean"}, - "certificateBodyType":{ - "type":"string", - "min":1, - "max":16384, - "pattern":"[\\u0009\\u000A\\u000D\\u0020-\\u00FF]+" - }, - "certificateChainType":{ - "type":"string", - "min":1, - "max":2097152, - "pattern":"[\\u0009\\u000A\\u000D\\u0020-\\u00FF]*" - }, - "certificateIdType":{ - "type":"string", - "min":24, - "max":128, - "pattern":"[\\w]*" - }, - "certificateListType":{ - "type":"list", - "member":{"shape":"SigningCertificate"}, - "documentation":"

Contains a list of signing certificates.

This data type is used as a response element in the ListSigningCertificates action.

" - }, - "clientIDListType":{ - "type":"list", - "member":{"shape":"clientIDType"} - }, - "clientIDType":{ - "type":"string", - "min":1, - "max":255 - }, - "credentialReportExpiredExceptionMessage":{"type":"string"}, - "credentialReportNotPresentExceptionMessage":{"type":"string"}, - "credentialReportNotReadyExceptionMessage":{"type":"string"}, - "dateType":{"type":"timestamp"}, - "deleteConflictMessage":{"type":"string"}, - "duplicateCertificateMessage":{"type":"string"}, - "entityAlreadyExistsMessage":{"type":"string"}, - "entityListType":{ - "type":"list", - "member":{"shape":"EntityType"} - }, - "entityTemporarilyUnmodifiableMessage":{"type":"string"}, - "existingUserNameType":{ - "type":"string", - "min":1, - "max":128, - "pattern":"[\\w+=,.@-]*" - }, - "groupDetailListType":{ - "type":"list", - "member":{"shape":"GroupDetail"} - }, - "groupListType":{ - "type":"list", - "member":{"shape":"Group"}, - "documentation":"

Contains a list of IAM groups.

This data type is used as a response element in the ListGroups action.

" - }, - "groupNameListType":{ - "type":"list", - "member":{"shape":"groupNameType"} - }, - "groupNameType":{ - "type":"string", - "min":1, - "max":128, - "pattern":"[\\w+=,.@-]*" - }, - "idType":{ - "type":"string", - "min":16, - "max":32, - "pattern":"[\\w]*" - }, - "instanceProfileListType":{ - "type":"list", - "member":{"shape":"InstanceProfile"}, - "documentation":"

Contains a list of instance profiles.

" - }, - "instanceProfileNameType":{ - "type":"string", - "min":1, - "max":128, - "pattern":"[\\w+=,.@-]*" - }, - "invalidAuthenticationCodeMessage":{"type":"string"}, - "invalidCertificateMessage":{"type":"string"}, - "invalidInputMessage":{"type":"string"}, - "invalidUserTypeMessage":{"type":"string"}, - "keyPairMismatchMessage":{"type":"string"}, - "limitExceededMessage":{"type":"string"}, - "malformedCertificateMessage":{"type":"string"}, - "malformedPolicyDocumentMessage":{"type":"string"}, - "markerType":{ - "type":"string", - "min":1, - "max":320, - "pattern":"[\\u0020-\\u00FF]*" - }, - "maxItemsType":{ - "type":"integer", - "min":1, - "max":1000 - }, - "maxPasswordAgeType":{ - "type":"integer", - "min":1, - "max":1095, - "box":true - }, - "mfaDeviceListType":{ - "type":"list", - "member":{"shape":"MFADevice"}, - "documentation":"

Contains a list of MFA devices.

This data type is used as a response element in the ListMFADevices and ListVirtualMFADevices actions.

" - }, - "minimumPasswordLengthType":{ - "type":"integer", - "min":6, - "max":128 - }, - "noSuchEntityMessage":{"type":"string"}, - "passwordPolicyViolationMessage":{"type":"string"}, - "passwordReusePreventionType":{ - "type":"integer", - "min":1, - "max":24, - "box":true - }, - "passwordType":{ - "type":"string", - "min":1, - "max":128, - "pattern":"[\\u0009\\u000A\\u000D\\u0020-\\u00FF]+", - "sensitive":true - }, - "pathPrefixType":{ - "type":"string", - "min":1, - "max":512, - "pattern":"\\u002F[\\u0021-\\u007F]*" - }, - "pathType":{ - "type":"string", - "min":1, - "max":512, - "pattern":"(\\u002F)|(\\u002F[\\u0021-\\u007F]+\\u002F)" - }, - "policyDetailListType":{ - "type":"list", - "member":{"shape":"PolicyDetail"} - }, - "policyDocumentType":{ - "type":"string", - "min":1, - "max":131072, - "pattern":"[\\u0009\\u000A\\u000D\\u0020-\\u00FF]+" - }, - "policyNameListType":{ - "type":"list", - "member":{"shape":"policyNameType"}, - "documentation":"

Contains a list of policy names.

This data type is used as a response element in the ListPolicies action.

" - }, - "policyNameType":{ - "type":"string", - "min":1, - "max":128, - "pattern":"[\\w+=,.@-]*" - }, - "privateKeyType":{ - "type":"string", - "min":1, - "max":16384, - "pattern":"[\\u0009\\u000A\\u000D\\u0020-\\u00FF]*", - "sensitive":true - }, - "roleDetailListType":{ - "type":"list", - "member":{"shape":"RoleDetail"} - }, - "roleListType":{ - "type":"list", - "member":{"shape":"Role"}, - "documentation":"

Contains a list of IAM roles.

This data type is used as a response element in the ListRoles action.

" - }, - "roleNameType":{ - "type":"string", - "min":1, - "max":64, - "pattern":"[\\w+=,.@-]*" - }, - "serialNumberType":{ - "type":"string", - "min":9, - "max":256, - "pattern":"[\\w+=/:,.@-]*" - }, - "serverCertificateMetadataListType":{ - "type":"list", - "member":{"shape":"ServerCertificateMetadata"} - }, - "serverCertificateNameType":{ - "type":"string", - "min":1, - "max":128, - "pattern":"[\\w+=,.@-]*" - }, - "statusType":{ - "type":"string", - "enum":[ - "Active", - "Inactive" - ] - }, - "summaryKeyType":{ - "type":"string", - "enum":[ - "Users", - "UsersQuota", - "Groups", - "GroupsQuota", - "ServerCertificates", - "ServerCertificatesQuota", - "UserPolicySizeQuota", - "GroupPolicySizeQuota", - "GroupsPerUserQuota", - "SigningCertificatesPerUserQuota", - "AccessKeysPerUserQuota", - "MFADevices", - "MFADevicesInUse", - "AccountMFAEnabled" - ] - }, - "summaryMapType":{ - "type":"map", - "key":{"shape":"summaryKeyType"}, - "value":{"shape":"summaryValueType"} - }, - "summaryValueType":{"type":"integer"}, - "thumbprintListType":{ - "type":"list", - "member":{"shape":"thumbprintType"}, - "documentation":"

Contains a list of thumbprints of identity provider server certificates.

" - }, - "thumbprintType":{ - "type":"string", - "min":40, - "max":40, - "documentation":"

Contains a thumbprint for an identity provider's server certificate.

The identity provider's server certificate thumbprint is the hex-encoded SHA-1 hash value of the self-signed X.509 certificate used by the domain where the OpenID Connect provider makes its keys available. It is always a 40-character string.

" - }, - "userDetailListType":{ - "type":"list", - "member":{"shape":"UserDetail"} - }, - "userListType":{ - "type":"list", - "member":{"shape":"User"}, - "documentation":"

Contains a list of users.

This data type is used as a response element in the GetGroup and ListUsers actions.

" - }, - "userNameType":{ - "type":"string", - "min":1, - "max":64, - "pattern":"[\\w+=,.@-]*" - }, - "virtualMFADeviceListType":{ - "type":"list", - "member":{"shape":"VirtualMFADevice"} - }, - "virtualMFADeviceName":{ - "type":"string", - "min":1, - "pattern":"[\\w+=,.@-]*" - } - } -} diff --git a/src/github.com/getlantern/aws-sdk-go/apis/iam/2010-05-08.paginators.json b/src/github.com/getlantern/aws-sdk-go/apis/iam/2010-05-08.paginators.json deleted file mode 100644 index b738bbd9e8..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/apis/iam/2010-05-08.paginators.json +++ /dev/null @@ -1,119 +0,0 @@ -{ - "pagination": { - "GetGroup": { - "input_token": "Marker", - "output_token": "Marker", - "more_results": "IsTruncated", - "limit_key": "MaxItems", - "result_key": "Users", - "non_aggregate_keys": [ - "Group" - ] - }, - "ListAccessKeys": { - "input_token": "Marker", - "output_token": "Marker", - "more_results": "IsTruncated", - "limit_key": "MaxItems", - "result_key": "AccessKeyMetadata" - }, - "ListAccountAliases": { - "input_token": "Marker", - "output_token": "Marker", - "more_results": "IsTruncated", - "limit_key": "MaxItems", - "result_key": "AccountAliases" - }, - "ListGroupPolicies": { - "input_token": "Marker", - "output_token": "Marker", - "more_results": "IsTruncated", - "limit_key": "MaxItems", - "result_key": "PolicyNames" - }, - "ListGroups": { - "input_token": "Marker", - "output_token": "Marker", - "more_results": "IsTruncated", - "limit_key": "MaxItems", - "result_key": "Groups" - }, - "ListGroupsForUser": { - "input_token": "Marker", - "output_token": "Marker", - "more_results": "IsTruncated", - "limit_key": "MaxItems", - "result_key": "Groups" - }, - "ListInstanceProfiles": { - "input_token": "Marker", - "output_token": "Marker", - "more_results": "IsTruncated", - "limit_key": "MaxItems", - "result_key": "InstanceProfiles" - }, - "ListInstanceProfilesForRole": { - "input_token": "Marker", - "output_token": "Marker", - "more_results": "IsTruncated", - "limit_key": "MaxItems", - "result_key": "InstanceProfiles" - }, - "ListMFADevices": { - "input_token": "Marker", - "output_token": "Marker", - "more_results": "IsTruncated", - "limit_key": "MaxItems", - "result_key": "MFADevices" - }, - "ListRolePolicies": { - "input_token": "Marker", - "output_token": "Marker", - "more_results": "IsTruncated", - "limit_key": "MaxItems", - "result_key": "PolicyNames" - }, - "ListRoles": { - "input_token": "Marker", - "output_token": "Marker", - "more_results": "IsTruncated", - "limit_key": "MaxItems", - "result_key": "Roles" - }, - "ListServerCertificates": { - "input_token": "Marker", - "output_token": "Marker", - "more_results": "IsTruncated", - "limit_key": "MaxItems", - "result_key": "ServerCertificateMetadataList" - }, - "ListSigningCertificates": { - "input_token": "Marker", - "output_token": "Marker", - "more_results": "IsTruncated", - "limit_key": "MaxItems", - "result_key": "Certificates" - }, - "ListUserPolicies": { - "input_token": "Marker", - "output_token": "Marker", - "more_results": "IsTruncated", - "limit_key": "MaxItems", - "result_key": "PolicyNames" - }, - "ListUsers": { - "input_token": "Marker", - "output_token": "Marker", - "more_results": "IsTruncated", - "limit_key": "MaxItems", - "result_key": "Users" - }, - "ListVirtualMFADevices": { - "input_token": "Marker", - "output_token": "Marker", - "more_results": "IsTruncated", - "limit_key": "MaxItems", - "result_key": "VirtualMFADevices" - } - } -} diff --git a/src/github.com/getlantern/aws-sdk-go/apis/importexport/2010-06-01.normal.json b/src/github.com/getlantern/aws-sdk-go/apis/importexport/2010-06-01.normal.json deleted file mode 100644 index ebbca45136..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/apis/importexport/2010-06-01.normal.json +++ /dev/null @@ -1,687 +0,0 @@ -{ - "metadata":{ - "apiVersion":"2010-06-01", - "endpointPrefix":"importexport", - "globalEndpoint":"importexport.amazonaws.com", - "serviceFullName":"AWS Import/Export", - "signatureVersion":"v2", - "xmlNamespace":"http://importexport.amazonaws.com/doc/2010-06-01/", - "protocol":"query" - }, - "documentation":"AWS Import/Export Service AWS Import/Export accelerates transferring large amounts of data between the AWS cloud and portable storage devices that you mail to us. AWS Import/Export transfers data directly onto and off of your storage devices using Amazon's high-speed internal network and bypassing the Internet. For large data sets, AWS Import/Export is often faster than Internet transfer and more cost effective than upgrading your connectivity.", - "operations":{ - "CancelJob":{ - "name":"CancelJob", - "http":{ - "method":"POST", - "requestUri":"/?Operation=CancelJob" - }, - "input":{ - "shape":"CancelJobInput", - "documentation":"Input structure for the CancelJob operation." - }, - "output":{ - "shape":"CancelJobOutput", - "documentation":"Output structure for the CancelJob operation.", - "resultWrapper":"CancelJobResult" - }, - "errors":[ - { - "shape":"InvalidJobIdException", - "exception":true, - "documentation":"The JOBID was missing, not found, or not associated with the AWS account." - }, - { - "shape":"ExpiredJobIdException", - "exception":true, - "documentation":"Indicates that the specified job has expired out of the system." - }, - { - "shape":"CanceledJobIdException", - "exception":true, - "documentation":"The specified job ID has been canceled and is no longer valid." - }, - { - "shape":"UnableToCancelJobIdException", - "exception":true, - "documentation":"AWS Import/Export cannot cancel the job" - }, - { - "shape":"InvalidAccessKeyIdException", - "exception":true, - "documentation":"The AWS Access Key ID specified in the request did not match the manifest's accessKeyId value. The manifest and the request authentication must use the same AWS Access Key ID." - } - ], - "documentation":"This operation cancels a specified job. Only the job owner can cancel it. The operation fails if the job has already started or is complete." - }, - "CreateJob":{ - "name":"CreateJob", - "http":{ - "method":"POST", - "requestUri":"/?Operation=CreateJob" - }, - "input":{ - "shape":"CreateJobInput", - "documentation":"Input structure for the CreateJob operation." - }, - "output":{ - "shape":"CreateJobOutput", - "documentation":"Output structure for the CreateJob operation.", - "resultWrapper":"CreateJobResult" - }, - "errors":[ - { - "shape":"MissingParameterException", - "exception":true, - "documentation":"One or more required parameters was missing from the request." - }, - { - "shape":"InvalidParameterException", - "exception":true, - "documentation":"One or more parameters had an invalid value." - }, - { - "shape":"InvalidParameterException", - "exception":true, - "documentation":"One or more parameters had an invalid value." - }, - { - "shape":"InvalidAccessKeyIdException", - "exception":true, - "documentation":"The AWS Access Key ID specified in the request did not match the manifest's accessKeyId value. The manifest and the request authentication must use the same AWS Access Key ID." - }, - { - "shape":"InvalidAddressException", - "exception":true, - "documentation":"The address specified in the manifest is invalid." - }, - { - "shape":"InvalidManifestFieldException", - "exception":true, - "documentation":"One or more manifest fields was invalid. Please correct and resubmit." - }, - { - "shape":"MissingManifestFieldException", - "exception":true, - "documentation":"One or more required fields were missing from the manifest file. Please correct and resubmit." - }, - { - "shape":"NoSuchBucketException", - "exception":true, - "documentation":"The specified bucket does not exist. Create the specified bucket or change the manifest's bucket, exportBucket, or logBucket field to a bucket that the account, as specified by the manifest's Access Key ID, has write permissions to." - }, - { - "shape":"MissingCustomsException", - "exception":true, - "documentation":"One or more required customs parameters was missing from the manifest." - }, - { - "shape":"InvalidCustomsException", - "exception":true, - "documentation":"One or more customs parameters was invalid. Please correct and resubmit." - }, - { - "shape":"InvalidFileSystemException", - "exception":true, - "documentation":"File system specified in export manifest is invalid." - }, - { - "shape":"MultipleRegionsException", - "exception":true, - "documentation":"Your manifest file contained buckets from multiple regions. A job is restricted to buckets from one region. Please correct and resubmit." - }, - { - "shape":"BucketPermissionException", - "exception":true, - "documentation":"The account specified does not have the appropriate bucket permissions." - }, - { - "shape":"MalformedManifestException", - "exception":true, - "documentation":"Your manifest is not well-formed." - } - ], - "documentation":"This operation initiates the process of scheduling an upload or download of your data. You include in the request a manifest that describes the data transfer specifics. The response to the request includes a job ID, which you can use in other operations, a signature that you use to identify your storage device, and the address where you should ship your storage device." - }, - "GetStatus":{ - "name":"GetStatus", - "http":{ - "method":"POST", - "requestUri":"/?Operation=GetStatus" - }, - "input":{ - "shape":"GetStatusInput", - "documentation":"Input structure for the GetStatus operation." - }, - "output":{ - "shape":"GetStatusOutput", - "documentation":"Output structure for the GetStatus operation.", - "resultWrapper":"GetStatusResult" - }, - "errors":[ - { - "shape":"InvalidJobIdException", - "exception":true, - "documentation":"The JOBID was missing, not found, or not associated with the AWS account." - }, - { - "shape":"ExpiredJobIdException", - "exception":true, - "documentation":"Indicates that the specified job has expired out of the system." - }, - { - "shape":"CanceledJobIdException", - "exception":true, - "documentation":"The specified job ID has been canceled and is no longer valid." - }, - { - "shape":"InvalidAccessKeyIdException", - "exception":true, - "documentation":"The AWS Access Key ID specified in the request did not match the manifest's accessKeyId value. The manifest and the request authentication must use the same AWS Access Key ID." - } - ], - "documentation":"This operation returns information about a job, including where the job is in the processing pipeline, the status of the results, and the signature value associated with the job. You can only return information about jobs you own." - }, - "ListJobs":{ - "name":"ListJobs", - "http":{ - "method":"POST", - "requestUri":"/?Operation=ListJobs" - }, - "input":{ - "shape":"ListJobsInput", - "documentation":"Input structure for the ListJobs operation." - }, - "output":{ - "shape":"ListJobsOutput", - "documentation":"Output structure for the ListJobs operation.", - "resultWrapper":"ListJobsResult" - }, - "errors":[ - { - "shape":"InvalidParameterException", - "exception":true, - "documentation":"One or more parameters had an invalid value." - }, - { - "shape":"InvalidAccessKeyIdException", - "exception":true, - "documentation":"The AWS Access Key ID specified in the request did not match the manifest's accessKeyId value. The manifest and the request authentication must use the same AWS Access Key ID." - } - ], - "documentation":"This operation returns the jobs associated with the requester. AWS Import/Export lists the jobs in reverse chronological order based on the date of creation. For example if Job Test1 was created 2009Dec30 and Test2 was created 2010Feb05, the ListJobs operation would return Test2 followed by Test1." - }, - "UpdateJob":{ - "name":"UpdateJob", - "http":{ - "method":"POST", - "requestUri":"/?Operation=UpdateJob" - }, - "input":{ - "shape":"UpdateJobInput", - "documentation":"Input structure for the UpateJob operation." - }, - "output":{ - "shape":"UpdateJobOutput", - "documentation":"Output structure for the UpateJob operation.", - "resultWrapper":"UpdateJobResult" - }, - "errors":[ - { - "shape":"MissingParameterException", - "exception":true, - "documentation":"One or more required parameters was missing from the request." - }, - { - "shape":"InvalidParameterException", - "exception":true, - "documentation":"One or more parameters had an invalid value." - }, - { - "shape":"InvalidAccessKeyIdException", - "exception":true, - "documentation":"The AWS Access Key ID specified in the request did not match the manifest's accessKeyId value. The manifest and the request authentication must use the same AWS Access Key ID." - }, - { - "shape":"InvalidAddressException", - "exception":true, - "documentation":"The address specified in the manifest is invalid." - }, - { - "shape":"InvalidManifestFieldException", - "exception":true, - "documentation":"One or more manifest fields was invalid. Please correct and resubmit." - }, - { - "shape":"InvalidJobIdException", - "exception":true, - "documentation":"The JOBID was missing, not found, or not associated with the AWS account." - }, - { - "shape":"MissingManifestFieldException", - "exception":true, - "documentation":"One or more required fields were missing from the manifest file. Please correct and resubmit." - }, - { - "shape":"NoSuchBucketException", - "exception":true, - "documentation":"The specified bucket does not exist. Create the specified bucket or change the manifest's bucket, exportBucket, or logBucket field to a bucket that the account, as specified by the manifest's Access Key ID, has write permissions to." - }, - { - "shape":"ExpiredJobIdException", - "exception":true, - "documentation":"Indicates that the specified job has expired out of the system." - }, - { - "shape":"CanceledJobIdException", - "exception":true, - "documentation":"The specified job ID has been canceled and is no longer valid." - }, - { - "shape":"MissingCustomsException", - "exception":true, - "documentation":"One or more required customs parameters was missing from the manifest." - }, - { - "shape":"InvalidCustomsException", - "exception":true, - "documentation":"One or more customs parameters was invalid. Please correct and resubmit." - }, - { - "shape":"InvalidFileSystemException", - "exception":true, - "documentation":"File system specified in export manifest is invalid." - }, - { - "shape":"MultipleRegionsException", - "exception":true, - "documentation":"Your manifest file contained buckets from multiple regions. A job is restricted to buckets from one region. Please correct and resubmit." - }, - { - "shape":"BucketPermissionException", - "exception":true, - "documentation":"The account specified does not have the appropriate bucket permissions." - }, - { - "shape":"MalformedManifestException", - "exception":true, - "documentation":"Your manifest is not well-formed." - } - ], - "documentation":"You use this operation to change the parameters specified in the original manifest file by supplying a new manifest file. The manifest file attached to this request replaces the original manifest file. You can only use the operation after a CreateJob request but before the data transfer starts and you can only use it on jobs you own." - } - }, - "shapes":{ - "AwsShippingAddress":{ - "type":"string", - "documentation":"Address you ship your storage device to." - }, - "BucketPermissionException":{ - "type":"structure", - "members":{ - "message":{"shape":"ErrorMessage"} - }, - "exception":true, - "documentation":"The account specified does not have the appropriate bucket permissions." - }, - "CancelJobInput":{ - "type":"structure", - "required":["JobId"], - "members":{ - "JobId":{"shape":"JobId"} - }, - "documentation":"Input structure for the CancelJob operation." - }, - "CancelJobOutput":{ - "type":"structure", - "members":{ - "Success":{"shape":"Success"} - }, - "documentation":"Output structure for the CancelJob operation." - }, - "CanceledJobIdException":{ - "type":"structure", - "members":{ - "message":{"shape":"ErrorMessage"} - }, - "exception":true, - "documentation":"The specified job ID has been canceled and is no longer valid." - }, - "Carrier":{ - "type":"string", - "documentation":"Name of the shipping company. This value is included when the LocationCode is \"Returned\"." - }, - "CreateJobInput":{ - "type":"structure", - "required":[ - "JobType", - "Manifest", - "ValidateOnly" - ], - "members":{ - "JobType":{"shape":"JobType"}, - "Manifest":{"shape":"Manifest"}, - "ManifestAddendum":{"shape":"ManifestAddendum"}, - "ValidateOnly":{"shape":"ValidateOnly"} - }, - "documentation":"Input structure for the CreateJob operation." - }, - "CreateJobOutput":{ - "type":"structure", - "members":{ - "JobId":{"shape":"JobId"}, - "JobType":{"shape":"JobType"}, - "AwsShippingAddress":{"shape":"AwsShippingAddress"}, - "Signature":{"shape":"Signature"}, - "SignatureFileContents":{"shape":"SignatureFileContents"}, - "WarningMessage":{"shape":"WarningMessage"} - }, - "documentation":"Output structure for the CreateJob operation." - }, - "CreationDate":{ - "type":"timestamp", - "documentation":"Timestamp of the CreateJob request in ISO8601 date format. For example \"2010-03-28T20:27:35Z\"." - }, - "CurrentManifest":{ - "type":"string", - "documentation":"The last manifest submitted, which will be used to process the job." - }, - "ErrorCount":{ - "type":"integer", - "documentation":"Number of errors. We return this value when the ProgressCode is Success or SuccessWithErrors." - }, - "ErrorMessage":{ - "type":"string", - "documentation":"The human-readable description of a particular error." - }, - "ExpiredJobIdException":{ - "type":"structure", - "members":{ - "message":{"shape":"ErrorMessage"} - }, - "exception":true, - "documentation":"Indicates that the specified job has expired out of the system." - }, - "GetStatusInput":{ - "type":"structure", - "required":["JobId"], - "members":{ - "JobId":{"shape":"JobId"} - }, - "documentation":"Input structure for the GetStatus operation." - }, - "GetStatusOutput":{ - "type":"structure", - "members":{ - "JobId":{"shape":"JobId"}, - "JobType":{"shape":"JobType"}, - "AwsShippingAddress":{"shape":"AwsShippingAddress"}, - "LocationCode":{"shape":"LocationCode"}, - "LocationMessage":{"shape":"LocationMessage"}, - "ProgressCode":{"shape":"ProgressCode"}, - "ProgressMessage":{"shape":"ProgressMessage"}, - "Carrier":{"shape":"Carrier"}, - "TrackingNumber":{"shape":"TrackingNumber"}, - "LogBucket":{"shape":"LogBucket"}, - "LogKey":{"shape":"LogKey"}, - "ErrorCount":{"shape":"ErrorCount"}, - "Signature":{"shape":"Signature"}, - "SignatureFileContents":{"shape":"Signature"}, - "CurrentManifest":{"shape":"CurrentManifest"}, - "CreationDate":{"shape":"CreationDate"} - }, - "documentation":"Output structure for the GetStatus operation." - }, - "InvalidAccessKeyIdException":{ - "type":"structure", - "members":{ - "message":{"shape":"ErrorMessage"} - }, - "exception":true, - "documentation":"The AWS Access Key ID specified in the request did not match the manifest's accessKeyId value. The manifest and the request authentication must use the same AWS Access Key ID." - }, - "InvalidAddressException":{ - "type":"structure", - "members":{ - "message":{"shape":"ErrorMessage"} - }, - "exception":true, - "documentation":"The address specified in the manifest is invalid." - }, - "InvalidCustomsException":{ - "type":"structure", - "members":{ - "message":{"shape":"ErrorMessage"} - }, - "exception":true, - "documentation":"One or more customs parameters was invalid. Please correct and resubmit." - }, - "InvalidFileSystemException":{ - "type":"structure", - "members":{ - "message":{"shape":"ErrorMessage"} - }, - "exception":true, - "documentation":"File system specified in export manifest is invalid." - }, - "InvalidJobIdException":{ - "type":"structure", - "members":{ - "message":{"shape":"ErrorMessage"} - }, - "exception":true, - "documentation":"The JOBID was missing, not found, or not associated with the AWS account." - }, - "InvalidManifestFieldException":{ - "type":"structure", - "members":{ - "message":{"shape":"ErrorMessage"} - }, - "exception":true, - "documentation":"One or more manifest fields was invalid. Please correct and resubmit." - }, - "InvalidParameterException":{ - "type":"structure", - "members":{ - "message":{"shape":"ErrorMessage"} - }, - "exception":true, - "documentation":"One or more parameters had an invalid value." - }, - "IsCanceled":{ - "type":"boolean", - "documentation":"Indicates whether the job was canceled." - }, - "IsTruncated":{ - "type":"boolean", - "documentation":"Indicates whether the list of jobs was truncated. If true, then call ListJobs again using the last JobId element as the marker." - }, - "Job":{ - "type":"structure", - "members":{ - "JobId":{"shape":"JobId"}, - "CreationDate":{"shape":"CreationDate"}, - "IsCanceled":{"shape":"IsCanceled"}, - "JobType":{"shape":"JobType"} - }, - "documentation":"Representation of a job returned by the ListJobs operation." - }, - "JobId":{ - "type":"string", - "documentation":"A unique identifier which refers to a particular job." - }, - "JobType":{ - "type":"string", - "enum":[ - "Import", - "Export" - ], - "documentation":"Specifies whether the job to initiate is an import or export job." - }, - "JobsList":{ - "type":"list", - "member":{"shape":"Job"}, - "documentation":"A list container for Jobs returned by the ListJobs operation." - }, - "ListJobsInput":{ - "type":"structure", - "members":{ - "MaxJobs":{"shape":"MaxJobs"}, - "Marker":{"shape":"Marker"} - }, - "documentation":"Input structure for the ListJobs operation." - }, - "ListJobsOutput":{ - "type":"structure", - "members":{ - "Jobs":{"shape":"JobsList"}, - "IsTruncated":{"shape":"IsTruncated"} - }, - "documentation":"Output structure for the ListJobs operation." - }, - "LocationCode":{ - "type":"string", - "documentation":"A token representing the location of the storage device, such as \"AtAWS\"." - }, - "LocationMessage":{ - "type":"string", - "documentation":"A more human readable form of the physical location of the storage device." - }, - "LogBucket":{ - "type":"string", - "documentation":"Amazon S3 bucket for user logs." - }, - "LogKey":{ - "type":"string", - "documentation":"The key where the user logs were stored." - }, - "MalformedManifestException":{ - "type":"structure", - "members":{ - "message":{"shape":"ErrorMessage"} - }, - "exception":true, - "documentation":"Your manifest is not well-formed." - }, - "Manifest":{ - "type":"string", - "documentation":"The UTF-8 encoded text of the manifest file." - }, - "ManifestAddendum":{ - "type":"string", - "documentation":"For internal use only." - }, - "Marker":{ - "type":"string", - "documentation":"Specifies the JOBID to start after when listing the jobs created with your account. AWS Import/Export lists your jobs in reverse chronological order. See MaxJobs." - }, - "MaxJobs":{ - "type":"integer", - "documentation":"Sets the maximum number of jobs returned in the response. If there are additional jobs that were not returned because MaxJobs was exceeded, the response contains <IsTruncated>true</IsTruncated>. To return the additional jobs, see Marker." - }, - "MissingCustomsException":{ - "type":"structure", - "members":{ - "message":{"shape":"ErrorMessage"} - }, - "exception":true, - "documentation":"One or more required customs parameters was missing from the manifest." - }, - "MissingManifestFieldException":{ - "type":"structure", - "members":{ - "message":{"shape":"ErrorMessage"} - }, - "exception":true, - "documentation":"One or more required fields were missing from the manifest file. Please correct and resubmit." - }, - "MissingParameterException":{ - "type":"structure", - "members":{ - "message":{"shape":"ErrorMessage"} - }, - "exception":true, - "documentation":"One or more required parameters was missing from the request." - }, - "MultipleRegionsException":{ - "type":"structure", - "members":{ - "message":{"shape":"ErrorMessage"} - }, - "exception":true, - "documentation":"Your manifest file contained buckets from multiple regions. A job is restricted to buckets from one region. Please correct and resubmit." - }, - "NoSuchBucketException":{ - "type":"structure", - "members":{ - "message":{"shape":"ErrorMessage"} - }, - "exception":true, - "documentation":"The specified bucket does not exist. Create the specified bucket or change the manifest's bucket, exportBucket, or logBucket field to a bucket that the account, as specified by the manifest's Access Key ID, has write permissions to." - }, - "ProgressCode":{ - "type":"string", - "documentation":"A token representing the state of the job, such as \"Started\"." - }, - "ProgressMessage":{ - "type":"string", - "documentation":"A more human readable form of the job status." - }, - "Signature":{ - "type":"string", - "documentation":"An encrypted code used to authenticate the request and response, for example, \"DV+TpDfx1/TdSE9ktyK9k/bDTVI=\". Only use this value is you want to create the signature file yourself. Generally you should use the SignatureFileContents value." - }, - "SignatureFileContents":{ - "type":"string", - "documentation":"The actual text of the SIGNATURE file to be written to disk." - }, - "Success":{ - "type":"boolean", - "documentation":"Specifies whether (true) or not (false) AWS Import/Export updated your job." - }, - "TrackingNumber":{ - "type":"string", - "documentation":"The shipping tracking number assigned by AWS Import/Export to the storage device when it's returned to you. We return this value when the LocationCode is \"Returned\"." - }, - "UnableToCancelJobIdException":{ - "type":"structure", - "members":{ - "message":{"shape":"ErrorMessage"} - }, - "exception":true, - "documentation":"AWS Import/Export cannot cancel the job" - }, - "UpdateJobInput":{ - "type":"structure", - "required":[ - "JobId", - "Manifest", - "JobType", - "ValidateOnly" - ], - "members":{ - "JobId":{"shape":"JobId"}, - "Manifest":{"shape":"Manifest"}, - "JobType":{"shape":"JobType"}, - "ValidateOnly":{"shape":"ValidateOnly"} - }, - "documentation":"Input structure for the UpateJob operation." - }, - "UpdateJobOutput":{ - "type":"structure", - "members":{ - "Success":{"shape":"Success"}, - "WarningMessage":{"shape":"WarningMessage"} - }, - "documentation":"Output structure for the UpateJob operation." - }, - "ValidateOnly":{ - "type":"boolean", - "documentation":"Validate the manifest and parameter values in the request but do not actually create a job." - }, - "WarningMessage":{ - "type":"string", - "documentation":"An optional message notifying you of non-fatal issues with the job, such as use of an incompatible Amazon S3 bucket name." - } - } -} diff --git a/src/github.com/getlantern/aws-sdk-go/apis/importexport/2010-06-01.paginators.json b/src/github.com/getlantern/aws-sdk-go/apis/importexport/2010-06-01.paginators.json deleted file mode 100644 index 702385ea6f..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/apis/importexport/2010-06-01.paginators.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "pagination": { - "ListJobs": { - "input_token": "Marker", - "output_token": "Jobs[-1].JobId", - "more_results": "IsTruncated", - "limit_key": "MaxJobs", - "result_key": "Jobs" - } - } -} diff --git a/src/github.com/getlantern/aws-sdk-go/apis/kinesis/2013-12-02.normal.json b/src/github.com/getlantern/aws-sdk-go/apis/kinesis/2013-12-02.normal.json deleted file mode 100644 index 965975c44e..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/apis/kinesis/2013-12-02.normal.json +++ /dev/null @@ -1,1164 +0,0 @@ -{ - "metadata":{ - "apiVersion":"2013-12-02", - "endpointPrefix":"kinesis", - "jsonVersion":"1.1", - "serviceAbbreviation":"Kinesis", - "serviceFullName":"Amazon Kinesis", - "signatureVersion":"v4", - "targetPrefix":"Kinesis_20131202", - "protocol":"json" - }, - "documentation":"Amazon Kinesis Service API Reference

Amazon Kinesis is a managed service that scales elastically for real time processing of streaming big data.

", - "operations":{ - "AddTagsToStream":{ - "name":"AddTagsToStream", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"AddTagsToStreamInput", - "documentation":"

Represents the input for AddTagsToStream.

" - }, - "errors":[ - { - "shape":"ResourceNotFoundException", - "exception":true, - "documentation":"

The requested resource could not be found. It might not be specified correctly, or it might not be in the ACTIVE state.

" - }, - { - "shape":"ResourceInUseException", - "exception":true, - "documentation":"

The resource is not available for this operation. For example, you attempted to split a shard but the stream is not in the ACTIVE state.

" - }, - { - "shape":"InvalidArgumentException", - "exception":true, - "documentation":"

A specified parameter exceeds its restrictions, is not supported, or can't be used. For more information, see the returned message.

" - }, - { - "shape":"LimitExceededException", - "exception":true, - "documentation":"

The requested resource exceeds the maximum number allowed, or the number of concurrent stream requests exceeds the maximum number allowed (5).

" - } - ], - "documentation":"

Adds or updates tags for the specified Amazon Kinesis stream. Each stream can have up to 10 tags.

If tags have already been assigned to the stream, AddTagsToStream overwrites any existing tags that correspond to the specified tag keys.

" - }, - "CreateStream":{ - "name":"CreateStream", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"CreateStreamInput", - "documentation":"

Represents the input for CreateStream.

" - }, - "errors":[ - { - "shape":"ResourceInUseException", - "exception":true, - "documentation":"

The resource is not available for this operation. For example, you attempted to split a shard but the stream is not in the ACTIVE state.

" - }, - { - "shape":"LimitExceededException", - "exception":true, - "documentation":"

The requested resource exceeds the maximum number allowed, or the number of concurrent stream requests exceeds the maximum number allowed (5).

" - }, - { - "shape":"InvalidArgumentException", - "exception":true, - "documentation":"

A specified parameter exceeds its restrictions, is not supported, or can't be used. For more information, see the returned message.

" - } - ], - "documentation":"

Creates a Amazon Kinesis stream. A stream captures and transports data records that are continuously emitted from different data sources or producers. Scale-out within an Amazon Kinesis stream is explicitly supported by means of shards, which are uniquely identified groups of data records in an Amazon Kinesis stream.

You specify and control the number of shards that a stream is composed of. Each open shard can support up to 5 read transactions per second, up to a maximum total of 2 MB of data read per second. Each shard can support up to 1000 records written per second, up to a maximum total of 1 MB data written per second. You can add shards to a stream if the amount of data input increases and you can remove shards if the amount of data input decreases.

The stream name identifies the stream. The name is scoped to the AWS account used by the application. It is also scoped by region. That is, two streams in two different accounts can have the same name, and two streams in the same account, but in two different regions, can have the same name.

CreateStream is an asynchronous operation. Upon receiving a CreateStream request, Amazon Kinesis immediately returns and sets the stream status to CREATING. After the stream is created, Amazon Kinesis sets the stream status to ACTIVE. You should perform read and write operations only on an ACTIVE stream.

You receive a LimitExceededException when making a CreateStream request if you try to do one of the following:

The default limit for an AWS account is 10 shards per stream. If you need to create a stream with more than 10 shards, contact AWS Support to increase the limit on your account.

You can use DescribeStream to check the stream status, which is returned in StreamStatus.

CreateStream has a limit of 5 transactions per second per account.

" - }, - "DeleteStream":{ - "name":"DeleteStream", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DeleteStreamInput", - "documentation":"

Represents the input for DeleteStream.

" - }, - "errors":[ - { - "shape":"ResourceNotFoundException", - "exception":true, - "documentation":"

The requested resource could not be found. It might not be specified correctly, or it might not be in the ACTIVE state.

" - }, - { - "shape":"LimitExceededException", - "exception":true, - "documentation":"

The requested resource exceeds the maximum number allowed, or the number of concurrent stream requests exceeds the maximum number allowed (5).

" - } - ], - "documentation":"

Deletes a stream and all its shards and data. You must shut down any applications that are operating on the stream before you delete the stream. If an application attempts to operate on a deleted stream, it will receive the exception ResourceNotFoundException.

If the stream is in the ACTIVE state, you can delete it. After a DeleteStream request, the specified stream is in the DELETING state until Amazon Kinesis completes the deletion.

Note: Amazon Kinesis might continue to accept data read and write operations, such as PutRecord, PutRecords, and GetRecords, on a stream in the DELETING state until the stream deletion is complete.

When you delete a stream, any shards in that stream are also deleted, and any tags are dissociated from the stream.

You can use the DescribeStream operation to check the state of the stream, which is returned in StreamStatus.

DeleteStream has a limit of 5 transactions per second per account.

" - }, - "DescribeStream":{ - "name":"DescribeStream", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DescribeStreamInput", - "documentation":"

Represents the input for DescribeStream.

" - }, - "output":{ - "shape":"DescribeStreamOutput", - "documentation":"

Represents the output for DescribeStream.

" - }, - "errors":[ - { - "shape":"ResourceNotFoundException", - "exception":true, - "documentation":"

The requested resource could not be found. It might not be specified correctly, or it might not be in the ACTIVE state.

" - }, - { - "shape":"LimitExceededException", - "exception":true, - "documentation":"

The requested resource exceeds the maximum number allowed, or the number of concurrent stream requests exceeds the maximum number allowed (5).

" - } - ], - "documentation":"

Describes the specified stream.

The information about the stream includes its current status, its Amazon Resource Name (ARN), and an array of shard objects. For each shard object, there is information about the hash key and sequence number ranges that the shard spans, and the IDs of any earlier shards that played in a role in creating the shard. A sequence number is the identifier associated with every record ingested in the Amazon Kinesis stream. The sequence number is assigned when a record is put into the stream.

You can limit the number of returned shards using the Limit parameter. The number of shards in a stream may be too large to return from a single call to DescribeStream. You can detect this by using the HasMoreShards flag in the returned output. HasMoreShards is set to true when there is more data available.

DescribeStream is a paginated operation. If there are more shards available, you can request them using the shard ID of the last shard returned. Specify this ID in the ExclusiveStartShardId parameter in a subsequent request to DescribeStream.

DescribeStream has a limit of 10 transactions per second per account.

" - }, - "GetRecords":{ - "name":"GetRecords", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"GetRecordsInput", - "documentation":"

Represents the input for GetRecords.

" - }, - "output":{ - "shape":"GetRecordsOutput", - "documentation":"

Represents the output for GetRecords.

" - }, - "errors":[ - { - "shape":"ResourceNotFoundException", - "exception":true, - "documentation":"

The requested resource could not be found. It might not be specified correctly, or it might not be in the ACTIVE state.

" - }, - { - "shape":"InvalidArgumentException", - "exception":true, - "documentation":"

A specified parameter exceeds its restrictions, is not supported, or can't be used. For more information, see the returned message.

" - }, - { - "shape":"ProvisionedThroughputExceededException", - "exception":true, - "documentation":"

The request rate is too high, or the requested data is too large for the available throughput. Reduce the frequency or size of your requests. For more information, see Error Retries and Exponential Backoff in AWS in the AWS General Reference.

" - }, - { - "shape":"ExpiredIteratorException", - "exception":true, - "documentation":"

The provided iterator exceeds the maximum age allowed.

" - } - ], - "documentation":"

Gets data records from a shard.

Specify a shard iterator using the ShardIterator parameter. The shard iterator specifies the position in the shard from which you want to start reading data records sequentially. If there are no records available in the portion of the shard that the iterator points to, GetRecords returns an empty list. Note that it might take multiple calls to get to a portion of the shard that contains records.

You can scale by provisioning multiple shards. Your application should have one thread per shard, each reading continuously from its stream. To read from a stream continually, call GetRecords in a loop. Use GetShardIterator to get the shard iterator to specify in the first GetRecords call. GetRecords returns a new shard iterator in NextShardIterator. Specify the shard iterator returned in NextShardIterator in subsequent calls to GetRecords. Note that if the shard has been closed, the shard iterator can't return more data and GetRecords returns null in NextShardIterator. You can terminate the loop when the shard is closed, or when the shard iterator reaches the record with the sequence number or other attribute that marks it as the last record to process.

Each data record can be up to 50 KB in size, and each shard can read up to 2 MB per second. You can ensure that your calls don't exceed the maximum supported size or throughput by using the Limit parameter to specify the maximum number of records that GetRecords can return. Consider your average record size when determining this limit. For example, if your average record size is 40 KB, you can limit the data returned to about 1 MB per call by specifying 25 as the limit.

The size of the data returned by GetRecords will vary depending on the utilization of the shard. The maximum size of data that GetRecords can return is 10 MB. If a call returns 10 MB of data, subsequent calls made within the next 5 seconds throw ProvisionedThroughputExceededException. If there is insufficient provisioned throughput on the shard, subsequent calls made within the next 1 second throw ProvisionedThroughputExceededException. Note that GetRecords won't return any data when it throws an exception. For this reason, we recommend that you wait one second between calls to GetRecords; however, it's possible that the application will get exceptions for longer than 1 second.

To detect whether the application is falling behind in processing, add a timestamp to your records and note how long it takes to process them. You can also monitor how much data is in a stream using the CloudWatch metrics for write operations (PutRecord and PutRecords). For more information, see Monitoring Amazon Kinesis with Amazon CloudWatch in the Amazon Kinesis Developer Guide.

" - }, - "GetShardIterator":{ - "name":"GetShardIterator", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"GetShardIteratorInput", - "documentation":"

Represents the input for GetShardIterator.

" - }, - "output":{ - "shape":"GetShardIteratorOutput", - "documentation":"

Represents the output for GetShardIterator.

" - }, - "errors":[ - { - "shape":"ResourceNotFoundException", - "exception":true, - "documentation":"

The requested resource could not be found. It might not be specified correctly, or it might not be in the ACTIVE state.

" - }, - { - "shape":"InvalidArgumentException", - "exception":true, - "documentation":"

A specified parameter exceeds its restrictions, is not supported, or can't be used. For more information, see the returned message.

" - }, - { - "shape":"ProvisionedThroughputExceededException", - "exception":true, - "documentation":"

The request rate is too high, or the requested data is too large for the available throughput. Reduce the frequency or size of your requests. For more information, see Error Retries and Exponential Backoff in AWS in the AWS General Reference.

" - } - ], - "documentation":"

Gets a shard iterator. A shard iterator expires five minutes after it is returned to the requester.

A shard iterator specifies the position in the shard from which to start reading data records sequentially. A shard iterator specifies this position using the sequence number of a data record in a shard. A sequence number is the identifier associated with every record ingested in the Amazon Kinesis stream. The sequence number is assigned when a record is put into the stream.

You must specify the shard iterator type. For example, you can set the ShardIteratorType parameter to read exactly from the position denoted by a specific sequence number by using the AT_SEQUENCE_NUMBER shard iterator type, or right after the sequence number by using the AFTER_SEQUENCE_NUMBER shard iterator type, using sequence numbers returned by earlier calls to PutRecord, PutRecords, GetRecords, or DescribeStream. You can specify the shard iterator type TRIM_HORIZON in the request to cause ShardIterator to point to the last untrimmed record in the shard in the system, which is the oldest data record in the shard. Or you can point to just after the most recent record in the shard, by using the shard iterator type LATEST, so that you always read the most recent data in the shard.

When you repeatedly read from an Amazon Kinesis stream use a GetShardIterator request to get the first shard iterator to to use in your first GetRecords request and then use the shard iterator returned by the GetRecords request in NextShardIterator for subsequent reads. A new shard iterator is returned by every GetRecords request in NextShardIterator, which you use in the ShardIterator parameter of the next GetRecords request.

If a GetShardIterator request is made too often, you receive a ProvisionedThroughputExceededException. For more information about throughput limits, see GetRecords.

If the shard is closed, the iterator can't return more data, and GetShardIterator returns null for its ShardIterator. A shard can be closed using SplitShard or MergeShards.

GetShardIterator has a limit of 5 transactions per second per account per open shard.

" - }, - "ListStreams":{ - "name":"ListStreams", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"ListStreamsInput", - "documentation":"

Represents the input for ListStreams.

" - }, - "output":{ - "shape":"ListStreamsOutput", - "documentation":"

Represents the output for ListStreams.

" - }, - "errors":[ - { - "shape":"LimitExceededException", - "exception":true, - "documentation":"

The requested resource exceeds the maximum number allowed, or the number of concurrent stream requests exceeds the maximum number allowed (5).

" - } - ], - "documentation":"

Lists your streams.

The number of streams may be too large to return from a single call to ListStreams. You can limit the number of returned streams using the Limit parameter. If you do not specify a value for the Limit parameter, Amazon Kinesis uses the default limit, which is currently 10.

You can detect if there are more streams available to list by using the HasMoreStreams flag from the returned output. If there are more streams available, you can request more streams by using the name of the last stream returned by the ListStreams request in the ExclusiveStartStreamName parameter in a subsequent request to ListStreams. The group of stream names returned by the subsequent request is then added to the list. You can continue this process until all the stream names have been collected in the list.

ListStreams has a limit of 5 transactions per second per account.

" - }, - "ListTagsForStream":{ - "name":"ListTagsForStream", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"ListTagsForStreamInput", - "documentation":"

Represents the input for ListTagsForStream.

" - }, - "output":{ - "shape":"ListTagsForStreamOutput", - "documentation":"

Represents the output for ListTagsForStream.

" - }, - "errors":[ - { - "shape":"ResourceNotFoundException", - "exception":true, - "documentation":"

The requested resource could not be found. It might not be specified correctly, or it might not be in the ACTIVE state.

" - }, - { - "shape":"InvalidArgumentException", - "exception":true, - "documentation":"

A specified parameter exceeds its restrictions, is not supported, or can't be used. For more information, see the returned message.

" - }, - { - "shape":"LimitExceededException", - "exception":true, - "documentation":"

The requested resource exceeds the maximum number allowed, or the number of concurrent stream requests exceeds the maximum number allowed (5).

" - } - ], - "documentation":"

Lists the tags for the specified Amazon Kinesis stream.

" - }, - "MergeShards":{ - "name":"MergeShards", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"MergeShardsInput", - "documentation":"

Represents the input for MergeShards.

" - }, - "errors":[ - { - "shape":"ResourceNotFoundException", - "exception":true, - "documentation":"

The requested resource could not be found. It might not be specified correctly, or it might not be in the ACTIVE state.

" - }, - { - "shape":"ResourceInUseException", - "exception":true, - "documentation":"

The resource is not available for this operation. For example, you attempted to split a shard but the stream is not in the ACTIVE state.

" - }, - { - "shape":"InvalidArgumentException", - "exception":true, - "documentation":"

A specified parameter exceeds its restrictions, is not supported, or can't be used. For more information, see the returned message.

" - }, - { - "shape":"LimitExceededException", - "exception":true, - "documentation":"

The requested resource exceeds the maximum number allowed, or the number of concurrent stream requests exceeds the maximum number allowed (5).

" - } - ], - "documentation":"

Merges two adjacent shards in a stream and combines them into a single shard to reduce the stream's capacity to ingest and transport data. Two shards are considered adjacent if the union of the hash key ranges for the two shards form a contiguous set with no gaps. For example, if you have two shards, one with a hash key range of 276...381 and the other with a hash key range of 382...454, then you could merge these two shards into a single shard that would have a hash key range of 276...454. After the merge, the single child shard receives data for all hash key values covered by the two parent shards.

MergeShards is called when there is a need to reduce the overall capacity of a stream because of excess capacity that is not being used. You must specify the shard to be merged and the adjacent shard for a stream. For more information about merging shards, see Merge Two Shards in the Amazon Kinesis Developer Guide.

If the stream is in the ACTIVE state, you can call MergeShards. If a stream is in the CREATING, UPDATING, or DELETING state, MergeShards returns a ResourceInUseException. If the specified stream does not exist, MergeShards returns a ResourceNotFoundException.

You can use DescribeStream to check the state of the stream, which is returned in StreamStatus.

MergeShards is an asynchronous operation. Upon receiving a MergeShards request, Amazon Kinesis immediately returns a response and sets the StreamStatus to UPDATING. After the operation is completed, Amazon Kinesis sets the StreamStatus to ACTIVE. Read and write operations continue to work while the stream is in the UPDATING state.

You use DescribeStream to determine the shard IDs that are specified in the MergeShards request.

If you try to operate on too many streams in parallel using CreateStream, DeleteStream, MergeShards or SplitShard, you will receive a LimitExceededException.

MergeShards has limit of 5 transactions per second per account.

" - }, - "PutRecord":{ - "name":"PutRecord", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"PutRecordInput", - "documentation":"

Represents the input for PutRecord.

" - }, - "output":{ - "shape":"PutRecordOutput", - "documentation":"

Represents the output for PutRecord.

" - }, - "errors":[ - { - "shape":"ResourceNotFoundException", - "exception":true, - "documentation":"

The requested resource could not be found. It might not be specified correctly, or it might not be in the ACTIVE state.

" - }, - { - "shape":"InvalidArgumentException", - "exception":true, - "documentation":"

A specified parameter exceeds its restrictions, is not supported, or can't be used. For more information, see the returned message.

" - }, - { - "shape":"ProvisionedThroughputExceededException", - "exception":true, - "documentation":"

The request rate is too high, or the requested data is too large for the available throughput. Reduce the frequency or size of your requests. For more information, see Error Retries and Exponential Backoff in AWS in the AWS General Reference.

" - } - ], - "documentation":"

Puts (writes) a single data record from a producer into an Amazon Kinesis stream. Call PutRecord to send data from the producer into the Amazon Kinesis stream for real-time ingestion and subsequent processing, one record at a time. Each shard can support up to 1000 records written per second, up to a maximum total of 1 MB data written per second.

You must specify the name of the stream that captures, stores, and transports the data; a partition key; and the data blob itself.

The data blob can be any type of data; for example, a segment from a log file, geographic/location data, website clickstream data, and so on.

The partition key is used by Amazon Kinesis to distribute data across shards. Amazon Kinesis segregates the data records that belong to a data stream into multiple shards, using the partition key associated with each data record to determine which shard a given data record belongs to.

Partition keys are Unicode strings, with a maximum length limit of 256 bytes. An MD5 hash function is used to map partition keys to 128-bit integer values and to map associated data records to shards using the hash key ranges of the shards. You can override hashing the partition key to determine the shard by explicitly specifying a hash value using the ExplicitHashKey parameter. For more information, see Partition Key in the Amazon Kinesis Developer Guide.

PutRecord returns the shard ID of where the data record was placed and the sequence number that was assigned to the data record.

Sequence numbers generally increase over time. To guarantee strictly increasing ordering, use the SequenceNumberForOrdering parameter. For more information, see Sequence Number in the Amazon Kinesis Developer Guide.

If a PutRecord request cannot be processed because of insufficient provisioned throughput on the shard involved in the request, PutRecord throws ProvisionedThroughputExceededException.

Data records are accessible for only 24 hours from the time that they are added to an Amazon Kinesis stream.

" - }, - "PutRecords":{ - "name":"PutRecords", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"PutRecordsInput", - "documentation":"

A PutRecords request.

" - }, - "output":{ - "shape":"PutRecordsOutput", - "documentation":"

PutRecords results.

" - }, - "errors":[ - { - "shape":"ResourceNotFoundException", - "exception":true, - "documentation":"

The requested resource could not be found. It might not be specified correctly, or it might not be in the ACTIVE state.

" - }, - { - "shape":"InvalidArgumentException", - "exception":true, - "documentation":"

A specified parameter exceeds its restrictions, is not supported, or can't be used. For more information, see the returned message.

" - }, - { - "shape":"ProvisionedThroughputExceededException", - "exception":true, - "documentation":"

The request rate is too high, or the requested data is too large for the available throughput. Reduce the frequency or size of your requests. For more information, see Error Retries and Exponential Backoff in AWS in the AWS General Reference.

" - } - ], - "documentation":"

Puts (writes) multiple data records from a producer into an Amazon Kinesis stream in a single call (also referred to as a PutRecords request). Use this operation to send data from a data producer into the Amazon Kinesis stream for real-time ingestion and processing. Each shard can support up to 1000 records written per second, up to a maximum total of 1 MB data written per second.

You must specify the name of the stream that captures, stores, and transports the data; and an array of request Records, with each record in the array requiring a partition key and data blob.

The data blob can be any type of data; for example, a segment from a log file, geographic/location data, website clickstream data, and so on.

The partition key is used by Amazon Kinesis as input to a hash function that maps the partition key and associated data to a specific shard. An MD5 hash function is used to map partition keys to 128-bit integer values and to map associated data records to shards. As a result of this hashing mechanism, all data records with the same partition key map to the same shard within the stream. For more information, see Partition Key in the Amazon Kinesis Developer Guide.

Each record in the Records array may include an optional parameter, ExplicitHashKey, which overrides the partition key to shard mapping. This parameter allows a data producer to determine explicitly the shard where the record is stored. For more information, see Adding Multiple Records with PutRecords in the Amazon Kinesis Developer Guide.

The PutRecords response includes an array of response Records. Each record in the response array directly correlates with a record in the request array using natural ordering, from the top to the bottom of the request and response. The response Records array always includes the same number of records as the request array.

The response Records array includes both successfully and unsuccessfully processed records. Amazon Kinesis attempts to process all records in each PutRecords request. A single record failure does not stop the processing of subsequent records.

A successfully-processed record includes ShardId and SequenceNumber values. The ShardId parameter identifies the shard in the stream where the record is stored. The SequenceNumber parameter is an identifier assigned to the put record, unique to all records in the stream.

An unsuccessfully-processed record includes ErrorCode and ErrorMessage values. ErrorCode reflects the type of error and can be one of the following values: ProvisionedThroughputExceededException or InternalFailure. ErrorMessage provides more detailed information about the ProvisionedThroughputExceededException exception including the account ID, stream name, and shard ID of the record that was throttled.

Data records are accessible for only 24 hours from the time that they are added to an Amazon Kinesis stream.

" - }, - "RemoveTagsFromStream":{ - "name":"RemoveTagsFromStream", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"RemoveTagsFromStreamInput", - "documentation":"

Represents the input for RemoveTagsFromStream.

" - }, - "errors":[ - { - "shape":"ResourceNotFoundException", - "exception":true, - "documentation":"

The requested resource could not be found. It might not be specified correctly, or it might not be in the ACTIVE state.

" - }, - { - "shape":"ResourceInUseException", - "exception":true, - "documentation":"

The resource is not available for this operation. For example, you attempted to split a shard but the stream is not in the ACTIVE state.

" - }, - { - "shape":"InvalidArgumentException", - "exception":true, - "documentation":"

A specified parameter exceeds its restrictions, is not supported, or can't be used. For more information, see the returned message.

" - }, - { - "shape":"LimitExceededException", - "exception":true, - "documentation":"

The requested resource exceeds the maximum number allowed, or the number of concurrent stream requests exceeds the maximum number allowed (5).

" - } - ], - "documentation":"

Deletes tags from the specified Amazon Kinesis stream.

If you specify a tag that does not exist, it is ignored.

" - }, - "SplitShard":{ - "name":"SplitShard", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"SplitShardInput", - "documentation":"

Represents the input for SplitShard.

" - }, - "errors":[ - { - "shape":"ResourceNotFoundException", - "exception":true, - "documentation":"

The requested resource could not be found. It might not be specified correctly, or it might not be in the ACTIVE state.

" - }, - { - "shape":"ResourceInUseException", - "exception":true, - "documentation":"

The resource is not available for this operation. For example, you attempted to split a shard but the stream is not in the ACTIVE state.

" - }, - { - "shape":"InvalidArgumentException", - "exception":true, - "documentation":"

A specified parameter exceeds its restrictions, is not supported, or can't be used. For more information, see the returned message.

" - }, - { - "shape":"LimitExceededException", - "exception":true, - "documentation":"

The requested resource exceeds the maximum number allowed, or the number of concurrent stream requests exceeds the maximum number allowed (5).

" - } - ], - "documentation":"

Splits a shard into two new shards in the stream, to increase the stream's capacity to ingest and transport data. SplitShard is called when there is a need to increase the overall capacity of stream because of an expected increase in the volume of data records being ingested.

You can also use SplitShard when a shard appears to be approaching its maximum utilization, for example, when the set of producers sending data into the specific shard are suddenly sending more than previously anticipated. You can also call SplitShard to increase stream capacity, so that more Amazon Kinesis applications can simultaneously read data from the stream for real-time processing.

You must specify the shard to be split and the new hash key, which is the position in the shard where the shard gets split in two. In many cases, the new hash key might simply be the average of the beginning and ending hash key, but it can be any hash key value in the range being mapped into the shard. For more information about splitting shards, see Split a Shard in the Amazon Kinesis Developer Guide.

You can use DescribeStream to determine the shard ID and hash key values for the ShardToSplit and NewStartingHashKey parameters that are specified in the SplitShard request.

SplitShard is an asynchronous operation. Upon receiving a SplitShard request, Amazon Kinesis immediately returns a response and sets the stream status to UPDATING. After the operation is completed, Amazon Kinesis sets the stream status to ACTIVE. Read and write operations continue to work while the stream is in the UPDATING state.

You can use DescribeStream to check the status of the stream, which is returned in StreamStatus. If the stream is in the ACTIVE state, you can call SplitShard. If a stream is in CREATING or UPDATING or DELETING states, DescribeStream returns a ResourceInUseException.

If the specified stream does not exist, DescribeStream returns a ResourceNotFoundException. If you try to create more shards than are authorized for your account, you receive a LimitExceededException.

The default limit for an AWS account is 10 shards per stream. If you need to create a stream with more than 10 shards, contact AWS Support to increase the limit on your account.

If you try to operate on too many streams in parallel using CreateStream, DeleteStream, MergeShards or SplitShard, you receive a LimitExceededException.

SplitShard has limit of 5 transactions per second per account.

" - } - }, - "shapes":{ - "AddTagsToStreamInput":{ - "type":"structure", - "required":[ - "StreamName", - "Tags" - ], - "members":{ - "StreamName":{ - "shape":"StreamName", - "documentation":"

The name of the stream.

" - }, - "Tags":{ - "shape":"TagMap", - "documentation":"

The set of key-value pairs to use to create the tags.

" - } - }, - "documentation":"

Represents the input for AddTagsToStream.

" - }, - "BooleanObject":{"type":"boolean"}, - "CreateStreamInput":{ - "type":"structure", - "required":[ - "StreamName", - "ShardCount" - ], - "members":{ - "StreamName":{ - "shape":"StreamName", - "documentation":"

A name to identify the stream. The stream name is scoped to the AWS account used by the application that creates the stream. It is also scoped by region. That is, two streams in two different AWS accounts can have the same name, and two streams in the same AWS account, but in two different regions, can have the same name.

" - }, - "ShardCount":{ - "shape":"PositiveIntegerObject", - "documentation":"

The number of shards that the stream will use. The throughput of the stream is a function of the number of shards; more shards are required for greater provisioned throughput.

Note: The default limit for an AWS account is 10 shards per stream. If you need to create a stream with more than 10 shards, contact AWS Support to increase the limit on your account.

" - } - }, - "documentation":"

Represents the input for CreateStream.

" - }, - "Data":{ - "type":"blob", - "min":0, - "max":51200 - }, - "DeleteStreamInput":{ - "type":"structure", - "required":["StreamName"], - "members":{ - "StreamName":{ - "shape":"StreamName", - "documentation":"

The name of the stream to delete.

" - } - }, - "documentation":"

Represents the input for DeleteStream.

" - }, - "DescribeStreamInput":{ - "type":"structure", - "required":["StreamName"], - "members":{ - "StreamName":{ - "shape":"StreamName", - "documentation":"

The name of the stream to describe.

" - }, - "Limit":{ - "shape":"DescribeStreamInputLimit", - "documentation":"

The maximum number of shards to return.

" - }, - "ExclusiveStartShardId":{ - "shape":"ShardId", - "documentation":"

The shard ID of the shard to start with.

" - } - }, - "documentation":"

Represents the input for DescribeStream.

" - }, - "DescribeStreamInputLimit":{ - "type":"integer", - "min":1, - "max":10000 - }, - "DescribeStreamOutput":{ - "type":"structure", - "required":["StreamDescription"], - "members":{ - "StreamDescription":{ - "shape":"StreamDescription", - "documentation":"

The current status of the stream, the stream ARN, an array of shard objects that comprise the stream, and states whether there are more shards available.

" - } - }, - "documentation":"

Represents the output for DescribeStream.

" - }, - "ErrorCode":{"type":"string"}, - "ErrorMessage":{"type":"string"}, - "ExpiredIteratorException":{ - "type":"structure", - "members":{ - "message":{ - "shape":"ErrorMessage", - "documentation":"

A message that provides information about the error.

" - } - }, - "exception":true, - "documentation":"

The provided iterator exceeds the maximum age allowed.

" - }, - "GetRecordsInput":{ - "type":"structure", - "required":["ShardIterator"], - "members":{ - "ShardIterator":{ - "shape":"ShardIterator", - "documentation":"

The position in the shard from which you want to start sequentially reading data records. A shard iterator specifies this position using the sequence number of a data record in the shard.

" - }, - "Limit":{ - "shape":"GetRecordsInputLimit", - "documentation":"

The maximum number of records to return. Specify a value of up to 10,000. If you specify a value that is greater than 10,000, GetRecords throws InvalidArgumentException.

" - } - }, - "documentation":"

Represents the input for GetRecords.

" - }, - "GetRecordsInputLimit":{ - "type":"integer", - "min":1, - "max":10000 - }, - "GetRecordsOutput":{ - "type":"structure", - "required":["Records"], - "members":{ - "Records":{ - "shape":"RecordList", - "documentation":"

The data records retrieved from the shard.

" - }, - "NextShardIterator":{ - "shape":"ShardIterator", - "documentation":"

The next position in the shard from which to start sequentially reading data records. If set to null, the shard has been closed and the requested iterator will not return any more data.

" - } - }, - "documentation":"

Represents the output for GetRecords.

" - }, - "GetShardIteratorInput":{ - "type":"structure", - "required":[ - "StreamName", - "ShardId", - "ShardIteratorType" - ], - "members":{ - "StreamName":{ - "shape":"StreamName", - "documentation":"

The name of the stream.

" - }, - "ShardId":{ - "shape":"ShardId", - "documentation":"

The shard ID of the shard to get the iterator for.

" - }, - "ShardIteratorType":{ - "shape":"ShardIteratorType", - "documentation":"

Determines how the shard iterator is used to start reading data records from the shard.

The following are the valid shard iterator types:

" - }, - "StartingSequenceNumber":{ - "shape":"SequenceNumber", - "documentation":"

The sequence number of the data record in the shard from which to start reading from.

" - } - }, - "documentation":"

Represents the input for GetShardIterator.

" - }, - "GetShardIteratorOutput":{ - "type":"structure", - "members":{ - "ShardIterator":{ - "shape":"ShardIterator", - "documentation":"

The position in the shard from which to start reading data records sequentially. A shard iterator specifies this position using the sequence number of a data record in a shard.

" - } - }, - "documentation":"

Represents the output for GetShardIterator.

" - }, - "HashKey":{ - "type":"string", - "pattern":"0|([1-9]\\d{0,38})" - }, - "HashKeyRange":{ - "type":"structure", - "required":[ - "StartingHashKey", - "EndingHashKey" - ], - "members":{ - "StartingHashKey":{ - "shape":"HashKey", - "documentation":"

The starting hash key of the hash key range.

" - }, - "EndingHashKey":{ - "shape":"HashKey", - "documentation":"

The ending hash key of the hash key range.

" - } - }, - "documentation":"

The range of possible hash key values for the shard, which is a set of ordered contiguous positive integers.

" - }, - "InvalidArgumentException":{ - "type":"structure", - "members":{ - "message":{ - "shape":"ErrorMessage", - "documentation":"

A message that provides information about the error.

" - } - }, - "exception":true, - "documentation":"

A specified parameter exceeds its restrictions, is not supported, or can't be used. For more information, see the returned message.

" - }, - "LimitExceededException":{ - "type":"structure", - "members":{ - "message":{ - "shape":"ErrorMessage", - "documentation":"

A message that provides information about the error.

" - } - }, - "exception":true, - "documentation":"

The requested resource exceeds the maximum number allowed, or the number of concurrent stream requests exceeds the maximum number allowed (5).

" - }, - "ListStreamsInput":{ - "type":"structure", - "members":{ - "Limit":{ - "shape":"ListStreamsInputLimit", - "documentation":"

The maximum number of streams to list.

" - }, - "ExclusiveStartStreamName":{ - "shape":"StreamName", - "documentation":"

The name of the stream to start the list with.

" - } - }, - "documentation":"

Represents the input for ListStreams.

" - }, - "ListStreamsInputLimit":{ - "type":"integer", - "min":1, - "max":10000 - }, - "ListStreamsOutput":{ - "type":"structure", - "required":[ - "StreamNames", - "HasMoreStreams" - ], - "members":{ - "StreamNames":{ - "shape":"StreamNameList", - "documentation":"

The names of the streams that are associated with the AWS account making the ListStreams request.

" - }, - "HasMoreStreams":{ - "shape":"BooleanObject", - "documentation":"

If set to true, there are more streams available to list.

" - } - }, - "documentation":"

Represents the output for ListStreams.

" - }, - "ListTagsForStreamInput":{ - "type":"structure", - "required":["StreamName"], - "members":{ - "StreamName":{ - "shape":"StreamName", - "documentation":"

The name of the stream.

" - }, - "ExclusiveStartTagKey":{ - "shape":"TagKey", - "documentation":"

The key to use as the starting point for the list of tags. If this parameter is set, ListTagsForStream gets all tags that occur after ExclusiveStartTagKey.

" - }, - "Limit":{ - "shape":"ListTagsForStreamInputLimit", - "documentation":"

The number of tags to return. If this number is less than the total number of tags associated with the stream, HasMoreTags is set to true. To list additional tags, set ExclusiveStartTagKey to the last key in the response.

" - } - }, - "documentation":"

Represents the input for ListTagsForStream.

" - }, - "ListTagsForStreamInputLimit":{ - "type":"integer", - "min":1, - "max":10 - }, - "ListTagsForStreamOutput":{ - "type":"structure", - "required":[ - "Tags", - "HasMoreTags" - ], - "members":{ - "Tags":{ - "shape":"TagList", - "documentation":"

A list of tags associated with StreamName, starting with the first tag after ExclusiveStartTagKey and up to the specified Limit.

" - }, - "HasMoreTags":{ - "shape":"BooleanObject", - "documentation":"

If set to true, more tags are available. To request additional tags, set ExclusiveStartTagKey to the key of the last tag returned.

" - } - }, - "documentation":"

Represents the output for ListTagsForStream.

" - }, - "MergeShardsInput":{ - "type":"structure", - "required":[ - "StreamName", - "ShardToMerge", - "AdjacentShardToMerge" - ], - "members":{ - "StreamName":{ - "shape":"StreamName", - "documentation":"

The name of the stream for the merge.

" - }, - "ShardToMerge":{ - "shape":"ShardId", - "documentation":"

The shard ID of the shard to combine with the adjacent shard for the merge.

" - }, - "AdjacentShardToMerge":{ - "shape":"ShardId", - "documentation":"

The shard ID of the adjacent shard for the merge.

" - } - }, - "documentation":"

Represents the input for MergeShards.

" - }, - "PartitionKey":{ - "type":"string", - "min":1, - "max":256 - }, - "PositiveIntegerObject":{ - "type":"integer", - "min":1 - }, - "ProvisionedThroughputExceededException":{ - "type":"structure", - "members":{ - "message":{ - "shape":"ErrorMessage", - "documentation":"

A message that provides information about the error.

" - } - }, - "exception":true, - "documentation":"

The request rate is too high, or the requested data is too large for the available throughput. Reduce the frequency or size of your requests. For more information, see Error Retries and Exponential Backoff in AWS in the AWS General Reference.

" - }, - "PutRecordInput":{ - "type":"structure", - "required":[ - "StreamName", - "Data", - "PartitionKey" - ], - "members":{ - "StreamName":{ - "shape":"StreamName", - "documentation":"

The name of the stream to put the data record into.

" - }, - "Data":{ - "shape":"Data", - "documentation":"

The data blob to put into the record, which is base64-encoded when the blob is serialized. The maximum size of the data blob (the payload before base64-encoding) is 50 kilobytes (KB)

" - }, - "PartitionKey":{ - "shape":"PartitionKey", - "documentation":"

Determines which shard in the stream the data record is assigned to. Partition keys are Unicode strings with a maximum length limit of 256 bytes. Amazon Kinesis uses the partition key as input to a hash function that maps the partition key and associated data to a specific shard. Specifically, an MD5 hash function is used to map partition keys to 128-bit integer values and to map associated data records to shards. As a result of this hashing mechanism, all data records with the same partition key will map to the same shard within the stream.

" - }, - "ExplicitHashKey":{ - "shape":"HashKey", - "documentation":"

The hash value used to explicitly determine the shard the data record is assigned to by overriding the partition key hash.

" - }, - "SequenceNumberForOrdering":{ - "shape":"SequenceNumber", - "documentation":"

Guarantees strictly increasing sequence numbers, for puts from the same client and to the same partition key. Usage: set the SequenceNumberForOrdering of record n to the sequence number of record n-1 (as returned in the PutRecordResult when putting record n-1). If this parameter is not set, records will be coarsely ordered based on arrival time.

" - } - }, - "documentation":"

Represents the input for PutRecord.

" - }, - "PutRecordOutput":{ - "type":"structure", - "required":[ - "ShardId", - "SequenceNumber" - ], - "members":{ - "ShardId":{ - "shape":"ShardId", - "documentation":"

The shard ID of the shard where the data record was placed.

" - }, - "SequenceNumber":{ - "shape":"SequenceNumber", - "documentation":"

The sequence number identifier that was assigned to the put data record. The sequence number for the record is unique across all records in the stream. A sequence number is the identifier associated with every record put into the stream.

" - } - }, - "documentation":"

Represents the output for PutRecord.

" - }, - "PutRecordsInput":{ - "type":"structure", - "required":[ - "Records", - "StreamName" - ], - "members":{ - "Records":{ - "shape":"PutRecordsRequestEntryList", - "documentation":"

The records associated with the request.

" - }, - "StreamName":{ - "shape":"StreamName", - "documentation":"

The stream name associated with the request.

" - } - }, - "documentation":"

A PutRecords request.

" - }, - "PutRecordsOutput":{ - "type":"structure", - "required":["Records"], - "members":{ - "FailedRecordCount":{ - "shape":"PositiveIntegerObject", - "documentation":"

The number of unsuccessfully processed records in a PutRecords request.

" - }, - "Records":{ - "shape":"PutRecordsResultEntryList", - "documentation":"

An array of successfully and unsuccessfully processed record results, correlated with the request by natural ordering. A record that is successfully added to your Amazon Kinesis stream includes SequenceNumber and ShardId in the result. A record that fails to be added to your Amazon Kinesis stream includes ErrorCode and ErrorMessage in the result.

" - } - }, - "documentation":"

PutRecords results.

" - }, - "PutRecordsRequestEntry":{ - "type":"structure", - "required":[ - "Data", - "PartitionKey" - ], - "members":{ - "Data":{ - "shape":"Data", - "documentation":"

The data blob to put into the record, which is base64-encoded when the blob is serialized. The maximum size of the data blob (the payload before base64-encoding) is 50 kilobytes (KB)

" - }, - "ExplicitHashKey":{ - "shape":"HashKey", - "documentation":"

The hash value used to determine explicitly the shard that the data record is assigned to by overriding the partition key hash.

" - }, - "PartitionKey":{ - "shape":"PartitionKey", - "documentation":"

Determines which shard in the stream the data record is assigned to. Partition keys are Unicode strings with a maximum length limit of 256 bytes. Amazon Kinesis uses the partition key as input to a hash function that maps the partition key and associated data to a specific shard. Specifically, an MD5 hash function is used to map partition keys to 128-bit integer values and to map associated data records to shards. As a result of this hashing mechanism, all data records with the same partition key map to the same shard within the stream.

" - } - }, - "documentation":"

Represents the output for PutRecords.

" - }, - "PutRecordsRequestEntryList":{ - "type":"list", - "member":{"shape":"PutRecordsRequestEntry"}, - "min":1, - "max":500 - }, - "PutRecordsResultEntry":{ - "type":"structure", - "members":{ - "SequenceNumber":{ - "shape":"SequenceNumber", - "documentation":"

The sequence number for an individual record result.

" - }, - "ShardId":{ - "shape":"ShardId", - "documentation":"

The shard ID for an individual record result.

" - }, - "ErrorCode":{ - "shape":"ErrorCode", - "documentation":"

The error code for an individual record result. ErrorCodes can be either ProvisionedThroughputExceededException or InternalFailure.

" - }, - "ErrorMessage":{ - "shape":"ErrorMessage", - "documentation":"

The error message for an individual record result. An ErrorCode value of ProvisionedThroughputExceededException has an error message that includes the account ID, stream name, and shard ID. An ErrorCode value of InternalFailure has the error message \"Internal Service Failure\".

" - } - }, - "documentation":"

Represents the result of an individual record from a PutRecords request. A record that is successfully added to your Amazon Kinesis stream includes SequenceNumber and ShardId in the result. A record that fails to be added to your Amazon Kinesis stream includes ErrorCode and ErrorMessage in the result.

" - }, - "PutRecordsResultEntryList":{ - "type":"list", - "member":{"shape":"PutRecordsResultEntry"}, - "min":1, - "max":500 - }, - "Record":{ - "type":"structure", - "required":[ - "SequenceNumber", - "Data", - "PartitionKey" - ], - "members":{ - "SequenceNumber":{ - "shape":"SequenceNumber", - "documentation":"

The unique identifier for the record in the Amazon Kinesis stream.

" - }, - "Data":{ - "shape":"Data", - "documentation":"

The data blob. The data in the blob is both opaque and immutable to the Amazon Kinesis service, which does not inspect, interpret, or change the data in the blob in any way. The maximum size of the data blob (the payload before base64-encoding) is 50 kilobytes (KB)

" - }, - "PartitionKey":{ - "shape":"PartitionKey", - "documentation":"

Identifies which shard in the stream the data record is assigned to.

" - } - }, - "documentation":"

The unit of data of the Amazon Kinesis stream, which is composed of a sequence number, a partition key, and a data blob.

" - }, - "RecordList":{ - "type":"list", - "member":{"shape":"Record"} - }, - "RemoveTagsFromStreamInput":{ - "type":"structure", - "required":[ - "StreamName", - "TagKeys" - ], - "members":{ - "StreamName":{ - "shape":"StreamName", - "documentation":"

The name of the stream.

" - }, - "TagKeys":{ - "shape":"TagKeyList", - "documentation":"

A list of tag keys. Each corresponding tag is removed from the stream.

" - } - }, - "documentation":"

Represents the input for RemoveTagsFromStream.

" - }, - "ResourceInUseException":{ - "type":"structure", - "members":{ - "message":{ - "shape":"ErrorMessage", - "documentation":"

A message that provides information about the error.

" - } - }, - "exception":true, - "documentation":"

The resource is not available for this operation. For example, you attempted to split a shard but the stream is not in the ACTIVE state.

" - }, - "ResourceNotFoundException":{ - "type":"structure", - "members":{ - "message":{ - "shape":"ErrorMessage", - "documentation":"

A message that provides information about the error.

" - } - }, - "exception":true, - "documentation":"

The requested resource could not be found. It might not be specified correctly, or it might not be in the ACTIVE state.

" - }, - "SequenceNumber":{ - "type":"string", - "pattern":"0|([1-9]\\d{0,128})" - }, - "SequenceNumberRange":{ - "type":"structure", - "required":["StartingSequenceNumber"], - "members":{ - "StartingSequenceNumber":{ - "shape":"SequenceNumber", - "documentation":"

The starting sequence number for the range.

" - }, - "EndingSequenceNumber":{ - "shape":"SequenceNumber", - "documentation":"

The ending sequence number for the range. Shards that are in the OPEN state have an ending sequence number of null.

" - } - }, - "documentation":"

The range of possible sequence numbers for the shard.

" - }, - "Shard":{ - "type":"structure", - "required":[ - "ShardId", - "HashKeyRange", - "SequenceNumberRange" - ], - "members":{ - "ShardId":{ - "shape":"ShardId", - "documentation":"

The unique identifier of the shard within the Amazon Kinesis stream.

" - }, - "ParentShardId":{ - "shape":"ShardId", - "documentation":"

The shard Id of the shard's parent.

" - }, - "AdjacentParentShardId":{ - "shape":"ShardId", - "documentation":"

The shard Id of the shard adjacent to the shard's parent.

" - }, - "HashKeyRange":{ - "shape":"HashKeyRange", - "documentation":"

The range of possible hash key values for the shard, which is a set of ordered contiguous positive integers.

" - }, - "SequenceNumberRange":{ - "shape":"SequenceNumberRange", - "documentation":"

The range of possible sequence numbers for the shard.

" - } - }, - "documentation":"

A uniquely identified group of data records in an Amazon Kinesis stream.

" - }, - "ShardId":{ - "type":"string", - "min":1, - "max":128, - "pattern":"[a-zA-Z0-9_.-]+" - }, - "ShardIterator":{ - "type":"string", - "min":1, - "max":512 - }, - "ShardIteratorType":{ - "type":"string", - "enum":[ - "AT_SEQUENCE_NUMBER", - "AFTER_SEQUENCE_NUMBER", - "TRIM_HORIZON", - "LATEST" - ] - }, - "ShardList":{ - "type":"list", - "member":{"shape":"Shard"} - }, - "SplitShardInput":{ - "type":"structure", - "required":[ - "StreamName", - "ShardToSplit", - "NewStartingHashKey" - ], - "members":{ - "StreamName":{ - "shape":"StreamName", - "documentation":"

The name of the stream for the shard split.

" - }, - "ShardToSplit":{ - "shape":"ShardId", - "documentation":"

The shard ID of the shard to split.

" - }, - "NewStartingHashKey":{ - "shape":"HashKey", - "documentation":"

A hash key value for the starting hash key of one of the child shards created by the split. The hash key range for a given shard constitutes a set of ordered contiguous positive integers. The value for NewStartingHashKey must be in the range of hash keys being mapped into the shard. The NewStartingHashKey hash key value and all higher hash key values in hash key range are distributed to one of the child shards. All the lower hash key values in the range are distributed to the other child shard.

" - } - }, - "documentation":"

Represents the input for SplitShard.

" - }, - "StreamARN":{"type":"string"}, - "StreamDescription":{ - "type":"structure", - "required":[ - "StreamName", - "StreamARN", - "StreamStatus", - "Shards", - "HasMoreShards" - ], - "members":{ - "StreamName":{ - "shape":"StreamName", - "documentation":"

The name of the stream being described.

" - }, - "StreamARN":{ - "shape":"StreamARN", - "documentation":"

The Amazon Resource Name (ARN) for the stream being described.

" - }, - "StreamStatus":{ - "shape":"StreamStatus", - "documentation":"

The current status of the stream being described.

The stream status is one of the following states:

" - }, - "Shards":{ - "shape":"ShardList", - "documentation":"

The shards that comprise the stream.

" - }, - "HasMoreShards":{ - "shape":"BooleanObject", - "documentation":"

If set to true, more shards in the stream are available to describe.

" - } - }, - "documentation":"

Represents the output for DescribeStream.

" - }, - "StreamName":{ - "type":"string", - "min":1, - "max":128, - "pattern":"[a-zA-Z0-9_.-]+" - }, - "StreamNameList":{ - "type":"list", - "member":{"shape":"StreamName"} - }, - "StreamStatus":{ - "type":"string", - "enum":[ - "CREATING", - "DELETING", - "ACTIVE", - "UPDATING" - ] - }, - "Tag":{ - "type":"structure", - "required":["Key"], - "members":{ - "Key":{ - "shape":"TagKey", - "documentation":"

A unique identifier for the tag. Maximum length: 128 characters. Valid characters: Unicode letters, digits, white space, _ . / = + - % @

" - }, - "Value":{ - "shape":"TagValue", - "documentation":"

An optional string, typically used to describe or define the tag. Maximum length: 256 characters. Valid characters: Unicode letters, digits, white space, _ . / = + - % @

" - } - }, - "documentation":"

Metadata assigned to the stream, consisting of a key-value pair.

" - }, - "TagKey":{ - "type":"string", - "min":1, - "max":128 - }, - "TagKeyList":{ - "type":"list", - "member":{"shape":"TagKey"}, - "min":1, - "max":10 - }, - "TagList":{ - "type":"list", - "member":{"shape":"Tag"}, - "min":0 - }, - "TagMap":{ - "type":"map", - "key":{"shape":"TagKey"}, - "value":{"shape":"TagValue"}, - "min":1, - "max":10 - }, - "TagValue":{ - "type":"string", - "min":0, - "max":256 - } - } -} diff --git a/src/github.com/getlantern/aws-sdk-go/apis/kinesis/2013-12-02.paginators.json b/src/github.com/getlantern/aws-sdk-go/apis/kinesis/2013-12-02.paginators.json deleted file mode 100644 index 758da301b7..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/apis/kinesis/2013-12-02.paginators.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "pagination": { - "DescribeStream": { - "input_token": "ExclusiveStartShardId", - "limit_key": "Limit", - "more_results": "StreamDescription.HasMoreShards", - "output_token": "StreamDescription.Shards[-1].ShardId", - "result_key": "StreamDescription.Shards", - "non_aggregate_keys": [ - "StreamDescription.StreamARN", - "StreamDescription.StreamName", - "StreamDescription.StreamStatus" - ] - }, - "ListStreams": { - "input_token": "ExclusiveStartStreamName", - "limit_key": "Limit", - "more_results": "HasMoreStreams", - "output_token": "StreamNames[-1]", - "result_key": "StreamNames" - } - } -} diff --git a/src/github.com/getlantern/aws-sdk-go/apis/kinesis/2013-12-02.waiters.json b/src/github.com/getlantern/aws-sdk-go/apis/kinesis/2013-12-02.waiters.json deleted file mode 100644 index 8e3162ffa6..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/apis/kinesis/2013-12-02.waiters.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "version": 2, - "waiters": { - "StreamExists": { - "delay": 10, - "operation": "DescribeStream", - "maxAttempts": 18, - "acceptors": [ - { - "expected": "ACTIVE", - "matcher": "path", - "state": "success", - "argument": "StreamDescription.StreamStatus" - } - ] - } - } -} diff --git a/src/github.com/getlantern/aws-sdk-go/apis/kms/2014-11-01.normal.json b/src/github.com/getlantern/aws-sdk-go/apis/kms/2014-11-01.normal.json deleted file mode 100644 index 7f6dfa6ab3..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/apis/kms/2014-11-01.normal.json +++ /dev/null @@ -1,2510 +0,0 @@ -{ - "metadata":{ - "apiVersion":"2014-11-01", - "endpointPrefix":"kms", - "jsonVersion":"1.1", - "serviceAbbreviation":"KMS", - "serviceFullName":"AWS Key Management Service", - "signatureVersion":"v4", - "targetPrefix":"TrentService", - "protocol":"json" - }, - "documentation":"AWS Key Management Service

AWS Key Management Service (KMS) is an encryption and key management web service. This guide describes the KMS actions that you can call programmatically. For general information about KMS, see (need an address here). For the KMS developer guide, see (need address here).

AWS provides SDKs that consist of libraries and sample code for various programming languages and platforms (Java, Ruby, .Net, iOS, Android, etc.). The SDKs provide a convenient way to create programmatic access to KMS and AWS. For example, the SDKs take care of tasks such as signing requests (see below), managing errors, and retrying requests automatically. For more information about the AWS SDKs, including how to download and install them, see Tools for Amazon Web Services.

We recommend that you use the AWS SDKs to make programmatic API calls to KMS. However, you can also use the KMS Query API to make to make direct calls to the KMS web service.

Signing Requests

Requests must be signed by using an access key ID and a secret access key. We strongly recommend that you do not use your AWS account access key ID and secret key for everyday work with KMS. Instead, use the access key ID and secret access key for an IAM user, or you can use the AWS Security Token Service to generate temporary security credentials that you can use to sign requests.

All KMS operations require Signature Version 4.

Recording API Requests

KMS supports AWS CloudTrail, a service that records AWS API calls and related events for your AWS account and delivers them to an Amazon S3 bucket that you specify. By using the information collected by CloudTrail, you can determine what requests were made to KMS, who made the request, when it was made, and so on. To learn more about CloudTrail, including how to turn it on and find your log files, see the AWS CloudTrail User Guide

Additional Resources

For more information about credentials and request signing, see the following:

", - "operations":{ - "CreateAlias":{ - "name":"CreateAlias", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CreateAliasRequest"}, - "errors":[ - { - "shape":"DependencyTimeoutException", - "error":{ - "code":"DependencyTimeout", - "httpStatusCode":503 - }, - "exception":true, - "fault":true, - "documentation":"

The system timed out while trying to fulfill the request.

" - }, - { - "shape":"AlreadyExistsException", - "error":{ - "code":"AlreadyExists", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it attempted to create a resource that already exists.

" - }, - { - "shape":"NotFoundException", - "error":{ - "code":"NotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because the specified entity or resource could not be found.

" - }, - { - "shape":"InvalidAliasNameException", - "error":{ - "code":"InvalidAliasName", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because the specified alias name is not valid.

" - }, - { - "shape":"KMSInternalException", - "error":{ - "code":"KMSInternal", - "httpStatusCode":500 - }, - "exception":true, - "documentation":"The request was rejected because an internal exception occurred. This error can be retried." - }, - { - "shape":"LimitExceededException", - "error":{ - "code":"LimitExceeded", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because a quota was exceeded.

" - } - ], - "documentation":"

Creates a display name for a customer master key. An alias can be used to identify a key and should be unique. The console enforces a one-to-one mapping between the alias and a key. An alias name can contain only alphanumeric characters, forward slashes (/), underscores (_), and dashes (-). An alias must start with the word \"alias\" followed by a forward slash (alias/). An alias that begins with \"aws\" after the forward slash (alias/aws...) is reserved by Amazon Web Services (AWS).

" - }, - "CreateGrant":{ - "name":"CreateGrant", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CreateGrantRequest"}, - "output":{"shape":"CreateGrantResponse"}, - "errors":[ - { - "shape":"NotFoundException", - "error":{ - "code":"NotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because the specified entity or resource could not be found.

" - }, - { - "shape":"DisabledException", - "error":{ - "code":"Disabled", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

A request was rejected because the specified key was marked as disabled.

" - }, - { - "shape":"DependencyTimeoutException", - "error":{ - "code":"DependencyTimeout", - "httpStatusCode":503 - }, - "exception":true, - "fault":true, - "documentation":"

The system timed out while trying to fulfill the request.

" - }, - { - "shape":"InvalidArnException", - "error":{ - "code":"InvalidArn", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because a specified ARN was not valid.

" - }, - { - "shape":"KMSInternalException", - "error":{ - "code":"KMSInternal", - "httpStatusCode":500 - }, - "exception":true, - "documentation":"The request was rejected because an internal exception occurred. This error can be retried." - }, - { - "shape":"InvalidGrantTokenException", - "error":{ - "code":"InvalidGrantToken", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

A grant token provided as part of the request is invalid.

" - }, - { - "shape":"LimitExceededException", - "error":{ - "code":"LimitExceeded", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because a quota was exceeded.

" - } - ], - "documentation":"

Adds a grant to a key to specify who can access the key and under what conditions. Grants are alternate permission mechanisms to key policies. If absent, access to the key is evaluated based on IAM policies attached to the user. By default, grants do not expire. Grants can be listed, retired, or revoked as indicated by the following APIs. Typically, when you are finished using a grant, you retire it. When you want to end a grant immediately, revoke it. For more information about grants, see Grants.

  1. ListGrants
  2. RetireGrant
  3. RevokeGrant

" - }, - "CreateKey":{ - "name":"CreateKey", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CreateKeyRequest"}, - "output":{"shape":"CreateKeyResponse"}, - "errors":[ - { - "shape":"MalformedPolicyDocumentException", - "error":{ - "code":"MalformedPolicyDocument", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because the specified policy is not syntactically or semantically correct.

" - }, - { - "shape":"DependencyTimeoutException", - "error":{ - "code":"DependencyTimeout", - "httpStatusCode":503 - }, - "exception":true, - "fault":true, - "documentation":"

The system timed out while trying to fulfill the request.

" - }, - { - "shape":"InvalidArnException", - "error":{ - "code":"InvalidArn", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because a specified ARN was not valid.

" - }, - { - "shape":"UnsupportedOperationException", - "error":{ - "code":"UnsupportedOperation", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because a specified parameter is not supported.

" - }, - { - "shape":"KMSInternalException", - "error":{ - "code":"KMSInternal", - "httpStatusCode":500 - }, - "exception":true, - "documentation":"The request was rejected because an internal exception occurred. This error can be retried." - }, - { - "shape":"LimitExceededException", - "error":{ - "code":"LimitExceeded", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because a quota was exceeded.

" - } - ], - "documentation":"

Creates a customer master key. Customer master keys can be used to encrypt small amounts of data (less than 4K) directly, but they are most commonly used to encrypt or envelope data keys that are then used to encrypt customer data. For more information about data keys, see GenerateDataKey and GenerateDataKeyWithoutPlaintext.

" - }, - "Decrypt":{ - "name":"Decrypt", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DecryptRequest"}, - "output":{"shape":"DecryptResponse"}, - "errors":[ - { - "shape":"NotFoundException", - "error":{ - "code":"NotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because the specified entity or resource could not be found.

" - }, - { - "shape":"DisabledException", - "error":{ - "code":"Disabled", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

A request was rejected because the specified key was marked as disabled.

" - }, - { - "shape":"InvalidCiphertextException", - "error":{ - "code":"InvalidCiphertext", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because the specified ciphertext has been corrupted or is otherwise invalid.

" - }, - { - "shape":"KeyUnavailableException", - "error":{ - "code":"KeyUnavailable", - "httpStatusCode":500 - }, - "exception":true, - "fault":true, - "documentation":"

The request was rejected because the key was disabled, not found, or otherwise not available.

" - }, - { - "shape":"DependencyTimeoutException", - "error":{ - "code":"DependencyTimeout", - "httpStatusCode":503 - }, - "exception":true, - "fault":true, - "documentation":"

The system timed out while trying to fulfill the request.

" - }, - { - "shape":"InvalidGrantTokenException", - "error":{ - "code":"InvalidGrantToken", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

A grant token provided as part of the request is invalid.

" - }, - { - "shape":"KMSInternalException", - "error":{ - "code":"KMSInternal", - "httpStatusCode":500 - }, - "exception":true, - "documentation":"The request was rejected because an internal exception occurred. This error can be retried." - } - ], - "documentation":"

Decrypts ciphertext. Ciphertext is plaintext that has been previously encrypted by using the Encrypt function.

" - }, - "DeleteAlias":{ - "name":"DeleteAlias", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DeleteAliasRequest"}, - "errors":[ - { - "shape":"DependencyTimeoutException", - "error":{ - "code":"DependencyTimeout", - "httpStatusCode":503 - }, - "exception":true, - "fault":true, - "documentation":"

The system timed out while trying to fulfill the request.

" - }, - { - "shape":"NotFoundException", - "error":{ - "code":"NotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because the specified entity or resource could not be found.

" - }, - { - "shape":"KMSInternalException", - "error":{ - "code":"KMSInternal", - "httpStatusCode":500 - }, - "exception":true, - "documentation":"The request was rejected because an internal exception occurred. This error can be retried." - } - ], - "documentation":"

Deletes the specified alias.

" - }, - "DescribeKey":{ - "name":"DescribeKey", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeKeyRequest"}, - "output":{"shape":"DescribeKeyResponse"}, - "errors":[ - { - "shape":"NotFoundException", - "error":{ - "code":"NotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because the specified entity or resource could not be found.

" - }, - { - "shape":"InvalidArnException", - "error":{ - "code":"InvalidArn", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because a specified ARN was not valid.

" - }, - { - "shape":"DependencyTimeoutException", - "error":{ - "code":"DependencyTimeout", - "httpStatusCode":503 - }, - "exception":true, - "fault":true, - "documentation":"

The system timed out while trying to fulfill the request.

" - }, - { - "shape":"KMSInternalException", - "error":{ - "code":"KMSInternal", - "httpStatusCode":500 - }, - "exception":true, - "documentation":"The request was rejected because an internal exception occurred. This error can be retried." - } - ], - "documentation":"

Provides detailed information about the specified customer master key.

" - }, - "DisableKey":{ - "name":"DisableKey", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DisableKeyRequest"}, - "errors":[ - { - "shape":"NotFoundException", - "error":{ - "code":"NotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because the specified entity or resource could not be found.

" - }, - { - "shape":"InvalidArnException", - "error":{ - "code":"InvalidArn", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because a specified ARN was not valid.

" - }, - { - "shape":"DependencyTimeoutException", - "error":{ - "code":"DependencyTimeout", - "httpStatusCode":503 - }, - "exception":true, - "fault":true, - "documentation":"

The system timed out while trying to fulfill the request.

" - }, - { - "shape":"KMSInternalException", - "error":{ - "code":"KMSInternal", - "httpStatusCode":500 - }, - "exception":true, - "documentation":"The request was rejected because an internal exception occurred. This error can be retried." - } - ], - "documentation":"

Marks a key as disabled, thereby preventing its use.

" - }, - "DisableKeyRotation":{ - "name":"DisableKeyRotation", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DisableKeyRotationRequest"}, - "errors":[ - { - "shape":"NotFoundException", - "error":{ - "code":"NotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because the specified entity or resource could not be found.

" - }, - { - "shape":"InvalidArnException", - "error":{ - "code":"InvalidArn", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because a specified ARN was not valid.

" - }, - { - "shape":"DependencyTimeoutException", - "error":{ - "code":"DependencyTimeout", - "httpStatusCode":503 - }, - "exception":true, - "fault":true, - "documentation":"

The system timed out while trying to fulfill the request.

" - }, - { - "shape":"KMSInternalException", - "error":{ - "code":"KMSInternal", - "httpStatusCode":500 - }, - "exception":true, - "documentation":"The request was rejected because an internal exception occurred. This error can be retried." - } - ], - "documentation":"Disables rotation of the specified key." - }, - "EnableKey":{ - "name":"EnableKey", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"EnableKeyRequest"}, - "errors":[ - { - "shape":"NotFoundException", - "error":{ - "code":"NotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because the specified entity or resource could not be found.

" - }, - { - "shape":"InvalidArnException", - "error":{ - "code":"InvalidArn", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because a specified ARN was not valid.

" - }, - { - "shape":"DependencyTimeoutException", - "error":{ - "code":"DependencyTimeout", - "httpStatusCode":503 - }, - "exception":true, - "fault":true, - "documentation":"

The system timed out while trying to fulfill the request.

" - }, - { - "shape":"KMSInternalException", - "error":{ - "code":"KMSInternal", - "httpStatusCode":500 - }, - "exception":true, - "documentation":"The request was rejected because an internal exception occurred. This error can be retried." - }, - { - "shape":"LimitExceededException", - "error":{ - "code":"LimitExceeded", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because a quota was exceeded.

" - } - ], - "documentation":"Marks a key as enabled, thereby permitting its use. You can have up to 25 enabled keys at one time." - }, - "EnableKeyRotation":{ - "name":"EnableKeyRotation", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"EnableKeyRotationRequest"}, - "errors":[ - { - "shape":"NotFoundException", - "error":{ - "code":"NotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because the specified entity or resource could not be found.

" - }, - { - "shape":"InvalidArnException", - "error":{ - "code":"InvalidArn", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because a specified ARN was not valid.

" - }, - { - "shape":"DependencyTimeoutException", - "error":{ - "code":"DependencyTimeout", - "httpStatusCode":503 - }, - "exception":true, - "fault":true, - "documentation":"

The system timed out while trying to fulfill the request.

" - }, - { - "shape":"KMSInternalException", - "error":{ - "code":"KMSInternal", - "httpStatusCode":500 - }, - "exception":true, - "documentation":"The request was rejected because an internal exception occurred. This error can be retried." - } - ], - "documentation":"Enables rotation of the specified customer master key." - }, - "Encrypt":{ - "name":"Encrypt", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"EncryptRequest"}, - "output":{"shape":"EncryptResponse"}, - "errors":[ - { - "shape":"NotFoundException", - "error":{ - "code":"NotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because the specified entity or resource could not be found.

" - }, - { - "shape":"DisabledException", - "error":{ - "code":"Disabled", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

A request was rejected because the specified key was marked as disabled.

" - }, - { - "shape":"KeyUnavailableException", - "error":{ - "code":"KeyUnavailable", - "httpStatusCode":500 - }, - "exception":true, - "fault":true, - "documentation":"

The request was rejected because the key was disabled, not found, or otherwise not available.

" - }, - { - "shape":"DependencyTimeoutException", - "error":{ - "code":"DependencyTimeout", - "httpStatusCode":503 - }, - "exception":true, - "fault":true, - "documentation":"

The system timed out while trying to fulfill the request.

" - }, - { - "shape":"InvalidKeyUsageException", - "error":{ - "code":"InvalidKeyUsage", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because the specified KeySpec parameter is not valid. The currently supported value is ENCRYPT/DECRYPT.

" - }, - { - "shape":"InvalidGrantTokenException", - "error":{ - "code":"InvalidGrantToken", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

A grant token provided as part of the request is invalid.

" - }, - { - "shape":"KMSInternalException", - "error":{ - "code":"KMSInternal", - "httpStatusCode":500 - }, - "exception":true, - "documentation":"The request was rejected because an internal exception occurred. This error can be retried." - } - ], - "documentation":"

Encrypts plaintext into ciphertext by using a customer master key.

" - }, - "GenerateDataKey":{ - "name":"GenerateDataKey", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"GenerateDataKeyRequest"}, - "output":{"shape":"GenerateDataKeyResponse"}, - "errors":[ - { - "shape":"NotFoundException", - "error":{ - "code":"NotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because the specified entity or resource could not be found.

" - }, - { - "shape":"DisabledException", - "error":{ - "code":"Disabled", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

A request was rejected because the specified key was marked as disabled.

" - }, - { - "shape":"KeyUnavailableException", - "error":{ - "code":"KeyUnavailable", - "httpStatusCode":500 - }, - "exception":true, - "fault":true, - "documentation":"

The request was rejected because the key was disabled, not found, or otherwise not available.

" - }, - { - "shape":"DependencyTimeoutException", - "error":{ - "code":"DependencyTimeout", - "httpStatusCode":503 - }, - "exception":true, - "fault":true, - "documentation":"

The system timed out while trying to fulfill the request.

" - }, - { - "shape":"InvalidKeyUsageException", - "error":{ - "code":"InvalidKeyUsage", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because the specified KeySpec parameter is not valid. The currently supported value is ENCRYPT/DECRYPT.

" - }, - { - "shape":"InvalidGrantTokenException", - "error":{ - "code":"InvalidGrantToken", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

A grant token provided as part of the request is invalid.

" - }, - { - "shape":"KMSInternalException", - "error":{ - "code":"KMSInternal", - "httpStatusCode":500 - }, - "exception":true, - "documentation":"The request was rejected because an internal exception occurred. This error can be retried." - } - ], - "documentation":"

Generates a secure data key. Data keys are used to encrypt and decrypt data. They are wrapped by customer master keys.

" - }, - "GenerateDataKeyWithoutPlaintext":{ - "name":"GenerateDataKeyWithoutPlaintext", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"GenerateDataKeyWithoutPlaintextRequest"}, - "output":{"shape":"GenerateDataKeyWithoutPlaintextResponse"}, - "errors":[ - { - "shape":"NotFoundException", - "error":{ - "code":"NotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because the specified entity or resource could not be found.

" - }, - { - "shape":"DisabledException", - "error":{ - "code":"Disabled", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

A request was rejected because the specified key was marked as disabled.

" - }, - { - "shape":"KeyUnavailableException", - "error":{ - "code":"KeyUnavailable", - "httpStatusCode":500 - }, - "exception":true, - "fault":true, - "documentation":"

The request was rejected because the key was disabled, not found, or otherwise not available.

" - }, - { - "shape":"DependencyTimeoutException", - "error":{ - "code":"DependencyTimeout", - "httpStatusCode":503 - }, - "exception":true, - "fault":true, - "documentation":"

The system timed out while trying to fulfill the request.

" - }, - { - "shape":"InvalidKeyUsageException", - "error":{ - "code":"InvalidKeyUsage", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because the specified KeySpec parameter is not valid. The currently supported value is ENCRYPT/DECRYPT.

" - }, - { - "shape":"InvalidGrantTokenException", - "error":{ - "code":"InvalidGrantToken", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

A grant token provided as part of the request is invalid.

" - }, - { - "shape":"KMSInternalException", - "error":{ - "code":"KMSInternal", - "httpStatusCode":500 - }, - "exception":true, - "documentation":"The request was rejected because an internal exception occurred. This error can be retried." - } - ], - "documentation":"

Returns a key wrapped by a customer master key without the plaintext copy of that key. To retrieve the plaintext, see GenerateDataKey.

" - }, - "GenerateRandom":{ - "name":"GenerateRandom", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"GenerateRandomRequest"}, - "output":{"shape":"GenerateRandomResponse"}, - "errors":[ - { - "shape":"DependencyTimeoutException", - "error":{ - "code":"DependencyTimeout", - "httpStatusCode":503 - }, - "exception":true, - "fault":true, - "documentation":"

The system timed out while trying to fulfill the request.

" - }, - { - "shape":"KMSInternalException", - "error":{ - "code":"KMSInternal", - "httpStatusCode":500 - }, - "exception":true, - "documentation":"The request was rejected because an internal exception occurred. This error can be retried." - } - ], - "documentation":"

Generates an unpredictable byte string.

" - }, - "GetKeyPolicy":{ - "name":"GetKeyPolicy", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"GetKeyPolicyRequest"}, - "output":{"shape":"GetKeyPolicyResponse"}, - "errors":[ - { - "shape":"NotFoundException", - "error":{ - "code":"NotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because the specified entity or resource could not be found.

" - }, - { - "shape":"InvalidArnException", - "error":{ - "code":"InvalidArn", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because a specified ARN was not valid.

" - }, - { - "shape":"DependencyTimeoutException", - "error":{ - "code":"DependencyTimeout", - "httpStatusCode":503 - }, - "exception":true, - "fault":true, - "documentation":"

The system timed out while trying to fulfill the request.

" - }, - { - "shape":"KMSInternalException", - "error":{ - "code":"KMSInternal", - "httpStatusCode":500 - }, - "exception":true, - "documentation":"The request was rejected because an internal exception occurred. This error can be retried." - } - ], - "documentation":"

Retrieves a policy attached to the specified key.

" - }, - "GetKeyRotationStatus":{ - "name":"GetKeyRotationStatus", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"GetKeyRotationStatusRequest"}, - "output":{"shape":"GetKeyRotationStatusResponse"}, - "errors":[ - { - "shape":"NotFoundException", - "error":{ - "code":"NotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because the specified entity or resource could not be found.

" - }, - { - "shape":"InvalidArnException", - "error":{ - "code":"InvalidArn", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because a specified ARN was not valid.

" - }, - { - "shape":"DependencyTimeoutException", - "error":{ - "code":"DependencyTimeout", - "httpStatusCode":503 - }, - "exception":true, - "fault":true, - "documentation":"

The system timed out while trying to fulfill the request.

" - }, - { - "shape":"KMSInternalException", - "error":{ - "code":"KMSInternal", - "httpStatusCode":500 - }, - "exception":true, - "documentation":"The request was rejected because an internal exception occurred. This error can be retried." - } - ], - "documentation":"Retrieves a Boolean value that indicates whether key rotation is enabled for the specified key." - }, - "ListAliases":{ - "name":"ListAliases", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"ListAliasesRequest"}, - "output":{"shape":"ListAliasesResponse"}, - "errors":[ - { - "shape":"DependencyTimeoutException", - "error":{ - "code":"DependencyTimeout", - "httpStatusCode":503 - }, - "exception":true, - "fault":true, - "documentation":"

The system timed out while trying to fulfill the request.

" - }, - { - "shape":"KMSInternalException", - "error":{ - "code":"KMSInternal", - "httpStatusCode":500 - }, - "exception":true, - "documentation":"The request was rejected because an internal exception occurred. This error can be retried." - } - ], - "documentation":"

Lists all of the key aliases in the account.

" - }, - "ListGrants":{ - "name":"ListGrants", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"ListGrantsRequest"}, - "output":{"shape":"ListGrantsResponse"}, - "errors":[ - { - "shape":"DependencyTimeoutException", - "error":{ - "code":"DependencyTimeout", - "httpStatusCode":503 - }, - "exception":true, - "fault":true, - "documentation":"

The system timed out while trying to fulfill the request.

" - }, - { - "shape":"InvalidMarkerException", - "error":{ - "code":"InvalidMarker", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because the marker that specifies where pagination should next begin is not valid.

" - }, - { - "shape":"KMSInternalException", - "error":{ - "code":"KMSInternal", - "httpStatusCode":500 - }, - "exception":true, - "documentation":"The request was rejected because an internal exception occurred. This error can be retried." - } - ], - "documentation":"

List the grants for a specified key.

" - }, - "ListKeyPolicies":{ - "name":"ListKeyPolicies", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"ListKeyPoliciesRequest"}, - "output":{"shape":"ListKeyPoliciesResponse"}, - "errors":[ - { - "shape":"NotFoundException", - "error":{ - "code":"NotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because the specified entity or resource could not be found.

" - }, - { - "shape":"InvalidArnException", - "error":{ - "code":"InvalidArn", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because a specified ARN was not valid.

" - }, - { - "shape":"DependencyTimeoutException", - "error":{ - "code":"DependencyTimeout", - "httpStatusCode":503 - }, - "exception":true, - "fault":true, - "documentation":"

The system timed out while trying to fulfill the request.

" - }, - { - "shape":"KMSInternalException", - "error":{ - "code":"KMSInternal", - "httpStatusCode":500 - }, - "exception":true, - "documentation":"The request was rejected because an internal exception occurred. This error can be retried." - } - ], - "documentation":"

Retrieves a list of policies attached to a key.

" - }, - "ListKeys":{ - "name":"ListKeys", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"ListKeysRequest"}, - "output":{"shape":"ListKeysResponse"}, - "errors":[ - { - "shape":"DependencyTimeoutException", - "error":{ - "code":"DependencyTimeout", - "httpStatusCode":503 - }, - "exception":true, - "fault":true, - "documentation":"

The system timed out while trying to fulfill the request.

" - }, - { - "shape":"KMSInternalException", - "error":{ - "code":"KMSInternal", - "httpStatusCode":500 - }, - "exception":true, - "documentation":"The request was rejected because an internal exception occurred. This error can be retried." - } - ], - "documentation":"

Lists the customer master keys.

" - }, - "PutKeyPolicy":{ - "name":"PutKeyPolicy", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"PutKeyPolicyRequest"}, - "errors":[ - { - "shape":"NotFoundException", - "error":{ - "code":"NotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because the specified entity or resource could not be found.

" - }, - { - "shape":"InvalidArnException", - "error":{ - "code":"InvalidArn", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because a specified ARN was not valid.

" - }, - { - "shape":"MalformedPolicyDocumentException", - "error":{ - "code":"MalformedPolicyDocument", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because the specified policy is not syntactically or semantically correct.

" - }, - { - "shape":"DependencyTimeoutException", - "error":{ - "code":"DependencyTimeout", - "httpStatusCode":503 - }, - "exception":true, - "fault":true, - "documentation":"

The system timed out while trying to fulfill the request.

" - }, - { - "shape":"InvalidArnException", - "error":{ - "code":"InvalidArn", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because a specified ARN was not valid.

" - }, - { - "shape":"UnsupportedOperationException", - "error":{ - "code":"UnsupportedOperation", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because a specified parameter is not supported.

" - }, - { - "shape":"KMSInternalException", - "error":{ - "code":"KMSInternal", - "httpStatusCode":500 - }, - "exception":true, - "documentation":"The request was rejected because an internal exception occurred. This error can be retried." - }, - { - "shape":"LimitExceededException", - "error":{ - "code":"LimitExceeded", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because a quota was exceeded.

" - } - ], - "documentation":"

Attaches a policy to the specified key.

" - }, - "ReEncrypt":{ - "name":"ReEncrypt", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"ReEncryptRequest"}, - "output":{"shape":"ReEncryptResponse"}, - "errors":[ - { - "shape":"NotFoundException", - "error":{ - "code":"NotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because the specified entity or resource could not be found.

" - }, - { - "shape":"DisabledException", - "error":{ - "code":"Disabled", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

A request was rejected because the specified key was marked as disabled.

" - }, - { - "shape":"InvalidCiphertextException", - "error":{ - "code":"InvalidCiphertext", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because the specified ciphertext has been corrupted or is otherwise invalid.

" - }, - { - "shape":"KeyUnavailableException", - "error":{ - "code":"KeyUnavailable", - "httpStatusCode":500 - }, - "exception":true, - "fault":true, - "documentation":"

The request was rejected because the key was disabled, not found, or otherwise not available.

" - }, - { - "shape":"DependencyTimeoutException", - "error":{ - "code":"DependencyTimeout", - "httpStatusCode":503 - }, - "exception":true, - "fault":true, - "documentation":"

The system timed out while trying to fulfill the request.

" - }, - { - "shape":"InvalidKeyUsageException", - "error":{ - "code":"InvalidKeyUsage", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because the specified KeySpec parameter is not valid. The currently supported value is ENCRYPT/DECRYPT.

" - }, - { - "shape":"InvalidGrantTokenException", - "error":{ - "code":"InvalidGrantToken", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

A grant token provided as part of the request is invalid.

" - }, - { - "shape":"KMSInternalException", - "error":{ - "code":"KMSInternal", - "httpStatusCode":500 - }, - "exception":true, - "documentation":"The request was rejected because an internal exception occurred. This error can be retried." - } - ], - "documentation":"

Encrypts data on the server side with a new customer master key without exposing the plaintext of the data on the client side. The data is first decrypted and then encrypted. This operation can also be used to change the encryption context of a ciphertext.

" - }, - "RetireGrant":{ - "name":"RetireGrant", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"RetireGrantRequest"}, - "errors":[ - { - "shape":"InvalidGrantTokenException", - "error":{ - "code":"InvalidGrantToken", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

A grant token provided as part of the request is invalid.

" - }, - { - "shape":"DependencyTimeoutException", - "error":{ - "code":"DependencyTimeout", - "httpStatusCode":503 - }, - "exception":true, - "fault":true, - "documentation":"

The system timed out while trying to fulfill the request.

" - }, - { - "shape":"KMSInternalException", - "error":{ - "code":"KMSInternal", - "httpStatusCode":500 - }, - "exception":true, - "documentation":"The request was rejected because an internal exception occurred. This error can be retried." - } - ], - "documentation":"Retires a grant. You can retire a grant when you're done using it to clean up. You should revoke a grant when you intend to actively deny operations that depend on it." - }, - "RevokeGrant":{ - "name":"RevokeGrant", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"RevokeGrantRequest"}, - "errors":[ - { - "shape":"NotFoundException", - "error":{ - "code":"NotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because the specified entity or resource could not be found.

" - }, - { - "shape":"DependencyTimeoutException", - "error":{ - "code":"DependencyTimeout", - "httpStatusCode":503 - }, - "exception":true, - "fault":true, - "documentation":"

The system timed out while trying to fulfill the request.

" - }, - { - "shape":"KMSInternalException", - "error":{ - "code":"KMSInternal", - "httpStatusCode":500 - }, - "exception":true, - "documentation":"The request was rejected because an internal exception occurred. This error can be retried." - } - ], - "documentation":"Revokes a grant. You can revoke a grant to actively deny operations that depend on it." - }, - "UpdateKeyDescription":{ - "name":"UpdateKeyDescription", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"UpdateKeyDescriptionRequest"}, - "errors":[ - { - "shape":"NotFoundException", - "error":{ - "code":"NotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because the specified entity or resource could not be found.

" - }, - { - "shape":"InvalidArnException", - "error":{ - "code":"InvalidArn", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because a specified ARN was not valid.

" - }, - { - "shape":"DependencyTimeoutException", - "error":{ - "code":"DependencyTimeout", - "httpStatusCode":503 - }, - "exception":true, - "fault":true, - "documentation":"

The system timed out while trying to fulfill the request.

" - }, - { - "shape":"KMSInternalException", - "error":{ - "code":"KMSInternal", - "httpStatusCode":500 - }, - "exception":true, - "documentation":"The request was rejected because an internal exception occurred. This error can be retried." - } - ] - } - }, - "shapes":{ - "AWSAccountIdType":{"type":"string"}, - "AliasList":{ - "type":"list", - "member":{"shape":"AliasListEntry"} - }, - "AliasListEntry":{ - "type":"structure", - "members":{ - "AliasName":{ - "shape":"AliasNameType", - "documentation":"

String that contains the alias.

" - }, - "AliasArn":{ - "shape":"ArnType", - "documentation":"

String that contains the key ARN.

" - }, - "TargetKeyId":{ - "shape":"KeyIdType", - "documentation":"

String that contains the key identifier pointed to by the alias.

" - } - }, - "documentation":"Contains information about an alias." - }, - "AliasNameType":{ - "type":"string", - "min":1, - "max":256, - "pattern":"^[a-zA-Z0-9:/_-]+$" - }, - "AlreadyExistsException":{ - "type":"structure", - "members":{ - "message":{"shape":"ErrorMessageType"} - }, - "error":{ - "code":"AlreadyExists", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because it attempted to create a resource that already exists.

" - }, - "ArnType":{ - "type":"string", - "min":20, - "max":2048 - }, - "BooleanType":{"type":"boolean"}, - "CiphertextType":{ - "type":"blob", - "min":1, - "max":6144 - }, - "CreateAliasRequest":{ - "type":"structure", - "required":[ - "AliasName", - "TargetKeyId" - ], - "members":{ - "AliasName":{ - "shape":"AliasNameType", - "documentation":"

String that contains the display name. Aliases that begin with AWS are reserved.

" - }, - "TargetKeyId":{ - "shape":"KeyIdType", - "documentation":"

An identifier of the key for which you are creating the alias. This value cannot be another alias.

" - } - } - }, - "CreateGrantRequest":{ - "type":"structure", - "required":[ - "KeyId", - "GranteePrincipal" - ], - "members":{ - "KeyId":{ - "shape":"KeyIdType", - "documentation":"

A unique key identifier for a customer master key. This value can be a globally unique identifier, an ARN, or an alias.

" - }, - "GranteePrincipal":{ - "shape":"PrincipalIdType", - "documentation":"

Principal given permission by the grant to use the key identified by the keyId parameter.

" - }, - "RetiringPrincipal":{ - "shape":"PrincipalIdType", - "documentation":"

Principal given permission to retire the grant. For more information, see RetireGrant.

" - }, - "Operations":{ - "shape":"GrantOperationList", - "documentation":"

List of operations permitted by the grant. This can be any combination of one or more of the following values:

  1. Decrypt
  2. Encrypt
  3. GenerateDataKey
  4. GenerateDataKeyWithoutPlaintext
  5. ReEncryptFrom
  6. ReEncryptTo
  7. CreateGrant

" - }, - "Constraints":{ - "shape":"GrantConstraints", - "documentation":"

Specifies the conditions under which the actions specified by the Operations parameter are allowed.

" - }, - "GrantTokens":{ - "shape":"GrantTokenList", - "documentation":"

List of grant tokens.

" - } - } - }, - "CreateGrantResponse":{ - "type":"structure", - "members":{ - "GrantToken":{ - "shape":"GrantTokenType", - "documentation":"

The grant token. A grant token is a string that identifies a grant and which can be used to make a grant take effect immediately. A token contains all of the information necessary to create a grant.

" - }, - "GrantId":{ - "shape":"GrantIdType", - "documentation":"

Unique grant identifier. You can use the GrantId value to revoke a grant.

" - } - } - }, - "CreateKeyRequest":{ - "type":"structure", - "members":{ - "Policy":{ - "shape":"PolicyType", - "documentation":"

Policy to be attached to the key. This is required and delegates back to the account. The key is the root of trust.

" - }, - "Description":{ - "shape":"DescriptionType", - "documentation":"

Description of the key. We recommend that you choose a description that helps your customer decide whether the key is appropriate for a task.

" - }, - "KeyUsage":{ - "shape":"KeyUsageType", - "documentation":"

Specifies the intended use of the key. Currently this defaults to ENCRYPT/DECRYPT, and only symmetric encryption and decryption are supported.

" - } - } - }, - "CreateKeyResponse":{ - "type":"structure", - "members":{ - "KeyMetadata":{ - "shape":"KeyMetadata", - "documentation":"

Metadata associated with the key.

" - } - } - }, - "DataKeySpec":{ - "type":"string", - "enum":[ - "AES_256", - "AES_128" - ] - }, - "DateType":{"type":"timestamp"}, - "DecryptRequest":{ - "type":"structure", - "required":["CiphertextBlob"], - "members":{ - "CiphertextBlob":{ - "shape":"CiphertextType", - "documentation":"

Ciphertext including metadata.

" - }, - "EncryptionContext":{ - "shape":"EncryptionContextType", - "documentation":"

The encryption context. If this was specified in the Encrypt function, it must be specified here or the decryption operation will fail. For more information, see Encryption Context.

" - }, - "GrantTokens":{ - "shape":"GrantTokenList", - "documentation":"

A list of grant tokens that represent grants which can be used to provide long term permissions to perform decryption.

" - } - } - }, - "DecryptResponse":{ - "type":"structure", - "members":{ - "KeyId":{ - "shape":"KeyIdType", - "documentation":"

Unique identifier created by the system for the key. This value is always returned as long as no errors are encountered during the operation.

" - }, - "Plaintext":{ - "shape":"PlaintextType", - "documentation":"

Decrypted plaintext data. This value may not be returned if the customer master key is not available or if you didn't have permission to use it.

" - } - } - }, - "DeleteAliasRequest":{ - "type":"structure", - "required":["AliasName"], - "members":{ - "AliasName":{ - "shape":"AliasNameType", - "documentation":"

The alias to be deleted.

" - } - } - }, - "DependencyTimeoutException":{ - "type":"structure", - "members":{ - "message":{"shape":"ErrorMessageType"} - }, - "error":{ - "code":"DependencyTimeout", - "httpStatusCode":503 - }, - "exception":true, - "fault":true, - "documentation":"

The system timed out while trying to fulfill the request.

" - }, - "DescribeKeyRequest":{ - "type":"structure", - "required":["KeyId"], - "members":{ - "KeyId":{ - "shape":"KeyIdType", - "documentation":"

Unique identifier of the customer master key to be described. This can be an ARN, an alias, or a globally unique identifier.

" - } - } - }, - "DescribeKeyResponse":{ - "type":"structure", - "members":{ - "KeyMetadata":{ - "shape":"KeyMetadata", - "documentation":"

Metadata associated with the key.

" - } - } - }, - "DescriptionType":{ - "type":"string", - "min":0, - "max":8192 - }, - "DisableKeyRequest":{ - "type":"structure", - "required":["KeyId"], - "members":{ - "KeyId":{ - "shape":"KeyIdType", - "documentation":"

Unique identifier of the customer master key to be disabled. This can be an ARN, an alias, or a globally unique identifier.

" - } - } - }, - "DisableKeyRotationRequest":{ - "type":"structure", - "required":["KeyId"], - "members":{ - "KeyId":{ - "shape":"KeyIdType", - "documentation":"

Unique identifier of the customer master key for which rotation is to be disabled. This can be an ARN, an alias, or a globally unique identifier.

" - } - } - }, - "DisabledException":{ - "type":"structure", - "members":{ - "message":{"shape":"ErrorMessageType"} - }, - "error":{ - "code":"Disabled", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

A request was rejected because the specified key was marked as disabled.

" - }, - "EnableKeyRequest":{ - "type":"structure", - "required":["KeyId"], - "members":{ - "KeyId":{ - "shape":"KeyIdType", - "documentation":"

Unique identifier of the customer master key to be enabled. This can be an ARN, an alias, or a globally unique identifier.

" - } - } - }, - "EnableKeyRotationRequest":{ - "type":"structure", - "required":["KeyId"], - "members":{ - "KeyId":{ - "shape":"KeyIdType", - "documentation":"

Unique identifier of the customer master key for which rotation is to be enabled. This can be an ARN, an alias, or a globally unique identifier.

" - } - } - }, - "EncryptRequest":{ - "type":"structure", - "required":[ - "KeyId", - "Plaintext" - ], - "members":{ - "KeyId":{ - "shape":"KeyIdType", - "documentation":"

Unique identifier of the customer master. This can be an ARN, an alias, or the Key ID.

" - }, - "Plaintext":{ - "shape":"PlaintextType", - "documentation":"

Data to be encrypted.

" - }, - "EncryptionContext":{ - "shape":"EncryptionContextType", - "documentation":"

Name:value pair that specifies the encryption context to be used for authenticated encryption. For more information, see Authenticated Encryption.

" - }, - "GrantTokens":{ - "shape":"GrantTokenList", - "documentation":"

A list of grant tokens that represent grants which can be used to provide long term permissions to perform encryption.

" - } - } - }, - "EncryptResponse":{ - "type":"structure", - "members":{ - "CiphertextBlob":{ - "shape":"CiphertextType", - "documentation":"

The encrypted plaintext.

" - }, - "KeyId":{ - "shape":"KeyIdType", - "documentation":"

The ID of the key used during encryption.

" - } - } - }, - "EncryptionContextKey":{"type":"string"}, - "EncryptionContextType":{ - "type":"map", - "key":{"shape":"EncryptionContextKey"}, - "value":{"shape":"EncryptionContextValue"} - }, - "EncryptionContextValue":{"type":"string"}, - "ErrorMessageType":{"type":"string"}, - "GenerateDataKeyRequest":{ - "type":"structure", - "required":["KeyId"], - "members":{ - "KeyId":{ - "shape":"KeyIdType", - "documentation":"

Unique identifier of the key. This can be an ARN, an alias, or a globally unique identifier.

" - }, - "EncryptionContext":{ - "shape":"EncryptionContextType", - "documentation":"

Name/value pair that contains additional data to be authenticated during the encryption and decryption processes that use the key. This value is logged by AWS CloudTrail to provide context around the data encrypted by the key.

" - }, - "NumberOfBytes":{ - "shape":"NumberOfBytesType", - "documentation":"

Integer that contains the number of bytes to generate. Common values are 128, 256, 512, 1024 and so on. 1024 is the current limit.

" - }, - "KeySpec":{ - "shape":"DataKeySpec", - "documentation":"

Value that identifies the encryption algorithm and key size to generate a data key for. Currently this can be AES_128 or AES_256.

" - }, - "GrantTokens":{ - "shape":"GrantTokenList", - "documentation":"

A list of grant tokens that represent grants which can be used to provide long term permissions to generate a key.

" - } - } - }, - "GenerateDataKeyResponse":{ - "type":"structure", - "members":{ - "CiphertextBlob":{ - "shape":"CiphertextType", - "documentation":"

Ciphertext that contains the wrapped key. You must store the blob and encryption context so that the ciphertext can be decrypted. You must provide both the ciphertext blob and the encryption context.

" - }, - "Plaintext":{ - "shape":"PlaintextType", - "documentation":"

Plaintext that contains the unwrapped key. Use this for encryption and decryption and then remove it from memory as soon as possible.

" - }, - "KeyId":{ - "shape":"KeyIdType", - "documentation":"

System generated unique identifier for the key.

" - } - } - }, - "GenerateDataKeyWithoutPlaintextRequest":{ - "type":"structure", - "required":["KeyId"], - "members":{ - "KeyId":{ - "shape":"KeyIdType", - "documentation":"

Unique identifier of the key. This can be an ARN, an alias, or a globally unique identifier.

" - }, - "EncryptionContext":{ - "shape":"EncryptionContextType", - "documentation":"

Name:value pair that contains additional data to be authenticated during the encryption and decryption processes.

" - }, - "KeySpec":{ - "shape":"DataKeySpec", - "documentation":"

Value that identifies the encryption algorithm and key size. Currently this can be AES_128 or AES_256.

" - }, - "NumberOfBytes":{ - "shape":"NumberOfBytesType", - "documentation":"

Integer that contains the number of bytes to generate. Common values are 128, 256, 512, 1024 and so on.

" - }, - "GrantTokens":{ - "shape":"GrantTokenList", - "documentation":"

A list of grant tokens that represent grants which can be used to provide long term permissions to generate a key.

" - } - } - }, - "GenerateDataKeyWithoutPlaintextResponse":{ - "type":"structure", - "members":{ - "CiphertextBlob":{ - "shape":"CiphertextType", - "documentation":"

Ciphertext that contains the wrapped key. You must store the blob and encryption context so that the key can be used in a future operation.

" - }, - "KeyId":{ - "shape":"KeyIdType", - "documentation":"

System generated unique identifier for the key.

" - } - } - }, - "GenerateRandomRequest":{ - "type":"structure", - "members":{ - "NumberOfBytes":{ - "shape":"NumberOfBytesType", - "documentation":"

Integer that contains the number of bytes to generate. Common values are 128, 256, 512, 1024 and so on. The current limit is 1024 bytes.

" - } - } - }, - "GenerateRandomResponse":{ - "type":"structure", - "members":{ - "Plaintext":{ - "shape":"PlaintextType", - "documentation":"

Plaintext that contains the unpredictable byte string.

" - } - } - }, - "GetKeyPolicyRequest":{ - "type":"structure", - "required":[ - "KeyId", - "PolicyName" - ], - "members":{ - "KeyId":{ - "shape":"KeyIdType", - "documentation":"

Unique identifier of the key. This can be an ARN, an alias, or a globally unique identifier.

" - }, - "PolicyName":{ - "shape":"PolicyNameType", - "documentation":"

String that contains the name of the policy. Currently, this must be \"default\". Policy names can be discovered by calling ListKeyPolicies.

" - } - } - }, - "GetKeyPolicyResponse":{ - "type":"structure", - "members":{ - "Policy":{ - "shape":"PolicyType", - "documentation":"

A policy document in JSON format.

" - } - } - }, - "GetKeyRotationStatusRequest":{ - "type":"structure", - "required":["KeyId"], - "members":{ - "KeyId":{ - "shape":"KeyIdType", - "documentation":"

Unique identifier of the key. This can be an ARN, an alias, or a globally unique identifier.

" - } - } - }, - "GetKeyRotationStatusResponse":{ - "type":"structure", - "members":{ - "KeyRotationEnabled":{ - "shape":"BooleanType", - "documentation":"A Boolean value that specifies whether key rotation is enabled." - } - } - }, - "GrantConstraints":{ - "type":"structure", - "members":{ - "EncryptionContextSubset":{ - "shape":"EncryptionContextType", - "documentation":"The constraint equals the full encryption context." - }, - "EncryptionContextEquals":{ - "shape":"EncryptionContextType", - "documentation":"The constraint contains additional key/value pairs that serve to further limit the grant." - } - }, - "documentation":"Contains constraints on the grant." - }, - "GrantIdType":{ - "type":"string", - "min":1, - "max":128 - }, - "GrantList":{ - "type":"list", - "member":{"shape":"GrantListEntry"} - }, - "GrantListEntry":{ - "type":"structure", - "members":{ - "GrantId":{ - "shape":"GrantIdType", - "documentation":"

Unique grant identifier.

" - }, - "GranteePrincipal":{ - "shape":"PrincipalIdType", - "documentation":"

The principal that receives the grant permission.

" - }, - "RetiringPrincipal":{ - "shape":"PrincipalIdType", - "documentation":"

The principal that can retire the account.

" - }, - "IssuingAccount":{ - "shape":"PrincipalIdType", - "documentation":"

The account under which the grant was issued.

" - }, - "Operations":{ - "shape":"GrantOperationList", - "documentation":"

List of operations permitted by the grant. This can be any combination of one or more of the following values:

  1. Decrypt
  2. Encrypt
  3. GenerateDataKey
  4. GenerateDataKeyWithoutPlaintext
  5. ReEncryptFrom
  6. ReEncryptTo
  7. CreateGrant

" - }, - "Constraints":{ - "shape":"GrantConstraints", - "documentation":"

Specifies the conditions under which the actions specified by the Operations parameter are allowed.

" - } - }, - "documentation":"

Contains information about each entry in the grant list.

" - }, - "GrantOperation":{ - "type":"string", - "enum":[ - "Decrypt", - "Encrypt", - "GenerateDataKey", - "GenerateDataKeyWithoutPlaintext", - "ReEncryptFrom", - "ReEncryptTo", - "CreateGrant", - "RetireGrant" - ] - }, - "GrantOperationList":{ - "type":"list", - "member":{"shape":"GrantOperation"} - }, - "GrantTokenList":{ - "type":"list", - "member":{"shape":"GrantTokenType"}, - "min":0, - "max":10 - }, - "GrantTokenType":{ - "type":"string", - "min":1, - "max":8192 - }, - "InvalidAliasNameException":{ - "type":"structure", - "members":{ - "message":{"shape":"ErrorMessageType"} - }, - "error":{ - "code":"InvalidAliasName", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because the specified alias name is not valid.

" - }, - "InvalidArnException":{ - "type":"structure", - "members":{ - "message":{"shape":"ErrorMessageType"} - }, - "error":{ - "code":"InvalidArn", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because a specified ARN was not valid.

" - }, - "InvalidCiphertextException":{ - "type":"structure", - "members":{ - "message":{"shape":"ErrorMessageType"} - }, - "error":{ - "code":"InvalidCiphertext", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because the specified ciphertext has been corrupted or is otherwise invalid.

" - }, - "InvalidGrantTokenException":{ - "type":"structure", - "members":{ - "message":{"shape":"ErrorMessageType"} - }, - "error":{ - "code":"InvalidGrantToken", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

A grant token provided as part of the request is invalid.

" - }, - "InvalidKeyUsageException":{ - "type":"structure", - "members":{ - "message":{"shape":"ErrorMessageType"} - }, - "error":{ - "code":"InvalidKeyUsage", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because the specified KeySpec parameter is not valid. The currently supported value is ENCRYPT/DECRYPT.

" - }, - "InvalidMarkerException":{ - "type":"structure", - "members":{ - "message":{"shape":"ErrorMessageType"} - }, - "error":{ - "code":"InvalidMarker", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because the marker that specifies where pagination should next begin is not valid.

" - }, - "KMSInternalException":{ - "type":"structure", - "members":{ - "message":{"shape":"ErrorMessageType"} - }, - "error":{ - "code":"KMSInternal", - "httpStatusCode":500 - }, - "exception":true, - "documentation":"The request was rejected because an internal exception occurred. This error can be retried." - }, - "KeyIdType":{ - "type":"string", - "min":1, - "max":256 - }, - "KeyList":{ - "type":"list", - "member":{"shape":"KeyListEntry"} - }, - "KeyListEntry":{ - "type":"structure", - "members":{ - "KeyId":{ - "shape":"KeyIdType", - "documentation":"

Unique identifier of the key.

" - }, - "KeyArn":{ - "shape":"ArnType", - "documentation":"

ARN of the key.

" - } - }, - "documentation":"

Contains information about each entry in the key list.

" - }, - "KeyMetadata":{ - "type":"structure", - "required":["KeyId"], - "members":{ - "AWSAccountId":{ - "shape":"AWSAccountIdType", - "documentation":"

Account ID number.

" - }, - "KeyId":{ - "shape":"KeyIdType", - "documentation":"

Unique identifier for the key.

" - }, - "Arn":{ - "shape":"ArnType", - "documentation":"

Key ARN (Amazon Resource Name).

" - }, - "CreationDate":{ - "shape":"DateType", - "documentation":"

Date the key was created.

" - }, - "Enabled":{ - "shape":"BooleanType", - "documentation":"

Value that specifies whether the key is enabled.

" - }, - "Description":{ - "shape":"DescriptionType", - "documentation":"

The description of the key.

" - }, - "KeyUsage":{ - "shape":"KeyUsageType", - "documentation":"

A value that specifies what operation(s) the key can perform.

" - } - }, - "documentation":"Contains metadata associated with a specific key." - }, - "KeyUnavailableException":{ - "type":"structure", - "members":{ - "message":{"shape":"ErrorMessageType"} - }, - "error":{ - "code":"KeyUnavailable", - "httpStatusCode":500 - }, - "exception":true, - "fault":true, - "documentation":"

The request was rejected because the key was disabled, not found, or otherwise not available.

" - }, - "KeyUsageType":{ - "type":"string", - "enum":["ENCRYPT_DECRYPT"] - }, - "LimitExceededException":{ - "type":"structure", - "members":{ - "message":{"shape":"ErrorMessageType"} - }, - "error":{ - "code":"LimitExceeded", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because a quota was exceeded.

" - }, - "LimitType":{ - "type":"integer", - "min":1, - "max":1000 - }, - "ListAliasesRequest":{ - "type":"structure", - "members":{ - "Limit":{ - "shape":"LimitType", - "documentation":"

Specify this parameter when paginating results to indicate the maximum number of aliases you want in each response. If there are additional aliases beyond the maximum you specify, the Truncated response element will be set to true.

" - }, - "Marker":{ - "shape":"MarkerType", - "documentation":"

Use this parameter when paginating results, and only in a subsequent request after you've received a response where the results are truncated. Set it to the value of the NextMarker element in the response you just received.

" - } - } - }, - "ListAliasesResponse":{ - "type":"structure", - "members":{ - "Aliases":{ - "shape":"AliasList", - "documentation":"

A list of key aliases in the user's account.

" - }, - "NextMarker":{ - "shape":"MarkerType", - "documentation":"

If Truncated is true, this value is present and contains the value to use for the Marker request parameter in a subsequent pagination request.

" - }, - "Truncated":{ - "shape":"BooleanType", - "documentation":"

A flag that indicates whether there are more items in the list. If your results were truncated, you can make a subsequent pagination request using the Marker request parameter to retrieve more aliases in the list.

" - } - } - }, - "ListGrantsRequest":{ - "type":"structure", - "required":["KeyId"], - "members":{ - "KeyId":{ - "shape":"KeyIdType", - "documentation":"

Unique identifier of the key. This can be an ARN, an alias, or a globally unique identifier.

" - }, - "Limit":{ - "shape":"LimitType", - "documentation":"

Specify this parameter only when paginating results to indicate the maximum number of grants you want listed in the response. If there are additional grants beyond the maximum you specify, the Truncated response element will be set to true.

" - }, - "Marker":{ - "shape":"MarkerType", - "documentation":"

Use this parameter only when paginating results, and only in a subsequent request after you've received a response where the results are truncated. Set it to the value of the NextMarker in the response you just received.

" - } - } - }, - "ListGrantsResponse":{ - "type":"structure", - "members":{ - "Grants":{ - "shape":"GrantList", - "documentation":"

A list of grants.

" - }, - "NextMarker":{ - "shape":"MarkerType", - "documentation":"

If Truncated is true, this value is present and contains the value to use for the Marker request parameter in a subsequent pagination request.

" - }, - "Truncated":{ - "shape":"BooleanType", - "documentation":"

A flag that indicates whether there are more items in the list. If your results were truncated, you can make a subsequent pagination request using the Marker request parameter to retrieve more grants in the list.

" - } - } - }, - "ListKeyPoliciesRequest":{ - "type":"structure", - "required":["KeyId"], - "members":{ - "KeyId":{ - "shape":"KeyIdType", - "documentation":"

Unique identifier of the key. This can be an ARN, an alias, or a globally unique identifier.

" - }, - "Limit":{ - "shape":"LimitType", - "documentation":"

Specify this parameter only when paginating results to indicate the maximum number of policies you want listed in the response. If there are additional policies beyond the maximum you specify, the Truncated response element will be set to true.

" - }, - "Marker":{ - "shape":"MarkerType", - "documentation":"

Use this parameter only when paginating results, and only in a subsequent request after you've received a response where the results are truncated. Set it to the value of the NextMarker in the response you just received.

" - } - } - }, - "ListKeyPoliciesResponse":{ - "type":"structure", - "members":{ - "PolicyNames":{ - "shape":"PolicyNameList", - "documentation":"

A list of policy names. Currently, there is only one policy and it is named \"Default\".

" - }, - "NextMarker":{ - "shape":"MarkerType", - "documentation":"

If Truncated is true, this value is present and contains the value to use for the Marker request parameter in a subsequent pagination request.

" - }, - "Truncated":{ - "shape":"BooleanType", - "documentation":"

A flag that indicates whether there are more items in the list. If your results were truncated, you can make a subsequent pagination request using the Marker request parameter to retrieve more policies in the list.

" - } - } - }, - "ListKeysRequest":{ - "type":"structure", - "members":{ - "Limit":{ - "shape":"LimitType", - "documentation":"

Specify this parameter only when paginating results to indicate the maximum number of keys you want listed in the response. If there are additional keys beyond the maximum you specify, the Truncated response element will be set to true.

" - }, - "Marker":{ - "shape":"MarkerType", - "documentation":"

Use this parameter only when paginating results, and only in a subsequent request after you've received a response where the results are truncated. Set it to the value of the NextMarker in the response you just received.

" - } - } - }, - "ListKeysResponse":{ - "type":"structure", - "members":{ - "Keys":{ - "shape":"KeyList", - "documentation":"

A list of keys.

" - }, - "NextMarker":{ - "shape":"MarkerType", - "documentation":"

If Truncated is true, this value is present and contains the value to use for the Marker request parameter in a subsequent pagination request.

" - }, - "Truncated":{ - "shape":"BooleanType", - "documentation":"

A flag that indicates whether there are more items in the list. If your results were truncated, you can make a subsequent pagination request using the Marker request parameter to retrieve more keys in the list.

" - } - } - }, - "MalformedPolicyDocumentException":{ - "type":"structure", - "members":{ - "message":{"shape":"ErrorMessageType"} - }, - "error":{ - "code":"MalformedPolicyDocument", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because the specified policy is not syntactically or semantically correct.

" - }, - "MarkerType":{ - "type":"string", - "min":1, - "max":320, - "pattern":"[\\u0020-\\u00FF]*" - }, - "NotFoundException":{ - "type":"structure", - "members":{ - "message":{"shape":"ErrorMessageType"} - }, - "error":{ - "code":"NotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because the specified entity or resource could not be found.

" - }, - "NumberOfBytesType":{ - "type":"integer", - "min":1, - "max":1024 - }, - "PlaintextType":{ - "type":"blob", - "min":1, - "max":4096, - "sensitive":true - }, - "PolicyNameList":{ - "type":"list", - "member":{"shape":"PolicyNameType"} - }, - "PolicyNameType":{ - "type":"string", - "min":1, - "max":128, - "pattern":"[\\w]+" - }, - "PolicyType":{ - "type":"string", - "min":1, - "max":131072, - "pattern":"[\\u0009\\u000A\\u000D\\u0020-\\u00FF]+" - }, - "PrincipalIdType":{ - "type":"string", - "min":1, - "max":256 - }, - "PutKeyPolicyRequest":{ - "type":"structure", - "required":[ - "KeyId", - "PolicyName", - "Policy" - ], - "members":{ - "KeyId":{ - "shape":"KeyIdType", - "documentation":"

Unique identifier of the key. This can be an ARN, an alias, or a globally unique identifier.

" - }, - "PolicyName":{ - "shape":"PolicyNameType", - "documentation":"

Name of the policy to be attached. Currently, the only supported name is \"default\".

" - }, - "Policy":{ - "shape":"PolicyType", - "documentation":"

The policy, in JSON format, to be attached to the key.

" - } - } - }, - "ReEncryptRequest":{ - "type":"structure", - "required":[ - "CiphertextBlob", - "DestinationKeyId" - ], - "members":{ - "CiphertextBlob":{ - "shape":"CiphertextType", - "documentation":"

Ciphertext of the data to re-encrypt.

" - }, - "SourceEncryptionContext":{ - "shape":"EncryptionContextType", - "documentation":"

Encryption context used to encrypt and decrypt the data specified in the CiphertextBlob parameter.

" - }, - "DestinationKeyId":{ - "shape":"KeyIdType", - "documentation":"

Key identifier of the key used to re-encrypt the data.

" - }, - "DestinationEncryptionContext":{ - "shape":"EncryptionContextType", - "documentation":"

Encryption context to be used when the data is re-encrypted.

" - }, - "GrantTokens":{ - "shape":"GrantTokenList", - "documentation":"

Grant tokens that identify the grants that have permissions for the encryption and decryption process.

" - } - } - }, - "ReEncryptResponse":{ - "type":"structure", - "members":{ - "CiphertextBlob":{ - "shape":"CiphertextType", - "documentation":"

The re-encrypted data.

" - }, - "SourceKeyId":{ - "shape":"KeyIdType", - "documentation":"

Unique identifier of the key used to originally encrypt the data.

" - }, - "KeyId":{ - "shape":"KeyIdType", - "documentation":"

Unique identifier of the key used to re-encrypt the data.

" - } - } - }, - "RetireGrantRequest":{ - "type":"structure", - "required":["GrantToken"], - "members":{ - "GrantToken":{ - "shape":"GrantTokenType", - "documentation":"

Token that identifies the grant to be retired.

" - } - } - }, - "RevokeGrantRequest":{ - "type":"structure", - "required":[ - "KeyId", - "GrantId" - ], - "members":{ - "KeyId":{ - "shape":"KeyIdType", - "documentation":"

Unique identifier of the key associated with the grant.

" - }, - "GrantId":{ - "shape":"GrantIdType", - "documentation":"

Identifier of the grant to be revoked.

" - } - } - }, - "UnsupportedOperationException":{ - "type":"structure", - "members":{ - "message":{"shape":"ErrorMessageType"} - }, - "error":{ - "code":"UnsupportedOperation", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because a specified parameter is not supported.

" - }, - "UpdateKeyDescriptionRequest":{ - "type":"structure", - "required":[ - "KeyId", - "Description" - ], - "members":{ - "KeyId":{"shape":"KeyIdType"}, - "Description":{"shape":"DescriptionType"} - } - } - } -} diff --git a/src/github.com/getlantern/aws-sdk-go/apis/lambda/2014-11-11.normal.json b/src/github.com/getlantern/aws-sdk-go/apis/lambda/2014-11-11.normal.json deleted file mode 100644 index 0d72b1d3d9..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/apis/lambda/2014-11-11.normal.json +++ /dev/null @@ -1,873 +0,0 @@ -{ - "metadata":{ - "apiVersion":"2014-11-11", - "endpointPrefix":"lambda", - "serviceFullName":"Amazon Lambda", - "signatureVersion":"v4", - "protocol":"rest-json" - }, - "documentation":"AWS Lambda

Overview

This is the AWS Lambda API Reference. The AWS Lambda Developer Guide provides additional information. For the service overview, go to What is AWS Lambda, and for information about how the service works, go to AWS LambdaL How it Works in the AWS Lambda Developer Guide.

", - "operations":{ - "AddEventSource":{ - "name":"AddEventSource", - "http":{ - "method":"POST", - "requestUri":"/2014-11-13/event-source-mappings/" - }, - "input":{"shape":"AddEventSourceRequest"}, - "output":{ - "shape":"EventSourceConfiguration", - "documentation":"

Describes mapping between an Amazon Kinesis stream and a Lambda function.

" - }, - "errors":[ - { - "shape":"ServiceException", - "error":{"httpStatusCode":500}, - "exception":true, - "documentation":"

The AWS Lambda service encountered an internal error.

" - }, - { - "shape":"InvalidParameterValueException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

One of the parameters in the request is invalid. For example, if you provided an IAM role for AWS Lambda to assume in the UploadFunction or the UpdateFunctionConfiguration API, that AWS Lambda is unable to assume you will get this exception.

" - } - ], - "documentation":"

Identifies an Amazon Kinesis stream as the event source for an AWS Lambda function. AWS Lambda invokes the specified function when records are posted to the stream.

This is the pull model, where AWS Lambda invokes the function. For more information, go to AWS LambdaL How it Works in the AWS Lambda Developer Guide.

This association between an Amazon Kinesis stream and an AWS Lambda function is called the event source mapping. You provide the configuration information (for example, which stream to read from and which AWS Lambda function to invoke) for the event source mapping in the request body.

This operation requires permission for the iam:PassRole action for the IAM role. It also requires permission for the lambda:AddEventSource action.

" - }, - "DeleteFunction":{ - "name":"DeleteFunction", - "http":{ - "method":"DELETE", - "requestUri":"/2014-11-13/functions/{FunctionName}", - "responseCode":204 - }, - "input":{"shape":"DeleteFunctionRequest"}, - "errors":[ - { - "shape":"ServiceException", - "error":{"httpStatusCode":500}, - "exception":true, - "documentation":"

The AWS Lambda service encountered an internal error.

" - }, - { - "shape":"ResourceNotFoundException", - "error":{"httpStatusCode":404}, - "exception":true, - "documentation":"

The function or the event source specified in the request does not exist.

" - } - ], - "documentation":"

Deletes the specified Lambda function code and configuration.

This operation requires permission for the lambda:DeleteFunction action.

" - }, - "GetEventSource":{ - "name":"GetEventSource", - "http":{ - "method":"GET", - "requestUri":"/2014-11-13/event-source-mappings/{UUID}", - "responseCode":200 - }, - "input":{"shape":"GetEventSourceRequest"}, - "output":{ - "shape":"EventSourceConfiguration", - "documentation":"

Describes mapping between an Amazon Kinesis stream and a Lambda function.

" - }, - "errors":[ - { - "shape":"ServiceException", - "error":{"httpStatusCode":500}, - "exception":true, - "documentation":"

The AWS Lambda service encountered an internal error.

" - }, - { - "shape":"ResourceNotFoundException", - "error":{"httpStatusCode":404}, - "exception":true, - "documentation":"

The function or the event source specified in the request does not exist.

" - }, - { - "shape":"InvalidParameterValueException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

One of the parameters in the request is invalid. For example, if you provided an IAM role for AWS Lambda to assume in the UploadFunction or the UpdateFunctionConfiguration API, that AWS Lambda is unable to assume you will get this exception.

" - } - ], - "documentation":"

Returns configuration information for the specified event source mapping (see AddEventSource).

This operation requires permission for the lambda:GetEventSource action.

" - }, - "GetFunction":{ - "name":"GetFunction", - "http":{ - "method":"GET", - "requestUri":"/2014-11-13/functions/{FunctionName}", - "responseCode":200 - }, - "input":{"shape":"GetFunctionRequest"}, - "output":{ - "shape":"GetFunctionResponse", - "documentation":"

This response contains the object for AWS Lambda function location (see API_FunctionCodeLocation

" - }, - "errors":[ - { - "shape":"ServiceException", - "error":{"httpStatusCode":500}, - "exception":true, - "documentation":"

The AWS Lambda service encountered an internal error.

" - }, - { - "shape":"ResourceNotFoundException", - "error":{"httpStatusCode":404}, - "exception":true, - "documentation":"

The function or the event source specified in the request does not exist.

" - } - ], - "documentation":"

Returns the configuration information of the Lambda function and a presigned URL link to the .zip file you uploaded with UploadFunction so you can download the .zip file. Note that the URL is valid for up to 10 minutes. The configuration information is the same information you provided as parameters when uploading the function.

This operation requires permission for the lambda:GetFunction action.

" - }, - "GetFunctionConfiguration":{ - "name":"GetFunctionConfiguration", - "http":{ - "method":"GET", - "requestUri":"/2014-11-13/functions/{FunctionName}/configuration", - "responseCode":200 - }, - "input":{"shape":"GetFunctionConfigurationRequest"}, - "output":{ - "shape":"FunctionConfiguration", - "documentation":"

A complex type that describes function metadata.

" - }, - "errors":[ - { - "shape":"ServiceException", - "error":{"httpStatusCode":500}, - "exception":true, - "documentation":"

The AWS Lambda service encountered an internal error.

" - }, - { - "shape":"ResourceNotFoundException", - "error":{"httpStatusCode":404}, - "exception":true, - "documentation":"

The function or the event source specified in the request does not exist.

" - } - ], - "documentation":"

Returns the configuration information of the Lambda function. This the same information you provided as parameters when uploading the function by using UploadFunction.

This operation requires permission for the lambda:GetFunctionConfiguration operation.

" - }, - "InvokeAsync":{ - "name":"InvokeAsync", - "http":{ - "method":"POST", - "requestUri":"/2014-11-13/functions/{FunctionName}/invoke-async/", - "responseCode":202 - }, - "input":{"shape":"InvokeAsyncRequest"}, - "output":{ - "shape":"InvokeAsyncResponse", - "documentation":"

Upon success, it returns empty response. Otherwise, throws an exception.

" - }, - "errors":[ - { - "shape":"ServiceException", - "error":{"httpStatusCode":500}, - "exception":true, - "documentation":"

The AWS Lambda service encountered an internal error.

" - }, - { - "shape":"ResourceNotFoundException", - "error":{"httpStatusCode":404}, - "exception":true, - "documentation":"

The function or the event source specified in the request does not exist.

" - }, - { - "shape":"InvalidRequestContentException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

The request body could not be parsed as JSON.

" - } - ], - "documentation":"

Submits an invocation request to AWS Lambda. Upon receiving the request, Lambda executes the specified function asynchronously. To see the logs generated by the Lambda function execution, see the CloudWatch logs console.

This operation requires permission for the lambda:InvokeAsync action.

" - }, - "ListEventSources":{ - "name":"ListEventSources", - "http":{ - "method":"GET", - "requestUri":"/2014-11-13/event-source-mappings/", - "responseCode":200 - }, - "input":{"shape":"ListEventSourcesRequest"}, - "output":{ - "shape":"ListEventSourcesResponse", - "documentation":"

Contains a list of event sources (see API_EventSourceConfiguration)

" - }, - "errors":[ - { - "shape":"ServiceException", - "error":{"httpStatusCode":500}, - "exception":true, - "documentation":"

The AWS Lambda service encountered an internal error.

" - }, - { - "shape":"ResourceNotFoundException", - "error":{"httpStatusCode":404}, - "exception":true, - "documentation":"

The function or the event source specified in the request does not exist.

" - }, - { - "shape":"InvalidParameterValueException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

One of the parameters in the request is invalid. For example, if you provided an IAM role for AWS Lambda to assume in the UploadFunction or the UpdateFunctionConfiguration API, that AWS Lambda is unable to assume you will get this exception.

" - } - ], - "documentation":"

Returns a list of event source mappings. For each mapping, the API returns configuration information (see AddEventSource). You can optionally specify filters to retrieve specific event source mappings.

This operation requires permission for the lambda:ListEventSources action.

" - }, - "ListFunctions":{ - "name":"ListFunctions", - "http":{ - "method":"GET", - "requestUri":"/2014-11-13/functions/", - "responseCode":200 - }, - "input":{"shape":"ListFunctionsRequest"}, - "output":{ - "shape":"ListFunctionsResponse", - "documentation":"

Contains a list of AWS Lambda function configurations (see API_FunctionConfiguration.

" - }, - "errors":[ - { - "shape":"ServiceException", - "error":{"httpStatusCode":500}, - "exception":true, - "documentation":"

The AWS Lambda service encountered an internal error.

" - } - ], - "documentation":"

Returns a list of your Lambda functions. For each function, the response includes the function configuration information. You must use GetFunction to retrieve the code for your function.

This operation requires permission for the lambda:ListFunctions action.

" - }, - "RemoveEventSource":{ - "name":"RemoveEventSource", - "http":{ - "method":"DELETE", - "requestUri":"/2014-11-13/event-source-mappings/{UUID}", - "responseCode":204 - }, - "input":{"shape":"RemoveEventSourceRequest"}, - "errors":[ - { - "shape":"ServiceException", - "error":{"httpStatusCode":500}, - "exception":true, - "documentation":"

The AWS Lambda service encountered an internal error.

" - }, - { - "shape":"ResourceNotFoundException", - "error":{"httpStatusCode":404}, - "exception":true, - "documentation":"

The function or the event source specified in the request does not exist.

" - }, - { - "shape":"InvalidParameterValueException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

One of the parameters in the request is invalid. For example, if you provided an IAM role for AWS Lambda to assume in the UploadFunction or the UpdateFunctionConfiguration API, that AWS Lambda is unable to assume you will get this exception.

" - } - ], - "documentation":"

Removes an event source mapping. This means AWS Lambda will no longer invoke the function for events in the associated source.

This operation requires permission for the lambda:RemoveEventSource action.

" - }, - "UpdateFunctionConfiguration":{ - "name":"UpdateFunctionConfiguration", - "http":{ - "method":"PUT", - "requestUri":"/2014-11-13/functions/{FunctionName}/configuration", - "responseCode":200 - }, - "input":{"shape":"UpdateFunctionConfigurationRequest"}, - "output":{ - "shape":"FunctionConfiguration", - "documentation":"

A complex type that describes function metadata.

" - }, - "errors":[ - { - "shape":"ServiceException", - "error":{"httpStatusCode":500}, - "exception":true, - "documentation":"

The AWS Lambda service encountered an internal error.

" - }, - { - "shape":"ResourceNotFoundException", - "error":{"httpStatusCode":404}, - "exception":true, - "documentation":"

The function or the event source specified in the request does not exist.

" - }, - { - "shape":"InvalidParameterValueException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

One of the parameters in the request is invalid. For example, if you provided an IAM role for AWS Lambda to assume in the UploadFunction or the UpdateFunctionConfiguration API, that AWS Lambda is unable to assume you will get this exception.

" - } - ], - "documentation":"

Updates the configuration parameters for the specified Lambda function by using the values provided in the request. You provide only the parameters you want to change. This operation must only be used on an existing Lambda function and cannot be used to update the function's code.

This operation requires permission for the lambda:UpdateFunctionConfiguration action.

" - }, - "UploadFunction":{ - "name":"UploadFunction", - "http":{ - "method":"PUT", - "requestUri":"/2014-11-13/functions/{FunctionName}", - "responseCode":201 - }, - "input":{"shape":"UploadFunctionRequest"}, - "output":{ - "shape":"FunctionConfiguration", - "documentation":"

A complex type that describes function metadata.

" - }, - "errors":[ - { - "shape":"ServiceException", - "error":{"httpStatusCode":500}, - "exception":true, - "documentation":"

The AWS Lambda service encountered an internal error.

" - }, - { - "shape":"InvalidParameterValueException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

One of the parameters in the request is invalid. For example, if you provided an IAM role for AWS Lambda to assume in the UploadFunction or the UpdateFunctionConfiguration API, that AWS Lambda is unable to assume you will get this exception.

" - }, - { - "shape":"ResourceNotFoundException", - "error":{"httpStatusCode":404}, - "exception":true, - "documentation":"

The function or the event source specified in the request does not exist.

" - } - ], - "documentation":"

Creates a new Lambda function or updates an existing function. The function metadata is created from the request parameters, and the code for the function is provided by a .zip file in the request body. If the function name already exists, the existing Lambda function is updated with the new code and metadata.

This operation requires permission for the lambda:UploadFunction action.

" - } - }, - "shapes":{ - "AddEventSourceRequest":{ - "type":"structure", - "required":[ - "EventSource", - "FunctionName", - "Role" - ], - "members":{ - "EventSource":{ - "shape":"String", - "documentation":"

The Amazon Resource Name (ARN) of the Amazon Kinesis stream that is the event source. Any record added to this stream causes AWS Lambda to invoke your Lambda function. AWS Lambda POSTs the Amazon Kinesis event, containing records, to your Lambda function as JSON.

" - }, - "FunctionName":{ - "shape":"FunctionName", - "documentation":"

The Lambda function to invoke when AWS Lambda detects an event on the stream.

" - }, - "Role":{ - "shape":"RoleArn", - "documentation":"

The ARN of the IAM role (invocation role) that AWS Lambda can assume to read from the stream and invoke the function.

" - }, - "BatchSize":{ - "shape":"Integer", - "documentation":"

The largest number of records that AWS Lambda will give to your function in a single event. The default is 100 records.

" - }, - "Parameters":{ - "shape":"Map", - "documentation":"

A map (key-value pairs) defining the configuration for AWS Lambda to use when reading the event source. Currently, AWS Lambda supports only the InitialPositionInStream key. The valid values are: \"TRIM_HORIZON\" and \"LATEST\". The default value is \"TRIM_HORIZON\". For more information, go to ShardIteratorType in the Amazon Kinesis Service API Reference.

" - } - } - }, - "Blob":{ - "type":"blob", - "streaming":true - }, - "DeleteFunctionRequest":{ - "type":"structure", - "required":["FunctionName"], - "members":{ - "FunctionName":{ - "shape":"FunctionName", - "location":"uri", - "locationName":"FunctionName", - "documentation":"

The Lambda function to delete.

" - } - } - }, - "Description":{ - "type":"string", - "min":0, - "max":256 - }, - "EventSourceConfiguration":{ - "type":"structure", - "members":{ - "UUID":{ - "shape":"String", - "documentation":"

The AWS Lambda assigned opaque identifier for the mapping.

" - }, - "BatchSize":{ - "shape":"Integer", - "documentation":"

The largest number of records that AWS Lambda will POST in the invocation request to your function.

" - }, - "EventSource":{ - "shape":"String", - "documentation":"

The Amazon Resource Name (ARN) of the Amazon Kinesis stream that is the source of events.

" - }, - "FunctionName":{ - "shape":"FunctionName", - "documentation":"

The Lambda function to invoke when AWS Lambda detects an event on the stream.

" - }, - "Parameters":{ - "shape":"Map", - "documentation":"

The map (key-value pairs) defining the configuration for AWS Lambda to use when reading the event source.

" - }, - "Role":{ - "shape":"RoleArn", - "documentation":"

The ARN of the IAM role (invocation role) that AWS Lambda can assume to read from the stream and invoke the function.

" - }, - "LastModified":{ - "shape":"Timestamp", - "documentation":"

The UTC time string indicating the last time the event mapping was updated.

" - }, - "IsActive":{ - "shape":"Boolean", - "documentation":"

Indicates whether the event source mapping is currently honored. Events are only processes if IsActive is true.

" - }, - "Status":{ - "shape":"String", - "documentation":"

The description of the health of the event source mapping. Valid values are: \"PENDING\", \"OK\", and \"PROBLEM:message\". Initially this staus is \"PENDING\". When AWS Lambda begins processing events, it changes the status to \"OK\".

" - } - }, - "documentation":"

Describes mapping between an Amazon Kinesis stream and a Lambda function.

" - }, - "EventSourceList":{ - "type":"list", - "member":{"shape":"EventSourceConfiguration"} - }, - "FunctionArn":{ - "type":"string", - "pattern":"arn:aws:lambda:[a-z]{2}-[a-z]+-\\d{1}:\\d{12}:function:[a-zA-Z0-9-]+(\\/[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})?" - }, - "FunctionCodeLocation":{ - "type":"structure", - "members":{ - "RepositoryType":{ - "shape":"String", - "documentation":"

The repository from which you can download the function.

" - }, - "Location":{ - "shape":"String", - "documentation":"

The presigned URL you can use to download the function's .zip file that you previously uploaded. The URL is valid for up to 10 minutes.

" - } - }, - "documentation":"

The object for the Lambda function location.

" - }, - "FunctionConfiguration":{ - "type":"structure", - "members":{ - "FunctionName":{ - "shape":"FunctionName", - "documentation":"

The name of the function.

" - }, - "FunctionARN":{ - "shape":"FunctionArn", - "documentation":"

The Amazon Resource Name (ARN) assigned to the function.

" - }, - "ConfigurationId":{ - "shape":"String", - "documentation":"

A Lambda-assigned unique identifier for the current function code and related configuration.

" - }, - "Runtime":{ - "shape":"Runtime", - "documentation":"

The runtime environment for the Lambda function.

" - }, - "Role":{ - "shape":"RoleArn", - "documentation":"

The Amazon Resource Name (ARN) of the IAM role that Lambda assumes when it executes your function to access any other Amazon Web Services (AWS) resources.

" - }, - "Handler":{ - "shape":"Handler", - "documentation":"

The function Lambda calls to begin executing your function.

" - }, - "Mode":{ - "shape":"Mode", - "documentation":"

The type of the Lambda function you uploaded.

" - }, - "CodeSize":{ - "shape":"Long", - "documentation":"

The size, in bytes, of the function .zip file you uploaded.

" - }, - "Description":{ - "shape":"Description", - "documentation":"

The user-provided description.

" - }, - "Timeout":{ - "shape":"Timeout", - "documentation":"

The function execution time at which Lambda should terminate the function. Because the execution time has cost implications, we recommend you set this value based on your expected execution time. The default is 3 seconds.

" - }, - "MemorySize":{ - "shape":"MemorySize", - "documentation":"

The memory size, in MB, you configured for the function. Must be a multiple of 64 MB.

" - }, - "LastModified":{ - "shape":"Timestamp", - "documentation":"

The timestamp of the last time you updated the function.

" - } - }, - "documentation":"

A complex type that describes function metadata.

" - }, - "FunctionList":{ - "type":"list", - "member":{"shape":"FunctionConfiguration"} - }, - "FunctionName":{ - "type":"string", - "min":1, - "max":64, - "pattern":"[a-zA-Z0-9-]+" - }, - "GetEventSourceRequest":{ - "type":"structure", - "required":["UUID"], - "members":{ - "UUID":{ - "shape":"String", - "location":"uri", - "locationName":"UUID", - "documentation":"

The AWS Lambda assigned ID of the event source mapping.

" - } - } - }, - "GetFunctionConfigurationRequest":{ - "type":"structure", - "required":["FunctionName"], - "members":{ - "FunctionName":{ - "shape":"FunctionName", - "location":"uri", - "locationName":"FunctionName", - "documentation":"

The name of the Lambda function for which you want to retrieve the configuration information.

" - } - } - }, - "GetFunctionRequest":{ - "type":"structure", - "required":["FunctionName"], - "members":{ - "FunctionName":{ - "shape":"FunctionName", - "location":"uri", - "locationName":"FunctionName", - "documentation":"

The Lambda function name.

" - } - } - }, - "GetFunctionResponse":{ - "type":"structure", - "members":{ - "Configuration":{"shape":"FunctionConfiguration"}, - "Code":{"shape":"FunctionCodeLocation"} - }, - "documentation":"

This response contains the object for AWS Lambda function location (see API_FunctionCodeLocation

" - }, - "Handler":{ - "type":"string", - "pattern":"[a-zA-Z0-9./\\-_]+" - }, - "HttpStatus":{"type":"integer"}, - "Integer":{"type":"integer"}, - "InvalidParameterValueException":{ - "type":"structure", - "members":{ - "Type":{"shape":"String"}, - "message":{"shape":"String"} - }, - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

One of the parameters in the request is invalid. For example, if you provided an IAM role for AWS Lambda to assume in the UploadFunction or the UpdateFunctionConfiguration API, that AWS Lambda is unable to assume you will get this exception.

" - }, - "InvalidRequestContentException":{ - "type":"structure", - "members":{ - "Type":{"shape":"String"}, - "message":{"shape":"String"} - }, - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

The request body could not be parsed as JSON.

" - }, - "InvokeAsyncRequest":{ - "type":"structure", - "required":[ - "FunctionName", - "InvokeArgs" - ], - "members":{ - "FunctionName":{ - "shape":"FunctionName", - "location":"uri", - "locationName":"FunctionName", - "documentation":"

The Lambda function name.

" - }, - "InvokeArgs":{ - "shape":"Blob", - "documentation":"

JSON that you want to provide to your Lambda function as input.

" - } - }, - "payload":"InvokeArgs" - }, - "InvokeAsyncResponse":{ - "type":"structure", - "members":{ - "Status":{ - "shape":"HttpStatus", - "location":"statusCode", - "documentation":"

It will be 202 upon success.

" - } - }, - "documentation":"

Upon success, it returns empty response. Otherwise, throws an exception.

" - }, - "ListEventSourcesRequest":{ - "type":"structure", - "members":{ - "EventSourceArn":{ - "shape":"String", - "location":"querystring", - "locationName":"EventSource", - "documentation":"

The Amazon Resource Name (ARN) of the Amazon Kinesis stream.

" - }, - "FunctionName":{ - "shape":"FunctionName", - "location":"querystring", - "locationName":"FunctionName", - "documentation":"

The name of the AWS Lambda function.

" - }, - "Marker":{ - "shape":"String", - "location":"querystring", - "locationName":"Marker", - "documentation":"

Optional string. An opaque pagination token returned from a previous ListEventSources operation. If present, specifies to continue the list from where the returning call left off.

" - }, - "MaxItems":{ - "shape":"MaxListItems", - "location":"querystring", - "locationName":"MaxItems", - "documentation":"

Optional integer. Specifies the maximum number of event sources to return in response. This value must be greater than 0.

" - } - } - }, - "ListEventSourcesResponse":{ - "type":"structure", - "members":{ - "NextMarker":{ - "shape":"String", - "documentation":"

A string, present if there are more event source mappings.

" - }, - "EventSources":{ - "shape":"EventSourceList", - "documentation":"

An arrary of EventSourceConfiguration objects.

" - } - }, - "documentation":"

Contains a list of event sources (see API_EventSourceConfiguration)

" - }, - "ListFunctionsRequest":{ - "type":"structure", - "members":{ - "Marker":{ - "shape":"String", - "location":"querystring", - "locationName":"Marker", - "documentation":"

Optional string. An opaque pagination token returned from a previous ListFunctions operation. If present, indicates where to continue the listing.

" - }, - "MaxItems":{ - "shape":"MaxListItems", - "location":"querystring", - "locationName":"MaxItems", - "documentation":"

Optional integer. Specifies the maximum number of AWS Lambda functions to return in response. This parameter value must be greater than 0.

" - } - } - }, - "ListFunctionsResponse":{ - "type":"structure", - "members":{ - "NextMarker":{ - "shape":"String", - "documentation":"

A string, present if there are more functions.

" - }, - "Functions":{ - "shape":"FunctionList", - "documentation":"

A list of Lambda functions.

" - } - }, - "documentation":"

Contains a list of AWS Lambda function configurations (see API_FunctionConfiguration.

" - }, - "Long":{"type":"long"}, - "Map":{ - "type":"map", - "key":{"shape":"String"}, - "value":{"shape":"String"} - }, - "MaxListItems":{ - "type":"integer", - "min":1, - "max":10000 - }, - "MemorySize":{ - "type":"integer", - "min":64, - "max":1024 - }, - "Mode":{ - "type":"string", - "enum":["event"] - }, - "RemoveEventSourceRequest":{ - "type":"structure", - "required":["UUID"], - "members":{ - "UUID":{ - "shape":"String", - "location":"uri", - "locationName":"UUID", - "documentation":"

The event source mapping ID.

" - } - } - }, - "ResourceNotFoundException":{ - "type":"structure", - "members":{ - "Type":{"shape":"String"}, - "Message":{"shape":"String"} - }, - "error":{"httpStatusCode":404}, - "exception":true, - "documentation":"

The function or the event source specified in the request does not exist.

" - }, - "RoleArn":{ - "type":"string", - "pattern":"arn:aws:iam::\\d{12}:role/?[a-zA-Z_0-9+=,.@\\-_]+" - }, - "Runtime":{ - "type":"string", - "enum":["nodejs"] - }, - "ServiceException":{ - "type":"structure", - "members":{ - "Type":{"shape":"String"}, - "Message":{"shape":"String"} - }, - "error":{"httpStatusCode":500}, - "exception":true, - "documentation":"

The AWS Lambda service encountered an internal error.

" - }, - "String":{"type":"string"}, - "Timeout":{ - "type":"integer", - "min":1, - "max":60 - }, - "Timestamp":{"type":"timestamp"}, - "UpdateFunctionConfigurationRequest":{ - "type":"structure", - "required":["FunctionName"], - "members":{ - "FunctionName":{ - "shape":"FunctionName", - "location":"uri", - "locationName":"FunctionName", - "documentation":"

The name of the Lambda function.

" - }, - "Role":{ - "shape":"RoleArn", - "location":"querystring", - "locationName":"Role", - "documentation":"

The Amazon Resource Name (ARN) of the IAM role that Lambda will assume when it executes your function.

" - }, - "Handler":{ - "shape":"Handler", - "location":"querystring", - "locationName":"Handler", - "documentation":"

The function that Lambda calls to begin executing your function. For Node.js, it is the module-name.export value in your function.

" - }, - "Description":{ - "shape":"Description", - "location":"querystring", - "locationName":"Description", - "documentation":"

A short user-defined function description. Lambda does not use this value. Assign a meaningful description as you see fit.

" - }, - "Timeout":{ - "shape":"Timeout", - "location":"querystring", - "locationName":"Timeout", - "documentation":"

The function execution time at which Lambda should terminate the function. Because the execution time has cost implications, we recommend you set this value based on your expected execution time. The default is 3 seconds.

" - }, - "MemorySize":{ - "shape":"MemorySize", - "location":"querystring", - "locationName":"MemorySize", - "documentation":"

The amount of memory, in MB, your Lambda function is given. Lambda uses this memory size to infer the amount of CPU allocated to your function. Your function use-case determines your CPU and memory requirements. For example, a database operation might need less memory compared to an image processing function. The default value is 128 MB. The value must be a multiple of 64 MB.

" - } - } - }, - "UploadFunctionRequest":{ - "type":"structure", - "required":[ - "FunctionName", - "FunctionZip", - "Runtime", - "Role", - "Handler", - "Mode" - ], - "members":{ - "FunctionName":{ - "shape":"FunctionName", - "location":"uri", - "locationName":"FunctionName", - "documentation":"

The name you want to assign to the function you are uploading. The function names appear in the console and are returned in the ListFunctions API. Function names are used to specify functions to other AWS Lambda APIs, such as InvokeAsync.

" - }, - "FunctionZip":{ - "shape":"Blob", - "documentation":"

A .zip file containing your packaged source code. For more information about creating a .zip file, go to AWS LambdaL How it Works in the AWS Lambda Developer Guide.

" - }, - "Runtime":{ - "shape":"Runtime", - "location":"querystring", - "locationName":"Runtime", - "documentation":"

The runtime environment for the Lambda function you are uploading. Currently, Lambda supports only \"nodejs\" as the runtime.

" - }, - "Role":{ - "shape":"RoleArn", - "location":"querystring", - "locationName":"Role", - "documentation":"

The Amazon Resource Name (ARN) of the IAM role that Lambda assumes when it executes your function to access any other Amazon Web Services (AWS) resources.

" - }, - "Handler":{ - "shape":"Handler", - "location":"querystring", - "locationName":"Handler", - "documentation":"

The function that Lambda calls to begin execution. For Node.js, it is the module-name.export value in your function.

" - }, - "Mode":{ - "shape":"Mode", - "location":"querystring", - "locationName":"Mode", - "documentation":"

How the Lambda function will be invoked. Lambda supports only the \"event\" mode.

" - }, - "Description":{ - "shape":"Description", - "location":"querystring", - "locationName":"Description", - "documentation":"

A short, user-defined function description. Lambda does not use this value. Assign a meaningful description as you see fit.

" - }, - "Timeout":{ - "shape":"Timeout", - "location":"querystring", - "locationName":"Timeout", - "documentation":"

The function execution time at which Lambda should terminate the function. Because the execution time has cost implications, we recommend you set this value based on your expected execution time. The default is 3 seconds.

" - }, - "MemorySize":{ - "shape":"MemorySize", - "location":"querystring", - "locationName":"MemorySize", - "documentation":"

The amount of memory, in MB, your Lambda function is given. Lambda uses this memory size to infer the amount of CPU allocated to your function. Your function use-case determines your CPU and memory requirements. For example, database operation might need less memory compared to image processing function. The default value is 128 MB. The value must be a multiple of 64 MB.

" - } - }, - "payload":"FunctionZip" - }, - "Boolean":{"type":"boolean"} - } -} diff --git a/src/github.com/getlantern/aws-sdk-go/apis/logs/2014-03-28.normal.json b/src/github.com/getlantern/aws-sdk-go/apis/logs/2014-03-28.normal.json deleted file mode 100644 index 63f448e4d9..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/apis/logs/2014-03-28.normal.json +++ /dev/null @@ -1,942 +0,0 @@ -{ - "metadata":{ - "apiVersion":"2014-03-28", - "endpointPrefix":"logs", - "jsonVersion":"1.1", - "serviceFullName":"Amazon CloudWatch Logs", - "signatureVersion":"v4", - "targetPrefix":"Logs_20140328", - "protocol":"json" - }, - "documentation":"Amazon CloudWatch Logs API Reference

This is the Amazon CloudWatch Logs API Reference. Amazon CloudWatch Logs enables you to monitor, store, and access your system, application, and custom log files. This guide provides detailed information about Amazon CloudWatch Logs actions, data types, parameters, and errors. For detailed information about Amazon CloudWatch Logs features and their associated API calls, go to the Amazon CloudWatch Developer Guide.

Use the following links to get started using the Amazon CloudWatch Logs API Reference:

In addition to using the Amazon CloudWatch Logs API, you can also use the following SDKs and third-party libraries to access Amazon CloudWatch Logs programmatically.

Developers in the AWS developer community also provide their own libraries, which you can find at the following AWS developer centers:

", - "operations":{ - "CreateLogGroup":{ - "name":"CreateLogGroup", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CreateLogGroupRequest"}, - "errors":[ - { - "shape":"InvalidParameterException", - "exception":true, - "documentation":"

Returned if a parameter of the request is incorrectly specified.

" - }, - { - "shape":"ResourceAlreadyExistsException", - "exception":true, - "documentation":"

Returned if the specified resource already exists.

" - }, - { - "shape":"LimitExceededException", - "exception":true, - "documentation":"

Returned if you have reached the maximum number of resources that can be created.

" - }, - { - "shape":"OperationAbortedException", - "exception":true, - "documentation":"

Returned if multiple requests to update the same resource were in conflict.

" - }, - { - "shape":"ServiceUnavailableException", - "exception":true, - "fault":true, - "documentation":"

Returned if the service cannot complete the request.

" - } - ], - "documentation":"

Creates a new log group with the specified name. The name of the log group must be unique within a region for an AWS account. You can create up to 500 log groups per account.

You must use the following guidelines when naming a log group:

" - }, - "CreateLogStream":{ - "name":"CreateLogStream", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CreateLogStreamRequest"}, - "errors":[ - { - "shape":"InvalidParameterException", - "exception":true, - "documentation":"

Returned if a parameter of the request is incorrectly specified.

" - }, - { - "shape":"ResourceAlreadyExistsException", - "exception":true, - "documentation":"

Returned if the specified resource already exists.

" - }, - { - "shape":"ResourceNotFoundException", - "exception":true, - "documentation":"

Returned if the specified resource does not exist.

" - }, - { - "shape":"ServiceUnavailableException", - "exception":true, - "fault":true, - "documentation":"

Returned if the service cannot complete the request.

" - } - ], - "documentation":"

Creates a new log stream in the specified log group. The name of the log stream must be unique within the log group. There is no limit on the number of log streams that can exist in a log group.

You must use the following guidelines when naming a log stream:

" - }, - "DeleteLogGroup":{ - "name":"DeleteLogGroup", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DeleteLogGroupRequest"}, - "errors":[ - { - "shape":"InvalidParameterException", - "exception":true, - "documentation":"

Returned if a parameter of the request is incorrectly specified.

" - }, - { - "shape":"ResourceNotFoundException", - "exception":true, - "documentation":"

Returned if the specified resource does not exist.

" - }, - { - "shape":"OperationAbortedException", - "exception":true, - "documentation":"

Returned if multiple requests to update the same resource were in conflict.

" - }, - { - "shape":"ServiceUnavailableException", - "exception":true, - "fault":true, - "documentation":"

Returned if the service cannot complete the request.

" - } - ], - "documentation":"

Deletes the log group with the specified name and permanently deletes all the archived log events associated with it.

" - }, - "DeleteLogStream":{ - "name":"DeleteLogStream", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DeleteLogStreamRequest"}, - "errors":[ - { - "shape":"InvalidParameterException", - "exception":true, - "documentation":"

Returned if a parameter of the request is incorrectly specified.

" - }, - { - "shape":"ResourceNotFoundException", - "exception":true, - "documentation":"

Returned if the specified resource does not exist.

" - }, - { - "shape":"OperationAbortedException", - "exception":true, - "documentation":"

Returned if multiple requests to update the same resource were in conflict.

" - }, - { - "shape":"ServiceUnavailableException", - "exception":true, - "fault":true, - "documentation":"

Returned if the service cannot complete the request.

" - } - ], - "documentation":"

Deletes a log stream and permanently deletes all the archived log events associated with it.

" - }, - "DeleteMetricFilter":{ - "name":"DeleteMetricFilter", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DeleteMetricFilterRequest"}, - "errors":[ - { - "shape":"InvalidParameterException", - "exception":true, - "documentation":"

Returned if a parameter of the request is incorrectly specified.

" - }, - { - "shape":"ResourceNotFoundException", - "exception":true, - "documentation":"

Returned if the specified resource does not exist.

" - }, - { - "shape":"OperationAbortedException", - "exception":true, - "documentation":"

Returned if multiple requests to update the same resource were in conflict.

" - }, - { - "shape":"ServiceUnavailableException", - "exception":true, - "fault":true, - "documentation":"

Returned if the service cannot complete the request.

" - } - ], - "documentation":"

Deletes a metric filter associated with the specified log group.

" - }, - "DeleteRetentionPolicy":{ - "name":"DeleteRetentionPolicy", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DeleteRetentionPolicyRequest"}, - "errors":[ - { - "shape":"InvalidParameterException", - "exception":true, - "documentation":"

Returned if a parameter of the request is incorrectly specified.

" - }, - { - "shape":"ResourceNotFoundException", - "exception":true, - "documentation":"

Returned if the specified resource does not exist.

" - }, - { - "shape":"OperationAbortedException", - "exception":true, - "documentation":"

Returned if multiple requests to update the same resource were in conflict.

" - }, - { - "shape":"ServiceUnavailableException", - "exception":true, - "fault":true, - "documentation":"

Returned if the service cannot complete the request.

" - } - ], - "documentation":"

Deletes the retention policy of the specified log group. Log events would not expire if they belong to log groups without a retention policy.

" - }, - "DescribeLogGroups":{ - "name":"DescribeLogGroups", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeLogGroupsRequest"}, - "output":{"shape":"DescribeLogGroupsResponse"}, - "errors":[ - { - "shape":"InvalidParameterException", - "exception":true, - "documentation":"

Returned if a parameter of the request is incorrectly specified.

" - }, - { - "shape":"ServiceUnavailableException", - "exception":true, - "fault":true, - "documentation":"

Returned if the service cannot complete the request.

" - } - ], - "documentation":"

Returns all the log groups that are associated with the AWS account making the request. The list returned in the response is ASCII-sorted by log group name.

By default, this operation returns up to 50 log groups. If there are more log groups to list, the response would contain a nextToken value in the response body. You can also limit the number of log groups returned in the response by specifying the limit parameter in the request.

" - }, - "DescribeLogStreams":{ - "name":"DescribeLogStreams", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeLogStreamsRequest"}, - "output":{"shape":"DescribeLogStreamsResponse"}, - "errors":[ - { - "shape":"InvalidParameterException", - "exception":true, - "documentation":"

Returned if a parameter of the request is incorrectly specified.

" - }, - { - "shape":"ResourceNotFoundException", - "exception":true, - "documentation":"

Returned if the specified resource does not exist.

" - }, - { - "shape":"ServiceUnavailableException", - "exception":true, - "fault":true, - "documentation":"

Returned if the service cannot complete the request.

" - } - ], - "documentation":"

Returns all the log streams that are associated with the specified log group. The list returned in the response is ASCII-sorted by log stream name.

By default, this operation returns up to 50 log streams. If there are more log streams to list, the response would contain a nextToken value in the response body. You can also limit the number of log streams returned in the response by specifying the limit parameter in the request.

" - }, - "DescribeMetricFilters":{ - "name":"DescribeMetricFilters", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeMetricFiltersRequest"}, - "output":{"shape":"DescribeMetricFiltersResponse"}, - "errors":[ - { - "shape":"InvalidParameterException", - "exception":true, - "documentation":"

Returned if a parameter of the request is incorrectly specified.

" - }, - { - "shape":"ResourceNotFoundException", - "exception":true, - "documentation":"

Returned if the specified resource does not exist.

" - }, - { - "shape":"ServiceUnavailableException", - "exception":true, - "fault":true, - "documentation":"

Returned if the service cannot complete the request.

" - } - ], - "documentation":"

Returns all the metrics filters associated with the specified log group. The list returned in the response is ASCII-sorted by filter name.

By default, this operation returns up to 50 metric filters. If there are more metric filters to list, the response would contain a nextToken value in the response body. You can also limit the number of metric filters returned in the response by specifying the limit parameter in the request.

" - }, - "GetLogEvents":{ - "name":"GetLogEvents", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"GetLogEventsRequest"}, - "output":{"shape":"GetLogEventsResponse"}, - "errors":[ - { - "shape":"InvalidParameterException", - "exception":true, - "documentation":"

Returned if a parameter of the request is incorrectly specified.

" - }, - { - "shape":"ResourceNotFoundException", - "exception":true, - "documentation":"

Returned if the specified resource does not exist.

" - }, - { - "shape":"ServiceUnavailableException", - "exception":true, - "fault":true, - "documentation":"

Returned if the service cannot complete the request.

" - } - ], - "documentation":"

Retrieves log events from the specified log stream. You can provide an optional time range to filter the results on the event timestamp.

By default, this operation returns as much log events as can fit in a response size of 1MB, up to 10,000 log events. The response will always include a nextForwardToken and a nextBackwardToken in the response body. You can use any of these tokens in subsequent GetLogEvents requests to paginate through events in either forward or backward direction. You can also limit the number of log events returned in the response by specifying the limit parameter in the request.

" - }, - "PutLogEvents":{ - "name":"PutLogEvents", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"PutLogEventsRequest"}, - "output":{"shape":"PutLogEventsResponse"}, - "errors":[ - { - "shape":"InvalidParameterException", - "exception":true, - "documentation":"

Returned if a parameter of the request is incorrectly specified.

" - }, - { - "shape":"InvalidSequenceTokenException", - "exception":true - }, - { - "shape":"DataAlreadyAcceptedException", - "exception":true - }, - { - "shape":"ResourceNotFoundException", - "exception":true, - "documentation":"

Returned if the specified resource does not exist.

" - }, - { - "shape":"OperationAbortedException", - "exception":true, - "documentation":"

Returned if multiple requests to update the same resource were in conflict.

" - }, - { - "shape":"ServiceUnavailableException", - "exception":true, - "fault":true, - "documentation":"

Returned if the service cannot complete the request.

" - } - ], - "documentation":"

Uploads a batch of log events to the specified log stream.

Every PutLogEvents request must include the sequenceToken obtained from the response of the previous request. An upload in a newly created log stream does not require a sequenceToken.

The batch of events must satisfy the following constraints:

" - }, - "PutMetricFilter":{ - "name":"PutMetricFilter", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"PutMetricFilterRequest"}, - "errors":[ - { - "shape":"InvalidParameterException", - "exception":true, - "documentation":"

Returned if a parameter of the request is incorrectly specified.

" - }, - { - "shape":"ResourceNotFoundException", - "exception":true, - "documentation":"

Returned if the specified resource does not exist.

" - }, - { - "shape":"OperationAbortedException", - "exception":true, - "documentation":"

Returned if multiple requests to update the same resource were in conflict.

" - }, - { - "shape":"LimitExceededException", - "exception":true, - "documentation":"

Returned if you have reached the maximum number of resources that can be created.

" - }, - { - "shape":"ServiceUnavailableException", - "exception":true, - "fault":true, - "documentation":"

Returned if the service cannot complete the request.

" - } - ], - "documentation":"

Creates or updates a metric filter and associates it with the specified log group. Metric filters allow you to configure rules to extract metric data from log events ingested through PutLogEvents requests.

" - }, - "PutRetentionPolicy":{ - "name":"PutRetentionPolicy", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"PutRetentionPolicyRequest"}, - "errors":[ - { - "shape":"InvalidParameterException", - "exception":true, - "documentation":"

Returned if a parameter of the request is incorrectly specified.

" - }, - { - "shape":"ResourceNotFoundException", - "exception":true, - "documentation":"

Returned if the specified resource does not exist.

" - }, - { - "shape":"OperationAbortedException", - "exception":true, - "documentation":"

Returned if multiple requests to update the same resource were in conflict.

" - }, - { - "shape":"ServiceUnavailableException", - "exception":true, - "fault":true, - "documentation":"

Returned if the service cannot complete the request.

" - } - ], - "documentation":"

Sets the retention of the specified log group. A retention policy allows you to configure the number of days you want to retain log events in the specified log group.

" - }, - "TestMetricFilter":{ - "name":"TestMetricFilter", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"TestMetricFilterRequest"}, - "output":{"shape":"TestMetricFilterResponse"}, - "errors":[ - { - "shape":"InvalidParameterException", - "exception":true, - "documentation":"

Returned if a parameter of the request is incorrectly specified.

" - }, - { - "shape":"ServiceUnavailableException", - "exception":true, - "fault":true, - "documentation":"

Returned if the service cannot complete the request.

" - } - ], - "documentation":"

Tests the filter pattern of a metric filter against a sample of log event messages. You can use this operation to validate the correctness of a metric filter pattern.

" - } - }, - "shapes":{ - "Arn":{"type":"string"}, - "CreateLogGroupRequest":{ - "type":"structure", - "required":["logGroupName"], - "members":{ - "logGroupName":{"shape":"LogGroupName"} - } - }, - "CreateLogStreamRequest":{ - "type":"structure", - "required":[ - "logGroupName", - "logStreamName" - ], - "members":{ - "logGroupName":{"shape":"LogGroupName"}, - "logStreamName":{"shape":"LogStreamName"} - } - }, - "DataAlreadyAcceptedException":{ - "type":"structure", - "members":{ - "expectedSequenceToken":{"shape":"SequenceToken"} - }, - "exception":true - }, - "Days":{ - "type":"integer", - "documentation":"Specifies the number of days you want to retain 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, 3653." - }, - "DeleteLogGroupRequest":{ - "type":"structure", - "required":["logGroupName"], - "members":{ - "logGroupName":{"shape":"LogGroupName"} - } - }, - "DeleteLogStreamRequest":{ - "type":"structure", - "required":[ - "logGroupName", - "logStreamName" - ], - "members":{ - "logGroupName":{"shape":"LogGroupName"}, - "logStreamName":{"shape":"LogStreamName"} - } - }, - "DeleteMetricFilterRequest":{ - "type":"structure", - "required":[ - "logGroupName", - "filterName" - ], - "members":{ - "logGroupName":{"shape":"LogGroupName"}, - "filterName":{"shape":"FilterName"} - } - }, - "DeleteRetentionPolicyRequest":{ - "type":"structure", - "required":["logGroupName"], - "members":{ - "logGroupName":{"shape":"LogGroupName"} - } - }, - "DescribeLimit":{ - "type":"integer", - "min":1, - "max":50, - "documentation":"The maximum number of results to return." - }, - "DescribeLogGroupsRequest":{ - "type":"structure", - "members":{ - "logGroupNamePrefix":{"shape":"LogGroupName"}, - "nextToken":{ - "shape":"NextToken", - "documentation":"

A string token used for pagination that points to the next page of results. It must be a value obtained from the response of the previous DescribeLogGroups request.

" - }, - "limit":{ - "shape":"DescribeLimit", - "documentation":"

The maximum number of items returned in the response. If you don't specify a value, the request would return up to 50 items.

" - } - } - }, - "DescribeLogGroupsResponse":{ - "type":"structure", - "members":{ - "logGroups":{"shape":"LogGroups"}, - "nextToken":{"shape":"NextToken"} - } - }, - "DescribeLogStreamsRequest":{ - "type":"structure", - "required":["logGroupName"], - "members":{ - "logGroupName":{"shape":"LogGroupName"}, - "logStreamNamePrefix":{"shape":"LogStreamName"}, - "nextToken":{ - "shape":"NextToken", - "documentation":"

A string token used for pagination that points to the next page of results. It must be a value obtained from the response of the previous DescribeLogStreams request.

" - }, - "limit":{ - "shape":"DescribeLimit", - "documentation":"

The maximum number of items returned in the response. If you don't specify a value, the request would return up to 50 items.

" - } - } - }, - "DescribeLogStreamsResponse":{ - "type":"structure", - "members":{ - "logStreams":{"shape":"LogStreams"}, - "nextToken":{"shape":"NextToken"} - } - }, - "DescribeMetricFiltersRequest":{ - "type":"structure", - "required":["logGroupName"], - "members":{ - "logGroupName":{"shape":"LogGroupName"}, - "filterNamePrefix":{"shape":"FilterName"}, - "nextToken":{ - "shape":"NextToken", - "documentation":"

A string token used for pagination that points to the next page of results. It must be a value obtained from the response of the previous DescribeMetricFilters request.

" - }, - "limit":{ - "shape":"DescribeLimit", - "documentation":"

The maximum number of items returned in the response. If you don't specify a value, the request would return up to 50 items.

" - } - } - }, - "DescribeMetricFiltersResponse":{ - "type":"structure", - "members":{ - "metricFilters":{"shape":"MetricFilters"}, - "nextToken":{"shape":"NextToken"} - } - }, - "EventMessage":{ - "type":"string", - "min":1, - "max":32768 - }, - "EventNumber":{"type":"long"}, - "EventsLimit":{ - "type":"integer", - "min":1, - "max":10000, - "documentation":"The maximum number of events to return." - }, - "ExtractedValues":{ - "type":"map", - "key":{"shape":"Token"}, - "value":{"shape":"Value"} - }, - "FilterCount":{ - "type":"integer", - "documentation":"The number of metric filters associated with the log group." - }, - "FilterName":{ - "type":"string", - "min":1, - "max":512, - "pattern":"[^:*]*", - "documentation":"The name of the metric filter." - }, - "FilterPattern":{ - "type":"string", - "min":0, - "max":512, - "documentation":"A symbolic description of how Amazon CloudWatch Logs should interpret the data in each log entry. For example, a log entry may contain timestamps, IP addresses, strings, and so on. You use the pattern to specify what to look for in the log stream." - }, - "GetLogEventsRequest":{ - "type":"structure", - "required":[ - "logGroupName", - "logStreamName" - ], - "members":{ - "logGroupName":{"shape":"LogGroupName"}, - "logStreamName":{"shape":"LogStreamName"}, - "startTime":{"shape":"Timestamp"}, - "endTime":{"shape":"Timestamp"}, - "nextToken":{ - "shape":"NextToken", - "documentation":"

A string token used for pagination that points to the next page of results. It must be a value obtained from the nextForwardToken or nextBackwardToken fields in the response of the previous GetLogEvents request.

" - }, - "limit":{ - "shape":"EventsLimit", - "documentation":"

The maximum number of log events returned in the response. If you don't specify a value, the request would return as much log events as can fit in a response size of 1MB, up to 10,000 log events.

" - }, - "startFromHead":{ - "shape":"StartFromHead", - "documentation":"If set to true, the earliest log events would be returned first. The default is false (the latest log events are returned first)." - } - } - }, - "GetLogEventsResponse":{ - "type":"structure", - "members":{ - "events":{"shape":"OutputLogEvents"}, - "nextForwardToken":{"shape":"NextToken"}, - "nextBackwardToken":{"shape":"NextToken"} - } - }, - "InputLogEvent":{ - "type":"structure", - "required":[ - "timestamp", - "message" - ], - "members":{ - "timestamp":{"shape":"Timestamp"}, - "message":{"shape":"EventMessage"} - }, - "documentation":"A log event is a record of some activity that was recorded by the application or resource being monitored. The log event record that Amazon CloudWatch Logs understands contains two properties: the timestamp of when the event occurred, and the raw event message." - }, - "InputLogEvents":{ - "type":"list", - "member":{"shape":"InputLogEvent"}, - "min":1, - "max":1000, - "documentation":"A list of events belonging to a log stream." - }, - "InvalidParameterException":{ - "type":"structure", - "members":{ - }, - "exception":true, - "documentation":"

Returned if a parameter of the request is incorrectly specified.

" - }, - "InvalidSequenceTokenException":{ - "type":"structure", - "members":{ - "expectedSequenceToken":{"shape":"SequenceToken"} - }, - "exception":true - }, - "LimitExceededException":{ - "type":"structure", - "members":{ - }, - "exception":true, - "documentation":"

Returned if you have reached the maximum number of resources that can be created.

" - }, - "LogGroup":{ - "type":"structure", - "members":{ - "logGroupName":{"shape":"LogGroupName"}, - "creationTime":{"shape":"Timestamp"}, - "retentionInDays":{"shape":"Days"}, - "metricFilterCount":{"shape":"FilterCount"}, - "arn":{"shape":"Arn"}, - "storedBytes":{"shape":"StoredBytes"} - } - }, - "LogGroupName":{ - "type":"string", - "min":1, - "max":512, - "pattern":"[\\.\\-_/#A-Za-z0-9]+" - }, - "LogGroups":{ - "type":"list", - "member":{"shape":"LogGroup"}, - "documentation":"A list of log groups." - }, - "LogStream":{ - "type":"structure", - "members":{ - "logStreamName":{"shape":"LogStreamName"}, - "creationTime":{"shape":"Timestamp"}, - "firstEventTimestamp":{"shape":"Timestamp"}, - "lastEventTimestamp":{"shape":"Timestamp"}, - "lastIngestionTime":{"shape":"Timestamp"}, - "uploadSequenceToken":{"shape":"SequenceToken"}, - "arn":{"shape":"Arn"}, - "storedBytes":{"shape":"StoredBytes"} - }, - "documentation":"A log stream is sequence of log events that share the same emitter." - }, - "LogStreamName":{ - "type":"string", - "min":1, - "max":512, - "pattern":"[^:*]*" - }, - "LogStreams":{ - "type":"list", - "member":{"shape":"LogStream"}, - "documentation":"A list of log streams." - }, - "MetricFilter":{ - "type":"structure", - "members":{ - "filterName":{"shape":"FilterName"}, - "filterPattern":{"shape":"FilterPattern"}, - "metricTransformations":{"shape":"MetricTransformations"}, - "creationTime":{"shape":"Timestamp"} - }, - "documentation":"Metric filters can be used to express how Amazon CloudWatch Logs would extract metric observations from ingested log events and transform them to metric data in a CloudWatch metric." - }, - "MetricFilterMatchRecord":{ - "type":"structure", - "members":{ - "eventNumber":{"shape":"EventNumber"}, - "eventMessage":{"shape":"EventMessage"}, - "extractedValues":{"shape":"ExtractedValues"} - } - }, - "MetricFilterMatches":{ - "type":"list", - "member":{"shape":"MetricFilterMatchRecord"} - }, - "MetricFilters":{ - "type":"list", - "member":{"shape":"MetricFilter"} - }, - "MetricName":{ - "type":"string", - "max":255, - "pattern":"[^:*$]*", - "documentation":"The name of the CloudWatch metric to which the monitored log information should be published. For example, you may publish to a metric called ErrorCount." - }, - "MetricNamespace":{ - "type":"string", - "max":255, - "pattern":"[^:*$]*", - "documentation":"The destination namespace of the new CloudWatch metric." - }, - "MetricTransformation":{ - "type":"structure", - "required":[ - "metricName", - "metricNamespace", - "metricValue" - ], - "members":{ - "metricName":{"shape":"MetricName"}, - "metricNamespace":{"shape":"MetricNamespace"}, - "metricValue":{"shape":"MetricValue"} - } - }, - "MetricTransformations":{ - "type":"list", - "member":{"shape":"MetricTransformation"}, - "min":1, - "max":1 - }, - "MetricValue":{ - "type":"string", - "max":100, - "documentation":"What to publish to the metric. For example, if you're counting the occurrences of a particular term like \"Error\", the value will be \"1\" for each occurrence. If you're counting the bytes transferred the published value will be the value in the log event." - }, - "NextToken":{ - "type":"string", - "documentation":"A string token used for pagination that points to the next page of results. It must be a value obtained from the response of the previous request. The token expires after 24 hours." - }, - "OperationAbortedException":{ - "type":"structure", - "members":{ - }, - "exception":true, - "documentation":"

Returned if multiple requests to update the same resource were in conflict.

" - }, - "OutputLogEvent":{ - "type":"structure", - "members":{ - "timestamp":{"shape":"Timestamp"}, - "message":{"shape":"EventMessage"}, - "ingestionTime":{"shape":"Timestamp"} - } - }, - "OutputLogEvents":{ - "type":"list", - "member":{"shape":"OutputLogEvent"} - }, - "PutLogEventsRequest":{ - "type":"structure", - "required":[ - "logGroupName", - "logStreamName", - "logEvents" - ], - "members":{ - "logGroupName":{"shape":"LogGroupName"}, - "logStreamName":{"shape":"LogStreamName"}, - "logEvents":{"shape":"InputLogEvents"}, - "sequenceToken":{ - "shape":"SequenceToken", - "documentation":"

A string token that must be obtained from the response of the previous PutLogEvents request.

" - } - } - }, - "PutLogEventsResponse":{ - "type":"structure", - "members":{ - "nextSequenceToken":{"shape":"SequenceToken"} - } - }, - "PutMetricFilterRequest":{ - "type":"structure", - "required":[ - "logGroupName", - "filterName", - "filterPattern", - "metricTransformations" - ], - "members":{ - "logGroupName":{"shape":"LogGroupName"}, - "filterName":{"shape":"FilterName"}, - "filterPattern":{"shape":"FilterPattern"}, - "metricTransformations":{"shape":"MetricTransformations"} - } - }, - "PutRetentionPolicyRequest":{ - "type":"structure", - "required":[ - "logGroupName", - "retentionInDays" - ], - "members":{ - "logGroupName":{"shape":"LogGroupName"}, - "retentionInDays":{"shape":"Days"} - } - }, - "ResourceAlreadyExistsException":{ - "type":"structure", - "members":{ - }, - "exception":true, - "documentation":"

Returned if the specified resource already exists.

" - }, - "ResourceNotFoundException":{ - "type":"structure", - "members":{ - }, - "exception":true, - "documentation":"

Returned if the specified resource does not exist.

" - }, - "SequenceToken":{ - "type":"string", - "min":1, - "documentation":"A string token used for making PutLogEvents requests. A sequenceToken can only be used once, and PutLogEvents requests must include the sequenceToken obtained from the response of the previous request." - }, - "ServiceUnavailableException":{ - "type":"structure", - "members":{ - }, - "exception":true, - "fault":true, - "documentation":"

Returned if the service cannot complete the request.

" - }, - "StartFromHead":{"type":"boolean"}, - "StoredBytes":{ - "type":"long", - "min":0 - }, - "TestEventMessages":{ - "type":"list", - "member":{"shape":"EventMessage"}, - "min":1, - "max":50 - }, - "TestMetricFilterRequest":{ - "type":"structure", - "required":[ - "filterPattern", - "logEventMessages" - ], - "members":{ - "filterPattern":{"shape":"FilterPattern"}, - "logEventMessages":{"shape":"TestEventMessages"} - } - }, - "TestMetricFilterResponse":{ - "type":"structure", - "members":{ - "matches":{"shape":"MetricFilterMatches"} - } - }, - "Timestamp":{ - "type":"long", - "min":0, - "documentation":"A point in time expressed as the number milliseconds since Jan 1, 1970 00:00:00 UTC." - }, - "Token":{"type":"string"}, - "Value":{"type":"string"} - } -} diff --git a/src/github.com/getlantern/aws-sdk-go/apis/opsworks/2013-02-18.normal.json b/src/github.com/getlantern/aws-sdk-go/apis/opsworks/2013-02-18.normal.json deleted file mode 100644 index be4d94343e..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/apis/opsworks/2013-02-18.normal.json +++ /dev/null @@ -1,4727 +0,0 @@ -{ - "metadata":{ - "apiVersion":"2013-02-18", - "endpointPrefix":"opsworks", - "jsonVersion":"1.1", - "serviceFullName":"AWS OpsWorks", - "signatureVersion":"v4", - "targetPrefix":"OpsWorks_20130218", - "protocol":"json" - }, - "documentation":"AWS OpsWorks

Welcome to the AWS OpsWorks API Reference. This guide provides descriptions, syntax, and usage examples about AWS OpsWorks actions and data types, including common parameters and error codes.

AWS OpsWorks is an application management service that provides an integrated experience for overseeing the complete application lifecycle. For information about this product, go to the AWS OpsWorks details page.

SDKs and CLI

The most common way to use the AWS OpsWorks API is by using the AWS Command Line Interface (CLI) or by using one of the AWS SDKs to implement applications in your preferred language. For more information, see:

Endpoints

AWS OpsWorks supports only one endpoint, opsworks.us-east-1.amazonaws.com (HTTPS), so you must connect to that endpoint. You can then use the API to direct AWS OpsWorks to create stacks in any AWS Region.

Chef Versions

When you call CreateStack, CloneStack, or UpdateStack we recommend you use the ConfigurationManager parameter to specify the Chef version, 0.9, 11.4, or 11.10. The default value is currently 11.10. For more information, see Chef Versions.

You can still specify Chef 0.9 for your stack, but new features are not available for Chef 0.9 stacks, and support is scheduled to end on July 24, 2014. We do not recommend using Chef 0.9 for new stacks, and we recommend migrating your existing Chef 0.9 stacks to Chef 11.10 as soon as possible.", - "operations":{ - "AssignInstance":{ - "name":"AssignInstance", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"AssignInstanceRequest"}, - "errors":[ - { - "shape":"ValidationException", - "exception":true, - "documentation":"

Indicates that a request was invalid.

" - }, - { - "shape":"ResourceNotFoundException", - "exception":true, - "documentation":"

Indicates that a resource was not found.

" - } - ], - "documentation":"

Assign a registered instance to a custom layer. You cannot use this action with instances that were created with AWS OpsWorks.

Required Permissions: To use this action, an IAM user must have a Manage permissions level for the stack or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions.

" - }, - "AssignVolume":{ - "name":"AssignVolume", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"AssignVolumeRequest"}, - "errors":[ - { - "shape":"ValidationException", - "exception":true, - "documentation":"

Indicates that a request was invalid.

" - }, - { - "shape":"ResourceNotFoundException", - "exception":true, - "documentation":"

Indicates that a resource was not found.

" - } - ], - "documentation":"

Assigns one of the stack's registered Amazon EBS volumes to a specified instance. The volume must first be registered with the stack by calling RegisterVolume. For more information, see Resource Management.

Required Permissions: To use this action, an IAM user must have a Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions.

" - }, - "AssociateElasticIp":{ - "name":"AssociateElasticIp", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"AssociateElasticIpRequest"}, - "errors":[ - { - "shape":"ValidationException", - "exception":true, - "documentation":"

Indicates that a request was invalid.

" - }, - { - "shape":"ResourceNotFoundException", - "exception":true, - "documentation":"

Indicates that a resource was not found.

" - } - ], - "documentation":"

Associates one of the stack's registered Elastic IP addresses with a specified instance. The address must first be registered with the stack by calling RegisterElasticIp. For more information, see Resource Management.

Required Permissions: To use this action, an IAM user must have a Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions.

" - }, - "AttachElasticLoadBalancer":{ - "name":"AttachElasticLoadBalancer", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"AttachElasticLoadBalancerRequest"}, - "errors":[ - { - "shape":"ValidationException", - "exception":true, - "documentation":"

Indicates that a request was invalid.

" - }, - { - "shape":"ResourceNotFoundException", - "exception":true, - "documentation":"

Indicates that a resource was not found.

" - } - ], - "documentation":"

Attaches an Elastic Load Balancing load balancer to a specified layer. For more information, see Elastic Load Balancing.

You must create the Elastic Load Balancing instance separately, by using the Elastic Load Balancing console, API, or CLI. For more information, see Elastic Load Balancing Developer Guide.

Required Permissions: To use this action, an IAM user must have a Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions.

" - }, - "CloneStack":{ - "name":"CloneStack", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CloneStackRequest"}, - "output":{ - "shape":"CloneStackResult", - "documentation":"

Contains the response to a CloneStack request.

" - }, - "errors":[ - { - "shape":"ValidationException", - "exception":true, - "documentation":"

Indicates that a request was invalid.

" - }, - { - "shape":"ResourceNotFoundException", - "exception":true, - "documentation":"

Indicates that a resource was not found.

" - } - ], - "documentation":"

Creates a clone of a specified stack. For more information, see Clone a Stack.

Required Permissions: To use this action, an IAM user must have an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions.

" - }, - "CreateApp":{ - "name":"CreateApp", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CreateAppRequest"}, - "output":{ - "shape":"CreateAppResult", - "documentation":"

Contains the response to a CreateApp request.

" - }, - "errors":[ - { - "shape":"ValidationException", - "exception":true, - "documentation":"

Indicates that a request was invalid.

" - }, - { - "shape":"ResourceNotFoundException", - "exception":true, - "documentation":"

Indicates that a resource was not found.

" - } - ], - "documentation":"

Creates an app for a specified stack. For more information, see Creating Apps.

Required Permissions: To use this action, an IAM user must have a Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions.

" - }, - "CreateDeployment":{ - "name":"CreateDeployment", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CreateDeploymentRequest"}, - "output":{ - "shape":"CreateDeploymentResult", - "documentation":"

Contains the response to a CreateDeployment request.

" - }, - "errors":[ - { - "shape":"ValidationException", - "exception":true, - "documentation":"

Indicates that a request was invalid.

" - }, - { - "shape":"ResourceNotFoundException", - "exception":true, - "documentation":"

Indicates that a resource was not found.

" - } - ], - "documentation":"

Runs deployment or stack commands. For more information, see Deploying Apps and Run Stack Commands.

Required Permissions: To use this action, an IAM user must have a Deploy or Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions.

" - }, - "CreateInstance":{ - "name":"CreateInstance", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CreateInstanceRequest"}, - "output":{ - "shape":"CreateInstanceResult", - "documentation":"

Contains the response to a CreateInstance request.

" - }, - "errors":[ - { - "shape":"ValidationException", - "exception":true, - "documentation":"

Indicates that a request was invalid.

" - }, - { - "shape":"ResourceNotFoundException", - "exception":true, - "documentation":"

Indicates that a resource was not found.

" - } - ], - "documentation":"

Creates an instance in a specified stack. For more information, see Adding an Instance to a Layer.

Required Permissions: To use this action, an IAM user must have a Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions.

" - }, - "CreateLayer":{ - "name":"CreateLayer", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CreateLayerRequest"}, - "output":{ - "shape":"CreateLayerResult", - "documentation":"

Contains the response to a CreateLayer request.

" - }, - "errors":[ - { - "shape":"ValidationException", - "exception":true, - "documentation":"

Indicates that a request was invalid.

" - }, - { - "shape":"ResourceNotFoundException", - "exception":true, - "documentation":"

Indicates that a resource was not found.

" - } - ], - "documentation":"

Creates a layer. For more information, see How to Create a Layer.

You should use CreateLayer for noncustom layer types such as PHP App Server only if the stack does not have an existing layer of that type. A stack can have at most one instance of each noncustom layer; if you attempt to create a second instance, CreateLayer fails. A stack can have an arbitrary number of custom layers, so you can call CreateLayer as many times as you like for that layer type.

Required Permissions: To use this action, an IAM user must have a Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions.

" - }, - "CreateStack":{ - "name":"CreateStack", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CreateStackRequest"}, - "output":{ - "shape":"CreateStackResult", - "documentation":"

Contains the response to a CreateStack request.

" - }, - "errors":[ - { - "shape":"ValidationException", - "exception":true, - "documentation":"

Indicates that a request was invalid.

" - } - ], - "documentation":"

Creates a new stack. For more information, see Create a New Stack.

Required Permissions: To use this action, an IAM user must have an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions.

" - }, - "CreateUserProfile":{ - "name":"CreateUserProfile", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CreateUserProfileRequest"}, - "output":{ - "shape":"CreateUserProfileResult", - "documentation":"

Contains the response to a CreateUserProfile request.

" - }, - "errors":[ - { - "shape":"ValidationException", - "exception":true, - "documentation":"

Indicates that a request was invalid.

" - } - ], - "documentation":"

Creates a new user profile.

Required Permissions: To use this action, an IAM user must have an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions.

" - }, - "DeleteApp":{ - "name":"DeleteApp", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DeleteAppRequest"}, - "errors":[ - { - "shape":"ValidationException", - "exception":true, - "documentation":"

Indicates that a request was invalid.

" - }, - { - "shape":"ResourceNotFoundException", - "exception":true, - "documentation":"

Indicates that a resource was not found.

" - } - ], - "documentation":"

Deletes a specified app.

Required Permissions: To use this action, an IAM user must have a Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions.

" - }, - "DeleteInstance":{ - "name":"DeleteInstance", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DeleteInstanceRequest"}, - "errors":[ - { - "shape":"ValidationException", - "exception":true, - "documentation":"

Indicates that a request was invalid.

" - }, - { - "shape":"ResourceNotFoundException", - "exception":true, - "documentation":"

Indicates that a resource was not found.

" - } - ], - "documentation":"

Deletes a specified instance, which terminates the associated Amazon EC2 instance. You must stop an instance before you can delete it.

For more information, see Deleting Instances.

Required Permissions: To use this action, an IAM user must have a Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions.

" - }, - "DeleteLayer":{ - "name":"DeleteLayer", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DeleteLayerRequest"}, - "errors":[ - { - "shape":"ValidationException", - "exception":true, - "documentation":"

Indicates that a request was invalid.

" - }, - { - "shape":"ResourceNotFoundException", - "exception":true, - "documentation":"

Indicates that a resource was not found.

" - } - ], - "documentation":"

Deletes a specified layer. You must first stop and then delete all associated instances or unassign registered instances. For more information, see How to Delete a Layer.

Required Permissions: To use this action, an IAM user must have a Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions.

" - }, - "DeleteStack":{ - "name":"DeleteStack", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DeleteStackRequest"}, - "errors":[ - { - "shape":"ValidationException", - "exception":true, - "documentation":"

Indicates that a request was invalid.

" - }, - { - "shape":"ResourceNotFoundException", - "exception":true, - "documentation":"

Indicates that a resource was not found.

" - } - ], - "documentation":"

Deletes a specified stack. You must first delete all instances, layers, and apps or deregister registered instances. For more information, see Shut Down a Stack.

Required Permissions: To use this action, an IAM user must have a Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions.

" - }, - "DeleteUserProfile":{ - "name":"DeleteUserProfile", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DeleteUserProfileRequest"}, - "errors":[ - { - "shape":"ValidationException", - "exception":true, - "documentation":"

Indicates that a request was invalid.

" - }, - { - "shape":"ResourceNotFoundException", - "exception":true, - "documentation":"

Indicates that a resource was not found.

" - } - ], - "documentation":"

Deletes a user profile.

Required Permissions: To use this action, an IAM user must have an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions.

" - }, - "DeregisterElasticIp":{ - "name":"DeregisterElasticIp", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DeregisterElasticIpRequest"}, - "errors":[ - { - "shape":"ValidationException", - "exception":true, - "documentation":"

Indicates that a request was invalid.

" - }, - { - "shape":"ResourceNotFoundException", - "exception":true, - "documentation":"

Indicates that a resource was not found.

" - } - ], - "documentation":"

Deregisters a specified Elastic IP address. The address can then be registered by another stack. For more information, see Resource Management.

Required Permissions: To use this action, an IAM user must have a Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions.

" - }, - "DeregisterInstance":{ - "name":"DeregisterInstance", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DeregisterInstanceRequest"}, - "errors":[ - { - "shape":"ValidationException", - "exception":true, - "documentation":"

Indicates that a request was invalid.

" - }, - { - "shape":"ResourceNotFoundException", - "exception":true, - "documentation":"

Indicates that a resource was not found.

" - } - ], - "documentation":"

Deregister a registered Amazon EC2 or on-premises instance. This action removes the instance from the stack and returns it to your control. This action can not be used with instances that were created with AWS OpsWorks.

Required Permissions: To use this action, an IAM user must have a Manage permissions level for the stack or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions.

" - }, - "DeregisterRdsDbInstance":{ - "name":"DeregisterRdsDbInstance", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DeregisterRdsDbInstanceRequest"}, - "errors":[ - { - "shape":"ValidationException", - "exception":true, - "documentation":"

Indicates that a request was invalid.

" - }, - { - "shape":"ResourceNotFoundException", - "exception":true, - "documentation":"

Indicates that a resource was not found.

" - } - ], - "documentation":"

Deregisters an Amazon RDS instance.

Required Permissions: To use this action, an IAM user must have a Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions.

" - }, - "DeregisterVolume":{ - "name":"DeregisterVolume", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DeregisterVolumeRequest"}, - "errors":[ - { - "shape":"ValidationException", - "exception":true, - "documentation":"

Indicates that a request was invalid.

" - }, - { - "shape":"ResourceNotFoundException", - "exception":true, - "documentation":"

Indicates that a resource was not found.

" - } - ], - "documentation":"

Deregisters an Amazon EBS volume. The volume can then be registered by another stack. For more information, see Resource Management.

Required Permissions: To use this action, an IAM user must have a Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions.

" - }, - "DescribeApps":{ - "name":"DescribeApps", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeAppsRequest"}, - "output":{ - "shape":"DescribeAppsResult", - "documentation":"

Contains the response to a DescribeApps request.

" - }, - "errors":[ - { - "shape":"ValidationException", - "exception":true, - "documentation":"

Indicates that a request was invalid.

" - }, - { - "shape":"ResourceNotFoundException", - "exception":true, - "documentation":"

Indicates that a resource was not found.

" - } - ], - "documentation":"

Requests a description of a specified set of apps.

You must specify at least one of the parameters.

Required Permissions: To use this action, an IAM user must have a Show, Deploy, or Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions.

" - }, - "DescribeCommands":{ - "name":"DescribeCommands", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeCommandsRequest"}, - "output":{ - "shape":"DescribeCommandsResult", - "documentation":"

Contains the response to a DescribeCommands request.

" - }, - "errors":[ - { - "shape":"ValidationException", - "exception":true, - "documentation":"

Indicates that a request was invalid.

" - }, - { - "shape":"ResourceNotFoundException", - "exception":true, - "documentation":"

Indicates that a resource was not found.

" - } - ], - "documentation":"

Describes the results of specified commands.

You must specify at least one of the parameters.

Required Permissions: To use this action, an IAM user must have a Show, Deploy, or Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions.

" - }, - "DescribeDeployments":{ - "name":"DescribeDeployments", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeDeploymentsRequest"}, - "output":{ - "shape":"DescribeDeploymentsResult", - "documentation":"

Contains the response to a DescribeDeployments request.

" - }, - "errors":[ - { - "shape":"ValidationException", - "exception":true, - "documentation":"

Indicates that a request was invalid.

" - }, - { - "shape":"ResourceNotFoundException", - "exception":true, - "documentation":"

Indicates that a resource was not found.

" - } - ], - "documentation":"

Requests a description of a specified set of deployments.

You must specify at least one of the parameters.

Required Permissions: To use this action, an IAM user must have a Show, Deploy, or Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions.

" - }, - "DescribeElasticIps":{ - "name":"DescribeElasticIps", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeElasticIpsRequest"}, - "output":{ - "shape":"DescribeElasticIpsResult", - "documentation":"

Contains the response to a DescribeElasticIps request.

" - }, - "errors":[ - { - "shape":"ValidationException", - "exception":true, - "documentation":"

Indicates that a request was invalid.

" - }, - { - "shape":"ResourceNotFoundException", - "exception":true, - "documentation":"

Indicates that a resource was not found.

" - } - ], - "documentation":"

Describes Elastic IP addresses.

You must specify at least one of the parameters.

Required Permissions: To use this action, an IAM user must have a Show, Deploy, or Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions.

" - }, - "DescribeElasticLoadBalancers":{ - "name":"DescribeElasticLoadBalancers", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeElasticLoadBalancersRequest"}, - "output":{ - "shape":"DescribeElasticLoadBalancersResult", - "documentation":"

Contains the response to a DescribeElasticLoadBalancers request.

" - }, - "errors":[ - { - "shape":"ValidationException", - "exception":true, - "documentation":"

Indicates that a request was invalid.

" - }, - { - "shape":"ResourceNotFoundException", - "exception":true, - "documentation":"

Indicates that a resource was not found.

" - } - ], - "documentation":"

Describes a stack's Elastic Load Balancing instances.

You must specify at least one of the parameters.

Required Permissions: To use this action, an IAM user must have a Show, Deploy, or Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions.

" - }, - "DescribeInstances":{ - "name":"DescribeInstances", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeInstancesRequest"}, - "output":{ - "shape":"DescribeInstancesResult", - "documentation":"

Contains the response to a DescribeInstances request.

" - }, - "errors":[ - { - "shape":"ValidationException", - "exception":true, - "documentation":"

Indicates that a request was invalid.

" - }, - { - "shape":"ResourceNotFoundException", - "exception":true, - "documentation":"

Indicates that a resource was not found.

" - } - ], - "documentation":"

Requests a description of a set of instances.

You must specify at least one of the parameters.

Required Permissions: To use this action, an IAM user must have a Show, Deploy, or Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions.

" - }, - "DescribeLayers":{ - "name":"DescribeLayers", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeLayersRequest"}, - "output":{ - "shape":"DescribeLayersResult", - "documentation":"

Contains the response to a DescribeLayers request.

" - }, - "errors":[ - { - "shape":"ValidationException", - "exception":true, - "documentation":"

Indicates that a request was invalid.

" - }, - { - "shape":"ResourceNotFoundException", - "exception":true, - "documentation":"

Indicates that a resource was not found.

" - } - ], - "documentation":"

Requests a description of one or more layers in a specified stack.

You must specify at least one of the parameters.

Required Permissions: To use this action, an IAM user must have a Show, Deploy, or Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions.

" - }, - "DescribeLoadBasedAutoScaling":{ - "name":"DescribeLoadBasedAutoScaling", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeLoadBasedAutoScalingRequest"}, - "output":{ - "shape":"DescribeLoadBasedAutoScalingResult", - "documentation":"

Contains the response to a DescribeLoadBasedAutoScaling request.

" - }, - "errors":[ - { - "shape":"ValidationException", - "exception":true, - "documentation":"

Indicates that a request was invalid.

" - }, - { - "shape":"ResourceNotFoundException", - "exception":true, - "documentation":"

Indicates that a resource was not found.

" - } - ], - "documentation":"

Describes load-based auto scaling configurations for specified layers.

You must specify at least one of the parameters.

Required Permissions: To use this action, an IAM user must have a Show, Deploy, or Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions.

" - }, - "DescribeMyUserProfile":{ - "name":"DescribeMyUserProfile", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "output":{ - "shape":"DescribeMyUserProfileResult", - "documentation":"

Contains the response to a DescribeMyUserProfile request.

" - }, - "documentation":"

Describes a user's SSH information.

Required Permissions: To use this action, an IAM user must have self-management enabled or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions.

" - }, - "DescribePermissions":{ - "name":"DescribePermissions", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribePermissionsRequest"}, - "output":{ - "shape":"DescribePermissionsResult", - "documentation":"

Contains the response to a DescribePermissions request.

" - }, - "errors":[ - { - "shape":"ValidationException", - "exception":true, - "documentation":"

Indicates that a request was invalid.

" - }, - { - "shape":"ResourceNotFoundException", - "exception":true, - "documentation":"

Indicates that a resource was not found.

" - } - ], - "documentation":"

Describes the permissions for a specified stack.

Required Permissions: To use this action, an IAM user must have a Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions.

" - }, - "DescribeRaidArrays":{ - "name":"DescribeRaidArrays", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeRaidArraysRequest"}, - "output":{ - "shape":"DescribeRaidArraysResult", - "documentation":"

Contains the response to a DescribeRaidArrays request.

" - }, - "errors":[ - { - "shape":"ValidationException", - "exception":true, - "documentation":"

Indicates that a request was invalid.

" - }, - { - "shape":"ResourceNotFoundException", - "exception":true, - "documentation":"

Indicates that a resource was not found.

" - } - ], - "documentation":"

Describe an instance's RAID arrays.

You must specify at least one of the parameters.

Required Permissions: To use this action, an IAM user must have a Show, Deploy, or Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions.

" - }, - "DescribeRdsDbInstances":{ - "name":"DescribeRdsDbInstances", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeRdsDbInstancesRequest"}, - "output":{ - "shape":"DescribeRdsDbInstancesResult", - "documentation":"

Contains the response to a DescribeRdsDbInstances request.

" - }, - "errors":[ - { - "shape":"ValidationException", - "exception":true, - "documentation":"

Indicates that a request was invalid.

" - }, - { - "shape":"ResourceNotFoundException", - "exception":true, - "documentation":"

Indicates that a resource was not found.

" - } - ], - "documentation":"

Describes Amazon RDS instances.

Required Permissions: To use this action, an IAM user must have a Show, Deploy, or Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions.

" - }, - "DescribeServiceErrors":{ - "name":"DescribeServiceErrors", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeServiceErrorsRequest"}, - "output":{ - "shape":"DescribeServiceErrorsResult", - "documentation":"

Contains the response to a DescribeServiceErrors request.

" - }, - "errors":[ - { - "shape":"ValidationException", - "exception":true, - "documentation":"

Indicates that a request was invalid.

" - }, - { - "shape":"ResourceNotFoundException", - "exception":true, - "documentation":"

Indicates that a resource was not found.

" - } - ], - "documentation":"

Describes AWS OpsWorks service errors.

Required Permissions: To use this action, an IAM user must have a Show, Deploy, or Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions.

" - }, - "DescribeStackProvisioningParameters":{ - "name":"DescribeStackProvisioningParameters", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeStackProvisioningParametersRequest"}, - "output":{ - "shape":"DescribeStackProvisioningParametersResult", - "documentation":"

Contains the response to a DescribeStackProvisioningParameters request.

" - }, - "errors":[ - { - "shape":"ValidationException", - "exception":true, - "documentation":"

Indicates that a request was invalid.

" - }, - { - "shape":"ResourceNotFoundException", - "exception":true, - "documentation":"

Indicates that a resource was not found.

" - } - ], - "documentation":"

Requests a description of a stack's provisioning parameters.

Required Permissions: To use this action, an IAM user must have a Show, Deploy, or Manage permissions level for the stack or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions.

" - }, - "DescribeStackSummary":{ - "name":"DescribeStackSummary", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeStackSummaryRequest"}, - "output":{ - "shape":"DescribeStackSummaryResult", - "documentation":"

Contains the response to a DescribeStackSummary request.

" - }, - "errors":[ - { - "shape":"ValidationException", - "exception":true, - "documentation":"

Indicates that a request was invalid.

" - }, - { - "shape":"ResourceNotFoundException", - "exception":true, - "documentation":"

Indicates that a resource was not found.

" - } - ], - "documentation":"

Describes the number of layers and apps in a specified stack, and the number of instances in each state, such as running_setup or online.

Required Permissions: To use this action, an IAM user must have a Show, Deploy, or Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions.

" - }, - "DescribeStacks":{ - "name":"DescribeStacks", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeStacksRequest"}, - "output":{ - "shape":"DescribeStacksResult", - "documentation":"

Contains the response to a DescribeStacks request.

" - }, - "errors":[ - { - "shape":"ValidationException", - "exception":true, - "documentation":"

Indicates that a request was invalid.

" - }, - { - "shape":"ResourceNotFoundException", - "exception":true, - "documentation":"

Indicates that a resource was not found.

" - } - ], - "documentation":"

Requests a description of one or more stacks.

Required Permissions: To use this action, an IAM user must have a Show, Deploy, or Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions.

" - }, - "DescribeTimeBasedAutoScaling":{ - "name":"DescribeTimeBasedAutoScaling", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeTimeBasedAutoScalingRequest"}, - "output":{ - "shape":"DescribeTimeBasedAutoScalingResult", - "documentation":"

Contains the response to a DescribeTimeBasedAutoScaling request.

" - }, - "errors":[ - { - "shape":"ValidationException", - "exception":true, - "documentation":"

Indicates that a request was invalid.

" - }, - { - "shape":"ResourceNotFoundException", - "exception":true, - "documentation":"

Indicates that a resource was not found.

" - } - ], - "documentation":"

Describes time-based auto scaling configurations for specified instances.

You must specify at least one of the parameters.

Required Permissions: To use this action, an IAM user must have a Show, Deploy, or Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions.

" - }, - "DescribeUserProfiles":{ - "name":"DescribeUserProfiles", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeUserProfilesRequest"}, - "output":{ - "shape":"DescribeUserProfilesResult", - "documentation":"

Contains the response to a DescribeUserProfiles request.

" - }, - "errors":[ - { - "shape":"ValidationException", - "exception":true, - "documentation":"

Indicates that a request was invalid.

" - }, - { - "shape":"ResourceNotFoundException", - "exception":true, - "documentation":"

Indicates that a resource was not found.

" - } - ], - "documentation":"

Describe specified users.

Required Permissions: To use this action, an IAM user must have an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions.

" - }, - "DescribeVolumes":{ - "name":"DescribeVolumes", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeVolumesRequest"}, - "output":{ - "shape":"DescribeVolumesResult", - "documentation":"

Contains the response to a DescribeVolumes request.

" - }, - "errors":[ - { - "shape":"ValidationException", - "exception":true, - "documentation":"

Indicates that a request was invalid.

" - }, - { - "shape":"ResourceNotFoundException", - "exception":true, - "documentation":"

Indicates that a resource was not found.

" - } - ], - "documentation":"

Describes an instance's Amazon EBS volumes.

You must specify at least one of the parameters.

Required Permissions: To use this action, an IAM user must have a Show, Deploy, or Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions.

" - }, - "DetachElasticLoadBalancer":{ - "name":"DetachElasticLoadBalancer", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DetachElasticLoadBalancerRequest"}, - "errors":[ - { - "shape":"ResourceNotFoundException", - "exception":true, - "documentation":"

Indicates that a resource was not found.

" - } - ], - "documentation":"

Detaches a specified Elastic Load Balancing instance from its layer.

Required Permissions: To use this action, an IAM user must have a Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions.

" - }, - "DisassociateElasticIp":{ - "name":"DisassociateElasticIp", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DisassociateElasticIpRequest"}, - "errors":[ - { - "shape":"ValidationException", - "exception":true, - "documentation":"

Indicates that a request was invalid.

" - }, - { - "shape":"ResourceNotFoundException", - "exception":true, - "documentation":"

Indicates that a resource was not found.

" - } - ], - "documentation":"

Disassociates an Elastic IP address from its instance. The address remains registered with the stack. For more information, see Resource Management.

Required Permissions: To use this action, an IAM user must have a Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions.

" - }, - "GetHostnameSuggestion":{ - "name":"GetHostnameSuggestion", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"GetHostnameSuggestionRequest"}, - "output":{ - "shape":"GetHostnameSuggestionResult", - "documentation":"

Contains the response to a GetHostnameSuggestion request.

" - }, - "errors":[ - { - "shape":"ValidationException", - "exception":true, - "documentation":"

Indicates that a request was invalid.

" - }, - { - "shape":"ResourceNotFoundException", - "exception":true, - "documentation":"

Indicates that a resource was not found.

" - } - ], - "documentation":"

Gets a generated host name for the specified layer, based on the current host name theme.

Required Permissions: To use this action, an IAM user must have a Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions.

" - }, - "RebootInstance":{ - "name":"RebootInstance", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"RebootInstanceRequest"}, - "errors":[ - { - "shape":"ValidationException", - "exception":true, - "documentation":"

Indicates that a request was invalid.

" - }, - { - "shape":"ResourceNotFoundException", - "exception":true, - "documentation":"

Indicates that a resource was not found.

" - } - ], - "documentation":"

Reboots a specified instance. For more information, see Starting, Stopping, and Rebooting Instances.

Required Permissions: To use this action, an IAM user must have a Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions.

" - }, - "RegisterElasticIp":{ - "name":"RegisterElasticIp", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"RegisterElasticIpRequest"}, - "output":{ - "shape":"RegisterElasticIpResult", - "documentation":"

Contains the response to a RegisterElasticIp request.

" - }, - "errors":[ - { - "shape":"ValidationException", - "exception":true, - "documentation":"

Indicates that a request was invalid.

" - }, - { - "shape":"ResourceNotFoundException", - "exception":true, - "documentation":"

Indicates that a resource was not found.

" - } - ], - "documentation":"

Registers an Elastic IP address with a specified stack. An address can be registered with only one stack at a time. If the address is already registered, you must first deregister it by calling DeregisterElasticIp. For more information, see Resource Management.

Required Permissions: To use this action, an IAM user must have a Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions.

" - }, - "RegisterInstance":{ - "name":"RegisterInstance", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"RegisterInstanceRequest"}, - "output":{ - "shape":"RegisterInstanceResult", - "documentation":"

Contains the response to a RegisterInstanceResult request.

" - }, - "errors":[ - { - "shape":"ValidationException", - "exception":true, - "documentation":"

Indicates that a request was invalid.

" - }, - { - "shape":"ResourceNotFoundException", - "exception":true, - "documentation":"

Indicates that a resource was not found.

" - } - ], - "documentation":"

Registers instances with a specified stack that were created outside of AWS OpsWorks.

We do not recommend using this action to register instances. The complete registration operation has two primary steps, installing the AWS OpsWorks agent on the instance and registering the instance with the stack. RegisterInstance handles only the second step. You should instead use the AWS CLI register command, which performs the entire registration operation.

Required Permissions: To use this action, an IAM user must have a Manage permissions level for the stack or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions.

" - }, - "RegisterRdsDbInstance":{ - "name":"RegisterRdsDbInstance", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"RegisterRdsDbInstanceRequest"}, - "errors":[ - { - "shape":"ValidationException", - "exception":true, - "documentation":"

Indicates that a request was invalid.

" - }, - { - "shape":"ResourceNotFoundException", - "exception":true, - "documentation":"

Indicates that a resource was not found.

" - } - ], - "documentation":"

Registers an Amazon RDS instance with a stack.

Required Permissions: To use this action, an IAM user must have a Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions.

" - }, - "RegisterVolume":{ - "name":"RegisterVolume", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"RegisterVolumeRequest"}, - "output":{ - "shape":"RegisterVolumeResult", - "documentation":"

Contains the response to a RegisterVolume request.

" - }, - "errors":[ - { - "shape":"ValidationException", - "exception":true, - "documentation":"

Indicates that a request was invalid.

" - }, - { - "shape":"ResourceNotFoundException", - "exception":true, - "documentation":"

Indicates that a resource was not found.

" - } - ], - "documentation":"

Registers an Amazon EBS volume with a specified stack. A volume can be registered with only one stack at a time. If the volume is already registered, you must first deregister it by calling DeregisterVolume. For more information, see Resource Management.

Required Permissions: To use this action, an IAM user must have a Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions.

" - }, - "SetLoadBasedAutoScaling":{ - "name":"SetLoadBasedAutoScaling", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"SetLoadBasedAutoScalingRequest"}, - "errors":[ - { - "shape":"ValidationException", - "exception":true, - "documentation":"

Indicates that a request was invalid.

" - }, - { - "shape":"ResourceNotFoundException", - "exception":true, - "documentation":"

Indicates that a resource was not found.

" - } - ], - "documentation":"

Specify the load-based auto scaling configuration for a specified layer. For more information, see Managing Load with Time-based and Load-based Instances.

To use load-based auto scaling, you must create a set of load-based auto scaling instances. Load-based auto scaling operates only on the instances from that set, so you must ensure that you have created enough instances to handle the maximum anticipated load.

Required Permissions: To use this action, an IAM user must have a Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions.

" - }, - "SetPermission":{ - "name":"SetPermission", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"SetPermissionRequest"}, - "errors":[ - { - "shape":"ValidationException", - "exception":true, - "documentation":"

Indicates that a request was invalid.

" - }, - { - "shape":"ResourceNotFoundException", - "exception":true, - "documentation":"

Indicates that a resource was not found.

" - } - ], - "documentation":"

Specifies a user's permissions. For more information, see Security and Permissions.

Required Permissions: To use this action, an IAM user must have a Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions.

" - }, - "SetTimeBasedAutoScaling":{ - "name":"SetTimeBasedAutoScaling", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"SetTimeBasedAutoScalingRequest"}, - "errors":[ - { - "shape":"ValidationException", - "exception":true, - "documentation":"

Indicates that a request was invalid.

" - }, - { - "shape":"ResourceNotFoundException", - "exception":true, - "documentation":"

Indicates that a resource was not found.

" - } - ], - "documentation":"

Specify the time-based auto scaling configuration for a specified instance. For more information, see Managing Load with Time-based and Load-based Instances.

Required Permissions: To use this action, an IAM user must have a Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions.

" - }, - "StartInstance":{ - "name":"StartInstance", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"StartInstanceRequest"}, - "errors":[ - { - "shape":"ValidationException", - "exception":true, - "documentation":"

Indicates that a request was invalid.

" - }, - { - "shape":"ResourceNotFoundException", - "exception":true, - "documentation":"

Indicates that a resource was not found.

" - } - ], - "documentation":"

Starts a specified instance. For more information, see Starting, Stopping, and Rebooting Instances.

Required Permissions: To use this action, an IAM user must have a Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions.

" - }, - "StartStack":{ - "name":"StartStack", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"StartStackRequest"}, - "errors":[ - { - "shape":"ValidationException", - "exception":true, - "documentation":"

Indicates that a request was invalid.

" - }, - { - "shape":"ResourceNotFoundException", - "exception":true, - "documentation":"

Indicates that a resource was not found.

" - } - ], - "documentation":"

Starts a stack's instances.

Required Permissions: To use this action, an IAM user must have a Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions.

" - }, - "StopInstance":{ - "name":"StopInstance", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"StopInstanceRequest"}, - "errors":[ - { - "shape":"ValidationException", - "exception":true, - "documentation":"

Indicates that a request was invalid.

" - }, - { - "shape":"ResourceNotFoundException", - "exception":true, - "documentation":"

Indicates that a resource was not found.

" - } - ], - "documentation":"

Stops a specified instance. When you stop a standard instance, the data disappears and must be reinstalled when you restart the instance. You can stop an Amazon EBS-backed instance without losing data. For more information, see Starting, Stopping, and Rebooting Instances.

Required Permissions: To use this action, an IAM user must have a Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions.

" - }, - "StopStack":{ - "name":"StopStack", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"StopStackRequest"}, - "errors":[ - { - "shape":"ValidationException", - "exception":true, - "documentation":"

Indicates that a request was invalid.

" - }, - { - "shape":"ResourceNotFoundException", - "exception":true, - "documentation":"

Indicates that a resource was not found.

" - } - ], - "documentation":"

Stops a specified stack.

Required Permissions: To use this action, an IAM user must have a Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions.

" - }, - "UnassignInstance":{ - "name":"UnassignInstance", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"UnassignInstanceRequest"}, - "errors":[ - { - "shape":"ValidationException", - "exception":true, - "documentation":"

Indicates that a request was invalid.

" - }, - { - "shape":"ResourceNotFoundException", - "exception":true, - "documentation":"

Indicates that a resource was not found.

" - } - ], - "documentation":"

Unassigns a registered instance from all of it's layers. The instance remains in the stack as an unassigned instance and can be assigned to another layer, as needed. You cannot use this action with instances that were created with AWS OpsWorks.

Required Permissions: To use this action, an IAM user must have a Manage permissions level for the stack or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions.

" - }, - "UnassignVolume":{ - "name":"UnassignVolume", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"UnassignVolumeRequest"}, - "errors":[ - { - "shape":"ValidationException", - "exception":true, - "documentation":"

Indicates that a request was invalid.

" - }, - { - "shape":"ResourceNotFoundException", - "exception":true, - "documentation":"

Indicates that a resource was not found.

" - } - ], - "documentation":"

Unassigns an assigned Amazon EBS volume. The volume remains registered with the stack. For more information, see Resource Management.

Required Permissions: To use this action, an IAM user must have a Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions.

" - }, - "UpdateApp":{ - "name":"UpdateApp", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"UpdateAppRequest"}, - "errors":[ - { - "shape":"ValidationException", - "exception":true, - "documentation":"

Indicates that a request was invalid.

" - }, - { - "shape":"ResourceNotFoundException", - "exception":true, - "documentation":"

Indicates that a resource was not found.

" - } - ], - "documentation":"

Updates a specified app.

Required Permissions: To use this action, an IAM user must have a Deploy or Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions.

" - }, - "UpdateElasticIp":{ - "name":"UpdateElasticIp", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"UpdateElasticIpRequest"}, - "errors":[ - { - "shape":"ValidationException", - "exception":true, - "documentation":"

Indicates that a request was invalid.

" - }, - { - "shape":"ResourceNotFoundException", - "exception":true, - "documentation":"

Indicates that a resource was not found.

" - } - ], - "documentation":"

Updates a registered Elastic IP address's name. For more information, see Resource Management.

Required Permissions: To use this action, an IAM user must have a Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions.

" - }, - "UpdateInstance":{ - "name":"UpdateInstance", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"UpdateInstanceRequest"}, - "errors":[ - { - "shape":"ValidationException", - "exception":true, - "documentation":"

Indicates that a request was invalid.

" - }, - { - "shape":"ResourceNotFoundException", - "exception":true, - "documentation":"

Indicates that a resource was not found.

" - } - ], - "documentation":"

Updates a specified instance.

Required Permissions: To use this action, an IAM user must have a Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions.

" - }, - "UpdateLayer":{ - "name":"UpdateLayer", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"UpdateLayerRequest"}, - "errors":[ - { - "shape":"ValidationException", - "exception":true, - "documentation":"

Indicates that a request was invalid.

" - }, - { - "shape":"ResourceNotFoundException", - "exception":true, - "documentation":"

Indicates that a resource was not found.

" - } - ], - "documentation":"

Updates a specified layer.

Required Permissions: To use this action, an IAM user must have a Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions.

" - }, - "UpdateMyUserProfile":{ - "name":"UpdateMyUserProfile", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"UpdateMyUserProfileRequest"}, - "errors":[ - { - "shape":"ValidationException", - "exception":true, - "documentation":"

Indicates that a request was invalid.

" - } - ], - "documentation":"

Updates a user's SSH public key.

Required Permissions: To use this action, an IAM user must have self-management enabled or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions.

" - }, - "UpdateRdsDbInstance":{ - "name":"UpdateRdsDbInstance", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"UpdateRdsDbInstanceRequest"}, - "errors":[ - { - "shape":"ValidationException", - "exception":true, - "documentation":"

Indicates that a request was invalid.

" - }, - { - "shape":"ResourceNotFoundException", - "exception":true, - "documentation":"

Indicates that a resource was not found.

" - } - ], - "documentation":"

Updates an Amazon RDS instance.

Required Permissions: To use this action, an IAM user must have a Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions.

" - }, - "UpdateStack":{ - "name":"UpdateStack", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"UpdateStackRequest"}, - "errors":[ - { - "shape":"ValidationException", - "exception":true, - "documentation":"

Indicates that a request was invalid.

" - }, - { - "shape":"ResourceNotFoundException", - "exception":true, - "documentation":"

Indicates that a resource was not found.

" - } - ], - "documentation":"

Updates a specified stack.

Required Permissions: To use this action, an IAM user must have a Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions.

" - }, - "UpdateUserProfile":{ - "name":"UpdateUserProfile", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"UpdateUserProfileRequest"}, - "errors":[ - { - "shape":"ValidationException", - "exception":true, - "documentation":"

Indicates that a request was invalid.

" - }, - { - "shape":"ResourceNotFoundException", - "exception":true, - "documentation":"

Indicates that a resource was not found.

" - } - ], - "documentation":"

Updates a specified user profile.

Required Permissions: To use this action, an IAM user must have an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions.

" - }, - "UpdateVolume":{ - "name":"UpdateVolume", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"UpdateVolumeRequest"}, - "errors":[ - { - "shape":"ValidationException", - "exception":true, - "documentation":"

Indicates that a request was invalid.

" - }, - { - "shape":"ResourceNotFoundException", - "exception":true, - "documentation":"

Indicates that a resource was not found.

" - } - ], - "documentation":"

Updates an Amazon EBS volume's name or mount point. For more information, see Resource Management.

Required Permissions: To use this action, an IAM user must have a Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions.

" - } - }, - "shapes":{ - "App":{ - "type":"structure", - "members":{ - "AppId":{ - "shape":"String", - "documentation":"

The app ID.

" - }, - "StackId":{ - "shape":"String", - "documentation":"

The app stack ID.

" - }, - "Shortname":{ - "shape":"String", - "documentation":"

The app's short name.

" - }, - "Name":{ - "shape":"String", - "documentation":"

The app name.

" - }, - "Description":{ - "shape":"String", - "documentation":"

A description of the app.

" - }, - "DataSources":{ - "shape":"DataSources", - "documentation":"

The app's data sources.

" - }, - "Type":{ - "shape":"AppType", - "documentation":"

The app type.

" - }, - "AppSource":{ - "shape":"Source", - "documentation":"

A Source object that describes the app repository.

" - }, - "Domains":{ - "shape":"Strings", - "documentation":"

The app vhost settings with multiple domains separated by commas. For example: 'www.example.com, example.com'

" - }, - "EnableSsl":{ - "shape":"Boolean", - "documentation":"

Whether to enable SSL for the app.

" - }, - "SslConfiguration":{ - "shape":"SslConfiguration", - "documentation":"

An SslConfiguration object with the SSL configuration.

" - }, - "Attributes":{ - "shape":"AppAttributes", - "documentation":"

The stack attributes.

" - }, - "CreatedAt":{ - "shape":"String", - "documentation":"

When the app was created.

" - }, - "Environment":{ - "shape":"EnvironmentVariables", - "documentation":"

An array of EnvironmentVariable objects that specify environment variables to be associated with the app. You can specify up to ten environment variables. After you deploy the app, these variables are defined on the associated app server instances.

" - } - }, - "documentation":"

A description of the app.

" - }, - "AppAttributes":{ - "type":"map", - "key":{"shape":"AppAttributesKeys"}, - "value":{"shape":"String"} - }, - "AppAttributesKeys":{ - "type":"string", - "enum":[ - "DocumentRoot", - "RailsEnv", - "AutoBundleOnDeploy" - ] - }, - "AppType":{ - "type":"string", - "enum":[ - "java", - "rails", - "php", - "nodejs", - "static", - "other" - ] - }, - "Apps":{ - "type":"list", - "member":{"shape":"App"} - }, - "Architecture":{ - "type":"string", - "enum":[ - "x86_64", - "i386" - ] - }, - "AssignInstanceRequest":{ - "type":"structure", - "required":[ - "InstanceId", - "LayerIds" - ], - "members":{ - "InstanceId":{ - "shape":"String", - "documentation":"

The instance ID.

" - }, - "LayerIds":{ - "shape":"Strings", - "documentation":"

The layer ID, which must correspond to a custom layer. You cannot assign a registered instance to a built-in layer.

" - } - } - }, - "AssignVolumeRequest":{ - "type":"structure", - "required":["VolumeId"], - "members":{ - "VolumeId":{ - "shape":"String", - "documentation":"

The volume ID.

" - }, - "InstanceId":{ - "shape":"String", - "documentation":"

The instance ID.

" - } - } - }, - "AssociateElasticIpRequest":{ - "type":"structure", - "required":["ElasticIp"], - "members":{ - "ElasticIp":{ - "shape":"String", - "documentation":"

The Elastic IP address.

" - }, - "InstanceId":{ - "shape":"String", - "documentation":"

The instance ID.

" - } - } - }, - "AttachElasticLoadBalancerRequest":{ - "type":"structure", - "required":[ - "ElasticLoadBalancerName", - "LayerId" - ], - "members":{ - "ElasticLoadBalancerName":{ - "shape":"String", - "documentation":"

The Elastic Load Balancing instance's name.

" - }, - "LayerId":{ - "shape":"String", - "documentation":"

The ID of the layer that the Elastic Load Balancing instance is to be attached to.

" - } - } - }, - "AutoScalingThresholds":{ - "type":"structure", - "members":{ - "InstanceCount":{ - "shape":"Integer", - "documentation":"

The number of instances to add or remove when the load exceeds a threshold.

" - }, - "ThresholdsWaitTime":{ - "shape":"Minute", - "documentation":"

The amount of time, in minutes, that the load must exceed a threshold before more instances are added or removed.

" - }, - "IgnoreMetricsTime":{ - "shape":"Minute", - "documentation":"

The amount of time (in minutes) after a scaling event occurs that AWS OpsWorks should ignore metrics and not raise any additional scaling events. For example, AWS OpsWorks adds new instances following an upscaling event but the instances won't start reducing the load until they have been booted and configured. There is no point in raising additional scaling events during that operation, which typically takes several minutes. IgnoreMetricsTime allows you to direct AWS OpsWorks to not raise any scaling events long enough to get the new instances online.

" - }, - "CpuThreshold":{ - "shape":"Double", - "documentation":"

The CPU utilization threshold, as a percent of the available CPU.

" - }, - "MemoryThreshold":{ - "shape":"Double", - "documentation":"

The memory utilization threshold, as a percent of the available memory.

" - }, - "LoadThreshold":{ - "shape":"Double", - "documentation":"

The load threshold. For more information about how load is computed, see Load (computing).

" - } - }, - "documentation":"

Describes a load-based auto scaling upscaling or downscaling threshold configuration, which specifies when AWS OpsWorks starts or stops load-based instances.

" - }, - "AutoScalingType":{ - "type":"string", - "enum":[ - "load", - "timer" - ] - }, - "Boolean":{ - "type":"boolean", - "box":true - }, - "ChefConfiguration":{ - "type":"structure", - "members":{ - "ManageBerkshelf":{ - "shape":"Boolean", - "documentation":"

Whether to enable Berkshelf.

" - }, - "BerkshelfVersion":{ - "shape":"String", - "documentation":"

The Berkshelf version.

" - } - }, - "documentation":"

Describes the Chef configuration.

" - }, - "CloneStackRequest":{ - "type":"structure", - "required":[ - "SourceStackId", - "ServiceRoleArn" - ], - "members":{ - "SourceStackId":{ - "shape":"String", - "documentation":"

The source stack ID.

" - }, - "Name":{ - "shape":"String", - "documentation":"

The cloned stack name.

" - }, - "Region":{ - "shape":"String", - "documentation":"

The cloned stack AWS region, such as \"us-east-1\". For more information about AWS regions, see Regions and Endpoints.

" - }, - "VpcId":{ - "shape":"String", - "documentation":"

The ID of the VPC that the cloned stack is to be launched into. It must be in the specified region. All instances are launched into this VPC, and you cannot change the ID later.

If the VPC ID corresponds to a default VPC and you have specified either the DefaultAvailabilityZone or the DefaultSubnetId parameter only, AWS OpsWorks infers the value of the other parameter. If you specify neither parameter, AWS OpsWorks sets these parameters to the first valid Availability Zone for the specified region and the corresponding default VPC subnet ID, respectively.

If you specify a nondefault VPC ID, note the following:

For more information on how to use AWS OpsWorks with a VPC, see Running a Stack in a VPC. For more information on default VPC and EC2 Classic, see Supported Platforms.

" - }, - "Attributes":{ - "shape":"StackAttributes", - "documentation":"

A list of stack attributes and values as key/value pairs to be added to the cloned stack.

" - }, - "ServiceRoleArn":{ - "shape":"String", - "documentation":"

The stack AWS Identity and Access Management (IAM) role, which allows AWS OpsWorks to work with AWS resources on your behalf. You must set this parameter to the Amazon Resource Name (ARN) for an existing IAM role. If you create a stack by using the AWS OpsWorks console, it creates the role for you. You can obtain an existing stack's IAM ARN programmatically by calling DescribePermissions. For more information about IAM ARNs, see Using Identifiers.

You must set this parameter to a valid service role ARN or the action will fail; there is no default value. You can specify the source stack's service role ARN, if you prefer, but you must do so explicitly.

" - }, - "DefaultInstanceProfileArn":{ - "shape":"String", - "documentation":"

The ARN of an IAM profile that is the default profile for all of the stack's EC2 instances. For more information about IAM ARNs, see Using Identifiers.

" - }, - "DefaultOs":{ - "shape":"String", - "documentation":"

The stacks's operating system, which must be set to one of the following.

The default option is the current Amazon Linux version.

" - }, - "HostnameTheme":{ - "shape":"String", - "documentation":"

The stack's host name theme, with spaces are replaced by underscores. The theme is used to generate host names for the stack's instances. By default, HostnameTheme is set to Layer_Dependent, which creates host names by appending integers to the layer's short name. The other themes are:

To obtain a generated host name, call GetHostNameSuggestion, which returns a host name based on the current theme.

" - }, - "DefaultAvailabilityZone":{ - "shape":"String", - "documentation":"

The cloned stack's default Availability Zone, which must be in the specified region. For more information, see Regions and Endpoints. If you also specify a value for DefaultSubnetId, the subnet must be in the same zone. For more information, see the VpcId parameter description.

" - }, - "DefaultSubnetId":{ - "shape":"String", - "documentation":"

The stack's default VPC subnet ID. This parameter is required if you specify a value for the VpcId parameter. All instances are launched into this subnet unless you specify otherwise when you create the instance. If you also specify a value for DefaultAvailabilityZone, the subnet must be in that zone. For information on default values and when this parameter is required, see the VpcId parameter description.

" - }, - "CustomJson":{ - "shape":"String", - "documentation":"

A string that contains user-defined, custom JSON. It is used to override the corresponding default stack configuration JSON values. The string should be in the following format and must escape characters such as '\"'.:

\"{\\\"key1\\\": \\\"value1\\\", \\\"key2\\\": \\\"value2\\\",...}\"

For more information on custom JSON, see Use Custom JSON to Modify the Stack Configuration JSON

" - }, - "ConfigurationManager":{ - "shape":"StackConfigurationManager", - "documentation":"

The configuration manager. When you clone a stack we recommend that you use the configuration manager to specify the Chef version, 0.9, 11.4, or 11.10. The default value is currently 11.4.

" - }, - "ChefConfiguration":{ - "shape":"ChefConfiguration", - "documentation":"

A ChefConfiguration object that specifies whether to enable Berkshelf and the Berkshelf version on Chef 11.10 stacks. For more information, see Create a New Stack.

" - }, - "UseCustomCookbooks":{ - "shape":"Boolean", - "documentation":"

Whether to use custom cookbooks.

" - }, - "UseOpsworksSecurityGroups":{ - "shape":"Boolean", - "documentation":"

Whether to associate the AWS OpsWorks built-in security groups with the stack's layers.

AWS OpsWorks provides a standard set of built-in security groups, one for each layer, which are associated with layers by default. With UseOpsworksSecurityGroups you can instead provide your own custom security groups. UseOpsworksSecurityGroups has the following settings:

For more information, see Create a New Stack.

" - }, - "CustomCookbooksSource":{"shape":"Source"}, - "DefaultSshKeyName":{ - "shape":"String", - "documentation":"

A default SSH key for the stack instances. You can override this value when you create or update an instance.

" - }, - "ClonePermissions":{ - "shape":"Boolean", - "documentation":"

Whether to clone the source stack's permissions.

" - }, - "CloneAppIds":{ - "shape":"Strings", - "documentation":"

A list of source stack app IDs to be included in the cloned stack.

" - }, - "DefaultRootDeviceType":{ - "shape":"RootDeviceType", - "documentation":"

The default root device type. This value is used by default for all instances in the cloned stack, but you can override it when you create an instance. For more information, see Storage for the Root Device.

" - } - } - }, - "CloneStackResult":{ - "type":"structure", - "members":{ - "StackId":{ - "shape":"String", - "documentation":"

The cloned stack ID.

" - } - }, - "documentation":"

Contains the response to a CloneStack request.

" - }, - "Command":{ - "type":"structure", - "members":{ - "CommandId":{ - "shape":"String", - "documentation":"

The command ID.

" - }, - "InstanceId":{ - "shape":"String", - "documentation":"

The ID of the instance where the command was executed.

" - }, - "DeploymentId":{ - "shape":"String", - "documentation":"

The command deployment ID.

" - }, - "CreatedAt":{ - "shape":"DateTime", - "documentation":"

Date and time when the command was run.

" - }, - "AcknowledgedAt":{ - "shape":"DateTime", - "documentation":"

Date and time when the command was acknowledged.

" - }, - "CompletedAt":{ - "shape":"DateTime", - "documentation":"

Date when the command completed.

" - }, - "Status":{ - "shape":"String", - "documentation":"

The command status:

" - }, - "ExitCode":{ - "shape":"Integer", - "documentation":"

The command exit code.

" - }, - "LogUrl":{ - "shape":"String", - "documentation":"

The URL of the command log.

" - }, - "Type":{ - "shape":"String", - "documentation":"

The command type:

" - } - }, - "documentation":"

Describes a command.

" - }, - "Commands":{ - "type":"list", - "member":{"shape":"Command"} - }, - "CreateAppRequest":{ - "type":"structure", - "required":[ - "StackId", - "Name", - "Type" - ], - "members":{ - "StackId":{ - "shape":"String", - "documentation":"

The stack ID.

" - }, - "Shortname":{ - "shape":"String", - "documentation":"

The app's short name.

" - }, - "Name":{ - "shape":"String", - "documentation":"

The app name.

" - }, - "Description":{ - "shape":"String", - "documentation":"

A description of the app.

" - }, - "DataSources":{ - "shape":"DataSources", - "documentation":"

The app's data source.

" - }, - "Type":{ - "shape":"AppType", - "documentation":"

The app type. Each supported type is associated with a particular layer. For example, PHP applications are associated with a PHP layer. AWS OpsWorks deploys an application to those instances that are members of the corresponding layer.

" - }, - "AppSource":{ - "shape":"Source", - "documentation":"

A Source object that specifies the app repository.

" - }, - "Domains":{ - "shape":"Strings", - "documentation":"

The app virtual host settings, with multiple domains separated by commas. For example: 'www.example.com, example.com'

" - }, - "EnableSsl":{ - "shape":"Boolean", - "documentation":"

Whether to enable SSL for the app.

" - }, - "SslConfiguration":{ - "shape":"SslConfiguration", - "documentation":"

An SslConfiguration object with the SSL configuration.

" - }, - "Attributes":{ - "shape":"AppAttributes", - "documentation":"

One or more user-defined key/value pairs to be added to the stack attributes.

" - }, - "Environment":{ - "shape":"EnvironmentVariables", - "documentation":"

An array of EnvironmentVariable objects that specify environment variables to be associated with the app. You can specify up to ten environment variables. After you deploy the app, these variables are defined on the associated app server instance.

This parameter is supported only by Chef 11.10 stacks. If you have specified one or more environment variables, you cannot modify the stack's Chef version." - } - } - }, - "CreateAppResult":{ - "type":"structure", - "members":{ - "AppId":{ - "shape":"String", - "documentation":"

The app ID.

" - } - }, - "documentation":"

Contains the response to a CreateApp request.

" - }, - "CreateDeploymentRequest":{ - "type":"structure", - "required":[ - "StackId", - "Command" - ], - "members":{ - "StackId":{ - "shape":"String", - "documentation":"

The stack ID.

" - }, - "AppId":{ - "shape":"String", - "documentation":"

The app ID. This parameter is required for app deployments, but not for other deployment commands.

" - }, - "InstanceIds":{ - "shape":"Strings", - "documentation":"

The instance IDs for the deployment targets.

" - }, - "Command":{ - "shape":"DeploymentCommand", - "documentation":"

A DeploymentCommand object that specifies the deployment command and any associated arguments.

" - }, - "Comment":{ - "shape":"String", - "documentation":"

A user-defined comment.

" - }, - "CustomJson":{ - "shape":"String", - "documentation":"

A string that contains user-defined, custom JSON. It is used to override the corresponding default stack configuration JSON values. The string should be in the following format and must escape characters such as '\"'.:

\"{\\\"key1\\\": \\\"value1\\\", \\\"key2\\\": \\\"value2\\\",...}\"

For more information on custom JSON, see Use Custom JSON to Modify the Stack Configuration JSON.

" - } - } - }, - "CreateDeploymentResult":{ - "type":"structure", - "members":{ - "DeploymentId":{ - "shape":"String", - "documentation":"

The deployment ID, which can be used with other requests to identify the deployment.

" - } - }, - "documentation":"

Contains the response to a CreateDeployment request.

" - }, - "CreateInstanceRequest":{ - "type":"structure", - "required":[ - "StackId", - "LayerIds", - "InstanceType" - ], - "members":{ - "StackId":{ - "shape":"String", - "documentation":"

The stack ID.

" - }, - "LayerIds":{ - "shape":"Strings", - "documentation":"

An array that contains the instance layer IDs.

" - }, - "InstanceType":{ - "shape":"String", - "documentation":"

The instance type. AWS OpsWorks supports all instance types except Cluster Compute, Cluster GPU, and High Memory Cluster. For more information, see Instance Families and Types. The parameter values that you use to specify the various types are in the API Name column of the Available Instance Types table.

" - }, - "AutoScalingType":{ - "shape":"AutoScalingType", - "documentation":"

For load-based or time-based instances, the type.

" - }, - "Hostname":{ - "shape":"String", - "documentation":"

The instance host name.

" - }, - "Os":{ - "shape":"String", - "documentation":"

The instance's operating system, which must be set to one of the following.

The default option is the current Amazon Linux version. If you set this parameter to Custom, you must use the CreateInstance action's AmiId parameter to specify the custom AMI that you want to use. For more information on the standard operating systems, see Operating SystemsFor more information on how to use custom AMIs with OpsWorks, see Using Custom AMIs.

" - }, - "AmiId":{ - "shape":"String", - "documentation":"

A custom AMI ID to be used to create the instance. The AMI should be based on one of the standard AWS OpsWorks AMIs: Amazon Linux, Ubuntu 12.04 LTS, or Ubuntu 14.04 LTS. For more information, see Instances.

If you specify a custom AMI, you must set Os to Custom." - }, - "SshKeyName":{ - "shape":"String", - "documentation":"

The instance SSH key name.

" - }, - "AvailabilityZone":{ - "shape":"String", - "documentation":"

The instance Availability Zone. For more information, see Regions and Endpoints.

" - }, - "VirtualizationType":{ - "shape":"String", - "documentation":"

The instance's virtualization type, paravirtual or hvm.

" - }, - "SubnetId":{ - "shape":"String", - "documentation":"

The ID of the instance's subnet. If the stack is running in a VPC, you can use this parameter to override the stack's default subnet ID value and direct AWS OpsWorks to launch the instance in a different subnet.

" - }, - "Architecture":{ - "shape":"Architecture", - "documentation":"

The instance architecture. The default option is x86_64. Instance types do not necessarily support both architectures. For a list of the architectures that are supported by the different instance types, see Instance Families and Types.

" - }, - "RootDeviceType":{ - "shape":"RootDeviceType", - "documentation":"

The instance root device type. For more information, see Storage for the Root Device.

" - }, - "InstallUpdatesOnBoot":{ - "shape":"Boolean", - "documentation":"

Whether to install operating system and package updates when the instance boots. The default value is true. To control when updates are installed, set this value to false. You must then update your instances manually by using CreateDeployment to run the update_dependencies stack command or manually running yum (Amazon Linux) or apt-get (Ubuntu) on the instances.

We strongly recommend using the default value of true to ensure that your instances have the latest security updates.

" - }, - "EbsOptimized":{ - "shape":"Boolean", - "documentation":"

Whether to create an Amazon EBS-optimized instance.

" - } - } - }, - "CreateInstanceResult":{ - "type":"structure", - "members":{ - "InstanceId":{ - "shape":"String", - "documentation":"

The instance ID.

" - } - }, - "documentation":"

Contains the response to a CreateInstance request.

" - }, - "CreateLayerRequest":{ - "type":"structure", - "required":[ - "StackId", - "Type", - "Name", - "Shortname" - ], - "members":{ - "StackId":{ - "shape":"String", - "documentation":"

The layer stack ID.

" - }, - "Type":{ - "shape":"LayerType", - "documentation":"

The layer type. A stack cannot have more than one built-in layer of the same type. It can have any number of custom layers.

" - }, - "Name":{ - "shape":"String", - "documentation":"

The layer name, which is used by the console.

" - }, - "Shortname":{ - "shape":"String", - "documentation":"

The layer short name, which is used internally by AWS OpsWorks and by Chef recipes. The short name is also used as the name for the directory where your app files are installed. It can have a maximum of 200 characters, which are limited to the alphanumeric characters, '-', '_', and '.'.

" - }, - "Attributes":{ - "shape":"LayerAttributes", - "documentation":"

One or more user-defined key/value pairs to be added to the stack attributes.

" - }, - "CustomInstanceProfileArn":{ - "shape":"String", - "documentation":"

The ARN of an IAM profile that to be used for the layer's EC2 instances. For more information about IAM ARNs, see Using Identifiers.

" - }, - "CustomSecurityGroupIds":{ - "shape":"Strings", - "documentation":"

An array containing the layer custom security group IDs.

" - }, - "Packages":{ - "shape":"Strings", - "documentation":"

An array of Package objects that describe the layer packages.

" - }, - "VolumeConfigurations":{ - "shape":"VolumeConfigurations", - "documentation":"

A VolumeConfigurations object that describes the layer's Amazon EBS volumes.

" - }, - "EnableAutoHealing":{ - "shape":"Boolean", - "documentation":"

Whether to disable auto healing for the layer.

" - }, - "AutoAssignElasticIps":{ - "shape":"Boolean", - "documentation":"

Whether to automatically assign an Elastic IP address to the layer's instances. For more information, see How to Edit a Layer.

" - }, - "AutoAssignPublicIps":{ - "shape":"Boolean", - "documentation":"

For stacks that are running in a VPC, whether to automatically assign a public IP address to the layer's instances. For more information, see How to Edit a Layer.

" - }, - "CustomRecipes":{ - "shape":"Recipes", - "documentation":"

A LayerCustomRecipes object that specifies the layer custom recipes.

" - }, - "InstallUpdatesOnBoot":{ - "shape":"Boolean", - "documentation":"

Whether to install operating system and package updates when the instance boots. The default value is true. To control when updates are installed, set this value to false. You must then update your instances manually by using CreateDeployment to run the update_dependencies stack command or manually running yum (Amazon Linux) or apt-get (Ubuntu) on the instances.

We strongly recommend using the default value of true, to ensure that your instances have the latest security updates.

" - }, - "UseEbsOptimizedInstances":{ - "shape":"Boolean", - "documentation":"

Whether to use Amazon EBS-optimized instances.

" - }, - "LifecycleEventConfiguration":{ - "shape":"LifecycleEventConfiguration", - "documentation":"

A LifeCycleEventConfiguration object that you can use to configure the Shutdown event to specify an execution timeout and enable or disable Elastic Load Balancer connection draining.

" - } - } - }, - "CreateLayerResult":{ - "type":"structure", - "members":{ - "LayerId":{ - "shape":"String", - "documentation":"

The layer ID.

" - } - }, - "documentation":"

Contains the response to a CreateLayer request.

" - }, - "CreateStackRequest":{ - "type":"structure", - "required":[ - "Name", - "Region", - "ServiceRoleArn", - "DefaultInstanceProfileArn" - ], - "members":{ - "Name":{ - "shape":"String", - "documentation":"

The stack name.

" - }, - "Region":{ - "shape":"String", - "documentation":"

The stack AWS region, such as \"us-east-1\". For more information about Amazon regions, see Regions and Endpoints.

" - }, - "VpcId":{ - "shape":"String", - "documentation":"

The ID of the VPC that the stack is to be launched into. It must be in the specified region. All instances are launched into this VPC, and you cannot change the ID later.

If the VPC ID corresponds to a default VPC and you have specified either the DefaultAvailabilityZone or the DefaultSubnetId parameter only, AWS OpsWorks infers the value of the other parameter. If you specify neither parameter, AWS OpsWorks sets these parameters to the first valid Availability Zone for the specified region and the corresponding default VPC subnet ID, respectively.

If you specify a nondefault VPC ID, note the following:

For more information on how to use AWS OpsWorks with a VPC, see Running a Stack in a VPC. For more information on default VPC and EC2 Classic, see Supported Platforms.

" - }, - "Attributes":{ - "shape":"StackAttributes", - "documentation":"

One or more user-defined key/value pairs to be added to the stack attributes.

" - }, - "ServiceRoleArn":{ - "shape":"String", - "documentation":"

The stack AWS Identity and Access Management (IAM) role, which allows AWS OpsWorks to work with AWS resources on your behalf. You must set this parameter to the Amazon Resource Name (ARN) for an existing IAM role. For more information about IAM ARNs, see Using Identifiers.

" - }, - "DefaultInstanceProfileArn":{ - "shape":"String", - "documentation":"

The ARN of an IAM profile that is the default profile for all of the stack's EC2 instances. For more information about IAM ARNs, see Using Identifiers.

" - }, - "DefaultOs":{ - "shape":"String", - "documentation":"

The stack's operating system, which must be set to one of the following.

The default option is the current Amazon Linux version.

" - }, - "HostnameTheme":{ - "shape":"String", - "documentation":"

The stack's host name theme, with spaces are replaced by underscores. The theme is used to generate host names for the stack's instances. By default, HostnameTheme is set to Layer_Dependent, which creates host names by appending integers to the layer's short name. The other themes are:

To obtain a generated host name, call GetHostNameSuggestion, which returns a host name based on the current theme.

" - }, - "DefaultAvailabilityZone":{ - "shape":"String", - "documentation":"

The stack's default Availability Zone, which must be in the specified region. For more information, see Regions and Endpoints. If you also specify a value for DefaultSubnetId, the subnet must be in the same zone. For more information, see the VpcId parameter description.

" - }, - "DefaultSubnetId":{ - "shape":"String", - "documentation":"

The stack's default VPC subnet ID. This parameter is required if you specify a value for the VpcId parameter. All instances are launched into this subnet unless you specify otherwise when you create the instance. If you also specify a value for DefaultAvailabilityZone, the subnet must be in that zone. For information on default values and when this parameter is required, see the VpcId parameter description.

" - }, - "CustomJson":{ - "shape":"String", - "documentation":"

A string that contains user-defined, custom JSON. It is used to override the corresponding default stack configuration JSON values. The string should be in the following format and must escape characters such as '\"'.:

\"{\\\"key1\\\": \\\"value1\\\", \\\"key2\\\": \\\"value2\\\",...}\"

For more information on custom JSON, see Use Custom JSON to Modify the Stack Configuration JSON.

" - }, - "ConfigurationManager":{ - "shape":"StackConfigurationManager", - "documentation":"

The configuration manager. When you clone a stack we recommend that you use the configuration manager to specify the Chef version, 0.9, 11.4, or 11.10. The default value is currently 11.4.

" - }, - "ChefConfiguration":{ - "shape":"ChefConfiguration", - "documentation":"

A ChefConfiguration object that specifies whether to enable Berkshelf and the Berkshelf version on Chef 11.10 stacks. For more information, see Create a New Stack.

" - }, - "UseCustomCookbooks":{ - "shape":"Boolean", - "documentation":"

Whether the stack uses custom cookbooks.

" - }, - "UseOpsworksSecurityGroups":{ - "shape":"Boolean", - "documentation":"

Whether to associate the AWS OpsWorks built-in security groups with the stack's layers.

AWS OpsWorks provides a standard set of built-in security groups, one for each layer, which are associated with layers by default. With UseOpsworksSecurityGroups you can instead provide your own custom security groups. UseOpsworksSecurityGroups has the following settings:

For more information, see Create a New Stack.

" - }, - "CustomCookbooksSource":{"shape":"Source"}, - "DefaultSshKeyName":{ - "shape":"String", - "documentation":"

A default SSH key for the stack instances. You can override this value when you create or update an instance.

" - }, - "DefaultRootDeviceType":{ - "shape":"RootDeviceType", - "documentation":"

The default root device type. This value is used by default for all instances in the stack, but you can override it when you create an instance. The default option is instance-store. For more information, see Storage for the Root Device.

" - } - } - }, - "CreateStackResult":{ - "type":"structure", - "members":{ - "StackId":{ - "shape":"String", - "documentation":"

The stack ID, which is an opaque string that you use to identify the stack when performing actions such as DescribeStacks.

" - } - }, - "documentation":"

Contains the response to a CreateStack request.

" - }, - "CreateUserProfileRequest":{ - "type":"structure", - "required":["IamUserArn"], - "members":{ - "IamUserArn":{ - "shape":"String", - "documentation":"

The user's IAM ARN.

" - }, - "SshUsername":{ - "shape":"String", - "documentation":"

The user's SSH user name. The allowable characters are [a-z], [A-Z], [0-9], '-', and '_'. If the specified name includes other punctuation marks, AWS OpsWorks removes them. For example, my.name will be changed to myname. If you do not specify an SSH user name, AWS OpsWorks generates one from the IAM user name.

" - }, - "SshPublicKey":{ - "shape":"String", - "documentation":"

The user's public SSH key.

" - }, - "AllowSelfManagement":{ - "shape":"Boolean", - "documentation":"

Whether users can specify their own SSH public key through the My Settings page. For more information, see Setting an IAM User's Public SSH Key.

" - } - } - }, - "CreateUserProfileResult":{ - "type":"structure", - "members":{ - "IamUserArn":{ - "shape":"String", - "documentation":"

The user's IAM ARN.

" - } - }, - "documentation":"

Contains the response to a CreateUserProfile request.

" - }, - "DailyAutoScalingSchedule":{ - "type":"map", - "key":{"shape":"Hour"}, - "value":{"shape":"Switch"} - }, - "DataSource":{ - "type":"structure", - "members":{ - "Type":{ - "shape":"String", - "documentation":"

The data source's type, AutoSelectOpsworksMysqlInstance, OpsworksMysqlInstance, or RdsDbInstance.

" - }, - "Arn":{ - "shape":"String", - "documentation":"

The data source's ARN.

" - }, - "DatabaseName":{ - "shape":"String", - "documentation":"

The database name.

" - } - }, - "documentation":"

Describes an app's data source.

" - }, - "DataSources":{ - "type":"list", - "member":{"shape":"DataSource"} - }, - "DateTime":{"type":"string"}, - "DeleteAppRequest":{ - "type":"structure", - "required":["AppId"], - "members":{ - "AppId":{ - "shape":"String", - "documentation":"

The app ID.

" - } - } - }, - "DeleteInstanceRequest":{ - "type":"structure", - "required":["InstanceId"], - "members":{ - "InstanceId":{ - "shape":"String", - "documentation":"

The instance ID.

" - }, - "DeleteElasticIp":{ - "shape":"Boolean", - "documentation":"

Whether to delete the instance Elastic IP address.

" - }, - "DeleteVolumes":{ - "shape":"Boolean", - "documentation":"

Whether to delete the instance's Amazon EBS volumes.

" - } - } - }, - "DeleteLayerRequest":{ - "type":"structure", - "required":["LayerId"], - "members":{ - "LayerId":{ - "shape":"String", - "documentation":"

The layer ID.

" - } - } - }, - "DeleteStackRequest":{ - "type":"structure", - "required":["StackId"], - "members":{ - "StackId":{ - "shape":"String", - "documentation":"

The stack ID.

" - } - } - }, - "DeleteUserProfileRequest":{ - "type":"structure", - "required":["IamUserArn"], - "members":{ - "IamUserArn":{ - "shape":"String", - "documentation":"

The user's IAM ARN.

" - } - } - }, - "Deployment":{ - "type":"structure", - "members":{ - "DeploymentId":{ - "shape":"String", - "documentation":"

The deployment ID.

" - }, - "StackId":{ - "shape":"String", - "documentation":"

The stack ID.

" - }, - "AppId":{ - "shape":"String", - "documentation":"

The app ID.

" - }, - "CreatedAt":{ - "shape":"DateTime", - "documentation":"

Date when the deployment was created.

" - }, - "CompletedAt":{ - "shape":"DateTime", - "documentation":"

Date when the deployment completed.

" - }, - "Duration":{ - "shape":"Integer", - "documentation":"

The deployment duration.

" - }, - "IamUserArn":{ - "shape":"String", - "documentation":"

The user's IAM ARN.

" - }, - "Comment":{ - "shape":"String", - "documentation":"

A user-defined comment.

" - }, - "Command":{"shape":"DeploymentCommand"}, - "Status":{ - "shape":"String", - "documentation":"

The deployment status:

" - }, - "CustomJson":{ - "shape":"String", - "documentation":"

A string that contains user-defined custom JSON. It is used to override the corresponding default stack configuration JSON values for stack. The string should be in the following format and must escape characters such as '\"'.:

\"{\\\"key1\\\": \\\"value1\\\", \\\"key2\\\": \\\"value2\\\",...}\"

For more information on custom JSON, see Use Custom JSON to Modify the Stack Configuration JSON.

" - }, - "InstanceIds":{ - "shape":"Strings", - "documentation":"

The IDs of the target instances.

" - } - }, - "documentation":"

Describes a deployment of a stack or app.

" - }, - "DeploymentCommand":{ - "type":"structure", - "required":["Name"], - "members":{ - "Name":{ - "shape":"DeploymentCommandName", - "documentation":"

Specifies the operation. You can specify only one command.

For stacks, the following commands are available:

For apps, the following commands are available:

" - }, - "Args":{ - "shape":"DeploymentCommandArgs", - "documentation":"

The arguments of those commands that take arguments. It should be set to a JSON object with the following format:

{\"arg_name1\" : [\"value1\", \"value2\", ...], \"arg_name2\" : [\"value1\", \"value2\", ...], ...}

The update_dependencies command takes two arguments:

For example, to upgrade an instance to Amazon Linux 2014.09, set Args to the following.

{ \"upgrade_os_to\":[\"Amazon Linux 2014.09\"], \"allow_reboot\":[\"true\"] } " - } - }, - "documentation":"

Used to specify a stack or deployment command.

" - }, - "DeploymentCommandArgs":{ - "type":"map", - "key":{"shape":"String"}, - "value":{"shape":"Strings"} - }, - "DeploymentCommandName":{ - "type":"string", - "enum":[ - "install_dependencies", - "update_dependencies", - "update_custom_cookbooks", - "execute_recipes", - "deploy", - "rollback", - "start", - "stop", - "restart", - "undeploy" - ] - }, - "Deployments":{ - "type":"list", - "member":{"shape":"Deployment"} - }, - "DeregisterElasticIpRequest":{ - "type":"structure", - "required":["ElasticIp"], - "members":{ - "ElasticIp":{ - "shape":"String", - "documentation":"

The Elastic IP address.

" - } - } - }, - "DeregisterInstanceRequest":{ - "type":"structure", - "required":["InstanceId"], - "members":{ - "InstanceId":{ - "shape":"String", - "documentation":"

The instance ID.

" - } - } - }, - "DeregisterRdsDbInstanceRequest":{ - "type":"structure", - "required":["RdsDbInstanceArn"], - "members":{ - "RdsDbInstanceArn":{ - "shape":"String", - "documentation":"

The Amazon RDS instance's ARN.

" - } - } - }, - "DeregisterVolumeRequest":{ - "type":"structure", - "required":["VolumeId"], - "members":{ - "VolumeId":{ - "shape":"String", - "documentation":"

The volume ID.

" - } - } - }, - "DescribeAppsRequest":{ - "type":"structure", - "members":{ - "StackId":{ - "shape":"String", - "documentation":"

The app stack ID. If you use this parameter, DescribeApps returns a description of the apps in the specified stack.

" - }, - "AppIds":{ - "shape":"Strings", - "documentation":"

An array of app IDs for the apps to be described. If you use this parameter, DescribeApps returns a description of the specified apps. Otherwise, it returns a description of every app.

" - } - } - }, - "DescribeAppsResult":{ - "type":"structure", - "members":{ - "Apps":{ - "shape":"Apps", - "documentation":"

An array of App objects that describe the specified apps.

" - } - }, - "documentation":"

Contains the response to a DescribeApps request.

" - }, - "DescribeCommandsRequest":{ - "type":"structure", - "members":{ - "DeploymentId":{ - "shape":"String", - "documentation":"

The deployment ID. If you include this parameter, DescribeCommands returns a description of the commands associated with the specified deployment.

" - }, - "InstanceId":{ - "shape":"String", - "documentation":"

The instance ID. If you include this parameter, DescribeCommands returns a description of the commands associated with the specified instance.

" - }, - "CommandIds":{ - "shape":"Strings", - "documentation":"

An array of command IDs. If you include this parameter, DescribeCommands returns a description of the specified commands. Otherwise, it returns a description of every command.

" - } - } - }, - "DescribeCommandsResult":{ - "type":"structure", - "members":{ - "Commands":{ - "shape":"Commands", - "documentation":"

An array of Command objects that describe each of the specified commands.

" - } - }, - "documentation":"

Contains the response to a DescribeCommands request.

" - }, - "DescribeDeploymentsRequest":{ - "type":"structure", - "members":{ - "StackId":{ - "shape":"String", - "documentation":"

The stack ID. If you include this parameter, DescribeDeployments returns a description of the commands associated with the specified stack.

" - }, - "AppId":{ - "shape":"String", - "documentation":"

The app ID. If you include this parameter, DescribeDeployments returns a description of the commands associated with the specified app.

" - }, - "DeploymentIds":{ - "shape":"Strings", - "documentation":"

An array of deployment IDs to be described. If you include this parameter, DescribeDeployments returns a description of the specified deployments. Otherwise, it returns a description of every deployment.

" - } - } - }, - "DescribeDeploymentsResult":{ - "type":"structure", - "members":{ - "Deployments":{ - "shape":"Deployments", - "documentation":"

An array of Deployment objects that describe the deployments.

" - } - }, - "documentation":"

Contains the response to a DescribeDeployments request.

" - }, - "DescribeElasticIpsRequest":{ - "type":"structure", - "members":{ - "InstanceId":{ - "shape":"String", - "documentation":"

The instance ID. If you include this parameter, DescribeElasticIps returns a description of the Elastic IP addresses associated with the specified instance.

" - }, - "StackId":{ - "shape":"String", - "documentation":"

A stack ID. If you include this parameter, DescribeElasticIps returns a description of the Elastic IP addresses that are registered with the specified stack.

" - }, - "Ips":{ - "shape":"Strings", - "documentation":"

An array of Elastic IP addresses to be described. If you include this parameter, DescribeElasticIps returns a description of the specified Elastic IP addresses. Otherwise, it returns a description of every Elastic IP address.

" - } - } - }, - "DescribeElasticIpsResult":{ - "type":"structure", - "members":{ - "ElasticIps":{ - "shape":"ElasticIps", - "documentation":"

An ElasticIps object that describes the specified Elastic IP addresses.

" - } - }, - "documentation":"

Contains the response to a DescribeElasticIps request.

" - }, - "DescribeElasticLoadBalancersRequest":{ - "type":"structure", - "members":{ - "StackId":{ - "shape":"String", - "documentation":"

A stack ID. The action describes the stack's Elastic Load Balancing instances.

" - }, - "LayerIds":{ - "shape":"Strings", - "documentation":"

A list of layer IDs. The action describes the Elastic Load Balancing instances for the specified layers.

" - } - } - }, - "DescribeElasticLoadBalancersResult":{ - "type":"structure", - "members":{ - "ElasticLoadBalancers":{ - "shape":"ElasticLoadBalancers", - "documentation":"

A list of ElasticLoadBalancer objects that describe the specified Elastic Load Balancing instances.

" - } - }, - "documentation":"

Contains the response to a DescribeElasticLoadBalancers request.

" - }, - "DescribeInstancesRequest":{ - "type":"structure", - "members":{ - "StackId":{ - "shape":"String", - "documentation":"

A stack ID. If you use this parameter, DescribeInstances returns descriptions of the instances associated with the specified stack.

" - }, - "LayerId":{ - "shape":"String", - "documentation":"

A layer ID. If you use this parameter, DescribeInstances returns descriptions of the instances associated with the specified layer.

" - }, - "InstanceIds":{ - "shape":"Strings", - "documentation":"

An array of instance IDs to be described. If you use this parameter, DescribeInstances returns a description of the specified instances. Otherwise, it returns a description of every instance.

" - } - } - }, - "DescribeInstancesResult":{ - "type":"structure", - "members":{ - "Instances":{ - "shape":"Instances", - "documentation":"

An array of Instance objects that describe the instances.

" - } - }, - "documentation":"

Contains the response to a DescribeInstances request.

" - }, - "DescribeLayersRequest":{ - "type":"structure", - "members":{ - "StackId":{ - "shape":"String", - "documentation":"

The stack ID.

" - }, - "LayerIds":{ - "shape":"Strings", - "documentation":"

An array of layer IDs that specify the layers to be described. If you omit this parameter, DescribeLayers returns a description of every layer in the specified stack.

" - } - } - }, - "DescribeLayersResult":{ - "type":"structure", - "members":{ - "Layers":{ - "shape":"Layers", - "documentation":"

An array of Layer objects that describe the layers.

" - } - }, - "documentation":"

Contains the response to a DescribeLayers request.

" - }, - "DescribeLoadBasedAutoScalingRequest":{ - "type":"structure", - "required":["LayerIds"], - "members":{ - "LayerIds":{ - "shape":"Strings", - "documentation":"

An array of layer IDs.

" - } - } - }, - "DescribeLoadBasedAutoScalingResult":{ - "type":"structure", - "members":{ - "LoadBasedAutoScalingConfigurations":{ - "shape":"LoadBasedAutoScalingConfigurations", - "documentation":"

An array of LoadBasedAutoScalingConfiguration objects that describe each layer's configuration.

" - } - }, - "documentation":"

Contains the response to a DescribeLoadBasedAutoScaling request.

" - }, - "DescribeMyUserProfileResult":{ - "type":"structure", - "members":{ - "UserProfile":{ - "shape":"SelfUserProfile", - "documentation":"

A UserProfile object that describes the user's SSH information.

" - } - }, - "documentation":"

Contains the response to a DescribeMyUserProfile request.

" - }, - "DescribePermissionsRequest":{ - "type":"structure", - "members":{ - "IamUserArn":{ - "shape":"String", - "documentation":"

The user's IAM ARN. For more information about IAM ARNs, see Using Identifiers.

" - }, - "StackId":{ - "shape":"String", - "documentation":"

The stack ID.

" - } - } - }, - "DescribePermissionsResult":{ - "type":"structure", - "members":{ - "Permissions":{ - "shape":"Permissions", - "documentation":"

An array of Permission objects that describe the stack permissions.

" - } - }, - "documentation":"

Contains the response to a DescribePermissions request.

" - }, - "DescribeRaidArraysRequest":{ - "type":"structure", - "members":{ - "InstanceId":{ - "shape":"String", - "documentation":"

The instance ID. If you use this parameter, DescribeRaidArrays returns descriptions of the RAID arrays associated with the specified instance.

" - }, - "StackId":{ - "shape":"String", - "documentation":"

The stack ID.

" - }, - "RaidArrayIds":{ - "shape":"Strings", - "documentation":"

An array of RAID array IDs. If you use this parameter, DescribeRaidArrays returns descriptions of the specified arrays. Otherwise, it returns a description of every array.

" - } - } - }, - "DescribeRaidArraysResult":{ - "type":"structure", - "members":{ - "RaidArrays":{ - "shape":"RaidArrays", - "documentation":"

A RaidArrays object that describes the specified RAID arrays.

" - } - }, - "documentation":"

Contains the response to a DescribeRaidArrays request.

" - }, - "DescribeRdsDbInstancesRequest":{ - "type":"structure", - "required":["StackId"], - "members":{ - "StackId":{ - "shape":"String", - "documentation":"

The stack ID that the instances are registered with. The operation returns descriptions of all registered Amazon RDS instances.

" - }, - "RdsDbInstanceArns":{ - "shape":"Strings", - "documentation":"

An array containing the ARNs of the instances to be described.

" - } - } - }, - "DescribeRdsDbInstancesResult":{ - "type":"structure", - "members":{ - "RdsDbInstances":{ - "shape":"RdsDbInstances", - "documentation":"

An a array of RdsDbInstance objects that describe the instances.

" - } - }, - "documentation":"

Contains the response to a DescribeRdsDbInstances request.

" - }, - "DescribeServiceErrorsRequest":{ - "type":"structure", - "members":{ - "StackId":{ - "shape":"String", - "documentation":"

The stack ID. If you use this parameter, DescribeServiceErrors returns descriptions of the errors associated with the specified stack.

" - }, - "InstanceId":{ - "shape":"String", - "documentation":"

The instance ID. If you use this parameter, DescribeServiceErrors returns descriptions of the errors associated with the specified instance.

" - }, - "ServiceErrorIds":{ - "shape":"Strings", - "documentation":"

An array of service error IDs. If you use this parameter, DescribeServiceErrors returns descriptions of the specified errors. Otherwise, it returns a description of every error.

" - } - } - }, - "DescribeServiceErrorsResult":{ - "type":"structure", - "members":{ - "ServiceErrors":{ - "shape":"ServiceErrors", - "documentation":"

An array of ServiceError objects that describe the specified service errors.

" - } - }, - "documentation":"

Contains the response to a DescribeServiceErrors request.

" - }, - "DescribeStackProvisioningParametersRequest":{ - "type":"structure", - "required":["StackId"], - "members":{ - "StackId":{ - "shape":"String", - "documentation":"

The stack ID

" - } - } - }, - "DescribeStackProvisioningParametersResult":{ - "type":"structure", - "members":{ - "AgentInstallerUrl":{ - "shape":"String", - "documentation":"

The AWS OpsWorks agent installer's URL.

" - }, - "Parameters":{ - "shape":"Parameters", - "documentation":"

An embedded object that contains the provisioning parameters.

" - } - }, - "documentation":"

Contains the response to a DescribeStackProvisioningParameters request.

" - }, - "DescribeStackSummaryRequest":{ - "type":"structure", - "required":["StackId"], - "members":{ - "StackId":{ - "shape":"String", - "documentation":"

The stack ID.

" - } - } - }, - "DescribeStackSummaryResult":{ - "type":"structure", - "members":{ - "StackSummary":{ - "shape":"StackSummary", - "documentation":"

A StackSummary object that contains the results.

" - } - }, - "documentation":"

Contains the response to a DescribeStackSummary request.

" - }, - "DescribeStacksRequest":{ - "type":"structure", - "members":{ - "StackIds":{ - "shape":"Strings", - "documentation":"

An array of stack IDs that specify the stacks to be described. If you omit this parameter, DescribeStacks returns a description of every stack.

" - } - } - }, - "DescribeStacksResult":{ - "type":"structure", - "members":{ - "Stacks":{ - "shape":"Stacks", - "documentation":"

An array of Stack objects that describe the stacks.

" - } - }, - "documentation":"

Contains the response to a DescribeStacks request.

" - }, - "DescribeTimeBasedAutoScalingRequest":{ - "type":"structure", - "required":["InstanceIds"], - "members":{ - "InstanceIds":{ - "shape":"Strings", - "documentation":"

An array of instance IDs.

" - } - } - }, - "DescribeTimeBasedAutoScalingResult":{ - "type":"structure", - "members":{ - "TimeBasedAutoScalingConfigurations":{ - "shape":"TimeBasedAutoScalingConfigurations", - "documentation":"

An array of TimeBasedAutoScalingConfiguration objects that describe the configuration for the specified instances.

" - } - }, - "documentation":"

Contains the response to a DescribeTimeBasedAutoScaling request.

" - }, - "DescribeUserProfilesRequest":{ - "type":"structure", - "members":{ - "IamUserArns":{ - "shape":"Strings", - "documentation":"

An array of IAM user ARNs that identify the users to be described.

" - } - } - }, - "DescribeUserProfilesResult":{ - "type":"structure", - "members":{ - "UserProfiles":{ - "shape":"UserProfiles", - "documentation":"

A Users object that describes the specified users.

" - } - }, - "documentation":"

Contains the response to a DescribeUserProfiles request.

" - }, - "DescribeVolumesRequest":{ - "type":"structure", - "members":{ - "InstanceId":{ - "shape":"String", - "documentation":"

The instance ID. If you use this parameter, DescribeVolumes returns descriptions of the volumes associated with the specified instance.

" - }, - "StackId":{ - "shape":"String", - "documentation":"

A stack ID. The action describes the stack's registered Amazon EBS volumes.

" - }, - "RaidArrayId":{ - "shape":"String", - "documentation":"

The RAID array ID. If you use this parameter, DescribeVolumes returns descriptions of the volumes associated with the specified RAID array.

" - }, - "VolumeIds":{ - "shape":"Strings", - "documentation":"

Am array of volume IDs. If you use this parameter, DescribeVolumes returns descriptions of the specified volumes. Otherwise, it returns a description of every volume.

" - } - } - }, - "DescribeVolumesResult":{ - "type":"structure", - "members":{ - "Volumes":{ - "shape":"Volumes", - "documentation":"

An array of volume IDs.

" - } - }, - "documentation":"

Contains the response to a DescribeVolumes request.

" - }, - "DetachElasticLoadBalancerRequest":{ - "type":"structure", - "required":[ - "ElasticLoadBalancerName", - "LayerId" - ], - "members":{ - "ElasticLoadBalancerName":{ - "shape":"String", - "documentation":"

The Elastic Load Balancing instance's name.

" - }, - "LayerId":{ - "shape":"String", - "documentation":"

The ID of the layer that the Elastic Load Balancing instance is attached to.

" - } - } - }, - "DisassociateElasticIpRequest":{ - "type":"structure", - "required":["ElasticIp"], - "members":{ - "ElasticIp":{ - "shape":"String", - "documentation":"

The Elastic IP address.

" - } - } - }, - "Double":{ - "type":"double", - "box":true - }, - "ElasticIp":{ - "type":"structure", - "members":{ - "Ip":{ - "shape":"String", - "documentation":"

The IP address.

" - }, - "Name":{ - "shape":"String", - "documentation":"

The name.

" - }, - "Domain":{ - "shape":"String", - "documentation":"

The domain.

" - }, - "Region":{ - "shape":"String", - "documentation":"

The AWS region. For more information, see Regions and Endpoints.

" - }, - "InstanceId":{ - "shape":"String", - "documentation":"

The ID of the instance that the address is attached to.

" - } - }, - "documentation":"

Describes an Elastic IP address.

" - }, - "ElasticIps":{ - "type":"list", - "member":{"shape":"ElasticIp"} - }, - "ElasticLoadBalancer":{ - "type":"structure", - "members":{ - "ElasticLoadBalancerName":{ - "shape":"String", - "documentation":"

The Elastic Load Balancing instance's name.

" - }, - "Region":{ - "shape":"String", - "documentation":"

The instance's AWS region.

" - }, - "DnsName":{ - "shape":"String", - "documentation":"

The instance's public DNS name.

" - }, - "StackId":{ - "shape":"String", - "documentation":"

The ID of the stack that the instance is associated with.

" - }, - "LayerId":{ - "shape":"String", - "documentation":"

The ID of the layer that the instance is attached to.

" - }, - "VpcId":{ - "shape":"String", - "documentation":"

The VPC ID.

" - }, - "AvailabilityZones":{ - "shape":"Strings", - "documentation":"

A list of Availability Zones.

" - }, - "SubnetIds":{ - "shape":"Strings", - "documentation":"

A list of subnet IDs, if the stack is running in a VPC.

" - }, - "Ec2InstanceIds":{ - "shape":"Strings", - "documentation":"

A list of the EC2 instances that the Elastic Load Balancing instance is managing traffic for.

" - } - }, - "documentation":"

Describes an Elastic Load Balancing instance.

" - }, - "ElasticLoadBalancers":{ - "type":"list", - "member":{"shape":"ElasticLoadBalancer"} - }, - "EnvironmentVariable":{ - "type":"structure", - "required":[ - "Key", - "Value" - ], - "members":{ - "Key":{ - "shape":"String", - "documentation":"

(Required) The environment variable's name, which can consist of up to 64 characters and must be specified. The name can contain upper- and lowercase letters, numbers, and underscores (_), but it must start with a letter or underscore.

" - }, - "Value":{ - "shape":"String", - "documentation":"

(Optional) The environment variable's value, which can be left empty. If you specify a value, it can contain up to 256 characters, which must all be printable.

" - }, - "Secure":{ - "shape":"Boolean", - "documentation":"

(Optional) Whether the variable's value will be returned by the DescribeApps action. To conceal an environment variable's value, set Secure to true. DescribeApps then returns **Filtered** instead of the actual value. The default value for Secure is false.

" - } - }, - "documentation":"

Represents an app's environment variable.

" - }, - "EnvironmentVariables":{ - "type":"list", - "member":{"shape":"EnvironmentVariable"} - }, - "GetHostnameSuggestionRequest":{ - "type":"structure", - "required":["LayerId"], - "members":{ - "LayerId":{ - "shape":"String", - "documentation":"

The layer ID.

" - } - } - }, - "GetHostnameSuggestionResult":{ - "type":"structure", - "members":{ - "LayerId":{ - "shape":"String", - "documentation":"

The layer ID.

" - }, - "Hostname":{ - "shape":"String", - "documentation":"

The generated host name.

" - } - }, - "documentation":"

Contains the response to a GetHostnameSuggestion request.

" - }, - "Hour":{"type":"string"}, - "Instance":{ - "type":"structure", - "members":{ - "InstanceId":{ - "shape":"String", - "documentation":"

The instance ID.

" - }, - "Ec2InstanceId":{ - "shape":"String", - "documentation":"

The ID of the associated Amazon EC2 instance.

" - }, - "VirtualizationType":{ - "shape":"VirtualizationType", - "documentation":"

The instance's virtualization type, paravirtual or hvm.

" - }, - "Hostname":{ - "shape":"String", - "documentation":"

The instance host name.

" - }, - "StackId":{ - "shape":"String", - "documentation":"

The stack ID.

" - }, - "LayerIds":{ - "shape":"Strings", - "documentation":"

An array containing the instance layer IDs.

" - }, - "SecurityGroupIds":{ - "shape":"Strings", - "documentation":"

An array containing the instance security group IDs.

" - }, - "InstanceType":{ - "shape":"String", - "documentation":"

The instance type. AWS OpsWorks supports all instance types except Cluster Compute, Cluster GPU, and High Memory Cluster. For more information, see Instance Families and Types. The parameter values that specify the various types are in the API Name column of the Available Instance Types table.

" - }, - "InstanceProfileArn":{ - "shape":"String", - "documentation":"

The ARN of the instance's IAM profile. For more information about IAM ARNs, see Using Identifiers.

" - }, - "Status":{ - "shape":"String", - "documentation":"

The instance status:

" - }, - "Os":{ - "shape":"String", - "documentation":"

The instance's operating system.

" - }, - "AmiId":{ - "shape":"String", - "documentation":"

A custom AMI ID to be used to create the instance. The AMI should be based on one of the standard AWS OpsWorks APIs: Amazon Linux, Ubuntu 12.04 LTS, or Ubuntu 14.04 LTS. For more information, see Instances

" - }, - "AvailabilityZone":{ - "shape":"String", - "documentation":"

The instance Availability Zone. For more information, see Regions and Endpoints.

" - }, - "SubnetId":{ - "shape":"String", - "documentation":"

The instance's subnet ID, if the stack is running in a VPC.

" - }, - "PublicDns":{ - "shape":"String", - "documentation":"

The instance public DNS name.

" - }, - "PrivateDns":{ - "shape":"String", - "documentation":"

The instance private DNS name.

" - }, - "PublicIp":{ - "shape":"String", - "documentation":"

The instance public IP address.

" - }, - "PrivateIp":{ - "shape":"String", - "documentation":"

The instance private IP address.

" - }, - "ElasticIp":{ - "shape":"String", - "documentation":"

The instance Elastic IP address .

" - }, - "AutoScalingType":{ - "shape":"AutoScalingType", - "documentation":"

For load-based or time-based instances, the type.

" - }, - "SshKeyName":{ - "shape":"String", - "documentation":"

The instance SSH key name.

" - }, - "SshHostRsaKeyFingerprint":{ - "shape":"String", - "documentation":"

The SSH key's RSA fingerprint.

" - }, - "SshHostDsaKeyFingerprint":{ - "shape":"String", - "documentation":"

The SSH key's DSA fingerprint.

" - }, - "CreatedAt":{ - "shape":"DateTime", - "documentation":"

The time that the instance was created.

" - }, - "LastServiceErrorId":{ - "shape":"String", - "documentation":"

The ID of the last service error. For more information, call DescribeServiceErrors.

" - }, - "Architecture":{ - "shape":"Architecture", - "documentation":"

The instance architecture, \"i386\" or \"x86_64\".

" - }, - "RootDeviceType":{ - "shape":"RootDeviceType", - "documentation":"

The instance root device type. For more information, see Storage for the Root Device.

" - }, - "RootDeviceVolumeId":{ - "shape":"String", - "documentation":"

The root device volume ID.

" - }, - "InstallUpdatesOnBoot":{ - "shape":"Boolean", - "documentation":"

Whether to install operating system and package updates when the instance boots. The default value is true. If this value is set to false, you must then update your instances manually by using CreateDeployment to run the update_dependencies stack command or manually running yum (Amazon Linux) or apt-get (Ubuntu) on the instances.

We strongly recommend using the default value of true, to ensure that your instances have the latest security updates.

" - }, - "EbsOptimized":{ - "shape":"Boolean", - "documentation":"

Whether this is an Amazon EBS-optimized instance.

" - }, - "ReportedOs":{ - "shape":"ReportedOs", - "documentation":"

For registered instances, the reported operating system.

" - }, - "InfrastructureClass":{ - "shape":"String", - "documentation":"

For registered instances, the infrastructure class: ec2 or on-premises

" - }, - "RegisteredBy":{ - "shape":"String", - "documentation":"

For registered instances, who performed the registration.

" - } - }, - "documentation":"

Describes an instance.

" - }, - "InstanceIdentity":{ - "type":"structure", - "members":{ - "Document":{ - "shape":"String", - "documentation":"

A JSON document that contains the metadata.

" - }, - "Signature":{ - "shape":"String", - "documentation":"

A signature that can be used to verify the document's accuracy and authenticity.

" - } - }, - "documentation":"

Contains a description of an Amazon EC2 instance from the Amazon EC2 metadata service. For more information, see Instance Metadata and User Data.

" - }, - "Instances":{ - "type":"list", - "member":{"shape":"Instance"} - }, - "InstancesCount":{ - "type":"structure", - "members":{ - "Assigning":{ - "shape":"Integer", - "documentation":"

The number of instances in the Assigning state.

" - }, - "Booting":{ - "shape":"Integer", - "documentation":"

The number of instances with booting status.

" - }, - "ConnectionLost":{ - "shape":"Integer", - "documentation":"

The number of instances with connection_lost status.

" - }, - "Deregistering":{ - "shape":"Integer", - "documentation":"

The number of instances in the Deregistering state.

" - }, - "Online":{ - "shape":"Integer", - "documentation":"

The number of instances with online status.

" - }, - "Pending":{ - "shape":"Integer", - "documentation":"

The number of instances with pending status.

" - }, - "Rebooting":{ - "shape":"Integer", - "documentation":"

The number of instances with rebooting status.

" - }, - "Registered":{ - "shape":"Integer", - "documentation":"

The number of instances in the Registered state.

" - }, - "Registering":{ - "shape":"Integer", - "documentation":"

The number of instances in the Registering state.

" - }, - "Requested":{ - "shape":"Integer", - "documentation":"

The number of instances with requested status.

" - }, - "RunningSetup":{ - "shape":"Integer", - "documentation":"

The number of instances with running_setup status.

" - }, - "SetupFailed":{ - "shape":"Integer", - "documentation":"

The number of instances with setup_failed status.

" - }, - "ShuttingDown":{ - "shape":"Integer", - "documentation":"

The number of instances with shutting_down status.

" - }, - "StartFailed":{ - "shape":"Integer", - "documentation":"

The number of instances with start_failed status.

" - }, - "Stopped":{ - "shape":"Integer", - "documentation":"

The number of instances with stopped status.

" - }, - "Stopping":{ - "shape":"Integer", - "documentation":"

The number of instances with stopping status.

" - }, - "Terminated":{ - "shape":"Integer", - "documentation":"

The number of instances with terminated status.

" - }, - "Terminating":{ - "shape":"Integer", - "documentation":"

The number of instances with terminating status.

" - }, - "Unassigning":{ - "shape":"Integer", - "documentation":"

The number of instances in the Unassigning state.

" - } - }, - "documentation":"

Describes how many instances a stack has for each status.

" - }, - "Integer":{ - "type":"integer", - "box":true - }, - "Layer":{ - "type":"structure", - "members":{ - "StackId":{ - "shape":"String", - "documentation":"

The layer stack ID.

" - }, - "LayerId":{ - "shape":"String", - "documentation":"

The layer ID.

" - }, - "Type":{ - "shape":"LayerType", - "documentation":"

The layer type.

" - }, - "Name":{ - "shape":"String", - "documentation":"

The layer name.

" - }, - "Shortname":{ - "shape":"String", - "documentation":"

The layer short name.

" - }, - "Attributes":{ - "shape":"LayerAttributes", - "documentation":"

The layer attributes.

" - }, - "CustomInstanceProfileArn":{ - "shape":"String", - "documentation":"

The ARN of the default IAM profile to be used for the layer's EC2 instances. For more information about IAM ARNs, see Using Identifiers.

" - }, - "CustomSecurityGroupIds":{ - "shape":"Strings", - "documentation":"

An array containing the layer's custom security group IDs.

" - }, - "DefaultSecurityGroupNames":{ - "shape":"Strings", - "documentation":"

An array containing the layer's security group names.

" - }, - "Packages":{ - "shape":"Strings", - "documentation":"

An array of Package objects that describe the layer's packages.

" - }, - "VolumeConfigurations":{ - "shape":"VolumeConfigurations", - "documentation":"

A VolumeConfigurations object that describes the layer's Amazon EBS volumes.

" - }, - "EnableAutoHealing":{ - "shape":"Boolean", - "documentation":"

Whether auto healing is disabled for the layer.

" - }, - "AutoAssignElasticIps":{ - "shape":"Boolean", - "documentation":"

Whether to automatically assign an Elastic IP address to the layer's instances. For more information, see How to Edit a Layer.

" - }, - "AutoAssignPublicIps":{ - "shape":"Boolean", - "documentation":"

For stacks that are running in a VPC, whether to automatically assign a public IP address to the layer's instances. For more information, see How to Edit a Layer.

" - }, - "DefaultRecipes":{"shape":"Recipes"}, - "CustomRecipes":{ - "shape":"Recipes", - "documentation":"

A LayerCustomRecipes object that specifies the layer's custom recipes.

" - }, - "CreatedAt":{ - "shape":"DateTime", - "documentation":"

Date when the layer was created.

" - }, - "InstallUpdatesOnBoot":{ - "shape":"Boolean", - "documentation":"

Whether to install operating system and package updates when the instance boots. The default value is true. If this value is set to false, you must then update your instances manually by using CreateDeployment to run the update_dependencies stack command or manually running yum (Amazon Linux) or apt-get (Ubuntu) on the instances.

We strongly recommend using the default value of true, to ensure that your instances have the latest security updates.

" - }, - "UseEbsOptimizedInstances":{ - "shape":"Boolean", - "documentation":"

Whether the layer uses Amazon EBS-optimized instances.

" - }, - "LifecycleEventConfiguration":{ - "shape":"LifecycleEventConfiguration", - "documentation":"

A LifeCycleEventConfiguration object that specifies the Shutdown event configuration.

" - } - }, - "documentation":"

Describes a layer.

" - }, - "LayerAttributes":{ - "type":"map", - "key":{"shape":"LayerAttributesKeys"}, - "value":{"shape":"String"} - }, - "LayerAttributesKeys":{ - "type":"string", - "enum":[ - "EnableHaproxyStats", - "HaproxyStatsUrl", - "HaproxyStatsUser", - "HaproxyStatsPassword", - "HaproxyHealthCheckUrl", - "HaproxyHealthCheckMethod", - "MysqlRootPassword", - "MysqlRootPasswordUbiquitous", - "GangliaUrl", - "GangliaUser", - "GangliaPassword", - "MemcachedMemory", - "NodejsVersion", - "RubyVersion", - "RubygemsVersion", - "ManageBundler", - "BundlerVersion", - "RailsStack", - "PassengerVersion", - "Jvm", - "JvmVersion", - "JvmOptions", - "JavaAppServer", - "JavaAppServerVersion" - ] - }, - "LayerType":{ - "type":"string", - "enum":[ - "java-app", - "lb", - "web", - "php-app", - "rails-app", - "nodejs-app", - "memcached", - "db-master", - "monitoring-master", - "custom" - ] - }, - "Layers":{ - "type":"list", - "member":{"shape":"Layer"} - }, - "LifecycleEventConfiguration":{ - "type":"structure", - "members":{ - "Shutdown":{ - "shape":"ShutdownEventConfiguration", - "documentation":"

A ShutdownEventConfiguration object that specifies the Shutdown event configuration.

" - } - }, - "documentation":"

Specifies the lifecycle event configuration

" - }, - "LoadBasedAutoScalingConfiguration":{ - "type":"structure", - "members":{ - "LayerId":{ - "shape":"String", - "documentation":"

The layer ID.

" - }, - "Enable":{ - "shape":"Boolean", - "documentation":"

Whether load-based auto scaling is enabled for the layer.

" - }, - "UpScaling":{ - "shape":"AutoScalingThresholds", - "documentation":"

An AutoScalingThresholds object that describes the upscaling configuration, which defines how and when AWS OpsWorks increases the number of instances.

" - }, - "DownScaling":{ - "shape":"AutoScalingThresholds", - "documentation":"

An AutoScalingThresholds object that describes the downscaling configuration, which defines how and when AWS OpsWorks reduces the number of instances.

" - } - }, - "documentation":"

Describes a layer's load-based auto scaling configuration.

" - }, - "LoadBasedAutoScalingConfigurations":{ - "type":"list", - "member":{"shape":"LoadBasedAutoScalingConfiguration"} - }, - "Minute":{ - "type":"integer", - "min":1, - "max":100, - "box":true - }, - "Parameters":{ - "type":"map", - "key":{"shape":"String"}, - "value":{"shape":"String"} - }, - "Permission":{ - "type":"structure", - "members":{ - "StackId":{ - "shape":"String", - "documentation":"

A stack ID.

" - }, - "IamUserArn":{ - "shape":"String", - "documentation":"

The Amazon Resource Name (ARN) for an AWS Identity and Access Management (IAM) role. For more information about IAM ARNs, see Using Identifiers.

" - }, - "AllowSsh":{ - "shape":"Boolean", - "documentation":"

Whether the user can use SSH.

" - }, - "AllowSudo":{ - "shape":"Boolean", - "documentation":"

Whether the user can use sudo.

" - }, - "Level":{ - "shape":"String", - "documentation":"

The user's permission level, which must be the following:

For more information on the permissions associated with these levels, see Managing User Permissions

" - } - }, - "documentation":"

Describes stack or user permissions.

" - }, - "Permissions":{ - "type":"list", - "member":{"shape":"Permission"} - }, - "RaidArray":{ - "type":"structure", - "members":{ - "RaidArrayId":{ - "shape":"String", - "documentation":"

The array ID.

" - }, - "InstanceId":{ - "shape":"String", - "documentation":"

The instance ID.

" - }, - "Name":{ - "shape":"String", - "documentation":"

The array name.

" - }, - "RaidLevel":{ - "shape":"Integer", - "documentation":"

The RAID level.

" - }, - "NumberOfDisks":{ - "shape":"Integer", - "documentation":"

The number of disks in the array.

" - }, - "Size":{ - "shape":"Integer", - "documentation":"

The array's size.

" - }, - "Device":{ - "shape":"String", - "documentation":"

The array's Linux device. For example /dev/mdadm0.

" - }, - "MountPoint":{ - "shape":"String", - "documentation":"

The array's mount point.

" - }, - "AvailabilityZone":{ - "shape":"String", - "documentation":"

The array's Availability Zone. For more information, see Regions and Endpoints.

" - }, - "CreatedAt":{ - "shape":"DateTime", - "documentation":"

When the RAID array was created.

" - }, - "StackId":{ - "shape":"String", - "documentation":"

The stack ID.

" - }, - "VolumeType":{ - "shape":"String", - "documentation":"

The volume type, standard or PIOPS.

" - }, - "Iops":{ - "shape":"Integer", - "documentation":"

For PIOPS volumes, the IOPS per disk.

" - } - }, - "documentation":"

Describes an instance's RAID array.

" - }, - "RaidArrays":{ - "type":"list", - "member":{"shape":"RaidArray"} - }, - "RdsDbInstance":{ - "type":"structure", - "members":{ - "RdsDbInstanceArn":{ - "shape":"String", - "documentation":"

The instance's ARN.

" - }, - "DbInstanceIdentifier":{ - "shape":"String", - "documentation":"

The DB instance identifier.

" - }, - "DbUser":{ - "shape":"String", - "documentation":"

The master user name.

" - }, - "DbPassword":{ - "shape":"String", - "documentation":"

The database password.

" - }, - "Region":{ - "shape":"String", - "documentation":"

The instance's AWS region.

" - }, - "Address":{ - "shape":"String", - "documentation":"

The instance's address.

" - }, - "Engine":{ - "shape":"String", - "documentation":"

The instance's database engine.

" - }, - "StackId":{ - "shape":"String", - "documentation":"

The ID of the stack that the instance is registered with.

" - }, - "MissingOnRds":{ - "shape":"Boolean", - "documentation":"

Set to true if AWS OpsWorks was unable to discover the Amazon RDS instance. AWS OpsWorks attempts to discover the instance only once. If this value is set to true, you must deregister the instance and then register it again.

" - } - }, - "documentation":"

Describes an Amazon RDS instance.

" - }, - "RdsDbInstances":{ - "type":"list", - "member":{"shape":"RdsDbInstance"} - }, - "RebootInstanceRequest":{ - "type":"structure", - "required":["InstanceId"], - "members":{ - "InstanceId":{ - "shape":"String", - "documentation":"

The instance ID.

" - } - } - }, - "Recipes":{ - "type":"structure", - "members":{ - "Setup":{ - "shape":"Strings", - "documentation":"

An array of custom recipe names to be run following a setup event.

" - }, - "Configure":{ - "shape":"Strings", - "documentation":"

An array of custom recipe names to be run following a configure event.

" - }, - "Deploy":{ - "shape":"Strings", - "documentation":"

An array of custom recipe names to be run following a deploy event.

" - }, - "Undeploy":{ - "shape":"Strings", - "documentation":"

An array of custom recipe names to be run following a undeploy event.

" - }, - "Shutdown":{ - "shape":"Strings", - "documentation":"

An array of custom recipe names to be run following a shutdown event.

" - } - }, - "documentation":"

AWS OpsWorks supports five lifecycle events, setup, configuration, deploy, undeploy, and shutdown. For each layer, AWS OpsWorks runs a set of standard recipes for each event. In addition, you can provide custom recipes for any or all layers and events. AWS OpsWorks runs custom event recipes after the standard recipes. LayerCustomRecipes specifies the custom recipes for a particular layer to be run in response to each of the five events.

To specify a recipe, use the cookbook's directory name in the repository followed by two colons and the recipe name, which is the recipe's file name without the .rb extension. For example: phpapp2::dbsetup specifies the dbsetup.rb recipe in the repository's phpapp2 folder.

" - }, - "RegisterElasticIpRequest":{ - "type":"structure", - "required":[ - "ElasticIp", - "StackId" - ], - "members":{ - "ElasticIp":{ - "shape":"String", - "documentation":"

The Elastic IP address.

" - }, - "StackId":{ - "shape":"String", - "documentation":"

The stack ID.

" - } - } - }, - "RegisterElasticIpResult":{ - "type":"structure", - "members":{ - "ElasticIp":{ - "shape":"String", - "documentation":"

The Elastic IP address.

" - } - }, - "documentation":"

Contains the response to a RegisterElasticIp request.

" - }, - "RegisterInstanceRequest":{ - "type":"structure", - "required":["StackId"], - "members":{ - "StackId":{ - "shape":"String", - "documentation":"

The ID of the stack that the instance is to be registered with.

" - }, - "Hostname":{ - "shape":"String", - "documentation":"

The instance's hostname.

" - }, - "PublicIp":{ - "shape":"String", - "documentation":"

The instance's public IP address.

" - }, - "PrivateIp":{ - "shape":"String", - "documentation":"

The instance's private IP address.

" - }, - "RsaPublicKey":{ - "shape":"String", - "documentation":"

The instances public RSA key. This key is used to encrypt communication between the instance and the service.

" - }, - "RsaPublicKeyFingerprint":{ - "shape":"String", - "documentation":"

The instances public RSA key fingerprint.

" - }, - "InstanceIdentity":{ - "shape":"InstanceIdentity", - "documentation":"

An InstanceIdentity object that contains the instance's identity.

" - } - } - }, - "RegisterInstanceResult":{ - "type":"structure", - "members":{ - "InstanceId":{ - "shape":"String", - "documentation":"

The registered instance's AWS OpsWorks ID.

" - } - }, - "documentation":"

Contains the response to a RegisterInstanceResult request.

" - }, - "RegisterRdsDbInstanceRequest":{ - "type":"structure", - "required":[ - "StackId", - "RdsDbInstanceArn", - "DbUser", - "DbPassword" - ], - "members":{ - "StackId":{ - "shape":"String", - "documentation":"

The stack ID.

" - }, - "RdsDbInstanceArn":{ - "shape":"String", - "documentation":"

The Amazon RDS instance's ARN.

" - }, - "DbUser":{ - "shape":"String", - "documentation":"

The database's master user name.

" - }, - "DbPassword":{ - "shape":"String", - "documentation":"

The database password.

" - } - } - }, - "RegisterVolumeRequest":{ - "type":"structure", - "required":["StackId"], - "members":{ - "Ec2VolumeId":{ - "shape":"String", - "documentation":"

The Amazon EBS volume ID.

" - }, - "StackId":{ - "shape":"String", - "documentation":"

The stack ID.

" - } - } - }, - "RegisterVolumeResult":{ - "type":"structure", - "members":{ - "VolumeId":{ - "shape":"String", - "documentation":"

The volume ID.

" - } - }, - "documentation":"

Contains the response to a RegisterVolume request.

" - }, - "ReportedOs":{ - "type":"structure", - "members":{ - "Family":{ - "shape":"String", - "documentation":"

The operating system family.

" - }, - "Name":{ - "shape":"String", - "documentation":"

The operating system name.

" - }, - "Version":{ - "shape":"String", - "documentation":"

The operating system version.

" - } - }, - "documentation":"

A registered instance's reported operating system.

" - }, - "ResourceNotFoundException":{ - "type":"structure", - "members":{ - "message":{ - "shape":"String", - "documentation":"

The exception message.

" - } - }, - "exception":true, - "documentation":"

Indicates that a resource was not found.

" - }, - "RootDeviceType":{ - "type":"string", - "enum":[ - "ebs", - "instance-store" - ] - }, - "SelfUserProfile":{ - "type":"structure", - "members":{ - "IamUserArn":{ - "shape":"String", - "documentation":"

The user's IAM ARN.

" - }, - "Name":{ - "shape":"String", - "documentation":"

The user's name.

" - }, - "SshUsername":{ - "shape":"String", - "documentation":"

The user's SSH user name.

" - }, - "SshPublicKey":{ - "shape":"String", - "documentation":"

The user's SSH public key.

" - } - }, - "documentation":"

Describes a user's SSH information.

" - }, - "ServiceError":{ - "type":"structure", - "members":{ - "ServiceErrorId":{ - "shape":"String", - "documentation":"

The error ID.

" - }, - "StackId":{ - "shape":"String", - "documentation":"

The stack ID.

" - }, - "InstanceId":{ - "shape":"String", - "documentation":"

The instance ID.

" - }, - "Type":{ - "shape":"String", - "documentation":"

The error type.

" - }, - "Message":{ - "shape":"String", - "documentation":"

A message that describes the error.

" - }, - "CreatedAt":{ - "shape":"DateTime", - "documentation":"

When the error occurred.

" - } - }, - "documentation":"

Describes an AWS OpsWorks service error.

" - }, - "ServiceErrors":{ - "type":"list", - "member":{"shape":"ServiceError"} - }, - "SetLoadBasedAutoScalingRequest":{ - "type":"structure", - "required":["LayerId"], - "members":{ - "LayerId":{ - "shape":"String", - "documentation":"

The layer ID.

" - }, - "Enable":{ - "shape":"Boolean", - "documentation":"

Enables load-based auto scaling for the layer.

" - }, - "UpScaling":{ - "shape":"AutoScalingThresholds", - "documentation":"

An AutoScalingThresholds object with the upscaling threshold configuration. If the load exceeds these thresholds for a specified amount of time, AWS OpsWorks starts a specified number of instances.

" - }, - "DownScaling":{ - "shape":"AutoScalingThresholds", - "documentation":"

An AutoScalingThresholds object with the downscaling threshold configuration. If the load falls below these thresholds for a specified amount of time, AWS OpsWorks stops a specified number of instances.

" - } - } - }, - "SetPermissionRequest":{ - "type":"structure", - "required":[ - "StackId", - "IamUserArn" - ], - "members":{ - "StackId":{ - "shape":"String", - "documentation":"

The stack ID.

" - }, - "IamUserArn":{ - "shape":"String", - "documentation":"

The user's IAM ARN.

" - }, - "AllowSsh":{ - "shape":"Boolean", - "documentation":"

The user is allowed to use SSH to communicate with the instance.

" - }, - "AllowSudo":{ - "shape":"Boolean", - "documentation":"

The user is allowed to use sudo to elevate privileges.

" - }, - "Level":{ - "shape":"String", - "documentation":"

The user's permission level, which must be set to one of the following strings. You cannot set your own permissions level.

For more information on the permissions associated with these levels, see Managing User Permissions

" - } - } - }, - "SetTimeBasedAutoScalingRequest":{ - "type":"structure", - "required":["InstanceId"], - "members":{ - "InstanceId":{ - "shape":"String", - "documentation":"

The instance ID.

" - }, - "AutoScalingSchedule":{ - "shape":"WeeklyAutoScalingSchedule", - "documentation":"

An AutoScalingSchedule with the instance schedule.

" - } - } - }, - "ShutdownEventConfiguration":{ - "type":"structure", - "members":{ - "ExecutionTimeout":{ - "shape":"Integer", - "documentation":"

The time, in seconds, that AWS OpsWorks will wait after triggering a Shutdown event before shutting down an instance.

" - }, - "DelayUntilElbConnectionsDrained":{ - "shape":"Boolean", - "documentation":"

Whether to enable Elastic Load Balancing connection draining. For more information, see Connection Draining

" - } - }, - "documentation":"

The Shutdown event configuration.

" - }, - "Source":{ - "type":"structure", - "members":{ - "Type":{ - "shape":"SourceType", - "documentation":"

The repository type.

" - }, - "Url":{ - "shape":"String", - "documentation":"

The source URL.

" - }, - "Username":{ - "shape":"String", - "documentation":"

This parameter depends on the repository type.

" - }, - "Password":{ - "shape":"String", - "documentation":"

This parameter depends on the repository type.

For more information on how to safely handle IAM credentials, see .

" - }, - "SshKey":{ - "shape":"String", - "documentation":"

The repository's SSH key.

" - }, - "Revision":{ - "shape":"String", - "documentation":"

The application's version. AWS OpsWorks enables you to easily deploy new versions of an application. One of the simplest approaches is to have branches or revisions in your repository that represent different versions that can potentially be deployed.

" - } - }, - "documentation":"

Contains the information required to retrieve an app or cookbook from a repository. For more information, see Creating Apps or Custom Recipes and Cookbooks.

" - }, - "SourceType":{ - "type":"string", - "enum":[ - "git", - "svn", - "archive", - "s3" - ] - }, - "SslConfiguration":{ - "type":"structure", - "required":[ - "Certificate", - "PrivateKey" - ], - "members":{ - "Certificate":{ - "shape":"String", - "documentation":"

The contents of the certificate's domain.crt file.

" - }, - "PrivateKey":{ - "shape":"String", - "documentation":"

The private key; the contents of the certificate's domain.kex file.

" - }, - "Chain":{ - "shape":"String", - "documentation":"

Optional. Can be used to specify an intermediate certificate authority key or client authentication.

" - } - }, - "documentation":"

Describes an app's SSL configuration.

" - }, - "Stack":{ - "type":"structure", - "members":{ - "StackId":{ - "shape":"String", - "documentation":"

The stack ID.

" - }, - "Name":{ - "shape":"String", - "documentation":"

The stack name.

" - }, - "Arn":{ - "shape":"String", - "documentation":"

The stack's ARN.

" - }, - "Region":{ - "shape":"String", - "documentation":"

The stack AWS region, such as \"us-east-1\". For more information about AWS regions, see Regions and Endpoints.

" - }, - "VpcId":{ - "shape":"String", - "documentation":"

The VPC ID, if the stack is running in a VPC.

" - }, - "Attributes":{ - "shape":"StackAttributes", - "documentation":"

The stack's attributes.

" - }, - "ServiceRoleArn":{ - "shape":"String", - "documentation":"

The stack AWS Identity and Access Management (IAM) role.

" - }, - "DefaultInstanceProfileArn":{ - "shape":"String", - "documentation":"

The ARN of an IAM profile that is the default profile for all of the stack's EC2 instances. For more information about IAM ARNs, see Using Identifiers.

" - }, - "DefaultOs":{ - "shape":"String", - "documentation":"

The stack's default operating system.

" - }, - "HostnameTheme":{ - "shape":"String", - "documentation":"

The stack host name theme, with spaces replaced by underscores.

" - }, - "DefaultAvailabilityZone":{ - "shape":"String", - "documentation":"

The stack's default Availability Zone. For more information, see Regions and Endpoints.

" - }, - "DefaultSubnetId":{ - "shape":"String", - "documentation":"

The default subnet ID, if the stack is running in a VPC.

" - }, - "CustomJson":{ - "shape":"String", - "documentation":"

A string that contains user-defined, custom JSON. It is used to override the corresponding default stack configuration JSON values. The string should be in the following format and must escape characters such as '\"'.:

\"{\\\"key1\\\": \\\"value1\\\", \\\"key2\\\": \\\"value2\\\",...}\"

For more information on custom JSON, see Use Custom JSON to Modify the Stack Configuration JSON.

" - }, - "ConfigurationManager":{ - "shape":"StackConfigurationManager", - "documentation":"

The configuration manager.

" - }, - "ChefConfiguration":{ - "shape":"ChefConfiguration", - "documentation":"

A ChefConfiguration object that specifies whether to enable Berkshelf and the Berkshelf version. For more information, see Create a New Stack.

" - }, - "UseCustomCookbooks":{ - "shape":"Boolean", - "documentation":"

Whether the stack uses custom cookbooks.

" - }, - "UseOpsworksSecurityGroups":{ - "shape":"Boolean", - "documentation":"

Whether the stack automatically associates the AWS OpsWorks built-in security groups with the stack's layers.

" - }, - "CustomCookbooksSource":{"shape":"Source"}, - "DefaultSshKeyName":{ - "shape":"String", - "documentation":"

A default SSH key for the stack's instances. You can override this value when you create or update an instance.

" - }, - "CreatedAt":{ - "shape":"DateTime", - "documentation":"

Date when the stack was created.

" - }, - "DefaultRootDeviceType":{ - "shape":"RootDeviceType", - "documentation":"

The default root device type. This value is used by default for all instances in the stack, but you can override it when you create an instance. For more information, see Storage for the Root Device.

" - } - }, - "documentation":"

Describes a stack.

" - }, - "StackAttributes":{ - "type":"map", - "key":{"shape":"StackAttributesKeys"}, - "value":{"shape":"String"} - }, - "StackAttributesKeys":{ - "type":"string", - "enum":["Color"] - }, - "StackConfigurationManager":{ - "type":"structure", - "members":{ - "Name":{ - "shape":"String", - "documentation":"

The name. This parameter must be set to \"Chef\".

" - }, - "Version":{ - "shape":"String", - "documentation":"

The Chef version. This parameter must be set to 0.9, 11.4, or 11.10. The default value is 11.4.

" - } - }, - "documentation":"

Describes the configuration manager.

" - }, - "StackSummary":{ - "type":"structure", - "members":{ - "StackId":{ - "shape":"String", - "documentation":"

The stack ID.

" - }, - "Name":{ - "shape":"String", - "documentation":"

The stack name.

" - }, - "Arn":{ - "shape":"String", - "documentation":"

The stack's ARN.

" - }, - "LayersCount":{ - "shape":"Integer", - "documentation":"

The number of layers.

" - }, - "AppsCount":{ - "shape":"Integer", - "documentation":"

The number of apps.

" - }, - "InstancesCount":{ - "shape":"InstancesCount", - "documentation":"

An InstancesCount object with the number of instances in each status.

" - } - }, - "documentation":"

Summarizes the number of layers, instances, and apps in a stack.

" - }, - "Stacks":{ - "type":"list", - "member":{"shape":"Stack"} - }, - "StartInstanceRequest":{ - "type":"structure", - "required":["InstanceId"], - "members":{ - "InstanceId":{ - "shape":"String", - "documentation":"

The instance ID.

" - } - } - }, - "StartStackRequest":{ - "type":"structure", - "required":["StackId"], - "members":{ - "StackId":{ - "shape":"String", - "documentation":"

The stack ID.

" - } - } - }, - "StopInstanceRequest":{ - "type":"structure", - "required":["InstanceId"], - "members":{ - "InstanceId":{ - "shape":"String", - "documentation":"

The instance ID.

" - } - } - }, - "StopStackRequest":{ - "type":"structure", - "required":["StackId"], - "members":{ - "StackId":{ - "shape":"String", - "documentation":"

The stack ID.

" - } - } - }, - "String":{"type":"string"}, - "Strings":{ - "type":"list", - "member":{"shape":"String"} - }, - "Switch":{"type":"string"}, - "TimeBasedAutoScalingConfiguration":{ - "type":"structure", - "members":{ - "InstanceId":{ - "shape":"String", - "documentation":"

The instance ID.

" - }, - "AutoScalingSchedule":{ - "shape":"WeeklyAutoScalingSchedule", - "documentation":"

A WeeklyAutoScalingSchedule object with the instance schedule.

" - } - }, - "documentation":"

Describes an instance's time-based auto scaling configuration.

" - }, - "TimeBasedAutoScalingConfigurations":{ - "type":"list", - "member":{"shape":"TimeBasedAutoScalingConfiguration"} - }, - "UnassignInstanceRequest":{ - "type":"structure", - "required":["InstanceId"], - "members":{ - "InstanceId":{ - "shape":"String", - "documentation":"

The instance ID.

" - } - } - }, - "UnassignVolumeRequest":{ - "type":"structure", - "required":["VolumeId"], - "members":{ - "VolumeId":{ - "shape":"String", - "documentation":"

The volume ID.

" - } - } - }, - "UpdateAppRequest":{ - "type":"structure", - "required":["AppId"], - "members":{ - "AppId":{ - "shape":"String", - "documentation":"

The app ID.

" - }, - "Name":{ - "shape":"String", - "documentation":"

The app name.

" - }, - "Description":{ - "shape":"String", - "documentation":"

A description of the app.

" - }, - "DataSources":{ - "shape":"DataSources", - "documentation":"

The app's data sources.

" - }, - "Type":{ - "shape":"AppType", - "documentation":"

The app type.

" - }, - "AppSource":{ - "shape":"Source", - "documentation":"

A Source object that specifies the app repository.

" - }, - "Domains":{ - "shape":"Strings", - "documentation":"

The app's virtual host settings, with multiple domains separated by commas. For example: 'www.example.com, example.com'

" - }, - "EnableSsl":{ - "shape":"Boolean", - "documentation":"

Whether SSL is enabled for the app.

" - }, - "SslConfiguration":{ - "shape":"SslConfiguration", - "documentation":"

An SslConfiguration object with the SSL configuration.

" - }, - "Attributes":{ - "shape":"AppAttributes", - "documentation":"

One or more user-defined key/value pairs to be added to the stack attributes.

" - }, - "Environment":{ - "shape":"EnvironmentVariables", - "documentation":"

An array of EnvironmentVariable objects that specify environment variables to be associated with the app. You can specify up to ten environment variables. After you deploy the app, these variables are defined on the associated app server instances.

This parameter is supported only by Chef 11.10 stacks. If you have specified one or more environment variables, you cannot modify the stack's Chef version." - } - } - }, - "UpdateElasticIpRequest":{ - "type":"structure", - "required":["ElasticIp"], - "members":{ - "ElasticIp":{ - "shape":"String", - "documentation":"

The address.

" - }, - "Name":{ - "shape":"String", - "documentation":"

The new name.

" - } - } - }, - "UpdateInstanceRequest":{ - "type":"structure", - "required":["InstanceId"], - "members":{ - "InstanceId":{ - "shape":"String", - "documentation":"

The instance ID.

" - }, - "LayerIds":{ - "shape":"Strings", - "documentation":"

The instance's layer IDs.

" - }, - "InstanceType":{ - "shape":"String", - "documentation":"

The instance type. AWS OpsWorks supports all instance types except Cluster Compute, Cluster GPU, and High Memory Cluster. For more information, see Instance Families and Types. The parameter values that you use to specify the various types are in the API Name column of the Available Instance Types table.

" - }, - "AutoScalingType":{ - "shape":"AutoScalingType", - "documentation":"

For load-based or time-based instances, the type.

" - }, - "Hostname":{ - "shape":"String", - "documentation":"

The instance host name.

" - }, - "Os":{ - "shape":"String", - "documentation":"

The instance's operating system, which must be set to one of the following.

The default option is the current Amazon Linux version, such as Amazon Linux 2014.09. If you set this parameter to Custom, you must use the CreateInstance action's AmiId parameter to specify the custom AMI that you want to use. For more information on the standard operating systems, see Operating SystemsFor more information on how to use custom AMIs with OpsWorks, see Using Custom AMIs.

" - }, - "AmiId":{ - "shape":"String", - "documentation":"

A custom AMI ID to be used to create the instance. The AMI should be based on one of the standard AWS OpsWorks AMIs: Amazon Linux, Ubuntu 12.04 LTS, or Ubuntu 14.04 LTS. For more information, see Instances

If you specify a custom AMI, you must set Os to Custom." - }, - "SshKeyName":{ - "shape":"String", - "documentation":"

The instance SSH key name.

" - }, - "Architecture":{ - "shape":"Architecture", - "documentation":"

The instance architecture. Instance types do not necessarily support both architectures. For a list of the architectures that are supported by the different instance types, see Instance Families and Types.

" - }, - "InstallUpdatesOnBoot":{ - "shape":"Boolean", - "documentation":"

Whether to install operating system and package updates when the instance boots. The default value is true. To control when updates are installed, set this value to false. You must then update your instances manually by using CreateDeployment to run the update_dependencies stack command or manually running yum (Amazon Linux) or apt-get (Ubuntu) on the instances.

We strongly recommend using the default value of true, to ensure that your instances have the latest security updates.

" - }, - "EbsOptimized":{ - "shape":"Boolean", - "documentation":"

Whether this is an Amazon EBS-optimized instance.

" - } - } - }, - "UpdateLayerRequest":{ - "type":"structure", - "required":["LayerId"], - "members":{ - "LayerId":{ - "shape":"String", - "documentation":"

The layer ID.

" - }, - "Name":{ - "shape":"String", - "documentation":"

The layer name, which is used by the console.

" - }, - "Shortname":{ - "shape":"String", - "documentation":"

The layer short name, which is used internally by AWS OpsWorksand by Chef. The short name is also used as the name for the directory where your app files are installed. It can have a maximum of 200 characters and must be in the following format: /\\A[a-z0-9\\-\\_\\.]+\\Z/.

" - }, - "Attributes":{ - "shape":"LayerAttributes", - "documentation":"

One or more user-defined key/value pairs to be added to the stack attributes.

" - }, - "CustomInstanceProfileArn":{ - "shape":"String", - "documentation":"

The ARN of an IAM profile to be used for all of the layer's EC2 instances. For more information about IAM ARNs, see Using Identifiers.

" - }, - "CustomSecurityGroupIds":{ - "shape":"Strings", - "documentation":"

An array containing the layer's custom security group IDs.

" - }, - "Packages":{ - "shape":"Strings", - "documentation":"

An array of Package objects that describe the layer's packages.

" - }, - "VolumeConfigurations":{ - "shape":"VolumeConfigurations", - "documentation":"

A VolumeConfigurations object that describes the layer's Amazon EBS volumes.

" - }, - "EnableAutoHealing":{ - "shape":"Boolean", - "documentation":"

Whether to disable auto healing for the layer.

" - }, - "AutoAssignElasticIps":{ - "shape":"Boolean", - "documentation":"

Whether to automatically assign an Elastic IP address to the layer's instances. For more information, see How to Edit a Layer.

" - }, - "AutoAssignPublicIps":{ - "shape":"Boolean", - "documentation":"

For stacks that are running in a VPC, whether to automatically assign a public IP address to the layer's instances. For more information, see How to Edit a Layer.

" - }, - "CustomRecipes":{ - "shape":"Recipes", - "documentation":"

A LayerCustomRecipes object that specifies the layer's custom recipes.

" - }, - "InstallUpdatesOnBoot":{ - "shape":"Boolean", - "documentation":"

Whether to install operating system and package updates when the instance boots. The default value is true. To control when updates are installed, set this value to false. You must then update your instances manually by using CreateDeployment to run the update_dependencies stack command or manually running yum (Amazon Linux) or apt-get (Ubuntu) on the instances.

We strongly recommend using the default value of true, to ensure that your instances have the latest security updates.

" - }, - "UseEbsOptimizedInstances":{ - "shape":"Boolean", - "documentation":"

Whether to use Amazon EBS-optimized instances.

" - }, - "LifecycleEventConfiguration":{ - "shape":"LifecycleEventConfiguration", - "documentation":"

" - } - } - }, - "UpdateMyUserProfileRequest":{ - "type":"structure", - "members":{ - "SshPublicKey":{ - "shape":"String", - "documentation":"

The user's SSH public key.

" - } - } - }, - "UpdateRdsDbInstanceRequest":{ - "type":"structure", - "required":["RdsDbInstanceArn"], - "members":{ - "RdsDbInstanceArn":{ - "shape":"String", - "documentation":"

The Amazon RDS instance's ARN.

" - }, - "DbUser":{ - "shape":"String", - "documentation":"

The master user name.

" - }, - "DbPassword":{ - "shape":"String", - "documentation":"

The database password.

" - } - } - }, - "UpdateStackRequest":{ - "type":"structure", - "required":["StackId"], - "members":{ - "StackId":{ - "shape":"String", - "documentation":"

The stack ID.

" - }, - "Name":{ - "shape":"String", - "documentation":"

The stack's new name.

" - }, - "Attributes":{ - "shape":"StackAttributes", - "documentation":"

One or more user-defined key/value pairs to be added to the stack attributes.

" - }, - "ServiceRoleArn":{ - "shape":"String", - "documentation":"

The stack AWS Identity and Access Management (IAM) role, which allows AWS OpsWorks to work with AWS resources on your behalf. You must set this parameter to the Amazon Resource Name (ARN) for an existing IAM role. For more information about IAM ARNs, see Using Identifiers.

You must set this parameter to a valid service role ARN or the action will fail; there is no default value. You can specify the stack's current service role ARN, if you prefer, but you must do so explicitly.

" - }, - "DefaultInstanceProfileArn":{ - "shape":"String", - "documentation":"

The ARN of an IAM profile that is the default profile for all of the stack's EC2 instances. For more information about IAM ARNs, see Using Identifiers.

" - }, - "DefaultOs":{ - "shape":"String", - "documentation":"

The stack's operating system, which must be set to one of the following.

The default option is the current Amazon Linux version.

" - }, - "HostnameTheme":{ - "shape":"String", - "documentation":"

The stack's new host name theme, with spaces are replaced by underscores. The theme is used to generate host names for the stack's instances. By default, HostnameTheme is set to Layer_Dependent, which creates host names by appending integers to the layer's short name. The other themes are:

To obtain a generated host name, call GetHostNameSuggestion, which returns a host name based on the current theme.

" - }, - "DefaultAvailabilityZone":{ - "shape":"String", - "documentation":"

The stack's default Availability Zone, which must be in the specified region. For more information, see Regions and Endpoints. If you also specify a value for DefaultSubnetId, the subnet must be in the same zone. For more information, see CreateStack.

" - }, - "DefaultSubnetId":{ - "shape":"String", - "documentation":"

The stack's default VPC subnet ID. This parameter is required if you specify a value for the VpcId parameter. All instances are launched into this subnet unless you specify otherwise when you create the instance. If you also specify a value for DefaultAvailabilityZone, the subnet must be in that zone. For information on default values and when this parameter is required, see the VpcId parameter description.

" - }, - "CustomJson":{ - "shape":"String", - "documentation":"

A string that contains user-defined, custom JSON. It is used to override the corresponding default stack configuration JSON values. The string should be in the following format and must escape characters such as '\"'.:

\"{\\\"key1\\\": \\\"value1\\\", \\\"key2\\\": \\\"value2\\\",...}\"

For more information on custom JSON, see Use Custom JSON to Modify the Stack Configuration JSON.

" - }, - "ConfigurationManager":{ - "shape":"StackConfigurationManager", - "documentation":"

The configuration manager. When you clone a stack we recommend that you use the configuration manager to specify the Chef version, 0.9, 11.4, or 11.10. The default value is currently 11.4.

" - }, - "ChefConfiguration":{ - "shape":"ChefConfiguration", - "documentation":"

A ChefConfiguration object that specifies whether to enable Berkshelf and the Berkshelf version on Chef 11.10 stacks. For more information, see Create a New Stack.

" - }, - "UseCustomCookbooks":{ - "shape":"Boolean", - "documentation":"

Whether the stack uses custom cookbooks.

" - }, - "CustomCookbooksSource":{"shape":"Source"}, - "DefaultSshKeyName":{ - "shape":"String", - "documentation":"

A default SSH key for the stack instances. You can override this value when you create or update an instance.

" - }, - "DefaultRootDeviceType":{ - "shape":"RootDeviceType", - "documentation":"

The default root device type. This value is used by default for all instances in the stack, but you can override it when you create an instance. For more information, see Storage for the Root Device.

" - }, - "UseOpsworksSecurityGroups":{ - "shape":"Boolean", - "documentation":"

Whether to associate the AWS OpsWorks built-in security groups with the stack's layers.

AWS OpsWorks provides a standard set of built-in security groups, one for each layer, which are associated with layers by default. UseOpsworksSecurityGroups allows you to instead provide your own custom security groups. UseOpsworksSecurityGroups has the following settings:

For more information, see Create a New Stack.

" - } - } - }, - "UpdateUserProfileRequest":{ - "type":"structure", - "required":["IamUserArn"], - "members":{ - "IamUserArn":{ - "shape":"String", - "documentation":"

The user IAM ARN.

" - }, - "SshUsername":{ - "shape":"String", - "documentation":"

The user's SSH user name. The allowable characters are [a-z], [A-Z], [0-9], '-', and '_'. If the specified name includes other punctuation marks, AWS OpsWorks removes them. For example, my.name will be changed to myname. If you do not specify an SSH user name, AWS OpsWorks generates one from the IAM user name.

" - }, - "SshPublicKey":{ - "shape":"String", - "documentation":"

The user's new SSH public key.

" - }, - "AllowSelfManagement":{ - "shape":"Boolean", - "documentation":"

Whether users can specify their own SSH public key through the My Settings page. For more information, see Managing User Permissions.

" - } - } - }, - "UpdateVolumeRequest":{ - "type":"structure", - "required":["VolumeId"], - "members":{ - "VolumeId":{ - "shape":"String", - "documentation":"

The volume ID.

" - }, - "Name":{ - "shape":"String", - "documentation":"

The new name.

" - }, - "MountPoint":{ - "shape":"String", - "documentation":"

The new mount point.

" - } - } - }, - "UserProfile":{ - "type":"structure", - "members":{ - "IamUserArn":{ - "shape":"String", - "documentation":"

The user's IAM ARN.

" - }, - "Name":{ - "shape":"String", - "documentation":"

The user's name.

" - }, - "SshUsername":{ - "shape":"String", - "documentation":"

The user's SSH user name.

" - }, - "SshPublicKey":{ - "shape":"String", - "documentation":"

The user's SSH public key.

" - }, - "AllowSelfManagement":{ - "shape":"Boolean", - "documentation":"

Whether users can specify their own SSH public key through the My Settings page. For more information, see Managing User Permissions.

" - } - }, - "documentation":"

Describes a user's SSH information.

" - }, - "UserProfiles":{ - "type":"list", - "member":{"shape":"UserProfile"} - }, - "ValidationException":{ - "type":"structure", - "members":{ - "message":{ - "shape":"String", - "documentation":"

The exception message.

" - } - }, - "exception":true, - "documentation":"

Indicates that a request was invalid.

" - }, - "VirtualizationType":{ - "type":"string", - "enum":[ - "paravirtual", - "hvm" - ] - }, - "Volume":{ - "type":"structure", - "members":{ - "VolumeId":{ - "shape":"String", - "documentation":"

The volume ID.

" - }, - "Ec2VolumeId":{ - "shape":"String", - "documentation":"

The Amazon EC2 volume ID.

" - }, - "Name":{ - "shape":"String", - "documentation":"

The volume name.

" - }, - "RaidArrayId":{ - "shape":"String", - "documentation":"

The RAID array ID.

" - }, - "InstanceId":{ - "shape":"String", - "documentation":"

The instance ID.

" - }, - "Status":{ - "shape":"String", - "documentation":"

The value returned by DescribeVolumes.

" - }, - "Size":{ - "shape":"Integer", - "documentation":"

The volume size.

" - }, - "Device":{ - "shape":"String", - "documentation":"

The device name.

" - }, - "MountPoint":{ - "shape":"String", - "documentation":"

The volume mount point. For example \"/dev/sdh\".

" - }, - "Region":{ - "shape":"String", - "documentation":"

The AWS region. For more information about AWS regions, see Regions and Endpoints.

" - }, - "AvailabilityZone":{ - "shape":"String", - "documentation":"

The volume Availability Zone. For more information, see Regions and Endpoints.

" - }, - "VolumeType":{ - "shape":"String", - "documentation":"

The volume type, standard or PIOPS.

" - }, - "Iops":{ - "shape":"Integer", - "documentation":"

For PIOPS volumes, the IOPS per disk.

" - } - }, - "documentation":"

Describes an instance's Amazon EBS volume.

" - }, - "VolumeConfiguration":{ - "type":"structure", - "required":[ - "MountPoint", - "NumberOfDisks", - "Size" - ], - "members":{ - "MountPoint":{ - "shape":"String", - "documentation":"

The volume mount point. For example \"/dev/sdh\".

" - }, - "RaidLevel":{ - "shape":"Integer", - "documentation":"

The volume RAID level.

" - }, - "NumberOfDisks":{ - "shape":"Integer", - "documentation":"

The number of disks in the volume.

" - }, - "Size":{ - "shape":"Integer", - "documentation":"

The volume size.

" - }, - "VolumeType":{ - "shape":"String", - "documentation":"

The volume type:

" - }, - "Iops":{ - "shape":"Integer", - "documentation":"

For PIOPS volumes, the IOPS per disk.

" - } - }, - "documentation":"

Describes an Amazon EBS volume configuration.

" - }, - "VolumeConfigurations":{ - "type":"list", - "member":{"shape":"VolumeConfiguration"} - }, - "Volumes":{ - "type":"list", - "member":{"shape":"Volume"} - }, - "WeeklyAutoScalingSchedule":{ - "type":"structure", - "members":{ - "Monday":{ - "shape":"DailyAutoScalingSchedule", - "documentation":"

The schedule for Monday.

" - }, - "Tuesday":{ - "shape":"DailyAutoScalingSchedule", - "documentation":"

The schedule for Tuesday.

" - }, - "Wednesday":{ - "shape":"DailyAutoScalingSchedule", - "documentation":"

The schedule for Wednesday.

" - }, - "Thursday":{ - "shape":"DailyAutoScalingSchedule", - "documentation":"

The schedule for Thursday.

" - }, - "Friday":{ - "shape":"DailyAutoScalingSchedule", - "documentation":"

The schedule for Friday.

" - }, - "Saturday":{ - "shape":"DailyAutoScalingSchedule", - "documentation":"

The schedule for Saturday.

" - }, - "Sunday":{ - "shape":"DailyAutoScalingSchedule", - "documentation":"

The schedule for Sunday.

" - } - }, - "documentation":"

Describes a time-based instance's auto scaling schedule. The schedule consists of a set of key-value pairs.

The default setting for all time periods is off, so you use the following parameters primarily to specify the online periods. You don't have to explicitly specify offline periods unless you want to change an online period to an offline period.

The following example specifies that the instance should be online for four hours, from UTC 1200 - 1600. It will be off for the remainder of the day.

{ \"12\":\"on\", \"13\":\"on\", \"14\":\"on\", \"15\":\"on\" }

" - } - } -} diff --git a/src/github.com/getlantern/aws-sdk-go/apis/rds/2014-09-01.normal.json b/src/github.com/getlantern/aws-sdk-go/apis/rds/2014-09-01.normal.json deleted file mode 100644 index 9b619908b8..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/apis/rds/2014-09-01.normal.json +++ /dev/null @@ -1,6942 +0,0 @@ -{ - "metadata":{ - "apiVersion":"2014-09-01", - "endpointPrefix":"rds", - "serviceAbbreviation":"Amazon RDS", - "serviceFullName":"Amazon Relational Database Service", - "signatureVersion":"v4", - "xmlNamespace":"http://rds.amazonaws.com/doc/2014-09-01/", - "protocol":"query" - }, - "documentation":"Amazon Relational Database Service

Amazon Relational Database Service (Amazon RDS) is a web service that makes it easier to set up, operate, and scale a relational database in the cloud. It provides cost-efficient, resizable capacity for an industry-standard relational database and manages common database administration tasks, freeing up developers to focus on what makes their applications and businesses unique.

Amazon RDS gives you access to the capabilities of a MySQL, PostgreSQL, Microsoft SQL Server, or Oracle database server. This means the code, applications, and tools you already use today with your existing databases work with Amazon RDS without modification. Amazon RDS automatically backs up your database and maintains the database software that powers your DB instance. Amazon RDS is flexible: you can scale your database instance's compute resources and storage capacity to meet your application's demand. As with all Amazon Web Services, there are no up-front investments, and you pay only for the resources you use.

This is an interface reference for Amazon RDS. It contains documentation for a programming or command line interface you can use to manage Amazon RDS. Note that Amazon RDS is asynchronous, which means that some interfaces may require techniques such as polling or callback functions to determine when a command has been applied. In this reference, the parameter descriptions indicate whether a command is applied immediately, on the next instance reboot, or during the maintenance window. For a summary of the Amazon RDS interfaces, go to Available RDS Interfaces.

", - "operations":{ - "AddSourceIdentifierToSubscription":{ - "name":"AddSourceIdentifierToSubscription", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"AddSourceIdentifierToSubscriptionMessage", - "documentation":"

" - }, - "output":{ - "shape":"AddSourceIdentifierToSubscriptionResult", - "wrapper":true, - "documentation":"

Contains the results of a successful invocation of the DescribeEventSubscriptions action.

", - "resultWrapper":"AddSourceIdentifierToSubscriptionResult" - }, - "errors":[ - { - "shape":"SubscriptionNotFoundFault", - "error":{ - "code":"SubscriptionNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The subscription name does not exist.

" - }, - { - "shape":"SourceNotFoundFault", - "error":{ - "code":"SourceNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The requested source could not be found.

" - } - ], - "documentation":"

Adds a source identifier to an existing RDS event notification subscription.

" - }, - "AddTagsToResource":{ - "name":"AddTagsToResource", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"AddTagsToResourceMessage", - "documentation":"

" - }, - "errors":[ - { - "shape":"DBInstanceNotFoundFault", - "error":{ - "code":"DBInstanceNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

DBInstanceIdentifier does not refer to an existing DB instance.

" - }, - { - "shape":"DBSnapshotNotFoundFault", - "error":{ - "code":"DBSnapshotNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

DBSnapshotIdentifier does not refer to an existing DB snapshot.

" - } - ], - "documentation":"

Adds metadata tags to an Amazon RDS resource. These tags can also be used with cost allocation reporting to track cost associated with Amazon RDS resources, or used in Condition statement in IAM policy for Amazon RDS.

For an overview on tagging Amazon RDS resources, see Tagging Amazon RDS Resources.

" - }, - "AuthorizeDBSecurityGroupIngress":{ - "name":"AuthorizeDBSecurityGroupIngress", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"AuthorizeDBSecurityGroupIngressMessage", - "documentation":"

" - }, - "output":{ - "shape":"AuthorizeDBSecurityGroupIngressResult", - "wrapper":true, - "documentation":"

Contains the result of a successful invocation of the following actions:

This data type is used as a response element in the DescribeDBSecurityGroups action.

", - "resultWrapper":"AuthorizeDBSecurityGroupIngressResult" - }, - "errors":[ - { - "shape":"DBSecurityGroupNotFoundFault", - "error":{ - "code":"DBSecurityGroupNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

DBSecurityGroupName does not refer to an existing DB security group.

" - }, - { - "shape":"InvalidDBSecurityGroupStateFault", - "error":{ - "code":"InvalidDBSecurityGroupState", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The state of the DB security group does not allow deletion.

" - }, - { - "shape":"AuthorizationAlreadyExistsFault", - "error":{ - "code":"AuthorizationAlreadyExists", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified CIDRIP or EC2 security group is already authorized for the specified DB security group.

" - }, - { - "shape":"AuthorizationQuotaExceededFault", - "error":{ - "code":"AuthorizationQuotaExceeded", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

DB security group authorization quota has been reached.

" - } - ], - "documentation":"

Enables ingress to a DBSecurityGroup using one of two forms of authorization. First, EC2 or VPC security groups can be added to the DBSecurityGroup if the application using the database is running on EC2 or VPC instances. Second, IP ranges are available if the application accessing your database is running on the Internet. Required parameters for this API are one of CIDR range, EC2SecurityGroupId for VPC, or (EC2SecurityGroupOwnerId and either EC2SecurityGroupName or EC2SecurityGroupId for non-VPC).

For an overview of CIDR ranges, go to the Wikipedia Tutorial.

" - }, - "CopyDBParameterGroup":{ - "name":"CopyDBParameterGroup", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"CopyDBParameterGroupMessage", - "documentation":"

" - }, - "output":{ - "shape":"CopyDBParameterGroupResult", - "wrapper":true, - "documentation":"

Contains the result of a successful invocation of the CreateDBParameterGroup action.

This data type is used as a request parameter in the DeleteDBParameterGroup action, and as a response element in the DescribeDBParameterGroups action.

", - "resultWrapper":"CopyDBParameterGroupResult" - }, - "errors":[ - { - "shape":"DBParameterGroupNotFoundFault", - "error":{ - "code":"DBParameterGroupNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

DBParameterGroupName does not refer to an existing DB parameter group.

" - }, - { - "shape":"DBParameterGroupAlreadyExistsFault", - "error":{ - "code":"DBParameterGroupAlreadyExists", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

A DB parameter group with the same name exists.

" - }, - { - "shape":"DBParameterGroupQuotaExceededFault", - "error":{ - "code":"DBParameterGroupQuotaExceeded", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Request would result in user exceeding the allowed number of DB parameter groups.

" - } - ], - "documentation":"

Copies the specified DBParameterGroup.

" - }, - "CopyDBSnapshot":{ - "name":"CopyDBSnapshot", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"CopyDBSnapshotMessage", - "documentation":"

" - }, - "output":{ - "shape":"CopyDBSnapshotResult", - "wrapper":true, - "documentation":"

Contains the result of a successful invocation of the following actions:

This data type is used as a response element in the DescribeDBSnapshots action.

", - "resultWrapper":"CopyDBSnapshotResult" - }, - "errors":[ - { - "shape":"DBSnapshotAlreadyExistsFault", - "error":{ - "code":"DBSnapshotAlreadyExists", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

DBSnapshotIdentifier is already used by an existing snapshot.

" - }, - { - "shape":"DBSnapshotNotFoundFault", - "error":{ - "code":"DBSnapshotNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

DBSnapshotIdentifier does not refer to an existing DB snapshot.

" - }, - { - "shape":"InvalidDBSnapshotStateFault", - "error":{ - "code":"InvalidDBSnapshotState", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The state of the DB snapshot does not allow deletion.

" - }, - { - "shape":"SnapshotQuotaExceededFault", - "error":{ - "code":"SnapshotQuotaExceeded", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Request would result in user exceeding the allowed number of DB snapshots.

" - } - ], - "documentation":"

Copies the specified DBSnapshot. The source DBSnapshot must be in the \"available\" state.

" - }, - "CopyOptionGroup":{ - "name":"CopyOptionGroup", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"CopyOptionGroupMessage", - "documentation":"

" - }, - "output":{ - "shape":"CopyOptionGroupResult", - "wrapper":true, - "documentation":"

", - "resultWrapper":"CopyOptionGroupResult" - }, - "errors":[ - { - "shape":"OptionGroupAlreadyExistsFault", - "error":{ - "code":"OptionGroupAlreadyExistsFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The option group you are trying to create already exists.

" - }, - { - "shape":"OptionGroupNotFoundFault", - "error":{ - "code":"OptionGroupNotFoundFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified option group could not be found.

" - }, - { - "shape":"OptionGroupQuotaExceededFault", - "error":{ - "code":"OptionGroupQuotaExceededFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The quota of 20 option groups was exceeded for this AWS account.

" - } - ], - "documentation":"

Copies the specified Option Group.

" - }, - "CreateDBInstance":{ - "name":"CreateDBInstance", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"CreateDBInstanceMessage", - "documentation":"

" - }, - "output":{ - "shape":"CreateDBInstanceResult", - "wrapper":true, - "documentation":"

Contains the result of a successful invocation of the following actions:

This data type is used as a response element in the DescribeDBInstances action.

", - "resultWrapper":"CreateDBInstanceResult" - }, - "errors":[ - { - "shape":"DBInstanceAlreadyExistsFault", - "error":{ - "code":"DBInstanceAlreadyExists", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

User already has a DB instance with the given identifier.

" - }, - { - "shape":"InsufficientDBInstanceCapacityFault", - "error":{ - "code":"InsufficientDBInstanceCapacity", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Specified DB instance class is not available in the specified Availability Zone.

" - }, - { - "shape":"DBParameterGroupNotFoundFault", - "error":{ - "code":"DBParameterGroupNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

DBParameterGroupName does not refer to an existing DB parameter group.

" - }, - { - "shape":"DBSecurityGroupNotFoundFault", - "error":{ - "code":"DBSecurityGroupNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

DBSecurityGroupName does not refer to an existing DB security group.

" - }, - { - "shape":"InstanceQuotaExceededFault", - "error":{ - "code":"InstanceQuotaExceeded", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Request would result in user exceeding the allowed number of DB instances.

" - }, - { - "shape":"StorageQuotaExceededFault", - "error":{ - "code":"StorageQuotaExceeded", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Request would result in user exceeding the allowed amount of storage available across all DB instances.

" - }, - { - "shape":"DBSubnetGroupNotFoundFault", - "error":{ - "code":"DBSubnetGroupNotFoundFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

DBSubnetGroupName does not refer to an existing DB subnet group.

" - }, - { - "shape":"DBSubnetGroupDoesNotCoverEnoughAZs", - "error":{ - "code":"DBSubnetGroupDoesNotCoverEnoughAZs", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Subnets in the DB subnet group should cover at least two Availability Zones unless there is only one Availability Zone.

" - }, - { - "shape":"InvalidSubnet", - "error":{ - "code":"InvalidSubnet", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The requested subnet is invalid, or multiple subnets were requested that are not all in a common VPC.

" - }, - { - "shape":"InvalidVPCNetworkStateFault", - "error":{ - "code":"InvalidVPCNetworkStateFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

DB subnet group does not cover all Availability Zones after it is created because users' change.

" - }, - { - "shape":"ProvisionedIopsNotAvailableInAZFault", - "error":{ - "code":"ProvisionedIopsNotAvailableInAZFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Provisioned IOPS not available in the specified Availability Zone.

" - }, - { - "shape":"OptionGroupNotFoundFault", - "error":{ - "code":"OptionGroupNotFoundFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified option group could not be found.

" - }, - { - "shape":"StorageTypeNotSupportedFault", - "error":{ - "code":"StorageTypeNotSupported", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

StorageType specified cannot be associated with the DB Instance.

" - }, - { - "shape":"AuthorizationNotFoundFault", - "error":{ - "code":"AuthorizationNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

Specified CIDRIP or EC2 security group is not authorized for the specified DB security group.

RDS may not also be authorized via IAM to perform necessary actions on your behalf.

" - } - ], - "documentation":"

Creates a new DB instance.

" - }, - "CreateDBInstanceReadReplica":{ - "name":"CreateDBInstanceReadReplica", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CreateDBInstanceReadReplicaMessage"}, - "output":{ - "shape":"CreateDBInstanceReadReplicaResult", - "wrapper":true, - "documentation":"

Contains the result of a successful invocation of the following actions:

This data type is used as a response element in the DescribeDBInstances action.

", - "resultWrapper":"CreateDBInstanceReadReplicaResult" - }, - "errors":[ - { - "shape":"DBInstanceAlreadyExistsFault", - "error":{ - "code":"DBInstanceAlreadyExists", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

User already has a DB instance with the given identifier.

" - }, - { - "shape":"InsufficientDBInstanceCapacityFault", - "error":{ - "code":"InsufficientDBInstanceCapacity", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Specified DB instance class is not available in the specified Availability Zone.

" - }, - { - "shape":"DBParameterGroupNotFoundFault", - "error":{ - "code":"DBParameterGroupNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

DBParameterGroupName does not refer to an existing DB parameter group.

" - }, - { - "shape":"DBSecurityGroupNotFoundFault", - "error":{ - "code":"DBSecurityGroupNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

DBSecurityGroupName does not refer to an existing DB security group.

" - }, - { - "shape":"InstanceQuotaExceededFault", - "error":{ - "code":"InstanceQuotaExceeded", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Request would result in user exceeding the allowed number of DB instances.

" - }, - { - "shape":"StorageQuotaExceededFault", - "error":{ - "code":"StorageQuotaExceeded", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Request would result in user exceeding the allowed amount of storage available across all DB instances.

" - }, - { - "shape":"DBInstanceNotFoundFault", - "error":{ - "code":"DBInstanceNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

DBInstanceIdentifier does not refer to an existing DB instance.

" - }, - { - "shape":"InvalidDBInstanceStateFault", - "error":{ - "code":"InvalidDBInstanceState", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified DB instance is not in the available state.

" - }, - { - "shape":"DBSubnetGroupNotFoundFault", - "error":{ - "code":"DBSubnetGroupNotFoundFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

DBSubnetGroupName does not refer to an existing DB subnet group.

" - }, - { - "shape":"DBSubnetGroupDoesNotCoverEnoughAZs", - "error":{ - "code":"DBSubnetGroupDoesNotCoverEnoughAZs", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Subnets in the DB subnet group should cover at least two Availability Zones unless there is only one Availability Zone.

" - }, - { - "shape":"InvalidSubnet", - "error":{ - "code":"InvalidSubnet", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The requested subnet is invalid, or multiple subnets were requested that are not all in a common VPC.

" - }, - { - "shape":"InvalidVPCNetworkStateFault", - "error":{ - "code":"InvalidVPCNetworkStateFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

DB subnet group does not cover all Availability Zones after it is created because users' change.

" - }, - { - "shape":"ProvisionedIopsNotAvailableInAZFault", - "error":{ - "code":"ProvisionedIopsNotAvailableInAZFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Provisioned IOPS not available in the specified Availability Zone.

" - }, - { - "shape":"OptionGroupNotFoundFault", - "error":{ - "code":"OptionGroupNotFoundFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified option group could not be found.

" - }, - { - "shape":"DBSubnetGroupNotAllowedFault", - "error":{ - "code":"DBSubnetGroupNotAllowedFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Indicates that the DBSubnetGroup should not be specified while creating read replicas that lie in the same region as the source instance.

" - }, - { - "shape":"InvalidDBSubnetGroupFault", - "error":{ - "code":"InvalidDBSubnetGroupFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Indicates the DBSubnetGroup does not belong to the same VPC as that of an existing cross region read replica of the same source instance.

" - }, - { - "shape":"StorageTypeNotSupportedFault", - "error":{ - "code":"StorageTypeNotSupported", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

StorageType specified cannot be associated with the DB Instance.

" - } - ], - "documentation":"

Creates a DB instance that acts as a read replica of a source DB instance.

All read replica DB instances are created as Single-AZ deployments with backups disabled. All other DB instance attributes (including DB security groups and DB parameter groups) are inherited from the source DB instance, except as specified below.

The source DB instance must have backup retention enabled.

" - }, - "CreateDBParameterGroup":{ - "name":"CreateDBParameterGroup", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"CreateDBParameterGroupMessage", - "documentation":"

" - }, - "output":{ - "shape":"CreateDBParameterGroupResult", - "wrapper":true, - "documentation":"

Contains the result of a successful invocation of the CreateDBParameterGroup action.

This data type is used as a request parameter in the DeleteDBParameterGroup action, and as a response element in the DescribeDBParameterGroups action.

", - "resultWrapper":"CreateDBParameterGroupResult" - }, - "errors":[ - { - "shape":"DBParameterGroupQuotaExceededFault", - "error":{ - "code":"DBParameterGroupQuotaExceeded", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Request would result in user exceeding the allowed number of DB parameter groups.

" - }, - { - "shape":"DBParameterGroupAlreadyExistsFault", - "error":{ - "code":"DBParameterGroupAlreadyExists", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

A DB parameter group with the same name exists.

" - } - ], - "documentation":"

Creates a new DB parameter group.

A DB parameter group is initially created with the default parameters for the database engine used by the DB instance. To provide custom values for any of the parameters, you must modify the group after creating it using ModifyDBParameterGroup. Once you've created a DB parameter group, you need to associate it with your DB instance using ModifyDBInstance. When you associate a new DB parameter group with a running DB instance, you need to reboot the DB instance without failover for the new DB parameter group and associated settings to take effect.

After you create a DB parameter group, you should wait at least 5 minutes before creating your first DB instance that uses that DB parameter group as the default parameter group. This allows Amazon RDS to fully complete the create action before the parameter group is used as the default for a new DB instance. This is especially important for parameters that are critical when creating the default database for a DB instance, such as the character set for the default database defined by the character_set_database parameter. You can use the Parameter Groups option of the Amazon RDS console or the DescribeDBParameters command to verify that your DB parameter group has been created or modified.

" - }, - "CreateDBSecurityGroup":{ - "name":"CreateDBSecurityGroup", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"CreateDBSecurityGroupMessage", - "documentation":"

" - }, - "output":{ - "shape":"CreateDBSecurityGroupResult", - "wrapper":true, - "documentation":"

Contains the result of a successful invocation of the following actions:

This data type is used as a response element in the DescribeDBSecurityGroups action.

", - "resultWrapper":"CreateDBSecurityGroupResult" - }, - "errors":[ - { - "shape":"DBSecurityGroupAlreadyExistsFault", - "error":{ - "code":"DBSecurityGroupAlreadyExists", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

A DB security group with the name specified in DBSecurityGroupName already exists.

" - }, - { - "shape":"DBSecurityGroupQuotaExceededFault", - "error":{ - "code":"QuotaExceeded.DBSecurityGroup", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Request would result in user exceeding the allowed number of DB security groups.

" - }, - { - "shape":"DBSecurityGroupNotSupportedFault", - "error":{ - "code":"DBSecurityGroupNotSupported", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

A DB security group is not allowed for this action.

" - } - ], - "documentation":"

Creates a new DB security group. DB security groups control access to a DB instance.

" - }, - "CreateDBSnapshot":{ - "name":"CreateDBSnapshot", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"CreateDBSnapshotMessage", - "documentation":"

" - }, - "output":{ - "shape":"CreateDBSnapshotResult", - "wrapper":true, - "documentation":"

Contains the result of a successful invocation of the following actions:

This data type is used as a response element in the DescribeDBSnapshots action.

", - "resultWrapper":"CreateDBSnapshotResult" - }, - "errors":[ - { - "shape":"DBSnapshotAlreadyExistsFault", - "error":{ - "code":"DBSnapshotAlreadyExists", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

DBSnapshotIdentifier is already used by an existing snapshot.

" - }, - { - "shape":"InvalidDBInstanceStateFault", - "error":{ - "code":"InvalidDBInstanceState", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified DB instance is not in the available state.

" - }, - { - "shape":"DBInstanceNotFoundFault", - "error":{ - "code":"DBInstanceNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

DBInstanceIdentifier does not refer to an existing DB instance.

" - }, - { - "shape":"SnapshotQuotaExceededFault", - "error":{ - "code":"SnapshotQuotaExceeded", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Request would result in user exceeding the allowed number of DB snapshots.

" - } - ], - "documentation":"

Creates a DBSnapshot. The source DBInstance must be in \"available\" state.

" - }, - "CreateDBSubnetGroup":{ - "name":"CreateDBSubnetGroup", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"CreateDBSubnetGroupMessage", - "documentation":"

" - }, - "output":{ - "shape":"CreateDBSubnetGroupResult", - "wrapper":true, - "documentation":"

Contains the result of a successful invocation of the following actions:

This data type is used as a response element in the DescribeDBSubnetGroups action.

", - "resultWrapper":"CreateDBSubnetGroupResult" - }, - "errors":[ - { - "shape":"DBSubnetGroupAlreadyExistsFault", - "error":{ - "code":"DBSubnetGroupAlreadyExists", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

DBSubnetGroupName is already used by an existing DB subnet group.

" - }, - { - "shape":"DBSubnetGroupQuotaExceededFault", - "error":{ - "code":"DBSubnetGroupQuotaExceeded", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Request would result in user exceeding the allowed number of DB subnet groups.

" - }, - { - "shape":"DBSubnetQuotaExceededFault", - "error":{ - "code":"DBSubnetQuotaExceededFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Request would result in user exceeding the allowed number of subnets in a DB subnet groups.

" - }, - { - "shape":"DBSubnetGroupDoesNotCoverEnoughAZs", - "error":{ - "code":"DBSubnetGroupDoesNotCoverEnoughAZs", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Subnets in the DB subnet group should cover at least two Availability Zones unless there is only one Availability Zone.

" - }, - { - "shape":"InvalidSubnet", - "error":{ - "code":"InvalidSubnet", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The requested subnet is invalid, or multiple subnets were requested that are not all in a common VPC.

" - } - ], - "documentation":"

Creates a new DB subnet group. DB subnet groups must contain at least one subnet in at least two AZs in the region.

" - }, - "CreateEventSubscription":{ - "name":"CreateEventSubscription", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"CreateEventSubscriptionMessage", - "documentation":"

" - }, - "output":{ - "shape":"CreateEventSubscriptionResult", - "wrapper":true, - "documentation":"

Contains the results of a successful invocation of the DescribeEventSubscriptions action.

", - "resultWrapper":"CreateEventSubscriptionResult" - }, - "errors":[ - { - "shape":"EventSubscriptionQuotaExceededFault", - "error":{ - "code":"EventSubscriptionQuotaExceeded", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

You have reached the maximum number of event subscriptions.

" - }, - { - "shape":"SubscriptionAlreadyExistFault", - "error":{ - "code":"SubscriptionAlreadyExist", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The supplied subscription name already exists.

" - }, - { - "shape":"SNSInvalidTopicFault", - "error":{ - "code":"SNSInvalidTopic", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

SNS has responded that there is a problem with the SND topic specified.

" - }, - { - "shape":"SNSNoAuthorizationFault", - "error":{ - "code":"SNSNoAuthorization", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

You do not have permission to publish to the SNS topic ARN.

" - }, - { - "shape":"SNSTopicArnNotFoundFault", - "error":{ - "code":"SNSTopicArnNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The SNS topic ARN does not exist.

" - }, - { - "shape":"SubscriptionCategoryNotFoundFault", - "error":{ - "code":"SubscriptionCategoryNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The supplied category does not exist.

" - }, - { - "shape":"SourceNotFoundFault", - "error":{ - "code":"SourceNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The requested source could not be found.

" - } - ], - "documentation":"

Creates an RDS event notification subscription. This action requires a topic ARN (Amazon Resource Name) created by either the RDS console, the SNS console, or the SNS API. To obtain an ARN with SNS, you must create a topic in Amazon SNS and subscribe to the topic. The ARN is displayed in the SNS console.

You can specify the type of source (SourceType) you want to be notified of, provide a list of RDS sources (SourceIds) that triggers the events, and provide a list of event categories (EventCategories) for events you want to be notified of. For example, you can specify SourceType = db-instance, SourceIds = mydbinstance1, mydbinstance2 and EventCategories = Availability, Backup.

If you specify both the SourceType and SourceIds, such as SourceType = db-instance and SourceIdentifier = myDBInstance1, you will be notified of all the db-instance events for the specified source. If you specify a SourceType but do not specify a SourceIdentifier, you will receive notice of the events for that source type for all your RDS sources. If you do not specify either the SourceType nor the SourceIdentifier, you will be notified of events generated from all RDS sources belonging to your customer account.

" - }, - "CreateOptionGroup":{ - "name":"CreateOptionGroup", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"CreateOptionGroupMessage", - "documentation":"

" - }, - "output":{ - "shape":"CreateOptionGroupResult", - "wrapper":true, - "documentation":"

", - "resultWrapper":"CreateOptionGroupResult" - }, - "errors":[ - { - "shape":"OptionGroupAlreadyExistsFault", - "error":{ - "code":"OptionGroupAlreadyExistsFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The option group you are trying to create already exists.

" - }, - { - "shape":"OptionGroupQuotaExceededFault", - "error":{ - "code":"OptionGroupQuotaExceededFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The quota of 20 option groups was exceeded for this AWS account.

" - } - ], - "documentation":"

Creates a new option group. You can create up to 20 option groups.

" - }, - "DeleteDBInstance":{ - "name":"DeleteDBInstance", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DeleteDBInstanceMessage", - "documentation":"

" - }, - "output":{ - "shape":"DeleteDBInstanceResult", - "wrapper":true, - "documentation":"

Contains the result of a successful invocation of the following actions:

This data type is used as a response element in the DescribeDBInstances action.

", - "resultWrapper":"DeleteDBInstanceResult" - }, - "errors":[ - { - "shape":"DBInstanceNotFoundFault", - "error":{ - "code":"DBInstanceNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

DBInstanceIdentifier does not refer to an existing DB instance.

" - }, - { - "shape":"InvalidDBInstanceStateFault", - "error":{ - "code":"InvalidDBInstanceState", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified DB instance is not in the available state.

" - }, - { - "shape":"DBSnapshotAlreadyExistsFault", - "error":{ - "code":"DBSnapshotAlreadyExists", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

DBSnapshotIdentifier is already used by an existing snapshot.

" - }, - { - "shape":"SnapshotQuotaExceededFault", - "error":{ - "code":"SnapshotQuotaExceeded", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Request would result in user exceeding the allowed number of DB snapshots.

" - } - ], - "documentation":"

The DeleteDBInstance action deletes a previously provisioned DB instance. A successful response from the web service indicates the request was received correctly. When you delete a DB instance, all automated backups for that instance are deleted and cannot be recovered. Manual DB snapshots of the DB instance to be deleted are not deleted.

If a final DB snapshot is requested the status of the RDS instance will be \"deleting\" until the DB snapshot is created. The API action DescribeDBInstance is used to monitor the status of this operation. The action cannot be canceled or reverted once submitted.

" - }, - "DeleteDBParameterGroup":{ - "name":"DeleteDBParameterGroup", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DeleteDBParameterGroupMessage", - "documentation":"

" - }, - "errors":[ - { - "shape":"InvalidDBParameterGroupStateFault", - "error":{ - "code":"InvalidDBParameterGroupState", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The DB parameter group cannot be deleted because it is in use.

" - }, - { - "shape":"DBParameterGroupNotFoundFault", - "error":{ - "code":"DBParameterGroupNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

DBParameterGroupName does not refer to an existing DB parameter group.

" - } - ], - "documentation":"

Deletes a specified DBParameterGroup. The DBParameterGroup to be deleted cannot be associated with any DB instances.

" - }, - "DeleteDBSecurityGroup":{ - "name":"DeleteDBSecurityGroup", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DeleteDBSecurityGroupMessage", - "documentation":"

" - }, - "errors":[ - { - "shape":"InvalidDBSecurityGroupStateFault", - "error":{ - "code":"InvalidDBSecurityGroupState", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The state of the DB security group does not allow deletion.

" - }, - { - "shape":"DBSecurityGroupNotFoundFault", - "error":{ - "code":"DBSecurityGroupNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

DBSecurityGroupName does not refer to an existing DB security group.

" - } - ], - "documentation":"

Deletes a DB security group.

" - }, - "DeleteDBSnapshot":{ - "name":"DeleteDBSnapshot", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DeleteDBSnapshotMessage", - "documentation":"

" - }, - "output":{ - "shape":"DeleteDBSnapshotResult", - "wrapper":true, - "documentation":"

Contains the result of a successful invocation of the following actions:

This data type is used as a response element in the DescribeDBSnapshots action.

", - "resultWrapper":"DeleteDBSnapshotResult" - }, - "errors":[ - { - "shape":"InvalidDBSnapshotStateFault", - "error":{ - "code":"InvalidDBSnapshotState", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The state of the DB snapshot does not allow deletion.

" - }, - { - "shape":"DBSnapshotNotFoundFault", - "error":{ - "code":"DBSnapshotNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

DBSnapshotIdentifier does not refer to an existing DB snapshot.

" - } - ], - "documentation":"

Deletes a DBSnapshot. If the snapshot is being copied, the copy operation is terminated.

" - }, - "DeleteDBSubnetGroup":{ - "name":"DeleteDBSubnetGroup", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DeleteDBSubnetGroupMessage", - "documentation":"

" - }, - "errors":[ - { - "shape":"InvalidDBSubnetGroupStateFault", - "error":{ - "code":"InvalidDBSubnetGroupStateFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The DB subnet group cannot be deleted because it is in use.

" - }, - { - "shape":"InvalidDBSubnetStateFault", - "error":{ - "code":"InvalidDBSubnetStateFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The DB subnet is not in the available state.

" - }, - { - "shape":"DBSubnetGroupNotFoundFault", - "error":{ - "code":"DBSubnetGroupNotFoundFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

DBSubnetGroupName does not refer to an existing DB subnet group.

" - } - ], - "documentation":"

Deletes a DB subnet group.

" - }, - "DeleteEventSubscription":{ - "name":"DeleteEventSubscription", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DeleteEventSubscriptionMessage", - "documentation":"

" - }, - "output":{ - "shape":"DeleteEventSubscriptionResult", - "wrapper":true, - "documentation":"

Contains the results of a successful invocation of the DescribeEventSubscriptions action.

", - "resultWrapper":"DeleteEventSubscriptionResult" - }, - "errors":[ - { - "shape":"SubscriptionNotFoundFault", - "error":{ - "code":"SubscriptionNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The subscription name does not exist.

" - }, - { - "shape":"InvalidEventSubscriptionStateFault", - "error":{ - "code":"InvalidEventSubscriptionState", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

This error can occur if someone else is modifying a subscription. You should retry the action.

" - } - ], - "documentation":"

Deletes an RDS event notification subscription.

" - }, - "DeleteOptionGroup":{ - "name":"DeleteOptionGroup", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DeleteOptionGroupMessage", - "documentation":"

" - }, - "errors":[ - { - "shape":"OptionGroupNotFoundFault", - "error":{ - "code":"OptionGroupNotFoundFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified option group could not be found.

" - }, - { - "shape":"InvalidOptionGroupStateFault", - "error":{ - "code":"InvalidOptionGroupStateFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The option group is not in the available state.

" - } - ], - "documentation":"

Deletes an existing option group.

" - }, - "DescribeDBEngineVersions":{ - "name":"DescribeDBEngineVersions", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeDBEngineVersionsMessage"}, - "output":{ - "shape":"DBEngineVersionMessage", - "documentation":"

Contains the result of a successful invocation of the DescribeDBEngineVersions action.

", - "resultWrapper":"DescribeDBEngineVersionsResult" - }, - "documentation":"

Returns a list of the available DB engines.

" - }, - "DescribeDBInstances":{ - "name":"DescribeDBInstances", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DescribeDBInstancesMessage", - "documentation":"

" - }, - "output":{ - "shape":"DBInstanceMessage", - "documentation":"

Contains the result of a successful invocation of the DescribeDBInstances action.

", - "resultWrapper":"DescribeDBInstancesResult" - }, - "errors":[ - { - "shape":"DBInstanceNotFoundFault", - "error":{ - "code":"DBInstanceNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

DBInstanceIdentifier does not refer to an existing DB instance.

" - } - ], - "documentation":"

Returns information about provisioned RDS instances. This API supports pagination.

" - }, - "DescribeDBLogFiles":{ - "name":"DescribeDBLogFiles", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DescribeDBLogFilesMessage", - "documentation":"

" - }, - "output":{ - "shape":"DescribeDBLogFilesResponse", - "documentation":"

The response from a call to DescribeDBLogFiles.

", - "resultWrapper":"DescribeDBLogFilesResult" - }, - "errors":[ - { - "shape":"DBInstanceNotFoundFault", - "error":{ - "code":"DBInstanceNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

DBInstanceIdentifier does not refer to an existing DB instance.

" - } - ], - "documentation":"

Returns a list of DB log files for the DB instance.

" - }, - "DescribeDBParameterGroups":{ - "name":"DescribeDBParameterGroups", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DescribeDBParameterGroupsMessage", - "documentation":"

" - }, - "output":{ - "shape":"DBParameterGroupsMessage", - "documentation":"

Contains the result of a successful invocation of the DescribeDBParameterGroups action.

", - "resultWrapper":"DescribeDBParameterGroupsResult" - }, - "errors":[ - { - "shape":"DBParameterGroupNotFoundFault", - "error":{ - "code":"DBParameterGroupNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

DBParameterGroupName does not refer to an existing DB parameter group.

" - } - ], - "documentation":"

Returns a list of DBParameterGroup descriptions. If a DBParameterGroupName is specified, the list will contain only the description of the specified DB parameter group.

" - }, - "DescribeDBParameters":{ - "name":"DescribeDBParameters", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeDBParametersMessage"}, - "output":{ - "shape":"DBParameterGroupDetails", - "documentation":"

Contains the result of a successful invocation of the DescribeDBParameters action.

", - "resultWrapper":"DescribeDBParametersResult" - }, - "errors":[ - { - "shape":"DBParameterGroupNotFoundFault", - "error":{ - "code":"DBParameterGroupNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

DBParameterGroupName does not refer to an existing DB parameter group.

" - } - ], - "documentation":"

Returns the detailed parameter list for a particular DB parameter group.

" - }, - "DescribeDBSecurityGroups":{ - "name":"DescribeDBSecurityGroups", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DescribeDBSecurityGroupsMessage", - "documentation":"

" - }, - "output":{ - "shape":"DBSecurityGroupMessage", - "documentation":"

Contains the result of a successful invocation of the DescribeDBSecurityGroups action.

", - "resultWrapper":"DescribeDBSecurityGroupsResult" - }, - "errors":[ - { - "shape":"DBSecurityGroupNotFoundFault", - "error":{ - "code":"DBSecurityGroupNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

DBSecurityGroupName does not refer to an existing DB security group.

" - } - ], - "documentation":"

Returns a list of DBSecurityGroup descriptions. If a DBSecurityGroupName is specified, the list will contain only the descriptions of the specified DB security group.

" - }, - "DescribeDBSnapshots":{ - "name":"DescribeDBSnapshots", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DescribeDBSnapshotsMessage", - "documentation":"

" - }, - "output":{ - "shape":"DBSnapshotMessage", - "documentation":"

Contains the result of a successful invocation of the DescribeDBSnapshots action.

", - "resultWrapper":"DescribeDBSnapshotsResult" - }, - "errors":[ - { - "shape":"DBSnapshotNotFoundFault", - "error":{ - "code":"DBSnapshotNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

DBSnapshotIdentifier does not refer to an existing DB snapshot.

" - } - ], - "documentation":"

Returns information about DB snapshots. This API supports pagination.

" - }, - "DescribeDBSubnetGroups":{ - "name":"DescribeDBSubnetGroups", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DescribeDBSubnetGroupsMessage", - "documentation":"

" - }, - "output":{ - "shape":"DBSubnetGroupMessage", - "documentation":"

Contains the result of a successful invocation of the DescribeDBSubnetGroups action.

", - "resultWrapper":"DescribeDBSubnetGroupsResult" - }, - "errors":[ - { - "shape":"DBSubnetGroupNotFoundFault", - "error":{ - "code":"DBSubnetGroupNotFoundFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

DBSubnetGroupName does not refer to an existing DB subnet group.

" - } - ], - "documentation":"

Returns a list of DBSubnetGroup descriptions. If a DBSubnetGroupName is specified, the list will contain only the descriptions of the specified DBSubnetGroup.

For an overview of CIDR ranges, go to the Wikipedia Tutorial.

" - }, - "DescribeEngineDefaultParameters":{ - "name":"DescribeEngineDefaultParameters", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DescribeEngineDefaultParametersMessage", - "documentation":"

" - }, - "output":{ - "shape":"DescribeEngineDefaultParametersResult", - "wrapper":true, - "documentation":"

Contains the result of a successful invocation of the DescribeEngineDefaultParameters action.

", - "resultWrapper":"DescribeEngineDefaultParametersResult" - }, - "documentation":"

Returns the default engine and system parameter information for the specified database engine.

" - }, - "DescribeEventCategories":{ - "name":"DescribeEventCategories", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DescribeEventCategoriesMessage", - "documentation":"

" - }, - "output":{ - "shape":"EventCategoriesMessage", - "documentation":"

Data returned from the DescribeEventCategories action.

", - "resultWrapper":"DescribeEventCategoriesResult" - }, - "documentation":"

Displays a list of categories for all event source types, or, if specified, for a specified source type. You can see a list of the event categories and source types in the Events topic in the Amazon RDS User Guide.

" - }, - "DescribeEventSubscriptions":{ - "name":"DescribeEventSubscriptions", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DescribeEventSubscriptionsMessage", - "documentation":"

" - }, - "output":{ - "shape":"EventSubscriptionsMessage", - "documentation":"

Data returned by the DescribeEventSubscriptions action.

", - "resultWrapper":"DescribeEventSubscriptionsResult" - }, - "errors":[ - { - "shape":"SubscriptionNotFoundFault", - "error":{ - "code":"SubscriptionNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The subscription name does not exist.

" - } - ], - "documentation":"

Lists all the subscription descriptions for a customer account. The description for a subscription includes SubscriptionName, SNSTopicARN, CustomerID, SourceType, SourceID, CreationTime, and Status.

If you specify a SubscriptionName, lists the description for that subscription.

" - }, - "DescribeEvents":{ - "name":"DescribeEvents", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DescribeEventsMessage", - "documentation":"

" - }, - "output":{ - "shape":"EventsMessage", - "documentation":"

Contains the result of a successful invocation of the DescribeEvents action.

", - "resultWrapper":"DescribeEventsResult" - }, - "documentation":"

Returns events related to DB instances, DB security groups, DB snapshots, and DB parameter groups for the past 14 days. Events specific to a particular DB instance, DB security group, database snapshot, or DB parameter group can be obtained by providing the name as a parameter. By default, the past hour of events are returned.

" - }, - "DescribeOptionGroupOptions":{ - "name":"DescribeOptionGroupOptions", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DescribeOptionGroupOptionsMessage", - "documentation":"

" - }, - "output":{ - "shape":"OptionGroupOptionsMessage", - "documentation":"

", - "resultWrapper":"DescribeOptionGroupOptionsResult" - }, - "documentation":"

Describes all available options.

" - }, - "DescribeOptionGroups":{ - "name":"DescribeOptionGroups", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DescribeOptionGroupsMessage", - "documentation":"

" - }, - "output":{ - "shape":"OptionGroups", - "documentation":"

List of option groups.

", - "resultWrapper":"DescribeOptionGroupsResult" - }, - "errors":[ - { - "shape":"OptionGroupNotFoundFault", - "error":{ - "code":"OptionGroupNotFoundFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified option group could not be found.

" - } - ], - "documentation":"

Describes the available option groups.

" - }, - "DescribeOrderableDBInstanceOptions":{ - "name":"DescribeOrderableDBInstanceOptions", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DescribeOrderableDBInstanceOptionsMessage", - "documentation":"

" - }, - "output":{ - "shape":"OrderableDBInstanceOptionsMessage", - "documentation":"

Contains the result of a successful invocation of the DescribeOrderableDBInstanceOptions action.

", - "resultWrapper":"DescribeOrderableDBInstanceOptionsResult" - }, - "documentation":"

Returns a list of orderable DB instance options for the specified engine.

" - }, - "DescribeReservedDBInstances":{ - "name":"DescribeReservedDBInstances", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DescribeReservedDBInstancesMessage", - "documentation":"

" - }, - "output":{ - "shape":"ReservedDBInstanceMessage", - "documentation":"

Contains the result of a successful invocation of the DescribeReservedDBInstances action.

", - "resultWrapper":"DescribeReservedDBInstancesResult" - }, - "errors":[ - { - "shape":"ReservedDBInstanceNotFoundFault", - "error":{ - "code":"ReservedDBInstanceNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified reserved DB Instance not found.

" - } - ], - "documentation":"

Returns information about reserved DB instances for this account, or about a specified reserved DB instance.

" - }, - "DescribeReservedDBInstancesOfferings":{ - "name":"DescribeReservedDBInstancesOfferings", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DescribeReservedDBInstancesOfferingsMessage", - "documentation":"

" - }, - "output":{ - "shape":"ReservedDBInstancesOfferingMessage", - "documentation":"

Contains the result of a successful invocation of the DescribeReservedDBInstancesOfferings action.

", - "resultWrapper":"DescribeReservedDBInstancesOfferingsResult" - }, - "errors":[ - { - "shape":"ReservedDBInstancesOfferingNotFoundFault", - "error":{ - "code":"ReservedDBInstancesOfferingNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

Specified offering does not exist.

" - } - ], - "documentation":"

Lists available reserved DB instance offerings.

" - }, - "DownloadDBLogFilePortion":{ - "name":"DownloadDBLogFilePortion", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DownloadDBLogFilePortionMessage", - "documentation":"

" - }, - "output":{ - "shape":"DownloadDBLogFilePortionDetails", - "documentation":"

This data type is used as a response element to DownloadDBLogFilePortion.

", - "resultWrapper":"DownloadDBLogFilePortionResult" - }, - "errors":[ - { - "shape":"DBInstanceNotFoundFault", - "error":{ - "code":"DBInstanceNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

DBInstanceIdentifier does not refer to an existing DB instance.

" - } - ], - "documentation":"

Downloads all or a portion of the specified log file.

" - }, - "ListTagsForResource":{ - "name":"ListTagsForResource", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"ListTagsForResourceMessage", - "documentation":"

" - }, - "output":{ - "shape":"TagListMessage", - "documentation":"

", - "resultWrapper":"ListTagsForResourceResult" - }, - "errors":[ - { - "shape":"DBInstanceNotFoundFault", - "error":{ - "code":"DBInstanceNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

DBInstanceIdentifier does not refer to an existing DB instance.

" - }, - { - "shape":"DBSnapshotNotFoundFault", - "error":{ - "code":"DBSnapshotNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

DBSnapshotIdentifier does not refer to an existing DB snapshot.

" - } - ], - "documentation":"

Lists all tags on an Amazon RDS resource.

For an overview on tagging an Amazon RDS resource, see Tagging Amazon RDS Resources.

" - }, - "ModifyDBInstance":{ - "name":"ModifyDBInstance", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"ModifyDBInstanceMessage", - "documentation":"

" - }, - "output":{ - "shape":"ModifyDBInstanceResult", - "wrapper":true, - "documentation":"

Contains the result of a successful invocation of the following actions:

This data type is used as a response element in the DescribeDBInstances action.

", - "resultWrapper":"ModifyDBInstanceResult" - }, - "errors":[ - { - "shape":"InvalidDBInstanceStateFault", - "error":{ - "code":"InvalidDBInstanceState", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified DB instance is not in the available state.

" - }, - { - "shape":"InvalidDBSecurityGroupStateFault", - "error":{ - "code":"InvalidDBSecurityGroupState", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The state of the DB security group does not allow deletion.

" - }, - { - "shape":"DBInstanceAlreadyExistsFault", - "error":{ - "code":"DBInstanceAlreadyExists", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

User already has a DB instance with the given identifier.

" - }, - { - "shape":"DBInstanceNotFoundFault", - "error":{ - "code":"DBInstanceNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

DBInstanceIdentifier does not refer to an existing DB instance.

" - }, - { - "shape":"DBSecurityGroupNotFoundFault", - "error":{ - "code":"DBSecurityGroupNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

DBSecurityGroupName does not refer to an existing DB security group.

" - }, - { - "shape":"DBParameterGroupNotFoundFault", - "error":{ - "code":"DBParameterGroupNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

DBParameterGroupName does not refer to an existing DB parameter group.

" - }, - { - "shape":"InsufficientDBInstanceCapacityFault", - "error":{ - "code":"InsufficientDBInstanceCapacity", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Specified DB instance class is not available in the specified Availability Zone.

" - }, - { - "shape":"StorageQuotaExceededFault", - "error":{ - "code":"StorageQuotaExceeded", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Request would result in user exceeding the allowed amount of storage available across all DB instances.

" - }, - { - "shape":"InvalidVPCNetworkStateFault", - "error":{ - "code":"InvalidVPCNetworkStateFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

DB subnet group does not cover all Availability Zones after it is created because users' change.

" - }, - { - "shape":"ProvisionedIopsNotAvailableInAZFault", - "error":{ - "code":"ProvisionedIopsNotAvailableInAZFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Provisioned IOPS not available in the specified Availability Zone.

" - }, - { - "shape":"OptionGroupNotFoundFault", - "error":{ - "code":"OptionGroupNotFoundFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified option group could not be found.

" - }, - { - "shape":"DBUpgradeDependencyFailureFault", - "error":{ - "code":"DBUpgradeDependencyFailure", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The DB upgrade failed because a resource the DB depends on could not be modified.

" - }, - { - "shape":"StorageTypeNotSupportedFault", - "error":{ - "code":"StorageTypeNotSupported", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

StorageType specified cannot be associated with the DB Instance.

" - }, - { - "shape":"AuthorizationNotFoundFault", - "error":{ - "code":"AuthorizationNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

Specified CIDRIP or EC2 security group is not authorized for the specified DB security group.

RDS may not also be authorized via IAM to perform necessary actions on your behalf.

" - } - ], - "documentation":"

Modify settings for a DB instance. You can change one or more database configuration parameters by specifying these parameters and the new values in the request.

" - }, - "ModifyDBParameterGroup":{ - "name":"ModifyDBParameterGroup", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"ModifyDBParameterGroupMessage", - "documentation":"

" - }, - "output":{ - "shape":"DBParameterGroupNameMessage", - "documentation":"

Contains the result of a successful invocation of the ModifyDBParameterGroup or ResetDBParameterGroup action.

", - "resultWrapper":"ModifyDBParameterGroupResult" - }, - "errors":[ - { - "shape":"DBParameterGroupNotFoundFault", - "error":{ - "code":"DBParameterGroupNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

DBParameterGroupName does not refer to an existing DB parameter group.

" - }, - { - "shape":"InvalidDBParameterGroupStateFault", - "error":{ - "code":"InvalidDBParameterGroupState", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The DB parameter group cannot be deleted because it is in use.

" - } - ], - "documentation":"

Modifies the parameters of a DB parameter group. To modify more than one parameter, submit a list of the following: ParameterName, ParameterValue, and ApplyMethod. A maximum of 20 parameters can be modified in a single request.

After you modify a DB parameter group, you should wait at least 5 minutes before creating your first DB instance that uses that DB parameter group as the default parameter group. This allows Amazon RDS to fully complete the modify action before the parameter group is used as the default for a new DB instance. This is especially important for parameters that are critical when creating the default database for a DB instance, such as the character set for the default database defined by the character_set_database parameter. You can use the Parameter Groups option of the Amazon RDS console or the DescribeDBParameters command to verify that your DB parameter group has been created or modified.

" - }, - "ModifyDBSubnetGroup":{ - "name":"ModifyDBSubnetGroup", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"ModifyDBSubnetGroupMessage", - "documentation":"

" - }, - "output":{ - "shape":"ModifyDBSubnetGroupResult", - "wrapper":true, - "documentation":"

Contains the result of a successful invocation of the following actions:

This data type is used as a response element in the DescribeDBSubnetGroups action.

", - "resultWrapper":"ModifyDBSubnetGroupResult" - }, - "errors":[ - { - "shape":"DBSubnetGroupNotFoundFault", - "error":{ - "code":"DBSubnetGroupNotFoundFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

DBSubnetGroupName does not refer to an existing DB subnet group.

" - }, - { - "shape":"DBSubnetQuotaExceededFault", - "error":{ - "code":"DBSubnetQuotaExceededFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Request would result in user exceeding the allowed number of subnets in a DB subnet groups.

" - }, - { - "shape":"SubnetAlreadyInUse", - "error":{ - "code":"SubnetAlreadyInUse", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The DB subnet is already in use in the Availability Zone.

" - }, - { - "shape":"DBSubnetGroupDoesNotCoverEnoughAZs", - "error":{ - "code":"DBSubnetGroupDoesNotCoverEnoughAZs", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Subnets in the DB subnet group should cover at least two Availability Zones unless there is only one Availability Zone.

" - }, - { - "shape":"InvalidSubnet", - "error":{ - "code":"InvalidSubnet", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The requested subnet is invalid, or multiple subnets were requested that are not all in a common VPC.

" - } - ], - "documentation":"

Modifies an existing DB subnet group. DB subnet groups must contain at least one subnet in at least two AZs in the region.

" - }, - "ModifyEventSubscription":{ - "name":"ModifyEventSubscription", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"ModifyEventSubscriptionMessage", - "documentation":"

" - }, - "output":{ - "shape":"ModifyEventSubscriptionResult", - "wrapper":true, - "documentation":"

Contains the results of a successful invocation of the DescribeEventSubscriptions action.

", - "resultWrapper":"ModifyEventSubscriptionResult" - }, - "errors":[ - { - "shape":"EventSubscriptionQuotaExceededFault", - "error":{ - "code":"EventSubscriptionQuotaExceeded", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

You have reached the maximum number of event subscriptions.

" - }, - { - "shape":"SubscriptionNotFoundFault", - "error":{ - "code":"SubscriptionNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The subscription name does not exist.

" - }, - { - "shape":"SNSInvalidTopicFault", - "error":{ - "code":"SNSInvalidTopic", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

SNS has responded that there is a problem with the SND topic specified.

" - }, - { - "shape":"SNSNoAuthorizationFault", - "error":{ - "code":"SNSNoAuthorization", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

You do not have permission to publish to the SNS topic ARN.

" - }, - { - "shape":"SNSTopicArnNotFoundFault", - "error":{ - "code":"SNSTopicArnNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The SNS topic ARN does not exist.

" - }, - { - "shape":"SubscriptionCategoryNotFoundFault", - "error":{ - "code":"SubscriptionCategoryNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The supplied category does not exist.

" - } - ], - "documentation":"

Modifies an existing RDS event notification subscription. Note that you cannot modify the source identifiers using this call; to change source identifiers for a subscription, use the AddSourceIdentifierToSubscription and RemoveSourceIdentifierFromSubscription calls.

You can see a list of the event categories for a given SourceType in the Events topic in the Amazon RDS User Guide or by using the DescribeEventCategories action.

" - }, - "ModifyOptionGroup":{ - "name":"ModifyOptionGroup", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"ModifyOptionGroupMessage", - "documentation":"

" - }, - "output":{ - "shape":"ModifyOptionGroupResult", - "wrapper":true, - "documentation":"

", - "resultWrapper":"ModifyOptionGroupResult" - }, - "errors":[ - { - "shape":"InvalidOptionGroupStateFault", - "error":{ - "code":"InvalidOptionGroupStateFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The option group is not in the available state.

" - }, - { - "shape":"OptionGroupNotFoundFault", - "error":{ - "code":"OptionGroupNotFoundFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified option group could not be found.

" - } - ], - "documentation":"

Modifies an existing option group.

" - }, - "PromoteReadReplica":{ - "name":"PromoteReadReplica", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"PromoteReadReplicaMessage", - "documentation":"

" - }, - "output":{ - "shape":"PromoteReadReplicaResult", - "wrapper":true, - "documentation":"

Contains the result of a successful invocation of the following actions:

This data type is used as a response element in the DescribeDBInstances action.

", - "resultWrapper":"PromoteReadReplicaResult" - }, - "errors":[ - { - "shape":"InvalidDBInstanceStateFault", - "error":{ - "code":"InvalidDBInstanceState", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified DB instance is not in the available state.

" - }, - { - "shape":"DBInstanceNotFoundFault", - "error":{ - "code":"DBInstanceNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

DBInstanceIdentifier does not refer to an existing DB instance.

" - } - ], - "documentation":"

Promotes a read replica DB instance to a standalone DB instance.

" - }, - "PurchaseReservedDBInstancesOffering":{ - "name":"PurchaseReservedDBInstancesOffering", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"PurchaseReservedDBInstancesOfferingMessage", - "documentation":"

" - }, - "output":{ - "shape":"PurchaseReservedDBInstancesOfferingResult", - "wrapper":true, - "documentation":"

This data type is used as a response element in the DescribeReservedDBInstances and PurchaseReservedDBInstancesOffering actions.

", - "resultWrapper":"PurchaseReservedDBInstancesOfferingResult" - }, - "errors":[ - { - "shape":"ReservedDBInstancesOfferingNotFoundFault", - "error":{ - "code":"ReservedDBInstancesOfferingNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

Specified offering does not exist.

" - }, - { - "shape":"ReservedDBInstanceAlreadyExistsFault", - "error":{ - "code":"ReservedDBInstanceAlreadyExists", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

User already has a reservation with the given identifier.

" - }, - { - "shape":"ReservedDBInstanceQuotaExceededFault", - "error":{ - "code":"ReservedDBInstanceQuotaExceeded", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Request would exceed the user's DB Instance quota.

" - } - ], - "documentation":"

Purchases a reserved DB instance offering.

" - }, - "RebootDBInstance":{ - "name":"RebootDBInstance", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"RebootDBInstanceMessage", - "documentation":"

" - }, - "output":{ - "shape":"RebootDBInstanceResult", - "wrapper":true, - "documentation":"

Contains the result of a successful invocation of the following actions:

This data type is used as a response element in the DescribeDBInstances action.

", - "resultWrapper":"RebootDBInstanceResult" - }, - "errors":[ - { - "shape":"InvalidDBInstanceStateFault", - "error":{ - "code":"InvalidDBInstanceState", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified DB instance is not in the available state.

" - }, - { - "shape":"DBInstanceNotFoundFault", - "error":{ - "code":"DBInstanceNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

DBInstanceIdentifier does not refer to an existing DB instance.

" - } - ], - "documentation":"

Rebooting a DB instance restarts the database engine service. A reboot also applies to the DB instance any modifications to the associated DB parameter group that were pending. Rebooting a DB instance results in a momentary outage of the instance, during which the DB instance status is set to rebooting. If the RDS instance is configured for MultiAZ, it is possible that the reboot will be conducted through a failover. An Amazon RDS event is created when the reboot is completed.

If your DB instance is deployed in multiple Availability Zones, you can force a failover from one AZ to the other during the reboot. You might force a failover to test the availability of your DB instance deployment or to restore operations to the original AZ after a failover occurs.

The time required to reboot is a function of the specific database engine's crash recovery process. To improve the reboot time, we recommend that you reduce database activities as much as possible during the reboot process to reduce rollback activity for in-transit transactions.

" - }, - "RemoveSourceIdentifierFromSubscription":{ - "name":"RemoveSourceIdentifierFromSubscription", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"RemoveSourceIdentifierFromSubscriptionMessage", - "documentation":"

" - }, - "output":{ - "shape":"RemoveSourceIdentifierFromSubscriptionResult", - "wrapper":true, - "documentation":"

Contains the results of a successful invocation of the DescribeEventSubscriptions action.

", - "resultWrapper":"RemoveSourceIdentifierFromSubscriptionResult" - }, - "errors":[ - { - "shape":"SubscriptionNotFoundFault", - "error":{ - "code":"SubscriptionNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The subscription name does not exist.

" - }, - { - "shape":"SourceNotFoundFault", - "error":{ - "code":"SourceNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The requested source could not be found.

" - } - ], - "documentation":"

Removes a source identifier from an existing RDS event notification subscription.

" - }, - "RemoveTagsFromResource":{ - "name":"RemoveTagsFromResource", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"RemoveTagsFromResourceMessage", - "documentation":"

" - }, - "errors":[ - { - "shape":"DBInstanceNotFoundFault", - "error":{ - "code":"DBInstanceNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

DBInstanceIdentifier does not refer to an existing DB instance.

" - }, - { - "shape":"DBSnapshotNotFoundFault", - "error":{ - "code":"DBSnapshotNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

DBSnapshotIdentifier does not refer to an existing DB snapshot.

" - } - ], - "documentation":"

Removes metadata tags from an Amazon RDS resource.

For an overview on tagging an Amazon RDS resource, see Tagging Amazon RDS Resources.

" - }, - "ResetDBParameterGroup":{ - "name":"ResetDBParameterGroup", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"ResetDBParameterGroupMessage", - "documentation":"

" - }, - "output":{ - "shape":"DBParameterGroupNameMessage", - "documentation":"

Contains the result of a successful invocation of the ModifyDBParameterGroup or ResetDBParameterGroup action.

", - "resultWrapper":"ResetDBParameterGroupResult" - }, - "errors":[ - { - "shape":"InvalidDBParameterGroupStateFault", - "error":{ - "code":"InvalidDBParameterGroupState", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The DB parameter group cannot be deleted because it is in use.

" - }, - { - "shape":"DBParameterGroupNotFoundFault", - "error":{ - "code":"DBParameterGroupNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

DBParameterGroupName does not refer to an existing DB parameter group.

" - } - ], - "documentation":"

Modifies the parameters of a DB parameter group to the engine/system default value. To reset specific parameters submit a list of the following: ParameterName and ApplyMethod. To reset the entire DB parameter group, specify the DBParameterGroup name and ResetAllParameters parameters. When resetting the entire group, dynamic parameters are updated immediately and static parameters are set to pending-reboot to take effect on the next DB instance restart or RebootDBInstance request.

" - }, - "RestoreDBInstanceFromDBSnapshot":{ - "name":"RestoreDBInstanceFromDBSnapshot", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"RestoreDBInstanceFromDBSnapshotMessage", - "documentation":"

" - }, - "output":{ - "shape":"RestoreDBInstanceFromDBSnapshotResult", - "wrapper":true, - "documentation":"

Contains the result of a successful invocation of the following actions:

This data type is used as a response element in the DescribeDBInstances action.

", - "resultWrapper":"RestoreDBInstanceFromDBSnapshotResult" - }, - "errors":[ - { - "shape":"DBInstanceAlreadyExistsFault", - "error":{ - "code":"DBInstanceAlreadyExists", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

User already has a DB instance with the given identifier.

" - }, - { - "shape":"DBSnapshotNotFoundFault", - "error":{ - "code":"DBSnapshotNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

DBSnapshotIdentifier does not refer to an existing DB snapshot.

" - }, - { - "shape":"InstanceQuotaExceededFault", - "error":{ - "code":"InstanceQuotaExceeded", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Request would result in user exceeding the allowed number of DB instances.

" - }, - { - "shape":"InsufficientDBInstanceCapacityFault", - "error":{ - "code":"InsufficientDBInstanceCapacity", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Specified DB instance class is not available in the specified Availability Zone.

" - }, - { - "shape":"InvalidDBSnapshotStateFault", - "error":{ - "code":"InvalidDBSnapshotState", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The state of the DB snapshot does not allow deletion.

" - }, - { - "shape":"StorageQuotaExceededFault", - "error":{ - "code":"StorageQuotaExceeded", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Request would result in user exceeding the allowed amount of storage available across all DB instances.

" - }, - { - "shape":"InvalidVPCNetworkStateFault", - "error":{ - "code":"InvalidVPCNetworkStateFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

DB subnet group does not cover all Availability Zones after it is created because users' change.

" - }, - { - "shape":"InvalidRestoreFault", - "error":{ - "code":"InvalidRestoreFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Cannot restore from vpc backup to non-vpc DB instance.

" - }, - { - "shape":"DBSubnetGroupNotFoundFault", - "error":{ - "code":"DBSubnetGroupNotFoundFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

DBSubnetGroupName does not refer to an existing DB subnet group.

" - }, - { - "shape":"DBSubnetGroupDoesNotCoverEnoughAZs", - "error":{ - "code":"DBSubnetGroupDoesNotCoverEnoughAZs", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Subnets in the DB subnet group should cover at least two Availability Zones unless there is only one Availability Zone.

" - }, - { - "shape":"InvalidSubnet", - "error":{ - "code":"InvalidSubnet", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The requested subnet is invalid, or multiple subnets were requested that are not all in a common VPC.

" - }, - { - "shape":"ProvisionedIopsNotAvailableInAZFault", - "error":{ - "code":"ProvisionedIopsNotAvailableInAZFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Provisioned IOPS not available in the specified Availability Zone.

" - }, - { - "shape":"OptionGroupNotFoundFault", - "error":{ - "code":"OptionGroupNotFoundFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified option group could not be found.

" - }, - { - "shape":"StorageTypeNotSupportedFault", - "error":{ - "code":"StorageTypeNotSupported", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

StorageType specified cannot be associated with the DB Instance.

" - }, - { - "shape":"AuthorizationNotFoundFault", - "error":{ - "code":"AuthorizationNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

Specified CIDRIP or EC2 security group is not authorized for the specified DB security group.

RDS may not also be authorized via IAM to perform necessary actions on your behalf.

" - } - ], - "documentation":"

Creates a new DB instance from a DB snapshot. The target database is created from the source database restore point with the same configuration as the original source database, except that the new RDS instance is created with the default security group.

" - }, - "RestoreDBInstanceToPointInTime":{ - "name":"RestoreDBInstanceToPointInTime", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"RestoreDBInstanceToPointInTimeMessage", - "documentation":"

" - }, - "output":{ - "shape":"RestoreDBInstanceToPointInTimeResult", - "wrapper":true, - "documentation":"

Contains the result of a successful invocation of the following actions:

This data type is used as a response element in the DescribeDBInstances action.

", - "resultWrapper":"RestoreDBInstanceToPointInTimeResult" - }, - "errors":[ - { - "shape":"DBInstanceAlreadyExistsFault", - "error":{ - "code":"DBInstanceAlreadyExists", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

User already has a DB instance with the given identifier.

" - }, - { - "shape":"DBInstanceNotFoundFault", - "error":{ - "code":"DBInstanceNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

DBInstanceIdentifier does not refer to an existing DB instance.

" - }, - { - "shape":"InstanceQuotaExceededFault", - "error":{ - "code":"InstanceQuotaExceeded", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Request would result in user exceeding the allowed number of DB instances.

" - }, - { - "shape":"InsufficientDBInstanceCapacityFault", - "error":{ - "code":"InsufficientDBInstanceCapacity", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Specified DB instance class is not available in the specified Availability Zone.

" - }, - { - "shape":"InvalidDBInstanceStateFault", - "error":{ - "code":"InvalidDBInstanceState", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified DB instance is not in the available state.

" - }, - { - "shape":"PointInTimeRestoreNotEnabledFault", - "error":{ - "code":"PointInTimeRestoreNotEnabled", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

SourceDBInstanceIdentifier refers to a DB instance with BackupRetentionPeriod equal to 0.

" - }, - { - "shape":"StorageQuotaExceededFault", - "error":{ - "code":"StorageQuotaExceeded", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Request would result in user exceeding the allowed amount of storage available across all DB instances.

" - }, - { - "shape":"InvalidVPCNetworkStateFault", - "error":{ - "code":"InvalidVPCNetworkStateFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

DB subnet group does not cover all Availability Zones after it is created because users' change.

" - }, - { - "shape":"InvalidRestoreFault", - "error":{ - "code":"InvalidRestoreFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Cannot restore from vpc backup to non-vpc DB instance.

" - }, - { - "shape":"DBSubnetGroupNotFoundFault", - "error":{ - "code":"DBSubnetGroupNotFoundFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

DBSubnetGroupName does not refer to an existing DB subnet group.

" - }, - { - "shape":"DBSubnetGroupDoesNotCoverEnoughAZs", - "error":{ - "code":"DBSubnetGroupDoesNotCoverEnoughAZs", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Subnets in the DB subnet group should cover at least two Availability Zones unless there is only one Availability Zone.

" - }, - { - "shape":"InvalidSubnet", - "error":{ - "code":"InvalidSubnet", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The requested subnet is invalid, or multiple subnets were requested that are not all in a common VPC.

" - }, - { - "shape":"ProvisionedIopsNotAvailableInAZFault", - "error":{ - "code":"ProvisionedIopsNotAvailableInAZFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Provisioned IOPS not available in the specified Availability Zone.

" - }, - { - "shape":"OptionGroupNotFoundFault", - "error":{ - "code":"OptionGroupNotFoundFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified option group could not be found.

" - }, - { - "shape":"StorageTypeNotSupportedFault", - "error":{ - "code":"StorageTypeNotSupported", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

StorageType specified cannot be associated with the DB Instance.

" - }, - { - "shape":"AuthorizationNotFoundFault", - "error":{ - "code":"AuthorizationNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

Specified CIDRIP or EC2 security group is not authorized for the specified DB security group.

RDS may not also be authorized via IAM to perform necessary actions on your behalf.

" - } - ], - "documentation":"

Restores a DB instance to an arbitrary point-in-time. Users can restore to any point in time before the latestRestorableTime for up to backupRetentionPeriod days. The target database is created from the source database with the same configuration as the original database except that the DB instance is created with the default DB security group.

" - }, - "RevokeDBSecurityGroupIngress":{ - "name":"RevokeDBSecurityGroupIngress", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"RevokeDBSecurityGroupIngressMessage", - "documentation":"

" - }, - "output":{ - "shape":"RevokeDBSecurityGroupIngressResult", - "wrapper":true, - "documentation":"

Contains the result of a successful invocation of the following actions:

This data type is used as a response element in the DescribeDBSecurityGroups action.

", - "resultWrapper":"RevokeDBSecurityGroupIngressResult" - }, - "errors":[ - { - "shape":"DBSecurityGroupNotFoundFault", - "error":{ - "code":"DBSecurityGroupNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

DBSecurityGroupName does not refer to an existing DB security group.

" - }, - { - "shape":"AuthorizationNotFoundFault", - "error":{ - "code":"AuthorizationNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

Specified CIDRIP or EC2 security group is not authorized for the specified DB security group.

RDS may not also be authorized via IAM to perform necessary actions on your behalf.

" - }, - { - "shape":"InvalidDBSecurityGroupStateFault", - "error":{ - "code":"InvalidDBSecurityGroupState", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The state of the DB security group does not allow deletion.

" - } - ], - "documentation":"

Revokes ingress from a DBSecurityGroup for previously authorized IP ranges or EC2 or VPC Security Groups. Required parameters for this API are one of CIDRIP, EC2SecurityGroupId for VPC, or (EC2SecurityGroupOwnerId and either EC2SecurityGroupName or EC2SecurityGroupId).

" - } - }, - "shapes":{ - "AddSourceIdentifierToSubscriptionMessage":{ - "type":"structure", - "required":[ - "SubscriptionName", - "SourceIdentifier" - ], - "members":{ - "SubscriptionName":{ - "shape":"String", - "documentation":"

The name of the RDS event notification subscription you want to add a source identifier to.

" - }, - "SourceIdentifier":{ - "shape":"String", - "documentation":"

The identifier of the event source to be added. An identifier must begin with a letter and must contain only ASCII letters, digits, and hyphens; it cannot end with a hyphen or contain two consecutive hyphens.

Constraints:

" - } - }, - "documentation":"

" - }, - "AddTagsToResourceMessage":{ - "type":"structure", - "required":[ - "ResourceName", - "Tags" - ], - "members":{ - "ResourceName":{ - "shape":"String", - "documentation":"

The Amazon RDS resource the tags will be added to. This value is an Amazon Resource Name (ARN). For information about creating an ARN, see Constructing an RDS Amazon Resource Name (ARN).

" - }, - "Tags":{ - "shape":"TagList", - "documentation":"

The tags to be assigned to the Amazon RDS resource.

" - } - }, - "documentation":"

" - }, - "ApplyMethod":{ - "type":"string", - "enum":[ - "immediate", - "pending-reboot" - ] - }, - "AuthorizationAlreadyExistsFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"AuthorizationAlreadyExists", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified CIDRIP or EC2 security group is already authorized for the specified DB security group.

" - }, - "AuthorizationNotFoundFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"AuthorizationNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

Specified CIDRIP or EC2 security group is not authorized for the specified DB security group.

RDS may not also be authorized via IAM to perform necessary actions on your behalf.

" - }, - "AuthorizationQuotaExceededFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"AuthorizationQuotaExceeded", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

DB security group authorization quota has been reached.

" - }, - "AuthorizeDBSecurityGroupIngressMessage":{ - "type":"structure", - "required":["DBSecurityGroupName"], - "members":{ - "DBSecurityGroupName":{ - "shape":"String", - "documentation":"

The name of the DB security group to add authorization to.

" - }, - "CIDRIP":{ - "shape":"String", - "documentation":"

The IP range to authorize.

" - }, - "EC2SecurityGroupName":{ - "shape":"String", - "documentation":"

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.

" - }, - "EC2SecurityGroupId":{ - "shape":"String", - "documentation":"

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.

" - }, - "EC2SecurityGroupOwnerId":{ - "shape":"String", - "documentation":"

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.

" - } - }, - "documentation":"

" - }, - "AvailabilityZone":{ - "type":"structure", - "members":{ - "Name":{ - "shape":"String", - "documentation":"

The name of the availability zone.

" - } - }, - "wrapper":true, - "documentation":"

Contains Availability Zone information.

This data type is used as an element in the following data type:

" - }, - "AvailabilityZoneList":{ - "type":"list", - "member":{ - "shape":"AvailabilityZone", - "locationName":"AvailabilityZone" - } - }, - "Boolean":{"type":"boolean"}, - "BooleanOptional":{"type":"boolean"}, - "CharacterSet":{ - "type":"structure", - "members":{ - "CharacterSetName":{ - "shape":"String", - "documentation":"

The name of the character set.

" - }, - "CharacterSetDescription":{ - "shape":"String", - "documentation":"

The description of the character set.

" - } - }, - "documentation":"

This data type is used as a response element in the action DescribeDBEngineVersions.

" - }, - "CopyDBParameterGroupMessage":{ - "type":"structure", - "required":[ - "SourceDBParameterGroupIdentifier", - "TargetDBParameterGroupIdentifier", - "TargetDBParameterGroupDescription" - ], - "members":{ - "SourceDBParameterGroupIdentifier":{ - "shape":"String", - "documentation":"

The identifier or ARN for the source DB Parameter Group.

Constraints:

Example: my-db-param-group

Example: arn:aws:rds:us-west-2:123456789012:pg:special-parameters

" - }, - "TargetDBParameterGroupIdentifier":{ - "shape":"String", - "documentation":"

The identifier for the copied DB Parameter Group.

Constraints:

Example: my-db-parameter-group

" - }, - "TargetDBParameterGroupDescription":{ - "shape":"String", - "documentation":"

The description for the copied DB Parameter Group.

" - }, - "Tags":{"shape":"TagList"} - }, - "documentation":"

" - }, - "CopyDBSnapshotMessage":{ - "type":"structure", - "required":[ - "SourceDBSnapshotIdentifier", - "TargetDBSnapshotIdentifier" - ], - "members":{ - "SourceDBSnapshotIdentifier":{ - "shape":"String", - "documentation":"

The identifier for the source DB snapshot.

Constraints:

Example: rds:mydb-2012-04-02-00-01

Example: arn:aws:rds:rr-regn-1:123456789012:snapshot:mysql-instance1-snapshot-20130805

" - }, - "TargetDBSnapshotIdentifier":{ - "shape":"String", - "documentation":"

The identifier for the copied snapshot.

Constraints:

Example: my-db-snapshot

" - }, - "Tags":{"shape":"TagList"} - }, - "documentation":"

" - }, - "CopyOptionGroupMessage":{ - "type":"structure", - "required":[ - "SourceOptionGroupIdentifier", - "TargetOptionGroupIdentifier", - "TargetOptionGroupDescription" - ], - "members":{ - "SourceOptionGroupIdentifier":{ - "shape":"String", - "documentation":"

The identifier or ARN for the source Option Group.

Constraints:

Example: my-option-group

Example: arn:aws:rds:us-west-2:123456789012:og:special-options

" - }, - "TargetOptionGroupIdentifier":{ - "shape":"String", - "documentation":"

The identifier for the copied Option Group.

Constraints:

Example: my-option-group

" - }, - "TargetOptionGroupDescription":{ - "shape":"String", - "documentation":"

The description for the copied Option Group.

" - }, - "Tags":{"shape":"TagList"} - }, - "documentation":"

" - }, - "CreateDBInstanceMessage":{ - "type":"structure", - "required":[ - "DBInstanceIdentifier", - "AllocatedStorage", - "DBInstanceClass", - "Engine", - "MasterUsername", - "MasterUserPassword" - ], - "members":{ - "DBName":{ - "shape":"String", - "documentation":"

The meaning of this parameter differs according to the database engine you use.

Type: 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.

Constraints:

PostgreSQL

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.

Constraints:

Oracle

The Oracle System ID (SID) of the created DB instance.

Default: ORCL

Constraints:

SQL Server

Not applicable. Must be null.

" - }, - "DBInstanceIdentifier":{ - "shape":"String", - "documentation":"

The DB instance identifier. This parameter is stored as a lowercase string.

Constraints:

Example: mydbinstance

" - }, - "AllocatedStorage":{ - "shape":"IntegerOptional", - "documentation":"

The amount of storage (in gigabytes) to be initially allocated for the database instance.

Type: Integer

MySQL

Constraints: Must be an integer from 5 to 3072.

PostgreSQL

Constraints: Must be an integer from 5 to 3072.

Oracle

Constraints: Must be an integer from 10 to 3072.

SQL Server

Constraints: Must be an integer from 200 to 1024 (Standard Edition and Enterprise Edition) or from 30 to 1024 (Express Edition and Web Edition)

" - }, - "DBInstanceClass":{ - "shape":"String", - "documentation":"

The compute and memory capacity of the DB instance.

Valid Values: db.t1.micro | db.m1.small | db.m1.medium | db.m1.large | db.m1.xlarge | db.m2.xlarge |db.m2.2xlarge | db.m2.4xlarge | db.m3.medium | db.m3.large | db.m3.xlarge | db.m3.2xlarge | db.r3.large | db.r3.xlarge | db.r3.2xlarge | db.r3.4xlarge | db.r3.8xlarge | db.t2.micro | db.t2.small | db.t2.medium

" - }, - "Engine":{ - "shape":"String", - "documentation":"

The name of the database engine to be used for this instance.

Valid Values: MySQL | oracle-se1 | oracle-se | oracle-ee | sqlserver-ee | sqlserver-se | sqlserver-ex | sqlserver-web | postgres

" - }, - "MasterUsername":{ - "shape":"String", - "documentation":"

The name of master user for the client DB instance.

MySQL

Constraints:

Type: String

Oracle

Constraints:

SQL Server

Constraints:

" - }, - "MasterUserPassword":{ - "shape":"String", - "documentation":"

The password for the master database user. Can be any printable ASCII character except \"/\", \"\"\", or \"@\".

Type: String

MySQL

Constraints: Must contain from 8 to 41 characters.

Oracle

Constraints: Must contain from 8 to 30 characters.

SQL Server

Constraints: Must contain from 8 to 128 characters.

" - }, - "DBSecurityGroups":{ - "shape":"DBSecurityGroupNameList", - "documentation":"

A list of DB security groups to associate with this DB instance.

Default: The default DB security group for the database engine.

" - }, - "VpcSecurityGroupIds":{ - "shape":"VpcSecurityGroupIdList", - "documentation":"

A list of EC2 VPC security groups to associate with this DB instance.

Default: The default EC2 VPC security group for the DB subnet group's VPC.

" - }, - "AvailabilityZone":{ - "shape":"String", - "documentation":"

The EC2 Availability Zone that the database instance will be created in.

Default: A random, system-chosen Availability Zone in the endpoint's region.

Example: us-east-1d

Constraint: The AvailabilityZone parameter cannot be specified if the MultiAZ parameter is set to true. The specified Availability Zone must be in the same region as the current endpoint.

" - }, - "DBSubnetGroupName":{ - "shape":"String", - "documentation":"

A DB subnet group to associate with this DB instance.

If there is no DB subnet group, then it is a non-VPC DB instance.

" - }, - "PreferredMaintenanceWindow":{ - "shape":"String", - "documentation":"

The weekly time range (in UTC) during which system maintenance can occur.

Format: ddd:hh24:mi-ddd:hh24:mi

Default: A 30-minute window selected at random from an 8-hour block of time per region, occurring on a random day of the week. To see the time blocks available, see Adjusting the Preferred Maintenance Window in the Amazon RDS User Guide.

Valid Days: Mon, Tue, Wed, Thu, Fri, Sat, Sun

Constraints: Minimum 30-minute window.

" - }, - "DBParameterGroupName":{ - "shape":"String", - "documentation":"

The name of the DB parameter group to associate with this DB instance. If this argument is omitted, the default DBParameterGroup for the specified engine will be used.

Constraints:

" - }, - "BackupRetentionPeriod":{ - "shape":"IntegerOptional", - "documentation":"

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.

Default: 1

Constraints:

" - }, - "PreferredBackupWindow":{ - "shape":"String", - "documentation":"

The daily time range during which automated backups are created if automated backups are enabled, using the BackupRetentionPeriod parameter.

Default: A 30-minute window selected at random from an 8-hour block of time per region. See the Amazon RDS User Guide for the time blocks for each region from which the default backup windows are assigned.

Constraints: Must be in the format hh24:mi-hh24:mi. Times should be Universal Time Coordinated (UTC). Must not conflict with the preferred maintenance window. Must be at least 30 minutes.

" - }, - "Port":{ - "shape":"IntegerOptional", - "documentation":"

The port number on which the database accepts connections.

MySQL

Default: 3306

Valid Values: 1150-65535

Type: Integer

PostgreSQL

Default: 5432

Valid Values: 1150-65535

Type: Integer

Oracle

Default: 1521

Valid Values: 1150-65535

SQL Server

Default: 1433

Valid Values: 1150-65535 except for 1434, 3389, 47001, 49152, and 49152 through 49156.

" - }, - "MultiAZ":{ - "shape":"BooleanOptional", - "documentation":"

Specifies if the DB instance is a Multi-AZ deployment. You cannot set the AvailabilityZone parameter if the MultiAZ parameter is set to true.

" - }, - "EngineVersion":{ - "shape":"String", - "documentation":"

The version number of the database engine to use.

MySQL

Example: 5.1.42

Type: String

PostgreSQL

Example: 9.3

Type: String

Oracle

Example: 11.2.0.2.v2

Type: String

SQL Server

Example: 10.50.2789.0.v1

" - }, - "AutoMinorVersionUpgrade":{ - "shape":"BooleanOptional", - "documentation":"

Indicates that minor engine upgrades will be applied automatically to the DB instance during the maintenance window.

Default: true

" - }, - "LicenseModel":{ - "shape":"String", - "documentation":"

License model information for this DB instance.

Valid values: license-included | bring-your-own-license | general-public-license

" - }, - "Iops":{ - "shape":"IntegerOptional", - "documentation":"

The amount of Provisioned IOPS (input/output operations per second) to be initially allocated for the DB instance.

Constraints: To use PIOPS, this value must be an integer greater than 1000.

" - }, - "OptionGroupName":{ - "shape":"String", - "documentation":"

Indicates that the DB instance should be associated with the specified option group.

Permanent options, such as the TDE option for Oracle Advanced Security TDE, cannot be removed from an option group, and that option group cannot be removed from a DB instance once it is associated with a DB instance

" - }, - "CharacterSetName":{ - "shape":"String", - "documentation":"

For supported engines, indicates that the DB instance should be associated with the specified CharacterSet.

" - }, - "PubliclyAccessible":{ - "shape":"BooleanOptional", - "documentation":"

Specifies the accessibility options for the DB instance. A value of true specifies an Internet-facing instance with a publicly resolvable DNS name, which resolves to a public IP address. A value of false specifies an internal instance with a DNS name that resolves to a private IP address.

Default: The default behavior varies depending on whether a VPC has been requested or not. The following list shows the default behavior in each case.

If no DB subnet group has been specified as part of the request and the PubliclyAccessible value has not been set, the DB instance will be publicly accessible. If a specific DB subnet group has been specified as part of the request and the PubliclyAccessible value has not been set, the DB instance will be private.

" - }, - "Tags":{"shape":"TagList"}, - "StorageType":{ - "shape":"String", - "documentation":"

Specifies storage type to be associated with the DB Instance.

Valid values: standard | gp2 | io1

If you specify io1, you must also include a value for the Iops parameter.

" - }, - "TdeCredentialArn":{ - "shape":"String", - "documentation":"

The ARN from the Key Store with which to associate the instance for TDE encryption.

" - }, - "TdeCredentialPassword":{ - "shape":"String", - "documentation":"

The password for the given ARN from the Key Store in order to access the device.

" - } - }, - "documentation":"

" - }, - "CreateDBInstanceReadReplicaMessage":{ - "type":"structure", - "required":[ - "DBInstanceIdentifier", - "SourceDBInstanceIdentifier" - ], - "members":{ - "DBInstanceIdentifier":{ - "shape":"String", - "documentation":"

The DB instance identifier of the read replica. This is the unique key that identifies a DB instance. This parameter is stored as a lowercase string.

" - }, - "SourceDBInstanceIdentifier":{ - "shape":"String", - "documentation":"

The identifier of the DB instance that will act as the source for the read replica. Each DB instance can have up to five read replicas.

Constraints:

" - }, - "DBInstanceClass":{ - "shape":"String", - "documentation":"

The compute and memory capacity of the read replica.

Valid Values: db.m1.small | db.m1.medium | db.m1.large | db.m1.xlarge | db.m2.xlarge |db.m2.2xlarge | db.m2.4xlarge | db.m3.medium | db.m3.large | db.m3.xlarge | db.m3.2xlarge | db.r3.large | db.r3.xlarge | db.r3.2xlarge | db.r3.4xlarge | db.r3.8xlarge | db.t2.micro | db.t2.small | db.t2.medium

Default: Inherits from the source DB instance.

" - }, - "AvailabilityZone":{ - "shape":"String", - "documentation":"

The Amazon EC2 Availability Zone that the read replica will be created in.

Default: A random, system-chosen Availability Zone in the endpoint's region.

Example: us-east-1d

" - }, - "Port":{ - "shape":"IntegerOptional", - "documentation":"

The port number that the DB instance uses for connections.

Default: Inherits from the source DB instance

Valid Values: 1150-65535

" - }, - "AutoMinorVersionUpgrade":{ - "shape":"BooleanOptional", - "documentation":"

Indicates that minor engine upgrades will be applied automatically to the read replica during the maintenance window.

Default: Inherits from the source DB instance

" - }, - "Iops":{ - "shape":"IntegerOptional", - "documentation":"

The amount of Provisioned IOPS (input/output operations per second) to be initially allocated for the DB instance.

" - }, - "OptionGroupName":{ - "shape":"String", - "documentation":"

The option group the DB instance will be associated with. If omitted, the default option group for the engine specified will be used.

" - }, - "PubliclyAccessible":{ - "shape":"BooleanOptional", - "documentation":"

Specifies the accessibility options for the DB instance. A value of true specifies an Internet-facing instance with a publicly resolvable DNS name, which resolves to a public IP address. A value of false specifies an internal instance with a DNS name that resolves to a private IP address.

Default: The default behavior varies depending on whether a VPC has been requested or not. The following list shows the default behavior in each case.

If no DB subnet group has been specified as part of the request and the PubliclyAccessible value has not been set, the DB instance will be publicly accessible. If a specific DB subnet group has been specified as part of the request and the PubliclyAccessible value has not been set, the DB instance will be private.

" - }, - "Tags":{"shape":"TagList"}, - "DBSubnetGroupName":{ - "shape":"String", - "documentation":"

Specifies a DB subnet group for the DB instance. The new DB instance will be created in the VPC associated with the DB subnet group. If no DB subnet group is specified, then the new DB instance is not created in a VPC.

Constraints:

" - }, - "StorageType":{ - "shape":"String", - "documentation":"

Specifies storage type to be associated with the DB Instance read replica.

Valid values: standard | gp2 | io1

If you specify io1, you must also include a value for the Iops parameter.

" - } - } - }, - "CreateDBParameterGroupMessage":{ - "type":"structure", - "required":[ - "DBParameterGroupName", - "DBParameterGroupFamily", - "Description" - ], - "members":{ - "DBParameterGroupName":{ - "shape":"String", - "documentation":"

The name of the DB parameter group.

Constraints:

" - }, - "DBParameterGroupFamily":{ - "shape":"String", - "documentation":"

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 database engine and engine version compatible with that DB parameter group family.

" - }, - "Description":{ - "shape":"String", - "documentation":"

The description for the DB parameter group.

" - }, - "Tags":{"shape":"TagList"} - }, - "documentation":"

" - }, - "CreateDBSecurityGroupMessage":{ - "type":"structure", - "required":[ - "DBSecurityGroupName", - "DBSecurityGroupDescription" - ], - "members":{ - "DBSecurityGroupName":{ - "shape":"String", - "documentation":"

The name for the DB security group. This value is stored as a lowercase string.

Constraints:

Example: mysecuritygroup

" - }, - "DBSecurityGroupDescription":{ - "shape":"String", - "documentation":"

The description for the DB security group.

" - }, - "Tags":{"shape":"TagList"} - }, - "documentation":"

" - }, - "CreateDBSnapshotMessage":{ - "type":"structure", - "required":[ - "DBSnapshotIdentifier", - "DBInstanceIdentifier" - ], - "members":{ - "DBSnapshotIdentifier":{ - "shape":"String", - "documentation":"

The identifier for the DB snapshot.

Constraints:

Example: my-snapshot-id

" - }, - "DBInstanceIdentifier":{ - "shape":"String", - "documentation":"

The DB instance identifier. This is the unique key that identifies a DB instance.

Constraints:

" - }, - "Tags":{"shape":"TagList"} - }, - "documentation":"

" - }, - "CreateDBSubnetGroupMessage":{ - "type":"structure", - "required":[ - "DBSubnetGroupName", - "DBSubnetGroupDescription", - "SubnetIds" - ], - "members":{ - "DBSubnetGroupName":{ - "shape":"String", - "documentation":"

The name for the DB subnet group. This value is stored as a lowercase string.

Constraints: Must contain no more than 255 alphanumeric characters or hyphens. Must not be \"Default\".

Example: mySubnetgroup

" - }, - "DBSubnetGroupDescription":{ - "shape":"String", - "documentation":"

The description for the DB subnet group.

" - }, - "SubnetIds":{ - "shape":"SubnetIdentifierList", - "documentation":"

The EC2 Subnet IDs for the DB subnet group.

" - }, - "Tags":{"shape":"TagList"} - }, - "documentation":"

" - }, - "CreateEventSubscriptionMessage":{ - "type":"structure", - "required":[ - "SubscriptionName", - "SnsTopicArn" - ], - "members":{ - "SubscriptionName":{ - "shape":"String", - "documentation":"

The name of the subscription.

Constraints: The name must be less than 255 characters.

" - }, - "SnsTopicArn":{ - "shape":"String", - "documentation":"

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.

" - }, - "SourceType":{ - "shape":"String", - "documentation":"

The type of source that will be 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-parameter-group | db-security-group | db-snapshot

" - }, - "EventCategories":{ - "shape":"EventCategoriesList", - "documentation":"

A list of event categories for a SourceType that you want to subscribe to. You can see a list of the categories for a given SourceType in the Events topic in the Amazon RDS User Guide or by using the DescribeEventCategories action.

" - }, - "SourceIds":{ - "shape":"SourceIdsList", - "documentation":"

The list of identifiers of the event sources for which events will be 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 cannot end with a hyphen or contain two consecutive hyphens.

Constraints:

" - }, - "Enabled":{ - "shape":"BooleanOptional", - "documentation":"

A Boolean value; set to true to activate the subscription, set to false to create the subscription but not active it.

" - }, - "Tags":{"shape":"TagList"} - }, - "documentation":"

" - }, - "CreateOptionGroupMessage":{ - "type":"structure", - "required":[ - "OptionGroupName", - "EngineName", - "MajorEngineVersion", - "OptionGroupDescription" - ], - "members":{ - "OptionGroupName":{ - "shape":"String", - "documentation":"

Specifies the name of the option group to be created.

Constraints:

Example: myoptiongroup

" - }, - "EngineName":{ - "shape":"String", - "documentation":"

Specifies the name of the engine that this option group should be associated with.

" - }, - "MajorEngineVersion":{ - "shape":"String", - "documentation":"

Specifies the major version of the engine that this option group should be associated with.

" - }, - "OptionGroupDescription":{ - "shape":"String", - "documentation":"

The description of the option group.

" - }, - "Tags":{"shape":"TagList"} - }, - "documentation":"

" - }, - "DBEngineVersion":{ - "type":"structure", - "members":{ - "Engine":{ - "shape":"String", - "documentation":"

The name of the database engine.

" - }, - "EngineVersion":{ - "shape":"String", - "documentation":"

The version number of the database engine.

" - }, - "DBParameterGroupFamily":{ - "shape":"String", - "documentation":"

The name of the DB parameter group family for the database engine.

" - }, - "DBEngineDescription":{ - "shape":"String", - "documentation":"

The description of the database engine.

" - }, - "DBEngineVersionDescription":{ - "shape":"String", - "documentation":"

The description of the database engine version.

" - }, - "DefaultCharacterSet":{ - "shape":"CharacterSet", - "documentation":"

The default character set for new instances of this engine version, if the CharacterSetName parameter of the CreateDBInstance API is not specified.

" - }, - "SupportedCharacterSets":{ - "shape":"SupportedCharacterSetsList", - "documentation":"

A list of the character sets supported by this engine for the CharacterSetName parameter of the CreateDBInstance API.

" - } - }, - "documentation":"

This data type is used as a response element in the action DescribeDBEngineVersions.

" - }, - "DBEngineVersionList":{ - "type":"list", - "member":{ - "shape":"DBEngineVersion", - "locationName":"DBEngineVersion" - } - }, - "DBEngineVersionMessage":{ - "type":"structure", - "members":{ - "Marker":{ - "shape":"String", - "documentation":"

An optional pagination token provided by a previous request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords.

" - }, - "DBEngineVersions":{ - "shape":"DBEngineVersionList", - "documentation":"

A list of DBEngineVersion elements.

" - } - }, - "documentation":"

Contains the result of a successful invocation of the DescribeDBEngineVersions action.

" - }, - "DBInstance":{ - "type":"structure", - "members":{ - "DBInstanceIdentifier":{ - "shape":"String", - "documentation":"

Contains a user-supplied database identifier. This is the unique key that identifies a DB instance.

" - }, - "DBInstanceClass":{ - "shape":"String", - "documentation":"

Contains the name of the compute and memory capacity class of the DB instance.

" - }, - "Engine":{ - "shape":"String", - "documentation":"

Provides the name of the database engine to be used for this DB instance.

" - }, - "DBInstanceStatus":{ - "shape":"String", - "documentation":"

Specifies the current state of this database.

" - }, - "MasterUsername":{ - "shape":"String", - "documentation":"

Contains the master username for the DB instance.

" - }, - "DBName":{ - "shape":"String", - "documentation":"

The meaning of this parameter differs according to the database engine you use. For example, this value returns only MySQL information when returning values from CreateDBInstanceReadReplica since read replicas are only supported for MySQL.

MySQL

Contains the name of the initial database of this instance that was provided at create time, if one was specified when the DB instance was created. This same name is returned for the life of the DB instance.

Type: String

Oracle

Contains the Oracle System ID (SID) of the created DB instance. Not shown when the returned parameters do not apply to an Oracle DB instance.

" - }, - "Endpoint":{ - "shape":"Endpoint", - "documentation":"

Specifies the connection endpoint.

" - }, - "AllocatedStorage":{ - "shape":"Integer", - "documentation":"

Specifies the allocated storage size specified in gigabytes.

" - }, - "InstanceCreateTime":{ - "shape":"TStamp", - "documentation":"

Provides the date and time the DB instance was created.

" - }, - "PreferredBackupWindow":{ - "shape":"String", - "documentation":"

Specifies the daily time range during which automated backups are created if automated backups are enabled, as determined by the BackupRetentionPeriod.

" - }, - "BackupRetentionPeriod":{ - "shape":"Integer", - "documentation":"

Specifies the number of days for which automatic DB snapshots are retained.

" - }, - "DBSecurityGroups":{ - "shape":"DBSecurityGroupMembershipList", - "documentation":"

Provides List of DB security group elements containing only DBSecurityGroup.Name and DBSecurityGroup.Status subelements.

" - }, - "VpcSecurityGroups":{ - "shape":"VpcSecurityGroupMembershipList", - "documentation":"

Provides List of VPC security group elements that the DB instance belongs to.

" - }, - "DBParameterGroups":{ - "shape":"DBParameterGroupStatusList", - "documentation":"

Provides the list of DB parameter groups applied to this DB instance.

" - }, - "AvailabilityZone":{ - "shape":"String", - "documentation":"

Specifies the name of the Availability Zone the DB instance is located in.

" - }, - "DBSubnetGroup":{ - "shape":"DBSubnetGroup", - "documentation":"

Specifies information on the subnet group associated with the DB instance, including the name, description, and subnets in the subnet group.

" - }, - "PreferredMaintenanceWindow":{ - "shape":"String", - "documentation":"

Specifies the weekly time range (in UTC) during which system maintenance can occur.

" - }, - "PendingModifiedValues":{ - "shape":"PendingModifiedValues", - "documentation":"

Specifies that changes to the DB instance are pending. This element is only included when changes are pending. Specific changes are identified by subelements.

" - }, - "LatestRestorableTime":{ - "shape":"TStamp", - "documentation":"

Specifies the latest time to which a database can be restored with point-in-time restore.

" - }, - "MultiAZ":{ - "shape":"Boolean", - "documentation":"

Specifies if the DB instance is a Multi-AZ deployment.

" - }, - "EngineVersion":{ - "shape":"String", - "documentation":"

Indicates the database engine version.

" - }, - "AutoMinorVersionUpgrade":{ - "shape":"Boolean", - "documentation":"

Indicates that minor version patches are applied automatically.

" - }, - "ReadReplicaSourceDBInstanceIdentifier":{ - "shape":"String", - "documentation":"

Contains the identifier of the source DB instance if this DB instance is a read replica.

" - }, - "ReadReplicaDBInstanceIdentifiers":{ - "shape":"ReadReplicaDBInstanceIdentifierList", - "documentation":"

Contains one or more identifiers of the read replicas associated with this DB instance.

" - }, - "LicenseModel":{ - "shape":"String", - "documentation":"

License model information for this DB instance.

" - }, - "Iops":{ - "shape":"IntegerOptional", - "documentation":"

Specifies the Provisioned IOPS (I/O operations per second) value.

" - }, - "OptionGroupMemberships":{ - "shape":"OptionGroupMembershipList", - "documentation":"

Provides the list of option group memberships for this DB instance.

" - }, - "CharacterSetName":{ - "shape":"String", - "documentation":"

If present, specifies the name of the character set that this instance is associated with.

" - }, - "SecondaryAvailabilityZone":{ - "shape":"String", - "documentation":"

If present, specifies the name of the secondary Availability Zone for a DB instance with multi-AZ support.

" - }, - "PubliclyAccessible":{ - "shape":"Boolean", - "documentation":"

Specifies the accessibility options for the DB instance. A value of true specifies an Internet-facing instance with a publicly resolvable DNS name, which resolves to a public IP address. A value of false specifies an internal instance with a DNS name that resolves to a private IP address.

Default: The default behavior varies depending on whether a VPC has been requested or not. The following list shows the default behavior in each case.

If no DB subnet group has been specified as part of the request and the PubliclyAccessible value has not been set, the DB instance will be publicly accessible. If a specific DB subnet group has been specified as part of the request and the PubliclyAccessible value has not been set, the DB instance will be private.

" - }, - "StatusInfos":{ - "shape":"DBInstanceStatusInfoList", - "documentation":"

The status of a read replica. If the instance is not a read replica, this will be blank.

" - }, - "StorageType":{ - "shape":"String", - "documentation":"

Specifies storage type associated with DB Instance.

" - }, - "TdeCredentialArn":{ - "shape":"String", - "documentation":"

The ARN from the Key Store with which the instance is associated for TDE encryption.

" - } - }, - "wrapper":true, - "documentation":"

Contains the result of a successful invocation of the following actions:

This data type is used as a response element in the DescribeDBInstances action.

" - }, - "DBInstanceAlreadyExistsFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"DBInstanceAlreadyExists", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

User already has a DB instance with the given identifier.

" - }, - "DBInstanceList":{ - "type":"list", - "member":{ - "shape":"DBInstance", - "locationName":"DBInstance" - } - }, - "DBInstanceMessage":{ - "type":"structure", - "members":{ - "Marker":{ - "shape":"String", - "documentation":"

An optional pagination token provided by a previous request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords .

" - }, - "DBInstances":{ - "shape":"DBInstanceList", - "documentation":"

A list of DBInstance instances.

" - } - }, - "documentation":"

Contains the result of a successful invocation of the DescribeDBInstances action.

" - }, - "DBInstanceNotFoundFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"DBInstanceNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

DBInstanceIdentifier does not refer to an existing DB instance.

" - }, - "DBInstanceStatusInfo":{ - "type":"structure", - "members":{ - "StatusType":{ - "shape":"String", - "documentation":"

This value is currently \"read replication.\"

" - }, - "Normal":{ - "shape":"Boolean", - "documentation":"

Boolean value that is true if the instance is operating normally, or false if the instance is in an error state.

" - }, - "Status":{ - "shape":"String", - "documentation":"

Status of the DB instance. For a StatusType of read replica, the values can be replicating, error, stopped, or terminated.

" - }, - "Message":{ - "shape":"String", - "documentation":"

Details of the error if there is an error for the instance. If the instance is not in an error state, this value is blank.

" - } - }, - "documentation":"

Provides a list of status information for a DB instance.

" - }, - "DBInstanceStatusInfoList":{ - "type":"list", - "member":{ - "shape":"DBInstanceStatusInfo", - "locationName":"DBInstanceStatusInfo" - } - }, - "DBParameterGroup":{ - "type":"structure", - "members":{ - "DBParameterGroupName":{ - "shape":"String", - "documentation":"

Provides the name of the DB parameter group.

" - }, - "DBParameterGroupFamily":{ - "shape":"String", - "documentation":"

Provides the name of the DB parameter group family that this DB parameter group is compatible with.

" - }, - "Description":{ - "shape":"String", - "documentation":"

Provides the customer-specified description for this DB parameter group.

" - } - }, - "wrapper":true, - "documentation":"

Contains the result of a successful invocation of the CreateDBParameterGroup action.

This data type is used as a request parameter in the DeleteDBParameterGroup action, and as a response element in the DescribeDBParameterGroups action.

" - }, - "DBParameterGroupAlreadyExistsFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"DBParameterGroupAlreadyExists", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

A DB parameter group with the same name exists.

" - }, - "DBParameterGroupDetails":{ - "type":"structure", - "members":{ - "Parameters":{ - "shape":"ParametersList", - "documentation":"

A list of Parameter values.

" - }, - "Marker":{ - "shape":"String", - "documentation":"

An optional pagination token provided by a previous request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords.

" - } - }, - "documentation":"

Contains the result of a successful invocation of the DescribeDBParameters action.

" - }, - "DBParameterGroupList":{ - "type":"list", - "member":{ - "shape":"DBParameterGroup", - "locationName":"DBParameterGroup" - } - }, - "DBParameterGroupNameMessage":{ - "type":"structure", - "members":{ - "DBParameterGroupName":{ - "shape":"String", - "documentation":"

The name of the DB parameter group.

" - } - }, - "documentation":"

Contains the result of a successful invocation of the ModifyDBParameterGroup or ResetDBParameterGroup action.

" - }, - "DBParameterGroupNotFoundFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"DBParameterGroupNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

DBParameterGroupName does not refer to an existing DB parameter group.

" - }, - "DBParameterGroupQuotaExceededFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"DBParameterGroupQuotaExceeded", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Request would result in user exceeding the allowed number of DB parameter groups.

" - }, - "DBParameterGroupStatus":{ - "type":"structure", - "members":{ - "DBParameterGroupName":{ - "shape":"String", - "documentation":"

The name of the DP parameter group.

" - }, - "ParameterApplyStatus":{ - "shape":"String", - "documentation":"

The status of parameter updates.

" - } - }, - "documentation":"

The status of the DB parameter group.

This data type is used as a response element in the following actions:

" - }, - "DBParameterGroupStatusList":{ - "type":"list", - "member":{ - "shape":"DBParameterGroupStatus", - "locationName":"DBParameterGroup" - } - }, - "DBParameterGroupsMessage":{ - "type":"structure", - "members":{ - "Marker":{ - "shape":"String", - "documentation":"

An optional pagination token provided by a previous request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords.

" - }, - "DBParameterGroups":{ - "shape":"DBParameterGroupList", - "documentation":"

A list of DBParameterGroup instances.

" - } - }, - "documentation":"

Contains the result of a successful invocation of the DescribeDBParameterGroups action.

" - }, - "DBSecurityGroup":{ - "type":"structure", - "members":{ - "OwnerId":{ - "shape":"String", - "documentation":"

Provides the AWS ID of the owner of a specific DB security group.

" - }, - "DBSecurityGroupName":{ - "shape":"String", - "documentation":"

Specifies the name of the DB security group.

" - }, - "DBSecurityGroupDescription":{ - "shape":"String", - "documentation":"

Provides the description of the DB security group.

" - }, - "VpcId":{ - "shape":"String", - "documentation":"

Provides the VpcId of the DB security group.

" - }, - "EC2SecurityGroups":{ - "shape":"EC2SecurityGroupList", - "documentation":"

Contains a list of EC2SecurityGroup elements.

" - }, - "IPRanges":{ - "shape":"IPRangeList", - "documentation":"

Contains a list of IPRange elements.

" - } - }, - "wrapper":true, - "documentation":"

Contains the result of a successful invocation of the following actions:

This data type is used as a response element in the DescribeDBSecurityGroups action.

" - }, - "DBSecurityGroupAlreadyExistsFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"DBSecurityGroupAlreadyExists", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

A DB security group with the name specified in DBSecurityGroupName already exists.

" - }, - "DBSecurityGroupMembership":{ - "type":"structure", - "members":{ - "DBSecurityGroupName":{ - "shape":"String", - "documentation":"

The name of the DB security group.

" - }, - "Status":{ - "shape":"String", - "documentation":"

The status of the DB security group.

" - } - }, - "documentation":"

This data type is used as a response element in the following actions:

" - }, - "DBSecurityGroupMembershipList":{ - "type":"list", - "member":{ - "shape":"DBSecurityGroupMembership", - "locationName":"DBSecurityGroup" - } - }, - "DBSecurityGroupMessage":{ - "type":"structure", - "members":{ - "Marker":{ - "shape":"String", - "documentation":"

An optional pagination token provided by a previous request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords.

" - }, - "DBSecurityGroups":{ - "shape":"DBSecurityGroups", - "documentation":"

A list of DBSecurityGroup instances.

" - } - }, - "documentation":"

Contains the result of a successful invocation of the DescribeDBSecurityGroups action.

" - }, - "DBSecurityGroupNameList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"DBSecurityGroupName" - } - }, - "DBSecurityGroupNotFoundFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"DBSecurityGroupNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

DBSecurityGroupName does not refer to an existing DB security group.

" - }, - "DBSecurityGroupNotSupportedFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"DBSecurityGroupNotSupported", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

A DB security group is not allowed for this action.

" - }, - "DBSecurityGroupQuotaExceededFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"QuotaExceeded.DBSecurityGroup", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Request would result in user exceeding the allowed number of DB security groups.

" - }, - "DBSecurityGroups":{ - "type":"list", - "member":{ - "shape":"DBSecurityGroup", - "locationName":"DBSecurityGroup" - } - }, - "DBSnapshot":{ - "type":"structure", - "members":{ - "DBSnapshotIdentifier":{ - "shape":"String", - "documentation":"

Specifies the identifier for the DB snapshot.

" - }, - "DBInstanceIdentifier":{ - "shape":"String", - "documentation":"

Specifies the DB instance identifier of the DB instance this DB snapshot was created from.

" - }, - "SnapshotCreateTime":{ - "shape":"TStamp", - "documentation":"

Provides the time (UTC) when the snapshot was taken.

" - }, - "Engine":{ - "shape":"String", - "documentation":"

Specifies the name of the database engine.

" - }, - "AllocatedStorage":{ - "shape":"Integer", - "documentation":"

Specifies the allocated storage size in gigabytes (GB).

" - }, - "Status":{ - "shape":"String", - "documentation":"

Specifies the status of this DB snapshot.

" - }, - "Port":{ - "shape":"Integer", - "documentation":"

Specifies the port that the database engine was listening on at the time of the snapshot.

" - }, - "AvailabilityZone":{ - "shape":"String", - "documentation":"

Specifies the name of the Availability Zone the DB instance was located in at the time of the DB snapshot.

" - }, - "VpcId":{ - "shape":"String", - "documentation":"

Provides the Vpc Id associated with the DB snapshot.

" - }, - "InstanceCreateTime":{ - "shape":"TStamp", - "documentation":"

Specifies the time (UTC) when the snapshot was taken.

" - }, - "MasterUsername":{ - "shape":"String", - "documentation":"

Provides the master username for the DB snapshot.

" - }, - "EngineVersion":{ - "shape":"String", - "documentation":"

Specifies the version of the database engine.

" - }, - "LicenseModel":{ - "shape":"String", - "documentation":"

License model information for the restored DB instance.

" - }, - "SnapshotType":{ - "shape":"String", - "documentation":"

Provides the type of the DB snapshot.

" - }, - "Iops":{ - "shape":"IntegerOptional", - "documentation":"

Specifies the Provisioned IOPS (I/O operations per second) value of the DB instance at the time of the snapshot.

" - }, - "OptionGroupName":{ - "shape":"String", - "documentation":"

Provides the option group name for the DB snapshot.

" - }, - "PercentProgress":{ - "shape":"Integer", - "documentation":"

The percentage of the estimated data that has been transferred.

" - }, - "SourceRegion":{ - "shape":"String", - "documentation":"

The region that the DB snapshot was created in or copied from.

" - }, - "StorageType":{ - "shape":"String", - "documentation":"

Specifies storage type associated with DB Snapshot.

" - }, - "TdeCredentialArn":{ - "shape":"String", - "documentation":"

The ARN from the Key Store with which to associate the instance for TDE encryption.

" - } - }, - "wrapper":true, - "documentation":"

Contains the result of a successful invocation of the following actions:

This data type is used as a response element in the DescribeDBSnapshots action.

" - }, - "DBSnapshotAlreadyExistsFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"DBSnapshotAlreadyExists", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

DBSnapshotIdentifier is already used by an existing snapshot.

" - }, - "DBSnapshotList":{ - "type":"list", - "member":{ - "shape":"DBSnapshot", - "locationName":"DBSnapshot" - } - }, - "DBSnapshotMessage":{ - "type":"structure", - "members":{ - "Marker":{ - "shape":"String", - "documentation":"

An optional pagination token provided by a previous request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords.

" - }, - "DBSnapshots":{ - "shape":"DBSnapshotList", - "documentation":"

A list of DBSnapshot instances.

" - } - }, - "documentation":"

Contains the result of a successful invocation of the DescribeDBSnapshots action.

" - }, - "DBSnapshotNotFoundFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"DBSnapshotNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

DBSnapshotIdentifier does not refer to an existing DB snapshot.

" - }, - "DBSubnetGroup":{ - "type":"structure", - "members":{ - "DBSubnetGroupName":{ - "shape":"String", - "documentation":"

Specifies the name of the DB subnet group.

" - }, - "DBSubnetGroupDescription":{ - "shape":"String", - "documentation":"

Provides the description of the DB subnet group.

" - }, - "VpcId":{ - "shape":"String", - "documentation":"

Provides the VpcId of the DB subnet group.

" - }, - "SubnetGroupStatus":{ - "shape":"String", - "documentation":"

Provides the status of the DB subnet group.

" - }, - "Subnets":{ - "shape":"SubnetList", - "documentation":"

Contains a list of Subnet elements.

" - } - }, - "wrapper":true, - "documentation":"

Contains the result of a successful invocation of the following actions:

This data type is used as a response element in the DescribeDBSubnetGroups action.

" - }, - "DBSubnetGroupAlreadyExistsFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"DBSubnetGroupAlreadyExists", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

DBSubnetGroupName is already used by an existing DB subnet group.

" - }, - "DBSubnetGroupDoesNotCoverEnoughAZs":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"DBSubnetGroupDoesNotCoverEnoughAZs", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Subnets in the DB subnet group should cover at least two Availability Zones unless there is only one Availability Zone.

" - }, - "DBSubnetGroupMessage":{ - "type":"structure", - "members":{ - "Marker":{ - "shape":"String", - "documentation":"

An optional pagination token provided by a previous request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords.

" - }, - "DBSubnetGroups":{ - "shape":"DBSubnetGroups", - "documentation":"

A list of DBSubnetGroup instances.

" - } - }, - "documentation":"

Contains the result of a successful invocation of the DescribeDBSubnetGroups action.

" - }, - "DBSubnetGroupNotAllowedFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"DBSubnetGroupNotAllowedFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Indicates that the DBSubnetGroup should not be specified while creating read replicas that lie in the same region as the source instance.

" - }, - "DBSubnetGroupNotFoundFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"DBSubnetGroupNotFoundFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

DBSubnetGroupName does not refer to an existing DB subnet group.

" - }, - "DBSubnetGroupQuotaExceededFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"DBSubnetGroupQuotaExceeded", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Request would result in user exceeding the allowed number of DB subnet groups.

" - }, - "DBSubnetGroups":{ - "type":"list", - "member":{ - "shape":"DBSubnetGroup", - "locationName":"DBSubnetGroup" - } - }, - "DBSubnetQuotaExceededFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"DBSubnetQuotaExceededFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Request would result in user exceeding the allowed number of subnets in a DB subnet groups.

" - }, - "DBUpgradeDependencyFailureFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"DBUpgradeDependencyFailure", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The DB upgrade failed because a resource the DB depends on could not be modified.

" - }, - "DeleteDBInstanceMessage":{ - "type":"structure", - "required":["DBInstanceIdentifier"], - "members":{ - "DBInstanceIdentifier":{ - "shape":"String", - "documentation":"

The DB instance identifier for the DB instance to be deleted. This parameter isn't case sensitive.

Constraints:

" - }, - "SkipFinalSnapshot":{ - "shape":"Boolean", - "documentation":"

Determines whether a final DB snapshot is created before the DB instance is deleted. If true is specified, no DBSnapshot is created. If false is specified, a DB snapshot is created before the DB instance is deleted.

Specify true when deleting a read replica.

Default: false

" - }, - "FinalDBSnapshotIdentifier":{ - "shape":"String", - "documentation":"

The DBSnapshotIdentifier of the new DBSnapshot created when SkipFinalSnapshot is set to false.

Constraints:

" - } - }, - "documentation":"

" - }, - "DeleteDBParameterGroupMessage":{ - "type":"structure", - "required":["DBParameterGroupName"], - "members":{ - "DBParameterGroupName":{ - "shape":"String", - "documentation":"

The name of the DB parameter group.

Constraints:

" - } - }, - "documentation":"

" - }, - "DeleteDBSecurityGroupMessage":{ - "type":"structure", - "required":["DBSecurityGroupName"], - "members":{ - "DBSecurityGroupName":{ - "shape":"String", - "documentation":"

The name of the DB security group to delete.

Constraints:

" - } - }, - "documentation":"

" - }, - "DeleteDBSnapshotMessage":{ - "type":"structure", - "required":["DBSnapshotIdentifier"], - "members":{ - "DBSnapshotIdentifier":{ - "shape":"String", - "documentation":"

The DBSnapshot identifier.

Constraints: Must be the name of an existing DB snapshot in the available state.

" - } - }, - "documentation":"

" - }, - "DeleteDBSubnetGroupMessage":{ - "type":"structure", - "required":["DBSubnetGroupName"], - "members":{ - "DBSubnetGroupName":{ - "shape":"String", - "documentation":"

The name of the database subnet group to delete.

Constraints:

" - } - }, - "documentation":"

" - }, - "DeleteEventSubscriptionMessage":{ - "type":"structure", - "required":["SubscriptionName"], - "members":{ - "SubscriptionName":{ - "shape":"String", - "documentation":"

The name of the RDS event notification subscription you want to delete.

" - } - }, - "documentation":"

" - }, - "DeleteOptionGroupMessage":{ - "type":"structure", - "required":["OptionGroupName"], - "members":{ - "OptionGroupName":{ - "shape":"String", - "documentation":"

The name of the option group to be deleted.

" - } - }, - "documentation":"

" - }, - "DescribeDBEngineVersionsMessage":{ - "type":"structure", - "members":{ - "Engine":{ - "shape":"String", - "documentation":"

The database engine to return.

" - }, - "EngineVersion":{ - "shape":"String", - "documentation":"

The database engine version to return.

Example: 5.1.49

" - }, - "DBParameterGroupFamily":{ - "shape":"String", - "documentation":"

The name of a specific DB parameter group family to return details for.

Constraints:

" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

Not currently supported.

" - }, - "MaxRecords":{ - "shape":"IntegerOptional", - "documentation":"

The maximum number of records to include in the response. If more than the MaxRecords value is available, a pagination token called a marker is included in the response so that the following results can be retrieved.

Default: 100

Constraints: minimum 20, maximum 100

" - }, - "Marker":{ - "shape":"String", - "documentation":"

An optional pagination token provided by a previous request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords.

" - }, - "DefaultOnly":{ - "shape":"Boolean", - "documentation":"

Indicates that only the default version of the specified engine or engine and major version combination is returned.

" - }, - "ListSupportedCharacterSets":{ - "shape":"BooleanOptional", - "documentation":"

If this parameter is specified, and if the requested engine supports the CharacterSetName parameter for CreateDBInstance, the response includes a list of supported character sets for each engine version.

" - } - } - }, - "DescribeDBInstancesMessage":{ - "type":"structure", - "members":{ - "DBInstanceIdentifier":{ - "shape":"String", - "documentation":"

The user-supplied instance identifier. If this parameter is specified, information from only the specific DB instance is returned. This parameter isn't case sensitive.

Constraints:

" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

This parameter is not currently supported.

" - }, - "MaxRecords":{ - "shape":"IntegerOptional", - "documentation":"

The maximum number of records to include in the response. If more records exist than the specified MaxRecords value, a pagination token called a marker is included in the response so that the remaining results may be retrieved.

Default: 100

Constraints: minimum 20, maximum 100

" - }, - "Marker":{ - "shape":"String", - "documentation":"

An optional pagination token provided by a previous DescribeDBInstances request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords .

" - } - }, - "documentation":"

" - }, - "DescribeDBLogFilesDetails":{ - "type":"structure", - "members":{ - "LogFileName":{ - "shape":"String", - "documentation":"

The name of the log file for the specified DB instance.

" - }, - "LastWritten":{ - "shape":"Long", - "documentation":"

A POSIX timestamp when the last log entry was written.

" - }, - "Size":{ - "shape":"Long", - "documentation":"

The size, in bytes, of the log file for the specified DB instance.

" - } - }, - "documentation":"

This data type is used as a response element to DescribeDBLogFiles.

" - }, - "DescribeDBLogFilesList":{ - "type":"list", - "member":{ - "shape":"DescribeDBLogFilesDetails", - "locationName":"DescribeDBLogFilesDetails" - } - }, - "DescribeDBLogFilesMessage":{ - "type":"structure", - "required":["DBInstanceIdentifier"], - "members":{ - "DBInstanceIdentifier":{ - "shape":"String", - "documentation":"

The customer-assigned name of the DB instance that contains the log files you want to list.

Constraints:

" - }, - "FilenameContains":{ - "shape":"String", - "documentation":"

Filters the available log files for log file names that contain the specified string.

" - }, - "FileLastWritten":{ - "shape":"Long", - "documentation":"

Filters the available log files for files written since the specified date, in POSIX timestamp format.

" - }, - "FileSize":{ - "shape":"Long", - "documentation":"

Filters the available log files for files larger than the specified size.

" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

This parameter is not currently supported.

" - }, - "MaxRecords":{ - "shape":"IntegerOptional", - "documentation":"

The maximum number of records to include in the response. If more records exist than the specified MaxRecords value, a pagination token called a marker is included in the response so that the remaining results can be retrieved.

" - }, - "Marker":{ - "shape":"String", - "documentation":"

The pagination token provided in the previous request. If this parameter is specified the response includes only records beyond the marker, up to MaxRecords.

" - } - }, - "documentation":"

" - }, - "DescribeDBLogFilesResponse":{ - "type":"structure", - "members":{ - "DescribeDBLogFiles":{ - "shape":"DescribeDBLogFilesList", - "documentation":"

The DB log files returned.

" - }, - "Marker":{ - "shape":"String", - "documentation":"

A pagination token that can be used in a subsequent DescribeDBLogFiles request.

" - } - }, - "documentation":"

The response from a call to DescribeDBLogFiles.

" - }, - "DescribeDBParameterGroupsMessage":{ - "type":"structure", - "members":{ - "DBParameterGroupName":{ - "shape":"String", - "documentation":"

The name of a specific DB parameter group to return details for.

Constraints:

" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

This parameter is not currently supported.

" - }, - "MaxRecords":{ - "shape":"IntegerOptional", - "documentation":"

The maximum number of records to include in the response. If more records exist than the specified MaxRecords value, a pagination token called a marker is included in the response so that the remaining results may be retrieved.

Default: 100

Constraints: minimum 20, maximum 100

" - }, - "Marker":{ - "shape":"String", - "documentation":"

An optional pagination token provided by a previous DescribeDBParameterGroups request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords.

" - } - }, - "documentation":"

" - }, - "DescribeDBParametersMessage":{ - "type":"structure", - "required":["DBParameterGroupName"], - "members":{ - "DBParameterGroupName":{ - "shape":"String", - "documentation":"

The name of a specific DB parameter group to return details for.

Constraints:

" - }, - "Source":{ - "shape":"String", - "documentation":"

The parameter types to return.

Default: All parameter types returned

Valid Values: user | system | engine-default

" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

This parameter is not currently supported.

" - }, - "MaxRecords":{ - "shape":"IntegerOptional", - "documentation":"

The maximum number of records to include in the response. If more records exist than the specified MaxRecords value, a pagination token called a marker is included in the response so that the remaining results may be retrieved.

Default: 100

Constraints: minimum 20, maximum 100

" - }, - "Marker":{ - "shape":"String", - "documentation":"

An optional pagination token provided by a previous DescribeDBParameters request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords.

" - } - } - }, - "DescribeDBSecurityGroupsMessage":{ - "type":"structure", - "members":{ - "DBSecurityGroupName":{ - "shape":"String", - "documentation":"

The name of the DB security group to return details for.

" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

This parameter is not currently supported.

" - }, - "MaxRecords":{ - "shape":"IntegerOptional", - "documentation":"

The maximum number of records to include in the response. If more records exist than the specified MaxRecords value, a pagination token called a marker is included in the response so that the remaining results may be retrieved.

Default: 100

Constraints: minimum 20, maximum 100

" - }, - "Marker":{ - "shape":"String", - "documentation":"

An optional pagination token provided by a previous DescribeDBSecurityGroups request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords.

" - } - }, - "documentation":"

" - }, - "DescribeDBSnapshotsMessage":{ - "type":"structure", - "members":{ - "DBInstanceIdentifier":{ - "shape":"String", - "documentation":"

A DB instance identifier to retrieve the list of DB snapshots for. Cannot be used in conjunction with DBSnapshotIdentifier. This parameter is not case sensitive.

Constraints:

" - }, - "DBSnapshotIdentifier":{ - "shape":"String", - "documentation":"

A specific DB snapshot identifier to describe. Cannot be used in conjunction with DBInstanceIdentifier. This value is stored as a lowercase string.

Constraints:

" - }, - "SnapshotType":{ - "shape":"String", - "documentation":"

The type of snapshots that will be returned. Values can be \"automated\" or \"manual.\" If not specified, the returned results will include all snapshots types.

" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

This parameter is not currently supported.

" - }, - "MaxRecords":{ - "shape":"IntegerOptional", - "documentation":"

The maximum number of records to include in the response. If more records exist than the specified MaxRecords value, a pagination token called a marker is included in the response so that the remaining results may be retrieved.

Default: 100

Constraints: minimum 20, maximum 100

" - }, - "Marker":{ - "shape":"String", - "documentation":"

An optional pagination token provided by a previous DescribeDBSnapshots request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords.

" - } - }, - "documentation":"

" - }, - "DescribeDBSubnetGroupsMessage":{ - "type":"structure", - "members":{ - "DBSubnetGroupName":{ - "shape":"String", - "documentation":"

The name of the DB subnet group to return details for.

" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

This parameter is not currently supported.

" - }, - "MaxRecords":{ - "shape":"IntegerOptional", - "documentation":"

The maximum number of records to include in the response. If more records exist than the specified MaxRecords value, a pagination token called a marker is included in the response so that the remaining results may be retrieved.

Default: 100

Constraints: minimum 20, maximum 100

" - }, - "Marker":{ - "shape":"String", - "documentation":"

An optional pagination token provided by a previous DescribeDBSubnetGroups request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords.

" - } - }, - "documentation":"

" - }, - "DescribeEngineDefaultParametersMessage":{ - "type":"structure", - "required":["DBParameterGroupFamily"], - "members":{ - "DBParameterGroupFamily":{ - "shape":"String", - "documentation":"

The name of the DB parameter group family.

" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

Not currently supported.

" - }, - "MaxRecords":{ - "shape":"IntegerOptional", - "documentation":"

The maximum number of records to include in the response. If more records exist than the specified MaxRecords value, a pagination token called a marker is included in the response so that the remaining results may be retrieved.

Default: 100

Constraints: minimum 20, maximum 100

" - }, - "Marker":{ - "shape":"String", - "documentation":"

An optional pagination token provided by a previous DescribeEngineDefaultParameters request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords.

" - } - }, - "documentation":"

" - }, - "DescribeEventCategoriesMessage":{ - "type":"structure", - "members":{ - "SourceType":{ - "shape":"String", - "documentation":"

The type of source that will be generating the events.

Valid values: db-instance | db-parameter-group | db-security-group | db-snapshot

" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

This parameter is not currently supported.

" - } - }, - "documentation":"

" - }, - "DescribeEventSubscriptionsMessage":{ - "type":"structure", - "members":{ - "SubscriptionName":{ - "shape":"String", - "documentation":"

The name of the RDS event notification subscription you want to describe.

" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

This parameter is not currently supported.

" - }, - "MaxRecords":{ - "shape":"IntegerOptional", - "documentation":"

The maximum number of records to include in the response. If more records exist than the specified MaxRecords value, a pagination token called a marker is included in the response so that the remaining results can be retrieved.

Default: 100

Constraints: minimum 20, maximum 100

" - }, - "Marker":{ - "shape":"String", - "documentation":"

An optional pagination token provided by a previous DescribeOrderableDBInstanceOptions request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords .

" - } - }, - "documentation":"

" - }, - "DescribeEventsMessage":{ - "type":"structure", - "members":{ - "SourceIdentifier":{ - "shape":"String", - "documentation":"

The identifier of the event source for which events will be returned. If not specified, then all sources are included in the response.

Constraints:

" - }, - "SourceType":{ - "shape":"SourceType", - "documentation":"

The event source to retrieve events for. If no value is specified, all events are returned.

" - }, - "StartTime":{ - "shape":"TStamp", - "documentation":"

The beginning of the time interval to retrieve events for, specified in ISO 8601 format. For more information about ISO 8601, go to the ISO8601 Wikipedia page.

Example: 2009-07-08T18:00Z

" - }, - "EndTime":{ - "shape":"TStamp", - "documentation":"

The end of the time interval for which to retrieve events, specified in ISO 8601 format. For more information about ISO 8601, go to the ISO8601 Wikipedia page.

Example: 2009-07-08T18:00Z

" - }, - "Duration":{ - "shape":"IntegerOptional", - "documentation":"

The number of minutes to retrieve events for.

Default: 60

" - }, - "EventCategories":{ - "shape":"EventCategoriesList", - "documentation":"

A list of event categories that trigger notifications for a event notification subscription.

" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

This parameter is not currently supported.

" - }, - "MaxRecords":{ - "shape":"IntegerOptional", - "documentation":"

The maximum number of records to include in the response. If more records exist than the specified MaxRecords value, a pagination token called a marker is included in the response so that the remaining results may be retrieved.

Default: 100

Constraints: minimum 20, maximum 100

" - }, - "Marker":{ - "shape":"String", - "documentation":"

An optional pagination token provided by a previous DescribeEvents request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords.

" - } - }, - "documentation":"

" - }, - "DescribeOptionGroupOptionsMessage":{ - "type":"structure", - "required":["EngineName"], - "members":{ - "EngineName":{ - "shape":"String", - "documentation":"

A required parameter. Options available for the given Engine name will be described.

" - }, - "MajorEngineVersion":{ - "shape":"String", - "documentation":"

If specified, filters the results to include only options for the specified major engine version.

" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

This parameter is not currently supported.

" - }, - "MaxRecords":{ - "shape":"IntegerOptional", - "documentation":"

The maximum number of records to include in the response. If more records exist than the specified MaxRecords value, a pagination token called a marker is included in the response so that the remaining results can be retrieved.

Default: 100

Constraints: minimum 20, maximum 100

" - }, - "Marker":{ - "shape":"String", - "documentation":"

An optional pagination token provided by a previous request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords.

" - } - }, - "documentation":"

" - }, - "DescribeOptionGroupsMessage":{ - "type":"structure", - "members":{ - "OptionGroupName":{ - "shape":"String", - "documentation":"

The name of the option group to describe. Cannot be supplied together with EngineName or MajorEngineVersion.

" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

This parameter is not currently supported.

" - }, - "Marker":{ - "shape":"String", - "documentation":"

An optional pagination token provided by a previous DescribeOptionGroups request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords.

" - }, - "MaxRecords":{ - "shape":"IntegerOptional", - "documentation":"

The maximum number of records to include in the response. If more records exist than the specified MaxRecords value, a pagination token called a marker is included in the response so that the remaining results can be retrieved.

Default: 100

Constraints: minimum 20, maximum 100

" - }, - "EngineName":{ - "shape":"String", - "documentation":"

Filters the list of option groups to only include groups associated with a specific database engine.

" - }, - "MajorEngineVersion":{ - "shape":"String", - "documentation":"

Filters the list of option groups to only include groups associated with a specific database engine version. If specified, then EngineName must also be specified.

" - } - }, - "documentation":"

" - }, - "DescribeOrderableDBInstanceOptionsMessage":{ - "type":"structure", - "required":["Engine"], - "members":{ - "Engine":{ - "shape":"String", - "documentation":"

The name of the engine to retrieve DB instance options for.

" - }, - "EngineVersion":{ - "shape":"String", - "documentation":"

The engine version filter value. Specify this parameter to show only the available offerings matching the specified engine version.

" - }, - "DBInstanceClass":{ - "shape":"String", - "documentation":"

The DB instance class filter value. Specify this parameter to show only the available offerings matching the specified DB instance class.

" - }, - "LicenseModel":{ - "shape":"String", - "documentation":"

The license model filter value. Specify this parameter to show only the available offerings matching the specified license model.

" - }, - "Vpc":{ - "shape":"BooleanOptional", - "documentation":"

The VPC filter value. Specify this parameter to show only the available VPC or non-VPC offerings.

" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

This parameter is not currently supported.

" - }, - "MaxRecords":{ - "shape":"IntegerOptional", - "documentation":"

The maximum number of records to include in the response. If more records exist than the specified MaxRecords value, a pagination token called a marker is included in the response so that the remaining results can be retrieved.

Default: 100

Constraints: minimum 20, maximum 100

" - }, - "Marker":{ - "shape":"String", - "documentation":"

An optional pagination token provided by a previous DescribeOrderableDBInstanceOptions request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords .

" - } - }, - "documentation":"

" - }, - "DescribeReservedDBInstancesMessage":{ - "type":"structure", - "members":{ - "ReservedDBInstanceId":{ - "shape":"String", - "documentation":"

The reserved DB instance identifier filter value. Specify this parameter to show only the reservation that matches the specified reservation ID.

" - }, - "ReservedDBInstancesOfferingId":{ - "shape":"String", - "documentation":"

The offering identifier filter value. Specify this parameter to show only purchased reservations matching the specified offering identifier.

" - }, - "DBInstanceClass":{ - "shape":"String", - "documentation":"

The DB instance class filter value. Specify this parameter to show only those reservations matching the specified DB instances class.

" - }, - "Duration":{ - "shape":"String", - "documentation":"

The duration filter value, specified in years or seconds. Specify this parameter to show only reservations for this duration.

Valid Values: 1 | 3 | 31536000 | 94608000

" - }, - "ProductDescription":{ - "shape":"String", - "documentation":"

The product description filter value. Specify this parameter to show only those reservations matching the specified product description.

" - }, - "OfferingType":{ - "shape":"String", - "documentation":"

The offering type filter value. Specify this parameter to show only the available offerings matching the specified offering type.

Valid Values: \"Light Utilization\" | \"Medium Utilization\" | \"Heavy Utilization\"

" - }, - "MultiAZ":{ - "shape":"BooleanOptional", - "documentation":"

The Multi-AZ filter value. Specify this parameter to show only those reservations matching the specified Multi-AZ parameter.

" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

This parameter is not currently supported.

" - }, - "MaxRecords":{ - "shape":"IntegerOptional", - "documentation":"

The maximum number of records to include in the response. If more than the MaxRecords value is available, a pagination token called a marker is included in the response so that the following results can be retrieved.

Default: 100

Constraints: minimum 20, maximum 100

" - }, - "Marker":{ - "shape":"String", - "documentation":"

An optional pagination token provided by a previous request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords.

" - } - }, - "documentation":"

" - }, - "DescribeReservedDBInstancesOfferingsMessage":{ - "type":"structure", - "members":{ - "ReservedDBInstancesOfferingId":{ - "shape":"String", - "documentation":"

The offering identifier filter value. Specify this parameter to show only the available offering that matches the specified reservation identifier.

Example: 438012d3-4052-4cc7-b2e3-8d3372e0e706

" - }, - "DBInstanceClass":{ - "shape":"String", - "documentation":"

The DB instance class filter value. Specify this parameter to show only the available offerings matching the specified DB instance class.

" - }, - "Duration":{ - "shape":"String", - "documentation":"

Duration filter value, specified in years or seconds. Specify this parameter to show only reservations for this duration.

Valid Values: 1 | 3 | 31536000 | 94608000

" - }, - "ProductDescription":{ - "shape":"String", - "documentation":"

Product description filter value. Specify this parameter to show only the available offerings matching the specified product description.

" - }, - "OfferingType":{ - "shape":"String", - "documentation":"

The offering type filter value. Specify this parameter to show only the available offerings matching the specified offering type.

Valid Values: \"Light Utilization\" | \"Medium Utilization\" | \"Heavy Utilization\"

" - }, - "MultiAZ":{ - "shape":"BooleanOptional", - "documentation":"

The Multi-AZ filter value. Specify this parameter to show only the available offerings matching the specified Multi-AZ parameter.

" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

This parameter is not currently supported.

" - }, - "MaxRecords":{ - "shape":"IntegerOptional", - "documentation":"

The maximum number of records to include in the response. If more than the MaxRecords value is available, a pagination token called a marker is included in the response so that the following results can be retrieved.

Default: 100

Constraints: minimum 20, maximum 100

" - }, - "Marker":{ - "shape":"String", - "documentation":"

An optional pagination token provided by a previous request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords.

" - } - }, - "documentation":"

" - }, - "Double":{"type":"double"}, - "DownloadDBLogFilePortionDetails":{ - "type":"structure", - "members":{ - "LogFileData":{ - "shape":"String", - "documentation":"

Entries from the specified log file.

" - }, - "Marker":{ - "shape":"String", - "documentation":"

A pagination token that can be used in a subsequent DownloadDBLogFilePortion request.

" - }, - "AdditionalDataPending":{ - "shape":"Boolean", - "documentation":"

Boolean value that if true, indicates there is more data to be downloaded.

" - } - }, - "documentation":"

This data type is used as a response element to DownloadDBLogFilePortion.

" - }, - "DownloadDBLogFilePortionMessage":{ - "type":"structure", - "required":[ - "DBInstanceIdentifier", - "LogFileName" - ], - "members":{ - "DBInstanceIdentifier":{ - "shape":"String", - "documentation":"

The customer-assigned name of the DB instance that contains the log files you want to list.

Constraints:

" - }, - "LogFileName":{ - "shape":"String", - "documentation":"

The name of the log file to be downloaded.

" - }, - "Marker":{ - "shape":"String", - "documentation":"

The pagination token provided in the previous request or \"0\". If the Marker parameter is specified the response includes only records beyond the marker until the end of the file or up to NumberOfLines.

" - }, - "NumberOfLines":{ - "shape":"Integer", - "documentation":"

The number of lines to download.

If the NumberOfLines parameter is specified, then the block of lines returned can be from the beginning or the end of the log file, depending on the value of the Marker parameter.

" - } - }, - "documentation":"

" - }, - "EC2SecurityGroup":{ - "type":"structure", - "members":{ - "Status":{ - "shape":"String", - "documentation":"

Provides the status of the EC2 security group. Status can be \"authorizing\", \"authorized\", \"revoking\", and \"revoked\".

" - }, - "EC2SecurityGroupName":{ - "shape":"String", - "documentation":"

Specifies the name of the EC2 security group.

" - }, - "EC2SecurityGroupId":{ - "shape":"String", - "documentation":"

Specifies the id of the EC2 security group.

" - }, - "EC2SecurityGroupOwnerId":{ - "shape":"String", - "documentation":"

Specifies the AWS ID of the owner of the EC2 security group specified in the EC2SecurityGroupName field.

" - } - }, - "documentation":"

This data type is used as a response element in the following actions:

" - }, - "EC2SecurityGroupList":{ - "type":"list", - "member":{ - "shape":"EC2SecurityGroup", - "locationName":"EC2SecurityGroup" - } - }, - "Endpoint":{ - "type":"structure", - "members":{ - "Address":{ - "shape":"String", - "documentation":"

Specifies the DNS address of the DB instance.

" - }, - "Port":{ - "shape":"Integer", - "documentation":"

Specifies the port that the database engine is listening on.

" - } - }, - "documentation":"

This data type is used as a response element in the following actions:

" - }, - "EngineDefaults":{ - "type":"structure", - "members":{ - "DBParameterGroupFamily":{ - "shape":"String", - "documentation":"

Specifies the name of the DB parameter group family which the engine default parameters apply to.

" - }, - "Marker":{ - "shape":"String", - "documentation":"

An optional pagination token provided by a previous EngineDefaults request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords .

" - }, - "Parameters":{ - "shape":"ParametersList", - "documentation":"

Contains a list of engine default parameters.

" - } - }, - "wrapper":true, - "documentation":"

Contains the result of a successful invocation of the DescribeEngineDefaultParameters action.

" - }, - "Event":{ - "type":"structure", - "members":{ - "SourceIdentifier":{ - "shape":"String", - "documentation":"

Provides the identifier for the source of the event.

" - }, - "SourceType":{ - "shape":"SourceType", - "documentation":"

Specifies the source type for this event.

" - }, - "Message":{ - "shape":"String", - "documentation":"

Provides the text of this event.

" - }, - "EventCategories":{ - "shape":"EventCategoriesList", - "documentation":"

Specifies the category for the event.

" - }, - "Date":{ - "shape":"TStamp", - "documentation":"

Specifies the date and time of the event.

" - } - }, - "documentation":"

This data type is used as a response element in the DescribeEvents action.

" - }, - "EventCategoriesList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"EventCategory" - } - }, - "EventCategoriesMap":{ - "type":"structure", - "members":{ - "SourceType":{ - "shape":"String", - "documentation":"

The source type that the returned categories belong to

" - }, - "EventCategories":{ - "shape":"EventCategoriesList", - "documentation":"

The event categories for the specified source type

" - } - }, - "wrapper":true, - "documentation":"

Contains the results of a successful invocation of the DescribeEventCategories action.

" - }, - "EventCategoriesMapList":{ - "type":"list", - "member":{ - "shape":"EventCategoriesMap", - "locationName":"EventCategoriesMap" - } - }, - "EventCategoriesMessage":{ - "type":"structure", - "members":{ - "EventCategoriesMapList":{ - "shape":"EventCategoriesMapList", - "documentation":"

A list of EventCategoriesMap data types.

" - } - }, - "documentation":"

Data returned from the DescribeEventCategories action.

" - }, - "EventList":{ - "type":"list", - "member":{ - "shape":"Event", - "locationName":"Event" - } - }, - "EventSubscription":{ - "type":"structure", - "members":{ - "CustomerAwsId":{ - "shape":"String", - "documentation":"

The AWS customer account associated with the RDS event notification subscription.

" - }, - "CustSubscriptionId":{ - "shape":"String", - "documentation":"

The RDS event notification subscription Id.

" - }, - "SnsTopicArn":{ - "shape":"String", - "documentation":"

The topic ARN of the RDS event notification subscription.

" - }, - "Status":{ - "shape":"String", - "documentation":"

The status of the RDS event notification subscription.

Constraints:

Can be one of the following: creating | modifying | deleting | active | no-permission | topic-not-exist

The status \"no-permission\" indicates that RDS no longer has permission to post to the SNS topic. The status \"topic-not-exist\" indicates that the topic was deleted after the subscription was created.

" - }, - "SubscriptionCreationTime":{ - "shape":"String", - "documentation":"

The time the RDS event notification subscription was created.

" - }, - "SourceType":{ - "shape":"String", - "documentation":"

The source type for the RDS event notification subscription.

" - }, - "SourceIdsList":{ - "shape":"SourceIdsList", - "documentation":"

A list of source IDs for the RDS event notification subscription.

" - }, - "EventCategoriesList":{ - "shape":"EventCategoriesList", - "documentation":"

A list of event categories for the RDS event notification subscription.

" - }, - "Enabled":{ - "shape":"Boolean", - "documentation":"

A Boolean value indicating if the subscription is enabled. True indicates the subscription is enabled.

" - } - }, - "wrapper":true, - "documentation":"

Contains the results of a successful invocation of the DescribeEventSubscriptions action.

" - }, - "EventSubscriptionQuotaExceededFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"EventSubscriptionQuotaExceeded", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

You have reached the maximum number of event subscriptions.

" - }, - "EventSubscriptionsList":{ - "type":"list", - "member":{ - "shape":"EventSubscription", - "locationName":"EventSubscription" - } - }, - "EventSubscriptionsMessage":{ - "type":"structure", - "members":{ - "Marker":{ - "shape":"String", - "documentation":"

An optional pagination token provided by a previous DescribeOrderableDBInstanceOptions request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords.

" - }, - "EventSubscriptionsList":{ - "shape":"EventSubscriptionsList", - "documentation":"

A list of EventSubscriptions data types.

" - } - }, - "documentation":"

Data returned by the DescribeEventSubscriptions action.

" - }, - "EventsMessage":{ - "type":"structure", - "members":{ - "Marker":{ - "shape":"String", - "documentation":"

An optional pagination token provided by a previous Events request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords .

" - }, - "Events":{ - "shape":"EventList", - "documentation":"

A list of Event instances.

" - } - }, - "documentation":"

Contains the result of a successful invocation of the DescribeEvents action.

" - }, - "Filter":{ - "type":"structure", - "required":[ - "Name", - "Values" - ], - "members":{ - "Name":{ - "shape":"String", - "documentation":"

This parameter is not currently supported.

" - }, - "Values":{ - "shape":"FilterValueList", - "documentation":"

This parameter is not currently supported.

" - } - } - }, - "FilterList":{ - "type":"list", - "member":{ - "shape":"Filter", - "locationName":"Filter" - } - }, - "FilterValueList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"Value" - } - }, - "IPRange":{ - "type":"structure", - "members":{ - "Status":{ - "shape":"String", - "documentation":"

Specifies the status of the IP range. Status can be \"authorizing\", \"authorized\", \"revoking\", and \"revoked\".

" - }, - "CIDRIP":{ - "shape":"String", - "documentation":"

Specifies the IP range.

" - } - }, - "documentation":"

This data type is used as a response element in the DescribeDBSecurityGroups action.

" - }, - "IPRangeList":{ - "type":"list", - "member":{ - "shape":"IPRange", - "locationName":"IPRange" - } - }, - "InstanceQuotaExceededFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"InstanceQuotaExceeded", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Request would result in user exceeding the allowed number of DB instances.

" - }, - "InsufficientDBInstanceCapacityFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"InsufficientDBInstanceCapacity", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Specified DB instance class is not available in the specified Availability Zone.

" - }, - "Integer":{"type":"integer"}, - "IntegerOptional":{"type":"integer"}, - "InvalidDBInstanceStateFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"InvalidDBInstanceState", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified DB instance is not in the available state.

" - }, - "InvalidDBParameterGroupStateFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"InvalidDBParameterGroupState", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The DB parameter group cannot be deleted because it is in use.

" - }, - "InvalidDBSecurityGroupStateFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"InvalidDBSecurityGroupState", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The state of the DB security group does not allow deletion.

" - }, - "InvalidDBSnapshotStateFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"InvalidDBSnapshotState", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The state of the DB snapshot does not allow deletion.

" - }, - "InvalidDBSubnetGroupFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"InvalidDBSubnetGroupFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Indicates the DBSubnetGroup does not belong to the same VPC as that of an existing cross region read replica of the same source instance.

" - }, - "InvalidDBSubnetGroupStateFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"InvalidDBSubnetGroupStateFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The DB subnet group cannot be deleted because it is in use.

" - }, - "InvalidDBSubnetStateFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"InvalidDBSubnetStateFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The DB subnet is not in the available state.

" - }, - "InvalidEventSubscriptionStateFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"InvalidEventSubscriptionState", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

This error can occur if someone else is modifying a subscription. You should retry the action.

" - }, - "InvalidOptionGroupStateFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"InvalidOptionGroupStateFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The option group is not in the available state.

" - }, - "InvalidRestoreFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"InvalidRestoreFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Cannot restore from vpc backup to non-vpc DB instance.

" - }, - "InvalidSubnet":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"InvalidSubnet", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The requested subnet is invalid, or multiple subnets were requested that are not all in a common VPC.

" - }, - "InvalidVPCNetworkStateFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"InvalidVPCNetworkStateFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

DB subnet group does not cover all Availability Zones after it is created because users' change.

" - }, - "KeyList":{ - "type":"list", - "member":{"shape":"String"} - }, - "ListTagsForResourceMessage":{ - "type":"structure", - "required":["ResourceName"], - "members":{ - "ResourceName":{ - "shape":"String", - "documentation":"

The Amazon RDS resource with tags to be listed. This value is an Amazon Resource Name (ARN). For information about creating an ARN, see Constructing an RDS Amazon Resource Name (ARN).

" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

This parameter is not currently supported.

" - } - }, - "documentation":"

" - }, - "Long":{"type":"long"}, - "ModifyDBInstanceMessage":{ - "type":"structure", - "required":["DBInstanceIdentifier"], - "members":{ - "DBInstanceIdentifier":{ - "shape":"String", - "documentation":"

The DB instance identifier. This value is stored as a lowercase string.

Constraints:

" - }, - "AllocatedStorage":{ - "shape":"IntegerOptional", - "documentation":"

The new storage capacity of the RDS instance. Changing this setting does not result in an outage and the change is applied during the next maintenance window unless ApplyImmediately is set to true for this request.

MySQL

Default: Uses existing setting

Valid Values: 5-3072

Constraints: Value supplied must be at least 10% greater than the current value. Values that are not at least 10% greater than the existing value are rounded up so that they are 10% greater than the current value.

Type: Integer

PostgreSQL

Default: Uses existing setting

Valid Values: 5-3072

Constraints: Value supplied must be at least 10% greater than the current value. Values that are not at least 10% greater than the existing value are rounded up so that they are 10% greater than the current value.

Type: Integer

Oracle

Default: Uses existing setting

Valid Values: 10-3072

Constraints: Value supplied must be at least 10% greater than the current value. Values that are not at least 10% greater than the existing value are rounded up so that they are 10% greater than the current value.

SQL Server

Cannot be modified.

If you choose to migrate your DB instance from using standard storage to using Provisioned IOPS, or from using Provisioned IOPS to using standard storage, the process can take time. The duration of the migration depends on several factors such as database load, storage size, storage type (standard or Provisioned IOPS), amount of IOPS provisioned (if any), and the number of prior scale storage operations. Typical migration times are under 24 hours, but the process can take up to several days in some cases. During the migration, the DB instance will be available for use, but may experience performance degradation. While the migration takes place, nightly backups for the instance will be suspended. No other Amazon RDS operations can take place for the instance, including modifying the instance, rebooting the instance, deleting the instance, creating a read replica for the instance, and creating a DB snapshot of the instance.

" - }, - "DBInstanceClass":{ - "shape":"String", - "documentation":"

The new compute and memory capacity of the DB instance. To determine the instance classes that are available for a particular DB engine, use the DescribeOrderableDBInstanceOptions action.

Passing a value for this setting causes an outage during the change and is applied during the next maintenance window, unless ApplyImmediately is specified as true for this request.

Default: Uses existing setting

Valid Values: db.t1.micro | db.m1.small | db.m1.medium | db.m1.large | db.m1.xlarge | db.m2.xlarge | db.m2.2xlarge | db.m2.4xlarge | db.m3.medium | db.m3.large | db.m3.xlarge | db.m3.2xlarge | db.r3.large | db.r3.xlarge | db.r3.2xlarge | db.r3.4xlarge | db.r3.8xlarge | db.t2.micro | db.t2.small | db.t2.medium

" - }, - "DBSecurityGroups":{ - "shape":"DBSecurityGroupNameList", - "documentation":"

A list of DB security groups to authorize on this DB instance. Changing this setting does not result in an outage and the change is asynchronously applied as soon as possible.

Constraints:

" - }, - "VpcSecurityGroupIds":{ - "shape":"VpcSecurityGroupIdList", - "documentation":"

A list of EC2 VPC security groups to authorize on this DB instance. This change is asynchronously applied as soon as possible.

Constraints:

" - }, - "ApplyImmediately":{ - "shape":"Boolean", - "documentation":"

Specifies whether the modifications in this request and any pending modifications are asynchronously applied as soon as possible, regardless of the PreferredMaintenanceWindow setting for the DB instance.

If this parameter is set to false, changes to the DB instance are applied during the next maintenance window. Some parameter changes can cause an outage and will be applied on the next call to RebootDBInstance, or the next failure reboot. Review the table of parameters in Modifying a DB Instance and Using the Apply Immediately Parameter to see the impact that setting ApplyImmediately to true or false has for each modified parameter and to determine when the changes will be applied.

Default: false

" - }, - "MasterUserPassword":{ - "shape":"String", - "documentation":"

The new password for the DB instance master user. Can be any printable ASCII character except \"/\", \"\"\", or \"@\".

Changing this parameter does not result in an outage and the change is asynchronously applied as soon as possible. Between the time of the request and the completion of the request, the MasterUserPassword element exists in the PendingModifiedValues element of the operation response.

Default: Uses existing setting

Constraints: Must be 8 to 41 alphanumeric characters (MySQL), 8 to 30 alphanumeric characters (Oracle), or 8 to 128 alphanumeric characters (SQL Server).

" - }, - "DBParameterGroupName":{ - "shape":"String", - "documentation":"

The name of the DB parameter group to apply to the DB instance. Changing this setting does not result in an outage. The parameter group name itself is changed immediately, but the actual parameter changes are not applied until you reboot the instance without failover. The db instance will NOT be rebooted automatically and the parameter changes will NOT be applied during the next maintenance window.

Default: Uses existing setting

Constraints: The DB parameter group must be in the same DB parameter group family as this DB instance.

" - }, - "BackupRetentionPeriod":{ - "shape":"IntegerOptional", - "documentation":"

The number of days to retain automated backups. Setting this parameter to a positive number enables backups. Setting this parameter to 0 disables automated backups.

Changing this parameter can result in an outage if you change from 0 to a non-zero value or from a non-zero value to 0. These changes are applied during the next maintenance window unless the ApplyImmediately parameter is set to true for this request. If you change the parameter from one non-zero value to another non-zero value, the change is asynchronously applied as soon as possible.

Default: Uses existing setting

Constraints:

" - }, - "PreferredBackupWindow":{ - "shape":"String", - "documentation":"

The daily time range during which automated backups are created if automated backups are enabled, as determined by the BackupRetentionPeriod. Changing this parameter does not result in an outage and the change is asynchronously applied as soon as possible.

Constraints:

" - }, - "PreferredMaintenanceWindow":{ - "shape":"String", - "documentation":"

The weekly time range (in UTC) during which system maintenance can occur, which may result in an outage. Changing this parameter does not result in an outage, except in the following situation, and the change is asynchronously applied as soon as possible. If there are pending actions that cause a reboot, and the maintenance window is changed to include the current time, then changing this parameter will cause a reboot of the DB instance. If moving this window to the current time, there must be at least 30 minutes between the current time and end of the window to ensure pending changes are applied.

Default: Uses existing setting

Format: ddd:hh24:mi-ddd:hh24:mi

Valid Days: Mon | Tue | Wed | Thu | Fri | Sat | Sun

Constraints: Must be at least 30 minutes

" - }, - "MultiAZ":{ - "shape":"BooleanOptional", - "documentation":"

Specifies if the DB instance is a Multi-AZ deployment. Changing this parameter does not result in an outage and the change is applied during the next maintenance window unless the ApplyImmediately parameter is set to true for this request.

Constraints: Cannot be specified if the DB instance is a read replica.

" - }, - "EngineVersion":{ - "shape":"String", - "documentation":"

The version number of the database engine to upgrade to. Changing this parameter results in an outage and the change is applied during the next maintenance window unless the ApplyImmediately parameter is set to true for this request.

For major version upgrades, if a non-default DB parameter group is currently in use, a new DB parameter group in the DB parameter group family for the new engine version must be specified. The new DB parameter group can be the default for that DB parameter group family.

Example: 5.1.42

" - }, - "AllowMajorVersionUpgrade":{ - "shape":"Boolean", - "documentation":"

Indicates that major version upgrades are allowed. Changing this parameter does not result in an outage and the change is asynchronously applied as soon as possible.

Constraints: This parameter must be set to true when specifying a value for the EngineVersion parameter that is a different major version than the DB instance's current version.

" - }, - "AutoMinorVersionUpgrade":{ - "shape":"BooleanOptional", - "documentation":"

Indicates that minor version upgrades will be applied automatically to the DB instance during the maintenance window. Changing this parameter does not result in an outage except in the following case and the change is asynchronously applied as soon as possible. An outage will result if this parameter is set to true during the maintenance window, and a newer minor version is available, and RDS has enabled auto patching for that engine version.

" - }, - "Iops":{ - "shape":"IntegerOptional", - "documentation":"

The new Provisioned IOPS (I/O operations per second) value for the RDS instance. Changing this setting does not result in an outage and the change is applied during the next maintenance window unless the ApplyImmediately parameter is set to true for this request.

Default: Uses existing setting

Constraints: Value supplied must be at least 10% greater than the current value. Values that are not at least 10% greater than the existing value are rounded up so that they are 10% greater than the current value. If you are migrating from Provisioned IOPS to standard storage, set this value to 0. The DB instance will require a reboot for the change in storage type to take effect.

SQL Server

Setting the IOPS value for the SQL Server database engine is not supported.

Type: Integer

If you choose to migrate your DB instance from using standard storage to using Provisioned IOPS, or from using Provisioned IOPS to using standard storage, the process can take time. The duration of the migration depends on several factors such as database load, storage size, storage type (standard or Provisioned IOPS), amount of IOPS provisioned (if any), and the number of prior scale storage operations. Typical migration times are under 24 hours, but the process can take up to several days in some cases. During the migration, the DB instance will be available for use, but may experience performance degradation. While the migration takes place, nightly backups for the instance will be suspended. No other Amazon RDS operations can take place for the instance, including modifying the instance, rebooting the instance, deleting the instance, creating a read replica for the instance, and creating a DB snapshot of the instance.

" - }, - "OptionGroupName":{ - "shape":"String", - "documentation":"

Indicates that the DB instance should be associated with the specified option group. Changing this parameter does not result in an outage except in the following case and the change is applied during the next maintenance window unless the ApplyImmediately parameter is set to true for this request. If the parameter change results in an option group that enables OEM, this change can cause a brief (sub-second) period during which new connections are rejected but existing connections are not interrupted.

Permanent options, such as the TDE option for Oracle Advanced Security TDE, cannot be removed from an option group, and that option group cannot be removed from a DB instance once it is associated with a DB instance

" - }, - "NewDBInstanceIdentifier":{ - "shape":"String", - "documentation":"

The new DB instance identifier for the DB instance when renaming a DB instance. When you change the DB instance identifier, an instance reboot will occur immediately if you set Apply Immediately to true, or will occur during the next maintenance window if Apply Immediately to false. This value is stored as a lowercase string.

Constraints:

" - }, - "StorageType":{ - "shape":"String", - "documentation":"

Specifies storage type to be associated with the DB Instance.

Valid values: standard | gp2 | io1

If you specify io1, you must also include a value for the Iops parameter.

" - }, - "TdeCredentialArn":{ - "shape":"String", - "documentation":"

The ARN from the Key Store with which to associate the instance for TDE encryption.

" - }, - "TdeCredentialPassword":{ - "shape":"String", - "documentation":"

The password for the given ARN from the Key Store in order to access the device.

" - } - }, - "documentation":"

" - }, - "ModifyDBParameterGroupMessage":{ - "type":"structure", - "required":[ - "DBParameterGroupName", - "Parameters" - ], - "members":{ - "DBParameterGroupName":{ - "shape":"String", - "documentation":"

The name of the DB parameter group.

Constraints:

" - }, - "Parameters":{ - "shape":"ParametersList", - "documentation":"

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. A maximum of 20 parameters may be modified in a single request.

Valid Values (for the application method): immediate | pending-reboot

" - } - }, - "documentation":"

" - }, - "ModifyDBSubnetGroupMessage":{ - "type":"structure", - "required":[ - "DBSubnetGroupName", - "SubnetIds" - ], - "members":{ - "DBSubnetGroupName":{ - "shape":"String", - "documentation":"

The name for the DB subnet group. This value is stored as a lowercase string.

Constraints: Must contain no more than 255 alphanumeric characters or hyphens. Must not be \"Default\".

Example: mySubnetgroup

" - }, - "DBSubnetGroupDescription":{ - "shape":"String", - "documentation":"

The description for the DB subnet group.

" - }, - "SubnetIds":{ - "shape":"SubnetIdentifierList", - "documentation":"

The EC2 subnet IDs for the DB subnet group.

" - } - }, - "documentation":"

" - }, - "ModifyEventSubscriptionMessage":{ - "type":"structure", - "required":["SubscriptionName"], - "members":{ - "SubscriptionName":{ - "shape":"String", - "documentation":"

The name of the RDS event notification subscription.

" - }, - "SnsTopicArn":{ - "shape":"String", - "documentation":"

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.

" - }, - "SourceType":{ - "shape":"String", - "documentation":"

The type of source that will be 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-parameter-group | db-security-group | db-snapshot

" - }, - "EventCategories":{ - "shape":"EventCategoriesList", - "documentation":"

A list of event categories for a SourceType that you want to subscribe to. You can see a list of the categories for a given SourceType in the Events topic in the Amazon RDS User Guide or by using the DescribeEventCategories action.

" - }, - "Enabled":{ - "shape":"BooleanOptional", - "documentation":"

A Boolean value; set to true to activate the subscription.

" - } - }, - "documentation":"

" - }, - "ModifyOptionGroupMessage":{ - "type":"structure", - "required":["OptionGroupName"], - "members":{ - "OptionGroupName":{ - "shape":"String", - "documentation":"

The name of the option group to be modified.

Permanent options, such as the TDE option for Oracle Advanced Security TDE, cannot be removed from an option group, and that option group cannot be removed from a DB instance once it is associated with a DB instance

" - }, - "OptionsToInclude":{ - "shape":"OptionConfigurationList", - "documentation":"

Options in this list are added to the option group or, if already present, the specified configuration is used to update the existing configuration.

" - }, - "OptionsToRemove":{ - "shape":"OptionNamesList", - "documentation":"

Options in this list are removed from the option group.

" - }, - "ApplyImmediately":{ - "shape":"Boolean", - "documentation":"

Indicates whether the changes should be applied immediately, or during the next maintenance window for each instance associated with the option group.

" - } - }, - "documentation":"

" - }, - "Option":{ - "type":"structure", - "members":{ - "OptionName":{ - "shape":"String", - "documentation":"

The name of the option.

" - }, - "OptionDescription":{ - "shape":"String", - "documentation":"

The description of the option.

" - }, - "Persistent":{ - "shape":"Boolean", - "documentation":"

Indicate if this option is persistent.

" - }, - "Permanent":{ - "shape":"Boolean", - "documentation":"

Indicate if this option is permanent.

" - }, - "Port":{ - "shape":"IntegerOptional", - "documentation":"

If required, the port configured for this option to use.

" - }, - "OptionSettings":{ - "shape":"OptionSettingConfigurationList", - "documentation":"

The option settings for this option.

" - }, - "DBSecurityGroupMemberships":{ - "shape":"DBSecurityGroupMembershipList", - "documentation":"

If the option requires access to a port, then this DB security group allows access to the port.

" - }, - "VpcSecurityGroupMemberships":{ - "shape":"VpcSecurityGroupMembershipList", - "documentation":"

If the option requires access to a port, then this VPC security group allows access to the port.

" - } - }, - "documentation":"

Option details.

" - }, - "OptionConfiguration":{ - "type":"structure", - "required":["OptionName"], - "members":{ - "OptionName":{ - "shape":"String", - "documentation":"

The configuration of options to include in a group.

" - }, - "Port":{ - "shape":"IntegerOptional", - "documentation":"

The optional port for the option.

" - }, - "DBSecurityGroupMemberships":{ - "shape":"DBSecurityGroupNameList", - "documentation":"

A list of DBSecurityGroupMemebrship name strings used for this option.

" - }, - "VpcSecurityGroupMemberships":{ - "shape":"VpcSecurityGroupIdList", - "documentation":"

A list of VpcSecurityGroupMemebrship name strings used for this option.

" - }, - "OptionSettings":{ - "shape":"OptionSettingsList", - "documentation":"

The option settings to include in an option group.

" - } - }, - "documentation":"

A list of all available options

" - }, - "OptionConfigurationList":{ - "type":"list", - "member":{ - "shape":"OptionConfiguration", - "locationName":"OptionConfiguration" - } - }, - "OptionGroup":{ - "type":"structure", - "members":{ - "OptionGroupName":{ - "shape":"String", - "documentation":"

Specifies the name of the option group.

" - }, - "OptionGroupDescription":{ - "shape":"String", - "documentation":"

Provides the description of the option group.

" - }, - "EngineName":{ - "shape":"String", - "documentation":"

Engine name that this option group can be applied to.

" - }, - "MajorEngineVersion":{ - "shape":"String", - "documentation":"

Indicates the major engine version associated with this option group.

" - }, - "Options":{ - "shape":"OptionsList", - "documentation":"

Indicates what options are available in the option group.

" - }, - "AllowsVpcAndNonVpcInstanceMemberships":{ - "shape":"Boolean", - "documentation":"

Indicates whether this option group can be applied to both VPC and non-VPC instances. The value 'true' indicates the option group can be applied to both VPC and non-VPC instances.

" - }, - "VpcId":{ - "shape":"String", - "documentation":"

If AllowsVpcAndNonVpcInstanceMemberships is 'false', this field is blank. If AllowsVpcAndNonVpcInstanceMemberships is 'true' and this field is blank, then this option group can be applied to both VPC and non-VPC instances. If this field contains a value, then this option group can only be applied to instances that are in the VPC indicated by this field.

" - } - }, - "wrapper":true, - "documentation":"

" - }, - "OptionGroupAlreadyExistsFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"OptionGroupAlreadyExistsFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The option group you are trying to create already exists.

" - }, - "OptionGroupMembership":{ - "type":"structure", - "members":{ - "OptionGroupName":{ - "shape":"String", - "documentation":"

The name of the option group that the instance belongs to.

" - }, - "Status":{ - "shape":"String", - "documentation":"

The status of the DB instance's option group membership (e.g. in-sync, pending, pending-maintenance, applying).

" - } - }, - "documentation":"

Provides information on the option groups the DB instance is a member of.

" - }, - "OptionGroupMembershipList":{ - "type":"list", - "member":{ - "shape":"OptionGroupMembership", - "locationName":"OptionGroupMembership" - } - }, - "OptionGroupNotFoundFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"OptionGroupNotFoundFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified option group could not be found.

" - }, - "OptionGroupOption":{ - "type":"structure", - "members":{ - "Name":{ - "shape":"String", - "documentation":"

The name of the option.

" - }, - "Description":{ - "shape":"String", - "documentation":"

The description of the option.

" - }, - "EngineName":{ - "shape":"String", - "documentation":"

Engine name that this option can be applied to.

" - }, - "MajorEngineVersion":{ - "shape":"String", - "documentation":"

Indicates the major engine version that the option is available for.

" - }, - "MinimumRequiredMinorEngineVersion":{ - "shape":"String", - "documentation":"

The minimum required engine version for the option to be applied.

" - }, - "PortRequired":{ - "shape":"Boolean", - "documentation":"

Specifies whether the option requires a port.

" - }, - "DefaultPort":{ - "shape":"IntegerOptional", - "documentation":"

If the option requires a port, specifies the default port for the option.

" - }, - "OptionsDependedOn":{ - "shape":"OptionsDependedOn", - "documentation":"

List of all options that are prerequisites for this option.

" - }, - "Persistent":{ - "shape":"Boolean", - "documentation":"

A persistent option cannot be removed from the option group once the option group is used, but this option can be removed from the db instance while modifying the related data and assigning another option group without this option.

" - }, - "Permanent":{ - "shape":"Boolean", - "documentation":"

A permanent option cannot be removed from the option group once the option group is used, and it cannot be removed from the db instance after assigning an option group with this permanent option.

" - }, - "OptionGroupOptionSettings":{ - "shape":"OptionGroupOptionSettingsList", - "documentation":"

Specifies the option settings that are available (and the default value) for each option in an option group.

" - } - }, - "documentation":"

Available option.

" - }, - "OptionGroupOptionSetting":{ - "type":"structure", - "members":{ - "SettingName":{ - "shape":"String", - "documentation":"

The name of the option group option.

" - }, - "SettingDescription":{ - "shape":"String", - "documentation":"

The description of the option group option.

" - }, - "DefaultValue":{ - "shape":"String", - "documentation":"

The default value for the option group option.

" - }, - "ApplyType":{ - "shape":"String", - "documentation":"

The DB engine specific parameter type for the option group option.

" - }, - "AllowedValues":{ - "shape":"String", - "documentation":"

Indicates the acceptable values for the option group option.

" - }, - "IsModifiable":{ - "shape":"Boolean", - "documentation":"

Boolean value where true indicates that this option group option can be changed from the default value.

" - } - }, - "documentation":"

option group option settings are used to display settings available for each option with their default values and other information. These values are used with the DescribeOptionGroupOptions action.

" - }, - "OptionGroupOptionSettingsList":{ - "type":"list", - "member":{ - "shape":"OptionGroupOptionSetting", - "locationName":"OptionGroupOptionSetting" - } - }, - "OptionGroupOptionsList":{ - "type":"list", - "member":{ - "shape":"OptionGroupOption", - "locationName":"OptionGroupOption" - }, - "documentation":"

List of available option group options.

" - }, - "OptionGroupOptionsMessage":{ - "type":"structure", - "members":{ - "OptionGroupOptions":{"shape":"OptionGroupOptionsList"}, - "Marker":{ - "shape":"String", - "documentation":"

An optional pagination token provided by a previous request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords.

" - } - }, - "documentation":"

" - }, - "OptionGroupQuotaExceededFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"OptionGroupQuotaExceededFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The quota of 20 option groups was exceeded for this AWS account.

" - }, - "OptionGroups":{ - "type":"structure", - "members":{ - "OptionGroupsList":{ - "shape":"OptionGroupsList", - "documentation":"

List of option groups.

" - }, - "Marker":{ - "shape":"String", - "documentation":"

An optional pagination token provided by a previous request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords.

" - } - }, - "documentation":"

List of option groups.

" - }, - "OptionGroupsList":{ - "type":"list", - "member":{ - "shape":"OptionGroup", - "locationName":"OptionGroup" - } - }, - "OptionNamesList":{ - "type":"list", - "member":{"shape":"String"} - }, - "OptionSetting":{ - "type":"structure", - "members":{ - "Name":{ - "shape":"String", - "documentation":"

The name of the option that has settings that you can set.

" - }, - "Value":{ - "shape":"String", - "documentation":"

The current value of the option setting.

" - }, - "DefaultValue":{ - "shape":"String", - "documentation":"

The default value of the option setting.

" - }, - "Description":{ - "shape":"String", - "documentation":"

The description of the option setting.

" - }, - "ApplyType":{ - "shape":"String", - "documentation":"

The DB engine specific parameter type.

" - }, - "DataType":{ - "shape":"String", - "documentation":"

The data type of the option setting.

" - }, - "AllowedValues":{ - "shape":"String", - "documentation":"

The allowed values of the option setting.

" - }, - "IsModifiable":{ - "shape":"Boolean", - "documentation":"

A Boolean value that, when true, indicates the option setting can be modified from the default.

" - }, - "IsCollection":{ - "shape":"Boolean", - "documentation":"

Indicates if the option setting is part of a collection.

" - } - }, - "documentation":"

Option settings are the actual settings being applied or configured for that option. It is used when you modify an option group or describe option groups. For example, the NATIVE_NETWORK_ENCRYPTION option has a setting called SQLNET.ENCRYPTION_SERVER that can have several different values.

" - }, - "OptionSettingConfigurationList":{ - "type":"list", - "member":{ - "shape":"OptionSetting", - "locationName":"OptionSetting" - } - }, - "OptionSettingsList":{ - "type":"list", - "member":{ - "shape":"OptionSetting", - "locationName":"OptionSetting" - } - }, - "OptionsDependedOn":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"OptionName" - } - }, - "OptionsList":{ - "type":"list", - "member":{ - "shape":"Option", - "locationName":"Option" - } - }, - "OrderableDBInstanceOption":{ - "type":"structure", - "members":{ - "Engine":{ - "shape":"String", - "documentation":"

The engine type of the orderable DB instance.

" - }, - "EngineVersion":{ - "shape":"String", - "documentation":"

The engine version of the orderable DB instance.

" - }, - "DBInstanceClass":{ - "shape":"String", - "documentation":"

The DB instance Class for the orderable DB instance

" - }, - "LicenseModel":{ - "shape":"String", - "documentation":"

The license model for the orderable DB instance.

" - }, - "AvailabilityZones":{ - "shape":"AvailabilityZoneList", - "documentation":"

A list of availability zones for the orderable DB instance.

" - }, - "MultiAZCapable":{ - "shape":"Boolean", - "documentation":"

Indicates whether this orderable DB instance is multi-AZ capable.

" - }, - "ReadReplicaCapable":{ - "shape":"Boolean", - "documentation":"

Indicates whether this orderable DB instance can have a read replica.

" - }, - "Vpc":{ - "shape":"Boolean", - "documentation":"

Indicates whether this is a VPC orderable DB instance.

" - }, - "StorageType":{ - "shape":"String", - "documentation":"

The storage type for this orderable DB instance.

" - }, - "SupportsIops":{ - "shape":"Boolean", - "documentation":"

Indicates whether this orderable DB instance supports provisioned IOPS.

" - } - }, - "wrapper":true, - "documentation":"

Contains a list of available options for a DB instance

This data type is used as a response element in the DescribeOrderableDBInstanceOptions action.

" - }, - "OrderableDBInstanceOptionsList":{ - "type":"list", - "member":{ - "shape":"OrderableDBInstanceOption", - "locationName":"OrderableDBInstanceOption" - } - }, - "OrderableDBInstanceOptionsMessage":{ - "type":"structure", - "members":{ - "OrderableDBInstanceOptions":{ - "shape":"OrderableDBInstanceOptionsList", - "documentation":"

An OrderableDBInstanceOption structure containing information about orderable options for the DB instance.

" - }, - "Marker":{ - "shape":"String", - "documentation":"

An optional pagination token provided by a previous OrderableDBInstanceOptions request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords .

" - } - }, - "documentation":"

Contains the result of a successful invocation of the DescribeOrderableDBInstanceOptions action.

" - }, - "Parameter":{ - "type":"structure", - "members":{ - "ParameterName":{ - "shape":"String", - "documentation":"

Specifies the name of the parameter.

" - }, - "ParameterValue":{ - "shape":"String", - "documentation":"

Specifies the value of the parameter.

" - }, - "Description":{ - "shape":"String", - "documentation":"

Provides a description of the parameter.

" - }, - "Source":{ - "shape":"String", - "documentation":"

Indicates the source of the parameter value.

" - }, - "ApplyType":{ - "shape":"String", - "documentation":"

Specifies the engine specific parameters type.

" - }, - "DataType":{ - "shape":"String", - "documentation":"

Specifies the valid data type for the parameter.

" - }, - "AllowedValues":{ - "shape":"String", - "documentation":"

Specifies the valid range of values for the parameter.

" - }, - "IsModifiable":{ - "shape":"Boolean", - "documentation":"

Indicates whether (true) or not (false) the parameter can be modified. Some parameters have security or operational implications that prevent them from being changed.

" - }, - "MinimumEngineVersion":{ - "shape":"String", - "documentation":"

The earliest engine version to which the parameter can apply.

" - }, - "ApplyMethod":{ - "shape":"ApplyMethod", - "documentation":"

Indicates when to apply parameter updates.

" - } - }, - "documentation":"

This data type is used as a request parameter in the ModifyDBParameterGroup and ResetDBParameterGroup actions.

This data type is used as a response element in the DescribeEngineDefaultParameters and DescribeDBParameters actions.

" - }, - "ParametersList":{ - "type":"list", - "member":{ - "shape":"Parameter", - "locationName":"Parameter" - } - }, - "PendingModifiedValues":{ - "type":"structure", - "members":{ - "DBInstanceClass":{ - "shape":"String", - "documentation":"

Contains the new DBInstanceClass for the DB instance that will be applied or is in progress.

" - }, - "AllocatedStorage":{ - "shape":"IntegerOptional", - "documentation":"

Contains the new AllocatedStorage size for the DB instance that will be applied or is in progress.

" - }, - "MasterUserPassword":{ - "shape":"String", - "documentation":"

Contains the pending or in-progress change of the master credentials for the DB instance.

" - }, - "Port":{ - "shape":"IntegerOptional", - "documentation":"

Specifies the pending port for the DB instance.

" - }, - "BackupRetentionPeriod":{ - "shape":"IntegerOptional", - "documentation":"

Specifies the pending number of days for which automated backups are retained.

" - }, - "MultiAZ":{ - "shape":"BooleanOptional", - "documentation":"

Indicates that the Single-AZ DB instance is to change to a Multi-AZ deployment.

" - }, - "EngineVersion":{ - "shape":"String", - "documentation":"

Indicates the database engine version.

" - }, - "Iops":{ - "shape":"IntegerOptional", - "documentation":"

Specifies the new Provisioned IOPS value for the DB instance that will be applied or is being applied.

" - }, - "DBInstanceIdentifier":{ - "shape":"String", - "documentation":"

Contains the new DBInstanceIdentifier for the DB instance that will be applied or is in progress.

" - }, - "StorageType":{ - "shape":"String", - "documentation":"

Specifies storage type to be associated with the DB instance.

" - } - }, - "documentation":"

This data type is used as a response element in the ModifyDBInstance action.

" - }, - "PointInTimeRestoreNotEnabledFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"PointInTimeRestoreNotEnabled", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

SourceDBInstanceIdentifier refers to a DB instance with BackupRetentionPeriod equal to 0.

" - }, - "PromoteReadReplicaMessage":{ - "type":"structure", - "required":["DBInstanceIdentifier"], - "members":{ - "DBInstanceIdentifier":{ - "shape":"String", - "documentation":"

The DB instance identifier. This value is stored as a lowercase string.

Constraints:

Example: mydbinstance

" - }, - "BackupRetentionPeriod":{ - "shape":"IntegerOptional", - "documentation":"

The number of days to retain automated backups. Setting this parameter to a positive number enables backups. Setting this parameter to 0 disables automated backups.

Default: 1

Constraints:

" - }, - "PreferredBackupWindow":{ - "shape":"String", - "documentation":"

The daily time range during which automated backups are created if automated backups are enabled, using the BackupRetentionPeriod parameter.

Default: A 30-minute window selected at random from an 8-hour block of time per region. See the Amazon RDS User Guide for the time blocks for each region from which the default backup windows are assigned.

Constraints: Must be in the format hh24:mi-hh24:mi. Times should be Universal Time Coordinated (UTC). Must not conflict with the preferred maintenance window. Must be at least 30 minutes.

" - } - }, - "documentation":"

" - }, - "ProvisionedIopsNotAvailableInAZFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"ProvisionedIopsNotAvailableInAZFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Provisioned IOPS not available in the specified Availability Zone.

" - }, - "PurchaseReservedDBInstancesOfferingMessage":{ - "type":"structure", - "required":["ReservedDBInstancesOfferingId"], - "members":{ - "ReservedDBInstancesOfferingId":{ - "shape":"String", - "documentation":"

The ID of the Reserved DB instance offering to purchase.

Example: 438012d3-4052-4cc7-b2e3-8d3372e0e706

" - }, - "ReservedDBInstanceId":{ - "shape":"String", - "documentation":"

Customer-specified identifier to track this reservation.

Example: myreservationID

" - }, - "DBInstanceCount":{ - "shape":"IntegerOptional", - "documentation":"

The number of instances to reserve.

Default: 1

" - }, - "Tags":{"shape":"TagList"} - }, - "documentation":"

" - }, - "ReadReplicaDBInstanceIdentifierList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"ReadReplicaDBInstanceIdentifier" - } - }, - "RebootDBInstanceMessage":{ - "type":"structure", - "required":["DBInstanceIdentifier"], - "members":{ - "DBInstanceIdentifier":{ - "shape":"String", - "documentation":"

The DB instance identifier. This parameter is stored as a lowercase string.

Constraints:

" - }, - "ForceFailover":{ - "shape":"BooleanOptional", - "documentation":"

When true, the reboot will be conducted through a MultiAZ failover.

Constraint: You cannot specify true if the instance is not configured for MultiAZ.

" - } - }, - "documentation":"

" - }, - "RecurringCharge":{ - "type":"structure", - "members":{ - "RecurringChargeAmount":{ - "shape":"Double", - "documentation":"

The amount of the recurring charge.

" - }, - "RecurringChargeFrequency":{ - "shape":"String", - "documentation":"

The frequency of the recurring charge.

" - } - }, - "wrapper":true, - "documentation":"

This data type is used as a response element in the DescribeReservedDBInstances and DescribeReservedDBInstancesOfferings actions.

" - }, - "RecurringChargeList":{ - "type":"list", - "member":{ - "shape":"RecurringCharge", - "locationName":"RecurringCharge" - } - }, - "RemoveSourceIdentifierFromSubscriptionMessage":{ - "type":"structure", - "required":[ - "SubscriptionName", - "SourceIdentifier" - ], - "members":{ - "SubscriptionName":{ - "shape":"String", - "documentation":"

The name of the RDS event notification subscription you want to remove a source identifier from.

" - }, - "SourceIdentifier":{ - "shape":"String", - "documentation":"

The source identifier to be removed from the subscription, such as the DB instance identifier for a DB instance or the name of a security group.

" - } - }, - "documentation":"

" - }, - "RemoveTagsFromResourceMessage":{ - "type":"structure", - "required":[ - "ResourceName", - "TagKeys" - ], - "members":{ - "ResourceName":{ - "shape":"String", - "documentation":"

The Amazon RDS resource the tags will be removed from. This value is an Amazon Resource Name (ARN). For information about creating an ARN, see Constructing an RDS Amazon Resource Name (ARN).

" - }, - "TagKeys":{ - "shape":"KeyList", - "documentation":"

The tag key (name) of the tag to be removed.

" - } - }, - "documentation":"

" - }, - "ReservedDBInstance":{ - "type":"structure", - "members":{ - "ReservedDBInstanceId":{ - "shape":"String", - "documentation":"

The unique identifier for the reservation.

" - }, - "ReservedDBInstancesOfferingId":{ - "shape":"String", - "documentation":"

The offering identifier.

" - }, - "DBInstanceClass":{ - "shape":"String", - "documentation":"

The DB instance class for the reserved DB instance.

" - }, - "StartTime":{ - "shape":"TStamp", - "documentation":"

The time the reservation started.

" - }, - "Duration":{ - "shape":"Integer", - "documentation":"

The duration of the reservation in seconds.

" - }, - "FixedPrice":{ - "shape":"Double", - "documentation":"

The fixed price charged for this reserved DB instance.

" - }, - "UsagePrice":{ - "shape":"Double", - "documentation":"

The hourly price charged for this reserved DB instance.

" - }, - "CurrencyCode":{ - "shape":"String", - "documentation":"

The currency code for the reserved DB instance.

" - }, - "DBInstanceCount":{ - "shape":"Integer", - "documentation":"

The number of reserved DB instances.

" - }, - "ProductDescription":{ - "shape":"String", - "documentation":"

The description of the reserved DB instance.

" - }, - "OfferingType":{ - "shape":"String", - "documentation":"

The offering type of this reserved DB instance.

" - }, - "MultiAZ":{ - "shape":"Boolean", - "documentation":"

Indicates if the reservation applies to Multi-AZ deployments.

" - }, - "State":{ - "shape":"String", - "documentation":"

The state of the reserved DB instance.

" - }, - "RecurringCharges":{ - "shape":"RecurringChargeList", - "documentation":"

The recurring price charged to run this reserved DB instance.

" - } - }, - "wrapper":true, - "documentation":"

This data type is used as a response element in the DescribeReservedDBInstances and PurchaseReservedDBInstancesOffering actions.

" - }, - "ReservedDBInstanceAlreadyExistsFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"ReservedDBInstanceAlreadyExists", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

User already has a reservation with the given identifier.

" - }, - "ReservedDBInstanceList":{ - "type":"list", - "member":{ - "shape":"ReservedDBInstance", - "locationName":"ReservedDBInstance" - } - }, - "ReservedDBInstanceMessage":{ - "type":"structure", - "members":{ - "Marker":{ - "shape":"String", - "documentation":"

An optional pagination token provided by a previous request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords.

" - }, - "ReservedDBInstances":{ - "shape":"ReservedDBInstanceList", - "documentation":"

A list of reserved DB instances.

" - } - }, - "documentation":"

Contains the result of a successful invocation of the DescribeReservedDBInstances action.

" - }, - "ReservedDBInstanceNotFoundFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"ReservedDBInstanceNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified reserved DB Instance not found.

" - }, - "ReservedDBInstanceQuotaExceededFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"ReservedDBInstanceQuotaExceeded", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Request would exceed the user's DB Instance quota.

" - }, - "ReservedDBInstancesOffering":{ - "type":"structure", - "members":{ - "ReservedDBInstancesOfferingId":{ - "shape":"String", - "documentation":"

The offering identifier.

" - }, - "DBInstanceClass":{ - "shape":"String", - "documentation":"

The DB instance class for the reserved DB instance.

" - }, - "Duration":{ - "shape":"Integer", - "documentation":"

The duration of the offering in seconds.

" - }, - "FixedPrice":{ - "shape":"Double", - "documentation":"

The fixed price charged for this offering.

" - }, - "UsagePrice":{ - "shape":"Double", - "documentation":"

The hourly price charged for this offering.

" - }, - "CurrencyCode":{ - "shape":"String", - "documentation":"

The currency code for the reserved DB instance offering.

" - }, - "ProductDescription":{ - "shape":"String", - "documentation":"

The database engine used by the offering.

" - }, - "OfferingType":{ - "shape":"String", - "documentation":"

The offering type.

" - }, - "MultiAZ":{ - "shape":"Boolean", - "documentation":"

Indicates if the offering applies to Multi-AZ deployments.

" - }, - "RecurringCharges":{ - "shape":"RecurringChargeList", - "documentation":"

The recurring price charged to run this reserved DB instance.

" - } - }, - "wrapper":true, - "documentation":"

This data type is used as a response element in the DescribeReservedDBInstancesOfferings action.

" - }, - "ReservedDBInstancesOfferingList":{ - "type":"list", - "member":{ - "shape":"ReservedDBInstancesOffering", - "locationName":"ReservedDBInstancesOffering" - } - }, - "ReservedDBInstancesOfferingMessage":{ - "type":"structure", - "members":{ - "Marker":{ - "shape":"String", - "documentation":"

An optional pagination token provided by a previous request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords.

" - }, - "ReservedDBInstancesOfferings":{ - "shape":"ReservedDBInstancesOfferingList", - "documentation":"

A list of reserved DB instance offerings.

" - } - }, - "documentation":"

Contains the result of a successful invocation of the DescribeReservedDBInstancesOfferings action.

" - }, - "ReservedDBInstancesOfferingNotFoundFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"ReservedDBInstancesOfferingNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

Specified offering does not exist.

" - }, - "ResetDBParameterGroupMessage":{ - "type":"structure", - "required":["DBParameterGroupName"], - "members":{ - "DBParameterGroupName":{ - "shape":"String", - "documentation":"

The name of the DB parameter group.

Constraints:

" - }, - "ResetAllParameters":{ - "shape":"Boolean", - "documentation":"

Specifies whether (true) or not (false) to reset all parameters in the DB parameter group to default values.

Default: true

" - }, - "Parameters":{ - "shape":"ParametersList", - "documentation":"

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. A maximum of 20 parameters may be modified in a single request.

MySQL

Valid Values (for Apply method): immediate | pending-reboot

You can use the immediate value with dynamic parameters only. You can use the pending-reboot value for both dynamic and static parameters, and changes are applied when DB instance reboots.

Oracle

Valid Values (for Apply method): pending-reboot

" - } - }, - "documentation":"

" - }, - "RestoreDBInstanceFromDBSnapshotMessage":{ - "type":"structure", - "required":[ - "DBInstanceIdentifier", - "DBSnapshotIdentifier" - ], - "members":{ - "DBInstanceIdentifier":{ - "shape":"String", - "documentation":"

Name of the DB instance to create from the DB snapshot. This parameter isn't case sensitive.

Constraints:

Example: my-snapshot-id

" - }, - "DBSnapshotIdentifier":{ - "shape":"String", - "documentation":"

The identifier for the DB snapshot to restore from.

Constraints:

" - }, - "DBInstanceClass":{ - "shape":"String", - "documentation":"

The compute and memory capacity of the Amazon RDS DB instance.

Valid Values: db.t1.micro | db.m1.small | db.m1.medium | db.m1.large | db.m1.xlarge | db.m2.2xlarge | db.m2.4xlarge | db.m3.medium | db.m3.large | db.m3.xlarge | db.m3.2xlarge | db.r3.large | db.r3.xlarge | db.r3.2xlarge | db.r3.4xlarge | db.r3.8xlarge | db.t2.micro | db.t2.small | db.t2.medium

" - }, - "Port":{ - "shape":"IntegerOptional", - "documentation":"

The port number on which the database accepts connections.

Default: The same port as the original DB instance

Constraints: Value must be 1150-65535

" - }, - "AvailabilityZone":{ - "shape":"String", - "documentation":"

The EC2 Availability Zone that the database instance will be created in.

Default: A random, system-chosen Availability Zone.

Constraint: You cannot specify the AvailabilityZone parameter if the MultiAZ parameter is set to true.

Example: us-east-1a

" - }, - "DBSubnetGroupName":{ - "shape":"String", - "documentation":"

The DB subnet group name to use for the new instance.

" - }, - "MultiAZ":{ - "shape":"BooleanOptional", - "documentation":"

Specifies if the DB instance is a Multi-AZ deployment.

Constraint: You cannot specify the AvailabilityZone parameter if the MultiAZ parameter is set to true.

" - }, - "PubliclyAccessible":{ - "shape":"BooleanOptional", - "documentation":"

Specifies the accessibility options for the DB instance. A value of true specifies an Internet-facing instance with a publicly resolvable DNS name, which resolves to a public IP address. A value of false specifies an internal instance with a DNS name that resolves to a private IP address.

Default: The default behavior varies depending on whether a VPC has been requested or not. The following list shows the default behavior in each case.

If no DB subnet group has been specified as part of the request and the PubliclyAccessible value has not been set, the DB instance will be publicly accessible. If a specific DB subnet group has been specified as part of the request and the PubliclyAccessible value has not been set, the DB instance will be private.

" - }, - "AutoMinorVersionUpgrade":{ - "shape":"BooleanOptional", - "documentation":"

Indicates that minor version upgrades will be applied automatically to the DB instance during the maintenance window.

" - }, - "LicenseModel":{ - "shape":"String", - "documentation":"

License model information for the restored DB instance.

Default: Same as source.

Valid values: license-included | bring-your-own-license | general-public-license

" - }, - "DBName":{ - "shape":"String", - "documentation":"

The database name for the restored DB instance.

" - }, - "Engine":{ - "shape":"String", - "documentation":"

The database engine to use for the new instance.

Default: The same as source

Constraint: Must be compatible with the engine of the source

Example: oracle-ee

" - }, - "Iops":{ - "shape":"IntegerOptional", - "documentation":"

Specifies the amount of provisioned IOPS for the DB instance, expressed in I/O operations per second. If this parameter is not specified, the IOPS value will be taken from the backup. If this parameter is set to 0, the new instance will be converted to a non-PIOPS instance, which will take additional time, though your DB instance will be available for connections before the conversion starts.

Constraints: Must be an integer greater than 1000.

SQL Server

Setting the IOPS value for the SQL Server database engine is not supported.

" - }, - "OptionGroupName":{ - "shape":"String", - "documentation":"

The name of the option group to be used for the restored DB instance.

Permanent options, such as the TDE option for Oracle Advanced Security TDE, cannot be removed from an option group, and that option group cannot be removed from a DB instance once it is associated with a DB instance

" - }, - "Tags":{"shape":"TagList"}, - "StorageType":{ - "shape":"String", - "documentation":"

Specifies storage type to be associated with the DB Instance.

Valid values: standard | gp2 | io1

If you specify io1, you must also include a value for the Iops parameter.

" - }, - "TdeCredentialArn":{ - "shape":"String", - "documentation":"

The ARN from the Key Store with which to associate the instance for TDE encryption.

" - }, - "TdeCredentialPassword":{ - "shape":"String", - "documentation":"

The password for the given ARN from the Key Store in order to access the device.

" - } - }, - "documentation":"

" - }, - "RestoreDBInstanceToPointInTimeMessage":{ - "type":"structure", - "required":[ - "SourceDBInstanceIdentifier", - "TargetDBInstanceIdentifier" - ], - "members":{ - "SourceDBInstanceIdentifier":{ - "shape":"String", - "documentation":"

The identifier of the source DB instance from which to restore.

Constraints:

" - }, - "TargetDBInstanceIdentifier":{ - "shape":"String", - "documentation":"

The name of the new database instance to be created.

Constraints:

" - }, - "RestoreTime":{ - "shape":"TStamp", - "documentation":"

The date and time to restore from.

Valid Values: Value must be a UTC time

Constraints:

Example: 2009-09-07T23:45:00Z

" - }, - "UseLatestRestorableTime":{ - "shape":"Boolean", - "documentation":"

Specifies whether (true) or not (false) the DB instance is restored from the latest backup time.

Default: false

Constraints: Cannot be specified if RestoreTime parameter is provided.

" - }, - "DBInstanceClass":{ - "shape":"String", - "documentation":"

The compute and memory capacity of the Amazon RDS DB instance.

Valid Values: db.t1.micro | db.m1.small | db.m1.medium | db.m1.large | db.m1.xlarge | db.m2.2xlarge | db.m2.4xlarge | db.m3.medium | db.m3.large | db.m3.xlarge | db.m3.2xlarge | db.r3.large | db.r3.xlarge | db.r3.2xlarge | db.r3.4xlarge | db.r3.8xlarge | db.t2.micro | db.t2.small | db.t2.medium

Default: The same DBInstanceClass as the original DB instance.

" - }, - "Port":{ - "shape":"IntegerOptional", - "documentation":"

The port number on which the database accepts connections.

Constraints: Value must be 1150-65535

Default: The same port as the original DB instance.

" - }, - "AvailabilityZone":{ - "shape":"String", - "documentation":"

The EC2 Availability Zone that the database instance will be created in.

Default: A random, system-chosen Availability Zone.

Constraint: You cannot specify the AvailabilityZone parameter if the MultiAZ parameter is set to true.

Example: us-east-1a

" - }, - "DBSubnetGroupName":{ - "shape":"String", - "documentation":"

The DB subnet group name to use for the new instance.

" - }, - "MultiAZ":{ - "shape":"BooleanOptional", - "documentation":"

Specifies if the DB instance is a Multi-AZ deployment.

Constraint: You cannot specify the AvailabilityZone parameter if the MultiAZ parameter is set to true.

" - }, - "PubliclyAccessible":{ - "shape":"BooleanOptional", - "documentation":"

Specifies the accessibility options for the DB instance. A value of true specifies an Internet-facing instance with a publicly resolvable DNS name, which resolves to a public IP address. A value of false specifies an internal instance with a DNS name that resolves to a private IP address.

Default: The default behavior varies depending on whether a VPC has been requested or not. The following list shows the default behavior in each case.

If no DB subnet group has been specified as part of the request and the PubliclyAccessible value has not been set, the DB instance will be publicly accessible. If a specific DB subnet group has been specified as part of the request and the PubliclyAccessible value has not been set, the DB instance will be private.

" - }, - "AutoMinorVersionUpgrade":{ - "shape":"BooleanOptional", - "documentation":"

Indicates that minor version upgrades will be applied automatically to the DB instance during the maintenance window.

" - }, - "LicenseModel":{ - "shape":"String", - "documentation":"

License model information for the restored DB instance.

Default: Same as source.

Valid values: license-included | bring-your-own-license | general-public-license

" - }, - "DBName":{ - "shape":"String", - "documentation":"

The database name for the restored DB instance.

" - }, - "Engine":{ - "shape":"String", - "documentation":"

The database engine to use for the new instance.

Default: The same as source

Constraint: Must be compatible with the engine of the source

Example: oracle-ee

" - }, - "Iops":{ - "shape":"IntegerOptional", - "documentation":"

The amount of Provisioned IOPS (input/output operations per second) to be initially allocated for the DB instance.

Constraints: Must be an integer greater than 1000.

SQL Server

Setting the IOPS value for the SQL Server database engine is not supported.

" - }, - "OptionGroupName":{ - "shape":"String", - "documentation":"

The name of the option group to be used for the restored DB instance.

Permanent options, such as the TDE option for Oracle Advanced Security TDE, cannot be removed from an option group, and that option group cannot be removed from a DB instance once it is associated with a DB instance

" - }, - "Tags":{"shape":"TagList"}, - "StorageType":{ - "shape":"String", - "documentation":"

Specifies storage type to be associated with the DB Instance.

Valid values: standard | gp2 | io1

If you specify io1, you must also include a value for the Iops parameter.

" - }, - "TdeCredentialArn":{ - "shape":"String", - "documentation":"

The ARN from the Key Store with which to associate the instance for TDE encryption.

" - }, - "TdeCredentialPassword":{ - "shape":"String", - "documentation":"

The password for the given ARN from the Key Store in order to access the device.

" - } - }, - "documentation":"

" - }, - "RevokeDBSecurityGroupIngressMessage":{ - "type":"structure", - "required":["DBSecurityGroupName"], - "members":{ - "DBSecurityGroupName":{ - "shape":"String", - "documentation":"

The name of the DB security group to revoke ingress from.

" - }, - "CIDRIP":{ - "shape":"String", - "documentation":"

The IP range to revoke access from. Must be a valid CIDR range. If CIDRIP is specified, EC2SecurityGroupName, EC2SecurityGroupId and EC2SecurityGroupOwnerId cannot be provided.

" - }, - "EC2SecurityGroupName":{ - "shape":"String", - "documentation":"

The name of the EC2 security group to revoke access from. For VPC DB security groups, EC2SecurityGroupId must be provided. Otherwise, EC2SecurityGroupOwnerId and either EC2SecurityGroupName or EC2SecurityGroupId must be provided.

" - }, - "EC2SecurityGroupId":{ - "shape":"String", - "documentation":"

The id of the EC2 security group to revoke access from. For VPC DB security groups, EC2SecurityGroupId must be provided. Otherwise, EC2SecurityGroupOwnerId and either EC2SecurityGroupName or EC2SecurityGroupId must be provided.

" - }, - "EC2SecurityGroupOwnerId":{ - "shape":"String", - "documentation":"

The 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.

" - } - }, - "documentation":"

" - }, - "SNSInvalidTopicFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"SNSInvalidTopic", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

SNS has responded that there is a problem with the SND topic specified.

" - }, - "SNSNoAuthorizationFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"SNSNoAuthorization", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

You do not have permission to publish to the SNS topic ARN.

" - }, - "SNSTopicArnNotFoundFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"SNSTopicArnNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The SNS topic ARN does not exist.

" - }, - "SnapshotQuotaExceededFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"SnapshotQuotaExceeded", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Request would result in user exceeding the allowed number of DB snapshots.

" - }, - "SourceIdsList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"SourceId" - } - }, - "SourceNotFoundFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"SourceNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The requested source could not be found.

" - }, - "SourceType":{ - "type":"string", - "enum":[ - "db-instance", - "db-parameter-group", - "db-security-group", - "db-snapshot" - ] - }, - "StorageQuotaExceededFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"StorageQuotaExceeded", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Request would result in user exceeding the allowed amount of storage available across all DB instances.

" - }, - "StorageTypeNotSupportedFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"StorageTypeNotSupported", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

StorageType specified cannot be associated with the DB Instance.

" - }, - "String":{"type":"string"}, - "Subnet":{ - "type":"structure", - "members":{ - "SubnetIdentifier":{ - "shape":"String", - "documentation":"

Specifies the identifier of the subnet.

" - }, - "SubnetAvailabilityZone":{"shape":"AvailabilityZone"}, - "SubnetStatus":{ - "shape":"String", - "documentation":"

Specifies the status of the subnet.

" - } - }, - "documentation":"

This data type is used as a response element in the DescribeDBSubnetGroups action.

" - }, - "SubnetAlreadyInUse":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"SubnetAlreadyInUse", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The DB subnet is already in use in the Availability Zone.

" - }, - "SubnetIdentifierList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"SubnetIdentifier" - } - }, - "SubnetList":{ - "type":"list", - "member":{ - "shape":"Subnet", - "locationName":"Subnet" - } - }, - "SubscriptionAlreadyExistFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"SubscriptionAlreadyExist", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The supplied subscription name already exists.

" - }, - "SubscriptionCategoryNotFoundFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"SubscriptionCategoryNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The supplied category does not exist.

" - }, - "SubscriptionNotFoundFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"SubscriptionNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The subscription name does not exist.

" - }, - "SupportedCharacterSetsList":{ - "type":"list", - "member":{ - "shape":"CharacterSet", - "locationName":"CharacterSet" - } - }, - "TStamp":{"type":"timestamp"}, - "Tag":{ - "type":"structure", - "members":{ - "Key":{ - "shape":"String", - "documentation":"

A key is the required name of the tag. The string value can be from 1 to 128 Unicode characters in length and cannot be prefixed with \"aws:\" or \"rds:\". The string may only contain only the set of Unicode letters, digits, white-space, '_', '.', '/', '=', '+', '-' (Java regex: \"^([\\\\p{L}\\\\p{Z}\\\\p{N}_.:/=+\\\\-]*)$\").

" - }, - "Value":{ - "shape":"String", - "documentation":"

A value is the optional value of the tag. The string value can be from 1 to 256 Unicode characters in length and cannot be prefixed with \"aws:\" or \"rds:\". The string may only contain only the set of Unicode letters, digits, white-space, '_', '.', '/', '=', '+', '-' (Java regex: \"^([\\\\p{L}\\\\p{Z}\\\\p{N}_.:/=+\\\\-]*)$\").

" - } - }, - "documentation":"

Metadata assigned to an Amazon RDS resource consisting of a key-value pair.

" - }, - "TagList":{ - "type":"list", - "member":{ - "shape":"Tag", - "locationName":"Tag" - }, - "documentation":"

A list of tags.

" - }, - "TagListMessage":{ - "type":"structure", - "members":{ - "TagList":{ - "shape":"TagList", - "documentation":"

List of tags returned by the ListTagsForResource operation.

" - } - }, - "documentation":"

" - }, - "VpcSecurityGroupIdList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"VpcSecurityGroupId" - } - }, - "VpcSecurityGroupMembership":{ - "type":"structure", - "members":{ - "VpcSecurityGroupId":{ - "shape":"String", - "documentation":"

The name of the VPC security group.

" - }, - "Status":{ - "shape":"String", - "documentation":"

The status of the VPC security group.

" - } - }, - "documentation":"

This data type is used as a response element for queries on VPC security group membership.

" - }, - "VpcSecurityGroupMembershipList":{ - "type":"list", - "member":{ - "shape":"VpcSecurityGroupMembership", - "locationName":"VpcSecurityGroupMembership" - } - }, - "AddSourceIdentifierToSubscriptionResult":{ - "type":"structure", - "members":{ - "EventSubscription":{"shape":"EventSubscription"} - } - }, - "AuthorizeDBSecurityGroupIngressResult":{ - "type":"structure", - "members":{ - "DBSecurityGroup":{"shape":"DBSecurityGroup"} - } - }, - "CopyDBParameterGroupResult":{ - "type":"structure", - "members":{ - "DBParameterGroup":{"shape":"DBParameterGroup"} - } - }, - "CopyDBSnapshotResult":{ - "type":"structure", - "members":{ - "DBSnapshot":{"shape":"DBSnapshot"} - } - }, - "CopyOptionGroupResult":{ - "type":"structure", - "members":{ - "OptionGroup":{"shape":"OptionGroup"} - } - }, - "CreateDBInstanceResult":{ - "type":"structure", - "members":{ - "DBInstance":{"shape":"DBInstance"} - } - }, - "CreateDBInstanceReadReplicaResult":{ - "type":"structure", - "members":{ - "DBInstance":{"shape":"DBInstance"} - } - }, - "CreateDBParameterGroupResult":{ - "type":"structure", - "members":{ - "DBParameterGroup":{"shape":"DBParameterGroup"} - } - }, - "CreateDBSecurityGroupResult":{ - "type":"structure", - "members":{ - "DBSecurityGroup":{"shape":"DBSecurityGroup"} - } - }, - "CreateDBSnapshotResult":{ - "type":"structure", - "members":{ - "DBSnapshot":{"shape":"DBSnapshot"} - } - }, - "CreateDBSubnetGroupResult":{ - "type":"structure", - "members":{ - "DBSubnetGroup":{"shape":"DBSubnetGroup"} - } - }, - "CreateEventSubscriptionResult":{ - "type":"structure", - "members":{ - "EventSubscription":{"shape":"EventSubscription"} - } - }, - "CreateOptionGroupResult":{ - "type":"structure", - "members":{ - "OptionGroup":{"shape":"OptionGroup"} - } - }, - "DeleteDBInstanceResult":{ - "type":"structure", - "members":{ - "DBInstance":{"shape":"DBInstance"} - } - }, - "DeleteDBSnapshotResult":{ - "type":"structure", - "members":{ - "DBSnapshot":{"shape":"DBSnapshot"} - } - }, - "DeleteEventSubscriptionResult":{ - "type":"structure", - "members":{ - "EventSubscription":{"shape":"EventSubscription"} - } - }, - "DescribeEngineDefaultParametersResult":{ - "type":"structure", - "members":{ - "EngineDefaults":{"shape":"EngineDefaults"} - } - }, - "ModifyDBInstanceResult":{ - "type":"structure", - "members":{ - "DBInstance":{"shape":"DBInstance"} - } - }, - "ModifyDBSubnetGroupResult":{ - "type":"structure", - "members":{ - "DBSubnetGroup":{"shape":"DBSubnetGroup"} - } - }, - "ModifyEventSubscriptionResult":{ - "type":"structure", - "members":{ - "EventSubscription":{"shape":"EventSubscription"} - } - }, - "ModifyOptionGroupResult":{ - "type":"structure", - "members":{ - "OptionGroup":{"shape":"OptionGroup"} - } - }, - "PromoteReadReplicaResult":{ - "type":"structure", - "members":{ - "DBInstance":{"shape":"DBInstance"} - } - }, - "PurchaseReservedDBInstancesOfferingResult":{ - "type":"structure", - "members":{ - "ReservedDBInstance":{"shape":"ReservedDBInstance"} - } - }, - "RebootDBInstanceResult":{ - "type":"structure", - "members":{ - "DBInstance":{"shape":"DBInstance"} - } - }, - "RemoveSourceIdentifierFromSubscriptionResult":{ - "type":"structure", - "members":{ - "EventSubscription":{"shape":"EventSubscription"} - } - }, - "RestoreDBInstanceFromDBSnapshotResult":{ - "type":"structure", - "members":{ - "DBInstance":{"shape":"DBInstance"} - } - }, - "RestoreDBInstanceToPointInTimeResult":{ - "type":"structure", - "members":{ - "DBInstance":{"shape":"DBInstance"} - } - }, - "RevokeDBSecurityGroupIngressResult":{ - "type":"structure", - "members":{ - "DBSecurityGroup":{"shape":"DBSecurityGroup"} - } - } - } -} diff --git a/src/github.com/getlantern/aws-sdk-go/apis/rds/2014-09-01.paginators.json b/src/github.com/getlantern/aws-sdk-go/apis/rds/2014-09-01.paginators.json deleted file mode 100644 index 76c4f3a119..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/apis/rds/2014-09-01.paginators.json +++ /dev/null @@ -1,107 +0,0 @@ -{ - "pagination": { - "DescribeDBEngineVersions": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "DBEngineVersions" - }, - "DescribeDBInstances": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "DBInstances" - }, - "DescribeDBLogFiles": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "DescribeDBLogFiles" - }, - "DescribeDBParameterGroups": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "DBParameterGroups" - }, - "DescribeDBParameters": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "Parameters" - }, - "DescribeDBSecurityGroups": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "DBSecurityGroups" - }, - "DescribeDBSnapshots": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "DBSnapshots" - }, - "DescribeDBSubnetGroups": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "DBSubnetGroups" - }, - "DescribeEngineDefaultParameters": { - "input_token": "Marker", - "output_token": "EngineDefaults.Marker", - "limit_key": "MaxRecords", - "result_key": "EngineDefaults.Parameters" - }, - "DescribeEventSubscriptions": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "EventSubscriptionsList" - }, - "DescribeEvents": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "Events" - }, - "DescribeOptionGroupOptions": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "OptionGroupOptions" - }, - "DescribeOptionGroups": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "OptionGroupsList" - }, - "DescribeOrderableDBInstanceOptions": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "OrderableDBInstanceOptions" - }, - "DescribeReservedDBInstances": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "ReservedDBInstances" - }, - "DescribeReservedDBInstancesOfferings": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "ReservedDBInstancesOfferings" - }, - "DownloadDBLogFilePortion": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "NumberOfLines", - "more_results": "AdditionalDataPending", - "result_key": "LogFileData" - } - } -} diff --git a/src/github.com/getlantern/aws-sdk-go/apis/rds/2014-09-01.waiters.json b/src/github.com/getlantern/aws-sdk-go/apis/rds/2014-09-01.waiters.json deleted file mode 100644 index b01500797d..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/apis/rds/2014-09-01.waiters.json +++ /dev/null @@ -1,97 +0,0 @@ -{ - "version": 2, - "waiters": { - "DBInstanceAvailable": { - "delay": 30, - "operation": "DescribeDBInstances", - "maxAttempts": 60, - "acceptors": [ - { - "expected": "available", - "matcher": "pathAll", - "state": "success", - "argument": "DBInstances[].DBInstanceStatus" - }, - { - "expected": "deleted", - "matcher": "pathAny", - "state": "failure", - "argument": "DBInstances[].DBInstanceStatus" - }, - { - "expected": "deleting", - "matcher": "pathAny", - "state": "failure", - "argument": "DBInstances[].DBInstanceStatus" - }, - { - "expected": "failed", - "matcher": "pathAny", - "state": "failure", - "argument": "DBInstances[].DBInstanceStatus" - }, - { - "expected": "incompatible-restore", - "matcher": "pathAny", - "state": "failure", - "argument": "DBInstances[].DBInstanceStatus" - }, - { - "expected": "incompatible-parameters", - "matcher": "pathAny", - "state": "failure", - "argument": "DBInstances[].DBInstanceStatus" - }, - { - "expected": "incompatible-parameters", - "matcher": "pathAny", - "state": "failure", - "argument": "DBInstances[].DBInstanceStatus" - }, - { - "expected": "incompatible-restore", - "matcher": "pathAny", - "state": "failure", - "argument": "DBInstances[].DBInstanceStatus" - } - ] - }, - "DBInstanceDeleted": { - "delay": 30, - "operation": "DescribeDBInstances", - "maxAttempts": 60, - "acceptors": [ - { - "expected": "deleted", - "matcher": "pathAll", - "state": "success", - "argument": "DBInstances[].DBInstanceStatus" - }, - { - "expected": "creating", - "matcher": "pathAny", - "state": "failure", - "argument": "DBInstances[].DBInstanceStatus" - }, - { - "expected": "modifying", - "matcher": "pathAny", - "state": "failure", - "argument": "DBInstances[].DBInstanceStatus" - }, - { - "expected": "rebooting", - "matcher": "pathAny", - "state": "failure", - "argument": "DBInstances[].DBInstanceStatus" - }, - { - "expected": "resetting-master-credentials", - "matcher": "pathAny", - "state": "failure", - "argument": "DBInstances[].DBInstanceStatus" - } - ] - } - } -} diff --git a/src/github.com/getlantern/aws-sdk-go/apis/rds/2014-10-31.normal.json b/src/github.com/getlantern/aws-sdk-go/apis/rds/2014-10-31.normal.json deleted file mode 100644 index d6cd5862a2..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/apis/rds/2014-10-31.normal.json +++ /dev/null @@ -1,7217 +0,0 @@ -{ - "metadata":{ - "apiVersion":"2014-10-31", - "endpointPrefix":"rds", - "serviceAbbreviation":"Amazon RDS", - "serviceFullName":"Amazon Relational Database Service", - "signatureVersion":"v4", - "xmlNamespace":"http://rds.amazonaws.com/doc/2014-10-31/", - "protocol":"query" - }, - "documentation":"Amazon Relational Database Service

Amazon Relational Database Service (Amazon RDS) is a web service that makes it easier to set up, operate, and scale a relational database in the cloud. It provides cost-efficient, resizable capacity for an industry-standard relational database and manages common database administration tasks, freeing up developers to focus on what makes their applications and businesses unique.

Amazon RDS gives you access to the capabilities of a MySQL, PostgreSQL, Microsoft SQL Server, or Oracle database server. This means the code, applications, and tools you already use today with your existing databases work with Amazon RDS without modification. Amazon RDS automatically backs up your database and maintains the database software that powers your DB instance. Amazon RDS is flexible: you can scale your database instance's compute resources and storage capacity to meet your application's demand. As with all Amazon Web Services, there are no up-front investments, and you pay only for the resources you use.

This is an interface reference for Amazon RDS. It contains documentation for a programming or command line interface you can use to manage Amazon RDS. Note that Amazon RDS is asynchronous, which means that some interfaces may require techniques such as polling or callback functions to determine when a command has been applied. In this reference, the parameter descriptions indicate whether a command is applied immediately, on the next instance reboot, or during the maintenance window. For a summary of the Amazon RDS interfaces, go to Available RDS Interfaces.

", - "operations":{ - "AddSourceIdentifierToSubscription":{ - "name":"AddSourceIdentifierToSubscription", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"AddSourceIdentifierToSubscriptionMessage", - "documentation":"

" - }, - "output":{ - "shape":"AddSourceIdentifierToSubscriptionResult", - "wrapper":true, - "documentation":"

Contains the results of a successful invocation of the DescribeEventSubscriptions action.

", - "resultWrapper":"AddSourceIdentifierToSubscriptionResult" - }, - "errors":[ - { - "shape":"SubscriptionNotFoundFault", - "error":{ - "code":"SubscriptionNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The subscription name does not exist.

" - }, - { - "shape":"SourceNotFoundFault", - "error":{ - "code":"SourceNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The requested source could not be found.

" - } - ], - "documentation":"

Adds a source identifier to an existing RDS event notification subscription.

" - }, - "AddTagsToResource":{ - "name":"AddTagsToResource", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"AddTagsToResourceMessage", - "documentation":"

" - }, - "errors":[ - { - "shape":"DBInstanceNotFoundFault", - "error":{ - "code":"DBInstanceNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

DBInstanceIdentifier does not refer to an existing DB instance.

" - }, - { - "shape":"DBSnapshotNotFoundFault", - "error":{ - "code":"DBSnapshotNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

DBSnapshotIdentifier does not refer to an existing DB snapshot.

" - } - ], - "documentation":"

Adds metadata tags to an Amazon RDS resource. These tags can also be used with cost allocation reporting to track cost associated with Amazon RDS resources, or used in Condition statement in IAM policy for Amazon RDS.

For an overview on tagging Amazon RDS resources, see Tagging Amazon RDS Resources.

" - }, - "ApplyPendingMaintenanceAction":{ - "name":"ApplyPendingMaintenanceAction", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"ApplyPendingMaintenanceActionMessage", - "documentation":"

" - }, - "output":{ - "shape":"ApplyPendingMaintenanceActionResult", - "wrapper":true, - "documentation":"

Describes the pending maintenance actions for a resource.

", - "resultWrapper":"ApplyPendingMaintenanceActionResult" - }, - "errors":[ - { - "shape":"ResourceNotFoundFault", - "error":{ - "code":"ResourceNotFoundFault", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified Resource ID was not found.

" - } - ], - "documentation":"

Applies a pending maintenance action to a resource.

" - }, - "AuthorizeDBSecurityGroupIngress":{ - "name":"AuthorizeDBSecurityGroupIngress", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"AuthorizeDBSecurityGroupIngressMessage", - "documentation":"

" - }, - "output":{ - "shape":"AuthorizeDBSecurityGroupIngressResult", - "wrapper":true, - "documentation":"

Contains the result of a successful invocation of the following actions:

This data type is used as a response element in the DescribeDBSecurityGroups action.

", - "resultWrapper":"AuthorizeDBSecurityGroupIngressResult" - }, - "errors":[ - { - "shape":"DBSecurityGroupNotFoundFault", - "error":{ - "code":"DBSecurityGroupNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

DBSecurityGroupName does not refer to an existing DB security group.

" - }, - { - "shape":"InvalidDBSecurityGroupStateFault", - "error":{ - "code":"InvalidDBSecurityGroupState", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The state of the DB security group does not allow deletion.

" - }, - { - "shape":"AuthorizationAlreadyExistsFault", - "error":{ - "code":"AuthorizationAlreadyExists", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified CIDRIP or EC2 security group is already authorized for the specified DB security group.

" - }, - { - "shape":"AuthorizationQuotaExceededFault", - "error":{ - "code":"AuthorizationQuotaExceeded", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

DB security group authorization quota has been reached.

" - } - ], - "documentation":"

Enables ingress to a DBSecurityGroup using one of two forms of authorization. First, EC2 or VPC security groups can be added to the DBSecurityGroup if the application using the database is running on EC2 or VPC instances. Second, IP ranges are available if the application accessing your database is running on the Internet. Required parameters for this API are one of CIDR range, EC2SecurityGroupId for VPC, or (EC2SecurityGroupOwnerId and either EC2SecurityGroupName or EC2SecurityGroupId for non-VPC).

You cannot authorize ingress from an EC2 security group in one Region to an Amazon RDS DB instance in another. You cannot authorize ingress from a VPC security group in one VPC to an Amazon RDS DB instance in another.

For an overview of CIDR ranges, go to the Wikipedia Tutorial.

" - }, - "CopyDBParameterGroup":{ - "name":"CopyDBParameterGroup", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"CopyDBParameterGroupMessage", - "documentation":"

" - }, - "output":{ - "shape":"CopyDBParameterGroupResult", - "wrapper":true, - "documentation":"

Contains the result of a successful invocation of the CreateDBParameterGroup action.

This data type is used as a request parameter in the DeleteDBParameterGroup action, and as a response element in the DescribeDBParameterGroups action.

", - "resultWrapper":"CopyDBParameterGroupResult" - }, - "errors":[ - { - "shape":"DBParameterGroupNotFoundFault", - "error":{ - "code":"DBParameterGroupNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

DBParameterGroupName does not refer to an existing DB parameter group.

" - }, - { - "shape":"DBParameterGroupAlreadyExistsFault", - "error":{ - "code":"DBParameterGroupAlreadyExists", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

A DB parameter group with the same name exists.

" - }, - { - "shape":"DBParameterGroupQuotaExceededFault", - "error":{ - "code":"DBParameterGroupQuotaExceeded", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Request would result in user exceeding the allowed number of DB parameter groups.

" - } - ], - "documentation":"

Copies the specified DB parameter group.

" - }, - "CopyDBSnapshot":{ - "name":"CopyDBSnapshot", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"CopyDBSnapshotMessage", - "documentation":"

" - }, - "output":{ - "shape":"CopyDBSnapshotResult", - "wrapper":true, - "documentation":"

Contains the result of a successful invocation of the following actions:

This data type is used as a response element in the DescribeDBSnapshots action.

", - "resultWrapper":"CopyDBSnapshotResult" - }, - "errors":[ - { - "shape":"DBSnapshotAlreadyExistsFault", - "error":{ - "code":"DBSnapshotAlreadyExists", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

DBSnapshotIdentifier is already used by an existing snapshot.

" - }, - { - "shape":"DBSnapshotNotFoundFault", - "error":{ - "code":"DBSnapshotNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

DBSnapshotIdentifier does not refer to an existing DB snapshot.

" - }, - { - "shape":"InvalidDBSnapshotStateFault", - "error":{ - "code":"InvalidDBSnapshotState", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The state of the DB snapshot does not allow deletion.

" - }, - { - "shape":"SnapshotQuotaExceededFault", - "error":{ - "code":"SnapshotQuotaExceeded", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Request would result in user exceeding the allowed number of DB snapshots.

" - } - ], - "documentation":"

Copies the specified DBSnapshot. The source DBSnapshot must be in the \"available\" state.

" - }, - "CopyOptionGroup":{ - "name":"CopyOptionGroup", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"CopyOptionGroupMessage", - "documentation":"

" - }, - "output":{ - "shape":"CopyOptionGroupResult", - "wrapper":true, - "documentation":"

", - "resultWrapper":"CopyOptionGroupResult" - }, - "errors":[ - { - "shape":"OptionGroupAlreadyExistsFault", - "error":{ - "code":"OptionGroupAlreadyExistsFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The option group you are trying to create already exists.

" - }, - { - "shape":"OptionGroupNotFoundFault", - "error":{ - "code":"OptionGroupNotFoundFault", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified option group could not be found.

" - }, - { - "shape":"OptionGroupQuotaExceededFault", - "error":{ - "code":"OptionGroupQuotaExceededFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The quota of 20 option groups was exceeded for this AWS account.

" - } - ], - "documentation":"

Copies the specified option group.

" - }, - "CreateDBInstance":{ - "name":"CreateDBInstance", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"CreateDBInstanceMessage", - "documentation":"

" - }, - "output":{ - "shape":"CreateDBInstanceResult", - "wrapper":true, - "documentation":"

Contains the result of a successful invocation of the following actions:

This data type is used as a response element in the DescribeDBInstances action.

", - "resultWrapper":"CreateDBInstanceResult" - }, - "errors":[ - { - "shape":"DBInstanceAlreadyExistsFault", - "error":{ - "code":"DBInstanceAlreadyExists", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

User already has a DB instance with the given identifier.

" - }, - { - "shape":"InsufficientDBInstanceCapacityFault", - "error":{ - "code":"InsufficientDBInstanceCapacity", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Specified DB instance class is not available in the specified Availability Zone.

" - }, - { - "shape":"DBParameterGroupNotFoundFault", - "error":{ - "code":"DBParameterGroupNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

DBParameterGroupName does not refer to an existing DB parameter group.

" - }, - { - "shape":"DBSecurityGroupNotFoundFault", - "error":{ - "code":"DBSecurityGroupNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

DBSecurityGroupName does not refer to an existing DB security group.

" - }, - { - "shape":"InstanceQuotaExceededFault", - "error":{ - "code":"InstanceQuotaExceeded", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Request would result in user exceeding the allowed number of DB instances.

" - }, - { - "shape":"StorageQuotaExceededFault", - "error":{ - "code":"StorageQuotaExceeded", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Request would result in user exceeding the allowed amount of storage available across all DB instances.

" - }, - { - "shape":"DBSubnetGroupNotFoundFault", - "error":{ - "code":"DBSubnetGroupNotFoundFault", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

DBSubnetGroupName does not refer to an existing DB subnet group.

" - }, - { - "shape":"DBSubnetGroupDoesNotCoverEnoughAZs", - "error":{ - "code":"DBSubnetGroupDoesNotCoverEnoughAZs", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Subnets in the DB subnet group should cover at least two Availability Zones unless there is only one Availability Zone.

" - }, - { - "shape":"InvalidSubnet", - "error":{ - "code":"InvalidSubnet", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The requested subnet is invalid, or multiple subnets were requested that are not all in a common VPC.

" - }, - { - "shape":"InvalidVPCNetworkStateFault", - "error":{ - "code":"InvalidVPCNetworkStateFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

DB subnet group does not cover all Availability Zones after it is created because users' change.

" - }, - { - "shape":"ProvisionedIopsNotAvailableInAZFault", - "error":{ - "code":"ProvisionedIopsNotAvailableInAZFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Provisioned IOPS not available in the specified Availability Zone.

" - }, - { - "shape":"OptionGroupNotFoundFault", - "error":{ - "code":"OptionGroupNotFoundFault", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified option group could not be found.

" - }, - { - "shape":"StorageTypeNotSupportedFault", - "error":{ - "code":"StorageTypeNotSupported", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

StorageType specified cannot be associated with the DB Instance.

" - }, - { - "shape":"AuthorizationNotFoundFault", - "error":{ - "code":"AuthorizationNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

Specified CIDRIP or EC2 security group is not authorized for the specified DB security group.

RDS may not also be authorized via IAM to perform necessary actions on your behalf.

" - }, - { - "shape":"KMSKeyNotAccessibleFault", - "error":{ - "code":"KMSKeyNotAccessibleFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Error accessing KMS key.

" - } - ], - "documentation":"

Creates a new DB instance.

" - }, - "CreateDBInstanceReadReplica":{ - "name":"CreateDBInstanceReadReplica", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CreateDBInstanceReadReplicaMessage"}, - "output":{ - "shape":"CreateDBInstanceReadReplicaResult", - "wrapper":true, - "documentation":"

Contains the result of a successful invocation of the following actions:

This data type is used as a response element in the DescribeDBInstances action.

", - "resultWrapper":"CreateDBInstanceReadReplicaResult" - }, - "errors":[ - { - "shape":"DBInstanceAlreadyExistsFault", - "error":{ - "code":"DBInstanceAlreadyExists", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

User already has a DB instance with the given identifier.

" - }, - { - "shape":"InsufficientDBInstanceCapacityFault", - "error":{ - "code":"InsufficientDBInstanceCapacity", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Specified DB instance class is not available in the specified Availability Zone.

" - }, - { - "shape":"DBParameterGroupNotFoundFault", - "error":{ - "code":"DBParameterGroupNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

DBParameterGroupName does not refer to an existing DB parameter group.

" - }, - { - "shape":"DBSecurityGroupNotFoundFault", - "error":{ - "code":"DBSecurityGroupNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

DBSecurityGroupName does not refer to an existing DB security group.

" - }, - { - "shape":"InstanceQuotaExceededFault", - "error":{ - "code":"InstanceQuotaExceeded", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Request would result in user exceeding the allowed number of DB instances.

" - }, - { - "shape":"StorageQuotaExceededFault", - "error":{ - "code":"StorageQuotaExceeded", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Request would result in user exceeding the allowed amount of storage available across all DB instances.

" - }, - { - "shape":"DBInstanceNotFoundFault", - "error":{ - "code":"DBInstanceNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

DBInstanceIdentifier does not refer to an existing DB instance.

" - }, - { - "shape":"InvalidDBInstanceStateFault", - "error":{ - "code":"InvalidDBInstanceState", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified DB instance is not in the available state.

" - }, - { - "shape":"DBSubnetGroupNotFoundFault", - "error":{ - "code":"DBSubnetGroupNotFoundFault", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

DBSubnetGroupName does not refer to an existing DB subnet group.

" - }, - { - "shape":"DBSubnetGroupDoesNotCoverEnoughAZs", - "error":{ - "code":"DBSubnetGroupDoesNotCoverEnoughAZs", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Subnets in the DB subnet group should cover at least two Availability Zones unless there is only one Availability Zone.

" - }, - { - "shape":"InvalidSubnet", - "error":{ - "code":"InvalidSubnet", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The requested subnet is invalid, or multiple subnets were requested that are not all in a common VPC.

" - }, - { - "shape":"InvalidVPCNetworkStateFault", - "error":{ - "code":"InvalidVPCNetworkStateFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

DB subnet group does not cover all Availability Zones after it is created because users' change.

" - }, - { - "shape":"ProvisionedIopsNotAvailableInAZFault", - "error":{ - "code":"ProvisionedIopsNotAvailableInAZFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Provisioned IOPS not available in the specified Availability Zone.

" - }, - { - "shape":"OptionGroupNotFoundFault", - "error":{ - "code":"OptionGroupNotFoundFault", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified option group could not be found.

" - }, - { - "shape":"DBSubnetGroupNotAllowedFault", - "error":{ - "code":"DBSubnetGroupNotAllowedFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Indicates that the DBSubnetGroup should not be specified while creating read replicas that lie in the same region as the source instance.

" - }, - { - "shape":"InvalidDBSubnetGroupFault", - "error":{ - "code":"InvalidDBSubnetGroupFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Indicates the DBSubnetGroup does not belong to the same VPC as that of an existing cross region read replica of the same source instance.

" - }, - { - "shape":"StorageTypeNotSupportedFault", - "error":{ - "code":"StorageTypeNotSupported", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

StorageType specified cannot be associated with the DB Instance.

" - }, - { - "shape":"KMSKeyNotAccessibleFault", - "error":{ - "code":"KMSKeyNotAccessibleFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Error accessing KMS key.

" - } - ], - "documentation":"

Creates a DB instance that acts as a Read Replica of a source DB instance.

All Read Replica DB instances are created as Single-AZ deployments with backups disabled. All other DB instance attributes (including DB security groups and DB parameter groups) are inherited from the source DB instance, except as specified below.

The source DB instance must have backup retention enabled.

" - }, - "CreateDBParameterGroup":{ - "name":"CreateDBParameterGroup", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"CreateDBParameterGroupMessage", - "documentation":"

" - }, - "output":{ - "shape":"CreateDBParameterGroupResult", - "wrapper":true, - "documentation":"

Contains the result of a successful invocation of the CreateDBParameterGroup action.

This data type is used as a request parameter in the DeleteDBParameterGroup action, and as a response element in the DescribeDBParameterGroups action.

", - "resultWrapper":"CreateDBParameterGroupResult" - }, - "errors":[ - { - "shape":"DBParameterGroupQuotaExceededFault", - "error":{ - "code":"DBParameterGroupQuotaExceeded", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Request would result in user exceeding the allowed number of DB parameter groups.

" - }, - { - "shape":"DBParameterGroupAlreadyExistsFault", - "error":{ - "code":"DBParameterGroupAlreadyExists", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

A DB parameter group with the same name exists.

" - } - ], - "documentation":"

Creates a new DB parameter group.

A DB parameter group is initially created with the default parameters for the database engine used by the DB instance. To provide custom values for any of the parameters, you must modify the group after creating it using ModifyDBParameterGroup. Once you've created a DB parameter group, you need to associate it with your DB instance using ModifyDBInstance. When you associate a new DB parameter group with a running DB instance, you need to reboot the DB instance without failover for the new DB parameter group and associated settings to take effect.

After you create a DB parameter group, you should wait at least 5 minutes before creating your first DB instance that uses that DB parameter group as the default parameter group. This allows Amazon RDS to fully complete the create action before the parameter group is used as the default for a new DB instance. This is especially important for parameters that are critical when creating the default database for a DB instance, such as the character set for the default database defined by the character_set_database parameter. You can use the Parameter Groups option of the Amazon RDS console or the DescribeDBParameters command to verify that your DB parameter group has been created or modified.

" - }, - "CreateDBSecurityGroup":{ - "name":"CreateDBSecurityGroup", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"CreateDBSecurityGroupMessage", - "documentation":"

" - }, - "output":{ - "shape":"CreateDBSecurityGroupResult", - "wrapper":true, - "documentation":"

Contains the result of a successful invocation of the following actions:

This data type is used as a response element in the DescribeDBSecurityGroups action.

", - "resultWrapper":"CreateDBSecurityGroupResult" - }, - "errors":[ - { - "shape":"DBSecurityGroupAlreadyExistsFault", - "error":{ - "code":"DBSecurityGroupAlreadyExists", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

A DB security group with the name specified in DBSecurityGroupName already exists.

" - }, - { - "shape":"DBSecurityGroupQuotaExceededFault", - "error":{ - "code":"QuotaExceeded.DBSecurityGroup", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Request would result in user exceeding the allowed number of DB security groups.

" - }, - { - "shape":"DBSecurityGroupNotSupportedFault", - "error":{ - "code":"DBSecurityGroupNotSupported", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

A DB security group is not allowed for this action.

" - } - ], - "documentation":"

Creates a new DB security group. DB security groups control access to a DB instance.

" - }, - "CreateDBSnapshot":{ - "name":"CreateDBSnapshot", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"CreateDBSnapshotMessage", - "documentation":"

" - }, - "output":{ - "shape":"CreateDBSnapshotResult", - "wrapper":true, - "documentation":"

Contains the result of a successful invocation of the following actions:

This data type is used as a response element in the DescribeDBSnapshots action.

", - "resultWrapper":"CreateDBSnapshotResult" - }, - "errors":[ - { - "shape":"DBSnapshotAlreadyExistsFault", - "error":{ - "code":"DBSnapshotAlreadyExists", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

DBSnapshotIdentifier is already used by an existing snapshot.

" - }, - { - "shape":"InvalidDBInstanceStateFault", - "error":{ - "code":"InvalidDBInstanceState", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified DB instance is not in the available state.

" - }, - { - "shape":"DBInstanceNotFoundFault", - "error":{ - "code":"DBInstanceNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

DBInstanceIdentifier does not refer to an existing DB instance.

" - }, - { - "shape":"SnapshotQuotaExceededFault", - "error":{ - "code":"SnapshotQuotaExceeded", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Request would result in user exceeding the allowed number of DB snapshots.

" - } - ], - "documentation":"

Creates a DBSnapshot. The source DBInstance must be in \"available\" state.

" - }, - "CreateDBSubnetGroup":{ - "name":"CreateDBSubnetGroup", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"CreateDBSubnetGroupMessage", - "documentation":"

" - }, - "output":{ - "shape":"CreateDBSubnetGroupResult", - "wrapper":true, - "documentation":"

Contains the result of a successful invocation of the following actions:

This data type is used as a response element in the DescribeDBSubnetGroups action.

", - "resultWrapper":"CreateDBSubnetGroupResult" - }, - "errors":[ - { - "shape":"DBSubnetGroupAlreadyExistsFault", - "error":{ - "code":"DBSubnetGroupAlreadyExists", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

DBSubnetGroupName is already used by an existing DB subnet group.

" - }, - { - "shape":"DBSubnetGroupQuotaExceededFault", - "error":{ - "code":"DBSubnetGroupQuotaExceeded", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Request would result in user exceeding the allowed number of DB subnet groups.

" - }, - { - "shape":"DBSubnetQuotaExceededFault", - "error":{ - "code":"DBSubnetQuotaExceededFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Request would result in user exceeding the allowed number of subnets in a DB subnet groups.

" - }, - { - "shape":"DBSubnetGroupDoesNotCoverEnoughAZs", - "error":{ - "code":"DBSubnetGroupDoesNotCoverEnoughAZs", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Subnets in the DB subnet group should cover at least two Availability Zones unless there is only one Availability Zone.

" - }, - { - "shape":"InvalidSubnet", - "error":{ - "code":"InvalidSubnet", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The requested subnet is invalid, or multiple subnets were requested that are not all in a common VPC.

" - } - ], - "documentation":"

Creates a new DB subnet group. DB subnet groups must contain at least one subnet in at least two AZs in the region.

" - }, - "CreateEventSubscription":{ - "name":"CreateEventSubscription", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"CreateEventSubscriptionMessage", - "documentation":"

" - }, - "output":{ - "shape":"CreateEventSubscriptionResult", - "wrapper":true, - "documentation":"

Contains the results of a successful invocation of the DescribeEventSubscriptions action.

", - "resultWrapper":"CreateEventSubscriptionResult" - }, - "errors":[ - { - "shape":"EventSubscriptionQuotaExceededFault", - "error":{ - "code":"EventSubscriptionQuotaExceeded", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

You have reached the maximum number of event subscriptions.

" - }, - { - "shape":"SubscriptionAlreadyExistFault", - "error":{ - "code":"SubscriptionAlreadyExist", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The supplied subscription name already exists.

" - }, - { - "shape":"SNSInvalidTopicFault", - "error":{ - "code":"SNSInvalidTopic", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

SNS has responded that there is a problem with the SND topic specified.

" - }, - { - "shape":"SNSNoAuthorizationFault", - "error":{ - "code":"SNSNoAuthorization", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

You do not have permission to publish to the SNS topic ARN.

" - }, - { - "shape":"SNSTopicArnNotFoundFault", - "error":{ - "code":"SNSTopicArnNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The SNS topic ARN does not exist.

" - }, - { - "shape":"SubscriptionCategoryNotFoundFault", - "error":{ - "code":"SubscriptionCategoryNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The supplied category does not exist.

" - }, - { - "shape":"SourceNotFoundFault", - "error":{ - "code":"SourceNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The requested source could not be found.

" - } - ], - "documentation":"

Creates an RDS event notification subscription. This action requires a topic ARN (Amazon Resource Name) created by either the RDS console, the SNS console, or the SNS API. To obtain an ARN with SNS, you must create a topic in Amazon SNS and subscribe to the topic. The ARN is displayed in the SNS console.

You can specify the type of source (SourceType) you want to be notified of, provide a list of RDS sources (SourceIds) that triggers the events, and provide a list of event categories (EventCategories) for events you want to be notified of. For example, you can specify SourceType = db-instance, SourceIds = mydbinstance1, mydbinstance2 and EventCategories = Availability, Backup.

If you specify both the SourceType and SourceIds, such as SourceType = db-instance and SourceIdentifier = myDBInstance1, you will be notified of all the db-instance events for the specified source. If you specify a SourceType but do not specify a SourceIdentifier, you will receive notice of the events for that source type for all your RDS sources. If you do not specify either the SourceType nor the SourceIdentifier, you will be notified of events generated from all RDS sources belonging to your customer account.

" - }, - "CreateOptionGroup":{ - "name":"CreateOptionGroup", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"CreateOptionGroupMessage", - "documentation":"

" - }, - "output":{ - "shape":"CreateOptionGroupResult", - "wrapper":true, - "documentation":"

", - "resultWrapper":"CreateOptionGroupResult" - }, - "errors":[ - { - "shape":"OptionGroupAlreadyExistsFault", - "error":{ - "code":"OptionGroupAlreadyExistsFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The option group you are trying to create already exists.

" - }, - { - "shape":"OptionGroupQuotaExceededFault", - "error":{ - "code":"OptionGroupQuotaExceededFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The quota of 20 option groups was exceeded for this AWS account.

" - } - ], - "documentation":"

Creates a new option group. You can create up to 20 option groups.

" - }, - "DeleteDBInstance":{ - "name":"DeleteDBInstance", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DeleteDBInstanceMessage", - "documentation":"

" - }, - "output":{ - "shape":"DeleteDBInstanceResult", - "wrapper":true, - "documentation":"

Contains the result of a successful invocation of the following actions:

This data type is used as a response element in the DescribeDBInstances action.

", - "resultWrapper":"DeleteDBInstanceResult" - }, - "errors":[ - { - "shape":"DBInstanceNotFoundFault", - "error":{ - "code":"DBInstanceNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

DBInstanceIdentifier does not refer to an existing DB instance.

" - }, - { - "shape":"InvalidDBInstanceStateFault", - "error":{ - "code":"InvalidDBInstanceState", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified DB instance is not in the available state.

" - }, - { - "shape":"DBSnapshotAlreadyExistsFault", - "error":{ - "code":"DBSnapshotAlreadyExists", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

DBSnapshotIdentifier is already used by an existing snapshot.

" - }, - { - "shape":"SnapshotQuotaExceededFault", - "error":{ - "code":"SnapshotQuotaExceeded", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Request would result in user exceeding the allowed number of DB snapshots.

" - } - ], - "documentation":"

The DeleteDBInstance action deletes a previously provisioned DB instance. A successful response from the web service indicates the request was received correctly. When you delete a DB instance, all automated backups for that instance are deleted and cannot be recovered. Manual DB snapshots of the DB instance to be deleted are not deleted.

If a final DB snapshot is requested the status of the RDS instance will be \"deleting\" until the DB snapshot is created. The API action DescribeDBInstance is used to monitor the status of this operation. The action cannot be canceled or reverted once submitted.

" - }, - "DeleteDBParameterGroup":{ - "name":"DeleteDBParameterGroup", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DeleteDBParameterGroupMessage", - "documentation":"

" - }, - "errors":[ - { - "shape":"InvalidDBParameterGroupStateFault", - "error":{ - "code":"InvalidDBParameterGroupState", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The DB parameter group cannot be deleted because it is in use.

" - }, - { - "shape":"DBParameterGroupNotFoundFault", - "error":{ - "code":"DBParameterGroupNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

DBParameterGroupName does not refer to an existing DB parameter group.

" - } - ], - "documentation":"

Deletes a specified DBParameterGroup. The DBParameterGroup to be deleted cannot be associated with any DB instances.

The specified DB parameter group cannot be associated with any DB instances. " - }, - "DeleteDBSecurityGroup":{ - "name":"DeleteDBSecurityGroup", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DeleteDBSecurityGroupMessage", - "documentation":"

" - }, - "errors":[ - { - "shape":"InvalidDBSecurityGroupStateFault", - "error":{ - "code":"InvalidDBSecurityGroupState", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The state of the DB security group does not allow deletion.

" - }, - { - "shape":"DBSecurityGroupNotFoundFault", - "error":{ - "code":"DBSecurityGroupNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

DBSecurityGroupName does not refer to an existing DB security group.

" - } - ], - "documentation":"

Deletes a DB security group.

The specified DB security group must not be associated with any DB instances." - }, - "DeleteDBSnapshot":{ - "name":"DeleteDBSnapshot", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DeleteDBSnapshotMessage", - "documentation":"

" - }, - "output":{ - "shape":"DeleteDBSnapshotResult", - "wrapper":true, - "documentation":"

Contains the result of a successful invocation of the following actions:

This data type is used as a response element in the DescribeDBSnapshots action.

", - "resultWrapper":"DeleteDBSnapshotResult" - }, - "errors":[ - { - "shape":"InvalidDBSnapshotStateFault", - "error":{ - "code":"InvalidDBSnapshotState", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The state of the DB snapshot does not allow deletion.

" - }, - { - "shape":"DBSnapshotNotFoundFault", - "error":{ - "code":"DBSnapshotNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

DBSnapshotIdentifier does not refer to an existing DB snapshot.

" - } - ], - "documentation":"

Deletes a DBSnapshot. If the snapshot is being copied, the copy operation is terminated.

The DBSnapshot must be in the available state to be deleted." - }, - "DeleteDBSubnetGroup":{ - "name":"DeleteDBSubnetGroup", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DeleteDBSubnetGroupMessage", - "documentation":"

" - }, - "errors":[ - { - "shape":"InvalidDBSubnetGroupStateFault", - "error":{ - "code":"InvalidDBSubnetGroupStateFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The DB subnet group cannot be deleted because it is in use.

" - }, - { - "shape":"InvalidDBSubnetStateFault", - "error":{ - "code":"InvalidDBSubnetStateFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The DB subnet is not in the available state.

" - }, - { - "shape":"DBSubnetGroupNotFoundFault", - "error":{ - "code":"DBSubnetGroupNotFoundFault", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

DBSubnetGroupName does not refer to an existing DB subnet group.

" - } - ], - "documentation":"

Deletes a DB subnet group.

The specified database subnet group must not be associated with any DB instances." - }, - "DeleteEventSubscription":{ - "name":"DeleteEventSubscription", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DeleteEventSubscriptionMessage", - "documentation":"

" - }, - "output":{ - "shape":"DeleteEventSubscriptionResult", - "wrapper":true, - "documentation":"

Contains the results of a successful invocation of the DescribeEventSubscriptions action.

", - "resultWrapper":"DeleteEventSubscriptionResult" - }, - "errors":[ - { - "shape":"SubscriptionNotFoundFault", - "error":{ - "code":"SubscriptionNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The subscription name does not exist.

" - }, - { - "shape":"InvalidEventSubscriptionStateFault", - "error":{ - "code":"InvalidEventSubscriptionState", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

This error can occur if someone else is modifying a subscription. You should retry the action.

" - } - ], - "documentation":"

Deletes an RDS event notification subscription.

" - }, - "DeleteOptionGroup":{ - "name":"DeleteOptionGroup", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DeleteOptionGroupMessage", - "documentation":"

" - }, - "errors":[ - { - "shape":"OptionGroupNotFoundFault", - "error":{ - "code":"OptionGroupNotFoundFault", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified option group could not be found.

" - }, - { - "shape":"InvalidOptionGroupStateFault", - "error":{ - "code":"InvalidOptionGroupStateFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The option group is not in the available state.

" - } - ], - "documentation":"

Deletes an existing option group.

" - }, - "DescribeDBEngineVersions":{ - "name":"DescribeDBEngineVersions", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeDBEngineVersionsMessage"}, - "output":{ - "shape":"DBEngineVersionMessage", - "documentation":"

Contains the result of a successful invocation of the DescribeDBEngineVersions action.

", - "resultWrapper":"DescribeDBEngineVersionsResult" - }, - "documentation":"

Returns a list of the available DB engines.

" - }, - "DescribeDBInstances":{ - "name":"DescribeDBInstances", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DescribeDBInstancesMessage", - "documentation":"

" - }, - "output":{ - "shape":"DBInstanceMessage", - "documentation":"

Contains the result of a successful invocation of the DescribeDBInstances action.

", - "resultWrapper":"DescribeDBInstancesResult" - }, - "errors":[ - { - "shape":"DBInstanceNotFoundFault", - "error":{ - "code":"DBInstanceNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

DBInstanceIdentifier does not refer to an existing DB instance.

" - } - ], - "documentation":"

Returns information about provisioned RDS instances. This API supports pagination.

" - }, - "DescribeDBLogFiles":{ - "name":"DescribeDBLogFiles", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DescribeDBLogFilesMessage", - "documentation":"

" - }, - "output":{ - "shape":"DescribeDBLogFilesResponse", - "documentation":"

The response from a call to DescribeDBLogFiles.

", - "resultWrapper":"DescribeDBLogFilesResult" - }, - "errors":[ - { - "shape":"DBInstanceNotFoundFault", - "error":{ - "code":"DBInstanceNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

DBInstanceIdentifier does not refer to an existing DB instance.

" - } - ], - "documentation":"

Returns a list of DB log files for the DB instance.

" - }, - "DescribeDBParameterGroups":{ - "name":"DescribeDBParameterGroups", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DescribeDBParameterGroupsMessage", - "documentation":"

" - }, - "output":{ - "shape":"DBParameterGroupsMessage", - "documentation":"

Contains the result of a successful invocation of the DescribeDBParameterGroups action.

", - "resultWrapper":"DescribeDBParameterGroupsResult" - }, - "errors":[ - { - "shape":"DBParameterGroupNotFoundFault", - "error":{ - "code":"DBParameterGroupNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

DBParameterGroupName does not refer to an existing DB parameter group.

" - } - ], - "documentation":"

Returns a list of DBParameterGroup descriptions. If a DBParameterGroupName is specified, the list will contain only the description of the specified DB parameter group.

" - }, - "DescribeDBParameters":{ - "name":"DescribeDBParameters", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeDBParametersMessage"}, - "output":{ - "shape":"DBParameterGroupDetails", - "documentation":"

Contains the result of a successful invocation of the DescribeDBParameters action.

", - "resultWrapper":"DescribeDBParametersResult" - }, - "errors":[ - { - "shape":"DBParameterGroupNotFoundFault", - "error":{ - "code":"DBParameterGroupNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

DBParameterGroupName does not refer to an existing DB parameter group.

" - } - ], - "documentation":"

Returns the detailed parameter list for a particular DB parameter group.

" - }, - "DescribeDBSecurityGroups":{ - "name":"DescribeDBSecurityGroups", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DescribeDBSecurityGroupsMessage", - "documentation":"

" - }, - "output":{ - "shape":"DBSecurityGroupMessage", - "documentation":"

Contains the result of a successful invocation of the DescribeDBSecurityGroups action.

", - "resultWrapper":"DescribeDBSecurityGroupsResult" - }, - "errors":[ - { - "shape":"DBSecurityGroupNotFoundFault", - "error":{ - "code":"DBSecurityGroupNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

DBSecurityGroupName does not refer to an existing DB security group.

" - } - ], - "documentation":"

Returns a list of DBSecurityGroup descriptions. If a DBSecurityGroupName is specified, the list will contain only the descriptions of the specified DB security group.

" - }, - "DescribeDBSnapshots":{ - "name":"DescribeDBSnapshots", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DescribeDBSnapshotsMessage", - "documentation":"

" - }, - "output":{ - "shape":"DBSnapshotMessage", - "documentation":"

Contains the result of a successful invocation of the DescribeDBSnapshots action.

", - "resultWrapper":"DescribeDBSnapshotsResult" - }, - "errors":[ - { - "shape":"DBSnapshotNotFoundFault", - "error":{ - "code":"DBSnapshotNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

DBSnapshotIdentifier does not refer to an existing DB snapshot.

" - } - ], - "documentation":"

Returns information about DB snapshots. This API supports pagination.

" - }, - "DescribeDBSubnetGroups":{ - "name":"DescribeDBSubnetGroups", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DescribeDBSubnetGroupsMessage", - "documentation":"

" - }, - "output":{ - "shape":"DBSubnetGroupMessage", - "documentation":"

Contains the result of a successful invocation of the DescribeDBSubnetGroups action.

", - "resultWrapper":"DescribeDBSubnetGroupsResult" - }, - "errors":[ - { - "shape":"DBSubnetGroupNotFoundFault", - "error":{ - "code":"DBSubnetGroupNotFoundFault", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

DBSubnetGroupName does not refer to an existing DB subnet group.

" - } - ], - "documentation":"

Returns a list of DBSubnetGroup descriptions. If a DBSubnetGroupName is specified, the list will contain only the descriptions of the specified DBSubnetGroup.

For an overview of CIDR ranges, go to the Wikipedia Tutorial.

" - }, - "DescribeEngineDefaultParameters":{ - "name":"DescribeEngineDefaultParameters", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DescribeEngineDefaultParametersMessage", - "documentation":"

" - }, - "output":{ - "shape":"DescribeEngineDefaultParametersResult", - "wrapper":true, - "documentation":"

Contains the result of a successful invocation of the DescribeEngineDefaultParameters action.

", - "resultWrapper":"DescribeEngineDefaultParametersResult" - }, - "documentation":"

Returns the default engine and system parameter information for the specified database engine.

" - }, - "DescribeEventCategories":{ - "name":"DescribeEventCategories", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DescribeEventCategoriesMessage", - "documentation":"

" - }, - "output":{ - "shape":"EventCategoriesMessage", - "documentation":"

Data returned from the DescribeEventCategories action.

", - "resultWrapper":"DescribeEventCategoriesResult" - }, - "documentation":"

Displays a list of categories for all event source types, or, if specified, for a specified source type. You can see a list of the event categories and source types in the Events topic in the Amazon RDS User Guide.

" - }, - "DescribeEventSubscriptions":{ - "name":"DescribeEventSubscriptions", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DescribeEventSubscriptionsMessage", - "documentation":"

" - }, - "output":{ - "shape":"EventSubscriptionsMessage", - "documentation":"

Data returned by the DescribeEventSubscriptions action.

", - "resultWrapper":"DescribeEventSubscriptionsResult" - }, - "errors":[ - { - "shape":"SubscriptionNotFoundFault", - "error":{ - "code":"SubscriptionNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The subscription name does not exist.

" - } - ], - "documentation":"

Lists all the subscription descriptions for a customer account. The description for a subscription includes SubscriptionName, SNSTopicARN, CustomerID, SourceType, SourceID, CreationTime, and Status.

If you specify a SubscriptionName, lists the description for that subscription.

" - }, - "DescribeEvents":{ - "name":"DescribeEvents", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DescribeEventsMessage", - "documentation":"

" - }, - "output":{ - "shape":"EventsMessage", - "documentation":"

Contains the result of a successful invocation of the DescribeEvents action.

", - "resultWrapper":"DescribeEventsResult" - }, - "documentation":"

Returns events related to DB instances, DB security groups, DB snapshots, and DB parameter groups for the past 14 days. Events specific to a particular DB instance, DB security group, database snapshot, or DB parameter group can be obtained by providing the name as a parameter. By default, the past hour of events are returned.

" - }, - "DescribeOptionGroupOptions":{ - "name":"DescribeOptionGroupOptions", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DescribeOptionGroupOptionsMessage", - "documentation":"

" - }, - "output":{ - "shape":"OptionGroupOptionsMessage", - "documentation":"

", - "resultWrapper":"DescribeOptionGroupOptionsResult" - }, - "documentation":"

Describes all available options.

" - }, - "DescribeOptionGroups":{ - "name":"DescribeOptionGroups", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DescribeOptionGroupsMessage", - "documentation":"

" - }, - "output":{ - "shape":"OptionGroups", - "documentation":"

List of option groups.

", - "resultWrapper":"DescribeOptionGroupsResult" - }, - "errors":[ - { - "shape":"OptionGroupNotFoundFault", - "error":{ - "code":"OptionGroupNotFoundFault", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified option group could not be found.

" - } - ], - "documentation":"

Describes the available option groups.

" - }, - "DescribeOrderableDBInstanceOptions":{ - "name":"DescribeOrderableDBInstanceOptions", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DescribeOrderableDBInstanceOptionsMessage", - "documentation":"

" - }, - "output":{ - "shape":"OrderableDBInstanceOptionsMessage", - "documentation":"

Contains the result of a successful invocation of the DescribeOrderableDBInstanceOptions action.

", - "resultWrapper":"DescribeOrderableDBInstanceOptionsResult" - }, - "documentation":"

Returns a list of orderable DB instance options for the specified engine.

" - }, - "DescribePendingMaintenanceActions":{ - "name":"DescribePendingMaintenanceActions", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DescribePendingMaintenanceActionsMessage", - "documentation":"

" - }, - "output":{ - "shape":"PendingMaintenanceActionsMessage", - "documentation":"

Data returned from the DescribePendingMaintenanceActions action.

", - "resultWrapper":"DescribePendingMaintenanceActionsResult" - }, - "errors":[ - { - "shape":"ResourceNotFoundFault", - "error":{ - "code":"ResourceNotFoundFault", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified Resource ID was not found.

" - } - ], - "documentation":"

Returns a list of resources (for example, DB Instances) that have at least one pending maintenance action.

" - }, - "DescribeReservedDBInstances":{ - "name":"DescribeReservedDBInstances", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DescribeReservedDBInstancesMessage", - "documentation":"

" - }, - "output":{ - "shape":"ReservedDBInstanceMessage", - "documentation":"

Contains the result of a successful invocation of the DescribeReservedDBInstances action.

", - "resultWrapper":"DescribeReservedDBInstancesResult" - }, - "errors":[ - { - "shape":"ReservedDBInstanceNotFoundFault", - "error":{ - "code":"ReservedDBInstanceNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified reserved DB Instance not found.

" - } - ], - "documentation":"

Returns information about reserved DB instances for this account, or about a specified reserved DB instance.

" - }, - "DescribeReservedDBInstancesOfferings":{ - "name":"DescribeReservedDBInstancesOfferings", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DescribeReservedDBInstancesOfferingsMessage", - "documentation":"

" - }, - "output":{ - "shape":"ReservedDBInstancesOfferingMessage", - "documentation":"

Contains the result of a successful invocation of the DescribeReservedDBInstancesOfferings action.

", - "resultWrapper":"DescribeReservedDBInstancesOfferingsResult" - }, - "errors":[ - { - "shape":"ReservedDBInstancesOfferingNotFoundFault", - "error":{ - "code":"ReservedDBInstancesOfferingNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

Specified offering does not exist.

" - } - ], - "documentation":"

Lists available reserved DB instance offerings.

" - }, - "DownloadDBLogFilePortion":{ - "name":"DownloadDBLogFilePortion", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DownloadDBLogFilePortionMessage", - "documentation":"

" - }, - "output":{ - "shape":"DownloadDBLogFilePortionDetails", - "documentation":"

This data type is used as a response element to DownloadDBLogFilePortion.

", - "resultWrapper":"DownloadDBLogFilePortionResult" - }, - "errors":[ - { - "shape":"DBInstanceNotFoundFault", - "error":{ - "code":"DBInstanceNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

DBInstanceIdentifier does not refer to an existing DB instance.

" - } - ], - "documentation":"

Downloads all or a portion of the specified log file.

" - }, - "ListTagsForResource":{ - "name":"ListTagsForResource", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"ListTagsForResourceMessage", - "documentation":"

" - }, - "output":{ - "shape":"TagListMessage", - "documentation":"

", - "resultWrapper":"ListTagsForResourceResult" - }, - "errors":[ - { - "shape":"DBInstanceNotFoundFault", - "error":{ - "code":"DBInstanceNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

DBInstanceIdentifier does not refer to an existing DB instance.

" - }, - { - "shape":"DBSnapshotNotFoundFault", - "error":{ - "code":"DBSnapshotNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

DBSnapshotIdentifier does not refer to an existing DB snapshot.

" - } - ], - "documentation":"

Lists all tags on an Amazon RDS resource.

For an overview on tagging an Amazon RDS resource, see Tagging Amazon RDS Resources.

" - }, - "ModifyDBInstance":{ - "name":"ModifyDBInstance", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"ModifyDBInstanceMessage", - "documentation":"

" - }, - "output":{ - "shape":"ModifyDBInstanceResult", - "wrapper":true, - "documentation":"

Contains the result of a successful invocation of the following actions:

This data type is used as a response element in the DescribeDBInstances action.

", - "resultWrapper":"ModifyDBInstanceResult" - }, - "errors":[ - { - "shape":"InvalidDBInstanceStateFault", - "error":{ - "code":"InvalidDBInstanceState", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified DB instance is not in the available state.

" - }, - { - "shape":"InvalidDBSecurityGroupStateFault", - "error":{ - "code":"InvalidDBSecurityGroupState", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The state of the DB security group does not allow deletion.

" - }, - { - "shape":"DBInstanceAlreadyExistsFault", - "error":{ - "code":"DBInstanceAlreadyExists", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

User already has a DB instance with the given identifier.

" - }, - { - "shape":"DBInstanceNotFoundFault", - "error":{ - "code":"DBInstanceNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

DBInstanceIdentifier does not refer to an existing DB instance.

" - }, - { - "shape":"DBSecurityGroupNotFoundFault", - "error":{ - "code":"DBSecurityGroupNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

DBSecurityGroupName does not refer to an existing DB security group.

" - }, - { - "shape":"DBParameterGroupNotFoundFault", - "error":{ - "code":"DBParameterGroupNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

DBParameterGroupName does not refer to an existing DB parameter group.

" - }, - { - "shape":"InsufficientDBInstanceCapacityFault", - "error":{ - "code":"InsufficientDBInstanceCapacity", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Specified DB instance class is not available in the specified Availability Zone.

" - }, - { - "shape":"StorageQuotaExceededFault", - "error":{ - "code":"StorageQuotaExceeded", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Request would result in user exceeding the allowed amount of storage available across all DB instances.

" - }, - { - "shape":"InvalidVPCNetworkStateFault", - "error":{ - "code":"InvalidVPCNetworkStateFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

DB subnet group does not cover all Availability Zones after it is created because users' change.

" - }, - { - "shape":"ProvisionedIopsNotAvailableInAZFault", - "error":{ - "code":"ProvisionedIopsNotAvailableInAZFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Provisioned IOPS not available in the specified Availability Zone.

" - }, - { - "shape":"OptionGroupNotFoundFault", - "error":{ - "code":"OptionGroupNotFoundFault", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified option group could not be found.

" - }, - { - "shape":"DBUpgradeDependencyFailureFault", - "error":{ - "code":"DBUpgradeDependencyFailure", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The DB upgrade failed because a resource the DB depends on could not be modified.

" - }, - { - "shape":"StorageTypeNotSupportedFault", - "error":{ - "code":"StorageTypeNotSupported", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

StorageType specified cannot be associated with the DB Instance.

" - }, - { - "shape":"AuthorizationNotFoundFault", - "error":{ - "code":"AuthorizationNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

Specified CIDRIP or EC2 security group is not authorized for the specified DB security group.

RDS may not also be authorized via IAM to perform necessary actions on your behalf.

" - } - ], - "documentation":"

Modify settings for a DB instance. You can change one or more database configuration parameters by specifying these parameters and the new values in the request.

" - }, - "ModifyDBParameterGroup":{ - "name":"ModifyDBParameterGroup", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"ModifyDBParameterGroupMessage", - "documentation":"

" - }, - "output":{ - "shape":"DBParameterGroupNameMessage", - "documentation":"

Contains the result of a successful invocation of the ModifyDBParameterGroup or ResetDBParameterGroup action.

", - "resultWrapper":"ModifyDBParameterGroupResult" - }, - "errors":[ - { - "shape":"DBParameterGroupNotFoundFault", - "error":{ - "code":"DBParameterGroupNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

DBParameterGroupName does not refer to an existing DB parameter group.

" - }, - { - "shape":"InvalidDBParameterGroupStateFault", - "error":{ - "code":"InvalidDBParameterGroupState", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The DB parameter group cannot be deleted because it is in use.

" - } - ], - "documentation":"

Modifies the parameters of a DB parameter group. To modify more than one parameter, submit a list of the following: ParameterName, ParameterValue, and ApplyMethod. A maximum of 20 parameters can be modified in a single request.

Changes to dynamic parameters are applied immediately. Changes to static parameters require a reboot without failover to the DB instance associated with the parameter group before the change can take effect.

After you modify a DB parameter group, you should wait at least 5 minutes before creating your first DB instance that uses that DB parameter group as the default parameter group. This allows Amazon RDS to fully complete the modify action before the parameter group is used as the default for a new DB instance. This is especially important for parameters that are critical when creating the default database for a DB instance, such as the character set for the default database defined by the character_set_database parameter. You can use the Parameter Groups option of the Amazon RDS console or the DescribeDBParameters command to verify that your DB parameter group has been created or modified.

" - }, - "ModifyDBSubnetGroup":{ - "name":"ModifyDBSubnetGroup", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"ModifyDBSubnetGroupMessage", - "documentation":"

" - }, - "output":{ - "shape":"ModifyDBSubnetGroupResult", - "wrapper":true, - "documentation":"

Contains the result of a successful invocation of the following actions:

This data type is used as a response element in the DescribeDBSubnetGroups action.

", - "resultWrapper":"ModifyDBSubnetGroupResult" - }, - "errors":[ - { - "shape":"DBSubnetGroupNotFoundFault", - "error":{ - "code":"DBSubnetGroupNotFoundFault", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

DBSubnetGroupName does not refer to an existing DB subnet group.

" - }, - { - "shape":"DBSubnetQuotaExceededFault", - "error":{ - "code":"DBSubnetQuotaExceededFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Request would result in user exceeding the allowed number of subnets in a DB subnet groups.

" - }, - { - "shape":"SubnetAlreadyInUse", - "error":{ - "code":"SubnetAlreadyInUse", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The DB subnet is already in use in the Availability Zone.

" - }, - { - "shape":"DBSubnetGroupDoesNotCoverEnoughAZs", - "error":{ - "code":"DBSubnetGroupDoesNotCoverEnoughAZs", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Subnets in the DB subnet group should cover at least two Availability Zones unless there is only one Availability Zone.

" - }, - { - "shape":"InvalidSubnet", - "error":{ - "code":"InvalidSubnet", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The requested subnet is invalid, or multiple subnets were requested that are not all in a common VPC.

" - } - ], - "documentation":"

Modifies an existing DB subnet group. DB subnet groups must contain at least one subnet in at least two AZs in the region.

" - }, - "ModifyEventSubscription":{ - "name":"ModifyEventSubscription", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"ModifyEventSubscriptionMessage", - "documentation":"

" - }, - "output":{ - "shape":"ModifyEventSubscriptionResult", - "wrapper":true, - "documentation":"

Contains the results of a successful invocation of the DescribeEventSubscriptions action.

", - "resultWrapper":"ModifyEventSubscriptionResult" - }, - "errors":[ - { - "shape":"EventSubscriptionQuotaExceededFault", - "error":{ - "code":"EventSubscriptionQuotaExceeded", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

You have reached the maximum number of event subscriptions.

" - }, - { - "shape":"SubscriptionNotFoundFault", - "error":{ - "code":"SubscriptionNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The subscription name does not exist.

" - }, - { - "shape":"SNSInvalidTopicFault", - "error":{ - "code":"SNSInvalidTopic", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

SNS has responded that there is a problem with the SND topic specified.

" - }, - { - "shape":"SNSNoAuthorizationFault", - "error":{ - "code":"SNSNoAuthorization", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

You do not have permission to publish to the SNS topic ARN.

" - }, - { - "shape":"SNSTopicArnNotFoundFault", - "error":{ - "code":"SNSTopicArnNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The SNS topic ARN does not exist.

" - }, - { - "shape":"SubscriptionCategoryNotFoundFault", - "error":{ - "code":"SubscriptionCategoryNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The supplied category does not exist.

" - } - ], - "documentation":"

Modifies an existing RDS event notification subscription. Note that you cannot modify the source identifiers using this call; to change source identifiers for a subscription, use the AddSourceIdentifierToSubscription and RemoveSourceIdentifierFromSubscription calls.

You can see a list of the event categories for a given SourceType in the Events topic in the Amazon RDS User Guide or by using the DescribeEventCategories action.

" - }, - "ModifyOptionGroup":{ - "name":"ModifyOptionGroup", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"ModifyOptionGroupMessage", - "documentation":"

" - }, - "output":{ - "shape":"ModifyOptionGroupResult", - "wrapper":true, - "documentation":"

", - "resultWrapper":"ModifyOptionGroupResult" - }, - "errors":[ - { - "shape":"InvalidOptionGroupStateFault", - "error":{ - "code":"InvalidOptionGroupStateFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The option group is not in the available state.

" - }, - { - "shape":"OptionGroupNotFoundFault", - "error":{ - "code":"OptionGroupNotFoundFault", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified option group could not be found.

" - } - ], - "documentation":"

Modifies an existing option group.

" - }, - "PromoteReadReplica":{ - "name":"PromoteReadReplica", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"PromoteReadReplicaMessage", - "documentation":"

" - }, - "output":{ - "shape":"PromoteReadReplicaResult", - "wrapper":true, - "documentation":"

Contains the result of a successful invocation of the following actions:

This data type is used as a response element in the DescribeDBInstances action.

", - "resultWrapper":"PromoteReadReplicaResult" - }, - "errors":[ - { - "shape":"InvalidDBInstanceStateFault", - "error":{ - "code":"InvalidDBInstanceState", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified DB instance is not in the available state.

" - }, - { - "shape":"DBInstanceNotFoundFault", - "error":{ - "code":"DBInstanceNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

DBInstanceIdentifier does not refer to an existing DB instance.

" - } - ], - "documentation":"

Promotes a Read Replica DB instance to a standalone DB instance.

We recommend that you enable automated backups on your Read Replica before promoting the Read Replica. This ensures that no backup is taken during the promotion process. Once the instance is promoted to a primary instance, backups are taken based on your backup settings.

" - }, - "PurchaseReservedDBInstancesOffering":{ - "name":"PurchaseReservedDBInstancesOffering", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"PurchaseReservedDBInstancesOfferingMessage", - "documentation":"

" - }, - "output":{ - "shape":"PurchaseReservedDBInstancesOfferingResult", - "wrapper":true, - "documentation":"

This data type is used as a response element in the DescribeReservedDBInstances and PurchaseReservedDBInstancesOffering actions.

", - "resultWrapper":"PurchaseReservedDBInstancesOfferingResult" - }, - "errors":[ - { - "shape":"ReservedDBInstancesOfferingNotFoundFault", - "error":{ - "code":"ReservedDBInstancesOfferingNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

Specified offering does not exist.

" - }, - { - "shape":"ReservedDBInstanceAlreadyExistsFault", - "error":{ - "code":"ReservedDBInstanceAlreadyExists", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

User already has a reservation with the given identifier.

" - }, - { - "shape":"ReservedDBInstanceQuotaExceededFault", - "error":{ - "code":"ReservedDBInstanceQuotaExceeded", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Request would exceed the user's DB Instance quota.

" - } - ], - "documentation":"

Purchases a reserved DB instance offering.

" - }, - "RebootDBInstance":{ - "name":"RebootDBInstance", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"RebootDBInstanceMessage", - "documentation":"

" - }, - "output":{ - "shape":"RebootDBInstanceResult", - "wrapper":true, - "documentation":"

Contains the result of a successful invocation of the following actions:

This data type is used as a response element in the DescribeDBInstances action.

", - "resultWrapper":"RebootDBInstanceResult" - }, - "errors":[ - { - "shape":"InvalidDBInstanceStateFault", - "error":{ - "code":"InvalidDBInstanceState", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified DB instance is not in the available state.

" - }, - { - "shape":"DBInstanceNotFoundFault", - "error":{ - "code":"DBInstanceNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

DBInstanceIdentifier does not refer to an existing DB instance.

" - } - ], - "documentation":"

Rebooting a DB instance restarts the database engine service. A reboot also applies to the DB instance any modifications to the associated DB parameter group that were pending. Rebooting a DB instance results in a momentary outage of the instance, during which the DB instance status is set to rebooting. If the RDS instance is configured for MultiAZ, it is possible that the reboot will be conducted through a failover. An Amazon RDS event is created when the reboot is completed.

If your DB instance is deployed in multiple Availability Zones, you can force a failover from one AZ to the other during the reboot. You might force a failover to test the availability of your DB instance deployment or to restore operations to the original AZ after a failover occurs.

The time required to reboot is a function of the specific database engine's crash recovery process. To improve the reboot time, we recommend that you reduce database activities as much as possible during the reboot process to reduce rollback activity for in-transit transactions.

" - }, - "RemoveSourceIdentifierFromSubscription":{ - "name":"RemoveSourceIdentifierFromSubscription", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"RemoveSourceIdentifierFromSubscriptionMessage", - "documentation":"

" - }, - "output":{ - "shape":"RemoveSourceIdentifierFromSubscriptionResult", - "wrapper":true, - "documentation":"

Contains the results of a successful invocation of the DescribeEventSubscriptions action.

", - "resultWrapper":"RemoveSourceIdentifierFromSubscriptionResult" - }, - "errors":[ - { - "shape":"SubscriptionNotFoundFault", - "error":{ - "code":"SubscriptionNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The subscription name does not exist.

" - }, - { - "shape":"SourceNotFoundFault", - "error":{ - "code":"SourceNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The requested source could not be found.

" - } - ], - "documentation":"

Removes a source identifier from an existing RDS event notification subscription.

" - }, - "RemoveTagsFromResource":{ - "name":"RemoveTagsFromResource", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"RemoveTagsFromResourceMessage", - "documentation":"

" - }, - "errors":[ - { - "shape":"DBInstanceNotFoundFault", - "error":{ - "code":"DBInstanceNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

DBInstanceIdentifier does not refer to an existing DB instance.

" - }, - { - "shape":"DBSnapshotNotFoundFault", - "error":{ - "code":"DBSnapshotNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

DBSnapshotIdentifier does not refer to an existing DB snapshot.

" - } - ], - "documentation":"

Removes metadata tags from an Amazon RDS resource.

For an overview on tagging an Amazon RDS resource, see Tagging Amazon RDS Resources.

" - }, - "ResetDBParameterGroup":{ - "name":"ResetDBParameterGroup", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"ResetDBParameterGroupMessage", - "documentation":"

" - }, - "output":{ - "shape":"DBParameterGroupNameMessage", - "documentation":"

Contains the result of a successful invocation of the ModifyDBParameterGroup or ResetDBParameterGroup action.

", - "resultWrapper":"ResetDBParameterGroupResult" - }, - "errors":[ - { - "shape":"InvalidDBParameterGroupStateFault", - "error":{ - "code":"InvalidDBParameterGroupState", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The DB parameter group cannot be deleted because it is in use.

" - }, - { - "shape":"DBParameterGroupNotFoundFault", - "error":{ - "code":"DBParameterGroupNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

DBParameterGroupName does not refer to an existing DB parameter group.

" - } - ], - "documentation":"

Modifies the parameters of a DB parameter group to the engine/system default value. To reset specific parameters submit a list of the following: ParameterName and ApplyMethod. To reset the entire DB parameter group, specify the DBParameterGroup name and ResetAllParameters parameters. When resetting the entire group, dynamic parameters are updated immediately and static parameters are set to pending-reboot to take effect on the next DB instance restart or RebootDBInstance request.

" - }, - "RestoreDBInstanceFromDBSnapshot":{ - "name":"RestoreDBInstanceFromDBSnapshot", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"RestoreDBInstanceFromDBSnapshotMessage", - "documentation":"

" - }, - "output":{ - "shape":"RestoreDBInstanceFromDBSnapshotResult", - "wrapper":true, - "documentation":"

Contains the result of a successful invocation of the following actions:

This data type is used as a response element in the DescribeDBInstances action.

", - "resultWrapper":"RestoreDBInstanceFromDBSnapshotResult" - }, - "errors":[ - { - "shape":"DBInstanceAlreadyExistsFault", - "error":{ - "code":"DBInstanceAlreadyExists", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

User already has a DB instance with the given identifier.

" - }, - { - "shape":"DBSnapshotNotFoundFault", - "error":{ - "code":"DBSnapshotNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

DBSnapshotIdentifier does not refer to an existing DB snapshot.

" - }, - { - "shape":"InstanceQuotaExceededFault", - "error":{ - "code":"InstanceQuotaExceeded", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Request would result in user exceeding the allowed number of DB instances.

" - }, - { - "shape":"InsufficientDBInstanceCapacityFault", - "error":{ - "code":"InsufficientDBInstanceCapacity", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Specified DB instance class is not available in the specified Availability Zone.

" - }, - { - "shape":"InvalidDBSnapshotStateFault", - "error":{ - "code":"InvalidDBSnapshotState", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The state of the DB snapshot does not allow deletion.

" - }, - { - "shape":"StorageQuotaExceededFault", - "error":{ - "code":"StorageQuotaExceeded", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Request would result in user exceeding the allowed amount of storage available across all DB instances.

" - }, - { - "shape":"InvalidVPCNetworkStateFault", - "error":{ - "code":"InvalidVPCNetworkStateFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

DB subnet group does not cover all Availability Zones after it is created because users' change.

" - }, - { - "shape":"InvalidRestoreFault", - "error":{ - "code":"InvalidRestoreFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Cannot restore from vpc backup to non-vpc DB instance.

" - }, - { - "shape":"DBSubnetGroupNotFoundFault", - "error":{ - "code":"DBSubnetGroupNotFoundFault", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

DBSubnetGroupName does not refer to an existing DB subnet group.

" - }, - { - "shape":"DBSubnetGroupDoesNotCoverEnoughAZs", - "error":{ - "code":"DBSubnetGroupDoesNotCoverEnoughAZs", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Subnets in the DB subnet group should cover at least two Availability Zones unless there is only one Availability Zone.

" - }, - { - "shape":"InvalidSubnet", - "error":{ - "code":"InvalidSubnet", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The requested subnet is invalid, or multiple subnets were requested that are not all in a common VPC.

" - }, - { - "shape":"ProvisionedIopsNotAvailableInAZFault", - "error":{ - "code":"ProvisionedIopsNotAvailableInAZFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Provisioned IOPS not available in the specified Availability Zone.

" - }, - { - "shape":"OptionGroupNotFoundFault", - "error":{ - "code":"OptionGroupNotFoundFault", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified option group could not be found.

" - }, - { - "shape":"StorageTypeNotSupportedFault", - "error":{ - "code":"StorageTypeNotSupported", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

StorageType specified cannot be associated with the DB Instance.

" - }, - { - "shape":"AuthorizationNotFoundFault", - "error":{ - "code":"AuthorizationNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

Specified CIDRIP or EC2 security group is not authorized for the specified DB security group.

RDS may not also be authorized via IAM to perform necessary actions on your behalf.

" - }, - { - "shape":"KMSKeyNotAccessibleFault", - "error":{ - "code":"KMSKeyNotAccessibleFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Error accessing KMS key.

" - } - ], - "documentation":"

Creates a new DB instance from a DB snapshot. The target database is created from the source database restore point with the same configuration as the original source database, except that the new RDS instance is created with the default security group.

If your intent is to replace your original DB instance with the new, restored DB instance, then rename your original DB instance before you call the RestoreDBInstanceFromDBSnapshot action. RDS does not allow two DB instances with the same name. Once you have renamed your original DB instance with a different identifier, then you can pass the original name of the DB instance as the DBInstanceIdentifier in the call to the RestoreDBInstanceFromDBSnapshot action. The result is that you will replace the original DB instance with the DB instance created from the snapshot.

" - }, - "RestoreDBInstanceToPointInTime":{ - "name":"RestoreDBInstanceToPointInTime", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"RestoreDBInstanceToPointInTimeMessage", - "documentation":"

" - }, - "output":{ - "shape":"RestoreDBInstanceToPointInTimeResult", - "wrapper":true, - "documentation":"

Contains the result of a successful invocation of the following actions:

This data type is used as a response element in the DescribeDBInstances action.

", - "resultWrapper":"RestoreDBInstanceToPointInTimeResult" - }, - "errors":[ - { - "shape":"DBInstanceAlreadyExistsFault", - "error":{ - "code":"DBInstanceAlreadyExists", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

User already has a DB instance with the given identifier.

" - }, - { - "shape":"DBInstanceNotFoundFault", - "error":{ - "code":"DBInstanceNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

DBInstanceIdentifier does not refer to an existing DB instance.

" - }, - { - "shape":"InstanceQuotaExceededFault", - "error":{ - "code":"InstanceQuotaExceeded", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Request would result in user exceeding the allowed number of DB instances.

" - }, - { - "shape":"InsufficientDBInstanceCapacityFault", - "error":{ - "code":"InsufficientDBInstanceCapacity", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Specified DB instance class is not available in the specified Availability Zone.

" - }, - { - "shape":"InvalidDBInstanceStateFault", - "error":{ - "code":"InvalidDBInstanceState", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified DB instance is not in the available state.

" - }, - { - "shape":"PointInTimeRestoreNotEnabledFault", - "error":{ - "code":"PointInTimeRestoreNotEnabled", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

SourceDBInstanceIdentifier refers to a DB instance with BackupRetentionPeriod equal to 0.

" - }, - { - "shape":"StorageQuotaExceededFault", - "error":{ - "code":"StorageQuotaExceeded", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Request would result in user exceeding the allowed amount of storage available across all DB instances.

" - }, - { - "shape":"InvalidVPCNetworkStateFault", - "error":{ - "code":"InvalidVPCNetworkStateFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

DB subnet group does not cover all Availability Zones after it is created because users' change.

" - }, - { - "shape":"InvalidRestoreFault", - "error":{ - "code":"InvalidRestoreFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Cannot restore from vpc backup to non-vpc DB instance.

" - }, - { - "shape":"DBSubnetGroupNotFoundFault", - "error":{ - "code":"DBSubnetGroupNotFoundFault", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

DBSubnetGroupName does not refer to an existing DB subnet group.

" - }, - { - "shape":"DBSubnetGroupDoesNotCoverEnoughAZs", - "error":{ - "code":"DBSubnetGroupDoesNotCoverEnoughAZs", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Subnets in the DB subnet group should cover at least two Availability Zones unless there is only one Availability Zone.

" - }, - { - "shape":"InvalidSubnet", - "error":{ - "code":"InvalidSubnet", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The requested subnet is invalid, or multiple subnets were requested that are not all in a common VPC.

" - }, - { - "shape":"ProvisionedIopsNotAvailableInAZFault", - "error":{ - "code":"ProvisionedIopsNotAvailableInAZFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Provisioned IOPS not available in the specified Availability Zone.

" - }, - { - "shape":"OptionGroupNotFoundFault", - "error":{ - "code":"OptionGroupNotFoundFault", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified option group could not be found.

" - }, - { - "shape":"StorageTypeNotSupportedFault", - "error":{ - "code":"StorageTypeNotSupported", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

StorageType specified cannot be associated with the DB Instance.

" - }, - { - "shape":"AuthorizationNotFoundFault", - "error":{ - "code":"AuthorizationNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

Specified CIDRIP or EC2 security group is not authorized for the specified DB security group.

RDS may not also be authorized via IAM to perform necessary actions on your behalf.

" - }, - { - "shape":"KMSKeyNotAccessibleFault", - "error":{ - "code":"KMSKeyNotAccessibleFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Error accessing KMS key.

" - } - ], - "documentation":"

Restores a DB instance to an arbitrary point-in-time. Users can restore to any point in time before the LatestRestorableTime for up to BackupRetentionPeriod days. The target database is created from the source database with the same configuration as the original database except that the DB instance is created with the default DB security group.

" - }, - "RevokeDBSecurityGroupIngress":{ - "name":"RevokeDBSecurityGroupIngress", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"RevokeDBSecurityGroupIngressMessage", - "documentation":"

" - }, - "output":{ - "shape":"RevokeDBSecurityGroupIngressResult", - "wrapper":true, - "documentation":"

Contains the result of a successful invocation of the following actions:

This data type is used as a response element in the DescribeDBSecurityGroups action.

", - "resultWrapper":"RevokeDBSecurityGroupIngressResult" - }, - "errors":[ - { - "shape":"DBSecurityGroupNotFoundFault", - "error":{ - "code":"DBSecurityGroupNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

DBSecurityGroupName does not refer to an existing DB security group.

" - }, - { - "shape":"AuthorizationNotFoundFault", - "error":{ - "code":"AuthorizationNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

Specified CIDRIP or EC2 security group is not authorized for the specified DB security group.

RDS may not also be authorized via IAM to perform necessary actions on your behalf.

" - }, - { - "shape":"InvalidDBSecurityGroupStateFault", - "error":{ - "code":"InvalidDBSecurityGroupState", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The state of the DB security group does not allow deletion.

" - } - ], - "documentation":"

Revokes ingress from a DBSecurityGroup for previously authorized IP ranges or EC2 or VPC Security Groups. Required parameters for this API are one of CIDRIP, EC2SecurityGroupId for VPC, or (EC2SecurityGroupOwnerId and either EC2SecurityGroupName or EC2SecurityGroupId).

" - } - }, - "shapes":{ - "AddSourceIdentifierToSubscriptionMessage":{ - "type":"structure", - "required":[ - "SubscriptionName", - "SourceIdentifier" - ], - "members":{ - "SubscriptionName":{ - "shape":"String", - "documentation":"

The name of the RDS event notification subscription you want to add a source identifier to.

" - }, - "SourceIdentifier":{ - "shape":"String", - "documentation":"

The identifier of the event source to be added. An identifier must begin with a letter and must contain only ASCII letters, digits, and hyphens; it cannot end with a hyphen or contain two consecutive hyphens.

Constraints:

" - } - }, - "documentation":"

" - }, - "AddTagsToResourceMessage":{ - "type":"structure", - "required":[ - "ResourceName", - "Tags" - ], - "members":{ - "ResourceName":{ - "shape":"String", - "documentation":"

The Amazon RDS resource the tags will be added to. This value is an Amazon Resource Name (ARN). For information about creating an ARN, see Constructing an RDS Amazon Resource Name (ARN).

" - }, - "Tags":{ - "shape":"TagList", - "documentation":"

The tags to be assigned to the Amazon RDS resource.

" - } - }, - "documentation":"

" - }, - "ApplyMethod":{ - "type":"string", - "enum":[ - "immediate", - "pending-reboot" - ] - }, - "ApplyPendingMaintenanceActionMessage":{ - "type":"structure", - "required":[ - "ResourceIdentifier", - "ApplyAction", - "OptInType" - ], - "members":{ - "ResourceIdentifier":{ - "shape":"String", - "documentation":"

The ARN of the resource (for example, a DB Instance) that the pending maintenance action applies to.

" - }, - "ApplyAction":{ - "shape":"String", - "documentation":"

The pending maintenance action to apply to this resource.

" - }, - "OptInType":{ - "shape":"String", - "documentation":"

Specify an opt-in request, or undo an opt-in request. An opt-in request of type immediate cannot be undone.

Valid values:

" - } - }, - "documentation":"

" - }, - "AuthorizationAlreadyExistsFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"AuthorizationAlreadyExists", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified CIDRIP or EC2 security group is already authorized for the specified DB security group.

" - }, - "AuthorizationNotFoundFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"AuthorizationNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

Specified CIDRIP or EC2 security group is not authorized for the specified DB security group.

RDS may not also be authorized via IAM to perform necessary actions on your behalf.

" - }, - "AuthorizationQuotaExceededFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"AuthorizationQuotaExceeded", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

DB security group authorization quota has been reached.

" - }, - "AuthorizeDBSecurityGroupIngressMessage":{ - "type":"structure", - "required":["DBSecurityGroupName"], - "members":{ - "DBSecurityGroupName":{ - "shape":"String", - "documentation":"

The name of the DB security group to add authorization to.

" - }, - "CIDRIP":{ - "shape":"String", - "documentation":"

The IP range to authorize.

" - }, - "EC2SecurityGroupName":{ - "shape":"String", - "documentation":"

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.

" - }, - "EC2SecurityGroupId":{ - "shape":"String", - "documentation":"

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.

" - }, - "EC2SecurityGroupOwnerId":{ - "shape":"String", - "documentation":"

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.

" - } - }, - "documentation":"

" - }, - "AvailabilityZone":{ - "type":"structure", - "members":{ - "Name":{ - "shape":"String", - "documentation":"

The name of the availability zone.

" - } - }, - "wrapper":true, - "documentation":"

Contains Availability Zone information.

This data type is used as an element in the following data type:

" - }, - "AvailabilityZoneList":{ - "type":"list", - "member":{ - "shape":"AvailabilityZone", - "locationName":"AvailabilityZone" - } - }, - "Boolean":{"type":"boolean"}, - "BooleanOptional":{"type":"boolean"}, - "CharacterSet":{ - "type":"structure", - "members":{ - "CharacterSetName":{ - "shape":"String", - "documentation":"

The name of the character set.

" - }, - "CharacterSetDescription":{ - "shape":"String", - "documentation":"

The description of the character set.

" - } - }, - "documentation":"

This data type is used as a response element in the action DescribeDBEngineVersions.

" - }, - "CopyDBParameterGroupMessage":{ - "type":"structure", - "required":[ - "SourceDBParameterGroupIdentifier", - "TargetDBParameterGroupIdentifier", - "TargetDBParameterGroupDescription" - ], - "members":{ - "SourceDBParameterGroupIdentifier":{ - "shape":"String", - "documentation":"

The identifier or ARN for the source DB parameter group.

Constraints:

" - }, - "TargetDBParameterGroupIdentifier":{ - "shape":"String", - "documentation":"

The identifier for the copied DB parameter group.

Constraints:

Example: my-db-parameter-group

" - }, - "TargetDBParameterGroupDescription":{ - "shape":"String", - "documentation":"

A description for the copied DB parameter group.

" - }, - "Tags":{"shape":"TagList"} - }, - "documentation":"

" - }, - "CopyDBSnapshotMessage":{ - "type":"structure", - "required":[ - "SourceDBSnapshotIdentifier", - "TargetDBSnapshotIdentifier" - ], - "members":{ - "SourceDBSnapshotIdentifier":{ - "shape":"String", - "documentation":"

The identifier for the source DB snapshot.

Constraints:

Example: rds:mydb-2012-04-02-00-01

Example: arn:aws:rds:rr-regn-1:123456789012:snapshot:mysql-instance1-snapshot-20130805

" - }, - "TargetDBSnapshotIdentifier":{ - "shape":"String", - "documentation":"

The identifier for the copied snapshot.

Constraints:

Example: my-db-snapshot

" - }, - "Tags":{"shape":"TagList"} - }, - "documentation":"

" - }, - "CopyOptionGroupMessage":{ - "type":"structure", - "required":[ - "SourceOptionGroupIdentifier", - "TargetOptionGroupIdentifier", - "TargetOptionGroupDescription" - ], - "members":{ - "SourceOptionGroupIdentifier":{ - "shape":"String", - "documentation":"

The identifier or ARN for the source option group.

Constraints:

" - }, - "TargetOptionGroupIdentifier":{ - "shape":"String", - "documentation":"

The identifier for the copied option group.

Constraints:

Example: my-option-group

" - }, - "TargetOptionGroupDescription":{ - "shape":"String", - "documentation":"

The description for the copied option group.

" - }, - "Tags":{"shape":"TagList"} - }, - "documentation":"

" - }, - "CreateDBInstanceMessage":{ - "type":"structure", - "required":[ - "DBInstanceIdentifier", - "AllocatedStorage", - "DBInstanceClass", - "Engine", - "MasterUsername", - "MasterUserPassword" - ], - "members":{ - "DBName":{ - "shape":"String", - "documentation":"

The meaning of this parameter differs according to the database engine you use.

Type: 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.

Constraints:

PostgreSQL

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.

Constraints:

Oracle

The Oracle System ID (SID) of the created DB instance.

Default: ORCL

Constraints:

SQL Server

Not applicable. Must be null.

" - }, - "DBInstanceIdentifier":{ - "shape":"String", - "documentation":"

The DB instance identifier. This parameter is stored as a lowercase string.

Constraints:

Example: mydbinstance

" - }, - "AllocatedStorage":{ - "shape":"IntegerOptional", - "documentation":"

The amount of storage (in gigabytes) to be initially allocated for the database instance.

Type: Integer

MySQL

Constraints: Must be an integer from 5 to 3072.

PostgreSQL

Constraints: Must be an integer from 5 to 3072.

Oracle

Constraints: Must be an integer from 10 to 3072.

SQL Server

Constraints: Must be an integer from 200 to 1024 (Standard Edition and Enterprise Edition) or from 20 to 1024 (Express Edition and Web Edition)

" - }, - "DBInstanceClass":{ - "shape":"String", - "documentation":"

The compute and memory capacity of the DB instance.

Valid Values: db.t1.micro | db.m1.small | db.m1.medium | db.m1.large | db.m1.xlarge | db.m2.xlarge |db.m2.2xlarge | db.m2.4xlarge | db.m3.medium | db.m3.large | db.m3.xlarge | db.m3.2xlarge | db.r3.large | db.r3.xlarge | db.r3.2xlarge | db.r3.4xlarge | db.r3.8xlarge | db.t2.micro | db.t2.small | db.t2.medium

" - }, - "Engine":{ - "shape":"String", - "documentation":"

The name of the database engine to be used for this instance.

Valid Values: MySQL | oracle-se1 | oracle-se | oracle-ee | sqlserver-ee | sqlserver-se | sqlserver-ex | sqlserver-web | postgres

Not every database engine is available for every AWS region.

" - }, - "MasterUsername":{ - "shape":"String", - "documentation":"

The name of master user for the client DB instance.

MySQL

Constraints:

Type: String

Oracle

Constraints:

SQL Server

Constraints:

" - }, - "MasterUserPassword":{ - "shape":"String", - "documentation":"

The password for the master database user. Can be any printable ASCII character except \"/\", \"\"\", or \"@\".

Type: String

MySQL

Constraints: Must contain from 8 to 41 characters.

Oracle

Constraints: Must contain from 8 to 30 characters.

SQL Server

Constraints: Must contain from 8 to 128 characters.

" - }, - "DBSecurityGroups":{ - "shape":"DBSecurityGroupNameList", - "documentation":"

A list of DB security groups to associate with this DB instance.

Default: The default DB security group for the database engine.

" - }, - "VpcSecurityGroupIds":{ - "shape":"VpcSecurityGroupIdList", - "documentation":"

A list of EC2 VPC security groups to associate with this DB instance.

Default: The default EC2 VPC security group for the DB subnet group's VPC.

" - }, - "AvailabilityZone":{ - "shape":"String", - "documentation":"

The EC2 Availability Zone that the database instance will be created in. For information on regions and Availability Zones, see Regions and Availability Zones.

Default: A random, system-chosen Availability Zone in the endpoint's region.

Example: us-east-1d

Constraint: The AvailabilityZone parameter cannot be specified if the MultiAZ parameter is set to true. The specified Availability Zone must be in the same region as the current endpoint.

" - }, - "DBSubnetGroupName":{ - "shape":"String", - "documentation":"

A DB subnet group to associate with this DB instance.

If there is no DB subnet group, then it is a non-VPC DB instance.

" - }, - "PreferredMaintenanceWindow":{ - "shape":"String", - "documentation":"

The weekly time range (in UTC) during which system maintenance can occur. For more information, see DB Instance Maintenance.

Format: ddd:hh24:mi-ddd:hh24:mi

Default: A 30-minute window selected at random from an 8-hour block of time per region, occurring on a random day of the week. To see the time blocks available, see Adjusting the Preferred Maintenance Window in the Amazon RDS User Guide.

Valid Days: Mon, Tue, Wed, Thu, Fri, Sat, Sun

Constraints: Minimum 30-minute window.

" - }, - "DBParameterGroupName":{ - "shape":"String", - "documentation":"

The name of the DB parameter group to associate with this DB instance. If this argument is omitted, the default DBParameterGroup for the specified engine will be used.

Constraints:

" - }, - "BackupRetentionPeriod":{ - "shape":"IntegerOptional", - "documentation":"

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.

Default: 1

Constraints:

" - }, - "PreferredBackupWindow":{ - "shape":"String", - "documentation":"

The daily time range during which automated backups are created if automated backups are enabled, using the BackupRetentionPeriod parameter. For more information, see DB Instance Backups.

Default: A 30-minute window selected at random from an 8-hour block of time per region. See the Amazon RDS User Guide for the time blocks for each region from which the default backup windows are assigned.

Constraints: Must be in the format hh24:mi-hh24:mi. Times should be Universal Time Coordinated (UTC). Must not conflict with the preferred maintenance window. Must be at least 30 minutes.

" - }, - "Port":{ - "shape":"IntegerOptional", - "documentation":"

The port number on which the database accepts connections.

MySQL

Default: 3306

Valid Values: 1150-65535

Type: Integer

PostgreSQL

Default: 5432

Valid Values: 1150-65535

Type: Integer

Oracle

Default: 1521

Valid Values: 1150-65535

SQL Server

Default: 1433

Valid Values: 1150-65535 except for 1434, 3389, 47001, 49152, and 49152 through 49156.

" - }, - "MultiAZ":{ - "shape":"BooleanOptional", - "documentation":"

Specifies if the DB instance is a Multi-AZ deployment. You cannot set the AvailabilityZone parameter if the MultiAZ parameter is set to true.

" - }, - "EngineVersion":{ - "shape":"String", - "documentation":"

The version number of the database engine to use.

The following are the database engines and major and minor versions that are available with Amazon RDS. Not every database engine is available for every AWS region.

MySQL

Oracle Database Enterprise Edition (oracle-ee)

Oracle Database Standard Edition (oracle-se)

Oracle Database Standard Edition One (oracle-se1)

PostgreSQL

Microsoft SQL Server Enterprise Edition (sqlserver-ee)

Microsoft SQL Server Express Edition (sqlserver-ex)

Microsoft SQL Server Standard Edition (sqlserver-se)

Microsoft SQL Server Web Edition (sqlserver-web)

" - }, - "AutoMinorVersionUpgrade":{ - "shape":"BooleanOptional", - "documentation":"

Indicates that minor engine upgrades will be applied automatically to the DB instance during the maintenance window.

Default: true

" - }, - "LicenseModel":{ - "shape":"String", - "documentation":"

License model information for this DB instance.

Valid values: license-included | bring-your-own-license | general-public-license

" - }, - "Iops":{ - "shape":"IntegerOptional", - "documentation":"

The amount of Provisioned IOPS (input/output operations per second) to be initially allocated for the DB instance.

Constraints: To use PIOPS, this value must be an integer greater than 1000.

" - }, - "OptionGroupName":{ - "shape":"String", - "documentation":"

Indicates that the DB instance should be associated with the specified option group.

Permanent options, such as the TDE option for Oracle Advanced Security TDE, cannot be removed from an option group, and that option group cannot be removed from a DB instance once it is associated with a DB instance

" - }, - "CharacterSetName":{ - "shape":"String", - "documentation":"

For supported engines, indicates that the DB instance should be associated with the specified CharacterSet.

" - }, - "PubliclyAccessible":{ - "shape":"BooleanOptional", - "documentation":"

Specifies the accessibility options for the DB instance. A value of true specifies an Internet-facing instance with a publicly resolvable DNS name, which resolves to a public IP address. A value of false specifies an internal instance with a DNS name that resolves to a private IP address.

Default: The default behavior varies depending on whether a VPC has been requested or not. The following list shows the default behavior in each case.

If no DB subnet group has been specified as part of the request and the PubliclyAccessible value has not been set, the DB instance will be publicly accessible. If a specific DB subnet group has been specified as part of the request and the PubliclyAccessible value has not been set, the DB instance will be private.

" - }, - "Tags":{"shape":"TagList"}, - "StorageType":{ - "shape":"String", - "documentation":"

Specifies the storage type to be associated with the DB instance.

Valid values: standard | gp2 | io1

If you specify io1, you must also include a value for the Iops parameter.

Default: io1 if the Iops parameter is specified; otherwise standard

" - }, - "TdeCredentialArn":{ - "shape":"String", - "documentation":"

The ARN from the Key Store with which to associate the instance for TDE encryption.

" - }, - "TdeCredentialPassword":{ - "shape":"String", - "documentation":"

The password for the given ARN from the Key Store in order to access the device.

" - }, - "StorageEncrypted":{ - "shape":"BooleanOptional", - "documentation":"

Specifies whether the DB instance is encrypted.

Default: false

" - }, - "KmsKeyId":{ - "shape":"String", - "documentation":"

The KMS key identifier for an encrypted DB instance.

The KMS key identifier is the Amazon Resoure Name (ARN) for the KMS encryption key. If you are creating a DB instance with the same AWS account that owns the KMS encryption key used to encrypt the new DB instance, then you can use the KMS key alias instead of the ARN for the KM encryption key.

If the StorageEncrypted parameter is true, and you do not specify a value for the KmsKeyId parameter, then Amazon RDS will use your default encryption key. AWS KMS creates the default encryption key for your AWS account. Your AWS account has a different default encryption key for each AWS region.

" - } - }, - "documentation":"

" - }, - "CreateDBInstanceReadReplicaMessage":{ - "type":"structure", - "required":[ - "DBInstanceIdentifier", - "SourceDBInstanceIdentifier" - ], - "members":{ - "DBInstanceIdentifier":{ - "shape":"String", - "documentation":"

The DB instance identifier of the Read Replica. This is the unique key that identifies a DB instance. This parameter is stored as a lowercase string.

" - }, - "SourceDBInstanceIdentifier":{ - "shape":"String", - "documentation":"

The identifier of the DB instance that will act as the source for the Read Replica. Each DB instance can have up to five Read Replicas.

Constraints:

" - }, - "DBInstanceClass":{ - "shape":"String", - "documentation":"

The compute and memory capacity of the Read Replica.

Valid Values: db.m1.small | db.m1.medium | db.m1.large | db.m1.xlarge | db.m2.xlarge |db.m2.2xlarge | db.m2.4xlarge | db.m3.medium | db.m3.large | db.m3.xlarge | db.m3.2xlarge | db.r3.large | db.r3.xlarge | db.r3.2xlarge | db.r3.4xlarge | db.r3.8xlarge | db.t2.micro | db.t2.small | db.t2.medium

Default: Inherits from the source DB instance.

" - }, - "AvailabilityZone":{ - "shape":"String", - "documentation":"

The Amazon EC2 Availability Zone that the Read Replica will be created in.

Default: A random, system-chosen Availability Zone in the endpoint's region.

Example: us-east-1d

" - }, - "Port":{ - "shape":"IntegerOptional", - "documentation":"

The port number that the DB instance uses for connections.

Default: Inherits from the source DB instance

Valid Values: 1150-65535

" - }, - "AutoMinorVersionUpgrade":{ - "shape":"BooleanOptional", - "documentation":"

Indicates that minor engine upgrades will be applied automatically to the Read Replica during the maintenance window.

Default: Inherits from the source DB instance

" - }, - "Iops":{ - "shape":"IntegerOptional", - "documentation":"

The amount of Provisioned IOPS (input/output operations per second) to be initially allocated for the DB instance.

" - }, - "OptionGroupName":{ - "shape":"String", - "documentation":"

The option group the DB instance will be associated with. If omitted, the default option group for the engine specified will be used.

" - }, - "PubliclyAccessible":{ - "shape":"BooleanOptional", - "documentation":"

Specifies the accessibility options for the DB instance. A value of true specifies an Internet-facing instance with a publicly resolvable DNS name, which resolves to a public IP address. A value of false specifies an internal instance with a DNS name that resolves to a private IP address.

Default: The default behavior varies depending on whether a VPC has been requested or not. The following list shows the default behavior in each case.

If no DB subnet group has been specified as part of the request and the PubliclyAccessible value has not been set, the DB instance will be publicly accessible. If a specific DB subnet group has been specified as part of the request and the PubliclyAccessible value has not been set, the DB instance will be private.

" - }, - "Tags":{"shape":"TagList"}, - "DBSubnetGroupName":{ - "shape":"String", - "documentation":"

Specifies a DB subnet group for the DB instance. The new DB instance will be created in the VPC associated with the DB subnet group. If no DB subnet group is specified, then the new DB instance is not created in a VPC.

Constraints:

" - }, - "StorageType":{ - "shape":"String", - "documentation":"

Specifies the storage type to be associated with the Read Replica.

Valid values: standard | gp2 | io1

If you specify io1, you must also include a value for the Iops parameter.

Default: io1 if the Iops parameter is specified; otherwise standard

" - } - } - }, - "CreateDBParameterGroupMessage":{ - "type":"structure", - "required":[ - "DBParameterGroupName", - "DBParameterGroupFamily", - "Description" - ], - "members":{ - "DBParameterGroupName":{ - "shape":"String", - "documentation":"

The name of the DB parameter group.

Constraints:

This value is stored as a lower-case string." - }, - "DBParameterGroupFamily":{ - "shape":"String", - "documentation":"

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 database engine and engine version compatible with that DB parameter group family.

" - }, - "Description":{ - "shape":"String", - "documentation":"

The description for the DB parameter group.

" - }, - "Tags":{"shape":"TagList"} - }, - "documentation":"

" - }, - "CreateDBSecurityGroupMessage":{ - "type":"structure", - "required":[ - "DBSecurityGroupName", - "DBSecurityGroupDescription" - ], - "members":{ - "DBSecurityGroupName":{ - "shape":"String", - "documentation":"

The name for the DB security group. This value is stored as a lowercase string.

Constraints:

Example: mysecuritygroup

" - }, - "DBSecurityGroupDescription":{ - "shape":"String", - "documentation":"

The description for the DB security group.

" - }, - "Tags":{"shape":"TagList"} - }, - "documentation":"

" - }, - "CreateDBSnapshotMessage":{ - "type":"structure", - "required":[ - "DBSnapshotIdentifier", - "DBInstanceIdentifier" - ], - "members":{ - "DBSnapshotIdentifier":{ - "shape":"String", - "documentation":"

The identifier for the DB snapshot.

Constraints:

Example: my-snapshot-id

" - }, - "DBInstanceIdentifier":{ - "shape":"String", - "documentation":"

The DB instance identifier. This is the unique key that identifies a DB instance.

Constraints:

" - }, - "Tags":{"shape":"TagList"} - }, - "documentation":"

" - }, - "CreateDBSubnetGroupMessage":{ - "type":"structure", - "required":[ - "DBSubnetGroupName", - "DBSubnetGroupDescription", - "SubnetIds" - ], - "members":{ - "DBSubnetGroupName":{ - "shape":"String", - "documentation":"

The name for the DB subnet group. This value is stored as a lowercase string.

Constraints: Must contain no more than 255 alphanumeric characters or hyphens. Must not be \"Default\".

Example: mySubnetgroup

" - }, - "DBSubnetGroupDescription":{ - "shape":"String", - "documentation":"

The description for the DB subnet group.

" - }, - "SubnetIds":{ - "shape":"SubnetIdentifierList", - "documentation":"

The EC2 Subnet IDs for the DB subnet group.

" - }, - "Tags":{"shape":"TagList"} - }, - "documentation":"

" - }, - "CreateEventSubscriptionMessage":{ - "type":"structure", - "required":[ - "SubscriptionName", - "SnsTopicArn" - ], - "members":{ - "SubscriptionName":{ - "shape":"String", - "documentation":"

The name of the subscription.

Constraints: The name must be less than 255 characters.

" - }, - "SnsTopicArn":{ - "shape":"String", - "documentation":"

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.

" - }, - "SourceType":{ - "shape":"String", - "documentation":"

The type of source that will be 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-parameter-group | db-security-group | db-snapshot

" - }, - "EventCategories":{ - "shape":"EventCategoriesList", - "documentation":"

A list of event categories for a SourceType that you want to subscribe to. You can see a list of the categories for a given SourceType in the Events topic in the Amazon RDS User Guide or by using the DescribeEventCategories action.

" - }, - "SourceIds":{ - "shape":"SourceIdsList", - "documentation":"

The list of identifiers of the event sources for which events will be 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 cannot end with a hyphen or contain two consecutive hyphens.

Constraints:

" - }, - "Enabled":{ - "shape":"BooleanOptional", - "documentation":"

A Boolean value; set to true to activate the subscription, set to false to create the subscription but not active it.

" - }, - "Tags":{"shape":"TagList"} - }, - "documentation":"

" - }, - "CreateOptionGroupMessage":{ - "type":"structure", - "required":[ - "OptionGroupName", - "EngineName", - "MajorEngineVersion", - "OptionGroupDescription" - ], - "members":{ - "OptionGroupName":{ - "shape":"String", - "documentation":"

Specifies the name of the option group to be created.

Constraints:

Example: myoptiongroup

" - }, - "EngineName":{ - "shape":"String", - "documentation":"

Specifies the name of the engine that this option group should be associated with.

" - }, - "MajorEngineVersion":{ - "shape":"String", - "documentation":"

Specifies the major version of the engine that this option group should be associated with.

" - }, - "OptionGroupDescription":{ - "shape":"String", - "documentation":"

The description of the option group.

" - }, - "Tags":{"shape":"TagList"} - }, - "documentation":"

" - }, - "DBEngineVersion":{ - "type":"structure", - "members":{ - "Engine":{ - "shape":"String", - "documentation":"

The name of the database engine.

" - }, - "EngineVersion":{ - "shape":"String", - "documentation":"

The version number of the database engine.

" - }, - "DBParameterGroupFamily":{ - "shape":"String", - "documentation":"

The name of the DB parameter group family for the database engine.

" - }, - "DBEngineDescription":{ - "shape":"String", - "documentation":"

The description of the database engine.

" - }, - "DBEngineVersionDescription":{ - "shape":"String", - "documentation":"

The description of the database engine version.

" - }, - "DefaultCharacterSet":{ - "shape":"CharacterSet", - "documentation":"

The default character set for new instances of this engine version, if the CharacterSetName parameter of the CreateDBInstance API is not specified.

" - }, - "SupportedCharacterSets":{ - "shape":"SupportedCharacterSetsList", - "documentation":"

A list of the character sets supported by this engine for the CharacterSetName parameter of the CreateDBInstance API.

" - } - }, - "documentation":"

This data type is used as a response element in the action DescribeDBEngineVersions.

" - }, - "DBEngineVersionList":{ - "type":"list", - "member":{ - "shape":"DBEngineVersion", - "locationName":"DBEngineVersion" - } - }, - "DBEngineVersionMessage":{ - "type":"structure", - "members":{ - "Marker":{ - "shape":"String", - "documentation":"

An optional pagination token provided by a previous request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords.

" - }, - "DBEngineVersions":{ - "shape":"DBEngineVersionList", - "documentation":"

A list of DBEngineVersion elements.

" - } - }, - "documentation":"

Contains the result of a successful invocation of the DescribeDBEngineVersions action.

" - }, - "DBInstance":{ - "type":"structure", - "members":{ - "DBInstanceIdentifier":{ - "shape":"String", - "documentation":"

Contains a user-supplied database identifier. This is the unique key that identifies a DB instance.

" - }, - "DBInstanceClass":{ - "shape":"String", - "documentation":"

Contains the name of the compute and memory capacity class of the DB instance.

" - }, - "Engine":{ - "shape":"String", - "documentation":"

Provides the name of the database engine to be used for this DB instance.

" - }, - "DBInstanceStatus":{ - "shape":"String", - "documentation":"

Specifies the current state of this database.

" - }, - "MasterUsername":{ - "shape":"String", - "documentation":"

Contains the master username for the DB instance.

" - }, - "DBName":{ - "shape":"String", - "documentation":"

The meaning of this parameter differs according to the database engine you use. For example, this value returns either MySQL or PostgreSQL information when returning values from CreateDBInstanceReadReplica since Read Replicas are only supported for MySQL and PostgreSQL.

MySQL, SQL Server, PostgreSQL

Contains the name of the initial database of this instance that was provided at create time, if one was specified when the DB instance was created. This same name is returned for the life of the DB instance.

Type: String

Oracle

Contains the Oracle System ID (SID) of the created DB instance. Not shown when the returned parameters do not apply to an Oracle DB instance.

" - }, - "Endpoint":{ - "shape":"Endpoint", - "documentation":"

Specifies the connection endpoint.

" - }, - "AllocatedStorage":{ - "shape":"Integer", - "documentation":"

Specifies the allocated storage size specified in gigabytes.

" - }, - "InstanceCreateTime":{ - "shape":"TStamp", - "documentation":"

Provides the date and time the DB instance was created.

" - }, - "PreferredBackupWindow":{ - "shape":"String", - "documentation":"

Specifies the daily time range during which automated backups are created if automated backups are enabled, as determined by the BackupRetentionPeriod.

" - }, - "BackupRetentionPeriod":{ - "shape":"Integer", - "documentation":"

Specifies the number of days for which automatic DB snapshots are retained.

" - }, - "DBSecurityGroups":{ - "shape":"DBSecurityGroupMembershipList", - "documentation":"

Provides List of DB security group elements containing only DBSecurityGroup.Name and DBSecurityGroup.Status subelements.

" - }, - "VpcSecurityGroups":{ - "shape":"VpcSecurityGroupMembershipList", - "documentation":"

Provides List of VPC security group elements that the DB instance belongs to.

" - }, - "DBParameterGroups":{ - "shape":"DBParameterGroupStatusList", - "documentation":"

Provides the list of DB parameter groups applied to this DB instance.

" - }, - "AvailabilityZone":{ - "shape":"String", - "documentation":"

Specifies the name of the Availability Zone the DB instance is located in.

" - }, - "DBSubnetGroup":{ - "shape":"DBSubnetGroup", - "documentation":"

Specifies information on the subnet group associated with the DB instance, including the name, description, and subnets in the subnet group.

" - }, - "PreferredMaintenanceWindow":{ - "shape":"String", - "documentation":"

Specifies the weekly time range (in UTC) during which system maintenance can occur.

" - }, - "PendingModifiedValues":{ - "shape":"PendingModifiedValues", - "documentation":"

Specifies that changes to the DB instance are pending. This element is only included when changes are pending. Specific changes are identified by subelements.

" - }, - "LatestRestorableTime":{ - "shape":"TStamp", - "documentation":"

Specifies the latest time to which a database can be restored with point-in-time restore.

" - }, - "MultiAZ":{ - "shape":"Boolean", - "documentation":"

Specifies if the DB instance is a Multi-AZ deployment.

" - }, - "EngineVersion":{ - "shape":"String", - "documentation":"

Indicates the database engine version.

" - }, - "AutoMinorVersionUpgrade":{ - "shape":"Boolean", - "documentation":"

Indicates that minor version patches are applied automatically.

" - }, - "ReadReplicaSourceDBInstanceIdentifier":{ - "shape":"String", - "documentation":"

Contains the identifier of the source DB instance if this DB instance is a Read Replica.

" - }, - "ReadReplicaDBInstanceIdentifiers":{ - "shape":"ReadReplicaDBInstanceIdentifierList", - "documentation":"

Contains one or more identifiers of the Read Replicas associated with this DB instance.

" - }, - "LicenseModel":{ - "shape":"String", - "documentation":"

License model information for this DB instance.

" - }, - "Iops":{ - "shape":"IntegerOptional", - "documentation":"

Specifies the Provisioned IOPS (I/O operations per second) value.

" - }, - "OptionGroupMemberships":{ - "shape":"OptionGroupMembershipList", - "documentation":"

Provides the list of option group memberships for this DB instance.

" - }, - "CharacterSetName":{ - "shape":"String", - "documentation":"

If present, specifies the name of the character set that this instance is associated with.

" - }, - "SecondaryAvailabilityZone":{ - "shape":"String", - "documentation":"

If present, specifies the name of the secondary Availability Zone for a DB instance with multi-AZ support.

" - }, - "PubliclyAccessible":{ - "shape":"Boolean", - "documentation":"

Specifies the accessibility options for the DB instance. A value of true specifies an Internet-facing instance with a publicly resolvable DNS name, which resolves to a public IP address. A value of false specifies an internal instance with a DNS name that resolves to a private IP address.

Default: The default behavior varies depending on whether a VPC has been requested or not. The following list shows the default behavior in each case.

If no DB subnet group has been specified as part of the request and the PubliclyAccessible value has not been set, the DB instance will be publicly accessible. If a specific DB subnet group has been specified as part of the request and the PubliclyAccessible value has not been set, the DB instance will be private.

" - }, - "StatusInfos":{ - "shape":"DBInstanceStatusInfoList", - "documentation":"

The status of a Read Replica. If the instance is not a Read Replica, this will be blank.

" - }, - "StorageType":{ - "shape":"String", - "documentation":"

Specifies the storage type associated with DB instance.

" - }, - "TdeCredentialArn":{ - "shape":"String", - "documentation":"

The ARN from the Key Store with which the instance is associated for TDE encryption.

" - }, - "StorageEncrypted":{ - "shape":"Boolean", - "documentation":"

Specifies whether the DB instance is encrypted.

" - }, - "KmsKeyId":{ - "shape":"String", - "documentation":"

If StorageEncrypted is true, the KMS key identifier for the encrypted DB instance.

" - }, - "DbiResourceId":{ - "shape":"String", - "documentation":"

If StorageEncrypted is true, the region-unique, immutable identifier for the encrypted DB instance. This identifier is found in AWS CloudTrail log entries whenever the KMS key for the DB instance is accessed.

" - } - }, - "wrapper":true, - "documentation":"

Contains the result of a successful invocation of the following actions:

This data type is used as a response element in the DescribeDBInstances action.

" - }, - "DBInstanceAlreadyExistsFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"DBInstanceAlreadyExists", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

User already has a DB instance with the given identifier.

" - }, - "DBInstanceList":{ - "type":"list", - "member":{ - "shape":"DBInstance", - "locationName":"DBInstance" - } - }, - "DBInstanceMessage":{ - "type":"structure", - "members":{ - "Marker":{ - "shape":"String", - "documentation":"

An optional pagination token provided by a previous request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords .

" - }, - "DBInstances":{ - "shape":"DBInstanceList", - "documentation":"

A list of DBInstance instances.

" - } - }, - "documentation":"

Contains the result of a successful invocation of the DescribeDBInstances action.

" - }, - "DBInstanceNotFoundFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"DBInstanceNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

DBInstanceIdentifier does not refer to an existing DB instance.

" - }, - "DBInstanceStatusInfo":{ - "type":"structure", - "members":{ - "StatusType":{ - "shape":"String", - "documentation":"

This value is currently \"read replication.\"

" - }, - "Normal":{ - "shape":"Boolean", - "documentation":"

Boolean value that is true if the instance is operating normally, or false if the instance is in an error state.

" - }, - "Status":{ - "shape":"String", - "documentation":"

Status of the DB instance. For a StatusType of read replica, the values can be replicating, error, stopped, or terminated.

" - }, - "Message":{ - "shape":"String", - "documentation":"

Details of the error if there is an error for the instance. If the instance is not in an error state, this value is blank.

" - } - }, - "documentation":"

Provides a list of status information for a DB instance.

" - }, - "DBInstanceStatusInfoList":{ - "type":"list", - "member":{ - "shape":"DBInstanceStatusInfo", - "locationName":"DBInstanceStatusInfo" - } - }, - "DBParameterGroup":{ - "type":"structure", - "members":{ - "DBParameterGroupName":{ - "shape":"String", - "documentation":"

Provides the name of the DB parameter group.

" - }, - "DBParameterGroupFamily":{ - "shape":"String", - "documentation":"

Provides the name of the DB parameter group family that this DB parameter group is compatible with.

" - }, - "Description":{ - "shape":"String", - "documentation":"

Provides the customer-specified description for this DB parameter group.

" - } - }, - "wrapper":true, - "documentation":"

Contains the result of a successful invocation of the CreateDBParameterGroup action.

This data type is used as a request parameter in the DeleteDBParameterGroup action, and as a response element in the DescribeDBParameterGroups action.

" - }, - "DBParameterGroupAlreadyExistsFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"DBParameterGroupAlreadyExists", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

A DB parameter group with the same name exists.

" - }, - "DBParameterGroupDetails":{ - "type":"structure", - "members":{ - "Parameters":{ - "shape":"ParametersList", - "documentation":"

A list of Parameter values.

" - }, - "Marker":{ - "shape":"String", - "documentation":"

An optional pagination token provided by a previous request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords.

" - } - }, - "documentation":"

Contains the result of a successful invocation of the DescribeDBParameters action.

" - }, - "DBParameterGroupList":{ - "type":"list", - "member":{ - "shape":"DBParameterGroup", - "locationName":"DBParameterGroup" - } - }, - "DBParameterGroupNameMessage":{ - "type":"structure", - "members":{ - "DBParameterGroupName":{ - "shape":"String", - "documentation":"

The name of the DB parameter group.

" - } - }, - "documentation":"

Contains the result of a successful invocation of the ModifyDBParameterGroup or ResetDBParameterGroup action.

" - }, - "DBParameterGroupNotFoundFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"DBParameterGroupNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

DBParameterGroupName does not refer to an existing DB parameter group.

" - }, - "DBParameterGroupQuotaExceededFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"DBParameterGroupQuotaExceeded", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Request would result in user exceeding the allowed number of DB parameter groups.

" - }, - "DBParameterGroupStatus":{ - "type":"structure", - "members":{ - "DBParameterGroupName":{ - "shape":"String", - "documentation":"

The name of the DP parameter group.

" - }, - "ParameterApplyStatus":{ - "shape":"String", - "documentation":"

The status of parameter updates.

" - } - }, - "documentation":"

The status of the DB parameter group.

This data type is used as a response element in the following actions:

" - }, - "DBParameterGroupStatusList":{ - "type":"list", - "member":{ - "shape":"DBParameterGroupStatus", - "locationName":"DBParameterGroup" - } - }, - "DBParameterGroupsMessage":{ - "type":"structure", - "members":{ - "Marker":{ - "shape":"String", - "documentation":"

An optional pagination token provided by a previous request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords.

" - }, - "DBParameterGroups":{ - "shape":"DBParameterGroupList", - "documentation":"

A list of DBParameterGroup instances.

" - } - }, - "documentation":"

Contains the result of a successful invocation of the DescribeDBParameterGroups action.

" - }, - "DBSecurityGroup":{ - "type":"structure", - "members":{ - "OwnerId":{ - "shape":"String", - "documentation":"

Provides the AWS ID of the owner of a specific DB security group.

" - }, - "DBSecurityGroupName":{ - "shape":"String", - "documentation":"

Specifies the name of the DB security group.

" - }, - "DBSecurityGroupDescription":{ - "shape":"String", - "documentation":"

Provides the description of the DB security group.

" - }, - "VpcId":{ - "shape":"String", - "documentation":"

Provides the VpcId of the DB security group.

" - }, - "EC2SecurityGroups":{ - "shape":"EC2SecurityGroupList", - "documentation":"

Contains a list of EC2SecurityGroup elements.

" - }, - "IPRanges":{ - "shape":"IPRangeList", - "documentation":"

Contains a list of IPRange elements.

" - } - }, - "wrapper":true, - "documentation":"

Contains the result of a successful invocation of the following actions:

This data type is used as a response element in the DescribeDBSecurityGroups action.

" - }, - "DBSecurityGroupAlreadyExistsFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"DBSecurityGroupAlreadyExists", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

A DB security group with the name specified in DBSecurityGroupName already exists.

" - }, - "DBSecurityGroupMembership":{ - "type":"structure", - "members":{ - "DBSecurityGroupName":{ - "shape":"String", - "documentation":"

The name of the DB security group.

" - }, - "Status":{ - "shape":"String", - "documentation":"

The status of the DB security group.

" - } - }, - "documentation":"

This data type is used as a response element in the following actions:

" - }, - "DBSecurityGroupMembershipList":{ - "type":"list", - "member":{ - "shape":"DBSecurityGroupMembership", - "locationName":"DBSecurityGroup" - } - }, - "DBSecurityGroupMessage":{ - "type":"structure", - "members":{ - "Marker":{ - "shape":"String", - "documentation":"

An optional pagination token provided by a previous request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords.

" - }, - "DBSecurityGroups":{ - "shape":"DBSecurityGroups", - "documentation":"

A list of DBSecurityGroup instances.

" - } - }, - "documentation":"

Contains the result of a successful invocation of the DescribeDBSecurityGroups action.

" - }, - "DBSecurityGroupNameList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"DBSecurityGroupName" - } - }, - "DBSecurityGroupNotFoundFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"DBSecurityGroupNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

DBSecurityGroupName does not refer to an existing DB security group.

" - }, - "DBSecurityGroupNotSupportedFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"DBSecurityGroupNotSupported", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

A DB security group is not allowed for this action.

" - }, - "DBSecurityGroupQuotaExceededFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"QuotaExceeded.DBSecurityGroup", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Request would result in user exceeding the allowed number of DB security groups.

" - }, - "DBSecurityGroups":{ - "type":"list", - "member":{ - "shape":"DBSecurityGroup", - "locationName":"DBSecurityGroup" - } - }, - "DBSnapshot":{ - "type":"structure", - "members":{ - "DBSnapshotIdentifier":{ - "shape":"String", - "documentation":"

Specifies the identifier for the DB snapshot.

" - }, - "DBInstanceIdentifier":{ - "shape":"String", - "documentation":"

Specifies the DB instance identifier of the DB instance this DB snapshot was created from.

" - }, - "SnapshotCreateTime":{ - "shape":"TStamp", - "documentation":"

Provides the time (UTC) when the snapshot was taken.

" - }, - "Engine":{ - "shape":"String", - "documentation":"

Specifies the name of the database engine.

" - }, - "AllocatedStorage":{ - "shape":"Integer", - "documentation":"

Specifies the allocated storage size in gigabytes (GB).

" - }, - "Status":{ - "shape":"String", - "documentation":"

Specifies the status of this DB snapshot.

" - }, - "Port":{ - "shape":"Integer", - "documentation":"

Specifies the port that the database engine was listening on at the time of the snapshot.

" - }, - "AvailabilityZone":{ - "shape":"String", - "documentation":"

Specifies the name of the Availability Zone the DB instance was located in at the time of the DB snapshot.

" - }, - "VpcId":{ - "shape":"String", - "documentation":"

Provides the Vpc Id associated with the DB snapshot.

" - }, - "InstanceCreateTime":{ - "shape":"TStamp", - "documentation":"

Specifies the time (UTC) when the snapshot was taken.

" - }, - "MasterUsername":{ - "shape":"String", - "documentation":"

Provides the master username for the DB snapshot.

" - }, - "EngineVersion":{ - "shape":"String", - "documentation":"

Specifies the version of the database engine.

" - }, - "LicenseModel":{ - "shape":"String", - "documentation":"

License model information for the restored DB instance.

" - }, - "SnapshotType":{ - "shape":"String", - "documentation":"

Provides the type of the DB snapshot.

" - }, - "Iops":{ - "shape":"IntegerOptional", - "documentation":"

Specifies the Provisioned IOPS (I/O operations per second) value of the DB instance at the time of the snapshot.

" - }, - "OptionGroupName":{ - "shape":"String", - "documentation":"

Provides the option group name for the DB snapshot.

" - }, - "PercentProgress":{ - "shape":"Integer", - "documentation":"

The percentage of the estimated data that has been transferred.

" - }, - "SourceRegion":{ - "shape":"String", - "documentation":"

The region that the DB snapshot was created in or copied from.

" - }, - "StorageType":{ - "shape":"String", - "documentation":"

Specifies the storage type associated with DB Snapshot.

" - }, - "TdeCredentialArn":{ - "shape":"String", - "documentation":"

The ARN from the Key Store with which to associate the instance for TDE encryption.

" - }, - "Encrypted":{ - "shape":"Boolean", - "documentation":"

Specifies whether the DB snapshot is encrypted.

" - }, - "KmsKeyId":{ - "shape":"String", - "documentation":"

If Encrypted is true, the KMS key identifier for the encrypted DB snapshot.

" - } - }, - "wrapper":true, - "documentation":"

Contains the result of a successful invocation of the following actions:

This data type is used as a response element in the DescribeDBSnapshots action.

" - }, - "DBSnapshotAlreadyExistsFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"DBSnapshotAlreadyExists", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

DBSnapshotIdentifier is already used by an existing snapshot.

" - }, - "DBSnapshotList":{ - "type":"list", - "member":{ - "shape":"DBSnapshot", - "locationName":"DBSnapshot" - } - }, - "DBSnapshotMessage":{ - "type":"structure", - "members":{ - "Marker":{ - "shape":"String", - "documentation":"

An optional pagination token provided by a previous request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords.

" - }, - "DBSnapshots":{ - "shape":"DBSnapshotList", - "documentation":"

A list of DBSnapshot instances.

" - } - }, - "documentation":"

Contains the result of a successful invocation of the DescribeDBSnapshots action.

" - }, - "DBSnapshotNotFoundFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"DBSnapshotNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

DBSnapshotIdentifier does not refer to an existing DB snapshot.

" - }, - "DBSubnetGroup":{ - "type":"structure", - "members":{ - "DBSubnetGroupName":{ - "shape":"String", - "documentation":"

Specifies the name of the DB subnet group.

" - }, - "DBSubnetGroupDescription":{ - "shape":"String", - "documentation":"

Provides the description of the DB subnet group.

" - }, - "VpcId":{ - "shape":"String", - "documentation":"

Provides the VpcId of the DB subnet group.

" - }, - "SubnetGroupStatus":{ - "shape":"String", - "documentation":"

Provides the status of the DB subnet group.

" - }, - "Subnets":{ - "shape":"SubnetList", - "documentation":"

Contains a list of Subnet elements.

" - } - }, - "wrapper":true, - "documentation":"

Contains the result of a successful invocation of the following actions:

This data type is used as a response element in the DescribeDBSubnetGroups action.

" - }, - "DBSubnetGroupAlreadyExistsFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"DBSubnetGroupAlreadyExists", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

DBSubnetGroupName is already used by an existing DB subnet group.

" - }, - "DBSubnetGroupDoesNotCoverEnoughAZs":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"DBSubnetGroupDoesNotCoverEnoughAZs", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Subnets in the DB subnet group should cover at least two Availability Zones unless there is only one Availability Zone.

" - }, - "DBSubnetGroupMessage":{ - "type":"structure", - "members":{ - "Marker":{ - "shape":"String", - "documentation":"

An optional pagination token provided by a previous request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords.

" - }, - "DBSubnetGroups":{ - "shape":"DBSubnetGroups", - "documentation":"

A list of DBSubnetGroup instances.

" - } - }, - "documentation":"

Contains the result of a successful invocation of the DescribeDBSubnetGroups action.

" - }, - "DBSubnetGroupNotAllowedFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"DBSubnetGroupNotAllowedFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Indicates that the DBSubnetGroup should not be specified while creating read replicas that lie in the same region as the source instance.

" - }, - "DBSubnetGroupNotFoundFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"DBSubnetGroupNotFoundFault", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

DBSubnetGroupName does not refer to an existing DB subnet group.

" - }, - "DBSubnetGroupQuotaExceededFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"DBSubnetGroupQuotaExceeded", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Request would result in user exceeding the allowed number of DB subnet groups.

" - }, - "DBSubnetGroups":{ - "type":"list", - "member":{ - "shape":"DBSubnetGroup", - "locationName":"DBSubnetGroup" - } - }, - "DBSubnetQuotaExceededFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"DBSubnetQuotaExceededFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Request would result in user exceeding the allowed number of subnets in a DB subnet groups.

" - }, - "DBUpgradeDependencyFailureFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"DBUpgradeDependencyFailure", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The DB upgrade failed because a resource the DB depends on could not be modified.

" - }, - "DeleteDBInstanceMessage":{ - "type":"structure", - "required":["DBInstanceIdentifier"], - "members":{ - "DBInstanceIdentifier":{ - "shape":"String", - "documentation":"

The DB instance identifier for the DB instance to be deleted. This parameter isn't case sensitive.

Constraints:

" - }, - "SkipFinalSnapshot":{ - "shape":"Boolean", - "documentation":"

Determines whether a final DB snapshot is created before the DB instance is deleted. If true is specified, no DBSnapshot is created. If false is specified, a DB snapshot is created before the DB instance is deleted.

Specify true when deleting a Read Replica.

The FinalDBSnapshotIdentifier parameter must be specified if SkipFinalSnapshot is false.

Default: false

" - }, - "FinalDBSnapshotIdentifier":{ - "shape":"String", - "documentation":"

The DBSnapshotIdentifier of the new DBSnapshot created when SkipFinalSnapshot is set to false.

Specifying this parameter and also setting the SkipFinalShapshot parameter to true results in an error.

Constraints:

" - } - }, - "documentation":"

" - }, - "DeleteDBParameterGroupMessage":{ - "type":"structure", - "required":["DBParameterGroupName"], - "members":{ - "DBParameterGroupName":{ - "shape":"String", - "documentation":"

The name of the DB parameter group.

Constraints:

" - } - }, - "documentation":"

" - }, - "DeleteDBSecurityGroupMessage":{ - "type":"structure", - "required":["DBSecurityGroupName"], - "members":{ - "DBSecurityGroupName":{ - "shape":"String", - "documentation":"

The name of the DB security group to delete.

You cannot delete the default DB security group.

Constraints:

" - } - }, - "documentation":"

" - }, - "DeleteDBSnapshotMessage":{ - "type":"structure", - "required":["DBSnapshotIdentifier"], - "members":{ - "DBSnapshotIdentifier":{ - "shape":"String", - "documentation":"

The DBSnapshot identifier.

Constraints: Must be the name of an existing DB snapshot in the available state.

" - } - }, - "documentation":"

" - }, - "DeleteDBSubnetGroupMessage":{ - "type":"structure", - "required":["DBSubnetGroupName"], - "members":{ - "DBSubnetGroupName":{ - "shape":"String", - "documentation":"

The name of the database subnet group to delete.

You cannot delete the default subnet group.

Constraints:

" - } - }, - "documentation":"

" - }, - "DeleteEventSubscriptionMessage":{ - "type":"structure", - "required":["SubscriptionName"], - "members":{ - "SubscriptionName":{ - "shape":"String", - "documentation":"

The name of the RDS event notification subscription you want to delete.

" - } - }, - "documentation":"

" - }, - "DeleteOptionGroupMessage":{ - "type":"structure", - "required":["OptionGroupName"], - "members":{ - "OptionGroupName":{ - "shape":"String", - "documentation":"

The name of the option group to be deleted.

You cannot delete default option groups." - } - }, - "documentation":"

" - }, - "DescribeDBEngineVersionsMessage":{ - "type":"structure", - "members":{ - "Engine":{ - "shape":"String", - "documentation":"

The database engine to return.

" - }, - "EngineVersion":{ - "shape":"String", - "documentation":"

The database engine version to return.

Example: 5.1.49

" - }, - "DBParameterGroupFamily":{ - "shape":"String", - "documentation":"

The name of a specific DB parameter group family to return details for.

Constraints:

" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

Not currently supported.

" - }, - "MaxRecords":{ - "shape":"IntegerOptional", - "documentation":"

The maximum number of records to include in the response. If more than the MaxRecords value is available, a pagination token called a marker is included in the response so that the following results can be retrieved.

Default: 100

Constraints: minimum 20, maximum 100

" - }, - "Marker":{ - "shape":"String", - "documentation":"

An optional pagination token provided by a previous request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords.

" - }, - "DefaultOnly":{ - "shape":"Boolean", - "documentation":"

Indicates that only the default version of the specified engine or engine and major version combination is returned.

" - }, - "ListSupportedCharacterSets":{ - "shape":"BooleanOptional", - "documentation":"

If this parameter is specified, and if the requested engine supports the CharacterSetName parameter for CreateDBInstance, the response includes a list of supported character sets for each engine version.

" - } - } - }, - "DescribeDBInstancesMessage":{ - "type":"structure", - "members":{ - "DBInstanceIdentifier":{ - "shape":"String", - "documentation":"

The user-supplied instance identifier. If this parameter is specified, information from only the specific DB instance is returned. This parameter isn't case sensitive.

Constraints:

" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

This parameter is not currently supported.

" - }, - "MaxRecords":{ - "shape":"IntegerOptional", - "documentation":"

The maximum number of records to include in the response. If more records exist than the specified MaxRecords value, a pagination token called a marker is included in the response so that the remaining results may be retrieved.

Default: 100

Constraints: minimum 20, maximum 100

" - }, - "Marker":{ - "shape":"String", - "documentation":"

An optional pagination token provided by a previous DescribeDBInstances request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords .

" - } - }, - "documentation":"

" - }, - "DescribeDBLogFilesDetails":{ - "type":"structure", - "members":{ - "LogFileName":{ - "shape":"String", - "documentation":"

The name of the log file for the specified DB instance.

" - }, - "LastWritten":{ - "shape":"Long", - "documentation":"

A POSIX timestamp when the last log entry was written.

" - }, - "Size":{ - "shape":"Long", - "documentation":"

The size, in bytes, of the log file for the specified DB instance.

" - } - }, - "documentation":"

This data type is used as a response element to DescribeDBLogFiles.

" - }, - "DescribeDBLogFilesList":{ - "type":"list", - "member":{ - "shape":"DescribeDBLogFilesDetails", - "locationName":"DescribeDBLogFilesDetails" - } - }, - "DescribeDBLogFilesMessage":{ - "type":"structure", - "required":["DBInstanceIdentifier"], - "members":{ - "DBInstanceIdentifier":{ - "shape":"String", - "documentation":"

The customer-assigned name of the DB instance that contains the log files you want to list.

Constraints:

" - }, - "FilenameContains":{ - "shape":"String", - "documentation":"

Filters the available log files for log file names that contain the specified string.

" - }, - "FileLastWritten":{ - "shape":"Long", - "documentation":"

Filters the available log files for files written since the specified date, in POSIX timestamp format.

" - }, - "FileSize":{ - "shape":"Long", - "documentation":"

Filters the available log files for files larger than the specified size.

" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

This parameter is not currently supported.

" - }, - "MaxRecords":{ - "shape":"IntegerOptional", - "documentation":"

The maximum number of records to include in the response. If more records exist than the specified MaxRecords value, a pagination token called a marker is included in the response so that the remaining results can be retrieved.

" - }, - "Marker":{ - "shape":"String", - "documentation":"

The pagination token provided in the previous request. If this parameter is specified the response includes only records beyond the marker, up to MaxRecords.

" - } - }, - "documentation":"

" - }, - "DescribeDBLogFilesResponse":{ - "type":"structure", - "members":{ - "DescribeDBLogFiles":{ - "shape":"DescribeDBLogFilesList", - "documentation":"

The DB log files returned.

" - }, - "Marker":{ - "shape":"String", - "documentation":"

A pagination token that can be used in a subsequent DescribeDBLogFiles request.

" - } - }, - "documentation":"

The response from a call to DescribeDBLogFiles.

" - }, - "DescribeDBParameterGroupsMessage":{ - "type":"structure", - "members":{ - "DBParameterGroupName":{ - "shape":"String", - "documentation":"

The name of a specific DB parameter group to return details for.

Constraints:

" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

This parameter is not currently supported.

" - }, - "MaxRecords":{ - "shape":"IntegerOptional", - "documentation":"

The maximum number of records to include in the response. If more records exist than the specified MaxRecords value, a pagination token called a marker is included in the response so that the remaining results may be retrieved.

Default: 100

Constraints: minimum 20, maximum 100

" - }, - "Marker":{ - "shape":"String", - "documentation":"

An optional pagination token provided by a previous DescribeDBParameterGroups request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords.

" - } - }, - "documentation":"

" - }, - "DescribeDBParametersMessage":{ - "type":"structure", - "required":["DBParameterGroupName"], - "members":{ - "DBParameterGroupName":{ - "shape":"String", - "documentation":"

The name of a specific DB parameter group to return details for.

Constraints:

" - }, - "Source":{ - "shape":"String", - "documentation":"

The parameter types to return.

Default: All parameter types returned

Valid Values: user | system | engine-default

" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

This parameter is not currently supported.

" - }, - "MaxRecords":{ - "shape":"IntegerOptional", - "documentation":"

The maximum number of records to include in the response. If more records exist than the specified MaxRecords value, a pagination token called a marker is included in the response so that the remaining results may be retrieved.

Default: 100

Constraints: minimum 20, maximum 100

" - }, - "Marker":{ - "shape":"String", - "documentation":"

An optional pagination token provided by a previous DescribeDBParameters request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords.

" - } - } - }, - "DescribeDBSecurityGroupsMessage":{ - "type":"structure", - "members":{ - "DBSecurityGroupName":{ - "shape":"String", - "documentation":"

The name of the DB security group to return details for.

" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

This parameter is not currently supported.

" - }, - "MaxRecords":{ - "shape":"IntegerOptional", - "documentation":"

The maximum number of records to include in the response. If more records exist than the specified MaxRecords value, a pagination token called a marker is included in the response so that the remaining results may be retrieved.

Default: 100

Constraints: minimum 20, maximum 100

" - }, - "Marker":{ - "shape":"String", - "documentation":"

An optional pagination token provided by a previous DescribeDBSecurityGroups request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords.

" - } - }, - "documentation":"

" - }, - "DescribeDBSnapshotsMessage":{ - "type":"structure", - "members":{ - "DBInstanceIdentifier":{ - "shape":"String", - "documentation":"

A DB instance identifier to retrieve the list of DB snapshots for. Cannot be used in conjunction with DBSnapshotIdentifier. This parameter is not case sensitive.

Constraints:

" - }, - "DBSnapshotIdentifier":{ - "shape":"String", - "documentation":"

A specific DB snapshot identifier to describe. Cannot be used in conjunction with DBInstanceIdentifier. This value is stored as a lowercase string.

Constraints:

" - }, - "SnapshotType":{ - "shape":"String", - "documentation":"

The type of snapshots that will be returned. Values can be \"automated\" or \"manual.\" If not specified, the returned results will include all snapshots types.

" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

This parameter is not currently supported.

" - }, - "MaxRecords":{ - "shape":"IntegerOptional", - "documentation":"

The maximum number of records to include in the response. If more records exist than the specified MaxRecords value, a pagination token called a marker is included in the response so that the remaining results may be retrieved.

Default: 100

Constraints: minimum 20, maximum 100

" - }, - "Marker":{ - "shape":"String", - "documentation":"

An optional pagination token provided by a previous DescribeDBSnapshots request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords.

" - } - }, - "documentation":"

" - }, - "DescribeDBSubnetGroupsMessage":{ - "type":"structure", - "members":{ - "DBSubnetGroupName":{ - "shape":"String", - "documentation":"

The name of the DB subnet group to return details for.

" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

This parameter is not currently supported.

" - }, - "MaxRecords":{ - "shape":"IntegerOptional", - "documentation":"

The maximum number of records to include in the response. If more records exist than the specified MaxRecords value, a pagination token called a marker is included in the response so that the remaining results may be retrieved.

Default: 100

Constraints: minimum 20, maximum 100

" - }, - "Marker":{ - "shape":"String", - "documentation":"

An optional pagination token provided by a previous DescribeDBSubnetGroups request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords.

" - } - }, - "documentation":"

" - }, - "DescribeEngineDefaultParametersMessage":{ - "type":"structure", - "required":["DBParameterGroupFamily"], - "members":{ - "DBParameterGroupFamily":{ - "shape":"String", - "documentation":"

The name of the DB parameter group family.

" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

Not currently supported.

" - }, - "MaxRecords":{ - "shape":"IntegerOptional", - "documentation":"

The maximum number of records to include in the response. If more records exist than the specified MaxRecords value, a pagination token called a marker is included in the response so that the remaining results may be retrieved.

Default: 100

Constraints: minimum 20, maximum 100

" - }, - "Marker":{ - "shape":"String", - "documentation":"

An optional pagination token provided by a previous DescribeEngineDefaultParameters request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords.

" - } - }, - "documentation":"

" - }, - "DescribeEventCategoriesMessage":{ - "type":"structure", - "members":{ - "SourceType":{ - "shape":"String", - "documentation":"

The type of source that will be generating the events.

Valid values: db-instance | db-parameter-group | db-security-group | db-snapshot

" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

This parameter is not currently supported.

" - } - }, - "documentation":"

" - }, - "DescribeEventSubscriptionsMessage":{ - "type":"structure", - "members":{ - "SubscriptionName":{ - "shape":"String", - "documentation":"

The name of the RDS event notification subscription you want to describe.

" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

This parameter is not currently supported.

" - }, - "MaxRecords":{ - "shape":"IntegerOptional", - "documentation":"

The maximum number of records to include in the response. If more records exist than the specified MaxRecords value, a pagination token called a marker is included in the response so that the remaining results can be retrieved.

Default: 100

Constraints: minimum 20, maximum 100

" - }, - "Marker":{ - "shape":"String", - "documentation":"

An optional pagination token provided by a previous DescribeOrderableDBInstanceOptions request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords .

" - } - }, - "documentation":"

" - }, - "DescribeEventsMessage":{ - "type":"structure", - "members":{ - "SourceIdentifier":{ - "shape":"String", - "documentation":"

The identifier of the event source for which events will be returned. If not specified, then all sources are included in the response.

Constraints:

" - }, - "SourceType":{ - "shape":"SourceType", - "documentation":"

The event source to retrieve events for. If no value is specified, all events are returned.

" - }, - "StartTime":{ - "shape":"TStamp", - "documentation":"

The beginning of the time interval to retrieve events for, specified in ISO 8601 format. For more information about ISO 8601, go to the ISO8601 Wikipedia page.

Example: 2009-07-08T18:00Z

" - }, - "EndTime":{ - "shape":"TStamp", - "documentation":"

The end of the time interval for which to retrieve events, specified in ISO 8601 format. For more information about ISO 8601, go to the ISO8601 Wikipedia page.

Example: 2009-07-08T18:00Z

" - }, - "Duration":{ - "shape":"IntegerOptional", - "documentation":"

The number of minutes to retrieve events for.

Default: 60

" - }, - "EventCategories":{ - "shape":"EventCategoriesList", - "documentation":"

A list of event categories that trigger notifications for a event notification subscription.

" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

This parameter is not currently supported.

" - }, - "MaxRecords":{ - "shape":"IntegerOptional", - "documentation":"

The maximum number of records to include in the response. If more records exist than the specified MaxRecords value, a pagination token called a marker is included in the response so that the remaining results may be retrieved.

Default: 100

Constraints: minimum 20, maximum 100

" - }, - "Marker":{ - "shape":"String", - "documentation":"

An optional pagination token provided by a previous DescribeEvents request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords.

" - } - }, - "documentation":"

" - }, - "DescribeOptionGroupOptionsMessage":{ - "type":"structure", - "required":["EngineName"], - "members":{ - "EngineName":{ - "shape":"String", - "documentation":"

A required parameter. Options available for the given Engine name will be described.

" - }, - "MajorEngineVersion":{ - "shape":"String", - "documentation":"

If specified, filters the results to include only options for the specified major engine version.

" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

This parameter is not currently supported.

" - }, - "MaxRecords":{ - "shape":"IntegerOptional", - "documentation":"

The maximum number of records to include in the response. If more records exist than the specified MaxRecords value, a pagination token called a marker is included in the response so that the remaining results can be retrieved.

Default: 100

Constraints: minimum 20, maximum 100

" - }, - "Marker":{ - "shape":"String", - "documentation":"

An optional pagination token provided by a previous request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords.

" - } - }, - "documentation":"

" - }, - "DescribeOptionGroupsMessage":{ - "type":"structure", - "members":{ - "OptionGroupName":{ - "shape":"String", - "documentation":"

The name of the option group to describe. Cannot be supplied together with EngineName or MajorEngineVersion.

" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

This parameter is not currently supported.

" - }, - "Marker":{ - "shape":"String", - "documentation":"

An optional pagination token provided by a previous DescribeOptionGroups request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords.

" - }, - "MaxRecords":{ - "shape":"IntegerOptional", - "documentation":"

The maximum number of records to include in the response. If more records exist than the specified MaxRecords value, a pagination token called a marker is included in the response so that the remaining results can be retrieved.

Default: 100

Constraints: minimum 20, maximum 100

" - }, - "EngineName":{ - "shape":"String", - "documentation":"

Filters the list of option groups to only include groups associated with a specific database engine.

" - }, - "MajorEngineVersion":{ - "shape":"String", - "documentation":"

Filters the list of option groups to only include groups associated with a specific database engine version. If specified, then EngineName must also be specified.

" - } - }, - "documentation":"

" - }, - "DescribeOrderableDBInstanceOptionsMessage":{ - "type":"structure", - "required":["Engine"], - "members":{ - "Engine":{ - "shape":"String", - "documentation":"

The name of the engine to retrieve DB instance options for.

" - }, - "EngineVersion":{ - "shape":"String", - "documentation":"

The engine version filter value. Specify this parameter to show only the available offerings matching the specified engine version.

" - }, - "DBInstanceClass":{ - "shape":"String", - "documentation":"

The DB instance class filter value. Specify this parameter to show only the available offerings matching the specified DB instance class.

" - }, - "LicenseModel":{ - "shape":"String", - "documentation":"

The license model filter value. Specify this parameter to show only the available offerings matching the specified license model.

" - }, - "Vpc":{ - "shape":"BooleanOptional", - "documentation":"

The VPC filter value. Specify this parameter to show only the available VPC or non-VPC offerings.

" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

This parameter is not currently supported.

" - }, - "MaxRecords":{ - "shape":"IntegerOptional", - "documentation":"

The maximum number of records to include in the response. If more records exist than the specified MaxRecords value, a pagination token called a marker is included in the response so that the remaining results can be retrieved.

Default: 100

Constraints: minimum 20, maximum 100

" - }, - "Marker":{ - "shape":"String", - "documentation":"

An optional pagination token provided by a previous DescribeOrderableDBInstanceOptions request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords .

" - } - }, - "documentation":"

" - }, - "DescribePendingMaintenanceActionsMessage":{ - "type":"structure", - "members":{ - "ResourceIdentifier":{ - "shape":"String", - "documentation":"

The ARN of the resource to return pending maintenance actions for.

" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

Supported filters:

" - }, - "Marker":{ - "shape":"String", - "documentation":"

An optional pagination token provided by a previous DescribePendingMaintenanceActions request. If this parameter is specified, the response includes only records beyond the marker, up to a number of records specified by MaxRecords .

" - }, - "MaxRecords":{ - "shape":"IntegerOptional", - "documentation":"

The maximum number of records to include in the response. If more records exist than the specified MaxRecords value, a pagination token called a marker is included in the response so that the remaining results can be retrieved.

Default: 100

Constraints: minimum 20, maximum 100

" - } - }, - "documentation":"

" - }, - "DescribeReservedDBInstancesMessage":{ - "type":"structure", - "members":{ - "ReservedDBInstanceId":{ - "shape":"String", - "documentation":"

The reserved DB instance identifier filter value. Specify this parameter to show only the reservation that matches the specified reservation ID.

" - }, - "ReservedDBInstancesOfferingId":{ - "shape":"String", - "documentation":"

The offering identifier filter value. Specify this parameter to show only purchased reservations matching the specified offering identifier.

" - }, - "DBInstanceClass":{ - "shape":"String", - "documentation":"

The DB instance class filter value. Specify this parameter to show only those reservations matching the specified DB instances class.

" - }, - "Duration":{ - "shape":"String", - "documentation":"

The duration filter value, specified in years or seconds. Specify this parameter to show only reservations for this duration.

Valid Values: 1 | 3 | 31536000 | 94608000

" - }, - "ProductDescription":{ - "shape":"String", - "documentation":"

The product description filter value. Specify this parameter to show only those reservations matching the specified product description.

" - }, - "OfferingType":{ - "shape":"String", - "documentation":"

The offering type filter value. Specify this parameter to show only the available offerings matching the specified offering type.

Valid Values: \"Light Utilization\" | \"Medium Utilization\" | \"Heavy Utilization\"

" - }, - "MultiAZ":{ - "shape":"BooleanOptional", - "documentation":"

The Multi-AZ filter value. Specify this parameter to show only those reservations matching the specified Multi-AZ parameter.

" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

This parameter is not currently supported.

" - }, - "MaxRecords":{ - "shape":"IntegerOptional", - "documentation":"

The maximum number of records to include in the response. If more than the MaxRecords value is available, a pagination token called a marker is included in the response so that the following results can be retrieved.

Default: 100

Constraints: minimum 20, maximum 100

" - }, - "Marker":{ - "shape":"String", - "documentation":"

An optional pagination token provided by a previous request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords.

" - } - }, - "documentation":"

" - }, - "DescribeReservedDBInstancesOfferingsMessage":{ - "type":"structure", - "members":{ - "ReservedDBInstancesOfferingId":{ - "shape":"String", - "documentation":"

The offering identifier filter value. Specify this parameter to show only the available offering that matches the specified reservation identifier.

Example: 438012d3-4052-4cc7-b2e3-8d3372e0e706

" - }, - "DBInstanceClass":{ - "shape":"String", - "documentation":"

The DB instance class filter value. Specify this parameter to show only the available offerings matching the specified DB instance class.

" - }, - "Duration":{ - "shape":"String", - "documentation":"

Duration filter value, specified in years or seconds. Specify this parameter to show only reservations for this duration.

Valid Values: 1 | 3 | 31536000 | 94608000

" - }, - "ProductDescription":{ - "shape":"String", - "documentation":"

Product description filter value. Specify this parameter to show only the available offerings matching the specified product description.

" - }, - "OfferingType":{ - "shape":"String", - "documentation":"

The offering type filter value. Specify this parameter to show only the available offerings matching the specified offering type.

Valid Values: \"Light Utilization\" | \"Medium Utilization\" | \"Heavy Utilization\"

" - }, - "MultiAZ":{ - "shape":"BooleanOptional", - "documentation":"

The Multi-AZ filter value. Specify this parameter to show only the available offerings matching the specified Multi-AZ parameter.

" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

This parameter is not currently supported.

" - }, - "MaxRecords":{ - "shape":"IntegerOptional", - "documentation":"

The maximum number of records to include in the response. If more than the MaxRecords value is available, a pagination token called a marker is included in the response so that the following results can be retrieved.

Default: 100

Constraints: minimum 20, maximum 100

" - }, - "Marker":{ - "shape":"String", - "documentation":"

An optional pagination token provided by a previous request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords.

" - } - }, - "documentation":"

" - }, - "Double":{"type":"double"}, - "DownloadDBLogFilePortionDetails":{ - "type":"structure", - "members":{ - "LogFileData":{ - "shape":"String", - "documentation":"

Entries from the specified log file.

" - }, - "Marker":{ - "shape":"String", - "documentation":"

A pagination token that can be used in a subsequent DownloadDBLogFilePortion request.

" - }, - "AdditionalDataPending":{ - "shape":"Boolean", - "documentation":"

Boolean value that if true, indicates there is more data to be downloaded.

" - } - }, - "documentation":"

This data type is used as a response element to DownloadDBLogFilePortion.

" - }, - "DownloadDBLogFilePortionMessage":{ - "type":"structure", - "required":[ - "DBInstanceIdentifier", - "LogFileName" - ], - "members":{ - "DBInstanceIdentifier":{ - "shape":"String", - "documentation":"

The customer-assigned name of the DB instance that contains the log files you want to list.

Constraints:

" - }, - "LogFileName":{ - "shape":"String", - "documentation":"

The name of the log file to be downloaded.

" - }, - "Marker":{ - "shape":"String", - "documentation":"

The pagination token provided in the previous request or \"0\". If the Marker parameter is specified the response includes only records beyond the marker until the end of the file or up to NumberOfLines.

" - }, - "NumberOfLines":{ - "shape":"Integer", - "documentation":"

The number of lines to download.

If the NumberOfLines parameter is specified, then the block of lines returned can be from the beginning or the end of the log file, depending on the value of the Marker parameter.

" - } - }, - "documentation":"

" - }, - "EC2SecurityGroup":{ - "type":"structure", - "members":{ - "Status":{ - "shape":"String", - "documentation":"

Provides the status of the EC2 security group. Status can be \"authorizing\", \"authorized\", \"revoking\", and \"revoked\".

" - }, - "EC2SecurityGroupName":{ - "shape":"String", - "documentation":"

Specifies the name of the EC2 security group.

" - }, - "EC2SecurityGroupId":{ - "shape":"String", - "documentation":"

Specifies the id of the EC2 security group.

" - }, - "EC2SecurityGroupOwnerId":{ - "shape":"String", - "documentation":"

Specifies the AWS ID of the owner of the EC2 security group specified in the EC2SecurityGroupName field.

" - } - }, - "documentation":"

This data type is used as a response element in the following actions:

" - }, - "EC2SecurityGroupList":{ - "type":"list", - "member":{ - "shape":"EC2SecurityGroup", - "locationName":"EC2SecurityGroup" - } - }, - "Endpoint":{ - "type":"structure", - "members":{ - "Address":{ - "shape":"String", - "documentation":"

Specifies the DNS address of the DB instance.

" - }, - "Port":{ - "shape":"Integer", - "documentation":"

Specifies the port that the database engine is listening on.

" - } - }, - "documentation":"

This data type is used as a response element in the following actions:

" - }, - "EngineDefaults":{ - "type":"structure", - "members":{ - "DBParameterGroupFamily":{ - "shape":"String", - "documentation":"

Specifies the name of the DB parameter group family which the engine default parameters apply to.

" - }, - "Marker":{ - "shape":"String", - "documentation":"

An optional pagination token provided by a previous EngineDefaults request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords .

" - }, - "Parameters":{ - "shape":"ParametersList", - "documentation":"

Contains a list of engine default parameters.

" - } - }, - "wrapper":true, - "documentation":"

Contains the result of a successful invocation of the DescribeEngineDefaultParameters action.

" - }, - "Event":{ - "type":"structure", - "members":{ - "SourceIdentifier":{ - "shape":"String", - "documentation":"

Provides the identifier for the source of the event.

" - }, - "SourceType":{ - "shape":"SourceType", - "documentation":"

Specifies the source type for this event.

" - }, - "Message":{ - "shape":"String", - "documentation":"

Provides the text of this event.

" - }, - "EventCategories":{ - "shape":"EventCategoriesList", - "documentation":"

Specifies the category for the event.

" - }, - "Date":{ - "shape":"TStamp", - "documentation":"

Specifies the date and time of the event.

" - } - }, - "documentation":"

This data type is used as a response element in the DescribeEvents action.

" - }, - "EventCategoriesList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"EventCategory" - } - }, - "EventCategoriesMap":{ - "type":"structure", - "members":{ - "SourceType":{ - "shape":"String", - "documentation":"

The source type that the returned categories belong to

" - }, - "EventCategories":{ - "shape":"EventCategoriesList", - "documentation":"

The event categories for the specified source type

" - } - }, - "wrapper":true, - "documentation":"

Contains the results of a successful invocation of the DescribeEventCategories action.

" - }, - "EventCategoriesMapList":{ - "type":"list", - "member":{ - "shape":"EventCategoriesMap", - "locationName":"EventCategoriesMap" - } - }, - "EventCategoriesMessage":{ - "type":"structure", - "members":{ - "EventCategoriesMapList":{ - "shape":"EventCategoriesMapList", - "documentation":"

A list of EventCategoriesMap data types.

" - } - }, - "documentation":"

Data returned from the DescribeEventCategories action.

" - }, - "EventList":{ - "type":"list", - "member":{ - "shape":"Event", - "locationName":"Event" - } - }, - "EventSubscription":{ - "type":"structure", - "members":{ - "CustomerAwsId":{ - "shape":"String", - "documentation":"

The AWS customer account associated with the RDS event notification subscription.

" - }, - "CustSubscriptionId":{ - "shape":"String", - "documentation":"

The RDS event notification subscription Id.

" - }, - "SnsTopicArn":{ - "shape":"String", - "documentation":"

The topic ARN of the RDS event notification subscription.

" - }, - "Status":{ - "shape":"String", - "documentation":"

The status of the RDS event notification subscription.

Constraints:

Can be one of the following: creating | modifying | deleting | active | no-permission | topic-not-exist

The status \"no-permission\" indicates that RDS no longer has permission to post to the SNS topic. The status \"topic-not-exist\" indicates that the topic was deleted after the subscription was created.

" - }, - "SubscriptionCreationTime":{ - "shape":"String", - "documentation":"

The time the RDS event notification subscription was created.

" - }, - "SourceType":{ - "shape":"String", - "documentation":"

The source type for the RDS event notification subscription.

" - }, - "SourceIdsList":{ - "shape":"SourceIdsList", - "documentation":"

A list of source IDs for the RDS event notification subscription.

" - }, - "EventCategoriesList":{ - "shape":"EventCategoriesList", - "documentation":"

A list of event categories for the RDS event notification subscription.

" - }, - "Enabled":{ - "shape":"Boolean", - "documentation":"

A Boolean value indicating if the subscription is enabled. True indicates the subscription is enabled.

" - } - }, - "wrapper":true, - "documentation":"

Contains the results of a successful invocation of the DescribeEventSubscriptions action.

" - }, - "EventSubscriptionQuotaExceededFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"EventSubscriptionQuotaExceeded", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

You have reached the maximum number of event subscriptions.

" - }, - "EventSubscriptionsList":{ - "type":"list", - "member":{ - "shape":"EventSubscription", - "locationName":"EventSubscription" - } - }, - "EventSubscriptionsMessage":{ - "type":"structure", - "members":{ - "Marker":{ - "shape":"String", - "documentation":"

An optional pagination token provided by a previous DescribeOrderableDBInstanceOptions request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords.

" - }, - "EventSubscriptionsList":{ - "shape":"EventSubscriptionsList", - "documentation":"

A list of EventSubscriptions data types.

" - } - }, - "documentation":"

Data returned by the DescribeEventSubscriptions action.

" - }, - "EventsMessage":{ - "type":"structure", - "members":{ - "Marker":{ - "shape":"String", - "documentation":"

An optional pagination token provided by a previous Events request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords .

" - }, - "Events":{ - "shape":"EventList", - "documentation":"

A list of Event instances.

" - } - }, - "documentation":"

Contains the result of a successful invocation of the DescribeEvents action.

" - }, - "Filter":{ - "type":"structure", - "required":[ - "Name", - "Values" - ], - "members":{ - "Name":{ - "shape":"String", - "documentation":"

This parameter is not currently supported.

" - }, - "Values":{ - "shape":"FilterValueList", - "documentation":"

This parameter is not currently supported.

" - } - } - }, - "FilterList":{ - "type":"list", - "member":{ - "shape":"Filter", - "locationName":"Filter" - } - }, - "FilterValueList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"Value" - } - }, - "IPRange":{ - "type":"structure", - "members":{ - "Status":{ - "shape":"String", - "documentation":"

Specifies the status of the IP range. Status can be \"authorizing\", \"authorized\", \"revoking\", and \"revoked\".

" - }, - "CIDRIP":{ - "shape":"String", - "documentation":"

Specifies the IP range.

" - } - }, - "documentation":"

This data type is used as a response element in the DescribeDBSecurityGroups action.

" - }, - "IPRangeList":{ - "type":"list", - "member":{ - "shape":"IPRange", - "locationName":"IPRange" - } - }, - "InstanceQuotaExceededFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"InstanceQuotaExceeded", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Request would result in user exceeding the allowed number of DB instances.

" - }, - "InsufficientDBInstanceCapacityFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"InsufficientDBInstanceCapacity", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Specified DB instance class is not available in the specified Availability Zone.

" - }, - "Integer":{"type":"integer"}, - "IntegerOptional":{"type":"integer"}, - "InvalidDBInstanceStateFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"InvalidDBInstanceState", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified DB instance is not in the available state.

" - }, - "InvalidDBParameterGroupStateFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"InvalidDBParameterGroupState", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The DB parameter group cannot be deleted because it is in use.

" - }, - "InvalidDBSecurityGroupStateFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"InvalidDBSecurityGroupState", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The state of the DB security group does not allow deletion.

" - }, - "InvalidDBSnapshotStateFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"InvalidDBSnapshotState", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The state of the DB snapshot does not allow deletion.

" - }, - "InvalidDBSubnetGroupFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"InvalidDBSubnetGroupFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Indicates the DBSubnetGroup does not belong to the same VPC as that of an existing cross region read replica of the same source instance.

" - }, - "InvalidDBSubnetGroupStateFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"InvalidDBSubnetGroupStateFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The DB subnet group cannot be deleted because it is in use.

" - }, - "InvalidDBSubnetStateFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"InvalidDBSubnetStateFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The DB subnet is not in the available state.

" - }, - "InvalidEventSubscriptionStateFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"InvalidEventSubscriptionState", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

This error can occur if someone else is modifying a subscription. You should retry the action.

" - }, - "InvalidOptionGroupStateFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"InvalidOptionGroupStateFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The option group is not in the available state.

" - }, - "InvalidRestoreFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"InvalidRestoreFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Cannot restore from vpc backup to non-vpc DB instance.

" - }, - "InvalidSubnet":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"InvalidSubnet", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The requested subnet is invalid, or multiple subnets were requested that are not all in a common VPC.

" - }, - "InvalidVPCNetworkStateFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"InvalidVPCNetworkStateFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

DB subnet group does not cover all Availability Zones after it is created because users' change.

" - }, - "KMSKeyNotAccessibleFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"KMSKeyNotAccessibleFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Error accessing KMS key.

" - }, - "KeyList":{ - "type":"list", - "member":{"shape":"String"} - }, - "ListTagsForResourceMessage":{ - "type":"structure", - "required":["ResourceName"], - "members":{ - "ResourceName":{ - "shape":"String", - "documentation":"

The Amazon RDS resource with tags to be listed. This value is an Amazon Resource Name (ARN). For information about creating an ARN, see Constructing an RDS Amazon Resource Name (ARN).

" - }, - "Filters":{ - "shape":"FilterList", - "documentation":"

This parameter is not currently supported.

" - } - }, - "documentation":"

" - }, - "Long":{"type":"long"}, - "ModifyDBInstanceMessage":{ - "type":"structure", - "required":["DBInstanceIdentifier"], - "members":{ - "DBInstanceIdentifier":{ - "shape":"String", - "documentation":"

The DB instance identifier. This value is stored as a lowercase string.

Constraints:

" - }, - "AllocatedStorage":{ - "shape":"IntegerOptional", - "documentation":"

The new storage capacity of the RDS instance. Changing this setting does not result in an outage and the change is applied during the next maintenance window unless ApplyImmediately is set to true for this request.

MySQL

Default: Uses existing setting

Valid Values: 5-3072

Constraints: Value supplied must be at least 10% greater than the current value. Values that are not at least 10% greater than the existing value are rounded up so that they are 10% greater than the current value.

Type: Integer

PostgreSQL

Default: Uses existing setting

Valid Values: 5-3072

Constraints: Value supplied must be at least 10% greater than the current value. Values that are not at least 10% greater than the existing value are rounded up so that they are 10% greater than the current value.

Type: Integer

Oracle

Default: Uses existing setting

Valid Values: 10-3072

Constraints: Value supplied must be at least 10% greater than the current value. Values that are not at least 10% greater than the existing value are rounded up so that they are 10% greater than the current value.

SQL Server

Cannot be modified.

If you choose to migrate your DB instance from using standard storage to using Provisioned IOPS, or from using Provisioned IOPS to using standard storage, the process can take time. The duration of the migration depends on several factors such as database load, storage size, storage type (standard or Provisioned IOPS), amount of IOPS provisioned (if any), and the number of prior scale storage operations. Typical migration times are under 24 hours, but the process can take up to several days in some cases. During the migration, the DB instance will be available for use, but may experience performance degradation. While the migration takes place, nightly backups for the instance will be suspended. No other Amazon RDS operations can take place for the instance, including modifying the instance, rebooting the instance, deleting the instance, creating a Read Replica for the instance, and creating a DB snapshot of the instance.

" - }, - "DBInstanceClass":{ - "shape":"String", - "documentation":"

The new compute and memory capacity of the DB instance. To determine the instance classes that are available for a particular DB engine, use the DescribeOrderableDBInstanceOptions action.

Passing a value for this setting causes an outage during the change and is applied during the next maintenance window, unless ApplyImmediately is specified as true for this request.

Default: Uses existing setting

Valid Values: db.t1.micro | db.m1.small | db.m1.medium | db.m1.large | db.m1.xlarge | db.m2.xlarge | db.m2.2xlarge | db.m2.4xlarge | db.m3.medium | db.m3.large | db.m3.xlarge | db.m3.2xlarge | db.r3.large | db.r3.xlarge | db.r3.2xlarge | db.r3.4xlarge | db.r3.8xlarge | db.t2.micro | db.t2.small | db.t2.medium

" - }, - "DBSecurityGroups":{ - "shape":"DBSecurityGroupNameList", - "documentation":"

A list of DB security groups to authorize on this DB instance. Changing this setting does not result in an outage and the change is asynchronously applied as soon as possible.

Constraints:

" - }, - "VpcSecurityGroupIds":{ - "shape":"VpcSecurityGroupIdList", - "documentation":"

A list of EC2 VPC security groups to authorize on this DB instance. This change is asynchronously applied as soon as possible.

Constraints:

" - }, - "ApplyImmediately":{ - "shape":"Boolean", - "documentation":"

Specifies whether the modifications in this request and any pending modifications are asynchronously applied as soon as possible, regardless of the PreferredMaintenanceWindow setting for the DB instance.

If this parameter is set to false, changes to the DB instance are applied during the next maintenance window. Some parameter changes can cause an outage and will be applied on the next call to RebootDBInstance, or the next failure reboot. Review the table of parameters in Modifying a DB Instance and Using the Apply Immediately Parameter to see the impact that setting ApplyImmediately to true or false has for each modified parameter and to determine when the changes will be applied.

Default: false

" - }, - "MasterUserPassword":{ - "shape":"String", - "documentation":"

The new password for the DB instance master user. Can be any printable ASCII character except \"/\", \"\"\", or \"@\".

Changing this parameter does not result in an outage and the change is asynchronously applied as soon as possible. Between the time of the request and the completion of the request, the MasterUserPassword element exists in the PendingModifiedValues element of the operation response.

Default: Uses existing setting

Constraints: Must be 8 to 41 alphanumeric characters (MySQL), 8 to 30 alphanumeric characters (Oracle), or 8 to 128 alphanumeric characters (SQL Server).

Amazon RDS API actions never return the password, so this action provides a way to regain access to a master instance user if the password is lost. This includes restoring privileges that may have been accidentally revoked. " - }, - "DBParameterGroupName":{ - "shape":"String", - "documentation":"

The name of the DB parameter group to apply to the DB instance. Changing this setting does not result in an outage. The parameter group name itself is changed immediately, but the actual parameter changes are not applied until you reboot the instance without failover. The db instance will NOT be rebooted automatically and the parameter changes will NOT be applied during the next maintenance window.

Default: Uses existing setting

Constraints: The DB parameter group must be in the same DB parameter group family as this DB instance.

" - }, - "BackupRetentionPeriod":{ - "shape":"IntegerOptional", - "documentation":"

The number of days to retain automated backups. Setting this parameter to a positive number enables backups. Setting this parameter to 0 disables automated backups.

Changing this parameter can result in an outage if you change from 0 to a non-zero value or from a non-zero value to 0. These changes are applied during the next maintenance window unless the ApplyImmediately parameter is set to true for this request. If you change the parameter from one non-zero value to another non-zero value, the change is asynchronously applied as soon as possible.

Default: Uses existing setting

Constraints:

" - }, - "PreferredBackupWindow":{ - "shape":"String", - "documentation":"

The daily time range during which automated backups are created if automated backups are enabled, as determined by the BackupRetentionPeriod. Changing this parameter does not result in an outage and the change is asynchronously applied as soon as possible.

Constraints:

" - }, - "PreferredMaintenanceWindow":{ - "shape":"String", - "documentation":"

The weekly time range (in UTC) during which system maintenance can occur, which may result in an outage. Changing this parameter does not result in an outage, except in the following situation, and the change is asynchronously applied as soon as possible. If there are pending actions that cause a reboot, and the maintenance window is changed to include the current time, then changing this parameter will cause a reboot of the DB instance. If moving this window to the current time, there must be at least 30 minutes between the current time and end of the window to ensure pending changes are applied.

Default: Uses existing setting

Format: ddd:hh24:mi-ddd:hh24:mi

Valid Days: Mon | Tue | Wed | Thu | Fri | Sat | Sun

Constraints: Must be at least 30 minutes

" - }, - "MultiAZ":{ - "shape":"BooleanOptional", - "documentation":"

Specifies if the DB instance is a Multi-AZ deployment. Changing this parameter does not result in an outage and the change is applied during the next maintenance window unless the ApplyImmediately parameter is set to true for this request.

Constraints: Cannot be specified if the DB instance is a Read Replica.

" - }, - "EngineVersion":{ - "shape":"String", - "documentation":"

The version number of the database engine to upgrade to. Changing this parameter results in an outage and the change is applied during the next maintenance window unless the ApplyImmediately parameter is set to true for this request.

For major version upgrades, if a non-default DB parameter group is currently in use, a new DB parameter group in the DB parameter group family for the new engine version must be specified. The new DB parameter group can be the default for that DB parameter group family.

For a list of valid engine versions, see CreateDBInstance.

" - }, - "AllowMajorVersionUpgrade":{ - "shape":"Boolean", - "documentation":"

Indicates that major version upgrades are allowed. Changing this parameter does not result in an outage and the change is asynchronously applied as soon as possible.

Constraints: This parameter must be set to true when specifying a value for the EngineVersion parameter that is a different major version than the DB instance's current version.

" - }, - "AutoMinorVersionUpgrade":{ - "shape":"BooleanOptional", - "documentation":"

Indicates that minor version upgrades will be applied automatically to the DB instance during the maintenance window. Changing this parameter does not result in an outage except in the following case and the change is asynchronously applied as soon as possible. An outage will result if this parameter is set to true during the maintenance window, and a newer minor version is available, and RDS has enabled auto patching for that engine version.

" - }, - "Iops":{ - "shape":"IntegerOptional", - "documentation":"

The new Provisioned IOPS (I/O operations per second) value for the RDS instance. Changing this setting does not result in an outage and the change is applied during the next maintenance window unless the ApplyImmediately parameter is set to true for this request.

Default: Uses existing setting

Constraints: Value supplied must be at least 10% greater than the current value. Values that are not at least 10% greater than the existing value are rounded up so that they are 10% greater than the current value. If you are migrating from Provisioned IOPS to standard storage, set this value to 0. The DB instance will require a reboot for the change in storage type to take effect.

SQL Server

Setting the IOPS value for the SQL Server database engine is not supported.

Type: Integer

If you choose to migrate your DB instance from using standard storage to using Provisioned IOPS, or from using Provisioned IOPS to using standard storage, the process can take time. The duration of the migration depends on several factors such as database load, storage size, storage type (standard or Provisioned IOPS), amount of IOPS provisioned (if any), and the number of prior scale storage operations. Typical migration times are under 24 hours, but the process can take up to several days in some cases. During the migration, the DB instance will be available for use, but may experience performance degradation. While the migration takes place, nightly backups for the instance will be suspended. No other Amazon RDS operations can take place for the instance, including modifying the instance, rebooting the instance, deleting the instance, creating a Read Replica for the instance, and creating a DB snapshot of the instance.

" - }, - "OptionGroupName":{ - "shape":"String", - "documentation":"

Indicates that the DB instance should be associated with the specified option group. Changing this parameter does not result in an outage except in the following case and the change is applied during the next maintenance window unless the ApplyImmediately parameter is set to true for this request. If the parameter change results in an option group that enables OEM, this change can cause a brief (sub-second) period during which new connections are rejected but existing connections are not interrupted.

Permanent options, such as the TDE option for Oracle Advanced Security TDE, cannot be removed from an option group, and that option group cannot be removed from a DB instance once it is associated with a DB instance

" - }, - "NewDBInstanceIdentifier":{ - "shape":"String", - "documentation":"

The new DB instance identifier for the DB instance when renaming a DB instance. When you change the DB instance identifier, an instance reboot will occur immediately if you set Apply Immediately to true, or will occur during the next maintenance window if Apply Immediately to false. This value is stored as a lowercase string.

Constraints:

" - }, - "StorageType":{ - "shape":"String", - "documentation":"

Specifies the storage type to be associated with the DB instance.

Valid values: standard | gp2 | io1

If you specify io1, you must also include a value for the Iops parameter.

Default: io1 if the Iops parameter is specified; otherwise standard

" - }, - "TdeCredentialArn":{ - "shape":"String", - "documentation":"

The ARN from the Key Store with which to associate the instance for TDE encryption.

" - }, - "TdeCredentialPassword":{ - "shape":"String", - "documentation":"

The password for the given ARN from the Key Store in order to access the device.

" - } - }, - "documentation":"

" - }, - "ModifyDBParameterGroupMessage":{ - "type":"structure", - "required":[ - "DBParameterGroupName", - "Parameters" - ], - "members":{ - "DBParameterGroupName":{ - "shape":"String", - "documentation":"

The name of the DB parameter group.

Constraints:

" - }, - "Parameters":{ - "shape":"ParametersList", - "documentation":"

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. A maximum of 20 parameters may be modified in a single request.

Valid Values (for the application method): immediate | pending-reboot

You can use the immediate value with dynamic parameters only. You can use the pending-reboot value for both dynamic and static parameters, and changes are applied when you reboot the DB instance without failover. " - } - }, - "documentation":"

" - }, - "ModifyDBSubnetGroupMessage":{ - "type":"structure", - "required":[ - "DBSubnetGroupName", - "SubnetIds" - ], - "members":{ - "DBSubnetGroupName":{ - "shape":"String", - "documentation":"

The name for the DB subnet group. This value is stored as a lowercase string.

Constraints: Must contain no more than 255 alphanumeric characters or hyphens. Must not be \"Default\".

Example: mySubnetgroup

" - }, - "DBSubnetGroupDescription":{ - "shape":"String", - "documentation":"

The description for the DB subnet group.

" - }, - "SubnetIds":{ - "shape":"SubnetIdentifierList", - "documentation":"

The EC2 subnet IDs for the DB subnet group.

" - } - }, - "documentation":"

" - }, - "ModifyEventSubscriptionMessage":{ - "type":"structure", - "required":["SubscriptionName"], - "members":{ - "SubscriptionName":{ - "shape":"String", - "documentation":"

The name of the RDS event notification subscription.

" - }, - "SnsTopicArn":{ - "shape":"String", - "documentation":"

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.

" - }, - "SourceType":{ - "shape":"String", - "documentation":"

The type of source that will be 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-parameter-group | db-security-group | db-snapshot

" - }, - "EventCategories":{ - "shape":"EventCategoriesList", - "documentation":"

A list of event categories for a SourceType that you want to subscribe to. You can see a list of the categories for a given SourceType in the Events topic in the Amazon RDS User Guide or by using the DescribeEventCategories action.

" - }, - "Enabled":{ - "shape":"BooleanOptional", - "documentation":"

A Boolean value; set to true to activate the subscription.

" - } - }, - "documentation":"

" - }, - "ModifyOptionGroupMessage":{ - "type":"structure", - "required":["OptionGroupName"], - "members":{ - "OptionGroupName":{ - "shape":"String", - "documentation":"

The name of the option group to be modified.

Permanent options, such as the TDE option for Oracle Advanced Security TDE, cannot be removed from an option group, and that option group cannot be removed from a DB instance once it is associated with a DB instance

" - }, - "OptionsToInclude":{ - "shape":"OptionConfigurationList", - "documentation":"

Options in this list are added to the option group or, if already present, the specified configuration is used to update the existing configuration.

" - }, - "OptionsToRemove":{ - "shape":"OptionNamesList", - "documentation":"

Options in this list are removed from the option group.

" - }, - "ApplyImmediately":{ - "shape":"Boolean", - "documentation":"

Indicates whether the changes should be applied immediately, or during the next maintenance window for each instance associated with the option group.

" - } - }, - "documentation":"

" - }, - "Option":{ - "type":"structure", - "members":{ - "OptionName":{ - "shape":"String", - "documentation":"

The name of the option.

" - }, - "OptionDescription":{ - "shape":"String", - "documentation":"

The description of the option.

" - }, - "Persistent":{ - "shape":"Boolean", - "documentation":"

Indicate if this option is persistent.

" - }, - "Permanent":{ - "shape":"Boolean", - "documentation":"

Indicate if this option is permanent.

" - }, - "Port":{ - "shape":"IntegerOptional", - "documentation":"

If required, the port configured for this option to use.

" - }, - "OptionSettings":{ - "shape":"OptionSettingConfigurationList", - "documentation":"

The option settings for this option.

" - }, - "DBSecurityGroupMemberships":{ - "shape":"DBSecurityGroupMembershipList", - "documentation":"

If the option requires access to a port, then this DB security group allows access to the port.

" - }, - "VpcSecurityGroupMemberships":{ - "shape":"VpcSecurityGroupMembershipList", - "documentation":"

If the option requires access to a port, then this VPC security group allows access to the port.

" - } - }, - "documentation":"

Option details.

" - }, - "OptionConfiguration":{ - "type":"structure", - "required":["OptionName"], - "members":{ - "OptionName":{ - "shape":"String", - "documentation":"

The configuration of options to include in a group.

" - }, - "Port":{ - "shape":"IntegerOptional", - "documentation":"

The optional port for the option.

" - }, - "DBSecurityGroupMemberships":{ - "shape":"DBSecurityGroupNameList", - "documentation":"

A list of DBSecurityGroupMemebrship name strings used for this option.

" - }, - "VpcSecurityGroupMemberships":{ - "shape":"VpcSecurityGroupIdList", - "documentation":"

A list of VpcSecurityGroupMemebrship name strings used for this option.

" - }, - "OptionSettings":{ - "shape":"OptionSettingsList", - "documentation":"

The option settings to include in an option group.

" - } - }, - "documentation":"

A list of all available options

" - }, - "OptionConfigurationList":{ - "type":"list", - "member":{ - "shape":"OptionConfiguration", - "locationName":"OptionConfiguration" - } - }, - "OptionGroup":{ - "type":"structure", - "members":{ - "OptionGroupName":{ - "shape":"String", - "documentation":"

Specifies the name of the option group.

" - }, - "OptionGroupDescription":{ - "shape":"String", - "documentation":"

Provides a description of the option group.

" - }, - "EngineName":{ - "shape":"String", - "documentation":"

Engine name that this option group can be applied to.

" - }, - "MajorEngineVersion":{ - "shape":"String", - "documentation":"

Indicates the major engine version associated with this option group.

" - }, - "Options":{ - "shape":"OptionsList", - "documentation":"

Indicates what options are available in the option group.

" - }, - "AllowsVpcAndNonVpcInstanceMemberships":{ - "shape":"Boolean", - "documentation":"

Indicates whether this option group can be applied to both VPC and non-VPC instances. The value true indicates the option group can be applied to both VPC and non-VPC instances.

" - }, - "VpcId":{ - "shape":"String", - "documentation":"

If AllowsVpcAndNonVpcInstanceMemberships is false, this field is blank. If AllowsVpcAndNonVpcInstanceMemberships is true and this field is blank, then this option group can be applied to both VPC and non-VPC instances. If this field contains a value, then this option group can only be applied to instances that are in the VPC indicated by this field.

" - } - }, - "wrapper":true, - "documentation":"

" - }, - "OptionGroupAlreadyExistsFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"OptionGroupAlreadyExistsFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The option group you are trying to create already exists.

" - }, - "OptionGroupMembership":{ - "type":"structure", - "members":{ - "OptionGroupName":{ - "shape":"String", - "documentation":"

The name of the option group that the instance belongs to.

" - }, - "Status":{ - "shape":"String", - "documentation":"

The status of the DB instance's option group membership (e.g. in-sync, pending, pending-maintenance, applying).

" - } - }, - "documentation":"

Provides information on the option groups the DB instance is a member of.

" - }, - "OptionGroupMembershipList":{ - "type":"list", - "member":{ - "shape":"OptionGroupMembership", - "locationName":"OptionGroupMembership" - } - }, - "OptionGroupNotFoundFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"OptionGroupNotFoundFault", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified option group could not be found.

" - }, - "OptionGroupOption":{ - "type":"structure", - "members":{ - "Name":{ - "shape":"String", - "documentation":"

The name of the option.

" - }, - "Description":{ - "shape":"String", - "documentation":"

The description of the option.

" - }, - "EngineName":{ - "shape":"String", - "documentation":"

The name of the engine that this option can be applied to.

" - }, - "MajorEngineVersion":{ - "shape":"String", - "documentation":"

Indicates the major engine version that the option is available for.

" - }, - "MinimumRequiredMinorEngineVersion":{ - "shape":"String", - "documentation":"

The minimum required engine version for the option to be applied.

" - }, - "PortRequired":{ - "shape":"Boolean", - "documentation":"

Specifies whether the option requires a port.

" - }, - "DefaultPort":{ - "shape":"IntegerOptional", - "documentation":"

If the option requires a port, specifies the default port for the option.

" - }, - "OptionsDependedOn":{ - "shape":"OptionsDependedOn", - "documentation":"

List of all options that are prerequisites for this option.

" - }, - "Persistent":{ - "shape":"Boolean", - "documentation":"

A persistent option cannot be removed from the option group once the option group is used, but this option can be removed from the db instance while modifying the related data and assigning another option group without this option.

" - }, - "Permanent":{ - "shape":"Boolean", - "documentation":"

A permanent option cannot be removed from the option group once the option group is used, and it cannot be removed from the db instance after assigning an option group with this permanent option.

" - }, - "OptionGroupOptionSettings":{ - "shape":"OptionGroupOptionSettingsList", - "documentation":"

Specifies the option settings that are available (and the default value) for each option in an option group.

" - } - }, - "documentation":"

Available option.

" - }, - "OptionGroupOptionSetting":{ - "type":"structure", - "members":{ - "SettingName":{ - "shape":"String", - "documentation":"

The name of the option group option.

" - }, - "SettingDescription":{ - "shape":"String", - "documentation":"

The description of the option group option.

" - }, - "DefaultValue":{ - "shape":"String", - "documentation":"

The default value for the option group option.

" - }, - "ApplyType":{ - "shape":"String", - "documentation":"

The DB engine specific parameter type for the option group option.

" - }, - "AllowedValues":{ - "shape":"String", - "documentation":"

Indicates the acceptable values for the option group option.

" - }, - "IsModifiable":{ - "shape":"Boolean", - "documentation":"

Boolean value where true indicates that this option group option can be changed from the default value.

" - } - }, - "documentation":"

Option group option settings are used to display settings available for each option with their default values and other information. These values are used with the DescribeOptionGroupOptions action.

" - }, - "OptionGroupOptionSettingsList":{ - "type":"list", - "member":{ - "shape":"OptionGroupOptionSetting", - "locationName":"OptionGroupOptionSetting" - } - }, - "OptionGroupOptionsList":{ - "type":"list", - "member":{ - "shape":"OptionGroupOption", - "locationName":"OptionGroupOption" - }, - "documentation":"

List of available option group options.

" - }, - "OptionGroupOptionsMessage":{ - "type":"structure", - "members":{ - "OptionGroupOptions":{"shape":"OptionGroupOptionsList"}, - "Marker":{ - "shape":"String", - "documentation":"

An optional pagination token provided by a previous request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords.

" - } - }, - "documentation":"

" - }, - "OptionGroupQuotaExceededFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"OptionGroupQuotaExceededFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The quota of 20 option groups was exceeded for this AWS account.

" - }, - "OptionGroups":{ - "type":"structure", - "members":{ - "OptionGroupsList":{ - "shape":"OptionGroupsList", - "documentation":"

List of option groups.

" - }, - "Marker":{ - "shape":"String", - "documentation":"

An optional pagination token provided by a previous request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords.

" - } - }, - "documentation":"

List of option groups.

" - }, - "OptionGroupsList":{ - "type":"list", - "member":{ - "shape":"OptionGroup", - "locationName":"OptionGroup" - } - }, - "OptionNamesList":{ - "type":"list", - "member":{"shape":"String"} - }, - "OptionSetting":{ - "type":"structure", - "members":{ - "Name":{ - "shape":"String", - "documentation":"

The name of the option that has settings that you can set.

" - }, - "Value":{ - "shape":"String", - "documentation":"

The current value of the option setting.

" - }, - "DefaultValue":{ - "shape":"String", - "documentation":"

The default value of the option setting.

" - }, - "Description":{ - "shape":"String", - "documentation":"

The description of the option setting.

" - }, - "ApplyType":{ - "shape":"String", - "documentation":"

The DB engine specific parameter type.

" - }, - "DataType":{ - "shape":"String", - "documentation":"

The data type of the option setting.

" - }, - "AllowedValues":{ - "shape":"String", - "documentation":"

The allowed values of the option setting.

" - }, - "IsModifiable":{ - "shape":"Boolean", - "documentation":"

A Boolean value that, when true, indicates the option setting can be modified from the default.

" - }, - "IsCollection":{ - "shape":"Boolean", - "documentation":"

Indicates if the option setting is part of a collection.

" - } - }, - "documentation":"

Option settings are the actual settings being applied or configured for that option. It is used when you modify an option group or describe option groups. For example, the NATIVE_NETWORK_ENCRYPTION option has a setting called SQLNET.ENCRYPTION_SERVER that can have several different values.

" - }, - "OptionSettingConfigurationList":{ - "type":"list", - "member":{ - "shape":"OptionSetting", - "locationName":"OptionSetting" - } - }, - "OptionSettingsList":{ - "type":"list", - "member":{ - "shape":"OptionSetting", - "locationName":"OptionSetting" - } - }, - "OptionsDependedOn":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"OptionName" - } - }, - "OptionsList":{ - "type":"list", - "member":{ - "shape":"Option", - "locationName":"Option" - } - }, - "OrderableDBInstanceOption":{ - "type":"structure", - "members":{ - "Engine":{ - "shape":"String", - "documentation":"

The engine type of the orderable DB instance.

" - }, - "EngineVersion":{ - "shape":"String", - "documentation":"

The engine version of the orderable DB instance.

" - }, - "DBInstanceClass":{ - "shape":"String", - "documentation":"

The DB instance Class for the orderable DB instance

" - }, - "LicenseModel":{ - "shape":"String", - "documentation":"

The license model for the orderable DB instance.

" - }, - "AvailabilityZones":{ - "shape":"AvailabilityZoneList", - "documentation":"

A list of availability zones for the orderable DB instance.

" - }, - "MultiAZCapable":{ - "shape":"Boolean", - "documentation":"

Indicates whether this orderable DB instance is multi-AZ capable.

" - }, - "ReadReplicaCapable":{ - "shape":"Boolean", - "documentation":"

Indicates whether this orderable DB instance can have a Read Replica.

" - }, - "Vpc":{ - "shape":"Boolean", - "documentation":"

Indicates whether this is a VPC orderable DB instance.

" - }, - "SupportsStorageEncryption":{ - "shape":"Boolean", - "documentation":"

Indicates whether this orderable DB instance supports encrypted storage.

" - }, - "StorageType":{ - "shape":"String", - "documentation":"

The storage type for this orderable DB instance.

" - }, - "SupportsIops":{ - "shape":"Boolean", - "documentation":"

Indicates whether this orderable DB instance supports provisioned IOPS.

" - } - }, - "wrapper":true, - "documentation":"

Contains a list of available options for a DB instance

This data type is used as a response element in the DescribeOrderableDBInstanceOptions action.

" - }, - "OrderableDBInstanceOptionsList":{ - "type":"list", - "member":{ - "shape":"OrderableDBInstanceOption", - "locationName":"OrderableDBInstanceOption" - } - }, - "OrderableDBInstanceOptionsMessage":{ - "type":"structure", - "members":{ - "OrderableDBInstanceOptions":{ - "shape":"OrderableDBInstanceOptionsList", - "documentation":"

An OrderableDBInstanceOption structure containing information about orderable options for the DB instance.

" - }, - "Marker":{ - "shape":"String", - "documentation":"

An optional pagination token provided by a previous OrderableDBInstanceOptions request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords .

" - } - }, - "documentation":"

Contains the result of a successful invocation of the DescribeOrderableDBInstanceOptions action.

" - }, - "Parameter":{ - "type":"structure", - "members":{ - "ParameterName":{ - "shape":"String", - "documentation":"

Specifies the name of the parameter.

" - }, - "ParameterValue":{ - "shape":"String", - "documentation":"

Specifies the value of the parameter.

" - }, - "Description":{ - "shape":"String", - "documentation":"

Provides a description of the parameter.

" - }, - "Source":{ - "shape":"String", - "documentation":"

Indicates the source of the parameter value.

" - }, - "ApplyType":{ - "shape":"String", - "documentation":"

Specifies the engine specific parameters type.

" - }, - "DataType":{ - "shape":"String", - "documentation":"

Specifies the valid data type for the parameter.

" - }, - "AllowedValues":{ - "shape":"String", - "documentation":"

Specifies the valid range of values for the parameter.

" - }, - "IsModifiable":{ - "shape":"Boolean", - "documentation":"

Indicates whether (true) or not (false) the parameter can be modified. Some parameters have security or operational implications that prevent them from being changed.

" - }, - "MinimumEngineVersion":{ - "shape":"String", - "documentation":"

The earliest engine version to which the parameter can apply.

" - }, - "ApplyMethod":{ - "shape":"ApplyMethod", - "documentation":"

Indicates when to apply parameter updates.

" - } - }, - "documentation":"

This data type is used as a request parameter in the ModifyDBParameterGroup and ResetDBParameterGroup actions.

This data type is used as a response element in the DescribeEngineDefaultParameters and DescribeDBParameters actions.

" - }, - "ParametersList":{ - "type":"list", - "member":{ - "shape":"Parameter", - "locationName":"Parameter" - } - }, - "PendingMaintenanceAction":{ - "type":"structure", - "members":{ - "Action":{ - "shape":"String", - "documentation":"

The type of pending maintenance action that is available for the resource.

" - }, - "AutoAppliedAfterDate":{ - "shape":"TStamp", - "documentation":"

The date of the maintenance window when the action will be applied. The maintenance action will be applied to the resource during its first maintenance window after this date. If this date is specified, any next-maintenance opt-in requests are ignored.

" - }, - "ForcedApplyDate":{ - "shape":"TStamp", - "documentation":"

The date when the maintenance action will be automatically applied. The maintenance action will be applied to the resource on this date regardless of the maintenance window for the resource. If this date is specified, any immediate opt-in requests are ignored.

" - }, - "OptInStatus":{ - "shape":"String", - "documentation":"

Indicates the type of opt-in request that has been received for the resource.

" - }, - "CurrentApplyDate":{ - "shape":"TStamp", - "documentation":"

The effective date when the pending maintenance action will be applied to the resource. This takes into account opt-in requests received from the ApplyPendingMaintenanceAction API, the AutoAppliedAfterDate, and the ForcedApplyDate. This value is blank if an opt-in request has not been received and no value has been specified for the AutoAppliedAfterDate or ForcedApplyDate.

" - } - }, - "documentation":"

Provides information about a pending maintenance action for a resource.

" - }, - "PendingMaintenanceActionDetails":{ - "type":"list", - "member":{ - "shape":"PendingMaintenanceAction", - "locationName":"PendingMaintenanceAction" - } - }, - "PendingMaintenanceActions":{ - "type":"list", - "member":{ - "shape":"ResourcePendingMaintenanceActions", - "locationName":"ResourcePendingMaintenanceActions" - } - }, - "PendingMaintenanceActionsMessage":{ - "type":"structure", - "members":{ - "PendingMaintenanceActions":{ - "shape":"PendingMaintenanceActions", - "documentation":"

Provides a list of the pending maintenance actions for the resource.

" - }, - "Marker":{ - "shape":"String", - "documentation":"

An optional pagination token provided by a previous DescribePendingMaintenanceActions request. If this parameter is specified, the response includes only records beyond the marker, up to a number of records specified by MaxRecords .

" - } - }, - "documentation":"

Data returned from the DescribePendingMaintenanceActions action.

" - }, - "PendingModifiedValues":{ - "type":"structure", - "members":{ - "DBInstanceClass":{ - "shape":"String", - "documentation":"

Contains the new DBInstanceClass for the DB instance that will be applied or is in progress.

" - }, - "AllocatedStorage":{ - "shape":"IntegerOptional", - "documentation":"

Contains the new AllocatedStorage size for the DB instance that will be applied or is in progress.

" - }, - "MasterUserPassword":{ - "shape":"String", - "documentation":"

Contains the pending or in-progress change of the master credentials for the DB instance.

" - }, - "Port":{ - "shape":"IntegerOptional", - "documentation":"

Specifies the pending port for the DB instance.

" - }, - "BackupRetentionPeriod":{ - "shape":"IntegerOptional", - "documentation":"

Specifies the pending number of days for which automated backups are retained.

" - }, - "MultiAZ":{ - "shape":"BooleanOptional", - "documentation":"

Indicates that the Single-AZ DB instance is to change to a Multi-AZ deployment.

" - }, - "EngineVersion":{ - "shape":"String", - "documentation":"

Indicates the database engine version.

" - }, - "Iops":{ - "shape":"IntegerOptional", - "documentation":"

Specifies the new Provisioned IOPS value for the DB instance that will be applied or is being applied.

" - }, - "DBInstanceIdentifier":{ - "shape":"String", - "documentation":"

Contains the new DBInstanceIdentifier for the DB instance that will be applied or is in progress.

" - }, - "StorageType":{ - "shape":"String", - "documentation":"

Specifies the storage type to be associated with the DB instance.

" - } - }, - "documentation":"

This data type is used as a response element in the ModifyDBInstance action.

" - }, - "PointInTimeRestoreNotEnabledFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"PointInTimeRestoreNotEnabled", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

SourceDBInstanceIdentifier refers to a DB instance with BackupRetentionPeriod equal to 0.

" - }, - "PromoteReadReplicaMessage":{ - "type":"structure", - "required":["DBInstanceIdentifier"], - "members":{ - "DBInstanceIdentifier":{ - "shape":"String", - "documentation":"

The DB instance identifier. This value is stored as a lowercase string.

Constraints:

Example: mydbinstance

" - }, - "BackupRetentionPeriod":{ - "shape":"IntegerOptional", - "documentation":"

The number of days to retain automated backups. Setting this parameter to a positive number enables backups. Setting this parameter to 0 disables automated backups.

Default: 1

Constraints:

" - }, - "PreferredBackupWindow":{ - "shape":"String", - "documentation":"

The daily time range during which automated backups are created if automated backups are enabled, using the BackupRetentionPeriod parameter.

Default: A 30-minute window selected at random from an 8-hour block of time per region. See the Amazon RDS User Guide for the time blocks for each region from which the default backup windows are assigned.

Constraints: Must be in the format hh24:mi-hh24:mi. Times should be Universal Time Coordinated (UTC). Must not conflict with the preferred maintenance window. Must be at least 30 minutes.

" - } - }, - "documentation":"

" - }, - "ProvisionedIopsNotAvailableInAZFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"ProvisionedIopsNotAvailableInAZFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Provisioned IOPS not available in the specified Availability Zone.

" - }, - "PurchaseReservedDBInstancesOfferingMessage":{ - "type":"structure", - "required":["ReservedDBInstancesOfferingId"], - "members":{ - "ReservedDBInstancesOfferingId":{ - "shape":"String", - "documentation":"

The ID of the Reserved DB instance offering to purchase.

Example: 438012d3-4052-4cc7-b2e3-8d3372e0e706

" - }, - "ReservedDBInstanceId":{ - "shape":"String", - "documentation":"

Customer-specified identifier to track this reservation.

Example: myreservationID

" - }, - "DBInstanceCount":{ - "shape":"IntegerOptional", - "documentation":"

The number of instances to reserve.

Default: 1

" - }, - "Tags":{"shape":"TagList"} - }, - "documentation":"

" - }, - "ReadReplicaDBInstanceIdentifierList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"ReadReplicaDBInstanceIdentifier" - } - }, - "RebootDBInstanceMessage":{ - "type":"structure", - "required":["DBInstanceIdentifier"], - "members":{ - "DBInstanceIdentifier":{ - "shape":"String", - "documentation":"

The DB instance identifier. This parameter is stored as a lowercase string.

Constraints:

" - }, - "ForceFailover":{ - "shape":"BooleanOptional", - "documentation":"

When true, the reboot will be conducted through a MultiAZ failover.

Constraint: You cannot specify true if the instance is not configured for MultiAZ.

" - } - }, - "documentation":"

" - }, - "RecurringCharge":{ - "type":"structure", - "members":{ - "RecurringChargeAmount":{ - "shape":"Double", - "documentation":"

The amount of the recurring charge.

" - }, - "RecurringChargeFrequency":{ - "shape":"String", - "documentation":"

The frequency of the recurring charge.

" - } - }, - "wrapper":true, - "documentation":"

This data type is used as a response element in the DescribeReservedDBInstances and DescribeReservedDBInstancesOfferings actions.

" - }, - "RecurringChargeList":{ - "type":"list", - "member":{ - "shape":"RecurringCharge", - "locationName":"RecurringCharge" - } - }, - "RemoveSourceIdentifierFromSubscriptionMessage":{ - "type":"structure", - "required":[ - "SubscriptionName", - "SourceIdentifier" - ], - "members":{ - "SubscriptionName":{ - "shape":"String", - "documentation":"

The name of the RDS event notification subscription you want to remove a source identifier from.

" - }, - "SourceIdentifier":{ - "shape":"String", - "documentation":"

The source identifier to be removed from the subscription, such as the DB instance identifier for a DB instance or the name of a security group.

" - } - }, - "documentation":"

" - }, - "RemoveTagsFromResourceMessage":{ - "type":"structure", - "required":[ - "ResourceName", - "TagKeys" - ], - "members":{ - "ResourceName":{ - "shape":"String", - "documentation":"

The Amazon RDS resource the tags will be removed from. This value is an Amazon Resource Name (ARN). For information about creating an ARN, see Constructing an RDS Amazon Resource Name (ARN).

" - }, - "TagKeys":{ - "shape":"KeyList", - "documentation":"

The tag key (name) of the tag to be removed.

" - } - }, - "documentation":"

" - }, - "ReservedDBInstance":{ - "type":"structure", - "members":{ - "ReservedDBInstanceId":{ - "shape":"String", - "documentation":"

The unique identifier for the reservation.

" - }, - "ReservedDBInstancesOfferingId":{ - "shape":"String", - "documentation":"

The offering identifier.

" - }, - "DBInstanceClass":{ - "shape":"String", - "documentation":"

The DB instance class for the reserved DB instance.

" - }, - "StartTime":{ - "shape":"TStamp", - "documentation":"

The time the reservation started.

" - }, - "Duration":{ - "shape":"Integer", - "documentation":"

The duration of the reservation in seconds.

" - }, - "FixedPrice":{ - "shape":"Double", - "documentation":"

The fixed price charged for this reserved DB instance.

" - }, - "UsagePrice":{ - "shape":"Double", - "documentation":"

The hourly price charged for this reserved DB instance.

" - }, - "CurrencyCode":{ - "shape":"String", - "documentation":"

The currency code for the reserved DB instance.

" - }, - "DBInstanceCount":{ - "shape":"Integer", - "documentation":"

The number of reserved DB instances.

" - }, - "ProductDescription":{ - "shape":"String", - "documentation":"

The description of the reserved DB instance.

" - }, - "OfferingType":{ - "shape":"String", - "documentation":"

The offering type of this reserved DB instance.

" - }, - "MultiAZ":{ - "shape":"Boolean", - "documentation":"

Indicates if the reservation applies to Multi-AZ deployments.

" - }, - "State":{ - "shape":"String", - "documentation":"

The state of the reserved DB instance.

" - }, - "RecurringCharges":{ - "shape":"RecurringChargeList", - "documentation":"

The recurring price charged to run this reserved DB instance.

" - } - }, - "wrapper":true, - "documentation":"

This data type is used as a response element in the DescribeReservedDBInstances and PurchaseReservedDBInstancesOffering actions.

" - }, - "ReservedDBInstanceAlreadyExistsFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"ReservedDBInstanceAlreadyExists", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

User already has a reservation with the given identifier.

" - }, - "ReservedDBInstanceList":{ - "type":"list", - "member":{ - "shape":"ReservedDBInstance", - "locationName":"ReservedDBInstance" - } - }, - "ReservedDBInstanceMessage":{ - "type":"structure", - "members":{ - "Marker":{ - "shape":"String", - "documentation":"

An optional pagination token provided by a previous request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords.

" - }, - "ReservedDBInstances":{ - "shape":"ReservedDBInstanceList", - "documentation":"

A list of reserved DB instances.

" - } - }, - "documentation":"

Contains the result of a successful invocation of the DescribeReservedDBInstances action.

" - }, - "ReservedDBInstanceNotFoundFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"ReservedDBInstanceNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified reserved DB Instance not found.

" - }, - "ReservedDBInstanceQuotaExceededFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"ReservedDBInstanceQuotaExceeded", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Request would exceed the user's DB Instance quota.

" - }, - "ReservedDBInstancesOffering":{ - "type":"structure", - "members":{ - "ReservedDBInstancesOfferingId":{ - "shape":"String", - "documentation":"

The offering identifier.

" - }, - "DBInstanceClass":{ - "shape":"String", - "documentation":"

The DB instance class for the reserved DB instance.

" - }, - "Duration":{ - "shape":"Integer", - "documentation":"

The duration of the offering in seconds.

" - }, - "FixedPrice":{ - "shape":"Double", - "documentation":"

The fixed price charged for this offering.

" - }, - "UsagePrice":{ - "shape":"Double", - "documentation":"

The hourly price charged for this offering.

" - }, - "CurrencyCode":{ - "shape":"String", - "documentation":"

The currency code for the reserved DB instance offering.

" - }, - "ProductDescription":{ - "shape":"String", - "documentation":"

The database engine used by the offering.

" - }, - "OfferingType":{ - "shape":"String", - "documentation":"

The offering type.

" - }, - "MultiAZ":{ - "shape":"Boolean", - "documentation":"

Indicates if the offering applies to Multi-AZ deployments.

" - }, - "RecurringCharges":{ - "shape":"RecurringChargeList", - "documentation":"

The recurring price charged to run this reserved DB instance.

" - } - }, - "wrapper":true, - "documentation":"

This data type is used as a response element in the DescribeReservedDBInstancesOfferings action.

" - }, - "ReservedDBInstancesOfferingList":{ - "type":"list", - "member":{ - "shape":"ReservedDBInstancesOffering", - "locationName":"ReservedDBInstancesOffering" - } - }, - "ReservedDBInstancesOfferingMessage":{ - "type":"structure", - "members":{ - "Marker":{ - "shape":"String", - "documentation":"

An optional pagination token provided by a previous request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords.

" - }, - "ReservedDBInstancesOfferings":{ - "shape":"ReservedDBInstancesOfferingList", - "documentation":"

A list of reserved DB instance offerings.

" - } - }, - "documentation":"

Contains the result of a successful invocation of the DescribeReservedDBInstancesOfferings action.

" - }, - "ReservedDBInstancesOfferingNotFoundFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"ReservedDBInstancesOfferingNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

Specified offering does not exist.

" - }, - "ResetDBParameterGroupMessage":{ - "type":"structure", - "required":["DBParameterGroupName"], - "members":{ - "DBParameterGroupName":{ - "shape":"String", - "documentation":"

The name of the DB parameter group.

Constraints:

" - }, - "ResetAllParameters":{ - "shape":"Boolean", - "documentation":"

Specifies whether (true) or not (false) to reset all parameters in the DB parameter group to default values.

Default: true

" - }, - "Parameters":{ - "shape":"ParametersList", - "documentation":"

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. A maximum of 20 parameters may be modified in a single request.

MySQL

Valid Values (for Apply method): immediate | pending-reboot

You can use the immediate value with dynamic parameters only. You can use the pending-reboot value for both dynamic and static parameters, and changes are applied when DB instance reboots.

Oracle

Valid Values (for Apply method): pending-reboot

" - } - }, - "documentation":"

" - }, - "ResourceNotFoundFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"ResourceNotFoundFault", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified Resource ID was not found.

" - }, - "ResourcePendingMaintenanceActions":{ - "type":"structure", - "members":{ - "ResourceIdentifier":{ - "shape":"String", - "documentation":"

The ARN of this resource that has pending maintenance actions.

" - }, - "PendingMaintenanceActionDetails":{ - "shape":"PendingMaintenanceActionDetails", - "documentation":"

Provides details about the pending maintenance actions for the resource.

" - } - }, - "wrapper":true, - "documentation":"

Describes the pending maintenance actions for a resource.

" - }, - "RestoreDBInstanceFromDBSnapshotMessage":{ - "type":"structure", - "required":[ - "DBInstanceIdentifier", - "DBSnapshotIdentifier" - ], - "members":{ - "DBInstanceIdentifier":{ - "shape":"String", - "documentation":"

Name of the DB instance to create from the DB snapshot. This parameter isn't case sensitive.

Constraints:

Example: my-snapshot-id

" - }, - "DBSnapshotIdentifier":{ - "shape":"String", - "documentation":"

The identifier for the DB snapshot to restore from.

Constraints:

" - }, - "DBInstanceClass":{ - "shape":"String", - "documentation":"

The compute and memory capacity of the Amazon RDS DB instance.

Valid Values: db.t1.micro | db.m1.small | db.m1.medium | db.m1.large | db.m1.xlarge | db.m2.2xlarge | db.m2.4xlarge | db.m3.medium | db.m3.large | db.m3.xlarge | db.m3.2xlarge | db.r3.large | db.r3.xlarge | db.r3.2xlarge | db.r3.4xlarge | db.r3.8xlarge | db.t2.micro | db.t2.small | db.t2.medium

" - }, - "Port":{ - "shape":"IntegerOptional", - "documentation":"

The port number on which the database accepts connections.

Default: The same port as the original DB instance

Constraints: Value must be 1150-65535

" - }, - "AvailabilityZone":{ - "shape":"String", - "documentation":"

The EC2 Availability Zone that the database instance will be created in.

Default: A random, system-chosen Availability Zone.

Constraint: You cannot specify the AvailabilityZone parameter if the MultiAZ parameter is set to true.

Example: us-east-1a

" - }, - "DBSubnetGroupName":{ - "shape":"String", - "documentation":"

The DB subnet group name to use for the new instance.

" - }, - "MultiAZ":{ - "shape":"BooleanOptional", - "documentation":"

Specifies if the DB instance is a Multi-AZ deployment.

Constraint: You cannot specify the AvailabilityZone parameter if the MultiAZ parameter is set to true.

" - }, - "PubliclyAccessible":{ - "shape":"BooleanOptional", - "documentation":"

Specifies the accessibility options for the DB instance. A value of true specifies an Internet-facing instance with a publicly resolvable DNS name, which resolves to a public IP address. A value of false specifies an internal instance with a DNS name that resolves to a private IP address.

Default: The default behavior varies depending on whether a VPC has been requested or not. The following list shows the default behavior in each case.

If no DB subnet group has been specified as part of the request and the PubliclyAccessible value has not been set, the DB instance will be publicly accessible. If a specific DB subnet group has been specified as part of the request and the PubliclyAccessible value has not been set, the DB instance will be private.

" - }, - "AutoMinorVersionUpgrade":{ - "shape":"BooleanOptional", - "documentation":"

Indicates that minor version upgrades will be applied automatically to the DB instance during the maintenance window.

" - }, - "LicenseModel":{ - "shape":"String", - "documentation":"

License model information for the restored DB instance.

Default: Same as source.

Valid values: license-included | bring-your-own-license | general-public-license

" - }, - "DBName":{ - "shape":"String", - "documentation":"

The database name for the restored DB instance.

This parameter doesn't apply to the MySQL engine.

" - }, - "Engine":{ - "shape":"String", - "documentation":"

The database engine to use for the new instance.

Default: The same as source

Constraint: Must be compatible with the engine of the source

Valid Values: MySQL | oracle-se1 | oracle-se | oracle-ee | sqlserver-ee | sqlserver-se | sqlserver-ex | sqlserver-web | postgres

" - }, - "Iops":{ - "shape":"IntegerOptional", - "documentation":"

Specifies the amount of provisioned IOPS for the DB instance, expressed in I/O operations per second. If this parameter is not specified, the IOPS value will be taken from the backup. If this parameter is set to 0, the new instance will be converted to a non-PIOPS instance, which will take additional time, though your DB instance will be available for connections before the conversion starts.

Constraints: Must be an integer greater than 1000.

SQL Server

Setting the IOPS value for the SQL Server database engine is not supported.

" - }, - "OptionGroupName":{ - "shape":"String", - "documentation":"

The name of the option group to be used for the restored DB instance.

Permanent options, such as the TDE option for Oracle Advanced Security TDE, cannot be removed from an option group, and that option group cannot be removed from a DB instance once it is associated with a DB instance

" - }, - "Tags":{"shape":"TagList"}, - "StorageType":{ - "shape":"String", - "documentation":"

Specifies the storage type to be associated with the DB instance.

Valid values: standard | gp2 | io1

If you specify io1, you must also include a value for the Iops parameter.

Default: io1 if the Iops parameter is specified; otherwise standard

" - }, - "TdeCredentialArn":{ - "shape":"String", - "documentation":"

The ARN from the Key Store with which to associate the instance for TDE encryption.

" - }, - "TdeCredentialPassword":{ - "shape":"String", - "documentation":"

The password for the given ARN from the Key Store in order to access the device.

" - } - }, - "documentation":"

" - }, - "RestoreDBInstanceToPointInTimeMessage":{ - "type":"structure", - "required":[ - "SourceDBInstanceIdentifier", - "TargetDBInstanceIdentifier" - ], - "members":{ - "SourceDBInstanceIdentifier":{ - "shape":"String", - "documentation":"

The identifier of the source DB instance from which to restore.

Constraints:

" - }, - "TargetDBInstanceIdentifier":{ - "shape":"String", - "documentation":"

The name of the new database instance to be created.

Constraints:

" - }, - "RestoreTime":{ - "shape":"TStamp", - "documentation":"

The date and time to restore from.

Valid Values: Value must be a UTC time

Constraints:

Example: 2009-09-07T23:45:00Z

" - }, - "UseLatestRestorableTime":{ - "shape":"Boolean", - "documentation":"

Specifies whether (true) or not (false) the DB instance is restored from the latest backup time.

Default: false

Constraints: Cannot be specified if RestoreTime parameter is provided.

" - }, - "DBInstanceClass":{ - "shape":"String", - "documentation":"

The compute and memory capacity of the Amazon RDS DB instance.

Valid Values: db.t1.micro | db.m1.small | db.m1.medium | db.m1.large | db.m1.xlarge | db.m2.2xlarge | db.m2.4xlarge | db.m3.medium | db.m3.large | db.m3.xlarge | db.m3.2xlarge | db.r3.large | db.r3.xlarge | db.r3.2xlarge | db.r3.4xlarge | db.r3.8xlarge | db.t2.micro | db.t2.small | db.t2.medium

Default: The same DBInstanceClass as the original DB instance.

" - }, - "Port":{ - "shape":"IntegerOptional", - "documentation":"

The port number on which the database accepts connections.

Constraints: Value must be 1150-65535

Default: The same port as the original DB instance.

" - }, - "AvailabilityZone":{ - "shape":"String", - "documentation":"

The EC2 Availability Zone that the database instance will be created in.

Default: A random, system-chosen Availability Zone.

Constraint: You cannot specify the AvailabilityZone parameter if the MultiAZ parameter is set to true.

Example: us-east-1a

" - }, - "DBSubnetGroupName":{ - "shape":"String", - "documentation":"

The DB subnet group name to use for the new instance.

" - }, - "MultiAZ":{ - "shape":"BooleanOptional", - "documentation":"

Specifies if the DB instance is a Multi-AZ deployment.

Constraint: You cannot specify the AvailabilityZone parameter if the MultiAZ parameter is set to true.

" - }, - "PubliclyAccessible":{ - "shape":"BooleanOptional", - "documentation":"

Specifies the accessibility options for the DB instance. A value of true specifies an Internet-facing instance with a publicly resolvable DNS name, which resolves to a public IP address. A value of false specifies an internal instance with a DNS name that resolves to a private IP address.

Default: The default behavior varies depending on whether a VPC has been requested or not. The following list shows the default behavior in each case.

If no DB subnet group has been specified as part of the request and the PubliclyAccessible value has not been set, the DB instance will be publicly accessible. If a specific DB subnet group has been specified as part of the request and the PubliclyAccessible value has not been set, the DB instance will be private.

" - }, - "AutoMinorVersionUpgrade":{ - "shape":"BooleanOptional", - "documentation":"

Indicates that minor version upgrades will be applied automatically to the DB instance during the maintenance window.

" - }, - "LicenseModel":{ - "shape":"String", - "documentation":"

License model information for the restored DB instance.

Default: Same as source.

Valid values: license-included | bring-your-own-license | general-public-license

" - }, - "DBName":{ - "shape":"String", - "documentation":"

The database name for the restored DB instance.

This parameter is not used for the MySQL engine.

" - }, - "Engine":{ - "shape":"String", - "documentation":"

The database engine to use for the new instance.

Default: The same as source

Constraint: Must be compatible with the engine of the source

Valid Values: MySQL | oracle-se1 | oracle-se | oracle-ee | sqlserver-ee | sqlserver-se | sqlserver-ex | sqlserver-web | postgres

" - }, - "Iops":{ - "shape":"IntegerOptional", - "documentation":"

The amount of Provisioned IOPS (input/output operations per second) to be initially allocated for the DB instance.

Constraints: Must be an integer greater than 1000.

SQL Server

Setting the IOPS value for the SQL Server database engine is not supported.

" - }, - "OptionGroupName":{ - "shape":"String", - "documentation":"

The name of the option group to be used for the restored DB instance.

Permanent options, such as the TDE option for Oracle Advanced Security TDE, cannot be removed from an option group, and that option group cannot be removed from a DB instance once it is associated with a DB instance

" - }, - "Tags":{"shape":"TagList"}, - "StorageType":{ - "shape":"String", - "documentation":"

Specifies the storage type to be associated with the DB instance.

Valid values: standard | gp2 | io1

If you specify io1, you must also include a value for the Iops parameter.

Default: io1 if the Iops parameter is specified; otherwise standard

" - }, - "TdeCredentialArn":{ - "shape":"String", - "documentation":"

The ARN from the Key Store with which to associate the instance for TDE encryption.

" - }, - "TdeCredentialPassword":{ - "shape":"String", - "documentation":"

The password for the given ARN from the Key Store in order to access the device.

" - } - }, - "documentation":"

" - }, - "RevokeDBSecurityGroupIngressMessage":{ - "type":"structure", - "required":["DBSecurityGroupName"], - "members":{ - "DBSecurityGroupName":{ - "shape":"String", - "documentation":"

The name of the DB security group to revoke ingress from.

" - }, - "CIDRIP":{ - "shape":"String", - "documentation":"

The IP range to revoke access from. Must be a valid CIDR range. If CIDRIP is specified, EC2SecurityGroupName, EC2SecurityGroupId and EC2SecurityGroupOwnerId cannot be provided.

" - }, - "EC2SecurityGroupName":{ - "shape":"String", - "documentation":"

The name of the EC2 security group to revoke access from. For VPC DB security groups, EC2SecurityGroupId must be provided. Otherwise, EC2SecurityGroupOwnerId and either EC2SecurityGroupName or EC2SecurityGroupId must be provided.

" - }, - "EC2SecurityGroupId":{ - "shape":"String", - "documentation":"

The id of the EC2 security group to revoke access from. For VPC DB security groups, EC2SecurityGroupId must be provided. Otherwise, EC2SecurityGroupOwnerId and either EC2SecurityGroupName or EC2SecurityGroupId must be provided.

" - }, - "EC2SecurityGroupOwnerId":{ - "shape":"String", - "documentation":"

The 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.

" - } - }, - "documentation":"

" - }, - "SNSInvalidTopicFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"SNSInvalidTopic", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

SNS has responded that there is a problem with the SND topic specified.

" - }, - "SNSNoAuthorizationFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"SNSNoAuthorization", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

You do not have permission to publish to the SNS topic ARN.

" - }, - "SNSTopicArnNotFoundFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"SNSTopicArnNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The SNS topic ARN does not exist.

" - }, - "SnapshotQuotaExceededFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"SnapshotQuotaExceeded", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Request would result in user exceeding the allowed number of DB snapshots.

" - }, - "SourceIdsList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"SourceId" - } - }, - "SourceNotFoundFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"SourceNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The requested source could not be found.

" - }, - "SourceType":{ - "type":"string", - "enum":[ - "db-instance", - "db-parameter-group", - "db-security-group", - "db-snapshot" - ] - }, - "StorageQuotaExceededFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"StorageQuotaExceeded", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Request would result in user exceeding the allowed amount of storage available across all DB instances.

" - }, - "StorageTypeNotSupportedFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"StorageTypeNotSupported", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

StorageType specified cannot be associated with the DB Instance.

" - }, - "String":{"type":"string"}, - "Subnet":{ - "type":"structure", - "members":{ - "SubnetIdentifier":{ - "shape":"String", - "documentation":"

Specifies the identifier of the subnet.

" - }, - "SubnetAvailabilityZone":{"shape":"AvailabilityZone"}, - "SubnetStatus":{ - "shape":"String", - "documentation":"

Specifies the status of the subnet.

" - } - }, - "documentation":"

This data type is used as a response element in the DescribeDBSubnetGroups action.

" - }, - "SubnetAlreadyInUse":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"SubnetAlreadyInUse", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The DB subnet is already in use in the Availability Zone.

" - }, - "SubnetIdentifierList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"SubnetIdentifier" - } - }, - "SubnetList":{ - "type":"list", - "member":{ - "shape":"Subnet", - "locationName":"Subnet" - } - }, - "SubscriptionAlreadyExistFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"SubscriptionAlreadyExist", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The supplied subscription name already exists.

" - }, - "SubscriptionCategoryNotFoundFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"SubscriptionCategoryNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The supplied category does not exist.

" - }, - "SubscriptionNotFoundFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"SubscriptionNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The subscription name does not exist.

" - }, - "SupportedCharacterSetsList":{ - "type":"list", - "member":{ - "shape":"CharacterSet", - "locationName":"CharacterSet" - } - }, - "TStamp":{"type":"timestamp"}, - "Tag":{ - "type":"structure", - "members":{ - "Key":{ - "shape":"String", - "documentation":"

A key is the required name of the tag. The string value can be from 1 to 128 Unicode characters in length and cannot be prefixed with \"aws:\" or \"rds:\". The string may only contain only the set of Unicode letters, digits, white-space, '_', '.', '/', '=', '+', '-' (Java regex: \"^([\\\\p{L}\\\\p{Z}\\\\p{N}_.:/=+\\\\-]*)$\").

" - }, - "Value":{ - "shape":"String", - "documentation":"

A value is the optional value of the tag. The string value can be from 1 to 256 Unicode characters in length and cannot be prefixed with \"aws:\" or \"rds:\". The string may only contain only the set of Unicode letters, digits, white-space, '_', '.', '/', '=', '+', '-' (Java regex: \"^([\\\\p{L}\\\\p{Z}\\\\p{N}_.:/=+\\\\-]*)$\").

" - } - }, - "documentation":"

Metadata assigned to an Amazon RDS resource consisting of a key-value pair.

" - }, - "TagList":{ - "type":"list", - "member":{ - "shape":"Tag", - "locationName":"Tag" - }, - "documentation":"

A list of tags.

" - }, - "TagListMessage":{ - "type":"structure", - "members":{ - "TagList":{ - "shape":"TagList", - "documentation":"

List of tags returned by the ListTagsForResource operation.

" - } - }, - "documentation":"

" - }, - "VpcSecurityGroupIdList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"VpcSecurityGroupId" - } - }, - "VpcSecurityGroupMembership":{ - "type":"structure", - "members":{ - "VpcSecurityGroupId":{ - "shape":"String", - "documentation":"

The name of the VPC security group.

" - }, - "Status":{ - "shape":"String", - "documentation":"

The status of the VPC security group.

" - } - }, - "documentation":"

This data type is used as a response element for queries on VPC security group membership.

" - }, - "VpcSecurityGroupMembershipList":{ - "type":"list", - "member":{ - "shape":"VpcSecurityGroupMembership", - "locationName":"VpcSecurityGroupMembership" - } - }, - "AddSourceIdentifierToSubscriptionResult":{ - "type":"structure", - "members":{ - "EventSubscription":{"shape":"EventSubscription"} - } - }, - "ApplyPendingMaintenanceActionResult":{ - "type":"structure", - "members":{ - "ResourcePendingMaintenanceActions":{"shape":"ResourcePendingMaintenanceActions"} - } - }, - "AuthorizeDBSecurityGroupIngressResult":{ - "type":"structure", - "members":{ - "DBSecurityGroup":{"shape":"DBSecurityGroup"} - } - }, - "CopyDBParameterGroupResult":{ - "type":"structure", - "members":{ - "DBParameterGroup":{"shape":"DBParameterGroup"} - } - }, - "CopyDBSnapshotResult":{ - "type":"structure", - "members":{ - "DBSnapshot":{"shape":"DBSnapshot"} - } - }, - "CopyOptionGroupResult":{ - "type":"structure", - "members":{ - "OptionGroup":{"shape":"OptionGroup"} - } - }, - "CreateDBInstanceResult":{ - "type":"structure", - "members":{ - "DBInstance":{"shape":"DBInstance"} - } - }, - "CreateDBInstanceReadReplicaResult":{ - "type":"structure", - "members":{ - "DBInstance":{"shape":"DBInstance"} - } - }, - "CreateDBParameterGroupResult":{ - "type":"structure", - "members":{ - "DBParameterGroup":{"shape":"DBParameterGroup"} - } - }, - "CreateDBSecurityGroupResult":{ - "type":"structure", - "members":{ - "DBSecurityGroup":{"shape":"DBSecurityGroup"} - } - }, - "CreateDBSnapshotResult":{ - "type":"structure", - "members":{ - "DBSnapshot":{"shape":"DBSnapshot"} - } - }, - "CreateDBSubnetGroupResult":{ - "type":"structure", - "members":{ - "DBSubnetGroup":{"shape":"DBSubnetGroup"} - } - }, - "CreateEventSubscriptionResult":{ - "type":"structure", - "members":{ - "EventSubscription":{"shape":"EventSubscription"} - } - }, - "CreateOptionGroupResult":{ - "type":"structure", - "members":{ - "OptionGroup":{"shape":"OptionGroup"} - } - }, - "DeleteDBInstanceResult":{ - "type":"structure", - "members":{ - "DBInstance":{"shape":"DBInstance"} - } - }, - "DeleteDBSnapshotResult":{ - "type":"structure", - "members":{ - "DBSnapshot":{"shape":"DBSnapshot"} - } - }, - "DeleteEventSubscriptionResult":{ - "type":"structure", - "members":{ - "EventSubscription":{"shape":"EventSubscription"} - } - }, - "DescribeEngineDefaultParametersResult":{ - "type":"structure", - "members":{ - "EngineDefaults":{"shape":"EngineDefaults"} - } - }, - "ModifyDBInstanceResult":{ - "type":"structure", - "members":{ - "DBInstance":{"shape":"DBInstance"} - } - }, - "ModifyDBSubnetGroupResult":{ - "type":"structure", - "members":{ - "DBSubnetGroup":{"shape":"DBSubnetGroup"} - } - }, - "ModifyEventSubscriptionResult":{ - "type":"structure", - "members":{ - "EventSubscription":{"shape":"EventSubscription"} - } - }, - "ModifyOptionGroupResult":{ - "type":"structure", - "members":{ - "OptionGroup":{"shape":"OptionGroup"} - } - }, - "PromoteReadReplicaResult":{ - "type":"structure", - "members":{ - "DBInstance":{"shape":"DBInstance"} - } - }, - "PurchaseReservedDBInstancesOfferingResult":{ - "type":"structure", - "members":{ - "ReservedDBInstance":{"shape":"ReservedDBInstance"} - } - }, - "RebootDBInstanceResult":{ - "type":"structure", - "members":{ - "DBInstance":{"shape":"DBInstance"} - } - }, - "RemoveSourceIdentifierFromSubscriptionResult":{ - "type":"structure", - "members":{ - "EventSubscription":{"shape":"EventSubscription"} - } - }, - "RestoreDBInstanceFromDBSnapshotResult":{ - "type":"structure", - "members":{ - "DBInstance":{"shape":"DBInstance"} - } - }, - "RestoreDBInstanceToPointInTimeResult":{ - "type":"structure", - "members":{ - "DBInstance":{"shape":"DBInstance"} - } - }, - "RevokeDBSecurityGroupIngressResult":{ - "type":"structure", - "members":{ - "DBSecurityGroup":{"shape":"DBSecurityGroup"} - } - } - } -} diff --git a/src/github.com/getlantern/aws-sdk-go/apis/rds/2014-10-31.paginators.json b/src/github.com/getlantern/aws-sdk-go/apis/rds/2014-10-31.paginators.json deleted file mode 100644 index 76c4f3a119..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/apis/rds/2014-10-31.paginators.json +++ /dev/null @@ -1,107 +0,0 @@ -{ - "pagination": { - "DescribeDBEngineVersions": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "DBEngineVersions" - }, - "DescribeDBInstances": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "DBInstances" - }, - "DescribeDBLogFiles": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "DescribeDBLogFiles" - }, - "DescribeDBParameterGroups": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "DBParameterGroups" - }, - "DescribeDBParameters": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "Parameters" - }, - "DescribeDBSecurityGroups": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "DBSecurityGroups" - }, - "DescribeDBSnapshots": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "DBSnapshots" - }, - "DescribeDBSubnetGroups": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "DBSubnetGroups" - }, - "DescribeEngineDefaultParameters": { - "input_token": "Marker", - "output_token": "EngineDefaults.Marker", - "limit_key": "MaxRecords", - "result_key": "EngineDefaults.Parameters" - }, - "DescribeEventSubscriptions": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "EventSubscriptionsList" - }, - "DescribeEvents": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "Events" - }, - "DescribeOptionGroupOptions": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "OptionGroupOptions" - }, - "DescribeOptionGroups": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "OptionGroupsList" - }, - "DescribeOrderableDBInstanceOptions": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "OrderableDBInstanceOptions" - }, - "DescribeReservedDBInstances": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "ReservedDBInstances" - }, - "DescribeReservedDBInstancesOfferings": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "ReservedDBInstancesOfferings" - }, - "DownloadDBLogFilePortion": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "NumberOfLines", - "more_results": "AdditionalDataPending", - "result_key": "LogFileData" - } - } -} diff --git a/src/github.com/getlantern/aws-sdk-go/apis/rds/2014-10-31.waiters.json b/src/github.com/getlantern/aws-sdk-go/apis/rds/2014-10-31.waiters.json deleted file mode 100644 index b01500797d..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/apis/rds/2014-10-31.waiters.json +++ /dev/null @@ -1,97 +0,0 @@ -{ - "version": 2, - "waiters": { - "DBInstanceAvailable": { - "delay": 30, - "operation": "DescribeDBInstances", - "maxAttempts": 60, - "acceptors": [ - { - "expected": "available", - "matcher": "pathAll", - "state": "success", - "argument": "DBInstances[].DBInstanceStatus" - }, - { - "expected": "deleted", - "matcher": "pathAny", - "state": "failure", - "argument": "DBInstances[].DBInstanceStatus" - }, - { - "expected": "deleting", - "matcher": "pathAny", - "state": "failure", - "argument": "DBInstances[].DBInstanceStatus" - }, - { - "expected": "failed", - "matcher": "pathAny", - "state": "failure", - "argument": "DBInstances[].DBInstanceStatus" - }, - { - "expected": "incompatible-restore", - "matcher": "pathAny", - "state": "failure", - "argument": "DBInstances[].DBInstanceStatus" - }, - { - "expected": "incompatible-parameters", - "matcher": "pathAny", - "state": "failure", - "argument": "DBInstances[].DBInstanceStatus" - }, - { - "expected": "incompatible-parameters", - "matcher": "pathAny", - "state": "failure", - "argument": "DBInstances[].DBInstanceStatus" - }, - { - "expected": "incompatible-restore", - "matcher": "pathAny", - "state": "failure", - "argument": "DBInstances[].DBInstanceStatus" - } - ] - }, - "DBInstanceDeleted": { - "delay": 30, - "operation": "DescribeDBInstances", - "maxAttempts": 60, - "acceptors": [ - { - "expected": "deleted", - "matcher": "pathAll", - "state": "success", - "argument": "DBInstances[].DBInstanceStatus" - }, - { - "expected": "creating", - "matcher": "pathAny", - "state": "failure", - "argument": "DBInstances[].DBInstanceStatus" - }, - { - "expected": "modifying", - "matcher": "pathAny", - "state": "failure", - "argument": "DBInstances[].DBInstanceStatus" - }, - { - "expected": "rebooting", - "matcher": "pathAny", - "state": "failure", - "argument": "DBInstances[].DBInstanceStatus" - }, - { - "expected": "resetting-master-credentials", - "matcher": "pathAny", - "state": "failure", - "argument": "DBInstances[].DBInstanceStatus" - } - ] - } - } -} diff --git a/src/github.com/getlantern/aws-sdk-go/apis/redshift/2012-12-01.normal.json b/src/github.com/getlantern/aws-sdk-go/apis/redshift/2012-12-01.normal.json deleted file mode 100644 index a6f1d867f2..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/apis/redshift/2012-12-01.normal.json +++ /dev/null @@ -1,6895 +0,0 @@ -{ - "metadata":{ - "apiVersion":"2012-12-01", - "endpointPrefix":"redshift", - "serviceFullName":"Amazon Redshift", - "signatureVersion":"v4", - "xmlNamespace":"http://redshift.amazonaws.com/doc/2012-12-01/", - "protocol":"query" - }, - "documentation":"Amazon Redshift Overview

This is an interface reference for Amazon Redshift. It contains documentation for one of the programming or command line interfaces you can use to manage Amazon Redshift clusters. Note that Amazon Redshift is asynchronous, which means that some interfaces may require techniques, such as polling or asynchronous callback handlers, to determine when a command has been applied. In this reference, the parameter descriptions indicate whether a change is applied immediately, on the next instance reboot, or during the next maintenance window. For a summary of the Amazon Redshift cluster management interfaces, go to Using the Amazon Redshift Management Interfaces .

Amazon Redshift manages all the work of setting up, operating, and scaling a data warehouse: provisioning capacity, monitoring and backing up the cluster, and applying patches and upgrades to the Amazon Redshift engine. You can focus on using your data to acquire new insights for your business and customers.

If you are a first-time user of Amazon Redshift, we recommend that you begin by reading the The Amazon Redshift Getting Started Guide

If you are a database developer, the Amazon Redshift Database Developer Guide explains how to design, build, query, and maintain the databases that make up your data warehouse.

", - "operations":{ - "AuthorizeClusterSecurityGroupIngress":{ - "name":"AuthorizeClusterSecurityGroupIngress", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"AuthorizeClusterSecurityGroupIngressMessage", - "documentation":"

???

" - }, - "output":{ - "shape":"AuthorizeClusterSecurityGroupIngressResult", - "wrapper":true, - "documentation":"

Describes a security group.

", - "resultWrapper":"AuthorizeClusterSecurityGroupIngressResult" - }, - "errors":[ - { - "shape":"ClusterSecurityGroupNotFoundFault", - "error":{ - "code":"ClusterSecurityGroupNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The cluster security group name does not refer to an existing cluster security group.

" - }, - { - "shape":"InvalidClusterSecurityGroupStateFault", - "error":{ - "code":"InvalidClusterSecurityGroupState", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The state of the cluster security group is not available.

" - }, - { - "shape":"AuthorizationAlreadyExistsFault", - "error":{ - "code":"AuthorizationAlreadyExists", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified CIDR block or EC2 security group is already authorized for the specified cluster security group.

" - }, - { - "shape":"AuthorizationQuotaExceededFault", - "error":{ - "code":"AuthorizationQuotaExceeded", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The authorization quota for the cluster security group has been reached.

" - } - ], - "documentation":"

Adds an inbound (ingress) rule to an Amazon Redshift security group. Depending on whether the application accessing your cluster is running on the Internet or an EC2 instance, you can authorize inbound access to either a Classless Interdomain Routing (CIDR) IP address range or an EC2 security group. You can add as many as 20 ingress rules to an Amazon Redshift security group.

The EC2 security group must be defined in the AWS region where the cluster resides.

For an overview of CIDR blocks, see the Wikipedia article on Classless Inter-Domain Routing.

You must also associate the security group with a cluster so that clients running on these IP addresses or the EC2 instance are authorized to connect to the cluster. For information about managing security groups, go to Working with Security Groups in the Amazon Redshift Cluster Management Guide.

" - }, - "AuthorizeSnapshotAccess":{ - "name":"AuthorizeSnapshotAccess", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"AuthorizeSnapshotAccessMessage", - "documentation":"

" - }, - "output":{ - "shape":"AuthorizeSnapshotAccessResult", - "wrapper":true, - "documentation":"

Describes a snapshot.

", - "resultWrapper":"AuthorizeSnapshotAccessResult" - }, - "errors":[ - { - "shape":"ClusterSnapshotNotFoundFault", - "error":{ - "code":"ClusterSnapshotNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The snapshot identifier does not refer to an existing cluster snapshot.

" - }, - { - "shape":"AuthorizationAlreadyExistsFault", - "error":{ - "code":"AuthorizationAlreadyExists", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified CIDR block or EC2 security group is already authorized for the specified cluster security group.

" - }, - { - "shape":"AuthorizationQuotaExceededFault", - "error":{ - "code":"AuthorizationQuotaExceeded", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The authorization quota for the cluster security group has been reached.

" - } - ], - "documentation":"

Authorizes the specified AWS customer account to restore the specified snapshot.

For more information about working with snapshots, go to Amazon Redshift Snapshots in the Amazon Redshift Cluster Management Guide.

" - }, - "CopyClusterSnapshot":{ - "name":"CopyClusterSnapshot", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"CopyClusterSnapshotMessage", - "documentation":"

" - }, - "output":{ - "shape":"CopyClusterSnapshotResult", - "wrapper":true, - "documentation":"

Describes a snapshot.

", - "resultWrapper":"CopyClusterSnapshotResult" - }, - "errors":[ - { - "shape":"ClusterSnapshotAlreadyExistsFault", - "error":{ - "code":"ClusterSnapshotAlreadyExists", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The value specified as a snapshot identifier is already used by an existing snapshot.

" - }, - { - "shape":"ClusterSnapshotNotFoundFault", - "error":{ - "code":"ClusterSnapshotNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The snapshot identifier does not refer to an existing cluster snapshot.

" - }, - { - "shape":"InvalidClusterSnapshotStateFault", - "error":{ - "code":"InvalidClusterSnapshotState", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The state of the cluster snapshot is not available, or other accounts are authorized to access the snapshot.

" - }, - { - "shape":"ClusterSnapshotQuotaExceededFault", - "error":{ - "code":"ClusterSnapshotQuotaExceeded", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request would result in the user exceeding the allowed number of cluster snapshots.

" - } - ], - "documentation":"

Copies the specified automated cluster snapshot to a new manual cluster snapshot. The source must be an automated snapshot and it must be in the available state.

When you delete a cluster, Amazon Redshift deletes any automated snapshots of the cluster. Also, when the retention period of the snapshot expires, Amazon Redshift automatically deletes it. If you want to keep an automated snapshot for a longer period, you can make a manual copy of the snapshot. Manual snapshots are retained until you delete them.

For more information about working with snapshots, go to Amazon Redshift Snapshots in the Amazon Redshift Cluster Management Guide.

" - }, - "CreateCluster":{ - "name":"CreateCluster", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"CreateClusterMessage", - "documentation":"

" - }, - "output":{ - "shape":"CreateClusterResult", - "wrapper":true, - "documentation":"

Describes a cluster.

", - "resultWrapper":"CreateClusterResult" - }, - "errors":[ - { - "shape":"ClusterAlreadyExistsFault", - "error":{ - "code":"ClusterAlreadyExists", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The account already has a cluster with the given identifier.

" - }, - { - "shape":"InsufficientClusterCapacityFault", - "error":{ - "code":"InsufficientClusterCapacity", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The number of nodes specified exceeds the allotted capacity of the cluster.

" - }, - { - "shape":"ClusterParameterGroupNotFoundFault", - "error":{ - "code":"ClusterParameterGroupNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The parameter group name does not refer to an existing parameter group.

" - }, - { - "shape":"ClusterSecurityGroupNotFoundFault", - "error":{ - "code":"ClusterSecurityGroupNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The cluster security group name does not refer to an existing cluster security group.

" - }, - { - "shape":"ClusterQuotaExceededFault", - "error":{ - "code":"ClusterQuotaExceeded", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request would exceed the allowed number of cluster instances for this account. For information about increasing your quota, go to Limits in Amazon Redshift in the Amazon Redshift Cluster Management Guide.

" - }, - { - "shape":"NumberOfNodesQuotaExceededFault", - "error":{ - "code":"NumberOfNodesQuotaExceeded", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The operation would exceed the number of nodes allotted to the account. For information about increasing your quota, go to Limits in Amazon Redshift in the Amazon Redshift Cluster Management Guide.

" - }, - { - "shape":"NumberOfNodesPerClusterLimitExceededFault", - "error":{ - "code":"NumberOfNodesPerClusterLimitExceeded", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The operation would exceed the number of nodes allowed for a cluster.

" - }, - { - "shape":"ClusterSubnetGroupNotFoundFault", - "error":{ - "code":"ClusterSubnetGroupNotFoundFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The cluster subnet group name does not refer to an existing cluster subnet group.

" - }, - { - "shape":"InvalidVPCNetworkStateFault", - "error":{ - "code":"InvalidVPCNetworkStateFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The cluster subnet group does not cover all Availability Zones.

" - }, - { - "shape":"InvalidClusterSubnetGroupStateFault", - "error":{ - "code":"InvalidClusterSubnetGroupStateFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The cluster subnet group cannot be deleted because it is in use.

" - }, - { - "shape":"InvalidSubnet", - "error":{ - "code":"InvalidSubnet", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The requested subnet is not valid, or not all of the subnets are in the same VPC.

" - }, - { - "shape":"UnauthorizedOperation", - "error":{ - "code":"UnauthorizedOperation", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Your account is not authorized to perform the requested operation.

" - }, - { - "shape":"HsmClientCertificateNotFoundFault", - "error":{ - "code":"HsmClientCertificateNotFoundFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

There is no Amazon Redshift HSM client certificate with the specified identifier.

" - }, - { - "shape":"HsmConfigurationNotFoundFault", - "error":{ - "code":"HsmConfigurationNotFoundFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

There is no Amazon Redshift HSM configuration with the specified identifier.

" - }, - { - "shape":"InvalidElasticIpFault", - "error":{ - "code":"InvalidElasticIpFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The Elastic IP (EIP) is invalid or cannot be found.

" - }, - { - "shape":"TagLimitExceededFault", - "error":{ - "code":"TagLimitExceededFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request exceeds the limit of 10 tags for the resource.

" - }, - { - "shape":"InvalidTagFault", - "error":{ - "code":"InvalidTagFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The tag is invalid.

" - } - ], - "documentation":"

Creates a new cluster. To create the cluster in virtual private cloud (VPC), you must provide cluster subnet group name. If you don't provide a cluster subnet group name or the cluster security group parameter, Amazon Redshift creates a non-VPC cluster, it associates the default cluster security group with the cluster. For more information about managing clusters, go to Amazon Redshift Clusters in the Amazon Redshift Cluster Management Guide .

" - }, - "CreateClusterParameterGroup":{ - "name":"CreateClusterParameterGroup", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"CreateClusterParameterGroupMessage", - "documentation":"

" - }, - "output":{ - "shape":"CreateClusterParameterGroupResult", - "wrapper":true, - "documentation":"

Describes a parameter group.

", - "resultWrapper":"CreateClusterParameterGroupResult" - }, - "errors":[ - { - "shape":"ClusterParameterGroupQuotaExceededFault", - "error":{ - "code":"ClusterParameterGroupQuotaExceeded", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request would result in the user exceeding the allowed number of cluster parameter groups. For information about increasing your quota, go to Limits in Amazon Redshift in the Amazon Redshift Cluster Management Guide.

" - }, - { - "shape":"ClusterParameterGroupAlreadyExistsFault", - "error":{ - "code":"ClusterParameterGroupAlreadyExists", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

A cluster parameter group with the same name already exists.

" - }, - { - "shape":"TagLimitExceededFault", - "error":{ - "code":"TagLimitExceededFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request exceeds the limit of 10 tags for the resource.

" - }, - { - "shape":"InvalidTagFault", - "error":{ - "code":"InvalidTagFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The tag is invalid.

" - } - ], - "documentation":"

Creates an Amazon Redshift parameter group.

Creating parameter groups is independent of creating clusters. You can associate a cluster with a parameter group when you create the cluster. You can also associate an existing cluster with a parameter group after the cluster is created by using ModifyCluster.

Parameters in the parameter group define specific behavior that applies to the databases you create on the cluster. For more information about managing parameter groups, go to Amazon Redshift Parameter Groups in the Amazon Redshift Cluster Management Guide.

" - }, - "CreateClusterSecurityGroup":{ - "name":"CreateClusterSecurityGroup", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"CreateClusterSecurityGroupMessage", - "documentation":"

???

" - }, - "output":{ - "shape":"CreateClusterSecurityGroupResult", - "wrapper":true, - "documentation":"

Describes a security group.

", - "resultWrapper":"CreateClusterSecurityGroupResult" - }, - "errors":[ - { - "shape":"ClusterSecurityGroupAlreadyExistsFault", - "error":{ - "code":"ClusterSecurityGroupAlreadyExists", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

A cluster security group with the same name already exists.

" - }, - { - "shape":"ClusterSecurityGroupQuotaExceededFault", - "error":{ - "code":"QuotaExceeded.ClusterSecurityGroup", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request would result in the user exceeding the allowed number of cluster security groups. For information about increasing your quota, go to Limits in Amazon Redshift in the Amazon Redshift Cluster Management Guide.

" - }, - { - "shape":"TagLimitExceededFault", - "error":{ - "code":"TagLimitExceededFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request exceeds the limit of 10 tags for the resource.

" - }, - { - "shape":"InvalidTagFault", - "error":{ - "code":"InvalidTagFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The tag is invalid.

" - } - ], - "documentation":"

Creates a new Amazon Redshift security group. You use security groups to control access to non-VPC clusters.

For information about managing security groups, go to Amazon Redshift Cluster Security Groups in the Amazon Redshift Cluster Management Guide.

" - }, - "CreateClusterSnapshot":{ - "name":"CreateClusterSnapshot", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"CreateClusterSnapshotMessage", - "documentation":"

" - }, - "output":{ - "shape":"CreateClusterSnapshotResult", - "wrapper":true, - "documentation":"

Describes a snapshot.

", - "resultWrapper":"CreateClusterSnapshotResult" - }, - "errors":[ - { - "shape":"ClusterSnapshotAlreadyExistsFault", - "error":{ - "code":"ClusterSnapshotAlreadyExists", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The value specified as a snapshot identifier is already used by an existing snapshot.

" - }, - { - "shape":"InvalidClusterStateFault", - "error":{ - "code":"InvalidClusterState", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified cluster is not in the available state.

" - }, - { - "shape":"ClusterNotFoundFault", - "error":{ - "code":"ClusterNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The ClusterIdentifier parameter does not refer to an existing cluster.

" - }, - { - "shape":"ClusterSnapshotQuotaExceededFault", - "error":{ - "code":"ClusterSnapshotQuotaExceeded", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request would result in the user exceeding the allowed number of cluster snapshots.

" - }, - { - "shape":"TagLimitExceededFault", - "error":{ - "code":"TagLimitExceededFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request exceeds the limit of 10 tags for the resource.

" - }, - { - "shape":"InvalidTagFault", - "error":{ - "code":"InvalidTagFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The tag is invalid.

" - } - ], - "documentation":"

Creates a manual snapshot of the specified cluster. The cluster must be in the available state.

For more information about working with snapshots, go to Amazon Redshift Snapshots in the Amazon Redshift Cluster Management Guide.

" - }, - "CreateClusterSubnetGroup":{ - "name":"CreateClusterSubnetGroup", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"CreateClusterSubnetGroupMessage", - "documentation":"

" - }, - "output":{ - "shape":"CreateClusterSubnetGroupResult", - "wrapper":true, - "documentation":"

Describes a subnet group.

", - "resultWrapper":"CreateClusterSubnetGroupResult" - }, - "errors":[ - { - "shape":"ClusterSubnetGroupAlreadyExistsFault", - "error":{ - "code":"ClusterSubnetGroupAlreadyExists", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

A ClusterSubnetGroupName is already used by an existing cluster subnet group.

" - }, - { - "shape":"ClusterSubnetGroupQuotaExceededFault", - "error":{ - "code":"ClusterSubnetGroupQuotaExceeded", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request would result in user exceeding the allowed number of cluster subnet groups. For information about increasing your quota, go to Limits in Amazon Redshift in the Amazon Redshift Cluster Management Guide.

" - }, - { - "shape":"ClusterSubnetQuotaExceededFault", - "error":{ - "code":"ClusterSubnetQuotaExceededFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request would result in user exceeding the allowed number of subnets in a cluster subnet groups. For information about increasing your quota, go to Limits in Amazon Redshift in the Amazon Redshift Cluster Management Guide.

" - }, - { - "shape":"InvalidSubnet", - "error":{ - "code":"InvalidSubnet", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The requested subnet is not valid, or not all of the subnets are in the same VPC.

" - }, - { - "shape":"UnauthorizedOperation", - "error":{ - "code":"UnauthorizedOperation", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Your account is not authorized to perform the requested operation.

" - }, - { - "shape":"TagLimitExceededFault", - "error":{ - "code":"TagLimitExceededFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request exceeds the limit of 10 tags for the resource.

" - }, - { - "shape":"InvalidTagFault", - "error":{ - "code":"InvalidTagFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The tag is invalid.

" - } - ], - "documentation":"

Creates a new Amazon Redshift subnet group. You must provide a list of one or more subnets in your existing Amazon Virtual Private Cloud (Amazon VPC) when creating Amazon Redshift subnet group.

For information about subnet groups, go to Amazon Redshift Cluster Subnet Groups in the Amazon Redshift Cluster Management Guide.

" - }, - "CreateEventSubscription":{ - "name":"CreateEventSubscription", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"CreateEventSubscriptionMessage", - "documentation":"

" - }, - "output":{ - "shape":"CreateEventSubscriptionResult", - "wrapper":true, - "resultWrapper":"CreateEventSubscriptionResult" - }, - "errors":[ - { - "shape":"EventSubscriptionQuotaExceededFault", - "error":{ - "code":"EventSubscriptionQuotaExceeded", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request would exceed the allowed number of event subscriptions for this account. For information about increasing your quota, go to Limits in Amazon Redshift in the Amazon Redshift Cluster Management Guide.

" - }, - { - "shape":"SubscriptionAlreadyExistFault", - "error":{ - "code":"SubscriptionAlreadyExist", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

There is already an existing event notification subscription with the specified name.

" - }, - { - "shape":"SNSInvalidTopicFault", - "error":{ - "code":"SNSInvalidTopic", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Amazon SNS has responded that there is a problem with the specified Amazon SNS topic.

" - }, - { - "shape":"SNSNoAuthorizationFault", - "error":{ - "code":"SNSNoAuthorization", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

You do not have permission to publish to the specified Amazon SNS topic.

" - }, - { - "shape":"SNSTopicArnNotFoundFault", - "error":{ - "code":"SNSTopicArnNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

An Amazon SNS topic with the specified Amazon Resource Name (ARN) does not exist.

" - }, - { - "shape":"SubscriptionEventIdNotFoundFault", - "error":{ - "code":"SubscriptionEventIdNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

An Amazon Redshift event with the specified event ID does not exist.

" - }, - { - "shape":"SubscriptionCategoryNotFoundFault", - "error":{ - "code":"SubscriptionCategoryNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The value specified for the event category was not one of the allowed values, or it specified a category that does not apply to the specified source type. The allowed values are Configuration, Management, Monitoring, and Security.

" - }, - { - "shape":"SubscriptionSeverityNotFoundFault", - "error":{ - "code":"SubscriptionSeverityNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The value specified for the event severity was not one of the allowed values, or it specified a severity that does not apply to the specified source type. The allowed values are ERROR and INFO.

" - }, - { - "shape":"SourceNotFoundFault", - "error":{ - "code":"SourceNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified Amazon Redshift event source could not be found.

" - }, - { - "shape":"TagLimitExceededFault", - "error":{ - "code":"TagLimitExceededFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request exceeds the limit of 10 tags for the resource.

" - }, - { - "shape":"InvalidTagFault", - "error":{ - "code":"InvalidTagFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The tag is invalid.

" - } - ], - "documentation":"

Creates an Amazon Redshift event notification subscription. This action requires an ARN (Amazon Resource Name) of an Amazon SNS topic created by either the Amazon Redshift console, the Amazon SNS console, or the Amazon SNS API. To obtain an ARN with Amazon SNS, you must create a topic in Amazon SNS and subscribe to the topic. The ARN is displayed in the SNS console.

You can specify the source type, and lists of Amazon Redshift source IDs, event categories, and event severities. Notifications will be sent for all events you want that match those criteria. For example, you can specify source type = cluster, source ID = my-cluster-1 and mycluster2, event categories = Availability, Backup, and severity = ERROR. The subscription will only send notifications for those ERROR events in the Availability and Backup categories for the specified clusters.

If you specify both the source type and source IDs, such as source type = cluster and source identifier = my-cluster-1, notifications will be sent for all the cluster events for my-cluster-1. If you specify a source type but do not specify a source identifier, you will receive notice of the events for the objects of that type in your AWS account. If you do not specify either the SourceType nor the SourceIdentifier, you will be notified of events generated from all Amazon Redshift sources belonging to your AWS account. You must specify a source type if you specify a source ID.

" - }, - "CreateHsmClientCertificate":{ - "name":"CreateHsmClientCertificate", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"CreateHsmClientCertificateMessage", - "documentation":"

" - }, - "output":{ - "shape":"CreateHsmClientCertificateResult", - "wrapper":true, - "documentation":"

Returns information about an HSM client certificate. The certificate is stored in a secure Hardware Storage Module (HSM), and used by the Amazon Redshift cluster to encrypt data files.

", - "resultWrapper":"CreateHsmClientCertificateResult" - }, - "errors":[ - { - "shape":"HsmClientCertificateAlreadyExistsFault", - "error":{ - "code":"HsmClientCertificateAlreadyExistsFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

There is already an existing Amazon Redshift HSM client certificate with the specified identifier.

" - }, - { - "shape":"HsmClientCertificateQuotaExceededFault", - "error":{ - "code":"HsmClientCertificateQuotaExceededFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The quota for HSM client certificates has been reached. For information about increasing your quota, go to Limits in Amazon Redshift in the Amazon Redshift Cluster Management Guide.

" - }, - { - "shape":"TagLimitExceededFault", - "error":{ - "code":"TagLimitExceededFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request exceeds the limit of 10 tags for the resource.

" - }, - { - "shape":"InvalidTagFault", - "error":{ - "code":"InvalidTagFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The tag is invalid.

" - } - ], - "documentation":"

Creates an HSM client certificate that an Amazon Redshift cluster will use to connect to the client's HSM in order to store and retrieve the keys used to encrypt the cluster databases.

The command returns a public key, which you must store in the HSM. In addition to creating the HSM certificate, you must create an Amazon Redshift HSM configuration that provides a cluster the information needed to store and use encryption keys in the HSM. For more information, go to Hardware Security Modules in the Amazon Redshift Cluster Management Guide.

" - }, - "CreateHsmConfiguration":{ - "name":"CreateHsmConfiguration", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"CreateHsmConfigurationMessage", - "documentation":"

" - }, - "output":{ - "shape":"CreateHsmConfigurationResult", - "wrapper":true, - "documentation":"

Returns information about an HSM configuration, which is an object that describes to Amazon Redshift clusters the information they require to connect to an HSM where they can store database encryption keys.

", - "resultWrapper":"CreateHsmConfigurationResult" - }, - "errors":[ - { - "shape":"HsmConfigurationAlreadyExistsFault", - "error":{ - "code":"HsmConfigurationAlreadyExistsFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

There is already an existing Amazon Redshift HSM configuration with the specified identifier.

" - }, - { - "shape":"HsmConfigurationQuotaExceededFault", - "error":{ - "code":"HsmConfigurationQuotaExceededFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The quota for HSM configurations has been reached. For information about increasing your quota, go to Limits in Amazon Redshift in the Amazon Redshift Cluster Management Guide.

" - }, - { - "shape":"TagLimitExceededFault", - "error":{ - "code":"TagLimitExceededFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request exceeds the limit of 10 tags for the resource.

" - }, - { - "shape":"InvalidTagFault", - "error":{ - "code":"InvalidTagFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The tag is invalid.

" - } - ], - "documentation":"

Creates an HSM configuration that contains the information required by an Amazon Redshift cluster to store and use database encryption keys in a Hardware Security Module (HSM). After creating the HSM configuration, you can specify it as a parameter when creating a cluster. The cluster will then store its encryption keys in the HSM.

In addition to creating an HSM configuration, you must also create an HSM client certificate. For more information, go to Hardware Security Modules in the Amazon Redshift Cluster Management Guide.

" - }, - "CreateTags":{ - "name":"CreateTags", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"CreateTagsMessage", - "documentation":"

Contains the output from the CreateTags action.

" - }, - "errors":[ - { - "shape":"TagLimitExceededFault", - "error":{ - "code":"TagLimitExceededFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request exceeds the limit of 10 tags for the resource.

" - }, - { - "shape":"ResourceNotFoundFault", - "error":{ - "code":"ResourceNotFoundFault", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The resource could not be found.

" - }, - { - "shape":"InvalidTagFault", - "error":{ - "code":"InvalidTagFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The tag is invalid.

" - } - ], - "documentation":"

Adds one or more tags to a specified resource.

A resource can have up to 10 tags. If you try to create more than 10 tags for a resource, you will receive an error and the attempt will fail.

If you specify a key that already exists for the resource, the value for that key will be updated with the new value.

" - }, - "DeleteCluster":{ - "name":"DeleteCluster", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DeleteClusterMessage", - "documentation":"

" - }, - "output":{ - "shape":"DeleteClusterResult", - "wrapper":true, - "documentation":"

Describes a cluster.

", - "resultWrapper":"DeleteClusterResult" - }, - "errors":[ - { - "shape":"ClusterNotFoundFault", - "error":{ - "code":"ClusterNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The ClusterIdentifier parameter does not refer to an existing cluster.

" - }, - { - "shape":"InvalidClusterStateFault", - "error":{ - "code":"InvalidClusterState", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified cluster is not in the available state.

" - }, - { - "shape":"ClusterSnapshotAlreadyExistsFault", - "error":{ - "code":"ClusterSnapshotAlreadyExists", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The value specified as a snapshot identifier is already used by an existing snapshot.

" - }, - { - "shape":"ClusterSnapshotQuotaExceededFault", - "error":{ - "code":"ClusterSnapshotQuotaExceeded", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request would result in the user exceeding the allowed number of cluster snapshots.

" - } - ], - "documentation":"

Deletes a previously provisioned cluster. A successful response from the web service indicates that the request was received correctly. Use DescribeClusters to monitor the status of the deletion. The delete operation cannot be canceled or reverted once submitted. For more information about managing clusters, go to Amazon Redshift Clusters in the Amazon Redshift Cluster Management Guide .

If you want to shut down the cluster and retain it for future use, set SkipFinalClusterSnapshot to false and specify a name for FinalClusterSnapshotIdentifier. You can later restore this snapshot to resume using the cluster. If a final cluster snapshot is requested, the status of the cluster will be \"final-snapshot\" while the snapshot is being taken, then it's \"deleting\" once Amazon Redshift begins deleting the cluster.

For more information about managing clusters, go to Amazon Redshift Clusters in the Amazon Redshift Cluster Management Guide .

" - }, - "DeleteClusterParameterGroup":{ - "name":"DeleteClusterParameterGroup", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DeleteClusterParameterGroupMessage", - "documentation":"

" - }, - "errors":[ - { - "shape":"InvalidClusterParameterGroupStateFault", - "error":{ - "code":"InvalidClusterParameterGroupState", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The cluster parameter group action can not be completed because another task is in progress that involves the parameter group. Wait a few moments and try the operation again.

" - }, - { - "shape":"ClusterParameterGroupNotFoundFault", - "error":{ - "code":"ClusterParameterGroupNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The parameter group name does not refer to an existing parameter group.

" - } - ], - "documentation":"

Deletes a specified Amazon Redshift parameter group. You cannot delete a parameter group if it is associated with a cluster.

" - }, - "DeleteClusterSecurityGroup":{ - "name":"DeleteClusterSecurityGroup", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DeleteClusterSecurityGroupMessage", - "documentation":"

" - }, - "errors":[ - { - "shape":"InvalidClusterSecurityGroupStateFault", - "error":{ - "code":"InvalidClusterSecurityGroupState", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The state of the cluster security group is not available.

" - }, - { - "shape":"ClusterSecurityGroupNotFoundFault", - "error":{ - "code":"ClusterSecurityGroupNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The cluster security group name does not refer to an existing cluster security group.

" - } - ], - "documentation":"

Deletes an Amazon Redshift security group.

You cannot delete a security group that is associated with any clusters. You cannot delete the default security group.

For information about managing security groups, go to Amazon Redshift Cluster Security Groups in the Amazon Redshift Cluster Management Guide.

" - }, - "DeleteClusterSnapshot":{ - "name":"DeleteClusterSnapshot", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DeleteClusterSnapshotMessage", - "documentation":"

" - }, - "output":{ - "shape":"DeleteClusterSnapshotResult", - "wrapper":true, - "documentation":"

Describes a snapshot.

", - "resultWrapper":"DeleteClusterSnapshotResult" - }, - "errors":[ - { - "shape":"InvalidClusterSnapshotStateFault", - "error":{ - "code":"InvalidClusterSnapshotState", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The state of the cluster snapshot is not available, or other accounts are authorized to access the snapshot.

" - }, - { - "shape":"ClusterSnapshotNotFoundFault", - "error":{ - "code":"ClusterSnapshotNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The snapshot identifier does not refer to an existing cluster snapshot.

" - } - ], - "documentation":"

Deletes the specified manual snapshot. The snapshot must be in the available state, with no other users authorized to access the snapshot.

Unlike automated snapshots, manual snapshots are retained even after you delete your cluster. Amazon Redshift does not delete your manual snapshots. You must delete manual snapshot explicitly to avoid getting charged. If other accounts are authorized to access the snapshot, you must revoke all of the authorizations before you can delete the snapshot.

" - }, - "DeleteClusterSubnetGroup":{ - "name":"DeleteClusterSubnetGroup", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DeleteClusterSubnetGroupMessage"}, - "errors":[ - { - "shape":"InvalidClusterSubnetGroupStateFault", - "error":{ - "code":"InvalidClusterSubnetGroupStateFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The cluster subnet group cannot be deleted because it is in use.

" - }, - { - "shape":"InvalidClusterSubnetStateFault", - "error":{ - "code":"InvalidClusterSubnetStateFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The state of the subnet is invalid.

" - }, - { - "shape":"ClusterSubnetGroupNotFoundFault", - "error":{ - "code":"ClusterSubnetGroupNotFoundFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The cluster subnet group name does not refer to an existing cluster subnet group.

" - } - ], - "documentation":"

Deletes the specified cluster subnet group.

" - }, - "DeleteEventSubscription":{ - "name":"DeleteEventSubscription", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DeleteEventSubscriptionMessage", - "documentation":"

" - }, - "errors":[ - { - "shape":"SubscriptionNotFoundFault", - "error":{ - "code":"SubscriptionNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

An Amazon Redshift event notification subscription with the specified name does not exist.

" - }, - { - "shape":"InvalidSubscriptionStateFault", - "error":{ - "code":"InvalidSubscriptionStateFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The subscription request is invalid because it is a duplicate request. This subscription request is already in progress.

" - } - ], - "documentation":"

Deletes an Amazon Redshift event notification subscription.

" - }, - "DeleteHsmClientCertificate":{ - "name":"DeleteHsmClientCertificate", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DeleteHsmClientCertificateMessage", - "documentation":"

" - }, - "errors":[ - { - "shape":"InvalidHsmClientCertificateStateFault", - "error":{ - "code":"InvalidHsmClientCertificateStateFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified HSM client certificate is not in the available state, or it is still in use by one or more Amazon Redshift clusters.

" - }, - { - "shape":"HsmClientCertificateNotFoundFault", - "error":{ - "code":"HsmClientCertificateNotFoundFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

There is no Amazon Redshift HSM client certificate with the specified identifier.

" - } - ], - "documentation":"

Deletes the specified HSM client certificate.

" - }, - "DeleteHsmConfiguration":{ - "name":"DeleteHsmConfiguration", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DeleteHsmConfigurationMessage", - "documentation":"

" - }, - "errors":[ - { - "shape":"InvalidHsmConfigurationStateFault", - "error":{ - "code":"InvalidHsmConfigurationStateFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified HSM configuration is not in the available state, or it is still in use by one or more Amazon Redshift clusters.

" - }, - { - "shape":"HsmConfigurationNotFoundFault", - "error":{ - "code":"HsmConfigurationNotFoundFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

There is no Amazon Redshift HSM configuration with the specified identifier.

" - } - ], - "documentation":"

Deletes the specified Amazon Redshift HSM configuration.

" - }, - "DeleteTags":{ - "name":"DeleteTags", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DeleteTagsMessage", - "documentation":"

Contains the output from the DeleteTags action.

" - }, - "errors":[ - { - "shape":"ResourceNotFoundFault", - "error":{ - "code":"ResourceNotFoundFault", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The resource could not be found.

" - } - ], - "documentation":"

Deletes a tag or tags from a resource. You must provide the ARN of the resource from which you want to delete the tag or tags.

" - }, - "DescribeClusterParameterGroups":{ - "name":"DescribeClusterParameterGroups", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DescribeClusterParameterGroupsMessage", - "documentation":"

" - }, - "output":{ - "shape":"ClusterParameterGroupsMessage", - "documentation":"

Contains the output from the DescribeClusterParameterGroups action.

", - "resultWrapper":"DescribeClusterParameterGroupsResult" - }, - "errors":[ - { - "shape":"ClusterParameterGroupNotFoundFault", - "error":{ - "code":"ClusterParameterGroupNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The parameter group name does not refer to an existing parameter group.

" - } - ], - "documentation":"

Returns a list of Amazon Redshift parameter groups, including parameter groups you created and the default parameter group. For each parameter group, the response includes the parameter group name, description, and parameter group family name. You can optionally specify a name to retrieve the description of a specific parameter group.

For more information about managing parameter groups, go to Amazon Redshift Parameter Groups in the Amazon Redshift Cluster Management Guide.

If you specify both tag keys and tag values in the same request, Amazon Redshift returns all parameter groups that match any combination of the specified keys and values. For example, if you have owner and environment for tag keys, and admin and test for tag values, all parameter groups that have any combination of those values are returned.

If both tag keys and values are omitted from the request, parameter groups are returned regardless of whether they have tag keys or values associated with them.

" - }, - "DescribeClusterParameters":{ - "name":"DescribeClusterParameters", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeClusterParametersMessage"}, - "output":{ - "shape":"ClusterParameterGroupDetails", - "documentation":"

Contains the output from the DescribeClusterParameters action.

", - "resultWrapper":"DescribeClusterParametersResult" - }, - "errors":[ - { - "shape":"ClusterParameterGroupNotFoundFault", - "error":{ - "code":"ClusterParameterGroupNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The parameter group name does not refer to an existing parameter group.

" - } - ], - "documentation":"

Returns a detailed list of parameters contained within the specified Amazon Redshift parameter group. For each parameter the response includes information such as parameter name, description, data type, value, whether the parameter value is modifiable, and so on.

You can specify source filter to retrieve parameters of only specific type. For example, to retrieve parameters that were modified by a user action such as from ModifyClusterParameterGroup, you can specify source equal to user.

For more information about managing parameter groups, go to Amazon Redshift Parameter Groups in the Amazon Redshift Cluster Management Guide.

" - }, - "DescribeClusterSecurityGroups":{ - "name":"DescribeClusterSecurityGroups", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DescribeClusterSecurityGroupsMessage", - "documentation":"

???

" - }, - "output":{ - "shape":"ClusterSecurityGroupMessage", - "documentation":"

Contains the output from the DescribeClusterSecurityGroups action.

", - "resultWrapper":"DescribeClusterSecurityGroupsResult" - }, - "errors":[ - { - "shape":"ClusterSecurityGroupNotFoundFault", - "error":{ - "code":"ClusterSecurityGroupNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The cluster security group name does not refer to an existing cluster security group.

" - } - ], - "documentation":"

Returns information about Amazon Redshift security groups. If the name of a security group is specified, the response will contain only information about only that security group.

For information about managing security groups, go to Amazon Redshift Cluster Security Groups in the Amazon Redshift Cluster Management Guide.

If you specify both tag keys and tag values in the same request, Amazon Redshift returns all security groups that match any combination of the specified keys and values. For example, if you have owner and environment for tag keys, and admin and test for tag values, all security groups that have any combination of those values are returned.

If both tag keys and values are omitted from the request, security groups are returned regardless of whether they have tag keys or values associated with them.

" - }, - "DescribeClusterSnapshots":{ - "name":"DescribeClusterSnapshots", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DescribeClusterSnapshotsMessage", - "documentation":"

" - }, - "output":{ - "shape":"SnapshotMessage", - "documentation":"

Contains the output from the DescribeClusterSnapshots action.

", - "resultWrapper":"DescribeClusterSnapshotsResult" - }, - "errors":[ - { - "shape":"ClusterSnapshotNotFoundFault", - "error":{ - "code":"ClusterSnapshotNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The snapshot identifier does not refer to an existing cluster snapshot.

" - } - ], - "documentation":"

Returns one or more snapshot objects, which contain metadata about your cluster snapshots. By default, this operation returns information about all snapshots of all clusters that are owned by you AWS customer account. No information is returned for snapshots owned by inactive AWS customer accounts.

If you specify both tag keys and tag values in the same request, Amazon Redshift returns all snapshots that match any combination of the specified keys and values. For example, if you have owner and environment for tag keys, and admin and test for tag values, all snapshots that have any combination of those values are returned. Only snapshots that you own are returned in the response; shared snapshots are not returned with the tag key and tag value request parameters.

If both tag keys and values are omitted from the request, snapshots are returned regardless of whether they have tag keys or values associated with them.

" - }, - "DescribeClusterSubnetGroups":{ - "name":"DescribeClusterSubnetGroups", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DescribeClusterSubnetGroupsMessage", - "documentation":"

" - }, - "output":{ - "shape":"ClusterSubnetGroupMessage", - "documentation":"

Contains the output from the DescribeClusterSubnetGroups action.

", - "resultWrapper":"DescribeClusterSubnetGroupsResult" - }, - "errors":[ - { - "shape":"ClusterSubnetGroupNotFoundFault", - "error":{ - "code":"ClusterSubnetGroupNotFoundFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The cluster subnet group name does not refer to an existing cluster subnet group.

" - } - ], - "documentation":"

Returns one or more cluster subnet group objects, which contain metadata about your cluster subnet groups. By default, this operation returns information about all cluster subnet groups that are defined in you AWS account.

If you specify both tag keys and tag values in the same request, Amazon Redshift returns all subnet groups that match any combination of the specified keys and values. For example, if you have owner and environment for tag keys, and admin and test for tag values, all subnet groups that have any combination of those values are returned.

If both tag keys and values are omitted from the request, subnet groups are returned regardless of whether they have tag keys or values associated with them.

" - }, - "DescribeClusterVersions":{ - "name":"DescribeClusterVersions", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeClusterVersionsMessage"}, - "output":{ - "shape":"ClusterVersionsMessage", - "documentation":"

Contains the output from the DescribeClusterVersions action.

", - "resultWrapper":"DescribeClusterVersionsResult" - }, - "documentation":"

Returns descriptions of the available Amazon Redshift cluster versions. You can call this operation even before creating any clusters to learn more about the Amazon Redshift versions. For more information about managing clusters, go to Amazon Redshift Clusters in the Amazon Redshift Cluster Management Guide

" - }, - "DescribeClusters":{ - "name":"DescribeClusters", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DescribeClustersMessage", - "documentation":"

" - }, - "output":{ - "shape":"ClustersMessage", - "documentation":"

Contains the output from the DescribeClusters action.

", - "resultWrapper":"DescribeClustersResult" - }, - "errors":[ - { - "shape":"ClusterNotFoundFault", - "error":{ - "code":"ClusterNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The ClusterIdentifier parameter does not refer to an existing cluster.

" - } - ], - "documentation":"

Returns properties of provisioned clusters including general cluster properties, cluster database properties, maintenance and backup properties, and security and access properties. This operation supports pagination. For more information about managing clusters, go to Amazon Redshift Clusters in the Amazon Redshift Cluster Management Guide .

If you specify both tag keys and tag values in the same request, Amazon Redshift returns all clusters that match any combination of the specified keys and values. For example, if you have owner and environment for tag keys, and admin and test for tag values, all clusters that have any combination of those values are returned.

If both tag keys and values are omitted from the request, clusters are returned regardless of whether they have tag keys or values associated with them.

" - }, - "DescribeDefaultClusterParameters":{ - "name":"DescribeDefaultClusterParameters", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DescribeDefaultClusterParametersMessage", - "documentation":"

" - }, - "output":{ - "shape":"DescribeDefaultClusterParametersResult", - "wrapper":true, - "documentation":"

Describes the default cluster parameters for a parameter group family.

", - "resultWrapper":"DescribeDefaultClusterParametersResult" - }, - "documentation":"

Returns a list of parameter settings for the specified parameter group family.

For more information about managing parameter groups, go to Amazon Redshift Parameter Groups in the Amazon Redshift Cluster Management Guide.

" - }, - "DescribeEventCategories":{ - "name":"DescribeEventCategories", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DescribeEventCategoriesMessage", - "documentation":"

" - }, - "output":{ - "shape":"EventCategoriesMessage", - "documentation":"

", - "resultWrapper":"DescribeEventCategoriesResult" - }, - "documentation":"

Displays a list of event categories for all event source types, or for a specified source type. For a list of the event categories and source types, go to Amazon Redshift Event Notifications.

" - }, - "DescribeEventSubscriptions":{ - "name":"DescribeEventSubscriptions", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DescribeEventSubscriptionsMessage", - "documentation":"

" - }, - "output":{ - "shape":"EventSubscriptionsMessage", - "documentation":"

", - "resultWrapper":"DescribeEventSubscriptionsResult" - }, - "errors":[ - { - "shape":"SubscriptionNotFoundFault", - "error":{ - "code":"SubscriptionNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

An Amazon Redshift event notification subscription with the specified name does not exist.

" - } - ], - "documentation":"

Lists descriptions of all the Amazon Redshift event notifications subscription for a customer account. If you specify a subscription name, lists the description for that subscription.

" - }, - "DescribeEvents":{ - "name":"DescribeEvents", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DescribeEventsMessage", - "documentation":"

" - }, - "output":{ - "shape":"EventsMessage", - "documentation":"

Contains the output from the DescribeEvents action.

", - "resultWrapper":"DescribeEventsResult" - }, - "documentation":"

Returns events related to clusters, security groups, snapshots, and parameter groups for the past 14 days. Events specific to a particular cluster, security group, snapshot or parameter group can be obtained by providing the name as a parameter. By default, the past hour of events are returned.

" - }, - "DescribeHsmClientCertificates":{ - "name":"DescribeHsmClientCertificates", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DescribeHsmClientCertificatesMessage", - "documentation":"

" - }, - "output":{ - "shape":"HsmClientCertificateMessage", - "documentation":"

", - "resultWrapper":"DescribeHsmClientCertificatesResult" - }, - "errors":[ - { - "shape":"HsmClientCertificateNotFoundFault", - "error":{ - "code":"HsmClientCertificateNotFoundFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

There is no Amazon Redshift HSM client certificate with the specified identifier.

" - } - ], - "documentation":"

Returns information about the specified HSM client certificate. If no certificate ID is specified, returns information about all the HSM certificates owned by your AWS customer account.

If you specify both tag keys and tag values in the same request, Amazon Redshift returns all HSM client certificates that match any combination of the specified keys and values. For example, if you have owner and environment for tag keys, and admin and test for tag values, all HSM client certificates that have any combination of those values are returned.

If both tag keys and values are omitted from the request, HSM client certificates are returned regardless of whether they have tag keys or values associated with them.

" - }, - "DescribeHsmConfigurations":{ - "name":"DescribeHsmConfigurations", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DescribeHsmConfigurationsMessage", - "documentation":"

" - }, - "output":{ - "shape":"HsmConfigurationMessage", - "documentation":"

", - "resultWrapper":"DescribeHsmConfigurationsResult" - }, - "errors":[ - { - "shape":"HsmConfigurationNotFoundFault", - "error":{ - "code":"HsmConfigurationNotFoundFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

There is no Amazon Redshift HSM configuration with the specified identifier.

" - } - ], - "documentation":"

Returns information about the specified Amazon Redshift HSM configuration. If no configuration ID is specified, returns information about all the HSM configurations owned by your AWS customer account.

If you specify both tag keys and tag values in the same request, Amazon Redshift returns all HSM connections that match any combination of the specified keys and values. For example, if you have owner and environment for tag keys, and admin and test for tag values, all HSM connections that have any combination of those values are returned.

If both tag keys and values are omitted from the request, HSM connections are returned regardless of whether they have tag keys or values associated with them.

" - }, - "DescribeLoggingStatus":{ - "name":"DescribeLoggingStatus", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DescribeLoggingStatusMessage", - "documentation":"

" - }, - "output":{ - "shape":"LoggingStatus", - "documentation":"

Describes the status of logging for a cluster.

", - "resultWrapper":"DescribeLoggingStatusResult" - }, - "errors":[ - { - "shape":"ClusterNotFoundFault", - "error":{ - "code":"ClusterNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The ClusterIdentifier parameter does not refer to an existing cluster.

" - } - ], - "documentation":"

Describes whether information, such as queries and connection attempts, is being logged for the specified Amazon Redshift cluster.

" - }, - "DescribeOrderableClusterOptions":{ - "name":"DescribeOrderableClusterOptions", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DescribeOrderableClusterOptionsMessage", - "documentation":"

" - }, - "output":{ - "shape":"OrderableClusterOptionsMessage", - "documentation":"

Contains the output from the DescribeOrderableClusterOptions action.

", - "resultWrapper":"DescribeOrderableClusterOptionsResult" - }, - "documentation":"

Returns a list of orderable cluster options. Before you create a new cluster you can use this operation to find what options are available, such as the EC2 Availability Zones (AZ) in the specific AWS region that you can specify, and the node types you can request. The node types differ by available storage, memory, CPU and price. With the cost involved you might want to obtain a list of cluster options in the specific region and specify values when creating a cluster. For more information about managing clusters, go to Amazon Redshift Clusters in the Amazon Redshift Cluster Management Guide

" - }, - "DescribeReservedNodeOfferings":{ - "name":"DescribeReservedNodeOfferings", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DescribeReservedNodeOfferingsMessage", - "documentation":"

to be provided.

" - }, - "output":{ - "shape":"ReservedNodeOfferingsMessage", - "documentation":"

Contains the output from the DescribeReservedNodeOfferings action.

", - "resultWrapper":"DescribeReservedNodeOfferingsResult" - }, - "errors":[ - { - "shape":"ReservedNodeOfferingNotFoundFault", - "error":{ - "code":"ReservedNodeOfferingNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

Specified offering does not exist.

" - } - ], - "documentation":"

Returns a list of the available reserved node offerings by Amazon Redshift with their descriptions including the node type, the fixed and recurring costs of reserving the node and duration the node will be reserved for you. These descriptions help you determine which reserve node offering you want to purchase. You then use the unique offering ID in you call to PurchaseReservedNodeOffering to reserve one or more nodes for your Amazon Redshift cluster.

For more information about managing parameter groups, go to Purchasing Reserved Nodes in the Amazon Redshift Cluster Management Guide.

" - }, - "DescribeReservedNodes":{ - "name":"DescribeReservedNodes", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DescribeReservedNodesMessage", - "documentation":"

" - }, - "output":{ - "shape":"ReservedNodesMessage", - "documentation":"

Contains the output from the DescribeReservedNodes action.

", - "resultWrapper":"DescribeReservedNodesResult" - }, - "errors":[ - { - "shape":"ReservedNodeNotFoundFault", - "error":{ - "code":"ReservedNodeNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified reserved compute node not found.

" - } - ], - "documentation":"

Returns the descriptions of the reserved nodes.

" - }, - "DescribeResize":{ - "name":"DescribeResize", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DescribeResizeMessage", - "documentation":"

" - }, - "output":{ - "shape":"ResizeProgressMessage", - "documentation":"

Describes the result of a cluster resize operation.

", - "resultWrapper":"DescribeResizeResult" - }, - "errors":[ - { - "shape":"ClusterNotFoundFault", - "error":{ - "code":"ClusterNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The ClusterIdentifier parameter does not refer to an existing cluster.

" - }, - { - "shape":"ResizeNotFoundFault", - "error":{ - "code":"ResizeNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

A resize operation for the specified cluster is not found.

" - } - ], - "documentation":"

Returns information about the last resize operation for the specified cluster. If no resize operation has ever been initiated for the specified cluster, a HTTP 404 error is returned. If a resize operation was initiated and completed, the status of the resize remains as SUCCEEDED until the next resize.

A resize operation can be requested using ModifyCluster and specifying a different number or type of nodes for the cluster.

" - }, - "DescribeTags":{ - "name":"DescribeTags", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DescribeTagsMessage", - "documentation":"

Contains the output from the DescribeTags action.

" - }, - "output":{ - "shape":"TaggedResourceListMessage", - "documentation":"

Contains the output from the DescribeTags action.

", - "resultWrapper":"DescribeTagsResult" - }, - "errors":[ - { - "shape":"ResourceNotFoundFault", - "error":{ - "code":"ResourceNotFoundFault", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The resource could not be found.

" - } - ], - "documentation":"

Returns a list of tags. You can return tags from a specific resource by specifying an ARN, or you can return all tags for a given type of resource, such as clusters, snapshots, and so on.

The following are limitations for DescribeTags:

If you specify both tag keys and tag values in the same request, Amazon Redshift returns all resources that match any combination of the specified keys and values. For example, if you have owner and environment for tag keys, and admin and test for tag values, all resources that have any combination of those values are returned.

If both tag keys and values are omitted from the request, resources are returned regardless of whether they have tag keys or values associated with them.

" - }, - "DisableLogging":{ - "name":"DisableLogging", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DisableLoggingMessage", - "documentation":"

" - }, - "output":{ - "shape":"LoggingStatus", - "documentation":"

Describes the status of logging for a cluster.

", - "resultWrapper":"DisableLoggingResult" - }, - "errors":[ - { - "shape":"ClusterNotFoundFault", - "error":{ - "code":"ClusterNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The ClusterIdentifier parameter does not refer to an existing cluster.

" - } - ], - "documentation":"

Stops logging information, such as queries and connection attempts, for the specified Amazon Redshift cluster.

" - }, - "DisableSnapshotCopy":{ - "name":"DisableSnapshotCopy", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DisableSnapshotCopyMessage", - "documentation":"

" - }, - "output":{ - "shape":"DisableSnapshotCopyResult", - "wrapper":true, - "documentation":"

Describes a cluster.

", - "resultWrapper":"DisableSnapshotCopyResult" - }, - "errors":[ - { - "shape":"ClusterNotFoundFault", - "error":{ - "code":"ClusterNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The ClusterIdentifier parameter does not refer to an existing cluster.

" - }, - { - "shape":"SnapshotCopyAlreadyDisabledFault", - "error":{ - "code":"SnapshotCopyAlreadyDisabledFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The cluster already has cross-region snapshot copy disabled.

" - }, - { - "shape":"InvalidClusterStateFault", - "error":{ - "code":"InvalidClusterState", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified cluster is not in the available state.

" - }, - { - "shape":"UnauthorizedOperation", - "error":{ - "code":"UnauthorizedOperation", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Your account is not authorized to perform the requested operation.

" - } - ], - "documentation":"

Disables the automatic copying of snapshots from one region to another region for a specified cluster.

" - }, - "EnableLogging":{ - "name":"EnableLogging", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"EnableLoggingMessage", - "documentation":"

" - }, - "output":{ - "shape":"LoggingStatus", - "documentation":"

Describes the status of logging for a cluster.

", - "resultWrapper":"EnableLoggingResult" - }, - "errors":[ - { - "shape":"ClusterNotFoundFault", - "error":{ - "code":"ClusterNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The ClusterIdentifier parameter does not refer to an existing cluster.

" - }, - { - "shape":"BucketNotFoundFault", - "error":{ - "code":"BucketNotFoundFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Could not find the specified S3 bucket.

" - }, - { - "shape":"InsufficientS3BucketPolicyFault", - "error":{ - "code":"InsufficientS3BucketPolicyFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The cluster does not have read bucket or put object permissions on the S3 bucket specified when enabling logging.

" - }, - { - "shape":"InvalidS3KeyPrefixFault", - "error":{ - "code":"InvalidS3KeyPrefixFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The string specified for the logging S3 key prefix does not comply with the documented constraints.

" - }, - { - "shape":"InvalidS3BucketNameFault", - "error":{ - "code":"InvalidS3BucketNameFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The S3 bucket name is invalid. For more information about naming rules, go to Bucket Restrictions and Limitations in the Amazon Simple Storage Service (S3) Developer Guide.

" - } - ], - "documentation":"

Starts logging information, such as queries and connection attempts, for the specified Amazon Redshift cluster.

" - }, - "EnableSnapshotCopy":{ - "name":"EnableSnapshotCopy", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"EnableSnapshotCopyMessage", - "documentation":"

" - }, - "output":{ - "shape":"EnableSnapshotCopyResult", - "wrapper":true, - "documentation":"

Describes a cluster.

", - "resultWrapper":"EnableSnapshotCopyResult" - }, - "errors":[ - { - "shape":"IncompatibleOrderableOptions", - "error":{ - "code":"IncompatibleOrderableOptions", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified options are incompatible.

" - }, - { - "shape":"InvalidClusterStateFault", - "error":{ - "code":"InvalidClusterState", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified cluster is not in the available state.

" - }, - { - "shape":"ClusterNotFoundFault", - "error":{ - "code":"ClusterNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The ClusterIdentifier parameter does not refer to an existing cluster.

" - }, - { - "shape":"CopyToRegionDisabledFault", - "error":{ - "code":"CopyToRegionDisabledFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Cross-region snapshot copy was temporarily disabled. Try your request again.

" - }, - { - "shape":"SnapshotCopyAlreadyEnabledFault", - "error":{ - "code":"SnapshotCopyAlreadyEnabledFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The cluster already has cross-region snapshot copy enabled.

" - }, - { - "shape":"UnknownSnapshotCopyRegionFault", - "error":{ - "code":"UnknownSnapshotCopyRegionFault", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified region is incorrect or does not exist.

" - }, - { - "shape":"UnauthorizedOperation", - "error":{ - "code":"UnauthorizedOperation", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Your account is not authorized to perform the requested operation.

" - } - ], - "documentation":"

Enables the automatic copy of snapshots from one region to another region for a specified cluster.

" - }, - "ModifyCluster":{ - "name":"ModifyCluster", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"ModifyClusterMessage", - "documentation":"

" - }, - "output":{ - "shape":"ModifyClusterResult", - "wrapper":true, - "documentation":"

Describes a cluster.

", - "resultWrapper":"ModifyClusterResult" - }, - "errors":[ - { - "shape":"InvalidClusterStateFault", - "error":{ - "code":"InvalidClusterState", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified cluster is not in the available state.

" - }, - { - "shape":"InvalidClusterSecurityGroupStateFault", - "error":{ - "code":"InvalidClusterSecurityGroupState", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The state of the cluster security group is not available.

" - }, - { - "shape":"ClusterNotFoundFault", - "error":{ - "code":"ClusterNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The ClusterIdentifier parameter does not refer to an existing cluster.

" - }, - { - "shape":"NumberOfNodesQuotaExceededFault", - "error":{ - "code":"NumberOfNodesQuotaExceeded", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The operation would exceed the number of nodes allotted to the account. For information about increasing your quota, go to Limits in Amazon Redshift in the Amazon Redshift Cluster Management Guide.

" - }, - { - "shape":"ClusterSecurityGroupNotFoundFault", - "error":{ - "code":"ClusterSecurityGroupNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The cluster security group name does not refer to an existing cluster security group.

" - }, - { - "shape":"ClusterParameterGroupNotFoundFault", - "error":{ - "code":"ClusterParameterGroupNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The parameter group name does not refer to an existing parameter group.

" - }, - { - "shape":"InsufficientClusterCapacityFault", - "error":{ - "code":"InsufficientClusterCapacity", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The number of nodes specified exceeds the allotted capacity of the cluster.

" - }, - { - "shape":"UnsupportedOptionFault", - "error":{ - "code":"UnsupportedOptionFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

A request option was specified that is not supported.

" - }, - { - "shape":"UnauthorizedOperation", - "error":{ - "code":"UnauthorizedOperation", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Your account is not authorized to perform the requested operation.

" - }, - { - "shape":"HsmClientCertificateNotFoundFault", - "error":{ - "code":"HsmClientCertificateNotFoundFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

There is no Amazon Redshift HSM client certificate with the specified identifier.

" - }, - { - "shape":"HsmConfigurationNotFoundFault", - "error":{ - "code":"HsmConfigurationNotFoundFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

There is no Amazon Redshift HSM configuration with the specified identifier.

" - }, - { - "shape":"ClusterAlreadyExistsFault", - "error":{ - "code":"ClusterAlreadyExists", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The account already has a cluster with the given identifier.

" - } - ], - "documentation":"

Modifies the settings for a cluster. For example, you can add another security or parameter group, update the preferred maintenance window, or change the master user password. Resetting a cluster password or modifying the security groups associated with a cluster do not need a reboot. However, modifying a parameter group requires a reboot for parameters to take effect. For more information about managing clusters, go to Amazon Redshift Clusters in the Amazon Redshift Cluster Management Guide .

You can also change node type and the number of nodes to scale up or down the cluster. When resizing a cluster, you must specify both the number of nodes and the node type even if one of the parameters does not change.

" - }, - "ModifyClusterParameterGroup":{ - "name":"ModifyClusterParameterGroup", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"ModifyClusterParameterGroupMessage", - "documentation":"

" - }, - "output":{ - "shape":"ClusterParameterGroupNameMessage", - "documentation":"

Contains the output from the ModifyClusterParameterGroup and ResetClusterParameterGroup actions and indicate the parameter group involved and the status of the operation on the parameter group.

", - "resultWrapper":"ModifyClusterParameterGroupResult" - }, - "errors":[ - { - "shape":"ClusterParameterGroupNotFoundFault", - "error":{ - "code":"ClusterParameterGroupNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The parameter group name does not refer to an existing parameter group.

" - }, - { - "shape":"InvalidClusterParameterGroupStateFault", - "error":{ - "code":"InvalidClusterParameterGroupState", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The cluster parameter group action can not be completed because another task is in progress that involves the parameter group. Wait a few moments and try the operation again.

" - } - ], - "documentation":"

Modifies the parameters of a parameter group.

For more information about managing parameter groups, go to Amazon Redshift Parameter Groups in the Amazon Redshift Cluster Management Guide.

" - }, - "ModifyClusterSubnetGroup":{ - "name":"ModifyClusterSubnetGroup", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"ModifyClusterSubnetGroupMessage", - "documentation":"

" - }, - "output":{ - "shape":"ModifyClusterSubnetGroupResult", - "wrapper":true, - "documentation":"

Describes a subnet group.

", - "resultWrapper":"ModifyClusterSubnetGroupResult" - }, - "errors":[ - { - "shape":"ClusterSubnetGroupNotFoundFault", - "error":{ - "code":"ClusterSubnetGroupNotFoundFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The cluster subnet group name does not refer to an existing cluster subnet group.

" - }, - { - "shape":"ClusterSubnetQuotaExceededFault", - "error":{ - "code":"ClusterSubnetQuotaExceededFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request would result in user exceeding the allowed number of subnets in a cluster subnet groups. For information about increasing your quota, go to Limits in Amazon Redshift in the Amazon Redshift Cluster Management Guide.

" - }, - { - "shape":"SubnetAlreadyInUse", - "error":{ - "code":"SubnetAlreadyInUse", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

A specified subnet is already in use by another cluster.

" - }, - { - "shape":"InvalidSubnet", - "error":{ - "code":"InvalidSubnet", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The requested subnet is not valid, or not all of the subnets are in the same VPC.

" - }, - { - "shape":"UnauthorizedOperation", - "error":{ - "code":"UnauthorizedOperation", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Your account is not authorized to perform the requested operation.

" - } - ], - "documentation":"

Modifies a cluster subnet group to include the specified list of VPC subnets. The operation replaces the existing list of subnets with the new list of subnets.

" - }, - "ModifyEventSubscription":{ - "name":"ModifyEventSubscription", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"ModifyEventSubscriptionMessage", - "documentation":"

" - }, - "output":{ - "shape":"ModifyEventSubscriptionResult", - "wrapper":true, - "resultWrapper":"ModifyEventSubscriptionResult" - }, - "errors":[ - { - "shape":"SubscriptionNotFoundFault", - "error":{ - "code":"SubscriptionNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

An Amazon Redshift event notification subscription with the specified name does not exist.

" - }, - { - "shape":"SNSInvalidTopicFault", - "error":{ - "code":"SNSInvalidTopic", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Amazon SNS has responded that there is a problem with the specified Amazon SNS topic.

" - }, - { - "shape":"SNSNoAuthorizationFault", - "error":{ - "code":"SNSNoAuthorization", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

You do not have permission to publish to the specified Amazon SNS topic.

" - }, - { - "shape":"SNSTopicArnNotFoundFault", - "error":{ - "code":"SNSTopicArnNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

An Amazon SNS topic with the specified Amazon Resource Name (ARN) does not exist.

" - }, - { - "shape":"SubscriptionEventIdNotFoundFault", - "error":{ - "code":"SubscriptionEventIdNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

An Amazon Redshift event with the specified event ID does not exist.

" - }, - { - "shape":"SubscriptionCategoryNotFoundFault", - "error":{ - "code":"SubscriptionCategoryNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The value specified for the event category was not one of the allowed values, or it specified a category that does not apply to the specified source type. The allowed values are Configuration, Management, Monitoring, and Security.

" - }, - { - "shape":"SubscriptionSeverityNotFoundFault", - "error":{ - "code":"SubscriptionSeverityNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The value specified for the event severity was not one of the allowed values, or it specified a severity that does not apply to the specified source type. The allowed values are ERROR and INFO.

" - }, - { - "shape":"SourceNotFoundFault", - "error":{ - "code":"SourceNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified Amazon Redshift event source could not be found.

" - }, - { - "shape":"InvalidSubscriptionStateFault", - "error":{ - "code":"InvalidSubscriptionStateFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The subscription request is invalid because it is a duplicate request. This subscription request is already in progress.

" - } - ], - "documentation":"

Modifies an existing Amazon Redshift event notification subscription.

" - }, - "ModifySnapshotCopyRetentionPeriod":{ - "name":"ModifySnapshotCopyRetentionPeriod", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"ModifySnapshotCopyRetentionPeriodMessage", - "documentation":"

" - }, - "output":{ - "shape":"ModifySnapshotCopyRetentionPeriodResult", - "wrapper":true, - "documentation":"

Describes a cluster.

", - "resultWrapper":"ModifySnapshotCopyRetentionPeriodResult" - }, - "errors":[ - { - "shape":"ClusterNotFoundFault", - "error":{ - "code":"ClusterNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The ClusterIdentifier parameter does not refer to an existing cluster.

" - }, - { - "shape":"SnapshotCopyDisabledFault", - "error":{ - "code":"SnapshotCopyDisabledFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Cross-region snapshot copy was temporarily disabled. Try your request again.

" - }, - { - "shape":"UnauthorizedOperation", - "error":{ - "code":"UnauthorizedOperation", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Your account is not authorized to perform the requested operation.

" - }, - { - "shape":"InvalidClusterStateFault", - "error":{ - "code":"InvalidClusterState", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified cluster is not in the available state.

" - } - ], - "documentation":"

Modifies the number of days to retain automated snapshots in the destination region after they are copied from the source region.

" - }, - "PurchaseReservedNodeOffering":{ - "name":"PurchaseReservedNodeOffering", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"PurchaseReservedNodeOfferingMessage", - "documentation":"

" - }, - "output":{ - "shape":"PurchaseReservedNodeOfferingResult", - "wrapper":true, - "documentation":"

Describes a reserved node.

", - "resultWrapper":"PurchaseReservedNodeOfferingResult" - }, - "errors":[ - { - "shape":"ReservedNodeOfferingNotFoundFault", - "error":{ - "code":"ReservedNodeOfferingNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

Specified offering does not exist.

" - }, - { - "shape":"ReservedNodeAlreadyExistsFault", - "error":{ - "code":"ReservedNodeAlreadyExists", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

User already has a reservation with the given identifier.

" - }, - { - "shape":"ReservedNodeQuotaExceededFault", - "error":{ - "code":"ReservedNodeQuotaExceeded", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Request would exceed the user's compute node quota. For information about increasing your quota, go to Limits in Amazon Redshift in the Amazon Redshift Cluster Management Guide.

" - } - ], - "documentation":"

Allows you to purchase reserved nodes. Amazon Redshift offers a predefined set of reserved node offerings. You can purchase one of the offerings. You can call the DescribeReservedNodeOfferings API to obtain the available reserved node offerings. You can call this API by providing a specific reserved node offering and the number of nodes you want to reserve.

For more information about managing parameter groups, go to Purchasing Reserved Nodes in the Amazon Redshift Cluster Management Guide.

" - }, - "RebootCluster":{ - "name":"RebootCluster", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"RebootClusterMessage", - "documentation":"

" - }, - "output":{ - "shape":"RebootClusterResult", - "wrapper":true, - "documentation":"

Describes a cluster.

", - "resultWrapper":"RebootClusterResult" - }, - "errors":[ - { - "shape":"InvalidClusterStateFault", - "error":{ - "code":"InvalidClusterState", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified cluster is not in the available state.

" - }, - { - "shape":"ClusterNotFoundFault", - "error":{ - "code":"ClusterNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The ClusterIdentifier parameter does not refer to an existing cluster.

" - } - ], - "documentation":"

Reboots a cluster. This action is taken as soon as possible. It results in a momentary outage to the cluster, during which the cluster status is set to rebooting. A cluster event is created when the reboot is completed. Any pending cluster modifications (see ModifyCluster) are applied at this reboot. For more information about managing clusters, go to Amazon Redshift Clusters in the Amazon Redshift Cluster Management Guide

" - }, - "ResetClusterParameterGroup":{ - "name":"ResetClusterParameterGroup", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"ResetClusterParameterGroupMessage", - "documentation":"

" - }, - "output":{ - "shape":"ClusterParameterGroupNameMessage", - "documentation":"

Contains the output from the ModifyClusterParameterGroup and ResetClusterParameterGroup actions and indicate the parameter group involved and the status of the operation on the parameter group.

", - "resultWrapper":"ResetClusterParameterGroupResult" - }, - "errors":[ - { - "shape":"InvalidClusterParameterGroupStateFault", - "error":{ - "code":"InvalidClusterParameterGroupState", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The cluster parameter group action can not be completed because another task is in progress that involves the parameter group. Wait a few moments and try the operation again.

" - }, - { - "shape":"ClusterParameterGroupNotFoundFault", - "error":{ - "code":"ClusterParameterGroupNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The parameter group name does not refer to an existing parameter group.

" - } - ], - "documentation":"

Sets one or more parameters of the specified parameter group to their default values and sets the source values of the parameters to \"engine-default\". To reset the entire parameter group specify the ResetAllParameters parameter. For parameter changes to take effect you must reboot any associated clusters.

" - }, - "RestoreFromClusterSnapshot":{ - "name":"RestoreFromClusterSnapshot", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"RestoreFromClusterSnapshotMessage", - "documentation":"

" - }, - "output":{ - "shape":"RestoreFromClusterSnapshotResult", - "wrapper":true, - "documentation":"

Describes a cluster.

", - "resultWrapper":"RestoreFromClusterSnapshotResult" - }, - "errors":[ - { - "shape":"AccessToSnapshotDeniedFault", - "error":{ - "code":"AccessToSnapshotDenied", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The owner of the specified snapshot has not authorized your account to access the snapshot.

" - }, - { - "shape":"ClusterAlreadyExistsFault", - "error":{ - "code":"ClusterAlreadyExists", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The account already has a cluster with the given identifier.

" - }, - { - "shape":"ClusterSnapshotNotFoundFault", - "error":{ - "code":"ClusterSnapshotNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The snapshot identifier does not refer to an existing cluster snapshot.

" - }, - { - "shape":"ClusterQuotaExceededFault", - "error":{ - "code":"ClusterQuotaExceeded", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request would exceed the allowed number of cluster instances for this account. For information about increasing your quota, go to Limits in Amazon Redshift in the Amazon Redshift Cluster Management Guide.

" - }, - { - "shape":"InsufficientClusterCapacityFault", - "error":{ - "code":"InsufficientClusterCapacity", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The number of nodes specified exceeds the allotted capacity of the cluster.

" - }, - { - "shape":"InvalidClusterSnapshotStateFault", - "error":{ - "code":"InvalidClusterSnapshotState", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The state of the cluster snapshot is not available, or other accounts are authorized to access the snapshot.

" - }, - { - "shape":"InvalidRestoreFault", - "error":{ - "code":"InvalidRestore", - "httpStatusCode":406, - "senderFault":true - }, - "exception":true, - "documentation":"

The restore is invalid.

" - }, - { - "shape":"NumberOfNodesQuotaExceededFault", - "error":{ - "code":"NumberOfNodesQuotaExceeded", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The operation would exceed the number of nodes allotted to the account. For information about increasing your quota, go to Limits in Amazon Redshift in the Amazon Redshift Cluster Management Guide.

" - }, - { - "shape":"NumberOfNodesPerClusterLimitExceededFault", - "error":{ - "code":"NumberOfNodesPerClusterLimitExceeded", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The operation would exceed the number of nodes allowed for a cluster.

" - }, - { - "shape":"InvalidVPCNetworkStateFault", - "error":{ - "code":"InvalidVPCNetworkStateFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The cluster subnet group does not cover all Availability Zones.

" - }, - { - "shape":"InvalidClusterSubnetGroupStateFault", - "error":{ - "code":"InvalidClusterSubnetGroupStateFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The cluster subnet group cannot be deleted because it is in use.

" - }, - { - "shape":"InvalidSubnet", - "error":{ - "code":"InvalidSubnet", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The requested subnet is not valid, or not all of the subnets are in the same VPC.

" - }, - { - "shape":"ClusterSubnetGroupNotFoundFault", - "error":{ - "code":"ClusterSubnetGroupNotFoundFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The cluster subnet group name does not refer to an existing cluster subnet group.

" - }, - { - "shape":"UnauthorizedOperation", - "error":{ - "code":"UnauthorizedOperation", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Your account is not authorized to perform the requested operation.

" - }, - { - "shape":"HsmClientCertificateNotFoundFault", - "error":{ - "code":"HsmClientCertificateNotFoundFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

There is no Amazon Redshift HSM client certificate with the specified identifier.

" - }, - { - "shape":"HsmConfigurationNotFoundFault", - "error":{ - "code":"HsmConfigurationNotFoundFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

There is no Amazon Redshift HSM configuration with the specified identifier.

" - }, - { - "shape":"InvalidElasticIpFault", - "error":{ - "code":"InvalidElasticIpFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The Elastic IP (EIP) is invalid or cannot be found.

" - }, - { - "shape":"ClusterParameterGroupNotFoundFault", - "error":{ - "code":"ClusterParameterGroupNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The parameter group name does not refer to an existing parameter group.

" - }, - { - "shape":"ClusterSecurityGroupNotFoundFault", - "error":{ - "code":"ClusterSecurityGroupNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The cluster security group name does not refer to an existing cluster security group.

" - } - ], - "documentation":"

Creates a new cluster from a snapshot. Amazon Redshift creates the resulting cluster with the same configuration as the original cluster from which the snapshot was created, except that the new cluster is created with the default cluster security and parameter group. After Amazon Redshift creates the cluster you can use the ModifyCluster API to associate a different security group and different parameter group with the restored cluster.

If you restore a cluster into a VPC, you must provide a cluster subnet group where you want the cluster restored.

For more information about working with snapshots, go to Amazon Redshift Snapshots in the Amazon Redshift Cluster Management Guide.

" - }, - "RevokeClusterSecurityGroupIngress":{ - "name":"RevokeClusterSecurityGroupIngress", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"RevokeClusterSecurityGroupIngressMessage", - "documentation":"

???

" - }, - "output":{ - "shape":"RevokeClusterSecurityGroupIngressResult", - "wrapper":true, - "documentation":"

Describes a security group.

", - "resultWrapper":"RevokeClusterSecurityGroupIngressResult" - }, - "errors":[ - { - "shape":"ClusterSecurityGroupNotFoundFault", - "error":{ - "code":"ClusterSecurityGroupNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The cluster security group name does not refer to an existing cluster security group.

" - }, - { - "shape":"AuthorizationNotFoundFault", - "error":{ - "code":"AuthorizationNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified CIDR IP range or EC2 security group is not authorized for the specified cluster security group.

" - }, - { - "shape":"InvalidClusterSecurityGroupStateFault", - "error":{ - "code":"InvalidClusterSecurityGroupState", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The state of the cluster security group is not available.

" - } - ], - "documentation":"

Revokes an ingress rule in an Amazon Redshift security group for a previously authorized IP range or Amazon EC2 security group. To add an ingress rule, see AuthorizeClusterSecurityGroupIngress. For information about managing security groups, go to Amazon Redshift Cluster Security Groups in the Amazon Redshift Cluster Management Guide.

" - }, - "RevokeSnapshotAccess":{ - "name":"RevokeSnapshotAccess", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"RevokeSnapshotAccessMessage", - "documentation":"

" - }, - "output":{ - "shape":"RevokeSnapshotAccessResult", - "wrapper":true, - "documentation":"

Describes a snapshot.

", - "resultWrapper":"RevokeSnapshotAccessResult" - }, - "errors":[ - { - "shape":"AccessToSnapshotDeniedFault", - "error":{ - "code":"AccessToSnapshotDenied", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The owner of the specified snapshot has not authorized your account to access the snapshot.

" - }, - { - "shape":"AuthorizationNotFoundFault", - "error":{ - "code":"AuthorizationNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified CIDR IP range or EC2 security group is not authorized for the specified cluster security group.

" - }, - { - "shape":"ClusterSnapshotNotFoundFault", - "error":{ - "code":"ClusterSnapshotNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The snapshot identifier does not refer to an existing cluster snapshot.

" - } - ], - "documentation":"

Removes the ability of the specified AWS customer account to restore the specified snapshot. If the account is currently restoring the snapshot, the restore will run to completion.

For more information about working with snapshots, go to Amazon Redshift Snapshots in the Amazon Redshift Cluster Management Guide.

" - }, - "RotateEncryptionKey":{ - "name":"RotateEncryptionKey", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"RotateEncryptionKeyMessage", - "documentation":"

" - }, - "output":{ - "shape":"RotateEncryptionKeyResult", - "wrapper":true, - "documentation":"

Describes a cluster.

", - "resultWrapper":"RotateEncryptionKeyResult" - }, - "errors":[ - { - "shape":"ClusterNotFoundFault", - "error":{ - "code":"ClusterNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The ClusterIdentifier parameter does not refer to an existing cluster.

" - }, - { - "shape":"InvalidClusterStateFault", - "error":{ - "code":"InvalidClusterState", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified cluster is not in the available state.

" - } - ], - "documentation":"

Rotates the encryption keys for a cluster.

" - } - }, - "shapes":{ - "AccessToSnapshotDeniedFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"AccessToSnapshotDenied", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The owner of the specified snapshot has not authorized your account to access the snapshot.

" - }, - "AccountWithRestoreAccess":{ - "type":"structure", - "members":{ - "AccountId":{ - "shape":"String", - "documentation":"

The identifier of an AWS customer account authorized to restore a snapshot.

" - } - }, - "documentation":"

Describes an AWS customer account authorized to restore a snapshot.

" - }, - "AccountsWithRestoreAccessList":{ - "type":"list", - "member":{ - "shape":"AccountWithRestoreAccess", - "locationName":"AccountWithRestoreAccess" - } - }, - "AuthorizationAlreadyExistsFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"AuthorizationAlreadyExists", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified CIDR block or EC2 security group is already authorized for the specified cluster security group.

" - }, - "AuthorizationNotFoundFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"AuthorizationNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified CIDR IP range or EC2 security group is not authorized for the specified cluster security group.

" - }, - "AuthorizationQuotaExceededFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"AuthorizationQuotaExceeded", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The authorization quota for the cluster security group has been reached.

" - }, - "AuthorizeClusterSecurityGroupIngressMessage":{ - "type":"structure", - "required":["ClusterSecurityGroupName"], - "members":{ - "ClusterSecurityGroupName":{ - "shape":"String", - "documentation":"

The name of the security group to which the ingress rule is added.

" - }, - "CIDRIP":{ - "shape":"String", - "documentation":"

The IP range to be added the Amazon Redshift security group.

" - }, - "EC2SecurityGroupName":{ - "shape":"String", - "documentation":"

The EC2 security group to be added the Amazon Redshift security group.

" - }, - "EC2SecurityGroupOwnerId":{ - "shape":"String", - "documentation":"

The AWS account number of the owner of the security group specified by the EC2SecurityGroupName parameter. The AWS Access Key ID is not an acceptable value.

Example: 111122223333

" - } - }, - "documentation":"

???

" - }, - "AuthorizeSnapshotAccessMessage":{ - "type":"structure", - "required":[ - "SnapshotIdentifier", - "AccountWithRestoreAccess" - ], - "members":{ - "SnapshotIdentifier":{ - "shape":"String", - "documentation":"

The identifier of the snapshot the account is authorized to restore.

" - }, - "SnapshotClusterIdentifier":{ - "shape":"String", - "documentation":"

The identifier of the cluster the snapshot was created from. This parameter is required if your IAM user has a policy containing a snapshot resource element that specifies anything other than * for the cluster name.

" - }, - "AccountWithRestoreAccess":{ - "shape":"String", - "documentation":"

The identifier of the AWS customer account authorized to restore the specified snapshot.

" - } - }, - "documentation":"

" - }, - "AvailabilityZone":{ - "type":"structure", - "members":{ - "Name":{ - "shape":"String", - "documentation":"

The name of the availability zone.

" - } - }, - "wrapper":true, - "documentation":"

Describes an availability zone.

" - }, - "AvailabilityZoneList":{ - "type":"list", - "member":{ - "shape":"AvailabilityZone", - "locationName":"AvailabilityZone" - } - }, - "Boolean":{"type":"boolean"}, - "BooleanOptional":{"type":"boolean"}, - "BucketNotFoundFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"BucketNotFoundFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Could not find the specified S3 bucket.

" - }, - "Cluster":{ - "type":"structure", - "members":{ - "ClusterIdentifier":{ - "shape":"String", - "documentation":"

The unique identifier of the cluster.

" - }, - "NodeType":{ - "shape":"String", - "documentation":"

The node type for the nodes in the cluster.

" - }, - "ClusterStatus":{ - "shape":"String", - "documentation":"

The current state of this cluster. Possible values include available, creating, deleting, rebooting, renaming, and resizing.

" - }, - "ModifyStatus":{ - "shape":"String", - "documentation":"

The status of a modify operation, if any, initiated for the cluster.

" - }, - "MasterUsername":{ - "shape":"String", - "documentation":"

The master user name for the cluster. This name is used to connect to the database that is specified in DBName.

" - }, - "DBName":{ - "shape":"String", - "documentation":"

The name of the initial database that was created when the cluster was created. This same name is returned for the life of the cluster. If an initial database was not specified, a database named \"dev\" was created by default.

" - }, - "Endpoint":{ - "shape":"Endpoint", - "documentation":"

The connection endpoint.

" - }, - "ClusterCreateTime":{ - "shape":"TStamp", - "documentation":"

The date and time that the cluster was created.

" - }, - "AutomatedSnapshotRetentionPeriod":{ - "shape":"Integer", - "documentation":"

The number of days that automatic cluster snapshots are retained.

" - }, - "ClusterSecurityGroups":{ - "shape":"ClusterSecurityGroupMembershipList", - "documentation":"

A list of cluster security group that are associated with the cluster. Each security group is represented by an element that contains ClusterSecurityGroup.Name and ClusterSecurityGroup.Status subelements.

Cluster security groups are used when the cluster is not created in a VPC. Clusters that are created in a VPC use VPC security groups, which are listed by the VpcSecurityGroups parameter.

" - }, - "VpcSecurityGroups":{ - "shape":"VpcSecurityGroupMembershipList", - "documentation":"

A list of Virtual Private Cloud (VPC) security groups that are associated with the cluster. This parameter is returned only if the cluster is in a VPC.

" - }, - "ClusterParameterGroups":{ - "shape":"ClusterParameterGroupStatusList", - "documentation":"

The list of cluster parameter groups that are associated with this cluster.

" - }, - "ClusterSubnetGroupName":{ - "shape":"String", - "documentation":"

The name of the subnet group that is associated with the cluster. This parameter is valid only when the cluster is in a VPC.

" - }, - "VpcId":{ - "shape":"String", - "documentation":"

The identifier of the VPC the cluster is in, if the cluster is in a VPC.

" - }, - "AvailabilityZone":{ - "shape":"String", - "documentation":"

The name of the Availability Zone in which the cluster is located.

" - }, - "PreferredMaintenanceWindow":{ - "shape":"String", - "documentation":"

The weekly time range (in UTC) during which system maintenance can occur.

" - }, - "PendingModifiedValues":{ - "shape":"PendingModifiedValues", - "documentation":"

If present, changes to the cluster are pending. Specific pending changes are identified by subelements.

" - }, - "ClusterVersion":{ - "shape":"String", - "documentation":"

The version ID of the Amazon Redshift engine that is running on the cluster.

" - }, - "AllowVersionUpgrade":{ - "shape":"Boolean", - "documentation":"

If true, major version upgrades will be applied automatically to the cluster during the maintenance window.

" - }, - "NumberOfNodes":{ - "shape":"Integer", - "documentation":"

The number of compute nodes in the cluster.

" - }, - "PubliclyAccessible":{ - "shape":"Boolean", - "documentation":"

If true, the cluster can be accessed from a public network.

" - }, - "Encrypted":{ - "shape":"Boolean", - "documentation":"

If true, data in the cluster is encrypted at rest.

" - }, - "RestoreStatus":{ - "shape":"RestoreStatus", - "documentation":"

Describes the status of a cluster restore action. Returns null if the cluster was not created by restoring a snapshot.

" - }, - "HsmStatus":{ - "shape":"HsmStatus", - "documentation":"

Reports whether the Amazon Redshift cluster has finished applying any HSM settings changes specified in a modify cluster command.

Values: active, applying

" - }, - "ClusterSnapshotCopyStatus":{ - "shape":"ClusterSnapshotCopyStatus", - "documentation":"

Returns the destination region and retention period that are configured for cross-region snapshot copy.

" - }, - "ClusterPublicKey":{ - "shape":"String", - "documentation":"

The public key for the cluster.

" - }, - "ClusterNodes":{ - "shape":"ClusterNodesList", - "documentation":"

The nodes in a cluster.

" - }, - "ElasticIpStatus":{ - "shape":"ElasticIpStatus", - "documentation":"

Describes the status of the elastic IP (EIP) address.

" - }, - "ClusterRevisionNumber":{ - "shape":"String", - "documentation":"

The specific revision number of the database in the cluster.

" - }, - "Tags":{ - "shape":"TagList", - "documentation":"

The list of tags for the cluster.

" - }, - "KmsKeyId":{ - "shape":"String", - "documentation":"

The AWS Key Management Service (KMS) key ID of the encryption key used to encrypt data in the cluster.

" - } - }, - "wrapper":true, - "documentation":"

Describes a cluster.

" - }, - "ClusterAlreadyExistsFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"ClusterAlreadyExists", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The account already has a cluster with the given identifier.

" - }, - "ClusterList":{ - "type":"list", - "member":{ - "shape":"Cluster", - "locationName":"Cluster" - } - }, - "ClusterNode":{ - "type":"structure", - "members":{ - "NodeRole":{ - "shape":"String", - "documentation":"

Whether the node is a leader node or a compute node.

" - }, - "PrivateIPAddress":{ - "shape":"String", - "documentation":"

The private IP address of a node within a cluster.

" - }, - "PublicIPAddress":{ - "shape":"String", - "documentation":"

The public IP address of a node within a cluster.

" - } - }, - "documentation":"

The identifier of a node in a cluster.

" - }, - "ClusterNodesList":{ - "type":"list", - "member":{"shape":"ClusterNode"} - }, - "ClusterNotFoundFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"ClusterNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The ClusterIdentifier parameter does not refer to an existing cluster.

" - }, - "ClusterParameterGroup":{ - "type":"structure", - "members":{ - "ParameterGroupName":{ - "shape":"String", - "documentation":"

The name of the cluster parameter group.

" - }, - "ParameterGroupFamily":{ - "shape":"String", - "documentation":"

The name of the cluster parameter group family that this cluster parameter group is compatible with.

" - }, - "Description":{ - "shape":"String", - "documentation":"

The description of the parameter group.

" - }, - "Tags":{ - "shape":"TagList", - "documentation":"

The list of tags for the cluster parameter group.

" - } - }, - "wrapper":true, - "documentation":"

Describes a parameter group.

" - }, - "ClusterParameterGroupAlreadyExistsFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"ClusterParameterGroupAlreadyExists", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

A cluster parameter group with the same name already exists.

" - }, - "ClusterParameterGroupDetails":{ - "type":"structure", - "members":{ - "Parameters":{ - "shape":"ParametersList", - "documentation":"

A list of Parameter instances. Each instance lists the parameters of one cluster parameter group.

" - }, - "Marker":{ - "shape":"String", - "documentation":"

A value that indicates the starting point for the next set of response records in a subsequent request. If a value is returned in a response, you can retrieve the next set of records by providing this returned marker value in the Marker parameter and retrying the command. If the Marker field is empty, all response records have been retrieved for the request.

" - } - }, - "documentation":"

Contains the output from the DescribeClusterParameters action.

" - }, - "ClusterParameterGroupNameMessage":{ - "type":"structure", - "members":{ - "ParameterGroupName":{ - "shape":"String", - "documentation":"

The name of the cluster parameter group.

" - }, - "ParameterGroupStatus":{ - "shape":"String", - "documentation":"

The status of the parameter group. For example, if you made a change to a parameter group name-value pair, then the change could be pending a reboot of an associated cluster.

" - } - }, - "documentation":"

Contains the output from the ModifyClusterParameterGroup and ResetClusterParameterGroup actions and indicate the parameter group involved and the status of the operation on the parameter group.

" - }, - "ClusterParameterGroupNotFoundFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"ClusterParameterGroupNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The parameter group name does not refer to an existing parameter group.

" - }, - "ClusterParameterGroupQuotaExceededFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"ClusterParameterGroupQuotaExceeded", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request would result in the user exceeding the allowed number of cluster parameter groups. For information about increasing your quota, go to Limits in Amazon Redshift in the Amazon Redshift Cluster Management Guide.

" - }, - "ClusterParameterGroupStatus":{ - "type":"structure", - "members":{ - "ParameterGroupName":{ - "shape":"String", - "documentation":"

The name of the cluster parameter group.

" - }, - "ParameterApplyStatus":{ - "shape":"String", - "documentation":"

The status of parameter updates.

" - } - }, - "documentation":"

Describes the status of a parameter group.

" - }, - "ClusterParameterGroupStatusList":{ - "type":"list", - "member":{ - "shape":"ClusterParameterGroupStatus", - "locationName":"ClusterParameterGroup" - } - }, - "ClusterParameterGroupsMessage":{ - "type":"structure", - "members":{ - "Marker":{ - "shape":"String", - "documentation":"

A value that indicates the starting point for the next set of response records in a subsequent request. If a value is returned in a response, you can retrieve the next set of records by providing this returned marker value in the Marker parameter and retrying the command. If the Marker field is empty, all response records have been retrieved for the request.

" - }, - "ParameterGroups":{ - "shape":"ParameterGroupList", - "documentation":"

A list of ClusterParameterGroup instances. Each instance describes one cluster parameter group.

" - } - }, - "documentation":"

Contains the output from the DescribeClusterParameterGroups action.

" - }, - "ClusterQuotaExceededFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"ClusterQuotaExceeded", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request would exceed the allowed number of cluster instances for this account. For information about increasing your quota, go to Limits in Amazon Redshift in the Amazon Redshift Cluster Management Guide.

" - }, - "ClusterSecurityGroup":{ - "type":"structure", - "members":{ - "ClusterSecurityGroupName":{ - "shape":"String", - "documentation":"

The name of the cluster security group to which the operation was applied.

" - }, - "Description":{ - "shape":"String", - "documentation":"

A description of the security group.

" - }, - "EC2SecurityGroups":{ - "shape":"EC2SecurityGroupList", - "documentation":"

A list of EC2 security groups that are permitted to access clusters associated with this cluster security group.

" - }, - "IPRanges":{ - "shape":"IPRangeList", - "documentation":"

A list of IP ranges (CIDR blocks) that are permitted to access clusters associated with this cluster security group.

" - }, - "Tags":{ - "shape":"TagList", - "documentation":"

The list of tags for the cluster security group.

" - } - }, - "wrapper":true, - "documentation":"

Describes a security group.

" - }, - "ClusterSecurityGroupAlreadyExistsFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"ClusterSecurityGroupAlreadyExists", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

A cluster security group with the same name already exists.

" - }, - "ClusterSecurityGroupMembership":{ - "type":"structure", - "members":{ - "ClusterSecurityGroupName":{ - "shape":"String", - "documentation":"

The name of the cluster security group.

" - }, - "Status":{ - "shape":"String", - "documentation":"

The status of the cluster security group.

" - } - }, - "documentation":"

Describes a security group.

" - }, - "ClusterSecurityGroupMembershipList":{ - "type":"list", - "member":{ - "shape":"ClusterSecurityGroupMembership", - "locationName":"ClusterSecurityGroup" - } - }, - "ClusterSecurityGroupMessage":{ - "type":"structure", - "members":{ - "Marker":{ - "shape":"String", - "documentation":"

A value that indicates the starting point for the next set of response records in a subsequent request. If a value is returned in a response, you can retrieve the next set of records by providing this returned marker value in the Marker parameter and retrying the command. If the Marker field is empty, all response records have been retrieved for the request.

" - }, - "ClusterSecurityGroups":{ - "shape":"ClusterSecurityGroups", - "documentation":"

A list of ClusterSecurityGroup instances.

" - } - }, - "documentation":"

Contains the output from the DescribeClusterSecurityGroups action.

" - }, - "ClusterSecurityGroupNameList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"ClusterSecurityGroupName" - } - }, - "ClusterSecurityGroupNotFoundFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"ClusterSecurityGroupNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The cluster security group name does not refer to an existing cluster security group.

" - }, - "ClusterSecurityGroupQuotaExceededFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"QuotaExceeded.ClusterSecurityGroup", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request would result in the user exceeding the allowed number of cluster security groups. For information about increasing your quota, go to Limits in Amazon Redshift in the Amazon Redshift Cluster Management Guide.

" - }, - "ClusterSecurityGroups":{ - "type":"list", - "member":{ - "shape":"ClusterSecurityGroup", - "locationName":"ClusterSecurityGroup" - } - }, - "ClusterSnapshotAlreadyExistsFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"ClusterSnapshotAlreadyExists", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The value specified as a snapshot identifier is already used by an existing snapshot.

" - }, - "ClusterSnapshotCopyStatus":{ - "type":"structure", - "members":{ - "DestinationRegion":{ - "shape":"String", - "documentation":"

The destination region that snapshots are automatically copied to when cross-region snapshot copy is enabled.

" - }, - "RetentionPeriod":{ - "shape":"Long", - "documentation":"

The number of days that automated snapshots are retained in the destination region after they are copied from a source region.

" - } - }, - "documentation":"

Returns the destination region and retention period that are configured for cross-region snapshot copy.

" - }, - "ClusterSnapshotNotFoundFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"ClusterSnapshotNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The snapshot identifier does not refer to an existing cluster snapshot.

" - }, - "ClusterSnapshotQuotaExceededFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"ClusterSnapshotQuotaExceeded", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request would result in the user exceeding the allowed number of cluster snapshots.

" - }, - "ClusterSubnetGroup":{ - "type":"structure", - "members":{ - "ClusterSubnetGroupName":{ - "shape":"String", - "documentation":"

The name of the cluster subnet group.

" - }, - "Description":{ - "shape":"String", - "documentation":"

The description of the cluster subnet group.

" - }, - "VpcId":{ - "shape":"String", - "documentation":"

The VPC ID of the cluster subnet group.

" - }, - "SubnetGroupStatus":{ - "shape":"String", - "documentation":"

The status of the cluster subnet group. Possible values are Complete, Incomplete and Invalid.

" - }, - "Subnets":{ - "shape":"SubnetList", - "documentation":"

A list of the VPC Subnet elements.

" - }, - "Tags":{ - "shape":"TagList", - "documentation":"

The list of tags for the cluster subnet group.

" - } - }, - "wrapper":true, - "documentation":"

Describes a subnet group.

" - }, - "ClusterSubnetGroupAlreadyExistsFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"ClusterSubnetGroupAlreadyExists", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

A ClusterSubnetGroupName is already used by an existing cluster subnet group.

" - }, - "ClusterSubnetGroupMessage":{ - "type":"structure", - "members":{ - "Marker":{ - "shape":"String", - "documentation":"

A value that indicates the starting point for the next set of response records in a subsequent request. If a value is returned in a response, you can retrieve the next set of records by providing this returned marker value in the Marker parameter and retrying the command. If the Marker field is empty, all response records have been retrieved for the request.

" - }, - "ClusterSubnetGroups":{ - "shape":"ClusterSubnetGroups", - "documentation":"

A list of ClusterSubnetGroup instances.

" - } - }, - "documentation":"

Contains the output from the DescribeClusterSubnetGroups action.

" - }, - "ClusterSubnetGroupNotFoundFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"ClusterSubnetGroupNotFoundFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The cluster subnet group name does not refer to an existing cluster subnet group.

" - }, - "ClusterSubnetGroupQuotaExceededFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"ClusterSubnetGroupQuotaExceeded", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request would result in user exceeding the allowed number of cluster subnet groups. For information about increasing your quota, go to Limits in Amazon Redshift in the Amazon Redshift Cluster Management Guide.

" - }, - "ClusterSubnetGroups":{ - "type":"list", - "member":{ - "shape":"ClusterSubnetGroup", - "locationName":"ClusterSubnetGroup" - } - }, - "ClusterSubnetQuotaExceededFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"ClusterSubnetQuotaExceededFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request would result in user exceeding the allowed number of subnets in a cluster subnet groups. For information about increasing your quota, go to Limits in Amazon Redshift in the Amazon Redshift Cluster Management Guide.

" - }, - "ClusterVersion":{ - "type":"structure", - "members":{ - "ClusterVersion":{ - "shape":"String", - "documentation":"

The version number used by the cluster.

" - }, - "ClusterParameterGroupFamily":{ - "shape":"String", - "documentation":"

The name of the cluster parameter group family for the cluster.

" - }, - "Description":{ - "shape":"String", - "documentation":"

The description of the cluster version.

" - } - }, - "documentation":"

Describes a cluster version, including the parameter group family and description of the version.

" - }, - "ClusterVersionList":{ - "type":"list", - "member":{ - "shape":"ClusterVersion", - "locationName":"ClusterVersion" - } - }, - "ClusterVersionsMessage":{ - "type":"structure", - "members":{ - "Marker":{ - "shape":"String", - "documentation":"

A value that indicates the starting point for the next set of response records in a subsequent request. If a value is returned in a response, you can retrieve the next set of records by providing this returned marker value in the Marker parameter and retrying the command. If the Marker field is empty, all response records have been retrieved for the request.

" - }, - "ClusterVersions":{ - "shape":"ClusterVersionList", - "documentation":"

A list of Version elements.

" - } - }, - "documentation":"

Contains the output from the DescribeClusterVersions action.

" - }, - "ClustersMessage":{ - "type":"structure", - "members":{ - "Marker":{ - "shape":"String", - "documentation":"

A value that indicates the starting point for the next set of response records in a subsequent request. If a value is returned in a response, you can retrieve the next set of records by providing this returned marker value in the Marker parameter and retrying the command. If the Marker field is empty, all response records have been retrieved for the request.

" - }, - "Clusters":{ - "shape":"ClusterList", - "documentation":"

A list of Cluster objects, where each object describes one cluster.

" - } - }, - "documentation":"

Contains the output from the DescribeClusters action.

" - }, - "CopyClusterSnapshotMessage":{ - "type":"structure", - "required":[ - "SourceSnapshotIdentifier", - "TargetSnapshotIdentifier" - ], - "members":{ - "SourceSnapshotIdentifier":{ - "shape":"String", - "documentation":"

The identifier for the source snapshot.

Constraints:

" - }, - "SourceSnapshotClusterIdentifier":{ - "shape":"String", - "documentation":"

The identifier of the cluster the source snapshot was created from. This parameter is required if your IAM user has a policy containing a snapshot resource element that specifies anything other than * for the cluster name.

Constraints:

" - }, - "TargetSnapshotIdentifier":{ - "shape":"String", - "documentation":"

The identifier given to the new manual snapshot.

Constraints:

" - } - }, - "documentation":"

" - }, - "CopyToRegionDisabledFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"CopyToRegionDisabledFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Cross-region snapshot copy was temporarily disabled. Try your request again.

" - }, - "CreateClusterMessage":{ - "type":"structure", - "required":[ - "ClusterIdentifier", - "NodeType", - "MasterUsername", - "MasterUserPassword" - ], - "members":{ - "DBName":{ - "shape":"String", - "documentation":"

The name of the first database to be created when the cluster is created.

To create additional databases after the cluster is created, connect to the cluster with a SQL client and use SQL commands to create a database. For more information, go to Create a Database in the Amazon Redshift Database Developer Guide.

Default: dev

Constraints:

" - }, - "ClusterIdentifier":{ - "shape":"String", - "documentation":"

A unique identifier for the cluster. You use this identifier to refer to the cluster for any subsequent cluster operations such as deleting or modifying. The identifier also appears in the Amazon Redshift console.

Constraints:

Example: myexamplecluster

" - }, - "ClusterType":{ - "shape":"String", - "documentation":"

The type of the cluster. When cluster type is specified as

Valid Values: multi-node | single-node

Default: multi-node

" - }, - "NodeType":{ - "shape":"String", - "documentation":"

The node type to be provisioned for the cluster. For information about node types, go to Working with Clusters in the Amazon Redshift Cluster Management Guide.

Valid Values: dw1.xlarge | dw1.8xlarge | dw2.large | dw2.8xlarge.

" - }, - "MasterUsername":{ - "shape":"String", - "documentation":"

The user name associated with the master user account for the cluster that is being created.

Constraints:

" - }, - "MasterUserPassword":{ - "shape":"String", - "documentation":"

The password associated with the master user account for the cluster that is being created.

Constraints:

" - }, - "ClusterSecurityGroups":{ - "shape":"ClusterSecurityGroupNameList", - "documentation":"

A list of security groups to be associated with this cluster.

Default: The default cluster security group for Amazon Redshift.

" - }, - "VpcSecurityGroupIds":{ - "shape":"VpcSecurityGroupIdList", - "documentation":"

A list of Virtual Private Cloud (VPC) security groups to be associated with the cluster.

Default: The default VPC security group is associated with the cluster.

" - }, - "ClusterSubnetGroupName":{ - "shape":"String", - "documentation":"

The name of a cluster subnet group to be associated with this cluster.

If this parameter is not provided the resulting cluster will be deployed outside virtual private cloud (VPC).

" - }, - "AvailabilityZone":{ - "shape":"String", - "documentation":"

The EC2 Availability Zone (AZ) in which you want Amazon Redshift to provision the cluster. For example, if you have several EC2 instances running in a specific Availability Zone, then you might want the cluster to be provisioned in the same zone in order to decrease network latency.

Default: A random, system-chosen Availability Zone in the region that is specified by the endpoint.

Example: us-east-1d

Constraint: The specified Availability Zone must be in the same region as the current endpoint.

" - }, - "PreferredMaintenanceWindow":{ - "shape":"String", - "documentation":"

The weekly time range (in UTC) during which automated cluster maintenance can occur.

Format: ddd:hh24:mi-ddd:hh24:mi

Default: A 30-minute window selected at random from an 8-hour block of time per region, occurring on a random day of the week. For more information about the time blocks for each region, see Maintenance Windows in Amazon Redshift Cluster Management Guide.

Valid Days: Mon | Tue | Wed | Thu | Fri | Sat | Sun

Constraints: Minimum 30-minute window.

" - }, - "ClusterParameterGroupName":{ - "shape":"String", - "documentation":"

The name of the parameter group to be associated with this cluster.

Default: The default Amazon Redshift cluster parameter group. For information about the default parameter group, go to Working with Amazon Redshift Parameter Groups

Constraints:

" - }, - "AutomatedSnapshotRetentionPeriod":{ - "shape":"IntegerOptional", - "documentation":"

The number of days that automated snapshots are retained. If the value is 0, automated snapshots are disabled. Even if automated snapshots are disabled, you can still create manual snapshots when you want with CreateClusterSnapshot.

Default: 1

Constraints: Must be a value from 0 to 35.

" - }, - "Port":{ - "shape":"IntegerOptional", - "documentation":"

The port number on which the cluster accepts incoming connections.

The cluster is accessible only via the JDBC and ODBC connection strings. Part of the connection string requires the port on which the cluster will listen for incoming connections.

Default: 5439

Valid Values: 1150-65535

" - }, - "ClusterVersion":{ - "shape":"String", - "documentation":"

The version of the Amazon Redshift engine software that you want to deploy on the cluster.

The version selected runs on all the nodes in the cluster.

Constraints: Only version 1.0 is currently available.

Example: 1.0

" - }, - "AllowVersionUpgrade":{ - "shape":"BooleanOptional", - "documentation":"

If true, major version upgrades can be applied during the maintenance window to the Amazon Redshift engine that is running on the cluster.

When a new major version of the Amazon Redshift engine is released, you can request that the service automatically apply upgrades during the maintenance window to the Amazon Redshift engine that is running on your cluster.

Default: true

" - }, - "NumberOfNodes":{ - "shape":"IntegerOptional", - "documentation":"

The number of compute nodes in the cluster. This parameter is required when the ClusterType parameter is specified as multi-node.

For information about determining how many nodes you need, go to Working with Clusters in the Amazon Redshift Cluster Management Guide.

If you don't specify this parameter, you get a single-node cluster. When requesting a multi-node cluster, you must specify the number of nodes that you want in the cluster.

Default: 1

Constraints: Value must be at least 1 and no more than 100.

" - }, - "PubliclyAccessible":{ - "shape":"BooleanOptional", - "documentation":"

If true, the cluster can be accessed from a public network.

" - }, - "Encrypted":{ - "shape":"BooleanOptional", - "documentation":"

If true, the data in the cluster is encrypted at rest.

Default: false

" - }, - "HsmClientCertificateIdentifier":{ - "shape":"String", - "documentation":"

Specifies the name of the HSM client certificate the Amazon Redshift cluster uses to retrieve the data encryption keys stored in an HSM.

" - }, - "HsmConfigurationIdentifier":{ - "shape":"String", - "documentation":"

Specifies the name of the HSM configuration that contains the information the Amazon Redshift cluster can use to retrieve and store keys in an HSM.

" - }, - "ElasticIp":{ - "shape":"String", - "documentation":"

The Elastic IP (EIP) address for the cluster.

Constraints: The cluster must be provisioned in EC2-VPC and publicly-accessible through an Internet gateway. For more information about provisioning clusters in EC2-VPC, go to Supported Platforms to Launch Your Cluster in the Amazon Redshift Cluster Management Guide.

" - }, - "Tags":{ - "shape":"TagList", - "documentation":"

A list of tag instances.

" - }, - "KmsKeyId":{ - "shape":"String", - "documentation":"

The AWS Key Management Service (KMS) key ID of the encryption key that you want to use to encrypt data in the cluster.

" - } - }, - "documentation":"

" - }, - "CreateClusterParameterGroupMessage":{ - "type":"structure", - "required":[ - "ParameterGroupName", - "ParameterGroupFamily", - "Description" - ], - "members":{ - "ParameterGroupName":{ - "shape":"String", - "documentation":"

The name of the cluster parameter group.

Constraints:

This value is stored as a lower-case string." - }, - "ParameterGroupFamily":{ - "shape":"String", - "documentation":"

The Amazon Redshift engine version to which the cluster parameter group applies. The cluster engine version determines the set of parameters.

To get a list of valid parameter group family names, you can call DescribeClusterParameterGroups. By default, Amazon Redshift returns a list of all the parameter groups that are owned by your AWS account, including the default parameter groups for each Amazon Redshift engine version. The parameter group family names associated with the default parameter groups provide you the valid values. For example, a valid family name is \"redshift-1.0\".

" - }, - "Description":{ - "shape":"String", - "documentation":"

A description of the parameter group.

" - }, - "Tags":{ - "shape":"TagList", - "documentation":"

A list of tag instances.

" - } - }, - "documentation":"

" - }, - "CreateClusterSecurityGroupMessage":{ - "type":"structure", - "required":[ - "ClusterSecurityGroupName", - "Description" - ], - "members":{ - "ClusterSecurityGroupName":{ - "shape":"String", - "documentation":"

The name for the security group. Amazon Redshift stores the value as a lowercase string.

Constraints:

Example: examplesecuritygroup

" - }, - "Description":{ - "shape":"String", - "documentation":"

A description for the security group.

" - }, - "Tags":{ - "shape":"TagList", - "documentation":"

A list of tag instances.

" - } - }, - "documentation":"

???

" - }, - "CreateClusterSnapshotMessage":{ - "type":"structure", - "required":[ - "SnapshotIdentifier", - "ClusterIdentifier" - ], - "members":{ - "SnapshotIdentifier":{ - "shape":"String", - "documentation":"

A unique identifier for the snapshot that you are requesting. This identifier must be unique for all snapshots within the AWS account.

Constraints:

Example: my-snapshot-id

" - }, - "ClusterIdentifier":{ - "shape":"String", - "documentation":"

The cluster identifier for which you want a snapshot.

" - }, - "Tags":{ - "shape":"TagList", - "documentation":"

A list of tag instances.

" - } - }, - "documentation":"

" - }, - "CreateClusterSubnetGroupMessage":{ - "type":"structure", - "required":[ - "ClusterSubnetGroupName", - "Description", - "SubnetIds" - ], - "members":{ - "ClusterSubnetGroupName":{ - "shape":"String", - "documentation":"

The name for the subnet group. Amazon Redshift stores the value as a lowercase string.

Constraints:

Example: examplesubnetgroup

" - }, - "Description":{ - "shape":"String", - "documentation":"

A description for the subnet group.

" - }, - "SubnetIds":{ - "shape":"SubnetIdentifierList", - "documentation":"

An array of VPC subnet IDs. A maximum of 20 subnets can be modified in a single request.

" - }, - "Tags":{ - "shape":"TagList", - "documentation":"

A list of tag instances.

" - } - }, - "documentation":"

" - }, - "CreateEventSubscriptionMessage":{ - "type":"structure", - "required":[ - "SubscriptionName", - "SnsTopicArn" - ], - "members":{ - "SubscriptionName":{ - "shape":"String", - "documentation":"

The name of the event subscription to be created.

Constraints:

" - }, - "SnsTopicArn":{ - "shape":"String", - "documentation":"

The Amazon Resource Name (ARN) of the Amazon SNS topic used to transmit the event notifications. The ARN is created by Amazon SNS when you create a topic and subscribe to it.

" - }, - "SourceType":{ - "shape":"String", - "documentation":"

The type of source that will be generating the events. For example, if you want to be notified of events generated by a cluster, you would set this parameter to cluster. If this value is not specified, events are returned for all Amazon Redshift objects in your AWS account. You must specify a source type in order to specify source IDs.

Valid values: cluster, cluster-parameter-group, cluster-security-group, and cluster-snapshot.

" - }, - "SourceIds":{ - "shape":"SourceIdsList", - "documentation":"

A list of one or more identifiers of Amazon Redshift source objects. All of the objects must be of the same type as was specified in the source type parameter. The event subscription will return only events generated by the specified objects. If not specified, then events are returned for all objects within the source type specified.

Example: my-cluster-1, my-cluster-2

Example: my-snapshot-20131010

" - }, - "EventCategories":{ - "shape":"EventCategoriesList", - "documentation":"

Specifies the Amazon Redshift event categories to be published by the event notification subscription.

Values: Configuration, Management, Monitoring, Security

" - }, - "Severity":{ - "shape":"String", - "documentation":"

Specifies the Amazon Redshift event severity to be published by the event notification subscription.

Values: ERROR, INFO

" - }, - "Enabled":{ - "shape":"BooleanOptional", - "documentation":"

A Boolean value; set to true to activate the subscription, set to false to create the subscription but not active it.

" - }, - "Tags":{ - "shape":"TagList", - "documentation":"

A list of tag instances.

" - } - }, - "documentation":"

" - }, - "CreateHsmClientCertificateMessage":{ - "type":"structure", - "required":["HsmClientCertificateIdentifier"], - "members":{ - "HsmClientCertificateIdentifier":{ - "shape":"String", - "documentation":"

The identifier to be assigned to the new HSM client certificate that the cluster will use to connect to the HSM to use the database encryption keys.

" - }, - "Tags":{ - "shape":"TagList", - "documentation":"

A list of tag instances.

" - } - }, - "documentation":"

" - }, - "CreateHsmConfigurationMessage":{ - "type":"structure", - "required":[ - "HsmConfigurationIdentifier", - "Description", - "HsmIpAddress", - "HsmPartitionName", - "HsmPartitionPassword", - "HsmServerPublicCertificate" - ], - "members":{ - "HsmConfigurationIdentifier":{ - "shape":"String", - "documentation":"

The identifier to be assigned to the new Amazon Redshift HSM configuration.

" - }, - "Description":{ - "shape":"String", - "documentation":"

A text description of the HSM configuration to be created.

" - }, - "HsmIpAddress":{ - "shape":"String", - "documentation":"

The IP address that the Amazon Redshift cluster must use to access the HSM.

" - }, - "HsmPartitionName":{ - "shape":"String", - "documentation":"

The name of the partition in the HSM where the Amazon Redshift clusters will store their database encryption keys.

" - }, - "HsmPartitionPassword":{ - "shape":"String", - "documentation":"

The password required to access the HSM partition.

" - }, - "HsmServerPublicCertificate":{ - "shape":"String", - "documentation":"

The HSMs public certificate file. When using Cloud HSM, the file name is server.pem.

" - }, - "Tags":{ - "shape":"TagList", - "documentation":"

A list of tag instances.

" - } - }, - "documentation":"

" - }, - "CreateTagsMessage":{ - "type":"structure", - "required":[ - "ResourceName", - "Tags" - ], - "members":{ - "ResourceName":{ - "shape":"String", - "documentation":"

The Amazon Resource Name (ARN) to which you want to add the tag or tags. For example, arn:aws:redshift:us-east-1:123456789:cluster:t1.

" - }, - "Tags":{ - "shape":"TagList", - "documentation":"

One or more name/value pairs to add as tags to the specified resource. Each tag name is passed in with the parameter tag-key and the corresponding value is passed in with the parameter tag-value. The tag-key and tag-value parameters are separated by a colon (:). Separate multiple tags with a space. For example, --tags \"tag-key\"=\"owner\":\"tag-value\"=\"admin\" \"tag-key\"=\"environment\":\"tag-value\"=\"test\" \"tag-key\"=\"version\":\"tag-value\"=\"1.0\".

" - } - }, - "documentation":"

Contains the output from the CreateTags action.

" - }, - "DefaultClusterParameters":{ - "type":"structure", - "members":{ - "ParameterGroupFamily":{ - "shape":"String", - "documentation":"

The name of the cluster parameter group family to which the engine default parameters apply.

" - }, - "Marker":{ - "shape":"String", - "documentation":"

A value that indicates the starting point for the next set of response records in a subsequent request. If a value is returned in a response, you can retrieve the next set of records by providing this returned marker value in the Marker parameter and retrying the command. If the Marker field is empty, all response records have been retrieved for the request.

" - }, - "Parameters":{ - "shape":"ParametersList", - "documentation":"

The list of cluster default parameters.

" - } - }, - "wrapper":true, - "documentation":"

Describes the default cluster parameters for a parameter group family.

" - }, - "DeleteClusterMessage":{ - "type":"structure", - "required":["ClusterIdentifier"], - "members":{ - "ClusterIdentifier":{ - "shape":"String", - "documentation":"

The identifier of the cluster to be deleted.

Constraints:

" - }, - "SkipFinalClusterSnapshot":{ - "shape":"Boolean", - "documentation":"

Determines whether a final snapshot of the cluster is created before Amazon Redshift deletes the cluster. If true, a final cluster snapshot is not created. If false, a final cluster snapshot is created before the cluster is deleted.

The FinalClusterSnapshotIdentifier parameter must be specified if SkipFinalClusterSnapshot is false.

Default: false

" - }, - "FinalClusterSnapshotIdentifier":{ - "shape":"String", - "documentation":"

The identifier of the final snapshot that is to be created immediately before deleting the cluster. If this parameter is provided, SkipFinalClusterSnapshot must be false.

Constraints:

" - } - }, - "documentation":"

" - }, - "DeleteClusterParameterGroupMessage":{ - "type":"structure", - "required":["ParameterGroupName"], - "members":{ - "ParameterGroupName":{ - "shape":"String", - "documentation":"

The name of the parameter group to be deleted.

Constraints:

" - } - }, - "documentation":"

" - }, - "DeleteClusterSecurityGroupMessage":{ - "type":"structure", - "required":["ClusterSecurityGroupName"], - "members":{ - "ClusterSecurityGroupName":{ - "shape":"String", - "documentation":"

The name of the cluster security group to be deleted.

" - } - }, - "documentation":"

" - }, - "DeleteClusterSnapshotMessage":{ - "type":"structure", - "required":["SnapshotIdentifier"], - "members":{ - "SnapshotIdentifier":{ - "shape":"String", - "documentation":"

The unique identifier of the manual snapshot to be deleted.

Constraints: Must be the name of an existing snapshot that is in the available state.

" - }, - "SnapshotClusterIdentifier":{ - "shape":"String", - "documentation":"

The unique identifier of the cluster the snapshot was created from. This parameter is required if your IAM user has a policy containing a snapshot resource element that specifies anything other than * for the cluster name.

Constraints: Must be the name of valid cluster.

" - } - }, - "documentation":"

" - }, - "DeleteClusterSubnetGroupMessage":{ - "type":"structure", - "required":["ClusterSubnetGroupName"], - "members":{ - "ClusterSubnetGroupName":{ - "shape":"String", - "documentation":"

The name of the cluster subnet group name to be deleted.

" - } - } - }, - "DeleteEventSubscriptionMessage":{ - "type":"structure", - "required":["SubscriptionName"], - "members":{ - "SubscriptionName":{ - "shape":"String", - "documentation":"

The name of the Amazon Redshift event notification subscription to be deleted.

" - } - }, - "documentation":"

" - }, - "DeleteHsmClientCertificateMessage":{ - "type":"structure", - "required":["HsmClientCertificateIdentifier"], - "members":{ - "HsmClientCertificateIdentifier":{ - "shape":"String", - "documentation":"

The identifier of the HSM client certificate to be deleted.

" - } - }, - "documentation":"

" - }, - "DeleteHsmConfigurationMessage":{ - "type":"structure", - "required":["HsmConfigurationIdentifier"], - "members":{ - "HsmConfigurationIdentifier":{ - "shape":"String", - "documentation":"

The identifier of the Amazon Redshift HSM configuration to be deleted.

" - } - }, - "documentation":"

" - }, - "DeleteTagsMessage":{ - "type":"structure", - "required":[ - "ResourceName", - "TagKeys" - ], - "members":{ - "ResourceName":{ - "shape":"String", - "documentation":"

The Amazon Resource Name (ARN) from which you want to remove the tag or tags. For example, arn:aws:redshift:us-east-1:123456789:cluster:t1.

" - }, - "TagKeys":{ - "shape":"TagKeyList", - "documentation":"

The tag key that you want to delete.

" - } - }, - "documentation":"

Contains the output from the DeleteTags action.

" - }, - "DescribeClusterParameterGroupsMessage":{ - "type":"structure", - "members":{ - "ParameterGroupName":{ - "shape":"String", - "documentation":"

The name of a specific parameter group for which to return details. By default, details about all parameter groups and the default parameter group are returned.

" - }, - "MaxRecords":{ - "shape":"IntegerOptional", - "documentation":"

The maximum number of response records to return in each call. If the number of remaining response records exceeds the specified MaxRecords value, a value is returned in a marker field of the response. You can retrieve the next set of records by retrying the command with the returned marker value.

Default: 100

Constraints: minimum 20, maximum 100.

" - }, - "Marker":{ - "shape":"String", - "documentation":"

An optional parameter that specifies the starting point to return a set of response records. When the results of a DescribeClusterParameterGroups request exceed the value specified in MaxRecords, AWS returns a value in the Marker field of the response. You can retrieve the next set of response records by providing the returned marker value in the Marker parameter and retrying the request.

" - }, - "TagKeys":{ - "shape":"TagKeyList", - "documentation":"

A tag key or keys for which you want to return all matching cluster parameter groups that are associated with the specified key or keys. For example, suppose that you have parameter groups that are tagged with keys called owner and environment. If you specify both of these tag keys in the request, Amazon Redshift returns a response with the parameter groups that have either or both of these tag keys associated with them.

" - }, - "TagValues":{ - "shape":"TagValueList", - "documentation":"

A tag value or values for which you want to return all matching cluster parameter groups that are associated with the specified tag value or values. For example, suppose that you have parameter groups that are tagged with values called admin and test. If you specify both of these tag values in the request, Amazon Redshift returns a response with the parameter groups that have either or both of these tag values associated with them.

" - } - }, - "documentation":"

" - }, - "DescribeClusterParametersMessage":{ - "type":"structure", - "required":["ParameterGroupName"], - "members":{ - "ParameterGroupName":{ - "shape":"String", - "documentation":"

The name of a cluster parameter group for which to return details.

" - }, - "Source":{ - "shape":"String", - "documentation":"

The parameter types to return. Specify user to show parameters that are different form the default. Similarly, specify engine-default to show parameters that are the same as the default parameter group.

Default: All parameter types returned.

Valid Values: user | engine-default

" - }, - "MaxRecords":{ - "shape":"IntegerOptional", - "documentation":"

The maximum number of response records to return in each call. If the number of remaining response records exceeds the specified MaxRecords value, a value is returned in a marker field of the response. You can retrieve the next set of records by retrying the command with the returned marker value.

Default: 100

Constraints: minimum 20, maximum 100.

" - }, - "Marker":{ - "shape":"String", - "documentation":"

An optional parameter that specifies the starting point to return a set of response records. When the results of a DescribeClusterParameters request exceed the value specified in MaxRecords, AWS returns a value in the Marker field of the response. You can retrieve the next set of response records by providing the returned marker value in the Marker parameter and retrying the request.

" - } - } - }, - "DescribeClusterSecurityGroupsMessage":{ - "type":"structure", - "members":{ - "ClusterSecurityGroupName":{ - "shape":"String", - "documentation":"

The name of a cluster security group for which you are requesting details. You can specify either the Marker parameter or a ClusterSecurityGroupName parameter, but not both.

Example: securitygroup1

" - }, - "MaxRecords":{ - "shape":"IntegerOptional", - "documentation":"

The maximum number of response records to return in each call. If the number of remaining response records exceeds the specified MaxRecords value, a value is returned in a marker field of the response. You can retrieve the next set of records by retrying the command with the returned marker value.

Default: 100

Constraints: minimum 20, maximum 100.

" - }, - "Marker":{ - "shape":"String", - "documentation":"

An optional parameter that specifies the starting point to return a set of response records. When the results of a DescribeClusterSecurityGroups request exceed the value specified in MaxRecords, AWS returns a value in the Marker field of the response. You can retrieve the next set of response records by providing the returned marker value in the Marker parameter and retrying the request.

Constraints: You can specify either the ClusterSecurityGroupName parameter or the Marker parameter, but not both.

" - }, - "TagKeys":{ - "shape":"TagKeyList", - "documentation":"

A tag key or keys for which you want to return all matching cluster security groups that are associated with the specified key or keys. For example, suppose that you have security groups that are tagged with keys called owner and environment. If you specify both of these tag keys in the request, Amazon Redshift returns a response with the security groups that have either or both of these tag keys associated with them.

" - }, - "TagValues":{ - "shape":"TagValueList", - "documentation":"

A tag value or values for which you want to return all matching cluster security groups that are associated with the specified tag value or values. For example, suppose that you have security groups that are tagged with values called admin and test. If you specify both of these tag values in the request, Amazon Redshift returns a response with the security groups that have either or both of these tag values associated with them.

" - } - }, - "documentation":"

???

" - }, - "DescribeClusterSnapshotsMessage":{ - "type":"structure", - "members":{ - "ClusterIdentifier":{ - "shape":"String", - "documentation":"

The identifier of the cluster for which information about snapshots is requested.

" - }, - "SnapshotIdentifier":{ - "shape":"String", - "documentation":"

The snapshot identifier of the snapshot about which to return information.

" - }, - "SnapshotType":{ - "shape":"String", - "documentation":"

The type of snapshots for which you are requesting information. By default, snapshots of all types are returned.

Valid Values: automated | manual

" - }, - "StartTime":{ - "shape":"TStamp", - "documentation":"

A value that requests only snapshots created at or after the specified time. The time value is specified in ISO 8601 format. For more information about ISO 8601, go to the ISO8601 Wikipedia page.

Example: 2012-07-16T18:00:00Z

" - }, - "EndTime":{ - "shape":"TStamp", - "documentation":"

A time value that requests only snapshots created at or before the specified time. The time value is specified in ISO 8601 format. For more information about ISO 8601, go to the ISO8601 Wikipedia page.

Example: 2012-07-16T18:00:00Z

" - }, - "MaxRecords":{ - "shape":"IntegerOptional", - "documentation":"

The maximum number of response records to return in each call. If the number of remaining response records exceeds the specified MaxRecords value, a value is returned in a marker field of the response. You can retrieve the next set of records by retrying the command with the returned marker value.

Default: 100

Constraints: minimum 20, maximum 100.

" - }, - "Marker":{ - "shape":"String", - "documentation":"

An optional parameter that specifies the starting point to return a set of response records. When the results of a DescribeClusterSnapshots request exceed the value specified in MaxRecords, AWS returns a value in the Marker field of the response. You can retrieve the next set of response records by providing the returned marker value in the Marker parameter and retrying the request.

" - }, - "OwnerAccount":{ - "shape":"String", - "documentation":"

The AWS customer account used to create or copy the snapshot. Use this field to filter the results to snapshots owned by a particular account. To describe snapshots you own, either specify your AWS customer account, or do not specify the parameter.

" - }, - "TagKeys":{ - "shape":"TagKeyList", - "documentation":"

A tag key or keys for which you want to return all matching cluster snapshots that are associated with the specified key or keys. For example, suppose that you have snapshots that are tagged with keys called owner and environment. If you specify both of these tag keys in the request, Amazon Redshift returns a response with the snapshots that have either or both of these tag keys associated with them.

" - }, - "TagValues":{ - "shape":"TagValueList", - "documentation":"

A tag value or values for which you want to return all matching cluster snapshots that are associated with the specified tag value or values. For example, suppose that you have snapshots that are tagged with values called admin and test. If you specify both of these tag values in the request, Amazon Redshift returns a response with the snapshots that have either or both of these tag values associated with them.

" - } - }, - "documentation":"

" - }, - "DescribeClusterSubnetGroupsMessage":{ - "type":"structure", - "members":{ - "ClusterSubnetGroupName":{ - "shape":"String", - "documentation":"

The name of the cluster subnet group for which information is requested.

" - }, - "MaxRecords":{ - "shape":"IntegerOptional", - "documentation":"

The maximum number of response records to return in each call. If the number of remaining response records exceeds the specified MaxRecords value, a value is returned in a marker field of the response. You can retrieve the next set of records by retrying the command with the returned marker value.

Default: 100

Constraints: minimum 20, maximum 100.

" - }, - "Marker":{ - "shape":"String", - "documentation":"

An optional parameter that specifies the starting point to return a set of response records. When the results of a DescribeClusterSubnetGroups request exceed the value specified in MaxRecords, AWS returns a value in the Marker field of the response. You can retrieve the next set of response records by providing the returned marker value in the Marker parameter and retrying the request.

" - }, - "TagKeys":{ - "shape":"TagKeyList", - "documentation":"

A tag key or keys for which you want to return all matching cluster subnet groups that are associated with the specified key or keys. For example, suppose that you have subnet groups that are tagged with keys called owner and environment. If you specify both of these tag keys in the request, Amazon Redshift returns a response with the subnet groups that have either or both of these tag keys associated with them.

" - }, - "TagValues":{ - "shape":"TagValueList", - "documentation":"

A tag value or values for which you want to return all matching cluster subnet groups that are associated with the specified tag value or values. For example, suppose that you have subnet groups that are tagged with values called admin and test. If you specify both of these tag values in the request, Amazon Redshift returns a response with the subnet groups that have either or both of these tag values associated with them.

" - } - }, - "documentation":"

" - }, - "DescribeClusterVersionsMessage":{ - "type":"structure", - "members":{ - "ClusterVersion":{ - "shape":"String", - "documentation":"

The specific cluster version to return.

Example: 1.0

" - }, - "ClusterParameterGroupFamily":{ - "shape":"String", - "documentation":"

The name of a specific cluster parameter group family to return details for.

Constraints:

" - }, - "MaxRecords":{ - "shape":"IntegerOptional", - "documentation":"

The maximum number of response records to return in each call. If the number of remaining response records exceeds the specified MaxRecords value, a value is returned in a marker field of the response. You can retrieve the next set of records by retrying the command with the returned marker value.

Default: 100

Constraints: minimum 20, maximum 100.

" - }, - "Marker":{ - "shape":"String", - "documentation":"

An optional parameter that specifies the starting point to return a set of response records. When the results of a DescribeClusterVersions request exceed the value specified in MaxRecords, AWS returns a value in the Marker field of the response. You can retrieve the next set of response records by providing the returned marker value in the Marker parameter and retrying the request.

" - } - } - }, - "DescribeClustersMessage":{ - "type":"structure", - "members":{ - "ClusterIdentifier":{ - "shape":"String", - "documentation":"

The unique identifier of a cluster whose properties you are requesting. This parameter is case sensitive.

The default is that all clusters defined for an account are returned.

" - }, - "MaxRecords":{ - "shape":"IntegerOptional", - "documentation":"

The maximum number of response records to return in each call. If the number of remaining response records exceeds the specified MaxRecords value, a value is returned in a marker field of the response. You can retrieve the next set of records by retrying the command with the returned marker value.

Default: 100

Constraints: minimum 20, maximum 100.

" - }, - "Marker":{ - "shape":"String", - "documentation":"

An optional parameter that specifies the starting point to return a set of response records. When the results of a DescribeClusters request exceed the value specified in MaxRecords, AWS returns a value in the Marker field of the response. You can retrieve the next set of response records by providing the returned marker value in the Marker parameter and retrying the request.

Constraints: You can specify either the ClusterIdentifier parameter or the Marker parameter, but not both.

" - }, - "TagKeys":{ - "shape":"TagKeyList", - "documentation":"

A tag key or keys for which you want to return all matching clusters that are associated with the specified key or keys. For example, suppose that you have clusters that are tagged with keys called owner and environment. If you specify both of these tag keys in the request, Amazon Redshift returns a response with the clusters that have either or both of these tag keys associated with them.

" - }, - "TagValues":{ - "shape":"TagValueList", - "documentation":"

A tag value or values for which you want to return all matching clusters that are associated with the specified tag value or values. For example, suppose that you have clusters that are tagged with values called admin and test. If you specify both of these tag values in the request, Amazon Redshift returns a response with the clusters that have either or both of these tag values associated with them.

" - } - }, - "documentation":"

" - }, - "DescribeDefaultClusterParametersMessage":{ - "type":"structure", - "required":["ParameterGroupFamily"], - "members":{ - "ParameterGroupFamily":{ - "shape":"String", - "documentation":"

The name of the cluster parameter group family.

" - }, - "MaxRecords":{ - "shape":"IntegerOptional", - "documentation":"

The maximum number of response records to return in each call. If the number of remaining response records exceeds the specified MaxRecords value, a value is returned in a marker field of the response. You can retrieve the next set of records by retrying the command with the returned marker value.

Default: 100

Constraints: minimum 20, maximum 100.

" - }, - "Marker":{ - "shape":"String", - "documentation":"

An optional parameter that specifies the starting point to return a set of response records. When the results of a DescribeDefaultClusterParameters request exceed the value specified in MaxRecords, AWS returns a value in the Marker field of the response. You can retrieve the next set of response records by providing the returned marker value in the Marker parameter and retrying the request.

" - } - }, - "documentation":"

" - }, - "DescribeEventCategoriesMessage":{ - "type":"structure", - "members":{ - "SourceType":{ - "shape":"String", - "documentation":"

The source type, such as cluster or parameter group, to which the described event categories apply.

Valid values: cluster, snapshot, parameter group, and security group.

" - } - }, - "documentation":"

" - }, - "DescribeEventSubscriptionsMessage":{ - "type":"structure", - "members":{ - "SubscriptionName":{ - "shape":"String", - "documentation":"

The name of the Amazon Redshift event notification subscription to be described.

" - }, - "MaxRecords":{ - "shape":"IntegerOptional", - "documentation":"

The maximum number of response records to return in each call. If the number of remaining response records exceeds the specified MaxRecords value, a value is returned in a marker field of the response. You can retrieve the next set of records by retrying the command with the returned marker value.

Default: 100

Constraints: minimum 20, maximum 100.

" - }, - "Marker":{ - "shape":"String", - "documentation":"

An optional parameter that specifies the starting point to return a set of response records. When the results of a DescribeEventSubscriptions request exceed the value specified in MaxRecords, AWS returns a value in the Marker field of the response. You can retrieve the next set of response records by providing the returned marker value in the Marker parameter and retrying the request.

" - } - }, - "documentation":"

" - }, - "DescribeEventsMessage":{ - "type":"structure", - "members":{ - "SourceIdentifier":{ - "shape":"String", - "documentation":"

The identifier of the event source for which events will be returned. If this parameter is not specified, then all sources are included in the response.

Constraints:

If SourceIdentifier is supplied, SourceType must also be provided.

" - }, - "SourceType":{ - "shape":"SourceType", - "documentation":"

The event source to retrieve events for. If no value is specified, all events are returned.

Constraints:

If SourceType is supplied, SourceIdentifier must also be provided.

" - }, - "StartTime":{ - "shape":"TStamp", - "documentation":"

The beginning of the time interval to retrieve events for, specified in ISO 8601 format. For more information about ISO 8601, go to the ISO8601 Wikipedia page.

Example: 2009-07-08T18:00Z

" - }, - "EndTime":{ - "shape":"TStamp", - "documentation":"

The end of the time interval for which to retrieve events, specified in ISO 8601 format. For more information about ISO 8601, go to the ISO8601 Wikipedia page.

Example: 2009-07-08T18:00Z

" - }, - "Duration":{ - "shape":"IntegerOptional", - "documentation":"

The number of minutes prior to the time of the request for which to retrieve events. For example, if the request is sent at 18:00 and you specify a duration of 60, then only events which have occurred after 17:00 will be returned.

Default: 60

" - }, - "MaxRecords":{ - "shape":"IntegerOptional", - "documentation":"

The maximum number of response records to return in each call. If the number of remaining response records exceeds the specified MaxRecords value, a value is returned in a marker field of the response. You can retrieve the next set of records by retrying the command with the returned marker value.

Default: 100

Constraints: minimum 20, maximum 100.

" - }, - "Marker":{ - "shape":"String", - "documentation":"

An optional parameter that specifies the starting point to return a set of response records. When the results of a DescribeEvents request exceed the value specified in MaxRecords, AWS returns a value in the Marker field of the response. You can retrieve the next set of response records by providing the returned marker value in the Marker parameter and retrying the request.

" - } - }, - "documentation":"

" - }, - "DescribeHsmClientCertificatesMessage":{ - "type":"structure", - "members":{ - "HsmClientCertificateIdentifier":{ - "shape":"String", - "documentation":"

The identifier of a specific HSM client certificate for which you want information. If no identifier is specified, information is returned for all HSM client certificates owned by your AWS customer account.

" - }, - "MaxRecords":{ - "shape":"IntegerOptional", - "documentation":"

The maximum number of response records to return in each call. If the number of remaining response records exceeds the specified MaxRecords value, a value is returned in a marker field of the response. You can retrieve the next set of records by retrying the command with the returned marker value.

Default: 100

Constraints: minimum 20, maximum 100.

" - }, - "Marker":{ - "shape":"String", - "documentation":"

An optional parameter that specifies the starting point to return a set of response records. When the results of a DescribeHsmClientCertificates request exceed the value specified in MaxRecords, AWS returns a value in the Marker field of the response. You can retrieve the next set of response records by providing the returned marker value in the Marker parameter and retrying the request.

" - }, - "TagKeys":{ - "shape":"TagKeyList", - "documentation":"

A tag key or keys for which you want to return all matching HSM client certificates that are associated with the specified key or keys. For example, suppose that you have HSM client certificates that are tagged with keys called owner and environment. If you specify both of these tag keys in the request, Amazon Redshift returns a response with the HSM client certificates that have either or both of these tag keys associated with them.

" - }, - "TagValues":{ - "shape":"TagValueList", - "documentation":"

A tag value or values for which you want to return all matching HSM client certificates that are associated with the specified tag value or values. For example, suppose that you have HSM client certificates that are tagged with values called admin and test. If you specify both of these tag values in the request, Amazon Redshift returns a response with the HSM client certificates that have either or both of these tag values associated with them.

" - } - }, - "documentation":"

" - }, - "DescribeHsmConfigurationsMessage":{ - "type":"structure", - "members":{ - "HsmConfigurationIdentifier":{ - "shape":"String", - "documentation":"

The identifier of a specific Amazon Redshift HSM configuration to be described. If no identifier is specified, information is returned for all HSM configurations owned by your AWS customer account.

" - }, - "MaxRecords":{ - "shape":"IntegerOptional", - "documentation":"

The maximum number of response records to return in each call. If the number of remaining response records exceeds the specified MaxRecords value, a value is returned in a marker field of the response. You can retrieve the next set of records by retrying the command with the returned marker value.

Default: 100

Constraints: minimum 20, maximum 100.

" - }, - "Marker":{ - "shape":"String", - "documentation":"

An optional parameter that specifies the starting point to return a set of response records. When the results of a DescribeHsmConfigurations request exceed the value specified in MaxRecords, AWS returns a value in the Marker field of the response. You can retrieve the next set of response records by providing the returned marker value in the Marker parameter and retrying the request.

" - }, - "TagKeys":{ - "shape":"TagKeyList", - "documentation":"

A tag key or keys for which you want to return all matching HSM configurations that are associated with the specified key or keys. For example, suppose that you have HSM configurations that are tagged with keys called owner and environment. If you specify both of these tag keys in the request, Amazon Redshift returns a response with the HSM configurations that have either or both of these tag keys associated with them.

" - }, - "TagValues":{ - "shape":"TagValueList", - "documentation":"

A tag value or values for which you want to return all matching HSM configurations that are associated with the specified tag value or values. For example, suppose that you have HSM configurations that are tagged with values called admin and test. If you specify both of these tag values in the request, Amazon Redshift returns a response with the HSM configurations that have either or both of these tag values associated with them.

" - } - }, - "documentation":"

" - }, - "DescribeLoggingStatusMessage":{ - "type":"structure", - "required":["ClusterIdentifier"], - "members":{ - "ClusterIdentifier":{ - "shape":"String", - "documentation":"

The identifier of the cluster to get the logging status from.

Example: examplecluster

" - } - }, - "documentation":"

" - }, - "DescribeOrderableClusterOptionsMessage":{ - "type":"structure", - "members":{ - "ClusterVersion":{ - "shape":"String", - "documentation":"

The version filter value. Specify this parameter to show only the available offerings matching the specified version.

Default: All versions.

Constraints: Must be one of the version returned from DescribeClusterVersions.

" - }, - "NodeType":{ - "shape":"String", - "documentation":"

The node type filter value. Specify this parameter to show only the available offerings matching the specified node type.

" - }, - "MaxRecords":{ - "shape":"IntegerOptional", - "documentation":"

The maximum number of response records to return in each call. If the number of remaining response records exceeds the specified MaxRecords value, a value is returned in a marker field of the response. You can retrieve the next set of records by retrying the command with the returned marker value.

Default: 100

Constraints: minimum 20, maximum 100.

" - }, - "Marker":{ - "shape":"String", - "documentation":"

An optional parameter that specifies the starting point to return a set of response records. When the results of a DescribeOrderableClusterOptions request exceed the value specified in MaxRecords, AWS returns a value in the Marker field of the response. You can retrieve the next set of response records by providing the returned marker value in the Marker parameter and retrying the request.

" - } - }, - "documentation":"

" - }, - "DescribeReservedNodeOfferingsMessage":{ - "type":"structure", - "members":{ - "ReservedNodeOfferingId":{ - "shape":"String", - "documentation":"

The unique identifier for the offering.

" - }, - "MaxRecords":{ - "shape":"IntegerOptional", - "documentation":"

The maximum number of response records to return in each call. If the number of remaining response records exceeds the specified MaxRecords value, a value is returned in a marker field of the response. You can retrieve the next set of records by retrying the command with the returned marker value.

Default: 100

Constraints: minimum 20, maximum 100.

" - }, - "Marker":{ - "shape":"String", - "documentation":"

An optional parameter that specifies the starting point to return a set of response records. When the results of a DescribeReservedNodeOfferings request exceed the value specified in MaxRecords, AWS returns a value in the Marker field of the response. You can retrieve the next set of response records by providing the returned marker value in the Marker parameter and retrying the request.

" - } - }, - "documentation":"

to be provided.

" - }, - "DescribeReservedNodesMessage":{ - "type":"structure", - "members":{ - "ReservedNodeId":{ - "shape":"String", - "documentation":"

Identifier for the node reservation.

" - }, - "MaxRecords":{ - "shape":"IntegerOptional", - "documentation":"

The maximum number of response records to return in each call. If the number of remaining response records exceeds the specified MaxRecords value, a value is returned in a marker field of the response. You can retrieve the next set of records by retrying the command with the returned marker value.

Default: 100

Constraints: minimum 20, maximum 100.

" - }, - "Marker":{ - "shape":"String", - "documentation":"

An optional parameter that specifies the starting point to return a set of response records. When the results of a DescribeReservedNodes request exceed the value specified in MaxRecords, AWS returns a value in the Marker field of the response. You can retrieve the next set of response records by providing the returned marker value in the Marker parameter and retrying the request.

" - } - }, - "documentation":"

" - }, - "DescribeResizeMessage":{ - "type":"structure", - "required":["ClusterIdentifier"], - "members":{ - "ClusterIdentifier":{ - "shape":"String", - "documentation":"

The unique identifier of a cluster whose resize progress you are requesting. This parameter is case-sensitive.

By default, resize operations for all clusters defined for an AWS account are returned.

" - } - }, - "documentation":"

" - }, - "DescribeTagsMessage":{ - "type":"structure", - "members":{ - "ResourceName":{ - "shape":"String", - "documentation":"

The Amazon Resource Name (ARN) for which you want to describe the tag or tags. For example, arn:aws:redshift:us-east-1:123456789:cluster:t1.

" - }, - "ResourceType":{ - "shape":"String", - "documentation":"

The type of resource with which you want to view tags. Valid resource types are:

For more information about Amazon Redshift resource types and constructing ARNs, go to Constructing an Amazon Redshift Amazon Resource Name (ARN) in the Amazon Redshift Cluster Management Guide.

" - }, - "MaxRecords":{ - "shape":"IntegerOptional", - "documentation":"

The maximum number or response records to return in each call. If the number of remaining response records exceeds the specified MaxRecords value, a value is returned in a marker field of the response. You can retrieve the next set of records by retrying the command with the returned marker value.

" - }, - "Marker":{ - "shape":"String", - "documentation":"

A value that indicates the starting point for the next set of response records in a subsequent request. If a value is returned in a response, you can retrieve the next set of records by providing this returned marker value in the marker parameter and retrying the command. If the marker field is empty, all response records have been retrieved for the request.

" - }, - "TagKeys":{ - "shape":"TagKeyList", - "documentation":"

A tag key or keys for which you want to return all matching resources that are associated with the specified key or keys. For example, suppose that you have resources tagged with keys called owner and environment. If you specify both of these tag keys in the request, Amazon Redshift returns a response with all resources that have either or both of these tag keys associated with them.

" - }, - "TagValues":{ - "shape":"TagValueList", - "documentation":"

A tag value or values for which you want to return all matching resources that are associated with the specified value or values. For example, suppose that you have resources tagged with values called admin and test. If you specify both of these tag values in the request, Amazon Redshift returns a response with all resources that have either or both of these tag values associated with them.

" - } - }, - "documentation":"

Contains the output from the DescribeTags action.

" - }, - "DisableLoggingMessage":{ - "type":"structure", - "required":["ClusterIdentifier"], - "members":{ - "ClusterIdentifier":{ - "shape":"String", - "documentation":"

The identifier of the cluster on which logging is to be stopped.

Example: examplecluster

" - } - }, - "documentation":"

" - }, - "DisableSnapshotCopyMessage":{ - "type":"structure", - "required":["ClusterIdentifier"], - "members":{ - "ClusterIdentifier":{ - "shape":"String", - "documentation":"

The unique identifier of the source cluster that you want to disable copying of snapshots to a destination region.

Constraints: Must be the valid name of an existing cluster that has cross-region snapshot copy enabled.

" - } - }, - "documentation":"

" - }, - "Double":{"type":"double"}, - "DoubleOptional":{"type":"double"}, - "EC2SecurityGroup":{ - "type":"structure", - "members":{ - "Status":{ - "shape":"String", - "documentation":"

The status of the EC2 security group.

" - }, - "EC2SecurityGroupName":{ - "shape":"String", - "documentation":"

The name of the EC2 Security Group.

" - }, - "EC2SecurityGroupOwnerId":{ - "shape":"String", - "documentation":"

The AWS ID of the owner of the EC2 security group specified in the EC2SecurityGroupName field.

" - }, - "Tags":{ - "shape":"TagList", - "documentation":"

The list of tags for the EC2 security group.

" - } - }, - "documentation":"

Describes an Amazon EC2 security group.

" - }, - "EC2SecurityGroupList":{ - "type":"list", - "member":{ - "shape":"EC2SecurityGroup", - "locationName":"EC2SecurityGroup" - } - }, - "ElasticIpStatus":{ - "type":"structure", - "members":{ - "ElasticIp":{ - "shape":"String", - "documentation":"

The elastic IP (EIP) address for the cluster.

" - }, - "Status":{ - "shape":"String", - "documentation":"

Describes the status of the elastic IP (EIP) address.

" - } - }, - "documentation":"

Describes the status of the elastic IP (EIP) address.

" - }, - "EnableLoggingMessage":{ - "type":"structure", - "required":[ - "ClusterIdentifier", - "BucketName" - ], - "members":{ - "ClusterIdentifier":{ - "shape":"String", - "documentation":"

The identifier of the cluster on which logging is to be started.

Example: examplecluster

" - }, - "BucketName":{ - "shape":"String", - "documentation":"

The name of an existing S3 bucket where the log files are to be stored.

Constraints:

" - }, - "S3KeyPrefix":{ - "shape":"String", - "documentation":"

The prefix applied to the log file names.

Constraints:

" - } - }, - "documentation":"

" - }, - "EnableSnapshotCopyMessage":{ - "type":"structure", - "required":[ - "ClusterIdentifier", - "DestinationRegion" - ], - "members":{ - "ClusterIdentifier":{ - "shape":"String", - "documentation":"

The unique identifier of the source cluster to copy snapshots from.

Constraints: Must be the valid name of an existing cluster that does not already have cross-region snapshot copy enabled.

" - }, - "DestinationRegion":{ - "shape":"String", - "documentation":"

The destination region that you want to copy snapshots to.

Constraints: Must be the name of a valid region. For more information, see Regions and Endpoints in the Amazon Web Services General Reference.

" - }, - "RetentionPeriod":{ - "shape":"IntegerOptional", - "documentation":"

The number of days to retain automated snapshots in the destination region after they are copied from the source region.

Default: 7.

Constraints: Must be at least 1 and no more than 35.

" - } - }, - "documentation":"

" - }, - "Endpoint":{ - "type":"structure", - "members":{ - "Address":{ - "shape":"String", - "documentation":"

The DNS address of the Cluster.

" - }, - "Port":{ - "shape":"Integer", - "documentation":"

The port that the database engine is listening on.

" - } - }, - "documentation":"

Describes a connection endpoint.

" - }, - "Event":{ - "type":"structure", - "members":{ - "SourceIdentifier":{ - "shape":"String", - "documentation":"

The identifier for the source of the event.

" - }, - "SourceType":{ - "shape":"SourceType", - "documentation":"

The source type for this event.

" - }, - "Message":{ - "shape":"String", - "documentation":"

The text of this event.

" - }, - "EventCategories":{ - "shape":"EventCategoriesList", - "documentation":"

A list of the event categories.

" - }, - "Severity":{ - "shape":"String", - "documentation":"

The severity of the event.

Values: ERROR, INFO

" - }, - "Date":{ - "shape":"TStamp", - "documentation":"

The date and time of the event.

" - }, - "EventId":{ - "shape":"String", - "documentation":"

The identifier of the event.

" - } - }, - "documentation":"

Describes an event.

" - }, - "EventCategoriesList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"EventCategory" - } - }, - "EventCategoriesMap":{ - "type":"structure", - "members":{ - "SourceType":{ - "shape":"String", - "documentation":"

The Amazon Redshift source type, such as cluster or cluster-snapshot, that the returned categories belong to.

" - }, - "Events":{ - "shape":"EventInfoMapList", - "documentation":"

The events in the event category.

" - } - }, - "wrapper":true - }, - "EventCategoriesMapList":{ - "type":"list", - "member":{ - "shape":"EventCategoriesMap", - "locationName":"EventCategoriesMap" - } - }, - "EventCategoriesMessage":{ - "type":"structure", - "members":{ - "EventCategoriesMapList":{ - "shape":"EventCategoriesMapList", - "documentation":"

A list of event categories descriptions.

" - } - }, - "documentation":"

" - }, - "EventInfoMap":{ - "type":"structure", - "members":{ - "EventId":{ - "shape":"String", - "documentation":"

The identifier of an Amazon Redshift event.

" - }, - "EventCategories":{ - "shape":"EventCategoriesList", - "documentation":"

The category of an Amazon Redshift event.

" - }, - "EventDescription":{ - "shape":"String", - "documentation":"

The description of an Amazon Redshift event.

" - }, - "Severity":{ - "shape":"String", - "documentation":"

The severity of the event.

Values: ERROR, INFO

" - } - }, - "wrapper":true - }, - "EventInfoMapList":{ - "type":"list", - "member":{ - "shape":"EventInfoMap", - "locationName":"EventInfoMap" - } - }, - "EventList":{ - "type":"list", - "member":{ - "shape":"Event", - "locationName":"Event" - } - }, - "EventSubscription":{ - "type":"structure", - "members":{ - "CustomerAwsId":{ - "shape":"String", - "documentation":"

The AWS customer account associated with the Amazon Redshift event notification subscription.

" - }, - "CustSubscriptionId":{ - "shape":"String", - "documentation":"

The name of the Amazon Redshift event notification subscription.

" - }, - "SnsTopicArn":{ - "shape":"String", - "documentation":"

The Amazon Resource Name (ARN) of the Amazon SNS topic used by the event notification subscription.

" - }, - "Status":{ - "shape":"String", - "documentation":"

The status of the Amazon Redshift event notification subscription.

Constraints:

" - }, - "SubscriptionCreationTime":{ - "shape":"TStamp", - "documentation":"

The date and time the Amazon Redshift event notification subscription was created.

" - }, - "SourceType":{ - "shape":"String", - "documentation":"

The source type of the events returned the Amazon Redshift event notification, such as cluster, or cluster-snapshot.

" - }, - "SourceIdsList":{ - "shape":"SourceIdsList", - "documentation":"

A list of the sources that publish events to the Amazon Redshift event notification subscription.

" - }, - "EventCategoriesList":{ - "shape":"EventCategoriesList", - "documentation":"

The list of Amazon Redshift event categories specified in the event notification subscription.

Values: Configuration, Management, Monitoring, Security

" - }, - "Severity":{ - "shape":"String", - "documentation":"

The event severity specified in the Amazon Redshift event notification subscription.

Values: ERROR, INFO

" - }, - "Enabled":{ - "shape":"Boolean", - "documentation":"

A Boolean value indicating whether the subscription is enabled. true indicates the subscription is enabled.

" - }, - "Tags":{ - "shape":"TagList", - "documentation":"

The list of tags for the event subscription.

" - } - }, - "wrapper":true - }, - "EventSubscriptionQuotaExceededFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"EventSubscriptionQuotaExceeded", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request would exceed the allowed number of event subscriptions for this account. For information about increasing your quota, go to Limits in Amazon Redshift in the Amazon Redshift Cluster Management Guide.

" - }, - "EventSubscriptionsList":{ - "type":"list", - "member":{ - "shape":"EventSubscription", - "locationName":"EventSubscription" - } - }, - "EventSubscriptionsMessage":{ - "type":"structure", - "members":{ - "Marker":{ - "shape":"String", - "documentation":"

A value that indicates the starting point for the next set of response records in a subsequent request. If a value is returned in a response, you can retrieve the next set of records by providing this returned marker value in the Marker parameter and retrying the command. If the Marker field is empty, all response records have been retrieved for the request.

" - }, - "EventSubscriptionsList":{ - "shape":"EventSubscriptionsList", - "documentation":"

A list of event subscriptions.

" - } - }, - "documentation":"

" - }, - "EventsMessage":{ - "type":"structure", - "members":{ - "Marker":{ - "shape":"String", - "documentation":"

A value that indicates the starting point for the next set of response records in a subsequent request. If a value is returned in a response, you can retrieve the next set of records by providing this returned marker value in the Marker parameter and retrying the command. If the Marker field is empty, all response records have been retrieved for the request.

" - }, - "Events":{ - "shape":"EventList", - "documentation":"

A list of Event instances.

" - } - }, - "documentation":"

Contains the output from the DescribeEvents action.

" - }, - "HsmClientCertificate":{ - "type":"structure", - "members":{ - "HsmClientCertificateIdentifier":{ - "shape":"String", - "documentation":"

The identifier of the HSM client certificate.

" - }, - "HsmClientCertificatePublicKey":{ - "shape":"String", - "documentation":"

The public key that the Amazon Redshift cluster will use to connect to the HSM. You must register the public key in the HSM.

" - }, - "Tags":{ - "shape":"TagList", - "documentation":"

The list of tags for the HSM client certificate.

" - } - }, - "wrapper":true, - "documentation":"

Returns information about an HSM client certificate. The certificate is stored in a secure Hardware Storage Module (HSM), and used by the Amazon Redshift cluster to encrypt data files.

" - }, - "HsmClientCertificateAlreadyExistsFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"HsmClientCertificateAlreadyExistsFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

There is already an existing Amazon Redshift HSM client certificate with the specified identifier.

" - }, - "HsmClientCertificateList":{ - "type":"list", - "member":{ - "shape":"HsmClientCertificate", - "locationName":"HsmClientCertificate" - } - }, - "HsmClientCertificateMessage":{ - "type":"structure", - "members":{ - "Marker":{ - "shape":"String", - "documentation":"

A value that indicates the starting point for the next set of response records in a subsequent request. If a value is returned in a response, you can retrieve the next set of records by providing this returned marker value in the Marker parameter and retrying the command. If the Marker field is empty, all response records have been retrieved for the request.

" - }, - "HsmClientCertificates":{ - "shape":"HsmClientCertificateList", - "documentation":"

A list of the identifiers for one or more HSM client certificates used by Amazon Redshift clusters to store and retrieve database encryption keys in an HSM.

" - } - }, - "documentation":"

" - }, - "HsmClientCertificateNotFoundFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"HsmClientCertificateNotFoundFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

There is no Amazon Redshift HSM client certificate with the specified identifier.

" - }, - "HsmClientCertificateQuotaExceededFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"HsmClientCertificateQuotaExceededFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The quota for HSM client certificates has been reached. For information about increasing your quota, go to Limits in Amazon Redshift in the Amazon Redshift Cluster Management Guide.

" - }, - "HsmConfiguration":{ - "type":"structure", - "members":{ - "HsmConfigurationIdentifier":{ - "shape":"String", - "documentation":"

The name of the Amazon Redshift HSM configuration.

" - }, - "Description":{ - "shape":"String", - "documentation":"

A text description of the HSM configuration.

" - }, - "HsmIpAddress":{ - "shape":"String", - "documentation":"

The IP address that the Amazon Redshift cluster must use to access the HSM.

" - }, - "HsmPartitionName":{ - "shape":"String", - "documentation":"

The name of the partition in the HSM where the Amazon Redshift clusters will store their database encryption keys.

" - }, - "Tags":{ - "shape":"TagList", - "documentation":"

The list of tags for the HSM configuration.

" - } - }, - "wrapper":true, - "documentation":"

Returns information about an HSM configuration, which is an object that describes to Amazon Redshift clusters the information they require to connect to an HSM where they can store database encryption keys.

" - }, - "HsmConfigurationAlreadyExistsFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"HsmConfigurationAlreadyExistsFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

There is already an existing Amazon Redshift HSM configuration with the specified identifier.

" - }, - "HsmConfigurationList":{ - "type":"list", - "member":{ - "shape":"HsmConfiguration", - "locationName":"HsmConfiguration" - } - }, - "HsmConfigurationMessage":{ - "type":"structure", - "members":{ - "Marker":{ - "shape":"String", - "documentation":"

A value that indicates the starting point for the next set of response records in a subsequent request. If a value is returned in a response, you can retrieve the next set of records by providing this returned marker value in the Marker parameter and retrying the command. If the Marker field is empty, all response records have been retrieved for the request.

" - }, - "HsmConfigurations":{ - "shape":"HsmConfigurationList", - "documentation":"

A list of Amazon Redshift HSM configurations.

" - } - }, - "documentation":"

" - }, - "HsmConfigurationNotFoundFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"HsmConfigurationNotFoundFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

There is no Amazon Redshift HSM configuration with the specified identifier.

" - }, - "HsmConfigurationQuotaExceededFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"HsmConfigurationQuotaExceededFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The quota for HSM configurations has been reached. For information about increasing your quota, go to Limits in Amazon Redshift in the Amazon Redshift Cluster Management Guide.

" - }, - "HsmStatus":{ - "type":"structure", - "members":{ - "HsmClientCertificateIdentifier":{ - "shape":"String", - "documentation":"

Specifies the name of the HSM client certificate the Amazon Redshift cluster uses to retrieve the data encryption keys stored in an HSM.

" - }, - "HsmConfigurationIdentifier":{ - "shape":"String", - "documentation":"

Specifies the name of the HSM configuration that contains the information the Amazon Redshift cluster can use to retrieve and store keys in an HSM.

" - }, - "Status":{ - "shape":"String", - "documentation":"

Reports whether the Amazon Redshift cluster has finished applying any HSM settings changes specified in a modify cluster command.

Values: active, applying

" - } - }, - "documentation":"

" - }, - "IPRange":{ - "type":"structure", - "members":{ - "Status":{ - "shape":"String", - "documentation":"

The status of the IP range, for example, \"authorized\".

" - }, - "CIDRIP":{ - "shape":"String", - "documentation":"

The IP range in Classless Inter-Domain Routing (CIDR) notation.

" - }, - "Tags":{ - "shape":"TagList", - "documentation":"

The list of tags for the IP range.

" - } - }, - "documentation":"

Describes an IP range used in a security group.

" - }, - "IPRangeList":{ - "type":"list", - "member":{ - "shape":"IPRange", - "locationName":"IPRange" - } - }, - "ImportTablesCompleted":{ - "type":"list", - "member":{"shape":"String"} - }, - "ImportTablesInProgress":{ - "type":"list", - "member":{"shape":"String"} - }, - "ImportTablesNotStarted":{ - "type":"list", - "member":{"shape":"String"} - }, - "IncompatibleOrderableOptions":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"IncompatibleOrderableOptions", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified options are incompatible.

" - }, - "InsufficientClusterCapacityFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"InsufficientClusterCapacity", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The number of nodes specified exceeds the allotted capacity of the cluster.

" - }, - "InsufficientS3BucketPolicyFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"InsufficientS3BucketPolicyFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The cluster does not have read bucket or put object permissions on the S3 bucket specified when enabling logging.

" - }, - "Integer":{"type":"integer"}, - "IntegerOptional":{"type":"integer"}, - "InvalidClusterParameterGroupStateFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"InvalidClusterParameterGroupState", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The cluster parameter group action can not be completed because another task is in progress that involves the parameter group. Wait a few moments and try the operation again.

" - }, - "InvalidClusterSecurityGroupStateFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"InvalidClusterSecurityGroupState", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The state of the cluster security group is not available.

" - }, - "InvalidClusterSnapshotStateFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"InvalidClusterSnapshotState", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The state of the cluster snapshot is not available, or other accounts are authorized to access the snapshot.

" - }, - "InvalidClusterStateFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"InvalidClusterState", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified cluster is not in the available state.

" - }, - "InvalidClusterSubnetGroupStateFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"InvalidClusterSubnetGroupStateFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The cluster subnet group cannot be deleted because it is in use.

" - }, - "InvalidClusterSubnetStateFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"InvalidClusterSubnetStateFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The state of the subnet is invalid.

" - }, - "InvalidElasticIpFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"InvalidElasticIpFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The Elastic IP (EIP) is invalid or cannot be found.

" - }, - "InvalidHsmClientCertificateStateFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"InvalidHsmClientCertificateStateFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified HSM client certificate is not in the available state, or it is still in use by one or more Amazon Redshift clusters.

" - }, - "InvalidHsmConfigurationStateFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"InvalidHsmConfigurationStateFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified HSM configuration is not in the available state, or it is still in use by one or more Amazon Redshift clusters.

" - }, - "InvalidRestoreFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"InvalidRestore", - "httpStatusCode":406, - "senderFault":true - }, - "exception":true, - "documentation":"

The restore is invalid.

" - }, - "InvalidS3BucketNameFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"InvalidS3BucketNameFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The S3 bucket name is invalid. For more information about naming rules, go to Bucket Restrictions and Limitations in the Amazon Simple Storage Service (S3) Developer Guide.

" - }, - "InvalidS3KeyPrefixFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"InvalidS3KeyPrefixFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The string specified for the logging S3 key prefix does not comply with the documented constraints.

" - }, - "InvalidSubnet":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"InvalidSubnet", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The requested subnet is not valid, or not all of the subnets are in the same VPC.

" - }, - "InvalidSubscriptionStateFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"InvalidSubscriptionStateFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The subscription request is invalid because it is a duplicate request. This subscription request is already in progress.

" - }, - "InvalidTagFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"InvalidTagFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The tag is invalid.

" - }, - "InvalidVPCNetworkStateFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"InvalidVPCNetworkStateFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The cluster subnet group does not cover all Availability Zones.

" - }, - "LoggingStatus":{ - "type":"structure", - "members":{ - "LoggingEnabled":{ - "shape":"Boolean", - "documentation":"

true if logging is on, false if logging is off.

" - }, - "BucketName":{ - "shape":"String", - "documentation":"

The name of the S3 bucket where the log files are stored.

" - }, - "S3KeyPrefix":{ - "shape":"String", - "documentation":"

The prefix applied to the log file names.

" - }, - "LastSuccessfulDeliveryTime":{ - "shape":"TStamp", - "documentation":"

The last time when logs were delivered.

" - }, - "LastFailureTime":{ - "shape":"TStamp", - "documentation":"

The last time when logs failed to be delivered.

" - }, - "LastFailureMessage":{ - "shape":"String", - "documentation":"

The message indicating that logs failed to be delivered.

" - } - }, - "documentation":"

Describes the status of logging for a cluster.

" - }, - "Long":{"type":"long"}, - "LongOptional":{"type":"long"}, - "ModifyClusterMessage":{ - "type":"structure", - "required":["ClusterIdentifier"], - "members":{ - "ClusterIdentifier":{ - "shape":"String", - "documentation":"

The unique identifier of the cluster to be modified.

Example: examplecluster

" - }, - "ClusterType":{ - "shape":"String", - "documentation":"

The new cluster type.

When you submit your cluster resize request, your existing cluster goes into a read-only mode. After Amazon Redshift provisions a new cluster based on your resize requirements, there will be outage for a period while the old cluster is deleted and your connection is switched to the new cluster. You can use DescribeResize to track the progress of the resize request.

Valid Values: multi-node | single-node

" - }, - "NodeType":{ - "shape":"String", - "documentation":"

The new node type of the cluster. If you specify a new node type, you must also specify the number of nodes parameter.

When you submit your request to resize a cluster, Amazon Redshift sets access permissions for the cluster to read-only. After Amazon Redshift provisions a new cluster according to your resize requirements, there will be a temporary outage while the old cluster is deleted and your connection is switched to the new cluster. When the new connection is complete, the original access permissions for the cluster are restored. You can use DescribeResize to track the progress of the resize request.

Valid Values: dw1.xlarge | dw1.8xlarge | dw2.large | dw2.8xlarge.

" - }, - "NumberOfNodes":{ - "shape":"IntegerOptional", - "documentation":"

The new number of nodes of the cluster. If you specify a new number of nodes, you must also specify the node type parameter.

When you submit your request to resize a cluster, Amazon Redshift sets access permissions for the cluster to read-only. After Amazon Redshift provisions a new cluster according to your resize requirements, there will be a temporary outage while the old cluster is deleted and your connection is switched to the new cluster. When the new connection is complete, the original access permissions for the cluster are restored. You can use DescribeResize to track the progress of the resize request.

Valid Values: Integer greater than 0.

" - }, - "ClusterSecurityGroups":{ - "shape":"ClusterSecurityGroupNameList", - "documentation":"

A list of cluster security groups to be authorized on this cluster. This change is asynchronously applied as soon as possible.

Security groups currently associated with the cluster, and not in the list of groups to apply, will be revoked from the cluster.

Constraints:

" - }, - "VpcSecurityGroupIds":{ - "shape":"VpcSecurityGroupIdList", - "documentation":"

A list of virtual private cloud (VPC) security groups to be associated with the cluster.

" - }, - "MasterUserPassword":{ - "shape":"String", - "documentation":"

The new password for the cluster master user. This change is asynchronously applied as soon as possible. Between the time of the request and the completion of the request, the MasterUserPassword element exists in the PendingModifiedValues element of the operation response. Operations never return the password, so this operation provides a way to regain access to the master user account for a cluster if the password is lost.

Default: Uses existing setting.

Constraints:

" - }, - "ClusterParameterGroupName":{ - "shape":"String", - "documentation":"

The name of the cluster parameter group to apply to this cluster. This change is applied only after the cluster is rebooted. To reboot a cluster use RebootCluster.

Default: Uses existing setting.

Constraints: The cluster parameter group must be in the same parameter group family that matches the cluster version.

" - }, - "AutomatedSnapshotRetentionPeriod":{ - "shape":"IntegerOptional", - "documentation":"

The number of days that automated snapshots are retained. If the value is 0, automated snapshots are disabled. Even if automated snapshots are disabled, you can still create manual snapshots when you want with CreateClusterSnapshot.

If you decrease the automated snapshot retention period from its current value, existing automated snapshots that fall outside of the new retention period will be immediately deleted.

Default: Uses existing setting.

Constraints: Must be a value from 0 to 35.

" - }, - "PreferredMaintenanceWindow":{ - "shape":"String", - "documentation":"

The weekly time range (in UTC) during which system maintenance can occur, if necessary. If system maintenance is necessary during the window, it may result in an outage.

This maintenance window change is made immediately. If the new maintenance window indicates the current time, there must be at least 120 minutes between the current time and end of the window in order to ensure that pending changes are applied.

Default: Uses existing setting.

Format: ddd:hh24:mi-ddd:hh24:mi, for example wed:07:30-wed:08:00.

Valid Days: Mon | Tue | Wed | Thu | Fri | Sat | Sun

Constraints: Must be at least 30 minutes.

" - }, - "ClusterVersion":{ - "shape":"String", - "documentation":"

The new version number of the Amazon Redshift engine to upgrade to.

For major version upgrades, if a non-default cluster parameter group is currently in use, a new cluster parameter group in the cluster parameter group family for the new version must be specified. The new cluster parameter group can be the default for that cluster parameter group family. For more information about managing parameter groups, go to Amazon Redshift Parameter Groups in the Amazon Redshift Cluster Management Guide.

Example: 1.0

" - }, - "AllowVersionUpgrade":{ - "shape":"BooleanOptional", - "documentation":"

If true, major version upgrades will be applied automatically to the cluster during the maintenance window.

Default: false

" - }, - "HsmClientCertificateIdentifier":{ - "shape":"String", - "documentation":"

Specifies the name of the HSM client certificate the Amazon Redshift cluster uses to retrieve the data encryption keys stored in an HSM.

" - }, - "HsmConfigurationIdentifier":{ - "shape":"String", - "documentation":"

Specifies the name of the HSM configuration that contains the information the Amazon Redshift cluster can use to retrieve and store keys in an HSM.

" - }, - "NewClusterIdentifier":{ - "shape":"String", - "documentation":"

The new identifier for the cluster.

Constraints:

Example: examplecluster

" - } - }, - "documentation":"

" - }, - "ModifyClusterParameterGroupMessage":{ - "type":"structure", - "required":[ - "ParameterGroupName", - "Parameters" - ], - "members":{ - "ParameterGroupName":{ - "shape":"String", - "documentation":"

The name of the parameter group to be modified.

" - }, - "Parameters":{ - "shape":"ParametersList", - "documentation":"

An array of parameters to be modified. A maximum of 20 parameters can be modified in a single request.

For each parameter to be modified, you must supply at least the parameter name and parameter value; other name-value pairs of the parameter are optional.

For the workload management (WLM) configuration, you must supply all the name-value pairs in the wlm_json_configuration parameter.

" - } - }, - "documentation":"

" - }, - "ModifyClusterSubnetGroupMessage":{ - "type":"structure", - "required":[ - "ClusterSubnetGroupName", - "SubnetIds" - ], - "members":{ - "ClusterSubnetGroupName":{ - "shape":"String", - "documentation":"

The name of the subnet group to be modified.

" - }, - "Description":{ - "shape":"String", - "documentation":"

A text description of the subnet group to be modified.

" - }, - "SubnetIds":{ - "shape":"SubnetIdentifierList", - "documentation":"

An array of VPC subnet IDs. A maximum of 20 subnets can be modified in a single request.

" - } - }, - "documentation":"

" - }, - "ModifyEventSubscriptionMessage":{ - "type":"structure", - "required":["SubscriptionName"], - "members":{ - "SubscriptionName":{ - "shape":"String", - "documentation":"

The name of the modified Amazon Redshift event notification subscription.

" - }, - "SnsTopicArn":{ - "shape":"String", - "documentation":"

The Amazon Resource Name (ARN) of the SNS topic to be used by the event notification subscription.

" - }, - "SourceType":{ - "shape":"String", - "documentation":"

The type of source that will be generating the events. For example, if you want to be notified of events generated by a cluster, you would set this parameter to cluster. If this value is not specified, events are returned for all Amazon Redshift objects in your AWS account. You must specify a source type in order to specify source IDs.

Valid values: cluster, cluster-parameter-group, cluster-security-group, and cluster-snapshot.

" - }, - "SourceIds":{ - "shape":"SourceIdsList", - "documentation":"

A list of one or more identifiers of Amazon Redshift source objects. All of the objects must be of the same type as was specified in the source type parameter. The event subscription will return only events generated by the specified objects. If not specified, then events are returned for all objects within the source type specified.

Example: my-cluster-1, my-cluster-2

Example: my-snapshot-20131010

" - }, - "EventCategories":{ - "shape":"EventCategoriesList", - "documentation":"

Specifies the Amazon Redshift event categories to be published by the event notification subscription.

Values: Configuration, Management, Monitoring, Security

" - }, - "Severity":{ - "shape":"String", - "documentation":"

Specifies the Amazon Redshift event severity to be published by the event notification subscription.

Values: ERROR, INFO

" - }, - "Enabled":{ - "shape":"BooleanOptional", - "documentation":"

A Boolean value indicating if the subscription is enabled. true indicates the subscription is enabled

" - } - }, - "documentation":"

" - }, - "ModifySnapshotCopyRetentionPeriodMessage":{ - "type":"structure", - "required":[ - "ClusterIdentifier", - "RetentionPeriod" - ], - "members":{ - "ClusterIdentifier":{ - "shape":"String", - "documentation":"

The unique identifier of the cluster for which you want to change the retention period for automated snapshots that are copied to a destination region.

Constraints: Must be the valid name of an existing cluster that has cross-region snapshot copy enabled.

" - }, - "RetentionPeriod":{ - "shape":"Integer", - "documentation":"

The number of days to retain automated snapshots in the destination region after they are copied from the source region.

If you decrease the retention period for automated snapshots that are copied to a destination region, Amazon Redshift will delete any existing automated snapshots that were copied to the destination region and that fall outside of the new retention period.

Constraints: Must be at least 1 and no more than 35.

" - } - }, - "documentation":"

" - }, - "NumberOfNodesPerClusterLimitExceededFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"NumberOfNodesPerClusterLimitExceeded", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The operation would exceed the number of nodes allowed for a cluster.

" - }, - "NumberOfNodesQuotaExceededFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"NumberOfNodesQuotaExceeded", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The operation would exceed the number of nodes allotted to the account. For information about increasing your quota, go to Limits in Amazon Redshift in the Amazon Redshift Cluster Management Guide.

" - }, - "OrderableClusterOption":{ - "type":"structure", - "members":{ - "ClusterVersion":{ - "shape":"String", - "documentation":"

The version of the orderable cluster.

" - }, - "ClusterType":{ - "shape":"String", - "documentation":"

The cluster type, for example multi-node.

" - }, - "NodeType":{ - "shape":"String", - "documentation":"

The node type for the orderable cluster.

" - }, - "AvailabilityZones":{ - "shape":"AvailabilityZoneList", - "documentation":"

A list of availability zones for the orderable cluster.

" - } - }, - "wrapper":true, - "documentation":"

Describes an orderable cluster option.

" - }, - "OrderableClusterOptionsList":{ - "type":"list", - "member":{ - "shape":"OrderableClusterOption", - "locationName":"OrderableClusterOption" - } - }, - "OrderableClusterOptionsMessage":{ - "type":"structure", - "members":{ - "OrderableClusterOptions":{ - "shape":"OrderableClusterOptionsList", - "documentation":"

An OrderableClusterOption structure containing information about orderable options for the Cluster.

" - }, - "Marker":{ - "shape":"String", - "documentation":"

A value that indicates the starting point for the next set of response records in a subsequent request. If a value is returned in a response, you can retrieve the next set of records by providing this returned marker value in the Marker parameter and retrying the command. If the Marker field is empty, all response records have been retrieved for the request.

" - } - }, - "documentation":"

Contains the output from the DescribeOrderableClusterOptions action.

" - }, - "Parameter":{ - "type":"structure", - "members":{ - "ParameterName":{ - "shape":"String", - "documentation":"

The name of the parameter.

" - }, - "ParameterValue":{ - "shape":"String", - "documentation":"

The value of the parameter.

" - }, - "Description":{ - "shape":"String", - "documentation":"

A description of the parameter.

" - }, - "Source":{ - "shape":"String", - "documentation":"

The source of the parameter value, such as \"engine-default\" or \"user\".

" - }, - "DataType":{ - "shape":"String", - "documentation":"

The data type of the parameter.

" - }, - "AllowedValues":{ - "shape":"String", - "documentation":"

The valid range of values for the parameter.

" - }, - "IsModifiable":{ - "shape":"Boolean", - "documentation":"

If true, the parameter can be modified. Some parameters have security or operational implications that prevent them from being changed.

" - }, - "MinimumEngineVersion":{ - "shape":"String", - "documentation":"

The earliest engine version to which the parameter can apply.

" - } - }, - "documentation":"

Describes a parameter in a cluster parameter group.

" - }, - "ParameterGroupList":{ - "type":"list", - "member":{ - "shape":"ClusterParameterGroup", - "locationName":"ClusterParameterGroup" - } - }, - "ParametersList":{ - "type":"list", - "member":{ - "shape":"Parameter", - "locationName":"Parameter" - } - }, - "PendingModifiedValues":{ - "type":"structure", - "members":{ - "MasterUserPassword":{ - "shape":"String", - "documentation":"

The pending or in-progress change of the master user password for the cluster.

" - }, - "NodeType":{ - "shape":"String", - "documentation":"

The pending or in-progress change of the cluster's node type.

" - }, - "NumberOfNodes":{ - "shape":"IntegerOptional", - "documentation":"

The pending or in-progress change of the number of nodes in the cluster.

" - }, - "ClusterType":{ - "shape":"String", - "documentation":"

The pending or in-progress change of the cluster type.

" - }, - "ClusterVersion":{ - "shape":"String", - "documentation":"

The pending or in-progress change of the service version.

" - }, - "AutomatedSnapshotRetentionPeriod":{ - "shape":"IntegerOptional", - "documentation":"

The pending or in-progress change of the automated snapshot retention period.

" - }, - "ClusterIdentifier":{ - "shape":"String", - "documentation":"

The pending or in-progress change of the new identifier for the cluster.

" - } - }, - "documentation":"

Describes cluster attributes that are in a pending state. A change to one or more the attributes was requested and is in progress or will be applied.

" - }, - "PurchaseReservedNodeOfferingMessage":{ - "type":"structure", - "required":["ReservedNodeOfferingId"], - "members":{ - "ReservedNodeOfferingId":{ - "shape":"String", - "documentation":"

The unique identifier of the reserved node offering you want to purchase.

" - }, - "NodeCount":{ - "shape":"IntegerOptional", - "documentation":"

The number of reserved nodes you want to purchase.

Default: 1

" - } - }, - "documentation":"

" - }, - "RebootClusterMessage":{ - "type":"structure", - "required":["ClusterIdentifier"], - "members":{ - "ClusterIdentifier":{ - "shape":"String", - "documentation":"

The cluster identifier.

" - } - }, - "documentation":"

" - }, - "RecurringCharge":{ - "type":"structure", - "members":{ - "RecurringChargeAmount":{ - "shape":"Double", - "documentation":"

The amount charged per the period of time specified by the recurring charge frequency.

" - }, - "RecurringChargeFrequency":{ - "shape":"String", - "documentation":"

The frequency at which the recurring charge amount is applied.

" - } - }, - "wrapper":true, - "documentation":"

Describes a recurring charge.

" - }, - "RecurringChargeList":{ - "type":"list", - "member":{ - "shape":"RecurringCharge", - "locationName":"RecurringCharge" - } - }, - "ReservedNode":{ - "type":"structure", - "members":{ - "ReservedNodeId":{ - "shape":"String", - "documentation":"

The unique identifier for the reservation.

" - }, - "ReservedNodeOfferingId":{ - "shape":"String", - "documentation":"

The identifier for the reserved node offering.

" - }, - "NodeType":{ - "shape":"String", - "documentation":"

The node type of the reserved node.

" - }, - "StartTime":{ - "shape":"TStamp", - "documentation":"

The time the reservation started. You purchase a reserved node offering for a duration. This is the start time of that duration.

" - }, - "Duration":{ - "shape":"Integer", - "documentation":"

The duration of the node reservation in seconds.

" - }, - "FixedPrice":{ - "shape":"Double", - "documentation":"

The fixed cost Amazon Redshift charged you for this reserved node.

" - }, - "UsagePrice":{ - "shape":"Double", - "documentation":"

The hourly rate Amazon Redshift charge you for this reserved node.

" - }, - "CurrencyCode":{ - "shape":"String", - "documentation":"

The currency code for the reserved cluster.

" - }, - "NodeCount":{ - "shape":"Integer", - "documentation":"

The number of reserved compute nodes.

" - }, - "State":{ - "shape":"String", - "documentation":"

The state of the reserved compute node.

Possible Values:

" - }, - "OfferingType":{ - "shape":"String", - "documentation":"

The anticipated utilization of the reserved node, as defined in the reserved node offering.

" - }, - "RecurringCharges":{ - "shape":"RecurringChargeList", - "documentation":"

The recurring charges for the reserved node.

" - } - }, - "wrapper":true, - "documentation":"

Describes a reserved node.

" - }, - "ReservedNodeAlreadyExistsFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"ReservedNodeAlreadyExists", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

User already has a reservation with the given identifier.

" - }, - "ReservedNodeList":{ - "type":"list", - "member":{ - "shape":"ReservedNode", - "locationName":"ReservedNode" - } - }, - "ReservedNodeNotFoundFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"ReservedNodeNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified reserved compute node not found.

" - }, - "ReservedNodeOffering":{ - "type":"structure", - "members":{ - "ReservedNodeOfferingId":{ - "shape":"String", - "documentation":"

The offering identifier.

" - }, - "NodeType":{ - "shape":"String", - "documentation":"

The node type offered by the reserved node offering.

" - }, - "Duration":{ - "shape":"Integer", - "documentation":"

The duration, in seconds, for which the offering will reserve the node.

" - }, - "FixedPrice":{ - "shape":"Double", - "documentation":"

The upfront fixed charge you will pay to purchase the specific reserved node offering.

" - }, - "UsagePrice":{ - "shape":"Double", - "documentation":"

The rate you are charged for each hour the cluster that is using the offering is running.

" - }, - "CurrencyCode":{ - "shape":"String", - "documentation":"

The currency code for the compute nodes offering.

" - }, - "OfferingType":{ - "shape":"String", - "documentation":"

The anticipated utilization of the reserved node, as defined in the reserved node offering.

" - }, - "RecurringCharges":{ - "shape":"RecurringChargeList", - "documentation":"

The charge to your account regardless of whether you are creating any clusters using the node offering. Recurring charges are only in effect for heavy-utilization reserved nodes.

" - } - }, - "wrapper":true, - "documentation":"

Describes a reserved node offering.

" - }, - "ReservedNodeOfferingList":{ - "type":"list", - "member":{ - "shape":"ReservedNodeOffering", - "locationName":"ReservedNodeOffering" - } - }, - "ReservedNodeOfferingNotFoundFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"ReservedNodeOfferingNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

Specified offering does not exist.

" - }, - "ReservedNodeOfferingsMessage":{ - "type":"structure", - "members":{ - "Marker":{ - "shape":"String", - "documentation":"

A value that indicates the starting point for the next set of response records in a subsequent request. If a value is returned in a response, you can retrieve the next set of records by providing this returned marker value in the Marker parameter and retrying the command. If the Marker field is empty, all response records have been retrieved for the request.

" - }, - "ReservedNodeOfferings":{ - "shape":"ReservedNodeOfferingList", - "documentation":"

A list of reserved node offerings.

" - } - }, - "documentation":"

Contains the output from the DescribeReservedNodeOfferings action.

" - }, - "ReservedNodeQuotaExceededFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"ReservedNodeQuotaExceeded", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Request would exceed the user's compute node quota. For information about increasing your quota, go to Limits in Amazon Redshift in the Amazon Redshift Cluster Management Guide.

" - }, - "ReservedNodesMessage":{ - "type":"structure", - "members":{ - "Marker":{ - "shape":"String", - "documentation":"

A value that indicates the starting point for the next set of response records in a subsequent request. If a value is returned in a response, you can retrieve the next set of records by providing this returned marker value in the Marker parameter and retrying the command. If the Marker field is empty, all response records have been retrieved for the request.

" - }, - "ReservedNodes":{ - "shape":"ReservedNodeList", - "documentation":"

The list of reserved nodes.

" - } - }, - "documentation":"

Contains the output from the DescribeReservedNodes action.

" - }, - "ResetClusterParameterGroupMessage":{ - "type":"structure", - "required":["ParameterGroupName"], - "members":{ - "ParameterGroupName":{ - "shape":"String", - "documentation":"

The name of the cluster parameter group to be reset.

" - }, - "ResetAllParameters":{ - "shape":"Boolean", - "documentation":"

If true, all parameters in the specified parameter group will be reset to their default values.

Default: true

" - }, - "Parameters":{ - "shape":"ParametersList", - "documentation":"

An array of names of parameters to be reset. If ResetAllParameters option is not used, then at least one parameter name must be supplied.

Constraints: A maximum of 20 parameters can be reset in a single request.

" - } - }, - "documentation":"

" - }, - "ResizeNotFoundFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"ResizeNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

A resize operation for the specified cluster is not found.

" - }, - "ResizeProgressMessage":{ - "type":"structure", - "members":{ - "TargetNodeType":{ - "shape":"String", - "documentation":"

The node type that the cluster will have after the resize operation is complete.

" - }, - "TargetNumberOfNodes":{ - "shape":"IntegerOptional", - "documentation":"

The number of nodes that the cluster will have after the resize operation is complete.

" - }, - "TargetClusterType":{ - "shape":"String", - "documentation":"

The cluster type after the resize operation is complete.

Valid Values: multi-node | single-node

" - }, - "Status":{ - "shape":"String", - "documentation":"

The status of the resize operation.

Valid Values: NONE | IN_PROGRESS | FAILED | SUCCEEDED

" - }, - "ImportTablesCompleted":{ - "shape":"ImportTablesCompleted", - "documentation":"

The names of tables that have been completely imported .

Valid Values: List of table names.

" - }, - "ImportTablesInProgress":{ - "shape":"ImportTablesInProgress", - "documentation":"

The names of tables that are being currently imported.

Valid Values: List of table names.

" - }, - "ImportTablesNotStarted":{ - "shape":"ImportTablesNotStarted", - "documentation":"

The names of tables that have not been yet imported.

Valid Values: List of table names

" - }, - "AvgResizeRateInMegaBytesPerSecond":{ - "shape":"DoubleOptional", - "documentation":"

The average rate of the resize operation over the last few minutes, measured in megabytes per second. After the resize operation completes, this value shows the average rate of the entire resize operation.

" - }, - "TotalResizeDataInMegaBytes":{ - "shape":"LongOptional", - "documentation":"

The estimated total amount of data, in megabytes, on the cluster before the resize operation began.

" - }, - "ProgressInMegaBytes":{ - "shape":"LongOptional", - "documentation":"

While the resize operation is in progress, this value shows the current amount of data, in megabytes, that has been processed so far. When the resize operation is complete, this value shows the total amount of data, in megabytes, on the cluster, which may be more or less than TotalResizeDataInMegaBytes (the estimated total amount of data before resize).

" - }, - "ElapsedTimeInSeconds":{ - "shape":"LongOptional", - "documentation":"

The amount of seconds that have elapsed since the resize operation began. After the resize operation completes, this value shows the total actual time, in seconds, for the resize operation.

" - }, - "EstimatedTimeToCompletionInSeconds":{ - "shape":"LongOptional", - "documentation":"

The estimated time remaining, in seconds, until the resize operation is complete. This value is calculated based on the average resize rate and the estimated amount of data remaining to be processed. Once the resize operation is complete, this value will be 0.

" - } - }, - "documentation":"

Describes the result of a cluster resize operation.

" - }, - "ResourceNotFoundFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"ResourceNotFoundFault", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The resource could not be found.

" - }, - "RestoreFromClusterSnapshotMessage":{ - "type":"structure", - "required":[ - "ClusterIdentifier", - "SnapshotIdentifier" - ], - "members":{ - "ClusterIdentifier":{ - "shape":"String", - "documentation":"

The identifier of the cluster that will be created from restoring the snapshot.

Constraints:

" - }, - "SnapshotIdentifier":{ - "shape":"String", - "documentation":"

The name of the snapshot from which to create the new cluster. This parameter isn't case sensitive.

Example: my-snapshot-id

" - }, - "SnapshotClusterIdentifier":{ - "shape":"String", - "documentation":"

The name of the cluster the source snapshot was created from. This parameter is required if your IAM user has a policy containing a snapshot resource element that specifies anything other than * for the cluster name.

" - }, - "Port":{ - "shape":"IntegerOptional", - "documentation":"

The port number on which the cluster accepts connections.

Default: The same port as the original cluster.

Constraints: Must be between 1115 and 65535.

" - }, - "AvailabilityZone":{ - "shape":"String", - "documentation":"

The Amazon EC2 Availability Zone in which to restore the cluster.

Default: A random, system-chosen Availability Zone.

Example: us-east-1a

" - }, - "AllowVersionUpgrade":{ - "shape":"BooleanOptional", - "documentation":"

If true, major version upgrades can be applied during the maintenance window to the Amazon Redshift engine that is running on the cluster.

Default: true

" - }, - "ClusterSubnetGroupName":{ - "shape":"String", - "documentation":"

The name of the subnet group where you want to cluster restored.

A snapshot of cluster in VPC can be restored only in VPC. Therefore, you must provide subnet group name where you want the cluster restored.

" - }, - "PubliclyAccessible":{ - "shape":"BooleanOptional", - "documentation":"

If true, the cluster can be accessed from a public network.

" - }, - "OwnerAccount":{ - "shape":"String", - "documentation":"

The AWS customer account used to create or copy the snapshot. Required if you are restoring a snapshot you do not own, optional if you own the snapshot.

" - }, - "HsmClientCertificateIdentifier":{ - "shape":"String", - "documentation":"

Specifies the name of the HSM client certificate the Amazon Redshift cluster uses to retrieve the data encryption keys stored in an HSM.

" - }, - "HsmConfigurationIdentifier":{ - "shape":"String", - "documentation":"

Specifies the name of the HSM configuration that contains the information the Amazon Redshift cluster can use to retrieve and store keys in an HSM.

" - }, - "ElasticIp":{ - "shape":"String", - "documentation":"

The elastic IP (EIP) address for the cluster.

" - }, - "ClusterParameterGroupName":{ - "shape":"String", - "documentation":"

The name of the parameter group to be associated with this cluster.

Default: The default Amazon Redshift cluster parameter group. For information about the default parameter group, go to Working with Amazon Redshift Parameter Groups.

Constraints:

" - }, - "ClusterSecurityGroups":{ - "shape":"ClusterSecurityGroupNameList", - "documentation":"

A list of security groups to be associated with this cluster.

Default: The default cluster security group for Amazon Redshift.

Cluster security groups only apply to clusters outside of VPCs.

" - }, - "VpcSecurityGroupIds":{ - "shape":"VpcSecurityGroupIdList", - "documentation":"

A list of Virtual Private Cloud (VPC) security groups to be associated with the cluster.

Default: The default VPC security group is associated with the cluster.

VPC security groups only apply to clusters in VPCs.

" - }, - "PreferredMaintenanceWindow":{ - "shape":"String", - "documentation":"

The weekly time range (in UTC) during which automated cluster maintenance can occur.

Format: ddd:hh24:mi-ddd:hh24:mi

Default: The value selected for the cluster from which the snapshot was taken. For more information about the time blocks for each region, see Maintenance Windows in Amazon Redshift Cluster Management Guide.

Valid Days: Mon | Tue | Wed | Thu | Fri | Sat | Sun

Constraints: Minimum 30-minute window.

" - }, - "AutomatedSnapshotRetentionPeriod":{ - "shape":"IntegerOptional", - "documentation":"

The number of days that automated snapshots are retained. If the value is 0, automated snapshots are disabled. Even if automated snapshots are disabled, you can still create manual snapshots when you want with CreateClusterSnapshot.

Default: The value selected for the cluster from which the snapshot was taken.

Constraints: Must be a value from 0 to 35.

" - }, - "KmsKeyId":{ - "shape":"String", - "documentation":"

The AWS Key Management Service (KMS) key ID of the encryption key that you want to use to encrypt data in the cluster that you restore from a shared snapshot.

" - } - }, - "documentation":"

" - }, - "RestoreStatus":{ - "type":"structure", - "members":{ - "Status":{ - "shape":"String", - "documentation":"

The status of the restore action. Returns starting, restoring, completed, or failed.

" - }, - "CurrentRestoreRateInMegaBytesPerSecond":{ - "shape":"Double", - "documentation":"

The number of megabytes per second being transferred from the backup storage. Returns the average rate for a completed backup.

" - }, - "SnapshotSizeInMegaBytes":{ - "shape":"Long", - "documentation":"

The size of the set of snapshot data used to restore the cluster.

" - }, - "ProgressInMegaBytes":{ - "shape":"Long", - "documentation":"

The number of megabytes that have been transferred from snapshot storage.

" - }, - "ElapsedTimeInSeconds":{ - "shape":"Long", - "documentation":"

The amount of time an in-progress restore has been running, or the amount of time it took a completed restore to finish.

" - }, - "EstimatedTimeToCompletionInSeconds":{ - "shape":"Long", - "documentation":"

The estimate of the time remaining before the restore will complete. Returns 0 for a completed restore.

" - } - }, - "documentation":"

Describes the status of a cluster restore action. Returns null if the cluster was not created by restoring a snapshot.

" - }, - "RevokeClusterSecurityGroupIngressMessage":{ - "type":"structure", - "required":["ClusterSecurityGroupName"], - "members":{ - "ClusterSecurityGroupName":{ - "shape":"String", - "documentation":"

The name of the security Group from which to revoke the ingress rule.

" - }, - "CIDRIP":{ - "shape":"String", - "documentation":"

The IP range for which to revoke access. This range must be a valid Classless Inter-Domain Routing (CIDR) block of IP addresses. If CIDRIP is specified, EC2SecurityGroupName and EC2SecurityGroupOwnerId cannot be provided.

" - }, - "EC2SecurityGroupName":{ - "shape":"String", - "documentation":"

The name of the EC2 Security Group whose access is to be revoked. If EC2SecurityGroupName is specified, EC2SecurityGroupOwnerId must also be provided and CIDRIP cannot be provided.

" - }, - "EC2SecurityGroupOwnerId":{ - "shape":"String", - "documentation":"

The AWS account number of the owner of the security group specified in the EC2SecurityGroupName parameter. The AWS access key ID is not an acceptable value. If EC2SecurityGroupOwnerId is specified, EC2SecurityGroupName must also be provided. and CIDRIP cannot be provided.

Example: 111122223333

" - } - }, - "documentation":"

???

" - }, - "RevokeSnapshotAccessMessage":{ - "type":"structure", - "required":[ - "SnapshotIdentifier", - "AccountWithRestoreAccess" - ], - "members":{ - "SnapshotIdentifier":{ - "shape":"String", - "documentation":"

The identifier of the snapshot that the account can no longer access.

" - }, - "SnapshotClusterIdentifier":{ - "shape":"String", - "documentation":"

The identifier of the cluster the snapshot was created from. This parameter is required if your IAM user has a policy containing a snapshot resource element that specifies anything other than * for the cluster name.

" - }, - "AccountWithRestoreAccess":{ - "shape":"String", - "documentation":"

The identifier of the AWS customer account that can no longer restore the specified snapshot.

" - } - }, - "documentation":"

" - }, - "RotateEncryptionKeyMessage":{ - "type":"structure", - "required":["ClusterIdentifier"], - "members":{ - "ClusterIdentifier":{ - "shape":"String", - "documentation":"

The unique identifier of the cluster that you want to rotate the encryption keys for.

Constraints: Must be the name of valid cluster that has encryption enabled.

" - } - }, - "documentation":"

" - }, - "SNSInvalidTopicFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"SNSInvalidTopic", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Amazon SNS has responded that there is a problem with the specified Amazon SNS topic.

" - }, - "SNSNoAuthorizationFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"SNSNoAuthorization", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

You do not have permission to publish to the specified Amazon SNS topic.

" - }, - "SNSTopicArnNotFoundFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"SNSTopicArnNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

An Amazon SNS topic with the specified Amazon Resource Name (ARN) does not exist.

" - }, - "Snapshot":{ - "type":"structure", - "members":{ - "SnapshotIdentifier":{ - "shape":"String", - "documentation":"

The snapshot identifier that is provided in the request.

" - }, - "ClusterIdentifier":{ - "shape":"String", - "documentation":"

The identifier of the cluster for which the snapshot was taken.

" - }, - "SnapshotCreateTime":{ - "shape":"TStamp", - "documentation":"

The time (UTC) when Amazon Redshift began the snapshot. A snapshot contains a copy of the cluster data as of this exact time.

" - }, - "Status":{ - "shape":"String", - "documentation":"

The snapshot status. The value of the status depends on the API operation used.

" - }, - "Port":{ - "shape":"Integer", - "documentation":"

The port that the cluster is listening on.

" - }, - "AvailabilityZone":{ - "shape":"String", - "documentation":"

The Availability Zone in which the cluster was created.

" - }, - "ClusterCreateTime":{ - "shape":"TStamp", - "documentation":"

The time (UTC) when the cluster was originally created.

" - }, - "MasterUsername":{ - "shape":"String", - "documentation":"

The master user name for the cluster.

" - }, - "ClusterVersion":{ - "shape":"String", - "documentation":"

The version ID of the Amazon Redshift engine that is running on the cluster.

" - }, - "SnapshotType":{ - "shape":"String", - "documentation":"

The snapshot type. Snapshots created using CreateClusterSnapshot and CopyClusterSnapshot will be of type \"manual\".

" - }, - "NodeType":{ - "shape":"String", - "documentation":"

The node type of the nodes in the cluster.

" - }, - "NumberOfNodes":{ - "shape":"Integer", - "documentation":"

The number of nodes in the cluster.

" - }, - "DBName":{ - "shape":"String", - "documentation":"

The name of the database that was created when the cluster was created.

" - }, - "VpcId":{ - "shape":"String", - "documentation":"

The VPC identifier of the cluster if the snapshot is from a cluster in a VPC. Otherwise, this field is not in the output.

" - }, - "Encrypted":{ - "shape":"Boolean", - "documentation":"

If true, the data in the snapshot is encrypted at rest.

" - }, - "KmsKeyId":{ - "shape":"String", - "documentation":"

The AWS Key Management Service (KMS) key ID of the encryption key that was used to encrypt data in the cluster from which the snapshot was taken.

" - }, - "EncryptedWithHSM":{ - "shape":"Boolean", - "documentation":"

A boolean that indicates whether the snapshot data is encrypted using the HSM keys of the source cluster. true indicates that the data is encrypted using HSM keys.

" - }, - "AccountsWithRestoreAccess":{ - "shape":"AccountsWithRestoreAccessList", - "documentation":"

A list of the AWS customer accounts authorized to restore the snapshot. Returns null if no accounts are authorized. Visible only to the snapshot owner.

" - }, - "OwnerAccount":{ - "shape":"String", - "documentation":"

For manual snapshots, the AWS customer account used to create or copy the snapshot. For automatic snapshots, the owner of the cluster. The owner can perform all snapshot actions, such as sharing a manual snapshot.

" - }, - "TotalBackupSizeInMegaBytes":{ - "shape":"Double", - "documentation":"

The size of the complete set of backup data that would be used to restore the cluster.

" - }, - "ActualIncrementalBackupSizeInMegaBytes":{ - "shape":"Double", - "documentation":"

The size of the incremental backup.

" - }, - "BackupProgressInMegaBytes":{ - "shape":"Double", - "documentation":"

The number of megabytes that have been transferred to the snapshot backup.

" - }, - "CurrentBackupRateInMegaBytesPerSecond":{ - "shape":"Double", - "documentation":"

The number of megabytes per second being transferred to the snapshot backup. Returns 0 for a completed backup.

" - }, - "EstimatedSecondsToCompletion":{ - "shape":"Long", - "documentation":"

The estimate of the time remaining before the snapshot backup will complete. Returns 0 for a completed backup.

" - }, - "ElapsedTimeInSeconds":{ - "shape":"Long", - "documentation":"

The amount of time an in-progress snapshot backup has been running, or the amount of time it took a completed backup to finish.

" - }, - "SourceRegion":{ - "shape":"String", - "documentation":"

The source region from which the snapshot was copied.

" - }, - "Tags":{ - "shape":"TagList", - "documentation":"

The list of tags for the cluster snapshot.

" - } - }, - "wrapper":true, - "documentation":"

Describes a snapshot.

" - }, - "SnapshotCopyAlreadyDisabledFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"SnapshotCopyAlreadyDisabledFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The cluster already has cross-region snapshot copy disabled.

" - }, - "SnapshotCopyAlreadyEnabledFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"SnapshotCopyAlreadyEnabledFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The cluster already has cross-region snapshot copy enabled.

" - }, - "SnapshotCopyDisabledFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"SnapshotCopyDisabledFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Cross-region snapshot copy was temporarily disabled. Try your request again.

" - }, - "SnapshotList":{ - "type":"list", - "member":{ - "shape":"Snapshot", - "locationName":"Snapshot" - } - }, - "SnapshotMessage":{ - "type":"structure", - "members":{ - "Marker":{ - "shape":"String", - "documentation":"

A value that indicates the starting point for the next set of response records in a subsequent request. If a value is returned in a response, you can retrieve the next set of records by providing this returned marker value in the Marker parameter and retrying the command. If the Marker field is empty, all response records have been retrieved for the request.

" - }, - "Snapshots":{ - "shape":"SnapshotList", - "documentation":"

A list of Snapshot instances.

" - } - }, - "documentation":"

Contains the output from the DescribeClusterSnapshots action.

" - }, - "SourceIdsList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"SourceId" - } - }, - "SourceNotFoundFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"SourceNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified Amazon Redshift event source could not be found.

" - }, - "SourceType":{ - "type":"string", - "enum":[ - "cluster", - "cluster-parameter-group", - "cluster-security-group", - "cluster-snapshot" - ] - }, - "String":{"type":"string"}, - "Subnet":{ - "type":"structure", - "members":{ - "SubnetIdentifier":{ - "shape":"String", - "documentation":"

The identifier of the subnet.

" - }, - "SubnetAvailabilityZone":{"shape":"AvailabilityZone"}, - "SubnetStatus":{ - "shape":"String", - "documentation":"

The status of the subnet.

" - } - }, - "documentation":"

Describes a subnet.

" - }, - "SubnetAlreadyInUse":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"SubnetAlreadyInUse", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

A specified subnet is already in use by another cluster.

" - }, - "SubnetIdentifierList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"SubnetIdentifier" - } - }, - "SubnetList":{ - "type":"list", - "member":{ - "shape":"Subnet", - "locationName":"Subnet" - } - }, - "SubscriptionAlreadyExistFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"SubscriptionAlreadyExist", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

There is already an existing event notification subscription with the specified name.

" - }, - "SubscriptionCategoryNotFoundFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"SubscriptionCategoryNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The value specified for the event category was not one of the allowed values, or it specified a category that does not apply to the specified source type. The allowed values are Configuration, Management, Monitoring, and Security.

" - }, - "SubscriptionEventIdNotFoundFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"SubscriptionEventIdNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

An Amazon Redshift event with the specified event ID does not exist.

" - }, - "SubscriptionNotFoundFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"SubscriptionNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

An Amazon Redshift event notification subscription with the specified name does not exist.

" - }, - "SubscriptionSeverityNotFoundFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"SubscriptionSeverityNotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The value specified for the event severity was not one of the allowed values, or it specified a severity that does not apply to the specified source type. The allowed values are ERROR and INFO.

" - }, - "TStamp":{"type":"timestamp"}, - "Tag":{ - "type":"structure", - "members":{ - "Key":{ - "shape":"String", - "documentation":"

The key, or name, for the resource tag.

" - }, - "Value":{ - "shape":"String", - "documentation":"

The value for the resource tag.

" - } - }, - "documentation":"

A tag consisting of a name/value pair for a resource.

" - }, - "TagKeyList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"TagKey" - } - }, - "TagLimitExceededFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"TagLimitExceededFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request exceeds the limit of 10 tags for the resource.

" - }, - "TagList":{ - "type":"list", - "member":{ - "shape":"Tag", - "locationName":"Tag" - } - }, - "TagValueList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"TagValue" - } - }, - "TaggedResource":{ - "type":"structure", - "members":{ - "Tag":{ - "shape":"Tag", - "documentation":"

The tag for the resource.

" - }, - "ResourceName":{ - "shape":"String", - "documentation":"

The Amazon Resource Name (ARN) with which the tag is associated. For example, arn:aws:redshift:us-east-1:123456789:cluster:t1.

" - }, - "ResourceType":{ - "shape":"String", - "documentation":"

The type of resource with which the tag is associated. Valid resource types are:

For more information about Amazon Redshift resource types and constructing ARNs, go to Constructing an Amazon Redshift Amazon Resource Name (ARN) in the Amazon Redshift Cluster Management Guide.

" - } - }, - "documentation":"

A tag and its associated resource.

" - }, - "TaggedResourceList":{ - "type":"list", - "member":{ - "shape":"TaggedResource", - "locationName":"TaggedResource" - } - }, - "TaggedResourceListMessage":{ - "type":"structure", - "members":{ - "TaggedResources":{ - "shape":"TaggedResourceList", - "documentation":"

A list of tags with their associated resources.

" - }, - "Marker":{ - "shape":"String", - "documentation":"

A value that indicates the starting point for the next set of response records in a subsequent request. If a value is returned in a response, you can retrieve the next set of records by providing this returned marker value in the Marker parameter and retrying the command. If the Marker field is empty, all response records have been retrieved for the request.

" - } - }, - "documentation":"

Contains the output from the DescribeTags action.

" - }, - "UnauthorizedOperation":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"UnauthorizedOperation", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Your account is not authorized to perform the requested operation.

" - }, - "UnknownSnapshotCopyRegionFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"UnknownSnapshotCopyRegionFault", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified region is incorrect or does not exist.

" - }, - "UnsupportedOptionFault":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"UnsupportedOptionFault", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

A request option was specified that is not supported.

" - }, - "VpcSecurityGroupIdList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"VpcSecurityGroupId" - } - }, - "VpcSecurityGroupMembership":{ - "type":"structure", - "members":{ - "VpcSecurityGroupId":{"shape":"String"}, - "Status":{"shape":"String"} - }, - "documentation":"

Describes the members of a VPC security group.

" - }, - "VpcSecurityGroupMembershipList":{ - "type":"list", - "member":{ - "shape":"VpcSecurityGroupMembership", - "locationName":"VpcSecurityGroup" - } - }, - "AuthorizeClusterSecurityGroupIngressResult":{ - "type":"structure", - "members":{ - "ClusterSecurityGroup":{"shape":"ClusterSecurityGroup"} - } - }, - "AuthorizeSnapshotAccessResult":{ - "type":"structure", - "members":{ - "Snapshot":{"shape":"Snapshot"} - } - }, - "CopyClusterSnapshotResult":{ - "type":"structure", - "members":{ - "Snapshot":{"shape":"Snapshot"} - } - }, - "CreateClusterResult":{ - "type":"structure", - "members":{ - "Cluster":{"shape":"Cluster"} - } - }, - "CreateClusterParameterGroupResult":{ - "type":"structure", - "members":{ - "ClusterParameterGroup":{"shape":"ClusterParameterGroup"} - } - }, - "CreateClusterSecurityGroupResult":{ - "type":"structure", - "members":{ - "ClusterSecurityGroup":{"shape":"ClusterSecurityGroup"} - } - }, - "CreateClusterSnapshotResult":{ - "type":"structure", - "members":{ - "Snapshot":{"shape":"Snapshot"} - } - }, - "CreateClusterSubnetGroupResult":{ - "type":"structure", - "members":{ - "ClusterSubnetGroup":{"shape":"ClusterSubnetGroup"} - } - }, - "CreateEventSubscriptionResult":{ - "type":"structure", - "members":{ - "EventSubscription":{"shape":"EventSubscription"} - } - }, - "CreateHsmClientCertificateResult":{ - "type":"structure", - "members":{ - "HsmClientCertificate":{"shape":"HsmClientCertificate"} - } - }, - "CreateHsmConfigurationResult":{ - "type":"structure", - "members":{ - "HsmConfiguration":{"shape":"HsmConfiguration"} - } - }, - "DeleteClusterResult":{ - "type":"structure", - "members":{ - "Cluster":{"shape":"Cluster"} - } - }, - "DeleteClusterSnapshotResult":{ - "type":"structure", - "members":{ - "Snapshot":{"shape":"Snapshot"} - } - }, - "DescribeDefaultClusterParametersResult":{ - "type":"structure", - "members":{ - "DefaultClusterParameters":{"shape":"DefaultClusterParameters"} - } - }, - "DisableSnapshotCopyResult":{ - "type":"structure", - "members":{ - "Cluster":{"shape":"Cluster"} - } - }, - "EnableSnapshotCopyResult":{ - "type":"structure", - "members":{ - "Cluster":{"shape":"Cluster"} - } - }, - "ModifyClusterResult":{ - "type":"structure", - "members":{ - "Cluster":{"shape":"Cluster"} - } - }, - "ModifyClusterSubnetGroupResult":{ - "type":"structure", - "members":{ - "ClusterSubnetGroup":{"shape":"ClusterSubnetGroup"} - } - }, - "ModifyEventSubscriptionResult":{ - "type":"structure", - "members":{ - "EventSubscription":{"shape":"EventSubscription"} - } - }, - "ModifySnapshotCopyRetentionPeriodResult":{ - "type":"structure", - "members":{ - "Cluster":{"shape":"Cluster"} - } - }, - "PurchaseReservedNodeOfferingResult":{ - "type":"structure", - "members":{ - "ReservedNode":{"shape":"ReservedNode"} - } - }, - "RebootClusterResult":{ - "type":"structure", - "members":{ - "Cluster":{"shape":"Cluster"} - } - }, - "RestoreFromClusterSnapshotResult":{ - "type":"structure", - "members":{ - "Cluster":{"shape":"Cluster"} - } - }, - "RevokeClusterSecurityGroupIngressResult":{ - "type":"structure", - "members":{ - "ClusterSecurityGroup":{"shape":"ClusterSecurityGroup"} - } - }, - "RevokeSnapshotAccessResult":{ - "type":"structure", - "members":{ - "Snapshot":{"shape":"Snapshot"} - } - }, - "RotateEncryptionKeyResult":{ - "type":"structure", - "members":{ - "Cluster":{"shape":"Cluster"} - } - } - } -} diff --git a/src/github.com/getlantern/aws-sdk-go/apis/redshift/2012-12-01.paginators.json b/src/github.com/getlantern/aws-sdk-go/apis/redshift/2012-12-01.paginators.json deleted file mode 100644 index 03027de356..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/apis/redshift/2012-12-01.paginators.json +++ /dev/null @@ -1,94 +0,0 @@ -{ - "pagination": { - "DescribeClusterParameterGroups": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "ParameterGroups" - }, - "DescribeClusterParameters": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "Parameters" - }, - "DescribeClusterSecurityGroups": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "ClusterSecurityGroups" - }, - "DescribeClusterSnapshots": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "Snapshots" - }, - "DescribeClusterSubnetGroups": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "ClusterSubnetGroups" - }, - "DescribeClusterVersions": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "ClusterVersions" - }, - "DescribeClusters": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "Clusters" - }, - "DescribeDefaultClusterParameters": { - "input_token": "Marker", - "output_token": "DefaultClusterParameters.Marker", - "limit_key": "MaxRecords", - "result_key": "DefaultClusterParameters.Parameters" - }, - "DescribeEventSubscriptions": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "EventSubscriptionsList" - }, - "DescribeEvents": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "Events" - }, - "DescribeHsmClientCertificates": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "HsmClientCertificates" - }, - "DescribeHsmConfigurations": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "HsmConfigurations" - }, - "DescribeOrderableClusterOptions": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "OrderableClusterOptions" - }, - "DescribeReservedNodeOfferings": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "ReservedNodeOfferings" - }, - "DescribeReservedNodes": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "ReservedNodes" - } - } -} diff --git a/src/github.com/getlantern/aws-sdk-go/apis/redshift/2012-12-01.waiters.json b/src/github.com/getlantern/aws-sdk-go/apis/redshift/2012-12-01.waiters.json deleted file mode 100644 index d91b0eb334..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/apis/redshift/2012-12-01.waiters.json +++ /dev/null @@ -1,78 +0,0 @@ -{ - "version": 2, - "waiters": { - "ClusterAvailable": { - "delay": 60, - "operation": "DescribeClusters", - "maxAttempts": 30, - "acceptors": [ - { - "expected": "available", - "matcher": "pathAll", - "state": "success", - "argument": "Clusters[].ClusterStatus" - }, - { - "expected": "deleting", - "matcher": "pathAny", - "state": "failure", - "argument": "Clusters[].ClusterStatus" - }, - { - "expected": "ClusterNotFound", - "matcher": "error", - "state": "retry" - } - ] - }, - "ClusterDeleted": { - "delay": 60, - "operation": "DescribeClusters", - "maxAttempts": 30, - "acceptors": [ - { - "expected": "ClusterNotFound", - "matcher": "error", - "state": "success" - }, - { - "expected": "creating", - "matcher": "pathAny", - "state": "failure", - "argument": "Clusters[].ClusterStatus" - }, - { - "expected": "rebooting", - "matcher": "pathAny", - "state": "failure", - "argument": "Clusters[].ClusterStatus" - } - ] - }, - "SnapshotAvailable": { - "delay": 15, - "operation": "DescribeClusterSnapshots", - "maxAttempts": 20, - "acceptors": [ - { - "expected": "available", - "matcher": "pathAll", - "state": "success", - "argument": "Snapshots[].Status" - }, - { - "expected": "failed", - "matcher": "pathAny", - "state": "failure", - "argument": "Snapshots[].Status" - }, - { - "expected": "deleted", - "matcher": "pathAny", - "state": "failure", - "argument": "Snapshots[].Status" - } - ] - } - } -} diff --git a/src/github.com/getlantern/aws-sdk-go/apis/route53/2013-04-01.normal.json b/src/github.com/getlantern/aws-sdk-go/apis/route53/2013-04-01.normal.json deleted file mode 100644 index 3baa20c0d9..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/apis/route53/2013-04-01.normal.json +++ /dev/null @@ -1,3073 +0,0 @@ -{ - "metadata":{ - "apiVersion":"2013-04-01", - "endpointPrefix":"route53", - "globalEndpoint":"route53.amazonaws.com", - "serviceAbbreviation":"Route 53", - "serviceFullName":"Amazon Route 53", - "signatureVersion":"v3https", - "protocol":"rest-xml" - }, - "operations":{ - "AssociateVPCWithHostedZone":{ - "name":"AssociateVPCWithHostedZone", - "http":{ - "method":"POST", - "requestUri":"/2013-04-01/hostedzone/{Id}/associatevpc" - }, - "input":{ - "shape":"AssociateVPCWithHostedZoneRequest", - "documentation":"

A complex type that contains information about the request to associate a VPC with an hosted zone.

", - "xmlNamespace":{"uri":"https://route53.amazonaws.com/doc/2013-04-01/"}, - "locationName":"AssociateVPCWithHostedZoneRequest" - }, - "output":{ - "shape":"AssociateVPCWithHostedZoneResponse", - "documentation":"

A complex type containing the response information for the request.

" - }, - "errors":[ - { - "shape":"NoSuchHostedZone", - "error":{"httpStatusCode":404}, - "exception":true - }, - { - "shape":"InvalidVPCId", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

The hosted zone you are trying to create for your VPC_ID does not belong to you. Route 53 returns this error when the VPC specified by VPCId does not belong to you.

" - }, - { - "shape":"InvalidInput", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

Some value specified in the request is invalid or the XML document is malformed.

" - }, - { - "shape":"PublicZoneVPCAssociation", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

The hosted zone you are trying to associate VPC with doesn't have any VPC association. Route 53 currently doesn't support associate a VPC with a public hosted zone.

" - }, - { - "shape":"ConflictingDomainExists", - "exception":true - } - ], - "documentation":"

This action associates a VPC with an hosted zone.

To associate a VPC with an hosted zone, send a POST request to the 2013-04-01/hostedzone/hosted zone ID/associatevpc resource. The request body must include an XML document with a AssociateVPCWithHostedZoneRequest element. The response returns the AssociateVPCWithHostedZoneResponse element that contains ChangeInfo for you to track the progress of the AssociateVPCWithHostedZoneRequest you made. See GetChange operation for how to track the progress of your change.

" - }, - "ChangeResourceRecordSets":{ - "name":"ChangeResourceRecordSets", - "http":{ - "method":"POST", - "requestUri":"/2013-04-01/hostedzone/{Id}/rrset/" - }, - "input":{ - "shape":"ChangeResourceRecordSetsRequest", - "documentation":"

A complex type that contains a change batch.

", - "xmlNamespace":{"uri":"https://route53.amazonaws.com/doc/2013-04-01/"}, - "locationName":"ChangeResourceRecordSetsRequest" - }, - "output":{ - "shape":"ChangeResourceRecordSetsResponse", - "documentation":"

A complex type containing the response for the request.

" - }, - "errors":[ - { - "shape":"NoSuchHostedZone", - "error":{"httpStatusCode":404}, - "exception":true - }, - { - "shape":"NoSuchHealthCheck", - "error":{"httpStatusCode":404}, - "exception":true, - "documentation":"

The health check you are trying to get or delete does not exist.

" - }, - { - "shape":"InvalidChangeBatch", - "exception":true, - "documentation":"

This error contains a list of one or more error messages. Each error message indicates one error in the change batch. For more information, see Example InvalidChangeBatch Errors.

" - }, - { - "shape":"InvalidInput", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

Some value specified in the request is invalid or the XML document is malformed.

" - }, - { - "shape":"PriorRequestNotComplete", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

The request was rejected because Route 53 was still processing a prior request.

" - } - ], - "documentation":"

Use this action to create or change your authoritative DNS information. To use this action, send a POST request to the 2013-04-01/hostedzone/hosted Zone ID/rrset resource. The request body must include an XML document with a ChangeResourceRecordSetsRequest element.

Changes are a list of change items and are considered transactional. For more information on transactional changes, also known as change batches, see Creating, Changing, and Deleting Resource Record Sets Using the Route 53 API in the Amazon Route 53 Developer Guide.

Due to the nature of transactional changes, you cannot delete the same resource record set more than once in a single change batch. If you attempt to delete the same change batch more than once, Route 53 returns an InvalidChangeBatch error.

In response to a ChangeResourceRecordSets request, your DNS data is changed on all Route 53 DNS servers. Initially, the status of a change is PENDING. This means the change has not yet propagated to all the authoritative Route 53 DNS servers. When the change is propagated to all hosts, the change returns a status of INSYNC.

Note the following limitations on a ChangeResourceRecordSets request:

- A request cannot contain more than 100 Change elements.

- A request cannot contain more than 1000 ResourceRecord elements.

The sum of the number of characters (including spaces) in all Value elements in a request cannot exceed 32,000 characters.

" - }, - "ChangeTagsForResource":{ - "name":"ChangeTagsForResource", - "http":{ - "method":"POST", - "requestUri":"/2013-04-01/tags/{ResourceType}/{ResourceId}" - }, - "input":{ - "shape":"ChangeTagsForResourceRequest", - "documentation":"

A complex type containing information about a request to add, change, or delete the tags that are associated with a resource.

", - "xmlNamespace":{"uri":"https://route53.amazonaws.com/doc/2013-04-01/"}, - "locationName":"ChangeTagsForResourceRequest" - }, - "output":{ - "shape":"ChangeTagsForResourceResponse", - "documentation":"

Empty response for the request.

" - }, - "errors":[ - { - "shape":"InvalidInput", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

Some value specified in the request is invalid or the XML document is malformed.

" - }, - { - "shape":"NoSuchHealthCheck", - "error":{"httpStatusCode":404}, - "exception":true, - "documentation":"

The health check you are trying to get or delete does not exist.

" - }, - { - "shape":"NoSuchHostedZone", - "error":{"httpStatusCode":404}, - "exception":true - }, - { - "shape":"PriorRequestNotComplete", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

The request was rejected because Route 53 was still processing a prior request.

" - }, - { - "shape":"ThrottlingException", - "error":{"httpStatusCode":400}, - "exception":true - } - ] - }, - "CreateHealthCheck":{ - "name":"CreateHealthCheck", - "http":{ - "method":"POST", - "requestUri":"/2013-04-01/healthcheck", - "responseCode":201 - }, - "input":{ - "shape":"CreateHealthCheckRequest", - "documentation":"

>A complex type that contains information about the request to create a health check.

", - "xmlNamespace":{"uri":"https://route53.amazonaws.com/doc/2013-04-01/"}, - "locationName":"CreateHealthCheckRequest" - }, - "output":{ - "shape":"CreateHealthCheckResponse", - "documentation":"

A complex type containing the response information for the new health check.

" - }, - "errors":[ - { - "shape":"TooManyHealthChecks", - "exception":true - }, - { - "shape":"HealthCheckAlreadyExists", - "error":{"httpStatusCode":409}, - "exception":true, - "documentation":"

The health check you are trying to create already exists. Route 53 returns this error when a health check has already been created with the specified CallerReference.

" - }, - { - "shape":"InvalidInput", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

Some value specified in the request is invalid or the XML document is malformed.

" - } - ], - "documentation":"

This action creates a new health check.

To create a new health check, send a POST request to the 2013-04-01/healthcheck resource. The request body must include an XML document with a CreateHealthCheckRequest element. The response returns the CreateHealthCheckResponse element that contains metadata about the health check.

" - }, - "CreateHostedZone":{ - "name":"CreateHostedZone", - "http":{ - "method":"POST", - "requestUri":"/2013-04-01/hostedzone", - "responseCode":201 - }, - "input":{ - "shape":"CreateHostedZoneRequest", - "documentation":"

A complex type that contains information about the request to create a hosted zone.

", - "xmlNamespace":{"uri":"https://route53.amazonaws.com/doc/2013-04-01/"}, - "locationName":"CreateHostedZoneRequest" - }, - "output":{ - "shape":"CreateHostedZoneResponse", - "documentation":"

A complex type containing the response information for the new hosted zone.

" - }, - "errors":[ - { - "shape":"InvalidDomainName", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

This error indicates that the specified domain name is not valid.

" - }, - { - "shape":"HostedZoneAlreadyExists", - "error":{"httpStatusCode":409}, - "exception":true, - "documentation":"

The hosted zone you are trying to create already exists. Route 53 returns this error when a hosted zone has already been created with the specified CallerReference.

" - }, - { - "shape":"TooManyHostedZones", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

This error indicates that you've reached the maximum number of hosted zones that can be created for the current AWS account. You can request an increase to the limit on the Contact Us page.

" - }, - { - "shape":"InvalidVPCId", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

The hosted zone you are trying to create for your VPC_ID does not belong to you. Route 53 returns this error when the VPC specified by VPCId does not belong to you.

" - }, - { - "shape":"InvalidInput", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

Some value specified in the request is invalid or the XML document is malformed.

" - }, - { - "shape":"DelegationSetNotAvailable", - "exception":true, - "documentation":"

Route 53 allows some duplicate domain names, but there is a maximum number of duplicate names. This error indicates that you have reached that maximum. If you want to create another hosted zone with the same name and Route 53 generates this error, you can request an increase to the limit on the Contact Us page.

" - }, - { - "shape":"ConflictingDomainExists", - "exception":true - }, - { - "shape":"NoSuchDelegationSet", - "exception":true, - "documentation":"

The specified delegation set does not exist.

" - }, - { - "shape":"DelegationSetNotReusable", - "exception":true, - "documentation":"

The specified delegation set has not been marked as reusable.

" - } - ], - "documentation":"

This action creates a new hosted zone.

To create a new hosted zone, send a POST request to the 2013-04-01/hostedzone resource. The request body must include an XML document with a CreateHostedZoneRequest element. The response returns the CreateHostedZoneResponse element that contains metadata about the hosted zone.

Route 53 automatically creates a default SOA record and four NS records for the zone. The NS records in the hosted zone are the name servers you give your registrar to delegate your domain to. For more information about SOA and NS records, see NS and SOA Records that Route 53 Creates for a Hosted Zone in the Amazon Route 53 Developer Guide.

When you create a zone, its initial status is PENDING. This means that it is not yet available on all DNS servers. The status of the zone changes to INSYNC when the NS and SOA records are available on all Route 53 DNS servers.

When trying to create a hosted zone using a reusable delegation set, you could specify an optional DelegationSetId, and Route53 would assign those 4 NS records for the zone, instead of alloting a new one.

" - }, - "CreateReusableDelegationSet":{ - "name":"CreateReusableDelegationSet", - "http":{ - "method":"POST", - "requestUri":"/2013-04-01/delegationset", - "responseCode":201 - }, - "input":{ - "shape":"CreateReusableDelegationSetRequest", - "xmlNamespace":{"uri":"https://route53.amazonaws.com/doc/2013-04-01/"}, - "locationName":"CreateReusableDelegationSetRequest" - }, - "output":{"shape":"CreateReusableDelegationSetResponse"}, - "errors":[ - { - "shape":"DelegationSetAlreadyCreated", - "exception":true, - "documentation":"

A delegation set with the same owner and caller reference combination has already been created.

" - }, - { - "shape":"LimitsExceeded", - "exception":true, - "documentation":"

The limits specified for a resource have been exceeded.

" - }, - { - "shape":"HostedZoneNotFound", - "exception":true, - "documentation":"

The specified HostedZone cannot be found.

" - }, - { - "shape":"InvalidArgument", - "exception":true, - "documentation":"

At least one of the specified arguments is invalid.

" - }, - { - "shape":"InvalidInput", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

Some value specified in the request is invalid or the XML document is malformed.

" - }, - { - "shape":"DelegationSetNotAvailable", - "exception":true, - "documentation":"

Route 53 allows some duplicate domain names, but there is a maximum number of duplicate names. This error indicates that you have reached that maximum. If you want to create another hosted zone with the same name and Route 53 generates this error, you can request an increase to the limit on the Contact Us page.

" - }, - { - "shape":"DelegationSetAlreadyReusable", - "exception":true, - "documentation":"

The specified delegation set has already been marked as reusable.

" - } - ], - "documentation":"

This action creates a reusable delegationSet.

To create a new reusable delegationSet, send a POST request to the 2013-04-01/delegationset resource. The request body must include an XML document with a CreateReusableDelegationSetRequest element. The response returns the CreateReusableDelegationSetResponse element that contains metadata about the delegationSet.

If the optional parameter HostedZoneId is specified, it marks the delegationSet associated with that particular hosted zone as reusable.

" - }, - "DeleteHealthCheck":{ - "name":"DeleteHealthCheck", - "http":{ - "method":"DELETE", - "requestUri":"/2013-04-01/healthcheck/{HealthCheckId}" - }, - "input":{ - "shape":"DeleteHealthCheckRequest", - "documentation":"

A complex type containing the request information for delete health check.

" - }, - "output":{ - "shape":"DeleteHealthCheckResponse", - "documentation":"

Empty response for the request.

" - }, - "errors":[ - { - "shape":"NoSuchHealthCheck", - "error":{"httpStatusCode":404}, - "exception":true, - "documentation":"

The health check you are trying to get or delete does not exist.

" - }, - { - "shape":"HealthCheckInUse", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

There are resource records associated with this health check. Before you can delete the health check, you must disassociate it from the resource record sets.

" - }, - { - "shape":"InvalidInput", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

Some value specified in the request is invalid or the XML document is malformed.

" - } - ], - "documentation":"

This action deletes a health check. To delete a health check, send a DELETE request to the 2013-04-01/healthcheck/health check ID resource.

You can delete a health check only if there are no resource record sets associated with this health check. If resource record sets are associated with this health check, you must disassociate them before you can delete your health check. If you try to delete a health check that is associated with resource record sets, Route 53 will deny your request with a HealthCheckInUse error. For information about disassociating the records from your health check, see ChangeResourceRecordSets." - }, - "DeleteHostedZone":{ - "name":"DeleteHostedZone", - "http":{ - "method":"DELETE", - "requestUri":"/2013-04-01/hostedzone/{Id}" - }, - "input":{ - "shape":"DeleteHostedZoneRequest", - "documentation":"

A complex type that contains information about the hosted zone that you want to delete.

" - }, - "output":{ - "shape":"DeleteHostedZoneResponse", - "documentation":"

A complex type containing the response information for the request.

" - }, - "errors":[ - { - "shape":"NoSuchHostedZone", - "error":{"httpStatusCode":404}, - "exception":true - }, - { - "shape":"HostedZoneNotEmpty", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

The hosted zone contains resource record sets in addition to the default NS and SOA resource record sets. Before you can delete the hosted zone, you must delete the additional resource record sets.

" - }, - { - "shape":"PriorRequestNotComplete", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

The request was rejected because Route 53 was still processing a prior request.

" - }, - { - "shape":"InvalidInput", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

Some value specified in the request is invalid or the XML document is malformed.

" - } - ], - "documentation":"

This action deletes a hosted zone. To delete a hosted zone, send a DELETE request to the 2013-04-01/hostedzone/hosted zone ID resource.

For more information about deleting a hosted zone, see Deleting a Hosted Zone in the Amazon Route 53 Developer Guide.

You can delete a hosted zone only if there are no resource record sets other than the default SOA record and NS resource record sets. If your hosted zone contains other resource record sets, you must delete them before you can delete your hosted zone. If you try to delete a hosted zone that contains other resource record sets, Route 53 will deny your request with a HostedZoneNotEmpty error. For information about deleting records from your hosted zone, see ChangeResourceRecordSets." - }, - "DeleteReusableDelegationSet":{ - "name":"DeleteReusableDelegationSet", - "http":{ - "method":"DELETE", - "requestUri":"/2013-04-01/delegationset/{Id}" - }, - "input":{ - "shape":"DeleteReusableDelegationSetRequest", - "documentation":"

A complex type containing the information for the delete request.

" - }, - "output":{ - "shape":"DeleteReusableDelegationSetResponse", - "documentation":"

Empty response for the request.

" - }, - "errors":[ - { - "shape":"NoSuchDelegationSet", - "exception":true, - "documentation":"

The specified delegation set does not exist.

" - }, - { - "shape":"DelegationSetInUse", - "exception":true, - "documentation":"

The specified delegation contains associated hosted zones which must be deleted before the reusable delegation set can be deleted.

" - }, - { - "shape":"DelegationSetNotReusable", - "exception":true, - "documentation":"

The specified delegation set has not been marked as reusable.

" - }, - { - "shape":"InvalidInput", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

Some value specified in the request is invalid or the XML document is malformed.

" - } - ], - "documentation":"

This action deletes a reusable delegation set. To delete a reusable delegation set, send a DELETE request to the 2013-04-01/delegationset/delegation set ID resource.

You can delete a reusable delegation set only if there are no associated hosted zones. If your reusable delegation set contains associated hosted zones, you must delete them before you can delete your reusable delegation set. If you try to delete a reusable delegation set that contains associated hosted zones, Route 53 will deny your request with a DelegationSetInUse error." - }, - "DisassociateVPCFromHostedZone":{ - "name":"DisassociateVPCFromHostedZone", - "http":{ - "method":"POST", - "requestUri":"/2013-04-01/hostedzone/{Id}/disassociatevpc" - }, - "input":{ - "shape":"DisassociateVPCFromHostedZoneRequest", - "documentation":"

A complex type that contains information about the request to disassociate a VPC from an hosted zone.

", - "xmlNamespace":{"uri":"https://route53.amazonaws.com/doc/2013-04-01/"}, - "locationName":"DisassociateVPCFromHostedZoneRequest" - }, - "output":{ - "shape":"DisassociateVPCFromHostedZoneResponse", - "documentation":"

A complex type containing the response information for the request.

" - }, - "errors":[ - { - "shape":"NoSuchHostedZone", - "error":{"httpStatusCode":404}, - "exception":true - }, - { - "shape":"InvalidVPCId", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

The hosted zone you are trying to create for your VPC_ID does not belong to you. Route 53 returns this error when the VPC specified by VPCId does not belong to you.

" - }, - { - "shape":"VPCAssociationNotFound", - "error":{"httpStatusCode":404}, - "exception":true, - "documentation":"

The VPC you specified is not currently associated with the hosted zone.

" - }, - { - "shape":"LastVPCAssociation", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

The VPC you are trying to disassociate from the hosted zone is the last the VPC that is associated with the hosted zone. Route 53 currently doesn't support disassociate the last VPC from the hosted zone.

" - }, - { - "shape":"InvalidInput", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

Some value specified in the request is invalid or the XML document is malformed.

" - } - ], - "documentation":"

This action disassociates a VPC from an hosted zone.

To disassociate a VPC to a hosted zone, send a POST request to the 2013-04-01/hostedzone/hosted zone ID/disassociatevpc resource. The request body must include an XML document with a DisassociateVPCFromHostedZoneRequest element. The response returns the DisassociateVPCFromHostedZoneResponse element that contains ChangeInfo for you to track the progress of the DisassociateVPCFromHostedZoneRequest you made. See GetChange operation for how to track the progress of your change.

" - }, - "GetChange":{ - "name":"GetChange", - "http":{ - "method":"GET", - "requestUri":"/2013-04-01/change/{Id}" - }, - "input":{ - "shape":"GetChangeRequest", - "documentation":"

The input for a GetChange request.

" - }, - "output":{ - "shape":"GetChangeResponse", - "documentation":"

A complex type that contains the ChangeInfo element.

" - }, - "errors":[ - { - "shape":"NoSuchChange", - "error":{"httpStatusCode":404}, - "exception":true - }, - { - "shape":"InvalidInput", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

Some value specified in the request is invalid or the XML document is malformed.

" - } - ], - "documentation":"

This action returns the current status of a change batch request. The status is one of the following values:

- PENDING indicates that the changes in this request have not replicated to all Route 53 DNS servers. This is the initial status of all change batch requests.

- INSYNC indicates that the changes have replicated to all Amazon Route 53 DNS servers.

" - }, - "GetCheckerIpRanges":{ - "name":"GetCheckerIpRanges", - "http":{ - "method":"GET", - "requestUri":"/2013-04-01/checkeripranges" - }, - "input":{ - "shape":"GetCheckerIpRangesRequest", - "documentation":"

Empty request.

" - }, - "output":{ - "shape":"GetCheckerIpRangesResponse", - "documentation":"

A complex type that contains the CheckerIpRanges element.

" - }, - "documentation":"

To retrieve a list of the IP ranges used by Amazon Route 53 health checkers to check the health of your resources, send a GET request to the 2013-04-01/checkeripranges resource. You can use these IP addresses to configure router and firewall rules to allow health checkers to check the health of your resources.

" - }, - "GetGeoLocation":{ - "name":"GetGeoLocation", - "http":{ - "method":"GET", - "requestUri":"/2013-04-01/geolocation" - }, - "input":{ - "shape":"GetGeoLocationRequest", - "documentation":"

A complex type that contains information about the request to get a geo location.

" - }, - "output":{ - "shape":"GetGeoLocationResponse", - "documentation":"

A complex type containing information about the specified geo location.

" - }, - "errors":[ - { - "shape":"NoSuchGeoLocation", - "error":{"httpStatusCode":404}, - "exception":true, - "documentation":"

The geo location you are trying to get does not exist.

" - }, - { - "shape":"InvalidInput", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

Some value specified in the request is invalid or the XML document is malformed.

" - } - ], - "documentation":"

To retrieve a single geo location, send a GET request to the 2013-04-01/geolocation resource with one of these options: continentcode | countrycode | countrycode and subdivisioncode.

" - }, - "GetHealthCheck":{ - "name":"GetHealthCheck", - "http":{ - "method":"GET", - "requestUri":"/2013-04-01/healthcheck/{HealthCheckId}" - }, - "input":{ - "shape":"GetHealthCheckRequest", - "documentation":"

A complex type that contains information about the request to get a health check.

" - }, - "output":{ - "shape":"GetHealthCheckResponse", - "documentation":"

A complex type containing information about the specified health check.

" - }, - "errors":[ - { - "shape":"NoSuchHealthCheck", - "error":{"httpStatusCode":404}, - "exception":true, - "documentation":"

The health check you are trying to get or delete does not exist.

" - }, - { - "shape":"InvalidInput", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

Some value specified in the request is invalid or the XML document is malformed.

" - }, - { - "shape":"IncompatibleVersion", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

The resource you are trying to access is unsupported on this Route 53 endpoint. Please consider using a newer endpoint or a tool that does so.

" - } - ], - "documentation":"

To retrieve the health check, send a GET request to the 2013-04-01/healthcheck/health check ID resource.

" - }, - "GetHealthCheckCount":{ - "name":"GetHealthCheckCount", - "http":{ - "method":"GET", - "requestUri":"/2013-04-01/healthcheckcount" - }, - "input":{ - "shape":"GetHealthCheckCountRequest", - "documentation":"

To retrieve a count of all your health checks, send a GET request to the 2013-04-01/healthcheckcount resource.

" - }, - "output":{ - "shape":"GetHealthCheckCountResponse", - "documentation":"

A complex type that contains the count of health checks associated with the current AWS account.

" - }, - "documentation":"

To retrieve a count of all your health checks, send a GET request to the 2013-04-01/healthcheckcount resource.

" - }, - "GetHealthCheckLastFailureReason":{ - "name":"GetHealthCheckLastFailureReason", - "http":{ - "method":"GET", - "requestUri":"/2013-04-01/healthcheck/{HealthCheckId}/lastfailurereason" - }, - "input":{ - "shape":"GetHealthCheckLastFailureReasonRequest", - "documentation":"

A complex type that contains information about the request to get the most recent failure reason for a health check.

" - }, - "output":{ - "shape":"GetHealthCheckLastFailureReasonResponse", - "documentation":"

A complex type that contains information about the most recent failure for the specified health check.

" - }, - "errors":[ - { - "shape":"NoSuchHealthCheck", - "error":{"httpStatusCode":404}, - "exception":true, - "documentation":"

The health check you are trying to get or delete does not exist.

" - } - ], - "documentation":"

If you want to learn why a health check is currently failing or why it failed most recently (if at all), you can get the failure reason for the most recent failure. Send a GET request to the 2013-04-01/healthcheck/health check ID/lastfailurereason resource.

" - }, - "GetHealthCheckStatus":{ - "name":"GetHealthCheckStatus", - "http":{ - "method":"GET", - "requestUri":"/2013-04-01/healthcheck/{HealthCheckId}/status" - }, - "input":{ - "shape":"GetHealthCheckStatusRequest", - "documentation":"

A complex type that contains information about the request to get health check status for a health check.

" - }, - "output":{ - "shape":"GetHealthCheckStatusResponse", - "documentation":"

A complex type that contains information about the status of the specified health check.

" - }, - "errors":[ - { - "shape":"NoSuchHealthCheck", - "error":{"httpStatusCode":404}, - "exception":true, - "documentation":"

The health check you are trying to get or delete does not exist.

" - } - ], - "documentation":"

To retrieve the health check status, send a GET request to the 2013-04-01/healthcheck/health check ID/status resource. You can use this call to get a health check's current status.

" - }, - "GetHostedZone":{ - "name":"GetHostedZone", - "http":{ - "method":"GET", - "requestUri":"/2013-04-01/hostedzone/{Id}" - }, - "input":{ - "shape":"GetHostedZoneRequest", - "documentation":"

The input for a GetHostedZone request.

" - }, - "output":{ - "shape":"GetHostedZoneResponse", - "documentation":"

A complex type containing information about the specified hosted zone.

" - }, - "errors":[ - { - "shape":"NoSuchHostedZone", - "error":{"httpStatusCode":404}, - "exception":true - }, - { - "shape":"InvalidInput", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

Some value specified in the request is invalid or the XML document is malformed.

" - } - ], - "documentation":"

To retrieve the delegation set for a hosted zone, send a GET request to the 2013-04-01/hostedzone/hosted zone ID resource. The delegation set is the four Route 53 name servers that were assigned to the hosted zone when you created it.

" - }, - "GetReusableDelegationSet":{ - "name":"GetReusableDelegationSet", - "http":{ - "method":"GET", - "requestUri":"/2013-04-01/delegationset/{Id}" - }, - "input":{ - "shape":"GetReusableDelegationSetRequest", - "documentation":"

The input for a GetReusableDelegationSet request.

" - }, - "output":{ - "shape":"GetReusableDelegationSetResponse", - "documentation":"

A complex type containing information about the specified reusable delegation set.

" - }, - "errors":[ - { - "shape":"NoSuchDelegationSet", - "exception":true, - "documentation":"

The specified delegation set does not exist.

" - }, - { - "shape":"DelegationSetNotReusable", - "exception":true, - "documentation":"

The specified delegation set has not been marked as reusable.

" - }, - { - "shape":"InvalidInput", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

Some value specified in the request is invalid or the XML document is malformed.

" - } - ], - "documentation":"

To retrieve the reusable delegation set, send a GET request to the 2013-04-01/delegationset/delegation set ID resource.

" - }, - "ListGeoLocations":{ - "name":"ListGeoLocations", - "http":{ - "method":"GET", - "requestUri":"/2013-04-01/geolocations" - }, - "input":{ - "shape":"ListGeoLocationsRequest", - "documentation":"

The input for a ListGeoLocations request.

" - }, - "output":{ - "shape":"ListGeoLocationsResponse", - "documentation":"

A complex type that contains information about the geo locations that are returned by the request and information about the response.

" - }, - "errors":[ - { - "shape":"InvalidInput", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

Some value specified in the request is invalid or the XML document is malformed.

" - } - ], - "documentation":"

To retrieve a list of supported geo locations, send a GET request to the 2013-04-01/geolocations resource. The response to this request includes a GeoLocationDetailsList element with zero, one, or multiple GeoLocationDetails child elements. The list is sorted by country code, and then subdivision code, followed by continents at the end of the list.

By default, the list of geo locations is displayed on a single page. You can control the length of the page that is displayed by using the MaxItems parameter. If the list is truncated, IsTruncated will be set to true and a combination of NextContinentCode, NextCountryCode, NextSubdivisionCode will be populated. You can pass these as parameters to StartContinentCode, StartCountryCode, StartSubdivisionCode to control the geo location that the list begins with.

" - }, - "ListHealthChecks":{ - "name":"ListHealthChecks", - "http":{ - "method":"GET", - "requestUri":"/2013-04-01/healthcheck" - }, - "input":{ - "shape":"ListHealthChecksRequest", - "documentation":"

To retrieve a list of your health checks, send a GET request to the 2013-04-01/healthcheck resource. The response to this request includes a HealthChecks element with zero or more HealthCheck child elements. By default, the list of health checks is displayed on a single page. You can control the length of the page that is displayed by using the MaxItems parameter. You can use the Marker parameter to control the health check that the list begins with.

Route 53 returns a maximum of 100 items. If you set MaxItems to a value greater than 100, Route 53 returns only the first 100." - }, - "output":{ - "shape":"ListHealthChecksResponse", - "documentation":"

A complex type that contains the response for the request.

" - }, - "errors":[ - { - "shape":"InvalidInput", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

Some value specified in the request is invalid or the XML document is malformed.

" - }, - { - "shape":"IncompatibleVersion", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

The resource you are trying to access is unsupported on this Route 53 endpoint. Please consider using a newer endpoint or a tool that does so.

" - } - ], - "documentation":"

To retrieve a list of your health checks, send a GET request to the 2013-04-01/healthcheck resource. The response to this request includes a HealthChecks element with zero, one, or multiple HealthCheck child elements. By default, the list of health checks is displayed on a single page. You can control the length of the page that is displayed by using the MaxItems parameter. You can use the Marker parameter to control the health check that the list begins with.

Amazon Route 53 returns a maximum of 100 items. If you set MaxItems to a value greater than 100, Amazon Route 53 returns only the first 100." - }, - "ListHostedZones":{ - "name":"ListHostedZones", - "http":{ - "method":"GET", - "requestUri":"/2013-04-01/hostedzone" - }, - "input":{ - "shape":"ListHostedZonesRequest", - "documentation":"

To retrieve a list of your hosted zones, send a GET request to the 2013-04-01/hostedzone resource. The response to this request includes a HostedZones element with zero or more HostedZone child elements. By default, the list of hosted zones is displayed on a single page. You can control the length of the page that is displayed by using the MaxItems parameter. You can use the Marker parameter to control the hosted zone that the list begins with. For more information about listing hosted zones, see Listing the Hosted Zones for an AWS Account in the Amazon Route 53 Developer Guide.

Route 53 returns a maximum of 100 items. If you set MaxItems to a value greater than 100, Route 53 returns only the first 100." - }, - "output":{ - "shape":"ListHostedZonesResponse", - "documentation":"

A complex type that contains the response for the request.

" - }, - "errors":[ - { - "shape":"InvalidInput", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

Some value specified in the request is invalid or the XML document is malformed.

" - }, - { - "shape":"NoSuchDelegationSet", - "exception":true, - "documentation":"

The specified delegation set does not exist.

" - }, - { - "shape":"DelegationSetNotReusable", - "exception":true, - "documentation":"

The specified delegation set has not been marked as reusable.

" - } - ], - "documentation":"

To retrieve a list of your hosted zones, send a GET request to the 2013-04-01/hostedzone resource. The response to this request includes a HostedZones element with zero, one, or multiple HostedZone child elements. By default, the list of hosted zones is displayed on a single page. You can control the length of the page that is displayed by using the MaxItems parameter. You can use the Marker parameter to control the hosted zone that the list begins with.

Amazon Route 53 returns a maximum of 100 items. If you set MaxItems to a value greater than 100, Amazon Route 53 returns only the first 100." - }, - "ListResourceRecordSets":{ - "name":"ListResourceRecordSets", - "http":{ - "method":"GET", - "requestUri":"/2013-04-01/hostedzone/{Id}/rrset" - }, - "input":{ - "shape":"ListResourceRecordSetsRequest", - "documentation":"

The input for a ListResourceRecordSets request.

" - }, - "output":{ - "shape":"ListResourceRecordSetsResponse", - "documentation":"

A complex type that contains information about the resource record sets that are returned by the request and information about the response.

" - }, - "errors":[ - { - "shape":"NoSuchHostedZone", - "error":{"httpStatusCode":404}, - "exception":true - }, - { - "shape":"InvalidInput", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

Some value specified in the request is invalid or the XML document is malformed.

" - } - ], - "documentation":"

Imagine all the resource record sets in a zone listed out in front of you. Imagine them sorted lexicographically first by DNS name (with the labels reversed, like \"com.amazon.www\" for example), and secondarily, lexicographically by record type. This operation retrieves at most MaxItems resource record sets from this list, in order, starting at a position specified by the Name and Type arguments:

Use ListResourceRecordSets to retrieve a single known record set by specifying the record set's name and type, and setting MaxItems = 1

To retrieve all the records in a HostedZone, first pause any processes making calls to ChangeResourceRecordSets. Initially call ListResourceRecordSets without a Name and Type to get the first page of record sets. For subsequent calls, set Name and Type to the NextName and NextType values returned by the previous response.

In the presence of concurrent ChangeResourceRecordSets calls, there is no consistency of results across calls to ListResourceRecordSets. The only way to get a consistent multi-page snapshot of all RRSETs in a zone is to stop making changes while pagination is in progress.

However, the results from ListResourceRecordSets are consistent within a page. If MakeChange calls are taking place concurrently, the result of each one will either be completely visible in your results or not at all. You will not see partial changes, or changes that do not ultimately succeed. (This follows from the fact that MakeChange is atomic)

The results from ListResourceRecordSets are strongly consistent with ChangeResourceRecordSets. To be precise, if a single process makes a call to ChangeResourceRecordSets and receives a successful response, the effects of that change will be visible in a subsequent call to ListResourceRecordSets by that process.

" - }, - "ListReusableDelegationSets":{ - "name":"ListReusableDelegationSets", - "http":{ - "method":"GET", - "requestUri":"/2013-04-01/delegationset" - }, - "input":{ - "shape":"ListReusableDelegationSetsRequest", - "documentation":"

To retrieve a list of your reusable delegation sets, send a GET request to the 2013-04-01/delegationset resource. The response to this request includes a DelegationSets element with zero or more DelegationSet child elements. By default, the list of reusable delegation sets is displayed on a single page. You can control the length of the page that is displayed by using the MaxItems parameter. You can use the Marker parameter to control the delegation set that the list begins with.

Route 53 returns a maximum of 100 items. If you set MaxItems to a value greater than 100, Route 53 returns only the first 100." - }, - "output":{ - "shape":"ListReusableDelegationSetsResponse", - "documentation":"

A complex type that contains the response for the request.

" - }, - "errors":[ - { - "shape":"InvalidInput", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

Some value specified in the request is invalid or the XML document is malformed.

" - } - ], - "documentation":"

To retrieve a list of your reusable delegation sets, send a GET request to the 2013-04-01/delegationset resource. The response to this request includes a DelegationSets element with zero, one, or multiple DelegationSet child elements. By default, the list of delegation sets is displayed on a single page. You can control the length of the page that is displayed by using the MaxItems parameter. You can use the Marker parameter to control the delegation set that the list begins with.

Amazon Route 53 returns a maximum of 100 items. If you set MaxItems to a value greater than 100, Amazon Route 53 returns only the first 100." - }, - "ListTagsForResource":{ - "name":"ListTagsForResource", - "http":{ - "method":"GET", - "requestUri":"/2013-04-01/tags/{ResourceType}/{ResourceId}" - }, - "input":{ - "shape":"ListTagsForResourceRequest", - "documentation":"

A complex type containing information about a request for a list of the tags that are associated with an individual resource.

" - }, - "output":{ - "shape":"ListTagsForResourceResponse", - "documentation":"

A complex type containing tags for the specified resource.

" - }, - "errors":[ - { - "shape":"InvalidInput", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

Some value specified in the request is invalid or the XML document is malformed.

" - }, - { - "shape":"NoSuchHealthCheck", - "error":{"httpStatusCode":404}, - "exception":true, - "documentation":"

The health check you are trying to get or delete does not exist.

" - }, - { - "shape":"NoSuchHostedZone", - "error":{"httpStatusCode":404}, - "exception":true - }, - { - "shape":"PriorRequestNotComplete", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

The request was rejected because Route 53 was still processing a prior request.

" - }, - { - "shape":"ThrottlingException", - "error":{"httpStatusCode":400}, - "exception":true - } - ] - }, - "ListTagsForResources":{ - "name":"ListTagsForResources", - "http":{ - "method":"POST", - "requestUri":"/2013-04-01/tags/{ResourceType}" - }, - "input":{ - "shape":"ListTagsForResourcesRequest", - "documentation":"

A complex type containing information about a request for a list of the tags that are associated with up to 10 specified resources.

", - "xmlNamespace":{"uri":"https://route53.amazonaws.com/doc/2013-04-01/"}, - "locationName":"ListTagsForResourcesRequest" - }, - "output":{ - "shape":"ListTagsForResourcesResponse", - "documentation":"

A complex type containing tags for the specified resources.

" - }, - "errors":[ - { - "shape":"InvalidInput", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

Some value specified in the request is invalid or the XML document is malformed.

" - }, - { - "shape":"NoSuchHealthCheck", - "error":{"httpStatusCode":404}, - "exception":true, - "documentation":"

The health check you are trying to get or delete does not exist.

" - }, - { - "shape":"NoSuchHostedZone", - "error":{"httpStatusCode":404}, - "exception":true - }, - { - "shape":"PriorRequestNotComplete", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

The request was rejected because Route 53 was still processing a prior request.

" - }, - { - "shape":"ThrottlingException", - "error":{"httpStatusCode":400}, - "exception":true - } - ] - }, - "UpdateHealthCheck":{ - "name":"UpdateHealthCheck", - "http":{ - "method":"POST", - "requestUri":"/2013-04-01/healthcheck/{HealthCheckId}" - }, - "input":{ - "shape":"UpdateHealthCheckRequest", - "documentation":"

>A complex type that contains information about the request to update a health check.

", - "xmlNamespace":{"uri":"https://route53.amazonaws.com/doc/2013-04-01/"}, - "locationName":"UpdateHealthCheckRequest" - }, - "output":{"shape":"UpdateHealthCheckResponse"}, - "errors":[ - { - "shape":"NoSuchHealthCheck", - "error":{"httpStatusCode":404}, - "exception":true, - "documentation":"

The health check you are trying to get or delete does not exist.

" - }, - { - "shape":"InvalidInput", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

Some value specified in the request is invalid or the XML document is malformed.

" - }, - { - "shape":"HealthCheckVersionMismatch", - "error":{"httpStatusCode":409}, - "exception":true - } - ], - "documentation":"

This action updates an existing health check.

To update a health check, send a POST request to the 2013-04-01/healthcheck/health check ID resource. The request body must include an XML document with an UpdateHealthCheckRequest element. The response returns an UpdateHealthCheckResponse element, which contains metadata about the health check.

" - }, - "UpdateHostedZoneComment":{ - "name":"UpdateHostedZoneComment", - "http":{ - "method":"POST", - "requestUri":"/2013-04-01/hostedzone/{Id}" - }, - "input":{ - "shape":"UpdateHostedZoneCommentRequest", - "documentation":"

A complex type that contains information about the request to update a hosted zone comment.

", - "xmlNamespace":{"uri":"https://route53.amazonaws.com/doc/2013-04-01/"}, - "locationName":"UpdateHostedZoneCommentRequest" - }, - "output":{ - "shape":"UpdateHostedZoneCommentResponse", - "documentation":"

A complex type containing information about the specified hosted zone after the update.

" - }, - "errors":[ - { - "shape":"NoSuchHostedZone", - "error":{"httpStatusCode":404}, - "exception":true - }, - { - "shape":"InvalidInput", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

Some value specified in the request is invalid or the XML document is malformed.

" - } - ], - "documentation":"

To update the hosted zone comment, send a POST request to the 2013-04-01/hostedzone/hosted zone ID resource. The request body must include an XML document with a UpdateHostedZoneCommentRequest element. The response to this request includes the modified HostedZone element.

The comment can have a maximum length of 256 characters." - } - }, - "shapes":{ - "AliasHealthEnabled":{"type":"boolean"}, - "AliasTarget":{ - "type":"structure", - "required":[ - "HostedZoneId", - "DNSName", - "EvaluateTargetHealth" - ], - "members":{ - "HostedZoneId":{ - "shape":"ResourceId", - "documentation":"

Alias resource record sets only: The value of the hosted zone ID for the AWS resource.

For more information and an example, see Creating Alias Resource Record Sets in the Amazon Route 53 Developer Guide

." - }, - "DNSName":{ - "shape":"DNSName", - "documentation":"

Alias resource record sets only: The external DNS name associated with the AWS Resource.

For more information and an example, see Creating Alias Resource Record Sets in the Amazon Route 53 Developer Guide

." - }, - "EvaluateTargetHealth":{ - "shape":"AliasHealthEnabled", - "documentation":"

Alias resource record sets only: A boolean value that indicates whether this Resource Record Set should respect the health status of any health checks associated with the ALIAS target record which it is linked to.

For more information and an example, see Creating Alias Resource Record Sets in the Amazon Route 53 Developer Guide

." - } - }, - "documentation":"

Alias resource record sets only: Information about the domain to which you are redirecting traffic.

For more information and an example, see Creating Alias Resource Record Sets in the Amazon Route 53 Developer Guide

." - }, - "AssociateVPCComment":{"type":"string"}, - "AssociateVPCWithHostedZoneRequest":{ - "type":"structure", - "required":[ - "HostedZoneId", - "VPC" - ], - "members":{ - "HostedZoneId":{ - "shape":"ResourceId", - "location":"uri", - "locationName":"Id", - "documentation":"

The ID of the hosted zone you want to associate your VPC with.

Note that you cannot associate a VPC with a hosted zone that doesn't have an existing VPC association.

" - }, - "VPC":{ - "shape":"VPC", - "documentation":"

The VPC that you want your hosted zone to be associated with.

" - }, - "Comment":{ - "shape":"AssociateVPCComment", - "documentation":"

Optional: Any comments you want to include about a AssociateVPCWithHostedZoneRequest.

" - } - }, - "documentation":"

A complex type that contains information about the request to associate a VPC with an hosted zone.

" - }, - "AssociateVPCWithHostedZoneResponse":{ - "type":"structure", - "required":["ChangeInfo"], - "members":{ - "ChangeInfo":{ - "shape":"ChangeInfo", - "documentation":"

A complex type that contains the ID, the status, and the date and time of your AssociateVPCWithHostedZoneRequest.

" - } - }, - "documentation":"

A complex type containing the response information for the request.

" - }, - "Change":{ - "type":"structure", - "required":[ - "Action", - "ResourceRecordSet" - ], - "members":{ - "Action":{ - "shape":"ChangeAction", - "documentation":"

The action to perform.

Valid values: CREATE | DELETE | UPSERT

" - }, - "ResourceRecordSet":{ - "shape":"ResourceRecordSet", - "documentation":"

Information about the resource record set to create or delete.

" - } - }, - "documentation":"

A complex type that contains the information for each change in a change batch request.

" - }, - "ChangeAction":{ - "type":"string", - "enum":[ - "CREATE", - "DELETE", - "UPSERT" - ] - }, - "ChangeBatch":{ - "type":"structure", - "required":["Changes"], - "members":{ - "Comment":{ - "shape":"ResourceDescription", - "documentation":"

Optional: Any comments you want to include about a change batch request.

" - }, - "Changes":{ - "shape":"Changes", - "documentation":"

A complex type that contains one Change element for each resource record set that you want to create or delete.

" - } - }, - "documentation":"

A complex type that contains an optional comment and the changes that you want to make with a change batch request.

" - }, - "ChangeInfo":{ - "type":"structure", - "required":[ - "Id", - "Status", - "SubmittedAt" - ], - "members":{ - "Id":{ - "shape":"ResourceId", - "documentation":"

The ID of the request. Use this ID to track when the change has completed across all Amazon Route 53 DNS servers.

" - }, - "Status":{ - "shape":"ChangeStatus", - "documentation":"

The current state of the request. PENDING indicates that this request has not yet been applied to all Amazon Route 53 DNS servers.

Valid Values: PENDING | INSYNC

" - }, - "SubmittedAt":{ - "shape":"TimeStamp", - "documentation":"

The date and time the change was submitted, in the format YYYY-MM-DDThh:mm:ssZ, as specified in the ISO 8601 standard (for example, 2009-11-19T19:37:58Z). The Z after the time indicates that the time is listed in Coordinated Universal Time (UTC), which is synonymous with Greenwich Mean Time in this context.

" - }, - "Comment":{ - "shape":"ResourceDescription", - "documentation":"

A complex type that describes change information about changes made to your hosted zone.

This element contains an ID that you use when performing a GetChange action to get detailed information about the change.

" - } - }, - "documentation":"

A complex type that describes change information about changes made to your hosted zone.

This element contains an ID that you use when performing a GetChange action to get detailed information about the change.

" - }, - "ChangeResourceRecordSetsRequest":{ - "type":"structure", - "required":[ - "HostedZoneId", - "ChangeBatch" - ], - "members":{ - "HostedZoneId":{ - "shape":"ResourceId", - "location":"uri", - "locationName":"Id", - "documentation":"

The ID of the hosted zone that contains the resource record sets that you want to change.

" - }, - "ChangeBatch":{ - "shape":"ChangeBatch", - "documentation":"

A complex type that contains an optional comment and the Changes element.

" - } - }, - "documentation":"

A complex type that contains a change batch.

" - }, - "ChangeResourceRecordSetsResponse":{ - "type":"structure", - "required":["ChangeInfo"], - "members":{ - "ChangeInfo":{ - "shape":"ChangeInfo", - "documentation":"

A complex type that contains information about changes made to your hosted zone.

This element contains an ID that you use when performing a GetChange action to get detailed information about the change.

" - } - }, - "documentation":"

A complex type containing the response for the request.

" - }, - "ChangeStatus":{ - "type":"string", - "enum":[ - "PENDING", - "INSYNC" - ] - }, - "ChangeTagsForResourceRequest":{ - "type":"structure", - "required":[ - "ResourceType", - "ResourceId" - ], - "members":{ - "ResourceType":{ - "shape":"TagResourceType", - "location":"uri", - "locationName":"ResourceType", - "documentation":"

The type of the resource.

- The resource type for health checks is healthcheck.

- The resource type for hosted zones is hostedzone.

" - }, - "ResourceId":{ - "shape":"TagResourceId", - "location":"uri", - "locationName":"ResourceId", - "documentation":"

The ID of the resource for which you want to add, change, or delete tags.

" - }, - "AddTags":{ - "shape":"TagList", - "documentation":"

A complex type that contains a list of Tag elements. Each Tag element identifies a tag that you want to add or update for the specified resource.

" - }, - "RemoveTagKeys":{ - "shape":"TagKeyList", - "documentation":"

A list of Tag keys that you want to remove from the specified resource.

" - } - }, - "documentation":"

A complex type containing information about a request to add, change, or delete the tags that are associated with a resource.

" - }, - "ChangeTagsForResourceResponse":{ - "type":"structure", - "members":{ - }, - "documentation":"

Empty response for the request.

" - }, - "Changes":{ - "type":"list", - "member":{ - "shape":"Change", - "locationName":"Change" - }, - "min":1 - }, - "CheckerIpRanges":{ - "type":"list", - "member":{"shape":"IPAddressCidr"} - }, - "ConflictingDomainExists":{ - "type":"structure", - "members":{ - "message":{"shape":"ErrorMessage"} - }, - "exception":true - }, - "CreateHealthCheckRequest":{ - "type":"structure", - "required":[ - "CallerReference", - "HealthCheckConfig" - ], - "members":{ - "CallerReference":{ - "shape":"HealthCheckNonce", - "documentation":"

A unique string that identifies the request and that allows failed CreateHealthCheck requests to be retried without the risk of executing the operation twice. You must use a unique CallerReference string every time you create a health check. CallerReference can be any unique string; you might choose to use a string that identifies your project.

Valid characters are any Unicode code points that are legal in an XML 1.0 document. The UTF-8 encoding of the value must be less than 128 bytes.

" - }, - "HealthCheckConfig":{ - "shape":"HealthCheckConfig", - "documentation":"

A complex type that contains health check configuration.

" - } - }, - "documentation":"

>A complex type that contains information about the request to create a health check.

" - }, - "CreateHealthCheckResponse":{ - "type":"structure", - "required":[ - "HealthCheck", - "Location" - ], - "members":{ - "HealthCheck":{ - "shape":"HealthCheck", - "documentation":"

A complex type that contains identifying information about the health check.

" - }, - "Location":{ - "shape":"ResourceURI", - "location":"header", - "locationName":"Location", - "documentation":"

The unique URL representing the new health check.

" - } - }, - "documentation":"

A complex type containing the response information for the new health check.

" - }, - "CreateHostedZoneRequest":{ - "type":"structure", - "required":[ - "Name", - "CallerReference" - ], - "members":{ - "Name":{ - "shape":"DNSName", - "documentation":"

The name of the domain. This must be a fully-specified domain, for example, www.example.com. The trailing dot is optional; Route 53 assumes that the domain name is fully qualified. This means that Route 53 treats www.example.com (without a trailing dot) and www.example.com. (with a trailing dot) as identical.

This is the name you have registered with your DNS registrar. You should ask your registrar to change the authoritative name servers for your domain to the set of NameServers elements returned in DelegationSet.

" - }, - "VPC":{ - "shape":"VPC", - "documentation":"

The VPC that you want your hosted zone to be associated with. By providing this parameter, your newly created hosted cannot be resolved anywhere other than the given VPC.

" - }, - "CallerReference":{ - "shape":"Nonce", - "documentation":"

A unique string that identifies the request and that allows failed CreateHostedZone requests to be retried without the risk of executing the operation twice. You must use a unique CallerReference string every time you create a hosted zone. CallerReference can be any unique string; you might choose to use a string that identifies your project, such as DNSMigration_01.

Valid characters are any Unicode code points that are legal in an XML 1.0 document. The UTF-8 encoding of the value must be less than 128 bytes.

" - }, - "HostedZoneConfig":{ - "shape":"HostedZoneConfig", - "documentation":"

A complex type that contains an optional comment about your hosted zone.

" - }, - "DelegationSetId":{ - "shape":"ResourceId", - "documentation":"

The delegation set id of the reusable delgation set whose NS records you want to assign to the new hosted zone.

" - } - }, - "documentation":"

A complex type that contains information about the request to create a hosted zone.

" - }, - "CreateHostedZoneResponse":{ - "type":"structure", - "required":[ - "HostedZone", - "ChangeInfo", - "DelegationSet", - "Location" - ], - "members":{ - "HostedZone":{ - "shape":"HostedZone", - "documentation":"

A complex type that contains identifying information about the hosted zone.

" - }, - "ChangeInfo":{ - "shape":"ChangeInfo", - "documentation":"

A complex type that contains information about the request to create a hosted zone. This includes an ID that you use when you call the GetChange action to get the current status of the change request.

" - }, - "DelegationSet":{ - "shape":"DelegationSet", - "documentation":"

A complex type that contains name server information.

" - }, - "VPC":{"shape":"VPC"}, - "Location":{ - "shape":"ResourceURI", - "location":"header", - "locationName":"Location", - "documentation":"

The unique URL representing the new hosted zone.

" - } - }, - "documentation":"

A complex type containing the response information for the new hosted zone.

" - }, - "CreateReusableDelegationSetRequest":{ - "type":"structure", - "required":["CallerReference"], - "members":{ - "CallerReference":{ - "shape":"Nonce", - "documentation":"

A unique string that identifies the request and that allows failed CreateReusableDelegationSet requests to be retried without the risk of executing the operation twice. You must use a unique CallerReference string every time you create a reusable delegation set. CallerReference can be any unique string; you might choose to use a string that identifies your project, such as DNSMigration_01.

Valid characters are any Unicode code points that are legal in an XML 1.0 document. The UTF-8 encoding of the value must be less than 128 bytes.

" - }, - "HostedZoneId":{ - "shape":"ResourceId", - "documentation":"

The ID of the hosted zone whose delegation set you want to mark as reusable. It is an optional parameter.

" - } - } - }, - "CreateReusableDelegationSetResponse":{ - "type":"structure", - "required":[ - "DelegationSet", - "Location" - ], - "members":{ - "DelegationSet":{ - "shape":"DelegationSet", - "documentation":"

A complex type that contains name server information.

" - }, - "Location":{ - "shape":"ResourceURI", - "location":"header", - "locationName":"Location", - "documentation":"

The unique URL representing the new reusbale delegation set.

" - } - } - }, - "DNSName":{ - "type":"string", - "max":1024 - }, - "DelegationSet":{ - "type":"structure", - "required":["NameServers"], - "members":{ - "Id":{"shape":"ResourceId"}, - "CallerReference":{"shape":"Nonce"}, - "NameServers":{ - "shape":"DelegationSetNameServers", - "documentation":"

A complex type that contains the authoritative name servers for the hosted zone. Use the method provided by your domain registrar to add an NS record to your domain for each NameServer that is assigned to your hosted zone.

" - } - }, - "documentation":"

A complex type that contains name server information.

" - }, - "DelegationSetAlreadyCreated":{ - "type":"structure", - "members":{ - "message":{ - "shape":"ErrorMessage", - "documentation":"

Descriptive message for the error response.

" - } - }, - "exception":true, - "documentation":"

A delegation set with the same owner and caller reference combination has already been created.

" - }, - "DelegationSetAlreadyReusable":{ - "type":"structure", - "members":{ - "message":{ - "shape":"ErrorMessage", - "documentation":"

Descriptive message for the error response.

" - } - }, - "exception":true, - "documentation":"

The specified delegation set has already been marked as reusable.

" - }, - "DelegationSetInUse":{ - "type":"structure", - "members":{ - "message":{ - "shape":"ErrorMessage", - "documentation":"

Descriptive message for the error response.

" - } - }, - "exception":true, - "documentation":"

The specified delegation contains associated hosted zones which must be deleted before the reusable delegation set can be deleted.

" - }, - "DelegationSetNameServers":{ - "type":"list", - "member":{ - "shape":"DNSName", - "locationName":"NameServer" - }, - "min":1 - }, - "DelegationSetNotAvailable":{ - "type":"structure", - "members":{ - "message":{ - "shape":"ErrorMessage", - "documentation":"

Descriptive message for the error response.

" - } - }, - "exception":true, - "documentation":"

Route 53 allows some duplicate domain names, but there is a maximum number of duplicate names. This error indicates that you have reached that maximum. If you want to create another hosted zone with the same name and Route 53 generates this error, you can request an increase to the limit on the Contact Us page.

" - }, - "DelegationSetNotReusable":{ - "type":"structure", - "members":{ - "message":{ - "shape":"ErrorMessage", - "documentation":"

Descriptive message for the error response.

" - } - }, - "exception":true, - "documentation":"

The specified delegation set has not been marked as reusable.

" - }, - "DelegationSets":{ - "type":"list", - "member":{ - "shape":"DelegationSet", - "locationName":"DelegationSet" - } - }, - "DeleteHealthCheckRequest":{ - "type":"structure", - "required":["HealthCheckId"], - "members":{ - "HealthCheckId":{ - "shape":"HealthCheckId", - "location":"uri", - "locationName":"HealthCheckId", - "documentation":"

The ID of the health check to delete.

" - } - }, - "documentation":"

A complex type containing the request information for delete health check.

" - }, - "DeleteHealthCheckResponse":{ - "type":"structure", - "members":{ - }, - "documentation":"

Empty response for the request.

" - }, - "DeleteHostedZoneRequest":{ - "type":"structure", - "required":["Id"], - "members":{ - "Id":{ - "shape":"ResourceId", - "location":"uri", - "locationName":"Id", - "documentation":"

The ID of the hosted zone you want to delete.

" - } - }, - "documentation":"

A complex type that contains information about the hosted zone that you want to delete.

" - }, - "DeleteHostedZoneResponse":{ - "type":"structure", - "required":["ChangeInfo"], - "members":{ - "ChangeInfo":{ - "shape":"ChangeInfo", - "documentation":"

A complex type that contains the ID, the status, and the date and time of your delete request.

" - } - }, - "documentation":"

A complex type containing the response information for the request.

" - }, - "DeleteReusableDelegationSetRequest":{ - "type":"structure", - "required":["Id"], - "members":{ - "Id":{ - "shape":"ResourceId", - "location":"uri", - "locationName":"Id", - "documentation":"

The ID of the reusable delegation set you want to delete.

" - } - }, - "documentation":"

A complex type containing the information for the delete request.

" - }, - "DeleteReusableDelegationSetResponse":{ - "type":"structure", - "members":{ - }, - "documentation":"

Empty response for the request.

" - }, - "DisassociateVPCComment":{"type":"string"}, - "DisassociateVPCFromHostedZoneRequest":{ - "type":"structure", - "required":[ - "HostedZoneId", - "VPC" - ], - "members":{ - "HostedZoneId":{ - "shape":"ResourceId", - "location":"uri", - "locationName":"Id", - "documentation":"

The ID of the hosted zone you want to disassociate your VPC from.

Note that you cannot disassociate the last VPC from a hosted zone.

" - }, - "VPC":{ - "shape":"VPC", - "documentation":"

The VPC that you want your hosted zone to be disassociated from.

" - }, - "Comment":{ - "shape":"DisassociateVPCComment", - "documentation":"

Optional: Any comments you want to include about a DisassociateVPCFromHostedZoneRequest.

" - } - }, - "documentation":"

A complex type that contains information about the request to disassociate a VPC from an hosted zone.

" - }, - "DisassociateVPCFromHostedZoneResponse":{ - "type":"structure", - "required":["ChangeInfo"], - "members":{ - "ChangeInfo":{ - "shape":"ChangeInfo", - "documentation":"

A complex type that contains the ID, the status, and the date and time of your DisassociateVPCFromHostedZoneRequest.

" - } - }, - "documentation":"

A complex type containing the response information for the request.

" - }, - "ErrorMessage":{"type":"string"}, - "ErrorMessages":{ - "type":"list", - "member":{ - "shape":"ErrorMessage", - "locationName":"Message" - } - }, - "FailureThreshold":{ - "type":"integer", - "min":1, - "max":10 - }, - "FullyQualifiedDomainName":{ - "type":"string", - "max":255 - }, - "GeoLocation":{ - "type":"structure", - "members":{ - "ContinentCode":{ - "shape":"GeoLocationContinentCode", - "documentation":"

The code for a continent geo location. Note: only continent locations have a continent code.

Valid values: AF | AN | AS | EU | OC | NA | SA

Constraint: Specifying ContinentCode with either CountryCode or SubdivisionCode returns an InvalidInput error.

" - }, - "CountryCode":{ - "shape":"GeoLocationCountryCode", - "documentation":"

The code for a country geo location. The default location uses '*' for the country code and will match all locations that are not matched by a geo location.

The default geo location uses a * for the country code. All other country codes follow the ISO 3166 two-character code.

" - }, - "SubdivisionCode":{ - "shape":"GeoLocationSubdivisionCode", - "documentation":"

The code for a country's subdivision (e.g., a province of Canada). A subdivision code is only valid with the appropriate country code.

Constraint: Specifying SubdivisionCode without CountryCode returns an InvalidInput error.

" - } - }, - "documentation":"

A complex type that contains information about a geo location.

" - }, - "GeoLocationContinentCode":{ - "type":"string", - "min":2, - "max":2 - }, - "GeoLocationContinentName":{ - "type":"string", - "min":1, - "max":32 - }, - "GeoLocationCountryCode":{ - "type":"string", - "min":1, - "max":2 - }, - "GeoLocationCountryName":{ - "type":"string", - "min":1, - "max":64 - }, - "GeoLocationDetails":{ - "type":"structure", - "members":{ - "ContinentCode":{ - "shape":"GeoLocationContinentCode", - "documentation":"

The code for a continent geo location. Note: only continent locations have a continent code.

" - }, - "ContinentName":{ - "shape":"GeoLocationContinentName", - "documentation":"

The name of the continent. This element is only present if ContinentCode is also present.

" - }, - "CountryCode":{ - "shape":"GeoLocationCountryCode", - "documentation":"

The code for a country geo location. The default location uses '*' for the country code and will match all locations that are not matched by a geo location.

The default geo location uses a * for the country code. All other country codes follow the ISO 3166 two-character code.

" - }, - "CountryName":{ - "shape":"GeoLocationCountryName", - "documentation":"

The name of the country. This element is only present if CountryCode is also present.

" - }, - "SubdivisionCode":{ - "shape":"GeoLocationSubdivisionCode", - "documentation":"

The code for a country's subdivision (e.g., a province of Canada). A subdivision code is only valid with the appropriate country code.

" - }, - "SubdivisionName":{ - "shape":"GeoLocationSubdivisionName", - "documentation":"

The name of the subdivision. This element is only present if SubdivisionCode is also present.

" - } - }, - "documentation":"

A complex type that contains information about a GeoLocation.

" - }, - "GeoLocationDetailsList":{ - "type":"list", - "member":{ - "shape":"GeoLocationDetails", - "locationName":"GeoLocationDetails" - } - }, - "GeoLocationSubdivisionCode":{ - "type":"string", - "min":1, - "max":3 - }, - "GeoLocationSubdivisionName":{ - "type":"string", - "min":1, - "max":64 - }, - "GetChangeRequest":{ - "type":"structure", - "required":["Id"], - "members":{ - "Id":{ - "shape":"ResourceId", - "location":"uri", - "locationName":"Id", - "documentation":"

The ID of the change batch request. The value that you specify here is the value that ChangeResourceRecordSets returned in the Id element when you submitted the request.

" - } - }, - "documentation":"

The input for a GetChange request.

" - }, - "GetChangeResponse":{ - "type":"structure", - "required":["ChangeInfo"], - "members":{ - "ChangeInfo":{ - "shape":"ChangeInfo", - "documentation":"

A complex type that contains information about the specified change batch, including the change batch ID, the status of the change, and the date and time of the request.

" - } - }, - "documentation":"

A complex type that contains the ChangeInfo element.

" - }, - "GetCheckerIpRangesRequest":{ - "type":"structure", - "members":{ - }, - "documentation":"

Empty request.

" - }, - "GetCheckerIpRangesResponse":{ - "type":"structure", - "required":["CheckerIpRanges"], - "members":{ - "CheckerIpRanges":{ - "shape":"CheckerIpRanges", - "documentation":"

A complex type that contains sorted list of IP ranges in CIDR format for Amazon Route 53 health checkers.

" - } - }, - "documentation":"

A complex type that contains the CheckerIpRanges element.

" - }, - "GetGeoLocationRequest":{ - "type":"structure", - "members":{ - "ContinentCode":{ - "shape":"GeoLocationContinentCode", - "location":"querystring", - "locationName":"continentcode", - "documentation":"

The code for a continent geo location. Note: only continent locations have a continent code.

Valid values: AF | AN | AS | EU | OC | NA | SA

Constraint: Specifying ContinentCode with either CountryCode or SubdivisionCode returns an InvalidInput error.

" - }, - "CountryCode":{ - "shape":"GeoLocationCountryCode", - "location":"querystring", - "locationName":"countrycode", - "documentation":"

The code for a country geo location. The default location uses '*' for the country code and will match all locations that are not matched by a geo location.

The default geo location uses a * for the country code. All other country codes follow the ISO 3166 two-character code.

" - }, - "SubdivisionCode":{ - "shape":"GeoLocationSubdivisionCode", - "location":"querystring", - "locationName":"subdivisioncode", - "documentation":"

The code for a country's subdivision (e.g., a province of Canada). A subdivision code is only valid with the appropriate country code.

Constraint: Specifying SubdivisionCode without CountryCode returns an InvalidInput error.

" - } - }, - "documentation":"

A complex type that contains information about the request to get a geo location.

" - }, - "GetGeoLocationResponse":{ - "type":"structure", - "required":["GeoLocationDetails"], - "members":{ - "GeoLocationDetails":{ - "shape":"GeoLocationDetails", - "documentation":"

A complex type that contains the information about the specified geo location.

" - } - }, - "documentation":"

A complex type containing information about the specified geo location.

" - }, - "GetHealthCheckCountRequest":{ - "type":"structure", - "members":{ - }, - "documentation":"

To retrieve a count of all your health checks, send a GET request to the 2013-04-01/healthcheckcount resource.

" - }, - "GetHealthCheckCountResponse":{ - "type":"structure", - "required":["HealthCheckCount"], - "members":{ - "HealthCheckCount":{ - "shape":"HealthCheckCount", - "documentation":"

The number of health checks associated with the current AWS account.

" - } - }, - "documentation":"

A complex type that contains the count of health checks associated with the current AWS account.

" - }, - "GetHealthCheckLastFailureReasonRequest":{ - "type":"structure", - "required":["HealthCheckId"], - "members":{ - "HealthCheckId":{ - "shape":"HealthCheckId", - "location":"uri", - "locationName":"HealthCheckId", - "documentation":"

The ID of the health check for which you want to retrieve the reason for the most recent failure.

" - } - }, - "documentation":"

A complex type that contains information about the request to get the most recent failure reason for a health check.

" - }, - "GetHealthCheckLastFailureReasonResponse":{ - "type":"structure", - "required":["HealthCheckObservations"], - "members":{ - "HealthCheckObservations":{ - "shape":"HealthCheckObservations", - "documentation":"

A list that contains one HealthCheckObservation element for each Route 53 health checker.

" - } - }, - "documentation":"

A complex type that contains information about the most recent failure for the specified health check.

" - }, - "GetHealthCheckRequest":{ - "type":"structure", - "required":["HealthCheckId"], - "members":{ - "HealthCheckId":{ - "shape":"HealthCheckId", - "location":"uri", - "locationName":"HealthCheckId", - "documentation":"

The ID of the health check to retrieve.

" - } - }, - "documentation":"

A complex type that contains information about the request to get a health check.

" - }, - "GetHealthCheckResponse":{ - "type":"structure", - "required":["HealthCheck"], - "members":{ - "HealthCheck":{ - "shape":"HealthCheck", - "documentation":"

A complex type that contains the information about the specified health check.

" - } - }, - "documentation":"

A complex type containing information about the specified health check.

" - }, - "GetHealthCheckStatusRequest":{ - "type":"structure", - "required":["HealthCheckId"], - "members":{ - "HealthCheckId":{ - "shape":"HealthCheckId", - "location":"uri", - "locationName":"HealthCheckId", - "documentation":"

The ID of the health check for which you want to retrieve the most recent status.

" - } - }, - "documentation":"

A complex type that contains information about the request to get health check status for a health check.

" - }, - "GetHealthCheckStatusResponse":{ - "type":"structure", - "required":["HealthCheckObservations"], - "members":{ - "HealthCheckObservations":{ - "shape":"HealthCheckObservations", - "documentation":"

A list that contains one HealthCheckObservation element for each Route 53 health checker.

" - } - }, - "documentation":"

A complex type that contains information about the status of the specified health check.

" - }, - "GetHostedZoneRequest":{ - "type":"structure", - "required":["Id"], - "members":{ - "Id":{ - "shape":"ResourceId", - "location":"uri", - "locationName":"Id", - "documentation":"

The ID of the hosted zone for which you want to get a list of the name servers in the delegation set.

" - } - }, - "documentation":"

The input for a GetHostedZone request.

" - }, - "GetHostedZoneResponse":{ - "type":"structure", - "required":["HostedZone"], - "members":{ - "HostedZone":{ - "shape":"HostedZone", - "documentation":"

A complex type that contains the information about the specified hosted zone.

" - }, - "DelegationSet":{ - "shape":"DelegationSet", - "documentation":"

A complex type that contains information about the name servers for the specified hosted zone.

" - }, - "VPCs":{ - "shape":"VPCs", - "documentation":"

A complex type that contains information about VPCs associated with the specified hosted zone.

" - } - }, - "documentation":"

A complex type containing information about the specified hosted zone.

" - }, - "GetReusableDelegationSetRequest":{ - "type":"structure", - "required":["Id"], - "members":{ - "Id":{ - "shape":"ResourceId", - "location":"uri", - "locationName":"Id", - "documentation":"

The ID of the reusable delegation set for which you want to get a list of the name server.

" - } - }, - "documentation":"

The input for a GetReusableDelegationSet request.

" - }, - "GetReusableDelegationSetResponse":{ - "type":"structure", - "required":["DelegationSet"], - "members":{ - "DelegationSet":{ - "shape":"DelegationSet", - "documentation":"

A complex type that contains the information about the nameservers for the specified delegation set ID.

" - } - }, - "documentation":"

A complex type containing information about the specified reusable delegation set.

" - }, - "HealthCheck":{ - "type":"structure", - "required":[ - "Id", - "CallerReference", - "HealthCheckConfig", - "HealthCheckVersion" - ], - "members":{ - "Id":{ - "shape":"HealthCheckId", - "documentation":"

The ID of the specified health check.

" - }, - "CallerReference":{ - "shape":"HealthCheckNonce", - "documentation":"

A unique string that identifies the request to create the health check.

" - }, - "HealthCheckConfig":{ - "shape":"HealthCheckConfig", - "documentation":"

A complex type that contains the health check configuration.

" - }, - "HealthCheckVersion":{ - "shape":"HealthCheckVersion", - "documentation":"

The version of the health check. You can optionally pass this value in a call to UpdateHealthCheck to prevent overwriting another change to the health check.

" - } - }, - "documentation":"

A complex type that contains identifying information about the health check.

" - }, - "HealthCheckAlreadyExists":{ - "type":"structure", - "members":{ - "message":{ - "shape":"ErrorMessage", - "documentation":"

Descriptive message for the error response.

" - } - }, - "error":{"httpStatusCode":409}, - "exception":true, - "documentation":"

The health check you are trying to create already exists. Route 53 returns this error when a health check has already been created with the specified CallerReference.

" - }, - "HealthCheckConfig":{ - "type":"structure", - "required":["Type"], - "members":{ - "IPAddress":{ - "shape":"IPAddress", - "documentation":"

IP Address of the instance being checked.

" - }, - "Port":{ - "shape":"Port", - "documentation":"

Port on which connection will be opened to the instance to health check. For HTTP and HTTP_STR_MATCH this defaults to 80 if the port is not specified. For HTTPS and HTTPS_STR_MATCH this defaults to 443 if the port is not specified.

" - }, - "Type":{ - "shape":"HealthCheckType", - "documentation":"

The type of health check to be performed. Currently supported types are TCP, HTTP, HTTPS, HTTP_STR_MATCH, and HTTPS_STR_MATCH.

" - }, - "ResourcePath":{ - "shape":"ResourcePath", - "documentation":"

Path to ping on the instance to check the health. Required for HTTP, HTTPS, HTTP_STR_MATCH, and HTTPS_STR_MATCH health checks, HTTP request is issued to the instance on the given port and path.

" - }, - "FullyQualifiedDomainName":{ - "shape":"FullyQualifiedDomainName", - "documentation":"

Fully qualified domain name of the instance to be health checked.

" - }, - "SearchString":{ - "shape":"SearchString", - "documentation":"

A string to search for in the body of a health check response. Required for HTTP_STR_MATCH and HTTPS_STR_MATCH health checks.

" - }, - "RequestInterval":{ - "shape":"RequestInterval", - "documentation":"

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.

Each Route 53 health checker makes requests at this interval. Valid values are 10 and 30. The default value is 30.

" - }, - "FailureThreshold":{ - "shape":"FailureThreshold", - "documentation":"

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 vice versa.

Valid values are integers between 1 and 10. For more information, see \"How Amazon Route 53 Determines Whether an Endpoint Is Healthy\" in the Amazon Route 53 Developer Guide.

" - } - }, - "documentation":"

A complex type that contains the health check configuration.

" - }, - "HealthCheckCount":{"type":"long"}, - "HealthCheckId":{ - "type":"string", - "max":64 - }, - "HealthCheckInUse":{ - "type":"structure", - "members":{ - "message":{ - "shape":"ErrorMessage", - "documentation":"

Descriptive message for the error response.

" - } - }, - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

There are resource records associated with this health check. Before you can delete the health check, you must disassociate it from the resource record sets.

" - }, - "HealthCheckNonce":{ - "type":"string", - "min":1, - "max":64 - }, - "HealthCheckObservation":{ - "type":"structure", - "members":{ - "IPAddress":{ - "shape":"IPAddress", - "documentation":"

The IP address of the Route 53 health checker that performed the health check.

" - }, - "StatusReport":{ - "shape":"StatusReport", - "documentation":"

A complex type that contains information about the health check status for the current observation.

" - } - }, - "documentation":"

A complex type that contains the IP address of a Route 53 health checker and the reason for the health check status.

" - }, - "HealthCheckObservations":{ - "type":"list", - "member":{ - "shape":"HealthCheckObservation", - "locationName":"HealthCheckObservation" - } - }, - "HealthCheckType":{ - "type":"string", - "enum":[ - "HTTP", - "HTTPS", - "HTTP_STR_MATCH", - "HTTPS_STR_MATCH", - "TCP" - ] - }, - "HealthCheckVersion":{ - "type":"long", - "min":1 - }, - "HealthCheckVersionMismatch":{ - "type":"structure", - "members":{ - "message":{"shape":"ErrorMessage"} - }, - "error":{"httpStatusCode":409}, - "exception":true - }, - "HealthChecks":{ - "type":"list", - "member":{ - "shape":"HealthCheck", - "locationName":"HealthCheck" - } - }, - "HostedZone":{ - "type":"structure", - "required":[ - "Id", - "Name", - "CallerReference" - ], - "members":{ - "Id":{ - "shape":"ResourceId", - "documentation":"

The ID of the specified hosted zone.

" - }, - "Name":{ - "shape":"DNSName", - "documentation":"

The name of the domain. This must be a fully-specified domain, for example, www.example.com. The trailing dot is optional; Route 53 assumes that the domain name is fully qualified. This means that Route 53 treats www.example.com (without a trailing dot) and www.example.com. (with a trailing dot) as identical.

This is the name you have registered with your DNS registrar. You should ask your registrar to change the authoritative name servers for your domain to the set of NameServers elements returned in DelegationSet.

" - }, - "CallerReference":{ - "shape":"Nonce", - "documentation":"

A unique string that identifies the request to create the hosted zone.

" - }, - "Config":{ - "shape":"HostedZoneConfig", - "documentation":"

A complex type that contains the Comment element.

" - }, - "ResourceRecordSetCount":{ - "shape":"HostedZoneRRSetCount", - "documentation":"

Total number of resource record sets in the hosted zone.

" - } - }, - "documentation":"

A complex type that contain information about the specified hosted zone.

" - }, - "HostedZoneAlreadyExists":{ - "type":"structure", - "members":{ - "message":{ - "shape":"ErrorMessage", - "documentation":"

Descriptive message for the error response.

" - } - }, - "error":{"httpStatusCode":409}, - "exception":true, - "documentation":"

The hosted zone you are trying to create already exists. Route 53 returns this error when a hosted zone has already been created with the specified CallerReference.

" - }, - "HostedZoneConfig":{ - "type":"structure", - "members":{ - "Comment":{ - "shape":"ResourceDescription", - "documentation":"

An optional comment about your hosted zone. If you don't want to specify a comment, you can omit the HostedZoneConfig and Comment elements from the XML document.

" - }, - "PrivateZone":{ - "shape":"IsPrivateZone", - "documentation":"

A value that indicates whether this is a private hosted zone. The value is returned in the response; do not specify it in the request.

" - } - }, - "documentation":"

A complex type that contains an optional comment about your hosted zone. If you don't want to specify a comment, you can omit the HostedZoneConfig and Comment elements from the XML document.

" - }, - "HostedZoneNotEmpty":{ - "type":"structure", - "members":{ - "message":{ - "shape":"ErrorMessage", - "documentation":"

Descriptive message for the error response.

" - } - }, - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

The hosted zone contains resource record sets in addition to the default NS and SOA resource record sets. Before you can delete the hosted zone, you must delete the additional resource record sets.

" - }, - "HostedZoneNotFound":{ - "type":"structure", - "members":{ - "message":{ - "shape":"ErrorMessage", - "documentation":"

Descriptive message for the error response.

" - } - }, - "exception":true, - "documentation":"

The specified HostedZone cannot be found.

" - }, - "HostedZoneRRSetCount":{"type":"long"}, - "HostedZones":{ - "type":"list", - "member":{ - "shape":"HostedZone", - "locationName":"HostedZone" - } - }, - "IPAddress":{ - "type":"string", - "max":15, - "pattern":"^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$" - }, - "IPAddressCidr":{"type":"string"}, - "IncompatibleVersion":{ - "type":"structure", - "members":{ - "message":{"shape":"ErrorMessage"} - }, - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

The resource you are trying to access is unsupported on this Route 53 endpoint. Please consider using a newer endpoint or a tool that does so.

" - }, - "InvalidArgument":{ - "type":"structure", - "members":{ - "message":{ - "shape":"ErrorMessage", - "documentation":"

Descriptive message for the error response.

" - } - }, - "exception":true, - "documentation":"

At least one of the specified arguments is invalid.

" - }, - "InvalidChangeBatch":{ - "type":"structure", - "members":{ - "messages":{ - "shape":"ErrorMessages", - "documentation":"

Descriptive message for the error response.

" - } - }, - "exception":true, - "documentation":"

This error contains a list of one or more error messages. Each error message indicates one error in the change batch. For more information, see Example InvalidChangeBatch Errors.

" - }, - "InvalidDomainName":{ - "type":"structure", - "members":{ - "message":{ - "shape":"ErrorMessage", - "documentation":"

Descriptive message for the error response.

" - } - }, - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

This error indicates that the specified domain name is not valid.

" - }, - "InvalidInput":{ - "type":"structure", - "members":{ - "message":{ - "shape":"ErrorMessage", - "documentation":"

Descriptive message for the error response.

" - } - }, - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

Some value specified in the request is invalid or the XML document is malformed.

" - }, - "InvalidVPCId":{ - "type":"structure", - "members":{ - "message":{ - "shape":"ErrorMessage", - "documentation":"

Descriptive message for the error response.

" - } - }, - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

The hosted zone you are trying to create for your VPC_ID does not belong to you. Route 53 returns this error when the VPC specified by VPCId does not belong to you.

" - }, - "IsPrivateZone":{"type":"boolean"}, - "LastVPCAssociation":{ - "type":"structure", - "members":{ - "message":{ - "shape":"ErrorMessage", - "documentation":"

Descriptive message for the error response.

" - } - }, - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

The VPC you are trying to disassociate from the hosted zone is the last the VPC that is associated with the hosted zone. Route 53 currently doesn't support disassociate the last VPC from the hosted zone.

" - }, - "LimitsExceeded":{ - "type":"structure", - "members":{ - "message":{ - "shape":"ErrorMessage", - "documentation":"

Descriptive message for the error response.

" - } - }, - "exception":true, - "documentation":"

The limits specified for a resource have been exceeded.

" - }, - "ListGeoLocationsRequest":{ - "type":"structure", - "members":{ - "StartContinentCode":{ - "shape":"GeoLocationContinentCode", - "location":"querystring", - "locationName":"startcontinentcode", - "documentation":"

The first continent code in the lexicographic ordering of geo locations that you want the ListGeoLocations request to list. For non-continent geo locations, this should be null.

Valid values: AF | AN | AS | EU | OC | NA | SA

Constraint: Specifying ContinentCode with either CountryCode or SubdivisionCode returns an InvalidInput error.

" - }, - "StartCountryCode":{ - "shape":"GeoLocationCountryCode", - "location":"querystring", - "locationName":"startcountrycode", - "documentation":"

The first country code in the lexicographic ordering of geo locations that you want the ListGeoLocations request to list.

The default geo location uses a * for the country code. All other country codes follow the ISO 3166 two-character code.

" - }, - "StartSubdivisionCode":{ - "shape":"GeoLocationSubdivisionCode", - "location":"querystring", - "locationName":"startsubdivisioncode", - "documentation":"

The first subdivision code in the lexicographic ordering of geo locations that you want the ListGeoLocations request to list.

Constraint: Specifying SubdivisionCode without CountryCode returns an InvalidInput error.

" - }, - "MaxItems":{ - "shape":"PageMaxItems", - "location":"querystring", - "locationName":"maxitems", - "documentation":"

The maximum number of geo locations you want in the response body.

" - } - }, - "documentation":"

The input for a ListGeoLocations request.

" - }, - "ListGeoLocationsResponse":{ - "type":"structure", - "required":[ - "GeoLocationDetailsList", - "IsTruncated", - "MaxItems" - ], - "members":{ - "GeoLocationDetailsList":{ - "shape":"GeoLocationDetailsList", - "documentation":"

A complex type that contains information about the geo locations that are returned by the request.

" - }, - "IsTruncated":{ - "shape":"PageTruncated", - "documentation":"

A flag that indicates whether there are more geo locations to be listed. If your results were truncated, you can make a follow-up request for the next page of results by using the values included in the ListGeoLocationsResponse$NextContinentCode, ListGeoLocationsResponse$NextCountryCode and ListGeoLocationsResponse$NextSubdivisionCode elements.

Valid Values: true | false

" - }, - "NextContinentCode":{ - "shape":"GeoLocationContinentCode", - "documentation":"

If the results were truncated, the continent code of the next geo location in the list. This element is present only if ListGeoLocationsResponse$IsTruncated is true and the next geo location to list is a continent location.

" - }, - "NextCountryCode":{ - "shape":"GeoLocationCountryCode", - "documentation":"

If the results were truncated, the country code of the next geo location in the list. This element is present only if ListGeoLocationsResponse$IsTruncated is true and the next geo location to list is not a continent location.

" - }, - "NextSubdivisionCode":{ - "shape":"GeoLocationSubdivisionCode", - "documentation":"

If the results were truncated, the subdivision code of the next geo location in the list. This element is present only if ListGeoLocationsResponse$IsTruncated is true and the next geo location has a subdivision.

" - }, - "MaxItems":{ - "shape":"PageMaxItems", - "documentation":"

The maximum number of records you requested. The maximum value of MaxItems is 100.

" - } - }, - "documentation":"

A complex type that contains information about the geo locations that are returned by the request and information about the response.

" - }, - "ListHealthChecksRequest":{ - "type":"structure", - "members":{ - "Marker":{ - "shape":"PageMarker", - "location":"querystring", - "locationName":"marker", - "documentation":"

If the request returned more than one page of results, submit another request and specify the value of NextMarker from the last response in the marker parameter to get the next page of results.

" - }, - "MaxItems":{ - "shape":"PageMaxItems", - "location":"querystring", - "locationName":"maxitems", - "documentation":"

Specify the maximum number of health checks to return per page of results.

" - } - }, - "documentation":"

To retrieve a list of your health checks, send a GET request to the 2013-04-01/healthcheck resource. The response to this request includes a HealthChecks element with zero or more HealthCheck child elements. By default, the list of health checks is displayed on a single page. You can control the length of the page that is displayed by using the MaxItems parameter. You can use the Marker parameter to control the health check that the list begins with.

Route 53 returns a maximum of 100 items. If you set MaxItems to a value greater than 100, Route 53 returns only the first 100." - }, - "ListHealthChecksResponse":{ - "type":"structure", - "required":[ - "HealthChecks", - "Marker", - "IsTruncated", - "MaxItems" - ], - "members":{ - "HealthChecks":{ - "shape":"HealthChecks", - "documentation":"

A complex type that contains information about the health checks associated with the current AWS account.

" - }, - "Marker":{ - "shape":"PageMarker", - "documentation":"

If the request returned more than one page of results, submit another request and specify the value of NextMarker from the last response in the marker parameter to get the next page of results.

" - }, - "IsTruncated":{ - "shape":"PageTruncated", - "documentation":"

A flag indicating whether there are more health checks to be listed. If your results were truncated, you can make a follow-up request for the next page of results by using the Marker element.

Valid Values: true | false

" - }, - "NextMarker":{ - "shape":"PageMarker", - "documentation":"

Indicates where to continue listing health checks. If ListHealthChecksResponse$IsTruncated is true, make another request to ListHealthChecks and include the value of the NextMarker element in the Marker element to get the next page of results.

" - }, - "MaxItems":{ - "shape":"PageMaxItems", - "documentation":"

The maximum number of health checks to be included in the response body. If the number of health checks associated with this AWS account exceeds MaxItems, the value of ListHealthChecksResponse$IsTruncated in the response is true. Call ListHealthChecks again and specify the value of ListHealthChecksResponse$NextMarker in the ListHostedZonesRequest$Marker element to get the next page of results.

" - } - }, - "documentation":"

A complex type that contains the response for the request.

" - }, - "ListHostedZonesRequest":{ - "type":"structure", - "members":{ - "Marker":{ - "shape":"PageMarker", - "location":"querystring", - "locationName":"marker", - "documentation":"

If the request returned more than one page of results, submit another request and specify the value of NextMarker from the last response in the marker parameter to get the next page of results.

" - }, - "MaxItems":{ - "shape":"PageMaxItems", - "location":"querystring", - "locationName":"maxitems", - "documentation":"

Specify the maximum number of hosted zones to return per page of results.

" - }, - "DelegationSetId":{ - "shape":"ResourceId", - "location":"querystring", - "locationName":"delegationsetid" - } - }, - "documentation":"

To retrieve a list of your hosted zones, send a GET request to the 2013-04-01/hostedzone resource. The response to this request includes a HostedZones element with zero or more HostedZone child elements. By default, the list of hosted zones is displayed on a single page. You can control the length of the page that is displayed by using the MaxItems parameter. You can use the Marker parameter to control the hosted zone that the list begins with. For more information about listing hosted zones, see Listing the Hosted Zones for an AWS Account in the Amazon Route 53 Developer Guide.

Route 53 returns a maximum of 100 items. If you set MaxItems to a value greater than 100, Route 53 returns only the first 100." - }, - "ListHostedZonesResponse":{ - "type":"structure", - "required":[ - "HostedZones", - "Marker", - "IsTruncated", - "MaxItems" - ], - "members":{ - "HostedZones":{ - "shape":"HostedZones", - "documentation":"

A complex type that contains information about the hosted zones associated with the current AWS account.

" - }, - "Marker":{ - "shape":"PageMarker", - "documentation":"

If the request returned more than one page of results, submit another request and specify the value of NextMarker from the last response in the marker parameter to get the next page of results.

" - }, - "IsTruncated":{ - "shape":"PageTruncated", - "documentation":"

A flag indicating whether there are more hosted zones to be listed. If your results were truncated, you can make a follow-up request for the next page of results by using the Marker element.

Valid Values: true | false

" - }, - "NextMarker":{ - "shape":"PageMarker", - "documentation":"

Indicates where to continue listing hosted zones. If ListHostedZonesResponse$IsTruncated is true, make another request to ListHostedZones and include the value of the NextMarker element in the Marker element to get the next page of results.

" - }, - "MaxItems":{ - "shape":"PageMaxItems", - "documentation":"

The maximum number of hosted zones to be included in the response body. If the number of hosted zones associated with this AWS account exceeds MaxItems, the value of ListHostedZonesResponse$IsTruncated in the response is true. Call ListHostedZones again and specify the value of ListHostedZonesResponse$NextMarker in the ListHostedZonesRequest$Marker element to get the next page of results.

" - } - }, - "documentation":"

A complex type that contains the response for the request.

" - }, - "ListResourceRecordSetsRequest":{ - "type":"structure", - "required":["HostedZoneId"], - "members":{ - "HostedZoneId":{ - "shape":"ResourceId", - "location":"uri", - "locationName":"Id", - "documentation":"

The ID of the hosted zone that contains the resource record sets that you want to get.

" - }, - "StartRecordName":{ - "shape":"DNSName", - "location":"querystring", - "locationName":"name", - "documentation":"

The first name in the lexicographic ordering of domain names that you want the ListResourceRecordSets request to list.

" - }, - "StartRecordType":{ - "shape":"RRType", - "location":"querystring", - "locationName":"type", - "documentation":"

The DNS type at which to begin the listing of resource record sets.

Valid values: A | AAAA | CNAME | MX | NS | PTR | SOA | SPF | SRV | TXT

Values for Weighted Resource Record Sets: A | AAAA | CNAME | TXT

Values for Regional Resource Record Sets: A | AAAA | CNAME | TXT

Values for Alias Resource Record Sets: A | AAAA

Constraint: Specifying type without specifying name returns an InvalidInput error.

" - }, - "StartRecordIdentifier":{ - "shape":"ResourceRecordSetIdentifier", - "location":"querystring", - "locationName":"identifier", - "documentation":"

Weighted resource record sets only: If results were truncated for a given DNS name and type, specify the value of ListResourceRecordSetsResponse$NextRecordIdentifier from the previous response to get the next resource record set that has the current DNS name and type.

" - }, - "MaxItems":{ - "shape":"PageMaxItems", - "location":"querystring", - "locationName":"maxitems", - "documentation":"

The maximum number of records you want in the response body.

" - } - }, - "documentation":"

The input for a ListResourceRecordSets request.

" - }, - "ListResourceRecordSetsResponse":{ - "type":"structure", - "required":[ - "ResourceRecordSets", - "IsTruncated", - "MaxItems" - ], - "members":{ - "ResourceRecordSets":{ - "shape":"ResourceRecordSets", - "documentation":"

A complex type that contains information about the resource record sets that are returned by the request.

" - }, - "IsTruncated":{ - "shape":"PageTruncated", - "documentation":"

A flag that indicates whether there are more resource record sets to be listed. If your results were truncated, you can make a follow-up request for the next page of results by using the ListResourceRecordSetsResponse$NextRecordName element.

Valid Values: true | false

" - }, - "NextRecordName":{ - "shape":"DNSName", - "documentation":"

If the results were truncated, the name of the next record in the list. This element is present only if ListResourceRecordSetsResponse$IsTruncated is true.

" - }, - "NextRecordType":{ - "shape":"RRType", - "documentation":"

If the results were truncated, the type of the next record in the list. This element is present only if ListResourceRecordSetsResponse$IsTruncated is true.

" - }, - "NextRecordIdentifier":{ - "shape":"ResourceRecordSetIdentifier", - "documentation":"

Weighted resource record sets only: If results were truncated for a given DNS name and type, the value of SetIdentifier for the next resource record set that has the current DNS name and type.

" - }, - "MaxItems":{ - "shape":"PageMaxItems", - "documentation":"

The maximum number of records you requested. The maximum value of MaxItems is 100.

" - } - }, - "documentation":"

A complex type that contains information about the resource record sets that are returned by the request and information about the response.

" - }, - "ListReusableDelegationSetsRequest":{ - "type":"structure", - "members":{ - "Marker":{ - "shape":"PageMarker", - "location":"querystring", - "locationName":"marker", - "documentation":"

If the request returned more than one page of results, submit another request and specify the value of NextMarker from the last response in the marker parameter to get the next page of results.

" - }, - "MaxItems":{ - "shape":"PageMaxItems", - "location":"querystring", - "locationName":"maxitems", - "documentation":"

Specify the maximum number of reusable delegation sets to return per page of results.

" - } - }, - "documentation":"

To retrieve a list of your reusable delegation sets, send a GET request to the 2013-04-01/delegationset resource. The response to this request includes a DelegationSets element with zero or more DelegationSet child elements. By default, the list of reusable delegation sets is displayed on a single page. You can control the length of the page that is displayed by using the MaxItems parameter. You can use the Marker parameter to control the delegation set that the list begins with.

Route 53 returns a maximum of 100 items. If you set MaxItems to a value greater than 100, Route 53 returns only the first 100." - }, - "ListReusableDelegationSetsResponse":{ - "type":"structure", - "required":[ - "DelegationSets", - "Marker", - "IsTruncated", - "MaxItems" - ], - "members":{ - "DelegationSets":{ - "shape":"DelegationSets", - "documentation":"

A complex type that contains information about the reusable delegation sets associated with the current AWS account.

" - }, - "Marker":{ - "shape":"PageMarker", - "documentation":"

If the request returned more than one page of results, submit another request and specify the value of NextMarker from the last response in the marker parameter to get the next page of results.

" - }, - "IsTruncated":{ - "shape":"PageTruncated", - "documentation":"

A flag indicating whether there are more reusable delegation sets to be listed. If your results were truncated, you can make a follow-up request for the next page of results by using the Marker element.

Valid Values: true | false

" - }, - "NextMarker":{ - "shape":"PageMarker", - "documentation":"

Indicates where to continue listing reusable delegation sets. If ListReusableDelegationSetsResponse$IsTruncated is true, make another request to ListReusableDelegationSets and include the value of the NextMarker element in the Marker element to get the next page of results.

" - }, - "MaxItems":{ - "shape":"PageMaxItems", - "documentation":"

The maximum number of reusable delegation sets to be included in the response body. If the number of reusable delegation sets associated with this AWS account exceeds MaxItems, the value of ListReusablDelegationSetsResponse$IsTruncated in the response is true. Call ListReusableDelegationSets again and specify the value of ListReusableDelegationSetsResponse$NextMarker in the ListReusableDelegationSetsRequest$Marker element to get the next page of results.

" - } - }, - "documentation":"

A complex type that contains the response for the request.

" - }, - "ListTagsForResourceRequest":{ - "type":"structure", - "required":[ - "ResourceType", - "ResourceId" - ], - "members":{ - "ResourceType":{ - "shape":"TagResourceType", - "location":"uri", - "locationName":"ResourceType", - "documentation":"

The type of the resource.

- The resource type for health checks is healthcheck.

- The resource type for hosted zones is hostedzone.

" - }, - "ResourceId":{ - "shape":"TagResourceId", - "location":"uri", - "locationName":"ResourceId", - "documentation":"

The ID of the resource for which you want to retrieve tags.

" - } - }, - "documentation":"

A complex type containing information about a request for a list of the tags that are associated with an individual resource.

" - }, - "ListTagsForResourceResponse":{ - "type":"structure", - "required":["ResourceTagSet"], - "members":{ - "ResourceTagSet":{ - "shape":"ResourceTagSet", - "documentation":"

A ResourceTagSet containing tags associated with the specified resource.

" - } - }, - "documentation":"

A complex type containing tags for the specified resource.

" - }, - "ListTagsForResourcesRequest":{ - "type":"structure", - "required":[ - "ResourceType", - "ResourceIds" - ], - "members":{ - "ResourceType":{ - "shape":"TagResourceType", - "location":"uri", - "locationName":"ResourceType", - "documentation":"

The type of the resources.

- The resource type for health checks is healthcheck.

- The resource type for hosted zones is hostedzone.

" - }, - "ResourceIds":{ - "shape":"TagResourceIdList", - "documentation":"

A complex type that contains the ResourceId element for each resource for which you want to get a list of tags.

" - } - }, - "documentation":"

A complex type containing information about a request for a list of the tags that are associated with up to 10 specified resources.

" - }, - "ListTagsForResourcesResponse":{ - "type":"structure", - "required":["ResourceTagSets"], - "members":{ - "ResourceTagSets":{ - "shape":"ResourceTagSetList", - "documentation":"

A list of ResourceTagSets containing tags associated with the specified resources.

" - } - }, - "documentation":"

A complex type containing tags for the specified resources.

" - }, - "NoSuchChange":{ - "type":"structure", - "members":{ - "message":{"shape":"ErrorMessage"} - }, - "error":{"httpStatusCode":404}, - "exception":true - }, - "NoSuchDelegationSet":{ - "type":"structure", - "members":{ - "message":{ - "shape":"ErrorMessage", - "documentation":"

Descriptive message for the error response.

" - } - }, - "exception":true, - "documentation":"

The specified delegation set does not exist.

" - }, - "NoSuchGeoLocation":{ - "type":"structure", - "members":{ - "message":{ - "shape":"ErrorMessage", - "documentation":"

Descriptive message for the error response.

" - } - }, - "error":{"httpStatusCode":404}, - "exception":true, - "documentation":"

The geo location you are trying to get does not exist.

" - }, - "NoSuchHealthCheck":{ - "type":"structure", - "members":{ - "message":{ - "shape":"ErrorMessage", - "documentation":"

Descriptive message for the error response.

" - } - }, - "error":{"httpStatusCode":404}, - "exception":true, - "documentation":"

The health check you are trying to get or delete does not exist.

" - }, - "NoSuchHostedZone":{ - "type":"structure", - "members":{ - "message":{"shape":"ErrorMessage"} - }, - "error":{"httpStatusCode":404}, - "exception":true - }, - "Nonce":{ - "type":"string", - "min":1, - "max":128 - }, - "PageMarker":{ - "type":"string", - "max":64 - }, - "PageMaxItems":{"type":"string"}, - "PageTruncated":{"type":"boolean"}, - "Port":{ - "type":"integer", - "min":1, - "max":65535 - }, - "PriorRequestNotComplete":{ - "type":"structure", - "members":{ - "message":{"shape":"ErrorMessage"} - }, - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

The request was rejected because Route 53 was still processing a prior request.

" - }, - "PublicZoneVPCAssociation":{ - "type":"structure", - "members":{ - "message":{ - "shape":"ErrorMessage", - "documentation":"

Descriptive message for the error response.

" - } - }, - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

The hosted zone you are trying to associate VPC with doesn't have any VPC association. Route 53 currently doesn't support associate a VPC with a public hosted zone.

" - }, - "RData":{ - "type":"string", - "max":4000 - }, - "RRType":{ - "type":"string", - "enum":[ - "SOA", - "A", - "TXT", - "NS", - "CNAME", - "MX", - "PTR", - "SRV", - "SPF", - "AAAA" - ] - }, - "RequestInterval":{ - "type":"integer", - "min":10, - "max":30 - }, - "ResourceDescription":{ - "type":"string", - "max":256 - }, - "ResourceId":{ - "type":"string", - "max":32 - }, - "ResourcePath":{ - "type":"string", - "max":255 - }, - "ResourceRecord":{ - "type":"structure", - "required":["Value"], - "members":{ - "Value":{ - "shape":"RData", - "documentation":"

The value of the Value element for the current resource record set.

" - } - }, - "documentation":"

A complex type that contains the value of the Value element for the current resource record set.

" - }, - "ResourceRecordSet":{ - "type":"structure", - "required":[ - "Name", - "Type" - ], - "members":{ - "Name":{ - "shape":"DNSName", - "documentation":"

The domain name of the current resource record set.

" - }, - "Type":{ - "shape":"RRType", - "documentation":"

The type of the current resource record set.

" - }, - "SetIdentifier":{ - "shape":"ResourceRecordSetIdentifier", - "documentation":"

Weighted, Latency, Geo, and Failover resource record sets only: An identifier that differentiates among multiple resource record sets that have the same combination of DNS name and type.

" - }, - "Weight":{ - "shape":"ResourceRecordSetWeight", - "documentation":"

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.

" - }, - "Region":{ - "shape":"ResourceRecordSetRegion", - "documentation":"

Latency-based resource record sets only: Among resource record sets that have the same combination of DNS name and type, a value that specifies the AWS region for the current resource record set.

" - }, - "GeoLocation":{ - "shape":"GeoLocation", - "documentation":"

Geo location resource record sets only: Among resource record sets that have the same combination of DNS name and type, a value that specifies the geo location for the current resource record set.

" - }, - "Failover":{ - "shape":"ResourceRecordSetFailover", - "documentation":"

Failover resource record sets only: Among resource record sets that have the same combination of DNS name and type, a value that indicates whether the current resource record set is a primary or secondary resource record set. A failover set may contain at most one resource record set marked as primary and one resource record set marked as secondary. A resource record set marked as primary will be returned if any of the following are true: (1) an associated health check is passing, (2) if the resource record set is an alias with the evaluate target health and at least one target resource record set is healthy, (3) both the primary and secondary resource record set are failing health checks or (4) there is no secondary resource record set. A secondary resource record set will be returned if: (1) the primary is failing a health check and either the secondary is passing a health check or has no associated health check, or (2) there is no primary resource record set.

Valid values: PRIMARY | SECONDARY

" - }, - "TTL":{ - "shape":"TTL", - "documentation":"

The cache time to live for the current resource record set.

" - }, - "ResourceRecords":{ - "shape":"ResourceRecords", - "documentation":"

A complex type that contains the resource records for the current resource record set.

" - }, - "AliasTarget":{ - "shape":"AliasTarget", - "documentation":"

Alias resource record sets only: Information about the AWS resource to which you are redirecting traffic.

" - }, - "HealthCheckId":{ - "shape":"HealthCheckId", - "documentation":"

Health Check resource record sets only, not required for alias resource record sets: An identifier that is used to identify health check associated with the resource record set.

" - } - }, - "documentation":"

A complex type that contains information about the current resource record set.

" - }, - "ResourceRecordSetFailover":{ - "type":"string", - "enum":[ - "PRIMARY", - "SECONDARY" - ] - }, - "ResourceRecordSetIdentifier":{ - "type":"string", - "min":1, - "max":128 - }, - "ResourceRecordSetRegion":{ - "type":"string", - "enum":[ - "us-east-1", - "us-west-1", - "us-west-2", - "eu-west-1", - "eu-central-1", - "ap-southeast-1", - "ap-southeast-2", - "ap-northeast-1", - "sa-east-1", - "cn-north-1" - ], - "min":1, - "max":64 - }, - "ResourceRecordSetWeight":{ - "type":"long", - "min":0, - "max":255 - }, - "ResourceRecordSets":{ - "type":"list", - "member":{ - "shape":"ResourceRecordSet", - "locationName":"ResourceRecordSet" - } - }, - "ResourceRecords":{ - "type":"list", - "member":{ - "shape":"ResourceRecord", - "locationName":"ResourceRecord" - }, - "min":1 - }, - "ResourceTagSet":{ - "type":"structure", - "members":{ - "ResourceType":{ - "shape":"TagResourceType", - "documentation":"

The type of the resource.

- The resource type for health checks is healthcheck.

- The resource type for hosted zones is hostedzone.

" - }, - "ResourceId":{ - "shape":"TagResourceId", - "documentation":"

The ID for the specified resource.

" - }, - "Tags":{ - "shape":"TagList", - "documentation":"

The tags associated with the specified resource.

" - } - }, - "documentation":"

A complex type containing a resource and its associated tags.

" - }, - "ResourceTagSetList":{ - "type":"list", - "member":{ - "shape":"ResourceTagSet", - "locationName":"ResourceTagSet" - } - }, - "ResourceURI":{ - "type":"string", - "max":1024 - }, - "SearchString":{ - "type":"string", - "max":255 - }, - "Status":{"type":"string"}, - "StatusReport":{ - "type":"structure", - "members":{ - "Status":{ - "shape":"Status", - "documentation":"

The observed health check status.

" - }, - "CheckedTime":{ - "shape":"TimeStamp", - "documentation":"

The date and time the health check status was observed, in the format YYYY-MM-DDThh:mm:ssZ, as specified in the ISO 8601 standard (for example, 2009-11-19T19:37:58Z). The Z after the time indicates that the time is listed in Coordinated Universal Time (UTC), which is synonymous with Greenwich Mean Time in this context.

" - } - }, - "documentation":"

A complex type that contains information about the health check status for the current observation.

" - }, - "TTL":{ - "type":"long", - "min":0, - "max":2147483647 - }, - "Tag":{ - "type":"structure", - "members":{ - "Key":{ - "shape":"TagKey", - "documentation":"

The key for a Tag.

" - }, - "Value":{ - "shape":"TagValue", - "documentation":"

The value for a Tag.

" - } - }, - "documentation":"

A single tag containing a key and value.

" - }, - "TagKey":{ - "type":"string", - "max":128 - }, - "TagKeyList":{ - "type":"list", - "member":{ - "shape":"TagKey", - "locationName":"Key" - }, - "min":1, - "max":10 - }, - "TagList":{ - "type":"list", - "member":{ - "shape":"Tag", - "locationName":"Tag" - }, - "min":1, - "max":10 - }, - "TagResourceId":{ - "type":"string", - "max":64 - }, - "TagResourceIdList":{ - "type":"list", - "member":{ - "shape":"TagResourceId", - "locationName":"ResourceId" - }, - "min":1, - "max":10 - }, - "TagResourceType":{ - "type":"string", - "enum":[ - "healthcheck", - "hostedzone" - ] - }, - "TagValue":{ - "type":"string", - "max":256 - }, - "ThrottlingException":{ - "type":"structure", - "members":{ - "message":{"shape":"ErrorMessage"} - }, - "error":{"httpStatusCode":400}, - "exception":true - }, - "TimeStamp":{"type":"timestamp"}, - "TooManyHealthChecks":{ - "type":"structure", - "members":{ - "message":{"shape":"ErrorMessage"} - }, - "exception":true - }, - "TooManyHostedZones":{ - "type":"structure", - "members":{ - "message":{ - "shape":"ErrorMessage", - "documentation":"

Descriptive message for the error response.

" - } - }, - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

This error indicates that you've reached the maximum number of hosted zones that can be created for the current AWS account. You can request an increase to the limit on the Contact Us page.

" - }, - "UpdateHealthCheckRequest":{ - "type":"structure", - "required":["HealthCheckId"], - "members":{ - "HealthCheckId":{ - "shape":"HealthCheckId", - "location":"uri", - "locationName":"HealthCheckId", - "documentation":"

The ID of the health check to update.

" - }, - "HealthCheckVersion":{ - "shape":"HealthCheckVersion", - "documentation":"

Optional. When you specify a health check version, Route 53 compares this value with the current value in the health check, which prevents you from updating the health check when the versions don't match. Using HealthCheckVersion lets you prevent overwriting another change to the health check.

" - }, - "IPAddress":{ - "shape":"IPAddress", - "documentation":"

The IP address of the resource that you want to check.

Specify this value only if you want to change it.

" - }, - "Port":{ - "shape":"Port", - "documentation":"

The port on which you want Route 53 to open a connection to perform health checks.

Specify this value only if you want to change it.

" - }, - "ResourcePath":{ - "shape":"ResourcePath", - "documentation":"

The path that you want Amazon Route 53 to request when performing health checks. The path can be any value for which your endpoint will return an HTTP status code of 2xx or 3xx when the endpoint is healthy, for example the file /docs/route53-health-check.html.

Specify this value only if you want to change it.

" - }, - "FullyQualifiedDomainName":{ - "shape":"FullyQualifiedDomainName", - "documentation":"

Fully qualified domain name of the instance to be health checked.

Specify this value only if you want to change it.

" - }, - "SearchString":{ - "shape":"SearchString", - "documentation":"

If the value of Type is HTTP_STR_MATCH or HTTP_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.

Specify this value only if you want to change it.

" - }, - "FailureThreshold":{ - "shape":"FailureThreshold", - "documentation":"

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 vice versa.

Valid values are integers between 1 and 10. For more information, see \"How Amazon Route 53 Determines Whether an Endpoint Is Healthy\" in the Amazon Route 53 Developer Guide.

Specify this value only if you want to change it.

" - } - }, - "documentation":"

>A complex type that contains information about the request to update a health check.

" - }, - "UpdateHealthCheckResponse":{ - "type":"structure", - "required":["HealthCheck"], - "members":{ - "HealthCheck":{"shape":"HealthCheck"} - } - }, - "UpdateHostedZoneCommentRequest":{ - "type":"structure", - "required":["Id"], - "members":{ - "Id":{ - "shape":"ResourceId", - "location":"uri", - "locationName":"Id", - "documentation":"

The ID of the hosted zone you want to update.

" - }, - "Comment":{ - "shape":"ResourceDescription", - "documentation":"

A comment about your hosted zone.

" - } - }, - "documentation":"

A complex type that contains information about the request to update a hosted zone comment.

" - }, - "UpdateHostedZoneCommentResponse":{ - "type":"structure", - "required":["HostedZone"], - "members":{ - "HostedZone":{"shape":"HostedZone"} - }, - "documentation":"

A complex type containing information about the specified hosted zone after the update.

" - }, - "VPC":{ - "type":"structure", - "members":{ - "VPCRegion":{"shape":"VPCRegion"}, - "VPCId":{"shape":"VPCId"} - } - }, - "VPCAssociationNotFound":{ - "type":"structure", - "members":{ - "message":{ - "shape":"ErrorMessage", - "documentation":"

Descriptive message for the error response.

" - } - }, - "error":{"httpStatusCode":404}, - "exception":true, - "documentation":"

The VPC you specified is not currently associated with the hosted zone.

" - }, - "VPCId":{ - "type":"string", - "max":1024, - "documentation":"

A VPC ID

" - }, - "VPCRegion":{ - "type":"string", - "enum":[ - "us-east-1", - "us-west-1", - "us-west-2", - "eu-west-1", - "eu-central-1", - "ap-southeast-1", - "ap-southeast-2", - "ap-northeast-1", - "sa-east-1", - "cn-north-1" - ], - "min":1, - "max":64 - }, - "VPCs":{ - "type":"list", - "member":{ - "shape":"VPC", - "locationName":"VPC" - }, - "min":1, - "documentation":"

A list of VPCs

" - } - } -} diff --git a/src/github.com/getlantern/aws-sdk-go/apis/route53/2013-04-01.paginators.json b/src/github.com/getlantern/aws-sdk-go/apis/route53/2013-04-01.paginators.json deleted file mode 100644 index d472f47a28..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/apis/route53/2013-04-01.paginators.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "pagination": { - "ListHealthChecks": { - "input_token": "Marker", - "output_token": "NextMarker", - "more_results": "IsTruncated", - "limit_key": "MaxItems", - "result_key": "HealthChecks" - }, - "ListHostedZones": { - "input_token": "Marker", - "output_token": "NextMarker", - "more_results": "IsTruncated", - "limit_key": "MaxItems", - "result_key": "HostedZones" - }, - "ListResourceRecordSets": { - "more_results": "IsTruncated", - "limit_key": "MaxItems", - "result_key": "ResourceRecordSets", - "input_token": [ - "StartRecordName", - "StartRecordType", - "StartRecordIdentifier" - ], - "output_token": [ - "NextRecordName", - "NextRecordType", - "NextRecordIdentifier" - ] - } - } -} diff --git a/src/github.com/getlantern/aws-sdk-go/apis/route53domains/2014-05-15.normal.json b/src/github.com/getlantern/aws-sdk-go/apis/route53domains/2014-05-15.normal.json deleted file mode 100644 index 531145b084..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/apis/route53domains/2014-05-15.normal.json +++ /dev/null @@ -1,1682 +0,0 @@ -{ - "metadata":{ - "apiVersion":"2014-05-15", - "endpointPrefix":"route53domains", - "jsonVersion":"1.1", - "serviceFullName":"Amazon Route 53 Domains", - "signatureVersion":"v4", - "targetPrefix":"Route53Domains_v20140515", - "protocol":"json" - }, - "operations":{ - "CheckDomainAvailability":{ - "name":"CheckDomainAvailability", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"CheckDomainAvailabilityRequest", - "documentation":"

The CheckDomainAvailability request contains the following elements.

" - }, - "output":{ - "shape":"CheckDomainAvailabilityResponse", - "documentation":"

The CheckDomainAvailability response includes the following elements.

" - }, - "errors":[ - { - "shape":"InvalidInput", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

The requested item is not acceptable. For example, for an OperationId it may refer to the ID of an operation that is already completed. For a domain name, it may not be a valid domain name or belong to the requester account.

" - }, - { - "shape":"UnsupportedTLD", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

Amazon Route 53 does not support this top-level domain.

" - } - ], - "documentation":"

This operation checks the availability of one domain name. You can access this API without authenticating. Note that if the availability status of a domain is pending, you must submit another request to determine the availability of the domain name.

" - }, - "DisableDomainAutoRenew":{ - "name":"DisableDomainAutoRenew", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DisableDomainAutoRenewRequest"}, - "output":{"shape":"DisableDomainAutoRenewResponse"}, - "errors":[ - { - "shape":"InvalidInput", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

The requested item is not acceptable. For example, for an OperationId it may refer to the ID of an operation that is already completed. For a domain name, it may not be a valid domain name or belong to the requester account.

" - } - ], - "documentation":"

This operation disables automatic renewal of domain registration for the specified domain.

" - }, - "DisableDomainTransferLock":{ - "name":"DisableDomainTransferLock", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DisableDomainTransferLockRequest", - "documentation":"

The DisableDomainTransferLock request includes the following element.

" - }, - "output":{ - "shape":"DisableDomainTransferLockResponse", - "documentation":"

The DisableDomainTransferLock response includes the following element.

" - }, - "errors":[ - { - "shape":"InvalidInput", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

The requested item is not acceptable. For example, for an OperationId it may refer to the ID of an operation that is already completed. For a domain name, it may not be a valid domain name or belong to the requester account.

" - }, - { - "shape":"DuplicateRequest", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

The request is already in progress for the domain.

" - }, - { - "shape":"TLDRulesViolation", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

The top-level domain does not support this operation.

" - }, - { - "shape":"OperationLimitExceeded", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

The number of operations or jobs running exceeded the allowed threshold for the account.

" - } - ], - "documentation":"

This operation removes the transfer lock on the domain (specifically the clientTransferProhibited status) to allow domain transfers. We recommend you refrain from performing this action unless you intend to transfer the domain to a different registrar. Successful submission returns an operation ID that you can use to track the progress and completion of the action. If the request is not completed successfully, the domain registrant will be notified by email.

" - }, - "EnableDomainAutoRenew":{ - "name":"EnableDomainAutoRenew", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"EnableDomainAutoRenewRequest"}, - "output":{"shape":"EnableDomainAutoRenewResponse"}, - "errors":[ - { - "shape":"InvalidInput", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

The requested item is not acceptable. For example, for an OperationId it may refer to the ID of an operation that is already completed. For a domain name, it may not be a valid domain name or belong to the requester account.

" - } - ], - "documentation":"

This operation configures Amazon Route 53 to automatically renew the specified domain before the domain registration expires. The cost of renewing your domain registration is billed to your AWS account.

The period during which you can renew a domain name varies by TLD. For a list of TLDs and their renewal policies, see \"Renewal, restoration, and deletion times\" (http://wiki.gandi.net/en/domains/renew#renewal_restoration_and_deletion_times) on the website for our registrar partner, Gandi. Route 53 requires that you renew before the end of the renewal period that is listed on the Gandi website so we can complete processing before the deadline.

" - }, - "EnableDomainTransferLock":{ - "name":"EnableDomainTransferLock", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"EnableDomainTransferLockRequest", - "documentation":"

The EnableDomainTransferLock request includes the following element.

" - }, - "output":{ - "shape":"EnableDomainTransferLockResponse", - "documentation":"

The EnableDomainTransferLock response includes the following elements.

" - }, - "errors":[ - { - "shape":"InvalidInput", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

The requested item is not acceptable. For example, for an OperationId it may refer to the ID of an operation that is already completed. For a domain name, it may not be a valid domain name or belong to the requester account.

" - }, - { - "shape":"DuplicateRequest", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

The request is already in progress for the domain.

" - }, - { - "shape":"TLDRulesViolation", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

The top-level domain does not support this operation.

" - }, - { - "shape":"OperationLimitExceeded", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

The number of operations or jobs running exceeded the allowed threshold for the account.

" - } - ], - "documentation":"

This operation sets the transfer lock on the domain (specifically the clientTransferProhibited status) to prevent domain transfers. Successful submission returns an operation ID that you can use to track the progress and completion of the action. If the request is not completed successfully, the domain registrant will be notified by email.

" - }, - "GetDomainDetail":{ - "name":"GetDomainDetail", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"GetDomainDetailRequest", - "documentation":"

The GetDomainDetail request includes the following element.

" - }, - "output":{ - "shape":"GetDomainDetailResponse", - "documentation":"

The GetDomainDetail response includes the following elements.

" - }, - "errors":[ - { - "shape":"InvalidInput", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

The requested item is not acceptable. For example, for an OperationId it may refer to the ID of an operation that is already completed. For a domain name, it may not be a valid domain name or belong to the requester account.

" - } - ], - "documentation":"

This operation returns detailed information about the domain. The domain's contact information is also returned as part of the output.

" - }, - "GetOperationDetail":{ - "name":"GetOperationDetail", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"GetOperationDetailRequest", - "documentation":"

The GetOperationDetail request includes the following element.

" - }, - "output":{ - "shape":"GetOperationDetailResponse", - "documentation":"

The GetOperationDetail response includes the following elements.

" - }, - "errors":[ - { - "shape":"InvalidInput", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

The requested item is not acceptable. For example, for an OperationId it may refer to the ID of an operation that is already completed. For a domain name, it may not be a valid domain name or belong to the requester account.

" - } - ], - "documentation":"

This operation returns the current status of an operation that is not completed.

" - }, - "ListDomains":{ - "name":"ListDomains", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"ListDomainsRequest", - "documentation":"

The ListDomains request includes the following elements.

" - }, - "output":{ - "shape":"ListDomainsResponse", - "documentation":"

The ListDomains response includes the following elements.

" - }, - "errors":[ - { - "shape":"InvalidInput", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

The requested item is not acceptable. For example, for an OperationId it may refer to the ID of an operation that is already completed. For a domain name, it may not be a valid domain name or belong to the requester account.

" - } - ], - "documentation":"

This operation returns all the domain names registered with Amazon Route 53 for the current AWS account.

" - }, - "ListOperations":{ - "name":"ListOperations", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"ListOperationsRequest", - "documentation":"

The ListOperations request includes the following elements.

" - }, - "output":{ - "shape":"ListOperationsResponse", - "documentation":"

The ListOperations response includes the following elements.

" - }, - "errors":[ - { - "shape":"InvalidInput", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

The requested item is not acceptable. For example, for an OperationId it may refer to the ID of an operation that is already completed. For a domain name, it may not be a valid domain name or belong to the requester account.

" - } - ], - "documentation":"

This operation returns the operation IDs of operations that are not yet complete.

" - }, - "RegisterDomain":{ - "name":"RegisterDomain", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"RegisterDomainRequest", - "documentation":"

The RegisterDomain request includes the following elements.

" - }, - "output":{ - "shape":"RegisterDomainResponse", - "documentation":"

The RegisterDomain response includes the following element.

" - }, - "errors":[ - { - "shape":"InvalidInput", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

The requested item is not acceptable. For example, for an OperationId it may refer to the ID of an operation that is already completed. For a domain name, it may not be a valid domain name or belong to the requester account.

" - }, - { - "shape":"UnsupportedTLD", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

Amazon Route 53 does not support this top-level domain.

" - }, - { - "shape":"DuplicateRequest", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

The request is already in progress for the domain.

" - }, - { - "shape":"TLDRulesViolation", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

The top-level domain does not support this operation.

" - }, - { - "shape":"DomainLimitExceeded", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

The number of domains has exceeded the allowed threshold for the account.

" - }, - { - "shape":"OperationLimitExceeded", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

The number of operations or jobs running exceeded the allowed threshold for the account.

" - } - ], - "documentation":"

This operation registers a domain. Domains are registered by the AWS registrar partner, Gandi. For some top-level domains (TLDs), this operation requires extra parameters.

When you register a domain, Amazon Route 53 does the following:

" - }, - "RetrieveDomainAuthCode":{ - "name":"RetrieveDomainAuthCode", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"RetrieveDomainAuthCodeRequest", - "documentation":"

The RetrieveDomainAuthCode request includes the following element.

" - }, - "output":{ - "shape":"RetrieveDomainAuthCodeResponse", - "documentation":"

The RetrieveDomainAuthCode response includes the following element.

" - }, - "errors":[ - { - "shape":"InvalidInput", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

The requested item is not acceptable. For example, for an OperationId it may refer to the ID of an operation that is already completed. For a domain name, it may not be a valid domain name or belong to the requester account.

" - } - ], - "documentation":"

This operation returns the AuthCode for the domain. To transfer a domain to another registrar, you provide this value to the new registrar.

" - }, - "TransferDomain":{ - "name":"TransferDomain", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"TransferDomainRequest", - "documentation":"

The TransferDomain request includes the following elements.

" - }, - "output":{ - "shape":"TransferDomainResponse", - "documentation":"

The TranserDomain response includes the following element.

" - }, - "errors":[ - { - "shape":"InvalidInput", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

The requested item is not acceptable. For example, for an OperationId it may refer to the ID of an operation that is already completed. For a domain name, it may not be a valid domain name or belong to the requester account.

" - }, - { - "shape":"UnsupportedTLD", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

Amazon Route 53 does not support this top-level domain.

" - }, - { - "shape":"DuplicateRequest", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

The request is already in progress for the domain.

" - }, - { - "shape":"TLDRulesViolation", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

The top-level domain does not support this operation.

" - }, - { - "shape":"DomainLimitExceeded", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

The number of domains has exceeded the allowed threshold for the account.

" - }, - { - "shape":"OperationLimitExceeded", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

The number of operations or jobs running exceeded the allowed threshold for the account.

" - } - ], - "documentation":"

This operation transfers a domain from another registrar to Amazon Route 53. Domains are registered by the AWS registrar, Gandi upon transfer.

To transfer a domain, you need to meet all the domain transfer criteria, including the following:

We recommend you use the Amazon Route 53 as the DNS service for your domain. You can create a hosted zone in Amazon Route 53 for your current domain before transferring your domain.

Note that upon transfer, the domain duration is extended for a year if not otherwise specified. Autorenew is enabled by default.

If the transfer is successful, this method returns an operation ID that you can use to track the progress and completion of the action. If the request is not completed successfully, the domain registrant will be notified by email.

Transferring domains charges your AWS account an amount based on the top-level domain. For more information, see Amazon Route 53 Pricing.

" - }, - "UpdateDomainContact":{ - "name":"UpdateDomainContact", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"UpdateDomainContactRequest", - "documentation":"

The UpdateDomainContact request includes the following elements.

" - }, - "output":{ - "shape":"UpdateDomainContactResponse", - "documentation":"

The UpdateDomainContact response includes the following element.

" - }, - "errors":[ - { - "shape":"InvalidInput", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

The requested item is not acceptable. For example, for an OperationId it may refer to the ID of an operation that is already completed. For a domain name, it may not be a valid domain name or belong to the requester account.

" - }, - { - "shape":"DuplicateRequest", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

The request is already in progress for the domain.

" - }, - { - "shape":"TLDRulesViolation", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

The top-level domain does not support this operation.

" - }, - { - "shape":"OperationLimitExceeded", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

The number of operations or jobs running exceeded the allowed threshold for the account.

" - } - ], - "documentation":"

This operation updates the contact information for a particular domain. Information for at least one contact (registrant, administrator, or technical) must be supplied for update.

If the update is successful, this method returns an operation ID that you can use to track the progress and completion of the action. If the request is not completed successfully, the domain registrant will be notified by email.

" - }, - "UpdateDomainContactPrivacy":{ - "name":"UpdateDomainContactPrivacy", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"UpdateDomainContactPrivacyRequest", - "documentation":"

The UpdateDomainContactPrivacy request includes the following elements.

" - }, - "output":{ - "shape":"UpdateDomainContactPrivacyResponse", - "documentation":"

The UpdateDomainContactPrivacy response includes the following element.

" - }, - "errors":[ - { - "shape":"InvalidInput", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

The requested item is not acceptable. For example, for an OperationId it may refer to the ID of an operation that is already completed. For a domain name, it may not be a valid domain name or belong to the requester account.

" - }, - { - "shape":"DuplicateRequest", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

The request is already in progress for the domain.

" - }, - { - "shape":"TLDRulesViolation", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

The top-level domain does not support this operation.

" - }, - { - "shape":"OperationLimitExceeded", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

The number of operations or jobs running exceeded the allowed threshold for the account.

" - } - ], - "documentation":"

This operation updates the specified domain contact's privacy setting. When the privacy option is enabled, personal information such as postal or email address is hidden from the results of a public WHOIS query. The privacy services are provided by the AWS registrar, Gandi. For more information, see the Gandi privacy features.

This operation only affects the privacy of the specified contact type (registrant, administrator, or tech). Successful acceptance returns an operation ID that you can use with GetOperationDetail to track the progress and completion of the action. If the request is not completed successfully, the domain registrant will be notified by email.

" - }, - "UpdateDomainNameservers":{ - "name":"UpdateDomainNameservers", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"UpdateDomainNameserversRequest", - "documentation":"

The UpdateDomainNameserver request includes the following elements.

" - }, - "output":{ - "shape":"UpdateDomainNameserversResponse", - "documentation":"

The UpdateDomainNameservers response includes the following element.

" - }, - "errors":[ - { - "shape":"InvalidInput", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

The requested item is not acceptable. For example, for an OperationId it may refer to the ID of an operation that is already completed. For a domain name, it may not be a valid domain name or belong to the requester account.

" - }, - { - "shape":"DuplicateRequest", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

The request is already in progress for the domain.

" - }, - { - "shape":"TLDRulesViolation", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

The top-level domain does not support this operation.

" - }, - { - "shape":"OperationLimitExceeded", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

The number of operations or jobs running exceeded the allowed threshold for the account.

" - } - ], - "documentation":"

This operation replaces the current set of name servers for the domain with the specified set of name servers. If you use Amazon Route 53 as your DNS service, specify the four name servers in the delegation set for the hosted zone for the domain.

If successful, this operation returns an operation ID that you can use to track the progress and completion of the action. If the request is not completed successfully, the domain registrant will be notified by email.

" - } - }, - "shapes":{ - "AddressLine":{ - "type":"string", - "max":255 - }, - "Boolean":{"type":"boolean"}, - "CheckDomainAvailabilityRequest":{ - "type":"structure", - "required":["DomainName"], - "members":{ - "DomainName":{ - "shape":"DomainName", - "documentation":"

The name of a domain.

Type: String

Default: None

Constraints: The domain name can contain only the letters a through z, the numbers 0 through 9, and hyphen (-). Internationalized Domain Names are not supported.

Required: Yes

" - }, - "IdnLangCode":{ - "shape":"LangCode", - "documentation":"

Reserved for future use.

" - } - }, - "documentation":"

The CheckDomainAvailability request contains the following elements.

" - }, - "CheckDomainAvailabilityResponse":{ - "type":"structure", - "required":["Availability"], - "members":{ - "Availability":{ - "shape":"DomainAvailability", - "documentation":"

Whether the domain name is available for registering.

Type: String

Valid values:

" - } - }, - "documentation":"

The CheckDomainAvailability response includes the following elements.

" - }, - "City":{ - "type":"string", - "max":255 - }, - "ContactDetail":{ - "type":"structure", - "members":{ - "FirstName":{ - "shape":"ContactName", - "documentation":"

First name of contact.

Type: String

Default: None

Constraints: Maximum 255 characters.

Parents: RegistrantContact, AdminContact, TechContact

Required: Yes

" - }, - "LastName":{ - "shape":"ContactName", - "documentation":"

Last name of contact.

Type: String

Default: None

Constraints: Maximum 255 characters.

Parents: RegistrantContact, AdminContact, TechContact

Required: Yes

" - }, - "ContactType":{ - "shape":"ContactType", - "documentation":"

Indicates whether the contact is a person, company, association, or public organization. If you choose an option other than PERSON, you must enter an organization name, and you can't enable privacy protection for the contact.

Type: String

Default: None

Constraints: Maximum 255 characters.

Valid values: PERSON | COMPANY | ASSOCIATION | PUBLIC_BODY

Parents: RegistrantContact, AdminContact, TechContact

Required: Yes

" - }, - "OrganizationName":{ - "shape":"ContactName", - "documentation":"

Name of the organization for contact types other than PERSON.

Type: String

Default: None

Constraints: Maximum 255 characters. Contact type must not be PERSON.

Parents: RegistrantContact, AdminContact, TechContact

Required: No

" - }, - "AddressLine1":{ - "shape":"AddressLine", - "documentation":"

First line of the contact's address.

Type: String

Default: None

Constraints: Maximum 255 characters.

Parents: RegistrantContact, AdminContact, TechContact

Required: Yes

" - }, - "AddressLine2":{ - "shape":"AddressLine", - "documentation":"

Second line of contact's address, if any.

Type: String

Default: None

Constraints: Maximum 255 characters.

Parents: RegistrantContact, AdminContact, TechContact

Required: No

" - }, - "City":{ - "shape":"City", - "documentation":"

The city of the contact's address.

Type: String

Default: None

Constraints: Maximum 255 characters.

Parents: RegistrantContact, AdminContact, TechContact

Required: Yes

" - }, - "State":{ - "shape":"State", - "documentation":"

The state or province of the contact's city.

Type: String

Default: None

Constraints: Maximum 255 characters.

Parents: RegistrantContact, AdminContact, TechContact

Required: No

" - }, - "CountryCode":{ - "shape":"CountryCode", - "documentation":"

Code for the country of the contact's address.

Type: String

Default: None

Constraints: Maximum 255 characters.

Parents: RegistrantContact, AdminContact, TechContact

Required: Yes

" - }, - "ZipCode":{ - "shape":"ZipCode", - "documentation":"

The zip or postal code of the contact's address.

Type: String

Default: None

Constraints: Maximum 255 characters.

Parents: RegistrantContact, AdminContact, TechContact

Required: No

" - }, - "PhoneNumber":{ - "shape":"ContactNumber", - "documentation":"

The phone number of the contact.

Type: String

Default: None

Constraints: Phone number must be specified in the format \"+[country dialing code].[number including any area code>]\". For example, a US phone number might appear as \"+1.1234567890\".

Parents: RegistrantContact, AdminContact, TechContact

Required: Yes

" - }, - "Email":{ - "shape":"Email", - "documentation":"

Email address of the contact.

Type: String

Default: None

Constraints: Maximum 254 characters.

Parents: RegistrantContact, AdminContact, TechContact

Required: Yes

" - }, - "Fax":{ - "shape":"ContactNumber", - "documentation":"

Fax number of the contact.

Type: String

Default: None

Constraints: Phone number must be specified in the format \"+[country dialing code].[number including any area code]\". For example, a US phone number might appear as \"+1.1234567890\".

Parents: RegistrantContact, AdminContact, TechContact

Required: No

" - }, - "ExtraParams":{ - "shape":"ExtraParamList", - "documentation":"

A list of name-value pairs for parameters required by certain top-level domains.

Type: Complex

Default: None

Parents: RegistrantContact, AdminContact, TechContact

Children: Name, Value

Required: No

" - } - }, - "sensitive":true, - "documentation":"

ContactDetail includes the following elements.

" - }, - "ContactName":{ - "type":"string", - "max":255 - }, - "ContactNumber":{ - "type":"string", - "max":30 - }, - "ContactType":{ - "type":"string", - "enum":[ - "PERSON", - "COMPANY", - "ASSOCIATION", - "PUBLIC_BODY", - "RESELLER" - ] - }, - "CountryCode":{ - "type":"string", - "enum":[ - "AD", - "AE", - "AF", - "AG", - "AI", - "AL", - "AM", - "AN", - "AO", - "AQ", - "AR", - "AS", - "AT", - "AU", - "AW", - "AZ", - "BA", - "BB", - "BD", - "BE", - "BF", - "BG", - "BH", - "BI", - "BJ", - "BL", - "BM", - "BN", - "BO", - "BR", - "BS", - "BT", - "BW", - "BY", - "BZ", - "CA", - "CC", - "CD", - "CF", - "CG", - "CH", - "CI", - "CK", - "CL", - "CM", - "CN", - "CO", - "CR", - "CU", - "CV", - "CX", - "CY", - "CZ", - "DE", - "DJ", - "DK", - "DM", - "DO", - "DZ", - "EC", - "EE", - "EG", - "ER", - "ES", - "ET", - "FI", - "FJ", - "FK", - "FM", - "FO", - "FR", - "GA", - "GB", - "GD", - "GE", - "GH", - "GI", - "GL", - "GM", - "GN", - "GQ", - "GR", - "GT", - "GU", - "GW", - "GY", - "HK", - "HN", - "HR", - "HT", - "HU", - "ID", - "IE", - "IL", - "IM", - "IN", - "IQ", - "IR", - "IS", - "IT", - "JM", - "JO", - "JP", - "KE", - "KG", - "KH", - "KI", - "KM", - "KN", - "KP", - "KR", - "KW", - "KY", - "KZ", - "LA", - "LB", - "LC", - "LI", - "LK", - "LR", - "LS", - "LT", - "LU", - "LV", - "LY", - "MA", - "MC", - "MD", - "ME", - "MF", - "MG", - "MH", - "MK", - "ML", - "MM", - "MN", - "MO", - "MP", - "MR", - "MS", - "MT", - "MU", - "MV", - "MW", - "MX", - "MY", - "MZ", - "NA", - "NC", - "NE", - "NG", - "NI", - "NL", - "NO", - "NP", - "NR", - "NU", - "NZ", - "OM", - "PA", - "PE", - "PF", - "PG", - "PH", - "PK", - "PL", - "PM", - "PN", - "PR", - "PT", - "PW", - "PY", - "QA", - "RO", - "RS", - "RU", - "RW", - "SA", - "SB", - "SC", - "SD", - "SE", - "SG", - "SH", - "SI", - "SK", - "SL", - "SM", - "SN", - "SO", - "SR", - "ST", - "SV", - "SY", - "SZ", - "TC", - "TD", - "TG", - "TH", - "TJ", - "TK", - "TL", - "TM", - "TN", - "TO", - "TR", - "TT", - "TV", - "TW", - "TZ", - "UA", - "UG", - "US", - "UY", - "UZ", - "VA", - "VC", - "VE", - "VG", - "VI", - "VN", - "VU", - "WF", - "WS", - "YE", - "YT", - "ZA", - "ZM", - "ZW" - ] - }, - "DNSSec":{"type":"string"}, - "DisableDomainAutoRenewRequest":{ - "type":"structure", - "required":["DomainName"], - "members":{ - "DomainName":{"shape":"DomainName"} - } - }, - "DisableDomainAutoRenewResponse":{ - "type":"structure", - "members":{ - } - }, - "DisableDomainTransferLockRequest":{ - "type":"structure", - "required":["DomainName"], - "members":{ - "DomainName":{ - "shape":"DomainName", - "documentation":"

The name of a domain.

Type: String

Default: None

Constraints: The domain name can contain only the letters a through z, the numbers 0 through 9, and hyphen (-). Internationalized Domain Names are not supported.

Required: Yes

" - } - }, - "documentation":"

The DisableDomainTransferLock request includes the following element.

" - }, - "DisableDomainTransferLockResponse":{ - "type":"structure", - "required":["OperationId"], - "members":{ - "OperationId":{ - "shape":"OperationId", - "documentation":"

Identifier for tracking the progress of the request. To use this ID to query the operation status, use GetOperationDetail.

Type: String

Default: None

Constraints: Maximum 255 characters.

" - } - }, - "documentation":"

The DisableDomainTransferLock response includes the following element.

" - }, - "DomainAuthCode":{ - "type":"string", - "max":1024, - "sensitive":true - }, - "DomainAvailability":{ - "type":"string", - "enum":[ - "AVAILABLE", - "AVAILABLE_RESERVED", - "AVAILABLE_PREORDER", - "UNAVAILABLE", - "UNAVAILABLE_PREMIUM", - "UNAVAILABLE_RESTRICTED", - "RESERVED" - ] - }, - "DomainLimitExceeded":{ - "type":"structure", - "members":{ - "message":{"shape":"ErrorMessage"} - }, - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

The number of domains has exceeded the allowed threshold for the account.

" - }, - "DomainName":{ - "type":"string", - "max":255, - "pattern":"[a-zA-Z0-9_\\-.]*" - }, - "DomainStatus":{"type":"string"}, - "DomainStatusList":{ - "type":"list", - "member":{"shape":"DomainStatus"} - }, - "DomainSummary":{ - "type":"structure", - "required":["DomainName"], - "members":{ - "DomainName":{ - "shape":"DomainName", - "documentation":"

The name of a domain.

Type: String

" - }, - "AutoRenew":{ - "shape":"Boolean", - "documentation":"

Indicates whether the domain is automatically renewed upon expiration.

Type: Boolean

Valid values: True | False

" - }, - "TransferLock":{ - "shape":"Boolean", - "documentation":"

Indicates whether a domain is locked from unauthorized transfer to another party.

Type: Boolean

Valid values: True | False

" - }, - "Expiry":{ - "shape":"Timestamp", - "documentation":"

Expiration date of the domain in Coordinated Universal Time (UTC).

Type: Long

" - } - } - }, - "DomainSummaryList":{ - "type":"list", - "member":{"shape":"DomainSummary"} - }, - "DuplicateRequest":{ - "type":"structure", - "members":{ - "message":{"shape":"ErrorMessage"} - }, - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

The request is already in progress for the domain.

" - }, - "DurationInYears":{ - "type":"integer", - "min":1, - "max":10 - }, - "Email":{ - "type":"string", - "max":254 - }, - "EnableDomainAutoRenewRequest":{ - "type":"structure", - "required":["DomainName"], - "members":{ - "DomainName":{"shape":"DomainName"} - } - }, - "EnableDomainAutoRenewResponse":{ - "type":"structure", - "members":{ - } - }, - "EnableDomainTransferLockRequest":{ - "type":"structure", - "required":["DomainName"], - "members":{ - "DomainName":{ - "shape":"DomainName", - "documentation":"

The name of a domain.

Type: String

Default: None

Constraints: The domain name can contain only the letters a through z, the numbers 0 through 9, and hyphen (-). Internationalized Domain Names are not supported.

Required: Yes

" - } - }, - "documentation":"

The EnableDomainTransferLock request includes the following element.

" - }, - "EnableDomainTransferLockResponse":{ - "type":"structure", - "required":["OperationId"], - "members":{ - "OperationId":{ - "shape":"OperationId", - "documentation":"

Identifier for tracking the progress of the request. To use this ID to query the operation status, use GetOperationDetail.

Type: String

Default: None

Constraints: Maximum 255 characters.

" - } - }, - "documentation":"

The EnableDomainTransferLock response includes the following elements.

" - }, - "ErrorMessage":{"type":"string"}, - "ExtraParam":{ - "type":"structure", - "required":[ - "Name", - "Value" - ], - "members":{ - "Name":{ - "shape":"ExtraParamName", - "documentation":"

Name of the additional parameter required by the top-level domain.

Type: String

Default: None

Valid values: DUNS_NUMBER | BRAND_NUMBER | BIRTH_DEPARTMENT | BIRTH_DATE_IN_YYYY_MM_DD | BIRTH_COUNTRY | BIRTH_CITY | DOCUMENT_NUMBER | AU_ID_NUMBER | AU_ID_TYPE | CA_LEGAL_TYPE | FI_BUSINESS_NUMBER | FI_ID_NUMBER | IT_PIN | RU_PASSPORT_DATA | SE_ID_NUMBER | SG_ID_NUMBER | VAT_NUMBER

Parent: ExtraParams

Required: Yes

" - }, - "Value":{ - "shape":"ExtraParamValue", - "documentation":"

Values corresponding to the additional parameter names required by some top-level domains.

Type: String

Default: None

Constraints: Maximum 2048 characters.

Parent: ExtraParams

Required: Yes

" - } - }, - "documentation":"

ExtraParam includes the following elements.

" - }, - "ExtraParamList":{ - "type":"list", - "member":{"shape":"ExtraParam"} - }, - "ExtraParamName":{ - "type":"string", - "enum":[ - "DUNS_NUMBER", - "BRAND_NUMBER", - "BIRTH_DEPARTMENT", - "BIRTH_DATE_IN_YYYY_MM_DD", - "BIRTH_COUNTRY", - "BIRTH_CITY", - "DOCUMENT_NUMBER", - "AU_ID_NUMBER", - "AU_ID_TYPE", - "CA_LEGAL_TYPE", - "FI_BUSINESS_NUMBER", - "FI_ID_NUMBER", - "IT_PIN", - "RU_PASSPORT_DATA", - "SE_ID_NUMBER", - "SG_ID_NUMBER", - "VAT_NUMBER" - ] - }, - "ExtraParamValue":{ - "type":"string", - "max":2048 - }, - "GetDomainDetailRequest":{ - "type":"structure", - "required":["DomainName"], - "members":{ - "DomainName":{ - "shape":"DomainName", - "documentation":"

The name of a domain.

Type: String

Default: None

Constraints: The domain name can contain only the letters a through z, the numbers 0 through 9, and hyphen (-). Internationalized Domain Names are not supported.

Required: Yes

" - } - }, - "documentation":"

The GetDomainDetail request includes the following element.

" - }, - "GetDomainDetailResponse":{ - "type":"structure", - "required":[ - "DomainName", - "Nameservers", - "AdminContact", - "RegistrantContact", - "TechContact" - ], - "members":{ - "DomainName":{ - "shape":"DomainName", - "documentation":"

The name of a domain.

Type: String

" - }, - "Nameservers":{ - "shape":"NameserverList", - "documentation":"

The name of the domain.

Type: String

" - }, - "AutoRenew":{ - "shape":"Boolean", - "documentation":"

Specifies whether the domain registration is set to renew automatically.

Type: Boolean

" - }, - "AdminContact":{ - "shape":"ContactDetail", - "documentation":"

Provides details about the domain administrative contact.

Type: Complex

Children: FirstName, MiddleName, LastName, ContactType, OrganizationName, AddressLine1, AddressLine2, City, State, CountryCode, ZipCode, PhoneNumber, Email, Fax, ExtraParams

" - }, - "RegistrantContact":{ - "shape":"ContactDetail", - "documentation":"

Provides details about the domain registrant.

Type: Complex

Children: FirstName, MiddleName, LastName, ContactType, OrganizationName, AddressLine1, AddressLine2, City, State, CountryCode, ZipCode, PhoneNumber, Email, Fax, ExtraParams

" - }, - "TechContact":{ - "shape":"ContactDetail", - "documentation":"

Provides details about the domain technical contact.

Type: Complex

Children: FirstName, MiddleName, LastName, ContactType, OrganizationName, AddressLine1, AddressLine2, City, State, CountryCode, ZipCode, PhoneNumber, Email, Fax, ExtraParams

" - }, - "AdminPrivacy":{ - "shape":"Boolean", - "documentation":"

Specifies whether contact information for the admin contact is concealed from WHOIS queries. If the value is true, WHOIS (\"who is\") queries will return contact information for our registrar partner, Gandi, instead of the contact information that you enter.

Type: Boolean

" - }, - "RegistrantPrivacy":{ - "shape":"Boolean", - "documentation":"

Specifies whether contact information for the registrant contact is concealed from WHOIS queries. If the value is true, WHOIS (\"who is\") queries will return contact information for our registrar partner, Gandi, instead of the contact information that you enter.

Type: Boolean

" - }, - "TechPrivacy":{ - "shape":"Boolean", - "documentation":"

Specifies whether contact information for the tech contact is concealed from WHOIS queries. If the value is true, WHOIS (\"who is\") queries will return contact information for our registrar partner, Gandi, instead of the contact information that you enter.

Type: Boolean

" - }, - "RegistrarName":{ - "shape":"RegistrarName", - "documentation":"

Name of the registrar of the domain as identified in the registry. Amazon Route 53 domains are registered by registrar Gandi. The value is \"GANDI SAS\".

Type: String

" - }, - "WhoIsServer":{ - "shape":"RegistrarWhoIsServer", - "documentation":"

The fully qualified name of the WHOIS server that can answer the WHOIS query for the domain.

Type: String

" - }, - "RegistrarUrl":{ - "shape":"RegistrarUrl", - "documentation":"

Web address of the registrar.

Type: String

" - }, - "AbuseContactEmail":{ - "shape":"Email", - "documentation":"

Email address to contact to report incorrect contact information for a domain, to report that the domain is being used to send spam, to report that someone is cybersquatting on a domain name, or report some other type of abuse.

Type: String

" - }, - "AbuseContactPhone":{ - "shape":"ContactNumber", - "documentation":"

Phone number for reporting abuse.

Type: String

" - }, - "RegistryDomainId":{ - "shape":"RegistryDomainId", - "documentation":"

Reserved for future use.

" - }, - "CreationDate":{ - "shape":"Timestamp", - "documentation":"

The date when the domain was created as found in the response to a WHOIS query. The date format is Unix time.

" - }, - "UpdatedDate":{ - "shape":"Timestamp", - "documentation":"

The last updated date of the domain as found in the response to a WHOIS query. The date format is Unix time.

" - }, - "ExpirationDate":{ - "shape":"Timestamp", - "documentation":"

The date when the registration for the domain is set to expire. The date format is Unix time.

" - }, - "Reseller":{ - "shape":"Reseller", - "documentation":"

Reseller of the domain. Domains registered or transferred using Amazon Route 53 domains will have \"Amazon\" as the reseller.

Type: String

" - }, - "DnsSec":{ - "shape":"DNSSec", - "documentation":"

Reserved for future use.

" - }, - "StatusList":{ - "shape":"DomainStatusList", - "documentation":"

An array of domain name status codes, also known as Extensible Provisioning Protocol (EPP) status codes.

ICANN, the organization that maintains a central database of domain names, has developed a set of domain name status codes that tell you the status of a variety of operations on a domain name, for example, registering a domain name, transferring a domain name to another registrar, renewing the registration for a domain name, and so on. All registrars use this same set of status codes.

For a current list of domain name status codes and an explanation of what each code means, go to the ICANN website and search for epp status codes. (Search on the ICANN website; web searches sometimes return an old version of the document.)

Type: Array of String

" - } - }, - "documentation":"

The GetDomainDetail response includes the following elements.

" - }, - "GetOperationDetailRequest":{ - "type":"structure", - "required":["OperationId"], - "members":{ - "OperationId":{ - "shape":"OperationId", - "documentation":"

The identifier for the operation for which you want to get the status. Amazon Route 53 returned the identifier in the response to the original request.

Type: String

Default: None

Required: Yes

" - } - }, - "documentation":"

The GetOperationDetail request includes the following element.

" - }, - "GetOperationDetailResponse":{ - "type":"structure", - "members":{ - "OperationId":{ - "shape":"OperationId", - "documentation":"

The identifier for the operation.

Type: String

" - }, - "Status":{ - "shape":"OperationStatus", - "documentation":"

The current status of the requested operation in the system.

Type: String

" - }, - "Message":{ - "shape":"ErrorMessage", - "documentation":"

Detailed information on the status including possible errors.

Type: String

" - }, - "DomainName":{ - "shape":"DomainName", - "documentation":"

The name of a domain.

Type: String

" - }, - "Type":{ - "shape":"OperationType", - "documentation":"

The type of operation that was requested.

Type: String

" - }, - "SubmittedDate":{ - "shape":"Timestamp", - "documentation":"

The date when the request was submitted.

" - } - }, - "documentation":"

The GetOperationDetail response includes the following elements.

" - }, - "GlueIp":{ - "type":"string", - "max":45 - }, - "GlueIpList":{ - "type":"list", - "member":{"shape":"GlueIp"} - }, - "HostName":{ - "type":"string", - "max":255, - "pattern":"[a-zA-Z0-9_\\-.]*" - }, - "InvalidInput":{ - "type":"structure", - "members":{ - "message":{"shape":"ErrorMessage"} - }, - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

The requested item is not acceptable. For example, for an OperationId it may refer to the ID of an operation that is already completed. For a domain name, it may not be a valid domain name or belong to the requester account.

" - }, - "LangCode":{ - "type":"string", - "max":3 - }, - "ListDomainsRequest":{ - "type":"structure", - "members":{ - "Marker":{ - "shape":"PageMarker", - "documentation":"

For an initial request for a list of domains, omit this element. If the number of domains that are associated with the current AWS account is greater than the value that you specified for MaxItems, you can use Marker to return additional domains. Get the value of NextPageMarker from the previous response, and submit another request that includes the value of NextPageMarker in the Marker element.

Type: String

Default: None

Constraints: The marker must match the value specified in the previous request.

Required: No

" - }, - "MaxItems":{ - "shape":"PageMaxItems", - "documentation":"

Number of domains to be returned.

Type: Integer

Default: 20

Constraints: A numeral between 1 and 100.

Required: No

" - } - }, - "documentation":"

The ListDomains request includes the following elements.

" - }, - "ListDomainsResponse":{ - "type":"structure", - "required":["Domains"], - "members":{ - "Domains":{ - "shape":"DomainSummaryList", - "documentation":"

A summary of domains.

Type: Complex type containing a list of domain summaries.

Children: AutoRenew, DomainName, Expiry, TransferLock

" - }, - "NextPageMarker":{ - "shape":"PageMarker", - "documentation":"

If there are more domains than you specified for MaxItems in the request, submit another request and include the value of NextPageMarker in the value of Marker.

Type: String

Parent: Operations

" - } - }, - "documentation":"

The ListDomains response includes the following elements.

" - }, - "ListOperationsRequest":{ - "type":"structure", - "members":{ - "Marker":{ - "shape":"PageMarker", - "documentation":"

For an initial request for a list of operations, omit this element. If the number of operations that are not yet complete is greater than the value that you specified for MaxItems, you can use Marker to return additional operations. Get the value of NextPageMarker from the previous response, and submit another request that includes the value of NextPageMarker in the Marker element.

Type: String

Default: None

Required: No

" - }, - "MaxItems":{ - "shape":"PageMaxItems", - "documentation":"

Number of domains to be returned.

Type: Integer

Default: 20

Constraints: A value between 1 and 100.

Required: No

" - } - }, - "documentation":"

The ListOperations request includes the following elements.

" - }, - "ListOperationsResponse":{ - "type":"structure", - "required":["Operations"], - "members":{ - "Operations":{ - "shape":"OperationSummaryList", - "documentation":"

Lists summaries of the operations.

Type: Complex type containing a list of operation summaries

Children: OperationId, Status, SubmittedDate, Type

" - }, - "NextPageMarker":{ - "shape":"PageMarker", - "documentation":"

If there are more operations than you specified for MaxItems in the request, submit another request and include the value of NextPageMarker in the value of Marker.

Type: String

Parent: Operations

" - } - }, - "documentation":"

The ListOperations response includes the following elements.

" - }, - "Nameserver":{ - "type":"structure", - "required":["Name"], - "members":{ - "Name":{ - "shape":"HostName", - "documentation":"

The fully qualified host name of the name server.

Type: String

Constraint: Maximum 255 characterss

Parent: Nameservers

" - }, - "GlueIps":{ - "shape":"GlueIpList", - "documentation":"

Glue IP address of a name server entry. Glue IP addresses are required only when the name of the name server is a subdomain of the domain. For example, if your domain is example.com and the name server for the domain is ns.example.com, you need to specify the IP address for ns.example.com.

Type: List of IP addresses.

Constraints: The list can contain only one IPv4 and one IPv6 address.

Parent: Nameservers

" - } - }, - "documentation":"

Nameserver includes the following elements.

" - }, - "NameserverList":{ - "type":"list", - "member":{"shape":"Nameserver"} - }, - "OperationId":{ - "type":"string", - "max":255 - }, - "OperationLimitExceeded":{ - "type":"structure", - "members":{ - "message":{"shape":"ErrorMessage"} - }, - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

The number of operations or jobs running exceeded the allowed threshold for the account.

" - }, - "OperationStatus":{ - "type":"string", - "enum":[ - "SUBMITTED", - "IN_PROGRESS", - "ERROR", - "SUCCESSFUL", - "FAILED" - ] - }, - "OperationSummary":{ - "type":"structure", - "required":[ - "OperationId", - "Status", - "Type", - "SubmittedDate" - ], - "members":{ - "OperationId":{ - "shape":"OperationId", - "documentation":"

Identifier returned to track the requested action.

Type: String

" - }, - "Status":{ - "shape":"OperationStatus", - "documentation":"

The current status of the requested operation in the system.

Type: String

" - }, - "Type":{ - "shape":"OperationType", - "documentation":"

Type of the action requested.

Type: String

Valid values: REGISTER_DOMAIN | DELETE_DOMAIN | TRANSFER_IN_DOMAIN | UPDATE_DOMAIN_CONTACT | UPDATE_NAMESERVER | CHANGE_PRIVACY_PROTECTION | DOMAIN_LOCK

" - }, - "SubmittedDate":{ - "shape":"Timestamp", - "documentation":"

The date when the request was submitted.

" - } - }, - "documentation":"

OperationSummary includes the following elements.

" - }, - "OperationSummaryList":{ - "type":"list", - "member":{"shape":"OperationSummary"} - }, - "OperationType":{ - "type":"string", - "enum":[ - "REGISTER_DOMAIN", - "DELETE_DOMAIN", - "TRANSFER_IN_DOMAIN", - "UPDATE_DOMAIN_CONTACT", - "UPDATE_NAMESERVER", - "CHANGE_PRIVACY_PROTECTION", - "DOMAIN_LOCK" - ] - }, - "PageMarker":{ - "type":"string", - "max":4096 - }, - "PageMaxItems":{ - "type":"integer", - "max":100 - }, - "RegisterDomainRequest":{ - "type":"structure", - "required":[ - "DomainName", - "DurationInYears", - "AdminContact", - "RegistrantContact", - "TechContact" - ], - "members":{ - "DomainName":{ - "shape":"DomainName", - "documentation":"

The name of a domain.

Type: String

Default: None

Constraints: The domain name can contain only the letters a through z, the numbers 0 through 9, and hyphen (-). Internationalized Domain Names are not supported.

Required: Yes

" - }, - "IdnLangCode":{ - "shape":"LangCode", - "documentation":"

Reserved for future use.

" - }, - "DurationInYears":{ - "shape":"DurationInYears", - "documentation":"

The number of years the domain will be registered. Domains are registered for a minimum of one year. The maximum period depends on the top-level domain.

Type: Integer

Default: 1

Valid values: Integer from 1 to 10

Required: Yes

" - }, - "AutoRenew":{ - "shape":"Boolean", - "documentation":"

Indicates whether the domain will be automatically renewed (true) or not (false). Autorenewal only takes effect after the account is charged.

Type: Boolean

Valid values: true | false

Default: true

Required: No

" - }, - "AdminContact":{ - "shape":"ContactDetail", - "documentation":"

Provides detailed contact information.

Type: Complex

Children: FirstName, MiddleName, LastName, ContactType, OrganizationName, AddressLine1, AddressLine2, City, State, CountryCode, ZipCode, PhoneNumber, Email, Fax, ExtraParams

Required: Yes

" - }, - "RegistrantContact":{ - "shape":"ContactDetail", - "documentation":"

Provides detailed contact information.

Type: Complex

Children: FirstName, MiddleName, LastName, ContactType, OrganizationName, AddressLine1, AddressLine2, City, State, CountryCode, ZipCode, PhoneNumber, Email, Fax, ExtraParams

Required: Yes

" - }, - "TechContact":{ - "shape":"ContactDetail", - "documentation":"

Provides detailed contact information.

Type: Complex

Children: FirstName, MiddleName, LastName, ContactType, OrganizationName, AddressLine1, AddressLine2, City, State, CountryCode, ZipCode, PhoneNumber, Email, Fax, ExtraParams

Required: Yes

" - }, - "PrivacyProtectAdminContact":{ - "shape":"Boolean", - "documentation":"

Whether you want to conceal contact information from WHOIS queries. If you specify true, WHOIS (\"who is\") queries will return contact information for our registrar partner, Gandi, instead of the contact information that you enter.

Type: Boolean

Default: true

Valid values: true | false

Required: No

" - }, - "PrivacyProtectRegistrantContact":{ - "shape":"Boolean", - "documentation":"

Whether you want to conceal contact information from WHOIS queries. If you specify true, WHOIS (\"who is\") queries will return contact information for our registrar partner, Gandi, instead of the contact information that you enter.

Type: Boolean

Default: true

Valid values: true | false

Required: No

" - }, - "PrivacyProtectTechContact":{ - "shape":"Boolean", - "documentation":"

Whether you want to conceal contact information from WHOIS queries. If you specify true, WHOIS (\"who is\") queries will return contact information for our registrar partner, Gandi, instead of the contact information that you enter.

Type: Boolean

Default: true

Valid values: true | false

Required: No

" - } - }, - "documentation":"

The RegisterDomain request includes the following elements.

" - }, - "RegisterDomainResponse":{ - "type":"structure", - "required":["OperationId"], - "members":{ - "OperationId":{ - "shape":"OperationId", - "documentation":"

Identifier for tracking the progress of the request. To use this ID to query the operation status, use GetOperationDetail.

Type: String

Default: None

Constraints: Maximum 255 characters.

" - } - }, - "documentation":"

The RegisterDomain response includes the following element.

" - }, - "RegistrarName":{"type":"string"}, - "RegistrarUrl":{"type":"string"}, - "RegistrarWhoIsServer":{"type":"string"}, - "RegistryDomainId":{"type":"string"}, - "Reseller":{"type":"string"}, - "RetrieveDomainAuthCodeRequest":{ - "type":"structure", - "required":["DomainName"], - "members":{ - "DomainName":{ - "shape":"DomainName", - "documentation":"

The name of a domain.

Type: String

Default: None

Constraints: The domain name can contain only the letters a through z, the numbers 0 through 9, and hyphen (-). Internationalized Domain Names are not supported.

Required: Yes

" - } - }, - "documentation":"

The RetrieveDomainAuthCode request includes the following element.

" - }, - "RetrieveDomainAuthCodeResponse":{ - "type":"structure", - "required":["AuthCode"], - "members":{ - "AuthCode":{ - "shape":"DomainAuthCode", - "documentation":"

The authorization code for the domain.

Type: String

" - } - }, - "documentation":"

The RetrieveDomainAuthCode response includes the following element.

" - }, - "State":{ - "type":"string", - "max":255 - }, - "TLDRulesViolation":{ - "type":"structure", - "members":{ - "message":{"shape":"ErrorMessage"} - }, - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

The top-level domain does not support this operation.

" - }, - "Timestamp":{"type":"timestamp"}, - "TransferDomainRequest":{ - "type":"structure", - "required":[ - "DomainName", - "DurationInYears", - "Nameservers", - "AdminContact", - "RegistrantContact", - "TechContact" - ], - "members":{ - "DomainName":{ - "shape":"DomainName", - "documentation":"

The name of a domain.

Type: String

Default: None

Constraints: The domain name can contain only the letters a through z, the numbers 0 through 9, and hyphen (-). Internationalized Domain Names are not supported.

Required: Yes

" - }, - "IdnLangCode":{ - "shape":"LangCode", - "documentation":"

Reserved for future use.

" - }, - "DurationInYears":{ - "shape":"DurationInYears", - "documentation":"

The number of years the domain will be registered. Domains are registered for a minimum of one year. The maximum period depends on the top-level domain.

Type: Integer

Default: 1

Valid values: Integer from 1 to 10

Required: Yes

" - }, - "Nameservers":{ - "shape":"NameserverList", - "documentation":"

Contains details for the host and glue IP addresses.

Type: Complex

Children: GlueIps, Name

" - }, - "AuthCode":{ - "shape":"DomainAuthCode", - "documentation":"

The authorization code for the domain. You get this value from the current registrar.

Type: String

Required: Yes

" - }, - "AutoRenew":{ - "shape":"Boolean", - "documentation":"

Indicates whether the domain will be automatically renewed (true) or not (false). Autorenewal only takes effect after the account is charged.

Type: Boolean

Valid values: true | false

Default: true

Required: No

" - }, - "AdminContact":{ - "shape":"ContactDetail", - "documentation":"

Provides detailed contact information.

Type: Complex

Children: FirstName, MiddleName, LastName, ContactType, OrganizationName, AddressLine1, AddressLine2, City, State, CountryCode, ZipCode, PhoneNumber, Email, Fax, ExtraParams

Required: Yes

" - }, - "RegistrantContact":{ - "shape":"ContactDetail", - "documentation":"

Provides detailed contact information.

Type: Complex

Children: FirstName, MiddleName, LastName, ContactType, OrganizationName, AddressLine1, AddressLine2, City, State, CountryCode, ZipCode, PhoneNumber, Email, Fax, ExtraParams

Required: Yes

" - }, - "TechContact":{ - "shape":"ContactDetail", - "documentation":"

Provides detailed contact information.

Type: Complex

Children: FirstName, MiddleName, LastName, ContactType, OrganizationName, AddressLine1, AddressLine2, City, State, CountryCode, ZipCode, PhoneNumber, Email, Fax, ExtraParams

Required: Yes

" - }, - "PrivacyProtectAdminContact":{ - "shape":"Boolean", - "documentation":"

Whether you want to conceal contact information from WHOIS queries. If you specify true, WHOIS (\"who is\") queries will return contact information for our registrar partner, Gandi, instead of the contact information that you enter.

Type: Boolean

Default: true

Valid values: true | false

Required: No

" - }, - "PrivacyProtectRegistrantContact":{ - "shape":"Boolean", - "documentation":"

Whether you want to conceal contact information from WHOIS queries. If you specify true, WHOIS (\"who is\") queries will return contact information for our registrar partner, Gandi, instead of the contact information that you enter.

Type: Boolean

Default: true

Valid values: true | false

Required: No

" - }, - "PrivacyProtectTechContact":{ - "shape":"Boolean", - "documentation":"

Whether you want to conceal contact information from WHOIS queries. If you specify true, WHOIS (\"who is\") queries will return contact information for our registrar partner, Gandi, instead of the contact information that you enter.

Type: Boolean

Default: true

Valid values: true | false

Required: No

" - } - }, - "documentation":"

The TransferDomain request includes the following elements.

" - }, - "TransferDomainResponse":{ - "type":"structure", - "required":["OperationId"], - "members":{ - "OperationId":{ - "shape":"OperationId", - "documentation":"

Identifier for tracking the progress of the request. To use this ID to query the operation status, use GetOperationDetail.

Type: String

Default: None

Constraints: Maximum 255 characters.

" - } - }, - "documentation":"

The TranserDomain response includes the following element.

" - }, - "UnsupportedTLD":{ - "type":"structure", - "members":{ - "message":{"shape":"ErrorMessage"} - }, - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

Amazon Route 53 does not support this top-level domain.

" - }, - "UpdateDomainContactPrivacyRequest":{ - "type":"structure", - "required":["DomainName"], - "members":{ - "DomainName":{ - "shape":"DomainName", - "documentation":"

The name of a domain.

Type: String

Default: None

Constraints: The domain name can contain only the letters a through z, the numbers 0 through 9, and hyphen (-). Internationalized Domain Names are not supported.

Required: Yes

" - }, - "AdminPrivacy":{ - "shape":"Boolean", - "documentation":"

Whether you want to conceal contact information from WHOIS queries. If you specify true, WHOIS (\"who is\") queries will return contact information for our registrar partner, Gandi, instead of the contact information that you enter.

Type: Boolean

Default: None

Valid values: true | false

Required: No

" - }, - "RegistrantPrivacy":{ - "shape":"Boolean", - "documentation":"

Whether you want to conceal contact information from WHOIS queries. If you specify true, WHOIS (\"who is\") queries will return contact information for our registrar partner, Gandi, instead of the contact information that you enter.

Type: Boolean

Default: None

Valid values: true | false

Required: No

" - }, - "TechPrivacy":{ - "shape":"Boolean", - "documentation":"

Whether you want to conceal contact information from WHOIS queries. If you specify true, WHOIS (\"who is\") queries will return contact information for our registrar partner, Gandi, instead of the contact information that you enter.

Type: Boolean

Default: None

Valid values: true | false

Required: No

" - } - }, - "documentation":"

The UpdateDomainContactPrivacy request includes the following elements.

" - }, - "UpdateDomainContactPrivacyResponse":{ - "type":"structure", - "required":["OperationId"], - "members":{ - "OperationId":{ - "shape":"OperationId", - "documentation":"

Identifier for tracking the progress of the request. To use this ID to query the operation status, use GetOperationDetail.

Type: String

Default: None

Constraints: Maximum 255 characters.

" - } - }, - "documentation":"

The UpdateDomainContactPrivacy response includes the following element.

" - }, - "UpdateDomainContactRequest":{ - "type":"structure", - "required":["DomainName"], - "members":{ - "DomainName":{ - "shape":"DomainName", - "documentation":"

The name of a domain.

Type: String

Default: None

Constraints: The domain name can contain only the letters a through z, the numbers 0 through 9, and hyphen (-). Internationalized Domain Names are not supported.

Required: Yes

" - }, - "AdminContact":{ - "shape":"ContactDetail", - "documentation":"

Provides detailed contact information.

Type: Complex

Children: FirstName, MiddleName, LastName, ContactType, OrganizationName, AddressLine1, AddressLine2, City, State, CountryCode, ZipCode, PhoneNumber, Email, Fax, ExtraParams

Required: Yes

" - }, - "RegistrantContact":{ - "shape":"ContactDetail", - "documentation":"

Provides detailed contact information.

Type: Complex

Children: FirstName, MiddleName, LastName, ContactType, OrganizationName, AddressLine1, AddressLine2, City, State, CountryCode, ZipCode, PhoneNumber, Email, Fax, ExtraParams

Required: Yes

" - }, - "TechContact":{ - "shape":"ContactDetail", - "documentation":"

Provides detailed contact information.

Type: Complex

Children: FirstName, MiddleName, LastName, ContactType, OrganizationName, AddressLine1, AddressLine2, City, State, CountryCode, ZipCode, PhoneNumber, Email, Fax, ExtraParams

Required: Yes

" - } - }, - "documentation":"

The UpdateDomainContact request includes the following elements.

" - }, - "UpdateDomainContactResponse":{ - "type":"structure", - "required":["OperationId"], - "members":{ - "OperationId":{ - "shape":"OperationId", - "documentation":"

Identifier for tracking the progress of the request. To use this ID to query the operation status, use GetOperationDetail.

Type: String

Default: None

Constraints: Maximum 255 characters.

" - } - }, - "documentation":"

The UpdateDomainContact response includes the following element.

" - }, - "UpdateDomainNameserversRequest":{ - "type":"structure", - "required":[ - "DomainName", - "Nameservers" - ], - "members":{ - "DomainName":{ - "shape":"DomainName", - "documentation":"

The name of a domain.

Type: String

Default: None

Constraints: The domain name can contain only the letters a through z, the numbers 0 through 9, and hyphen (-). Internationalized Domain Names are not supported.

Required: Yes

" - }, - "Nameservers":{ - "shape":"NameserverList", - "documentation":"

A list of new name servers for the domain.

Type: Complex

Children: Name, GlueIps

Required: Yes

" - } - }, - "documentation":"

The UpdateDomainNameserver request includes the following elements.

" - }, - "UpdateDomainNameserversResponse":{ - "type":"structure", - "required":["OperationId"], - "members":{ - "OperationId":{ - "shape":"OperationId", - "documentation":"

Identifier for tracking the progress of the request. To use this ID to query the operation status, use GetOperationDetail.

Type: String

Default: None

Constraints: Maximum 255 characters.

" - } - }, - "documentation":"

The UpdateDomainNameservers response includes the following element.

" - }, - "ZipCode":{ - "type":"string", - "max":255 - } - } -} diff --git a/src/github.com/getlantern/aws-sdk-go/apis/s3/2006-03-01.normal.json b/src/github.com/getlantern/aws-sdk-go/apis/s3/2006-03-01.normal.json deleted file mode 100644 index 46944e4781..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/apis/s3/2006-03-01.normal.json +++ /dev/null @@ -1,4332 +0,0 @@ -{ - "metadata":{ - "apiVersion":"2006-03-01", - "checksumFormat":"md5", - "endpointPrefix":"s3", - "globalEndpoint":"s3.amazonaws.com", - "serviceAbbreviation":"Amazon S3", - "serviceFullName":"Amazon Simple Storage Service", - "signatureVersion":"s3", - "timestampFormat":"rfc822", - "protocol":"rest-xml" - }, - "operations":{ - "AbortMultipartUpload":{ - "name":"AbortMultipartUpload", - "http":{ - "method":"DELETE", - "requestUri":"/{Bucket}/{Key+}" - }, - "input":{"shape":"AbortMultipartUploadRequest"}, - "errors":[ - { - "shape":"NoSuchUpload", - "exception":true, - "documentation":"The specified multipart upload does not exist." - } - ], - "documentation":"

Aborts a multipart upload.

To verify that all parts have been removed, so you don't get charged for the part storage, you should call the List Parts operation and ensure the parts list is empty.

", - "documentationUrl":"http://docs.amazonwebservices.com/AmazonS3/latest/API/mpUploadAbort.html" - }, - "CompleteMultipartUpload":{ - "name":"CompleteMultipartUpload", - "http":{ - "method":"POST", - "requestUri":"/{Bucket}/{Key+}" - }, - "input":{"shape":"CompleteMultipartUploadRequest"}, - "output":{"shape":"CompleteMultipartUploadOutput"}, - "documentation":"Completes a multipart upload by assembling previously uploaded parts.", - "documentationUrl":"http://docs.amazonwebservices.com/AmazonS3/latest/API/mpUploadComplete.html" - }, - "CopyObject":{ - "name":"CopyObject", - "http":{ - "method":"PUT", - "requestUri":"/{Bucket}/{Key+}" - }, - "input":{"shape":"CopyObjectRequest"}, - "output":{"shape":"CopyObjectOutput"}, - "errors":[ - { - "shape":"ObjectNotInActiveTierError", - "exception":true, - "documentation":"The source object of the COPY operation is not in the active tier and is only stored in Amazon Glacier." - } - ], - "documentation":"Creates a copy of an object that is already stored in Amazon S3.", - "documentationUrl":"http://docs.amazonwebservices.com/AmazonS3/latest/API/RESTObjectCOPY.html", - "alias":"PutObjectCopy" - }, - "CreateBucket":{ - "name":"CreateBucket", - "http":{ - "method":"PUT", - "requestUri":"/{Bucket}" - }, - "input":{"shape":"CreateBucketRequest"}, - "output":{"shape":"CreateBucketOutput"}, - "errors":[ - { - "shape":"BucketAlreadyExists", - "exception":true, - "documentation":"The requested bucket name is not available. The bucket namespace is shared by all users of the system. Please select a different name and try again." - } - ], - "documentation":"Creates a new bucket.", - "documentationUrl":"http://docs.amazonwebservices.com/AmazonS3/latest/API/RESTBucketPUT.html", - "alias":"PutBucket" - }, - "CreateMultipartUpload":{ - "name":"CreateMultipartUpload", - "http":{ - "method":"POST", - "requestUri":"/{Bucket}/{Key+}?uploads" - }, - "input":{"shape":"CreateMultipartUploadRequest"}, - "output":{"shape":"CreateMultipartUploadOutput"}, - "documentation":"

Initiates a multipart upload and returns an upload ID.

Note: After you initiate multipart upload and upload one or more parts, you must either complete or abort multipart upload in order to stop getting charged for storage of the uploaded parts. Only after you either complete or abort multipart upload, Amazon S3 frees up the parts storage and stops charging you for the parts storage.

", - "documentationUrl":"http://docs.amazonwebservices.com/AmazonS3/latest/API/mpUploadInitiate.html", - "alias":"InitiateMultipartUpload" - }, - "DeleteBucket":{ - "name":"DeleteBucket", - "http":{ - "method":"DELETE", - "requestUri":"/{Bucket}" - }, - "input":{"shape":"DeleteBucketRequest"}, - "documentation":"Deletes the bucket. All objects (including all object versions and Delete Markers) in the bucket must be deleted before the bucket itself can be deleted.", - "documentationUrl":"http://docs.amazonwebservices.com/AmazonS3/latest/API/RESTBucketDELETE.html" - }, - "DeleteBucketCors":{ - "name":"DeleteBucketCors", - "http":{ - "method":"DELETE", - "requestUri":"/{Bucket}?cors" - }, - "input":{"shape":"DeleteBucketCorsRequest"}, - "documentation":"Deletes the cors configuration information set for the bucket.", - "documentationUrl":"http://docs.amazonwebservices.com/AmazonS3/latest/API/RESTBucketDELETEcors.html" - }, - "DeleteBucketLifecycle":{ - "name":"DeleteBucketLifecycle", - "http":{ - "method":"DELETE", - "requestUri":"/{Bucket}?lifecycle" - }, - "input":{"shape":"DeleteBucketLifecycleRequest"}, - "documentation":"Deletes the lifecycle configuration from the bucket.", - "documentationUrl":"http://docs.amazonwebservices.com/AmazonS3/latest/API/RESTBucketDELETElifecycle.html" - }, - "DeleteBucketPolicy":{ - "name":"DeleteBucketPolicy", - "http":{ - "method":"DELETE", - "requestUri":"/{Bucket}?policy" - }, - "input":{"shape":"DeleteBucketPolicyRequest"}, - "documentation":"Deletes the policy from the bucket.", - "documentationUrl":"http://docs.amazonwebservices.com/AmazonS3/latest/API/RESTBucketDELETEpolicy.html" - }, - "DeleteBucketTagging":{ - "name":"DeleteBucketTagging", - "http":{ - "method":"DELETE", - "requestUri":"/{Bucket}?tagging" - }, - "input":{"shape":"DeleteBucketTaggingRequest"}, - "documentation":"Deletes the tags from the bucket.", - "documentationUrl":"http://docs.amazonwebservices.com/AmazonS3/latest/API/RESTBucketDELETEtagging.html" - }, - "DeleteBucketWebsite":{ - "name":"DeleteBucketWebsite", - "http":{ - "method":"DELETE", - "requestUri":"/{Bucket}?website" - }, - "input":{"shape":"DeleteBucketWebsiteRequest"}, - "documentation":"This operation removes the website configuration from the bucket.", - "documentationUrl":"http://docs.amazonwebservices.com/AmazonS3/latest/API/RESTBucketDELETEwebsite.html" - }, - "DeleteObject":{ - "name":"DeleteObject", - "http":{ - "method":"DELETE", - "requestUri":"/{Bucket}/{Key+}" - }, - "input":{"shape":"DeleteObjectRequest"}, - "output":{"shape":"DeleteObjectOutput"}, - "documentation":"Removes the null version (if there is one) of an object and inserts a delete marker, which becomes the latest version of the object. If there isn't a null version, Amazon S3 does not remove any objects.", - "documentationUrl":"http://docs.amazonwebservices.com/AmazonS3/latest/API/RESTObjectDELETE.html" - }, - "DeleteObjects":{ - "name":"DeleteObjects", - "http":{ - "method":"POST", - "requestUri":"/{Bucket}?delete" - }, - "input":{"shape":"DeleteObjectsRequest"}, - "output":{"shape":"DeleteObjectsOutput"}, - "documentation":"This operation enables you to delete multiple objects from a bucket using a single HTTP request. You may specify up to 1000 keys.", - "documentationUrl":"http://docs.amazonwebservices.com/AmazonS3/latest/API/multiobjectdeleteapi.html", - "alias":"DeleteMultipleObjects" - }, - "GetBucketAcl":{ - "name":"GetBucketAcl", - "http":{ - "method":"GET", - "requestUri":"/{Bucket}?acl" - }, - "input":{"shape":"GetBucketAclRequest"}, - "output":{"shape":"GetBucketAclOutput"}, - "documentation":"Gets the access control policy for the bucket.", - "documentationUrl":"http://docs.amazonwebservices.com/AmazonS3/latest/API/RESTBucketGETacl.html" - }, - "GetBucketCors":{ - "name":"GetBucketCors", - "http":{ - "method":"GET", - "requestUri":"/{Bucket}?cors" - }, - "input":{"shape":"GetBucketCorsRequest"}, - "output":{"shape":"GetBucketCorsOutput"}, - "documentation":"Returns the cors configuration for the bucket.", - "documentationUrl":"http://docs.amazonwebservices.com/AmazonS3/latest/API/RESTBucketGETcors.html" - }, - "GetBucketLifecycle":{ - "name":"GetBucketLifecycle", - "http":{ - "method":"GET", - "requestUri":"/{Bucket}?lifecycle" - }, - "input":{"shape":"GetBucketLifecycleRequest"}, - "output":{"shape":"GetBucketLifecycleOutput"}, - "documentation":"Returns the lifecycle configuration information set on the bucket.", - "documentationUrl":"http://docs.amazonwebservices.com/AmazonS3/latest/API/RESTBucketGETlifecycle.html" - }, - "GetBucketLocation":{ - "name":"GetBucketLocation", - "http":{ - "method":"GET", - "requestUri":"/{Bucket}?location" - }, - "input":{"shape":"GetBucketLocationRequest"}, - "output":{"shape":"GetBucketLocationOutput"}, - "documentation":"Returns the region the bucket resides in.", - "documentationUrl":"http://docs.amazonwebservices.com/AmazonS3/latest/API/RESTBucketGETlocation.html" - }, - "GetBucketLogging":{ - "name":"GetBucketLogging", - "http":{ - "method":"GET", - "requestUri":"/{Bucket}?logging" - }, - "input":{"shape":"GetBucketLoggingRequest"}, - "output":{"shape":"GetBucketLoggingOutput"}, - "documentation":"Returns the logging status of a bucket and the permissions users have to view and modify that status. To use GET, you must be the bucket owner.", - "documentationUrl":"http://docs.amazonwebservices.com/AmazonS3/latest/API/RESTBucketGETlogging.html" - }, - "GetBucketNotification":{ - "name":"GetBucketNotification", - "http":{ - "method":"GET", - "requestUri":"/{Bucket}?notification" - }, - "input":{"shape":"GetBucketNotificationRequest"}, - "output":{"shape":"GetBucketNotificationOutput"}, - "documentation":"Return the notification configuration of a bucket.", - "documentationUrl":"http://docs.amazonwebservices.com/AmazonS3/latest/API/RESTBucketGETnotification.html" - }, - "GetBucketPolicy":{ - "name":"GetBucketPolicy", - "http":{ - "method":"GET", - "requestUri":"/{Bucket}?policy" - }, - "input":{"shape":"GetBucketPolicyRequest"}, - "output":{"shape":"GetBucketPolicyOutput"}, - "documentation":"Returns the policy of a specified bucket.", - "documentationUrl":"http://docs.amazonwebservices.com/AmazonS3/latest/API/RESTBucketGETpolicy.html" - }, - "GetBucketRequestPayment":{ - "name":"GetBucketRequestPayment", - "http":{ - "method":"GET", - "requestUri":"/{Bucket}?requestPayment" - }, - "input":{"shape":"GetBucketRequestPaymentRequest"}, - "output":{"shape":"GetBucketRequestPaymentOutput"}, - "documentation":"Returns the request payment configuration of a bucket.", - "documentationUrl":"http://docs.amazonwebservices.com/AmazonS3/latest/API/RESTrequestPaymentGET.html" - }, - "GetBucketTagging":{ - "name":"GetBucketTagging", - "http":{ - "method":"GET", - "requestUri":"/{Bucket}?tagging" - }, - "input":{"shape":"GetBucketTaggingRequest"}, - "output":{"shape":"GetBucketTaggingOutput"}, - "documentation":"Returns the tag set associated with the bucket.", - "documentationUrl":"http://docs.amazonwebservices.com/AmazonS3/latest/API/RESTBucketGETtagging.html" - }, - "GetBucketVersioning":{ - "name":"GetBucketVersioning", - "http":{ - "method":"GET", - "requestUri":"/{Bucket}?versioning" - }, - "input":{"shape":"GetBucketVersioningRequest"}, - "output":{"shape":"GetBucketVersioningOutput"}, - "documentation":"Returns the versioning state of a bucket.", - "documentationUrl":"http://docs.amazonwebservices.com/AmazonS3/latest/API/RESTBucketGETversioningStatus.html" - }, - "GetBucketWebsite":{ - "name":"GetBucketWebsite", - "http":{ - "method":"GET", - "requestUri":"/{Bucket}?website" - }, - "input":{"shape":"GetBucketWebsiteRequest"}, - "output":{"shape":"GetBucketWebsiteOutput"}, - "documentation":"Returns the website configuration for a bucket.", - "documentationUrl":"http://docs.amazonwebservices.com/AmazonS3/latest/API/RESTBucketGETwebsite.html" - }, - "GetObject":{ - "name":"GetObject", - "http":{ - "method":"GET", - "requestUri":"/{Bucket}/{Key+}" - }, - "input":{"shape":"GetObjectRequest"}, - "output":{"shape":"GetObjectOutput"}, - "errors":[ - { - "shape":"NoSuchKey", - "exception":true, - "documentation":"The specified key does not exist." - } - ], - "documentation":"Retrieves objects from Amazon S3.", - "documentationUrl":"http://docs.amazonwebservices.com/AmazonS3/latest/API/RESTObjectGET.html" - }, - "GetObjectAcl":{ - "name":"GetObjectAcl", - "http":{ - "method":"GET", - "requestUri":"/{Bucket}/{Key+}?acl" - }, - "input":{"shape":"GetObjectAclRequest"}, - "output":{"shape":"GetObjectAclOutput"}, - "errors":[ - { - "shape":"NoSuchKey", - "exception":true, - "documentation":"The specified key does not exist." - } - ], - "documentation":"Returns the access control list (ACL) of an object.", - "documentationUrl":"http://docs.amazonwebservices.com/AmazonS3/latest/API/RESTObjectGETacl.html" - }, - "GetObjectTorrent":{ - "name":"GetObjectTorrent", - "http":{ - "method":"GET", - "requestUri":"/{Bucket}/{Key+}?torrent" - }, - "input":{"shape":"GetObjectTorrentRequest"}, - "output":{"shape":"GetObjectTorrentOutput"}, - "documentation":"Return torrent files from a bucket.", - "documentationUrl":"http://docs.amazonwebservices.com/AmazonS3/latest/API/RESTObjectGETtorrent.html" - }, - "HeadBucket":{ - "name":"HeadBucket", - "http":{ - "method":"HEAD", - "requestUri":"/{Bucket}" - }, - "input":{"shape":"HeadBucketRequest"}, - "errors":[ - { - "shape":"NoSuchBucket", - "exception":true, - "documentation":"The specified bucket does not exist." - } - ], - "documentation":"This operation is useful to determine if a bucket exists and you have permission to access it.", - "documentationUrl":"http://docs.amazonwebservices.com/AmazonS3/latest/API/RESTBucketHEAD.html" - }, - "HeadObject":{ - "name":"HeadObject", - "http":{ - "method":"HEAD", - "requestUri":"/{Bucket}/{Key+}" - }, - "input":{"shape":"HeadObjectRequest"}, - "output":{"shape":"HeadObjectOutput"}, - "errors":[ - { - "shape":"NoSuchKey", - "exception":true, - "documentation":"The specified key does not exist." - } - ], - "documentation":"The HEAD operation retrieves metadata from an object without returning the object itself. This operation is useful if you're only interested in an object's metadata. To use HEAD, you must have READ access to the object.", - "documentationUrl":"http://docs.amazonwebservices.com/AmazonS3/latest/API/RESTObjectHEAD.html" - }, - "ListBuckets":{ - "name":"ListBuckets", - "http":{ - "method":"GET", - "requestUri":"/" - }, - "output":{"shape":"ListBucketsOutput"}, - "documentation":"Returns a list of all buckets owned by the authenticated sender of the request.", - "documentationUrl":"http://docs.amazonwebservices.com/AmazonS3/latest/API/RESTServiceGET.html", - "alias":"GetService" - }, - "ListMultipartUploads":{ - "name":"ListMultipartUploads", - "http":{ - "method":"GET", - "requestUri":"/{Bucket}?uploads" - }, - "input":{"shape":"ListMultipartUploadsRequest"}, - "output":{"shape":"ListMultipartUploadsOutput"}, - "documentation":"This operation lists in-progress multipart uploads.", - "documentationUrl":"http://docs.amazonwebservices.com/AmazonS3/latest/API/mpUploadListMPUpload.html" - }, - "ListObjectVersions":{ - "name":"ListObjectVersions", - "http":{ - "method":"GET", - "requestUri":"/{Bucket}?versions" - }, - "input":{"shape":"ListObjectVersionsRequest"}, - "output":{"shape":"ListObjectVersionsOutput"}, - "documentation":"Returns metadata about all of the versions of objects in a bucket.", - "documentationUrl":"http://docs.amazonwebservices.com/AmazonS3/latest/API/RESTBucketGETVersion.html", - "alias":"GetBucketObjectVersions" - }, - "ListObjects":{ - "name":"ListObjects", - "http":{ - "method":"GET", - "requestUri":"/{Bucket}" - }, - "input":{"shape":"ListObjectsRequest"}, - "output":{"shape":"ListObjectsOutput"}, - "errors":[ - { - "shape":"NoSuchBucket", - "exception":true, - "documentation":"The specified bucket does not exist." - } - ], - "documentation":"Returns some or all (up to 1000) of the objects in a bucket. You can use the request parameters as selection criteria to return a subset of the objects in a bucket.", - "documentationUrl":"http://docs.amazonwebservices.com/AmazonS3/latest/API/RESTBucketGET.html", - "alias":"GetBucket" - }, - "ListParts":{ - "name":"ListParts", - "http":{ - "method":"GET", - "requestUri":"/{Bucket}/{Key+}" - }, - "input":{"shape":"ListPartsRequest"}, - "output":{"shape":"ListPartsOutput"}, - "documentation":"Lists the parts that have been uploaded for a specific multipart upload.", - "documentationUrl":"http://docs.amazonwebservices.com/AmazonS3/latest/API/mpUploadListParts.html" - }, - "PutBucketAcl":{ - "name":"PutBucketAcl", - "http":{ - "method":"PUT", - "requestUri":"/{Bucket}?acl" - }, - "input":{"shape":"PutBucketAclRequest"}, - "documentation":"Sets the permissions on a bucket using access control lists (ACL).", - "documentationUrl":"http://docs.amazonwebservices.com/AmazonS3/latest/API/RESTBucketPUTacl.html" - }, - "PutBucketCors":{ - "name":"PutBucketCors", - "http":{ - "method":"PUT", - "requestUri":"/{Bucket}?cors" - }, - "input":{"shape":"PutBucketCorsRequest"}, - "documentation":"Sets the cors configuration for a bucket.", - "documentationUrl":"http://docs.amazonwebservices.com/AmazonS3/latest/API/RESTBucketPUTcors.html" - }, - "PutBucketLifecycle":{ - "name":"PutBucketLifecycle", - "http":{ - "method":"PUT", - "requestUri":"/{Bucket}?lifecycle" - }, - "input":{"shape":"PutBucketLifecycleRequest"}, - "documentation":"Sets lifecycle configuration for your bucket. If a lifecycle configuration exists, it replaces it.", - "documentationUrl":"http://docs.amazonwebservices.com/AmazonS3/latest/API/RESTBucketPUTlifecycle.html" - }, - "PutBucketLogging":{ - "name":"PutBucketLogging", - "http":{ - "method":"PUT", - "requestUri":"/{Bucket}?logging" - }, - "input":{"shape":"PutBucketLoggingRequest"}, - "documentation":"Set the logging parameters for a bucket and to specify permissions for who can view and modify the logging parameters. To set the logging status of a bucket, you must be the bucket owner.", - "documentationUrl":"http://docs.amazonwebservices.com/AmazonS3/latest/API/RESTBucketPUTlogging.html" - }, - "PutBucketNotification":{ - "name":"PutBucketNotification", - "http":{ - "method":"PUT", - "requestUri":"/{Bucket}?notification" - }, - "input":{"shape":"PutBucketNotificationRequest"}, - "documentation":"Enables notifications of specified events for a bucket.", - "documentationUrl":"http://docs.amazonwebservices.com/AmazonS3/latest/API/RESTBucketPUTnotification.html" - }, - "PutBucketPolicy":{ - "name":"PutBucketPolicy", - "http":{ - "method":"PUT", - "requestUri":"/{Bucket}?policy" - }, - "input":{"shape":"PutBucketPolicyRequest"}, - "documentation":"Replaces a policy on a bucket. If the bucket already has a policy, the one in this request completely replaces it.", - "documentationUrl":"http://docs.amazonwebservices.com/AmazonS3/latest/API/RESTBucketPUTpolicy.html" - }, - "PutBucketRequestPayment":{ - "name":"PutBucketRequestPayment", - "http":{ - "method":"PUT", - "requestUri":"/{Bucket}?requestPayment" - }, - "input":{"shape":"PutBucketRequestPaymentRequest"}, - "documentation":"Sets the request payment configuration for a bucket. By default, the bucket owner pays for downloads from the bucket. This configuration parameter enables the bucket owner (only) to specify that the person requesting the download will be charged for the download.", - "documentationUrl":"http://docs.amazonwebservices.com/AmazonS3/latest/API/RESTrequestPaymentPUT.html" - }, - "PutBucketTagging":{ - "name":"PutBucketTagging", - "http":{ - "method":"PUT", - "requestUri":"/{Bucket}?tagging" - }, - "input":{"shape":"PutBucketTaggingRequest"}, - "documentation":"Sets the tags for a bucket.", - "documentationUrl":"http://docs.amazonwebservices.com/AmazonS3/latest/API/RESTBucketPUTtagging.html" - }, - "PutBucketVersioning":{ - "name":"PutBucketVersioning", - "http":{ - "method":"PUT", - "requestUri":"/{Bucket}?versioning" - }, - "input":{"shape":"PutBucketVersioningRequest"}, - "documentation":"Sets the versioning state of an existing bucket. To set the versioning state, you must be the bucket owner.", - "documentationUrl":"http://docs.amazonwebservices.com/AmazonS3/latest/API/RESTBucketPUTVersioningStatus.html" - }, - "PutBucketWebsite":{ - "name":"PutBucketWebsite", - "http":{ - "method":"PUT", - "requestUri":"/{Bucket}?website" - }, - "input":{"shape":"PutBucketWebsiteRequest"}, - "documentation":"Set the website configuration for a bucket.", - "documentationUrl":"http://docs.amazonwebservices.com/AmazonS3/latest/API/RESTBucketPUTwebsite.html" - }, - "PutObject":{ - "name":"PutObject", - "http":{ - "method":"PUT", - "requestUri":"/{Bucket}/{Key+}" - }, - "input":{"shape":"PutObjectRequest"}, - "output":{"shape":"PutObjectOutput"}, - "documentation":"Adds an object to a bucket.", - "documentationUrl":"http://docs.amazonwebservices.com/AmazonS3/latest/API/RESTObjectPUT.html" - }, - "PutObjectAcl":{ - "name":"PutObjectAcl", - "http":{ - "method":"PUT", - "requestUri":"/{Bucket}/{Key+}?acl" - }, - "input":{"shape":"PutObjectAclRequest"}, - "errors":[ - { - "shape":"NoSuchKey", - "exception":true, - "documentation":"The specified key does not exist." - } - ], - "documentation":"uses the acl subresource to set the access control list (ACL) permissions for an object that already exists in a bucket", - "documentationUrl":"http://docs.amazonwebservices.com/AmazonS3/latest/API/RESTObjectPUTacl.html" - }, - "RestoreObject":{ - "name":"RestoreObject", - "http":{ - "method":"POST", - "requestUri":"/{Bucket}/{Key+}?restore" - }, - "input":{"shape":"RestoreObjectRequest"}, - "errors":[ - { - "shape":"ObjectAlreadyInActiveTierError", - "exception":true, - "documentation":"This operation is not allowed against this storage tier" - } - ], - "documentation":"Restores an archived copy of an object back into Amazon S3", - "documentationUrl":"http://docs.amazonwebservices.com/AmazonS3/latest/API/RESTObjectRestore.html", - "alias":"PostObjectRestore" - }, - "UploadPart":{ - "name":"UploadPart", - "http":{ - "method":"PUT", - "requestUri":"/{Bucket}/{Key+}" - }, - "input":{"shape":"UploadPartRequest"}, - "output":{"shape":"UploadPartOutput"}, - "documentation":"

Uploads a part in a multipart upload.

Note: After you initiate multipart upload and upload one or more parts, you must either complete or abort multipart upload in order to stop getting charged for storage of the uploaded parts. Only after you either complete or abort multipart upload, Amazon S3 frees up the parts storage and stops charging you for the parts storage.

", - "documentationUrl":"http://docs.amazonwebservices.com/AmazonS3/latest/API/mpUploadUploadPart.html" - }, - "UploadPartCopy":{ - "name":"UploadPartCopy", - "http":{ - "method":"PUT", - "requestUri":"/{Bucket}/{Key+}" - }, - "input":{"shape":"UploadPartCopyRequest"}, - "output":{"shape":"UploadPartCopyOutput"}, - "documentation":"Uploads a part by copying data from an existing object as data source.", - "documentationUrl":"http://docs.amazonwebservices.com/AmazonS3/latest/API/mpUploadUploadPartCopy.html" - } - }, - "shapes":{ - "AbortMultipartUploadRequest":{ - "type":"structure", - "required":[ - "Bucket", - "Key", - "UploadId" - ], - "members":{ - "Bucket":{ - "shape":"BucketName", - "location":"uri", - "locationName":"Bucket" - }, - "Key":{ - "shape":"ObjectKey", - "location":"uri", - "locationName":"Key" - }, - "UploadId":{ - "shape":"MultipartUploadId", - "location":"querystring", - "locationName":"uploadId" - } - } - }, - "AcceptRanges":{"type":"string"}, - "AccessControlPolicy":{ - "type":"structure", - "members":{ - "Grants":{ - "shape":"Grants", - "documentation":"A list of grants.", - "locationName":"AccessControlList" - }, - "Owner":{"shape":"Owner"} - } - }, - "AllowedHeader":{"type":"string"}, - "AllowedHeaders":{ - "type":"list", - "member":{"shape":"AllowedHeader"}, - "flattened":true - }, - "AllowedMethod":{"type":"string"}, - "AllowedMethods":{ - "type":"list", - "member":{"shape":"AllowedMethod"}, - "flattened":true - }, - "AllowedOrigin":{"type":"string"}, - "AllowedOrigins":{ - "type":"list", - "member":{"shape":"AllowedOrigin"}, - "flattened":true - }, - "Body":{"type":"blob"}, - "Bucket":{ - "type":"structure", - "members":{ - "Name":{ - "shape":"BucketName", - "documentation":"The name of the bucket." - }, - "CreationDate":{ - "shape":"CreationDate", - "documentation":"Date the bucket was created." - } - } - }, - "BucketAlreadyExists":{ - "type":"structure", - "members":{ - }, - "exception":true, - "documentation":"The requested bucket name is not available. The bucket namespace is shared by all users of the system. Please select a different name and try again." - }, - "BucketCannedACL":{ - "type":"string", - "enum":[ - "private", - "public-read", - "public-read-write", - "authenticated-read" - ] - }, - "BucketLocationConstraint":{ - "type":"string", - "enum":[ - "EU", - "eu-west-1", - "us-west-1", - "us-west-2", - "ap-southeast-1", - "ap-southeast-2", - "ap-northeast-1", - "sa-east-1", - "", - "cn-north-1", - "eu-central-1" - ] - }, - "BucketLoggingStatus":{ - "type":"structure", - "members":{ - "LoggingEnabled":{"shape":"LoggingEnabled"} - } - }, - "BucketLogsPermission":{ - "type":"string", - "enum":[ - "FULL_CONTROL", - "READ", - "WRITE" - ] - }, - "BucketName":{"type":"string"}, - "BucketVersioningStatus":{ - "type":"string", - "enum":[ - "Enabled", - "Suspended" - ] - }, - "Buckets":{ - "type":"list", - "member":{ - "shape":"Bucket", - "locationName":"Bucket" - } - }, - "CORSConfiguration":{ - "type":"structure", - "members":{ - "CORSRules":{ - "shape":"CORSRules", - "locationName":"CORSRule" - } - } - }, - "CORSRule":{ - "type":"structure", - "members":{ - "AllowedHeaders":{ - "shape":"AllowedHeaders", - "documentation":"Specifies which headers are allowed in a pre-flight OPTIONS request.", - "locationName":"AllowedHeader" - }, - "AllowedMethods":{ - "shape":"AllowedMethods", - "documentation":"Identifies HTTP methods that the domain/origin specified in the rule is allowed to execute.", - "locationName":"AllowedMethod" - }, - "AllowedOrigins":{ - "shape":"AllowedOrigins", - "documentation":"One or more origins you want customers to be able to access the bucket from.", - "locationName":"AllowedOrigin" - }, - "ExposeHeaders":{ - "shape":"ExposeHeaders", - "documentation":"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).", - "locationName":"ExposeHeader" - }, - "MaxAgeSeconds":{ - "shape":"MaxAgeSeconds", - "documentation":"The time in seconds that your browser is to cache the preflight response for the specified resource." - } - } - }, - "CORSRules":{ - "type":"list", - "member":{"shape":"CORSRule"}, - "flattened":true - }, - "CacheControl":{"type":"string"}, - "CloudFunction":{"type":"string"}, - "CloudFunctionConfiguration":{ - "type":"structure", - "members":{ - "Id":{"shape":"NotificationId"}, - "Event":{ - "shape":"Event", - "deprecated":true - }, - "Events":{ - "shape":"Events", - "locationName":"Event" - }, - "CloudFunction":{"shape":"CloudFunction"}, - "InvocationRole":{"shape":"CloudFunctionInvocationRole"} - } - }, - "CloudFunctionInvocationRole":{"type":"string"}, - "Code":{"type":"string"}, - "CommonPrefix":{ - "type":"structure", - "members":{ - "Prefix":{"shape":"Prefix"} - } - }, - "CommonPrefixList":{ - "type":"list", - "member":{"shape":"CommonPrefix"}, - "flattened":true - }, - "CompleteMultipartUploadOutput":{ - "type":"structure", - "members":{ - "Location":{"shape":"Location"}, - "Bucket":{"shape":"BucketName"}, - "Key":{"shape":"ObjectKey"}, - "Expiration":{ - "shape":"Expiration", - "location":"header", - "locationName":"x-amz-expiration", - "documentation":"If the object expiration is configured, this will contain the expiration date (expiry-date) and rule ID (rule-id). The value of rule-id is URL encoded." - }, - "ETag":{ - "shape":"ETag", - "documentation":"Entity tag of the object." - }, - "ServerSideEncryption":{ - "shape":"ServerSideEncryption", - "location":"header", - "locationName":"x-amz-server-side-encryption", - "documentation":"The Server-side encryption algorithm used when storing this object in S3 (e.g., AES256, aws:kms)." - }, - "VersionId":{ - "shape":"ObjectVersionId", - "location":"header", - "locationName":"x-amz-version-id", - "documentation":"Version of the object." - }, - "SSEKMSKeyId":{ - "shape":"SSEKMSKeyId", - "location":"header", - "locationName":"x-amz-server-side-encryption-aws-kms-key-id", - "documentation":"If present, specifies the ID of the AWS Key Management Service (KMS) master encryption key that was used for the object." - } - } - }, - "CompleteMultipartUploadRequest":{ - "type":"structure", - "required":[ - "Bucket", - "Key", - "UploadId" - ], - "members":{ - "Bucket":{ - "shape":"BucketName", - "location":"uri", - "locationName":"Bucket" - }, - "Key":{ - "shape":"ObjectKey", - "location":"uri", - "locationName":"Key" - }, - "MultipartUpload":{ - "shape":"CompletedMultipartUpload", - "locationName":"CompleteMultipartUpload", - "xmlNamespace":{"uri":"http://s3.amazonaws.com/doc/2006-03-01/"} - }, - "UploadId":{ - "shape":"MultipartUploadId", - "location":"querystring", - "locationName":"uploadId" - } - }, - "payload":"MultipartUpload" - }, - "CompletedMultipartUpload":{ - "type":"structure", - "members":{ - "Parts":{ - "shape":"CompletedPartList", - "locationName":"Part" - } - } - }, - "CompletedPart":{ - "type":"structure", - "members":{ - "ETag":{ - "shape":"ETag", - "documentation":"Entity tag returned when the part was uploaded." - }, - "PartNumber":{ - "shape":"PartNumber", - "documentation":"Part number that identifies the part." - } - } - }, - "CompletedPartList":{ - "type":"list", - "member":{"shape":"CompletedPart"}, - "flattened":true - }, - "Condition":{ - "type":"structure", - "members":{ - "HttpErrorCodeReturnedEquals":{ - "shape":"HttpErrorCodeReturnedEquals", - "documentation":"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." - }, - "KeyPrefixEquals":{ - "shape":"KeyPrefixEquals", - "documentation":"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." - } - } - }, - "ContentDisposition":{"type":"string"}, - "ContentEncoding":{"type":"string"}, - "ContentLanguage":{"type":"string"}, - "ContentLength":{"type":"integer"}, - "ContentMD5":{"type":"string"}, - "ContentType":{"type":"string"}, - "CopyObjectOutput":{ - "type":"structure", - "members":{ - "CopyObjectResult":{"shape":"CopyObjectResult"}, - "Expiration":{ - "shape":"Expiration", - "location":"header", - "locationName":"x-amz-expiration", - "documentation":"If the object expiration is configured, the response includes this header." - }, - "CopySourceVersionId":{ - "shape":"CopySourceVersionId", - "location":"header", - "locationName":"x-amz-copy-source-version-id" - }, - "ServerSideEncryption":{ - "shape":"ServerSideEncryption", - "location":"header", - "locationName":"x-amz-server-side-encryption", - "documentation":"The Server-side encryption algorithm used when storing this object in S3 (e.g., AES256, aws:kms)." - }, - "SSECustomerAlgorithm":{ - "shape":"SSECustomerAlgorithm", - "location":"header", - "locationName":"x-amz-server-side-encryption-customer-algorithm", - "documentation":"If server-side encryption with a customer-provided encryption key was requested, the response will include this header confirming the encryption algorithm used." - }, - "SSECustomerKeyMD5":{ - "shape":"SSECustomerKeyMD5", - "location":"header", - "locationName":"x-amz-server-side-encryption-customer-key-MD5", - "documentation":"If server-side encryption with a customer-provided encryption key was requested, the response will include this header to provide round trip message integrity verification of the customer-provided encryption key." - }, - "SSEKMSKeyId":{ - "shape":"SSEKMSKeyId", - "location":"header", - "locationName":"x-amz-server-side-encryption-aws-kms-key-id", - "documentation":"If present, specifies the ID of the AWS Key Management Service (KMS) master encryption key that was used for the object." - } - }, - "payload":"CopyObjectResult" - }, - "CopyObjectRequest":{ - "type":"structure", - "required":[ - "Bucket", - "CopySource", - "Key" - ], - "members":{ - "ACL":{ - "shape":"ObjectCannedACL", - "location":"header", - "locationName":"x-amz-acl", - "documentation":"The canned ACL to apply to the object." - }, - "Bucket":{ - "shape":"BucketName", - "location":"uri", - "locationName":"Bucket" - }, - "CacheControl":{ - "shape":"CacheControl", - "location":"header", - "locationName":"Cache-Control", - "documentation":"Specifies caching behavior along the request/reply chain." - }, - "ContentDisposition":{ - "shape":"ContentDisposition", - "location":"header", - "locationName":"Content-Disposition", - "documentation":"Specifies presentational information for the object." - }, - "ContentEncoding":{ - "shape":"ContentEncoding", - "location":"header", - "locationName":"Content-Encoding", - "documentation":"Specifies what content encodings have been applied to the object and thus what decoding mechanisms must be applied to obtain the media-type referenced by the Content-Type header field." - }, - "ContentLanguage":{ - "shape":"ContentLanguage", - "location":"header", - "locationName":"Content-Language", - "documentation":"The language the content is in." - }, - "ContentType":{ - "shape":"ContentType", - "location":"header", - "locationName":"Content-Type", - "documentation":"A standard MIME type describing the format of the object data." - }, - "CopySource":{ - "shape":"CopySource", - "location":"header", - "locationName":"x-amz-copy-source", - "documentation":"The name of the source bucket and key name of the source object, separated by a slash (/). Must be URL-encoded." - }, - "CopySourceIfMatch":{ - "shape":"CopySourceIfMatch", - "location":"header", - "locationName":"x-amz-copy-source-if-match", - "documentation":"Copies the object if its entity tag (ETag) matches the specified tag." - }, - "CopySourceIfModifiedSince":{ - "shape":"CopySourceIfModifiedSince", - "location":"header", - "locationName":"x-amz-copy-source-if-modified-since", - "documentation":"Copies the object if it has been modified since the specified time." - }, - "CopySourceIfNoneMatch":{ - "shape":"CopySourceIfNoneMatch", - "location":"header", - "locationName":"x-amz-copy-source-if-none-match", - "documentation":"Copies the object if its entity tag (ETag) is different than the specified ETag." - }, - "CopySourceIfUnmodifiedSince":{ - "shape":"CopySourceIfUnmodifiedSince", - "location":"header", - "locationName":"x-amz-copy-source-if-unmodified-since", - "documentation":"Copies the object if it hasn't been modified since the specified time." - }, - "Expires":{ - "shape":"Expires", - "location":"header", - "locationName":"Expires", - "documentation":"The date and time at which the object is no longer cacheable." - }, - "GrantFullControl":{ - "shape":"GrantFullControl", - "location":"header", - "locationName":"x-amz-grant-full-control", - "documentation":"Gives the grantee READ, READ_ACP, and WRITE_ACP permissions on the object." - }, - "GrantRead":{ - "shape":"GrantRead", - "location":"header", - "locationName":"x-amz-grant-read", - "documentation":"Allows grantee to read the object data and its metadata." - }, - "GrantReadACP":{ - "shape":"GrantReadACP", - "location":"header", - "locationName":"x-amz-grant-read-acp", - "documentation":"Allows grantee to read the object ACL." - }, - "GrantWriteACP":{ - "shape":"GrantWriteACP", - "location":"header", - "locationName":"x-amz-grant-write-acp", - "documentation":"Allows grantee to write the ACL for the applicable object." - }, - "Key":{ - "shape":"ObjectKey", - "location":"uri", - "locationName":"Key" - }, - "Metadata":{ - "shape":"Metadata", - "location":"headers", - "documentation":"A map of metadata to store with the object in S3.", - "locationName":"x-amz-meta-" - }, - "MetadataDirective":{ - "shape":"MetadataDirective", - "location":"header", - "locationName":"x-amz-metadata-directive", - "documentation":"Specifies whether the metadata is copied from the source object or replaced with metadata provided in the request." - }, - "ServerSideEncryption":{ - "shape":"ServerSideEncryption", - "location":"header", - "locationName":"x-amz-server-side-encryption", - "documentation":"The Server-side encryption algorithm used when storing this object in S3 (e.g., AES256, aws:kms)." - }, - "StorageClass":{ - "shape":"StorageClass", - "location":"header", - "locationName":"x-amz-storage-class", - "documentation":"The type of storage to use for the object. Defaults to 'STANDARD'." - }, - "WebsiteRedirectLocation":{ - "shape":"WebsiteRedirectLocation", - "location":"header", - "locationName":"x-amz-website-redirect-location", - "documentation":"If the bucket is configured as a website, redirects requests for this object to another object in the same bucket or to an external URL. Amazon S3 stores the value of this header in the object metadata." - }, - "SSECustomerAlgorithm":{ - "shape":"SSECustomerAlgorithm", - "location":"header", - "locationName":"x-amz-server-side-encryption-customer-algorithm", - "documentation":"Specifies the algorithm to use to when encrypting the object (e.g., AES256, aws:kms)." - }, - "SSECustomerKey":{ - "shape":"SSECustomerKey", - "location":"header", - "locationName":"x-amz-server-side-encryption-customer-key", - "documentation":"Specifies the customer-provided encryption key for Amazon S3 to use in encrypting data. This value is used to store the object and then it is discarded; Amazon does not store the encryption key. The key must be appropriate for use with the algorithm specified in the x-amz-server-side​-encryption​-customer-algorithm header." - }, - "SSECustomerKeyMD5":{ - "shape":"SSECustomerKeyMD5", - "location":"header", - "locationName":"x-amz-server-side-encryption-customer-key-MD5", - "documentation":"Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321. Amazon S3 uses this header for a message integrity check to ensure the encryption key was transmitted without error." - }, - "SSEKMSKeyId":{ - "shape":"SSEKMSKeyId", - "location":"header", - "locationName":"x-amz-server-side-encryption-aws-kms-key-id", - "documentation":"Specifies the AWS KMS key ID to use for object encryption. All GET and PUT requests for an object protected by AWS KMS will fail if not made via SSL or using SigV4. Documentation on configuring any of the officially supported AWS SDKs and CLI can be found at http://docs.aws.amazon.com/AmazonS3/latest/dev/UsingAWSSDK.html#specify-signature-version" - }, - "CopySourceSSECustomerAlgorithm":{ - "shape":"CopySourceSSECustomerAlgorithm", - "location":"header", - "locationName":"x-amz-copy-source-server-side-encryption-customer-algorithm", - "documentation":"Specifies the algorithm to use when decrypting the source object (e.g., AES256)." - }, - "CopySourceSSECustomerKey":{ - "shape":"CopySourceSSECustomerKey", - "location":"header", - "locationName":"x-amz-copy-source-server-side-encryption-customer-key", - "documentation":"Specifies the customer-provided encryption key for Amazon S3 to use to decrypt the source object. The encryption key provided in this header must be one that was used when the source object was created." - }, - "CopySourceSSECustomerKeyMD5":{ - "shape":"CopySourceSSECustomerKeyMD5", - "location":"header", - "locationName":"x-amz-copy-source-server-side-encryption-customer-key-MD5", - "documentation":"Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321. Amazon S3 uses this header for a message integrity check to ensure the encryption key was transmitted without error." - } - } - }, - "CopyObjectResult":{ - "type":"structure", - "members":{ - "ETag":{"shape":"ETag"}, - "LastModified":{"shape":"LastModified"} - } - }, - "CopyPartResult":{ - "type":"structure", - "members":{ - "ETag":{ - "shape":"ETag", - "documentation":"Entity tag of the object." - }, - "LastModified":{ - "shape":"LastModified", - "documentation":"Date and time at which the object was uploaded." - } - } - }, - "CopySource":{ - "type":"string", - "pattern":"\\/.+\\/.+" - }, - "CopySourceIfMatch":{"type":"string"}, - "CopySourceIfModifiedSince":{"type":"timestamp"}, - "CopySourceIfNoneMatch":{"type":"string"}, - "CopySourceIfUnmodifiedSince":{"type":"timestamp"}, - "CopySourceRange":{"type":"string"}, - "CopySourceSSECustomerAlgorithm":{"type":"string"}, - "CopySourceSSECustomerKey":{ - "type":"string", - "sensitive":true - }, - "CopySourceSSECustomerKeyMD5":{"type":"string"}, - "CopySourceVersionId":{"type":"string"}, - "CreateBucketConfiguration":{ - "type":"structure", - "members":{ - "LocationConstraint":{ - "shape":"BucketLocationConstraint", - "documentation":"Specifies the region where the bucket will be created." - } - } - }, - "CreateBucketOutput":{ - "type":"structure", - "members":{ - "Location":{ - "shape":"Location", - "location":"header", - "locationName":"Location" - } - } - }, - "CreateBucketRequest":{ - "type":"structure", - "required":["Bucket"], - "members":{ - "ACL":{ - "shape":"BucketCannedACL", - "location":"header", - "locationName":"x-amz-acl", - "documentation":"The canned ACL to apply to the bucket." - }, - "Bucket":{ - "shape":"BucketName", - "location":"uri", - "locationName":"Bucket" - }, - "CreateBucketConfiguration":{ - "shape":"CreateBucketConfiguration", - "xmlNamespace":{"uri":"http://s3.amazonaws.com/doc/2006-03-01/"}, - "locationName":"CreateBucketConfiguration" - }, - "GrantFullControl":{ - "shape":"GrantFullControl", - "location":"header", - "locationName":"x-amz-grant-full-control", - "documentation":"Allows grantee the read, write, read ACP, and write ACP permissions on the bucket." - }, - "GrantRead":{ - "shape":"GrantRead", - "location":"header", - "locationName":"x-amz-grant-read", - "documentation":"Allows grantee to list the objects in the bucket." - }, - "GrantReadACP":{ - "shape":"GrantReadACP", - "location":"header", - "locationName":"x-amz-grant-read-acp", - "documentation":"Allows grantee to read the bucket ACL." - }, - "GrantWrite":{ - "shape":"GrantWrite", - "location":"header", - "locationName":"x-amz-grant-write", - "documentation":"Allows grantee to create, overwrite, and delete any object in the bucket." - }, - "GrantWriteACP":{ - "shape":"GrantWriteACP", - "location":"header", - "locationName":"x-amz-grant-write-acp", - "documentation":"Allows grantee to write the ACL for the applicable bucket." - } - }, - "payload":"CreateBucketConfiguration" - }, - "CreateMultipartUploadOutput":{ - "type":"structure", - "members":{ - "Bucket":{ - "shape":"BucketName", - "documentation":"Name of the bucket to which the multipart upload was initiated.", - "locationName":"Bucket" - }, - "Key":{ - "shape":"ObjectKey", - "documentation":"Object key for which the multipart upload was initiated." - }, - "UploadId":{ - "shape":"MultipartUploadId", - "documentation":"ID for the initiated multipart upload." - }, - "ServerSideEncryption":{ - "shape":"ServerSideEncryption", - "location":"header", - "locationName":"x-amz-server-side-encryption", - "documentation":"The Server-side encryption algorithm used when storing this object in S3 (e.g., AES256, aws:kms)." - }, - "SSECustomerAlgorithm":{ - "shape":"SSECustomerAlgorithm", - "location":"header", - "locationName":"x-amz-server-side-encryption-customer-algorithm", - "documentation":"If server-side encryption with a customer-provided encryption key was requested, the response will include this header confirming the encryption algorithm used." - }, - "SSECustomerKeyMD5":{ - "shape":"SSECustomerKeyMD5", - "location":"header", - "locationName":"x-amz-server-side-encryption-customer-key-MD5", - "documentation":"If server-side encryption with a customer-provided encryption key was requested, the response will include this header to provide round trip message integrity verification of the customer-provided encryption key." - }, - "SSEKMSKeyId":{ - "shape":"SSEKMSKeyId", - "location":"header", - "locationName":"x-amz-server-side-encryption-aws-kms-key-id", - "documentation":"If present, specifies the ID of the AWS Key Management Service (KMS) master encryption key that was used for the object." - } - } - }, - "CreateMultipartUploadRequest":{ - "type":"structure", - "required":[ - "Bucket", - "Key" - ], - "members":{ - "ACL":{ - "shape":"ObjectCannedACL", - "location":"header", - "locationName":"x-amz-acl", - "documentation":"The canned ACL to apply to the object." - }, - "Bucket":{ - "shape":"BucketName", - "location":"uri", - "locationName":"Bucket" - }, - "CacheControl":{ - "shape":"CacheControl", - "location":"header", - "locationName":"Cache-Control", - "documentation":"Specifies caching behavior along the request/reply chain." - }, - "ContentDisposition":{ - "shape":"ContentDisposition", - "location":"header", - "locationName":"Content-Disposition", - "documentation":"Specifies presentational information for the object." - }, - "ContentEncoding":{ - "shape":"ContentEncoding", - "location":"header", - "locationName":"Content-Encoding", - "documentation":"Specifies what content encodings have been applied to the object and thus what decoding mechanisms must be applied to obtain the media-type referenced by the Content-Type header field." - }, - "ContentLanguage":{ - "shape":"ContentLanguage", - "location":"header", - "locationName":"Content-Language", - "documentation":"The language the content is in." - }, - "ContentType":{ - "shape":"ContentType", - "location":"header", - "locationName":"Content-Type", - "documentation":"A standard MIME type describing the format of the object data." - }, - "Expires":{ - "shape":"Expires", - "location":"header", - "locationName":"Expires", - "documentation":"The date and time at which the object is no longer cacheable." - }, - "GrantFullControl":{ - "shape":"GrantFullControl", - "location":"header", - "locationName":"x-amz-grant-full-control", - "documentation":"Gives the grantee READ, READ_ACP, and WRITE_ACP permissions on the object." - }, - "GrantRead":{ - "shape":"GrantRead", - "location":"header", - "locationName":"x-amz-grant-read", - "documentation":"Allows grantee to read the object data and its metadata." - }, - "GrantReadACP":{ - "shape":"GrantReadACP", - "location":"header", - "locationName":"x-amz-grant-read-acp", - "documentation":"Allows grantee to read the object ACL." - }, - "GrantWriteACP":{ - "shape":"GrantWriteACP", - "location":"header", - "locationName":"x-amz-grant-write-acp", - "documentation":"Allows grantee to write the ACL for the applicable object." - }, - "Key":{ - "shape":"ObjectKey", - "location":"uri", - "locationName":"Key" - }, - "Metadata":{ - "shape":"Metadata", - "location":"headers", - "documentation":"A map of metadata to store with the object in S3.", - "locationName":"x-amz-meta-" - }, - "ServerSideEncryption":{ - "shape":"ServerSideEncryption", - "location":"header", - "locationName":"x-amz-server-side-encryption", - "documentation":"The Server-side encryption algorithm used when storing this object in S3 (e.g., AES256, aws:kms)." - }, - "StorageClass":{ - "shape":"StorageClass", - "location":"header", - "locationName":"x-amz-storage-class", - "documentation":"The type of storage to use for the object. Defaults to 'STANDARD'." - }, - "WebsiteRedirectLocation":{ - "shape":"WebsiteRedirectLocation", - "location":"header", - "locationName":"x-amz-website-redirect-location", - "documentation":"If the bucket is configured as a website, redirects requests for this object to another object in the same bucket or to an external URL. Amazon S3 stores the value of this header in the object metadata." - }, - "SSECustomerAlgorithm":{ - "shape":"SSECustomerAlgorithm", - "location":"header", - "locationName":"x-amz-server-side-encryption-customer-algorithm", - "documentation":"Specifies the algorithm to use to when encrypting the object (e.g., AES256, aws:kms)." - }, - "SSECustomerKey":{ - "shape":"SSECustomerKey", - "location":"header", - "locationName":"x-amz-server-side-encryption-customer-key", - "documentation":"Specifies the customer-provided encryption key for Amazon S3 to use in encrypting data. This value is used to store the object and then it is discarded; Amazon does not store the encryption key. The key must be appropriate for use with the algorithm specified in the x-amz-server-side​-encryption​-customer-algorithm header." - }, - "SSECustomerKeyMD5":{ - "shape":"SSECustomerKeyMD5", - "location":"header", - "locationName":"x-amz-server-side-encryption-customer-key-MD5", - "documentation":"Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321. Amazon S3 uses this header for a message integrity check to ensure the encryption key was transmitted without error." - }, - "SSEKMSKeyId":{ - "shape":"SSEKMSKeyId", - "location":"header", - "locationName":"x-amz-server-side-encryption-aws-kms-key-id", - "documentation":"Specifies the AWS KMS key ID to use for object encryption. All GET and PUT requests for an object protected by AWS KMS will fail if not made via SSL or using SigV4. Documentation on configuring any of the officially supported AWS SDKs and CLI can be found at http://docs.aws.amazon.com/AmazonS3/latest/dev/UsingAWSSDK.html#specify-signature-version" - } - } - }, - "CreationDate":{"type":"timestamp"}, - "Date":{ - "type":"timestamp", - "timestampFormat":"iso8601" - }, - "Days":{"type":"integer"}, - "Delete":{ - "type":"structure", - "required":["Objects"], - "members":{ - "Objects":{ - "shape":"ObjectIdentifierList", - "locationName":"Object" - }, - "Quiet":{ - "shape":"Quiet", - "documentation":"Element to enable quiet mode for the request. When you add this element, you must set its value to true." - } - } - }, - "DeleteBucketCorsRequest":{ - "type":"structure", - "required":["Bucket"], - "members":{ - "Bucket":{ - "shape":"BucketName", - "location":"uri", - "locationName":"Bucket" - } - } - }, - "DeleteBucketLifecycleRequest":{ - "type":"structure", - "required":["Bucket"], - "members":{ - "Bucket":{ - "shape":"BucketName", - "location":"uri", - "locationName":"Bucket" - } - } - }, - "DeleteBucketPolicyRequest":{ - "type":"structure", - "required":["Bucket"], - "members":{ - "Bucket":{ - "shape":"BucketName", - "location":"uri", - "locationName":"Bucket" - } - } - }, - "DeleteBucketRequest":{ - "type":"structure", - "required":["Bucket"], - "members":{ - "Bucket":{ - "shape":"BucketName", - "location":"uri", - "locationName":"Bucket" - } - } - }, - "DeleteBucketTaggingRequest":{ - "type":"structure", - "required":["Bucket"], - "members":{ - "Bucket":{ - "shape":"BucketName", - "location":"uri", - "locationName":"Bucket" - } - } - }, - "DeleteBucketWebsiteRequest":{ - "type":"structure", - "required":["Bucket"], - "members":{ - "Bucket":{ - "shape":"BucketName", - "location":"uri", - "locationName":"Bucket" - } - } - }, - "DeleteMarker":{"type":"boolean"}, - "DeleteMarkerEntry":{ - "type":"structure", - "members":{ - "Owner":{"shape":"Owner"}, - "Key":{ - "shape":"ObjectKey", - "documentation":"The object key." - }, - "VersionId":{ - "shape":"ObjectVersionId", - "documentation":"Version ID of an object." - }, - "IsLatest":{ - "shape":"IsLatest", - "documentation":"Specifies whether the object is (true) or is not (false) the latest version of an object." - }, - "LastModified":{ - "shape":"LastModified", - "documentation":"Date and time the object was last modified." - } - } - }, - "DeleteMarkerVersionId":{"type":"string"}, - "DeleteMarkers":{ - "type":"list", - "member":{"shape":"DeleteMarkerEntry"}, - "flattened":true - }, - "DeleteObjectOutput":{ - "type":"structure", - "members":{ - "DeleteMarker":{ - "shape":"DeleteMarker", - "location":"header", - "locationName":"x-amz-delete-marker", - "documentation":"Specifies whether the versioned object that was permanently deleted was (true) or was not (false) a delete marker." - }, - "VersionId":{ - "shape":"ObjectVersionId", - "location":"header", - "locationName":"x-amz-version-id", - "documentation":"Returns the version ID of the delete marker created as a result of the DELETE operation." - } - } - }, - "DeleteObjectRequest":{ - "type":"structure", - "required":[ - "Bucket", - "Key" - ], - "members":{ - "Bucket":{ - "shape":"BucketName", - "location":"uri", - "locationName":"Bucket" - }, - "Key":{ - "shape":"ObjectKey", - "location":"uri", - "locationName":"Key" - }, - "MFA":{ - "shape":"MFA", - "location":"header", - "locationName":"x-amz-mfa", - "documentation":"The concatenation of the authentication device's serial number, a space, and the value that is displayed on your authentication device." - }, - "VersionId":{ - "shape":"ObjectVersionId", - "location":"querystring", - "locationName":"versionId", - "documentation":"VersionId used to reference a specific version of the object." - } - } - }, - "DeleteObjectsOutput":{ - "type":"structure", - "members":{ - "Deleted":{"shape":"DeletedObjects"}, - "Errors":{ - "shape":"Errors", - "locationName":"Error" - } - } - }, - "DeleteObjectsRequest":{ - "type":"structure", - "required":[ - "Bucket", - "Delete" - ], - "members":{ - "Bucket":{ - "shape":"BucketName", - "location":"uri", - "locationName":"Bucket" - }, - "Delete":{ - "shape":"Delete", - "xmlNamespace":{"uri":"http://s3.amazonaws.com/doc/2006-03-01/"}, - "locationName":"Delete" - }, - "MFA":{ - "shape":"MFA", - "location":"header", - "locationName":"x-amz-mfa", - "documentation":"The concatenation of the authentication device's serial number, a space, and the value that is displayed on your authentication device." - } - }, - "payload":"Delete" - }, - "DeletedObject":{ - "type":"structure", - "members":{ - "Key":{"shape":"ObjectKey"}, - "VersionId":{"shape":"ObjectVersionId"}, - "DeleteMarker":{"shape":"DeleteMarker"}, - "DeleteMarkerVersionId":{"shape":"DeleteMarkerVersionId"} - } - }, - "DeletedObjects":{ - "type":"list", - "member":{"shape":"DeletedObject"}, - "flattened":true - }, - "Delimiter":{"type":"string"}, - "DisplayName":{"type":"string"}, - "ETag":{"type":"string"}, - "EmailAddress":{"type":"string"}, - "EncodingType":{ - "type":"string", - "enum":["url"], - "documentation":"Requests Amazon S3 to encode the object keys in the response and specifies the encoding method to use. An object key may contain any Unicode character; however, XML 1.0 parser cannot parse some characters, such as characters with an ASCII value from 0 to 10. For characters that are not supported in XML 1.0, you can add this parameter to request that Amazon S3 encode the keys in the response." - }, - "Error":{ - "type":"structure", - "members":{ - "Key":{"shape":"ObjectKey"}, - "VersionId":{"shape":"ObjectVersionId"}, - "Code":{"shape":"Code"}, - "Message":{"shape":"Message"} - } - }, - "ErrorDocument":{ - "type":"structure", - "required":["Key"], - "members":{ - "Key":{ - "shape":"ObjectKey", - "documentation":"The object key name to use when a 4XX class error occurs." - } - } - }, - "Errors":{ - "type":"list", - "member":{"shape":"Error"}, - "flattened":true - }, - "Event":{ - "type":"string", - "enum":[ - "s3:ReducedRedundancyLostObject", - "s3:ObjectCreated:Put", - "s3:ObjectCreated:Post", - "s3:ObjectCreated:Copy", - "s3:ObjectCreated:CompleteMultipartUpload" - ] - }, - "Events":{ - "type":"list", - "member":{"shape":"Event"}, - "flattened":true - }, - "Expiration":{"type":"string"}, - "ExpirationStatus":{ - "type":"string", - "enum":[ - "Enabled", - "Disabled" - ] - }, - "Expires":{"type":"timestamp"}, - "ExposeHeader":{"type":"string"}, - "ExposeHeaders":{ - "type":"list", - "member":{"shape":"ExposeHeader"}, - "flattened":true - }, - "GetBucketAclOutput":{ - "type":"structure", - "members":{ - "Owner":{"shape":"Owner"}, - "Grants":{ - "shape":"Grants", - "documentation":"A list of grants.", - "locationName":"AccessControlList" - } - } - }, - "GetBucketAclRequest":{ - "type":"structure", - "required":["Bucket"], - "members":{ - "Bucket":{ - "shape":"BucketName", - "location":"uri", - "locationName":"Bucket" - } - } - }, - "GetBucketCorsOutput":{ - "type":"structure", - "members":{ - "CORSRules":{ - "shape":"CORSRules", - "locationName":"CORSRule" - } - } - }, - "GetBucketCorsRequest":{ - "type":"structure", - "required":["Bucket"], - "members":{ - "Bucket":{ - "shape":"BucketName", - "location":"uri", - "locationName":"Bucket" - } - } - }, - "GetBucketLifecycleOutput":{ - "type":"structure", - "members":{ - "Rules":{ - "shape":"Rules", - "locationName":"Rule" - } - } - }, - "GetBucketLifecycleRequest":{ - "type":"structure", - "required":["Bucket"], - "members":{ - "Bucket":{ - "shape":"BucketName", - "location":"uri", - "locationName":"Bucket" - } - } - }, - "GetBucketLocationOutput":{ - "type":"structure", - "members":{ - "LocationConstraint":{"shape":"BucketLocationConstraint"} - } - }, - "GetBucketLocationRequest":{ - "type":"structure", - "required":["Bucket"], - "members":{ - "Bucket":{ - "shape":"BucketName", - "location":"uri", - "locationName":"Bucket" - } - } - }, - "GetBucketLoggingOutput":{ - "type":"structure", - "members":{ - "LoggingEnabled":{"shape":"LoggingEnabled"} - } - }, - "GetBucketLoggingRequest":{ - "type":"structure", - "required":["Bucket"], - "members":{ - "Bucket":{ - "shape":"BucketName", - "location":"uri", - "locationName":"Bucket" - } - } - }, - "GetBucketNotificationOutput":{ - "type":"structure", - "members":{ - "TopicConfiguration":{"shape":"TopicConfiguration"}, - "QueueConfiguration":{"shape":"QueueConfiguration"}, - "CloudFunctionConfiguration":{"shape":"CloudFunctionConfiguration"} - } - }, - "GetBucketNotificationRequest":{ - "type":"structure", - "required":["Bucket"], - "members":{ - "Bucket":{ - "shape":"BucketName", - "location":"uri", - "locationName":"Bucket" - } - } - }, - "GetBucketPolicyOutput":{ - "type":"structure", - "members":{ - "Policy":{ - "shape":"Policy", - "documentation":"The bucket policy as a JSON document." - } - }, - "payload":"Policy" - }, - "GetBucketPolicyRequest":{ - "type":"structure", - "required":["Bucket"], - "members":{ - "Bucket":{ - "shape":"BucketName", - "location":"uri", - "locationName":"Bucket" - } - } - }, - "GetBucketRequestPaymentOutput":{ - "type":"structure", - "members":{ - "Payer":{ - "shape":"Payer", - "documentation":"Specifies who pays for the download and request fees." - } - } - }, - "GetBucketRequestPaymentRequest":{ - "type":"structure", - "required":["Bucket"], - "members":{ - "Bucket":{ - "shape":"BucketName", - "location":"uri", - "locationName":"Bucket" - } - } - }, - "GetBucketTaggingOutput":{ - "type":"structure", - "required":["TagSet"], - "members":{ - "TagSet":{"shape":"TagSet"} - } - }, - "GetBucketTaggingRequest":{ - "type":"structure", - "required":["Bucket"], - "members":{ - "Bucket":{ - "shape":"BucketName", - "location":"uri", - "locationName":"Bucket" - } - } - }, - "GetBucketVersioningOutput":{ - "type":"structure", - "members":{ - "Status":{ - "shape":"BucketVersioningStatus", - "documentation":"The versioning state of the bucket." - }, - "MFADelete":{ - "shape":"MFADeleteStatus", - "documentation":"Specifies whether MFA delete is enabled in the bucket versioning configuration. This element is only returned if the bucket has been configured with MFA delete. If the bucket has never been so configured, this element is not returned.", - "locationName":"MfaDelete" - } - } - }, - "GetBucketVersioningRequest":{ - "type":"structure", - "required":["Bucket"], - "members":{ - "Bucket":{ - "shape":"BucketName", - "location":"uri", - "locationName":"Bucket" - } - } - }, - "GetBucketWebsiteOutput":{ - "type":"structure", - "members":{ - "RedirectAllRequestsTo":{"shape":"RedirectAllRequestsTo"}, - "IndexDocument":{"shape":"IndexDocument"}, - "ErrorDocument":{"shape":"ErrorDocument"}, - "RoutingRules":{"shape":"RoutingRules"} - } - }, - "GetBucketWebsiteRequest":{ - "type":"structure", - "required":["Bucket"], - "members":{ - "Bucket":{ - "shape":"BucketName", - "location":"uri", - "locationName":"Bucket" - } - } - }, - "GetObjectAclOutput":{ - "type":"structure", - "members":{ - "Owner":{"shape":"Owner"}, - "Grants":{ - "shape":"Grants", - "documentation":"A list of grants.", - "locationName":"AccessControlList" - } - } - }, - "GetObjectAclRequest":{ - "type":"structure", - "required":[ - "Bucket", - "Key" - ], - "members":{ - "Bucket":{ - "shape":"BucketName", - "location":"uri", - "locationName":"Bucket" - }, - "Key":{ - "shape":"ObjectKey", - "location":"uri", - "locationName":"Key" - }, - "VersionId":{ - "shape":"ObjectVersionId", - "location":"querystring", - "locationName":"versionId", - "documentation":"VersionId used to reference a specific version of the object." - } - } - }, - "GetObjectOutput":{ - "type":"structure", - "members":{ - "Body":{ - "shape":"Body", - "streaming":true, - "documentation":"Object data." - }, - "DeleteMarker":{ - "shape":"DeleteMarker", - "location":"header", - "locationName":"x-amz-delete-marker", - "documentation":"Specifies whether the object retrieved was (true) or was not (false) a Delete Marker. If false, this response header does not appear in the response." - }, - "AcceptRanges":{ - "shape":"AcceptRanges", - "location":"header", - "locationName":"accept-ranges" - }, - "Expiration":{ - "shape":"Expiration", - "location":"header", - "locationName":"x-amz-expiration", - "documentation":"If the object expiration is configured (see PUT Bucket lifecycle), the response includes this header. It includes the expiry-date and rule-id key value pairs providing object expiration information. The value of the rule-id is URL encoded." - }, - "Restore":{ - "shape":"Restore", - "location":"header", - "locationName":"x-amz-restore", - "documentation":"Provides information about object restoration operation and expiration time of the restored object copy." - }, - "LastModified":{ - "shape":"LastModified", - "location":"header", - "locationName":"Last-Modified", - "documentation":"Last modified date of the object" - }, - "ContentLength":{ - "shape":"ContentLength", - "location":"header", - "locationName":"Content-Length", - "documentation":"Size of the body in bytes." - }, - "ETag":{ - "shape":"ETag", - "location":"header", - "locationName":"ETag", - "documentation":"An ETag is an opaque identifier assigned by a web server to a specific version of a resource found at a URL" - }, - "MissingMeta":{ - "shape":"MissingMeta", - "location":"header", - "locationName":"x-amz-missing-meta", - "documentation":"This is set to the number of metadata entries not returned in x-amz-meta headers. This can happen if you create metadata using an API like SOAP that supports more flexible metadata than the REST API. For example, using SOAP, you can create metadata whose values are not legal HTTP headers." - }, - "VersionId":{ - "shape":"ObjectVersionId", - "location":"header", - "locationName":"x-amz-version-id", - "documentation":"Version of the object." - }, - "CacheControl":{ - "shape":"CacheControl", - "location":"header", - "locationName":"Cache-Control", - "documentation":"Specifies caching behavior along the request/reply chain." - }, - "ContentDisposition":{ - "shape":"ContentDisposition", - "location":"header", - "locationName":"Content-Disposition", - "documentation":"Specifies presentational information for the object." - }, - "ContentEncoding":{ - "shape":"ContentEncoding", - "location":"header", - "locationName":"Content-Encoding", - "documentation":"Specifies what content encodings have been applied to the object and thus what decoding mechanisms must be applied to obtain the media-type referenced by the Content-Type header field." - }, - "ContentLanguage":{ - "shape":"ContentLanguage", - "location":"header", - "locationName":"Content-Language", - "documentation":"The language the content is in." - }, - "ContentType":{ - "shape":"ContentType", - "location":"header", - "locationName":"Content-Type", - "documentation":"A standard MIME type describing the format of the object data." - }, - "Expires":{ - "shape":"Expires", - "location":"header", - "locationName":"Expires", - "documentation":"The date and time at which the object is no longer cacheable." - }, - "WebsiteRedirectLocation":{ - "shape":"WebsiteRedirectLocation", - "location":"header", - "locationName":"x-amz-website-redirect-location", - "documentation":"If the bucket is configured as a website, redirects requests for this object to another object in the same bucket or to an external URL. Amazon S3 stores the value of this header in the object metadata." - }, - "ServerSideEncryption":{ - "shape":"ServerSideEncryption", - "location":"header", - "locationName":"x-amz-server-side-encryption", - "documentation":"The Server-side encryption algorithm used when storing this object in S3 (e.g., AES256, aws:kms)." - }, - "Metadata":{ - "shape":"Metadata", - "location":"headers", - "documentation":"A map of metadata to store with the object in S3.", - "locationName":"x-amz-meta-" - }, - "SSECustomerAlgorithm":{ - "shape":"SSECustomerAlgorithm", - "location":"header", - "locationName":"x-amz-server-side-encryption-customer-algorithm", - "documentation":"If server-side encryption with a customer-provided encryption key was requested, the response will include this header confirming the encryption algorithm used." - }, - "SSECustomerKeyMD5":{ - "shape":"SSECustomerKeyMD5", - "location":"header", - "locationName":"x-amz-server-side-encryption-customer-key-MD5", - "documentation":"If server-side encryption with a customer-provided encryption key was requested, the response will include this header to provide round trip message integrity verification of the customer-provided encryption key." - }, - "SSEKMSKeyId":{ - "shape":"SSEKMSKeyId", - "location":"header", - "locationName":"x-amz-server-side-encryption-aws-kms-key-id", - "documentation":"If present, specifies the ID of the AWS Key Management Service (KMS) master encryption key that was used for the object." - } - }, - "payload":"Body" - }, - "GetObjectRequest":{ - "type":"structure", - "required":[ - "Bucket", - "Key" - ], - "members":{ - "Bucket":{ - "shape":"BucketName", - "location":"uri", - "locationName":"Bucket" - }, - "IfMatch":{ - "shape":"IfMatch", - "location":"header", - "locationName":"If-Match", - "documentation":"Return the object only if its entity tag (ETag) is the same as the one specified, otherwise return a 412 (precondition failed)." - }, - "IfModifiedSince":{ - "shape":"IfModifiedSince", - "location":"header", - "locationName":"If-Modified-Since", - "documentation":"Return the object only if it has been modified since the specified time, otherwise return a 304 (not modified)." - }, - "IfNoneMatch":{ - "shape":"IfNoneMatch", - "location":"header", - "locationName":"If-None-Match", - "documentation":"Return the object only if its entity tag (ETag) is different from the one specified, otherwise return a 304 (not modified)." - }, - "IfUnmodifiedSince":{ - "shape":"IfUnmodifiedSince", - "location":"header", - "locationName":"If-Unmodified-Since", - "documentation":"Return the object only if it has not been modified since the specified time, otherwise return a 412 (precondition failed)." - }, - "Key":{ - "shape":"ObjectKey", - "location":"uri", - "locationName":"Key" - }, - "Range":{ - "shape":"Range", - "location":"header", - "locationName":"Range", - "documentation":"Downloads the specified range bytes of an object. For more information about the HTTP Range header, go to http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35." - }, - "ResponseCacheControl":{ - "shape":"ResponseCacheControl", - "location":"querystring", - "locationName":"response-cache-control", - "documentation":"Sets the Cache-Control header of the response." - }, - "ResponseContentDisposition":{ - "shape":"ResponseContentDisposition", - "location":"querystring", - "locationName":"response-content-disposition", - "documentation":"Sets the Content-Disposition header of the response" - }, - "ResponseContentEncoding":{ - "shape":"ResponseContentEncoding", - "location":"querystring", - "locationName":"response-content-encoding", - "documentation":"Sets the Content-Encoding header of the response." - }, - "ResponseContentLanguage":{ - "shape":"ResponseContentLanguage", - "location":"querystring", - "locationName":"response-content-language", - "documentation":"Sets the Content-Language header of the response." - }, - "ResponseContentType":{ - "shape":"ResponseContentType", - "location":"querystring", - "locationName":"response-content-type", - "documentation":"Sets the Content-Type header of the response." - }, - "ResponseExpires":{ - "shape":"ResponseExpires", - "location":"querystring", - "locationName":"response-expires", - "documentation":"Sets the Expires header of the response." - }, - "VersionId":{ - "shape":"ObjectVersionId", - "location":"querystring", - "locationName":"versionId", - "documentation":"VersionId used to reference a specific version of the object." - }, - "SSECustomerAlgorithm":{ - "shape":"SSECustomerAlgorithm", - "location":"header", - "locationName":"x-amz-server-side-encryption-customer-algorithm", - "documentation":"Specifies the algorithm to use to when encrypting the object (e.g., AES256, aws:kms)." - }, - "SSECustomerKey":{ - "shape":"SSECustomerKey", - "location":"header", - "locationName":"x-amz-server-side-encryption-customer-key", - "documentation":"Specifies the customer-provided encryption key for Amazon S3 to use in encrypting data. This value is used to store the object and then it is discarded; Amazon does not store the encryption key. The key must be appropriate for use with the algorithm specified in the x-amz-server-side​-encryption​-customer-algorithm header." - }, - "SSECustomerKeyMD5":{ - "shape":"SSECustomerKeyMD5", - "location":"header", - "locationName":"x-amz-server-side-encryption-customer-key-MD5", - "documentation":"Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321. Amazon S3 uses this header for a message integrity check to ensure the encryption key was transmitted without error." - } - } - }, - "GetObjectTorrentOutput":{ - "type":"structure", - "members":{ - "Body":{ - "shape":"Body", - "streaming":true - } - }, - "payload":"Body" - }, - "GetObjectTorrentRequest":{ - "type":"structure", - "required":[ - "Bucket", - "Key" - ], - "members":{ - "Bucket":{ - "shape":"BucketName", - "location":"uri", - "locationName":"Bucket" - }, - "Key":{ - "shape":"ObjectKey", - "location":"uri", - "locationName":"Key" - } - } - }, - "Grant":{ - "type":"structure", - "members":{ - "Grantee":{"shape":"Grantee"}, - "Permission":{ - "shape":"Permission", - "documentation":"Specifies the permission given to the grantee." - } - } - }, - "GrantFullControl":{"type":"string"}, - "GrantRead":{"type":"string"}, - "GrantReadACP":{"type":"string"}, - "GrantWrite":{"type":"string"}, - "GrantWriteACP":{"type":"string"}, - "Grantee":{ - "type":"structure", - "required":["Type"], - "members":{ - "DisplayName":{ - "shape":"DisplayName", - "documentation":"Screen name of the grantee." - }, - "EmailAddress":{ - "shape":"EmailAddress", - "documentation":"Email address of the grantee." - }, - "ID":{ - "shape":"ID", - "documentation":"The canonical user ID of the grantee." - }, - "Type":{ - "shape":"Type", - "documentation":"Type of grantee" - }, - "URI":{ - "shape":"URI", - "documentation":"URI of the grantee group." - } - }, - "xmlNamespace":{ - "prefix":"xsi", - "uri":"http://www.w3.org/2001/XMLSchema-instance" - } - }, - "Grants":{ - "type":"list", - "member":{ - "shape":"Grant", - "locationName":"Grant" - } - }, - "HeadBucketRequest":{ - "type":"structure", - "required":["Bucket"], - "members":{ - "Bucket":{ - "shape":"BucketName", - "location":"uri", - "locationName":"Bucket" - } - } - }, - "HeadObjectOutput":{ - "type":"structure", - "members":{ - "DeleteMarker":{ - "shape":"DeleteMarker", - "location":"header", - "locationName":"x-amz-delete-marker", - "documentation":"Specifies whether the object retrieved was (true) or was not (false) a Delete Marker. If false, this response header does not appear in the response." - }, - "AcceptRanges":{ - "shape":"AcceptRanges", - "location":"header", - "locationName":"accept-ranges" - }, - "Expiration":{ - "shape":"Expiration", - "location":"header", - "locationName":"x-amz-expiration", - "documentation":"If the object expiration is configured (see PUT Bucket lifecycle), the response includes this header. It includes the expiry-date and rule-id key value pairs providing object expiration information. The value of the rule-id is URL encoded." - }, - "Restore":{ - "shape":"Restore", - "location":"header", - "locationName":"x-amz-restore", - "documentation":"Provides information about object restoration operation and expiration time of the restored object copy." - }, - "LastModified":{ - "shape":"LastModified", - "location":"header", - "locationName":"Last-Modified", - "documentation":"Last modified date of the object" - }, - "ContentLength":{ - "shape":"ContentLength", - "location":"header", - "locationName":"Content-Length", - "documentation":"Size of the body in bytes." - }, - "ETag":{ - "shape":"ETag", - "location":"header", - "locationName":"ETag", - "documentation":"An ETag is an opaque identifier assigned by a web server to a specific version of a resource found at a URL" - }, - "MissingMeta":{ - "shape":"MissingMeta", - "location":"header", - "locationName":"x-amz-missing-meta", - "documentation":"This is set to the number of metadata entries not returned in x-amz-meta headers. This can happen if you create metadata using an API like SOAP that supports more flexible metadata than the REST API. For example, using SOAP, you can create metadata whose values are not legal HTTP headers." - }, - "VersionId":{ - "shape":"ObjectVersionId", - "location":"header", - "locationName":"x-amz-version-id", - "documentation":"Version of the object." - }, - "CacheControl":{ - "shape":"CacheControl", - "location":"header", - "locationName":"Cache-Control", - "documentation":"Specifies caching behavior along the request/reply chain." - }, - "ContentDisposition":{ - "shape":"ContentDisposition", - "location":"header", - "locationName":"Content-Disposition", - "documentation":"Specifies presentational information for the object." - }, - "ContentEncoding":{ - "shape":"ContentEncoding", - "location":"header", - "locationName":"Content-Encoding", - "documentation":"Specifies what content encodings have been applied to the object and thus what decoding mechanisms must be applied to obtain the media-type referenced by the Content-Type header field." - }, - "ContentLanguage":{ - "shape":"ContentLanguage", - "location":"header", - "locationName":"Content-Language", - "documentation":"The language the content is in." - }, - "ContentType":{ - "shape":"ContentType", - "location":"header", - "locationName":"Content-Type", - "documentation":"A standard MIME type describing the format of the object data." - }, - "Expires":{ - "shape":"Expires", - "location":"header", - "locationName":"Expires", - "documentation":"The date and time at which the object is no longer cacheable." - }, - "WebsiteRedirectLocation":{ - "shape":"WebsiteRedirectLocation", - "location":"header", - "locationName":"x-amz-website-redirect-location", - "documentation":"If the bucket is configured as a website, redirects requests for this object to another object in the same bucket or to an external URL. Amazon S3 stores the value of this header in the object metadata." - }, - "ServerSideEncryption":{ - "shape":"ServerSideEncryption", - "location":"header", - "locationName":"x-amz-server-side-encryption", - "documentation":"The Server-side encryption algorithm used when storing this object in S3 (e.g., AES256, aws:kms)." - }, - "Metadata":{ - "shape":"Metadata", - "location":"headers", - "documentation":"A map of metadata to store with the object in S3.", - "locationName":"x-amz-meta-" - }, - "SSECustomerAlgorithm":{ - "shape":"SSECustomerAlgorithm", - "location":"header", - "locationName":"x-amz-server-side-encryption-customer-algorithm", - "documentation":"If server-side encryption with a customer-provided encryption key was requested, the response will include this header confirming the encryption algorithm used." - }, - "SSECustomerKeyMD5":{ - "shape":"SSECustomerKeyMD5", - "location":"header", - "locationName":"x-amz-server-side-encryption-customer-key-MD5", - "documentation":"If server-side encryption with a customer-provided encryption key was requested, the response will include this header to provide round trip message integrity verification of the customer-provided encryption key." - }, - "SSEKMSKeyId":{ - "shape":"SSEKMSKeyId", - "location":"header", - "locationName":"x-amz-server-side-encryption-aws-kms-key-id", - "documentation":"If present, specifies the ID of the AWS Key Management Service (KMS) master encryption key that was used for the object." - } - } - }, - "HeadObjectRequest":{ - "type":"structure", - "required":[ - "Bucket", - "Key" - ], - "members":{ - "Bucket":{ - "shape":"BucketName", - "location":"uri", - "locationName":"Bucket" - }, - "IfMatch":{ - "shape":"IfMatch", - "location":"header", - "locationName":"If-Match", - "documentation":"Return the object only if its entity tag (ETag) is the same as the one specified, otherwise return a 412 (precondition failed)." - }, - "IfModifiedSince":{ - "shape":"IfModifiedSince", - "location":"header", - "locationName":"If-Modified-Since", - "documentation":"Return the object only if it has been modified since the specified time, otherwise return a 304 (not modified)." - }, - "IfNoneMatch":{ - "shape":"IfNoneMatch", - "location":"header", - "locationName":"If-None-Match", - "documentation":"Return the object only if its entity tag (ETag) is different from the one specified, otherwise return a 304 (not modified)." - }, - "IfUnmodifiedSince":{ - "shape":"IfUnmodifiedSince", - "location":"header", - "locationName":"If-Unmodified-Since", - "documentation":"Return the object only if it has not been modified since the specified time, otherwise return a 412 (precondition failed)." - }, - "Key":{ - "shape":"ObjectKey", - "location":"uri", - "locationName":"Key" - }, - "Range":{ - "shape":"Range", - "location":"header", - "locationName":"Range", - "documentation":"Downloads the specified range bytes of an object. For more information about the HTTP Range header, go to http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35." - }, - "VersionId":{ - "shape":"ObjectVersionId", - "location":"querystring", - "locationName":"versionId", - "documentation":"VersionId used to reference a specific version of the object." - }, - "SSECustomerAlgorithm":{ - "shape":"SSECustomerAlgorithm", - "location":"header", - "locationName":"x-amz-server-side-encryption-customer-algorithm", - "documentation":"Specifies the algorithm to use to when encrypting the object (e.g., AES256, aws:kms)." - }, - "SSECustomerKey":{ - "shape":"SSECustomerKey", - "location":"header", - "locationName":"x-amz-server-side-encryption-customer-key", - "documentation":"Specifies the customer-provided encryption key for Amazon S3 to use in encrypting data. This value is used to store the object and then it is discarded; Amazon does not store the encryption key. The key must be appropriate for use with the algorithm specified in the x-amz-server-side​-encryption​-customer-algorithm header." - }, - "SSECustomerKeyMD5":{ - "shape":"SSECustomerKeyMD5", - "location":"header", - "locationName":"x-amz-server-side-encryption-customer-key-MD5", - "documentation":"Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321. Amazon S3 uses this header for a message integrity check to ensure the encryption key was transmitted without error." - } - } - }, - "HostName":{"type":"string"}, - "HttpErrorCodeReturnedEquals":{"type":"string"}, - "HttpRedirectCode":{"type":"string"}, - "ID":{"type":"string"}, - "IfMatch":{"type":"string"}, - "IfModifiedSince":{"type":"timestamp"}, - "IfNoneMatch":{"type":"string"}, - "IfUnmodifiedSince":{"type":"timestamp"}, - "IndexDocument":{ - "type":"structure", - "required":["Suffix"], - "members":{ - "Suffix":{ - "shape":"Suffix", - "documentation":"A suffix that is appended to a request that is for a directory on the website endpoint (e.g. if the suffix is index.html and you make a request to samplebucket/images/ the data that is returned will be for the object with the key name images/index.html) The suffix must not be empty and must not include a slash character." - } - } - }, - "Initiated":{"type":"timestamp"}, - "Initiator":{ - "type":"structure", - "members":{ - "ID":{ - "shape":"ID", - "documentation":"If the principal is an AWS account, it provides the Canonical User ID. If the principal is an IAM User, it provides a user ARN value." - }, - "DisplayName":{ - "shape":"DisplayName", - "documentation":"Name of the Principal." - } - } - }, - "IsLatest":{"type":"boolean"}, - "IsTruncated":{"type":"boolean"}, - "KeyMarker":{"type":"string"}, - "KeyPrefixEquals":{"type":"string"}, - "LastModified":{"type":"timestamp"}, - "LifecycleConfiguration":{ - "type":"structure", - "required":["Rules"], - "members":{ - "Rules":{ - "shape":"Rules", - "locationName":"Rule" - } - } - }, - "LifecycleExpiration":{ - "type":"structure", - "members":{ - "Date":{ - "shape":"Date", - "documentation":"Indicates at what date the object is to be moved or deleted. Should be in GMT ISO 8601 Format." - }, - "Days":{ - "shape":"Days", - "documentation":"Indicates the lifetime, in days, of the objects that are subject to the rule. The value must be a non-zero positive integer." - } - } - }, - "ListBucketsOutput":{ - "type":"structure", - "members":{ - "Buckets":{"shape":"Buckets"}, - "Owner":{"shape":"Owner"} - } - }, - "ListMultipartUploadsOutput":{ - "type":"structure", - "members":{ - "Bucket":{ - "shape":"BucketName", - "documentation":"Name of the bucket to which the multipart upload was initiated." - }, - "KeyMarker":{ - "shape":"KeyMarker", - "documentation":"The key at or after which the listing began." - }, - "UploadIdMarker":{ - "shape":"UploadIdMarker", - "documentation":"Upload ID after which listing began." - }, - "NextKeyMarker":{ - "shape":"NextKeyMarker", - "documentation":"When a list is truncated, this element specifies the value that should be used for the key-marker request parameter in a subsequent request." - }, - "Prefix":{ - "shape":"Prefix", - "documentation":"When a prefix is provided in the request, this field contains the specified prefix. The result contains only keys starting with the specified prefix." - }, - "Delimiter":{"shape":"Delimiter"}, - "NextUploadIdMarker":{ - "shape":"NextUploadIdMarker", - "documentation":"When a list is truncated, this element specifies the value that should be used for the upload-id-marker request parameter in a subsequent request." - }, - "MaxUploads":{ - "shape":"MaxUploads", - "documentation":"Maximum number of multipart uploads that could have been included in the response." - }, - "IsTruncated":{ - "shape":"IsTruncated", - "documentation":"Indicates whether the returned list of multipart uploads is truncated. A value of true indicates that the list was truncated. The list can be truncated if the number of multipart uploads exceeds the limit allowed or specified by max uploads." - }, - "Uploads":{ - "shape":"MultipartUploadList", - "locationName":"Upload" - }, - "CommonPrefixes":{"shape":"CommonPrefixList"}, - "EncodingType":{ - "shape":"EncodingType", - "documentation":"Encoding type used by Amazon S3 to encode object keys in the response." - } - } - }, - "ListMultipartUploadsRequest":{ - "type":"structure", - "required":["Bucket"], - "members":{ - "Bucket":{ - "shape":"BucketName", - "location":"uri", - "locationName":"Bucket" - }, - "Delimiter":{ - "shape":"Delimiter", - "location":"querystring", - "locationName":"delimiter", - "documentation":"Character you use to group keys." - }, - "EncodingType":{ - "shape":"EncodingType", - "location":"querystring", - "locationName":"encoding-type" - }, - "KeyMarker":{ - "shape":"KeyMarker", - "location":"querystring", - "locationName":"key-marker", - "documentation":"Together with upload-id-marker, this parameter specifies the multipart upload after which listing should begin." - }, - "MaxUploads":{ - "shape":"MaxUploads", - "location":"querystring", - "locationName":"max-uploads", - "documentation":"Sets the maximum number of multipart uploads, from 1 to 1,000, to return in the response body. 1,000 is the maximum number of uploads that can be returned in a response." - }, - "Prefix":{ - "shape":"Prefix", - "location":"querystring", - "locationName":"prefix", - "documentation":"Lists in-progress uploads only for those keys that begin with the specified prefix." - }, - "UploadIdMarker":{ - "shape":"UploadIdMarker", - "location":"querystring", - "locationName":"upload-id-marker", - "documentation":"Together with key-marker, specifies the multipart upload after which listing should begin. If key-marker is not specified, the upload-id-marker parameter is ignored." - } - } - }, - "ListObjectVersionsOutput":{ - "type":"structure", - "members":{ - "IsTruncated":{ - "shape":"IsTruncated", - "documentation":"A flag that indicates whether or not Amazon S3 returned all of the results that satisfied the search criteria. If your results were truncated, you can make a follow-up paginated request using the NextKeyMarker and NextVersionIdMarker response parameters as a starting place in another request to return the rest of the results." - }, - "KeyMarker":{ - "shape":"KeyMarker", - "documentation":"Marks the last Key returned in a truncated response." - }, - "VersionIdMarker":{"shape":"VersionIdMarker"}, - "NextKeyMarker":{ - "shape":"NextKeyMarker", - "documentation":"Use this value for the key marker request parameter in a subsequent request." - }, - "NextVersionIdMarker":{ - "shape":"NextVersionIdMarker", - "documentation":"Use this value for the next version id marker parameter in a subsequent request." - }, - "Versions":{ - "shape":"ObjectVersionList", - "locationName":"Version" - }, - "DeleteMarkers":{ - "shape":"DeleteMarkers", - "locationName":"DeleteMarker" - }, - "Name":{"shape":"BucketName"}, - "Prefix":{"shape":"Prefix"}, - "Delimiter":{"shape":"Delimiter"}, - "MaxKeys":{"shape":"MaxKeys"}, - "CommonPrefixes":{"shape":"CommonPrefixList"}, - "EncodingType":{ - "shape":"EncodingType", - "documentation":"Encoding type used by Amazon S3 to encode object keys in the response." - } - } - }, - "ListObjectVersionsRequest":{ - "type":"structure", - "required":["Bucket"], - "members":{ - "Bucket":{ - "shape":"BucketName", - "location":"uri", - "locationName":"Bucket" - }, - "Delimiter":{ - "shape":"Delimiter", - "location":"querystring", - "locationName":"delimiter", - "documentation":"A delimiter is a character you use to group keys." - }, - "EncodingType":{ - "shape":"EncodingType", - "location":"querystring", - "locationName":"encoding-type" - }, - "KeyMarker":{ - "shape":"KeyMarker", - "location":"querystring", - "locationName":"key-marker", - "documentation":"Specifies the key to start with when listing objects in a bucket." - }, - "MaxKeys":{ - "shape":"MaxKeys", - "location":"querystring", - "locationName":"max-keys", - "documentation":"Sets the maximum number of keys returned in the response. The response might contain fewer keys but will never contain more." - }, - "Prefix":{ - "shape":"Prefix", - "location":"querystring", - "locationName":"prefix", - "documentation":"Limits the response to keys that begin with the specified prefix." - }, - "VersionIdMarker":{ - "shape":"VersionIdMarker", - "location":"querystring", - "locationName":"version-id-marker", - "documentation":"Specifies the object version you want to start listing from." - } - } - }, - "ListObjectsOutput":{ - "type":"structure", - "members":{ - "IsTruncated":{ - "shape":"IsTruncated", - "documentation":"A flag that indicates whether or not Amazon S3 returned all of the results that satisfied the search criteria." - }, - "Marker":{"shape":"Marker"}, - "NextMarker":{ - "shape":"NextMarker", - "documentation":"When response is truncated (the IsTruncated element value in the response is true), you can use the key name in this field as marker in the subsequent request to get next set of objects. Amazon S3 lists objects in alphabetical order Note: This element is returned only if you have delimiter request parameter specified. If response does not include the NextMaker and it is truncated, you can use the value of the last Key in the response as the marker in the subsequent request to get the next set of object keys." - }, - "Contents":{"shape":"ObjectList"}, - "Name":{"shape":"BucketName"}, - "Prefix":{"shape":"Prefix"}, - "Delimiter":{"shape":"Delimiter"}, - "MaxKeys":{"shape":"MaxKeys"}, - "CommonPrefixes":{"shape":"CommonPrefixList"}, - "EncodingType":{ - "shape":"EncodingType", - "documentation":"Encoding type used by Amazon S3 to encode object keys in the response." - } - } - }, - "ListObjectsRequest":{ - "type":"structure", - "required":["Bucket"], - "members":{ - "Bucket":{ - "shape":"BucketName", - "location":"uri", - "locationName":"Bucket" - }, - "Delimiter":{ - "shape":"Delimiter", - "location":"querystring", - "locationName":"delimiter", - "documentation":"A delimiter is a character you use to group keys." - }, - "EncodingType":{ - "shape":"EncodingType", - "location":"querystring", - "locationName":"encoding-type" - }, - "Marker":{ - "shape":"Marker", - "location":"querystring", - "locationName":"marker", - "documentation":"Specifies the key to start with when listing objects in a bucket." - }, - "MaxKeys":{ - "shape":"MaxKeys", - "location":"querystring", - "locationName":"max-keys", - "documentation":"Sets the maximum number of keys returned in the response. The response might contain fewer keys but will never contain more." - }, - "Prefix":{ - "shape":"Prefix", - "location":"querystring", - "locationName":"prefix", - "documentation":"Limits the response to keys that begin with the specified prefix." - } - } - }, - "ListPartsOutput":{ - "type":"structure", - "members":{ - "Bucket":{ - "shape":"BucketName", - "documentation":"Name of the bucket to which the multipart upload was initiated." - }, - "Key":{ - "shape":"ObjectKey", - "documentation":"Object key for which the multipart upload was initiated." - }, - "UploadId":{ - "shape":"MultipartUploadId", - "documentation":"Upload ID identifying the multipart upload whose parts are being listed." - }, - "PartNumberMarker":{ - "shape":"PartNumberMarker", - "documentation":"Part number after which listing begins." - }, - "NextPartNumberMarker":{ - "shape":"NextPartNumberMarker", - "documentation":"When a list is truncated, this element specifies the last part in the list, as well as the value to use for the part-number-marker request parameter in a subsequent request." - }, - "MaxParts":{ - "shape":"MaxParts", - "documentation":"Maximum number of parts that were allowed in the response." - }, - "IsTruncated":{ - "shape":"IsTruncated", - "documentation":"Indicates whether the returned list of parts is truncated." - }, - "Parts":{ - "shape":"Parts", - "locationName":"Part" - }, - "Initiator":{ - "shape":"Initiator", - "documentation":"Identifies who initiated the multipart upload." - }, - "Owner":{"shape":"Owner"}, - "StorageClass":{ - "shape":"StorageClass", - "documentation":"The class of storage used to store the object." - } - } - }, - "ListPartsRequest":{ - "type":"structure", - "required":[ - "Bucket", - "Key", - "UploadId" - ], - "members":{ - "Bucket":{ - "shape":"BucketName", - "location":"uri", - "locationName":"Bucket" - }, - "Key":{ - "shape":"ObjectKey", - "location":"uri", - "locationName":"Key" - }, - "MaxParts":{ - "shape":"MaxParts", - "location":"querystring", - "locationName":"max-parts", - "documentation":"Sets the maximum number of parts to return." - }, - "PartNumberMarker":{ - "shape":"PartNumberMarker", - "location":"querystring", - "locationName":"part-number-marker", - "documentation":"Specifies the part after which listing should begin. Only parts with higher part numbers will be listed." - }, - "UploadId":{ - "shape":"MultipartUploadId", - "location":"querystring", - "locationName":"uploadId", - "documentation":"Upload ID identifying the multipart upload whose parts are being listed." - } - } - }, - "Location":{"type":"string"}, - "LoggingEnabled":{ - "type":"structure", - "members":{ - "TargetBucket":{ - "shape":"TargetBucket", - "documentation":"Specifies the bucket where you want Amazon S3 to store server access logs. You can have your logs delivered to any bucket that you own, including the same bucket that is being logged. You can also configure multiple buckets to deliver their logs to the same target bucket. In this case you should choose a different TargetPrefix for each source bucket so that the delivered log files can be distinguished by key." - }, - "TargetGrants":{"shape":"TargetGrants"}, - "TargetPrefix":{ - "shape":"TargetPrefix", - "documentation":"This element lets you specify a prefix for the keys that the log files will be stored under." - } - } - }, - "MFA":{"type":"string"}, - "MFADelete":{ - "type":"string", - "enum":[ - "Enabled", - "Disabled" - ] - }, - "MFADeleteStatus":{ - "type":"string", - "enum":[ - "Enabled", - "Disabled" - ] - }, - "Marker":{"type":"string"}, - "MaxAgeSeconds":{"type":"integer"}, - "MaxKeys":{"type":"integer"}, - "MaxParts":{"type":"integer"}, - "MaxUploads":{"type":"integer"}, - "Message":{"type":"string"}, - "Metadata":{ - "type":"map", - "key":{"shape":"MetadataKey"}, - "value":{"shape":"MetadataValue"} - }, - "MetadataDirective":{ - "type":"string", - "enum":[ - "COPY", - "REPLACE" - ] - }, - "MetadataKey":{"type":"string"}, - "MetadataValue":{"type":"string"}, - "MissingMeta":{"type":"integer"}, - "MultipartUpload":{ - "type":"structure", - "members":{ - "UploadId":{ - "shape":"MultipartUploadId", - "documentation":"Upload ID that identifies the multipart upload." - }, - "Key":{ - "shape":"ObjectKey", - "documentation":"Key of the object for which the multipart upload was initiated." - }, - "Initiated":{ - "shape":"Initiated", - "documentation":"Date and time at which the multipart upload was initiated." - }, - "StorageClass":{ - "shape":"StorageClass", - "documentation":"The class of storage used to store the object." - }, - "Owner":{"shape":"Owner"}, - "Initiator":{ - "shape":"Initiator", - "documentation":"Identifies who initiated the multipart upload." - } - } - }, - "MultipartUploadId":{"type":"string"}, - "MultipartUploadList":{ - "type":"list", - "member":{"shape":"MultipartUpload"}, - "flattened":true - }, - "NextKeyMarker":{"type":"string"}, - "NextMarker":{"type":"string"}, - "NextPartNumberMarker":{"type":"integer"}, - "NextUploadIdMarker":{"type":"string"}, - "NextVersionIdMarker":{"type":"string"}, - "NoSuchBucket":{ - "type":"structure", - "members":{ - }, - "exception":true, - "documentation":"The specified bucket does not exist." - }, - "NoSuchKey":{ - "type":"structure", - "members":{ - }, - "exception":true, - "documentation":"The specified key does not exist." - }, - "NoSuchUpload":{ - "type":"structure", - "members":{ - }, - "exception":true, - "documentation":"The specified multipart upload does not exist." - }, - "NoncurrentVersionExpiration":{ - "type":"structure", - "members":{ - "NoncurrentDays":{ - "shape":"Days", - "documentation":"Specifies the number of days an object is noncurrent before Amazon S3 can perform the associated action. For information about the noncurrent days calculations, see How Amazon S3 Calculates When an Object Became Noncurrent in the Amazon Simple Storage Service Developer Guide." - } - }, - "documentation":"Specifies when noncurrent object versions expire. Upon expiration, Amazon S3 permanently deletes the noncurrent object versions. You set this lifecycle configuration action on a bucket that has versioning enabled (or suspended) to request that Amazon S3 delete noncurrent object versions at a specific period in the object's lifetime." - }, - "NoncurrentVersionTransition":{ - "type":"structure", - "members":{ - "NoncurrentDays":{ - "shape":"Days", - "documentation":"Specifies the number of days an object is noncurrent before Amazon S3 can perform the associated action. For information about the noncurrent days calculations, see How Amazon S3 Calculates When an Object Became Noncurrent in the Amazon Simple Storage Service Developer Guide." - }, - "StorageClass":{ - "shape":"TransitionStorageClass", - "documentation":"The class of storage used to store the object." - } - }, - "documentation":"Container for the transition rule that describes when noncurrent objects transition to the GLACIER storage class. If your bucket is versioning-enabled (or versioning is suspended), you can set this action to request that Amazon S3 transition noncurrent object versions to the GLACIER storage class at a specific period in the object's lifetime." - }, - "NotificationConfiguration":{ - "type":"structure", - "members":{ - "TopicConfiguration":{"shape":"TopicConfiguration"}, - "QueueConfiguration":{"shape":"QueueConfiguration"}, - "CloudFunctionConfiguration":{"shape":"CloudFunctionConfiguration"} - } - }, - "NotificationId":{"type":"string"}, - "Object":{ - "type":"structure", - "members":{ - "Key":{"shape":"ObjectKey"}, - "LastModified":{"shape":"LastModified"}, - "ETag":{"shape":"ETag"}, - "Size":{"shape":"Size"}, - "StorageClass":{ - "shape":"ObjectStorageClass", - "documentation":"The class of storage used to store the object." - }, - "Owner":{"shape":"Owner"} - } - }, - "ObjectAlreadyInActiveTierError":{ - "type":"structure", - "members":{ - }, - "exception":true, - "documentation":"This operation is not allowed against this storage tier" - }, - "ObjectCannedACL":{ - "type":"string", - "enum":[ - "private", - "public-read", - "public-read-write", - "authenticated-read", - "bucket-owner-read", - "bucket-owner-full-control" - ] - }, - "ObjectIdentifier":{ - "type":"structure", - "required":["Key"], - "members":{ - "Key":{ - "shape":"ObjectKey", - "documentation":"Key name of the object to delete." - }, - "VersionId":{ - "shape":"ObjectVersionId", - "documentation":"VersionId for the specific version of the object to delete." - } - } - }, - "ObjectIdentifierList":{ - "type":"list", - "member":{"shape":"ObjectIdentifier"}, - "flattened":true - }, - "ObjectKey":{"type":"string"}, - "ObjectList":{ - "type":"list", - "member":{"shape":"Object"}, - "flattened":true - }, - "ObjectNotInActiveTierError":{ - "type":"structure", - "members":{ - }, - "exception":true, - "documentation":"The source object of the COPY operation is not in the active tier and is only stored in Amazon Glacier." - }, - "ObjectStorageClass":{ - "type":"string", - "enum":[ - "STANDARD", - "REDUCED_REDUNDANCY", - "GLACIER" - ] - }, - "ObjectVersion":{ - "type":"structure", - "members":{ - "ETag":{"shape":"ETag"}, - "Size":{ - "shape":"Size", - "documentation":"Size in bytes of the object." - }, - "StorageClass":{ - "shape":"ObjectVersionStorageClass", - "documentation":"The class of storage used to store the object." - }, - "Key":{ - "shape":"ObjectKey", - "documentation":"The object key." - }, - "VersionId":{ - "shape":"ObjectVersionId", - "documentation":"Version ID of an object." - }, - "IsLatest":{ - "shape":"IsLatest", - "documentation":"Specifies whether the object is (true) or is not (false) the latest version of an object." - }, - "LastModified":{ - "shape":"LastModified", - "documentation":"Date and time the object was last modified." - }, - "Owner":{"shape":"Owner"} - } - }, - "ObjectVersionId":{"type":"string"}, - "ObjectVersionList":{ - "type":"list", - "member":{"shape":"ObjectVersion"}, - "flattened":true - }, - "ObjectVersionStorageClass":{ - "type":"string", - "enum":["STANDARD"] - }, - "Owner":{ - "type":"structure", - "members":{ - "DisplayName":{"shape":"DisplayName"}, - "ID":{"shape":"ID"} - } - }, - "Part":{ - "type":"structure", - "members":{ - "PartNumber":{ - "shape":"PartNumber", - "documentation":"Part number identifying the part." - }, - "LastModified":{ - "shape":"LastModified", - "documentation":"Date and time at which the part was uploaded." - }, - "ETag":{ - "shape":"ETag", - "documentation":"Entity tag returned when the part was uploaded." - }, - "Size":{ - "shape":"Size", - "documentation":"Size of the uploaded part data." - } - } - }, - "PartNumber":{"type":"integer"}, - "PartNumberMarker":{"type":"integer"}, - "Parts":{ - "type":"list", - "member":{"shape":"Part"}, - "flattened":true - }, - "Payer":{ - "type":"string", - "enum":[ - "Requester", - "BucketOwner" - ] - }, - "Permission":{ - "type":"string", - "enum":[ - "FULL_CONTROL", - "WRITE", - "WRITE_ACP", - "READ", - "READ_ACP" - ] - }, - "Policy":{"type":"string"}, - "Prefix":{"type":"string"}, - "Protocol":{ - "type":"string", - "enum":[ - "http", - "https" - ] - }, - "PutBucketAclRequest":{ - "type":"structure", - "required":["Bucket"], - "members":{ - "ACL":{ - "shape":"BucketCannedACL", - "location":"header", - "locationName":"x-amz-acl", - "documentation":"The canned ACL to apply to the bucket." - }, - "AccessControlPolicy":{ - "shape":"AccessControlPolicy", - "xmlNamespace":{"uri":"http://s3.amazonaws.com/doc/2006-03-01/"}, - "locationName":"AccessControlPolicy" - }, - "Bucket":{ - "shape":"BucketName", - "location":"uri", - "locationName":"Bucket" - }, - "ContentMD5":{ - "shape":"ContentMD5", - "location":"header", - "locationName":"Content-MD5" - }, - "GrantFullControl":{ - "shape":"GrantFullControl", - "location":"header", - "locationName":"x-amz-grant-full-control", - "documentation":"Allows grantee the read, write, read ACP, and write ACP permissions on the bucket." - }, - "GrantRead":{ - "shape":"GrantRead", - "location":"header", - "locationName":"x-amz-grant-read", - "documentation":"Allows grantee to list the objects in the bucket." - }, - "GrantReadACP":{ - "shape":"GrantReadACP", - "location":"header", - "locationName":"x-amz-grant-read-acp", - "documentation":"Allows grantee to read the bucket ACL." - }, - "GrantWrite":{ - "shape":"GrantWrite", - "location":"header", - "locationName":"x-amz-grant-write", - "documentation":"Allows grantee to create, overwrite, and delete any object in the bucket." - }, - "GrantWriteACP":{ - "shape":"GrantWriteACP", - "location":"header", - "locationName":"x-amz-grant-write-acp", - "documentation":"Allows grantee to write the ACL for the applicable bucket." - } - }, - "payload":"AccessControlPolicy" - }, - "PutBucketCorsRequest":{ - "type":"structure", - "required":["Bucket"], - "members":{ - "Bucket":{ - "shape":"BucketName", - "location":"uri", - "locationName":"Bucket" - }, - "CORSConfiguration":{ - "shape":"CORSConfiguration", - "xmlNamespace":{"uri":"http://s3.amazonaws.com/doc/2006-03-01/"}, - "locationName":"CORSConfiguration" - }, - "ContentMD5":{ - "shape":"ContentMD5", - "location":"header", - "locationName":"Content-MD5" - } - }, - "payload":"CORSConfiguration" - }, - "PutBucketLifecycleRequest":{ - "type":"structure", - "required":["Bucket"], - "members":{ - "Bucket":{ - "shape":"BucketName", - "location":"uri", - "locationName":"Bucket" - }, - "ContentMD5":{ - "shape":"ContentMD5", - "location":"header", - "locationName":"Content-MD5" - }, - "LifecycleConfiguration":{ - "shape":"LifecycleConfiguration", - "xmlNamespace":{"uri":"http://s3.amazonaws.com/doc/2006-03-01/"}, - "locationName":"LifecycleConfiguration" - } - }, - "payload":"LifecycleConfiguration" - }, - "PutBucketLoggingRequest":{ - "type":"structure", - "required":[ - "Bucket", - "BucketLoggingStatus" - ], - "members":{ - "Bucket":{ - "shape":"BucketName", - "location":"uri", - "locationName":"Bucket" - }, - "BucketLoggingStatus":{ - "shape":"BucketLoggingStatus", - "xmlNamespace":{"uri":"http://s3.amazonaws.com/doc/2006-03-01/"}, - "locationName":"BucketLoggingStatus" - }, - "ContentMD5":{ - "shape":"ContentMD5", - "location":"header", - "locationName":"Content-MD5" - } - }, - "payload":"BucketLoggingStatus" - }, - "PutBucketNotificationRequest":{ - "type":"structure", - "required":[ - "Bucket", - "NotificationConfiguration" - ], - "members":{ - "Bucket":{ - "shape":"BucketName", - "location":"uri", - "locationName":"Bucket" - }, - "ContentMD5":{ - "shape":"ContentMD5", - "location":"header", - "locationName":"Content-MD5" - }, - "NotificationConfiguration":{ - "shape":"NotificationConfiguration", - "xmlNamespace":{"uri":"http://s3.amazonaws.com/doc/2006-03-01/"}, - "locationName":"NotificationConfiguration" - } - }, - "payload":"NotificationConfiguration" - }, - "PutBucketPolicyRequest":{ - "type":"structure", - "required":[ - "Bucket", - "Policy" - ], - "members":{ - "Bucket":{ - "shape":"BucketName", - "location":"uri", - "locationName":"Bucket" - }, - "ContentMD5":{ - "shape":"ContentMD5", - "location":"header", - "locationName":"Content-MD5" - }, - "Policy":{ - "shape":"Policy", - "documentation":"The bucket policy as a JSON document." - } - }, - "payload":"Policy" - }, - "PutBucketRequestPaymentRequest":{ - "type":"structure", - "required":[ - "Bucket", - "RequestPaymentConfiguration" - ], - "members":{ - "Bucket":{ - "shape":"BucketName", - "location":"uri", - "locationName":"Bucket" - }, - "ContentMD5":{ - "shape":"ContentMD5", - "location":"header", - "locationName":"Content-MD5" - }, - "RequestPaymentConfiguration":{ - "shape":"RequestPaymentConfiguration", - "xmlNamespace":{"uri":"http://s3.amazonaws.com/doc/2006-03-01/"}, - "locationName":"RequestPaymentConfiguration" - } - }, - "payload":"RequestPaymentConfiguration" - }, - "PutBucketTaggingRequest":{ - "type":"structure", - "required":[ - "Bucket", - "Tagging" - ], - "members":{ - "Bucket":{ - "shape":"BucketName", - "location":"uri", - "locationName":"Bucket" - }, - "ContentMD5":{ - "shape":"ContentMD5", - "location":"header", - "locationName":"Content-MD5" - }, - "Tagging":{ - "shape":"Tagging", - "xmlNamespace":{"uri":"http://s3.amazonaws.com/doc/2006-03-01/"}, - "locationName":"Tagging" - } - }, - "payload":"Tagging" - }, - "PutBucketVersioningRequest":{ - "type":"structure", - "required":[ - "Bucket", - "VersioningConfiguration" - ], - "members":{ - "Bucket":{ - "shape":"BucketName", - "location":"uri", - "locationName":"Bucket" - }, - "ContentMD5":{ - "shape":"ContentMD5", - "location":"header", - "locationName":"Content-MD5" - }, - "MFA":{ - "shape":"MFA", - "location":"header", - "locationName":"x-amz-mfa", - "documentation":"The concatenation of the authentication device's serial number, a space, and the value that is displayed on your authentication device." - }, - "VersioningConfiguration":{ - "shape":"VersioningConfiguration", - "xmlNamespace":{"uri":"http://s3.amazonaws.com/doc/2006-03-01/"}, - "locationName":"VersioningConfiguration" - } - }, - "payload":"VersioningConfiguration" - }, - "PutBucketWebsiteRequest":{ - "type":"structure", - "required":[ - "Bucket", - "WebsiteConfiguration" - ], - "members":{ - "Bucket":{ - "shape":"BucketName", - "location":"uri", - "locationName":"Bucket" - }, - "ContentMD5":{ - "shape":"ContentMD5", - "location":"header", - "locationName":"Content-MD5" - }, - "WebsiteConfiguration":{ - "shape":"WebsiteConfiguration", - "xmlNamespace":{"uri":"http://s3.amazonaws.com/doc/2006-03-01/"}, - "locationName":"WebsiteConfiguration" - } - }, - "payload":"WebsiteConfiguration" - }, - "PutObjectAclRequest":{ - "type":"structure", - "required":[ - "Bucket", - "Key" - ], - "members":{ - "ACL":{ - "shape":"ObjectCannedACL", - "location":"header", - "locationName":"x-amz-acl", - "documentation":"The canned ACL to apply to the object." - }, - "AccessControlPolicy":{ - "shape":"AccessControlPolicy", - "xmlNamespace":{"uri":"http://s3.amazonaws.com/doc/2006-03-01/"}, - "locationName":"AccessControlPolicy" - }, - "Bucket":{ - "shape":"BucketName", - "location":"uri", - "locationName":"Bucket" - }, - "ContentMD5":{ - "shape":"ContentMD5", - "location":"header", - "locationName":"Content-MD5" - }, - "GrantFullControl":{ - "shape":"GrantFullControl", - "location":"header", - "locationName":"x-amz-grant-full-control", - "documentation":"Allows grantee the read, write, read ACP, and write ACP permissions on the bucket." - }, - "GrantRead":{ - "shape":"GrantRead", - "location":"header", - "locationName":"x-amz-grant-read", - "documentation":"Allows grantee to list the objects in the bucket." - }, - "GrantReadACP":{ - "shape":"GrantReadACP", - "location":"header", - "locationName":"x-amz-grant-read-acp", - "documentation":"Allows grantee to read the bucket ACL." - }, - "GrantWrite":{ - "shape":"GrantWrite", - "location":"header", - "locationName":"x-amz-grant-write", - "documentation":"Allows grantee to create, overwrite, and delete any object in the bucket." - }, - "GrantWriteACP":{ - "shape":"GrantWriteACP", - "location":"header", - "locationName":"x-amz-grant-write-acp", - "documentation":"Allows grantee to write the ACL for the applicable bucket." - }, - "Key":{ - "shape":"ObjectKey", - "location":"uri", - "locationName":"Key" - } - }, - "payload":"AccessControlPolicy" - }, - "PutObjectOutput":{ - "type":"structure", - "members":{ - "Expiration":{ - "shape":"Expiration", - "location":"header", - "locationName":"x-amz-expiration", - "documentation":"If the object expiration is configured, this will contain the expiration date (expiry-date) and rule ID (rule-id). The value of rule-id is URL encoded." - }, - "ETag":{ - "shape":"ETag", - "location":"header", - "locationName":"ETag", - "documentation":"Entity tag for the uploaded object." - }, - "ServerSideEncryption":{ - "shape":"ServerSideEncryption", - "location":"header", - "locationName":"x-amz-server-side-encryption", - "documentation":"The Server-side encryption algorithm used when storing this object in S3 (e.g., AES256, aws:kms)." - }, - "VersionId":{ - "shape":"ObjectVersionId", - "location":"header", - "locationName":"x-amz-version-id", - "documentation":"Version of the object." - }, - "SSECustomerAlgorithm":{ - "shape":"SSECustomerAlgorithm", - "location":"header", - "locationName":"x-amz-server-side-encryption-customer-algorithm", - "documentation":"If server-side encryption with a customer-provided encryption key was requested, the response will include this header confirming the encryption algorithm used." - }, - "SSECustomerKeyMD5":{ - "shape":"SSECustomerKeyMD5", - "location":"header", - "locationName":"x-amz-server-side-encryption-customer-key-MD5", - "documentation":"If server-side encryption with a customer-provided encryption key was requested, the response will include this header to provide round trip message integrity verification of the customer-provided encryption key." - }, - "SSEKMSKeyId":{ - "shape":"SSEKMSKeyId", - "location":"header", - "locationName":"x-amz-server-side-encryption-aws-kms-key-id", - "documentation":"If present, specifies the ID of the AWS Key Management Service (KMS) master encryption key that was used for the object." - } - } - }, - "PutObjectRequest":{ - "type":"structure", - "required":[ - "Bucket", - "Key" - ], - "members":{ - "ACL":{ - "shape":"ObjectCannedACL", - "location":"header", - "locationName":"x-amz-acl", - "documentation":"The canned ACL to apply to the object." - }, - "Body":{ - "shape":"Body", - "streaming":true, - "documentation":"Object data." - }, - "Bucket":{ - "shape":"BucketName", - "location":"uri", - "locationName":"Bucket" - }, - "CacheControl":{ - "shape":"CacheControl", - "location":"header", - "locationName":"Cache-Control", - "documentation":"Specifies caching behavior along the request/reply chain." - }, - "ContentDisposition":{ - "shape":"ContentDisposition", - "location":"header", - "locationName":"Content-Disposition", - "documentation":"Specifies presentational information for the object." - }, - "ContentEncoding":{ - "shape":"ContentEncoding", - "location":"header", - "locationName":"Content-Encoding", - "documentation":"Specifies what content encodings have been applied to the object and thus what decoding mechanisms must be applied to obtain the media-type referenced by the Content-Type header field." - }, - "ContentLanguage":{ - "shape":"ContentLanguage", - "location":"header", - "locationName":"Content-Language", - "documentation":"The language the content is in." - }, - "ContentLength":{ - "shape":"ContentLength", - "location":"header", - "locationName":"Content-Length", - "documentation":"Size of the body in bytes. This parameter is useful when the size of the body cannot be determined automatically." - }, - "ContentMD5":{ - "shape":"ContentMD5", - "location":"header", - "locationName":"Content-MD5" - }, - "ContentType":{ - "shape":"ContentType", - "location":"header", - "locationName":"Content-Type", - "documentation":"A standard MIME type describing the format of the object data." - }, - "Expires":{ - "shape":"Expires", - "location":"header", - "locationName":"Expires", - "documentation":"The date and time at which the object is no longer cacheable." - }, - "GrantFullControl":{ - "shape":"GrantFullControl", - "location":"header", - "locationName":"x-amz-grant-full-control", - "documentation":"Gives the grantee READ, READ_ACP, and WRITE_ACP permissions on the object." - }, - "GrantRead":{ - "shape":"GrantRead", - "location":"header", - "locationName":"x-amz-grant-read", - "documentation":"Allows grantee to read the object data and its metadata." - }, - "GrantReadACP":{ - "shape":"GrantReadACP", - "location":"header", - "locationName":"x-amz-grant-read-acp", - "documentation":"Allows grantee to read the object ACL." - }, - "GrantWriteACP":{ - "shape":"GrantWriteACP", - "location":"header", - "locationName":"x-amz-grant-write-acp", - "documentation":"Allows grantee to write the ACL for the applicable object." - }, - "Key":{ - "shape":"ObjectKey", - "location":"uri", - "locationName":"Key" - }, - "Metadata":{ - "shape":"Metadata", - "location":"headers", - "documentation":"A map of metadata to store with the object in S3.", - "locationName":"x-amz-meta-" - }, - "ServerSideEncryption":{ - "shape":"ServerSideEncryption", - "location":"header", - "locationName":"x-amz-server-side-encryption", - "documentation":"The Server-side encryption algorithm used when storing this object in S3 (e.g., AES256, aws:kms)." - }, - "StorageClass":{ - "shape":"StorageClass", - "location":"header", - "locationName":"x-amz-storage-class", - "documentation":"The type of storage to use for the object. Defaults to 'STANDARD'." - }, - "WebsiteRedirectLocation":{ - "shape":"WebsiteRedirectLocation", - "location":"header", - "locationName":"x-amz-website-redirect-location", - "documentation":"If the bucket is configured as a website, redirects requests for this object to another object in the same bucket or to an external URL. Amazon S3 stores the value of this header in the object metadata." - }, - "SSECustomerAlgorithm":{ - "shape":"SSECustomerAlgorithm", - "location":"header", - "locationName":"x-amz-server-side-encryption-customer-algorithm", - "documentation":"Specifies the algorithm to use to when encrypting the object (e.g., AES256, aws:kms)." - }, - "SSECustomerKey":{ - "shape":"SSECustomerKey", - "location":"header", - "locationName":"x-amz-server-side-encryption-customer-key", - "documentation":"Specifies the customer-provided encryption key for Amazon S3 to use in encrypting data. This value is used to store the object and then it is discarded; Amazon does not store the encryption key. The key must be appropriate for use with the algorithm specified in the x-amz-server-side​-encryption​-customer-algorithm header." - }, - "SSECustomerKeyMD5":{ - "shape":"SSECustomerKeyMD5", - "location":"header", - "locationName":"x-amz-server-side-encryption-customer-key-MD5", - "documentation":"Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321. Amazon S3 uses this header for a message integrity check to ensure the encryption key was transmitted without error." - }, - "SSEKMSKeyId":{ - "shape":"SSEKMSKeyId", - "location":"header", - "locationName":"x-amz-server-side-encryption-aws-kms-key-id", - "documentation":"Specifies the AWS KMS key ID to use for object encryption. All GET and PUT requests for an object protected by AWS KMS will fail if not made via SSL or using SigV4. Documentation on configuring any of the officially supported AWS SDKs and CLI can be found at http://docs.aws.amazon.com/AmazonS3/latest/dev/UsingAWSSDK.html#specify-signature-version" - } - }, - "payload":"Body" - }, - "Queue":{"type":"string"}, - "QueueConfiguration":{ - "type":"structure", - "members":{ - "Id":{"shape":"NotificationId"}, - "Event":{ - "shape":"Event", - "deprecated":true - }, - "Events":{ - "shape":"Events", - "locationName":"Event" - }, - "Queue":{"shape":"Queue"} - } - }, - "Quiet":{"type":"boolean"}, - "Range":{"type":"string"}, - "Redirect":{ - "type":"structure", - "members":{ - "HostName":{ - "shape":"HostName", - "documentation":"The host name to use in the redirect request." - }, - "HttpRedirectCode":{ - "shape":"HttpRedirectCode", - "documentation":"The HTTP redirect code to use on the response. Not required if one of the siblings is present." - }, - "Protocol":{ - "shape":"Protocol", - "documentation":"Protocol to use (http, https) when redirecting requests. The default is the protocol that is used in the original request." - }, - "ReplaceKeyPrefixWith":{ - "shape":"ReplaceKeyPrefixWith", - "documentation":"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." - }, - "ReplaceKeyWith":{ - "shape":"ReplaceKeyWith", - "documentation":"The specific object key to use in the redirect request. For example, redirect request to error.html. Not required if one of the sibling is present. Can be present only if ReplaceKeyPrefixWith is not provided." - } - } - }, - "RedirectAllRequestsTo":{ - "type":"structure", - "required":["HostName"], - "members":{ - "HostName":{ - "shape":"HostName", - "documentation":"Name of the host where requests will be redirected." - }, - "Protocol":{ - "shape":"Protocol", - "documentation":"Protocol to use (http, https) when redirecting requests. The default is the protocol that is used in the original request." - } - } - }, - "ReplaceKeyPrefixWith":{"type":"string"}, - "ReplaceKeyWith":{"type":"string"}, - "RequestPaymentConfiguration":{ - "type":"structure", - "required":["Payer"], - "members":{ - "Payer":{ - "shape":"Payer", - "documentation":"Specifies who pays for the download and request fees." - } - } - }, - "ResponseCacheControl":{"type":"string"}, - "ResponseContentDisposition":{"type":"string"}, - "ResponseContentEncoding":{"type":"string"}, - "ResponseContentLanguage":{"type":"string"}, - "ResponseContentType":{"type":"string"}, - "ResponseExpires":{"type":"timestamp"}, - "Restore":{"type":"string"}, - "RestoreObjectRequest":{ - "type":"structure", - "required":[ - "Bucket", - "Key" - ], - "members":{ - "Bucket":{ - "shape":"BucketName", - "location":"uri", - "locationName":"Bucket" - }, - "Key":{ - "shape":"ObjectKey", - "location":"uri", - "locationName":"Key" - }, - "VersionId":{ - "shape":"ObjectVersionId", - "location":"querystring", - "locationName":"versionId" - }, - "RestoreRequest":{ - "shape":"RestoreRequest", - "xmlNamespace":{"uri":"http://s3.amazonaws.com/doc/2006-03-01/"}, - "locationName":"RestoreRequest" - } - }, - "payload":"RestoreRequest" - }, - "RestoreRequest":{ - "type":"structure", - "required":["Days"], - "members":{ - "Days":{ - "shape":"Days", - "documentation":"Lifetime of the active copy in days" - } - } - }, - "RoutingRule":{ - "type":"structure", - "required":["Redirect"], - "members":{ - "Condition":{ - "shape":"Condition", - "documentation":"A container for describing a condition that must be met for the specified redirect to apply. For example, 1. If request is for pages in the /docs folder, redirect to the /documents folder. 2. If request results in HTTP error 4xx, redirect request to another host where you might process the error." - }, - "Redirect":{ - "shape":"Redirect", - "documentation":"Container for redirect information. You can redirect requests to another host, to another page, or with another protocol. In the event of an error, you can can specify a different error code to return." - } - } - }, - "RoutingRules":{ - "type":"list", - "member":{ - "shape":"RoutingRule", - "locationName":"RoutingRule" - } - }, - "Rule":{ - "type":"structure", - "required":[ - "Prefix", - "Status" - ], - "members":{ - "Expiration":{"shape":"LifecycleExpiration"}, - "ID":{ - "shape":"ID", - "documentation":"Unique identifier for the rule. The value cannot be longer than 255 characters." - }, - "Prefix":{ - "shape":"Prefix", - "documentation":"Prefix identifying one or more objects to which the rule applies." - }, - "Status":{ - "shape":"ExpirationStatus", - "documentation":"If 'Enabled', the rule is currently being applied. If 'Disabled', the rule is not currently being applied." - }, - "Transition":{"shape":"Transition"}, - "NoncurrentVersionTransition":{"shape":"NoncurrentVersionTransition"}, - "NoncurrentVersionExpiration":{"shape":"NoncurrentVersionExpiration"} - } - }, - "Rules":{ - "type":"list", - "member":{"shape":"Rule"}, - "flattened":true - }, - "SSECustomerAlgorithm":{"type":"string"}, - "SSECustomerKey":{ - "type":"string", - "sensitive":true - }, - "SSECustomerKeyMD5":{"type":"string"}, - "SSEKMSKeyId":{ - "type":"string", - "sensitive":true - }, - "ServerSideEncryption":{ - "type":"string", - "enum":["AES256"] - }, - "Size":{"type":"integer"}, - "StorageClass":{ - "type":"string", - "enum":[ - "STANDARD", - "REDUCED_REDUNDANCY" - ] - }, - "Suffix":{"type":"string"}, - "Tag":{ - "type":"structure", - "required":[ - "Key", - "Value" - ], - "members":{ - "Key":{ - "shape":"ObjectKey", - "documentation":"Name of the tag." - }, - "Value":{ - "shape":"Value", - "documentation":"Value of the tag." - } - } - }, - "TagSet":{ - "type":"list", - "member":{ - "shape":"Tag", - "locationName":"Tag" - } - }, - "Tagging":{ - "type":"structure", - "required":["TagSet"], - "members":{ - "TagSet":{"shape":"TagSet"} - } - }, - "TargetBucket":{"type":"string"}, - "TargetGrant":{ - "type":"structure", - "members":{ - "Grantee":{"shape":"Grantee"}, - "Permission":{ - "shape":"BucketLogsPermission", - "documentation":"Logging permissions assigned to the Grantee for the bucket." - } - } - }, - "TargetGrants":{ - "type":"list", - "member":{ - "shape":"TargetGrant", - "locationName":"Grant" - } - }, - "TargetPrefix":{"type":"string"}, - "Topic":{"type":"string"}, - "TopicConfiguration":{ - "type":"structure", - "members":{ - "Id":{"shape":"NotificationId"}, - "Events":{ - "shape":"Events", - "locationName":"Event" - }, - "Event":{ - "shape":"Event", - "deprecated":true, - "documentation":"Bucket event for which to send notifications." - }, - "Topic":{ - "shape":"Topic", - "documentation":"Amazon SNS topic to which Amazon S3 will publish a message to report the specified events for the bucket." - } - } - }, - "Transition":{ - "type":"structure", - "members":{ - "Date":{ - "shape":"Date", - "documentation":"Indicates at what date the object is to be moved or deleted. Should be in GMT ISO 8601 Format." - }, - "Days":{ - "shape":"Days", - "documentation":"Indicates the lifetime, in days, of the objects that are subject to the rule. The value must be a non-zero positive integer." - }, - "StorageClass":{ - "shape":"TransitionStorageClass", - "documentation":"The class of storage used to store the object." - } - } - }, - "TransitionStorageClass":{ - "type":"string", - "enum":["GLACIER"] - }, - "Type":{ - "type":"string", - "enum":[ - "CanonicalUser", - "AmazonCustomerByEmail", - "Group" - ], - "xmlAttribute":true, - "locationName":"xsi:type" - }, - "URI":{"type":"string"}, - "UploadIdMarker":{"type":"string"}, - "UploadPartCopyOutput":{ - "type":"structure", - "members":{ - "CopySourceVersionId":{ - "shape":"CopySourceVersionId", - "location":"header", - "locationName":"x-amz-copy-source-version-id", - "documentation":"The version of the source object that was copied, if you have enabled versioning on the source bucket." - }, - "CopyPartResult":{"shape":"CopyPartResult"}, - "ServerSideEncryption":{ - "shape":"ServerSideEncryption", - "location":"header", - "locationName":"x-amz-server-side-encryption", - "documentation":"The Server-side encryption algorithm used when storing this object in S3 (e.g., AES256, aws:kms)." - }, - "SSECustomerAlgorithm":{ - "shape":"SSECustomerAlgorithm", - "location":"header", - "locationName":"x-amz-server-side-encryption-customer-algorithm", - "documentation":"If server-side encryption with a customer-provided encryption key was requested, the response will include this header confirming the encryption algorithm used." - }, - "SSECustomerKeyMD5":{ - "shape":"SSECustomerKeyMD5", - "location":"header", - "locationName":"x-amz-server-side-encryption-customer-key-MD5", - "documentation":"If server-side encryption with a customer-provided encryption key was requested, the response will include this header to provide round trip message integrity verification of the customer-provided encryption key." - }, - "SSEKMSKeyId":{ - "shape":"SSEKMSKeyId", - "location":"header", - "locationName":"x-amz-server-side-encryption-aws-kms-key-id", - "documentation":"If present, specifies the ID of the AWS Key Management Service (KMS) master encryption key that was used for the object." - } - }, - "payload":"CopyPartResult" - }, - "UploadPartCopyRequest":{ - "type":"structure", - "required":[ - "Bucket", - "CopySource", - "Key", - "PartNumber", - "UploadId" - ], - "members":{ - "Bucket":{ - "shape":"BucketName", - "location":"uri", - "locationName":"Bucket" - }, - "CopySource":{ - "shape":"CopySource", - "location":"header", - "locationName":"x-amz-copy-source", - "documentation":"The name of the source bucket and key name of the source object, separated by a slash (/). Must be URL-encoded." - }, - "CopySourceIfMatch":{ - "shape":"CopySourceIfMatch", - "location":"header", - "locationName":"x-amz-copy-source-if-match", - "documentation":"Copies the object if its entity tag (ETag) matches the specified tag." - }, - "CopySourceIfModifiedSince":{ - "shape":"CopySourceIfModifiedSince", - "location":"header", - "locationName":"x-amz-copy-source-if-modified-since", - "documentation":"Copies the object if it has been modified since the specified time." - }, - "CopySourceIfNoneMatch":{ - "shape":"CopySourceIfNoneMatch", - "location":"header", - "locationName":"x-amz-copy-source-if-none-match", - "documentation":"Copies the object if its entity tag (ETag) is different than the specified ETag." - }, - "CopySourceIfUnmodifiedSince":{ - "shape":"CopySourceIfUnmodifiedSince", - "location":"header", - "locationName":"x-amz-copy-source-if-unmodified-since", - "documentation":"Copies the object if it hasn't been modified since the specified time." - }, - "CopySourceRange":{ - "shape":"CopySourceRange", - "location":"header", - "locationName":"x-amz-copy-source-range", - "documentation":"The range of bytes to copy from the source object. The range value must use the form bytes=first-last, where the first and last are the zero-based byte offsets to copy. For example, bytes=0-9 indicates that you want to copy the first ten bytes of the source. You can copy a range only if the source object is greater than 5 GB." - }, - "Key":{ - "shape":"ObjectKey", - "location":"uri", - "locationName":"Key" - }, - "PartNumber":{ - "shape":"PartNumber", - "location":"querystring", - "locationName":"partNumber", - "documentation":"Part number of part being copied." - }, - "UploadId":{ - "shape":"MultipartUploadId", - "location":"querystring", - "locationName":"uploadId", - "documentation":"Upload ID identifying the multipart upload whose part is being copied." - }, - "SSECustomerAlgorithm":{ - "shape":"SSECustomerAlgorithm", - "location":"header", - "locationName":"x-amz-server-side-encryption-customer-algorithm", - "documentation":"Specifies the algorithm to use to when encrypting the object (e.g., AES256, aws:kms)." - }, - "SSECustomerKey":{ - "shape":"SSECustomerKey", - "location":"header", - "locationName":"x-amz-server-side-encryption-customer-key", - "documentation":"Specifies the customer-provided encryption key for Amazon S3 to use in encrypting data. This value is used to store the object and then it is discarded; Amazon does not store the encryption key. The key must be appropriate for use with the algorithm specified in the x-amz-server-side​-encryption​-customer-algorithm header. This must be the same encryption key specified in the initiate multipart upload request." - }, - "SSECustomerKeyMD5":{ - "shape":"SSECustomerKeyMD5", - "location":"header", - "locationName":"x-amz-server-side-encryption-customer-key-MD5", - "documentation":"Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321. Amazon S3 uses this header for a message integrity check to ensure the encryption key was transmitted without error." - }, - "CopySourceSSECustomerAlgorithm":{ - "shape":"CopySourceSSECustomerAlgorithm", - "location":"header", - "locationName":"x-amz-copy-source-server-side-encryption-customer-algorithm", - "documentation":"Specifies the algorithm to use when decrypting the source object (e.g., AES256)." - }, - "CopySourceSSECustomerKey":{ - "shape":"CopySourceSSECustomerKey", - "location":"header", - "locationName":"x-amz-copy-source-server-side-encryption-customer-key", - "documentation":"Specifies the customer-provided encryption key for Amazon S3 to use to decrypt the source object. The encryption key provided in this header must be one that was used when the source object was created." - }, - "CopySourceSSECustomerKeyMD5":{ - "shape":"CopySourceSSECustomerKeyMD5", - "location":"header", - "locationName":"x-amz-copy-source-server-side-encryption-customer-key-MD5", - "documentation":"Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321. Amazon S3 uses this header for a message integrity check to ensure the encryption key was transmitted without error." - } - } - }, - "UploadPartOutput":{ - "type":"structure", - "members":{ - "ServerSideEncryption":{ - "shape":"ServerSideEncryption", - "location":"header", - "locationName":"x-amz-server-side-encryption", - "documentation":"The Server-side encryption algorithm used when storing this object in S3 (e.g., AES256, aws:kms)." - }, - "ETag":{ - "shape":"ETag", - "location":"header", - "locationName":"ETag", - "documentation":"Entity tag for the uploaded object." - }, - "SSECustomerAlgorithm":{ - "shape":"SSECustomerAlgorithm", - "location":"header", - "locationName":"x-amz-server-side-encryption-customer-algorithm", - "documentation":"If server-side encryption with a customer-provided encryption key was requested, the response will include this header confirming the encryption algorithm used." - }, - "SSECustomerKeyMD5":{ - "shape":"SSECustomerKeyMD5", - "location":"header", - "locationName":"x-amz-server-side-encryption-customer-key-MD5", - "documentation":"If server-side encryption with a customer-provided encryption key was requested, the response will include this header to provide round trip message integrity verification of the customer-provided encryption key." - }, - "SSEKMSKeyId":{ - "shape":"SSEKMSKeyId", - "location":"header", - "locationName":"x-amz-server-side-encryption-aws-kms-key-id", - "documentation":"If present, specifies the ID of the AWS Key Management Service (KMS) master encryption key that was used for the object." - } - } - }, - "UploadPartRequest":{ - "type":"structure", - "required":[ - "Bucket", - "Key", - "PartNumber", - "UploadId" - ], - "members":{ - "Body":{ - "shape":"Body", - "streaming":true - }, - "Bucket":{ - "shape":"BucketName", - "location":"uri", - "locationName":"Bucket" - }, - "ContentLength":{ - "shape":"ContentLength", - "location":"header", - "locationName":"Content-Length", - "documentation":"Size of the body in bytes. This parameter is useful when the size of the body cannot be determined automatically." - }, - "ContentMD5":{ - "shape":"ContentMD5", - "location":"header", - "locationName":"Content-MD5" - }, - "Key":{ - "shape":"ObjectKey", - "location":"uri", - "locationName":"Key" - }, - "PartNumber":{ - "shape":"PartNumber", - "location":"querystring", - "locationName":"partNumber", - "documentation":"Part number of part being uploaded." - }, - "UploadId":{ - "shape":"MultipartUploadId", - "location":"querystring", - "locationName":"uploadId", - "documentation":"Upload ID identifying the multipart upload whose part is being uploaded." - }, - "SSECustomerAlgorithm":{ - "shape":"SSECustomerAlgorithm", - "location":"header", - "locationName":"x-amz-server-side-encryption-customer-algorithm", - "documentation":"Specifies the algorithm to use to when encrypting the object (e.g., AES256, aws:kms)." - }, - "SSECustomerKey":{ - "shape":"SSECustomerKey", - "location":"header", - "locationName":"x-amz-server-side-encryption-customer-key", - "documentation":"Specifies the customer-provided encryption key for Amazon S3 to use in encrypting data. This value is used to store the object and then it is discarded; Amazon does not store the encryption key. The key must be appropriate for use with the algorithm specified in the x-amz-server-side​-encryption​-customer-algorithm header. This must be the same encryption key specified in the initiate multipart upload request." - }, - "SSECustomerKeyMD5":{ - "shape":"SSECustomerKeyMD5", - "location":"header", - "locationName":"x-amz-server-side-encryption-customer-key-MD5", - "documentation":"Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321. Amazon S3 uses this header for a message integrity check to ensure the encryption key was transmitted without error." - } - }, - "payload":"Body" - }, - "Value":{"type":"string"}, - "VersionIdMarker":{"type":"string"}, - "VersioningConfiguration":{ - "type":"structure", - "members":{ - "MFADelete":{ - "shape":"MFADelete", - "documentation":"Specifies whether MFA delete is enabled in the bucket versioning configuration. This element is only returned if the bucket has been configured with MFA delete. If the bucket has never been so configured, this element is not returned.", - "locationName":"MfaDelete" - }, - "Status":{ - "shape":"BucketVersioningStatus", - "documentation":"The versioning state of the bucket." - } - } - }, - "WebsiteConfiguration":{ - "type":"structure", - "members":{ - "ErrorDocument":{"shape":"ErrorDocument"}, - "IndexDocument":{"shape":"IndexDocument"}, - "RedirectAllRequestsTo":{"shape":"RedirectAllRequestsTo"}, - "RoutingRules":{"shape":"RoutingRules"} - } - }, - "WebsiteRedirectLocation":{"type":"string"} - } -} diff --git a/src/github.com/getlantern/aws-sdk-go/apis/s3/2006-03-01.paginators.json b/src/github.com/getlantern/aws-sdk-go/apis/s3/2006-03-01.paginators.json deleted file mode 100644 index a966a78e20..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/apis/s3/2006-03-01.paginators.json +++ /dev/null @@ -1,59 +0,0 @@ -{ - "pagination": { - "ListMultipartUploads": { - "limit_key": "MaxUploads", - "more_results": "IsTruncated", - "output_token": [ - "NextKeyMarker", - "NextUploadIdMarker" - ], - "input_token": [ - "KeyMarker", - "UploadIdMarker" - ], - "result_key": [ - "Uploads", - "CommonPrefixes" - ] - }, - "ListObjectVersions": { - "more_results": "IsTruncated", - "limit_key": "MaxKeys", - "output_token": [ - "NextKeyMarker", - "NextVersionIdMarker" - ], - "input_token": [ - "KeyMarker", - "VersionIdMarker" - ], - "result_key": [ - "Versions", - "DeleteMarkers", - "CommonPrefixes" - ] - }, - "ListObjects": { - "more_results": "IsTruncated", - "limit_key": "MaxKeys", - "output_token": "NextMarker || Contents[-1].Key", - "input_token": "Marker", - "result_key": [ - "Contents", - "CommonPrefixes" - ] - }, - "ListParts": { - "more_results": "IsTruncated", - "limit_key": "MaxParts", - "output_token": "NextPartNumberMarker", - "input_token": "PartNumberMarker", - "result_key": "Parts", - "non_aggregate_keys": [ - "Initiator", - "Owner", - "StorageClass" - ] - } - } -} diff --git a/src/github.com/getlantern/aws-sdk-go/apis/s3/2006-03-01.waiters.json b/src/github.com/getlantern/aws-sdk-go/apis/s3/2006-03-01.waiters.json deleted file mode 100644 index 53bc2bc6ae..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/apis/s3/2006-03-01.waiters.json +++ /dev/null @@ -1,63 +0,0 @@ -{ - "version": 2, - "waiters": { - "BucketExists": { - "delay": 5, - "operation": "HeadBucket", - "maxAttempts": 20, - "acceptors": [ - { - "expected": 200, - "matcher": "status", - "state": "success" - }, - { - "expected": 404, - "matcher": "status", - "state": "retry" - } - ] - }, - "BucketNotExists": { - "delay": 5, - "operation": "HeadBucket", - "maxAttempts": 20, - "acceptors": [ - { - "expected": 404, - "matcher": "status", - "state": "success" - } - ] - }, - "ObjectExists": { - "delay": 5, - "operation": "HeadObject", - "maxAttempts": 20, - "acceptors": [ - { - "expected": 200, - "matcher": "status", - "state": "success" - }, - { - "expected": 404, - "matcher": "status", - "state": "retry" - } - ] - }, - "ObjectNotExists": { - "delay": 5, - "operation": "HeadObject", - "maxAttempts": 20, - "acceptors": [ - { - "expected": 404, - "matcher": "status", - "state": "success" - } - ] - } - } -} diff --git a/src/github.com/getlantern/aws-sdk-go/apis/sdb/2009-04-15.normal.json b/src/github.com/getlantern/aws-sdk-go/apis/sdb/2009-04-15.normal.json deleted file mode 100644 index 13c26ea266..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/apis/sdb/2009-04-15.normal.json +++ /dev/null @@ -1,1178 +0,0 @@ -{ - "metadata":{ - "apiVersion":"2009-04-15", - "endpointPrefix":"sdb", - "serviceFullName":"Amazon SimpleDB", - "signatureVersion":"v2", - "xmlNamespace":"http://sdb.amazonaws.com/doc/2009-04-15/", - "protocol":"query" - }, - "documentation":"Amazon SimpleDB is a web service providing the core database functions of data indexing and querying in the cloud. By offloading the time and effort associated with building and operating a web-scale database, SimpleDB provides developers the freedom to focus on application development.

A traditional, clustered relational database requires a sizable upfront capital outlay, is complex to design, and often requires extensive and repetitive database administration. Amazon SimpleDB is dramatically simpler, requiring no schema, automatically indexing your data and providing a simple API for storage and access. This approach eliminates the administrative burden of data modeling, index maintenance, and performance tuning. Developers gain access to this functionality within Amazon's proven computing environment, are able to scale instantly, and pay only for what they use.

Visit http://aws.amazon.com/simpledb/ for more information.

", - "operations":{ - "BatchDeleteAttributes":{ - "name":"BatchDeleteAttributes", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"BatchDeleteAttributesRequest"}, - "documentation":"

Performs multiple DeleteAttributes operations in a single call, which reduces round trips and latencies. This enables Amazon SimpleDB to optimize requests, which generally yields better throughput.

The following limitations are enforced for this operation:

" - }, - "BatchPutAttributes":{ - "name":"BatchPutAttributes", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"BatchPutAttributesRequest"}, - "errors":[ - { - "shape":"DuplicateItemName", - "error":{ - "code":"DuplicateItemName", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The item name was specified more than once.

" - }, - { - "shape":"InvalidParameterValue", - "error":{ - "code":"InvalidParameterValue", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The value for a parameter is invalid.

" - }, - { - "shape":"MissingParameter", - "error":{ - "code":"MissingParameter", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request must contain the specified missing parameter.

" - }, - { - "shape":"NoSuchDomain", - "error":{ - "code":"NoSuchDomain", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified domain does not exist.

" - }, - { - "shape":"NumberItemAttributesExceeded", - "error":{ - "code":"NumberItemAttributesExceeded", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

Too many attributes in this item.

" - }, - { - "shape":"NumberDomainAttributesExceeded", - "error":{ - "code":"NumberDomainAttributesExceeded", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

Too many attributes in this domain.

" - }, - { - "shape":"NumberDomainBytesExceeded", - "error":{ - "code":"NumberDomainBytesExceeded", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

Too many bytes in this domain.

" - }, - { - "shape":"NumberSubmittedItemsExceeded", - "error":{ - "code":"NumberSubmittedItemsExceeded", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

Too many items exist in a single call.

" - }, - { - "shape":"NumberSubmittedAttributesExceeded", - "error":{ - "code":"NumberSubmittedAttributesExceeded", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

Too many attributes exist in a single call.

" - } - ], - "documentation":"

The BatchPutAttributes operation creates or replaces attributes within one or more items. By using this operation, the client can perform multiple PutAttribute operation with a single call. This helps yield savings in round trips and latencies, enabling Amazon SimpleDB to optimize requests and generally produce better throughput.

The client may specify the item name with the Item.X.ItemName parameter. The client may specify new attributes using a combination of the Item.X.Attribute.Y.Name and Item.X.Attribute.Y.Value parameters. The client may specify the first attribute for the first item using the parameters Item.0.Attribute.0.Name and Item.0.Attribute.0.Value, and for the second attribute for the first item by the parameters Item.0.Attribute.1.Name and Item.0.Attribute.1.Value, and so on.

Attributes are uniquely identified within an item by their name/value combination. For example, a single item can have the attributes { \"first_name\", \"first_value\" } and { \"first_name\", \"second_value\" }. However, it cannot have two attribute instances where both the Item.X.Attribute.Y.Name and Item.X.Attribute.Y.Value are the same.

Optionally, the requester can supply the Replace parameter for each individual value. Setting this value to true will cause the new attribute values to replace the existing attribute values. For example, if an item I has the attributes { 'a', '1' }, { 'b', '2'} and { 'b', '3' } and the requester does a BatchPutAttributes of {'I', 'b', '4' } with the Replace parameter set to true, the final attributes of the item will be { 'a', '1' } and { 'b', '4' }, replacing the previous values of the 'b' attribute with the new value.

This operation is vulnerable to exceeding the maximum URL size when making a REST request using the HTTP GET method. This operation does not support conditions using Expected.X.Name, Expected.X.Value, or Expected.X.Exists.

You can execute multiple BatchPutAttributes operations and other operations in parallel. However, large numbers of concurrent BatchPutAttributes calls can result in Service Unavailable (503) responses.

The following limitations are enforced for this operation:

" - }, - "CreateDomain":{ - "name":"CreateDomain", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CreateDomainRequest"}, - "errors":[ - { - "shape":"InvalidParameterValue", - "error":{ - "code":"InvalidParameterValue", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The value for a parameter is invalid.

" - }, - { - "shape":"MissingParameter", - "error":{ - "code":"MissingParameter", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request must contain the specified missing parameter.

" - }, - { - "shape":"NumberDomainsExceeded", - "error":{ - "code":"NumberDomainsExceeded", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

Too many domains exist per this account.

" - } - ], - "documentation":"

The CreateDomain operation creates a new domain. The domain name should be unique among the domains associated with the Access Key ID provided in the request. The CreateDomain operation may take 10 or more seconds to complete.

The client can create up to 100 domains per account.

If the client requires additional domains, go to http://aws.amazon.com/contact-us/simpledb-limit-request/.

" - }, - "DeleteAttributes":{ - "name":"DeleteAttributes", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DeleteAttributesRequest"}, - "errors":[ - { - "shape":"InvalidParameterValue", - "error":{ - "code":"InvalidParameterValue", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The value for a parameter is invalid.

" - }, - { - "shape":"MissingParameter", - "error":{ - "code":"MissingParameter", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request must contain the specified missing parameter.

" - }, - { - "shape":"NoSuchDomain", - "error":{ - "code":"NoSuchDomain", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified domain does not exist.

" - }, - { - "shape":"AttributeDoesNotExist", - "error":{ - "code":"AttributeDoesNotExist", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified attribute does not exist.

" - } - ], - "documentation":"

Deletes one or more attributes associated with an item. If all attributes of the item are deleted, the item is deleted.

DeleteAttributes is an idempotent operation; running it multiple times on the same item or attribute does not result in an error response.

Because Amazon SimpleDB makes multiple copies of item data and uses an eventual consistency update model, performing a GetAttributes or Select operation (read) immediately after a DeleteAttributes or PutAttributes operation (write) might not return updated item data.

" - }, - "DeleteDomain":{ - "name":"DeleteDomain", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DeleteDomainRequest"}, - "errors":[ - { - "shape":"MissingParameter", - "error":{ - "code":"MissingParameter", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request must contain the specified missing parameter.

" - } - ], - "documentation":"

The DeleteDomain operation deletes a domain. Any items (and their attributes) in the domain are deleted as well. The DeleteDomain operation might take 10 or more seconds to complete.

" - }, - "DomainMetadata":{ - "name":"DomainMetadata", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DomainMetadataRequest"}, - "output":{ - "shape":"DomainMetadataResult", - "resultWrapper":"DomainMetadataResult" - }, - "errors":[ - { - "shape":"MissingParameter", - "error":{ - "code":"MissingParameter", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request must contain the specified missing parameter.

" - }, - { - "shape":"NoSuchDomain", - "error":{ - "code":"NoSuchDomain", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified domain does not exist.

" - } - ], - "documentation":"

Returns information about the domain, including when the domain was created, the number of items and attributes in the domain, and the size of the attribute names and values.

" - }, - "GetAttributes":{ - "name":"GetAttributes", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"GetAttributesRequest"}, - "output":{ - "shape":"GetAttributesResult", - "resultWrapper":"GetAttributesResult" - }, - "errors":[ - { - "shape":"InvalidParameterValue", - "error":{ - "code":"InvalidParameterValue", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The value for a parameter is invalid.

" - }, - { - "shape":"MissingParameter", - "error":{ - "code":"MissingParameter", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request must contain the specified missing parameter.

" - }, - { - "shape":"NoSuchDomain", - "error":{ - "code":"NoSuchDomain", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified domain does not exist.

" - } - ], - "documentation":"

Returns all of the attributes associated with the specified item. Optionally, the attributes returned can be limited to one or more attributes by specifying an attribute name parameter.

If the item does not exist on the replica that was accessed for this operation, an empty set is returned. The system does not return an error as it cannot guarantee the item does not exist on other replicas.

" - }, - "ListDomains":{ - "name":"ListDomains", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"ListDomainsRequest"}, - "output":{ - "shape":"ListDomainsResult", - "resultWrapper":"ListDomainsResult" - }, - "errors":[ - { - "shape":"InvalidParameterValue", - "error":{ - "code":"InvalidParameterValue", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The value for a parameter is invalid.

" - }, - { - "shape":"InvalidNextToken", - "error":{ - "code":"InvalidNextToken", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified NextToken is not valid.

" - } - ], - "documentation":"

The ListDomains operation lists all domains associated with the Access Key ID. It returns domain names up to the limit set by MaxNumberOfDomains. A NextToken is returned if there are more than MaxNumberOfDomains domains. Calling ListDomains successive times with the NextToken provided by the operation returns up to MaxNumberOfDomains more domain names with each successive operation call.

" - }, - "PutAttributes":{ - "name":"PutAttributes", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"PutAttributesRequest"}, - "errors":[ - { - "shape":"InvalidParameterValue", - "error":{ - "code":"InvalidParameterValue", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The value for a parameter is invalid.

" - }, - { - "shape":"MissingParameter", - "error":{ - "code":"MissingParameter", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request must contain the specified missing parameter.

" - }, - { - "shape":"NoSuchDomain", - "error":{ - "code":"NoSuchDomain", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified domain does not exist.

" - }, - { - "shape":"NumberDomainAttributesExceeded", - "error":{ - "code":"NumberDomainAttributesExceeded", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

Too many attributes in this domain.

" - }, - { - "shape":"NumberDomainBytesExceeded", - "error":{ - "code":"NumberDomainBytesExceeded", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

Too many bytes in this domain.

" - }, - { - "shape":"NumberItemAttributesExceeded", - "error":{ - "code":"NumberItemAttributesExceeded", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

Too many attributes in this item.

" - }, - { - "shape":"AttributeDoesNotExist", - "error":{ - "code":"AttributeDoesNotExist", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified attribute does not exist.

" - } - ], - "documentation":"

The PutAttributes operation creates or replaces attributes in an item. The client may specify new attributes using a combination of the Attribute.X.Name and Attribute.X.Value parameters. The client specifies the first attribute by the parameters Attribute.0.Name and Attribute.0.Value, the second attribute by the parameters Attribute.1.Name and Attribute.1.Value, and so on.

Attributes are uniquely identified in an item by their name/value combination. For example, a single item can have the attributes { \"first_name\", \"first_value\" } and { \"first_name\", second_value\" }. However, it cannot have two attribute instances where both the Attribute.X.Name and Attribute.X.Value are the same.

Optionally, the requestor can supply the Replace parameter for each individual attribute. Setting this value to true causes the new attribute value to replace the existing attribute value(s). For example, if an item has the attributes { 'a', '1' }, { 'b', '2'} and { 'b', '3' } and the requestor calls PutAttributes using the attributes { 'b', '4' } with the Replace parameter set to true, the final attributes of the item are changed to { 'a', '1' } and { 'b', '4' }, which replaces the previous values of the 'b' attribute with the new value.

You cannot specify an empty string as an attribute name.

Because Amazon SimpleDB makes multiple copies of client data and uses an eventual consistency update model, an immediate GetAttributes or Select operation (read) immediately after a PutAttributes or DeleteAttributes operation (write) might not return the updated data.

The following limitations are enforced for this operation:

" - }, - "Select":{ - "name":"Select", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"SelectRequest"}, - "output":{ - "shape":"SelectResult", - "resultWrapper":"SelectResult" - }, - "errors":[ - { - "shape":"InvalidParameterValue", - "error":{ - "code":"InvalidParameterValue", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The value for a parameter is invalid.

" - }, - { - "shape":"InvalidNextToken", - "error":{ - "code":"InvalidNextToken", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified NextToken is not valid.

" - }, - { - "shape":"InvalidNumberPredicates", - "error":{ - "code":"InvalidNumberPredicates", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Too many predicates exist in the query expression.

" - }, - { - "shape":"InvalidNumberValueTests", - "error":{ - "code":"InvalidNumberValueTests", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Too many predicates exist in the query expression.

" - }, - { - "shape":"InvalidQueryExpression", - "error":{ - "code":"InvalidQueryExpression", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified query expression syntax is not valid.

" - }, - { - "shape":"MissingParameter", - "error":{ - "code":"MissingParameter", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request must contain the specified missing parameter.

" - }, - { - "shape":"NoSuchDomain", - "error":{ - "code":"NoSuchDomain", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified domain does not exist.

" - }, - { - "shape":"RequestTimeout", - "error":{ - "code":"RequestTimeout", - "httpStatusCode":408, - "senderFault":true - }, - "exception":true, - "documentation":"

A timeout occurred when attempting to query the specified domain with specified query expression.

" - }, - { - "shape":"TooManyRequestedAttributes", - "error":{ - "code":"TooManyRequestedAttributes", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Too many attributes requested.

" - } - ], - "documentation":"

The Select operation returns a set of attributes for ItemNames that match the select expression. Select is similar to the standard SQL SELECT statement.

The total size of the response cannot exceed 1 MB in total size. Amazon SimpleDB automatically adjusts the number of items returned per page to enforce this limit. For example, if the client asks to retrieve 2500 items, but each individual item is 10 kB in size, the system returns 100 items and an appropriate NextToken so the client can access the next page of results.

For information on how to construct select expressions, see Using Select to Create Amazon SimpleDB Queries in the Developer Guide.

" - } - }, - "shapes":{ - "Attribute":{ - "type":"structure", - "required":[ - "Name", - "Value" - ], - "members":{ - "Name":{ - "shape":"String", - "documentation":"The name of the attribute." - }, - "AlternateNameEncoding":{ - "shape":"String", - "documentation":"

" - }, - "Value":{ - "shape":"String", - "documentation":"The value of the attribute." - }, - "AlternateValueEncoding":{ - "shape":"String", - "documentation":"

" - } - }, - "documentation":"

" - }, - "AttributeDoesNotExist":{ - "type":"structure", - "members":{ - "BoxUsage":{"shape":"Float"} - }, - "error":{ - "code":"AttributeDoesNotExist", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified attribute does not exist.

" - }, - "AttributeList":{ - "type":"list", - "member":{ - "shape":"Attribute", - "locationName":"Attribute" - }, - "flattened":true - }, - "AttributeNameList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"AttributeName" - }, - "flattened":true - }, - "BatchDeleteAttributesRequest":{ - "type":"structure", - "required":[ - "DomainName", - "Items" - ], - "members":{ - "DomainName":{ - "shape":"String", - "documentation":"The name of the domain in which the attributes are being deleted." - }, - "Items":{ - "shape":"DeletableItemList", - "documentation":"A list of items on which to perform the operation." - } - } - }, - "BatchPutAttributesRequest":{ - "type":"structure", - "required":[ - "DomainName", - "Items" - ], - "members":{ - "DomainName":{ - "shape":"String", - "documentation":"The name of the domain in which the attributes are being stored." - }, - "Items":{ - "shape":"ReplaceableItemList", - "documentation":"A list of items on which to perform the operation." - } - } - }, - "Boolean":{"type":"boolean"}, - "CreateDomainRequest":{ - "type":"structure", - "required":["DomainName"], - "members":{ - "DomainName":{ - "shape":"String", - "documentation":"The name of the domain to create. The name can range between 3 and 255 characters and can contain the following characters: a-z, A-Z, 0-9, '_', '-', and '.'." - } - } - }, - "DeletableItem":{ - "type":"structure", - "required":["Name"], - "members":{ - "Name":{ - "shape":"String", - "locationName":"ItemName" - }, - "Attributes":{"shape":"AttributeList"} - } - }, - "DeletableItemList":{ - "type":"list", - "member":{ - "shape":"DeletableItem", - "locationName":"Item" - }, - "flattened":true - }, - "DeleteAttributesRequest":{ - "type":"structure", - "required":[ - "DomainName", - "ItemName" - ], - "members":{ - "DomainName":{ - "shape":"String", - "documentation":"The name of the domain in which to perform the operation." - }, - "ItemName":{ - "shape":"String", - "documentation":"The name of the item. Similar to rows on a spreadsheet, items represent individual objects that contain one or more value-attribute pairs." - }, - "Attributes":{ - "shape":"AttributeList", - "documentation":"A list of Attributes. Similar to columns on a spreadsheet, attributes represent categories of data that can be assigned to items." - }, - "Expected":{ - "shape":"UpdateCondition", - "documentation":"The update condition which, if specified, determines whether the specified attributes will be deleted or not. The update condition must be satisfied in order for this request to be processed and the attributes to be deleted." - } - } - }, - "DeleteDomainRequest":{ - "type":"structure", - "required":["DomainName"], - "members":{ - "DomainName":{ - "shape":"String", - "documentation":"The name of the domain to delete." - } - } - }, - "DomainMetadataRequest":{ - "type":"structure", - "required":["DomainName"], - "members":{ - "DomainName":{ - "shape":"String", - "documentation":"The name of the domain for which to display the metadata of." - } - } - }, - "DomainMetadataResult":{ - "type":"structure", - "members":{ - "ItemCount":{ - "shape":"Integer", - "documentation":"The number of all items in the domain." - }, - "ItemNamesSizeBytes":{ - "shape":"Long", - "documentation":"The total size of all item names in the domain, in bytes." - }, - "AttributeNameCount":{ - "shape":"Integer", - "documentation":"The number of unique attribute names in the domain." - }, - "AttributeNamesSizeBytes":{ - "shape":"Long", - "documentation":"The total size of all unique attribute names in the domain, in bytes." - }, - "AttributeValueCount":{ - "shape":"Integer", - "documentation":"The number of all attribute name/value pairs in the domain." - }, - "AttributeValuesSizeBytes":{ - "shape":"Long", - "documentation":"The total size of all attribute values in the domain, in bytes." - }, - "Timestamp":{ - "shape":"Integer", - "documentation":"The data and time when metadata was calculated, in Epoch (UNIX) seconds." - } - } - }, - "DomainNameList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"DomainName" - }, - "flattened":true - }, - "DuplicateItemName":{ - "type":"structure", - "members":{ - "BoxUsage":{"shape":"Float"} - }, - "error":{ - "code":"DuplicateItemName", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The item name was specified more than once.

" - }, - "Float":{"type":"float"}, - "GetAttributesRequest":{ - "type":"structure", - "required":[ - "DomainName", - "ItemName" - ], - "members":{ - "DomainName":{ - "shape":"String", - "documentation":"The name of the domain in which to perform the operation." - }, - "ItemName":{ - "shape":"String", - "documentation":"The name of the item." - }, - "AttributeNames":{ - "shape":"AttributeNameList", - "documentation":"The names of the attributes." - }, - "ConsistentRead":{ - "shape":"Boolean", - "documentation":"Determines whether or not strong consistency should be enforced when data is read from SimpleDB. If true, any data previously written to SimpleDB will be returned. Otherwise, results will be consistent eventually, and the client may not see data that was written immediately before your read." - } - } - }, - "GetAttributesResult":{ - "type":"structure", - "members":{ - "Attributes":{ - "shape":"AttributeList", - "documentation":"The list of attributes returned by the operation." - } - } - }, - "Integer":{"type":"integer"}, - "InvalidNextToken":{ - "type":"structure", - "members":{ - "BoxUsage":{"shape":"Float"} - }, - "error":{ - "code":"InvalidNextToken", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified NextToken is not valid.

" - }, - "InvalidNumberPredicates":{ - "type":"structure", - "members":{ - "BoxUsage":{"shape":"Float"} - }, - "error":{ - "code":"InvalidNumberPredicates", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Too many predicates exist in the query expression.

" - }, - "InvalidNumberValueTests":{ - "type":"structure", - "members":{ - "BoxUsage":{"shape":"Float"} - }, - "error":{ - "code":"InvalidNumberValueTests", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Too many predicates exist in the query expression.

" - }, - "InvalidParameterValue":{ - "type":"structure", - "members":{ - "BoxUsage":{"shape":"Float"} - }, - "error":{ - "code":"InvalidParameterValue", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The value for a parameter is invalid.

" - }, - "InvalidQueryExpression":{ - "type":"structure", - "members":{ - "BoxUsage":{"shape":"Float"} - }, - "error":{ - "code":"InvalidQueryExpression", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified query expression syntax is not valid.

" - }, - "Item":{ - "type":"structure", - "required":[ - "Name", - "Attributes" - ], - "members":{ - "Name":{ - "shape":"String", - "documentation":"The name of the item." - }, - "AlternateNameEncoding":{ - "shape":"String", - "documentation":"

" - }, - "Attributes":{ - "shape":"AttributeList", - "documentation":"A list of attributes." - } - }, - "documentation":"

" - }, - "ItemList":{ - "type":"list", - "member":{ - "shape":"Item", - "locationName":"Item" - }, - "flattened":true - }, - "ListDomainsRequest":{ - "type":"structure", - "members":{ - "MaxNumberOfDomains":{ - "shape":"Integer", - "documentation":"The maximum number of domain names you want returned. The range is 1 to 100. The default setting is 100." - }, - "NextToken":{ - "shape":"String", - "documentation":"A string informing Amazon SimpleDB where to start the next list of domain names." - } - } - }, - "ListDomainsResult":{ - "type":"structure", - "members":{ - "DomainNames":{ - "shape":"DomainNameList", - "documentation":"A list of domain names that match the expression." - }, - "NextToken":{ - "shape":"String", - "documentation":"An opaque token indicating that there are more domains than the specified MaxNumberOfDomains still available." - } - } - }, - "Long":{"type":"long"}, - "MissingParameter":{ - "type":"structure", - "members":{ - "BoxUsage":{"shape":"Float"} - }, - "error":{ - "code":"MissingParameter", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request must contain the specified missing parameter.

" - }, - "NoSuchDomain":{ - "type":"structure", - "members":{ - "BoxUsage":{"shape":"Float"} - }, - "error":{ - "code":"NoSuchDomain", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The specified domain does not exist.

" - }, - "NumberDomainAttributesExceeded":{ - "type":"structure", - "members":{ - "BoxUsage":{"shape":"Float"} - }, - "error":{ - "code":"NumberDomainAttributesExceeded", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

Too many attributes in this domain.

" - }, - "NumberDomainBytesExceeded":{ - "type":"structure", - "members":{ - "BoxUsage":{"shape":"Float"} - }, - "error":{ - "code":"NumberDomainBytesExceeded", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

Too many bytes in this domain.

" - }, - "NumberDomainsExceeded":{ - "type":"structure", - "members":{ - "BoxUsage":{"shape":"Float"} - }, - "error":{ - "code":"NumberDomainsExceeded", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

Too many domains exist per this account.

" - }, - "NumberItemAttributesExceeded":{ - "type":"structure", - "members":{ - "BoxUsage":{"shape":"Float"} - }, - "error":{ - "code":"NumberItemAttributesExceeded", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

Too many attributes in this item.

" - }, - "NumberSubmittedAttributesExceeded":{ - "type":"structure", - "members":{ - "BoxUsage":{"shape":"Float"} - }, - "error":{ - "code":"NumberSubmittedAttributesExceeded", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

Too many attributes exist in a single call.

" - }, - "NumberSubmittedItemsExceeded":{ - "type":"structure", - "members":{ - "BoxUsage":{"shape":"Float"} - }, - "error":{ - "code":"NumberSubmittedItemsExceeded", - "httpStatusCode":409, - "senderFault":true - }, - "exception":true, - "documentation":"

Too many items exist in a single call.

" - }, - "PutAttributesRequest":{ - "type":"structure", - "required":[ - "DomainName", - "ItemName", - "Attributes" - ], - "members":{ - "DomainName":{ - "shape":"String", - "documentation":"The name of the domain in which to perform the operation." - }, - "ItemName":{ - "shape":"String", - "documentation":"The name of the item." - }, - "Attributes":{ - "shape":"ReplaceableAttributeList", - "documentation":"The list of attributes." - }, - "Expected":{ - "shape":"UpdateCondition", - "documentation":"The update condition which, if specified, determines whether the specified attributes will be updated or not. The update condition must be satisfied in order for this request to be processed and the attributes to be updated." - } - } - }, - "ReplaceableAttribute":{ - "type":"structure", - "required":[ - "Name", - "Value" - ], - "members":{ - "Name":{ - "shape":"String", - "documentation":"The name of the replaceable attribute." - }, - "Value":{ - "shape":"String", - "documentation":"The value of the replaceable attribute." - }, - "Replace":{ - "shape":"Boolean", - "documentation":"A flag specifying whether or not to replace the attribute/value pair or to add a new attribute/value pair. The default setting is false." - } - }, - "documentation":"

" - }, - "ReplaceableAttributeList":{ - "type":"list", - "member":{ - "shape":"ReplaceableAttribute", - "locationName":"Attribute" - }, - "flattened":true - }, - "ReplaceableItem":{ - "type":"structure", - "required":[ - "Name", - "Attributes" - ], - "members":{ - "Name":{ - "shape":"String", - "documentation":"The name of the replaceable item.", - "locationName":"ItemName" - }, - "Attributes":{ - "shape":"ReplaceableAttributeList", - "documentation":"The list of attributes for a replaceable item." - } - }, - "documentation":"

" - }, - "ReplaceableItemList":{ - "type":"list", - "member":{ - "shape":"ReplaceableItem", - "locationName":"Item" - }, - "flattened":true - }, - "RequestTimeout":{ - "type":"structure", - "members":{ - "BoxUsage":{"shape":"Float"} - }, - "error":{ - "code":"RequestTimeout", - "httpStatusCode":408, - "senderFault":true - }, - "exception":true, - "documentation":"

A timeout occurred when attempting to query the specified domain with specified query expression.

" - }, - "SelectRequest":{ - "type":"structure", - "required":["SelectExpression"], - "members":{ - "SelectExpression":{ - "shape":"String", - "documentation":"The expression used to query the domain." - }, - "NextToken":{ - "shape":"String", - "documentation":"A string informing Amazon SimpleDB where to start the next list of ItemNames." - }, - "ConsistentRead":{ - "shape":"Boolean", - "documentation":"Determines whether or not strong consistency should be enforced when data is read from SimpleDB. If true, any data previously written to SimpleDB will be returned. Otherwise, results will be consistent eventually, and the client may not see data that was written immediately before your read." - } - } - }, - "SelectResult":{ - "type":"structure", - "members":{ - "Items":{ - "shape":"ItemList", - "documentation":"A list of items that match the select expression." - }, - "NextToken":{ - "shape":"String", - "documentation":"An opaque token indicating that more items than MaxNumberOfItems were matched, the response size exceeded 1 megabyte, or the execution time exceeded 5 seconds." - } - } - }, - "String":{"type":"string"}, - "TooManyRequestedAttributes":{ - "type":"structure", - "members":{ - "BoxUsage":{"shape":"Float"} - }, - "error":{ - "code":"TooManyRequestedAttributes", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Too many attributes requested.

" - }, - "UpdateCondition":{ - "type":"structure", - "members":{ - "Name":{ - "shape":"String", - "documentation":"

The name of the attribute involved in the condition.

" - }, - "Value":{ - "shape":"String", - "documentation":"

The value of an attribute. This value can only be specified when the Exists parameter is equal to true.

" - }, - "Exists":{ - "shape":"Boolean", - "documentation":"

A value specifying whether or not the specified attribute must exist with the specified value in order for the update condition to be satisfied. Specify true if the attribute must exist for the update condition to be satisfied. Specify false if the attribute should not exist in order for the update condition to be satisfied.

" - } - }, - "documentation":"

Specifies the conditions under which data should be updated. If an update condition is specified for a request, the data will only be updated if the condition is satisfied. For example, if an attribute with a specific name and value exists, or if a specific attribute doesn't exist.

" - } - } -} diff --git a/src/github.com/getlantern/aws-sdk-go/apis/sdb/2009-04-15.paginators.json b/src/github.com/getlantern/aws-sdk-go/apis/sdb/2009-04-15.paginators.json deleted file mode 100644 index 2362098870..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/apis/sdb/2009-04-15.paginators.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "pagination": { - "ListDomains": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxNumberOfDomains", - "result_key": "DomainNames" - }, - "Select": { - "input_token": "NextToken", - "output_token": "NextToken", - "result_key": "Items" - } - } -} diff --git a/src/github.com/getlantern/aws-sdk-go/apis/ses/2010-12-01.normal.json b/src/github.com/getlantern/aws-sdk-go/apis/ses/2010-12-01.normal.json deleted file mode 100644 index b495cfa82f..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/apis/ses/2010-12-01.normal.json +++ /dev/null @@ -1,954 +0,0 @@ -{ - "metadata":{ - "apiVersion":"2010-12-01", - "endpointPrefix":"email", - "serviceAbbreviation":"Amazon SES", - "serviceFullName":"Amazon Simple Email Service", - "signatureVersion":"v4", - "signingName":"ses", - "xmlNamespace":"http://ses.amazonaws.com/doc/2010-12-01/", - "protocol":"query" - }, - "documentation":"Amazon Simple Email Service

This is the API Reference for Amazon Simple Email Service (Amazon SES). This documentation is intended to be used in conjunction with the Amazon SES Developer Guide.

", - "operations":{ - "DeleteIdentity":{ - "name":"DeleteIdentity", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DeleteIdentityRequest", - "documentation":"

Represents a request instructing the service to delete an identity from the list of identities for the AWS Account.

" - }, - "output":{ - "shape":"DeleteIdentityResponse", - "documentation":"

An empty element. Receiving this element indicates that the request completed successfully.

", - "resultWrapper":"DeleteIdentityResult" - }, - "documentation":"

Deletes the specified identity (email address or domain) from the list of verified identities.

This action is throttled at one request per second.

" - }, - "DeleteVerifiedEmailAddress":{ - "name":"DeleteVerifiedEmailAddress", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DeleteVerifiedEmailAddressRequest", - "documentation":"

Represents a request instructing the service to delete an address from the list of verified email addresses.

" - }, - "documentation":"

Deletes the specified email address from the list of verified addresses.

The DeleteVerifiedEmailAddress action is deprecated as of the May 15, 2012 release of Domain Verification. The DeleteIdentity action is now preferred.

This action is throttled at one request per second.

" - }, - "GetIdentityDkimAttributes":{ - "name":"GetIdentityDkimAttributes", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"GetIdentityDkimAttributesRequest", - "documentation":"

Given a list of verified identities, describes their DKIM attributes. The DKIM attributes of an email address identity includes whether DKIM signing is individually enabled or disabled for that address. The DKIM attributes of a domain name identity includes whether DKIM signing is enabled, as well as the DNS records (tokens) that must remain published in the domain name's DNS.

" - }, - "output":{ - "shape":"GetIdentityDkimAttributesResponse", - "documentation":"

Represents a list of all the DKIM attributes for the specified identity.

", - "resultWrapper":"GetIdentityDkimAttributesResult" - }, - "documentation":"

Returns the current status of Easy DKIM signing for an entity. For domain name identities, this action also returns the DKIM tokens that are required for Easy DKIM signing, and whether Amazon SES has successfully verified that these tokens have been published.

This action takes a list of identities as input and returns the following information for each:

This action is throttled at one request per second.

For more information about creating DNS records using DKIM tokens, go to the Amazon SES Developer Guide.

" - }, - "GetIdentityNotificationAttributes":{ - "name":"GetIdentityNotificationAttributes", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"GetIdentityNotificationAttributesRequest"}, - "output":{ - "shape":"GetIdentityNotificationAttributesResponse", - "documentation":"

Describes whether an identity has Amazon Simple Notification Service (Amazon SNS) topics set for bounce, complaint, and/or delivery notifications, and specifies whether feedback forwarding is enabled for bounce and complaint notifications.

", - "resultWrapper":"GetIdentityNotificationAttributesResult" - }, - "documentation":"

Given a list of verified identities (email addresses and/or domains), returns a structure describing identity notification attributes.

This action is throttled at one request per second.

For more information about using notifications with Amazon SES, see the Amazon SES Developer Guide.

" - }, - "GetIdentityVerificationAttributes":{ - "name":"GetIdentityVerificationAttributes", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"GetIdentityVerificationAttributesRequest", - "documentation":"

Represents a request instructing the service to provide the verification attributes for a list of identities.

" - }, - "output":{ - "shape":"GetIdentityVerificationAttributesResponse", - "documentation":"

Represents the verification attributes for a list of identities.

", - "resultWrapper":"GetIdentityVerificationAttributesResult" - }, - "documentation":"

Given a list of identities (email addresses and/or domains), returns the verification status and (for domain identities) the verification token for each identity.

This action is throttled at one request per second.

" - }, - "GetSendQuota":{ - "name":"GetSendQuota", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "output":{ - "shape":"GetSendQuotaResponse", - "documentation":"

Represents the user's current activity limits returned from a successful GetSendQuota request.

", - "resultWrapper":"GetSendQuotaResult" - }, - "documentation":"

Returns the user's current sending limits.

This action is throttled at one request per second.

" - }, - "GetSendStatistics":{ - "name":"GetSendStatistics", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "output":{ - "shape":"GetSendStatisticsResponse", - "documentation":"

Represents a list of SendDataPoint items returned from a successful GetSendStatistics request. This list contains aggregated data from the previous two weeks of sending activity.

", - "resultWrapper":"GetSendStatisticsResult" - }, - "documentation":"

Returns the user's sending statistics. The result is a list of data points, representing the last two weeks of sending activity.

Each data point in the list contains statistics for a 15-minute interval.

This action is throttled at one request per second.

" - }, - "ListIdentities":{ - "name":"ListIdentities", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"ListIdentitiesRequest", - "documentation":"

Represents a request instructing the service to list all identities for the AWS Account.

" - }, - "output":{ - "shape":"ListIdentitiesResponse", - "documentation":"

Represents a list of all verified identities for the AWS Account.

", - "resultWrapper":"ListIdentitiesResult" - }, - "documentation":"

Returns a list containing all of the identities (email addresses and domains) for a specific AWS Account, regardless of verification status.

This action is throttled at one request per second.

" - }, - "ListVerifiedEmailAddresses":{ - "name":"ListVerifiedEmailAddresses", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "output":{ - "shape":"ListVerifiedEmailAddressesResponse", - "documentation":"

Represents a list of all the email addresses verified for the current user.

", - "resultWrapper":"ListVerifiedEmailAddressesResult" - }, - "documentation":"

Returns a list containing all of the email addresses that have been verified.

The ListVerifiedEmailAddresses action is deprecated as of the May 15, 2012 release of Domain Verification. The ListIdentities action is now preferred.

This action is throttled at one request per second.

" - }, - "SendEmail":{ - "name":"SendEmail", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"SendEmailRequest", - "documentation":"

Represents a request instructing the service to send a single email message.

This datatype can be used in application code to compose a message consisting of source, destination, message, reply-to, and return-path parts. This object can then be sent using the SendEmail action.

" - }, - "output":{ - "shape":"SendEmailResponse", - "documentation":"

Represents a unique message ID returned from a successful SendEmail request.

", - "resultWrapper":"SendEmailResult" - }, - "errors":[ - { - "shape":"MessageRejected", - "error":{ - "code":"MessageRejected", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"Indicates that the action failed, and the message could not be sent. Check the error stack for more information about what caused the error." - } - ], - "documentation":"

Composes an email message based on input data, and then immediately queues the message for sending.

You can only send email from verified email addresses and domains. If you have not requested production access to Amazon SES, you must also verify every recipient email address except for the recipients provided by the Amazon SES mailbox simulator. For more information, go to the Amazon SES Developer Guide.

The total size of the message cannot exceed 10 MB.

Amazon SES has a limit on the total number of recipients per message: The combined number of To:, CC: and BCC: email addresses cannot exceed 50. If you need to send an email message to a larger audience, you can divide your recipient list into groups of 50 or fewer, and then call Amazon SES repeatedly to send the message to each group.

For every message that you send, the total number of recipients (To:, CC: and BCC:) is counted against your sending quota - the maximum number of emails you can send in a 24-hour period. For information about your sending quota, go to the Amazon SES Developer Guide.

" - }, - "SendRawEmail":{ - "name":"SendRawEmail", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"SendRawEmailRequest", - "documentation":"

Represents a request instructing the service to send a raw email message.

This datatype can be used in application code to compose a message consisting of source, destination, and raw message text. This object can then be sent using the SendRawEmail action.

" - }, - "output":{ - "shape":"SendRawEmailResponse", - "documentation":"

Represents a unique message ID returned from a successful SendRawEmail request.

", - "resultWrapper":"SendRawEmailResult" - }, - "errors":[ - { - "shape":"MessageRejected", - "error":{ - "code":"MessageRejected", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"Indicates that the action failed, and the message could not be sent. Check the error stack for more information about what caused the error." - } - ], - "documentation":"

Sends an email message, with header and content specified by the client. The SendRawEmail action is useful for sending multipart MIME emails. The raw text of the message must comply with Internet email standards; otherwise, the message cannot be sent.

You can only send email from verified email addresses and domains. If you have not requested production access to Amazon SES, you must also verify every recipient email address except for the recipients provided by the Amazon SES mailbox simulator. For more information, go to the Amazon SES Developer Guide.

The total size of the message cannot exceed 10 MB. This includes any attachments that are part of the message.

Amazon SES has a limit on the total number of recipients per message: The combined number of To:, CC: and BCC: email addresses cannot exceed 50. If you need to send an email message to a larger audience, you can divide your recipient list into groups of 50 or fewer, and then call Amazon SES repeatedly to send the message to each group.

The To:, CC:, and BCC: headers in the raw message can contain a group list. Note that each recipient in a group list counts towards the 50-recipient limit.

For every message that you send, the total number of recipients (To:, CC: and BCC:) is counted against your sending quota - the maximum number of emails you can send in a 24-hour period. For information about your sending quota, go to the Amazon SES Developer Guide.

" - }, - "SetIdentityDkimEnabled":{ - "name":"SetIdentityDkimEnabled", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"SetIdentityDkimEnabledRequest", - "documentation":"

Represents a request instructing the service to enable or disable DKIM signing for an identity.

" - }, - "output":{ - "shape":"SetIdentityDkimEnabledResponse", - "documentation":"

An empty element. Receiving this element indicates that the request completed successfully.

", - "resultWrapper":"SetIdentityDkimEnabledResult" - }, - "documentation":"

Enables or disables Easy DKIM signing of email sent from an identity:

For email addresses (e.g., user@example.com), you can only enable Easy DKIM signing if the corresponding domain (e.g., example.com) has been set up for Easy DKIM using the AWS Console or the VerifyDomainDkim action.

This action is throttled at one request per second.

For more information about Easy DKIM signing, go to the Amazon SES Developer Guide.

" - }, - "SetIdentityFeedbackForwardingEnabled":{ - "name":"SetIdentityFeedbackForwardingEnabled", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"SetIdentityFeedbackForwardingEnabledRequest"}, - "output":{ - "shape":"SetIdentityFeedbackForwardingEnabledResponse", - "documentation":"

An empty element. Receiving this element indicates that the request completed successfully.

", - "resultWrapper":"SetIdentityFeedbackForwardingEnabledResult" - }, - "documentation":"

Given an identity (email address or domain), enables or disables whether Amazon SES forwards bounce and complaint notifications as email. Feedback forwarding can only be disabled when Amazon Simple Notification Service (Amazon SNS) topics are specified for both bounces and complaints.

This action is throttled at one request per second.

For more information about using notifications with Amazon SES, see the Amazon SES Developer Guide.

" - }, - "SetIdentityNotificationTopic":{ - "name":"SetIdentityNotificationTopic", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"SetIdentityNotificationTopicRequest", - "documentation":"

Represents a request to set or clear an identity's notification topic.

" - }, - "output":{ - "shape":"SetIdentityNotificationTopicResponse", - "documentation":"

An empty element. Receiving this element indicates that the request completed successfully.

", - "resultWrapper":"SetIdentityNotificationTopicResult" - }, - "documentation":"

Given an identity (email address or domain), sets the Amazon Simple Notification Service (Amazon SNS) topic to which Amazon SES will publish bounce, complaint, and/or delivery notifications for emails sent with that identity as the Source.

This action is throttled at one request per second.

For more information about feedback notification, see the Amazon SES Developer Guide.

" - }, - "VerifyDomainDkim":{ - "name":"VerifyDomainDkim", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"VerifyDomainDkimRequest", - "documentation":"

Represents a request instructing the service to begin DKIM verification for a domain.

" - }, - "output":{ - "shape":"VerifyDomainDkimResponse", - "documentation":"

Represents the DNS records that must be published in the domain name's DNS to complete DKIM setup.

", - "resultWrapper":"VerifyDomainDkimResult" - }, - "documentation":"

Returns a set of DKIM tokens for a domain. DKIM tokens are character strings that represent your domain's identity. Using these tokens, you will need to create DNS CNAME records that point to DKIM public keys hosted by Amazon SES. Amazon Web Services will eventually detect that you have updated your DNS records; this detection process may take up to 72 hours. Upon successful detection, Amazon SES will be able to DKIM-sign email originating from that domain.

This action is throttled at one request per second.

To enable or disable Easy DKIM signing for a domain, use the SetIdentityDkimEnabled action.

For more information about creating DNS records using DKIM tokens, go to the Amazon SES Developer Guide.

" - }, - "VerifyDomainIdentity":{ - "name":"VerifyDomainIdentity", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"VerifyDomainIdentityRequest", - "documentation":"

Represents a request instructing the service to begin domain verification.

" - }, - "output":{ - "shape":"VerifyDomainIdentityResponse", - "documentation":"

Represents a token used for domain ownership verification.

", - "resultWrapper":"VerifyDomainIdentityResult" - }, - "documentation":"

Verifies a domain.

This action is throttled at one request per second.

" - }, - "VerifyEmailAddress":{ - "name":"VerifyEmailAddress", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"VerifyEmailAddressRequest", - "documentation":"

Represents a request instructing the service to begin email address verification.

" - }, - "documentation":"

Verifies an email address. This action causes a confirmation email message to be sent to the specified address.

The VerifyEmailAddress action is deprecated as of the May 15, 2012 release of Domain Verification. The VerifyEmailIdentity action is now preferred.

This action is throttled at one request per second.

" - }, - "VerifyEmailIdentity":{ - "name":"VerifyEmailIdentity", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"VerifyEmailIdentityRequest", - "documentation":"

Represents a request instructing the service to begin email address verification.

" - }, - "output":{ - "shape":"VerifyEmailIdentityResponse", - "documentation":"

An empty element. Receiving this element indicates that the request completed successfully.

", - "resultWrapper":"VerifyEmailIdentityResult" - }, - "documentation":"

Verifies an email address. This action causes a confirmation email message to be sent to the specified address.

This action is throttled at one request per second.

" - } - }, - "shapes":{ - "Address":{"type":"string"}, - "AddressList":{ - "type":"list", - "member":{"shape":"Address"} - }, - "Body":{ - "type":"structure", - "members":{ - "Text":{ - "shape":"Content", - "documentation":"

The content of the message, in text format. Use this for text-based email clients, or clients on high-latency networks (such as mobile devices).

" - }, - "Html":{ - "shape":"Content", - "documentation":"

The content of the message, in HTML format. Use this for email clients that can process HTML. You can include clickable links, formatted text, and much more in an HTML message.

" - } - }, - "documentation":"

Represents the body of the message. You can specify text, HTML, or both. If you use both, then the message should display correctly in the widest variety of email clients.

" - }, - "Charset":{"type":"string"}, - "Content":{ - "type":"structure", - "required":["Data"], - "members":{ - "Data":{ - "shape":"MessageData", - "documentation":"

The textual data of the content.

" - }, - "Charset":{ - "shape":"Charset", - "documentation":"

The character set of the content.

" - } - }, - "documentation":"

Represents textual data, plus an optional character set specification.

By default, the text must be 7-bit ASCII, due to the constraints of the SMTP protocol. If the text must contain any other characters, then you must also specify a character set. Examples include UTF-8, ISO-8859-1, and Shift_JIS.

" - }, - "Counter":{"type":"long"}, - "DeleteIdentityRequest":{ - "type":"structure", - "required":["Identity"], - "members":{ - "Identity":{ - "shape":"Identity", - "documentation":"

The identity to be removed from the list of identities for the AWS Account.

" - } - }, - "documentation":"

Represents a request instructing the service to delete an identity from the list of identities for the AWS Account.

" - }, - "DeleteIdentityResponse":{ - "type":"structure", - "members":{ - }, - "documentation":"

An empty element. Receiving this element indicates that the request completed successfully.

" - }, - "DeleteVerifiedEmailAddressRequest":{ - "type":"structure", - "required":["EmailAddress"], - "members":{ - "EmailAddress":{ - "shape":"Address", - "documentation":"

An email address to be removed from the list of verified addresses.

" - } - }, - "documentation":"

Represents a request instructing the service to delete an address from the list of verified email addresses.

" - }, - "Destination":{ - "type":"structure", - "members":{ - "ToAddresses":{ - "shape":"AddressList", - "documentation":"

The To: field(s) of the message.

" - }, - "CcAddresses":{ - "shape":"AddressList", - "documentation":"

The CC: field(s) of the message.

" - }, - "BccAddresses":{ - "shape":"AddressList", - "documentation":"

The BCC: field(s) of the message.

" - } - }, - "documentation":"

Represents the destination of the message, consisting of To:, CC:, and BCC: fields.

By default, the string must be 7-bit ASCII. If the text must contain any other characters, then you must use MIME encoded-word syntax (RFC 2047) instead of a literal string. MIME encoded-word syntax uses the following form: =?charset?encoding?encoded-text?=. For more information, see RFC 2047.

" - }, - "DkimAttributes":{ - "type":"map", - "key":{"shape":"Identity"}, - "value":{"shape":"IdentityDkimAttributes"} - }, - "Domain":{"type":"string"}, - "Enabled":{"type":"boolean"}, - "GetIdentityDkimAttributesRequest":{ - "type":"structure", - "required":["Identities"], - "members":{ - "Identities":{ - "shape":"IdentityList", - "documentation":"

A list of one or more verified identities - email addresses, domains, or both.

" - } - }, - "documentation":"

Given a list of verified identities, describes their DKIM attributes. The DKIM attributes of an email address identity includes whether DKIM signing is individually enabled or disabled for that address. The DKIM attributes of a domain name identity includes whether DKIM signing is enabled, as well as the DNS records (tokens) that must remain published in the domain name's DNS.

" - }, - "GetIdentityDkimAttributesResponse":{ - "type":"structure", - "required":["DkimAttributes"], - "members":{ - "DkimAttributes":{ - "shape":"DkimAttributes", - "documentation":"

The DKIM attributes for an email address or a domain.

" - } - }, - "documentation":"

Represents a list of all the DKIM attributes for the specified identity.

" - }, - "GetIdentityNotificationAttributesRequest":{ - "type":"structure", - "required":["Identities"], - "members":{ - "Identities":{ - "shape":"IdentityList", - "documentation":"

A list of one or more identities.

" - } - } - }, - "GetIdentityNotificationAttributesResponse":{ - "type":"structure", - "required":["NotificationAttributes"], - "members":{ - "NotificationAttributes":{ - "shape":"NotificationAttributes", - "documentation":"

A map of Identity to IdentityNotificationAttributes.

" - } - }, - "documentation":"

Describes whether an identity has Amazon Simple Notification Service (Amazon SNS) topics set for bounce, complaint, and/or delivery notifications, and specifies whether feedback forwarding is enabled for bounce and complaint notifications.

" - }, - "GetIdentityVerificationAttributesRequest":{ - "type":"structure", - "required":["Identities"], - "members":{ - "Identities":{ - "shape":"IdentityList", - "documentation":"

A list of identities.

" - } - }, - "documentation":"

Represents a request instructing the service to provide the verification attributes for a list of identities.

" - }, - "GetIdentityVerificationAttributesResponse":{ - "type":"structure", - "required":["VerificationAttributes"], - "members":{ - "VerificationAttributes":{ - "shape":"VerificationAttributes", - "documentation":"

A map of Identities to IdentityVerificationAttributes objects.

" - } - }, - "documentation":"

Represents the verification attributes for a list of identities.

" - }, - "GetSendQuotaResponse":{ - "type":"structure", - "members":{ - "Max24HourSend":{ - "shape":"Max24HourSend", - "documentation":"

The maximum number of emails the user is allowed to send in a 24-hour interval.

" - }, - "MaxSendRate":{ - "shape":"MaxSendRate", - "documentation":"

The maximum number of emails the user is allowed to send per second.

" - }, - "SentLast24Hours":{ - "shape":"SentLast24Hours", - "documentation":"

The number of emails sent during the previous 24 hours.

" - } - }, - "documentation":"

Represents the user's current activity limits returned from a successful GetSendQuota request.

" - }, - "GetSendStatisticsResponse":{ - "type":"structure", - "members":{ - "SendDataPoints":{ - "shape":"SendDataPointList", - "documentation":"

A list of data points, each of which represents 15 minutes of activity.

" - } - }, - "documentation":"

Represents a list of SendDataPoint items returned from a successful GetSendStatistics request. This list contains aggregated data from the previous two weeks of sending activity.

" - }, - "Identity":{"type":"string"}, - "IdentityDkimAttributes":{ - "type":"structure", - "required":[ - "DkimEnabled", - "DkimVerificationStatus" - ], - "members":{ - "DkimEnabled":{ - "shape":"Enabled", - "documentation":"

True if DKIM signing is enabled for email sent from the identity; false otherwise.

" - }, - "DkimVerificationStatus":{ - "shape":"VerificationStatus", - "documentation":"

Describes whether Amazon SES has successfully verified the DKIM DNS records (tokens) published in the domain name's DNS. (This only applies to domain identities, not email address identities.)

" - }, - "DkimTokens":{ - "shape":"VerificationTokenList", - "documentation":"

A set of character strings that represent the domain's identity. Using these tokens, you will need to create DNS CNAME records that point to DKIM public keys hosted by Amazon SES. Amazon Web Services will eventually detect that you have updated your DNS records; this detection process may take up to 72 hours. Upon successful detection, Amazon SES will be able to DKIM-sign email originating from that domain. (This only applies to domain identities, not email address identities.)

For more information about creating DNS records using DKIM tokens, go to the Amazon SES Developer Guide.

" - } - }, - "documentation":"

Represents the DKIM attributes of a verified email address or a domain.

" - }, - "IdentityList":{ - "type":"list", - "member":{"shape":"Identity"} - }, - "IdentityNotificationAttributes":{ - "type":"structure", - "required":[ - "BounceTopic", - "ComplaintTopic", - "DeliveryTopic", - "ForwardingEnabled" - ], - "members":{ - "BounceTopic":{ - "shape":"NotificationTopic", - "documentation":"

The Amazon Resource Name (ARN) of the Amazon SNS topic where Amazon SES will publish bounce notifications.

" - }, - "ComplaintTopic":{ - "shape":"NotificationTopic", - "documentation":"

The Amazon Resource Name (ARN) of the Amazon SNS topic where Amazon SES will publish complaint notifications.

" - }, - "DeliveryTopic":{ - "shape":"NotificationTopic", - "documentation":"

The Amazon Resource Name (ARN) of the Amazon SNS topic where Amazon SES will publish delivery notifications.

" - }, - "ForwardingEnabled":{ - "shape":"Enabled", - "documentation":"

Describes whether Amazon SES will forward bounce and complaint notifications as email. true indicates that Amazon SES will forward bounce and complaint notifications as email, while false indicates that bounce and complaint notifications will be published only to the specified bounce and complaint Amazon SNS topics.

" - } - }, - "documentation":"

Represents the notification attributes of an identity, including whether an identity has Amazon Simple Notification Service (Amazon SNS) topics set for bounce, complaint, and/or delivery notifications, and whether feedback forwarding is enabled for bounce and complaint notifications.

" - }, - "IdentityType":{ - "type":"string", - "enum":[ - "EmailAddress", - "Domain" - ] - }, - "IdentityVerificationAttributes":{ - "type":"structure", - "required":["VerificationStatus"], - "members":{ - "VerificationStatus":{ - "shape":"VerificationStatus", - "documentation":"

The verification status of the identity: \"Pending\", \"Success\", \"Failed\", or \"TemporaryFailure\".

" - }, - "VerificationToken":{ - "shape":"VerificationToken", - "documentation":"

The verification token for a domain identity. Null for email address identities.

" - } - }, - "documentation":"

Represents the verification attributes of a single identity.

" - }, - "ListIdentitiesRequest":{ - "type":"structure", - "members":{ - "IdentityType":{ - "shape":"IdentityType", - "documentation":"

The type of the identities to list. Possible values are \"EmailAddress\" and \"Domain\". If this parameter is omitted, then all identities will be listed.

" - }, - "NextToken":{ - "shape":"NextToken", - "documentation":"

The token to use for pagination.

" - }, - "MaxItems":{ - "shape":"MaxItems", - "documentation":"

The maximum number of identities per page. Possible values are 1-100 inclusive.

" - } - }, - "documentation":"

Represents a request instructing the service to list all identities for the AWS Account.

" - }, - "ListIdentitiesResponse":{ - "type":"structure", - "required":["Identities"], - "members":{ - "Identities":{ - "shape":"IdentityList", - "documentation":"

A list of identities.

" - }, - "NextToken":{ - "shape":"NextToken", - "documentation":"

The token used for pagination.

" - } - }, - "documentation":"

Represents a list of all verified identities for the AWS Account.

" - }, - "ListVerifiedEmailAddressesResponse":{ - "type":"structure", - "members":{ - "VerifiedEmailAddresses":{ - "shape":"AddressList", - "documentation":"

A list of email addresses that have been verified.

" - } - }, - "documentation":"

Represents a list of all the email addresses verified for the current user.

" - }, - "Max24HourSend":{"type":"double"}, - "MaxItems":{"type":"integer"}, - "MaxSendRate":{"type":"double"}, - "Message":{ - "type":"structure", - "required":[ - "Subject", - "Body" - ], - "members":{ - "Subject":{ - "shape":"Content", - "documentation":"

The subject of the message: A short summary of the content, which will appear in the recipient's inbox.

" - }, - "Body":{ - "shape":"Body", - "documentation":"

The message body.

" - } - }, - "documentation":"

Represents the message to be sent, composed of a subject and a body.

" - }, - "MessageData":{"type":"string"}, - "MessageId":{"type":"string"}, - "MessageRejected":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"MessageRejected", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"Indicates that the action failed, and the message could not be sent. Check the error stack for more information about what caused the error." - }, - "NextToken":{"type":"string"}, - "NotificationAttributes":{ - "type":"map", - "key":{"shape":"Identity"}, - "value":{"shape":"IdentityNotificationAttributes"} - }, - "NotificationTopic":{"type":"string"}, - "NotificationType":{ - "type":"string", - "enum":[ - "Bounce", - "Complaint", - "Delivery" - ] - }, - "RawMessage":{ - "type":"structure", - "required":["Data"], - "members":{ - "Data":{ - "shape":"RawMessageData", - "documentation":"

The raw data of the message. The client must ensure that the message format complies with Internet email standards regarding email header fields, MIME types, MIME encoding, and base64 encoding (if necessary).

The To:, CC:, and BCC: headers in the raw message can contain a group list.

For more information, go to the Amazon SES Developer Guide.

" - } - }, - "documentation":"

Represents the raw data of the message.

" - }, - "RawMessageData":{"type":"blob"}, - "SendDataPoint":{ - "type":"structure", - "members":{ - "Timestamp":{ - "shape":"Timestamp", - "documentation":"

Time of the data point.

" - }, - "DeliveryAttempts":{ - "shape":"Counter", - "documentation":"

Number of emails that have been enqueued for sending.

" - }, - "Bounces":{ - "shape":"Counter", - "documentation":"

Number of emails that have bounced.

" - }, - "Complaints":{ - "shape":"Counter", - "documentation":"

Number of unwanted emails that were rejected by recipients.

" - }, - "Rejects":{ - "shape":"Counter", - "documentation":"

Number of emails rejected by Amazon SES.

" - } - }, - "documentation":"

Represents sending statistics data. Each SendDataPoint contains statistics for a 15-minute period of sending activity.

" - }, - "SendDataPointList":{ - "type":"list", - "member":{"shape":"SendDataPoint"} - }, - "SendEmailRequest":{ - "type":"structure", - "required":[ - "Source", - "Destination", - "Message" - ], - "members":{ - "Source":{ - "shape":"Address", - "documentation":"

The identity's email address.

By default, the string must be 7-bit ASCII. If the text must contain any other characters, then you must use MIME encoded-word syntax (RFC 2047) instead of a literal string. MIME encoded-word syntax uses the following form: =?charset?encoding?encoded-text?=. For more information, see RFC 2047.

" - }, - "Destination":{ - "shape":"Destination", - "documentation":"

The destination for this email, composed of To:, CC:, and BCC: fields.

" - }, - "Message":{ - "shape":"Message", - "documentation":"

The message to be sent.

" - }, - "ReplyToAddresses":{ - "shape":"AddressList", - "documentation":"

The reply-to email address(es) for the message. If the recipient replies to the message, each reply-to address will receive the reply.

" - }, - "ReturnPath":{ - "shape":"Address", - "documentation":"

The email address to which bounces and complaints are to be forwarded when feedback forwarding is enabled. If the message cannot be delivered to the recipient, then an error message will be returned from the recipient's ISP; this message will then be forwarded to the email address specified by the ReturnPath parameter.

" - } - }, - "documentation":"

Represents a request instructing the service to send a single email message.

This datatype can be used in application code to compose a message consisting of source, destination, message, reply-to, and return-path parts. This object can then be sent using the SendEmail action.

" - }, - "SendEmailResponse":{ - "type":"structure", - "required":["MessageId"], - "members":{ - "MessageId":{ - "shape":"MessageId", - "documentation":"

The unique message identifier returned from the SendEmail action.

" - } - }, - "documentation":"

Represents a unique message ID returned from a successful SendEmail request.

" - }, - "SendRawEmailRequest":{ - "type":"structure", - "required":["RawMessage"], - "members":{ - "Source":{ - "shape":"Address", - "documentation":"

The identity's email address.

By default, the string must be 7-bit ASCII. If the text must contain any other characters, then you must use MIME encoded-word syntax (RFC 2047) instead of a literal string. MIME encoded-word syntax uses the following form: =?charset?encoding?encoded-text?=. For more information, see RFC 2047.

" - }, - "Destinations":{ - "shape":"AddressList", - "documentation":"

A list of destinations for the message, consisting of To:, CC:, and BCC: addresses.

" - }, - "RawMessage":{ - "shape":"RawMessage", - "documentation":"

The raw text of the message. The client is responsible for ensuring the following:

" - } - }, - "documentation":"

Represents a request instructing the service to send a raw email message.

This datatype can be used in application code to compose a message consisting of source, destination, and raw message text. This object can then be sent using the SendRawEmail action.

" - }, - "SendRawEmailResponse":{ - "type":"structure", - "required":["MessageId"], - "members":{ - "MessageId":{ - "shape":"MessageId", - "documentation":"

The unique message identifier returned from the SendRawEmail action.

" - } - }, - "documentation":"

Represents a unique message ID returned from a successful SendRawEmail request.

" - }, - "SentLast24Hours":{"type":"double"}, - "SetIdentityDkimEnabledRequest":{ - "type":"structure", - "required":[ - "Identity", - "DkimEnabled" - ], - "members":{ - "Identity":{ - "shape":"Identity", - "documentation":"

The identity for which DKIM signing should be enabled or disabled.

" - }, - "DkimEnabled":{ - "shape":"Enabled", - "documentation":"

Sets whether DKIM signing is enabled for an identity. Set to true to enable DKIM signing for this identity; false to disable it.

" - } - }, - "documentation":"

Represents a request instructing the service to enable or disable DKIM signing for an identity.

" - }, - "SetIdentityDkimEnabledResponse":{ - "type":"structure", - "members":{ - }, - "documentation":"

An empty element. Receiving this element indicates that the request completed successfully.

" - }, - "SetIdentityFeedbackForwardingEnabledRequest":{ - "type":"structure", - "required":[ - "Identity", - "ForwardingEnabled" - ], - "members":{ - "Identity":{ - "shape":"Identity", - "documentation":"

The identity for which to set bounce and complaint notification forwarding. Examples: user@example.com, example.com.

" - }, - "ForwardingEnabled":{ - "shape":"Enabled", - "documentation":"

Sets whether Amazon SES will forward bounce and complaint notifications as email. true specifies that Amazon SES will forward bounce and complaint notifications as email, in addition to any Amazon SNS topic publishing otherwise specified. false specifies that Amazon SES will publish bounce and complaint notifications only through Amazon SNS. This value can only be set to false when Amazon SNS topics are set for both Bounce and Complaint notification types.

" - } - } - }, - "SetIdentityFeedbackForwardingEnabledResponse":{ - "type":"structure", - "members":{ - }, - "documentation":"

An empty element. Receiving this element indicates that the request completed successfully.

" - }, - "SetIdentityNotificationTopicRequest":{ - "type":"structure", - "required":[ - "Identity", - "NotificationType" - ], - "members":{ - "Identity":{ - "shape":"Identity", - "documentation":"

The identity for which the Amazon SNS topic will be set. Examples: user@example.com, example.com.

" - }, - "NotificationType":{ - "shape":"NotificationType", - "documentation":"

The type of notifications that will be published to the specified Amazon SNS topic.

" - }, - "SnsTopic":{ - "shape":"NotificationTopic", - "documentation":"

The Amazon Resource Name (ARN) of the Amazon SNS topic. If the parameter is omitted from the request or a null value is passed, SnsTopic is cleared and publishing is disabled.

" - } - }, - "documentation":"

Represents a request to set or clear an identity's notification topic.

" - }, - "SetIdentityNotificationTopicResponse":{ - "type":"structure", - "members":{ - }, - "documentation":"

An empty element. Receiving this element indicates that the request completed successfully.

" - }, - "Timestamp":{"type":"timestamp"}, - "VerificationAttributes":{ - "type":"map", - "key":{"shape":"Identity"}, - "value":{"shape":"IdentityVerificationAttributes"} - }, - "VerificationStatus":{ - "type":"string", - "enum":[ - "Pending", - "Success", - "Failed", - "TemporaryFailure", - "NotStarted" - ] - }, - "VerificationToken":{"type":"string"}, - "VerificationTokenList":{ - "type":"list", - "member":{"shape":"VerificationToken"} - }, - "VerifyDomainDkimRequest":{ - "type":"structure", - "required":["Domain"], - "members":{ - "Domain":{ - "shape":"Domain", - "documentation":"

The name of the domain to be verified for Easy DKIM signing.

" - } - }, - "documentation":"

Represents a request instructing the service to begin DKIM verification for a domain.

" - }, - "VerifyDomainDkimResponse":{ - "type":"structure", - "required":["DkimTokens"], - "members":{ - "DkimTokens":{ - "shape":"VerificationTokenList", - "documentation":"

A set of character strings that represent the domain's identity. If the identity is an email address, the tokens represent the domain of that address.

Using these tokens, you will need to create DNS CNAME records that point to DKIM public keys hosted by Amazon SES. Amazon Web Services will eventually detect that you have updated your DNS records; this detection process may take up to 72 hours. Upon successful detection, Amazon SES will be able to DKIM-sign emails originating from that domain.

For more information about creating DNS records using DKIM tokens, go to the Amazon SES Developer Guide.

" - } - }, - "documentation":"

Represents the DNS records that must be published in the domain name's DNS to complete DKIM setup.

" - }, - "VerifyDomainIdentityRequest":{ - "type":"structure", - "required":["Domain"], - "members":{ - "Domain":{ - "shape":"Domain", - "documentation":"

The domain to be verified.

" - } - }, - "documentation":"

Represents a request instructing the service to begin domain verification.

" - }, - "VerifyDomainIdentityResponse":{ - "type":"structure", - "required":["VerificationToken"], - "members":{ - "VerificationToken":{ - "shape":"VerificationToken", - "documentation":"

A TXT record that must be placed in the DNS settings for the domain, in order to complete domain verification.

" - } - }, - "documentation":"

Represents a token used for domain ownership verification.

" - }, - "VerifyEmailAddressRequest":{ - "type":"structure", - "required":["EmailAddress"], - "members":{ - "EmailAddress":{ - "shape":"Address", - "documentation":"

The email address to be verified.

" - } - }, - "documentation":"

Represents a request instructing the service to begin email address verification.

" - }, - "VerifyEmailIdentityRequest":{ - "type":"structure", - "required":["EmailAddress"], - "members":{ - "EmailAddress":{ - "shape":"Address", - "documentation":"

The email address to be verified.

" - } - }, - "documentation":"

Represents a request instructing the service to begin email address verification.

" - }, - "VerifyEmailIdentityResponse":{ - "type":"structure", - "members":{ - }, - "documentation":"

An empty element. Receiving this element indicates that the request completed successfully.

" - } - } -} diff --git a/src/github.com/getlantern/aws-sdk-go/apis/ses/2010-12-01.paginators.json b/src/github.com/getlantern/aws-sdk-go/apis/ses/2010-12-01.paginators.json deleted file mode 100644 index af0e93d184..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/apis/ses/2010-12-01.paginators.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "pagination": { - "ListIdentities": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxItems", - "result_key": "Identities" - } - } -} diff --git a/src/github.com/getlantern/aws-sdk-go/apis/ses/2010-12-01.waiters.json b/src/github.com/getlantern/aws-sdk-go/apis/ses/2010-12-01.waiters.json deleted file mode 100644 index b585d309ef..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/apis/ses/2010-12-01.waiters.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "version": 2, - "waiters": { - "IdentityExists": { - "delay": 3, - "operation": "GetIdentityVerificationAttributes", - "maxAttempts": 20, - "acceptors": [ - { - "expected": "Success", - "matcher": "pathAll", - "state": "success", - "argument": "VerificationAttributes.*.VerificationStatus" - } - ] - } - } -} diff --git a/src/github.com/getlantern/aws-sdk-go/apis/sns/2010-03-31.normal.json b/src/github.com/getlantern/aws-sdk-go/apis/sns/2010-03-31.normal.json deleted file mode 100644 index cefb50bbee..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/apis/sns/2010-03-31.normal.json +++ /dev/null @@ -1,2275 +0,0 @@ -{ - "metadata":{ - "apiVersion":"2010-03-31", - "endpointPrefix":"sns", - "serviceAbbreviation":"Amazon SNS", - "serviceFullName":"Amazon Simple Notification Service", - "signatureVersion":"v4", - "xmlNamespace":"http://sns.amazonaws.com/doc/2010-03-31/", - "protocol":"query" - }, - "documentation":"Amazon Simple Notification Service

Amazon Simple Notification Service (Amazon SNS) is a web service that enables you to build distributed web-enabled applications. Applications can use Amazon SNS to easily push real-time notification messages to interested subscribers over multiple delivery protocols. For more information about this product see http://aws.amazon.com/sns. For detailed information about Amazon SNS features and their associated API calls, see the Amazon SNS Developer Guide.

We also provide SDKs that enable you to access Amazon SNS from your preferred programming language. The SDKs contain functionality that automatically takes care of tasks such as: cryptographically signing your service requests, retrying requests, and handling error responses. For a list of available SDKs, go to Tools for Amazon Web Services.

", - "operations":{ - "AddPermission":{ - "name":"AddPermission", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"AddPermissionInput"}, - "errors":[ - { - "shape":"InvalidParameterException", - "error":{ - "code":"InvalidParameter", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Indicates that a request parameter does not comply with the associated constraints.

" - }, - { - "shape":"InternalErrorException", - "error":{ - "code":"InternalError", - "httpStatusCode":500 - }, - "exception":true, - "fault":true, - "documentation":"

Indicates an internal service error.

" - }, - { - "shape":"AuthorizationErrorException", - "error":{ - "code":"AuthorizationError", - "httpStatusCode":403, - "senderFault":true - }, - "exception":true, - "documentation":"

Indicates that the user has been denied access to the requested resource.

" - }, - { - "shape":"NotFoundException", - "error":{ - "code":"NotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

Indicates that the requested resource does not exist.

" - } - ], - "documentation":"

Adds a statement to a topic's access control policy, granting access for the specified AWS accounts to the specified actions.

" - }, - "ConfirmSubscription":{ - "name":"ConfirmSubscription", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"ConfirmSubscriptionInput", - "documentation":"Input for ConfirmSubscription action." - }, - "output":{ - "shape":"ConfirmSubscriptionResponse", - "documentation":"Response for ConfirmSubscriptions action.", - "resultWrapper":"ConfirmSubscriptionResult" - }, - "errors":[ - { - "shape":"SubscriptionLimitExceededException", - "error":{ - "code":"SubscriptionLimitExceeded", - "httpStatusCode":403, - "senderFault":true - }, - "exception":true, - "documentation":"

Indicates that the customer already owns the maximum allowed number of subscriptions.

" - }, - { - "shape":"InvalidParameterException", - "error":{ - "code":"InvalidParameter", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Indicates that a request parameter does not comply with the associated constraints.

" - }, - { - "shape":"NotFoundException", - "error":{ - "code":"NotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

Indicates that the requested resource does not exist.

" - }, - { - "shape":"InternalErrorException", - "error":{ - "code":"InternalError", - "httpStatusCode":500 - }, - "exception":true, - "fault":true, - "documentation":"

Indicates an internal service error.

" - }, - { - "shape":"AuthorizationErrorException", - "error":{ - "code":"AuthorizationError", - "httpStatusCode":403, - "senderFault":true - }, - "exception":true, - "documentation":"

Indicates that the user has been denied access to the requested resource.

" - } - ], - "documentation":"

Verifies an endpoint owner's intent to receive messages by validating the token sent to the endpoint by an earlier Subscribe action. If the token is valid, the action creates a new subscription and returns its Amazon Resource Name (ARN). This call requires an AWS signature only when the AuthenticateOnUnsubscribe flag is set to \"true\".

" - }, - "CreatePlatformApplication":{ - "name":"CreatePlatformApplication", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"CreatePlatformApplicationInput", - "documentation":"

Input for CreatePlatformApplication action.

" - }, - "output":{ - "shape":"CreatePlatformApplicationResponse", - "documentation":"

Response from CreatePlatformApplication action.

", - "resultWrapper":"CreatePlatformApplicationResult" - }, - "errors":[ - { - "shape":"InvalidParameterException", - "error":{ - "code":"InvalidParameter", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Indicates that a request parameter does not comply with the associated constraints.

" - }, - { - "shape":"InternalErrorException", - "error":{ - "code":"InternalError", - "httpStatusCode":500 - }, - "exception":true, - "fault":true, - "documentation":"

Indicates an internal service error.

" - }, - { - "shape":"AuthorizationErrorException", - "error":{ - "code":"AuthorizationError", - "httpStatusCode":403, - "senderFault":true - }, - "exception":true, - "documentation":"

Indicates that the user has been denied access to the requested resource.

" - } - ], - "documentation":"

Creates a platform application object for one of the supported push notification services, such as APNS and GCM, to which devices and mobile apps may register. You must specify PlatformPrincipal and PlatformCredential attributes when using the CreatePlatformApplication action. The PlatformPrincipal is received from the notification service. For APNS/APNS_SANDBOX, PlatformPrincipal is \"SSL certificate\". For GCM, PlatformPrincipal is not applicable. For ADM, PlatformPrincipal is \"client id\". The PlatformCredential is also received from the notification service. For APNS/APNS_SANDBOX, PlatformCredential is \"private key\". For GCM, PlatformCredential is \"API key\". For ADM, PlatformCredential is \"client secret\". The PlatformApplicationArn that is returned when using CreatePlatformApplication is then used as an attribute for the CreatePlatformEndpoint action. For more information, see Using Amazon SNS Mobile Push Notifications.

" - }, - "CreatePlatformEndpoint":{ - "name":"CreatePlatformEndpoint", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"CreatePlatformEndpointInput", - "documentation":"

Input for CreatePlatformEndpoint action.

" - }, - "output":{ - "shape":"CreateEndpointResponse", - "documentation":"

Response from CreateEndpoint action.

", - "resultWrapper":"CreatePlatformEndpointResult" - }, - "errors":[ - { - "shape":"InvalidParameterException", - "error":{ - "code":"InvalidParameter", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Indicates that a request parameter does not comply with the associated constraints.

" - }, - { - "shape":"InternalErrorException", - "error":{ - "code":"InternalError", - "httpStatusCode":500 - }, - "exception":true, - "fault":true, - "documentation":"

Indicates an internal service error.

" - }, - { - "shape":"AuthorizationErrorException", - "error":{ - "code":"AuthorizationError", - "httpStatusCode":403, - "senderFault":true - }, - "exception":true, - "documentation":"

Indicates that the user has been denied access to the requested resource.

" - }, - { - "shape":"NotFoundException", - "error":{ - "code":"NotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

Indicates that the requested resource does not exist.

" - } - ], - "documentation":"

Creates an endpoint for a device and mobile app on one of the supported push notification services, such as GCM and APNS. CreatePlatformEndpoint requires the PlatformApplicationArn that is returned from CreatePlatformApplication. The EndpointArn that is returned when using CreatePlatformEndpoint can then be used by the Publish action to send a message to a mobile app or by the Subscribe action for subscription to a topic. The CreatePlatformEndpoint action is idempotent, so if the requester already owns an endpoint with the same device token and attributes, that endpoint's ARN is returned without creating a new endpoint. For more information, see Using Amazon SNS Mobile Push Notifications.

When using CreatePlatformEndpoint with Baidu, two attributes must be provided: ChannelId and UserId. The token field must also contain the ChannelId. For more information, see Creating an Amazon SNS Endpoint for Baidu.

" - }, - "CreateTopic":{ - "name":"CreateTopic", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"CreateTopicInput", - "documentation":"

Input for CreateTopic action.

" - }, - "output":{ - "shape":"CreateTopicResponse", - "documentation":"

Response from CreateTopic action.

", - "resultWrapper":"CreateTopicResult" - }, - "errors":[ - { - "shape":"InvalidParameterException", - "error":{ - "code":"InvalidParameter", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Indicates that a request parameter does not comply with the associated constraints.

" - }, - { - "shape":"TopicLimitExceededException", - "error":{ - "code":"TopicLimitExceeded", - "httpStatusCode":403, - "senderFault":true - }, - "exception":true, - "documentation":"

Indicates that the customer already owns the maximum allowed number of topics.

" - }, - { - "shape":"InternalErrorException", - "error":{ - "code":"InternalError", - "httpStatusCode":500 - }, - "exception":true, - "fault":true, - "documentation":"

Indicates an internal service error.

" - }, - { - "shape":"AuthorizationErrorException", - "error":{ - "code":"AuthorizationError", - "httpStatusCode":403, - "senderFault":true - }, - "exception":true, - "documentation":"

Indicates that the user has been denied access to the requested resource.

" - } - ], - "documentation":"

Creates a topic to which notifications can be published. Users can create at most 3000 topics. For more information, see http://aws.amazon.com/sns. This action is idempotent, so if the requester already owns a topic with the specified name, that topic's ARN is returned without creating a new topic.

" - }, - "DeleteEndpoint":{ - "name":"DeleteEndpoint", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DeleteEndpointInput", - "documentation":"

Input for DeleteEndpoint action.

" - }, - "errors":[ - { - "shape":"InvalidParameterException", - "error":{ - "code":"InvalidParameter", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Indicates that a request parameter does not comply with the associated constraints.

" - }, - { - "shape":"InternalErrorException", - "error":{ - "code":"InternalError", - "httpStatusCode":500 - }, - "exception":true, - "fault":true, - "documentation":"

Indicates an internal service error.

" - }, - { - "shape":"AuthorizationErrorException", - "error":{ - "code":"AuthorizationError", - "httpStatusCode":403, - "senderFault":true - }, - "exception":true, - "documentation":"

Indicates that the user has been denied access to the requested resource.

" - } - ], - "documentation":"

Deletes the endpoint from Amazon SNS. This action is idempotent. For more information, see Using Amazon SNS Mobile Push Notifications.

" - }, - "DeletePlatformApplication":{ - "name":"DeletePlatformApplication", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DeletePlatformApplicationInput", - "documentation":"

Input for DeletePlatformApplication action.

" - }, - "errors":[ - { - "shape":"InvalidParameterException", - "error":{ - "code":"InvalidParameter", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Indicates that a request parameter does not comply with the associated constraints.

" - }, - { - "shape":"InternalErrorException", - "error":{ - "code":"InternalError", - "httpStatusCode":500 - }, - "exception":true, - "fault":true, - "documentation":"

Indicates an internal service error.

" - }, - { - "shape":"AuthorizationErrorException", - "error":{ - "code":"AuthorizationError", - "httpStatusCode":403, - "senderFault":true - }, - "exception":true, - "documentation":"

Indicates that the user has been denied access to the requested resource.

" - } - ], - "documentation":"

Deletes a platform application object for one of the supported push notification services, such as APNS and GCM. For more information, see Using Amazon SNS Mobile Push Notifications.

" - }, - "DeleteTopic":{ - "name":"DeleteTopic", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DeleteTopicInput"}, - "errors":[ - { - "shape":"InvalidParameterException", - "error":{ - "code":"InvalidParameter", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Indicates that a request parameter does not comply with the associated constraints.

" - }, - { - "shape":"InternalErrorException", - "error":{ - "code":"InternalError", - "httpStatusCode":500 - }, - "exception":true, - "fault":true, - "documentation":"

Indicates an internal service error.

" - }, - { - "shape":"AuthorizationErrorException", - "error":{ - "code":"AuthorizationError", - "httpStatusCode":403, - "senderFault":true - }, - "exception":true, - "documentation":"

Indicates that the user has been denied access to the requested resource.

" - }, - { - "shape":"NotFoundException", - "error":{ - "code":"NotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

Indicates that the requested resource does not exist.

" - } - ], - "documentation":"

Deletes a topic and all its subscriptions. Deleting a topic might prevent some messages previously sent to the topic from being delivered to subscribers. This action is idempotent, so deleting a topic that does not exist does not result in an error.

" - }, - "GetEndpointAttributes":{ - "name":"GetEndpointAttributes", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"GetEndpointAttributesInput", - "documentation":"

Input for GetEndpointAttributes action.

" - }, - "output":{ - "shape":"GetEndpointAttributesResponse", - "documentation":"

Response from GetEndpointAttributes of the EndpointArn.

", - "resultWrapper":"GetEndpointAttributesResult" - }, - "errors":[ - { - "shape":"InvalidParameterException", - "error":{ - "code":"InvalidParameter", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Indicates that a request parameter does not comply with the associated constraints.

" - }, - { - "shape":"InternalErrorException", - "error":{ - "code":"InternalError", - "httpStatusCode":500 - }, - "exception":true, - "fault":true, - "documentation":"

Indicates an internal service error.

" - }, - { - "shape":"AuthorizationErrorException", - "error":{ - "code":"AuthorizationError", - "httpStatusCode":403, - "senderFault":true - }, - "exception":true, - "documentation":"

Indicates that the user has been denied access to the requested resource.

" - }, - { - "shape":"NotFoundException", - "error":{ - "code":"NotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

Indicates that the requested resource does not exist.

" - } - ], - "documentation":"

Retrieves the endpoint attributes for a device on one of the supported push notification services, such as GCM and APNS. For more information, see Using Amazon SNS Mobile Push Notifications.

" - }, - "GetPlatformApplicationAttributes":{ - "name":"GetPlatformApplicationAttributes", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"GetPlatformApplicationAttributesInput", - "documentation":"

Input for GetPlatformApplicationAttributes action.

" - }, - "output":{ - "shape":"GetPlatformApplicationAttributesResponse", - "documentation":"

Response for GetPlatformApplicationAttributes action.

", - "resultWrapper":"GetPlatformApplicationAttributesResult" - }, - "errors":[ - { - "shape":"InvalidParameterException", - "error":{ - "code":"InvalidParameter", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Indicates that a request parameter does not comply with the associated constraints.

" - }, - { - "shape":"InternalErrorException", - "error":{ - "code":"InternalError", - "httpStatusCode":500 - }, - "exception":true, - "fault":true, - "documentation":"

Indicates an internal service error.

" - }, - { - "shape":"AuthorizationErrorException", - "error":{ - "code":"AuthorizationError", - "httpStatusCode":403, - "senderFault":true - }, - "exception":true, - "documentation":"

Indicates that the user has been denied access to the requested resource.

" - }, - { - "shape":"NotFoundException", - "error":{ - "code":"NotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

Indicates that the requested resource does not exist.

" - } - ], - "documentation":"

Retrieves the attributes of the platform application object for the supported push notification services, such as APNS and GCM. For more information, see Using Amazon SNS Mobile Push Notifications.

" - }, - "GetSubscriptionAttributes":{ - "name":"GetSubscriptionAttributes", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"GetSubscriptionAttributesInput", - "documentation":"

Input for GetSubscriptionAttributes.

" - }, - "output":{ - "shape":"GetSubscriptionAttributesResponse", - "documentation":"

Response for GetSubscriptionAttributes action.

", - "resultWrapper":"GetSubscriptionAttributesResult" - }, - "errors":[ - { - "shape":"InvalidParameterException", - "error":{ - "code":"InvalidParameter", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Indicates that a request parameter does not comply with the associated constraints.

" - }, - { - "shape":"InternalErrorException", - "error":{ - "code":"InternalError", - "httpStatusCode":500 - }, - "exception":true, - "fault":true, - "documentation":"

Indicates an internal service error.

" - }, - { - "shape":"NotFoundException", - "error":{ - "code":"NotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

Indicates that the requested resource does not exist.

" - }, - { - "shape":"AuthorizationErrorException", - "error":{ - "code":"AuthorizationError", - "httpStatusCode":403, - "senderFault":true - }, - "exception":true, - "documentation":"

Indicates that the user has been denied access to the requested resource.

" - } - ], - "documentation":"

Returns all of the properties of a subscription.

" - }, - "GetTopicAttributes":{ - "name":"GetTopicAttributes", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"GetTopicAttributesInput", - "documentation":"

Input for GetTopicAttributes action.

" - }, - "output":{ - "shape":"GetTopicAttributesResponse", - "documentation":"

Response for GetTopicAttributes action.

", - "resultWrapper":"GetTopicAttributesResult" - }, - "errors":[ - { - "shape":"InvalidParameterException", - "error":{ - "code":"InvalidParameter", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Indicates that a request parameter does not comply with the associated constraints.

" - }, - { - "shape":"InternalErrorException", - "error":{ - "code":"InternalError", - "httpStatusCode":500 - }, - "exception":true, - "fault":true, - "documentation":"

Indicates an internal service error.

" - }, - { - "shape":"NotFoundException", - "error":{ - "code":"NotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

Indicates that the requested resource does not exist.

" - }, - { - "shape":"AuthorizationErrorException", - "error":{ - "code":"AuthorizationError", - "httpStatusCode":403, - "senderFault":true - }, - "exception":true, - "documentation":"

Indicates that the user has been denied access to the requested resource.

" - } - ], - "documentation":"

Returns all of the properties of a topic. Topic properties returned might differ based on the authorization of the user.

" - }, - "ListEndpointsByPlatformApplication":{ - "name":"ListEndpointsByPlatformApplication", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"ListEndpointsByPlatformApplicationInput", - "documentation":"

Input for ListEndpointsByPlatformApplication action.

" - }, - "output":{ - "shape":"ListEndpointsByPlatformApplicationResponse", - "documentation":"

Response for ListEndpointsByPlatformApplication action.

", - "resultWrapper":"ListEndpointsByPlatformApplicationResult" - }, - "errors":[ - { - "shape":"InvalidParameterException", - "error":{ - "code":"InvalidParameter", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Indicates that a request parameter does not comply with the associated constraints.

" - }, - { - "shape":"InternalErrorException", - "error":{ - "code":"InternalError", - "httpStatusCode":500 - }, - "exception":true, - "fault":true, - "documentation":"

Indicates an internal service error.

" - }, - { - "shape":"AuthorizationErrorException", - "error":{ - "code":"AuthorizationError", - "httpStatusCode":403, - "senderFault":true - }, - "exception":true, - "documentation":"

Indicates that the user has been denied access to the requested resource.

" - }, - { - "shape":"NotFoundException", - "error":{ - "code":"NotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

Indicates that the requested resource does not exist.

" - } - ], - "documentation":"

Lists the endpoints and endpoint attributes for devices in a supported push notification service, such as GCM and APNS. The results for ListEndpointsByPlatformApplication are paginated and return a limited list of endpoints, up to 100. If additional records are available after the first page results, then a NextToken string will be returned. To receive the next page, you call ListEndpointsByPlatformApplication again using the NextToken string received from the previous call. When there are no more records to return, NextToken will be null. For more information, see Using Amazon SNS Mobile Push Notifications.

" - }, - "ListPlatformApplications":{ - "name":"ListPlatformApplications", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"ListPlatformApplicationsInput", - "documentation":"

Input for ListPlatformApplications action.

" - }, - "output":{ - "shape":"ListPlatformApplicationsResponse", - "documentation":"

Response for ListPlatformApplications action.

", - "resultWrapper":"ListPlatformApplicationsResult" - }, - "errors":[ - { - "shape":"InvalidParameterException", - "error":{ - "code":"InvalidParameter", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Indicates that a request parameter does not comply with the associated constraints.

" - }, - { - "shape":"InternalErrorException", - "error":{ - "code":"InternalError", - "httpStatusCode":500 - }, - "exception":true, - "fault":true, - "documentation":"

Indicates an internal service error.

" - }, - { - "shape":"AuthorizationErrorException", - "error":{ - "code":"AuthorizationError", - "httpStatusCode":403, - "senderFault":true - }, - "exception":true, - "documentation":"

Indicates that the user has been denied access to the requested resource.

" - } - ], - "documentation":"

Lists the platform application objects for the supported push notification services, such as APNS and GCM. The results for ListPlatformApplications are paginated and return a limited list of applications, up to 100. If additional records are available after the first page results, then a NextToken string will be returned. To receive the next page, you call ListPlatformApplications using the NextToken string received from the previous call. When there are no more records to return, NextToken will be null. For more information, see Using Amazon SNS Mobile Push Notifications.

" - }, - "ListSubscriptions":{ - "name":"ListSubscriptions", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"ListSubscriptionsInput", - "documentation":"Input for ListSubscriptions action." - }, - "output":{ - "shape":"ListSubscriptionsResponse", - "documentation":"

Response for ListSubscriptions action

", - "resultWrapper":"ListSubscriptionsResult" - }, - "errors":[ - { - "shape":"InvalidParameterException", - "error":{ - "code":"InvalidParameter", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Indicates that a request parameter does not comply with the associated constraints.

" - }, - { - "shape":"InternalErrorException", - "error":{ - "code":"InternalError", - "httpStatusCode":500 - }, - "exception":true, - "fault":true, - "documentation":"

Indicates an internal service error.

" - }, - { - "shape":"AuthorizationErrorException", - "error":{ - "code":"AuthorizationError", - "httpStatusCode":403, - "senderFault":true - }, - "exception":true, - "documentation":"

Indicates that the user has been denied access to the requested resource.

" - } - ], - "documentation":"

Returns a list of the requester's subscriptions. Each call returns a limited list of subscriptions, up to 100. If there are more subscriptions, a NextToken is also returned. Use the NextToken parameter in a new ListSubscriptions call to get further results.

" - }, - "ListSubscriptionsByTopic":{ - "name":"ListSubscriptionsByTopic", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"ListSubscriptionsByTopicInput", - "documentation":"

Input for ListSubscriptionsByTopic action.

" - }, - "output":{ - "shape":"ListSubscriptionsByTopicResponse", - "documentation":"

Response for ListSubscriptionsByTopic action.

", - "resultWrapper":"ListSubscriptionsByTopicResult" - }, - "errors":[ - { - "shape":"InvalidParameterException", - "error":{ - "code":"InvalidParameter", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Indicates that a request parameter does not comply with the associated constraints.

" - }, - { - "shape":"InternalErrorException", - "error":{ - "code":"InternalError", - "httpStatusCode":500 - }, - "exception":true, - "fault":true, - "documentation":"

Indicates an internal service error.

" - }, - { - "shape":"NotFoundException", - "error":{ - "code":"NotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

Indicates that the requested resource does not exist.

" - }, - { - "shape":"AuthorizationErrorException", - "error":{ - "code":"AuthorizationError", - "httpStatusCode":403, - "senderFault":true - }, - "exception":true, - "documentation":"

Indicates that the user has been denied access to the requested resource.

" - } - ], - "documentation":"

Returns a list of the subscriptions to a specific topic. Each call returns a limited list of subscriptions, up to 100. If there are more subscriptions, a NextToken is also returned. Use the NextToken parameter in a new ListSubscriptionsByTopic call to get further results.

" - }, - "ListTopics":{ - "name":"ListTopics", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"ListTopicsInput"}, - "output":{ - "shape":"ListTopicsResponse", - "documentation":"

Response for ListTopics action.

", - "resultWrapper":"ListTopicsResult" - }, - "errors":[ - { - "shape":"InvalidParameterException", - "error":{ - "code":"InvalidParameter", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Indicates that a request parameter does not comply with the associated constraints.

" - }, - { - "shape":"InternalErrorException", - "error":{ - "code":"InternalError", - "httpStatusCode":500 - }, - "exception":true, - "fault":true, - "documentation":"

Indicates an internal service error.

" - }, - { - "shape":"AuthorizationErrorException", - "error":{ - "code":"AuthorizationError", - "httpStatusCode":403, - "senderFault":true - }, - "exception":true, - "documentation":"

Indicates that the user has been denied access to the requested resource.

" - } - ], - "documentation":"

Returns a list of the requester's topics. Each call returns a limited list of topics, up to 100. If there are more topics, a NextToken is also returned. Use the NextToken parameter in a new ListTopics call to get further results.

" - }, - "Publish":{ - "name":"Publish", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"PublishInput", - "documentation":"

Input for Publish action.

" - }, - "output":{ - "shape":"PublishResponse", - "documentation":"

Response for Publish action.

", - "resultWrapper":"PublishResult" - }, - "errors":[ - { - "shape":"InvalidParameterException", - "error":{ - "code":"InvalidParameter", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Indicates that a request parameter does not comply with the associated constraints.

" - }, - { - "shape":"InvalidParameterValueException", - "error":{ - "code":"ParameterValueInvalid", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Indicates that a request parameter does not comply with the associated constraints.

" - }, - { - "shape":"InternalErrorException", - "error":{ - "code":"InternalError", - "httpStatusCode":500 - }, - "exception":true, - "fault":true, - "documentation":"

Indicates an internal service error.

" - }, - { - "shape":"NotFoundException", - "error":{ - "code":"NotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

Indicates that the requested resource does not exist.

" - }, - { - "shape":"EndpointDisabledException", - "error":{ - "code":"EndpointDisabled", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Exception error indicating endpoint disabled.

" - }, - { - "shape":"PlatformApplicationDisabledException", - "error":{ - "code":"PlatformApplicationDisabled", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Exception error indicating platform application disabled.

" - }, - { - "shape":"AuthorizationErrorException", - "error":{ - "code":"AuthorizationError", - "httpStatusCode":403, - "senderFault":true - }, - "exception":true, - "documentation":"

Indicates that the user has been denied access to the requested resource.

" - } - ], - "documentation":"

Sends a message to all of a topic's subscribed endpoints. When a messageId is returned, the message has been saved and Amazon SNS will attempt to deliver it to the topic's subscribers shortly. The format of the outgoing message to each subscribed endpoint depends on the notification protocol selected.

To use the Publish action for sending a message to a mobile endpoint, such as an app on a Kindle device or mobile phone, you must specify the EndpointArn. The EndpointArn is returned when making a call with the CreatePlatformEndpoint action. The second example below shows a request and response for publishing to a mobile endpoint.

" - }, - "RemovePermission":{ - "name":"RemovePermission", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"RemovePermissionInput", - "documentation":"

Input for RemovePermission action.

" - }, - "errors":[ - { - "shape":"InvalidParameterException", - "error":{ - "code":"InvalidParameter", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Indicates that a request parameter does not comply with the associated constraints.

" - }, - { - "shape":"InternalErrorException", - "error":{ - "code":"InternalError", - "httpStatusCode":500 - }, - "exception":true, - "fault":true, - "documentation":"

Indicates an internal service error.

" - }, - { - "shape":"AuthorizationErrorException", - "error":{ - "code":"AuthorizationError", - "httpStatusCode":403, - "senderFault":true - }, - "exception":true, - "documentation":"

Indicates that the user has been denied access to the requested resource.

" - }, - { - "shape":"NotFoundException", - "error":{ - "code":"NotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

Indicates that the requested resource does not exist.

" - } - ], - "documentation":"

Removes a statement from a topic's access control policy.

" - }, - "SetEndpointAttributes":{ - "name":"SetEndpointAttributes", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"SetEndpointAttributesInput", - "documentation":"

Input for SetEndpointAttributes action.

" - }, - "errors":[ - { - "shape":"InvalidParameterException", - "error":{ - "code":"InvalidParameter", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Indicates that a request parameter does not comply with the associated constraints.

" - }, - { - "shape":"InternalErrorException", - "error":{ - "code":"InternalError", - "httpStatusCode":500 - }, - "exception":true, - "fault":true, - "documentation":"

Indicates an internal service error.

" - }, - { - "shape":"AuthorizationErrorException", - "error":{ - "code":"AuthorizationError", - "httpStatusCode":403, - "senderFault":true - }, - "exception":true, - "documentation":"

Indicates that the user has been denied access to the requested resource.

" - }, - { - "shape":"NotFoundException", - "error":{ - "code":"NotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

Indicates that the requested resource does not exist.

" - } - ], - "documentation":"

Sets the attributes for an endpoint for a device on one of the supported push notification services, such as GCM and APNS. For more information, see Using Amazon SNS Mobile Push Notifications.

" - }, - "SetPlatformApplicationAttributes":{ - "name":"SetPlatformApplicationAttributes", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"SetPlatformApplicationAttributesInput", - "documentation":"

Input for SetPlatformApplicationAttributes action.

" - }, - "errors":[ - { - "shape":"InvalidParameterException", - "error":{ - "code":"InvalidParameter", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Indicates that a request parameter does not comply with the associated constraints.

" - }, - { - "shape":"InternalErrorException", - "error":{ - "code":"InternalError", - "httpStatusCode":500 - }, - "exception":true, - "fault":true, - "documentation":"

Indicates an internal service error.

" - }, - { - "shape":"AuthorizationErrorException", - "error":{ - "code":"AuthorizationError", - "httpStatusCode":403, - "senderFault":true - }, - "exception":true, - "documentation":"

Indicates that the user has been denied access to the requested resource.

" - }, - { - "shape":"NotFoundException", - "error":{ - "code":"NotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

Indicates that the requested resource does not exist.

" - } - ], - "documentation":"

Sets the attributes of the platform application object for the supported push notification services, such as APNS and GCM. For more information, see Using Amazon SNS Mobile Push Notifications.

" - }, - "SetSubscriptionAttributes":{ - "name":"SetSubscriptionAttributes", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"SetSubscriptionAttributesInput", - "documentation":"

Input for SetSubscriptionAttributes action.

" - }, - "errors":[ - { - "shape":"InvalidParameterException", - "error":{ - "code":"InvalidParameter", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Indicates that a request parameter does not comply with the associated constraints.

" - }, - { - "shape":"InternalErrorException", - "error":{ - "code":"InternalError", - "httpStatusCode":500 - }, - "exception":true, - "fault":true, - "documentation":"

Indicates an internal service error.

" - }, - { - "shape":"NotFoundException", - "error":{ - "code":"NotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

Indicates that the requested resource does not exist.

" - }, - { - "shape":"AuthorizationErrorException", - "error":{ - "code":"AuthorizationError", - "httpStatusCode":403, - "senderFault":true - }, - "exception":true, - "documentation":"

Indicates that the user has been denied access to the requested resource.

" - } - ], - "documentation":"

Allows a subscription owner to set an attribute of the topic to a new value.

" - }, - "SetTopicAttributes":{ - "name":"SetTopicAttributes", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"SetTopicAttributesInput", - "documentation":"

Input for SetTopicAttributes action.

" - }, - "errors":[ - { - "shape":"InvalidParameterException", - "error":{ - "code":"InvalidParameter", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Indicates that a request parameter does not comply with the associated constraints.

" - }, - { - "shape":"InternalErrorException", - "error":{ - "code":"InternalError", - "httpStatusCode":500 - }, - "exception":true, - "fault":true, - "documentation":"

Indicates an internal service error.

" - }, - { - "shape":"NotFoundException", - "error":{ - "code":"NotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

Indicates that the requested resource does not exist.

" - }, - { - "shape":"AuthorizationErrorException", - "error":{ - "code":"AuthorizationError", - "httpStatusCode":403, - "senderFault":true - }, - "exception":true, - "documentation":"

Indicates that the user has been denied access to the requested resource.

" - } - ], - "documentation":"

Allows a topic owner to set an attribute of the topic to a new value.

" - }, - "Subscribe":{ - "name":"Subscribe", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"SubscribeInput", - "documentation":"Input for Subscribe action." - }, - "output":{ - "shape":"SubscribeResponse", - "documentation":"Response for Subscribe action.", - "resultWrapper":"SubscribeResult" - }, - "errors":[ - { - "shape":"SubscriptionLimitExceededException", - "error":{ - "code":"SubscriptionLimitExceeded", - "httpStatusCode":403, - "senderFault":true - }, - "exception":true, - "documentation":"

Indicates that the customer already owns the maximum allowed number of subscriptions.

" - }, - { - "shape":"InvalidParameterException", - "error":{ - "code":"InvalidParameter", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Indicates that a request parameter does not comply with the associated constraints.

" - }, - { - "shape":"InternalErrorException", - "error":{ - "code":"InternalError", - "httpStatusCode":500 - }, - "exception":true, - "fault":true, - "documentation":"

Indicates an internal service error.

" - }, - { - "shape":"NotFoundException", - "error":{ - "code":"NotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

Indicates that the requested resource does not exist.

" - }, - { - "shape":"AuthorizationErrorException", - "error":{ - "code":"AuthorizationError", - "httpStatusCode":403, - "senderFault":true - }, - "exception":true, - "documentation":"

Indicates that the user has been denied access to the requested resource.

" - } - ], - "documentation":"

Prepares to subscribe an endpoint by sending the endpoint a confirmation message. To actually create a subscription, the endpoint owner must call the ConfirmSubscription action with the token from the confirmation message. Confirmation tokens are valid for three days.

" - }, - "Unsubscribe":{ - "name":"Unsubscribe", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"UnsubscribeInput", - "documentation":"

Input for Unsubscribe action.

" - }, - "errors":[ - { - "shape":"InvalidParameterException", - "error":{ - "code":"InvalidParameter", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Indicates that a request parameter does not comply with the associated constraints.

" - }, - { - "shape":"InternalErrorException", - "error":{ - "code":"InternalError", - "httpStatusCode":500 - }, - "exception":true, - "fault":true, - "documentation":"

Indicates an internal service error.

" - }, - { - "shape":"AuthorizationErrorException", - "error":{ - "code":"AuthorizationError", - "httpStatusCode":403, - "senderFault":true - }, - "exception":true, - "documentation":"

Indicates that the user has been denied access to the requested resource.

" - }, - { - "shape":"NotFoundException", - "error":{ - "code":"NotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

Indicates that the requested resource does not exist.

" - } - ], - "documentation":"

Deletes a subscription. If the subscription requires authentication for deletion, only the owner of the subscription or the topic's owner can unsubscribe, and an AWS signature is required. If the Unsubscribe call does not require authentication and the requester is not the subscription owner, a final cancellation message is delivered to the endpoint, so that the endpoint owner can easily resubscribe to the topic if the Unsubscribe request was unintended.

" - } - }, - "shapes":{ - "ActionsList":{ - "type":"list", - "member":{"shape":"action"} - }, - "AddPermissionInput":{ - "type":"structure", - "required":[ - "TopicArn", - "Label", - "AWSAccountId", - "ActionName" - ], - "members":{ - "TopicArn":{ - "shape":"topicARN", - "documentation":"

The ARN of the topic whose access control policy you wish to modify.

" - }, - "Label":{ - "shape":"label", - "documentation":"

A unique identifier for the new policy statement.

" - }, - "AWSAccountId":{ - "shape":"DelegatesList", - "documentation":"

The AWS account IDs of the users (principals) who will be given access to the specified actions. The users must have AWS accounts, but do not need to be signed up for this service.

" - }, - "ActionName":{ - "shape":"ActionsList", - "documentation":"

The action you want to allow for the specified principal(s).

Valid values: any Amazon SNS action name.

" - } - } - }, - "AuthorizationErrorException":{ - "type":"structure", - "members":{ - "message":{"shape":"string"} - }, - "error":{ - "code":"AuthorizationError", - "httpStatusCode":403, - "senderFault":true - }, - "exception":true, - "documentation":"

Indicates that the user has been denied access to the requested resource.

" - }, - "Binary":{"type":"blob"}, - "ConfirmSubscriptionInput":{ - "type":"structure", - "required":[ - "TopicArn", - "Token" - ], - "members":{ - "TopicArn":{ - "shape":"topicARN", - "documentation":"

The ARN of the topic for which you wish to confirm a subscription.

" - }, - "Token":{ - "shape":"token", - "documentation":"

Short-lived token sent to an endpoint during the Subscribe action.

" - }, - "AuthenticateOnUnsubscribe":{ - "shape":"authenticateOnUnsubscribe", - "documentation":"

Disallows unauthenticated unsubscribes of the subscription. If the value of this parameter is true and the request has an AWS signature, then only the topic owner and the subscription owner can unsubscribe the endpoint. The unsubscribe action requires AWS authentication.

" - } - }, - "documentation":"Input for ConfirmSubscription action." - }, - "ConfirmSubscriptionResponse":{ - "type":"structure", - "members":{ - "SubscriptionArn":{ - "shape":"subscriptionARN", - "documentation":"

The ARN of the created subscription.

" - } - }, - "documentation":"Response for ConfirmSubscriptions action." - }, - "CreateEndpointResponse":{ - "type":"structure", - "members":{ - "EndpointArn":{ - "shape":"String", - "documentation":"

EndpointArn returned from CreateEndpoint action.

" - } - }, - "documentation":"

Response from CreateEndpoint action.

" - }, - "CreatePlatformApplicationInput":{ - "type":"structure", - "required":[ - "Name", - "Platform", - "Attributes" - ], - "members":{ - "Name":{ - "shape":"String", - "documentation":"

Application names must be made up of only uppercase and lowercase ASCII letters, numbers, underscores, hyphens, and periods, and must be between 1 and 256 characters long.

" - }, - "Platform":{ - "shape":"String", - "documentation":"

The following platforms are supported: ADM (Amazon Device Messaging), APNS (Apple Push Notification Service), APNS_SANDBOX, and GCM (Google Cloud Messaging).

" - }, - "Attributes":{ - "shape":"MapStringToString", - "documentation":"

For a list of attributes, see SetPlatformApplicationAttributes

" - } - }, - "documentation":"

Input for CreatePlatformApplication action.

" - }, - "CreatePlatformApplicationResponse":{ - "type":"structure", - "members":{ - "PlatformApplicationArn":{ - "shape":"String", - "documentation":"

PlatformApplicationArn is returned.

" - } - }, - "documentation":"

Response from CreatePlatformApplication action.

" - }, - "CreatePlatformEndpointInput":{ - "type":"structure", - "required":[ - "PlatformApplicationArn", - "Token" - ], - "members":{ - "PlatformApplicationArn":{ - "shape":"String", - "documentation":"

PlatformApplicationArn returned from CreatePlatformApplication is used to create a an endpoint.

" - }, - "Token":{ - "shape":"String", - "documentation":"

Unique identifier created by the notification service for an app on a device. The specific name for Token will vary, depending on which notification service is being used. For example, when using APNS as the notification service, you need the device token. Alternatively, when using GCM or ADM, the device token equivalent is called the registration ID.

" - }, - "CustomUserData":{ - "shape":"String", - "documentation":"

Arbitrary user data to associate with the endpoint. Amazon SNS does not use this data. The data must be in UTF-8 format and less than 2KB.

" - }, - "Attributes":{ - "shape":"MapStringToString", - "documentation":"

For a list of attributes, see SetEndpointAttributes.

" - } - }, - "documentation":"

Input for CreatePlatformEndpoint action.

" - }, - "CreateTopicInput":{ - "type":"structure", - "required":["Name"], - "members":{ - "Name":{ - "shape":"topicName", - "documentation":"

The name of the topic you want to create.

Constraints: Topic names must be made up of only uppercase and lowercase ASCII letters, numbers, underscores, and hyphens, and must be between 1 and 256 characters long.

" - } - }, - "documentation":"

Input for CreateTopic action.

" - }, - "CreateTopicResponse":{ - "type":"structure", - "members":{ - "TopicArn":{ - "shape":"topicARN", - "documentation":"

The Amazon Resource Name (ARN) assigned to the created topic.

" - } - }, - "documentation":"

Response from CreateTopic action.

" - }, - "DelegatesList":{ - "type":"list", - "member":{"shape":"delegate"} - }, - "DeleteEndpointInput":{ - "type":"structure", - "required":["EndpointArn"], - "members":{ - "EndpointArn":{ - "shape":"String", - "documentation":"

EndpointArn of endpoint to delete.

" - } - }, - "documentation":"

Input for DeleteEndpoint action.

" - }, - "DeletePlatformApplicationInput":{ - "type":"structure", - "required":["PlatformApplicationArn"], - "members":{ - "PlatformApplicationArn":{ - "shape":"String", - "documentation":"

PlatformApplicationArn of platform application object to delete.

" - } - }, - "documentation":"

Input for DeletePlatformApplication action.

" - }, - "DeleteTopicInput":{ - "type":"structure", - "required":["TopicArn"], - "members":{ - "TopicArn":{ - "shape":"topicARN", - "documentation":"

The ARN of the topic you want to delete.

" - } - } - }, - "Endpoint":{ - "type":"structure", - "members":{ - "EndpointArn":{ - "shape":"String", - "documentation":"

EndpointArn for mobile app and device.

" - }, - "Attributes":{ - "shape":"MapStringToString", - "documentation":"

Attributes for endpoint.

" - } - }, - "documentation":"

Endpoint for mobile app and device.

" - }, - "EndpointDisabledException":{ - "type":"structure", - "members":{ - "message":{ - "shape":"string", - "documentation":"

Message for endpoint disabled.

" - } - }, - "error":{ - "code":"EndpointDisabled", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Exception error indicating endpoint disabled.

" - }, - "GetEndpointAttributesInput":{ - "type":"structure", - "required":["EndpointArn"], - "members":{ - "EndpointArn":{ - "shape":"String", - "documentation":"

EndpointArn for GetEndpointAttributes input.

" - } - }, - "documentation":"

Input for GetEndpointAttributes action.

" - }, - "GetEndpointAttributesResponse":{ - "type":"structure", - "members":{ - "Attributes":{ - "shape":"MapStringToString", - "documentation":"

Attributes include the following:

" - } - }, - "documentation":"

Response from GetEndpointAttributes of the EndpointArn.

" - }, - "GetPlatformApplicationAttributesInput":{ - "type":"structure", - "required":["PlatformApplicationArn"], - "members":{ - "PlatformApplicationArn":{ - "shape":"String", - "documentation":"

PlatformApplicationArn for GetPlatformApplicationAttributesInput.

" - } - }, - "documentation":"

Input for GetPlatformApplicationAttributes action.

" - }, - "GetPlatformApplicationAttributesResponse":{ - "type":"structure", - "members":{ - "Attributes":{ - "shape":"MapStringToString", - "documentation":"

Attributes include the following:

" - } - }, - "documentation":"

Response for GetPlatformApplicationAttributes action.

" - }, - "GetSubscriptionAttributesInput":{ - "type":"structure", - "required":["SubscriptionArn"], - "members":{ - "SubscriptionArn":{ - "shape":"subscriptionARN", - "documentation":"

The ARN of the subscription whose properties you want to get.

" - } - }, - "documentation":"

Input for GetSubscriptionAttributes.

" - }, - "GetSubscriptionAttributesResponse":{ - "type":"structure", - "members":{ - "Attributes":{ - "shape":"SubscriptionAttributesMap", - "documentation":"

A map of the subscription's attributes. Attributes in this map include the following:

" - } - }, - "documentation":"

Response for GetSubscriptionAttributes action.

" - }, - "GetTopicAttributesInput":{ - "type":"structure", - "required":["TopicArn"], - "members":{ - "TopicArn":{ - "shape":"topicARN", - "documentation":"

The ARN of the topic whose properties you want to get.

" - } - }, - "documentation":"

Input for GetTopicAttributes action.

" - }, - "GetTopicAttributesResponse":{ - "type":"structure", - "members":{ - "Attributes":{ - "shape":"TopicAttributesMap", - "documentation":"

A map of the topic's attributes. Attributes in this map include the following:

" - } - }, - "documentation":"

Response for GetTopicAttributes action.

" - }, - "InternalErrorException":{ - "type":"structure", - "members":{ - "message":{"shape":"string"} - }, - "error":{ - "code":"InternalError", - "httpStatusCode":500 - }, - "exception":true, - "fault":true, - "documentation":"

Indicates an internal service error.

" - }, - "InvalidParameterException":{ - "type":"structure", - "members":{ - "message":{"shape":"string"} - }, - "error":{ - "code":"InvalidParameter", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Indicates that a request parameter does not comply with the associated constraints.

" - }, - "InvalidParameterValueException":{ - "type":"structure", - "members":{ - "message":{"shape":"string"} - }, - "error":{ - "code":"ParameterValueInvalid", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Indicates that a request parameter does not comply with the associated constraints.

" - }, - "ListEndpointsByPlatformApplicationInput":{ - "type":"structure", - "required":["PlatformApplicationArn"], - "members":{ - "PlatformApplicationArn":{ - "shape":"String", - "documentation":"

PlatformApplicationArn for ListEndpointsByPlatformApplicationInput action.

" - }, - "NextToken":{ - "shape":"String", - "documentation":"

NextToken string is used when calling ListEndpointsByPlatformApplication action to retrieve additional records that are available after the first page results.

" - } - }, - "documentation":"

Input for ListEndpointsByPlatformApplication action.

" - }, - "ListEndpointsByPlatformApplicationResponse":{ - "type":"structure", - "members":{ - "Endpoints":{ - "shape":"ListOfEndpoints", - "documentation":"

Endpoints returned for ListEndpointsByPlatformApplication action.

" - }, - "NextToken":{ - "shape":"String", - "documentation":"

NextToken string is returned when calling ListEndpointsByPlatformApplication action if additional records are available after the first page results.

" - } - }, - "documentation":"

Response for ListEndpointsByPlatformApplication action.

" - }, - "ListOfEndpoints":{ - "type":"list", - "member":{"shape":"Endpoint"} - }, - "ListOfPlatformApplications":{ - "type":"list", - "member":{"shape":"PlatformApplication"} - }, - "ListPlatformApplicationsInput":{ - "type":"structure", - "members":{ - "NextToken":{ - "shape":"String", - "documentation":"

NextToken string is used when calling ListPlatformApplications action to retrieve additional records that are available after the first page results.

" - } - }, - "documentation":"

Input for ListPlatformApplications action.

" - }, - "ListPlatformApplicationsResponse":{ - "type":"structure", - "members":{ - "PlatformApplications":{ - "shape":"ListOfPlatformApplications", - "documentation":"

Platform applications returned when calling ListPlatformApplications action.

" - }, - "NextToken":{ - "shape":"String", - "documentation":"

NextToken string is returned when calling ListPlatformApplications action if additional records are available after the first page results.

" - } - }, - "documentation":"

Response for ListPlatformApplications action.

" - }, - "ListSubscriptionsByTopicInput":{ - "type":"structure", - "required":["TopicArn"], - "members":{ - "TopicArn":{ - "shape":"topicARN", - "documentation":"

The ARN of the topic for which you wish to find subscriptions.

" - }, - "NextToken":{ - "shape":"nextToken", - "documentation":"

Token returned by the previous ListSubscriptionsByTopic request.

" - } - }, - "documentation":"

Input for ListSubscriptionsByTopic action.

" - }, - "ListSubscriptionsByTopicResponse":{ - "type":"structure", - "members":{ - "Subscriptions":{ - "shape":"SubscriptionsList", - "documentation":"

A list of subscriptions.

" - }, - "NextToken":{ - "shape":"nextToken", - "documentation":"

Token to pass along to the next ListSubscriptionsByTopic request. This element is returned if there are more subscriptions to retrieve.

" - } - }, - "documentation":"

Response for ListSubscriptionsByTopic action.

" - }, - "ListSubscriptionsInput":{ - "type":"structure", - "members":{ - "NextToken":{ - "shape":"nextToken", - "documentation":"

Token returned by the previous ListSubscriptions request.

" - } - }, - "documentation":"Input for ListSubscriptions action." - }, - "ListSubscriptionsResponse":{ - "type":"structure", - "members":{ - "Subscriptions":{ - "shape":"SubscriptionsList", - "documentation":"

A list of subscriptions.

" - }, - "NextToken":{ - "shape":"nextToken", - "documentation":"

Token to pass along to the next ListSubscriptions request. This element is returned if there are more subscriptions to retrieve.

" - } - }, - "documentation":"

Response for ListSubscriptions action

" - }, - "ListTopicsInput":{ - "type":"structure", - "members":{ - "NextToken":{ - "shape":"nextToken", - "documentation":"

Token returned by the previous ListTopics request.

" - } - } - }, - "ListTopicsResponse":{ - "type":"structure", - "members":{ - "Topics":{ - "shape":"TopicsList", - "documentation":"

A list of topic ARNs.

" - }, - "NextToken":{ - "shape":"nextToken", - "documentation":"

Token to pass along to the next ListTopics request. This element is returned if there are additional topics to retrieve.

" - } - }, - "documentation":"

Response for ListTopics action.

" - }, - "MapStringToString":{ - "type":"map", - "key":{"shape":"String"}, - "value":{"shape":"String"} - }, - "MessageAttributeMap":{ - "type":"map", - "key":{ - "shape":"String", - "locationName":"Name" - }, - "value":{ - "shape":"MessageAttributeValue", - "locationName":"Value" - } - }, - "MessageAttributeValue":{ - "type":"structure", - "required":["DataType"], - "members":{ - "DataType":{ - "shape":"String", - "documentation":"

Amazon SNS supports the following logical data types: String, Number, and Binary. For more information, see Message Attribute Data Types.

" - }, - "StringValue":{ - "shape":"String", - "documentation":"

Strings are Unicode with UTF8 binary encoding. For a list of code values, see http://en.wikipedia.org/wiki/ASCII#ASCII_printable_characters.

" - }, - "BinaryValue":{ - "shape":"Binary", - "documentation":"

Binary type attributes can store any binary data, for example, compressed data, encrypted data, or images.

" - } - }, - "documentation":"

The user-specified message attribute value. For string data types, the value attribute has the same restrictions on the content as the message body. For more information, see Publish.

Name, type, and value must not be empty or null. In addition, the message body should not be empty or null. All parts of the message attribute, including name, type, and value, are included in the message size restriction, which is currently 256 KB (262,144 bytes). For more information, see Using Amazon SNS Message Attributes.

" - }, - "NotFoundException":{ - "type":"structure", - "members":{ - "message":{"shape":"string"} - }, - "error":{ - "code":"NotFound", - "httpStatusCode":404, - "senderFault":true - }, - "exception":true, - "documentation":"

Indicates that the requested resource does not exist.

" - }, - "PlatformApplication":{ - "type":"structure", - "members":{ - "PlatformApplicationArn":{ - "shape":"String", - "documentation":"

PlatformApplicationArn for platform application object.

" - }, - "Attributes":{ - "shape":"MapStringToString", - "documentation":"

Attributes for platform application object.

" - } - }, - "documentation":"

Platform application object.

" - }, - "PlatformApplicationDisabledException":{ - "type":"structure", - "members":{ - "message":{ - "shape":"string", - "documentation":"

Message for platform application disabled.

" - } - }, - "error":{ - "code":"PlatformApplicationDisabled", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Exception error indicating platform application disabled.

" - }, - "PublishInput":{ - "type":"structure", - "required":["Message"], - "members":{ - "TopicArn":{ - "shape":"topicARN", - "documentation":"

The topic you want to publish to.

" - }, - "TargetArn":{ - "shape":"String", - "documentation":"

Either TopicArn or EndpointArn, but not both.

" - }, - "Message":{ - "shape":"message", - "documentation":"

The message you want to send to the topic.

If you want to send the same message to all transport protocols, include the text of the message as a String value.

If you want to send different messages for each transport protocol, set the value of the MessageStructure parameter to json and use a JSON object for the Message parameter. See the Examples section for the format of the JSON object.

Constraints: Messages must be UTF-8 encoded strings at most 256 KB in size (262144 bytes, not 262144 characters).

JSON-specific constraints:

" - }, - "Subject":{ - "shape":"subject", - "documentation":"

Optional parameter to be used as the \"Subject\" line when the message is delivered to email endpoints. This field will also be included, if present, in the standard JSON messages delivered to other endpoints.

Constraints: Subjects must be ASCII text that begins with a letter, number, or punctuation mark; must not include line breaks or control characters; and must be less than 100 characters long.

" - }, - "MessageStructure":{ - "shape":"messageStructure", - "documentation":"

Set MessageStructure to json if you want to send a different message for each protocol. For example, using one publish action, you can send a short message to your SMS subscribers and a longer message to your email subscribers. If you set MessageStructure to json, the value of the Message parameter must:

You can define other top-level keys that define the message you want to send to a specific transport protocol (e.g., \"http\").

For information about sending different messages for each protocol using the AWS Management Console, go to Create Different Messages for Each Protocol in the Amazon Simple Notification Service Getting Started Guide.

Valid value: json

" - }, - "MessageAttributes":{ - "shape":"MessageAttributeMap", - "documentation":"

Message attributes for Publish action.

" - } - }, - "documentation":"

Input for Publish action.

" - }, - "PublishResponse":{ - "type":"structure", - "members":{ - "MessageId":{ - "shape":"messageId", - "documentation":"

Unique identifier assigned to the published message.

Length Constraint: Maximum 100 characters

" - } - }, - "documentation":"

Response for Publish action.

" - }, - "RemovePermissionInput":{ - "type":"structure", - "required":[ - "TopicArn", - "Label" - ], - "members":{ - "TopicArn":{ - "shape":"topicARN", - "documentation":"

The ARN of the topic whose access control policy you wish to modify.

" - }, - "Label":{ - "shape":"label", - "documentation":"

The unique label of the statement you want to remove.

" - } - }, - "documentation":"

Input for RemovePermission action.

" - }, - "SetEndpointAttributesInput":{ - "type":"structure", - "required":[ - "EndpointArn", - "Attributes" - ], - "members":{ - "EndpointArn":{ - "shape":"String", - "documentation":"

EndpointArn used for SetEndpointAttributes action.

" - }, - "Attributes":{ - "shape":"MapStringToString", - "documentation":"

A map of the endpoint attributes. Attributes in this map include the following:

" - } - }, - "documentation":"

Input for SetEndpointAttributes action.

" - }, - "SetPlatformApplicationAttributesInput":{ - "type":"structure", - "required":[ - "PlatformApplicationArn", - "Attributes" - ], - "members":{ - "PlatformApplicationArn":{ - "shape":"String", - "documentation":"

PlatformApplicationArn for SetPlatformApplicationAttributes action.

" - }, - "Attributes":{ - "shape":"MapStringToString", - "documentation":"

A map of the platform application attributes. Attributes in this map include the following:

" - } - }, - "documentation":"

Input for SetPlatformApplicationAttributes action.

" - }, - "SetSubscriptionAttributesInput":{ - "type":"structure", - "required":[ - "SubscriptionArn", - "AttributeName" - ], - "members":{ - "SubscriptionArn":{ - "shape":"subscriptionARN", - "documentation":"

The ARN of the subscription to modify.

" - }, - "AttributeName":{ - "shape":"attributeName", - "documentation":"

The name of the attribute you want to set. Only a subset of the subscriptions attributes are mutable.

Valid values: DeliveryPolicy | RawMessageDelivery

" - }, - "AttributeValue":{ - "shape":"attributeValue", - "documentation":"

The new value for the attribute in JSON format.

" - } - }, - "documentation":"

Input for SetSubscriptionAttributes action.

" - }, - "SetTopicAttributesInput":{ - "type":"structure", - "required":[ - "TopicArn", - "AttributeName" - ], - "members":{ - "TopicArn":{ - "shape":"topicARN", - "documentation":"

The ARN of the topic to modify.

" - }, - "AttributeName":{ - "shape":"attributeName", - "documentation":"

The name of the attribute you want to set. Only a subset of the topic's attributes are mutable.

Valid values: Policy | DisplayName | DeliveryPolicy

" - }, - "AttributeValue":{ - "shape":"attributeValue", - "documentation":"

The new value for the attribute.

" - } - }, - "documentation":"

Input for SetTopicAttributes action.

" - }, - "String":{"type":"string"}, - "SubscribeInput":{ - "type":"structure", - "required":[ - "TopicArn", - "Protocol" - ], - "members":{ - "TopicArn":{ - "shape":"topicARN", - "documentation":"

The ARN of the topic you want to subscribe to.

" - }, - "Protocol":{ - "shape":"protocol", - "documentation":"

The protocol you want to use. Supported protocols include:

" - }, - "Endpoint":{ - "shape":"endpoint", - "documentation":"

The endpoint that you want to receive notifications. Endpoints vary by protocol:

" - } - }, - "documentation":"Input for Subscribe action." - }, - "SubscribeResponse":{ - "type":"structure", - "members":{ - "SubscriptionArn":{ - "shape":"subscriptionARN", - "documentation":"

The ARN of the subscription, if the service was able to create a subscription immediately (without requiring endpoint owner confirmation).

" - } - }, - "documentation":"Response for Subscribe action." - }, - "Subscription":{ - "type":"structure", - "members":{ - "SubscriptionArn":{ - "shape":"subscriptionARN", - "documentation":"

The subscription's ARN.

" - }, - "Owner":{ - "shape":"account", - "documentation":"

The subscription's owner.

" - }, - "Protocol":{ - "shape":"protocol", - "documentation":"

The subscription's protocol.

" - }, - "Endpoint":{ - "shape":"endpoint", - "documentation":"

The subscription's endpoint (format depends on the protocol).

" - }, - "TopicArn":{ - "shape":"topicARN", - "documentation":"

The ARN of the subscription's topic.

" - } - }, - "documentation":"

A wrapper type for the attributes of an Amazon SNS subscription.

" - }, - "SubscriptionAttributesMap":{ - "type":"map", - "key":{"shape":"attributeName"}, - "value":{"shape":"attributeValue"} - }, - "SubscriptionLimitExceededException":{ - "type":"structure", - "members":{ - "message":{"shape":"string"} - }, - "error":{ - "code":"SubscriptionLimitExceeded", - "httpStatusCode":403, - "senderFault":true - }, - "exception":true, - "documentation":"

Indicates that the customer already owns the maximum allowed number of subscriptions.

" - }, - "SubscriptionsList":{ - "type":"list", - "member":{"shape":"Subscription"} - }, - "Topic":{ - "type":"structure", - "members":{ - "TopicArn":{ - "shape":"topicARN", - "documentation":"

The topic's ARN.

" - } - }, - "documentation":"

A wrapper type for the topic's Amazon Resource Name (ARN). To retrieve a topic's attributes, use GetTopicAttributes.

" - }, - "TopicAttributesMap":{ - "type":"map", - "key":{"shape":"attributeName"}, - "value":{"shape":"attributeValue"} - }, - "TopicLimitExceededException":{ - "type":"structure", - "members":{ - "message":{"shape":"string"} - }, - "error":{ - "code":"TopicLimitExceeded", - "httpStatusCode":403, - "senderFault":true - }, - "exception":true, - "documentation":"

Indicates that the customer already owns the maximum allowed number of topics.

" - }, - "TopicsList":{ - "type":"list", - "member":{"shape":"Topic"} - }, - "UnsubscribeInput":{ - "type":"structure", - "required":["SubscriptionArn"], - "members":{ - "SubscriptionArn":{ - "shape":"subscriptionARN", - "documentation":"

The ARN of the subscription to be deleted.

" - } - }, - "documentation":"

Input for Unsubscribe action.

" - }, - "account":{"type":"string"}, - "action":{"type":"string"}, - "attributeName":{"type":"string"}, - "attributeValue":{"type":"string"}, - "authenticateOnUnsubscribe":{"type":"string"}, - "delegate":{"type":"string"}, - "endpoint":{"type":"string"}, - "label":{"type":"string"}, - "message":{"type":"string"}, - "messageId":{"type":"string"}, - "messageStructure":{"type":"string"}, - "nextToken":{"type":"string"}, - "protocol":{"type":"string"}, - "string":{"type":"string"}, - "subject":{"type":"string"}, - "subscriptionARN":{"type":"string"}, - "token":{"type":"string"}, - "topicARN":{"type":"string"}, - "topicName":{"type":"string"} - } -} diff --git a/src/github.com/getlantern/aws-sdk-go/apis/sns/2010-03-31.paginators.json b/src/github.com/getlantern/aws-sdk-go/apis/sns/2010-03-31.paginators.json deleted file mode 100644 index 455e4708ec..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/apis/sns/2010-03-31.paginators.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "pagination": { - "ListEndpointsByPlatformApplication": { - "input_token": "NextToken", - "output_token": "NextToken", - "result_key": "Endpoints" - }, - "ListPlatformApplications": { - "input_token": "NextToken", - "output_token": "NextToken", - "result_key": "PlatformApplications" - }, - "ListSubscriptions": { - "input_token": "NextToken", - "output_token": "NextToken", - "result_key": "Subscriptions" - }, - "ListSubscriptionsByTopic": { - "input_token": "NextToken", - "output_token": "NextToken", - "result_key": "Subscriptions" - }, - "ListTopics": { - "input_token": "NextToken", - "output_token": "NextToken", - "result_key": "Topics" - } - } -} diff --git a/src/github.com/getlantern/aws-sdk-go/apis/sqs/2012-11-05.normal.json b/src/github.com/getlantern/aws-sdk-go/apis/sqs/2012-11-05.normal.json deleted file mode 100644 index a63f1abb38..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/apis/sqs/2012-11-05.normal.json +++ /dev/null @@ -1,1491 +0,0 @@ -{ - "metadata":{ - "apiVersion":"2012-11-05", - "endpointPrefix":"sqs", - "serviceAbbreviation":"Amazon SQS", - "serviceFullName":"Amazon Simple Queue Service", - "signatureVersion":"v4", - "xmlNamespace":"http://queue.amazonaws.com/doc/2012-11-05/", - "protocol":"query" - }, - "documentation":"

Welcome to the Amazon Simple Queue Service API Reference. This section describes who should read this guide, how the guide is organized, and other resources related to the Amazon Simple Queue Service (Amazon SQS).

Amazon SQS offers reliable and scalable hosted queues for storing messages as they travel between computers. By using Amazon SQS, you can move data between distributed components of your applications that perform different tasks without losing messages or requiring each component to be always available.

Helpful Links:

We also provide SDKs that enable you to access Amazon SQS from your preferred programming language. The SDKs contain functionality that automatically takes care of tasks such as:

For a list of available SDKs, go to Tools for Amazon Web Services.

", - "operations":{ - "AddPermission":{ - "name":"AddPermission", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"AddPermissionRequest"}, - "errors":[ - { - "shape":"OverLimit", - "error":{ - "code":"OverLimit", - "httpStatusCode":403, - "senderFault":true - }, - "exception":true, - "documentation":"

The action that you requested would violate a limit. For example, ReceiveMessage returns this error if the maximum number of messages inflight has already been reached. AddPermission returns this error if the maximum number of permissions for the queue has already been reached.

" - } - ], - "documentation":"

Adds a permission to a queue for a specific principal. This allows for sharing access to the queue.

When you create a queue, you have full control access rights for the queue. Only you (as owner of the queue) can grant or deny permissions to the queue. For more information about these permissions, see Shared Queues in the Amazon SQS Developer Guide.

AddPermission writes an Amazon SQS-generated policy. If you want to write your own policy, use SetQueueAttributes to upload your policy. For more information about writing your own policy, see Using The Access Policy Language in the Amazon SQS Developer Guide.

Some API actions take lists of parameters. These lists are specified using the param.n notation. Values of n are integers starting from 1. For example, a parameter list with two elements looks like this:

&Attribute.1=this

&Attribute.2=that

" - }, - "ChangeMessageVisibility":{ - "name":"ChangeMessageVisibility", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"ChangeMessageVisibilityRequest"}, - "errors":[ - { - "shape":"MessageNotInflight", - "error":{ - "code":"AWS.SimpleQueueService.MessageNotInflight", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The message referred to is not in flight.

" - }, - { - "shape":"ReceiptHandleIsInvalid", - "exception":true, - "documentation":"

The receipt handle provided is not valid.

" - } - ], - "documentation":"

Changes the visibility timeout of a specified message in a queue to a new value. The maximum allowed timeout value you can set the value to is 12 hours. This means you can't extend the timeout of a message in an existing queue to more than a total visibility timeout of 12 hours. (For more information visibility timeout, see Visibility Timeout in the Amazon SQS Developer Guide.)

For example, let's say you have a message and its default message visibility timeout is 30 minutes. You could call ChangeMessageVisiblity with a value of two hours and the effective timeout would be two hours and 30 minutes. When that time comes near you could again extend the time out by calling ChangeMessageVisiblity, but this time the maximum allowed timeout would be 9 hours and 30 minutes.

There is a 120,000 limit for the number of inflight messages per queue. Messages are inflight after they have been received from the queue by a consuming component, but have not yet been deleted from the queue. If you reach the 120,000 limit, you will receive an OverLimit error message from Amazon SQS. To help avoid reaching the limit, you should delete the messages from the queue after they have been processed. You can also increase the number of queues you use to process the messages.

If you attempt to set the VisibilityTimeout to an amount more than the maximum time left, Amazon SQS returns an error. It will not automatically recalculate and increase the timeout to the maximum time remaining. Unlike with a queue, when you change the visibility timeout for a specific message, that timeout value is applied immediately but is not saved in memory for that message. If you don't delete a message after it is received, the visibility timeout for the message the next time it is received reverts to the original timeout value, not the value you set with the ChangeMessageVisibility action." - }, - "ChangeMessageVisibilityBatch":{ - "name":"ChangeMessageVisibilityBatch", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"ChangeMessageVisibilityBatchRequest"}, - "output":{ - "shape":"ChangeMessageVisibilityBatchResult", - "documentation":"

For each message in the batch, the response contains a ChangeMessageVisibilityBatchResultEntry tag if the message succeeds or a BatchResultErrorEntry tag if the message fails.

", - "resultWrapper":"ChangeMessageVisibilityBatchResult" - }, - "errors":[ - { - "shape":"TooManyEntriesInBatchRequest", - "error":{ - "code":"AWS.SimpleQueueService.TooManyEntriesInBatchRequest", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Batch request contains more number of entries than permissible.

" - }, - { - "shape":"EmptyBatchRequest", - "error":{ - "code":"AWS.SimpleQueueService.EmptyBatchRequest", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Batch request does not contain an entry.

" - }, - { - "shape":"BatchEntryIdsNotDistinct", - "error":{ - "code":"AWS.SimpleQueueService.BatchEntryIdsNotDistinct", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Two or more batch entries have the same Id in the request.

" - }, - { - "shape":"InvalidBatchEntryId", - "error":{ - "code":"AWS.SimpleQueueService.InvalidBatchEntryId", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The Id of a batch entry in a batch request does not abide by the specification.

" - } - ], - "documentation":"

Changes the visibility timeout of multiple messages. This is a batch version of ChangeMessageVisibility. The result of the action on each message is reported individually in the response. You can send up to 10 ChangeMessageVisibility requests with each ChangeMessageVisibilityBatch action.

Because the batch request can result in a combination of successful and unsuccessful actions, you should check for batch errors even when the call returns an HTTP status code of 200. Some API actions take lists of parameters. These lists are specified using the param.n notation. Values of n are integers starting from 1. For example, a parameter list with two elements looks like this:

&Attribute.1=this

&Attribute.2=that

" - }, - "CreateQueue":{ - "name":"CreateQueue", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CreateQueueRequest"}, - "output":{ - "shape":"CreateQueueResult", - "documentation":"

Returns the QueueUrl element of the created queue.

", - "resultWrapper":"CreateQueueResult" - }, - "errors":[ - { - "shape":"QueueDeletedRecently", - "error":{ - "code":"AWS.SimpleQueueService.QueueDeletedRecently", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

You must wait 60 seconds after deleting a queue before you can create another with the same name.

" - }, - { - "shape":"QueueNameExists", - "error":{ - "code":"QueueAlreadyExists", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

A queue already exists with this name. Amazon SQS returns this error only if the request includes attributes whose values differ from those of the existing queue.

" - } - ], - "documentation":"

Creates a new queue, or returns the URL of an existing one. When you request CreateQueue, you provide a name for the queue. To successfully create a new queue, you must provide a name that is unique within the scope of your own queues.

If you delete a queue, you must wait at least 60 seconds before creating a queue with the same name.

You may pass one or more attributes in the request. If you do not provide a value for any attribute, the queue will have the default value for that attribute. Permitted attributes are the same that can be set using SetQueueAttributes.

Use GetQueueUrl to get a queue's URL. GetQueueUrl requires only the QueueName parameter.

If you provide the name of an existing queue, along with the exact names and values of all the queue's attributes, CreateQueue returns the queue URL for the existing queue. If the queue name, attribute names, or attribute values do not match an existing queue, CreateQueue returns an error.

Some API actions take lists of parameters. These lists are specified using the param.n notation. Values of n are integers starting from 1. For example, a parameter list with two elements looks like this:

&Attribute.1=this

&Attribute.2=that

" - }, - "DeleteMessage":{ - "name":"DeleteMessage", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DeleteMessageRequest"}, - "errors":[ - { - "shape":"InvalidIdFormat", - "exception":true, - "documentation":"

The receipt handle is not valid for the current version.

" - }, - { - "shape":"ReceiptHandleIsInvalid", - "exception":true, - "documentation":"

The receipt handle provided is not valid.

" - } - ], - "documentation":"

Deletes the specified message from the specified queue. You specify the message by using the message's receipt handle and not the message ID you received when you sent the message. Even if the message is locked by another reader due to the visibility timeout setting, it is still deleted from the queue. If you leave a message in the queue for longer than the queue's configured retention period, Amazon SQS automatically deletes it.

The receipt handle is associated with a specific instance of receiving the message. If you receive a message more than once, the receipt handle you get each time you receive the message is different. When you request DeleteMessage, if you don't provide the most recently received receipt handle for the message, the request will still succeed, but the message might not be deleted.

It is possible you will receive a message even after you have deleted it. This might happen on rare occasions if one of the servers storing a copy of the message is unavailable when you request to delete the message. The copy remains on the server and might be returned to you again on a subsequent receive request. You should create your system to be idempotent so that receiving a particular message more than once is not a problem.

" - }, - "DeleteMessageBatch":{ - "name":"DeleteMessageBatch", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DeleteMessageBatchRequest"}, - "output":{ - "shape":"DeleteMessageBatchResult", - "documentation":"

For each message in the batch, the response contains a DeleteMessageBatchResultEntry tag if the message is deleted or a BatchResultErrorEntry tag if the message cannot be deleted.

", - "resultWrapper":"DeleteMessageBatchResult" - }, - "errors":[ - { - "shape":"TooManyEntriesInBatchRequest", - "error":{ - "code":"AWS.SimpleQueueService.TooManyEntriesInBatchRequest", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Batch request contains more number of entries than permissible.

" - }, - { - "shape":"EmptyBatchRequest", - "error":{ - "code":"AWS.SimpleQueueService.EmptyBatchRequest", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Batch request does not contain an entry.

" - }, - { - "shape":"BatchEntryIdsNotDistinct", - "error":{ - "code":"AWS.SimpleQueueService.BatchEntryIdsNotDistinct", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Two or more batch entries have the same Id in the request.

" - }, - { - "shape":"InvalidBatchEntryId", - "error":{ - "code":"AWS.SimpleQueueService.InvalidBatchEntryId", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The Id of a batch entry in a batch request does not abide by the specification.

" - } - ], - "documentation":"

Deletes up to ten messages from the specified queue. This is a batch version of DeleteMessage. The result of the delete action on each message is reported individually in the response.

Because the batch request can result in a combination of successful and unsuccessful actions, you should check for batch errors even when the call returns an HTTP status code of 200.

Some API actions take lists of parameters. These lists are specified using the param.n notation. Values of n are integers starting from 1. For example, a parameter list with two elements looks like this:

&Attribute.1=this

&Attribute.2=that

" - }, - "DeleteQueue":{ - "name":"DeleteQueue", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DeleteQueueRequest"}, - "documentation":"

Deletes the queue specified by the queue URL, regardless of whether the queue is empty. If the specified queue does not exist, Amazon SQS returns a successful response.

Use DeleteQueue with care; once you delete your queue, any messages in the queue are no longer available.

When you delete a queue, the deletion process takes up to 60 seconds. Requests you send involving that queue during the 60 seconds might succeed. For example, a SendMessage request might succeed, but after the 60 seconds, the queue and that message you sent no longer exist. Also, when you delete a queue, you must wait at least 60 seconds before creating a queue with the same name.

We reserve the right to delete queues that have had no activity for more than 30 days. For more information, see How Amazon SQS Queues Work in the Amazon SQS Developer Guide.

" - }, - "GetQueueAttributes":{ - "name":"GetQueueAttributes", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"GetQueueAttributesRequest"}, - "output":{ - "shape":"GetQueueAttributesResult", - "documentation":"A list of returned queue attributes.", - "resultWrapper":"GetQueueAttributesResult" - }, - "errors":[ - { - "shape":"InvalidAttributeName", - "exception":true, - "documentation":"

The attribute referred to does not exist.

" - } - ], - "documentation":"

Gets attributes for the specified queue. The following attributes are supported:

Going forward, new attributes might be added. If you are writing code that calls this action, we recommend that you structure your code so that it can handle new attributes gracefully. Some API actions take lists of parameters. These lists are specified using the param.n notation. Values of n are integers starting from 1. For example, a parameter list with two elements looks like this:

&Attribute.1=this

&Attribute.2=that

" - }, - "GetQueueUrl":{ - "name":"GetQueueUrl", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"GetQueueUrlRequest"}, - "output":{ - "shape":"GetQueueUrlResult", - "documentation":"

For more information, see Responses in the Amazon SQS Developer Guide.

", - "resultWrapper":"GetQueueUrlResult" - }, - "errors":[ - { - "shape":"QueueDoesNotExist", - "error":{ - "code":"AWS.SimpleQueueService.NonExistentQueue", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The queue referred to does not exist.

" - } - ], - "documentation":"

Returns the URL of an existing queue. This action provides a simple way to retrieve the URL of an Amazon SQS queue.

To access a queue that belongs to another AWS account, use the QueueOwnerAWSAccountId parameter to specify the account ID of the queue's owner. The queue's owner must grant you permission to access the queue. For more information about shared queue access, see AddPermission or go to Shared Queues in the Amazon SQS Developer Guide.

" - }, - "ListDeadLetterSourceQueues":{ - "name":"ListDeadLetterSourceQueues", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"ListDeadLetterSourceQueuesRequest"}, - "output":{ - "shape":"ListDeadLetterSourceQueuesResult", - "documentation":"A list of your dead letter source queues.", - "resultWrapper":"ListDeadLetterSourceQueuesResult" - }, - "errors":[ - { - "shape":"QueueDoesNotExist", - "error":{ - "code":"AWS.SimpleQueueService.NonExistentQueue", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The queue referred to does not exist.

" - } - ], - "documentation":"

Returns a list of your queues that have the RedrivePolicy queue attribute configured with a dead letter queue.

For more information about using dead letter queues, see Using Amazon SQS Dead Letter Queues.

" - }, - "ListQueues":{ - "name":"ListQueues", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"ListQueuesRequest"}, - "output":{ - "shape":"ListQueuesResult", - "documentation":"A list of your queues.", - "resultWrapper":"ListQueuesResult" - }, - "documentation":"

Returns a list of your queues. The maximum number of queues that can be returned is 1000. If you specify a value for the optional QueueNamePrefix parameter, only queues with a name beginning with the specified value are returned.

" - }, - "PurgeQueue":{ - "name":"PurgeQueue", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"PurgeQueueRequest"}, - "errors":[ - { - "shape":"QueueDoesNotExist", - "error":{ - "code":"AWS.SimpleQueueService.NonExistentQueue", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The queue referred to does not exist.

" - }, - { - "shape":"PurgeQueueInProgress", - "error":{ - "code":"AWS.SimpleQueueService.PurgeQueueInProgress", - "httpStatusCode":403, - "senderFault":true - }, - "exception":true, - "documentation":"

Indicates that the specified queue previously received a PurgeQueue request within the last 60 seconds, the time it can take to delete the messages in the queue.

" - } - ], - "documentation":"

Deletes the messages in a queue specified by the queue URL.

When you use the PurgeQueue API, the deleted messages in the queue cannot be retrieved.

When you purge a queue, the message deletion process takes up to 60 seconds. All messages sent to the queue before calling PurgeQueue will be deleted; messages sent to the queue while it is being purged may be deleted. While the queue is being purged, messages sent to the queue before PurgeQueue was called may be received, but will be deleted within the next minute.

" - }, - "ReceiveMessage":{ - "name":"ReceiveMessage", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"ReceiveMessageRequest"}, - "output":{ - "shape":"ReceiveMessageResult", - "documentation":"A list of received messages.", - "resultWrapper":"ReceiveMessageResult" - }, - "errors":[ - { - "shape":"OverLimit", - "error":{ - "code":"OverLimit", - "httpStatusCode":403, - "senderFault":true - }, - "exception":true, - "documentation":"

The action that you requested would violate a limit. For example, ReceiveMessage returns this error if the maximum number of messages inflight has already been reached. AddPermission returns this error if the maximum number of permissions for the queue has already been reached.

" - } - ], - "documentation":"

Retrieves one or more messages, with a maximum limit of 10 messages, from the specified queue. Long poll support is enabled by using the WaitTimeSeconds parameter. For more information, see Amazon SQS Long Poll in the Amazon SQS Developer Guide.

Short poll is the default behavior where a weighted random set of machines is sampled on a ReceiveMessage call. This means only the messages on the sampled machines are returned. If the number of messages in the queue is small (less than 1000), it is likely you will get fewer messages than you requested per ReceiveMessage call. If the number of messages in the queue is extremely small, you might not receive any messages in a particular ReceiveMessage response; in which case you should repeat the request.

For each message returned, the response includes the following:

The receipt handle is the identifier you must provide when deleting the message. For more information, see Queue and Message Identifiers in the Amazon SQS Developer Guide.

You can provide the VisibilityTimeout parameter in your request, which will be applied to the messages that Amazon SQS returns in the response. If you do not include the parameter, the overall visibility timeout for the queue is used for the returned messages. For more information, see Visibility Timeout in the Amazon SQS Developer Guide.

Going forward, new attributes might be added. If you are writing code that calls this action, we recommend that you structure your code so that it can handle new attributes gracefully.

" - }, - "RemovePermission":{ - "name":"RemovePermission", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"RemovePermissionRequest"}, - "documentation":"

Revokes any permissions in the queue policy that matches the specified Label parameter. Only the owner of the queue can remove permissions.

" - }, - "SendMessage":{ - "name":"SendMessage", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"SendMessageRequest"}, - "output":{ - "shape":"SendMessageResult", - "documentation":"

The MD5OfMessageBody and MessageId elements.

", - "resultWrapper":"SendMessageResult" - }, - "errors":[ - { - "shape":"InvalidMessageContents", - "exception":true, - "documentation":"

The message contains characters outside the allowed set.

" - }, - { - "shape":"UnsupportedOperation", - "error":{ - "code":"AWS.SimpleQueueService.UnsupportedOperation", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Error code 400. Unsupported operation.

" - } - ], - "documentation":"

Delivers a message to the specified queue. With Amazon SQS, you now have the ability to send large payload messages that are up to 256KB (262,144 bytes) in size. To send large payloads, you must use an AWS SDK that supports SigV4 signing. To verify whether SigV4 is supported for an AWS SDK, check the SDK release notes.

The following list shows the characters (in Unicode) allowed in your message, according to the W3C XML specification. For more information, go to http://www.w3.org/TR/REC-xml/#charsets If you send any characters not included in the list, your request will be rejected.

#x9 | #xA | #xD | [#x20 to #xD7FF] | [#xE000 to #xFFFD] | [#x10000 to #x10FFFF]

" - }, - "SendMessageBatch":{ - "name":"SendMessageBatch", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"SendMessageBatchRequest"}, - "output":{ - "shape":"SendMessageBatchResult", - "documentation":"

For each message in the batch, the response contains a SendMessageBatchResultEntry tag if the message succeeds or a BatchResultErrorEntry tag if the message fails.

", - "resultWrapper":"SendMessageBatchResult" - }, - "errors":[ - { - "shape":"TooManyEntriesInBatchRequest", - "error":{ - "code":"AWS.SimpleQueueService.TooManyEntriesInBatchRequest", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Batch request contains more number of entries than permissible.

" - }, - { - "shape":"EmptyBatchRequest", - "error":{ - "code":"AWS.SimpleQueueService.EmptyBatchRequest", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Batch request does not contain an entry.

" - }, - { - "shape":"BatchEntryIdsNotDistinct", - "error":{ - "code":"AWS.SimpleQueueService.BatchEntryIdsNotDistinct", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Two or more batch entries have the same Id in the request.

" - }, - { - "shape":"BatchRequestTooLong", - "error":{ - "code":"AWS.SimpleQueueService.BatchRequestTooLong", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The length of all the messages put together is more than the limit.

" - }, - { - "shape":"InvalidBatchEntryId", - "error":{ - "code":"AWS.SimpleQueueService.InvalidBatchEntryId", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The Id of a batch entry in a batch request does not abide by the specification.

" - }, - { - "shape":"UnsupportedOperation", - "error":{ - "code":"AWS.SimpleQueueService.UnsupportedOperation", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Error code 400. Unsupported operation.

" - } - ], - "documentation":"

Delivers up to ten messages to the specified queue. This is a batch version of SendMessage. The result of the send action on each message is reported individually in the response. The maximum allowed individual message size is 256 KB (262,144 bytes).

The maximum total payload size (i.e., the sum of all a batch's individual message lengths) is also 256 KB (262,144 bytes).

If the DelaySeconds parameter is not specified for an entry, the default for the queue is used.

The following list shows the characters (in Unicode) that are allowed in your message, according to the W3C XML specification. For more information, go to http://www.faqs.org/rfcs/rfc1321.html. If you send any characters that are not included in the list, your request will be rejected.

#x9 | #xA | #xD | [#x20 to #xD7FF] | [#xE000 to #xFFFD] | [#x10000 to #x10FFFF]

Because the batch request can result in a combination of successful and unsuccessful actions, you should check for batch errors even when the call returns an HTTP status code of 200. Some API actions take lists of parameters. These lists are specified using the param.n notation. Values of n are integers starting from 1. For example, a parameter list with two elements looks like this:

&Attribute.1=this

&Attribute.2=that

" - }, - "SetQueueAttributes":{ - "name":"SetQueueAttributes", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"SetQueueAttributesRequest"}, - "errors":[ - { - "shape":"InvalidAttributeName", - "exception":true, - "documentation":"

The attribute referred to does not exist.

" - } - ], - "documentation":"

Sets the value of one or more queue attributes. When you change a queue's attributes, the change can take up to 60 seconds for most of the attributes to propagate throughout the SQS system. Changes made to the MessageRetentionPeriod attribute can take up to 15 minutes.

Going forward, new attributes might be added. If you are writing code that calls this action, we recommend that you structure your code so that it can handle new attributes gracefully." - } - }, - "shapes":{ - "AWSAccountIdList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"AWSAccountId" - }, - "flattened":true - }, - "ActionNameList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"ActionName" - }, - "flattened":true - }, - "AddPermissionRequest":{ - "type":"structure", - "required":[ - "QueueUrl", - "Label", - "AWSAccountIds", - "Actions" - ], - "members":{ - "QueueUrl":{ - "shape":"String", - "documentation":"

The URL of the Amazon SQS queue to take action on.

" - }, - "Label":{ - "shape":"String", - "documentation":"

The unique identification of the permission you're setting (e.g., AliceSendMessage). Constraints: Maximum 80 characters; alphanumeric characters, hyphens (-), and underscores (_) are allowed.

" - }, - "AWSAccountIds":{ - "shape":"AWSAccountIdList", - "documentation":"

The AWS account number of the principal who will be given permission. The principal must have an AWS account, but does not need to be signed up for Amazon SQS. For information about locating the AWS account identification, see Your AWS Identifiers in the Amazon SQS Developer Guide.

" - }, - "Actions":{ - "shape":"ActionNameList", - "documentation":"

The action the client wants to allow for the specified principal. The following are valid values: * | SendMessage | ReceiveMessage | DeleteMessage | ChangeMessageVisibility | GetQueueAttributes | GetQueueUrl. For more information about these actions, see Understanding Permissions in the Amazon SQS Developer Guide.

Specifying SendMessage, DeleteMessage, or ChangeMessageVisibility for the ActionName.n also grants permissions for the corresponding batch versions of those actions: SendMessageBatch, DeleteMessageBatch, and ChangeMessageVisibilityBatch.

" - } - } - }, - "AttributeMap":{ - "type":"map", - "key":{ - "shape":"QueueAttributeName", - "documentation":"

The name of a queue attribute.

", - "locationName":"Name" - }, - "value":{ - "shape":"String", - "documentation":"

The value of a queue attribute.

", - "locationName":"Value" - }, - "flattened":true, - "locationName":"Attribute" - }, - "AttributeNameList":{ - "type":"list", - "member":{ - "shape":"QueueAttributeName", - "locationName":"AttributeName" - }, - "flattened":true - }, - "BatchEntryIdsNotDistinct":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"AWS.SimpleQueueService.BatchEntryIdsNotDistinct", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Two or more batch entries have the same Id in the request.

" - }, - "BatchRequestTooLong":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"AWS.SimpleQueueService.BatchRequestTooLong", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The length of all the messages put together is more than the limit.

" - }, - "BatchResultErrorEntry":{ - "type":"structure", - "required":[ - "Id", - "SenderFault", - "Code" - ], - "members":{ - "Id":{ - "shape":"String", - "documentation":"

The id of an entry in a batch request.

" - }, - "SenderFault":{ - "shape":"Boolean", - "documentation":"

Whether the error happened due to the sender's fault.

" - }, - "Code":{ - "shape":"String", - "documentation":"

An error code representing why the action failed on this entry.

" - }, - "Message":{ - "shape":"String", - "documentation":"

A message explaining why the action failed on this entry.

" - } - }, - "documentation":"

This is used in the responses of batch API to give a detailed description of the result of an action on each entry in the request.

" - }, - "BatchResultErrorEntryList":{ - "type":"list", - "member":{ - "shape":"BatchResultErrorEntry", - "locationName":"BatchResultErrorEntry" - }, - "flattened":true - }, - "Binary":{"type":"blob"}, - "BinaryList":{ - "type":"list", - "member":{ - "shape":"Binary", - "locationName":"BinaryListValue" - } - }, - "Boolean":{"type":"boolean"}, - "ChangeMessageVisibilityBatchRequest":{ - "type":"structure", - "required":[ - "QueueUrl", - "Entries" - ], - "members":{ - "QueueUrl":{ - "shape":"String", - "documentation":"

The URL of the Amazon SQS queue to take action on.

" - }, - "Entries":{ - "shape":"ChangeMessageVisibilityBatchRequestEntryList", - "documentation":"

A list of receipt handles of the messages for which the visibility timeout must be changed.

" - } - } - }, - "ChangeMessageVisibilityBatchRequestEntry":{ - "type":"structure", - "required":[ - "Id", - "ReceiptHandle" - ], - "members":{ - "Id":{ - "shape":"String", - "documentation":"

An identifier for this particular receipt handle. This is used to communicate the result. Note that the Ids of a batch request need to be unique within the request.

" - }, - "ReceiptHandle":{ - "shape":"String", - "documentation":"

A receipt handle.

" - }, - "VisibilityTimeout":{ - "shape":"Integer", - "documentation":"

The new value (in seconds) for the message's visibility timeout.

" - } - }, - "documentation":"

Encloses a receipt handle and an entry id for each message in ChangeMessageVisibilityBatch.

All of the following parameters are list parameters that must be prefixed with ChangeMessageVisibilityBatchRequestEntry.n, where n is an integer value starting with 1. For example, a parameter list for this action might look like this:

&ChangeMessageVisibilityBatchRequestEntry.1.Id=change_visibility_msg_2

&ChangeMessageVisibilityBatchRequestEntry.1.ReceiptHandle=Your_Receipt_Handle

&ChangeMessageVisibilityBatchRequestEntry.1.VisibilityTimeout=45

" - }, - "ChangeMessageVisibilityBatchRequestEntryList":{ - "type":"list", - "member":{ - "shape":"ChangeMessageVisibilityBatchRequestEntry", - "locationName":"ChangeMessageVisibilityBatchRequestEntry" - }, - "flattened":true - }, - "ChangeMessageVisibilityBatchResult":{ - "type":"structure", - "required":[ - "Successful", - "Failed" - ], - "members":{ - "Successful":{ - "shape":"ChangeMessageVisibilityBatchResultEntryList", - "documentation":"

A list of ChangeMessageVisibilityBatchResultEntry items.

" - }, - "Failed":{ - "shape":"BatchResultErrorEntryList", - "documentation":"

A list of BatchResultErrorEntry items.

" - } - }, - "documentation":"

For each message in the batch, the response contains a ChangeMessageVisibilityBatchResultEntry tag if the message succeeds or a BatchResultErrorEntry tag if the message fails.

" - }, - "ChangeMessageVisibilityBatchResultEntry":{ - "type":"structure", - "required":["Id"], - "members":{ - "Id":{ - "shape":"String", - "documentation":"

Represents a message whose visibility timeout has been changed successfully.

" - } - }, - "documentation":"

Encloses the id of an entry in ChangeMessageVisibilityBatch.

" - }, - "ChangeMessageVisibilityBatchResultEntryList":{ - "type":"list", - "member":{ - "shape":"ChangeMessageVisibilityBatchResultEntry", - "locationName":"ChangeMessageVisibilityBatchResultEntry" - }, - "flattened":true - }, - "ChangeMessageVisibilityRequest":{ - "type":"structure", - "required":[ - "QueueUrl", - "ReceiptHandle", - "VisibilityTimeout" - ], - "members":{ - "QueueUrl":{ - "shape":"String", - "documentation":"

The URL of the Amazon SQS queue to take action on.

" - }, - "ReceiptHandle":{ - "shape":"String", - "documentation":"

The receipt handle associated with the message whose visibility timeout should be changed. This parameter is returned by the ReceiveMessage action.

" - }, - "VisibilityTimeout":{ - "shape":"Integer", - "documentation":"

The new value (in seconds - from 0 to 43200 - maximum 12 hours) for the message's visibility timeout.

" - } - } - }, - "CreateQueueRequest":{ - "type":"structure", - "required":["QueueName"], - "members":{ - "QueueName":{ - "shape":"String", - "documentation":"

The name for the queue to be created.

" - }, - "Attributes":{ - "shape":"AttributeMap", - "documentation":"

A map of attributes with their corresponding values.

The following lists the names, descriptions, and values of the special request parameters the CreateQueue action uses:

", - "locationName":"Attribute" - } - } - }, - "CreateQueueResult":{ - "type":"structure", - "members":{ - "QueueUrl":{ - "shape":"String", - "documentation":"

The URL for the created Amazon SQS queue.

" - } - }, - "documentation":"

Returns the QueueUrl element of the created queue.

" - }, - "DeleteMessageBatchRequest":{ - "type":"structure", - "required":[ - "QueueUrl", - "Entries" - ], - "members":{ - "QueueUrl":{ - "shape":"String", - "documentation":"

The URL of the Amazon SQS queue to take action on.

" - }, - "Entries":{ - "shape":"DeleteMessageBatchRequestEntryList", - "documentation":"

A list of receipt handles for the messages to be deleted.

" - } - } - }, - "DeleteMessageBatchRequestEntry":{ - "type":"structure", - "required":[ - "Id", - "ReceiptHandle" - ], - "members":{ - "Id":{ - "shape":"String", - "documentation":"

An identifier for this particular receipt handle. This is used to communicate the result. Note that the Ids of a batch request need to be unique within the request.

" - }, - "ReceiptHandle":{ - "shape":"String", - "documentation":"

A receipt handle.

" - } - }, - "documentation":"

Encloses a receipt handle and an identifier for it.

" - }, - "DeleteMessageBatchRequestEntryList":{ - "type":"list", - "member":{ - "shape":"DeleteMessageBatchRequestEntry", - "locationName":"DeleteMessageBatchRequestEntry" - }, - "flattened":true - }, - "DeleteMessageBatchResult":{ - "type":"structure", - "required":[ - "Successful", - "Failed" - ], - "members":{ - "Successful":{ - "shape":"DeleteMessageBatchResultEntryList", - "documentation":"

A list of DeleteMessageBatchResultEntry items.

" - }, - "Failed":{ - "shape":"BatchResultErrorEntryList", - "documentation":"

A list of BatchResultErrorEntry items.

" - } - }, - "documentation":"

For each message in the batch, the response contains a DeleteMessageBatchResultEntry tag if the message is deleted or a BatchResultErrorEntry tag if the message cannot be deleted.

" - }, - "DeleteMessageBatchResultEntry":{ - "type":"structure", - "required":["Id"], - "members":{ - "Id":{ - "shape":"String", - "documentation":"

Represents a successfully deleted message.

" - } - }, - "documentation":"

Encloses the id an entry in DeleteMessageBatch.

" - }, - "DeleteMessageBatchResultEntryList":{ - "type":"list", - "member":{ - "shape":"DeleteMessageBatchResultEntry", - "locationName":"DeleteMessageBatchResultEntry" - }, - "flattened":true - }, - "DeleteMessageRequest":{ - "type":"structure", - "required":[ - "QueueUrl", - "ReceiptHandle" - ], - "members":{ - "QueueUrl":{ - "shape":"String", - "documentation":"

The URL of the Amazon SQS queue to take action on.

" - }, - "ReceiptHandle":{ - "shape":"String", - "documentation":"

The receipt handle associated with the message to delete.

" - } - } - }, - "DeleteQueueRequest":{ - "type":"structure", - "required":["QueueUrl"], - "members":{ - "QueueUrl":{ - "shape":"String", - "documentation":"

The URL of the Amazon SQS queue to take action on.

" - } - } - }, - "EmptyBatchRequest":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"AWS.SimpleQueueService.EmptyBatchRequest", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Batch request does not contain an entry.

" - }, - "GetQueueAttributesRequest":{ - "type":"structure", - "required":["QueueUrl"], - "members":{ - "QueueUrl":{ - "shape":"String", - "documentation":"

The URL of the Amazon SQS queue to take action on.

" - }, - "AttributeNames":{ - "shape":"AttributeNameList", - "documentation":"

A list of attributes to retrieve information for.

" - } - } - }, - "GetQueueAttributesResult":{ - "type":"structure", - "members":{ - "Attributes":{ - "shape":"AttributeMap", - "documentation":"

A map of attributes to the respective values.

", - "locationName":"Attribute" - } - }, - "documentation":"A list of returned queue attributes." - }, - "GetQueueUrlRequest":{ - "type":"structure", - "required":["QueueName"], - "members":{ - "QueueName":{ - "shape":"String", - "documentation":"

The name of the queue whose URL must be fetched. Maximum 80 characters; alphanumeric characters, hyphens (-), and underscores (_) are allowed.

" - }, - "QueueOwnerAWSAccountId":{ - "shape":"String", - "documentation":"

The AWS account ID of the account that created the queue.

" - } - } - }, - "GetQueueUrlResult":{ - "type":"structure", - "members":{ - "QueueUrl":{ - "shape":"String", - "documentation":"

The URL for the queue.

" - } - }, - "documentation":"

For more information, see Responses in the Amazon SQS Developer Guide.

" - }, - "Integer":{"type":"integer"}, - "InvalidAttributeName":{ - "type":"structure", - "members":{ - }, - "exception":true, - "documentation":"

The attribute referred to does not exist.

" - }, - "InvalidBatchEntryId":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"AWS.SimpleQueueService.InvalidBatchEntryId", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The Id of a batch entry in a batch request does not abide by the specification.

" - }, - "InvalidIdFormat":{ - "type":"structure", - "members":{ - }, - "exception":true, - "documentation":"

The receipt handle is not valid for the current version.

" - }, - "InvalidMessageContents":{ - "type":"structure", - "members":{ - }, - "exception":true, - "documentation":"

The message contains characters outside the allowed set.

" - }, - "ListDeadLetterSourceQueuesRequest":{ - "type":"structure", - "required":["QueueUrl"], - "members":{ - "QueueUrl":{ - "shape":"String", - "documentation":"The queue URL of a dead letter queue." - } - } - }, - "ListDeadLetterSourceQueuesResult":{ - "type":"structure", - "required":["queueUrls"], - "members":{ - "queueUrls":{ - "shape":"QueueUrlList", - "documentation":"A list of source queue URLs that have the RedrivePolicy queue attribute configured with a dead letter queue." - } - }, - "documentation":"A list of your dead letter source queues." - }, - "ListQueuesRequest":{ - "type":"structure", - "members":{ - "QueueNamePrefix":{ - "shape":"String", - "documentation":"

A string to use for filtering the list results. Only those queues whose name begins with the specified string are returned.

" - } - } - }, - "ListQueuesResult":{ - "type":"structure", - "members":{ - "QueueUrls":{ - "shape":"QueueUrlList", - "documentation":"

A list of queue URLs, up to 1000 entries.

" - } - }, - "documentation":"A list of your queues." - }, - "Message":{ - "type":"structure", - "members":{ - "MessageId":{ - "shape":"String", - "documentation":"

A unique identifier for the message. Message IDs are considered unique across all AWS accounts for an extended period of time.

" - }, - "ReceiptHandle":{ - "shape":"String", - "documentation":"

An identifier associated with the act of receiving the message. A new receipt handle is returned every time you receive a message. When deleting a message, you provide the last received receipt handle to delete the message.

" - }, - "MD5OfBody":{ - "shape":"String", - "documentation":"

An MD5 digest of the non-URL-encoded message body string.

" - }, - "Body":{ - "shape":"String", - "documentation":"

The message's contents (not URL-encoded).

" - }, - "Attributes":{ - "shape":"AttributeMap", - "documentation":"

SenderId, SentTimestamp, ApproximateReceiveCount, and/or ApproximateFirstReceiveTimestamp. SentTimestamp and ApproximateFirstReceiveTimestamp are each returned as an integer representing the epoch time in milliseconds.

", - "locationName":"Attribute" - }, - "MD5OfMessageAttributes":{ - "shape":"String", - "documentation":"

An MD5 digest of the non-URL-encoded message attribute string. This can be used to verify that Amazon SQS received the message correctly. Amazon SQS first URL decodes the message before creating the MD5 digest. For information about MD5, go to http://www.faqs.org/rfcs/rfc1321.html.

" - }, - "MessageAttributes":{ - "shape":"MessageAttributeMap", - "documentation":"

Each message attribute consists of a Name, Type, and Value. For more information, see Message Attribute Items.

", - "locationName":"MessageAttribute" - } - }, - "documentation":"

An Amazon SQS message.

" - }, - "MessageAttributeMap":{ - "type":"map", - "key":{ - "shape":"String", - "locationName":"Name" - }, - "value":{ - "shape":"MessageAttributeValue", - "locationName":"Value" - }, - "flattened":true - }, - "MessageAttributeName":{"type":"string"}, - "MessageAttributeNameList":{ - "type":"list", - "member":{ - "shape":"MessageAttributeName", - "locationName":"MessageAttributeName" - }, - "flattened":true - }, - "MessageAttributeValue":{ - "type":"structure", - "required":["DataType"], - "members":{ - "StringValue":{ - "shape":"String", - "documentation":"

Strings are Unicode with UTF8 binary encoding. For a list of code values, see http://en.wikipedia.org/wiki/ASCII#ASCII_printable_characters.

" - }, - "BinaryValue":{ - "shape":"Binary", - "documentation":"

Binary type attributes can store any binary data, for example, compressed data, encrypted data, or images.

" - }, - "StringListValues":{ - "shape":"StringList", - "documentation":"

Not implemented. Reserved for future use.

", - "flattened":true, - "locationName":"StringListValue" - }, - "BinaryListValues":{ - "shape":"BinaryList", - "documentation":"

Not implemented. Reserved for future use.

", - "flattened":true, - "locationName":"BinaryListValue" - }, - "DataType":{ - "shape":"String", - "documentation":"

Amazon SQS supports the following logical data types: String, Number, and Binary. In addition, you can append your own custom labels. For more information, see Message Attribute Data Types.

" - } - }, - "documentation":"

The user-specified message attribute value. For string data types, the value attribute has the same restrictions on the content as the message body. For more information, see SendMessage.

Name, type, and value must not be empty or null. In addition, the message body should not be empty or null. All parts of the message attribute, including name, type, and value, are included in the message size restriction, which is currently 256 KB (262,144 bytes).

" - }, - "MessageList":{ - "type":"list", - "member":{ - "shape":"Message", - "locationName":"Message" - }, - "flattened":true - }, - "MessageNotInflight":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"AWS.SimpleQueueService.MessageNotInflight", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The message referred to is not in flight.

" - }, - "OverLimit":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"OverLimit", - "httpStatusCode":403, - "senderFault":true - }, - "exception":true, - "documentation":"

The action that you requested would violate a limit. For example, ReceiveMessage returns this error if the maximum number of messages inflight has already been reached. AddPermission returns this error if the maximum number of permissions for the queue has already been reached.

" - }, - "PurgeQueueInProgress":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"AWS.SimpleQueueService.PurgeQueueInProgress", - "httpStatusCode":403, - "senderFault":true - }, - "exception":true, - "documentation":"

Indicates that the specified queue previously received a PurgeQueue request within the last 60 seconds, the time it can take to delete the messages in the queue.

" - }, - "PurgeQueueRequest":{ - "type":"structure", - "required":["QueueUrl"], - "members":{ - "QueueUrl":{ - "shape":"String", - "documentation":"

The queue URL of the queue to delete the messages from when using the PurgeQueue API.

" - } - } - }, - "QueueAttributeName":{ - "type":"string", - "enum":[ - "Policy", - "VisibilityTimeout", - "MaximumMessageSize", - "MessageRetentionPeriod", - "ApproximateNumberOfMessages", - "ApproximateNumberOfMessagesNotVisible", - "CreatedTimestamp", - "LastModifiedTimestamp", - "QueueArn", - "ApproximateNumberOfMessagesDelayed", - "DelaySeconds", - "ReceiveMessageWaitTimeSeconds", - "RedrivePolicy" - ] - }, - "QueueDeletedRecently":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"AWS.SimpleQueueService.QueueDeletedRecently", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

You must wait 60 seconds after deleting a queue before you can create another with the same name.

" - }, - "QueueDoesNotExist":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"AWS.SimpleQueueService.NonExistentQueue", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The queue referred to does not exist.

" - }, - "QueueNameExists":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"QueueAlreadyExists", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

A queue already exists with this name. Amazon SQS returns this error only if the request includes attributes whose values differ from those of the existing queue.

" - }, - "QueueUrlList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"QueueUrl" - }, - "flattened":true - }, - "ReceiptHandleIsInvalid":{ - "type":"structure", - "members":{ - }, - "exception":true, - "documentation":"

The receipt handle provided is not valid.

" - }, - "ReceiveMessageRequest":{ - "type":"structure", - "required":["QueueUrl"], - "members":{ - "QueueUrl":{ - "shape":"String", - "documentation":"

The URL of the Amazon SQS queue to take action on.

" - }, - "AttributeNames":{ - "shape":"AttributeNameList", - "documentation":"

A list of attributes that need to be returned along with each message.

The following lists the names and descriptions of the attributes that can be returned:

" - }, - "MessageAttributeNames":{ - "shape":"MessageAttributeNameList", - "documentation":"

The name of the message attribute, where N is the index. The message attribute name can contain the following characters: A-Z, a-z, 0-9, underscore (_), hyphen (-), and period (.). The name must not start or end with a period, and it should not have successive periods. The name is case sensitive and must be unique among all attribute names for the message. The name can be up to 256 characters long. The name cannot start with \"AWS.\" or \"Amazon.\" (or any variations in casing), because these prefixes are reserved for use by Amazon Web Services.

When using ReceiveMessage, you can send a list of attribute names to receive, or you can return all of the attributes by specifying \"All\" or \".*\" in your request. You can also use \"foo.*\" to return all message attributes starting with the \"foo\" prefix.

" - }, - "MaxNumberOfMessages":{ - "shape":"Integer", - "documentation":"

The maximum number of messages to return. Amazon SQS never returns more messages than this value but may return fewer. Values can be from 1 to 10. Default is 1.

All of the messages are not necessarily returned.

" - }, - "VisibilityTimeout":{ - "shape":"Integer", - "documentation":"

The duration (in seconds) that the received messages are hidden from subsequent retrieve requests after being retrieved by a ReceiveMessage request.

" - }, - "WaitTimeSeconds":{ - "shape":"Integer", - "documentation":"

The duration (in seconds) for which the call will wait for a message to arrive in the queue before returning. If a message is available, the call will return sooner than WaitTimeSeconds.

" - } - } - }, - "ReceiveMessageResult":{ - "type":"structure", - "members":{ - "Messages":{ - "shape":"MessageList", - "documentation":"

A list of messages.

" - } - }, - "documentation":"A list of received messages." - }, - "RemovePermissionRequest":{ - "type":"structure", - "required":[ - "QueueUrl", - "Label" - ], - "members":{ - "QueueUrl":{ - "shape":"String", - "documentation":"

The URL of the Amazon SQS queue to take action on.

" - }, - "Label":{ - "shape":"String", - "documentation":"

The identification of the permission to remove. This is the label added with the AddPermission action.

" - } - } - }, - "SendMessageBatchRequest":{ - "type":"structure", - "required":[ - "QueueUrl", - "Entries" - ], - "members":{ - "QueueUrl":{ - "shape":"String", - "documentation":"

The URL of the Amazon SQS queue to take action on.

" - }, - "Entries":{ - "shape":"SendMessageBatchRequestEntryList", - "documentation":"

A list of SendMessageBatchRequestEntry items.

" - } - } - }, - "SendMessageBatchRequestEntry":{ - "type":"structure", - "required":[ - "Id", - "MessageBody" - ], - "members":{ - "Id":{ - "shape":"String", - "documentation":"

An identifier for the message in this batch. This is used to communicate the result. Note that the Ids of a batch request need to be unique within the request.

" - }, - "MessageBody":{ - "shape":"String", - "documentation":"

Body of the message.

" - }, - "DelaySeconds":{ - "shape":"Integer", - "documentation":"

The number of seconds for which the message has to be delayed.

" - }, - "MessageAttributes":{ - "shape":"MessageAttributeMap", - "documentation":"

Each message attribute consists of a Name, Type, and Value. For more information, see Message Attribute Items.

", - "locationName":"MessageAttribute" - } - }, - "documentation":"

Contains the details of a single Amazon SQS message along with a Id.

" - }, - "SendMessageBatchRequestEntryList":{ - "type":"list", - "member":{ - "shape":"SendMessageBatchRequestEntry", - "locationName":"SendMessageBatchRequestEntry" - }, - "flattened":true - }, - "SendMessageBatchResult":{ - "type":"structure", - "required":[ - "Successful", - "Failed" - ], - "members":{ - "Successful":{ - "shape":"SendMessageBatchResultEntryList", - "documentation":"

A list of SendMessageBatchResultEntry items.

" - }, - "Failed":{ - "shape":"BatchResultErrorEntryList", - "documentation":"

A list of BatchResultErrorEntry items with the error detail about each message that could not be enqueued.

" - } - }, - "documentation":"

For each message in the batch, the response contains a SendMessageBatchResultEntry tag if the message succeeds or a BatchResultErrorEntry tag if the message fails.

" - }, - "SendMessageBatchResultEntry":{ - "type":"structure", - "required":[ - "Id", - "MessageId", - "MD5OfMessageBody" - ], - "members":{ - "Id":{ - "shape":"String", - "documentation":"

An identifier for the message in this batch.

" - }, - "MessageId":{ - "shape":"String", - "documentation":"

An identifier for the message.

" - }, - "MD5OfMessageBody":{ - "shape":"String", - "documentation":"

An MD5 digest of the non-URL-encoded message body string. This can be used to verify that Amazon SQS received the message correctly. Amazon SQS first URL decodes the message before creating the MD5 digest. For information about MD5, go to http://www.faqs.org/rfcs/rfc1321.html.

" - }, - "MD5OfMessageAttributes":{ - "shape":"String", - "documentation":"

An MD5 digest of the non-URL-encoded message attribute string. This can be used to verify that Amazon SQS received the message batch correctly. Amazon SQS first URL decodes the message before creating the MD5 digest. For information about MD5, go to http://www.faqs.org/rfcs/rfc1321.html.

" - } - }, - "documentation":"

Encloses a message ID for successfully enqueued message of a SendMessageBatch.

" - }, - "SendMessageBatchResultEntryList":{ - "type":"list", - "member":{ - "shape":"SendMessageBatchResultEntry", - "locationName":"SendMessageBatchResultEntry" - }, - "flattened":true - }, - "SendMessageRequest":{ - "type":"structure", - "required":[ - "QueueUrl", - "MessageBody" - ], - "members":{ - "QueueUrl":{ - "shape":"String", - "documentation":"

The URL of the Amazon SQS queue to take action on.

" - }, - "MessageBody":{ - "shape":"String", - "documentation":"

The message to send. String maximum 256 KB in size. For a list of allowed characters, see the preceding important note.

" - }, - "DelaySeconds":{ - "shape":"Integer", - "documentation":"

The number of seconds (0 to 900 - 15 minutes) to delay a specific message. Messages with a positive DelaySeconds value become available for processing after the delay time is finished. If you don't specify a value, the default value for the queue applies.

" - }, - "MessageAttributes":{ - "shape":"MessageAttributeMap", - "documentation":"

Each message attribute consists of a Name, Type, and Value. For more information, see Message Attribute Items.

", - "locationName":"MessageAttribute" - } - } - }, - "SendMessageResult":{ - "type":"structure", - "members":{ - "MD5OfMessageBody":{ - "shape":"String", - "documentation":"

An MD5 digest of the non-URL-encoded message body string. This can be used to verify that Amazon SQS received the message correctly. Amazon SQS first URL decodes the message before creating the MD5 digest. For information about MD5, go to http://www.faqs.org/rfcs/rfc1321.html.

" - }, - "MD5OfMessageAttributes":{ - "shape":"String", - "documentation":"

An MD5 digest of the non-URL-encoded message attribute string. This can be used to verify that Amazon SQS received the message correctly. Amazon SQS first URL decodes the message before creating the MD5 digest. For information about MD5, go to http://www.faqs.org/rfcs/rfc1321.html.

" - }, - "MessageId":{ - "shape":"String", - "documentation":"

An element containing the message ID of the message sent to the queue. For more information, see Queue and Message Identifiers in the Amazon SQS Developer Guide.

" - } - }, - "documentation":"

The MD5OfMessageBody and MessageId elements.

" - }, - "SetQueueAttributesRequest":{ - "type":"structure", - "required":[ - "QueueUrl", - "Attributes" - ], - "members":{ - "QueueUrl":{ - "shape":"String", - "documentation":"

The URL of the Amazon SQS queue to take action on.

" - }, - "Attributes":{ - "shape":"AttributeMap", - "documentation":"

A map of attributes to set.

The following lists the names, descriptions, and values of the special request parameters the SetQueueAttributes action uses:

", - "locationName":"Attribute" - } - } - }, - "String":{"type":"string"}, - "StringList":{ - "type":"list", - "member":{ - "shape":"String", - "locationName":"StringListValue" - } - }, - "TooManyEntriesInBatchRequest":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"AWS.SimpleQueueService.TooManyEntriesInBatchRequest", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Batch request contains more number of entries than permissible.

" - }, - "UnsupportedOperation":{ - "type":"structure", - "members":{ - }, - "error":{ - "code":"AWS.SimpleQueueService.UnsupportedOperation", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

Error code 400. Unsupported operation.

" - } - } -} diff --git a/src/github.com/getlantern/aws-sdk-go/apis/storagegateway/2013-06-30.normal.json b/src/github.com/getlantern/aws-sdk-go/apis/storagegateway/2013-06-30.normal.json deleted file mode 100644 index 1f5590b1c3..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/apis/storagegateway/2013-06-30.normal.json +++ /dev/null @@ -1,3256 +0,0 @@ -{ - "metadata":{ - "apiVersion":"2013-06-30", - "endpointPrefix":"storagegateway", - "jsonVersion":"1.1", - "serviceFullName":"AWS Storage Gateway", - "signatureVersion":"v4", - "targetPrefix":"StorageGateway_20130630", - "protocol":"json" - }, - "documentation":"AWS Storage Gateway Service

AWS Storage Gateway is the service that connects an on-premises software appliance with cloud-based storage to provide seamless and secure integration between an organization's on-premises IT environment and AWS's storage infrastructure. The service enables you to securely upload data to the AWS cloud for cost effective backup and rapid disaster recovery.

Use the following links to get started using the AWS Storage Gateway Service API Reference:

", - "operations":{ - "ActivateGateway":{ - "name":"ActivateGateway", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"ActivateGatewayInput", - "documentation":"

A JSON object containing one or more of the following fields:

" - }, - "output":{ - "shape":"ActivateGatewayOutput", - "documentation":"

AWS Storage Gateway returns the Amazon Resource Name (ARN) of the activated gateway. It is a string made of information such as your account, gateway name, and region. This ARN is used to reference the gateway in other API operations as well as resource-based authorization.

" - }, - "errors":[ - { - "shape":"InvalidGatewayRequestException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

An exception occurred because an invalid gateway request was issued to the service. See the error and message fields for more information.

" - }, - { - "shape":"InternalServerError", - "error":{"httpStatusCode":500}, - "exception":true, - "documentation":"

An internal server error has occurred during the request. See the error and message fields for more information.

" - } - ], - "documentation":"

This operation activates the gateway you previously deployed on your host. For more information, see Activate the AWS Storage Gateway. In the activation process, you specify information such as the region you want to use for storing snapshots, the time zone for scheduled snapshots the gateway snapshot schedule window, an activation key, and a name for your gateway. The activation process also associates your gateway with your account; for more information, see UpdateGatewayInformation.

You must turn on the gateway VM before you can activate your gateway." - }, - "AddCache":{ - "name":"AddCache", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"AddCacheInput"}, - "output":{"shape":"AddCacheOutput"}, - "errors":[ - { - "shape":"InvalidGatewayRequestException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

An exception occurred because an invalid gateway request was issued to the service. See the error and message fields for more information.

" - }, - { - "shape":"InternalServerError", - "error":{"httpStatusCode":500}, - "exception":true, - "documentation":"

An internal server error has occurred during the request. See the error and message fields for more information.

" - } - ], - "documentation":"

This operation configures one or more gateway local disks as cache for a cached-volume gateway. This operation is supported only for the gateway-cached volume architecture (see Storage Gateway Concepts).

In the request, you specify the gateway Amazon Resource Name (ARN) to which you want to add cache, and one or more disk IDs that you want to configure as cache.

" - }, - "AddUploadBuffer":{ - "name":"AddUploadBuffer", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"AddUploadBufferInput"}, - "output":{"shape":"AddUploadBufferOutput"}, - "errors":[ - { - "shape":"InvalidGatewayRequestException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

An exception occurred because an invalid gateway request was issued to the service. See the error and message fields for more information.

" - }, - { - "shape":"InternalServerError", - "error":{"httpStatusCode":500}, - "exception":true, - "documentation":"

An internal server error has occurred during the request. See the error and message fields for more information.

" - } - ], - "documentation":"

This operation configures one or more gateway local disks as upload buffer for a specified gateway. This operation is supported for both the gateway-stored and gateway-cached volume architectures.

In the request, you specify the gateway Amazon Resource Name (ARN) to which you want to add upload buffer, and one or more disk IDs that you want to configure as upload buffer.

" - }, - "AddWorkingStorage":{ - "name":"AddWorkingStorage", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"AddWorkingStorageInput", - "documentation":"

A JSON object containing one or more of the following fields:

" - }, - "output":{ - "shape":"AddWorkingStorageOutput", - "documentation":"

A JSON object containing the of the gateway for which working storage was configured.

" - }, - "errors":[ - { - "shape":"InvalidGatewayRequestException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

An exception occurred because an invalid gateway request was issued to the service. See the error and message fields for more information.

" - }, - { - "shape":"InternalServerError", - "error":{"httpStatusCode":500}, - "exception":true, - "documentation":"

An internal server error has occurred during the request. See the error and message fields for more information.

" - } - ], - "documentation":"

This operation configures one or more gateway local disks as working storage for a gateway. This operation is supported only for the gateway-stored volume architecture. This operation is deprecated method in cached-volumes API version (20120630). Use AddUploadBuffer instead.

Working storage is also referred to as upload buffer. You can also use the AddUploadBuffer operation to add upload buffer to a stored-volume gateway.

In the request, you specify the gateway Amazon Resource Name (ARN) to which you want to add working storage, and one or more disk IDs that you want to configure as working storage.

" - }, - "CancelArchival":{ - "name":"CancelArchival", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"CancelArchivalInput", - "documentation":"

CancelArchivalInput

" - }, - "output":{ - "shape":"CancelArchivalOutput", - "documentation":"

CancelArchivalOutput

" - }, - "errors":[ - { - "shape":"InvalidGatewayRequestException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

An exception occurred because an invalid gateway request was issued to the service. See the error and message fields for more information.

" - }, - { - "shape":"InternalServerError", - "error":{"httpStatusCode":500}, - "exception":true, - "documentation":"

An internal server error has occurred during the request. See the error and message fields for more information.

" - } - ], - "documentation":"

Cancels archiving of a virtual tape to the virtual tape shelf (VTS) after the archiving process is initiated.

" - }, - "CancelRetrieval":{ - "name":"CancelRetrieval", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"CancelRetrievalInput", - "documentation":"

CancelRetrievalInput

" - }, - "output":{ - "shape":"CancelRetrievalOutput", - "documentation":"

CancelRetrievalOutput

" - }, - "errors":[ - { - "shape":"InvalidGatewayRequestException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

An exception occurred because an invalid gateway request was issued to the service. See the error and message fields for more information.

" - }, - { - "shape":"InternalServerError", - "error":{"httpStatusCode":500}, - "exception":true, - "documentation":"

An internal server error has occurred during the request. See the error and message fields for more information.

" - } - ], - "documentation":"

Cancels retrieval of a virtual tape from the virtual tape shelf (VTS) to a gateway after the retrieval process is initiated. The virtual tape is returned to the VTS.

" - }, - "CreateCachediSCSIVolume":{ - "name":"CreateCachediSCSIVolume", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CreateCachediSCSIVolumeInput"}, - "output":{"shape":"CreateCachediSCSIVolumeOutput"}, - "errors":[ - { - "shape":"InvalidGatewayRequestException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

An exception occurred because an invalid gateway request was issued to the service. See the error and message fields for more information.

" - }, - { - "shape":"InternalServerError", - "error":{"httpStatusCode":500}, - "exception":true, - "documentation":"

An internal server error has occurred during the request. See the error and message fields for more information.

" - } - ], - "documentation":"

This operation creates a cached volume on a specified cached gateway. This operation is supported only for the gateway-cached volume architecture.

Cache storage must be allocated to the gateway before you can create a cached volume. Use the AddCache operation to add cache storage to a gateway.

In the request, you must specify the gateway, size of the volume in bytes, the iSCSI target name, an IP address on which to expose the target, and a unique client token. In response, AWS Storage Gateway creates the volume and returns information about it such as the volume Amazon Resource Name (ARN), its size, and the iSCSI target ARN that initiators can use to connect to the volume target.

" - }, - "CreateSnapshot":{ - "name":"CreateSnapshot", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"CreateSnapshotInput", - "documentation":"

A JSON object containing one or more of the following fields:

" - }, - "output":{ - "shape":"CreateSnapshotOutput", - "documentation":"

A JSON object containing the following fields:

" - }, - "errors":[ - { - "shape":"InvalidGatewayRequestException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

An exception occurred because an invalid gateway request was issued to the service. See the error and message fields for more information.

" - }, - { - "shape":"InternalServerError", - "error":{"httpStatusCode":500}, - "exception":true, - "documentation":"

An internal server error has occurred during the request. See the error and message fields for more information.

" - } - ], - "documentation":"

This operation initiates a snapshot of a volume.

AWS Storage Gateway provides the ability to back up point-in-time snapshots of your data to Amazon Simple Storage (S3) for durable off-site recovery, as well as import the data to an Amazon Elastic Block Store (EBS) volume in Amazon Elastic Compute Cloud (EC2). You can take snapshots of your gateway volume on a scheduled or ad-hoc basis. This API enables you to take ad-hoc snapshot. For more information, see Working With Snapshots in the AWS Storage Gateway Console.

In the CreateSnapshot request you identify the volume by providing its Amazon Resource Name (ARN). You must also provide description for the snapshot. When AWS Storage Gateway takes the snapshot of specified volume, the snapshot and description appears in the AWS Storage Gateway Console. In response, AWS Storage Gateway returns you a snapshot ID. You can use this snapshot ID to check the snapshot progress or later use it when you want to create a volume from a snapshot.

To list or delete a snapshot, you must use the Amazon EC2 API. For more information, ." - }, - "CreateSnapshotFromVolumeRecoveryPoint":{ - "name":"CreateSnapshotFromVolumeRecoveryPoint", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CreateSnapshotFromVolumeRecoveryPointInput"}, - "output":{"shape":"CreateSnapshotFromVolumeRecoveryPointOutput"}, - "errors":[ - { - "shape":"InvalidGatewayRequestException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

An exception occurred because an invalid gateway request was issued to the service. See the error and message fields for more information.

" - }, - { - "shape":"InternalServerError", - "error":{"httpStatusCode":500}, - "exception":true, - "documentation":"

An internal server error has occurred during the request. See the error and message fields for more information.

" - } - ], - "documentation":"

This operation initiates a snapshot of a gateway from a volume recovery point. This operation is supported only for the gateway-cached volume architecture (see ).

A volume recovery point is a point in time at which all data of the volume is consistent and from which you can create a snapshot. To get a list of volume recovery point for gateway-cached volumes, use ListVolumeRecoveryPoints.

In the CreateSnapshotFromVolumeRecoveryPoint request, you identify the volume by providing its Amazon Resource Name (ARN). You must also provide a description for the snapshot. When AWS Storage Gateway takes a snapshot of the specified volume, the snapshot and its description appear in the AWS Storage Gateway console. In response, AWS Storage Gateway returns you a snapshot ID. You can use this snapshot ID to check the snapshot progress or later use it when you want to create a volume from a snapshot.

To list or delete a snapshot, you must use the Amazon EC2 API. For more information, in Amazon Elastic Compute Cloud API Reference.

" - }, - "CreateStorediSCSIVolume":{ - "name":"CreateStorediSCSIVolume", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"CreateStorediSCSIVolumeInput", - "documentation":"

A JSON object containing one or more of the following fields:

" - }, - "output":{ - "shape":"CreateStorediSCSIVolumeOutput", - "documentation":"

A JSON object containing the following fields:

" - }, - "errors":[ - { - "shape":"InvalidGatewayRequestException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

An exception occurred because an invalid gateway request was issued to the service. See the error and message fields for more information.

" - }, - { - "shape":"InternalServerError", - "error":{"httpStatusCode":500}, - "exception":true, - "documentation":"

An internal server error has occurred during the request. See the error and message fields for more information.

" - } - ], - "documentation":"

This operation creates a volume on a specified gateway. This operation is supported only for the gateway-stored volume architecture.

The size of the volume to create is inferred from the disk size. You can choose to preserve existing data on the disk, create volume from an existing snapshot, or create an empty volume. If you choose to create an empty gateway volume, then any existing data on the disk is erased.

In the request you must specify the gateway and the disk information on which you are creating the volume. In response, AWS Storage Gateway creates the volume and returns volume information such as the volume Amazon Resource Name (ARN), its size, and the iSCSI target ARN that initiators can use to connect to the volume target.

" - }, - "CreateTapes":{ - "name":"CreateTapes", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"CreateTapesInput", - "documentation":"

CreateTapesInput

" - }, - "output":{ - "shape":"CreateTapesOutput", - "documentation":"

CreateTapeOutput

" - }, - "errors":[ - { - "shape":"InvalidGatewayRequestException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

An exception occurred because an invalid gateway request was issued to the service. See the error and message fields for more information.

" - }, - { - "shape":"InternalServerError", - "error":{"httpStatusCode":500}, - "exception":true, - "documentation":"

An internal server error has occurred during the request. See the error and message fields for more information.

" - } - ], - "documentation":"

Creates one or more virtual tapes. You write data to the virtual tapes and then archive the tapes.

Cache storage must be allocated to the gateway before you can create virtual tapes. Use the AddCache operation to add cache storage to a gateway. " - }, - "DeleteBandwidthRateLimit":{ - "name":"DeleteBandwidthRateLimit", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DeleteBandwidthRateLimitInput"}, - "output":{ - "shape":"DeleteBandwidthRateLimitOutput", - "documentation":"

A JSON object containing the of the gateway whose bandwidth rate information was deleted.

" - }, - "errors":[ - { - "shape":"InvalidGatewayRequestException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

An exception occurred because an invalid gateway request was issued to the service. See the error and message fields for more information.

" - }, - { - "shape":"InternalServerError", - "error":{"httpStatusCode":500}, - "exception":true, - "documentation":"

An internal server error has occurred during the request. See the error and message fields for more information.

" - } - ], - "documentation":"

This operation deletes the bandwidth rate limits of a gateway. You can delete either the upload and download bandwidth rate limit, or you can delete both. If you delete only one of the limits, the other limit remains unchanged. To specify which gateway to work with, use the Amazon Resource Name (ARN) of the gateway in your request.

" - }, - "DeleteChapCredentials":{ - "name":"DeleteChapCredentials", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DeleteChapCredentialsInput", - "documentation":"

A JSON object containing one or more of the following fields:

" - }, - "output":{ - "shape":"DeleteChapCredentialsOutput", - "documentation":"

A JSON object containing the following fields:

" - }, - "errors":[ - { - "shape":"InvalidGatewayRequestException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

An exception occurred because an invalid gateway request was issued to the service. See the error and message fields for more information.

" - }, - { - "shape":"InternalServerError", - "error":{"httpStatusCode":500}, - "exception":true, - "documentation":"

An internal server error has occurred during the request. See the error and message fields for more information.

" - } - ], - "documentation":"

This operation deletes Challenge-Handshake Authentication Protocol (CHAP) credentials for a specified iSCSI target and initiator pair.

" - }, - "DeleteGateway":{ - "name":"DeleteGateway", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DeleteGatewayInput", - "documentation":"

A JSON object containing the of the gateway to delete.

" - }, - "output":{ - "shape":"DeleteGatewayOutput", - "documentation":"

A JSON object containing the of the deleted gateway.

" - }, - "errors":[ - { - "shape":"InvalidGatewayRequestException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

An exception occurred because an invalid gateway request was issued to the service. See the error and message fields for more information.

" - }, - { - "shape":"InternalServerError", - "error":{"httpStatusCode":500}, - "exception":true, - "documentation":"

An internal server error has occurred during the request. See the error and message fields for more information.

" - } - ], - "documentation":"

This operation deletes a gateway. To specify which gateway to delete, use the Amazon Resource Name (ARN) of the gateway in your request. The operation deletes the gateway; however, it does not delete the gateway virtual machine (VM) from your host computer.

After you delete a gateway, you cannot reactivate it. Completed snapshots of the gateway volumes are not deleted upon deleting the gateway, however, pending snapshots will not complete. After you delete a gateway, your next step is to remove it from your environment.

You no longer pay software charges after the gateway is deleted; however, your existing Amazon EBS snapshots persist and you will continue to be billed for these snapshots. You can choose to remove all remaining Amazon EBS snapshots by canceling your Amazon EC2 subscription.  If you prefer not to cancel your Amazon EC2 subscription, you can delete your snapshots using the Amazon EC2 console. For more information, see the AWS Storage Gateway Detail Page.

" - }, - "DeleteSnapshotSchedule":{ - "name":"DeleteSnapshotSchedule", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DeleteSnapshotScheduleInput"}, - "output":{"shape":"DeleteSnapshotScheduleOutput"}, - "errors":[ - { - "shape":"InvalidGatewayRequestException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

An exception occurred because an invalid gateway request was issued to the service. See the error and message fields for more information.

" - }, - { - "shape":"InternalServerError", - "error":{"httpStatusCode":500}, - "exception":true, - "documentation":"

An internal server error has occurred during the request. See the error and message fields for more information.

" - } - ], - "documentation":"

This operation deletes a snapshot of a volume.

You can take snapshots of your gateway volumes on a scheduled or ad-hoc basis. This API enables you to delete a snapshot schedule for a volume. For more information, see Working with Snapshots. In the DeleteSnapshotSchedule request, you identify the volume by providing its Amazon Resource Name (ARN).

To list or delete a snapshot, you must use the Amazon EC2 API. in Amazon Elastic Compute Cloud API Reference.

" - }, - "DeleteTape":{ - "name":"DeleteTape", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DeleteTapeInput", - "documentation":"

DeleteTapeInput

" - }, - "output":{ - "shape":"DeleteTapeOutput", - "documentation":"

DeleteTapeOutput

" - }, - "errors":[ - { - "shape":"InvalidGatewayRequestException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

An exception occurred because an invalid gateway request was issued to the service. See the error and message fields for more information.

" - }, - { - "shape":"InternalServerError", - "error":{"httpStatusCode":500}, - "exception":true, - "documentation":"

An internal server error has occurred during the request. See the error and message fields for more information.

" - } - ], - "documentation":"

Deletes the specified virtual tape.

" - }, - "DeleteTapeArchive":{ - "name":"DeleteTapeArchive", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DeleteTapeArchiveInput", - "documentation":"

DeleteTapeArchiveInput

" - }, - "output":{ - "shape":"DeleteTapeArchiveOutput", - "documentation":"

DeleteTapeArchiveOutput

" - }, - "errors":[ - { - "shape":"InvalidGatewayRequestException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

An exception occurred because an invalid gateway request was issued to the service. See the error and message fields for more information.

" - }, - { - "shape":"InternalServerError", - "error":{"httpStatusCode":500}, - "exception":true, - "documentation":"

An internal server error has occurred during the request. See the error and message fields for more information.

" - } - ], - "documentation":"

Deletes the specified virtual tape from the virtual tape shelf (VTS).

" - }, - "DeleteVolume":{ - "name":"DeleteVolume", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DeleteVolumeInput", - "documentation":"

A JSON object containing the DeleteVolumeInput$VolumeARN to delete.

" - }, - "output":{ - "shape":"DeleteVolumeOutput", - "documentation":"

A JSON object containing the of the storage volume that was deleted

" - }, - "errors":[ - { - "shape":"InvalidGatewayRequestException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

An exception occurred because an invalid gateway request was issued to the service. See the error and message fields for more information.

" - }, - { - "shape":"InternalServerError", - "error":{"httpStatusCode":500}, - "exception":true, - "documentation":"

An internal server error has occurred during the request. See the error and message fields for more information.

" - } - ], - "documentation":"

This operation delete the specified gateway volume that you previously created using the CreateStorediSCSIVolume API. For gateway-stored volumes, the local disk that was configured as the storage volume is not deleted. You can reuse the local disk to create another storage volume.

Before you delete a gateway volume, make sure there are no iSCSI connections to the volume you are deleting. You should also make sure there is no snapshot in progress. You can use the Amazon Elastic Compute Cloud (Amazon EC2) API to query snapshots on the volume you are deleting and check the snapshot status. For more information, go to DescribeSnapshots in the Amazon Elastic Compute Cloud API Reference.

In the request, you must provide the Amazon Resource Name (ARN) of the storage volume you want to delete.

" - }, - "DescribeBandwidthRateLimit":{ - "name":"DescribeBandwidthRateLimit", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DescribeBandwidthRateLimitInput", - "documentation":"

A JSON object containing the of the gateway.

" - }, - "output":{ - "shape":"DescribeBandwidthRateLimitOutput", - "documentation":"

A JSON object containing the following fields:

" - }, - "errors":[ - { - "shape":"InvalidGatewayRequestException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

An exception occurred because an invalid gateway request was issued to the service. See the error and message fields for more information.

" - }, - { - "shape":"InternalServerError", - "error":{"httpStatusCode":500}, - "exception":true, - "documentation":"

An internal server error has occurred during the request. See the error and message fields for more information.

" - } - ], - "documentation":"

This operation returns the bandwidth rate limits of a gateway. By default, these limits are not set, which means no bandwidth rate limiting is in effect.

This operation only returns a value for a bandwidth rate limit only if the limit is set. If no limits are set for the gateway, then this operation returns only the gateway ARN in the response body. To specify which gateway to describe, use the Amazon Resource Name (ARN) of the gateway in your request.

" - }, - "DescribeCache":{ - "name":"DescribeCache", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeCacheInput"}, - "output":{"shape":"DescribeCacheOutput"}, - "errors":[ - { - "shape":"InvalidGatewayRequestException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

An exception occurred because an invalid gateway request was issued to the service. See the error and message fields for more information.

" - }, - { - "shape":"InternalServerError", - "error":{"httpStatusCode":500}, - "exception":true, - "documentation":"

An internal server error has occurred during the request. See the error and message fields for more information.

" - } - ], - "documentation":"

This operation returns information about the cache of a gateway. This operation is supported only for the gateway-cached volume architecture.

The response includes disk IDs that are configured as cache, and it includes the amount of cache allocated and used.

" - }, - "DescribeCachediSCSIVolumes":{ - "name":"DescribeCachediSCSIVolumes", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeCachediSCSIVolumesInput"}, - "output":{ - "shape":"DescribeCachediSCSIVolumesOutput", - "documentation":"

A JSON object containing the following fields:

" - }, - "errors":[ - { - "shape":"InvalidGatewayRequestException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

An exception occurred because an invalid gateway request was issued to the service. See the error and message fields for more information.

" - }, - { - "shape":"InternalServerError", - "error":{"httpStatusCode":500}, - "exception":true, - "documentation":"

An internal server error has occurred during the request. See the error and message fields for more information.

" - } - ], - "documentation":"

This operation returns a description of the gateway volumes specified in the request. This operation is supported only for the gateway-cached volume architecture.

The list of gateway volumes in the request must be from one gateway. In the response Amazon Storage Gateway returns volume information sorted by volume Amazon Resource Name (ARN).

" - }, - "DescribeChapCredentials":{ - "name":"DescribeChapCredentials", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DescribeChapCredentialsInput", - "documentation":"

A JSON object containing the Amazon Resource Name (ARN) of the iSCSI volume target.

" - }, - "output":{ - "shape":"DescribeChapCredentialsOutput", - "documentation":"

A JSON object containing a .

" - }, - "errors":[ - { - "shape":"InvalidGatewayRequestException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

An exception occurred because an invalid gateway request was issued to the service. See the error and message fields for more information.

" - }, - { - "shape":"InternalServerError", - "error":{"httpStatusCode":500}, - "exception":true, - "documentation":"

An internal server error has occurred during the request. See the error and message fields for more information.

" - } - ], - "documentation":"

This operation returns an array of Challenge-Handshake Authentication Protocol (CHAP) credentials information for a specified iSCSI target, one for each target-initiator pair.

" - }, - "DescribeGatewayInformation":{ - "name":"DescribeGatewayInformation", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DescribeGatewayInformationInput", - "documentation":"

A JSON object containing the of the gateway.

" - }, - "output":{ - "shape":"DescribeGatewayInformationOutput", - "documentation":"

A JSON object containing the following fields:

" - }, - "errors":[ - { - "shape":"InvalidGatewayRequestException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

An exception occurred because an invalid gateway request was issued to the service. See the error and message fields for more information.

" - }, - { - "shape":"InternalServerError", - "error":{"httpStatusCode":500}, - "exception":true, - "documentation":"

An internal server error has occurred during the request. See the error and message fields for more information.

" - } - ], - "documentation":"

This operation returns metadata about a gateway such as its name, network interfaces, configured time zone, and the state (whether the gateway is running or not). To specify which gateway to describe, use the Amazon Resource Name (ARN) of the gateway in your request.

" - }, - "DescribeMaintenanceStartTime":{ - "name":"DescribeMaintenanceStartTime", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DescribeMaintenanceStartTimeInput", - "documentation":"

A JSON object containing the of the gateway.

" - }, - "output":{"shape":"DescribeMaintenanceStartTimeOutput"}, - "errors":[ - { - "shape":"InvalidGatewayRequestException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

An exception occurred because an invalid gateway request was issued to the service. See the error and message fields for more information.

" - }, - { - "shape":"InternalServerError", - "error":{"httpStatusCode":500}, - "exception":true, - "documentation":"

An internal server error has occurred during the request. See the error and message fields for more information.

" - } - ], - "documentation":"

This operation returns your gateway's weekly maintenance start time including the day and time of the week. Note that values are in terms of the gateway's time zone.

" - }, - "DescribeSnapshotSchedule":{ - "name":"DescribeSnapshotSchedule", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DescribeSnapshotScheduleInput", - "documentation":"

A JSON object containing the DescribeSnapshotScheduleInput$VolumeARN of the volume.

" - }, - "output":{"shape":"DescribeSnapshotScheduleOutput"}, - "errors":[ - { - "shape":"InvalidGatewayRequestException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

An exception occurred because an invalid gateway request was issued to the service. See the error and message fields for more information.

" - }, - { - "shape":"InternalServerError", - "error":{"httpStatusCode":500}, - "exception":true, - "documentation":"

An internal server error has occurred during the request. See the error and message fields for more information.

" - } - ], - "documentation":"

This operation describes the snapshot schedule for the specified gateway volume. The snapshot schedule information includes intervals at which snapshots are automatically initiated on the volume.

" - }, - "DescribeStorediSCSIVolumes":{ - "name":"DescribeStorediSCSIVolumes", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DescribeStorediSCSIVolumesInput", - "documentation":"

A JSON Object containing a list of DescribeStorediSCSIVolumesInput$VolumeARNs.

" - }, - "output":{"shape":"DescribeStorediSCSIVolumesOutput"}, - "errors":[ - { - "shape":"InvalidGatewayRequestException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

An exception occurred because an invalid gateway request was issued to the service. See the error and message fields for more information.

" - }, - { - "shape":"InternalServerError", - "error":{"httpStatusCode":500}, - "exception":true, - "documentation":"

An internal server error has occurred during the request. See the error and message fields for more information.

" - } - ], - "documentation":"

This operation returns description of the gateway volumes specified in the request. The list of gateway volumes in the request must be from one gateway. In the response Amazon Storage Gateway returns volume information sorted by volume ARNs.

" - }, - "DescribeTapeArchives":{ - "name":"DescribeTapeArchives", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DescribeTapeArchivesInput", - "documentation":"

DescribeTapeArchivesInput

" - }, - "output":{ - "shape":"DescribeTapeArchivesOutput", - "documentation":"

DescribeTapeArchivesOutput

" - }, - "errors":[ - { - "shape":"InvalidGatewayRequestException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

An exception occurred because an invalid gateway request was issued to the service. See the error and message fields for more information.

" - }, - { - "shape":"InternalServerError", - "error":{"httpStatusCode":500}, - "exception":true, - "documentation":"

An internal server error has occurred during the request. See the error and message fields for more information.

" - } - ], - "documentation":"

Returns a description of specified virtual tapes in the virtual tape shelf (VTS).

If a specific TapeARN is not specified, AWS Storage Gateway returns a description of all virtual tapes found in the VTS associated with your account.

" - }, - "DescribeTapeRecoveryPoints":{ - "name":"DescribeTapeRecoveryPoints", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DescribeTapeRecoveryPointsInput", - "documentation":"

DescribeTapeRecoveryPointsInput

" - }, - "output":{ - "shape":"DescribeTapeRecoveryPointsOutput", - "documentation":"

DescribeTapeRecoveryPointsOutput

" - }, - "errors":[ - { - "shape":"InvalidGatewayRequestException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

An exception occurred because an invalid gateway request was issued to the service. See the error and message fields for more information.

" - }, - { - "shape":"InternalServerError", - "error":{"httpStatusCode":500}, - "exception":true, - "documentation":"

An internal server error has occurred during the request. See the error and message fields for more information.

" - } - ], - "documentation":"

Returns a list of virtual tape recovery points that are available for the specified gateway-VTL.

A recovery point is a point in time view of a virtual tape at which all the data on the virtual tape is consistent. If your gateway crashes, virtual tapes that have recovery points can be recovered to a new gateway.

" - }, - "DescribeTapes":{ - "name":"DescribeTapes", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DescribeTapesInput", - "documentation":"

DescribeTapesInput

" - }, - "output":{ - "shape":"DescribeTapesOutput", - "documentation":"

DescribeTapesOutput

" - }, - "errors":[ - { - "shape":"InvalidGatewayRequestException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

An exception occurred because an invalid gateway request was issued to the service. See the error and message fields for more information.

" - }, - { - "shape":"InternalServerError", - "error":{"httpStatusCode":500}, - "exception":true, - "documentation":"

An internal server error has occurred during the request. See the error and message fields for more information.

" - } - ], - "documentation":"

Returns a description of the specified Amazon Resource Name (ARN) of virtual tapes. If a TapeARN is not specified, returns a description of all virtual tapes associated with the specified gateway.

" - }, - "DescribeUploadBuffer":{ - "name":"DescribeUploadBuffer", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeUploadBufferInput"}, - "output":{"shape":"DescribeUploadBufferOutput"}, - "errors":[ - { - "shape":"InvalidGatewayRequestException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

An exception occurred because an invalid gateway request was issued to the service. See the error and message fields for more information.

" - }, - { - "shape":"InternalServerError", - "error":{"httpStatusCode":500}, - "exception":true, - "documentation":"

An internal server error has occurred during the request. See the error and message fields for more information.

" - } - ], - "documentation":"

This operation returns information about the upload buffer of a gateway. This operation is supported for both the gateway-stored and gateway-cached volume architectures.

The response includes disk IDs that are configured as upload buffer space, and it includes the amount of upload buffer space allocated and used.

" - }, - "DescribeVTLDevices":{ - "name":"DescribeVTLDevices", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DescribeVTLDevicesInput", - "documentation":"

DescribeVTLDevicesInput

" - }, - "output":{ - "shape":"DescribeVTLDevicesOutput", - "documentation":"

DescribeVTLDevicesOutput

" - }, - "errors":[ - { - "shape":"InvalidGatewayRequestException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

An exception occurred because an invalid gateway request was issued to the service. See the error and message fields for more information.

" - }, - { - "shape":"InternalServerError", - "error":{"httpStatusCode":500}, - "exception":true, - "documentation":"

An internal server error has occurred during the request. See the error and message fields for more information.

" - } - ], - "documentation":"

Returns a description of virtual tape library (VTL) devices for the specified gateway. In the response, AWS Storage Gateway returns VTL device information.

The list of VTL devices must be from one gateway.

" - }, - "DescribeWorkingStorage":{ - "name":"DescribeWorkingStorage", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DescribeWorkingStorageInput", - "documentation":"

A JSON object containing the of the gateway.

" - }, - "output":{ - "shape":"DescribeWorkingStorageOutput", - "documentation":"

A JSON object containing the following fields:

" - }, - "errors":[ - { - "shape":"InvalidGatewayRequestException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

An exception occurred because an invalid gateway request was issued to the service. See the error and message fields for more information.

" - }, - { - "shape":"InternalServerError", - "error":{"httpStatusCode":500}, - "exception":true, - "documentation":"

An internal server error has occurred during the request. See the error and message fields for more information.

" - } - ], - "documentation":"

This operation returns information about the working storage of a gateway. This operation is supported only for the gateway-stored volume architecture. This operation is deprecated in cached-volumes API version (20120630). Use DescribeUploadBuffer instead.

Working storage is also referred to as upload buffer. You can also use the DescribeUploadBuffer operation to add upload buffer to a stored-volume gateway.

The response includes disk IDs that are configured as working storage, and it includes the amount of working storage allocated and used.

" - }, - "DisableGateway":{ - "name":"DisableGateway", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"DisableGatewayInput", - "documentation":"

DisableGatewayInput

" - }, - "output":{ - "shape":"DisableGatewayOutput", - "documentation":"

DisableGatewayOutput

" - }, - "errors":[ - { - "shape":"InvalidGatewayRequestException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

An exception occurred because an invalid gateway request was issued to the service. See the error and message fields for more information.

" - }, - { - "shape":"InternalServerError", - "error":{"httpStatusCode":500}, - "exception":true, - "documentation":"

An internal server error has occurred during the request. See the error and message fields for more information.

" - } - ], - "documentation":"

Disables a gateway when the gateway is no longer functioning. For example, if your gateway VM is damaged, you can disable the gateway so you can recover virtual tapes.

Use this operation for a gateway-VTL that is not reachable or not functioning.

Once a gateway is disabled it cannot be enabled." - }, - "ListGateways":{ - "name":"ListGateways", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"ListGatewaysInput", - "documentation":"

A JSON object containing zero or more of the following fields:

" - }, - "output":{"shape":"ListGatewaysOutput"}, - "errors":[ - { - "shape":"InvalidGatewayRequestException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

An exception occurred because an invalid gateway request was issued to the service. See the error and message fields for more information.

" - }, - { - "shape":"InternalServerError", - "error":{"httpStatusCode":500}, - "exception":true, - "documentation":"

An internal server error has occurred during the request. See the error and message fields for more information.

" - } - ], - "documentation":"

This operation lists gateways owned by an AWS account in a region specified in the request. The returned list is ordered by gateway Amazon Resource Name (ARN).

By default, the operation returns a maximum of 100 gateways. This operation supports pagination that allows you to optionally reduce the number of gateways returned in a response.

If you have more gateways than are returned in a response-that is, the response returns only a truncated list of your gateways-the response contains a marker that you can specify in your next request to fetch the next page of gateways.

" - }, - "ListLocalDisks":{ - "name":"ListLocalDisks", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"ListLocalDisksInput", - "documentation":"

A JSON object containing the of the gateway.

" - }, - "output":{"shape":"ListLocalDisksOutput"}, - "errors":[ - { - "shape":"InvalidGatewayRequestException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

An exception occurred because an invalid gateway request was issued to the service. See the error and message fields for more information.

" - }, - { - "shape":"InternalServerError", - "error":{"httpStatusCode":500}, - "exception":true, - "documentation":"

An internal server error has occurred during the request. See the error and message fields for more information.

" - } - ], - "documentation":"

This operation returns a list of the gateway's local disks. To specify which gateway to describe, you use the Amazon Resource Name (ARN) of the gateway in the body of the request.

The request returns a list of all disks, specifying which are configured as working storage, cache storage, or stored volume or not configured at all. The response includes a DiskStatus field. This field can have a value of present (the disk is availble to use), missing (the disk is no longer connected to the gateway), or mismatch (the disk node is occupied by a disk that has incorrect metadata or the disk content is corrupted).

" - }, - "ListVolumeRecoveryPoints":{ - "name":"ListVolumeRecoveryPoints", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"ListVolumeRecoveryPointsInput"}, - "output":{"shape":"ListVolumeRecoveryPointsOutput"}, - "errors":[ - { - "shape":"InvalidGatewayRequestException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

An exception occurred because an invalid gateway request was issued to the service. See the error and message fields for more information.

" - }, - { - "shape":"InternalServerError", - "error":{"httpStatusCode":500}, - "exception":true, - "documentation":"

An internal server error has occurred during the request. See the error and message fields for more information.

" - } - ], - "documentation":"

This operation lists the recovery points for a specified gateway. This operation is supported only for the gateway-cached volume architecture.

Each gateway-cached volume has one recovery point. A volume recovery point is a point in time at which all data of the volume is consistent and from which you can create a snapshot. To create a snapshot from a volume recovery point use the CreateSnapshotFromVolumeRecoveryPoint operation.

" - }, - "ListVolumes":{ - "name":"ListVolumes", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"ListVolumesInput", - "documentation":"

A JSON object that contains one or more of the following fields:

" - }, - "output":{"shape":"ListVolumesOutput"}, - "errors":[ - { - "shape":"InvalidGatewayRequestException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

An exception occurred because an invalid gateway request was issued to the service. See the error and message fields for more information.

" - }, - { - "shape":"InternalServerError", - "error":{"httpStatusCode":500}, - "exception":true, - "documentation":"

An internal server error has occurred during the request. See the error and message fields for more information.

" - } - ], - "documentation":"

This operation lists the iSCSI stored volumes of a gateway. Results are sorted by volume ARN. The response includes only the volume ARNs. If you want additional volume information, use the DescribeStorediSCSIVolumes API.

The operation supports pagination. By default, the operation returns a maximum of up to 100 volumes. You can optionally specify the Limit field in the body to limit the number of volumes in the response. If the number of volumes returned in the response is truncated, the response includes a Marker field. You can use this Marker value in your subsequent request to retrieve the next set of volumes.

" - }, - "ResetCache":{ - "name":"ResetCache", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"ResetCacheInput"}, - "output":{"shape":"ResetCacheOutput"}, - "errors":[ - { - "shape":"InvalidGatewayRequestException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

An exception occurred because an invalid gateway request was issued to the service. See the error and message fields for more information.

" - }, - { - "shape":"InternalServerError", - "error":{"httpStatusCode":500}, - "exception":true, - "documentation":"

An internal server error has occurred during the request. See the error and message fields for more information.

" - } - ], - "documentation":"

This operation resets all cache disks and makes the disks available for reconfiguration as cache storage. When a cache is reset, the gateway loses its cache storage. At this point you can reconfigure the disks as cache disks.

" - }, - "RetrieveTapeArchive":{ - "name":"RetrieveTapeArchive", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"RetrieveTapeArchiveInput", - "documentation":"

RetrieveTapeArchiveInput

" - }, - "output":{ - "shape":"RetrieveTapeArchiveOutput", - "documentation":"

RetrieveTapeArchiveOutput

" - }, - "errors":[ - { - "shape":"InvalidGatewayRequestException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

An exception occurred because an invalid gateway request was issued to the service. See the error and message fields for more information.

" - }, - { - "shape":"InternalServerError", - "error":{"httpStatusCode":500}, - "exception":true, - "documentation":"

An internal server error has occurred during the request. See the error and message fields for more information.

" - } - ], - "documentation":"

Retrieves an archived virtual tape from the virtual tape shelf (VTS) to a gateway-VTL. Virtual tapes archived in the VTS are not associated with any gateway. However after a tape is retrieved, it is associated with a gateway, even though it is also listed in the VTS.

Once a tape is successfully retrieved to a gateway, it cannot be retrieved again to another gateway. You must archive the tape again before you can retrieve it to another gateway.

" - }, - "RetrieveTapeRecoveryPoint":{ - "name":"RetrieveTapeRecoveryPoint", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"RetrieveTapeRecoveryPointInput", - "documentation":"

RetrieveTapeRecoveryPointInput

" - }, - "output":{ - "shape":"RetrieveTapeRecoveryPointOutput", - "documentation":"

RetrieveTapeRecoveryPointOutput

" - }, - "errors":[ - { - "shape":"InvalidGatewayRequestException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

An exception occurred because an invalid gateway request was issued to the service. See the error and message fields for more information.

" - }, - { - "shape":"InternalServerError", - "error":{"httpStatusCode":500}, - "exception":true, - "documentation":"

An internal server error has occurred during the request. See the error and message fields for more information.

" - } - ], - "documentation":"

Retrieves the recovery point for the specified virtual tape.

A recovery point is a point in time view of a virtual tape at which all the data on the tape is consistent. If your gateway crashes, virtual tapes that have recovery points can be recovered to a new gateway.

The virtual tape can be retrieved to only one gateway. The retrieved tape is read-only. The virtual tape can be retrieved to only a gateway-VTL. There is no charge for retrieving recovery points." - }, - "ShutdownGateway":{ - "name":"ShutdownGateway", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"ShutdownGatewayInput", - "documentation":"

A JSON object containing the of the gateway to shut down.

" - }, - "output":{ - "shape":"ShutdownGatewayOutput", - "documentation":"

A JSON object containing the of the gateway that was shut down.

" - }, - "errors":[ - { - "shape":"InvalidGatewayRequestException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

An exception occurred because an invalid gateway request was issued to the service. See the error and message fields for more information.

" - }, - { - "shape":"InternalServerError", - "error":{"httpStatusCode":500}, - "exception":true, - "documentation":"

An internal server error has occurred during the request. See the error and message fields for more information.

" - } - ], - "documentation":"

This operation shuts down a gateway. To specify which gateway to shut down, use the Amazon Resource Name (ARN) of the gateway in the body of your request.

The operation shuts down the gateway service component running in the storage gateway's virtual machine (VM) and not the VM.

If you want to shut down the VM, it is recommended that you first shut down the gateway component in the VM to avoid unpredictable conditions.

After the gateway is shutdown, you cannot call any other API except StartGateway, DescribeGatewayInformation, and ListGateways. For more information, see ActivateGateway. Your applications cannot read from or write to the gateway's storage volumes, and there are no snapshots taken.

When you make a shutdown request, you will get a 200 OK success response immediately. However, it might take some time for the gateway to shut down. You can call the DescribeGatewayInformation API to check the status. For more information, see ActivateGateway.

If do not intend to use the gateway again, you must delete the gateway (using DeleteGateway) to no longer pay software charges associated with the gateway.

" - }, - "StartGateway":{ - "name":"StartGateway", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"StartGatewayInput", - "documentation":"

A JSON object containing the of the gateway to start.

" - }, - "output":{ - "shape":"StartGatewayOutput", - "documentation":"

A JSON object containing the of the gateway that was restarted.

" - }, - "errors":[ - { - "shape":"InvalidGatewayRequestException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

An exception occurred because an invalid gateway request was issued to the service. See the error and message fields for more information.

" - }, - { - "shape":"InternalServerError", - "error":{"httpStatusCode":500}, - "exception":true, - "documentation":"

An internal server error has occurred during the request. See the error and message fields for more information.

" - } - ], - "documentation":"

This operation starts a gateway that you previously shut down (see ShutdownGateway). After the gateway starts, you can then make other API calls, your applications can read from or write to the gateway's storage volumes and you will be able to take snapshot backups.

When you make a request, you will get a 200 OK success response immediately. However, it might take some time for the gateway to be ready. You should call DescribeGatewayInformation and check the status before making any additional API calls. For more information, see ActivateGateway.

To specify which gateway to start, use the Amazon Resource Name (ARN) of the gateway in your request.

" - }, - "UpdateBandwidthRateLimit":{ - "name":"UpdateBandwidthRateLimit", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"UpdateBandwidthRateLimitInput", - "documentation":"

A JSON object containing one or more of the following fields:

" - }, - "output":{ - "shape":"UpdateBandwidthRateLimitOutput", - "documentation":"

A JSON object containing the of the gateway whose throttle information was updated.

" - }, - "errors":[ - { - "shape":"InvalidGatewayRequestException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

An exception occurred because an invalid gateway request was issued to the service. See the error and message fields for more information.

" - }, - { - "shape":"InternalServerError", - "error":{"httpStatusCode":500}, - "exception":true, - "documentation":"

An internal server error has occurred during the request. See the error and message fields for more information.

" - } - ], - "documentation":"

This operation updates the bandwidth rate limits of a gateway. You can update both the upload and download bandwidth rate limit or specify only one of the two. If you don't set a bandwidth rate limit, the existing rate limit remains.

By default, a gateway's bandwidth rate limits are not set. If you don't set any limit, the gateway does not have any limitations on its bandwidth usage and could potentially use the maximum available bandwidth.

To specify which gateway to update, use the Amazon Resource Name (ARN) of the gateway in your request.

" - }, - "UpdateChapCredentials":{ - "name":"UpdateChapCredentials", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"UpdateChapCredentialsInput", - "documentation":"

A JSON object containing one or more of the following fields:

" - }, - "output":{ - "shape":"UpdateChapCredentialsOutput", - "documentation":"

A JSON object containing the following fields:

" - }, - "errors":[ - { - "shape":"InvalidGatewayRequestException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

An exception occurred because an invalid gateway request was issued to the service. See the error and message fields for more information.

" - }, - { - "shape":"InternalServerError", - "error":{"httpStatusCode":500}, - "exception":true, - "documentation":"

An internal server error has occurred during the request. See the error and message fields for more information.

" - } - ], - "documentation":"

This operation updates the Challenge-Handshake Authentication Protocol (CHAP) credentials for a specified iSCSI target. By default, a gateway does not have CHAP enabled; however, for added security, you might use it.

When you update CHAP credentials, all existing connections on the target are closed and initiators must reconnect with the new credentials.

" - }, - "UpdateGatewayInformation":{ - "name":"UpdateGatewayInformation", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"UpdateGatewayInformationInput"}, - "output":{ - "shape":"UpdateGatewayInformationOutput", - "documentation":"

A JSON object containing the of the gateway that was updated.

" - }, - "errors":[ - { - "shape":"InvalidGatewayRequestException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

An exception occurred because an invalid gateway request was issued to the service. See the error and message fields for more information.

" - }, - { - "shape":"InternalServerError", - "error":{"httpStatusCode":500}, - "exception":true, - "documentation":"

An internal server error has occurred during the request. See the error and message fields for more information.

" - } - ], - "documentation":"

This operation updates a gateway's metadata, which includes the gateway's name and time zone. To specify which gateway to update, use the Amazon Resource Name (ARN) of the gateway in your request.

" - }, - "UpdateGatewaySoftwareNow":{ - "name":"UpdateGatewaySoftwareNow", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"UpdateGatewaySoftwareNowInput", - "documentation":"

A JSON object containing the of the gateway to update.

" - }, - "output":{ - "shape":"UpdateGatewaySoftwareNowOutput", - "documentation":"

A JSON object containing the of the gateway that was updated.

" - }, - "errors":[ - { - "shape":"InvalidGatewayRequestException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

An exception occurred because an invalid gateway request was issued to the service. See the error and message fields for more information.

" - }, - { - "shape":"InternalServerError", - "error":{"httpStatusCode":500}, - "exception":true, - "documentation":"

An internal server error has occurred during the request. See the error and message fields for more information.

" - } - ], - "documentation":"

This operation updates the gateway virtual machine (VM) software. The request immediately triggers the software update.

When you make this request, you get a 200 OK success response immediately. However, it might take some time for the update to complete. You can call DescribeGatewayInformation to verify the gateway is in the STATE_RUNNING state. A software update forces a system restart of your gateway. You can minimize the chance of any disruption to your applications by increasing your iSCSI Initiators' timeouts. For more information about increasing iSCSI Initiator timeouts for Windows and Linux, see Customizing Your Windows iSCSI Settings and Customizing Your Linux iSCSI Settings, respectively." - }, - "UpdateMaintenanceStartTime":{ - "name":"UpdateMaintenanceStartTime", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"UpdateMaintenanceStartTimeInput", - "documentation":"

A JSON object containing the following fields:

" - }, - "output":{ - "shape":"UpdateMaintenanceStartTimeOutput", - "documentation":"

A JSON object containing the of the gateway whose maintenance start time is updated.

" - }, - "errors":[ - { - "shape":"InvalidGatewayRequestException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

An exception occurred because an invalid gateway request was issued to the service. See the error and message fields for more information.

" - }, - { - "shape":"InternalServerError", - "error":{"httpStatusCode":500}, - "exception":true, - "documentation":"

An internal server error has occurred during the request. See the error and message fields for more information.

" - } - ], - "documentation":"

This operation updates a gateway's weekly maintenance start time information, including day and time of the week. The maintenance time is the time in your gateway's time zone.

" - }, - "UpdateSnapshotSchedule":{ - "name":"UpdateSnapshotSchedule", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"UpdateSnapshotScheduleInput", - "documentation":"

A JSON object containing one or more of the following fields:

" - }, - "output":{ - "shape":"UpdateSnapshotScheduleOutput", - "documentation":"

A JSON object containing the of the updated storage volume.

" - }, - "errors":[ - { - "shape":"InvalidGatewayRequestException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

An exception occurred because an invalid gateway request was issued to the service. See the error and message fields for more information.

" - }, - { - "shape":"InternalServerError", - "error":{"httpStatusCode":500}, - "exception":true, - "documentation":"

An internal server error has occurred during the request. See the error and message fields for more information.

" - } - ], - "documentation":"

This operation updates a snapshot schedule configured for a gateway volume.

The default snapshot schedule for volume is once every 24 hours, starting at the creation time of the volume. You can use this API to change the snapshot schedule configured for the volume.

In the request you must identify the gateway volume whose snapshot schedule you want to update, and the schedule information, including when you want the snapshot to begin on a day and the frequency (in hours) of snapshots.

" - }, - "UpdateVTLDeviceType":{ - "name":"UpdateVTLDeviceType", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"UpdateVTLDeviceTypeInput", - "documentation":"

UpdateVTLDeviceTypeInput

" - }, - "output":{ - "shape":"UpdateVTLDeviceTypeOutput", - "documentation":"

UpdateVTLDeviceTypeOutput

" - }, - "errors":[ - { - "shape":"InvalidGatewayRequestException", - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

An exception occurred because an invalid gateway request was issued to the service. See the error and message fields for more information.

" - }, - { - "shape":"InternalServerError", - "error":{"httpStatusCode":500}, - "exception":true, - "documentation":"

An internal server error has occurred during the request. See the error and message fields for more information.

" - } - ], - "documentation":"

This operation updates the type of medium changer in a gateway-VTL. When you activate a gateway-VTL, you select a medium changer type for the gateway-VTL. This operation enables you to select a different type of medium changer after a gateway-VTL is activated.

" - } - }, - "shapes":{ - "ActivateGatewayInput":{ - "type":"structure", - "required":[ - "ActivationKey", - "GatewayName", - "GatewayTimezone", - "GatewayRegion" - ], - "members":{ - "ActivationKey":{ - "shape":"ActivationKey", - "documentation":"

Your gateway activation key. You can obtain the activation key by sending an HTTP GET request with redirects enabled to the gateway IP address (port 80). The redirect URL returned in the response provides you the activation key for your gateway in the query string parameter activationKey. It may also include other activation-related parameters, however, these are merely defaults -- the arguments you pass to the ActivateGateway API call determine the actual configuration of your gateway.

" - }, - "GatewayName":{"shape":"GatewayName"}, - "GatewayTimezone":{ - "shape":"GatewayTimezone", - "documentation":"

One of the values that indicates the time zone you want to set for the gateway. The time zone is used, for example, for scheduling snapshots and your gateway's maintenance schedule.

" - }, - "GatewayRegion":{ - "shape":"RegionId", - "documentation":"

One of the values that indicates the region where you want to store the snapshot backups. The gateway region specified must be the same region as the region in your Host header in the request. For more information about available regions and endpoints for AWS Storage Gateway, see Regions and Endpoints in the Amazon Web Services Glossary.

Valid Values: \"us-east-1\", \"us-west-1\", \"us-west-2\", \"eu-west-1\", \"eu-central-1\", \"ap-northeast-1\", \"ap-southeast-1\", \"ap-southeast-2\", \"sa-east-1\"

" - }, - "GatewayType":{ - "shape":"GatewayType", - "documentation":"

One of the values that defines the type of gateway to activate. The type specified is critical to all later functions of the gateway and cannot be changed after activation. The default value is STORED.

" - }, - "TapeDriveType":{ - "shape":"TapeDriveType", - "documentation":"

The value that indicates the type of tape drive to use for gateway-VTL. This field is optional.

Valid Values: \"IBM-ULT3580-TD5\"

" - }, - "MediumChangerType":{ - "shape":"MediumChangerType", - "documentation":"

The value that indicates the type of medium changer to use for gateway-VTL. This field is optional.

Valid Values: \"STK-L700\", \"AWS-Gateway-VTL\"

" - } - }, - "documentation":"

A JSON object containing one or more of the following fields:

" - }, - "ActivateGatewayOutput":{ - "type":"structure", - "members":{ - "GatewayARN":{"shape":"GatewayARN"} - }, - "documentation":"

AWS Storage Gateway returns the Amazon Resource Name (ARN) of the activated gateway. It is a string made of information such as your account, gateway name, and region. This ARN is used to reference the gateway in other API operations as well as resource-based authorization.

" - }, - "ActivationKey":{ - "type":"string", - "min":1, - "max":50 - }, - "AddCacheInput":{ - "type":"structure", - "required":[ - "GatewayARN", - "DiskIds" - ], - "members":{ - "GatewayARN":{"shape":"GatewayARN"}, - "DiskIds":{"shape":"DiskIds"} - } - }, - "AddCacheOutput":{ - "type":"structure", - "members":{ - "GatewayARN":{"shape":"GatewayARN"} - } - }, - "AddUploadBufferInput":{ - "type":"structure", - "required":[ - "GatewayARN", - "DiskIds" - ], - "members":{ - "GatewayARN":{"shape":"GatewayARN"}, - "DiskIds":{"shape":"DiskIds"} - } - }, - "AddUploadBufferOutput":{ - "type":"structure", - "members":{ - "GatewayARN":{"shape":"GatewayARN"} - } - }, - "AddWorkingStorageInput":{ - "type":"structure", - "required":[ - "GatewayARN", - "DiskIds" - ], - "members":{ - "GatewayARN":{"shape":"GatewayARN"}, - "DiskIds":{ - "shape":"DiskIds", - "documentation":"

An array of strings that identify disks that are to be configured as working storage. Each string have a minimum length of 1 and maximum length of 300. You can get the disk IDs from the ListLocalDisks API.

" - } - }, - "documentation":"

A JSON object containing one or more of the following fields:

" - }, - "AddWorkingStorageOutput":{ - "type":"structure", - "members":{ - "GatewayARN":{"shape":"GatewayARN"} - }, - "documentation":"

A JSON object containing the of the gateway for which working storage was configured.

" - }, - "BandwidthDownloadRateLimit":{ - "type":"long", - "min":102400 - }, - "BandwidthType":{ - "type":"string", - "min":3, - "max":25 - }, - "BandwidthUploadRateLimit":{ - "type":"long", - "min":51200 - }, - "CachediSCSIVolume":{ - "type":"structure", - "members":{ - "VolumeARN":{"shape":"VolumeARN"}, - "VolumeId":{"shape":"VolumeId"}, - "VolumeType":{"shape":"VolumeType"}, - "VolumeStatus":{"shape":"VolumeStatus"}, - "VolumeSizeInBytes":{"shape":"long"}, - "VolumeProgress":{"shape":"DoubleObject"}, - "SourceSnapshotId":{"shape":"SnapshotId"}, - "VolumeiSCSIAttributes":{"shape":"VolumeiSCSIAttributes"} - } - }, - "CachediSCSIVolumes":{ - "type":"list", - "member":{"shape":"CachediSCSIVolume"} - }, - "CancelArchivalInput":{ - "type":"structure", - "required":[ - "GatewayARN", - "TapeARN" - ], - "members":{ - "GatewayARN":{"shape":"GatewayARN"}, - "TapeARN":{ - "shape":"TapeARN", - "documentation":"

The Amazon Resource Name (ARN) of the virtual tape you want to cancel archiving for.

" - } - }, - "documentation":"

CancelArchivalInput

" - }, - "CancelArchivalOutput":{ - "type":"structure", - "members":{ - "TapeARN":{ - "shape":"TapeARN", - "documentation":"

The Amazon Resource Name (ARN) of the virtual tape for which archiving was canceled.

" - } - }, - "documentation":"

CancelArchivalOutput

" - }, - "CancelRetrievalInput":{ - "type":"structure", - "required":[ - "GatewayARN", - "TapeARN" - ], - "members":{ - "GatewayARN":{"shape":"GatewayARN"}, - "TapeARN":{ - "shape":"TapeARN", - "documentation":"

The Amazon Resource Name (ARN) of the virtual tape you want to cancel retrieval for.

" - } - }, - "documentation":"

CancelRetrievalInput

" - }, - "CancelRetrievalOutput":{ - "type":"structure", - "members":{ - "TapeARN":{ - "shape":"TapeARN", - "documentation":"

The Amazon Resource Name (ARN) of the virtual tape for which retrieval was canceled.

" - } - }, - "documentation":"

CancelRetrievalOutput

" - }, - "ChapCredentials":{ - "type":"list", - "member":{"shape":"ChapInfo"} - }, - "ChapInfo":{ - "type":"structure", - "members":{ - "TargetARN":{ - "shape":"TargetARN", - "documentation":"

The Amazon Resource Name (ARN) of the volume.

Valid Values: 50 to 500 lowercase letters, numbers, periods (.), and hyphens (-).

" - }, - "SecretToAuthenticateInitiator":{ - "shape":"ChapSecret", - "documentation":"

The secret key that the initiator (e.g. Windows client) must provide to participate in mutual CHAP with the target.

" - }, - "InitiatorName":{ - "shape":"IqnName", - "documentation":"

The iSCSI initiator that connects to the target.

" - }, - "SecretToAuthenticateTarget":{ - "shape":"ChapSecret", - "documentation":"

The secret key that the target must provide to participate in mutual CHAP with the initiator (e.g. Windows client).

" - } - }, - "documentation":"

Describes Challenge-Handshake Authentication Protocol (CHAP) information that supports authentication between your gateway and iSCSI initiators.

" - }, - "ChapSecret":{ - "type":"string", - "min":12, - "max":16 - }, - "ClientToken":{ - "type":"string", - "min":5, - "max":100 - }, - "CreateCachediSCSIVolumeInput":{ - "type":"structure", - "required":[ - "GatewayARN", - "VolumeSizeInBytes", - "TargetName", - "NetworkInterfaceId", - "ClientToken" - ], - "members":{ - "GatewayARN":{"shape":"GatewayARN"}, - "VolumeSizeInBytes":{"shape":"long"}, - "SnapshotId":{"shape":"SnapshotId"}, - "TargetName":{"shape":"TargetName"}, - "NetworkInterfaceId":{"shape":"NetworkInterfaceId"}, - "ClientToken":{"shape":"ClientToken"} - } - }, - "CreateCachediSCSIVolumeOutput":{ - "type":"structure", - "members":{ - "VolumeARN":{"shape":"VolumeARN"}, - "TargetARN":{"shape":"TargetARN"} - } - }, - "CreateSnapshotFromVolumeRecoveryPointInput":{ - "type":"structure", - "required":[ - "VolumeARN", - "SnapshotDescription" - ], - "members":{ - "VolumeARN":{"shape":"VolumeARN"}, - "SnapshotDescription":{"shape":"SnapshotDescription"} - } - }, - "CreateSnapshotFromVolumeRecoveryPointOutput":{ - "type":"structure", - "members":{ - "SnapshotId":{"shape":"SnapshotId"}, - "VolumeARN":{"shape":"VolumeARN"}, - "VolumeRecoveryPointTime":{"shape":"string"} - } - }, - "CreateSnapshotInput":{ - "type":"structure", - "required":[ - "VolumeARN", - "SnapshotDescription" - ], - "members":{ - "VolumeARN":{ - "shape":"VolumeARN", - "documentation":"

The Amazon Resource Name (ARN) of the volume. Use the ListVolumes operation to return a list of gateway volumes.

" - }, - "SnapshotDescription":{ - "shape":"SnapshotDescription", - "documentation":"

Textual description of the snapshot that appears in the Amazon EC2 console, Elastic Block Store snapshots panel in the Description field, and in the AWS Storage Gateway snapshot Details pane, Description field

" - } - }, - "documentation":"

A JSON object containing one or more of the following fields:

" - }, - "CreateSnapshotOutput":{ - "type":"structure", - "members":{ - "VolumeARN":{ - "shape":"VolumeARN", - "documentation":"

The Amazon Resource Name (ARN) of the volume of which the snapshot was taken.

" - }, - "SnapshotId":{ - "shape":"SnapshotId", - "documentation":"

The snapshot ID that is used to refer to the snapshot in future operations such as describing snapshots (Amazon Elastic Compute Cloud API DescribeSnapshots) or creating a volume from a snapshot (CreateStorediSCSIVolume).

" - } - }, - "documentation":"

A JSON object containing the following fields:

" - }, - "CreateStorediSCSIVolumeInput":{ - "type":"structure", - "required":[ - "GatewayARN", - "DiskId", - "PreserveExistingData", - "TargetName", - "NetworkInterfaceId" - ], - "members":{ - "GatewayARN":{"shape":"GatewayARN"}, - "DiskId":{ - "shape":"DiskId", - "documentation":"

The unique identifier for the gateway local disk that is configured as a stored volume. Use ListLocalDisks to list disk IDs for a gateway.

" - }, - "SnapshotId":{ - "shape":"SnapshotId", - "documentation":"

The snapshot ID (e.g. \"snap-1122aabb\") of the snapshot to restore as the new stored volume. Specify this field if you want to create the iSCSI storage volume from a snapshot otherwise do not include this field. To list snapshots for your account use DescribeSnapshots in the Amazon Elastic Compute Cloud API Reference.

" - }, - "PreserveExistingData":{ - "shape":"boolean", - "documentation":"

Specify this field as true if you want to preserve the data on the local disk. Otherwise, specifying this field as false creates an empty volume.

Valid Values: true, false

" - }, - "TargetName":{ - "shape":"TargetName", - "documentation":"

The name of the iSCSI target used by initiators to connect to the target and as a suffix for the target ARN. For example, specifying TargetName as myvolume results in the target ARN of arn:aws:storagegateway:us-east-1:111122223333:gateway/mygateway/target/iqn.1997-05.com.amazon:myvolume. The target name must be unique across all volumes of a gateway.

" - }, - "NetworkInterfaceId":{ - "shape":"NetworkInterfaceId", - "documentation":"

The network interface of the gateway on which to expose the iSCSI target. Only IPv4 addresses are accepted. Use DescribeGatewayInformation to get a list of the network interfaces available on a gateway.

Valid Values: A valid IP address.

" - } - }, - "documentation":"

A JSON object containing one or more of the following fields:

" - }, - "CreateStorediSCSIVolumeOutput":{ - "type":"structure", - "members":{ - "VolumeARN":{ - "shape":"VolumeARN", - "documentation":"

The Amazon Resource Name (ARN) of the configured volume.

" - }, - "VolumeSizeInBytes":{ - "shape":"long", - "documentation":"

The size of the volume in bytes.

" - }, - "TargetARN":{ - "shape":"TargetARN", - "documentation":"

he Amazon Resource Name (ARN) of the volume target that includes the iSCSI name that initiators can use to connect to the target.

" - } - }, - "documentation":"

A JSON object containing the following fields:

" - }, - "CreateTapesInput":{ - "type":"structure", - "required":[ - "GatewayARN", - "TapeSizeInBytes", - "ClientToken", - "NumTapesToCreate", - "TapeBarcodePrefix" - ], - "members":{ - "GatewayARN":{ - "shape":"GatewayARN", - "documentation":"

The unique Amazon Resource Name(ARN) that represents the gateway to associate the virtual tapes with. Use the ListGateways operation to return a list of gateways for your account and region.

" - }, - "TapeSizeInBytes":{ - "shape":"TapeSize", - "documentation":"

The size, in bytes, of the virtual tapes you want to create.

The size must be gigabyte (1024*1024*1024 byte) aligned." - }, - "ClientToken":{ - "shape":"ClientToken", - "documentation":"

A unique identifier that you use to retry a request. If you retry a request, use the same ClientToken you specified in the initial request.

Using the same ClientToken prevents creating the tape multiple times." - }, - "NumTapesToCreate":{ - "shape":"NumTapesToCreate", - "documentation":"

The number of virtual tapes you want to create.

" - }, - "TapeBarcodePrefix":{ - "shape":"TapeBarcodePrefix", - "documentation":"

A prefix you append to the barcode of the virtual tape you are creating. This makes a barcode unique.

The prefix must be 1 to 4 characters in length and must be upper-case letters A-Z." - } - }, - "documentation":"

CreateTapesInput

" - }, - "CreateTapesOutput":{ - "type":"structure", - "members":{ - "TapeARNs":{ - "shape":"TapeARNs", - "documentation":"

A list of unique Amazon Resource Named (ARN) the represents the virtual tapes that were created.

" - } - }, - "documentation":"

CreateTapeOutput

" - }, - "DayOfWeek":{ - "type":"integer", - "min":0, - "max":6 - }, - "DeleteBandwidthRateLimitInput":{ - "type":"structure", - "required":[ - "GatewayARN", - "BandwidthType" - ], - "members":{ - "GatewayARN":{"shape":"GatewayARN"}, - "BandwidthType":{"shape":"BandwidthType"} - } - }, - "DeleteBandwidthRateLimitOutput":{ - "type":"structure", - "members":{ - "GatewayARN":{"shape":"GatewayARN"} - }, - "documentation":"

A JSON object containing the of the gateway whose bandwidth rate information was deleted.

" - }, - "DeleteChapCredentialsInput":{ - "type":"structure", - "required":[ - "TargetARN", - "InitiatorName" - ], - "members":{ - "TargetARN":{ - "shape":"TargetARN", - "documentation":"

The Amazon Resource Name (ARN) of the iSCSI volume target. Use the DescribeStorediSCSIVolumes operation to return to retrieve the TargetARN for specified VolumeARN.

" - }, - "InitiatorName":{ - "shape":"IqnName", - "documentation":"

The iSCSI initiator that connects to the target.

" - } - }, - "documentation":"

A JSON object containing one or more of the following fields:

" - }, - "DeleteChapCredentialsOutput":{ - "type":"structure", - "members":{ - "TargetARN":{ - "shape":"TargetARN", - "documentation":"

The Amazon Resource Name (ARN) of the target.

" - }, - "InitiatorName":{ - "shape":"IqnName", - "documentation":"

The iSCSI initiator that connects to the target.

" - } - }, - "documentation":"

A JSON object containing the following fields:

" - }, - "DeleteGatewayInput":{ - "type":"structure", - "required":["GatewayARN"], - "members":{ - "GatewayARN":{"shape":"GatewayARN"} - }, - "documentation":"

A JSON object containing the of the gateway to delete.

" - }, - "DeleteGatewayOutput":{ - "type":"structure", - "members":{ - "GatewayARN":{"shape":"GatewayARN"} - }, - "documentation":"

A JSON object containing the of the deleted gateway.

" - }, - "DeleteSnapshotScheduleInput":{ - "type":"structure", - "required":["VolumeARN"], - "members":{ - "VolumeARN":{"shape":"VolumeARN"} - } - }, - "DeleteSnapshotScheduleOutput":{ - "type":"structure", - "members":{ - "VolumeARN":{"shape":"VolumeARN"} - } - }, - "DeleteTapeArchiveInput":{ - "type":"structure", - "required":["TapeARN"], - "members":{ - "TapeARN":{ - "shape":"TapeARN", - "documentation":"

The Amazon Resource Name (ARN) of the virtual tape to delete from the virtual tape shelf (VTS).

" - } - }, - "documentation":"

DeleteTapeArchiveInput

" - }, - "DeleteTapeArchiveOutput":{ - "type":"structure", - "members":{ - "TapeARN":{ - "shape":"TapeARN", - "documentation":"

The Amazon Resource Name (ARN) of the virtual tape that was deleted from the virtual tape shelf (VTS).

" - } - }, - "documentation":"

DeleteTapeArchiveOutput

" - }, - "DeleteTapeInput":{ - "type":"structure", - "required":[ - "GatewayARN", - "TapeARN" - ], - "members":{ - "GatewayARN":{ - "shape":"GatewayARN", - "documentation":"

The unique Amazon Resource Name (ARN) of the gateway that the virtual tape to delete is associated with. Use the ListGateways operation to return a list of gateways for your account and region.

" - }, - "TapeARN":{ - "shape":"TapeARN", - "documentation":"

The Amazon Resource Name (ARN) of the virtual tape to delete.

" - } - }, - "documentation":"

DeleteTapeInput

" - }, - "DeleteTapeOutput":{ - "type":"structure", - "members":{ - "TapeARN":{ - "shape":"TapeARN", - "documentation":"

The Amazon Resource Name (ARN) of the deleted virtual tape.

" - } - }, - "documentation":"

DeleteTapeOutput

" - }, - "DeleteVolumeInput":{ - "type":"structure", - "required":["VolumeARN"], - "members":{ - "VolumeARN":{ - "shape":"VolumeARN", - "documentation":"

The Amazon Resource Name (ARN) of the volume. Use the ListVolumes operation to return a list of gateway volumes.

" - } - }, - "documentation":"

A JSON object containing the DeleteVolumeInput$VolumeARN to delete.

" - }, - "DeleteVolumeOutput":{ - "type":"structure", - "members":{ - "VolumeARN":{ - "shape":"VolumeARN", - "documentation":"

The Amazon Resource Name (ARN) of the storage volume that was deleted. It is the same ARN you provided in the request.

" - } - }, - "documentation":"

A JSON object containing the of the storage volume that was deleted

" - }, - "DescribeBandwidthRateLimitInput":{ - "type":"structure", - "required":["GatewayARN"], - "members":{ - "GatewayARN":{"shape":"GatewayARN"} - }, - "documentation":"

A JSON object containing the of the gateway.

" - }, - "DescribeBandwidthRateLimitOutput":{ - "type":"structure", - "members":{ - "GatewayARN":{"shape":"GatewayARN"}, - "AverageUploadRateLimitInBitsPerSec":{ - "shape":"BandwidthUploadRateLimit", - "documentation":"

The average upload bandwidth rate limit in bits per second. This field does not appear in the response if the upload rate limit is not set.

" - }, - "AverageDownloadRateLimitInBitsPerSec":{ - "shape":"BandwidthDownloadRateLimit", - "documentation":"

The average download bandwidth rate limit in bits per second. This field does not appear in the response if the download rate limit is not set.

" - } - }, - "documentation":"

A JSON object containing the following fields:

" - }, - "DescribeCacheInput":{ - "type":"structure", - "required":["GatewayARN"], - "members":{ - "GatewayARN":{"shape":"GatewayARN"} - } - }, - "DescribeCacheOutput":{ - "type":"structure", - "members":{ - "GatewayARN":{"shape":"GatewayARN"}, - "DiskIds":{"shape":"DiskIds"}, - "CacheAllocatedInBytes":{"shape":"long"}, - "CacheUsedPercentage":{"shape":"double"}, - "CacheDirtyPercentage":{"shape":"double"}, - "CacheHitPercentage":{"shape":"double"}, - "CacheMissPercentage":{"shape":"double"} - } - }, - "DescribeCachediSCSIVolumesInput":{ - "type":"structure", - "required":["VolumeARNs"], - "members":{ - "VolumeARNs":{"shape":"VolumeARNs"} - } - }, - "DescribeCachediSCSIVolumesOutput":{ - "type":"structure", - "members":{ - "CachediSCSIVolumes":{ - "shape":"CachediSCSIVolumes", - "documentation":"

An array of objects where each object contains metadata about one cached volume.

" - } - }, - "documentation":"

A JSON object containing the following fields:

" - }, - "DescribeChapCredentialsInput":{ - "type":"structure", - "required":["TargetARN"], - "members":{ - "TargetARN":{ - "shape":"TargetARN", - "documentation":"

The Amazon Resource Name (ARN) of the iSCSI volume target. Use the DescribeStorediSCSIVolumes operation to return to retrieve the TargetARN for specified VolumeARN.

" - } - }, - "documentation":"

A JSON object containing the Amazon Resource Name (ARN) of the iSCSI volume target.

" - }, - "DescribeChapCredentialsOutput":{ - "type":"structure", - "members":{ - "ChapCredentials":{ - "shape":"ChapCredentials", - "documentation":"

An array of ChapInfo objects that represent CHAP credentials. Each object in the array contains CHAP credential information for one target-initiator pair. If no CHAP credentials are set, an empty array is returned. CHAP credential information is provided in a JSON object with the following fields:

" - } - }, - "documentation":"

A JSON object containing a .

" - }, - "DescribeGatewayInformationInput":{ - "type":"structure", - "required":["GatewayARN"], - "members":{ - "GatewayARN":{"shape":"GatewayARN"} - }, - "documentation":"

A JSON object containing the of the gateway.

" - }, - "DescribeGatewayInformationOutput":{ - "type":"structure", - "members":{ - "GatewayARN":{"shape":"GatewayARN"}, - "GatewayId":{ - "shape":"GatewayId", - "documentation":"

The gateway ID.

" - }, - "GatewayTimezone":{ - "shape":"GatewayTimezone", - "documentation":"

One of the values that indicates the time zone configured for the gateway.

" - }, - "GatewayState":{ - "shape":"GatewayState", - "documentation":"

One of the values that indicates the operating state of the gateway.

" - }, - "GatewayNetworkInterfaces":{ - "shape":"GatewayNetworkInterfaces", - "documentation":"

A NetworkInterface array that contains descriptions of the gateway network interfaces.

" - }, - "GatewayType":{ - "shape":"GatewayType", - "documentation":"

TBD

" - }, - "NextUpdateAvailabilityDate":{ - "shape":"NextUpdateAvailabilityDate", - "documentation":"

The date at which an update to the gateway is available. This date is in the time zone of the gateway. If the gateway is not available for an update this field is not returned in the response.

" - } - }, - "documentation":"

A JSON object containing the following fields:

" - }, - "DescribeMaintenanceStartTimeInput":{ - "type":"structure", - "required":["GatewayARN"], - "members":{ - "GatewayARN":{"shape":"GatewayARN"} - }, - "documentation":"

A JSON object containing the of the gateway.

" - }, - "DescribeMaintenanceStartTimeOutput":{ - "type":"structure", - "members":{ - "GatewayARN":{"shape":"GatewayARN"}, - "HourOfDay":{"shape":"HourOfDay"}, - "MinuteOfHour":{"shape":"MinuteOfHour"}, - "DayOfWeek":{"shape":"DayOfWeek"}, - "Timezone":{"shape":"GatewayTimezone"} - } - }, - "DescribeSnapshotScheduleInput":{ - "type":"structure", - "required":["VolumeARN"], - "members":{ - "VolumeARN":{ - "shape":"VolumeARN", - "documentation":"

The Amazon Resource Name (ARN) of the volume. Use the ListVolumes operation to return a list of gateway volumes.

" - } - }, - "documentation":"

A JSON object containing the DescribeSnapshotScheduleInput$VolumeARN of the volume.

" - }, - "DescribeSnapshotScheduleOutput":{ - "type":"structure", - "members":{ - "VolumeARN":{"shape":"VolumeARN"}, - "StartAt":{"shape":"HourOfDay"}, - "RecurrenceInHours":{"shape":"RecurrenceInHours"}, - "Description":{"shape":"Description"}, - "Timezone":{"shape":"GatewayTimezone"} - } - }, - "DescribeStorediSCSIVolumesInput":{ - "type":"structure", - "required":["VolumeARNs"], - "members":{ - "VolumeARNs":{ - "shape":"VolumeARNs", - "documentation":"

An array of strings where each string represents the Amazon Resource Name (ARN) of a stored volume. All of the specified stored volumes must from the same gateway. Use ListVolumes to get volume ARNs for a gateway.

" - } - }, - "documentation":"

A JSON Object containing a list of DescribeStorediSCSIVolumesInput$VolumeARNs.

" - }, - "DescribeStorediSCSIVolumesOutput":{ - "type":"structure", - "members":{ - "StorediSCSIVolumes":{"shape":"StorediSCSIVolumes"} - } - }, - "DescribeTapeArchivesInput":{ - "type":"structure", - "members":{ - "TapeARNs":{ - "shape":"TapeARNs", - "documentation":"

Specifies one or more unique Amazon Resource Names (ARNs) that represent the virtual tapes you want to describe.

" - }, - "Marker":{ - "shape":"Marker", - "documentation":"

An opaque string that indicates the position at which to begin describing virtual tapes.

" - }, - "Limit":{ - "shape":"PositiveIntObject", - "documentation":"

Specifies that the number of virtual tapes descried be limited to the specified number.

" - } - }, - "documentation":"

DescribeTapeArchivesInput

" - }, - "DescribeTapeArchivesOutput":{ - "type":"structure", - "members":{ - "TapeArchives":{ - "shape":"TapeArchives", - "documentation":"

An array of virtual tape objects in the virtual tape shelf (VTS). The description includes of the Amazon Resource Name(ARN) of the virtual tapes. The information returned includes the Amazon Resource Names (ARNs) of the tapes, size of the tapes, status of the tapes, progress of the description and tape barcode.

" - }, - "Marker":{ - "shape":"Marker", - "documentation":"

An opaque string that indicates the position at which the virtual tapes that were fetched for description ended. Use this marker in your next request to fetch the next set of virtual tapes in the virtual tape shelf (VTS). If there are no more virtual tapes to describe, this field does not appear in the response.

" - } - }, - "documentation":"

DescribeTapeArchivesOutput

" - }, - "DescribeTapeRecoveryPointsInput":{ - "type":"structure", - "required":["GatewayARN"], - "members":{ - "GatewayARN":{"shape":"GatewayARN"}, - "Marker":{ - "shape":"Marker", - "documentation":"

An opaque string that indicates the position at which to begin describing the virtual tape recovery points.

" - }, - "Limit":{ - "shape":"PositiveIntObject", - "documentation":"

Specifies that the number of virtual tape recovery points that are described be limited to the specified number.

" - } - }, - "documentation":"

DescribeTapeRecoveryPointsInput

" - }, - "DescribeTapeRecoveryPointsOutput":{ - "type":"structure", - "members":{ - "GatewayARN":{"shape":"GatewayARN"}, - "TapeRecoveryPointInfos":{ - "shape":"TapeRecoveryPointInfos", - "documentation":"

An array of TapeRecoveryPointInfos that are available for the specified gateway.

" - }, - "Marker":{ - "shape":"Marker", - "documentation":"

An opaque string that indicates the position at which the virtual tape recovery points that were listed for description ended.

Use this marker in your next request to list the next set of virtual tape recovery points in the list. If there are no more recovery points to describe, this field does not appear in the response.

" - } - }, - "documentation":"

DescribeTapeRecoveryPointsOutput

" - }, - "DescribeTapesInput":{ - "type":"structure", - "required":["GatewayARN"], - "members":{ - "GatewayARN":{"shape":"GatewayARN"}, - "TapeARNs":{ - "shape":"TapeARNs", - "documentation":"

Specifies one or more unique Amazon Resource Names (ARNs) that represent the virtual tapes you want to describe. If this parameter is not specified, AWS Storage Gateway returns a description of all virtual tapes associated with the specified gateway.

" - }, - "Marker":{ - "shape":"Marker", - "documentation":"

A marker value, obtained in a previous call to DescribeTapes. This marker indicates which page of results to retrieve.

If not specified, the first page of results is retrieved.

" - }, - "Limit":{ - "shape":"PositiveIntObject", - "documentation":"

Specifies that the number of virtual tapes described be limited to the specified number.

Amazon Web Services may impose its own limit, if this field is not set." - } - }, - "documentation":"

DescribeTapesInput

" - }, - "DescribeTapesOutput":{ - "type":"structure", - "members":{ - "Tapes":{ - "shape":"Tapes", - "documentation":"

An array of virtual tape descriptions.

" - }, - "Marker":{ - "shape":"Marker", - "documentation":"

An opaque string which can be used as part of a subsequent DescribeTapes call to retrieve the next page of results.

If a response does not contain a marker, then there are no more results to be retrieved.

" - } - }, - "documentation":"

DescribeTapesOutput

" - }, - "DescribeUploadBufferInput":{ - "type":"structure", - "required":["GatewayARN"], - "members":{ - "GatewayARN":{"shape":"GatewayARN"} - } - }, - "DescribeUploadBufferOutput":{ - "type":"structure", - "members":{ - "GatewayARN":{"shape":"GatewayARN"}, - "DiskIds":{"shape":"DiskIds"}, - "UploadBufferUsedInBytes":{"shape":"long"}, - "UploadBufferAllocatedInBytes":{"shape":"long"} - } - }, - "DescribeVTLDevicesInput":{ - "type":"structure", - "required":["GatewayARN"], - "members":{ - "GatewayARN":{"shape":"GatewayARN"}, - "VTLDeviceARNs":{ - "shape":"VTLDeviceARNs", - "documentation":"

An array of strings, where each string represents the Amazon Resource Name (ARN) of a VTL device.

All of the specified VTL devices must be from the same gateway. If no VTL devices are specified, the result will contain all devices on the specified gateway." - }, - "Marker":{ - "shape":"Marker", - "documentation":"

An opaque string that indicates the position at which to begin describing the VTL devices.

" - }, - "Limit":{ - "shape":"PositiveIntObject", - "documentation":"

Specifies that the number of VTL devices described be limited to the specified number.

" - } - }, - "documentation":"

DescribeVTLDevicesInput

" - }, - "DescribeVTLDevicesOutput":{ - "type":"structure", - "members":{ - "GatewayARN":{"shape":"GatewayARN"}, - "VTLDevices":{ - "shape":"VTLDevices", - "documentation":"

An array of VTL device objects composed of the Amazon Resource Name(ARN) of the VTL devices.

" - }, - "Marker":{ - "shape":"Marker", - "documentation":"

An opaque string that indicates the position at which the VTL devices that were fetched for description ended. Use the marker in your next request to fetch the next set of VTL devices in the list. If there are no more VTL devices to describe, this field does not appear in the response.

" - } - }, - "documentation":"

DescribeVTLDevicesOutput

" - }, - "DescribeWorkingStorageInput":{ - "type":"structure", - "required":["GatewayARN"], - "members":{ - "GatewayARN":{"shape":"GatewayARN"} - }, - "documentation":"

A JSON object containing the of the gateway.

" - }, - "DescribeWorkingStorageOutput":{ - "type":"structure", - "members":{ - "GatewayARN":{"shape":"GatewayARN"}, - "DiskIds":{ - "shape":"DiskIds", - "documentation":"

An array of the gateway's local disk IDs that are configured as working storage. Each local disk ID is specified as a string (minimum length of 1 and maximum length of 300). If no local disks are configured as working storage, then the DiskIds array is empty.

" - }, - "WorkingStorageUsedInBytes":{ - "shape":"long", - "documentation":"

The total working storage in bytes in use by the gateway. If no working storage is configured for the gateway, this field returns 0.

" - }, - "WorkingStorageAllocatedInBytes":{ - "shape":"long", - "documentation":"

The total working storage in bytes allocated for the gateway. If no working storage is configured for the gateway, this field returns 0.

" - } - }, - "documentation":"

A JSON object containing the following fields:

" - }, - "Description":{ - "type":"string", - "min":1, - "max":255 - }, - "DeviceType":{ - "type":"string", - "min":2, - "max":50 - }, - "DeviceiSCSIAttributes":{ - "type":"structure", - "members":{ - "TargetARN":{ - "shape":"TargetARN", - "documentation":"

Specifies the unique Amazon Resource Name(ARN) that encodes the iSCSI qualified name(iqn) of a tape drive or media changer target.

" - }, - "NetworkInterfaceId":{ - "shape":"NetworkInterfaceId", - "documentation":"

The network interface identifier of the VTL device.

" - }, - "NetworkInterfacePort":{ - "shape":"integer", - "documentation":"

The port used to communicate with iSCSI VTL device targets.

" - }, - "ChapEnabled":{ - "shape":"boolean", - "documentation":"

Indicates whether mutual CHAP is enabled for the iSCSI target.

" - } - }, - "documentation":"

Lists iSCSI information about a VTL device.

" - }, - "DisableGatewayInput":{ - "type":"structure", - "required":["GatewayARN"], - "members":{ - "GatewayARN":{"shape":"GatewayARN"} - }, - "documentation":"

DisableGatewayInput

" - }, - "DisableGatewayOutput":{ - "type":"structure", - "members":{ - "GatewayARN":{ - "shape":"GatewayARN", - "documentation":"

The unique Amazon Resource Name of the disabled gateway.

" - } - }, - "documentation":"

DisableGatewayOutput

" - }, - "Disk":{ - "type":"structure", - "members":{ - "DiskId":{"shape":"DiskId"}, - "DiskPath":{"shape":"string"}, - "DiskNode":{"shape":"string"}, - "DiskStatus":{"shape":"string"}, - "DiskSizeInBytes":{"shape":"long"}, - "DiskAllocationType":{"shape":"DiskAllocationType"}, - "DiskAllocationResource":{"shape":"string"} - } - }, - "DiskAllocationType":{ - "type":"string", - "min":3, - "max":100 - }, - "DiskId":{ - "type":"string", - "min":1, - "max":300 - }, - "DiskIds":{ - "type":"list", - "member":{"shape":"DiskId"} - }, - "Disks":{ - "type":"list", - "member":{"shape":"Disk"} - }, - "DoubleObject":{"type":"double"}, - "ErrorCode":{ - "type":"string", - "enum":[ - "ActivationKeyExpired", - "ActivationKeyInvalid", - "ActivationKeyNotFound", - "GatewayInternalError", - "GatewayNotConnected", - "GatewayNotFound", - "GatewayProxyNetworkConnectionBusy", - "AuthenticationFailure", - "BandwidthThrottleScheduleNotFound", - "Blocked", - "CannotExportSnapshot", - "ChapCredentialNotFound", - "DiskAlreadyAllocated", - "DiskDoesNotExist", - "DiskSizeGreaterThanVolumeMaxSize", - "DiskSizeLessThanVolumeSize", - "DiskSizeNotGigAligned", - "DuplicateCertificateInfo", - "DuplicateSchedule", - "EndpointNotFound", - "IAMNotSupported", - "InitiatorInvalid", - "InitiatorNotFound", - "InternalError", - "InvalidGateway", - "InvalidEndpoint", - "InvalidParameters", - "InvalidSchedule", - "LocalStorageLimitExceeded", - "LunAlreadyAllocated ", - "LunInvalid", - "MaximumContentLengthExceeded", - "MaximumTapeCartridgeCountExceeded", - "MaximumVolumeCountExceeded", - "NetworkConfigurationChanged", - "NoDisksAvailable", - "NotImplemented", - "NotSupported", - "OperationAborted", - "OutdatedGateway", - "ParametersNotImplemented", - "RegionInvalid", - "RequestTimeout", - "ServiceUnavailable", - "SnapshotDeleted", - "SnapshotIdInvalid", - "SnapshotInProgress", - "SnapshotNotFound", - "SnapshotScheduleNotFound", - "StagingAreaFull", - "StorageFailure", - "TapeCartridgeNotFound", - "TargetAlreadyExists", - "TargetInvalid", - "TargetNotFound", - "UnauthorizedOperation", - "VolumeAlreadyExists", - "VolumeIdInvalid", - "VolumeInUse", - "VolumeNotFound", - "VolumeNotReady" - ] - }, - "GatewayARN":{ - "type":"string", - "min":50, - "max":500, - "documentation":"

The Amazon Resource Name (ARN) of the gateway. Use the ListGateways operation to return a list of gateways for your account and region.

" - }, - "GatewayId":{ - "type":"string", - "min":12, - "max":30 - }, - "GatewayInfo":{ - "type":"structure", - "members":{ - "GatewayARN":{"shape":"GatewayARN"}, - "GatewayType":{"shape":"GatewayType"}, - "GatewayOperationalState":{"shape":"GatewayOperationalState"} - } - }, - "GatewayName":{ - "type":"string", - "min":2, - "max":255, - "pattern":"^[ -\\.0-\\[\\]-~]*[!-\\.0-\\[\\]-~][ -\\.0-\\[\\]-~]*$", - "documentation":"

A unique identifier for your gateway. This name becomes part of the gateway Amazon Resources Name (ARN) which is what you use as an input to other operations.

" - }, - "GatewayNetworkInterfaces":{ - "type":"list", - "member":{"shape":"NetworkInterface"} - }, - "GatewayOperationalState":{ - "type":"string", - "min":2, - "max":25 - }, - "GatewayState":{ - "type":"string", - "min":2, - "max":25 - }, - "GatewayTimezone":{ - "type":"string", - "min":3, - "max":10 - }, - "GatewayType":{ - "type":"string", - "min":2, - "max":20 - }, - "Gateways":{ - "type":"list", - "member":{"shape":"GatewayInfo"} - }, - "HourOfDay":{ - "type":"integer", - "min":0, - "max":23 - }, - "InternalServerError":{ - "type":"structure", - "members":{ - "message":{ - "shape":"string", - "documentation":"

A human-readable message describing the error that occurred.

" - }, - "error":{ - "shape":"StorageGatewayError", - "documentation":"

A StorageGatewayError that provides more detail about the cause of the error.

" - } - }, - "error":{"httpStatusCode":500}, - "exception":true, - "documentation":"

An internal server error has occurred during the request. See the error and message fields for more information.

" - }, - "InvalidGatewayRequestException":{ - "type":"structure", - "members":{ - "message":{ - "shape":"string", - "documentation":"

A human-readable message describing the error that occurred.

" - }, - "error":{ - "shape":"StorageGatewayError", - "documentation":"

A StorageGatewayError that provides more detail about the cause of the error.

" - } - }, - "error":{"httpStatusCode":400}, - "exception":true, - "documentation":"

An exception occurred because an invalid gateway request was issued to the service. See the error and message fields for more information.

" - }, - "IqnName":{ - "type":"string", - "min":1, - "max":255, - "pattern":"[0-9a-z:.-]+" - }, - "ListGatewaysInput":{ - "type":"structure", - "members":{ - "Marker":{ - "shape":"Marker", - "documentation":"

An opaque string that indicates the position at which to begin the returned list of gateways.

" - }, - "Limit":{ - "shape":"PositiveIntObject", - "documentation":"

Specifies that the list of gateways returned be limited to the specified number of items.

" - } - }, - "documentation":"

A JSON object containing zero or more of the following fields:

" - }, - "ListGatewaysOutput":{ - "type":"structure", - "members":{ - "Gateways":{"shape":"Gateways"}, - "Marker":{"shape":"Marker"} - } - }, - "ListLocalDisksInput":{ - "type":"structure", - "required":["GatewayARN"], - "members":{ - "GatewayARN":{"shape":"GatewayARN"} - }, - "documentation":"

A JSON object containing the of the gateway.

" - }, - "ListLocalDisksOutput":{ - "type":"structure", - "members":{ - "GatewayARN":{"shape":"GatewayARN"}, - "Disks":{"shape":"Disks"} - } - }, - "ListVolumeRecoveryPointsInput":{ - "type":"structure", - "required":["GatewayARN"], - "members":{ - "GatewayARN":{"shape":"GatewayARN"} - } - }, - "ListVolumeRecoveryPointsOutput":{ - "type":"structure", - "members":{ - "GatewayARN":{"shape":"GatewayARN"}, - "VolumeRecoveryPointInfos":{"shape":"VolumeRecoveryPointInfos"} - } - }, - "ListVolumesInput":{ - "type":"structure", - "required":["GatewayARN"], - "members":{ - "GatewayARN":{"shape":"GatewayARN"}, - "Marker":{ - "shape":"Marker", - "documentation":"

A string that indicates the position at which to begin the returned list of volumes. Obtain the marker from the response of a previous List iSCSI Volumes request.

" - }, - "Limit":{ - "shape":"PositiveIntObject", - "documentation":"

Specifies that the list of volumes returned be limited to the specified number of items.

" - } - }, - "documentation":"

A JSON object that contains one or more of the following fields:

" - }, - "ListVolumesOutput":{ - "type":"structure", - "members":{ - "GatewayARN":{"shape":"GatewayARN"}, - "Marker":{"shape":"Marker"}, - "VolumeInfos":{"shape":"VolumeInfos"} - } - }, - "Marker":{ - "type":"string", - "min":1, - "max":1000 - }, - "MediumChangerType":{ - "type":"string", - "min":2, - "max":50 - }, - "MinuteOfHour":{ - "type":"integer", - "min":0, - "max":59 - }, - "NetworkInterface":{ - "type":"structure", - "members":{ - "Ipv4Address":{ - "shape":"string", - "documentation":"

The Internet Protocol version 4 (IPv4) address of the interface.

" - }, - "MacAddress":{ - "shape":"string", - "documentation":"

The Media Access Control (MAC) address of the interface.

This is currently unsupported and will not be returned in output." - }, - "Ipv6Address":{ - "shape":"string", - "documentation":"

The Internet Protocol version 6 (IPv6) address of the interface. Currently not supported.

" - } - }, - "documentation":"

Describes a gateway's network interface.

" - }, - "NetworkInterfaceId":{ - "type":"string", - "pattern":"\\A(25[0-5]|2[0-4]\\d|[0-1]?\\d?\\d)(\\.(25[0-5]|2[0-4]\\d|[0-1]?\\d?\\d)){3}\\z" - }, - "NextUpdateAvailabilityDate":{ - "type":"string", - "min":1, - "max":25 - }, - "NumTapesToCreate":{ - "type":"integer", - "min":1, - "max":10 - }, - "PositiveIntObject":{ - "type":"integer", - "min":1 - }, - "RecurrenceInHours":{ - "type":"integer", - "min":1, - "max":24 - }, - "RegionId":{ - "type":"string", - "min":1, - "max":25 - }, - "ResetCacheInput":{ - "type":"structure", - "required":["GatewayARN"], - "members":{ - "GatewayARN":{"shape":"GatewayARN"} - } - }, - "ResetCacheOutput":{ - "type":"structure", - "members":{ - "GatewayARN":{"shape":"GatewayARN"} - } - }, - "RetrieveTapeArchiveInput":{ - "type":"structure", - "required":[ - "TapeARN", - "GatewayARN" - ], - "members":{ - "TapeARN":{ - "shape":"TapeARN", - "documentation":"

The Amazon Resource Name (ARN) of the virtual tape you want to retrieve from the virtual tape shelf (VTS).

" - }, - "GatewayARN":{ - "shape":"GatewayARN", - "documentation":"

The Amazon Resource Name (ARN) of the gateway you want to retrieve the virtual tape to. Use the ListGateways operation to return a list of gateways for your account and region.

You retrieve archived virtual tapes to only one gateway and the gateway must be a gateway-VTL.

" - } - }, - "documentation":"

RetrieveTapeArchiveInput

" - }, - "RetrieveTapeArchiveOutput":{ - "type":"structure", - "members":{ - "TapeARN":{ - "shape":"TapeARN", - "documentation":"

The Amazon Resource Name (ARN) of the retrieved virtual tape.

" - } - }, - "documentation":"

RetrieveTapeArchiveOutput

" - }, - "RetrieveTapeRecoveryPointInput":{ - "type":"structure", - "required":[ - "TapeARN", - "GatewayARN" - ], - "members":{ - "TapeARN":{ - "shape":"TapeARN", - "documentation":"

The Amazon Resource Name (ARN) of the virtual tape for which you want to retrieve the recovery point.

" - }, - "GatewayARN":{"shape":"GatewayARN"} - }, - "documentation":"

RetrieveTapeRecoveryPointInput

" - }, - "RetrieveTapeRecoveryPointOutput":{ - "type":"structure", - "members":{ - "TapeARN":{ - "shape":"TapeARN", - "documentation":"

The Amazon Resource Name (ARN) of the virtual tape for which the recovery point was retrieved.

" - } - }, - "documentation":"

RetrieveTapeRecoveryPointOutput

" - }, - "ShutdownGatewayInput":{ - "type":"structure", - "required":["GatewayARN"], - "members":{ - "GatewayARN":{"shape":"GatewayARN"} - }, - "documentation":"

A JSON object containing the of the gateway to shut down.

" - }, - "ShutdownGatewayOutput":{ - "type":"structure", - "members":{ - "GatewayARN":{"shape":"GatewayARN"} - }, - "documentation":"

A JSON object containing the of the gateway that was shut down.

" - }, - "SnapshotDescription":{ - "type":"string", - "min":1, - "max":255 - }, - "SnapshotId":{ - "type":"string", - "pattern":"\\Asnap-[0-9a-fA-F]{8}\\z" - }, - "StartGatewayInput":{ - "type":"structure", - "required":["GatewayARN"], - "members":{ - "GatewayARN":{"shape":"GatewayARN"} - }, - "documentation":"

A JSON object containing the of the gateway to start.

" - }, - "StartGatewayOutput":{ - "type":"structure", - "members":{ - "GatewayARN":{"shape":"GatewayARN"} - }, - "documentation":"

A JSON object containing the of the gateway that was restarted.

" - }, - "StorageGatewayError":{ - "type":"structure", - "members":{ - "errorCode":{ - "shape":"ErrorCode", - "documentation":"

Additional information about the error.

" - }, - "errorDetails":{ - "shape":"errorDetails", - "documentation":"

Human-readable text that provides detail about the error that occurred.

" - } - }, - "documentation":"

Provides additional information about an error that was returned by the service as an or. See the errorCode and errorDetails members for more information about the error.

" - }, - "StorediSCSIVolume":{ - "type":"structure", - "members":{ - "VolumeARN":{"shape":"VolumeARN"}, - "VolumeId":{"shape":"VolumeId"}, - "VolumeType":{"shape":"VolumeType"}, - "VolumeStatus":{"shape":"VolumeStatus"}, - "VolumeSizeInBytes":{"shape":"long"}, - "VolumeProgress":{"shape":"DoubleObject"}, - "VolumeDiskId":{"shape":"DiskId"}, - "SourceSnapshotId":{"shape":"SnapshotId"}, - "PreservedExistingData":{"shape":"boolean"}, - "VolumeiSCSIAttributes":{"shape":"VolumeiSCSIAttributes"} - } - }, - "StorediSCSIVolumes":{ - "type":"list", - "member":{"shape":"StorediSCSIVolume"} - }, - "Tape":{ - "type":"structure", - "members":{ - "TapeARN":{ - "shape":"TapeARN", - "documentation":"

The Amazon Resource Name (ARN) of the virtual tape.

" - }, - "TapeBarcode":{ - "shape":"TapeBarcode", - "documentation":"

The barcode that identifies a specific virtual tape.

" - }, - "TapeSizeInBytes":{ - "shape":"TapeSize", - "documentation":"

The size, in bytes, of the virtual tape.

" - }, - "TapeStatus":{ - "shape":"TapeStatus", - "documentation":"

The current state of the virtual tape.

" - }, - "VTLDevice":{ - "shape":"VTLDeviceARN", - "documentation":"

The virtual tape library (VTL) device that the virtual tape is associated with.

" - }, - "Progress":{ - "shape":"DoubleObject", - "documentation":"

For archiving virtual tapes, indicates how much data remains to be uploaded before archiving is complete.

Range: 0 (not started) to 100 (complete).

" - } - }, - "documentation":"

Describes a virtual tape object.

" - }, - "TapeARN":{ - "type":"string", - "min":50, - "max":500 - }, - "TapeARNs":{ - "type":"list", - "member":{"shape":"TapeARN"} - }, - "TapeArchive":{ - "type":"structure", - "members":{ - "TapeARN":{ - "shape":"TapeARN", - "documentation":"

The Amazon Resource Name (ARN) of an archived virtual tape.

" - }, - "TapeBarcode":{ - "shape":"TapeBarcode", - "documentation":"

The barcode that identifies the archived virtual tape.

" - }, - "TapeSizeInBytes":{ - "shape":"TapeSize", - "documentation":"

The size, in bytes, of the archived virtual tape.

" - }, - "CompletionTime":{ - "shape":"Time", - "documentation":"

The time that the archiving of the virtual tape was completed.

The string format of the completion time is in the ISO8601 extended YYYY-MM-DD'T'HH:MM:SS'Z' format.

" - }, - "RetrievedTo":{ - "shape":"GatewayARN", - "documentation":"

The Amazon Resource Name (ARN) of the gateway-VTL that the virtual tape is being retrieved to.

The virtual tape is retrieved from the virtual tape shelf (VTS).

" - }, - "TapeStatus":{ - "shape":"TapeArchiveStatus", - "documentation":"

The current state of the archived virtual tape.

" - } - }, - "documentation":"

Represents a virtual tape that is archived in the virtual tape shelf (VTS).

" - }, - "TapeArchiveStatus":{"type":"string"}, - "TapeArchives":{ - "type":"list", - "member":{"shape":"TapeArchive"} - }, - "TapeBarcode":{ - "type":"string", - "min":8, - "max":16, - "pattern":"^[A-Z0-9]*$" - }, - "TapeBarcodePrefix":{ - "type":"string", - "min":1, - "max":4, - "pattern":"^[A-Z]*$" - }, - "TapeDriveType":{ - "type":"string", - "min":2, - "max":50 - }, - "TapeRecoveryPointInfo":{ - "type":"structure", - "members":{ - "TapeARN":{ - "shape":"TapeARN", - "documentation":"

The Amazon Resource Name (ARN) of the virtual tape.

" - }, - "TapeRecoveryPointTime":{ - "shape":"Time", - "documentation":"

The time when the point-in-time view of the virtual tape was replicated for later recovery.

The string format of the tape recovery point time is in the ISO8601 extended YYYY-MM-DD'T'HH:MM:SS'Z' format.

" - }, - "TapeSizeInBytes":{ - "shape":"TapeSize", - "documentation":"

The size, in bytes, of the virtual tapes to recover.

" - }, - "TapeStatus":{"shape":"TapeRecoveryPointStatus"} - }, - "documentation":"

Describes a recovery point.

" - }, - "TapeRecoveryPointInfos":{ - "type":"list", - "member":{"shape":"TapeRecoveryPointInfo"} - }, - "TapeRecoveryPointStatus":{"type":"string"}, - "TapeSize":{"type":"long"}, - "TapeStatus":{"type":"string"}, - "Tapes":{ - "type":"list", - "member":{"shape":"Tape"} - }, - "TargetARN":{ - "type":"string", - "min":50, - "max":800 - }, - "TargetName":{ - "type":"string", - "min":1, - "max":200, - "pattern":"^[-\\.;a-z0-9]+$" - }, - "Time":{"type":"timestamp"}, - "UpdateBandwidthRateLimitInput":{ - "type":"structure", - "required":["GatewayARN"], - "members":{ - "GatewayARN":{"shape":"GatewayARN"}, - "AverageUploadRateLimitInBitsPerSec":{ - "shape":"BandwidthUploadRateLimit", - "documentation":"

The average upload bandwidth rate limit in bits per second.

" - }, - "AverageDownloadRateLimitInBitsPerSec":{ - "shape":"BandwidthDownloadRateLimit", - "documentation":"

The average download bandwidth rate limit in bits per second.

" - } - }, - "documentation":"

A JSON object containing one or more of the following fields:

" - }, - "UpdateBandwidthRateLimitOutput":{ - "type":"structure", - "members":{ - "GatewayARN":{"shape":"GatewayARN"} - }, - "documentation":"

A JSON object containing the of the gateway whose throttle information was updated.

" - }, - "UpdateChapCredentialsInput":{ - "type":"structure", - "required":[ - "TargetARN", - "SecretToAuthenticateInitiator", - "InitiatorName" - ], - "members":{ - "TargetARN":{ - "shape":"TargetARN", - "documentation":"

The Amazon Resource Name (ARN) of the iSCSI volume target. Use the DescribeStorediSCSIVolumes operation to return to retrieve the TargetARN for specified VolumeARN.

" - }, - "SecretToAuthenticateInitiator":{ - "shape":"ChapSecret", - "documentation":"

The secret key that the initiator (e.g. Windows client) must provide to participate in mutual CHAP with the target.

" - }, - "InitiatorName":{ - "shape":"IqnName", - "documentation":"

The iSCSI initiator that connects to the target.

" - }, - "SecretToAuthenticateTarget":{ - "shape":"ChapSecret", - "documentation":"

The secret key that the target must provide to participate in mutual CHAP with the initiator (e.g. Windows client).

" - } - }, - "documentation":"

A JSON object containing one or more of the following fields:

" - }, - "UpdateChapCredentialsOutput":{ - "type":"structure", - "members":{ - "TargetARN":{ - "shape":"TargetARN", - "documentation":"

The Amazon Resource Name (ARN) of the target. This is the same target specified in the request.

" - }, - "InitiatorName":{ - "shape":"IqnName", - "documentation":"

The iSCSI initiator that connects to the target. This is the same initiator name specified in the request.

" - } - }, - "documentation":"

A JSON object containing the following fields:

" - }, - "UpdateGatewayInformationInput":{ - "type":"structure", - "required":["GatewayARN"], - "members":{ - "GatewayARN":{"shape":"GatewayARN"}, - "GatewayName":{"shape":"GatewayName"}, - "GatewayTimezone":{"shape":"GatewayTimezone"} - } - }, - "UpdateGatewayInformationOutput":{ - "type":"structure", - "members":{ - "GatewayARN":{"shape":"GatewayARN"} - }, - "documentation":"

A JSON object containing the of the gateway that was updated.

" - }, - "UpdateGatewaySoftwareNowInput":{ - "type":"structure", - "required":["GatewayARN"], - "members":{ - "GatewayARN":{"shape":"GatewayARN"} - }, - "documentation":"

A JSON object containing the of the gateway to update.

" - }, - "UpdateGatewaySoftwareNowOutput":{ - "type":"structure", - "members":{ - "GatewayARN":{"shape":"GatewayARN"} - }, - "documentation":"

A JSON object containing the of the gateway that was updated.

" - }, - "UpdateMaintenanceStartTimeInput":{ - "type":"structure", - "required":[ - "GatewayARN", - "HourOfDay", - "MinuteOfHour", - "DayOfWeek" - ], - "members":{ - "GatewayARN":{"shape":"GatewayARN"}, - "HourOfDay":{ - "shape":"HourOfDay", - "documentation":"

The hour component of the maintenance start time represented as hh, where hh is the hour (00 to 23). The hour of the day is in the time zone of the gateway.

" - }, - "MinuteOfHour":{ - "shape":"MinuteOfHour", - "documentation":"

The minute component of the maintenance start time represented as mm, where mm is the minute (00 to 59). The minute of the hour is in the time zone of the gateway.

" - }, - "DayOfWeek":{ - "shape":"DayOfWeek", - "documentation":"

The maintenance start time day of the week.

" - } - }, - "documentation":"

A JSON object containing the following fields:

" - }, - "UpdateMaintenanceStartTimeOutput":{ - "type":"structure", - "members":{ - "GatewayARN":{"shape":"GatewayARN"} - }, - "documentation":"

A JSON object containing the of the gateway whose maintenance start time is updated.

" - }, - "UpdateSnapshotScheduleInput":{ - "type":"structure", - "required":[ - "VolumeARN", - "StartAt", - "RecurrenceInHours" - ], - "members":{ - "VolumeARN":{ - "shape":"VolumeARN", - "documentation":"

The Amazon Resource Name (ARN) of the volume. Use the ListVolumes operation to return a list of gateway volumes.

" - }, - "StartAt":{ - "shape":"HourOfDay", - "documentation":"

The hour of the day at which the snapshot schedule begins represented as hh, where hh is the hour (0 to 23). The hour of the day is in the time zone of the gateway.

" - }, - "RecurrenceInHours":{ - "shape":"RecurrenceInHours", - "documentation":"

Frequency of snapshots. Specify the number of hours between snapshots.

" - }, - "Description":{ - "shape":"Description", - "documentation":"

Optional description of the snapshot that overwrites the existing description.

" - } - }, - "documentation":"

A JSON object containing one or more of the following fields:

" - }, - "UpdateSnapshotScheduleOutput":{ - "type":"structure", - "members":{ - "VolumeARN":{"shape":"VolumeARN"} - }, - "documentation":"

A JSON object containing the of the updated storage volume.

" - }, - "UpdateVTLDeviceTypeInput":{ - "type":"structure", - "required":[ - "VTLDeviceARN", - "DeviceType" - ], - "members":{ - "VTLDeviceARN":{ - "shape":"VTLDeviceARN", - "documentation":"

The Amazon Resource Name (ARN) of the medium changer you want to select.

" - }, - "DeviceType":{ - "shape":"DeviceType", - "documentation":"

The type of medium changer you want to select.

Valid Values: \"STK-L700\", \"AWS-Gateway-VTL\"

" - } - }, - "documentation":"

UpdateVTLDeviceTypeInput

" - }, - "UpdateVTLDeviceTypeOutput":{ - "type":"structure", - "members":{ - "VTLDeviceARN":{ - "shape":"VTLDeviceARN", - "documentation":"

The Amazon Resource Name (ARN) of the medium changer you have selected.

" - } - }, - "documentation":"

UpdateVTLDeviceTypeOutput

" - }, - "VTLDevice":{ - "type":"structure", - "members":{ - "VTLDeviceARN":{ - "shape":"VTLDeviceARN", - "documentation":"

Specifies the unique Amazon Resource Name (ARN) of the device (tape drive or media changer).

" - }, - "VTLDeviceType":{"shape":"VTLDeviceType"}, - "VTLDeviceVendor":{"shape":"VTLDeviceVendor"}, - "VTLDeviceProductIdentifier":{"shape":"VTLDeviceProductIdentifier"}, - "DeviceiSCSIAttributes":{ - "shape":"DeviceiSCSIAttributes", - "documentation":"

A list of iSCSI information about a VTL device.

" - } - }, - "documentation":"

Represents a device object associated with a gateway-VTL.

" - }, - "VTLDeviceARN":{ - "type":"string", - "min":50, - "max":500 - }, - "VTLDeviceARNs":{ - "type":"list", - "member":{"shape":"VTLDeviceARN"} - }, - "VTLDeviceProductIdentifier":{"type":"string"}, - "VTLDeviceType":{"type":"string"}, - "VTLDeviceVendor":{"type":"string"}, - "VTLDevices":{ - "type":"list", - "member":{"shape":"VTLDevice"} - }, - "VolumeARN":{ - "type":"string", - "min":50, - "max":500 - }, - "VolumeARNs":{ - "type":"list", - "member":{"shape":"VolumeARN"} - }, - "VolumeId":{ - "type":"string", - "min":12, - "max":30 - }, - "VolumeInfo":{ - "type":"structure", - "members":{ - "VolumeARN":{"shape":"VolumeARN"}, - "VolumeType":{"shape":"VolumeType"} - } - }, - "VolumeInfos":{ - "type":"list", - "member":{"shape":"VolumeInfo"} - }, - "VolumeRecoveryPointInfo":{ - "type":"structure", - "members":{ - "VolumeARN":{"shape":"VolumeARN"}, - "VolumeSizeInBytes":{"shape":"long"}, - "VolumeUsageInBytes":{"shape":"long"}, - "VolumeRecoveryPointTime":{"shape":"string"} - } - }, - "VolumeRecoveryPointInfos":{ - "type":"list", - "member":{"shape":"VolumeRecoveryPointInfo"} - }, - "VolumeStatus":{ - "type":"string", - "min":3, - "max":50 - }, - "VolumeType":{ - "type":"string", - "min":3, - "max":100 - }, - "VolumeiSCSIAttributes":{ - "type":"structure", - "members":{ - "TargetARN":{ - "shape":"TargetARN", - "documentation":"

The Amazon Resource Name (ARN) of the volume target.

" - }, - "NetworkInterfaceId":{ - "shape":"NetworkInterfaceId", - "documentation":"

The network interface identifier.

" - }, - "NetworkInterfacePort":{ - "shape":"integer", - "documentation":"

The port used to communicate with iSCSI targets.

" - }, - "LunNumber":{ - "shape":"PositiveIntObject", - "documentation":"

The logical disk number.

" - }, - "ChapEnabled":{ - "shape":"boolean", - "documentation":"

Indicates whether mutual CHAP is enabled for the iSCSI target.

" - } - }, - "documentation":"

Lists iSCSI information about a volume.

" - }, - "boolean":{"type":"boolean"}, - "double":{"type":"double"}, - "errorDetails":{ - "type":"map", - "key":{"shape":"string"}, - "value":{"shape":"string"} - }, - "integer":{"type":"integer"}, - "long":{"type":"long"}, - "string":{"type":"string"} - } -} diff --git a/src/github.com/getlantern/aws-sdk-go/apis/storagegateway/2013-06-30.paginators.json b/src/github.com/getlantern/aws-sdk-go/apis/storagegateway/2013-06-30.paginators.json deleted file mode 100644 index b5e10c0589..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/apis/storagegateway/2013-06-30.paginators.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "pagination": { - "DescribeTapeArchives": { - "input_token": "Marker", - "limit_key": "Limit", - "output_token": "Marker", - "result_key": "TapeArchives" - }, - "DescribeTapeRecoveryPoints": { - "input_token": "Marker", - "limit_key": "Limit", - "output_token": "Marker", - "result_key": "TapeRecoveryPointInfos" - }, - "DescribeTapes": { - "input_token": "Marker", - "limit_key": "Limit", - "output_token": "Marker", - "result_key": "Tapes" - }, - "DescribeVTLDevices": { - "input_token": "Marker", - "limit_key": "Limit", - "output_token": "Marker", - "result_key": "VTLDevices" - }, - "ListGateways": { - "input_token": "Marker", - "limit_key": "Limit", - "output_token": "Marker", - "result_key": "Gateways" - }, - "ListVolumes": { - "input_token": "Marker", - "limit_key": "Limit", - "output_token": "Marker", - "result_key": "VolumeInfos" - } - } -} diff --git a/src/github.com/getlantern/aws-sdk-go/apis/sts/2011-06-15.normal.json b/src/github.com/getlantern/aws-sdk-go/apis/sts/2011-06-15.normal.json deleted file mode 100644 index 5fad703318..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/apis/sts/2011-06-15.normal.json +++ /dev/null @@ -1,801 +0,0 @@ -{ - "metadata":{ - "apiVersion":"2011-06-15", - "endpointPrefix":"sts", - "globalEndpoint":"sts.amazonaws.com", - "serviceAbbreviation":"AWS STS", - "serviceFullName":"AWS Security Token Service", - "signatureVersion":"v4", - "xmlNamespace":"https://sts.amazonaws.com/doc/2011-06-15/", - "protocol":"query" - }, - "documentation":"AWS Security Token Service

The AWS Security Token Service (STS) is a web service that enables you to request temporary, limited-privilege credentials for AWS Identity and Access Management (IAM) users or for users that you authenticate (federated users). This guide provides descriptions of the STS API. For more detailed information about using this service, go to Using Temporary Security Credentials.

For information about setting up signatures and authorization through the API, go to Signing AWS API Requests in the AWS General Reference. For general information about the Query API, go to Making Query Requests in Using IAM. For information about using security tokens with other AWS products, go to Using Temporary Security Credentials to Access AWS in Using Temporary Security Credentials.

If you're new to AWS and need additional technical information about a specific AWS product, you can find the product's technical documentation at http://aws.amazon.com/documentation/.

Endpoints

For information about STS endpoints, see Regions and Endpoints in the AWS General Reference.

Recording API requests

STS supports AWS CloudTrail, which is a service that records AWS calls for your AWS account and delivers log files to an Amazon S3 bucket. By using information collected by CloudTrail, you can determine what requests were successfully made to STS, who made the request, when it was made, and so on. To learn more about CloudTrail, including how to turn it on and find your log files, see the AWS CloudTrail User Guide.

", - "operations":{ - "AssumeRole":{ - "name":"AssumeRole", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"AssumeRoleRequest"}, - "output":{ - "shape":"AssumeRoleResponse", - "documentation":"

Contains the result of a successful call to the AssumeRole action, including temporary AWS credentials that can be used to make AWS requests.

", - "resultWrapper":"AssumeRoleResult" - }, - "errors":[ - { - "shape":"MalformedPolicyDocumentException", - "error":{ - "code":"MalformedPolicyDocument", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because the policy document was malformed. The error message describes the specific error.

" - }, - { - "shape":"PackedPolicyTooLargeException", - "error":{ - "code":"PackedPolicyTooLarge", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because the policy document was too large. The error message describes how big the policy document is, in packed form, as a percentage of what the API allows.

" - } - ], - "documentation":"

Returns a set of temporary security credentials (consisting of an access key ID, a secret access key, and a security token) that you can use to access AWS resources that you might not normally have access to. Typically, you use AssumeRole for cross-account access or federation.

Important: You cannot call AssumeRole by using AWS account credentials; access will be denied. You must use IAM user credentials or temporary security credentials to call AssumeRole.

For cross-account access, imagine that you own multiple accounts and need to access resources in each account. You could create long-term credentials in each account to access those resources. However, managing all those credentials and remembering which one can access which account can be time consuming. Instead, you can create one set of long-term credentials in one account and then use temporary security credentials to access all the other accounts by assuming roles in those accounts. For more information about roles, see Roles in Using IAM.

For federation, you can, for example, grant single sign-on access to the AWS Management Console. If you already have an identity and authentication system in your corporate network, you don't have to recreate user identities in AWS in order to grant those user identities access to AWS. Instead, after a user has been authenticated, you call AssumeRole (and specify the role with the appropriate permissions) to get temporary security credentials for that user. With those temporary security credentials, you construct a sign-in URL that users can use to access the console. For more information, see Scenarios for Granting Temporary Access in Using Temporary Security Credentials.

The temporary security credentials are valid for the duration that you specified when calling AssumeRole, which can be from 900 seconds (15 minutes) to 3600 seconds (1 hour). The default is 1 hour.

Optionally, you can pass an IAM access policy to this operation. If you choose not to pass a policy, the temporary security credentials that are returned by the operation have the permissions that are defined in the access policy of the role that is being assumed. If you pass a policy to this operation, the temporary security credentials that are returned by the operation have the permissions that are allowed by both the access policy of the role that is being assumed, and the policy that you pass. This gives you a way to further restrict the permissions for the resulting temporary security credentials. You cannot use the passed policy to grant permissions that are in excess of those allowed by the access policy of the role that is being assumed. For more information, see Permissions for AssumeRole in Using Temporary Security Credentials.

To assume a role, your AWS account must be trusted by the role. The trust relationship is defined in the role's trust policy when the role is created. You must also have a policy that allows you to call sts:AssumeRole.

Using MFA with AssumeRole

You can optionally include multi-factor authentication (MFA) information when you call AssumeRole. This is useful for cross-account scenarios in which you want to make sure that the user who is assuming the role has been authenticated using an AWS MFA device. In that scenario, the trust policy of the role being assumed includes a condition that tests for MFA authentication; if the caller does not include valid MFA information, the request to assume the role is denied. The condition in a trust policy that tests for MFA authentication might look like the following example.

\"Condition\": {\"Null\": {\"aws:MultiFactorAuthAge\": false}}

For more information, see Configuring MFA-Protected API Access in the Using IAM guide.

To use MFA with AssumeRole, you pass values for the SerialNumber and TokenCode parameters. The SerialNumber value identifies the user's hardware or virtual MFA device. The TokenCode is the time-based one-time password (TOTP) that the MFA devices produces.

" - }, - "AssumeRoleWithSAML":{ - "name":"AssumeRoleWithSAML", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"AssumeRoleWithSAMLRequest"}, - "output":{ - "shape":"AssumeRoleWithSAMLResponse", - "documentation":"

Contains the result of a successful call to the AssumeRoleWithSAML action, including temporary AWS credentials that can be used to make AWS requests.

", - "resultWrapper":"AssumeRoleWithSAMLResult" - }, - "errors":[ - { - "shape":"MalformedPolicyDocumentException", - "error":{ - "code":"MalformedPolicyDocument", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because the policy document was malformed. The error message describes the specific error.

" - }, - { - "shape":"PackedPolicyTooLargeException", - "error":{ - "code":"PackedPolicyTooLarge", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because the policy document was too large. The error message describes how big the policy document is, in packed form, as a percentage of what the API allows.

" - }, - { - "shape":"IDPRejectedClaimException", - "error":{ - "code":"IDPRejectedClaim", - "httpStatusCode":403, - "senderFault":true - }, - "exception":true, - "documentation":"

The identity provider (IdP) reported that authentication failed. This might be because the claim is invalid.

If this error is returned for the AssumeRoleWithWebIdentity operation, it can also mean that the claim has expired or has been explicitly revoked.

" - }, - { - "shape":"InvalidIdentityTokenException", - "error":{ - "code":"InvalidIdentityToken", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The web identity token that was passed could not be validated by AWS. Get a new identity token from the identity provider and then retry the request.

" - }, - { - "shape":"ExpiredTokenException", - "error":{ - "code":"ExpiredTokenException", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The web identity token that was passed is expired or is not valid. Get a new identity token from the identity provider and then retry the request.

" - } - ], - "documentation":"

Returns a set of temporary security credentials for users who have been authenticated via a SAML authentication response. This operation provides a mechanism for tying an enterprise identity store or directory to role-based AWS access without user-specific credentials or configuration.

The temporary security credentials returned by this operation consist of an access key ID, a secret access key, and a security token. Applications can use these temporary security credentials to sign calls to AWS services. The credentials are valid for the duration that you specified when calling AssumeRoleWithSAML, which can be up to 3600 seconds (1 hour) or until the time specified in the SAML authentication response's NotOnOrAfter value, whichever is shorter.

Optionally, you can pass an IAM access policy to this operation. If you choose not to pass a policy, the temporary security credentials that are returned by the operation have the permissions that are defined in the access policy of the role that is being assumed. If you pass a policy to this operation, the temporary security credentials that are returned by the operation have the permissions that are allowed by both the access policy of the role that is being assumed, and the policy that you pass. This gives you a way to further restrict the permissions for the resulting temporary security credentials. You cannot use the passed policy to grant permissions that are in excess of those allowed by the access policy of the role that is being assumed. For more information, see Permissions for AssumeRoleWithSAML in Using Temporary Security Credentials.

Before your application can call AssumeRoleWithSAML, you must configure your SAML identity provider (IdP) to issue the claims required by AWS. Additionally, you must use AWS Identity and Access Management (IAM) to create a SAML provider entity in your AWS account that represents your identity provider, and create an IAM role that specifies this SAML provider in its trust policy.

Calling AssumeRoleWithSAML does not require the use of AWS security credentials. The identity of the caller is validated by using keys in the metadata document that is uploaded for the SAML provider entity for your identity provider.

For more information, see the following resources:

" - }, - "AssumeRoleWithWebIdentity":{ - "name":"AssumeRoleWithWebIdentity", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"AssumeRoleWithWebIdentityRequest"}, - "output":{ - "shape":"AssumeRoleWithWebIdentityResponse", - "documentation":"

Contains the result of a successful call to the AssumeRoleWithWebIdentity action, including temporary AWS credentials that can be used to make AWS requests.

", - "resultWrapper":"AssumeRoleWithWebIdentityResult" - }, - "errors":[ - { - "shape":"MalformedPolicyDocumentException", - "error":{ - "code":"MalformedPolicyDocument", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because the policy document was malformed. The error message describes the specific error.

" - }, - { - "shape":"PackedPolicyTooLargeException", - "error":{ - "code":"PackedPolicyTooLarge", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because the policy document was too large. The error message describes how big the policy document is, in packed form, as a percentage of what the API allows.

" - }, - { - "shape":"IDPRejectedClaimException", - "error":{ - "code":"IDPRejectedClaim", - "httpStatusCode":403, - "senderFault":true - }, - "exception":true, - "documentation":"

The identity provider (IdP) reported that authentication failed. This might be because the claim is invalid.

If this error is returned for the AssumeRoleWithWebIdentity operation, it can also mean that the claim has expired or has been explicitly revoked.

" - }, - { - "shape":"IDPCommunicationErrorException", - "error":{ - "code":"IDPCommunicationError", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request could not be fulfilled because the non-AWS identity provider (IDP) that was asked to verify the incoming identity token could not be reached. This is often a transient error caused by network conditions. Retry the request a limited number of times so that you don't exceed the request rate. If the error persists, the non-AWS identity provider might be down or not responding.

" - }, - { - "shape":"InvalidIdentityTokenException", - "error":{ - "code":"InvalidIdentityToken", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The web identity token that was passed could not be validated by AWS. Get a new identity token from the identity provider and then retry the request.

" - }, - { - "shape":"ExpiredTokenException", - "error":{ - "code":"ExpiredTokenException", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The web identity token that was passed is expired or is not valid. Get a new identity token from the identity provider and then retry the request.

" - } - ], - "documentation":"

Returns a set of temporary security credentials for users who have been authenticated in a mobile or web application with a web identity provider, such as Login with Amazon, Amazon Cognito, Facebook, or Google.

Calling AssumeRoleWithWebIdentity does not require the use of AWS security credentials. Therefore, you can distribute an application (for example, on mobile devices) that requests temporary security credentials without including long-term AWS credentials in the application, and without deploying server-based proxy services that use long-term AWS credentials. Instead, the identity of the caller is validated by using a token from the web identity provider.

The temporary security credentials returned by this API consist of an access key ID, a secret access key, and a security token. Applications can use these temporary security credentials to sign calls to AWS service APIs. The credentials are valid for the duration that you specified when calling AssumeRoleWithWebIdentity, which can be from 900 seconds (15 minutes) to 3600 seconds (1 hour). By default, the temporary security credentials are valid for 1 hour.

Optionally, you can pass an IAM access policy to this operation. If you choose not to pass a policy, the temporary security credentials that are returned by the operation have the permissions that are defined in the access policy of the role that is being assumed. If you pass a policy to this operation, the temporary security credentials that are returned by the operation have the permissions that are allowed by both the access policy of the role that is being assumed, and the policy that you pass. This gives you a way to further restrict the permissions for the resulting temporary security credentials. You cannot use the passed policy to grant permissions that are in excess of those allowed by the access policy of the role that is being assumed. For more information, see Permissions for AssumeRoleWithWebIdentity in Using Temporary Security Credentials.

Before your application can call AssumeRoleWithWebIdentity, you must have an identity token from a supported identity provider and create a role that the application can assume. The role that your application assumes must trust the identity provider that is associated with the identity token. In other words, the identity provider must be specified in the role's trust policy.

For more information about how to use web identity federation and the AssumeRoleWithWebIdentity, see the following resources:

" - }, - "DecodeAuthorizationMessage":{ - "name":"DecodeAuthorizationMessage", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DecodeAuthorizationMessageRequest"}, - "output":{ - "shape":"DecodeAuthorizationMessageResponse", - "documentation":"

A document that contains additional information about the authorization status of a request from an encoded message that is returned in response to an AWS request.

", - "resultWrapper":"DecodeAuthorizationMessageResult" - }, - "errors":[ - { - "shape":"InvalidAuthorizationMessageException", - "error":{ - "code":"InvalidAuthorizationMessageException", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The error returned if the message passed to DecodeAuthorizationMessage was invalid. This can happen if the token contains invalid characters, such as linebreaks.

" - } - ], - "documentation":"

Decodes additional information about the authorization status of a request from an encoded message returned in response to an AWS request.

For example, if a user is not authorized to perform an action that he or she has requested, the request returns a Client.UnauthorizedOperation response (an HTTP 403 response). Some AWS actions additionally return an encoded message that can provide details about this authorization failure.

The message is encoded because the details of the authorization status can constitute privileged information that the user who requested the action should not see. To decode an authorization status message, a user must be granted permissions via an IAM policy to request the DecodeAuthorizationMessage (sts:DecodeAuthorizationMessage) action.

The decoded message includes the following type of information:

" - }, - "GetFederationToken":{ - "name":"GetFederationToken", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"GetFederationTokenRequest"}, - "output":{ - "shape":"GetFederationTokenResponse", - "documentation":"

Contains the result of a successful call to the GetFederationToken action, including temporary AWS credentials that can be used to make AWS requests.

", - "resultWrapper":"GetFederationTokenResult" - }, - "errors":[ - { - "shape":"MalformedPolicyDocumentException", - "error":{ - "code":"MalformedPolicyDocument", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because the policy document was malformed. The error message describes the specific error.

" - }, - { - "shape":"PackedPolicyTooLargeException", - "error":{ - "code":"PackedPolicyTooLarge", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because the policy document was too large. The error message describes how big the policy document is, in packed form, as a percentage of what the API allows.

" - } - ], - "documentation":"

Returns a set of temporary security credentials (consisting of an access key ID, a secret access key, and a security token) for a federated user. A typical use is in a proxy application that gets temporary security credentials on behalf of distributed applications inside a corporate network. Because you must call the GetFederationToken action using the long-term security credentials of an IAM user, this call is appropriate in contexts where those credentials can be safely stored, usually in a server-based application.

Note: Do not use this call in mobile applications or client-based web applications that directly get temporary security credentials. For those types of applications, use AssumeRoleWithWebIdentity.

The GetFederationToken action must be called by using the long-term AWS security credentials of an IAM user. You can also call GetFederationToken using the security credentials of an AWS account (root), but this is not recommended. Instead, we recommend that you create an IAM user for the purpose of the proxy application and then attach a policy to the IAM user that limits federated users to only the actions and resources they need access to. For more information, see IAM Best Practices in Using IAM.

The temporary security credentials that are obtained by using the long-term credentials of an IAM user are valid for the specified duration, between 900 seconds (15 minutes) and 129600 seconds (36 hours). Temporary credentials that are obtained by using AWS account (root) credentials have a maximum duration of 3600 seconds (1 hour)

Permissions

The permissions for the temporary security credentials returned by GetFederationToken are determined by a combination of the following:

The passed policy is attached to the temporary security credentials that result from the GetFederationToken API call--that is, to the federated user. When the federated user makes an AWS request, AWS evaluates the policy attached to the federated user in combination with the policy or policies attached to the IAM user whose credentials were used to call GetFederationToken. AWS allows the federated user's request only when both the federated user and the IAM user are explicitly allowed to perform the requested action. The passed policy cannot grant more permissions than those that are defined in the IAM user policy.

A typical use case is that the permissions of the IAM user whose credentials are used to call GetFederationToken are designed to allow access to all the actions and resources that any federated user will need. Then, for individual users, you pass a policy to the operation that scopes down the permissions to a level that's appropriate to that individual user, using a policy that allows only a subset of permissions that are granted to the IAM user.

If you do not pass a policy, the resulting temporary security credentials have no effective permissions. The only exception is when the temporary security credentials are used to access a resource that has a resource-based policy that specifically allows the federated user to access the resource.

For more information about how permissions work, see Permissions for GetFederationToken in Using Temporary Security Credentials. For information about using GetFederationToken to create temporary security credentials, see Creating Temporary Credentials to Enable Access for Federated Users in Using Temporary Security Credentials.

" - }, - "GetSessionToken":{ - "name":"GetSessionToken", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"GetSessionTokenRequest"}, - "output":{ - "shape":"GetSessionTokenResponse", - "documentation":"

Contains the result of a successful call to the GetSessionToken action, including temporary AWS credentials that can be used to make AWS requests.

", - "resultWrapper":"GetSessionTokenResult" - }, - "documentation":"

Returns a set of temporary credentials for an AWS account or IAM user. The credentials consist of an access key ID, a secret access key, and a security token. Typically, you use GetSessionToken if you want to use MFA to protect programmatic calls to specific AWS APIs like Amazon EC2 StopInstances. MFA-enabled IAM users would need to call GetSessionToken and submit an MFA code that is associated with their MFA device. Using the temporary security credentials that are returned from the call, IAM users can then make programmatic calls to APIs that require MFA authentication.

The GetSessionToken action must be called by using the long-term AWS security credentials of the AWS account or an IAM user. Credentials that are created by IAM users are valid for the duration that you specify, between 900 seconds (15 minutes) and 129600 seconds (36 hours); credentials that are created by using account credentials have a maximum duration of 3600 seconds (1 hour).

The permissions associated with the temporary security credentials returned by GetSessionToken are based on the permissions associated with account or IAM user whose credentials are used to call the action. If GetSessionToken is called using root account credentials, the temporary credentials have root account permissions. Similarly, if GetSessionToken is called using the credentials of an IAM user, the temporary credentials have the same permissions as the IAM user.

For more information about using GetSessionToken to create temporary credentials, go to Creating Temporary Credentials to Enable Access for IAM Users in Using Temporary Security Credentials.

" - } - }, - "shapes":{ - "AssumeRoleRequest":{ - "type":"structure", - "required":[ - "RoleArn", - "RoleSessionName" - ], - "members":{ - "RoleArn":{ - "shape":"arnType", - "documentation":"

The Amazon Resource Name (ARN) of the role that the caller is assuming.

" - }, - "RoleSessionName":{ - "shape":"userNameType", - "documentation":"

An identifier for the assumed role session. The session name is included as part of the AssumedRoleUser.

" - }, - "Policy":{ - "shape":"sessionPolicyDocumentType", - "documentation":"

An IAM policy in JSON format.

The policy parameter is optional. If you pass a policy, the temporary security credentials that are returned by the operation have the permissions that are allowed by both the access policy of the role that is being assumed, and the policy that you pass. This gives you a way to further restrict the permissions for the resulting temporary security credentials. You cannot use the passed policy to grant permissions that are in excess of those allowed by the access policy of the role that is being assumed. For more information, see Permissions for AssumeRole in Using Temporary Security Credentials.

" - }, - "DurationSeconds":{ - "shape":"roleDurationSecondsType", - "documentation":"

The duration, in seconds, of the role session. The value can range from 900 seconds (15 minutes) to 3600 seconds (1 hour). By default, the value is set to 3600 seconds.

" - }, - "ExternalId":{ - "shape":"externalIdType", - "documentation":"

A unique identifier that is used by third parties to assume a role in their customers' accounts. For each role that the third party can assume, they should instruct their customers to create a role with the external ID that the third party generated. Each time the third party assumes the role, they must pass the customer's external ID. The external ID is useful in order to help third parties bind a role to the customer who created it. For more information about the external ID, see About the External ID in Using Temporary Security Credentials.

" - }, - "SerialNumber":{ - "shape":"serialNumberType", - "documentation":"

The identification number of the MFA device that is associated with the user who is making the AssumeRole call. Specify this value if the trust policy of the role being assumed includes a condition that requires MFA authentication. The value is either the serial number for a hardware device (such as GAHT12345678) or an Amazon Resource Name (ARN) for a virtual device (such as arn:aws:iam::123456789012:mfa/user).

" - }, - "TokenCode":{ - "shape":"tokenCodeType", - "documentation":"

The value provided by the MFA device, if the trust policy of the role being assumed requires MFA (that is, if the policy includes a condition that tests for MFA). If the role being assumed requires MFA and if the TokenCode value is missing or expired, the AssumeRole call returns an \"access denied\" error.

" - } - } - }, - "AssumeRoleResponse":{ - "type":"structure", - "members":{ - "Credentials":{ - "shape":"Credentials", - "documentation":"

The temporary security credentials, which include an access key ID, a secret access key, and a security (or session) token.

" - }, - "AssumedRoleUser":{ - "shape":"AssumedRoleUser", - "documentation":"

The Amazon Resource Name (ARN) and the assumed role ID, which are identifiers that you can use to refer to the resulting temporary security credentials. For example, you can reference these credentials as a principal in a resource-based policy by using the ARN or assumed role ID. The ARN and ID include the RoleSessionName that you specified when you called AssumeRole.

" - }, - "PackedPolicySize":{ - "shape":"nonNegativeIntegerType", - "documentation":"

A percentage value that indicates the size of the policy in packed form. The service rejects any policy with a packed size greater than 100 percent, which means the policy exceeded the allowed space.

" - } - }, - "documentation":"

Contains the result of a successful call to the AssumeRole action, including temporary AWS credentials that can be used to make AWS requests.

" - }, - "AssumeRoleWithSAMLRequest":{ - "type":"structure", - "required":[ - "RoleArn", - "PrincipalArn", - "SAMLAssertion" - ], - "members":{ - "RoleArn":{ - "shape":"arnType", - "documentation":"

The Amazon Resource Name (ARN) of the role that the caller is assuming.

" - }, - "PrincipalArn":{ - "shape":"arnType", - "documentation":"

The Amazon Resource Name (ARN) of the SAML provider in IAM that describes the IdP.

" - }, - "SAMLAssertion":{ - "shape":"SAMLAssertionType", - "documentation":"

The base-64 encoded SAML authentication response provided by the IdP.

For more information, see Configuring a Relying Party and Adding Claims in the Using IAM guide.

" - }, - "Policy":{ - "shape":"sessionPolicyDocumentType", - "documentation":"

An IAM policy in JSON format.

The policy parameter is optional. If you pass a policy, the temporary security credentials that are returned by the operation have the permissions that are allowed by both the access policy of the role that is being assumed, and the policy that you pass. This gives you a way to further restrict the permissions for the resulting temporary security credentials. You cannot use the passed policy to grant permissions that are in excess of those allowed by the access policy of the role that is being assumed. For more information, see Permissions for AssumeRoleWithSAML in Using Temporary Security Credentials.

" - }, - "DurationSeconds":{ - "shape":"durationSecondsType", - "documentation":"

The duration, in seconds, of the role session. The value can range from 900 seconds (15 minutes) to 3600 seconds (1 hour). By default, the value is set to 3600 seconds. An expiration can also be specified in the SAML authentication response's NotOnOrAfter value. The actual expiration time is whichever value is shorter.

" - } - } - }, - "AssumeRoleWithSAMLResponse":{ - "type":"structure", - "members":{ - "Credentials":{"shape":"Credentials"}, - "AssumedRoleUser":{"shape":"AssumedRoleUser"}, - "PackedPolicySize":{ - "shape":"nonNegativeIntegerType", - "documentation":"

A percentage value that indicates the size of the policy in packed form. The service rejects any policy with a packed size greater than 100 percent, which means the policy exceeded the allowed space.

" - }, - "Subject":{ - "shape":"Subject", - "documentation":"

The value of the NameID element in the Subject element of the SAML assertion.

" - }, - "SubjectType":{ - "shape":"SubjectType", - "documentation":"

The format of the name ID, as defined by the Format attribute in the NameID element of the SAML assertion. Typical examples of the format are transient or persistent.

If the format includes the prefix urn:oasis:names:tc:SAML:2.0:nameid-format, that prefix is removed. For example, urn:oasis:names:tc:SAML:2.0:nameid-format:transient is returned as transient. If the format includes any other prefix, the format is returned with no modifications.

" - }, - "Issuer":{ - "shape":"Issuer", - "documentation":"

The value of the Issuer element of the SAML assertion.

" - }, - "Audience":{ - "shape":"Audience", - "documentation":"

The value of the Recipient attribute of the SubjectConfirmationData element of the SAML assertion.

" - }, - "NameQualifier":{ - "shape":"NameQualifier", - "documentation":"

A hash value based on the concatenation of the Issuer response value, the AWS account ID, and the friendly name (the last part of the ARN) of the SAML provider in IAM. The combination of NameQualifier and Subject can be used to uniquely identify a federated user.

The following pseudocode shows how the hash value is calculated:

BASE64 ( SHA1 ( \"https://example.com/saml\" + \"123456789012\" + \"/MySAMLIdP\" ) )

" - } - }, - "documentation":"

Contains the result of a successful call to the AssumeRoleWithSAML action, including temporary AWS credentials that can be used to make AWS requests.

" - }, - "AssumeRoleWithWebIdentityRequest":{ - "type":"structure", - "required":[ - "RoleArn", - "RoleSessionName", - "WebIdentityToken" - ], - "members":{ - "RoleArn":{ - "shape":"arnType", - "documentation":"

The Amazon Resource Name (ARN) of the role that the caller is assuming.

" - }, - "RoleSessionName":{ - "shape":"userNameType", - "documentation":"

An identifier for the assumed role session. Typically, you pass the name or identifier that is associated with the user who is using your application. That way, the temporary security credentials that your application will use are associated with that user. This session name is included as part of the ARN and assumed role ID in the AssumedRoleUser response element.

" - }, - "WebIdentityToken":{ - "shape":"clientTokenType", - "documentation":"

The OAuth 2.0 access token or OpenID Connect ID token that is provided by the identity provider. Your application must get this token by authenticating the user who is using your application with a web identity provider before the application makes an AssumeRoleWithWebIdentity call.

" - }, - "ProviderId":{ - "shape":"urlType", - "documentation":"

The fully-qualified host component of the domain name of the identity provider. Specify this value only for OAuth access tokens. Do not specify this value for OpenID Connect ID tokens, such as accounts.google.com. Do not include URL schemes and port numbers. Currently, www.amazon.com and graph.facebook.com are supported.

" - }, - "Policy":{ - "shape":"sessionPolicyDocumentType", - "documentation":"

An IAM policy in JSON format.

The policy parameter is optional. If you pass a policy, the temporary security credentials that are returned by the operation have the permissions that are allowed by both the access policy of the role that is being assumed, and the policy that you pass. This gives you a way to further restrict the permissions for the resulting temporary security credentials. You cannot use the passed policy to grant permissions that are in excess of those allowed by the access policy of the role that is being assumed. For more information, see Permissions for AssumeRoleWithWebIdentity in Using Temporary Security Credentials.

" - }, - "DurationSeconds":{ - "shape":"durationSecondsType", - "documentation":"

The duration, in seconds, of the role session. The value can range from 900 seconds (15 minutes) to 3600 seconds (1 hour). By default, the value is set to 3600 seconds.

" - } - } - }, - "AssumeRoleWithWebIdentityResponse":{ - "type":"structure", - "members":{ - "Credentials":{ - "shape":"Credentials", - "documentation":"

The temporary security credentials, which include an access key ID, a secret access key, and a security token.

" - }, - "SubjectFromWebIdentityToken":{ - "shape":"webIdentitySubjectType", - "documentation":"

The unique user identifier that is returned by the identity provider. This identifier is associated with the WebIdentityToken that was submitted with the AssumeRoleWithWebIdentity call. The identifier is typically unique to the user and the application that acquired the WebIdentityToken (pairwise identifier). If an OpenID Connect ID token was submitted in the WebIdentityToken, this value is returned by the identity provider as the token's sub (Subject) claim.

" - }, - "AssumedRoleUser":{ - "shape":"AssumedRoleUser", - "documentation":"

The Amazon Resource Name (ARN) and the assumed role ID, which are identifiers that you can use to refer to the resulting temporary security credentials. For example, you can reference these credentials as a principal in a resource-based policy by using the ARN or assumed role ID. The ARN and ID include the RoleSessionName that you specified when you called AssumeRole.

" - }, - "PackedPolicySize":{ - "shape":"nonNegativeIntegerType", - "documentation":"

A percentage value that indicates the size of the policy in packed form. The service rejects any policy with a packed size greater than 100 percent, which means the policy exceeded the allowed space.

" - }, - "Provider":{ - "shape":"Issuer", - "documentation":"

The issuing authority of the web identity token presented. For OpenID Connect ID Tokens this contains the value of the iss field. For OAuth 2.0 Access Tokens, this contains the value of the ProviderId parameter that was passed in the AssumeRoleWithWebIdentity request.

" - }, - "Audience":{ - "shape":"Audience", - "documentation":"

The intended audience of the web identity token. This is traditionally the client identifier issued to the application that requested the web identity token.

" - } - }, - "documentation":"

Contains the result of a successful call to the AssumeRoleWithWebIdentity action, including temporary AWS credentials that can be used to make AWS requests.

" - }, - "AssumedRoleUser":{ - "type":"structure", - "required":[ - "AssumedRoleId", - "Arn" - ], - "members":{ - "AssumedRoleId":{ - "shape":"assumedRoleIdType", - "documentation":"

A unique identifier that contains the role ID and the role session name of the role that is being assumed. The role ID is generated by AWS when the role is created.

" - }, - "Arn":{ - "shape":"arnType", - "documentation":"

The ARN of the temporary security credentials that are returned from the AssumeRole action. For more information about ARNs and how to use them in policies, see Identifiers for IAM Entities in Using IAM.

" - } - }, - "documentation":"

The identifiers for the temporary security credentials that the operation returns.

" - }, - "Audience":{"type":"string"}, - "Credentials":{ - "type":"structure", - "required":[ - "AccessKeyId", - "SecretAccessKey", - "SessionToken", - "Expiration" - ], - "members":{ - "AccessKeyId":{ - "shape":"accessKeyIdType", - "documentation":"

The access key ID that identifies the temporary security credentials.

" - }, - "SecretAccessKey":{ - "shape":"accessKeySecretType", - "documentation":"

The secret access key that can be used to sign requests.

" - }, - "SessionToken":{ - "shape":"tokenType", - "documentation":"

The token that users must pass to the service API to use the temporary credentials.

" - }, - "Expiration":{ - "shape":"dateType", - "documentation":"

The date on which the current credentials expire.

" - } - }, - "documentation":"

AWS credentials for API authentication.

" - }, - "DecodeAuthorizationMessageRequest":{ - "type":"structure", - "required":["EncodedMessage"], - "members":{ - "EncodedMessage":{ - "shape":"encodedMessageType", - "documentation":"

The encoded message that was returned with the response.

" - } - } - }, - "DecodeAuthorizationMessageResponse":{ - "type":"structure", - "members":{ - "DecodedMessage":{ - "shape":"decodedMessageType", - "documentation":"

An XML document that contains the decoded message. For more information, see DecodeAuthorizationMessage.

" - } - }, - "documentation":"

A document that contains additional information about the authorization status of a request from an encoded message that is returned in response to an AWS request.

" - }, - "ExpiredTokenException":{ - "type":"structure", - "members":{ - "message":{"shape":"expiredIdentityTokenMessage"} - }, - "error":{ - "code":"ExpiredTokenException", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The web identity token that was passed is expired or is not valid. Get a new identity token from the identity provider and then retry the request.

" - }, - "FederatedUser":{ - "type":"structure", - "required":[ - "FederatedUserId", - "Arn" - ], - "members":{ - "FederatedUserId":{ - "shape":"federatedIdType", - "documentation":"

The string that identifies the federated user associated with the credentials, similar to the unique ID of an IAM user.

" - }, - "Arn":{ - "shape":"arnType", - "documentation":"

The ARN that specifies the federated user that is associated with the credentials. For more information about ARNs and how to use them in policies, see Identifiers for IAM Entities in Using IAM.

" - } - }, - "documentation":"

Identifiers for the federated user that is associated with the credentials.

" - }, - "GetFederationTokenRequest":{ - "type":"structure", - "required":["Name"], - "members":{ - "Name":{ - "shape":"userNameType", - "documentation":"

The name of the federated user. The name is used as an identifier for the temporary security credentials (such as Bob). For example, you can reference the federated user name in a resource-based policy, such as in an Amazon S3 bucket policy.

" - }, - "Policy":{ - "shape":"sessionPolicyDocumentType", - "documentation":"

An IAM policy in JSON format that is passed with the GetFederationToken call and evaluated along with the policy or policies that are attached to the IAM user whose credentials are used to call GetFederationToken. The passed policy is used to scope down the permissions that are available to the IAM user, by allowing only a subset of the permissions that are granted to the IAM user. The passed policy cannot grant more permissions than those granted to the IAM user. The final permissions for the federated user are the most restrictive set based on the intersection of the passed policy and the IAM user policy.

If you do not pass a policy, the resulting temporary security credentials have no effective permissions. The only exception is when the temporary security credentials are used to access a resource that has a resource-based policy that specifically allows the federated user to access the resource.

For more information about how permissions work, see Permissions for GetFederationToken in Using Temporary Security Credentials.

" - }, - "DurationSeconds":{ - "shape":"durationSecondsType", - "documentation":"

The duration, in seconds, that the session should last. Acceptable durations for federation sessions range from 900 seconds (15 minutes) to 129600 seconds (36 hours), with 43200 seconds (12 hours) as the default. Sessions obtained using AWS account (root) credentials are restricted to a maximum of 3600 seconds (one hour). If the specified duration is longer than one hour, the session obtained by using AWS account (root) credentials defaults to one hour.

" - } - } - }, - "GetFederationTokenResponse":{ - "type":"structure", - "members":{ - "Credentials":{ - "shape":"Credentials", - "documentation":"

Credentials for the service API authentication.

" - }, - "FederatedUser":{ - "shape":"FederatedUser", - "documentation":"

Identifiers for the federated user associated with the credentials (such as arn:aws:sts::123456789012:federated-user/Bob or 123456789012:Bob). You can use the federated user's ARN in your resource-based policies, such as an Amazon S3 bucket policy.

" - }, - "PackedPolicySize":{ - "shape":"nonNegativeIntegerType", - "documentation":"

A percentage value indicating the size of the policy in packed form. The service rejects policies for which the packed size is greater than 100 percent of the allowed value.

" - } - }, - "documentation":"

Contains the result of a successful call to the GetFederationToken action, including temporary AWS credentials that can be used to make AWS requests.

" - }, - "GetSessionTokenRequest":{ - "type":"structure", - "members":{ - "DurationSeconds":{ - "shape":"durationSecondsType", - "documentation":"

The duration, in seconds, that the credentials should remain valid. Acceptable durations for IAM user sessions range from 900 seconds (15 minutes) to 129600 seconds (36 hours), with 43200 seconds (12 hours) as the default. Sessions for AWS account owners are restricted to a maximum of 3600 seconds (one hour). If the duration is longer than one hour, the session for AWS account owners defaults to one hour.

" - }, - "SerialNumber":{ - "shape":"serialNumberType", - "documentation":"

The identification number of the MFA device that is associated with the IAM user who is making the GetSessionToken call. Specify this value if the IAM user has a policy that requires MFA authentication. The value is either the serial number for a hardware device (such as GAHT12345678) or an Amazon Resource Name (ARN) for a virtual device (such as arn:aws:iam::123456789012:mfa/user). You can find the device for an IAM user by going to the AWS Management Console and viewing the user's security credentials.

" - }, - "TokenCode":{ - "shape":"tokenCodeType", - "documentation":"

The value provided by the MFA device, if MFA is required. If any policy requires the IAM user to submit an MFA code, specify this value. If MFA authentication is required, and the user does not provide a code when requesting a set of temporary security credentials, the user will receive an \"access denied\" response when requesting resources that require MFA authentication.

" - } - } - }, - "GetSessionTokenResponse":{ - "type":"structure", - "members":{ - "Credentials":{ - "shape":"Credentials", - "documentation":"

The session credentials for API authentication.

" - } - }, - "documentation":"

Contains the result of a successful call to the GetSessionToken action, including temporary AWS credentials that can be used to make AWS requests.

" - }, - "IDPCommunicationErrorException":{ - "type":"structure", - "members":{ - "message":{"shape":"idpCommunicationErrorMessage"} - }, - "error":{ - "code":"IDPCommunicationError", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request could not be fulfilled because the non-AWS identity provider (IDP) that was asked to verify the incoming identity token could not be reached. This is often a transient error caused by network conditions. Retry the request a limited number of times so that you don't exceed the request rate. If the error persists, the non-AWS identity provider might be down or not responding.

" - }, - "IDPRejectedClaimException":{ - "type":"structure", - "members":{ - "message":{"shape":"idpRejectedClaimMessage"} - }, - "error":{ - "code":"IDPRejectedClaim", - "httpStatusCode":403, - "senderFault":true - }, - "exception":true, - "documentation":"

The identity provider (IdP) reported that authentication failed. This might be because the claim is invalid.

If this error is returned for the AssumeRoleWithWebIdentity operation, it can also mean that the claim has expired or has been explicitly revoked.

" - }, - "InvalidAuthorizationMessageException":{ - "type":"structure", - "members":{ - "message":{ - "shape":"invalidAuthorizationMessage", - "documentation":"

The error message associated with the error.

" - } - }, - "error":{ - "code":"InvalidAuthorizationMessageException", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The error returned if the message passed to DecodeAuthorizationMessage was invalid. This can happen if the token contains invalid characters, such as linebreaks.

" - }, - "InvalidIdentityTokenException":{ - "type":"structure", - "members":{ - "message":{"shape":"invalidIdentityTokenMessage"} - }, - "error":{ - "code":"InvalidIdentityToken", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The web identity token that was passed could not be validated by AWS. Get a new identity token from the identity provider and then retry the request.

" - }, - "Issuer":{"type":"string"}, - "MalformedPolicyDocumentException":{ - "type":"structure", - "members":{ - "message":{"shape":"malformedPolicyDocumentMessage"} - }, - "error":{ - "code":"MalformedPolicyDocument", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because the policy document was malformed. The error message describes the specific error.

" - }, - "NameQualifier":{"type":"string"}, - "PackedPolicyTooLargeException":{ - "type":"structure", - "members":{ - "message":{"shape":"packedPolicyTooLargeMessage"} - }, - "error":{ - "code":"PackedPolicyTooLarge", - "httpStatusCode":400, - "senderFault":true - }, - "exception":true, - "documentation":"

The request was rejected because the policy document was too large. The error message describes how big the policy document is, in packed form, as a percentage of what the API allows.

" - }, - "SAMLAssertionType":{ - "type":"string", - "min":4, - "max":50000 - }, - "Subject":{"type":"string"}, - "SubjectType":{"type":"string"}, - "accessKeyIdType":{ - "type":"string", - "min":16, - "max":32, - "pattern":"[\\w]*" - }, - "accessKeySecretType":{"type":"string"}, - "arnType":{ - "type":"string", - "min":20, - "max":2048 - }, - "assumedRoleIdType":{ - "type":"string", - "min":2, - "max":96, - "pattern":"[\\w+=,.@:-]*" - }, - "clientTokenType":{ - "type":"string", - "min":4, - "max":2048 - }, - "dateType":{"type":"timestamp"}, - "decodedMessageType":{"type":"string"}, - "durationSecondsType":{ - "type":"integer", - "min":900, - "max":129600 - }, - "encodedMessageType":{ - "type":"string", - "min":1, - "max":10240 - }, - "expiredIdentityTokenMessage":{"type":"string"}, - "externalIdType":{ - "type":"string", - "min":2, - "max":96, - "pattern":"[\\w+=,.@:-]*" - }, - "federatedIdType":{ - "type":"string", - "min":2, - "max":96, - "pattern":"[\\w+=,.@\\:-]*" - }, - "idpCommunicationErrorMessage":{"type":"string"}, - "idpRejectedClaimMessage":{"type":"string"}, - "invalidAuthorizationMessage":{"type":"string"}, - "invalidIdentityTokenMessage":{"type":"string"}, - "malformedPolicyDocumentMessage":{"type":"string"}, - "nonNegativeIntegerType":{ - "type":"integer", - "min":0 - }, - "packedPolicyTooLargeMessage":{"type":"string"}, - "roleDurationSecondsType":{ - "type":"integer", - "min":900, - "max":3600 - }, - "serialNumberType":{ - "type":"string", - "min":9, - "max":256, - "pattern":"[\\w+=/:,.@-]*" - }, - "sessionPolicyDocumentType":{ - "type":"string", - "min":1, - "max":2048, - "pattern":"[\\u0009\\u000A\\u000D\\u0020-\\u00FF]+" - }, - "tokenCodeType":{ - "type":"string", - "min":6, - "max":6, - "pattern":"[\\d]*" - }, - "tokenType":{"type":"string"}, - "urlType":{ - "type":"string", - "min":4, - "max":2048 - }, - "userNameType":{ - "type":"string", - "min":2, - "max":32, - "pattern":"[\\w+=,.@-]*" - }, - "webIdentitySubjectType":{ - "type":"string", - "min":6, - "max":255 - } - } -} diff --git a/src/github.com/getlantern/aws-sdk-go/apis/support/2013-04-15.normal.json b/src/github.com/getlantern/aws-sdk-go/apis/support/2013-04-15.normal.json deleted file mode 100644 index 1d7d998bf2..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/apis/support/2013-04-15.normal.json +++ /dev/null @@ -1,1379 +0,0 @@ -{ - "metadata":{ - "apiVersion":"2013-04-15", - "endpointPrefix":"support", - "jsonVersion":"1.1", - "serviceFullName":"AWS Support", - "signatureVersion":"v4", - "targetPrefix":"AWSSupport_20130415", - "protocol":"json" - }, - "documentation":"AWS Support

The AWS Support API reference is intended for programmers who need detailed information about the AWS Support operations and data types. This service enables you to manage your AWS Support cases programmatically. It uses HTTP methods that return results in JSON format.

The AWS Support service also exposes a set of Trusted Advisor features. You can retrieve a list of checks and their descriptions, get check results, specify checks to refresh, and get the refresh status of checks.

The following list describes the AWS Support case management operations:

The following list describes the operations available from the AWS Support service for Trusted Advisor:

For authentication of requests, AWS Support uses Signature Version 4 Signing Process.

See About the AWS Support API in the AWS Support User Guide for information about how to use this service to create and manage your support cases, and how to call Trusted Advisor for results of checks on your resources.

", - "operations":{ - "AddAttachmentsToSet":{ - "name":"AddAttachmentsToSet", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"AddAttachmentsToSetRequest"}, - "output":{ - "shape":"AddAttachmentsToSetResponse", - "documentation":"

The ID and expiry time of the attachment set returned by the AddAttachmentsToSet operation.

" - }, - "errors":[ - { - "shape":"InternalServerError", - "exception":true, - "fault":true, - "documentation":"

An internal server error occurred.

" - }, - { - "shape":"AttachmentSetIdNotFound", - "exception":true, - "documentation":"

An attachment set with the specified ID could not be found.

" - }, - { - "shape":"AttachmentSetExpired", - "exception":true, - "documentation":"

The expiration time of the attachment set has passed. The set expires 1 hour after it is created.

" - }, - { - "shape":"AttachmentSetSizeLimitExceeded", - "exception":true, - "documentation":"

A limit for the size of an attachment set has been exceeded. The limits are 3 attachments and 5 MB per attachment.

" - }, - { - "shape":"AttachmentLimitExceeded", - "exception":true, - "documentation":"

The limit for the number of attachment sets created in a short period of time has been exceeded.

" - } - ], - "documentation":"

Adds one or more attachments to an attachment set. If an AttachmentSetId is not specified, a new attachment set is created, and the ID of the set is returned in the response. If an AttachmentSetId is specified, the attachments are added to the specified set, if it exists.

An attachment set is a temporary container for attachments that are to be added to a case or case communication. The set is available for one hour after it is created; the ExpiryTime returned in the response indicates when the set expires. The maximum number of attachments in a set is 3, and the maximum size of any attachment in the set is 5 MB.

" - }, - "AddCommunicationToCase":{ - "name":"AddCommunicationToCase", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{ - "shape":"AddCommunicationToCaseRequest", - "documentation":"

To be written.

" - }, - "output":{ - "shape":"AddCommunicationToCaseResponse", - "documentation":"

The result of the AddCommunicationToCase operation.

" - }, - "errors":[ - { - "shape":"InternalServerError", - "exception":true, - "fault":true, - "documentation":"

An internal server error occurred.

" - }, - { - "shape":"CaseIdNotFound", - "exception":true, - "documentation":"

The requested CaseId could not be located.

" - }, - { - "shape":"AttachmentSetIdNotFound", - "exception":true, - "documentation":"

An attachment set with the specified ID could not be found.

" - }, - { - "shape":"AttachmentSetExpired", - "exception":true, - "documentation":"

The expiration time of the attachment set has passed. The set expires 1 hour after it is created.

" - } - ], - "documentation":"

Adds additional customer communication to an AWS Support case. You use the CaseId value to identify the case to add communication to. You can list a set of email addresses to copy on the communication using the CcEmailAddresses value. The CommunicationBody value contains the text of the communication.

The response indicates the success or failure of the request.

This operation implements a subset of the features of the AWS Support Center.

" - }, - "CreateCase":{ - "name":"CreateCase", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CreateCaseRequest"}, - "output":{ - "shape":"CreateCaseResponse", - "documentation":"

The AWS Support case ID returned by a successful completion of the CreateCase operation.

" - }, - "errors":[ - { - "shape":"InternalServerError", - "exception":true, - "fault":true, - "documentation":"

An internal server error occurred.

" - }, - { - "shape":"CaseCreationLimitExceeded", - "exception":true, - "documentation":"

The case creation limit for the account has been exceeded.

" - }, - { - "shape":"AttachmentSetIdNotFound", - "exception":true, - "documentation":"

An attachment set with the specified ID could not be found.

" - }, - { - "shape":"AttachmentSetExpired", - "exception":true, - "documentation":"

The expiration time of the attachment set has passed. The set expires 1 hour after it is created.

" - } - ], - "documentation":"

Creates a new case in the AWS Support Center. This operation is modeled on the behavior of the AWS Support Center Create Case page. Its parameters require you to specify the following information:

  1. IssueType. The type of issue for the case. You can specify either \"customer-service\" or \"technical.\" If you do not indicate a value, the default is \"technical.\"
  2. ServiceCode. The code for an AWS service. You obtain the ServiceCode by calling DescribeServices.
  3. CategoryCode. The category for the service defined for the ServiceCode value. You also obtain the category code for a service by calling DescribeServices. Each AWS service defines its own set of category codes.
  4. SeverityCode. A value that indicates the urgency of the case, which in turn determines the response time according to your service level agreement with AWS Support. You obtain the SeverityCode by calling DescribeSeverityLevels.
  5. Subject. The Subject field on the AWS Support Center Create Case page.
  6. CommunicationBody. The Description field on the AWS Support Center Create Case page.
  7. AttachmentSetId. The ID of a set of attachments that has been created by using AddAttachmentsToSet.
  8. Language. The human language in which AWS Support handles the case. English and Japanese are currently supported.
  9. CcEmailAddresses. The AWS Support Center CC field on the Create Case page. You can list email addresses to be copied on any correspondence about the case. The account that opens the case is already identified by passing the AWS Credentials in the HTTP POST method or in a method or function call from one of the programming languages supported by an AWS SDK.

To add additional communication or attachments to an existing case, use AddCommunicationToCase.

A successful CreateCase request returns an AWS Support case number. Case numbers are used by the DescribeCases operation to retrieve existing AWS Support cases.

" - }, - "DescribeAttachment":{ - "name":"DescribeAttachment", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeAttachmentRequest"}, - "output":{ - "shape":"DescribeAttachmentResponse", - "documentation":"

The content and file name of the attachment returned by the DescribeAttachment operation.

" - }, - "errors":[ - { - "shape":"InternalServerError", - "exception":true, - "fault":true, - "documentation":"

An internal server error occurred.

" - }, - { - "shape":"DescribeAttachmentLimitExceeded", - "exception":true, - "documentation":"

The limit for the number of DescribeAttachment requests in a short period of time has been exceeded.

" - }, - { - "shape":"AttachmentIdNotFound", - "exception":true, - "documentation":"

An attachment with the specified ID could not be found.

" - } - ], - "documentation":"

Returns the attachment that has the specified ID. Attachment IDs are generated by the case management system when you add an attachment to a case or case communication. Attachment IDs are returned in the AttachmentDetails objects that are returned by the DescribeCommunications operation.

" - }, - "DescribeCases":{ - "name":"DescribeCases", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeCasesRequest"}, - "output":{ - "shape":"DescribeCasesResponse", - "documentation":"

Returns an array of CaseDetails objects and a NextToken that defines a point for pagination in the result set.

" - }, - "errors":[ - { - "shape":"InternalServerError", - "exception":true, - "fault":true, - "documentation":"

An internal server error occurred.

" - }, - { - "shape":"CaseIdNotFound", - "exception":true, - "documentation":"

The requested CaseId could not be located.

" - } - ], - "documentation":"

Returns a list of cases that you specify by passing one or more case IDs. In addition, you can filter the cases by date by setting values for the AfterTime and BeforeTime request parameters. You can set values for the IncludeResolvedCases and IncludeCommunications request parameters to control how much information is returned.

Case data is available for 12 months after creation. If a case was created more than 12 months ago, a request for data might cause an error.

The response returns the following in JSON format:

  1. One or more CaseDetails data types.
  2. One or more NextToken values, which specify where to paginate the returned records represented by the CaseDetails objects.
" - }, - "DescribeCommunications":{ - "name":"DescribeCommunications", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeCommunicationsRequest"}, - "output":{ - "shape":"DescribeCommunicationsResponse", - "documentation":"

The communications returned by the DescribeCommunications operation.

" - }, - "errors":[ - { - "shape":"InternalServerError", - "exception":true, - "fault":true, - "documentation":"

An internal server error occurred.

" - }, - { - "shape":"CaseIdNotFound", - "exception":true, - "documentation":"

The requested CaseId could not be located.

" - } - ], - "documentation":"

Returns communications (and attachments) for one or more support cases. You can use the AfterTime and BeforeTime parameters to filter by date. You can use the CaseId parameter to restrict the results to a particular case.

Case data is available for 12 months after creation. If a case was created more than 12 months ago, a request for data might cause an error.

You can use the MaxResults and NextToken parameters to control the pagination of the result set. Set MaxResults to the number of cases you want displayed on each page, and use NextToken to specify the resumption of pagination.

" - }, - "DescribeServices":{ - "name":"DescribeServices", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeServicesRequest"}, - "output":{ - "shape":"DescribeServicesResponse", - "documentation":"

The list of AWS services returned by the DescribeServices operation.

" - }, - "errors":[ - { - "shape":"InternalServerError", - "exception":true, - "fault":true, - "documentation":"

An internal server error occurred.

" - } - ], - "documentation":"

Returns the current list of AWS services and a list of service categories that applies to each one. You then use service names and categories in your CreateCase requests. Each AWS service has its own set of categories.

The service codes and category codes correspond to the values that are displayed in the Service and Category drop-down lists on the AWS Support Center Create Case page. The values in those fields, however, do not necessarily match the service codes and categories returned by the DescribeServices request. Always use the service codes and categories obtained programmatically. This practice ensures that you always have the most recent set of service and category codes.

" - }, - "DescribeSeverityLevels":{ - "name":"DescribeSeverityLevels", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeSeverityLevelsRequest"}, - "output":{ - "shape":"DescribeSeverityLevelsResponse", - "documentation":"

The list of severity levels returned by the DescribeSeverityLevels operation.

" - }, - "errors":[ - { - "shape":"InternalServerError", - "exception":true, - "fault":true, - "documentation":"

An internal server error occurred.

" - } - ], - "documentation":"

Returns the list of severity levels that you can assign to an AWS Support case. The severity level for a case is also a field in the CaseDetails data type included in any CreateCase request.

" - }, - "DescribeTrustedAdvisorCheckRefreshStatuses":{ - "name":"DescribeTrustedAdvisorCheckRefreshStatuses", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeTrustedAdvisorCheckRefreshStatusesRequest"}, - "output":{ - "shape":"DescribeTrustedAdvisorCheckRefreshStatusesResponse", - "documentation":"

The statuses of the Trusted Advisor checks returned by the DescribeTrustedAdvisorCheckRefreshStatuses operation.

" - }, - "errors":[ - { - "shape":"InternalServerError", - "exception":true, - "fault":true, - "documentation":"

An internal server error occurred.

" - } - ], - "documentation":"

Returns the refresh status of the Trusted Advisor checks that have the specified check IDs. Check IDs can be obtained by calling DescribeTrustedAdvisorChecks.

" - }, - "DescribeTrustedAdvisorCheckResult":{ - "name":"DescribeTrustedAdvisorCheckResult", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeTrustedAdvisorCheckResultRequest"}, - "output":{ - "shape":"DescribeTrustedAdvisorCheckResultResponse", - "documentation":"

The result of the Trusted Advisor check returned by the DescribeTrustedAdvisorCheckResult operation.

" - }, - "errors":[ - { - "shape":"InternalServerError", - "exception":true, - "fault":true, - "documentation":"

An internal server error occurred.

" - } - ], - "documentation":"

Returns the results of the Trusted Advisor check that has the specified check ID. Check IDs can be obtained by calling DescribeTrustedAdvisorChecks.

The response contains a TrustedAdvisorCheckResult object, which contains these three objects:

In addition, the response contains these fields:

" - }, - "DescribeTrustedAdvisorCheckSummaries":{ - "name":"DescribeTrustedAdvisorCheckSummaries", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeTrustedAdvisorCheckSummariesRequest"}, - "output":{ - "shape":"DescribeTrustedAdvisorCheckSummariesResponse", - "documentation":"

The summaries of the Trusted Advisor checks returned by the DescribeTrustedAdvisorCheckSummaries operation.

" - }, - "errors":[ - { - "shape":"InternalServerError", - "exception":true, - "fault":true, - "documentation":"

An internal server error occurred.

" - } - ], - "documentation":"

Returns the summaries of the results of the Trusted Advisor checks that have the specified check IDs. Check IDs can be obtained by calling DescribeTrustedAdvisorChecks.

The response contains an array of TrustedAdvisorCheckSummary objects.

" - }, - "DescribeTrustedAdvisorChecks":{ - "name":"DescribeTrustedAdvisorChecks", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeTrustedAdvisorChecksRequest"}, - "output":{ - "shape":"DescribeTrustedAdvisorChecksResponse", - "documentation":"

Information about the Trusted Advisor checks returned by the DescribeTrustedAdvisorChecks operation.

" - }, - "errors":[ - { - "shape":"InternalServerError", - "exception":true, - "fault":true, - "documentation":"

An internal server error occurred.

" - } - ], - "documentation":"

Returns information about all available Trusted Advisor checks, including name, ID, category, description, and metadata. You must specify a language code; English (\"en\") and Japanese (\"ja\") are currently supported. The response contains a TrustedAdvisorCheckDescription for each check.

" - }, - "RefreshTrustedAdvisorCheck":{ - "name":"RefreshTrustedAdvisorCheck", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"RefreshTrustedAdvisorCheckRequest"}, - "output":{ - "shape":"RefreshTrustedAdvisorCheckResponse", - "documentation":"

The current refresh status of a Trusted Advisor check.

" - }, - "errors":[ - { - "shape":"InternalServerError", - "exception":true, - "fault":true, - "documentation":"

An internal server error occurred.

" - } - ], - "documentation":"

Requests a refresh of the Trusted Advisor check that has the specified check ID. Check IDs can be obtained by calling DescribeTrustedAdvisorChecks.

The response contains a TrustedAdvisorCheckRefreshStatus object, which contains these fields:

" - }, - "ResolveCase":{ - "name":"ResolveCase", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"ResolveCaseRequest"}, - "output":{ - "shape":"ResolveCaseResponse", - "documentation":"

The status of the case returned by the ResolveCase operation.

" - }, - "errors":[ - { - "shape":"InternalServerError", - "exception":true, - "fault":true, - "documentation":"

An internal server error occurred.

" - }, - { - "shape":"CaseIdNotFound", - "exception":true, - "documentation":"

The requested CaseId could not be located.

" - } - ], - "documentation":"

Takes a CaseId and returns the initial state of the case along with the state of the case after the call to ResolveCase completed.

" - } - }, - "shapes":{ - "AddAttachmentsToSetRequest":{ - "type":"structure", - "required":["attachments"], - "members":{ - "attachmentSetId":{ - "shape":"AttachmentSetId", - "documentation":"

The ID of the attachment set. If an AttachmentSetId is not specified, a new attachment set is created, and the ID of the set is returned in the response. If an AttachmentSetId is specified, the attachments are added to the specified set, if it exists.

" - }, - "attachments":{ - "shape":"Attachments", - "documentation":"

One or more attachments to add to the set. The limit is 3 attachments per set, and the size limit is 5 MB per attachment.

" - } - } - }, - "AddAttachmentsToSetResponse":{ - "type":"structure", - "members":{ - "attachmentSetId":{ - "shape":"AttachmentSetId", - "documentation":"

The ID of the attachment set. If an AttachmentSetId was not specified, a new attachment set is created, and the ID of the set is returned in the response. If an AttachmentSetId was specified, the attachments are added to the specified set, if it exists.

" - }, - "expiryTime":{ - "shape":"ExpiryTime", - "documentation":"

The time and date when the attachment set expires.

" - } - }, - "documentation":"

The ID and expiry time of the attachment set returned by the AddAttachmentsToSet operation.

" - }, - "AddCommunicationToCaseRequest":{ - "type":"structure", - "required":["communicationBody"], - "members":{ - "caseId":{ - "shape":"CaseId", - "documentation":"

The AWS Support case ID requested or returned in the call. The case ID is an alphanumeric string formatted as shown in this example: case-12345678910-2013-c4c1d2bf33c5cf47

" - }, - "communicationBody":{ - "shape":"CommunicationBody", - "documentation":"

The body of an email communication to add to the support case.

" - }, - "ccEmailAddresses":{ - "shape":"CcEmailAddressList", - "documentation":"

The email addresses in the CC line of an email to be added to the support case.

" - }, - "attachmentSetId":{ - "shape":"AttachmentSetId", - "documentation":"

The ID of a set of one or more attachments for the communication to add to the case. Create the set by calling AddAttachmentsToSet

" - } - }, - "documentation":"

To be written.

" - }, - "AddCommunicationToCaseResponse":{ - "type":"structure", - "members":{ - "result":{ - "shape":"Result", - "documentation":"

True if AddCommunicationToCase succeeds. Otherwise, returns an error.

" - } - }, - "documentation":"

The result of the AddCommunicationToCase operation.

" - }, - "AfterTime":{"type":"string"}, - "Attachment":{ - "type":"structure", - "members":{ - "fileName":{ - "shape":"FileName", - "documentation":"

The name of the attachment file.

" - }, - "data":{ - "shape":"Data", - "documentation":"

The content of the attachment file.

" - } - }, - "documentation":"

An attachment to a case communication. The attachment consists of the file name and the content of the file.

" - }, - "AttachmentDetails":{ - "type":"structure", - "members":{ - "attachmentId":{ - "shape":"AttachmentId", - "documentation":"

The ID of the attachment.

" - }, - "fileName":{ - "shape":"FileName", - "documentation":"

The file name of the attachment.

" - } - }, - "documentation":"

The file name and ID of an attachment to a case communication. You can use the ID to retrieve the attachment with the DescribeAttachment operation.

" - }, - "AttachmentId":{"type":"string"}, - "AttachmentIdNotFound":{ - "type":"structure", - "members":{ - "message":{ - "shape":"ErrorMessage", - "documentation":"

An attachment with the specified ID could not be found.

" - } - }, - "exception":true, - "documentation":"

An attachment with the specified ID could not be found.

" - }, - "AttachmentLimitExceeded":{ - "type":"structure", - "members":{ - "message":{ - "shape":"ErrorMessage", - "documentation":"

The limit for the number of attachment sets created in a short period of time has been exceeded.

" - } - }, - "exception":true, - "documentation":"

The limit for the number of attachment sets created in a short period of time has been exceeded.

" - }, - "AttachmentSet":{ - "type":"list", - "member":{"shape":"AttachmentDetails"} - }, - "AttachmentSetExpired":{ - "type":"structure", - "members":{ - "message":{ - "shape":"ErrorMessage", - "documentation":"

The expiration time of the attachment set has passed. The set expires 1 hour after it is created.

" - } - }, - "exception":true, - "documentation":"

The expiration time of the attachment set has passed. The set expires 1 hour after it is created.

" - }, - "AttachmentSetId":{"type":"string"}, - "AttachmentSetIdNotFound":{ - "type":"structure", - "members":{ - "message":{ - "shape":"ErrorMessage", - "documentation":"

An attachment set with the specified ID could not be found.

" - } - }, - "exception":true, - "documentation":"

An attachment set with the specified ID could not be found.

" - }, - "AttachmentSetSizeLimitExceeded":{ - "type":"structure", - "members":{ - "message":{ - "shape":"ErrorMessage", - "documentation":"

A limit for the size of an attachment set has been exceeded. The limits are 3 attachments and 5 MB per attachment.

" - } - }, - "exception":true, - "documentation":"

A limit for the size of an attachment set has been exceeded. The limits are 3 attachments and 5 MB per attachment.

" - }, - "Attachments":{ - "type":"list", - "member":{"shape":"Attachment"} - }, - "BeforeTime":{"type":"string"}, - "Boolean":{"type":"boolean"}, - "CaseCreationLimitExceeded":{ - "type":"structure", - "members":{ - "message":{ - "shape":"ErrorMessage", - "documentation":"

An error message that indicates that you have exceeded the number of cases you can have open.

" - } - }, - "exception":true, - "documentation":"

The case creation limit for the account has been exceeded.

" - }, - "CaseDetails":{ - "type":"structure", - "members":{ - "caseId":{ - "shape":"CaseId", - "documentation":"

The AWS Support case ID requested or returned in the call. The case ID is an alphanumeric string formatted as shown in this example: case-12345678910-2013-c4c1d2bf33c5cf47

" - }, - "displayId":{ - "shape":"DisplayId", - "documentation":"

The ID displayed for the case in the AWS Support Center. This is a numeric string.

" - }, - "subject":{ - "shape":"Subject", - "documentation":"

The subject line for the case in the AWS Support Center.

" - }, - "status":{ - "shape":"Status", - "documentation":"

The status of the case.

" - }, - "serviceCode":{ - "shape":"ServiceCode", - "documentation":"

The code for the AWS service returned by the call to DescribeServices.

" - }, - "categoryCode":{ - "shape":"CategoryCode", - "documentation":"

The category of problem for the AWS Support case.

" - }, - "severityCode":{ - "shape":"SeverityCode", - "documentation":"

The code for the severity level returned by the call to DescribeSeverityLevels.

" - }, - "submittedBy":{ - "shape":"SubmittedBy", - "documentation":"

The email address of the account that submitted the case.

" - }, - "timeCreated":{ - "shape":"TimeCreated", - "documentation":"

The time that the case was case created in the AWS Support Center.

" - }, - "recentCommunications":{ - "shape":"RecentCaseCommunications", - "documentation":"

The five most recent communications between you and AWS Support Center, including the IDs of any attachments to the communications. Also includes a nextToken that you can use to retrieve earlier communications.

" - }, - "ccEmailAddresses":{ - "shape":"CcEmailAddressList", - "documentation":"

The email addresses that receive copies of communication about the case.

" - }, - "language":{ - "shape":"Language", - "documentation":"

The ISO 639-1 code for the language in which AWS provides support. AWS Support currently supports English (\"en\") and Japanese (\"ja\"). Language parameters must be passed explicitly for operations that take them.

" - } - }, - "documentation":"

A JSON-formatted object that contains the metadata for a support case. It is contained the response from a DescribeCases request. CaseDetails contains the following fields:

  1. CaseID. The AWS Support case ID requested or returned in the call. The case ID is an alphanumeric string formatted as shown in this example: case-12345678910-2013-c4c1d2bf33c5cf47.
  2. CategoryCode. The category of problem for the AWS Support case. Corresponds to the CategoryCode values returned by a call to DescribeServices.
  3. DisplayId. The identifier for the case on pages in the AWS Support Center.
  4. Language. The ISO 639-1 code for the language in which AWS provides support. AWS Support currently supports English (\"en\") and Japanese (\"ja\"). Language parameters must be passed explicitly for operations that take them.
  5. RecentCommunications. One or more Communication objects. Fields of these objects are Attachments, Body, CaseId, SubmittedBy, and TimeCreated.
  6. NextToken. A resumption point for pagination.
  7. ServiceCode. The identifier for the AWS service that corresponds to the service code defined in the call to DescribeServices.
  8. SeverityCode. The severity code assigned to the case. Contains one of the values returned by the call to DescribeSeverityLevels.
  9. Status. The status of the case in the AWS Support Center.
  10. Subject. The subject line of the case.
  11. SubmittedBy. The email address of the account that submitted the case.
  12. TimeCreated. The time the case was created, in ISO-8601 format.
" - }, - "CaseId":{"type":"string"}, - "CaseIdList":{ - "type":"list", - "member":{"shape":"CaseId"}, - "min":0, - "max":100 - }, - "CaseIdNotFound":{ - "type":"structure", - "members":{ - "message":{ - "shape":"ErrorMessage", - "documentation":"

The requested CaseId could not be located.

" - } - }, - "exception":true, - "documentation":"

The requested CaseId could not be located.

" - }, - "CaseList":{ - "type":"list", - "member":{"shape":"CaseDetails"} - }, - "CaseStatus":{"type":"string"}, - "Category":{ - "type":"structure", - "members":{ - "code":{ - "shape":"CategoryCode", - "documentation":"

The category code for the support case.

" - }, - "name":{ - "shape":"CategoryName", - "documentation":"

The category name for the support case.

" - } - }, - "documentation":"

A JSON-formatted name/value pair that represents the category name and category code of the problem, selected from the DescribeServices response for each AWS service.

" - }, - "CategoryCode":{"type":"string"}, - "CategoryList":{ - "type":"list", - "member":{"shape":"Category"} - }, - "CategoryName":{"type":"string"}, - "CcEmailAddress":{"type":"string"}, - "CcEmailAddressList":{ - "type":"list", - "member":{"shape":"CcEmailAddress"} - }, - "Communication":{ - "type":"structure", - "members":{ - "caseId":{ - "shape":"CaseId", - "documentation":"

The AWS Support case ID requested or returned in the call. The case ID is an alphanumeric string formatted as shown in this example: case-12345678910-2013-c4c1d2bf33c5cf47

" - }, - "body":{ - "shape":"CommunicationBody", - "documentation":"

The text of the communication between the customer and AWS Support.

" - }, - "submittedBy":{ - "shape":"SubmittedBy", - "documentation":"

The email address of the account that submitted the AWS Support case.

" - }, - "timeCreated":{ - "shape":"TimeCreated", - "documentation":"

The time the communication was created.

" - }, - "attachmentSet":{ - "shape":"AttachmentSet", - "documentation":"

Information about the attachments to the case communication.

" - } - }, - "documentation":"

A communication associated with an AWS Support case. The communication consists of the case ID, the message body, attachment information, the account email address, and the date and time of the communication.

" - }, - "CommunicationBody":{"type":"string"}, - "CommunicationList":{ - "type":"list", - "member":{"shape":"Communication"} - }, - "CreateCaseRequest":{ - "type":"structure", - "required":[ - "subject", - "communicationBody" - ], - "members":{ - "subject":{ - "shape":"Subject", - "documentation":"

The title of the AWS Support case.

" - }, - "serviceCode":{ - "shape":"ServiceCode", - "documentation":"

The code for the AWS service returned by the call to DescribeServices.

" - }, - "severityCode":{ - "shape":"SeverityCode", - "documentation":"

The code for the severity level returned by the call to DescribeSeverityLevels.

The availability of severity levels depends on each customer's support subscription. In other words, your subscription may not necessarily require the urgent level of response time.

" - }, - "categoryCode":{ - "shape":"CategoryCode", - "documentation":"

The category of problem for the AWS Support case.

" - }, - "communicationBody":{ - "shape":"CommunicationBody", - "documentation":"

The communication body text when you create an AWS Support case by calling CreateCase.

" - }, - "ccEmailAddresses":{ - "shape":"CcEmailAddressList", - "documentation":"

A list of email addresses that AWS Support copies on case correspondence.

" - }, - "language":{ - "shape":"Language", - "documentation":"

The ISO 639-1 code for the language in which AWS provides support. AWS Support currently supports English (\"en\") and Japanese (\"ja\"). Language parameters must be passed explicitly for operations that take them.

" - }, - "issueType":{ - "shape":"IssueType", - "documentation":"

The type of issue for the case. You can specify either \"customer-service\" or \"technical.\" If you do not indicate a value, the default is \"technical.\"

" - }, - "attachmentSetId":{ - "shape":"AttachmentSetId", - "documentation":"

The ID of a set of one or more attachments for the case. Create the set by using AddAttachmentsToSet.

" - } - } - }, - "CreateCaseResponse":{ - "type":"structure", - "members":{ - "caseId":{ - "shape":"CaseId", - "documentation":"

The AWS Support case ID requested or returned in the call. The case ID is an alphanumeric string formatted as shown in this example: case-12345678910-2013-c4c1d2bf33c5cf47

" - } - }, - "documentation":"

The AWS Support case ID returned by a successful completion of the CreateCase operation.

" - }, - "Data":{"type":"blob"}, - "DescribeAttachmentLimitExceeded":{ - "type":"structure", - "members":{ - "message":{ - "shape":"ErrorMessage", - "documentation":"

The limit for the number of DescribeAttachment requests in a short period of time has been exceeded.

" - } - }, - "exception":true, - "documentation":"

The limit for the number of DescribeAttachment requests in a short period of time has been exceeded.

" - }, - "DescribeAttachmentRequest":{ - "type":"structure", - "required":["attachmentId"], - "members":{ - "attachmentId":{ - "shape":"AttachmentId", - "documentation":"

The ID of the attachment to return. Attachment IDs are returned by the DescribeCommunications operation.

" - } - } - }, - "DescribeAttachmentResponse":{ - "type":"structure", - "members":{ - "attachment":{ - "shape":"Attachment", - "documentation":"

The attachment content and file name.

" - } - }, - "documentation":"

The content and file name of the attachment returned by the DescribeAttachment operation.

" - }, - "DescribeCasesRequest":{ - "type":"structure", - "members":{ - "caseIdList":{ - "shape":"CaseIdList", - "documentation":"

A list of ID numbers of the support cases you want returned. The maximum number of cases is 100.

" - }, - "displayId":{ - "shape":"DisplayId", - "documentation":"

The ID displayed for a case in the AWS Support Center user interface.

" - }, - "afterTime":{ - "shape":"AfterTime", - "documentation":"

The start date for a filtered date search on support case communications. Case communications are available for 12 months after creation.

" - }, - "beforeTime":{ - "shape":"BeforeTime", - "documentation":"

The end date for a filtered date search on support case communications. Case communications are available for 12 months after creation.

" - }, - "includeResolvedCases":{ - "shape":"IncludeResolvedCases", - "documentation":"

Specifies whether resolved support cases should be included in the DescribeCases results. The default is false.

" - }, - "nextToken":{ - "shape":"NextToken", - "documentation":"

A resumption point for pagination.

" - }, - "maxResults":{ - "shape":"MaxResults", - "documentation":"

The maximum number of results to return before paginating.

" - }, - "language":{ - "shape":"Language", - "documentation":"

The ISO 639-1 code for the language in which AWS provides support. AWS Support currently supports English (\"en\") and Japanese (\"ja\"). Language parameters must be passed explicitly for operations that take them.

" - }, - "includeCommunications":{ - "shape":"IncludeCommunications", - "documentation":"

Specifies whether communications should be included in the DescribeCases results. The default is true.

" - } - } - }, - "DescribeCasesResponse":{ - "type":"structure", - "members":{ - "cases":{ - "shape":"CaseList", - "documentation":"

The details for the cases that match the request.

" - }, - "nextToken":{ - "shape":"NextToken", - "documentation":"

A resumption point for pagination.

" - } - }, - "documentation":"

Returns an array of CaseDetails objects and a NextToken that defines a point for pagination in the result set.

" - }, - "DescribeCommunicationsRequest":{ - "type":"structure", - "required":["caseId"], - "members":{ - "caseId":{ - "shape":"CaseId", - "documentation":"

The AWS Support case ID requested or returned in the call. The case ID is an alphanumeric string formatted as shown in this example: case-12345678910-2013-c4c1d2bf33c5cf47

" - }, - "beforeTime":{ - "shape":"BeforeTime", - "documentation":"

The end date for a filtered date search on support case communications. Case communications are available for 12 months after creation.

" - }, - "afterTime":{ - "shape":"AfterTime", - "documentation":"

The start date for a filtered date search on support case communications. Case communications are available for 12 months after creation.

" - }, - "nextToken":{ - "shape":"NextToken", - "documentation":"

A resumption point for pagination.

" - }, - "maxResults":{ - "shape":"MaxResults", - "documentation":"

The maximum number of results to return before paginating.

" - } - } - }, - "DescribeCommunicationsResponse":{ - "type":"structure", - "members":{ - "communications":{ - "shape":"CommunicationList", - "documentation":"

The communications for the case.

" - }, - "nextToken":{ - "shape":"NextToken", - "documentation":"

A resumption point for pagination.

" - } - }, - "documentation":"

The communications returned by the DescribeCommunications operation.

" - }, - "DescribeServicesRequest":{ - "type":"structure", - "members":{ - "serviceCodeList":{ - "shape":"ServiceCodeList", - "documentation":"

A JSON-formatted list of service codes available for AWS services.

" - }, - "language":{ - "shape":"Language", - "documentation":"

The ISO 639-1 code for the language in which AWS provides support. AWS Support currently supports English (\"en\") and Japanese (\"ja\"). Language parameters must be passed explicitly for operations that take them.

" - } - } - }, - "DescribeServicesResponse":{ - "type":"structure", - "members":{ - "services":{ - "shape":"ServiceList", - "documentation":"

A JSON-formatted list of AWS services.

" - } - }, - "documentation":"

The list of AWS services returned by the DescribeServices operation.

" - }, - "DescribeSeverityLevelsRequest":{ - "type":"structure", - "members":{ - "language":{ - "shape":"Language", - "documentation":"

The ISO 639-1 code for the language in which AWS provides support. AWS Support currently supports English (\"en\") and Japanese (\"ja\"). Language parameters must be passed explicitly for operations that take them.

" - } - } - }, - "DescribeSeverityLevelsResponse":{ - "type":"structure", - "members":{ - "severityLevels":{ - "shape":"SeverityLevelsList", - "documentation":"

The available severity levels for the support case. Available severity levels are defined by your service level agreement with AWS.

" - } - }, - "documentation":"

The list of severity levels returned by the DescribeSeverityLevels operation.

" - }, - "DescribeTrustedAdvisorCheckRefreshStatusesRequest":{ - "type":"structure", - "required":["checkIds"], - "members":{ - "checkIds":{ - "shape":"StringList", - "documentation":"

The IDs of the Trusted Advisor checks.

" - } - } - }, - "DescribeTrustedAdvisorCheckRefreshStatusesResponse":{ - "type":"structure", - "required":["statuses"], - "members":{ - "statuses":{ - "shape":"TrustedAdvisorCheckRefreshStatusList", - "documentation":"

The refresh status of the specified Trusted Advisor checks.

" - } - }, - "documentation":"

The statuses of the Trusted Advisor checks returned by the DescribeTrustedAdvisorCheckRefreshStatuses operation.

" - }, - "DescribeTrustedAdvisorCheckResultRequest":{ - "type":"structure", - "required":["checkId"], - "members":{ - "checkId":{ - "shape":"String", - "documentation":"

The unique identifier for the Trusted Advisor check.

" - }, - "language":{ - "shape":"String", - "documentation":"

The ISO 639-1 code for the language in which AWS provides support. AWS Support currently supports English (\"en\") and Japanese (\"ja\"). Language parameters must be passed explicitly for operations that take them.

" - } - } - }, - "DescribeTrustedAdvisorCheckResultResponse":{ - "type":"structure", - "members":{ - "result":{ - "shape":"TrustedAdvisorCheckResult", - "documentation":"

The detailed results of the Trusted Advisor check.

" - } - }, - "documentation":"

The result of the Trusted Advisor check returned by the DescribeTrustedAdvisorCheckResult operation.

" - }, - "DescribeTrustedAdvisorCheckSummariesRequest":{ - "type":"structure", - "required":["checkIds"], - "members":{ - "checkIds":{ - "shape":"StringList", - "documentation":"

The IDs of the Trusted Advisor checks.

" - } - } - }, - "DescribeTrustedAdvisorCheckSummariesResponse":{ - "type":"structure", - "required":["summaries"], - "members":{ - "summaries":{ - "shape":"TrustedAdvisorCheckSummaryList", - "documentation":"

The summary information for the requested Trusted Advisor checks.

" - } - }, - "documentation":"

The summaries of the Trusted Advisor checks returned by the DescribeTrustedAdvisorCheckSummaries operation.

" - }, - "DescribeTrustedAdvisorChecksRequest":{ - "type":"structure", - "required":["language"], - "members":{ - "language":{ - "shape":"String", - "documentation":"

The ISO 639-1 code for the language in which AWS provides support. AWS Support currently supports English (\"en\") and Japanese (\"ja\"). Language parameters must be passed explicitly for operations that take them.

" - } - } - }, - "DescribeTrustedAdvisorChecksResponse":{ - "type":"structure", - "required":["checks"], - "members":{ - "checks":{ - "shape":"TrustedAdvisorCheckList", - "documentation":"

Information about all available Trusted Advisor checks.

" - } - }, - "documentation":"

Information about the Trusted Advisor checks returned by the DescribeTrustedAdvisorChecks operation.

" - }, - "DisplayId":{"type":"string"}, - "Double":{"type":"double"}, - "ErrorMessage":{"type":"string"}, - "ExpiryTime":{"type":"string"}, - "FileName":{"type":"string"}, - "IncludeCommunications":{"type":"boolean"}, - "IncludeResolvedCases":{"type":"boolean"}, - "InternalServerError":{ - "type":"structure", - "members":{ - "message":{ - "shape":"ErrorMessage", - "documentation":"

An internal server error occurred.

" - } - }, - "exception":true, - "fault":true, - "documentation":"

An internal server error occurred.

" - }, - "IssueType":{"type":"string"}, - "Language":{"type":"string"}, - "Long":{"type":"long"}, - "MaxResults":{ - "type":"integer", - "min":10, - "max":100 - }, - "NextToken":{"type":"string"}, - "RecentCaseCommunications":{ - "type":"structure", - "members":{ - "communications":{ - "shape":"CommunicationList", - "documentation":"

The five most recent communications associated with the case.

" - }, - "nextToken":{ - "shape":"NextToken", - "documentation":"

A resumption point for pagination.

" - } - }, - "documentation":"

The five most recent communications associated with the case.

" - }, - "RefreshTrustedAdvisorCheckRequest":{ - "type":"structure", - "required":["checkId"], - "members":{ - "checkId":{ - "shape":"String", - "documentation":"

The unique identifier for the Trusted Advisor check.

" - } - } - }, - "RefreshTrustedAdvisorCheckResponse":{ - "type":"structure", - "required":["status"], - "members":{ - "status":{ - "shape":"TrustedAdvisorCheckRefreshStatus", - "documentation":"

The current refresh status for a check, including the amount of time until the check is eligible for refresh.

" - } - }, - "documentation":"

The current refresh status of a Trusted Advisor check.

" - }, - "ResolveCaseRequest":{ - "type":"structure", - "members":{ - "caseId":{ - "shape":"CaseId", - "documentation":"

The AWS Support case ID requested or returned in the call. The case ID is an alphanumeric string formatted as shown in this example: case-12345678910-2013-c4c1d2bf33c5cf47

" - } - } - }, - "ResolveCaseResponse":{ - "type":"structure", - "members":{ - "initialCaseStatus":{ - "shape":"CaseStatus", - "documentation":"

The status of the case when the ResolveCase request was sent.

" - }, - "finalCaseStatus":{ - "shape":"CaseStatus", - "documentation":"

The status of the case after the ResolveCase request was processed.

" - } - }, - "documentation":"

The status of the case returned by the ResolveCase operation.

" - }, - "Result":{"type":"boolean"}, - "Service":{ - "type":"structure", - "members":{ - "code":{ - "shape":"ServiceCode", - "documentation":"

The code for an AWS service returned by the DescribeServices response. The Name element contains the corresponding friendly name.

" - }, - "name":{ - "shape":"ServiceName", - "documentation":"

The friendly name for an AWS service. The Code element contains the corresponding code.

" - }, - "categories":{ - "shape":"CategoryList", - "documentation":"

A list of categories that describe the type of support issue a case describes. Categories consist of a category name and a category code. Category names and codes are passed to AWS Support when you call CreateCase.

" - } - }, - "documentation":"

Information about an AWS service returned by the DescribeServices operation.

" - }, - "ServiceCode":{ - "type":"string", - "pattern":"[0-9a-z\\-_]+" - }, - "ServiceCodeList":{ - "type":"list", - "member":{"shape":"ServiceCode"}, - "min":0, - "max":100 - }, - "ServiceList":{ - "type":"list", - "member":{"shape":"Service"} - }, - "ServiceName":{"type":"string"}, - "SeverityCode":{"type":"string"}, - "SeverityLevel":{ - "type":"structure", - "members":{ - "code":{ - "shape":"SeverityLevelCode", - "documentation":"

One of four values: \"low,\" \"medium,\" \"high,\" and \"urgent\". These values correspond to response times returned to the caller in SeverityLevel.name.

" - }, - "name":{ - "shape":"SeverityLevelName", - "documentation":"

The name of the severity level that corresponds to the severity level code.

" - } - }, - "documentation":"

A code and name pair that represent a severity level that can be applied to a support case.

" - }, - "SeverityLevelCode":{"type":"string"}, - "SeverityLevelName":{"type":"string"}, - "SeverityLevelsList":{ - "type":"list", - "member":{"shape":"SeverityLevel"} - }, - "Status":{"type":"string"}, - "String":{"type":"string"}, - "StringList":{ - "type":"list", - "member":{"shape":"String"} - }, - "Subject":{"type":"string"}, - "SubmittedBy":{"type":"string"}, - "TimeCreated":{"type":"string"}, - "TrustedAdvisorCategorySpecificSummary":{ - "type":"structure", - "members":{ - "costOptimizing":{ - "shape":"TrustedAdvisorCostOptimizingSummary", - "documentation":"

The summary information about cost savings for a Trusted Advisor check that is in the Cost Optimizing category.

" - } - }, - "documentation":"

The container for summary information that relates to the category of the Trusted Advisor check.

" - }, - "TrustedAdvisorCheckDescription":{ - "type":"structure", - "required":[ - "id", - "name", - "description", - "category", - "metadata" - ], - "members":{ - "id":{ - "shape":"String", - "documentation":"

The unique identifier for the Trusted Advisor check.

" - }, - "name":{ - "shape":"String", - "documentation":"

The display name for the Trusted Advisor check.

" - }, - "description":{ - "shape":"String", - "documentation":"

The description of the Trusted Advisor check, which includes the alert criteria and recommended actions (contains HTML markup).

" - }, - "category":{ - "shape":"String", - "documentation":"

The category of the Trusted Advisor check.

" - }, - "metadata":{ - "shape":"StringList", - "documentation":"

The column headings for the data returned by the Trusted Advisor check. The order of the headings corresponds to the order of the data in the Metadata element of the TrustedAdvisorResourceDetail for the check. Metadata contains all the data that is shown in the Excel download, even in those cases where the UI shows just summary data.

" - } - }, - "documentation":"

The description and metadata for a Trusted Advisor check.

" - }, - "TrustedAdvisorCheckList":{ - "type":"list", - "member":{"shape":"TrustedAdvisorCheckDescription"} - }, - "TrustedAdvisorCheckRefreshStatus":{ - "type":"structure", - "required":[ - "checkId", - "status", - "millisUntilNextRefreshable" - ], - "members":{ - "checkId":{ - "shape":"String", - "documentation":"

The unique identifier for the Trusted Advisor check.

" - }, - "status":{ - "shape":"String", - "documentation":"

The status of the Trusted Advisor check for which a refresh has been requested: \"none\", \"enqueued\", \"processing\", \"success\", or \"abandoned\".

" - }, - "millisUntilNextRefreshable":{ - "shape":"Long", - "documentation":"

The amount of time, in milliseconds, until the Trusted Advisor check is eligible for refresh.

" - } - }, - "documentation":"

The refresh status of a Trusted Advisor check.

" - }, - "TrustedAdvisorCheckRefreshStatusList":{ - "type":"list", - "member":{"shape":"TrustedAdvisorCheckRefreshStatus"} - }, - "TrustedAdvisorCheckResult":{ - "type":"structure", - "required":[ - "checkId", - "timestamp", - "status", - "resourcesSummary", - "categorySpecificSummary", - "flaggedResources" - ], - "members":{ - "checkId":{ - "shape":"String", - "documentation":"

The unique identifier for the Trusted Advisor check.

" - }, - "timestamp":{ - "shape":"String", - "documentation":"

The time of the last refresh of the check.

" - }, - "status":{ - "shape":"String", - "documentation":"

The alert status of the check: \"ok\" (green), \"warning\" (yellow), \"error\" (red), or \"not_available\".

" - }, - "resourcesSummary":{"shape":"TrustedAdvisorResourcesSummary"}, - "categorySpecificSummary":{ - "shape":"TrustedAdvisorCategorySpecificSummary", - "documentation":"

Summary information that relates to the category of the check. Cost Optimizing is the only category that is currently supported.

" - }, - "flaggedResources":{ - "shape":"TrustedAdvisorResourceDetailList", - "documentation":"

The details about each resource listed in the check result.

" - } - }, - "documentation":"

The results of a Trusted Advisor check returned by DescribeTrustedAdvisorCheckResult.

" - }, - "TrustedAdvisorCheckSummary":{ - "type":"structure", - "required":[ - "checkId", - "timestamp", - "status", - "resourcesSummary", - "categorySpecificSummary" - ], - "members":{ - "checkId":{ - "shape":"String", - "documentation":"

The unique identifier for the Trusted Advisor check.

" - }, - "timestamp":{ - "shape":"String", - "documentation":"

The time of the last refresh of the check.

" - }, - "status":{ - "shape":"String", - "documentation":"

The alert status of the check: \"ok\" (green), \"warning\" (yellow), \"error\" (red), or \"not_available\".

" - }, - "hasFlaggedResources":{ - "shape":"Boolean", - "documentation":"

Specifies whether the Trusted Advisor check has flagged resources.

" - }, - "resourcesSummary":{"shape":"TrustedAdvisorResourcesSummary"}, - "categorySpecificSummary":{ - "shape":"TrustedAdvisorCategorySpecificSummary", - "documentation":"

Summary information that relates to the category of the check. Cost Optimizing is the only category that is currently supported.

" - } - }, - "documentation":"

A summary of a Trusted Advisor check result, including the alert status, last refresh, and number of resources examined.

" - }, - "TrustedAdvisorCheckSummaryList":{ - "type":"list", - "member":{"shape":"TrustedAdvisorCheckSummary"} - }, - "TrustedAdvisorCostOptimizingSummary":{ - "type":"structure", - "required":[ - "estimatedMonthlySavings", - "estimatedPercentMonthlySavings" - ], - "members":{ - "estimatedMonthlySavings":{ - "shape":"Double", - "documentation":"

The estimated monthly savings that might be realized if the recommended actions are taken.

" - }, - "estimatedPercentMonthlySavings":{ - "shape":"Double", - "documentation":"

The estimated percentage of savings that might be realized if the recommended actions are taken.

" - } - }, - "documentation":"

The estimated cost savings that might be realized if the recommended actions are taken.

" - }, - "TrustedAdvisorResourceDetail":{ - "type":"structure", - "required":[ - "status", - "region", - "resourceId", - "metadata" - ], - "members":{ - "status":{ - "shape":"String", - "documentation":"

The status code for the resource identified in the Trusted Advisor check.

" - }, - "region":{ - "shape":"String", - "documentation":"

The AWS region in which the identified resource is located.

" - }, - "resourceId":{ - "shape":"String", - "documentation":"

The unique identifier for the identified resource.

" - }, - "isSuppressed":{ - "shape":"Boolean", - "documentation":"

Specifies whether the AWS resource was ignored by Trusted Advisor because it was marked as suppressed by the user.

" - }, - "metadata":{ - "shape":"StringList", - "documentation":"

Additional information about the identified resource. The exact metadata and its order can be obtained by inspecting the TrustedAdvisorCheckDescription object returned by the call to DescribeTrustedAdvisorChecks. Metadata contains all the data that is shown in the Excel download, even in those cases where the UI shows just summary data.

" - } - }, - "documentation":"

Contains information about a resource identified by a Trusted Advisor check.

" - }, - "TrustedAdvisorResourceDetailList":{ - "type":"list", - "member":{"shape":"TrustedAdvisorResourceDetail"} - }, - "TrustedAdvisorResourcesSummary":{ - "type":"structure", - "required":[ - "resourcesProcessed", - "resourcesFlagged", - "resourcesIgnored", - "resourcesSuppressed" - ], - "members":{ - "resourcesProcessed":{ - "shape":"Long", - "documentation":"

The number of AWS resources that were analyzed by the Trusted Advisor check.

" - }, - "resourcesFlagged":{ - "shape":"Long", - "documentation":"

The number of AWS resources that were flagged (listed) by the Trusted Advisor check.

" - }, - "resourcesIgnored":{ - "shape":"Long", - "documentation":"

The number of AWS resources ignored by Trusted Advisor because information was unavailable.

" - }, - "resourcesSuppressed":{ - "shape":"Long", - "documentation":"

The number of AWS resources ignored by Trusted Advisor because they were marked as suppressed by the user.

" - } - }, - "documentation":"

Details about AWS resources that were analyzed in a call to Trusted Advisor DescribeTrustedAdvisorCheckSummaries.

" - } - } -} diff --git a/src/github.com/getlantern/aws-sdk-go/apis/support/2013-04-15.paginators.json b/src/github.com/getlantern/aws-sdk-go/apis/support/2013-04-15.paginators.json deleted file mode 100644 index 11bdb62cf1..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/apis/support/2013-04-15.paginators.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "pagination": { - "DescribeCases": { - "input_token": "nextToken", - "output_token": "nextToken", - "limit_key": "maxResults", - "result_key": "cases" - }, - "DescribeCommunications": { - "input_token": "nextToken", - "output_token": "nextToken", - "limit_key": "maxResults", - "result_key": "communications" - } - } -} diff --git a/src/github.com/getlantern/aws-sdk-go/apis/swf/2012-01-25.normal.json b/src/github.com/getlantern/aws-sdk-go/apis/swf/2012-01-25.normal.json deleted file mode 100644 index a98df8d932..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/apis/swf/2012-01-25.normal.json +++ /dev/null @@ -1,4518 +0,0 @@ -{ - "metadata":{ - "apiVersion":"2012-01-25", - "endpointPrefix":"swf", - "jsonVersion":"1.0", - "serviceAbbreviation":"Amazon SWF", - "serviceFullName":"Amazon Simple Workflow Service", - "signatureVersion":"v4", - "targetPrefix":"SimpleWorkflowService", - "timestampFormat":"unixTimestamp", - "protocol":"json" - }, - "documentation":"Amazon Simple Workflow Service

The Amazon Simple Workflow Service (Amazon SWF) makes it easy to build applications that use Amazon's cloud to coordinate work across distributed components. In Amazon SWF, a task represents a logical unit of work that is performed by a component of your workflow. Coordinating tasks in a workflow involves managing intertask dependencies, scheduling, and concurrency in accordance with the logical flow of the application.

Amazon SWF gives you full control over implementing tasks and coordinating them without worrying about underlying complexities such as tracking their progress and maintaining their state.

This documentation serves as reference only. For a broader overview of the Amazon SWF programming model, see the Amazon SWF Developer Guide.

", - "operations":{ - "CountClosedWorkflowExecutions":{ - "name":"CountClosedWorkflowExecutions", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CountClosedWorkflowExecutionsInput"}, - "output":{ - "shape":"WorkflowExecutionCount", - "documentation":"

Contains the count of workflow executions returned from CountOpenWorkflowExecutions or CountClosedWorkflowExecutions

" - }, - "errors":[ - { - "shape":"UnknownResourceFault", - "exception":true, - "documentation":"

Returned when the named resource cannot be found with in the scope of this operation (region or domain). This could happen if the named resource was never created or is no longer available for this operation.

" - }, - { - "shape":"OperationNotPermittedFault", - "exception":true, - "documentation":"

Returned when the caller does not have sufficient permissions to invoke the action.

" - } - ], - "documentation":"

Returns the number of closed workflow executions within the given domain that meet the specified filtering criteria.

This operation is eventually consistent. The results are best effort and may not exactly reflect recent updates and changes.

Access Control

You can use IAM policies to control this action's access to Amazon SWF resources as follows:

If the caller does not have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's cause parameter will be set to OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows.

" - }, - "CountOpenWorkflowExecutions":{ - "name":"CountOpenWorkflowExecutions", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CountOpenWorkflowExecutionsInput"}, - "output":{ - "shape":"WorkflowExecutionCount", - "documentation":"

Contains the count of workflow executions returned from CountOpenWorkflowExecutions or CountClosedWorkflowExecutions

" - }, - "errors":[ - { - "shape":"UnknownResourceFault", - "exception":true, - "documentation":"

Returned when the named resource cannot be found with in the scope of this operation (region or domain). This could happen if the named resource was never created or is no longer available for this operation.

" - }, - { - "shape":"OperationNotPermittedFault", - "exception":true, - "documentation":"

Returned when the caller does not have sufficient permissions to invoke the action.

" - } - ], - "documentation":"

Returns the number of open workflow executions within the given domain that meet the specified filtering criteria.

This operation is eventually consistent. The results are best effort and may not exactly reflect recent updates and changes.

Access Control

You can use IAM policies to control this action's access to Amazon SWF resources as follows:

If the caller does not have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's cause parameter will be set to OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows.

" - }, - "CountPendingActivityTasks":{ - "name":"CountPendingActivityTasks", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CountPendingActivityTasksInput"}, - "output":{ - "shape":"PendingTaskCount", - "documentation":"

Contains the count of tasks in a task list.

" - }, - "errors":[ - { - "shape":"UnknownResourceFault", - "exception":true, - "documentation":"

Returned when the named resource cannot be found with in the scope of this operation (region or domain). This could happen if the named resource was never created or is no longer available for this operation.

" - }, - { - "shape":"OperationNotPermittedFault", - "exception":true, - "documentation":"

Returned when the caller does not have sufficient permissions to invoke the action.

" - } - ], - "documentation":"

Returns the estimated number of activity tasks in the specified task list. The count returned is an approximation and is not guaranteed to be exact. If you specify a task list that no activity task was ever scheduled in then 0 will be returned.

Access Control

You can use IAM policies to control this action's access to Amazon SWF resources as follows:

If the caller does not have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's cause parameter will be set to OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows.

" - }, - "CountPendingDecisionTasks":{ - "name":"CountPendingDecisionTasks", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"CountPendingDecisionTasksInput"}, - "output":{ - "shape":"PendingTaskCount", - "documentation":"

Contains the count of tasks in a task list.

" - }, - "errors":[ - { - "shape":"UnknownResourceFault", - "exception":true, - "documentation":"

Returned when the named resource cannot be found with in the scope of this operation (region or domain). This could happen if the named resource was never created or is no longer available for this operation.

" - }, - { - "shape":"OperationNotPermittedFault", - "exception":true, - "documentation":"

Returned when the caller does not have sufficient permissions to invoke the action.

" - } - ], - "documentation":"

Returns the estimated number of decision tasks in the specified task list. The count returned is an approximation and is not guaranteed to be exact. If you specify a task list that no decision task was ever scheduled in then 0 will be returned.

Access Control

You can use IAM policies to control this action's access to Amazon SWF resources as follows:

If the caller does not have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's cause parameter will be set to OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows.

" - }, - "DeprecateActivityType":{ - "name":"DeprecateActivityType", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DeprecateActivityTypeInput"}, - "errors":[ - { - "shape":"UnknownResourceFault", - "exception":true, - "documentation":"

Returned when the named resource cannot be found with in the scope of this operation (region or domain). This could happen if the named resource was never created or is no longer available for this operation.

" - }, - { - "shape":"TypeDeprecatedFault", - "exception":true, - "documentation":"

Returned when the specified activity or workflow type was already deprecated.

" - }, - { - "shape":"OperationNotPermittedFault", - "exception":true, - "documentation":"

Returned when the caller does not have sufficient permissions to invoke the action.

" - } - ], - "documentation":"

Deprecates the specified activity type. After an activity type has been deprecated, you cannot create new tasks of that activity type. Tasks of this type that were scheduled before the type was deprecated will continue to run.

This operation is eventually consistent. The results are best effort and may not exactly reflect recent updates and changes.

Access Control

You can use IAM policies to control this action's access to Amazon SWF resources as follows:

If the caller does not have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's cause parameter will be set to OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows.

" - }, - "DeprecateDomain":{ - "name":"DeprecateDomain", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DeprecateDomainInput"}, - "errors":[ - { - "shape":"UnknownResourceFault", - "exception":true, - "documentation":"

Returned when the named resource cannot be found with in the scope of this operation (region or domain). This could happen if the named resource was never created or is no longer available for this operation.

" - }, - { - "shape":"DomainDeprecatedFault", - "exception":true, - "documentation":"

Returned when the specified domain has been deprecated.

" - }, - { - "shape":"OperationNotPermittedFault", - "exception":true, - "documentation":"

Returned when the caller does not have sufficient permissions to invoke the action.

" - } - ], - "documentation":"

Deprecates the specified domain. After a domain has been deprecated it cannot be used to create new workflow executions or register new types. However, you can still use visibility actions on this domain. Deprecating a domain also deprecates all activity and workflow types registered in the domain. Executions that were started before the domain was deprecated will continue to run.

This operation is eventually consistent. The results are best effort and may not exactly reflect recent updates and changes.

Access Control

You can use IAM policies to control this action's access to Amazon SWF resources as follows:

If the caller does not have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's cause parameter will be set to OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows.

" - }, - "DeprecateWorkflowType":{ - "name":"DeprecateWorkflowType", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DeprecateWorkflowTypeInput"}, - "errors":[ - { - "shape":"UnknownResourceFault", - "exception":true, - "documentation":"

Returned when the named resource cannot be found with in the scope of this operation (region or domain). This could happen if the named resource was never created or is no longer available for this operation.

" - }, - { - "shape":"TypeDeprecatedFault", - "exception":true, - "documentation":"

Returned when the specified activity or workflow type was already deprecated.

" - }, - { - "shape":"OperationNotPermittedFault", - "exception":true, - "documentation":"

Returned when the caller does not have sufficient permissions to invoke the action.

" - } - ], - "documentation":"

Deprecates the specified workflow type. After a workflow type has been deprecated, you cannot create new executions of that type. Executions that were started before the type was deprecated will continue to run. A deprecated workflow type may still be used when calling visibility actions.

This operation is eventually consistent. The results are best effort and may not exactly reflect recent updates and changes.

Access Control

You can use IAM policies to control this action's access to Amazon SWF resources as follows:

If the caller does not have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's cause parameter will be set to OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows.

" - }, - "DescribeActivityType":{ - "name":"DescribeActivityType", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeActivityTypeInput"}, - "output":{ - "shape":"ActivityTypeDetail", - "documentation":"

Detailed information about an activity type.

" - }, - "errors":[ - { - "shape":"UnknownResourceFault", - "exception":true, - "documentation":"

Returned when the named resource cannot be found with in the scope of this operation (region or domain). This could happen if the named resource was never created or is no longer available for this operation.

" - }, - { - "shape":"OperationNotPermittedFault", - "exception":true, - "documentation":"

Returned when the caller does not have sufficient permissions to invoke the action.

" - } - ], - "documentation":"

Returns information about the specified activity type. This includes configuration settings provided when the type was registered and other general information about the type.

Access Control

You can use IAM policies to control this action's access to Amazon SWF resources as follows:

If the caller does not have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's cause parameter will be set to OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows.

" - }, - "DescribeDomain":{ - "name":"DescribeDomain", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeDomainInput"}, - "output":{ - "shape":"DomainDetail", - "documentation":"

Contains details of a domain.

" - }, - "errors":[ - { - "shape":"UnknownResourceFault", - "exception":true, - "documentation":"

Returned when the named resource cannot be found with in the scope of this operation (region or domain). This could happen if the named resource was never created or is no longer available for this operation.

" - }, - { - "shape":"OperationNotPermittedFault", - "exception":true, - "documentation":"

Returned when the caller does not have sufficient permissions to invoke the action.

" - } - ], - "documentation":"

Returns information about the specified domain, including description and status.

Access Control

You can use IAM policies to control this action's access to Amazon SWF resources as follows:

If the caller does not have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's cause parameter will be set to OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows.

" - }, - "DescribeWorkflowExecution":{ - "name":"DescribeWorkflowExecution", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeWorkflowExecutionInput"}, - "output":{ - "shape":"WorkflowExecutionDetail", - "documentation":"

Contains details about a workflow execution.

" - }, - "errors":[ - { - "shape":"UnknownResourceFault", - "exception":true, - "documentation":"

Returned when the named resource cannot be found with in the scope of this operation (region or domain). This could happen if the named resource was never created or is no longer available for this operation.

" - }, - { - "shape":"OperationNotPermittedFault", - "exception":true, - "documentation":"

Returned when the caller does not have sufficient permissions to invoke the action.

" - } - ], - "documentation":"

Returns information about the specified workflow execution including its type and some statistics.

This operation is eventually consistent. The results are best effort and may not exactly reflect recent updates and changes.

Access Control

You can use IAM policies to control this action's access to Amazon SWF resources as follows:

If the caller does not have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's cause parameter will be set to OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows.

" - }, - "DescribeWorkflowType":{ - "name":"DescribeWorkflowType", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"DescribeWorkflowTypeInput"}, - "output":{ - "shape":"WorkflowTypeDetail", - "documentation":"

Contains details about a workflow type.

" - }, - "errors":[ - { - "shape":"UnknownResourceFault", - "exception":true, - "documentation":"

Returned when the named resource cannot be found with in the scope of this operation (region or domain). This could happen if the named resource was never created or is no longer available for this operation.

" - }, - { - "shape":"OperationNotPermittedFault", - "exception":true, - "documentation":"

Returned when the caller does not have sufficient permissions to invoke the action.

" - } - ], - "documentation":"

Returns information about the specified workflow type. This includes configuration settings specified when the type was registered and other information such as creation date, current status, etc.

Access Control

You can use IAM policies to control this action's access to Amazon SWF resources as follows:

If the caller does not have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's cause parameter will be set to OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows.

" - }, - "GetWorkflowExecutionHistory":{ - "name":"GetWorkflowExecutionHistory", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"GetWorkflowExecutionHistoryInput"}, - "output":{ - "shape":"History", - "documentation":"

Paginated representation of a workflow history for a workflow execution. This is the up to date, complete and authoritative record of the events related to all tasks and events in the life of the workflow execution.

" - }, - "errors":[ - { - "shape":"UnknownResourceFault", - "exception":true, - "documentation":"

Returned when the named resource cannot be found with in the scope of this operation (region or domain). This could happen if the named resource was never created or is no longer available for this operation.

" - }, - { - "shape":"OperationNotPermittedFault", - "exception":true, - "documentation":"

Returned when the caller does not have sufficient permissions to invoke the action.

" - } - ], - "documentation":"

Returns the history of the specified workflow execution. The results may be split into multiple pages. To retrieve subsequent pages, make the call again using the nextPageToken returned by the initial call.

This operation is eventually consistent. The results are best effort and may not exactly reflect recent updates and changes.

Access Control

You can use IAM policies to control this action's access to Amazon SWF resources as follows:

If the caller does not have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's cause parameter will be set to OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows.

" - }, - "ListActivityTypes":{ - "name":"ListActivityTypes", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"ListActivityTypesInput"}, - "output":{ - "shape":"ActivityTypeInfos", - "documentation":"

Contains a paginated list of activity type information structures.

" - }, - "errors":[ - { - "shape":"OperationNotPermittedFault", - "exception":true, - "documentation":"

Returned when the caller does not have sufficient permissions to invoke the action.

" - }, - { - "shape":"UnknownResourceFault", - "exception":true, - "documentation":"

Returned when the named resource cannot be found with in the scope of this operation (region or domain). This could happen if the named resource was never created or is no longer available for this operation.

" - } - ], - "documentation":"

Returns information about all activities registered in the specified domain that match the specified name and registration status. The result includes information like creation date, current status of the activity, etc. The results may be split into multiple pages. To retrieve subsequent pages, make the call again using the nextPageToken returned by the initial call.

Access Control

You can use IAM policies to control this action's access to Amazon SWF resources as follows:

If the caller does not have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's cause parameter will be set to OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows.

" - }, - "ListClosedWorkflowExecutions":{ - "name":"ListClosedWorkflowExecutions", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"ListClosedWorkflowExecutionsInput"}, - "output":{ - "shape":"WorkflowExecutionInfos", - "documentation":"

Contains a paginated list of information about workflow executions.

" - }, - "errors":[ - { - "shape":"UnknownResourceFault", - "exception":true, - "documentation":"

Returned when the named resource cannot be found with in the scope of this operation (region or domain). This could happen if the named resource was never created or is no longer available for this operation.

" - }, - { - "shape":"OperationNotPermittedFault", - "exception":true, - "documentation":"

Returned when the caller does not have sufficient permissions to invoke the action.

" - } - ], - "documentation":"

Returns a list of closed workflow executions in the specified domain that meet the filtering criteria. The results may be split into multiple pages. To retrieve subsequent pages, make the call again using the nextPageToken returned by the initial call.

This operation is eventually consistent. The results are best effort and may not exactly reflect recent updates and changes.

Access Control

You can use IAM policies to control this action's access to Amazon SWF resources as follows:

If the caller does not have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's cause parameter will be set to OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows.

" - }, - "ListDomains":{ - "name":"ListDomains", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"ListDomainsInput"}, - "output":{ - "shape":"DomainInfos", - "documentation":"

Contains a paginated collection of DomainInfo structures.

" - }, - "errors":[ - { - "shape":"OperationNotPermittedFault", - "exception":true, - "documentation":"

Returned when the caller does not have sufficient permissions to invoke the action.

" - } - ], - "documentation":"

Returns the list of domains registered in the account. The results may be split into multiple pages. To retrieve subsequent pages, make the call again using the nextPageToken returned by the initial call.

This operation is eventually consistent. The results are best effort and may not exactly reflect recent updates and changes.

Access Control

You can use IAM policies to control this action's access to Amazon SWF resources as follows:

If the caller does not have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's cause parameter will be set to OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows.

" - }, - "ListOpenWorkflowExecutions":{ - "name":"ListOpenWorkflowExecutions", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"ListOpenWorkflowExecutionsInput"}, - "output":{ - "shape":"WorkflowExecutionInfos", - "documentation":"

Contains a paginated list of information about workflow executions.

" - }, - "errors":[ - { - "shape":"UnknownResourceFault", - "exception":true, - "documentation":"

Returned when the named resource cannot be found with in the scope of this operation (region or domain). This could happen if the named resource was never created or is no longer available for this operation.

" - }, - { - "shape":"OperationNotPermittedFault", - "exception":true, - "documentation":"

Returned when the caller does not have sufficient permissions to invoke the action.

" - } - ], - "documentation":"

Returns a list of open workflow executions in the specified domain that meet the filtering criteria. The results may be split into multiple pages. To retrieve subsequent pages, make the call again using the nextPageToken returned by the initial call.

This operation is eventually consistent. The results are best effort and may not exactly reflect recent updates and changes.

Access Control

You can use IAM policies to control this action's access to Amazon SWF resources as follows:

If the caller does not have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's cause parameter will be set to OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows.

" - }, - "ListWorkflowTypes":{ - "name":"ListWorkflowTypes", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"ListWorkflowTypesInput"}, - "output":{ - "shape":"WorkflowTypeInfos", - "documentation":"

Contains a paginated list of information structures about workflow types.

" - }, - "errors":[ - { - "shape":"OperationNotPermittedFault", - "exception":true, - "documentation":"

Returned when the caller does not have sufficient permissions to invoke the action.

" - }, - { - "shape":"UnknownResourceFault", - "exception":true, - "documentation":"

Returned when the named resource cannot be found with in the scope of this operation (region or domain). This could happen if the named resource was never created or is no longer available for this operation.

" - } - ], - "documentation":"

Returns information about workflow types in the specified domain. The results may be split into multiple pages that can be retrieved by making the call repeatedly.

Access Control

You can use IAM policies to control this action's access to Amazon SWF resources as follows:

If the caller does not have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's cause parameter will be set to OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows.

" - }, - "PollForActivityTask":{ - "name":"PollForActivityTask", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"PollForActivityTaskInput"}, - "output":{ - "shape":"ActivityTask", - "documentation":"

Unit of work sent to an activity worker.

" - }, - "errors":[ - { - "shape":"UnknownResourceFault", - "exception":true, - "documentation":"

Returned when the named resource cannot be found with in the scope of this operation (region or domain). This could happen if the named resource was never created or is no longer available for this operation.

" - }, - { - "shape":"OperationNotPermittedFault", - "exception":true, - "documentation":"

Returned when the caller does not have sufficient permissions to invoke the action.

" - }, - { - "shape":"LimitExceededFault", - "exception":true, - "documentation":"

Returned by any operation if a system imposed limitation has been reached. To address this fault you should either clean up unused resources or increase the limit by contacting AWS.

" - } - ], - "documentation":"

Used by workers to get an ActivityTask from the specified activity taskList. This initiates a long poll, where the service holds the HTTP connection open and responds as soon as a task becomes available. The maximum time the service holds on to the request before responding is 60 seconds. If no task is available within 60 seconds, the poll will return an empty result. An empty result, in this context, means that an ActivityTask is returned, but that the value of taskToken is an empty string. If a task is returned, the worker should use its type to identify and process it correctly.

Workers should set their client side socket timeout to at least 70 seconds (10 seconds higher than the maximum time service may hold the poll request).

Access Control

You can use IAM policies to control this action's access to Amazon SWF resources as follows:

If the caller does not have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's cause parameter will be set to OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows.

" - }, - "PollForDecisionTask":{ - "name":"PollForDecisionTask", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"PollForDecisionTaskInput"}, - "output":{ - "shape":"DecisionTask", - "documentation":"

A structure that represents a decision task. Decision tasks are sent to deciders in order for them to make decisions.

" - }, - "errors":[ - { - "shape":"UnknownResourceFault", - "exception":true, - "documentation":"

Returned when the named resource cannot be found with in the scope of this operation (region or domain). This could happen if the named resource was never created or is no longer available for this operation.

" - }, - { - "shape":"OperationNotPermittedFault", - "exception":true, - "documentation":"

Returned when the caller does not have sufficient permissions to invoke the action.

" - }, - { - "shape":"LimitExceededFault", - "exception":true, - "documentation":"

Returned by any operation if a system imposed limitation has been reached. To address this fault you should either clean up unused resources or increase the limit by contacting AWS.

" - } - ], - "documentation":"

Used by deciders to get a DecisionTask from the specified decision taskList. A decision task may be returned for any open workflow execution that is using the specified task list. The task includes a paginated view of the history of the workflow execution. The decider should use the workflow type and the history to determine how to properly handle the task.

This action initiates a long poll, where the service holds the HTTP connection open and responds as soon a task becomes available. If no decision task is available in the specified task list before the timeout of 60 seconds expires, an empty result is returned. An empty result, in this context, means that a DecisionTask is returned, but that the value of taskToken is an empty string.

Deciders should set their client side socket timeout to at least 70 seconds (10 seconds higher than the timeout). Because the number of workflow history events for a single workflow execution might be very large, the result returned might be split up across a number of pages. To retrieve subsequent pages, make additional calls to PollForDecisionTask using the nextPageToken returned by the initial call. Note that you do not call GetWorkflowExecutionHistory with this nextPageToken. Instead, call PollForDecisionTask again.

Access Control

You can use IAM policies to control this action's access to Amazon SWF resources as follows:

If the caller does not have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's cause parameter will be set to OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows.

" - }, - "RecordActivityTaskHeartbeat":{ - "name":"RecordActivityTaskHeartbeat", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"RecordActivityTaskHeartbeatInput"}, - "output":{ - "shape":"ActivityTaskStatus", - "documentation":"

Status information about an activity task.

" - }, - "errors":[ - { - "shape":"UnknownResourceFault", - "exception":true, - "documentation":"

Returned when the named resource cannot be found with in the scope of this operation (region or domain). This could happen if the named resource was never created or is no longer available for this operation.

" - }, - { - "shape":"OperationNotPermittedFault", - "exception":true, - "documentation":"

Returned when the caller does not have sufficient permissions to invoke the action.

" - } - ], - "documentation":"

Used by activity workers to report to the service that the ActivityTask represented by the specified taskToken is still making progress. The worker can also (optionally) specify details of the progress, for example percent complete, using the details parameter. This action can also be used by the worker as a mechanism to check if cancellation is being requested for the activity task. If a cancellation is being attempted for the specified task, then the boolean cancelRequested flag returned by the service is set to true.

This action resets the taskHeartbeatTimeout clock. The taskHeartbeatTimeout is specified in RegisterActivityType.

This action does not in itself create an event in the workflow execution history. However, if the task times out, the workflow execution history will contain a ActivityTaskTimedOut event that contains the information from the last heartbeat generated by the activity worker.

The taskStartToCloseTimeout of an activity type is the maximum duration of an activity task, regardless of the number of RecordActivityTaskHeartbeat requests received. The taskStartToCloseTimeout is also specified in RegisterActivityType. This operation is only useful for long-lived activities to report liveliness of the task and to determine if a cancellation is being attempted. If the cancelRequested flag returns true, a cancellation is being attempted. If the worker can cancel the activity, it should respond with RespondActivityTaskCanceled. Otherwise, it should ignore the cancellation request.

Access Control

You can use IAM policies to control this action's access to Amazon SWF resources as follows:

If the caller does not have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's cause parameter will be set to OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows.

" - }, - "RegisterActivityType":{ - "name":"RegisterActivityType", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"RegisterActivityTypeInput"}, - "errors":[ - { - "shape":"TypeAlreadyExistsFault", - "exception":true, - "documentation":"

Returned if the type already exists in the specified domain. You will get this fault even if the existing type is in deprecated status. You can specify another version if the intent is to create a new distinct version of the type.

" - }, - { - "shape":"LimitExceededFault", - "exception":true, - "documentation":"

Returned by any operation if a system imposed limitation has been reached. To address this fault you should either clean up unused resources or increase the limit by contacting AWS.

" - }, - { - "shape":"UnknownResourceFault", - "exception":true, - "documentation":"

Returned when the named resource cannot be found with in the scope of this operation (region or domain). This could happen if the named resource was never created or is no longer available for this operation.

" - }, - { - "shape":"OperationNotPermittedFault", - "exception":true, - "documentation":"

Returned when the caller does not have sufficient permissions to invoke the action.

" - } - ], - "documentation":"

Registers a new activity type along with its configuration settings in the specified domain.

A TypeAlreadyExists fault is returned if the type already exists in the domain. You cannot change any configuration settings of the type after its registration, and it must be registered as a new version.

Access Control

You can use IAM policies to control this action's access to Amazon SWF resources as follows:

If the caller does not have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's cause parameter will be set to OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows.

" - }, - "RegisterDomain":{ - "name":"RegisterDomain", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"RegisterDomainInput"}, - "errors":[ - { - "shape":"DomainAlreadyExistsFault", - "exception":true, - "documentation":"

Returned if the specified domain already exists. You will get this fault even if the existing domain is in deprecated status.

" - }, - { - "shape":"LimitExceededFault", - "exception":true, - "documentation":"

Returned by any operation if a system imposed limitation has been reached. To address this fault you should either clean up unused resources or increase the limit by contacting AWS.

" - }, - { - "shape":"OperationNotPermittedFault", - "exception":true, - "documentation":"

Returned when the caller does not have sufficient permissions to invoke the action.

" - } - ], - "documentation":"

Registers a new domain.

Access Control

You can use IAM policies to control this action's access to Amazon SWF resources as follows:

If the caller does not have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's cause parameter will be set to OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows.

" - }, - "RegisterWorkflowType":{ - "name":"RegisterWorkflowType", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"RegisterWorkflowTypeInput"}, - "errors":[ - { - "shape":"TypeAlreadyExistsFault", - "exception":true, - "documentation":"

Returned if the type already exists in the specified domain. You will get this fault even if the existing type is in deprecated status. You can specify another version if the intent is to create a new distinct version of the type.

" - }, - { - "shape":"LimitExceededFault", - "exception":true, - "documentation":"

Returned by any operation if a system imposed limitation has been reached. To address this fault you should either clean up unused resources or increase the limit by contacting AWS.

" - }, - { - "shape":"UnknownResourceFault", - "exception":true, - "documentation":"

Returned when the named resource cannot be found with in the scope of this operation (region or domain). This could happen if the named resource was never created or is no longer available for this operation.

" - }, - { - "shape":"OperationNotPermittedFault", - "exception":true, - "documentation":"

Returned when the caller does not have sufficient permissions to invoke the action.

" - } - ], - "documentation":"

Registers a new workflow type and its configuration settings in the specified domain.

The retention period for the workflow history is set by the RegisterDomain action.

If the type already exists, then a TypeAlreadyExists fault is returned. You cannot change the configuration settings of a workflow type once it is registered and it must be registered as a new version.

Access Control

You can use IAM policies to control this action's access to Amazon SWF resources as follows:

If the caller does not have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's cause parameter will be set to OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows.

" - }, - "RequestCancelWorkflowExecution":{ - "name":"RequestCancelWorkflowExecution", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"RequestCancelWorkflowExecutionInput"}, - "errors":[ - { - "shape":"UnknownResourceFault", - "exception":true, - "documentation":"

Returned when the named resource cannot be found with in the scope of this operation (region or domain). This could happen if the named resource was never created or is no longer available for this operation.

" - }, - { - "shape":"OperationNotPermittedFault", - "exception":true, - "documentation":"

Returned when the caller does not have sufficient permissions to invoke the action.

" - } - ], - "documentation":"

Records a WorkflowExecutionCancelRequested event in the currently running workflow execution identified by the given domain, workflowId, and runId. This logically requests the cancellation of the workflow execution as a whole. It is up to the decider to take appropriate actions when it receives an execution history with this event.

If the runId is not specified, the WorkflowExecutionCancelRequested event is recorded in the history of the current open workflow execution with the specified workflowId in the domain. Because this action allows the workflow to properly clean up and gracefully close, it should be used instead of TerminateWorkflowExecution when possible.

Access Control

You can use IAM policies to control this action's access to Amazon SWF resources as follows:

If the caller does not have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's cause parameter will be set to OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows.

" - }, - "RespondActivityTaskCanceled":{ - "name":"RespondActivityTaskCanceled", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"RespondActivityTaskCanceledInput"}, - "errors":[ - { - "shape":"UnknownResourceFault", - "exception":true, - "documentation":"

Returned when the named resource cannot be found with in the scope of this operation (region or domain). This could happen if the named resource was never created or is no longer available for this operation.

" - }, - { - "shape":"OperationNotPermittedFault", - "exception":true, - "documentation":"

Returned when the caller does not have sufficient permissions to invoke the action.

" - } - ], - "documentation":"

Used by workers to tell the service that the ActivityTask identified by the taskToken was successfully canceled. Additional details can be optionally provided using the details argument.

These details (if provided) appear in the ActivityTaskCanceled event added to the workflow history.

Only use this operation if the canceled flag of a RecordActivityTaskHeartbeat request returns true and if the activity can be safely undone or abandoned.

A task is considered open from the time that it is scheduled until it is closed. Therefore a task is reported as open while a worker is processing it. A task is closed after it has been specified in a call to RespondActivityTaskCompleted, RespondActivityTaskCanceled, RespondActivityTaskFailed, or the task has timed out.

Access Control

You can use IAM policies to control this action's access to Amazon SWF resources as follows:

If the caller does not have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's cause parameter will be set to OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows.

" - }, - "RespondActivityTaskCompleted":{ - "name":"RespondActivityTaskCompleted", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"RespondActivityTaskCompletedInput"}, - "errors":[ - { - "shape":"UnknownResourceFault", - "exception":true, - "documentation":"

Returned when the named resource cannot be found with in the scope of this operation (region or domain). This could happen if the named resource was never created or is no longer available for this operation.

" - }, - { - "shape":"OperationNotPermittedFault", - "exception":true, - "documentation":"

Returned when the caller does not have sufficient permissions to invoke the action.

" - } - ], - "documentation":"

Used by workers to tell the service that the ActivityTask identified by the taskToken completed successfully with a result (if provided). The result appears in the ActivityTaskCompleted event in the workflow history.

If the requested task does not complete successfully, use RespondActivityTaskFailed instead. If the worker finds that the task is canceled through the canceled flag returned by RecordActivityTaskHeartbeat, it should cancel the task, clean up and then call RespondActivityTaskCanceled.

A task is considered open from the time that it is scheduled until it is closed. Therefore a task is reported as open while a worker is processing it. A task is closed after it has been specified in a call to RespondActivityTaskCompleted, RespondActivityTaskCanceled, RespondActivityTaskFailed, or the task has timed out.

Access Control

You can use IAM policies to control this action's access to Amazon SWF resources as follows:

If the caller does not have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's cause parameter will be set to OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows.

" - }, - "RespondActivityTaskFailed":{ - "name":"RespondActivityTaskFailed", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"RespondActivityTaskFailedInput"}, - "errors":[ - { - "shape":"UnknownResourceFault", - "exception":true, - "documentation":"

Returned when the named resource cannot be found with in the scope of this operation (region or domain). This could happen if the named resource was never created or is no longer available for this operation.

" - }, - { - "shape":"OperationNotPermittedFault", - "exception":true, - "documentation":"

Returned when the caller does not have sufficient permissions to invoke the action.

" - } - ], - "documentation":"

Used by workers to tell the service that the ActivityTask identified by the taskToken has failed with reason (if specified). The reason and details appear in the ActivityTaskFailed event added to the workflow history.

A task is considered open from the time that it is scheduled until it is closed. Therefore a task is reported as open while a worker is processing it. A task is closed after it has been specified in a call to RespondActivityTaskCompleted, RespondActivityTaskCanceled, RespondActivityTaskFailed, or the task has timed out.

Access Control

You can use IAM policies to control this action's access to Amazon SWF resources as follows:

If the caller does not have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's cause parameter will be set to OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows.

" - }, - "RespondDecisionTaskCompleted":{ - "name":"RespondDecisionTaskCompleted", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"RespondDecisionTaskCompletedInput"}, - "errors":[ - { - "shape":"UnknownResourceFault", - "exception":true, - "documentation":"

Returned when the named resource cannot be found with in the scope of this operation (region or domain). This could happen if the named resource was never created or is no longer available for this operation.

" - }, - { - "shape":"OperationNotPermittedFault", - "exception":true, - "documentation":"

Returned when the caller does not have sufficient permissions to invoke the action.

" - } - ], - "documentation":"

Used by deciders to tell the service that the DecisionTask identified by the taskToken has successfully completed. The decisions argument specifies the list of decisions made while processing the task.

A DecisionTaskCompleted event is added to the workflow history. The executionContext specified is attached to the event in the workflow execution history.

Access Control

If an IAM policy grants permission to use RespondDecisionTaskCompleted, it can express permissions for the list of decisions in the decisions parameter. Each of the decisions has one or more parameters, much like a regular API call. To allow for policies to be as readable as possible, you can express permissions on decisions as if they were actual API calls, including applying conditions to some parameters. For more information, see Using IAM to Manage Access to Amazon SWF Workflows.

" - }, - "SignalWorkflowExecution":{ - "name":"SignalWorkflowExecution", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"SignalWorkflowExecutionInput"}, - "errors":[ - { - "shape":"UnknownResourceFault", - "exception":true, - "documentation":"

Returned when the named resource cannot be found with in the scope of this operation (region or domain). This could happen if the named resource was never created or is no longer available for this operation.

" - }, - { - "shape":"OperationNotPermittedFault", - "exception":true, - "documentation":"

Returned when the caller does not have sufficient permissions to invoke the action.

" - } - ], - "documentation":"

Records a WorkflowExecutionSignaled event in the workflow execution history and creates a decision task for the workflow execution identified by the given domain, workflowId and runId. The event is recorded with the specified user defined signalName and input (if provided).

If a runId is not specified, then the WorkflowExecutionSignaled event is recorded in the history of the current open workflow with the matching workflowId in the domain. If the specified workflow execution is not open, this method fails with UnknownResource.

Access Control

You can use IAM policies to control this action's access to Amazon SWF resources as follows:

If the caller does not have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's cause parameter will be set to OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows.

" - }, - "StartWorkflowExecution":{ - "name":"StartWorkflowExecution", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"StartWorkflowExecutionInput"}, - "output":{ - "shape":"Run", - "documentation":"

Specifies the runId of a workflow execution.

" - }, - "errors":[ - { - "shape":"UnknownResourceFault", - "exception":true, - "documentation":"

Returned when the named resource cannot be found with in the scope of this operation (region or domain). This could happen if the named resource was never created or is no longer available for this operation.

" - }, - { - "shape":"TypeDeprecatedFault", - "exception":true, - "documentation":"

Returned when the specified activity or workflow type was already deprecated.

" - }, - { - "shape":"WorkflowExecutionAlreadyStartedFault", - "exception":true, - "documentation":"

Returned by StartWorkflowExecution when an open execution with the same workflowId is already running in the specified domain.

" - }, - { - "shape":"LimitExceededFault", - "exception":true, - "documentation":"

Returned by any operation if a system imposed limitation has been reached. To address this fault you should either clean up unused resources or increase the limit by contacting AWS.

" - }, - { - "shape":"OperationNotPermittedFault", - "exception":true, - "documentation":"

Returned when the caller does not have sufficient permissions to invoke the action.

" - }, - { - "shape":"DefaultUndefinedFault", - "exception":true - } - ], - "documentation":"

Starts an execution of the workflow type in the specified domain using the provided workflowId and input data.

This action returns the newly started workflow execution.

Access Control

You can use IAM policies to control this action's access to Amazon SWF resources as follows:

If the caller does not have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's cause parameter will be set to OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows.

" - }, - "TerminateWorkflowExecution":{ - "name":"TerminateWorkflowExecution", - "http":{ - "method":"POST", - "requestUri":"/" - }, - "input":{"shape":"TerminateWorkflowExecutionInput"}, - "errors":[ - { - "shape":"UnknownResourceFault", - "exception":true, - "documentation":"

Returned when the named resource cannot be found with in the scope of this operation (region or domain). This could happen if the named resource was never created or is no longer available for this operation.

" - }, - { - "shape":"OperationNotPermittedFault", - "exception":true, - "documentation":"

Returned when the caller does not have sufficient permissions to invoke the action.

" - } - ], - "documentation":"

Records a WorkflowExecutionTerminated event and forces closure of the workflow execution identified by the given domain, runId, and workflowId. The child policy, registered with the workflow type or specified when starting this execution, is applied to any open child workflow executions of this workflow execution.

If the identified workflow execution was in progress, it is terminated immediately. If a runId is not specified, then the WorkflowExecutionTerminated event is recorded in the history of the current open workflow with the matching workflowId in the domain. You should consider using RequestCancelWorkflowExecution action instead because it allows the workflow to gracefully close while TerminateWorkflowExecution does not.

Access Control

You can use IAM policies to control this action's access to Amazon SWF resources as follows:

If the caller does not have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's cause parameter will be set to OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows.

" - } - }, - "shapes":{ - "ActivityId":{ - "type":"string", - "min":1, - "max":256 - }, - "ActivityTask":{ - "type":"structure", - "required":[ - "taskToken", - "activityId", - "startedEventId", - "workflowExecution", - "activityType" - ], - "members":{ - "taskToken":{ - "shape":"TaskToken", - "documentation":"

The opaque string used as a handle on the task. This token is used by workers to communicate progress and response information back to the system about the task.

" - }, - "activityId":{ - "shape":"ActivityId", - "documentation":"

The unique ID of the task.

" - }, - "startedEventId":{ - "shape":"EventId", - "documentation":"

The id of the ActivityTaskStarted event recorded in the history.

" - }, - "workflowExecution":{ - "shape":"WorkflowExecution", - "documentation":"

The workflow execution that started this activity task.

" - }, - "activityType":{ - "shape":"ActivityType", - "documentation":"

The type of this activity task.

" - }, - "input":{ - "shape":"Data", - "documentation":"

The inputs provided when the activity task was scheduled. The form of the input is user defined and should be meaningful to the activity implementation.

" - } - }, - "documentation":"

Unit of work sent to an activity worker.

" - }, - "ActivityTaskCancelRequestedEventAttributes":{ - "type":"structure", - "required":[ - "decisionTaskCompletedEventId", - "activityId" - ], - "members":{ - "decisionTaskCompletedEventId":{ - "shape":"EventId", - "documentation":"

The id of the DecisionTaskCompleted event corresponding to the decision task that resulted in the RequestCancelActivityTask decision for this cancellation request. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event.

" - }, - "activityId":{ - "shape":"ActivityId", - "documentation":"

The unique ID of the task.

" - } - }, - "documentation":"

Provides details of the ActivityTaskCancelRequested event.

" - }, - "ActivityTaskCanceledEventAttributes":{ - "type":"structure", - "required":[ - "scheduledEventId", - "startedEventId" - ], - "members":{ - "details":{ - "shape":"Data", - "documentation":"

Details of the cancellation (if any).

" - }, - "scheduledEventId":{ - "shape":"EventId", - "documentation":"

The id of the ActivityTaskScheduled event that was recorded when this activity task was scheduled. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event.

" - }, - "startedEventId":{ - "shape":"EventId", - "documentation":"

The Id of the ActivityTaskStarted event recorded when this activity task was started. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event.

" - }, - "latestCancelRequestedEventId":{ - "shape":"EventId", - "documentation":"

If set, contains the Id of the last ActivityTaskCancelRequested event recorded for this activity task. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event.

" - } - }, - "documentation":"

Provides details of the ActivityTaskCanceled event.

" - }, - "ActivityTaskCompletedEventAttributes":{ - "type":"structure", - "required":[ - "scheduledEventId", - "startedEventId" - ], - "members":{ - "result":{ - "shape":"Data", - "documentation":"

The results of the activity task (if any).

" - }, - "scheduledEventId":{ - "shape":"EventId", - "documentation":"

The id of the ActivityTaskScheduled event that was recorded when this activity task was scheduled. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event.

" - }, - "startedEventId":{ - "shape":"EventId", - "documentation":"

The Id of the ActivityTaskStarted event recorded when this activity task was started. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event.

" - } - }, - "documentation":"

Provides details of the ActivityTaskCompleted event.

" - }, - "ActivityTaskFailedEventAttributes":{ - "type":"structure", - "required":[ - "scheduledEventId", - "startedEventId" - ], - "members":{ - "reason":{ - "shape":"FailureReason", - "documentation":"

The reason provided for the failure (if any).

" - }, - "details":{ - "shape":"Data", - "documentation":"

The details of the failure (if any).

" - }, - "scheduledEventId":{ - "shape":"EventId", - "documentation":"

The id of the ActivityTaskScheduled event that was recorded when this activity task was scheduled. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event.

" - }, - "startedEventId":{ - "shape":"EventId", - "documentation":"

The Id of the ActivityTaskStarted event recorded when this activity task was started. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event.

" - } - }, - "documentation":"

Provides details of the ActivityTaskFailed event.

" - }, - "ActivityTaskScheduledEventAttributes":{ - "type":"structure", - "required":[ - "activityType", - "activityId", - "taskList", - "decisionTaskCompletedEventId" - ], - "members":{ - "activityType":{ - "shape":"ActivityType", - "documentation":"

The type of the activity task.

" - }, - "activityId":{ - "shape":"ActivityId", - "documentation":"

The unique id of the activity task.

" - }, - "input":{ - "shape":"Data", - "documentation":"

The input provided to the activity task.

" - }, - "control":{ - "shape":"Data", - "documentation":"

Optional. Data attached to the event that can be used by the decider in subsequent workflow tasks. This data is not sent to the activity.

" - }, - "scheduleToStartTimeout":{ - "shape":"DurationInSecondsOptional", - "documentation":"

The maximum amount of time the activity task can wait to be assigned to a worker.

" - }, - "scheduleToCloseTimeout":{ - "shape":"DurationInSecondsOptional", - "documentation":"

The maximum amount of time for this activity task.

" - }, - "startToCloseTimeout":{ - "shape":"DurationInSecondsOptional", - "documentation":"

The maximum amount of time a worker may take to process the activity task.

" - }, - "taskList":{ - "shape":"TaskList", - "documentation":"

The task list in which the activity task has been scheduled.

" - }, - "taskPriority":{ - "shape":"TaskPriority", - "documentation":"

Optional. The priority to assign to the scheduled activity task. This will override any default priority that was assigned when the activity type was registered. If not set, then the priority set on the activity type is used as the task priority.

Valid values are integers that range from Java's Integer.MIN_VALUE (-2147483648) to Integer.MAX_VALUE (2147483647). Higher numbers indicate higher priority.

For more information about setting task priority, see Setting Task Priority in the Amazon Simple Workflow Developer Guide.

" - }, - "decisionTaskCompletedEventId":{ - "shape":"EventId", - "documentation":"

The id of the DecisionTaskCompleted event corresponding to the decision that resulted in the scheduling of this activity task. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event.

" - }, - "heartbeatTimeout":{ - "shape":"DurationInSecondsOptional", - "documentation":"

The maximum time before which the worker processing this task must report progress by calling RecordActivityTaskHeartbeat. If the timeout is exceeded, the activity task is automatically timed out. If the worker subsequently attempts to record a heartbeat or return a result, it will be ignored.

" - } - }, - "documentation":"

Provides details of the ActivityTaskScheduled event.

" - }, - "ActivityTaskStartedEventAttributes":{ - "type":"structure", - "required":["scheduledEventId"], - "members":{ - "identity":{ - "shape":"Identity", - "documentation":"

Identity of the worker that was assigned this task. This aids diagnostics when problems arise. The form of this identity is user defined.

" - }, - "scheduledEventId":{ - "shape":"EventId", - "documentation":"

The id of the ActivityTaskScheduled event that was recorded when this activity task was scheduled. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event.

" - } - }, - "documentation":"

Provides details of the ActivityTaskStarted event.

" - }, - "ActivityTaskStatus":{ - "type":"structure", - "required":["cancelRequested"], - "members":{ - "cancelRequested":{ - "shape":"Canceled", - "documentation":"

Set to true if cancellation of the task is requested.

" - } - }, - "documentation":"

Status information about an activity task.

" - }, - "ActivityTaskTimedOutEventAttributes":{ - "type":"structure", - "required":[ - "timeoutType", - "scheduledEventId", - "startedEventId" - ], - "members":{ - "timeoutType":{ - "shape":"ActivityTaskTimeoutType", - "documentation":"

The type of the timeout that caused this event.

" - }, - "scheduledEventId":{ - "shape":"EventId", - "documentation":"

The id of the ActivityTaskScheduled event that was recorded when this activity task was scheduled. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event.

" - }, - "startedEventId":{ - "shape":"EventId", - "documentation":"

The Id of the ActivityTaskStarted event recorded when this activity task was started. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event.

" - }, - "details":{ - "shape":"LimitedData", - "documentation":"

Contains the content of the details parameter for the last call made by the activity to RecordActivityTaskHeartbeat.

" - } - }, - "documentation":"

Provides details of the ActivityTaskTimedOut event.

" - }, - "ActivityTaskTimeoutType":{ - "type":"string", - "enum":[ - "START_TO_CLOSE", - "SCHEDULE_TO_START", - "SCHEDULE_TO_CLOSE", - "HEARTBEAT" - ] - }, - "ActivityType":{ - "type":"structure", - "required":[ - "name", - "version" - ], - "members":{ - "name":{ - "shape":"Name", - "documentation":"

The name of this activity.

The combination of activity type name and version must be unique within a domain." - }, - "version":{ - "shape":"Version", - "documentation":"

The version of this activity.

The combination of activity type name and version must be unique with in a domain." - } - }, - "documentation":"

Represents an activity type.

" - }, - "ActivityTypeConfiguration":{ - "type":"structure", - "members":{ - "defaultTaskStartToCloseTimeout":{ - "shape":"DurationInSecondsOptional", - "documentation":"

Optional. The default maximum duration for tasks of an activity type specified when registering the activity type. You can override this default when scheduling a task through the ScheduleActivityTask Decision.

The duration is specified in seconds; an integer greater than or equal to 0. The value \"NONE\" can be used to specify unlimited duration.

" - }, - "defaultTaskHeartbeatTimeout":{ - "shape":"DurationInSecondsOptional", - "documentation":"

Optional. The default maximum time, in seconds, before which a worker processing a task must report progress by calling RecordActivityTaskHeartbeat.

You can specify this value only when registering an activity type. The registered default value can be overridden when you schedule a task through the ScheduleActivityTask Decision. If the activity worker subsequently attempts to record a heartbeat or returns a result, the activity worker receives an UnknownResource fault. In this case, Amazon SWF no longer considers the activity task to be valid; the activity worker should clean up the activity task.

The duration is specified in seconds; an integer greater than or equal to 0. The value \"NONE\" can be used to specify unlimited duration.

" - }, - "defaultTaskList":{ - "shape":"TaskList", - "documentation":"

Optional. The default task list specified for this activity type at registration. This default is used if a task list is not provided when a task is scheduled through the ScheduleActivityTask Decision. You can override the default registered task list when scheduling a task through the ScheduleActivityTask Decision.

" - }, - "defaultTaskPriority":{ - "shape":"TaskPriority", - "documentation":"

Optional. The default task priority for tasks of this activity type, specified at registration. If not set, then \"0\" will be used as the default priority. This default can be overridden when scheduling an activity task.

Valid values are integers that range from Java's Integer.MIN_VALUE (-2147483648) to Integer.MAX_VALUE (2147483647). Higher numbers indicate higher priority.

For more information about setting task priority, see Setting Task Priority in the Amazon Simple Workflow Developer Guide.

" - }, - "defaultTaskScheduleToStartTimeout":{ - "shape":"DurationInSecondsOptional", - "documentation":"

Optional. The default maximum duration, specified when registering the activity type, that a task of an activity type can wait before being assigned to a worker. You can override this default when scheduling a task through the ScheduleActivityTask Decision.

The duration is specified in seconds; an integer greater than or equal to 0. The value \"NONE\" can be used to specify unlimited duration.

" - }, - "defaultTaskScheduleToCloseTimeout":{ - "shape":"DurationInSecondsOptional", - "documentation":"

Optional. The default maximum duration, specified when registering the activity type, for tasks of this activity type. You can override this default when scheduling a task through the ScheduleActivityTask Decision.

The duration is specified in seconds; an integer greater than or equal to 0. The value \"NONE\" can be used to specify unlimited duration.

" - } - }, - "documentation":"

Configuration settings registered with the activity type.

" - }, - "ActivityTypeDetail":{ - "type":"structure", - "required":[ - "typeInfo", - "configuration" - ], - "members":{ - "typeInfo":{ - "shape":"ActivityTypeInfo", - "documentation":"

General information about the activity type.

The status of activity type (returned in the ActivityTypeInfo structure) can be one of the following.

" - }, - "configuration":{ - "shape":"ActivityTypeConfiguration", - "documentation":"

The configuration settings registered with the activity type.

" - } - }, - "documentation":"

Detailed information about an activity type.

" - }, - "ActivityTypeInfo":{ - "type":"structure", - "required":[ - "activityType", - "status", - "creationDate" - ], - "members":{ - "activityType":{ - "shape":"ActivityType", - "documentation":"

The ActivityType type structure representing the activity type.

" - }, - "status":{ - "shape":"RegistrationStatus", - "documentation":"

The current status of the activity type.

" - }, - "description":{ - "shape":"Description", - "documentation":"

The description of the activity type provided in RegisterActivityType.

" - }, - "creationDate":{ - "shape":"Timestamp", - "documentation":"

The date and time this activity type was created through RegisterActivityType.

" - }, - "deprecationDate":{ - "shape":"Timestamp", - "documentation":"

If DEPRECATED, the date and time DeprecateActivityType was called.

" - } - }, - "documentation":"

Detailed information about an activity type.

" - }, - "ActivityTypeInfoList":{ - "type":"list", - "member":{"shape":"ActivityTypeInfo"} - }, - "ActivityTypeInfos":{ - "type":"structure", - "required":["typeInfos"], - "members":{ - "typeInfos":{ - "shape":"ActivityTypeInfoList", - "documentation":"

List of activity type information.

" - }, - "nextPageToken":{ - "shape":"PageToken", - "documentation":"

If a NextPageToken was returned by a previous call, there are more results available. To retrieve the next page of results, make the call again using the returned token in nextPageToken. Keep all other arguments unchanged.

The configured maximumPageSize determines how many results can be returned in a single call.

" - } - }, - "documentation":"

Contains a paginated list of activity type information structures.

" - }, - "CancelTimerDecisionAttributes":{ - "type":"structure", - "required":["timerId"], - "members":{ - "timerId":{ - "shape":"TimerId", - "documentation":"

Required. The unique Id of the timer to cancel.

" - } - }, - "documentation":"

Provides details of the CancelTimer decision.

Access Control

You can use IAM policies to control this decision's access to Amazon SWF resources as follows:

If the caller does not have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's cause parameter will be set to OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows.

" - }, - "CancelTimerFailedCause":{ - "type":"string", - "enum":[ - "TIMER_ID_UNKNOWN", - "OPERATION_NOT_PERMITTED" - ] - }, - "CancelTimerFailedEventAttributes":{ - "type":"structure", - "required":[ - "timerId", - "cause", - "decisionTaskCompletedEventId" - ], - "members":{ - "timerId":{ - "shape":"TimerId", - "documentation":"

The timerId provided in the CancelTimer decision that failed.

" - }, - "cause":{ - "shape":"CancelTimerFailedCause", - "documentation":"

The cause of the failure. This information is generated by the system and can be useful for diagnostic purposes.

If cause is set to OPERATION_NOT_PERMITTED, the decision failed because it lacked sufficient permissions. For details and example IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows." - }, - "decisionTaskCompletedEventId":{ - "shape":"EventId", - "documentation":"

The id of the DecisionTaskCompleted event corresponding to the decision task that resulted in the CancelTimer decision to cancel this timer. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event.

" - } - }, - "documentation":"

Provides details of the CancelTimerFailed event.

" - }, - "CancelWorkflowExecutionDecisionAttributes":{ - "type":"structure", - "members":{ - "details":{ - "shape":"Data", - "documentation":"

Optional. details of the cancellation.

" - } - }, - "documentation":"

Provides details of the CancelWorkflowExecution decision.

Access Control

You can use IAM policies to control this decision's access to Amazon SWF resources as follows:

If the caller does not have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's cause parameter will be set to OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows.

" - }, - "CancelWorkflowExecutionFailedCause":{ - "type":"string", - "enum":[ - "UNHANDLED_DECISION", - "OPERATION_NOT_PERMITTED" - ] - }, - "CancelWorkflowExecutionFailedEventAttributes":{ - "type":"structure", - "required":[ - "cause", - "decisionTaskCompletedEventId" - ], - "members":{ - "cause":{ - "shape":"CancelWorkflowExecutionFailedCause", - "documentation":"

The cause of the failure. This information is generated by the system and can be useful for diagnostic purposes.

If cause is set to OPERATION_NOT_PERMITTED, the decision failed because it lacked sufficient permissions. For details and example IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows." - }, - "decisionTaskCompletedEventId":{ - "shape":"EventId", - "documentation":"

The id of the DecisionTaskCompleted event corresponding to the decision task that resulted in the CancelWorkflowExecution decision for this cancellation request. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event.

" - } - }, - "documentation":"

Provides details of the CancelWorkflowExecutionFailed event.

" - }, - "Canceled":{"type":"boolean"}, - "ChildPolicy":{ - "type":"string", - "enum":[ - "TERMINATE", - "REQUEST_CANCEL", - "ABANDON" - ] - }, - "ChildWorkflowExecutionCanceledEventAttributes":{ - "type":"structure", - "required":[ - "workflowExecution", - "workflowType", - "initiatedEventId", - "startedEventId" - ], - "members":{ - "workflowExecution":{ - "shape":"WorkflowExecution", - "documentation":"

The child workflow execution that was canceled.

" - }, - "workflowType":{ - "shape":"WorkflowType", - "documentation":"

The type of the child workflow execution.

" - }, - "details":{ - "shape":"Data", - "documentation":"

Details of the cancellation (if provided).

" - }, - "initiatedEventId":{ - "shape":"EventId", - "documentation":"

The id of the StartChildWorkflowExecutionInitiated event corresponding to the StartChildWorkflowExecution Decision to start this child workflow execution. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event.

" - }, - "startedEventId":{ - "shape":"EventId", - "documentation":"

The Id of the ChildWorkflowExecutionStarted event recorded when this child workflow execution was started. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event.

" - } - }, - "documentation":"

Provide details of the ChildWorkflowExecutionCanceled event.

" - }, - "ChildWorkflowExecutionCompletedEventAttributes":{ - "type":"structure", - "required":[ - "workflowExecution", - "workflowType", - "initiatedEventId", - "startedEventId" - ], - "members":{ - "workflowExecution":{ - "shape":"WorkflowExecution", - "documentation":"

The child workflow execution that was completed.

" - }, - "workflowType":{ - "shape":"WorkflowType", - "documentation":"

The type of the child workflow execution.

" - }, - "result":{ - "shape":"Data", - "documentation":"

The result of the child workflow execution (if any).

" - }, - "initiatedEventId":{ - "shape":"EventId", - "documentation":"

The id of the StartChildWorkflowExecutionInitiated event corresponding to the StartChildWorkflowExecution Decision to start this child workflow execution. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event.

" - }, - "startedEventId":{ - "shape":"EventId", - "documentation":"

The Id of the ChildWorkflowExecutionStarted event recorded when this child workflow execution was started. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event.

" - } - }, - "documentation":"

Provides details of the ChildWorkflowExecutionCompleted event.

" - }, - "ChildWorkflowExecutionFailedEventAttributes":{ - "type":"structure", - "required":[ - "workflowExecution", - "workflowType", - "initiatedEventId", - "startedEventId" - ], - "members":{ - "workflowExecution":{ - "shape":"WorkflowExecution", - "documentation":"

The child workflow execution that failed.

" - }, - "workflowType":{ - "shape":"WorkflowType", - "documentation":"

The type of the child workflow execution.

" - }, - "reason":{ - "shape":"FailureReason", - "documentation":"

The reason for the failure (if provided).

" - }, - "details":{ - "shape":"Data", - "documentation":"

The details of the failure (if provided).

" - }, - "initiatedEventId":{ - "shape":"EventId", - "documentation":"

The id of the StartChildWorkflowExecutionInitiated event corresponding to the StartChildWorkflowExecution Decision to start this child workflow execution. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event.

" - }, - "startedEventId":{ - "shape":"EventId", - "documentation":"

The Id of the ChildWorkflowExecutionStarted event recorded when this child workflow execution was started. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event.

" - } - }, - "documentation":"

Provides details of the ChildWorkflowExecutionFailed event.

" - }, - "ChildWorkflowExecutionStartedEventAttributes":{ - "type":"structure", - "required":[ - "workflowExecution", - "workflowType", - "initiatedEventId" - ], - "members":{ - "workflowExecution":{ - "shape":"WorkflowExecution", - "documentation":"

The child workflow execution that was started.

" - }, - "workflowType":{ - "shape":"WorkflowType", - "documentation":"

The type of the child workflow execution.

" - }, - "initiatedEventId":{ - "shape":"EventId", - "documentation":"

The id of the StartChildWorkflowExecutionInitiated event corresponding to the StartChildWorkflowExecution Decision to start this child workflow execution. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event.

" - } - }, - "documentation":"

Provides details of the ChildWorkflowExecutionStarted event.

" - }, - "ChildWorkflowExecutionTerminatedEventAttributes":{ - "type":"structure", - "required":[ - "workflowExecution", - "workflowType", - "initiatedEventId", - "startedEventId" - ], - "members":{ - "workflowExecution":{ - "shape":"WorkflowExecution", - "documentation":"

The child workflow execution that was terminated.

" - }, - "workflowType":{ - "shape":"WorkflowType", - "documentation":"

The type of the child workflow execution.

" - }, - "initiatedEventId":{ - "shape":"EventId", - "documentation":"

The id of the StartChildWorkflowExecutionInitiated event corresponding to the StartChildWorkflowExecution Decision to start this child workflow execution. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event.

" - }, - "startedEventId":{ - "shape":"EventId", - "documentation":"

The Id of the ChildWorkflowExecutionStarted event recorded when this child workflow execution was started. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event.

" - } - }, - "documentation":"

Provides details of the ChildWorkflowExecutionTerminated event.

" - }, - "ChildWorkflowExecutionTimedOutEventAttributes":{ - "type":"structure", - "required":[ - "workflowExecution", - "workflowType", - "timeoutType", - "initiatedEventId", - "startedEventId" - ], - "members":{ - "workflowExecution":{ - "shape":"WorkflowExecution", - "documentation":"

The child workflow execution that timed out.

" - }, - "workflowType":{ - "shape":"WorkflowType", - "documentation":"

The type of the child workflow execution.

" - }, - "timeoutType":{ - "shape":"WorkflowExecutionTimeoutType", - "documentation":"

The type of the timeout that caused the child workflow execution to time out.

" - }, - "initiatedEventId":{ - "shape":"EventId", - "documentation":"

The id of the StartChildWorkflowExecutionInitiated event corresponding to the StartChildWorkflowExecution Decision to start this child workflow execution. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event.

" - }, - "startedEventId":{ - "shape":"EventId", - "documentation":"

The Id of the ChildWorkflowExecutionStarted event recorded when this child workflow execution was started. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event.

" - } - }, - "documentation":"

Provides details of the ChildWorkflowExecutionTimedOut event.

" - }, - "CloseStatus":{ - "type":"string", - "enum":[ - "COMPLETED", - "FAILED", - "CANCELED", - "TERMINATED", - "CONTINUED_AS_NEW", - "TIMED_OUT" - ] - }, - "CloseStatusFilter":{ - "type":"structure", - "required":["status"], - "members":{ - "status":{ - "shape":"CloseStatus", - "documentation":"

Required. The close status that must match the close status of an execution for it to meet the criteria of this filter.

" - } - }, - "documentation":"

Used to filter the closed workflow executions in visibility APIs by their close status.

" - }, - "CompleteWorkflowExecutionDecisionAttributes":{ - "type":"structure", - "members":{ - "result":{ - "shape":"Data", - "documentation":"

The result of the workflow execution. The form of the result is implementation defined.

" - } - }, - "documentation":"

Provides details of the CompleteWorkflowExecution decision.

Access Control

You can use IAM policies to control this decision's access to Amazon SWF resources as follows:

If the caller does not have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's cause parameter will be set to OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows.

" - }, - "CompleteWorkflowExecutionFailedCause":{ - "type":"string", - "enum":[ - "UNHANDLED_DECISION", - "OPERATION_NOT_PERMITTED" - ] - }, - "CompleteWorkflowExecutionFailedEventAttributes":{ - "type":"structure", - "required":[ - "cause", - "decisionTaskCompletedEventId" - ], - "members":{ - "cause":{ - "shape":"CompleteWorkflowExecutionFailedCause", - "documentation":"

The cause of the failure. This information is generated by the system and can be useful for diagnostic purposes.

If cause is set to OPERATION_NOT_PERMITTED, the decision failed because it lacked sufficient permissions. For details and example IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows." - }, - "decisionTaskCompletedEventId":{ - "shape":"EventId", - "documentation":"

The id of the DecisionTaskCompleted event corresponding to the decision task that resulted in the CompleteWorkflowExecution decision to complete this execution. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event.

" - } - }, - "documentation":"

Provides details of the CompleteWorkflowExecutionFailed event.

" - }, - "ContinueAsNewWorkflowExecutionDecisionAttributes":{ - "type":"structure", - "members":{ - "input":{ - "shape":"Data", - "documentation":"

The input provided to the new workflow execution.

" - }, - "executionStartToCloseTimeout":{ - "shape":"DurationInSecondsOptional", - "documentation":"

If set, specifies the total duration for this workflow execution. This overrides the defaultExecutionStartToCloseTimeout specified when registering the workflow type.

The duration is specified in seconds; an integer greater than or equal to 0. The value \"NONE\" can be used to specify unlimited duration.

An execution start-to-close timeout for this workflow execution must be specified either as a default for the workflow type or through this field. If neither this field is set nor a default execution start-to-close timeout was specified at registration time then a fault will be returned." - }, - "taskList":{"shape":"TaskList"}, - "taskPriority":{ - "shape":"TaskPriority", - "documentation":"

Optional. The task priority that, if set, specifies the priority for the decision tasks for this workflow execution. This overrides the defaultTaskPriority specified when registering the workflow type. Valid values are integers that range from Java's Integer.MIN_VALUE (-2147483648) to Integer.MAX_VALUE (2147483647). Higher numbers indicate higher priority.

For more information about setting task priority, see Setting Task Priority in the Amazon Simple Workflow Developer Guide.

" - }, - "taskStartToCloseTimeout":{ - "shape":"DurationInSecondsOptional", - "documentation":"

Specifies the maximum duration of decision tasks for the new workflow execution. This parameter overrides the defaultTaskStartToCloseTimout specified when registering the workflow type using RegisterWorkflowType.

The duration is specified in seconds; an integer greater than or equal to 0. The value \"NONE\" can be used to specify unlimited duration.

A task start-to-close timeout for the new workflow execution must be specified either as a default for the workflow type or through this parameter. If neither this parameter is set nor a default task start-to-close timeout was specified at registration time then a fault will be returned." - }, - "childPolicy":{ - "shape":"ChildPolicy", - "documentation":"

If set, specifies the policy to use for the child workflow executions of the new execution if it is terminated by calling the TerminateWorkflowExecution action explicitly or due to an expired timeout. This policy overrides the default child policy specified when registering the workflow type using RegisterWorkflowType.

The supported child policies are:

A child policy for this workflow execution must be specified either as a default for the workflow type or through this parameter. If neither this parameter is set nor a default child policy was specified at registration time then a fault will be returned." - }, - "tagList":{ - "shape":"TagList", - "documentation":"

The list of tags to associate with the new workflow execution. A maximum of 5 tags can be specified. You can list workflow executions with a specific tag by calling ListOpenWorkflowExecutions or ListClosedWorkflowExecutions and specifying a TagFilter.

" - }, - "workflowTypeVersion":{"shape":"Version"} - }, - "documentation":"

Provides details of the ContinueAsNewWorkflowExecution decision.

Access Control

You can use IAM policies to control this decision's access to Amazon SWF resources as follows:

If the caller does not have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's cause parameter will be set to OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows.

" - }, - "ContinueAsNewWorkflowExecutionFailedCause":{ - "type":"string", - "enum":[ - "UNHANDLED_DECISION", - "WORKFLOW_TYPE_DEPRECATED", - "WORKFLOW_TYPE_DOES_NOT_EXIST", - "DEFAULT_EXECUTION_START_TO_CLOSE_TIMEOUT_UNDEFINED", - "DEFAULT_TASK_START_TO_CLOSE_TIMEOUT_UNDEFINED", - "DEFAULT_TASK_LIST_UNDEFINED", - "DEFAULT_CHILD_POLICY_UNDEFINED", - "CONTINUE_AS_NEW_WORKFLOW_EXECUTION_RATE_EXCEEDED", - "OPERATION_NOT_PERMITTED" - ] - }, - "ContinueAsNewWorkflowExecutionFailedEventAttributes":{ - "type":"structure", - "required":[ - "cause", - "decisionTaskCompletedEventId" - ], - "members":{ - "cause":{ - "shape":"ContinueAsNewWorkflowExecutionFailedCause", - "documentation":"

The cause of the failure. This information is generated by the system and can be useful for diagnostic purposes.

If cause is set to OPERATION_NOT_PERMITTED, the decision failed because it lacked sufficient permissions. For details and example IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows." - }, - "decisionTaskCompletedEventId":{ - "shape":"EventId", - "documentation":"

The id of the DecisionTaskCompleted event corresponding to the decision task that resulted in the ContinueAsNewWorkflowExecution decision that started this execution. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event.

" - } - }, - "documentation":"

Provides details of the ContinueAsNewWorkflowExecutionFailed event.

" - }, - "Count":{ - "type":"integer", - "min":0 - }, - "CountClosedWorkflowExecutionsInput":{ - "type":"structure", - "required":["domain"], - "members":{ - "domain":{ - "shape":"DomainName", - "documentation":"

The name of the domain containing the workflow executions to count.

" - }, - "startTimeFilter":{ - "shape":"ExecutionTimeFilter", - "documentation":"

If specified, only workflow executions that meet the start time criteria of the filter are counted.

startTimeFilter and closeTimeFilter are mutually exclusive. You must specify one of these in a request but not both." - }, - "closeTimeFilter":{ - "shape":"ExecutionTimeFilter", - "documentation":"

If specified, only workflow executions that meet the close time criteria of the filter are counted.

startTimeFilter and closeTimeFilter are mutually exclusive. You must specify one of these in a request but not both." - }, - "executionFilter":{ - "shape":"WorkflowExecutionFilter", - "documentation":"

If specified, only workflow executions matching the WorkflowId in the filter are counted.

closeStatusFilter, executionFilter, typeFilter and tagFilter are mutually exclusive. You can specify at most one of these in a request." - }, - "typeFilter":{ - "shape":"WorkflowTypeFilter", - "documentation":"

If specified, indicates the type of the workflow executions to be counted.

closeStatusFilter, executionFilter, typeFilter and tagFilter are mutually exclusive. You can specify at most one of these in a request." - }, - "tagFilter":{ - "shape":"TagFilter", - "documentation":"

If specified, only executions that have a tag that matches the filter are counted.

closeStatusFilter, executionFilter, typeFilter and tagFilter are mutually exclusive. You can specify at most one of these in a request." - }, - "closeStatusFilter":{ - "shape":"CloseStatusFilter", - "documentation":"

If specified, only workflow executions that match this close status are counted. This filter has an affect only if executionStatus is specified as CLOSED.

closeStatusFilter, executionFilter, typeFilter and tagFilter are mutually exclusive. You can specify at most one of these in a request." - } - } - }, - "CountOpenWorkflowExecutionsInput":{ - "type":"structure", - "required":[ - "domain", - "startTimeFilter" - ], - "members":{ - "domain":{ - "shape":"DomainName", - "documentation":"

The name of the domain containing the workflow executions to count.

" - }, - "startTimeFilter":{ - "shape":"ExecutionTimeFilter", - "documentation":"

Specifies the start time criteria that workflow executions must meet in order to be counted.

" - }, - "typeFilter":{ - "shape":"WorkflowTypeFilter", - "documentation":"

Specifies the type of the workflow executions to be counted.

executionFilter, typeFilter and tagFilter are mutually exclusive. You can specify at most one of these in a request." - }, - "tagFilter":{ - "shape":"TagFilter", - "documentation":"

If specified, only executions that have a tag that matches the filter are counted.

executionFilter, typeFilter and tagFilter are mutually exclusive. You can specify at most one of these in a request." - }, - "executionFilter":{ - "shape":"WorkflowExecutionFilter", - "documentation":"

If specified, only workflow executions matching the WorkflowId in the filter are counted.

executionFilter, typeFilter and tagFilter are mutually exclusive. You can specify at most one of these in a request." - } - } - }, - "CountPendingActivityTasksInput":{ - "type":"structure", - "required":[ - "domain", - "taskList" - ], - "members":{ - "domain":{ - "shape":"DomainName", - "documentation":"

The name of the domain that contains the task list.

" - }, - "taskList":{ - "shape":"TaskList", - "documentation":"

The name of the task list.

" - } - } - }, - "CountPendingDecisionTasksInput":{ - "type":"structure", - "required":[ - "domain", - "taskList" - ], - "members":{ - "domain":{ - "shape":"DomainName", - "documentation":"

The name of the domain that contains the task list.

" - }, - "taskList":{ - "shape":"TaskList", - "documentation":"

The name of the task list.

" - } - } - }, - "Data":{ - "type":"string", - "max":32768 - }, - "Decision":{ - "type":"structure", - "required":["decisionType"], - "members":{ - "decisionType":{ - "shape":"DecisionType", - "documentation":"

Specifies the type of the decision.

" - }, - "scheduleActivityTaskDecisionAttributes":{ - "shape":"ScheduleActivityTaskDecisionAttributes", - "documentation":"

Provides details of the ScheduleActivityTask decision. It is not set for other decision types.

" - }, - "requestCancelActivityTaskDecisionAttributes":{ - "shape":"RequestCancelActivityTaskDecisionAttributes", - "documentation":"

Provides details of the RequestCancelActivityTask decision. It is not set for other decision types.

" - }, - "completeWorkflowExecutionDecisionAttributes":{ - "shape":"CompleteWorkflowExecutionDecisionAttributes", - "documentation":"

Provides details of the CompleteWorkflowExecution decision. It is not set for other decision types.

" - }, - "failWorkflowExecutionDecisionAttributes":{ - "shape":"FailWorkflowExecutionDecisionAttributes", - "documentation":"

Provides details of the FailWorkflowExecution decision. It is not set for other decision types.

" - }, - "cancelWorkflowExecutionDecisionAttributes":{ - "shape":"CancelWorkflowExecutionDecisionAttributes", - "documentation":"

Provides details of the CancelWorkflowExecution decision. It is not set for other decision types.

" - }, - "continueAsNewWorkflowExecutionDecisionAttributes":{ - "shape":"ContinueAsNewWorkflowExecutionDecisionAttributes", - "documentation":"

Provides details of the ContinueAsNewWorkflowExecution decision. It is not set for other decision types.

" - }, - "recordMarkerDecisionAttributes":{ - "shape":"RecordMarkerDecisionAttributes", - "documentation":"

Provides details of the RecordMarker decision. It is not set for other decision types.

" - }, - "startTimerDecisionAttributes":{ - "shape":"StartTimerDecisionAttributes", - "documentation":"

Provides details of the StartTimer decision. It is not set for other decision types.

" - }, - "cancelTimerDecisionAttributes":{ - "shape":"CancelTimerDecisionAttributes", - "documentation":"

Provides details of the CancelTimer decision. It is not set for other decision types.

" - }, - "signalExternalWorkflowExecutionDecisionAttributes":{ - "shape":"SignalExternalWorkflowExecutionDecisionAttributes", - "documentation":"

Provides details of the SignalExternalWorkflowExecution decision. It is not set for other decision types.

" - }, - "requestCancelExternalWorkflowExecutionDecisionAttributes":{ - "shape":"RequestCancelExternalWorkflowExecutionDecisionAttributes", - "documentation":"

Provides details of the RequestCancelExternalWorkflowExecution decision. It is not set for other decision types.

" - }, - "startChildWorkflowExecutionDecisionAttributes":{ - "shape":"StartChildWorkflowExecutionDecisionAttributes", - "documentation":"

Provides details of the StartChildWorkflowExecution decision. It is not set for other decision types.

" - } - }, - "documentation":"

Specifies a decision made by the decider. A decision can be one of these types:

Access Control

If you grant permission to use RespondDecisionTaskCompleted, you can use IAM policies to express permissions for the list of decisions returned by this action as if they were members of the API. Treating decisions as a pseudo API maintains a uniform conceptual model and helps keep policies readable. For details and example IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows.

Decision Failure

Decisions can fail for several reasons

One of the following events might be added to the history to indicate an error. The event attribute's cause parameter indicates the cause. If cause is set to OPERATION_NOT_PERMITTED, the decision failed because it lacked sufficient permissions. For details and example IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows.

The preceding error events might occur due to an error in the decider logic, which might put the workflow execution in an unstable state The cause field in the event structure for the error event indicates the cause of the error.

A workflow execution may be closed by the decider by returning one of the following decisions when completing a decision task: CompleteWorkflowExecution, FailWorkflowExecution, CancelWorkflowExecution and ContinueAsNewWorkflowExecution. An UnhandledDecision fault will be returned if a workflow closing decision is specified and a signal or activity event had been added to the history while the decision task was being performed by the decider. Unlike the above situations which are logic issues, this fault is always possible because of race conditions in a distributed system. The right action here is to call RespondDecisionTaskCompleted without any decisions. This would result in another decision task with these new events included in the history. The decider should handle the new events and may decide to close the workflow execution.

How to Code a Decision

You code a decision by first setting the decision type field to one of the above decision values, and then set the corresponding attributes field shown below:

" - }, - "DecisionList":{ - "type":"list", - "member":{"shape":"Decision"} - }, - "DecisionTask":{ - "type":"structure", - "required":[ - "taskToken", - "startedEventId", - "workflowExecution", - "workflowType", - "events" - ], - "members":{ - "taskToken":{ - "shape":"TaskToken", - "documentation":"

The opaque string used as a handle on the task. This token is used by workers to communicate progress and response information back to the system about the task.

" - }, - "startedEventId":{ - "shape":"EventId", - "documentation":"

The id of the DecisionTaskStarted event recorded in the history.

" - }, - "workflowExecution":{ - "shape":"WorkflowExecution", - "documentation":"

The workflow execution for which this decision task was created.

" - }, - "workflowType":{ - "shape":"WorkflowType", - "documentation":"

The type of the workflow execution for which this decision task was created.

" - }, - "events":{ - "shape":"HistoryEventList", - "documentation":"

A paginated list of history events of the workflow execution. The decider uses this during the processing of the decision task.

" - }, - "nextPageToken":{ - "shape":"PageToken", - "documentation":"

If a NextPageToken was returned by a previous call, there are more results available. To retrieve the next page of results, make the call again using the returned token in nextPageToken. Keep all other arguments unchanged.

The configured maximumPageSize determines how many results can be returned in a single call.

" - }, - "previousStartedEventId":{ - "shape":"EventId", - "documentation":"

The id of the DecisionTaskStarted event of the previous decision task of this workflow execution that was processed by the decider. This can be used to determine the events in the history new since the last decision task received by the decider.

" - } - }, - "documentation":"

A structure that represents a decision task. Decision tasks are sent to deciders in order for them to make decisions.

" - }, - "DecisionTaskCompletedEventAttributes":{ - "type":"structure", - "required":[ - "scheduledEventId", - "startedEventId" - ], - "members":{ - "executionContext":{ - "shape":"Data", - "documentation":"

User defined context for the workflow execution.

" - }, - "scheduledEventId":{ - "shape":"EventId", - "documentation":"

The id of the DecisionTaskScheduled event that was recorded when this decision task was scheduled. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event.

" - }, - "startedEventId":{ - "shape":"EventId", - "documentation":"

The Id of the DecisionTaskStarted event recorded when this decision task was started. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event.

" - } - }, - "documentation":"

Provides details of the DecisionTaskCompleted event.

" - }, - "DecisionTaskScheduledEventAttributes":{ - "type":"structure", - "required":["taskList"], - "members":{ - "taskList":{ - "shape":"TaskList", - "documentation":"

The name of the task list in which the decision task was scheduled.

" - }, - "taskPriority":{ - "shape":"TaskPriority", - "documentation":"

Optional. A task priority that, if set, specifies the priority for this decision task. Valid values are integers that range from Java's Integer.MIN_VALUE (-2147483648) to Integer.MAX_VALUE (2147483647). Higher numbers indicate higher priority.

For more information about setting task priority, see Setting Task Priority in the Amazon Simple Workflow Developer Guide.

" - }, - "startToCloseTimeout":{ - "shape":"DurationInSecondsOptional", - "documentation":"

The maximum duration for this decision task. The task is considered timed out if it does not completed within this duration.

The duration is specified in seconds; an integer greater than or equal to 0. The value \"NONE\" can be used to specify unlimited duration.

" - } - }, - "documentation":"

Provides details about the DecisionTaskScheduled event.

" - }, - "DecisionTaskStartedEventAttributes":{ - "type":"structure", - "required":["scheduledEventId"], - "members":{ - "identity":{ - "shape":"Identity", - "documentation":"

Identity of the decider making the request. This enables diagnostic tracing when problems arise. The form of this identity is user defined.

" - }, - "scheduledEventId":{ - "shape":"EventId", - "documentation":"

The id of the DecisionTaskScheduled event that was recorded when this decision task was scheduled. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event.

" - } - }, - "documentation":"

Provides details of the DecisionTaskStarted event.

" - }, - "DecisionTaskTimedOutEventAttributes":{ - "type":"structure", - "required":[ - "timeoutType", - "scheduledEventId", - "startedEventId" - ], - "members":{ - "timeoutType":{ - "shape":"DecisionTaskTimeoutType", - "documentation":"

The type of timeout that expired before the decision task could be completed.

" - }, - "scheduledEventId":{ - "shape":"EventId", - "documentation":"

The id of the DecisionTaskScheduled event that was recorded when this decision task was scheduled. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event.

" - }, - "startedEventId":{ - "shape":"EventId", - "documentation":"

The Id of the DecisionTaskStarted event recorded when this decision task was started. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event.

" - } - }, - "documentation":"

Provides details of the DecisionTaskTimedOut event.

" - }, - "DecisionTaskTimeoutType":{ - "type":"string", - "enum":["START_TO_CLOSE"] - }, - "DecisionType":{ - "type":"string", - "enum":[ - "ScheduleActivityTask", - "RequestCancelActivityTask", - "CompleteWorkflowExecution", - "FailWorkflowExecution", - "CancelWorkflowExecution", - "ContinueAsNewWorkflowExecution", - "RecordMarker", - "StartTimer", - "CancelTimer", - "SignalExternalWorkflowExecution", - "RequestCancelExternalWorkflowExecution", - "StartChildWorkflowExecution" - ] - }, - "DefaultUndefinedFault":{ - "type":"structure", - "members":{ - "message":{"shape":"ErrorMessage"} - }, - "exception":true - }, - "DeprecateActivityTypeInput":{ - "type":"structure", - "required":[ - "domain", - "activityType" - ], - "members":{ - "domain":{ - "shape":"DomainName", - "documentation":"

The name of the domain in which the activity type is registered.

" - }, - "activityType":{ - "shape":"ActivityType", - "documentation":"

The activity type to deprecate.

" - } - } - }, - "DeprecateDomainInput":{ - "type":"structure", - "required":["name"], - "members":{ - "name":{ - "shape":"DomainName", - "documentation":"

The name of the domain to deprecate.

" - } - } - }, - "DeprecateWorkflowTypeInput":{ - "type":"structure", - "required":[ - "domain", - "workflowType" - ], - "members":{ - "domain":{ - "shape":"DomainName", - "documentation":"

The name of the domain in which the workflow type is registered.

" - }, - "workflowType":{ - "shape":"WorkflowType", - "documentation":"

The workflow type to deprecate.

" - } - } - }, - "DescribeActivityTypeInput":{ - "type":"structure", - "required":[ - "domain", - "activityType" - ], - "members":{ - "domain":{ - "shape":"DomainName", - "documentation":"

The name of the domain in which the activity type is registered.

" - }, - "activityType":{ - "shape":"ActivityType", - "documentation":"

The activity type to get information about. Activity types are identified by the name and version that were supplied when the activity was registered.

" - } - } - }, - "DescribeDomainInput":{ - "type":"structure", - "required":["name"], - "members":{ - "name":{ - "shape":"DomainName", - "documentation":"

The name of the domain to describe.

" - } - } - }, - "DescribeWorkflowExecutionInput":{ - "type":"structure", - "required":[ - "domain", - "execution" - ], - "members":{ - "domain":{ - "shape":"DomainName", - "documentation":"

The name of the domain containing the workflow execution.

" - }, - "execution":{ - "shape":"WorkflowExecution", - "documentation":"

The workflow execution to describe.

" - } - } - }, - "DescribeWorkflowTypeInput":{ - "type":"structure", - "required":[ - "domain", - "workflowType" - ], - "members":{ - "domain":{ - "shape":"DomainName", - "documentation":"

The name of the domain in which this workflow type is registered.

" - }, - "workflowType":{ - "shape":"WorkflowType", - "documentation":"

The workflow type to describe.

" - } - } - }, - "Description":{ - "type":"string", - "max":1024 - }, - "DomainAlreadyExistsFault":{ - "type":"structure", - "members":{ - "message":{ - "shape":"ErrorMessage", - "documentation":"

A description that may help with diagnosing the cause of the fault.

" - } - }, - "exception":true, - "documentation":"

Returned if the specified domain already exists. You will get this fault even if the existing domain is in deprecated status.

" - }, - "DomainConfiguration":{ - "type":"structure", - "required":["workflowExecutionRetentionPeriodInDays"], - "members":{ - "workflowExecutionRetentionPeriodInDays":{ - "shape":"DurationInDays", - "documentation":"

The retention period for workflow executions in this domain.

" - } - }, - "documentation":"

Contains the configuration settings of a domain.

" - }, - "DomainDeprecatedFault":{ - "type":"structure", - "members":{ - "message":{ - "shape":"ErrorMessage", - "documentation":"

A description that may help with diagnosing the cause of the fault.

" - } - }, - "exception":true, - "documentation":"

Returned when the specified domain has been deprecated.

" - }, - "DomainDetail":{ - "type":"structure", - "required":[ - "domainInfo", - "configuration" - ], - "members":{ - "domainInfo":{"shape":"DomainInfo"}, - "configuration":{"shape":"DomainConfiguration"} - }, - "documentation":"

Contains details of a domain.

" - }, - "DomainInfo":{ - "type":"structure", - "required":[ - "name", - "status" - ], - "members":{ - "name":{ - "shape":"DomainName", - "documentation":"

The name of the domain. This name is unique within the account.

" - }, - "status":{ - "shape":"RegistrationStatus", - "documentation":"

The status of the domain:

" - }, - "description":{ - "shape":"Description", - "documentation":"

The description of the domain provided through RegisterDomain.

" - } - }, - "documentation":"

Contains general information about a domain.

" - }, - "DomainInfoList":{ - "type":"list", - "member":{"shape":"DomainInfo"} - }, - "DomainInfos":{ - "type":"structure", - "required":["domainInfos"], - "members":{ - "domainInfos":{ - "shape":"DomainInfoList", - "documentation":"

A list of DomainInfo structures.

" - }, - "nextPageToken":{ - "shape":"PageToken", - "documentation":"

If a NextPageToken was returned by a previous call, there are more results available. To retrieve the next page of results, make the call again using the returned token in nextPageToken. Keep all other arguments unchanged.

The configured maximumPageSize determines how many results can be returned in a single call.

" - } - }, - "documentation":"

Contains a paginated collection of DomainInfo structures.

" - }, - "DomainName":{ - "type":"string", - "min":1, - "max":256 - }, - "DurationInDays":{ - "type":"string", - "min":1, - "max":8 - }, - "DurationInSeconds":{ - "type":"string", - "min":1, - "max":8 - }, - "DurationInSecondsOptional":{ - "type":"string", - "max":8 - }, - "ErrorMessage":{"type":"string"}, - "EventId":{"type":"long"}, - "EventType":{ - "type":"string", - "enum":[ - "WorkflowExecutionStarted", - "WorkflowExecutionCancelRequested", - "WorkflowExecutionCompleted", - "CompleteWorkflowExecutionFailed", - "WorkflowExecutionFailed", - "FailWorkflowExecutionFailed", - "WorkflowExecutionTimedOut", - "WorkflowExecutionCanceled", - "CancelWorkflowExecutionFailed", - "WorkflowExecutionContinuedAsNew", - "ContinueAsNewWorkflowExecutionFailed", - "WorkflowExecutionTerminated", - "DecisionTaskScheduled", - "DecisionTaskStarted", - "DecisionTaskCompleted", - "DecisionTaskTimedOut", - "ActivityTaskScheduled", - "ScheduleActivityTaskFailed", - "ActivityTaskStarted", - "ActivityTaskCompleted", - "ActivityTaskFailed", - "ActivityTaskTimedOut", - "ActivityTaskCanceled", - "ActivityTaskCancelRequested", - "RequestCancelActivityTaskFailed", - "WorkflowExecutionSignaled", - "MarkerRecorded", - "RecordMarkerFailed", - "TimerStarted", - "StartTimerFailed", - "TimerFired", - "TimerCanceled", - "CancelTimerFailed", - "StartChildWorkflowExecutionInitiated", - "StartChildWorkflowExecutionFailed", - "ChildWorkflowExecutionStarted", - "ChildWorkflowExecutionCompleted", - "ChildWorkflowExecutionFailed", - "ChildWorkflowExecutionTimedOut", - "ChildWorkflowExecutionCanceled", - "ChildWorkflowExecutionTerminated", - "SignalExternalWorkflowExecutionInitiated", - "SignalExternalWorkflowExecutionFailed", - "ExternalWorkflowExecutionSignaled", - "RequestCancelExternalWorkflowExecutionInitiated", - "RequestCancelExternalWorkflowExecutionFailed", - "ExternalWorkflowExecutionCancelRequested" - ] - }, - "ExecutionStatus":{ - "type":"string", - "enum":[ - "OPEN", - "CLOSED" - ] - }, - "ExecutionTimeFilter":{ - "type":"structure", - "required":["oldestDate"], - "members":{ - "oldestDate":{ - "shape":"Timestamp", - "documentation":"

Specifies the oldest start or close date and time to return.

" - }, - "latestDate":{ - "shape":"Timestamp", - "documentation":"

Specifies the latest start or close date and time to return.

" - } - }, - "documentation":"

Used to filter the workflow executions in visibility APIs by various time-based rules. Each parameter, if specified, defines a rule that must be satisfied by each returned query result. The parameter values are in the Unix Time format. For example: \"oldestDate\": 1325376070.

" - }, - "ExternalWorkflowExecutionCancelRequestedEventAttributes":{ - "type":"structure", - "required":[ - "workflowExecution", - "initiatedEventId" - ], - "members":{ - "workflowExecution":{ - "shape":"WorkflowExecution", - "documentation":"

The external workflow execution to which the cancellation request was delivered.

" - }, - "initiatedEventId":{ - "shape":"EventId", - "documentation":"

The id of the RequestCancelExternalWorkflowExecutionInitiated event corresponding to the RequestCancelExternalWorkflowExecution decision to cancel this external workflow execution. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event.

" - } - }, - "documentation":"

Provides details of the ExternalWorkflowExecutionCancelRequested event.

" - }, - "ExternalWorkflowExecutionSignaledEventAttributes":{ - "type":"structure", - "required":[ - "workflowExecution", - "initiatedEventId" - ], - "members":{ - "workflowExecution":{ - "shape":"WorkflowExecution", - "documentation":"

The external workflow execution that the signal was delivered to.

" - }, - "initiatedEventId":{ - "shape":"EventId", - "documentation":"

The id of the SignalExternalWorkflowExecutionInitiated event corresponding to the SignalExternalWorkflowExecution decision to request this signal. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event.

" - } - }, - "documentation":"

Provides details of the ExternalWorkflowExecutionSignaled event.

" - }, - "FailWorkflowExecutionDecisionAttributes":{ - "type":"structure", - "members":{ - "reason":{ - "shape":"FailureReason", - "documentation":"

A descriptive reason for the failure that may help in diagnostics.

" - }, - "details":{ - "shape":"Data", - "documentation":"

Optional. Details of the failure.

" - } - }, - "documentation":"

Provides details of the FailWorkflowExecution decision.

Access Control

You can use IAM policies to control this decision's access to Amazon SWF resources as follows:

If the caller does not have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's cause parameter will be set to OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows.

" - }, - "FailWorkflowExecutionFailedCause":{ - "type":"string", - "enum":[ - "UNHANDLED_DECISION", - "OPERATION_NOT_PERMITTED" - ] - }, - "FailWorkflowExecutionFailedEventAttributes":{ - "type":"structure", - "required":[ - "cause", - "decisionTaskCompletedEventId" - ], - "members":{ - "cause":{ - "shape":"FailWorkflowExecutionFailedCause", - "documentation":"

The cause of the failure. This information is generated by the system and can be useful for diagnostic purposes.

If cause is set to OPERATION_NOT_PERMITTED, the decision failed because it lacked sufficient permissions. For details and example IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows." - }, - "decisionTaskCompletedEventId":{ - "shape":"EventId", - "documentation":"

The id of the DecisionTaskCompleted event corresponding to the decision task that resulted in the FailWorkflowExecution decision to fail this execution. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event.

" - } - }, - "documentation":"

Provides details of the FailWorkflowExecutionFailed event.

" - }, - "FailureReason":{ - "type":"string", - "max":256 - }, - "GetWorkflowExecutionHistoryInput":{ - "type":"structure", - "required":[ - "domain", - "execution" - ], - "members":{ - "domain":{ - "shape":"DomainName", - "documentation":"

The name of the domain containing the workflow execution.

" - }, - "execution":{ - "shape":"WorkflowExecution", - "documentation":"

Specifies the workflow execution for which to return the history.

" - }, - "nextPageToken":{ - "shape":"PageToken", - "documentation":"

If a NextPageToken was returned by a previous call, there are more results available. To retrieve the next page of results, make the call again using the returned token in nextPageToken. Keep all other arguments unchanged.

The configured maximumPageSize determines how many results can be returned in a single call.

" - }, - "maximumPageSize":{ - "shape":"PageSize", - "documentation":"

The maximum number of results that will be returned per call. nextPageToken can be used to obtain futher pages of results. The default is 100, which is the maximum allowed page size. You can, however, specify a page size smaller than 100.

This is an upper limit only; the actual number of results returned per call may be fewer than the specified maximum.

" - }, - "reverseOrder":{ - "shape":"ReverseOrder", - "documentation":"

When set to true, returns the events in reverse order. By default the results are returned in ascending order of the eventTimeStamp of the events.

" - } - } - }, - "History":{ - "type":"structure", - "required":["events"], - "members":{ - "events":{ - "shape":"HistoryEventList", - "documentation":"

The list of history events.

" - }, - "nextPageToken":{ - "shape":"PageToken", - "documentation":"

If a NextPageToken was returned by a previous call, there are more results available. To retrieve the next page of results, make the call again using the returned token in nextPageToken. Keep all other arguments unchanged.

The configured maximumPageSize determines how many results can be returned in a single call.

" - } - }, - "documentation":"

Paginated representation of a workflow history for a workflow execution. This is the up to date, complete and authoritative record of the events related to all tasks and events in the life of the workflow execution.

" - }, - "HistoryEvent":{ - "type":"structure", - "required":[ - "eventTimestamp", - "eventType", - "eventId" - ], - "members":{ - "eventTimestamp":{ - "shape":"Timestamp", - "documentation":"

The date and time when the event occurred.

" - }, - "eventType":{ - "shape":"EventType", - "documentation":"

The type of the history event.

" - }, - "eventId":{ - "shape":"EventId", - "documentation":"

The system generated id of the event. This id uniquely identifies the event with in the workflow execution history.

" - }, - "workflowExecutionStartedEventAttributes":{ - "shape":"WorkflowExecutionStartedEventAttributes", - "documentation":"

If the event is of type WorkflowExecutionStarted then this member is set and provides detailed information about the event. It is not set for other event types.

" - }, - "workflowExecutionCompletedEventAttributes":{ - "shape":"WorkflowExecutionCompletedEventAttributes", - "documentation":"

If the event is of type WorkflowExecutionCompleted then this member is set and provides detailed information about the event. It is not set for other event types.

" - }, - "completeWorkflowExecutionFailedEventAttributes":{ - "shape":"CompleteWorkflowExecutionFailedEventAttributes", - "documentation":"

If the event is of type CompleteWorkflowExecutionFailed then this member is set and provides detailed information about the event. It is not set for other event types.

" - }, - "workflowExecutionFailedEventAttributes":{ - "shape":"WorkflowExecutionFailedEventAttributes", - "documentation":"

If the event is of type WorkflowExecutionFailed then this member is set and provides detailed information about the event. It is not set for other event types.

" - }, - "failWorkflowExecutionFailedEventAttributes":{ - "shape":"FailWorkflowExecutionFailedEventAttributes", - "documentation":"

If the event is of type FailWorkflowExecutionFailed then this member is set and provides detailed information about the event. It is not set for other event types.

" - }, - "workflowExecutionTimedOutEventAttributes":{ - "shape":"WorkflowExecutionTimedOutEventAttributes", - "documentation":"

If the event is of type WorkflowExecutionTimedOut then this member is set and provides detailed information about the event. It is not set for other event types.

" - }, - "workflowExecutionCanceledEventAttributes":{ - "shape":"WorkflowExecutionCanceledEventAttributes", - "documentation":"

If the event is of type WorkflowExecutionCanceled then this member is set and provides detailed information about the event. It is not set for other event types.

" - }, - "cancelWorkflowExecutionFailedEventAttributes":{ - "shape":"CancelWorkflowExecutionFailedEventAttributes", - "documentation":"

If the event is of type CancelWorkflowExecutionFailed then this member is set and provides detailed information about the event. It is not set for other event types.

" - }, - "workflowExecutionContinuedAsNewEventAttributes":{ - "shape":"WorkflowExecutionContinuedAsNewEventAttributes", - "documentation":"

If the event is of type WorkflowExecutionContinuedAsNew then this member is set and provides detailed information about the event. It is not set for other event types.

" - }, - "continueAsNewWorkflowExecutionFailedEventAttributes":{ - "shape":"ContinueAsNewWorkflowExecutionFailedEventAttributes", - "documentation":"

If the event is of type ContinueAsNewWorkflowExecutionFailed then this member is set and provides detailed information about the event. It is not set for other event types.

" - }, - "workflowExecutionTerminatedEventAttributes":{ - "shape":"WorkflowExecutionTerminatedEventAttributes", - "documentation":"

If the event is of type WorkflowExecutionTerminated then this member is set and provides detailed information about the event. It is not set for other event types.

" - }, - "workflowExecutionCancelRequestedEventAttributes":{ - "shape":"WorkflowExecutionCancelRequestedEventAttributes", - "documentation":"

If the event is of type WorkflowExecutionCancelRequested then this member is set and provides detailed information about the event. It is not set for other event types.

" - }, - "decisionTaskScheduledEventAttributes":{ - "shape":"DecisionTaskScheduledEventAttributes", - "documentation":"

If the event is of type DecisionTaskScheduled then this member is set and provides detailed information about the event. It is not set for other event types.

" - }, - "decisionTaskStartedEventAttributes":{ - "shape":"DecisionTaskStartedEventAttributes", - "documentation":"

If the event is of type DecisionTaskStarted then this member is set and provides detailed information about the event. It is not set for other event types.

" - }, - "decisionTaskCompletedEventAttributes":{ - "shape":"DecisionTaskCompletedEventAttributes", - "documentation":"

If the event is of type DecisionTaskCompleted then this member is set and provides detailed information about the event. It is not set for other event types.

" - }, - "decisionTaskTimedOutEventAttributes":{ - "shape":"DecisionTaskTimedOutEventAttributes", - "documentation":"

If the event is of type DecisionTaskTimedOut then this member is set and provides detailed information about the event. It is not set for other event types.

" - }, - "activityTaskScheduledEventAttributes":{ - "shape":"ActivityTaskScheduledEventAttributes", - "documentation":"

If the event is of type ActivityTaskScheduled then this member is set and provides detailed information about the event. It is not set for other event types.

" - }, - "activityTaskStartedEventAttributes":{ - "shape":"ActivityTaskStartedEventAttributes", - "documentation":"

If the event is of type ActivityTaskStarted then this member is set and provides detailed information about the event. It is not set for other event types.

" - }, - "activityTaskCompletedEventAttributes":{ - "shape":"ActivityTaskCompletedEventAttributes", - "documentation":"

If the event is of type ActivityTaskCompleted then this member is set and provides detailed information about the event. It is not set for other event types.

" - }, - "activityTaskFailedEventAttributes":{ - "shape":"ActivityTaskFailedEventAttributes", - "documentation":"

If the event is of type ActivityTaskFailed then this member is set and provides detailed information about the event. It is not set for other event types.

" - }, - "activityTaskTimedOutEventAttributes":{ - "shape":"ActivityTaskTimedOutEventAttributes", - "documentation":"

If the event is of type ActivityTaskTimedOut then this member is set and provides detailed information about the event. It is not set for other event types.

" - }, - "activityTaskCanceledEventAttributes":{ - "shape":"ActivityTaskCanceledEventAttributes", - "documentation":"

If the event is of type ActivityTaskCanceled then this member is set and provides detailed information about the event. It is not set for other event types.

" - }, - "activityTaskCancelRequestedEventAttributes":{ - "shape":"ActivityTaskCancelRequestedEventAttributes", - "documentation":"

If the event is of type ActivityTaskcancelRequested then this member is set and provides detailed information about the event. It is not set for other event types.

" - }, - "workflowExecutionSignaledEventAttributes":{ - "shape":"WorkflowExecutionSignaledEventAttributes", - "documentation":"

If the event is of type WorkflowExecutionSignaled then this member is set and provides detailed information about the event. It is not set for other event types.

" - }, - "markerRecordedEventAttributes":{ - "shape":"MarkerRecordedEventAttributes", - "documentation":"

If the event is of type MarkerRecorded then this member is set and provides detailed information about the event. It is not set for other event types.

" - }, - "recordMarkerFailedEventAttributes":{ - "shape":"RecordMarkerFailedEventAttributes", - "documentation":"

If the event is of type DecisionTaskFailed then this member is set and provides detailed information about the event. It is not set for other event types.

" - }, - "timerStartedEventAttributes":{ - "shape":"TimerStartedEventAttributes", - "documentation":"

If the event is of type TimerStarted then this member is set and provides detailed information about the event. It is not set for other event types.

" - }, - "timerFiredEventAttributes":{ - "shape":"TimerFiredEventAttributes", - "documentation":"

If the event is of type TimerFired then this member is set and provides detailed information about the event. It is not set for other event types.

" - }, - "timerCanceledEventAttributes":{ - "shape":"TimerCanceledEventAttributes", - "documentation":"

If the event is of type TimerCanceled then this member is set and provides detailed information about the event. It is not set for other event types.

" - }, - "startChildWorkflowExecutionInitiatedEventAttributes":{ - "shape":"StartChildWorkflowExecutionInitiatedEventAttributes", - "documentation":"

If the event is of type StartChildWorkflowExecutionInitiated then this member is set and provides detailed information about the event. It is not set for other event types.

" - }, - "childWorkflowExecutionStartedEventAttributes":{ - "shape":"ChildWorkflowExecutionStartedEventAttributes", - "documentation":"

If the event is of type ChildWorkflowExecutionStarted then this member is set and provides detailed information about the event. It is not set for other event types.

" - }, - "childWorkflowExecutionCompletedEventAttributes":{ - "shape":"ChildWorkflowExecutionCompletedEventAttributes", - "documentation":"

If the event is of type ChildWorkflowExecutionCompleted then this member is set and provides detailed information about the event. It is not set for other event types.

" - }, - "childWorkflowExecutionFailedEventAttributes":{ - "shape":"ChildWorkflowExecutionFailedEventAttributes", - "documentation":"

If the event is of type ChildWorkflowExecutionFailed then this member is set and provides detailed information about the event. It is not set for other event types.

" - }, - "childWorkflowExecutionTimedOutEventAttributes":{ - "shape":"ChildWorkflowExecutionTimedOutEventAttributes", - "documentation":"

If the event is of type ChildWorkflowExecutionTimedOut then this member is set and provides detailed information about the event. It is not set for other event types.

" - }, - "childWorkflowExecutionCanceledEventAttributes":{ - "shape":"ChildWorkflowExecutionCanceledEventAttributes", - "documentation":"

If the event is of type ChildWorkflowExecutionCanceled then this member is set and provides detailed information about the event. It is not set for other event types.

" - }, - "childWorkflowExecutionTerminatedEventAttributes":{ - "shape":"ChildWorkflowExecutionTerminatedEventAttributes", - "documentation":"

If the event is of type ChildWorkflowExecutionTerminated then this member is set and provides detailed information about the event. It is not set for other event types.

" - }, - "signalExternalWorkflowExecutionInitiatedEventAttributes":{ - "shape":"SignalExternalWorkflowExecutionInitiatedEventAttributes", - "documentation":"

If the event is of type SignalExternalWorkflowExecutionInitiated then this member is set and provides detailed information about the event. It is not set for other event types.

" - }, - "externalWorkflowExecutionSignaledEventAttributes":{ - "shape":"ExternalWorkflowExecutionSignaledEventAttributes", - "documentation":"

If the event is of type ExternalWorkflowExecutionSignaled then this member is set and provides detailed information about the event. It is not set for other event types.

" - }, - "signalExternalWorkflowExecutionFailedEventAttributes":{ - "shape":"SignalExternalWorkflowExecutionFailedEventAttributes", - "documentation":"

If the event is of type SignalExternalWorkflowExecutionFailed then this member is set and provides detailed information about the event. It is not set for other event types.

" - }, - "externalWorkflowExecutionCancelRequestedEventAttributes":{ - "shape":"ExternalWorkflowExecutionCancelRequestedEventAttributes", - "documentation":"

If the event is of type ExternalWorkflowExecutionCancelRequested then this member is set and provides detailed information about the event. It is not set for other event types.

" - }, - "requestCancelExternalWorkflowExecutionInitiatedEventAttributes":{ - "shape":"RequestCancelExternalWorkflowExecutionInitiatedEventAttributes", - "documentation":"

If the event is of type RequestCancelExternalWorkflowExecutionInitiated then this member is set and provides detailed information about the event. It is not set for other event types.

" - }, - "requestCancelExternalWorkflowExecutionFailedEventAttributes":{ - "shape":"RequestCancelExternalWorkflowExecutionFailedEventAttributes", - "documentation":"

If the event is of type RequestCancelExternalWorkflowExecutionFailed then this member is set and provides detailed information about the event. It is not set for other event types.

" - }, - "scheduleActivityTaskFailedEventAttributes":{ - "shape":"ScheduleActivityTaskFailedEventAttributes", - "documentation":"

If the event is of type ScheduleActivityTaskFailed then this member is set and provides detailed information about the event. It is not set for other event types.

" - }, - "requestCancelActivityTaskFailedEventAttributes":{ - "shape":"RequestCancelActivityTaskFailedEventAttributes", - "documentation":"

If the event is of type RequestCancelActivityTaskFailed then this member is set and provides detailed information about the event. It is not set for other event types.

" - }, - "startTimerFailedEventAttributes":{ - "shape":"StartTimerFailedEventAttributes", - "documentation":"

If the event is of type StartTimerFailed then this member is set and provides detailed information about the event. It is not set for other event types.

" - }, - "cancelTimerFailedEventAttributes":{ - "shape":"CancelTimerFailedEventAttributes", - "documentation":"

If the event is of type CancelTimerFailed then this member is set and provides detailed information about the event. It is not set for other event types.

" - }, - "startChildWorkflowExecutionFailedEventAttributes":{ - "shape":"StartChildWorkflowExecutionFailedEventAttributes", - "documentation":"

If the event is of type StartChildWorkflowExecutionFailed then this member is set and provides detailed information about the event. It is not set for other event types.

" - } - }, - "documentation":"

Event within a workflow execution. A history event can be one of these types:

" - }, - "HistoryEventList":{ - "type":"list", - "member":{"shape":"HistoryEvent"} - }, - "Identity":{ - "type":"string", - "max":256 - }, - "LimitExceededFault":{ - "type":"structure", - "members":{ - "message":{ - "shape":"ErrorMessage", - "documentation":"

A description that may help with diagnosing the cause of the fault.

" - } - }, - "exception":true, - "documentation":"

Returned by any operation if a system imposed limitation has been reached. To address this fault you should either clean up unused resources or increase the limit by contacting AWS.

" - }, - "LimitedData":{ - "type":"string", - "max":2048 - }, - "ListActivityTypesInput":{ - "type":"structure", - "required":[ - "domain", - "registrationStatus" - ], - "members":{ - "domain":{ - "shape":"DomainName", - "documentation":"

The name of the domain in which the activity types have been registered.

" - }, - "name":{ - "shape":"Name", - "documentation":"

If specified, only lists the activity types that have this name.

" - }, - "registrationStatus":{ - "shape":"RegistrationStatus", - "documentation":"

Specifies the registration status of the activity types to list.

" - }, - "nextPageToken":{ - "shape":"PageToken", - "documentation":"

If a NextPageToken was returned by a previous call, there are more results available. To retrieve the next page of results, make the call again using the returned token in nextPageToken. Keep all other arguments unchanged.

The configured maximumPageSize determines how many results can be returned in a single call.

" - }, - "maximumPageSize":{ - "shape":"PageSize", - "documentation":"

The maximum number of results that will be returned per call. nextPageToken can be used to obtain futher pages of results. The default is 100, which is the maximum allowed page size. You can, however, specify a page size smaller than 100.

This is an upper limit only; the actual number of results returned per call may be fewer than the specified maximum.

" - }, - "reverseOrder":{ - "shape":"ReverseOrder", - "documentation":"

When set to true, returns the results in reverse order. By default, the results are returned in ascending alphabetical order by name of the activity types.

" - } - } - }, - "ListClosedWorkflowExecutionsInput":{ - "type":"structure", - "required":["domain"], - "members":{ - "domain":{ - "shape":"DomainName", - "documentation":"

The name of the domain that contains the workflow executions to list.

" - }, - "startTimeFilter":{ - "shape":"ExecutionTimeFilter", - "documentation":"

If specified, the workflow executions are included in the returned results based on whether their start times are within the range specified by this filter. Also, if this parameter is specified, the returned results are ordered by their start times.

startTimeFilter and closeTimeFilter are mutually exclusive. You must specify one of these in a request but not both." - }, - "closeTimeFilter":{ - "shape":"ExecutionTimeFilter", - "documentation":"

If specified, the workflow executions are included in the returned results based on whether their close times are within the range specified by this filter. Also, if this parameter is specified, the returned results are ordered by their close times.

startTimeFilter and closeTimeFilter are mutually exclusive. You must specify one of these in a request but not both." - }, - "executionFilter":{ - "shape":"WorkflowExecutionFilter", - "documentation":"

If specified, only workflow executions matching the workflow id specified in the filter are returned.

closeStatusFilter, executionFilter, typeFilter and tagFilter are mutually exclusive. You can specify at most one of these in a request." - }, - "closeStatusFilter":{ - "shape":"CloseStatusFilter", - "documentation":"

If specified, only workflow executions that match this close status are listed. For example, if TERMINATED is specified, then only TERMINATED workflow executions are listed.

closeStatusFilter, executionFilter, typeFilter and tagFilter are mutually exclusive. You can specify at most one of these in a request." - }, - "typeFilter":{ - "shape":"WorkflowTypeFilter", - "documentation":"

If specified, only executions of the type specified in the filter are returned.

closeStatusFilter, executionFilter, typeFilter and tagFilter are mutually exclusive. You can specify at most one of these in a request." - }, - "tagFilter":{ - "shape":"TagFilter", - "documentation":"

If specified, only executions that have the matching tag are listed.

closeStatusFilter, executionFilter, typeFilter and tagFilter are mutually exclusive. You can specify at most one of these in a request." - }, - "nextPageToken":{ - "shape":"PageToken", - "documentation":"

If a NextPageToken was returned by a previous call, there are more results available. To retrieve the next page of results, make the call again using the returned token in nextPageToken. Keep all other arguments unchanged.

The configured maximumPageSize determines how many results can be returned in a single call.

" - }, - "maximumPageSize":{ - "shape":"PageSize", - "documentation":"

The maximum number of results that will be returned per call. nextPageToken can be used to obtain futher pages of results. The default is 100, which is the maximum allowed page size. You can, however, specify a page size smaller than 100.

This is an upper limit only; the actual number of results returned per call may be fewer than the specified maximum.

" - }, - "reverseOrder":{ - "shape":"ReverseOrder", - "documentation":"

When set to true, returns the results in reverse order. By default the results are returned in descending order of the start or the close time of the executions.

" - } - } - }, - "ListDomainsInput":{ - "type":"structure", - "required":["registrationStatus"], - "members":{ - "nextPageToken":{ - "shape":"PageToken", - "documentation":"

If a NextPageToken was returned by a previous call, there are more results available. To retrieve the next page of results, make the call again using the returned token in nextPageToken. Keep all other arguments unchanged.

The configured maximumPageSize determines how many results can be returned in a single call.

" - }, - "registrationStatus":{ - "shape":"RegistrationStatus", - "documentation":"

Specifies the registration status of the domains to list.

" - }, - "maximumPageSize":{ - "shape":"PageSize", - "documentation":"

The maximum number of results that will be returned per call. nextPageToken can be used to obtain futher pages of results. The default is 100, which is the maximum allowed page size. You can, however, specify a page size smaller than 100.

This is an upper limit only; the actual number of results returned per call may be fewer than the specified maximum.

" - }, - "reverseOrder":{ - "shape":"ReverseOrder", - "documentation":"

When set to true, returns the results in reverse order. By default, the results are returned in ascending alphabetical order by name of the domains.

" - } - } - }, - "ListOpenWorkflowExecutionsInput":{ - "type":"structure", - "required":[ - "domain", - "startTimeFilter" - ], - "members":{ - "domain":{ - "shape":"DomainName", - "documentation":"

The name of the domain that contains the workflow executions to list.

" - }, - "startTimeFilter":{ - "shape":"ExecutionTimeFilter", - "documentation":"

Workflow executions are included in the returned results based on whether their start times are within the range specified by this filter.

" - }, - "typeFilter":{ - "shape":"WorkflowTypeFilter", - "documentation":"

If specified, only executions of the type specified in the filter are returned.

executionFilter, typeFilter and tagFilter are mutually exclusive. You can specify at most one of these in a request." - }, - "tagFilter":{ - "shape":"TagFilter", - "documentation":"

If specified, only executions that have the matching tag are listed.

executionFilter, typeFilter and tagFilter are mutually exclusive. You can specify at most one of these in a request." - }, - "nextPageToken":{ - "shape":"PageToken", - "documentation":"

If a NextPageToken was returned by a previous call, there are more results available. To retrieve the next page of results, make the call again using the returned token in nextPageToken. Keep all other arguments unchanged.

The configured maximumPageSize determines how many results can be returned in a single call.

" - }, - "maximumPageSize":{ - "shape":"PageSize", - "documentation":"

The maximum number of results that will be returned per call. nextPageToken can be used to obtain futher pages of results. The default is 100, which is the maximum allowed page size. You can, however, specify a page size smaller than 100.

This is an upper limit only; the actual number of results returned per call may be fewer than the specified maximum.

" - }, - "reverseOrder":{ - "shape":"ReverseOrder", - "documentation":"

When set to true, returns the results in reverse order. By default the results are returned in descending order of the start time of the executions.

" - }, - "executionFilter":{ - "shape":"WorkflowExecutionFilter", - "documentation":"

If specified, only workflow executions matching the workflow id specified in the filter are returned.

executionFilter, typeFilter and tagFilter are mutually exclusive. You can specify at most one of these in a request." - } - } - }, - "ListWorkflowTypesInput":{ - "type":"structure", - "required":[ - "domain", - "registrationStatus" - ], - "members":{ - "domain":{ - "shape":"DomainName", - "documentation":"

The name of the domain in which the workflow types have been registered.

" - }, - "name":{ - "shape":"Name", - "documentation":"

If specified, lists the workflow type with this name.

" - }, - "registrationStatus":{ - "shape":"RegistrationStatus", - "documentation":"

Specifies the registration status of the workflow types to list.

" - }, - "nextPageToken":{ - "shape":"PageToken", - "documentation":"

If a NextPageToken was returned by a previous call, there are more results available. To retrieve the next page of results, make the call again using the returned token in nextPageToken. Keep all other arguments unchanged.

The configured maximumPageSize determines how many results can be returned in a single call.

" - }, - "maximumPageSize":{ - "shape":"PageSize", - "documentation":"

The maximum number of results that will be returned per call. nextPageToken can be used to obtain futher pages of results. The default is 100, which is the maximum allowed page size. You can, however, specify a page size smaller than 100.

This is an upper limit only; the actual number of results returned per call may be fewer than the specified maximum.

" - }, - "reverseOrder":{ - "shape":"ReverseOrder", - "documentation":"

When set to true, returns the results in reverse order. By default the results are returned in ascending alphabetical order of the name of the workflow types.

" - } - } - }, - "MarkerName":{ - "type":"string", - "min":1, - "max":256 - }, - "MarkerRecordedEventAttributes":{ - "type":"structure", - "required":[ - "markerName", - "decisionTaskCompletedEventId" - ], - "members":{ - "markerName":{ - "shape":"MarkerName", - "documentation":"

The name of the marker.

" - }, - "details":{ - "shape":"Data", - "documentation":"

Details of the marker (if any).

" - }, - "decisionTaskCompletedEventId":{ - "shape":"EventId", - "documentation":"

The id of the DecisionTaskCompleted event corresponding to the decision task that resulted in the RecordMarker decision that requested this marker. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event.

" - } - }, - "documentation":"

Provides details of the MarkerRecorded event.

" - }, - "Name":{ - "type":"string", - "min":1, - "max":256 - }, - "OpenDecisionTasksCount":{ - "type":"integer", - "min":0, - "max":1 - }, - "OperationNotPermittedFault":{ - "type":"structure", - "members":{ - "message":{ - "shape":"ErrorMessage", - "documentation":"

A description that may help with diagnosing the cause of the fault.

" - } - }, - "exception":true, - "documentation":"

Returned when the caller does not have sufficient permissions to invoke the action.

" - }, - "PageSize":{ - "type":"integer", - "min":0, - "max":1000 - }, - "PageToken":{ - "type":"string", - "max":2048 - }, - "PendingTaskCount":{ - "type":"structure", - "required":["count"], - "members":{ - "count":{ - "shape":"Count", - "documentation":"

The number of tasks in the task list.

" - }, - "truncated":{ - "shape":"Truncated", - "documentation":"

If set to true, indicates that the actual count was more than the maximum supported by this API and the count returned is the truncated value.

" - } - }, - "documentation":"

Contains the count of tasks in a task list.

" - }, - "PollForActivityTaskInput":{ - "type":"structure", - "required":[ - "domain", - "taskList" - ], - "members":{ - "domain":{ - "shape":"DomainName", - "documentation":"

The name of the domain that contains the task lists being polled.

" - }, - "taskList":{ - "shape":"TaskList", - "documentation":"

Specifies the task list to poll for activity tasks.

The specified string must not start or end with whitespace. It must not contain a : (colon), / (slash), | (vertical bar), or any control characters (\\u0000-\\u001f | \\u007f - \\u009f). Also, it must not contain the literal string quotarnquot.

" - }, - "identity":{ - "shape":"Identity", - "documentation":"

Identity of the worker making the request, recorded in the ActivityTaskStarted event in the workflow history. This enables diagnostic tracing when problems arise. The form of this identity is user defined.

" - } - } - }, - "PollForDecisionTaskInput":{ - "type":"structure", - "required":[ - "domain", - "taskList" - ], - "members":{ - "domain":{ - "shape":"DomainName", - "documentation":"

The name of the domain containing the task lists to poll.

" - }, - "taskList":{ - "shape":"TaskList", - "documentation":"

Specifies the task list to poll for decision tasks.

The specified string must not start or end with whitespace. It must not contain a : (colon), / (slash), | (vertical bar), or any control characters (\\u0000-\\u001f | \\u007f - \\u009f). Also, it must not contain the literal string quotarnquot.

" - }, - "identity":{ - "shape":"Identity", - "documentation":"

Identity of the decider making the request, which is recorded in the DecisionTaskStarted event in the workflow history. This enables diagnostic tracing when problems arise. The form of this identity is user defined.

" - }, - "nextPageToken":{ - "shape":"PageToken", - "documentation":"

If a NextPageToken was returned by a previous call, there are more results available. To retrieve the next page of results, make the call again using the returned token in nextPageToken. Keep all other arguments unchanged.

The configured maximumPageSize determines how many results can be returned in a single call.

The nextPageToken returned by this action cannot be used with GetWorkflowExecutionHistory to get the next page. You must call PollForDecisionTask again (with the nextPageToken) to retrieve the next page of history records. Calling PollForDecisionTask with a nextPageToken will not return a new decision task.." - }, - "maximumPageSize":{ - "shape":"PageSize", - "documentation":"

The maximum number of results that will be returned per call. nextPageToken can be used to obtain futher pages of results. The default is 100, which is the maximum allowed page size. You can, however, specify a page size smaller than 100.

This is an upper limit only; the actual number of results returned per call may be fewer than the specified maximum.

" - }, - "reverseOrder":{ - "shape":"ReverseOrder", - "documentation":"

When set to true, returns the events in reverse order. By default the results are returned in ascending order of the eventTimestamp of the events.

" - } - } - }, - "RecordActivityTaskHeartbeatInput":{ - "type":"structure", - "required":["taskToken"], - "members":{ - "taskToken":{ - "shape":"TaskToken", - "documentation":"

The taskToken of the ActivityTask.

taskToken is generated by the service and should be treated as an opaque value. If the task is passed to another process, its taskToken must also be passed. This enables it to provide its progress and respond with results. " - }, - "details":{ - "shape":"LimitedData", - "documentation":"

If specified, contains details about the progress of the task.

" - } - } - }, - "RecordMarkerDecisionAttributes":{ - "type":"structure", - "required":["markerName"], - "members":{ - "markerName":{ - "shape":"MarkerName", - "documentation":"

Required. The name of the marker.

" - }, - "details":{ - "shape":"Data", - "documentation":"

Optional. details of the marker.

" - } - }, - "documentation":"

Provides details of the RecordMarker decision.

Access Control

You can use IAM policies to control this decision's access to Amazon SWF resources as follows:

If the caller does not have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's cause parameter will be set to OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows.

" - }, - "RecordMarkerFailedCause":{ - "type":"string", - "enum":["OPERATION_NOT_PERMITTED"] - }, - "RecordMarkerFailedEventAttributes":{ - "type":"structure", - "required":[ - "markerName", - "cause", - "decisionTaskCompletedEventId" - ], - "members":{ - "markerName":{ - "shape":"MarkerName", - "documentation":"

The marker's name.

" - }, - "cause":{ - "shape":"RecordMarkerFailedCause", - "documentation":"

The cause of the failure. This information is generated by the system and can be useful for diagnostic purposes.

If cause is set to OPERATION_NOT_PERMITTED, the decision failed because it lacked sufficient permissions. For details and example IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows." - }, - "decisionTaskCompletedEventId":{ - "shape":"EventId", - "documentation":"

The id of the DecisionTaskCompleted event corresponding to the decision task that resulted in the RecordMarkerFailed decision for this cancellation request. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event.

" - } - }, - "documentation":"

Provides details of the RecordMarkerFailed event.

" - }, - "RegisterActivityTypeInput":{ - "type":"structure", - "required":[ - "domain", - "name", - "version" - ], - "members":{ - "domain":{ - "shape":"DomainName", - "documentation":"

The name of the domain in which this activity is to be registered.

" - }, - "name":{ - "shape":"Name", - "documentation":"

The name of the activity type within the domain.

The specified string must not start or end with whitespace. It must not contain a : (colon), / (slash), | (vertical bar), or any control characters (\\u0000-\\u001f | \\u007f - \\u009f). Also, it must not contain the literal string quotarnquot.

" - }, - "version":{ - "shape":"Version", - "documentation":"

The version of the activity type.

The activity type consists of the name and version, the combination of which must be unique within the domain.

The specified string must not start or end with whitespace. It must not contain a : (colon), / (slash), | (vertical bar), or any control characters (\\u0000-\\u001f | \\u007f - \\u009f). Also, it must not contain the literal string quotarnquot.

" - }, - "description":{ - "shape":"Description", - "documentation":"

A textual description of the activity type.

" - }, - "defaultTaskStartToCloseTimeout":{ - "shape":"DurationInSecondsOptional", - "documentation":"

If set, specifies the default maximum duration that a worker can take to process tasks of this activity type. This default can be overridden when scheduling an activity task using the ScheduleActivityTask Decision.

The duration is specified in seconds; an integer greater than or equal to 0. The value \"NONE\" can be used to specify unlimited duration.

" - }, - "defaultTaskHeartbeatTimeout":{ - "shape":"DurationInSecondsOptional", - "documentation":"

If set, specifies the default maximum time before which a worker processing a task of this type must report progress by calling RecordActivityTaskHeartbeat. If the timeout is exceeded, the activity task is automatically timed out. This default can be overridden when scheduling an activity task using the ScheduleActivityTask Decision. If the activity worker subsequently attempts to record a heartbeat or returns a result, the activity worker receives an UnknownResource fault. In this case, Amazon SWF no longer considers the activity task to be valid; the activity worker should clean up the activity task.

The duration is specified in seconds; an integer greater than or equal to 0. The value \"NONE\" can be used to specify unlimited duration.

" - }, - "defaultTaskList":{ - "shape":"TaskList", - "documentation":"

If set, specifies the default task list to use for scheduling tasks of this activity type. This default task list is used if a task list is not provided when a task is scheduled through the ScheduleActivityTask Decision.

" - }, - "defaultTaskPriority":{ - "shape":"TaskPriority", - "documentation":"

The default task priority to assign to the activity type. If not assigned, then \"0\" will be used. Valid values are integers that range from Java's Integer.MIN_VALUE (-2147483648) to Integer.MAX_VALUE (2147483647). Higher numbers indicate higher priority.

For more information about setting task priority, see Setting Task Priority in the Amazon Simple Workflow Developer Guide.

" - }, - "defaultTaskScheduleToStartTimeout":{ - "shape":"DurationInSecondsOptional", - "documentation":"

If set, specifies the default maximum duration that a task of this activity type can wait before being assigned to a worker. This default can be overridden when scheduling an activity task using the ScheduleActivityTask Decision.

The duration is specified in seconds; an integer greater than or equal to 0. The value \"NONE\" can be used to specify unlimited duration.

" - }, - "defaultTaskScheduleToCloseTimeout":{ - "shape":"DurationInSecondsOptional", - "documentation":"

If set, specifies the default maximum duration for a task of this activity type. This default can be overridden when scheduling an activity task using the ScheduleActivityTask Decision.

The duration is specified in seconds; an integer greater than or equal to 0. The value \"NONE\" can be used to specify unlimited duration.

" - } - } - }, - "RegisterDomainInput":{ - "type":"structure", - "required":[ - "name", - "workflowExecutionRetentionPeriodInDays" - ], - "members":{ - "name":{ - "shape":"DomainName", - "documentation":"

Name of the domain to register. The name must be unique in the region that the domain is registered in.

The specified string must not start or end with whitespace. It must not contain a : (colon), / (slash), | (vertical bar), or any control characters (\\u0000-\\u001f | \\u007f - \\u009f). Also, it must not contain the literal string quotarnquot.

" - }, - "description":{ - "shape":"Description", - "documentation":"

A text description of the domain.

" - }, - "workflowExecutionRetentionPeriodInDays":{ - "shape":"DurationInDays", - "documentation":"

The duration (in days) that records and histories of workflow executions on the domain should be kept by the service. After the retention period, the workflow execution is not available in the results of visibility calls.

If you pass the value NONE or 0 (zero), then the workflow execution history will not be retained. As soon as the workflow execution completes, the execution record and its history are deleted.

The maximum workflow execution retention period is 90 days. For more information about Amazon SWF service limits, see: Amazon SWF Service Limits in the Amazon SWF Developer Guide.

" - } - } - }, - "RegisterWorkflowTypeInput":{ - "type":"structure", - "required":[ - "domain", - "name", - "version" - ], - "members":{ - "domain":{ - "shape":"DomainName", - "documentation":"

The name of the domain in which to register the workflow type.

" - }, - "name":{ - "shape":"Name", - "documentation":"

The name of the workflow type.

The specified string must not start or end with whitespace. It must not contain a : (colon), / (slash), | (vertical bar), or any control characters (\\u0000-\\u001f | \\u007f - \\u009f). Also, it must not contain the literal string quotarnquot.

" - }, - "version":{ - "shape":"Version", - "documentation":"

The version of the workflow type.

The workflow type consists of the name and version, the combination of which must be unique within the domain. To get a list of all currently registered workflow types, use the ListWorkflowTypes action.

The specified string must not start or end with whitespace. It must not contain a : (colon), / (slash), | (vertical bar), or any control characters (\\u0000-\\u001f | \\u007f - \\u009f). Also, it must not contain the literal string quotarnquot.

" - }, - "description":{ - "shape":"Description", - "documentation":"

Textual description of the workflow type.

" - }, - "defaultTaskStartToCloseTimeout":{ - "shape":"DurationInSecondsOptional", - "documentation":"

If set, specifies the default maximum duration of decision tasks for this workflow type. This default can be overridden when starting a workflow execution using the StartWorkflowExecution action or the StartChildWorkflowExecution Decision.

The duration is specified in seconds; an integer greater than or equal to 0. The value \"NONE\" can be used to specify unlimited duration.

" - }, - "defaultExecutionStartToCloseTimeout":{ - "shape":"DurationInSecondsOptional", - "documentation":"

If set, specifies the default maximum duration for executions of this workflow type. You can override this default when starting an execution through the StartWorkflowExecution Action or StartChildWorkflowExecution Decision.

The duration is specified in seconds; an integer greater than or equal to 0. Unlike some of the other timeout parameters in Amazon SWF, you cannot specify a value of \"NONE\" for defaultExecutionStartToCloseTimeout; there is a one-year max limit on the time that a workflow execution can run. Exceeding this limit will always cause the workflow execution to time out.

" - }, - "defaultTaskList":{ - "shape":"TaskList", - "documentation":"

If set, specifies the default task list to use for scheduling decision tasks for executions of this workflow type. This default is used only if a task list is not provided when starting the execution through the StartWorkflowExecution Action or StartChildWorkflowExecution Decision.

" - }, - "defaultTaskPriority":{ - "shape":"TaskPriority", - "documentation":"

The default task priority to assign to the workflow type. If not assigned, then \"0\" will be used. Valid values are integers that range from Java's Integer.MIN_VALUE (-2147483648) to Integer.MAX_VALUE (2147483647). Higher numbers indicate higher priority.

For more information about setting task priority, see Setting Task Priority in the Amazon Simple Workflow Developer Guide.

" - }, - "defaultChildPolicy":{ - "shape":"ChildPolicy", - "documentation":"

If set, specifies the default policy to use for the child workflow executions when a workflow execution of this type is terminated, by calling the TerminateWorkflowExecution action explicitly or due to an expired timeout. This default can be overridden when starting a workflow execution using the StartWorkflowExecution action or the StartChildWorkflowExecution Decision.

The supported child policies are:

" - } - } - }, - "RegistrationStatus":{ - "type":"string", - "enum":[ - "REGISTERED", - "DEPRECATED" - ] - }, - "RequestCancelActivityTaskDecisionAttributes":{ - "type":"structure", - "required":["activityId"], - "members":{ - "activityId":{ - "shape":"ActivityId", - "documentation":"

The activityId of the activity task to be canceled.

" - } - }, - "documentation":"

Provides details of the RequestCancelActivityTask decision.

Access Control

You can use IAM policies to control this decision's access to Amazon SWF resources as follows:

If the caller does not have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's cause parameter will be set to OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows.

" - }, - "RequestCancelActivityTaskFailedCause":{ - "type":"string", - "enum":[ - "ACTIVITY_ID_UNKNOWN", - "OPERATION_NOT_PERMITTED" - ] - }, - "RequestCancelActivityTaskFailedEventAttributes":{ - "type":"structure", - "required":[ - "activityId", - "cause", - "decisionTaskCompletedEventId" - ], - "members":{ - "activityId":{ - "shape":"ActivityId", - "documentation":"

The activityId provided in the RequestCancelActivityTask decision that failed.

" - }, - "cause":{ - "shape":"RequestCancelActivityTaskFailedCause", - "documentation":"

The cause of the failure. This information is generated by the system and can be useful for diagnostic purposes.

If cause is set to OPERATION_NOT_PERMITTED, the decision failed because it lacked sufficient permissions. For details and example IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows." - }, - "decisionTaskCompletedEventId":{ - "shape":"EventId", - "documentation":"

The id of the DecisionTaskCompleted event corresponding to the decision task that resulted in the RequestCancelActivityTask decision for this cancellation request. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event.

" - } - }, - "documentation":"

Provides details of the RequestCancelActivityTaskFailed event.

" - }, - "RequestCancelExternalWorkflowExecutionDecisionAttributes":{ - "type":"structure", - "required":["workflowId"], - "members":{ - "workflowId":{ - "shape":"WorkflowId", - "documentation":"

Required. The workflowId of the external workflow execution to cancel.

" - }, - "runId":{ - "shape":"RunIdOptional", - "documentation":"

The runId of the external workflow execution to cancel.

" - }, - "control":{ - "shape":"Data", - "documentation":"

Optional. Data attached to the event that can be used by the decider in subsequent workflow tasks.

" - } - }, - "documentation":"

Provides details of the RequestCancelExternalWorkflowExecution decision.

Access Control

You can use IAM policies to control this decision's access to Amazon SWF resources as follows:

If the caller does not have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's cause parameter will be set to OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows.

" - }, - "RequestCancelExternalWorkflowExecutionFailedCause":{ - "type":"string", - "enum":[ - "UNKNOWN_EXTERNAL_WORKFLOW_EXECUTION", - "REQUEST_CANCEL_EXTERNAL_WORKFLOW_EXECUTION_RATE_EXCEEDED", - "OPERATION_NOT_PERMITTED" - ] - }, - "RequestCancelExternalWorkflowExecutionFailedEventAttributes":{ - "type":"structure", - "required":[ - "workflowId", - "cause", - "initiatedEventId", - "decisionTaskCompletedEventId" - ], - "members":{ - "workflowId":{ - "shape":"WorkflowId", - "documentation":"

The workflowId of the external workflow to which the cancel request was to be delivered.

" - }, - "runId":{ - "shape":"RunIdOptional", - "documentation":"

The runId of the external workflow execution.

" - }, - "cause":{ - "shape":"RequestCancelExternalWorkflowExecutionFailedCause", - "documentation":"

The cause of the failure. This information is generated by the system and can be useful for diagnostic purposes.

If cause is set to OPERATION_NOT_PERMITTED, the decision failed because it lacked sufficient permissions. For details and example IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows." - }, - "initiatedEventId":{ - "shape":"EventId", - "documentation":"

The id of the RequestCancelExternalWorkflowExecutionInitiated event corresponding to the RequestCancelExternalWorkflowExecution decision to cancel this external workflow execution. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event.

" - }, - "decisionTaskCompletedEventId":{ - "shape":"EventId", - "documentation":"

The id of the DecisionTaskCompleted event corresponding to the decision task that resulted in the RequestCancelExternalWorkflowExecution decision for this cancellation request. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event.

" - }, - "control":{"shape":"Data"} - }, - "documentation":"

Provides details of the RequestCancelExternalWorkflowExecutionFailed event.

" - }, - "RequestCancelExternalWorkflowExecutionInitiatedEventAttributes":{ - "type":"structure", - "required":[ - "workflowId", - "decisionTaskCompletedEventId" - ], - "members":{ - "workflowId":{ - "shape":"WorkflowId", - "documentation":"

The workflowId of the external workflow execution to be canceled.

" - }, - "runId":{ - "shape":"RunIdOptional", - "documentation":"

The runId of the external workflow execution to be canceled.

" - }, - "decisionTaskCompletedEventId":{ - "shape":"EventId", - "documentation":"

The id of the DecisionTaskCompleted event corresponding to the decision task that resulted in the RequestCancelExternalWorkflowExecution decision for this cancellation request. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event.

" - }, - "control":{ - "shape":"Data", - "documentation":"

Optional. Data attached to the event that can be used by the decider in subsequent workflow tasks.

" - } - }, - "documentation":"

Provides details of the RequestCancelExternalWorkflowExecutionInitiated event.

" - }, - "RequestCancelWorkflowExecutionInput":{ - "type":"structure", - "required":[ - "domain", - "workflowId" - ], - "members":{ - "domain":{ - "shape":"DomainName", - "documentation":"

The name of the domain containing the workflow execution to cancel.

" - }, - "workflowId":{ - "shape":"WorkflowId", - "documentation":"

The workflowId of the workflow execution to cancel.

" - }, - "runId":{ - "shape":"RunIdOptional", - "documentation":"

The runId of the workflow execution to cancel.

" - } - } - }, - "RespondActivityTaskCanceledInput":{ - "type":"structure", - "required":["taskToken"], - "members":{ - "taskToken":{ - "shape":"TaskToken", - "documentation":"

The taskToken of the ActivityTask.

taskToken is generated by the service and should be treated as an opaque value. If the task is passed to another process, its taskToken must also be passed. This enables it to provide its progress and respond with results." - }, - "details":{ - "shape":"Data", - "documentation":"

Optional. Information about the cancellation.

" - } - } - }, - "RespondActivityTaskCompletedInput":{ - "type":"structure", - "required":["taskToken"], - "members":{ - "taskToken":{ - "shape":"TaskToken", - "documentation":"

The taskToken of the ActivityTask.

taskToken is generated by the service and should be treated as an opaque value. If the task is passed to another process, its taskToken must also be passed. This enables it to provide its progress and respond with results." - }, - "result":{ - "shape":"Data", - "documentation":"

The result of the activity task. It is a free form string that is implementation specific.

" - } - } - }, - "RespondActivityTaskFailedInput":{ - "type":"structure", - "required":["taskToken"], - "members":{ - "taskToken":{ - "shape":"TaskToken", - "documentation":"

The taskToken of the ActivityTask.

taskToken is generated by the service and should be treated as an opaque value. If the task is passed to another process, its taskToken must also be passed. This enables it to provide its progress and respond with results." - }, - "reason":{ - "shape":"FailureReason", - "documentation":"

Description of the error that may assist in diagnostics.

" - }, - "details":{ - "shape":"Data", - "documentation":"

Optional. Detailed information about the failure.

" - } - } - }, - "RespondDecisionTaskCompletedInput":{ - "type":"structure", - "required":["taskToken"], - "members":{ - "taskToken":{ - "shape":"TaskToken", - "documentation":"

The taskToken from the DecisionTask.

taskToken is generated by the service and should be treated as an opaque value. If the task is passed to another process, its taskToken must also be passed. This enables it to provide its progress and respond with results." - }, - "decisions":{ - "shape":"DecisionList", - "documentation":"

The list of decisions (possibly empty) made by the decider while processing this decision task. See the docs for the Decision structure for details.

" - }, - "executionContext":{ - "shape":"Data", - "documentation":"

User defined context to add to workflow execution.

" - } - } - }, - "ReverseOrder":{"type":"boolean"}, - "Run":{ - "type":"structure", - "members":{ - "runId":{ - "shape":"RunId", - "documentation":"

The runId of a workflow execution. This Id is generated by the service and can be used to uniquely identify the workflow execution within a domain.

" - } - }, - "documentation":"

Specifies the runId of a workflow execution.

" - }, - "RunId":{ - "type":"string", - "min":1, - "max":64 - }, - "RunIdOptional":{ - "type":"string", - "max":64 - }, - "ScheduleActivityTaskDecisionAttributes":{ - "type":"structure", - "required":[ - "activityType", - "activityId" - ], - "members":{ - "activityType":{ - "shape":"ActivityType", - "documentation":"

Required. The type of the activity task to schedule.

" - }, - "activityId":{ - "shape":"ActivityId", - "documentation":"

Required. The activityId of the activity task.

The specified string must not start or end with whitespace. It must not contain a : (colon), / (slash), | (vertical bar), or any control characters (\\u0000-\\u001f | \\u007f - \\u009f). Also, it must not contain the literal string quotarnquot.

" - }, - "control":{ - "shape":"Data", - "documentation":"

Optional. Data attached to the event that can be used by the decider in subsequent workflow tasks. This data is not sent to the activity.

" - }, - "input":{ - "shape":"Data", - "documentation":"

The input provided to the activity task.

" - }, - "scheduleToCloseTimeout":{ - "shape":"DurationInSecondsOptional", - "documentation":"

The maximum duration for this activity task.

The duration is specified in seconds; an integer greater than or equal to 0. The value \"NONE\" can be used to specify unlimited duration.

A schedule-to-close timeout for this activity task must be specified either as a default for the activity type or through this field. If neither this field is set nor a default schedule-to-close timeout was specified at registration time then a fault will be returned." - }, - "taskList":{ - "shape":"TaskList", - "documentation":"

If set, specifies the name of the task list in which to schedule the activity task. If not specified, the defaultTaskList registered with the activity type will be used.

A task list for this activity task must be specified either as a default for the activity type or through this field. If neither this field is set nor a default task list was specified at registration time then a fault will be returned.

The specified string must not start or end with whitespace. It must not contain a : (colon), / (slash), | (vertical bar), or any control characters (\\u0000-\\u001f | \\u007f - \\u009f). Also, it must not contain the literal string quotarnquot.

" - }, - "taskPriority":{ - "shape":"TaskPriority", - "documentation":"

Optional. If set, specifies the priority with which the activity task is to be assigned to a worker. This overrides the defaultTaskPriority specified when registering the activity type using RegisterActivityType. Valid values are integers that range from Java's Integer.MIN_VALUE (-2147483648) to Integer.MAX_VALUE (2147483647). Higher numbers indicate higher priority.

For more information about setting task priority, see Setting Task Priority in the Amazon Simple Workflow Developer Guide.

" - }, - "scheduleToStartTimeout":{ - "shape":"DurationInSecondsOptional", - "documentation":"

Optional. If set, specifies the maximum duration the activity task can wait to be assigned to a worker. This overrides the default schedule-to-start timeout specified when registering the activity type using RegisterActivityType.

The duration is specified in seconds; an integer greater than or equal to 0. The value \"NONE\" can be used to specify unlimited duration.

A schedule-to-start timeout for this activity task must be specified either as a default for the activity type or through this field. If neither this field is set nor a default schedule-to-start timeout was specified at registration time then a fault will be returned." - }, - "startToCloseTimeout":{ - "shape":"DurationInSecondsOptional", - "documentation":"

If set, specifies the maximum duration a worker may take to process this activity task. This overrides the default start-to-close timeout specified when registering the activity type using RegisterActivityType.

The duration is specified in seconds; an integer greater than or equal to 0. The value \"NONE\" can be used to specify unlimited duration.

A start-to-close timeout for this activity task must be specified either as a default for the activity type or through this field. If neither this field is set nor a default start-to-close timeout was specified at registration time then a fault will be returned." - }, - "heartbeatTimeout":{ - "shape":"DurationInSecondsOptional", - "documentation":"

If set, specifies the maximum time before which a worker processing a task of this type must report progress by calling RecordActivityTaskHeartbeat. If the timeout is exceeded, the activity task is automatically timed out. If the worker subsequently attempts to record a heartbeat or returns a result, it will be ignored. This overrides the default heartbeat timeout specified when registering the activity type using RegisterActivityType.

The duration is specified in seconds; an integer greater than or equal to 0. The value \"NONE\" can be used to specify unlimited duration.

" - } - }, - "documentation":"

Provides details of the ScheduleActivityTask decision.

Access Control

You can use IAM policies to control this decision's access to Amazon SWF resources as follows:

If the caller does not have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's cause parameter will be set to OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows.

" - }, - "ScheduleActivityTaskFailedCause":{ - "type":"string", - "enum":[ - "ACTIVITY_TYPE_DEPRECATED", - "ACTIVITY_TYPE_DOES_NOT_EXIST", - "ACTIVITY_ID_ALREADY_IN_USE", - "OPEN_ACTIVITIES_LIMIT_EXCEEDED", - "ACTIVITY_CREATION_RATE_EXCEEDED", - "DEFAULT_SCHEDULE_TO_CLOSE_TIMEOUT_UNDEFINED", - "DEFAULT_TASK_LIST_UNDEFINED", - "DEFAULT_SCHEDULE_TO_START_TIMEOUT_UNDEFINED", - "DEFAULT_START_TO_CLOSE_TIMEOUT_UNDEFINED", - "DEFAULT_HEARTBEAT_TIMEOUT_UNDEFINED", - "OPERATION_NOT_PERMITTED" - ] - }, - "ScheduleActivityTaskFailedEventAttributes":{ - "type":"structure", - "required":[ - "activityType", - "activityId", - "cause", - "decisionTaskCompletedEventId" - ], - "members":{ - "activityType":{ - "shape":"ActivityType", - "documentation":"

The activity type provided in the ScheduleActivityTask decision that failed.

" - }, - "activityId":{ - "shape":"ActivityId", - "documentation":"

The activityId provided in the ScheduleActivityTask decision that failed.

" - }, - "cause":{ - "shape":"ScheduleActivityTaskFailedCause", - "documentation":"

The cause of the failure. This information is generated by the system and can be useful for diagnostic purposes.

If cause is set to OPERATION_NOT_PERMITTED, the decision failed because it lacked sufficient permissions. For details and example IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows." - }, - "decisionTaskCompletedEventId":{ - "shape":"EventId", - "documentation":"

The id of the DecisionTaskCompleted event corresponding to the decision that resulted in the scheduling of this activity task. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event.

" - } - }, - "documentation":"

Provides details of the ScheduleActivityTaskFailed event.

" - }, - "SignalExternalWorkflowExecutionDecisionAttributes":{ - "type":"structure", - "required":[ - "workflowId", - "signalName" - ], - "members":{ - "workflowId":{ - "shape":"WorkflowId", - "documentation":"

Required. The workflowId of the workflow execution to be signaled.

" - }, - "runId":{ - "shape":"RunIdOptional", - "documentation":"

The runId of the workflow execution to be signaled.

" - }, - "signalName":{ - "shape":"SignalName", - "documentation":"

Required. The name of the signal.The target workflow execution will use the signal name and input to process the signal.

" - }, - "input":{ - "shape":"Data", - "documentation":"

Optional. Input data to be provided with the signal. The target workflow execution will use the signal name and input data to process the signal.

" - }, - "control":{ - "shape":"Data", - "documentation":"

Optional. Data attached to the event that can be used by the decider in subsequent decision tasks.

" - } - }, - "documentation":"

Provides details of the SignalExternalWorkflowExecution decision.

Access Control

You can use IAM policies to control this decision's access to Amazon SWF resources as follows:

If the caller does not have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's cause parameter will be set to OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows.

" - }, - "SignalExternalWorkflowExecutionFailedCause":{ - "type":"string", - "enum":[ - "UNKNOWN_EXTERNAL_WORKFLOW_EXECUTION", - "SIGNAL_EXTERNAL_WORKFLOW_EXECUTION_RATE_EXCEEDED", - "OPERATION_NOT_PERMITTED" - ] - }, - "SignalExternalWorkflowExecutionFailedEventAttributes":{ - "type":"structure", - "required":[ - "workflowId", - "cause", - "initiatedEventId", - "decisionTaskCompletedEventId" - ], - "members":{ - "workflowId":{ - "shape":"WorkflowId", - "documentation":"

The workflowId of the external workflow execution that the signal was being delivered to.

" - }, - "runId":{ - "shape":"RunIdOptional", - "documentation":"

The runId of the external workflow execution that the signal was being delivered to.

" - }, - "cause":{ - "shape":"SignalExternalWorkflowExecutionFailedCause", - "documentation":"

The cause of the failure. This information is generated by the system and can be useful for diagnostic purposes.

If cause is set to OPERATION_NOT_PERMITTED, the decision failed because it lacked sufficient permissions. For details and example IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows." - }, - "initiatedEventId":{ - "shape":"EventId", - "documentation":"

The id of the SignalExternalWorkflowExecutionInitiated event corresponding to the SignalExternalWorkflowExecution decision to request this signal. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event.

" - }, - "decisionTaskCompletedEventId":{ - "shape":"EventId", - "documentation":"

The id of the DecisionTaskCompleted event corresponding to the decision task that resulted in the SignalExternalWorkflowExecution decision for this signal. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event.

" - }, - "control":{"shape":"Data"} - }, - "documentation":"

Provides details of the SignalExternalWorkflowExecutionFailed event.

" - }, - "SignalExternalWorkflowExecutionInitiatedEventAttributes":{ - "type":"structure", - "required":[ - "workflowId", - "signalName", - "decisionTaskCompletedEventId" - ], - "members":{ - "workflowId":{ - "shape":"WorkflowId", - "documentation":"

The workflowId of the external workflow execution.

" - }, - "runId":{ - "shape":"RunIdOptional", - "documentation":"

The runId of the external workflow execution to send the signal to.

" - }, - "signalName":{ - "shape":"SignalName", - "documentation":"

The name of the signal.

" - }, - "input":{ - "shape":"Data", - "documentation":"

Input provided to the signal (if any).

" - }, - "decisionTaskCompletedEventId":{ - "shape":"EventId", - "documentation":"

The id of the DecisionTaskCompleted event corresponding to the decision task that resulted in the SignalExternalWorkflowExecution decision for this signal. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event.

" - }, - "control":{ - "shape":"Data", - "documentation":"

Optional. data attached to the event that can be used by the decider in subsequent decision tasks.

" - } - }, - "documentation":"

Provides details of the SignalExternalWorkflowExecutionInitiated event.

" - }, - "SignalName":{ - "type":"string", - "min":1, - "max":256 - }, - "SignalWorkflowExecutionInput":{ - "type":"structure", - "required":[ - "domain", - "workflowId", - "signalName" - ], - "members":{ - "domain":{ - "shape":"DomainName", - "documentation":"

The name of the domain containing the workflow execution to signal.

" - }, - "workflowId":{ - "shape":"WorkflowId", - "documentation":"

The workflowId of the workflow execution to signal.

" - }, - "runId":{ - "shape":"RunIdOptional", - "documentation":"

The runId of the workflow execution to signal.

" - }, - "signalName":{ - "shape":"SignalName", - "documentation":"

The name of the signal. This name must be meaningful to the target workflow.

" - }, - "input":{ - "shape":"Data", - "documentation":"

Data to attach to the WorkflowExecutionSignaled event in the target workflow execution's history.

" - } - } - }, - "StartChildWorkflowExecutionDecisionAttributes":{ - "type":"structure", - "required":[ - "workflowType", - "workflowId" - ], - "members":{ - "workflowType":{ - "shape":"WorkflowType", - "documentation":"

Required. The type of the workflow execution to be started.

" - }, - "workflowId":{ - "shape":"WorkflowId", - "documentation":"

Required. The workflowId of the workflow execution.

The specified string must not start or end with whitespace. It must not contain a : (colon), / (slash), | (vertical bar), or any control characters (\\u0000-\\u001f | \\u007f - \\u009f). Also, it must not contain the literal string quotarnquot.

" - }, - "control":{ - "shape":"Data", - "documentation":"

Optional. Data attached to the event that can be used by the decider in subsequent workflow tasks. This data is not sent to the child workflow execution.

" - }, - "input":{ - "shape":"Data", - "documentation":"

The input to be provided to the workflow execution.

" - }, - "executionStartToCloseTimeout":{ - "shape":"DurationInSecondsOptional", - "documentation":"

The total duration for this workflow execution. This overrides the defaultExecutionStartToCloseTimeout specified when registering the workflow type.

The duration is specified in seconds; an integer greater than or equal to 0. The value \"NONE\" can be used to specify unlimited duration.

An execution start-to-close timeout for this workflow execution must be specified either as a default for the workflow type or through this parameter. If neither this parameter is set nor a default execution start-to-close timeout was specified at registration time then a fault will be returned." - }, - "taskList":{ - "shape":"TaskList", - "documentation":"

The name of the task list to be used for decision tasks of the child workflow execution.

A task list for this workflow execution must be specified either as a default for the workflow type or through this parameter. If neither this parameter is set nor a default task list was specified at registration time then a fault will be returned.

The specified string must not start or end with whitespace. It must not contain a : (colon), / (slash), | (vertical bar), or any control characters (\\u0000-\\u001f | \\u007f - \\u009f). Also, it must not contain the literal string quotarnquot.

" - }, - "taskPriority":{ - "shape":"TaskPriority", - "documentation":"

Optional. A task priority that, if set, specifies the priority for a decision task of this workflow execution. This overrides the defaultTaskPriority specified when registering the workflow type. Valid values are integers that range from Java's Integer.MIN_VALUE (-2147483648) to Integer.MAX_VALUE (2147483647). Higher numbers indicate higher priority.

For more information about setting task priority, see Setting Task Priority in the Amazon Simple Workflow Developer Guide.

" - }, - "taskStartToCloseTimeout":{ - "shape":"DurationInSecondsOptional", - "documentation":"

Specifies the maximum duration of decision tasks for this workflow execution. This parameter overrides the defaultTaskStartToCloseTimout specified when registering the workflow type using RegisterWorkflowType.

The duration is specified in seconds; an integer greater than or equal to 0. The value \"NONE\" can be used to specify unlimited duration.

A task start-to-close timeout for this workflow execution must be specified either as a default for the workflow type or through this parameter. If neither this parameter is set nor a default task start-to-close timeout was specified at registration time then a fault will be returned." - }, - "childPolicy":{ - "shape":"ChildPolicy", - "documentation":"

Optional. If set, specifies the policy to use for the child workflow executions if the workflow execution being started is terminated by calling the TerminateWorkflowExecution action explicitly or due to an expired timeout. This policy overrides the default child policy specified when registering the workflow type using RegisterWorkflowType.

The supported child policies are:

A child policy for this workflow execution must be specified either as a default for the workflow type or through this parameter. If neither this parameter is set nor a default child policy was specified at registration time then a fault will be returned." - }, - "tagList":{ - "shape":"TagList", - "documentation":"

The list of tags to associate with the child workflow execution. A maximum of 5 tags can be specified. You can list workflow executions with a specific tag by calling ListOpenWorkflowExecutions or ListClosedWorkflowExecutions and specifying a TagFilter.

" - } - }, - "documentation":"

Provides details of the StartChildWorkflowExecution decision.

Access Control

You can use IAM policies to control this decision's access to Amazon SWF resources as follows:

If the caller does not have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's cause parameter will be set to OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows.

" - }, - "StartChildWorkflowExecutionFailedCause":{ - "type":"string", - "enum":[ - "WORKFLOW_TYPE_DOES_NOT_EXIST", - "WORKFLOW_TYPE_DEPRECATED", - "OPEN_CHILDREN_LIMIT_EXCEEDED", - "OPEN_WORKFLOWS_LIMIT_EXCEEDED", - "CHILD_CREATION_RATE_EXCEEDED", - "WORKFLOW_ALREADY_RUNNING", - "DEFAULT_EXECUTION_START_TO_CLOSE_TIMEOUT_UNDEFINED", - "DEFAULT_TASK_LIST_UNDEFINED", - "DEFAULT_TASK_START_TO_CLOSE_TIMEOUT_UNDEFINED", - "DEFAULT_CHILD_POLICY_UNDEFINED", - "OPERATION_NOT_PERMITTED" - ] - }, - "StartChildWorkflowExecutionFailedEventAttributes":{ - "type":"structure", - "required":[ - "workflowType", - "cause", - "workflowId", - "initiatedEventId", - "decisionTaskCompletedEventId" - ], - "members":{ - "workflowType":{ - "shape":"WorkflowType", - "documentation":"

The workflow type provided in the StartChildWorkflowExecution Decision that failed.

" - }, - "cause":{ - "shape":"StartChildWorkflowExecutionFailedCause", - "documentation":"

The cause of the failure. This information is generated by the system and can be useful for diagnostic purposes.

If cause is set to OPERATION_NOT_PERMITTED, the decision failed because it lacked sufficient permissions. For details and example IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows." - }, - "workflowId":{ - "shape":"WorkflowId", - "documentation":"

The workflowId of the child workflow execution.

" - }, - "initiatedEventId":{ - "shape":"EventId", - "documentation":"

The id of the StartChildWorkflowExecutionInitiated event corresponding to the StartChildWorkflowExecution Decision to start this child workflow execution. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event.

" - }, - "decisionTaskCompletedEventId":{ - "shape":"EventId", - "documentation":"

The id of the DecisionTaskCompleted event corresponding to the decision task that resulted in the StartChildWorkflowExecution Decision to request this child workflow execution. This information can be useful for diagnosing problems by tracing back the cause of events.

" - }, - "control":{"shape":"Data"} - }, - "documentation":"

Provides details of the StartChildWorkflowExecutionFailed event.

" - }, - "StartChildWorkflowExecutionInitiatedEventAttributes":{ - "type":"structure", - "required":[ - "workflowId", - "workflowType", - "taskList", - "decisionTaskCompletedEventId", - "childPolicy" - ], - "members":{ - "workflowId":{ - "shape":"WorkflowId", - "documentation":"

The workflowId of the child workflow execution.

" - }, - "workflowType":{ - "shape":"WorkflowType", - "documentation":"

The type of the child workflow execution.

" - }, - "control":{ - "shape":"Data", - "documentation":"

Optional. Data attached to the event that can be used by the decider in subsequent decision tasks. This data is not sent to the activity.

" - }, - "input":{ - "shape":"Data", - "documentation":"

The inputs provided to the child workflow execution (if any).

" - }, - "executionStartToCloseTimeout":{ - "shape":"DurationInSecondsOptional", - "documentation":"

The maximum duration for the child workflow execution. If the workflow execution is not closed within this duration, it will be timed out and force terminated.

The duration is specified in seconds; an integer greater than or equal to 0. The value \"NONE\" can be used to specify unlimited duration.

" - }, - "taskList":{ - "shape":"TaskList", - "documentation":"

The name of the task list used for the decision tasks of the child workflow execution.

" - }, - "taskPriority":{ - "shape":"TaskPriority", - "documentation":"

Optional. The priority assigned for the decision tasks for this workflow execution. Valid values are integers that range from Java's Integer.MIN_VALUE (-2147483648) to Integer.MAX_VALUE (2147483647). Higher numbers indicate higher priority.

For more information about setting task priority, see Setting Task Priority in the Amazon Simple Workflow Developer Guide.

" - }, - "decisionTaskCompletedEventId":{ - "shape":"EventId", - "documentation":"

The id of the DecisionTaskCompleted event corresponding to the decision task that resulted in the StartChildWorkflowExecution Decision to request this child workflow execution. This information can be useful for diagnosing problems by tracing back the cause of events.

" - }, - "childPolicy":{ - "shape":"ChildPolicy", - "documentation":"

The policy to use for the child workflow executions if this execution gets terminated by explicitly calling the TerminateWorkflowExecution action or due to an expired timeout.

The supported child policies are:

" - }, - "taskStartToCloseTimeout":{ - "shape":"DurationInSecondsOptional", - "documentation":"

The maximum duration allowed for the decision tasks for this workflow execution.

The duration is specified in seconds; an integer greater than or equal to 0. The value \"NONE\" can be used to specify unlimited duration.

" - }, - "tagList":{ - "shape":"TagList", - "documentation":"

The list of tags to associated with the child workflow execution.

" - } - }, - "documentation":"

Provides details of the StartChildWorkflowExecutionInitiated event.

" - }, - "StartTimerDecisionAttributes":{ - "type":"structure", - "required":[ - "timerId", - "startToFireTimeout" - ], - "members":{ - "timerId":{ - "shape":"TimerId", - "documentation":"

Required. The unique Id of the timer.

The specified string must not start or end with whitespace. It must not contain a : (colon), / (slash), | (vertical bar), or any control characters (\\u0000-\\u001f | \\u007f - \\u009f). Also, it must not contain the literal string quotarnquot.

" - }, - "control":{ - "shape":"Data", - "documentation":"

Optional. Data attached to the event that can be used by the decider in subsequent workflow tasks.

" - }, - "startToFireTimeout":{ - "shape":"DurationInSeconds", - "documentation":"

Required. The duration to wait before firing the timer.

The duration is specified in seconds; an integer greater than or equal to 0.

" - } - }, - "documentation":"

Provides details of the StartTimer decision.

Access Control

You can use IAM policies to control this decision's access to Amazon SWF resources as follows:

If the caller does not have sufficient permissions to invoke the action, or the parameter values fall outside the specified constraints, the action fails. The associated event attribute's cause parameter will be set to OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows.

" - }, - "StartTimerFailedCause":{ - "type":"string", - "enum":[ - "TIMER_ID_ALREADY_IN_USE", - "OPEN_TIMERS_LIMIT_EXCEEDED", - "TIMER_CREATION_RATE_EXCEEDED", - "OPERATION_NOT_PERMITTED" - ] - }, - "StartTimerFailedEventAttributes":{ - "type":"structure", - "required":[ - "timerId", - "cause", - "decisionTaskCompletedEventId" - ], - "members":{ - "timerId":{ - "shape":"TimerId", - "documentation":"

The timerId provided in the StartTimer decision that failed.

" - }, - "cause":{ - "shape":"StartTimerFailedCause", - "documentation":"

The cause of the failure. This information is generated by the system and can be useful for diagnostic purposes.

If cause is set to OPERATION_NOT_PERMITTED, the decision failed because it lacked sufficient permissions. For details and example IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows." - }, - "decisionTaskCompletedEventId":{ - "shape":"EventId", - "documentation":"

The id of the DecisionTaskCompleted event corresponding to the decision task that resulted in the StartTimer decision for this activity task. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event.

" - } - }, - "documentation":"

Provides details of the StartTimerFailed event.

" - }, - "StartWorkflowExecutionInput":{ - "type":"structure", - "required":[ - "domain", - "workflowId", - "workflowType" - ], - "members":{ - "domain":{ - "shape":"DomainName", - "documentation":"

The name of the domain in which the workflow execution is created.

" - }, - "workflowId":{ - "shape":"WorkflowId", - "documentation":"

The user defined identifier associated with the workflow execution. You can use this to associate a custom identifier with the workflow execution. You may specify the same identifier if a workflow execution is logically a restart of a previous execution. You cannot have two open workflow executions with the same workflowId at the same time.

The specified string must not start or end with whitespace. It must not contain a : (colon), / (slash), | (vertical bar), or any control characters (\\u0000-\\u001f | \\u007f - \\u009f). Also, it must not contain the literal string quotarnquot.

" - }, - "workflowType":{ - "shape":"WorkflowType", - "documentation":"

The type of the workflow to start.

" - }, - "taskList":{ - "shape":"TaskList", - "documentation":"

The task list to use for the decision tasks generated for this workflow execution. This overrides the defaultTaskList specified when registering the workflow type.

A task list for this workflow execution must be specified either as a default for the workflow type or through this parameter. If neither this parameter is set nor a default task list was specified at registration time then a fault will be returned.

The specified string must not start or end with whitespace. It must not contain a : (colon), / (slash), | (vertical bar), or any control characters (\\u0000-\\u001f | \\u007f - \\u009f). Also, it must not contain the literal string quotarnquot.

" - }, - "taskPriority":{ - "shape":"TaskPriority", - "documentation":"

The task priority to use for this workflow execution. This will override any default priority that was assigned when the workflow type was registered. If not set, then the default task priority for the workflow type will be used. Valid values are integers that range from Java's Integer.MIN_VALUE (-2147483648) to Integer.MAX_VALUE (2147483647). Higher numbers indicate higher priority.

For more information about setting task priority, see Setting Task Priority in the Amazon Simple Workflow Developer Guide.

" - }, - "input":{ - "shape":"Data", - "documentation":"

The input for the workflow execution. This is a free form string which should be meaningful to the workflow you are starting. This input is made available to the new workflow execution in the WorkflowExecutionStarted history event.

" - }, - "executionStartToCloseTimeout":{ - "shape":"DurationInSecondsOptional", - "documentation":"

The total duration for this workflow execution. This overrides the defaultExecutionStartToCloseTimeout specified when registering the workflow type.

The duration is specified in seconds; an integer greater than or equal to 0. Exceeding this limit will cause the workflow execution to time out. Unlike some of the other timeout parameters in Amazon SWF, you cannot specify a value of \"NONE\" for this timeout; there is a one-year max limit on the time that a workflow execution can run.

An execution start-to-close timeout must be specified either through this parameter or as a default when the workflow type is registered. If neither this parameter nor a default execution start-to-close timeout is specified, a fault is returned." - }, - "tagList":{ - "shape":"TagList", - "documentation":"

The list of tags to associate with the workflow execution. You can specify a maximum of 5 tags. You can list workflow executions with a specific tag by calling ListOpenWorkflowExecutions or ListClosedWorkflowExecutions and specifying a TagFilter.

" - }, - "taskStartToCloseTimeout":{ - "shape":"DurationInSecondsOptional", - "documentation":"

Specifies the maximum duration of decision tasks for this workflow execution. This parameter overrides the defaultTaskStartToCloseTimout specified when registering the workflow type using RegisterWorkflowType.

The duration is specified in seconds; an integer greater than or equal to 0. The value \"NONE\" can be used to specify unlimited duration.

A task start-to-close timeout for this workflow execution must be specified either as a default for the workflow type or through this parameter. If neither this parameter is set nor a default task start-to-close timeout was specified at registration time then a fault will be returned." - }, - "childPolicy":{ - "shape":"ChildPolicy", - "documentation":"

If set, specifies the policy to use for the child workflow executions of this workflow execution if it is terminated, by calling the TerminateWorkflowExecution action explicitly or due to an expired timeout. This policy overrides the default child policy specified when registering the workflow type using RegisterWorkflowType.

The supported child policies are:

A child policy for this workflow execution must be specified either as a default for the workflow type or through this parameter. If neither this parameter is set nor a default child policy was specified at registration time then a fault will be returned." - } - } - }, - "Tag":{ - "type":"string", - "min":1, - "max":256 - }, - "TagFilter":{ - "type":"structure", - "required":["tag"], - "members":{ - "tag":{ - "shape":"Tag", - "documentation":"

Required. Specifies the tag that must be associated with the execution for it to meet the filter criteria.

" - } - }, - "documentation":"

Used to filter the workflow executions in visibility APIs based on a tag.

" - }, - "TagList":{ - "type":"list", - "member":{"shape":"Tag"}, - "max":5 - }, - "TaskList":{ - "type":"structure", - "required":["name"], - "members":{ - "name":{ - "shape":"Name", - "documentation":"

The name of the task list.

" - } - }, - "documentation":"

Represents a task list.

" - }, - "TaskPriority":{ - "type":"string", - "max":11 - }, - "TaskToken":{ - "type":"string", - "min":1, - "max":1024 - }, - "TerminateReason":{ - "type":"string", - "max":256 - }, - "TerminateWorkflowExecutionInput":{ - "type":"structure", - "required":[ - "domain", - "workflowId" - ], - "members":{ - "domain":{ - "shape":"DomainName", - "documentation":"

The domain of the workflow execution to terminate.

" - }, - "workflowId":{ - "shape":"WorkflowId", - "documentation":"

The workflowId of the workflow execution to terminate.

" - }, - "runId":{ - "shape":"RunIdOptional", - "documentation":"

The runId of the workflow execution to terminate.

" - }, - "reason":{ - "shape":"TerminateReason", - "documentation":"

Optional. A descriptive reason for terminating the workflow execution.

" - }, - "details":{ - "shape":"Data", - "documentation":"

Optional. Details for terminating the workflow execution.

" - }, - "childPolicy":{ - "shape":"ChildPolicy", - "documentation":"

If set, specifies the policy to use for the child workflow executions of the workflow execution being terminated. This policy overrides the child policy specified for the workflow execution at registration time or when starting the execution.

The supported child policies are:

A child policy for this workflow execution must be specified either as a default for the workflow type or through this parameter. If neither this parameter is set nor a default child policy was specified at registration time then a fault will be returned." - } - } - }, - "TimerCanceledEventAttributes":{ - "type":"structure", - "required":[ - "timerId", - "startedEventId", - "decisionTaskCompletedEventId" - ], - "members":{ - "timerId":{ - "shape":"TimerId", - "documentation":"

The unique Id of the timer that was canceled.

" - }, - "startedEventId":{ - "shape":"EventId", - "documentation":"

The id of the TimerStarted event that was recorded when this timer was started. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event.

" - }, - "decisionTaskCompletedEventId":{ - "shape":"EventId", - "documentation":"

The id of the DecisionTaskCompleted event corresponding to the decision task that resulted in the CancelTimer decision to cancel this timer. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event.

" - } - }, - "documentation":"

Provides details of the TimerCanceled event.

" - }, - "TimerFiredEventAttributes":{ - "type":"structure", - "required":[ - "timerId", - "startedEventId" - ], - "members":{ - "timerId":{ - "shape":"TimerId", - "documentation":"

The unique Id of the timer that fired.

" - }, - "startedEventId":{ - "shape":"EventId", - "documentation":"

The id of the TimerStarted event that was recorded when this timer was started. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event.

" - } - }, - "documentation":"

Provides details of the TimerFired event.

" - }, - "TimerId":{ - "type":"string", - "min":1, - "max":256 - }, - "TimerStartedEventAttributes":{ - "type":"structure", - "required":[ - "timerId", - "startToFireTimeout", - "decisionTaskCompletedEventId" - ], - "members":{ - "timerId":{ - "shape":"TimerId", - "documentation":"

The unique Id of the timer that was started.

" - }, - "control":{ - "shape":"Data", - "documentation":"

Optional. Data attached to the event that can be used by the decider in subsequent workflow tasks.

" - }, - "startToFireTimeout":{ - "shape":"DurationInSeconds", - "documentation":"

The duration of time after which the timer will fire.

The duration is specified in seconds; an integer greater than or equal to 0.

" - }, - "decisionTaskCompletedEventId":{ - "shape":"EventId", - "documentation":"

The id of the DecisionTaskCompleted event corresponding to the decision task that resulted in the StartTimer decision for this activity task. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event.

" - } - }, - "documentation":"

Provides details of the TimerStarted event.

" - }, - "Timestamp":{"type":"timestamp"}, - "Truncated":{"type":"boolean"}, - "TypeAlreadyExistsFault":{ - "type":"structure", - "members":{ - "message":{ - "shape":"ErrorMessage", - "documentation":"

A description that may help with diagnosing the cause of the fault.

" - } - }, - "exception":true, - "documentation":"

Returned if the type already exists in the specified domain. You will get this fault even if the existing type is in deprecated status. You can specify another version if the intent is to create a new distinct version of the type.

" - }, - "TypeDeprecatedFault":{ - "type":"structure", - "members":{ - "message":{ - "shape":"ErrorMessage", - "documentation":"

A description that may help with diagnosing the cause of the fault.

" - } - }, - "exception":true, - "documentation":"

Returned when the specified activity or workflow type was already deprecated.

" - }, - "UnknownResourceFault":{ - "type":"structure", - "members":{ - "message":{ - "shape":"ErrorMessage", - "documentation":"

A description that may help with diagnosing the cause of the fault.

" - } - }, - "exception":true, - "documentation":"

Returned when the named resource cannot be found with in the scope of this operation (region or domain). This could happen if the named resource was never created or is no longer available for this operation.

" - }, - "Version":{ - "type":"string", - "min":1, - "max":64 - }, - "VersionOptional":{ - "type":"string", - "max":64 - }, - "WorkflowExecution":{ - "type":"structure", - "required":[ - "workflowId", - "runId" - ], - "members":{ - "workflowId":{ - "shape":"WorkflowId", - "documentation":"

The user defined identifier associated with the workflow execution.

" - }, - "runId":{ - "shape":"RunId", - "documentation":"

A system-generated unique identifier for the workflow execution.

" - } - }, - "documentation":"

Represents a workflow execution.

" - }, - "WorkflowExecutionAlreadyStartedFault":{ - "type":"structure", - "members":{ - "message":{ - "shape":"ErrorMessage", - "documentation":"

A description that may help with diagnosing the cause of the fault.

" - } - }, - "exception":true, - "documentation":"

Returned by StartWorkflowExecution when an open execution with the same workflowId is already running in the specified domain.

" - }, - "WorkflowExecutionCancelRequestedCause":{ - "type":"string", - "enum":["CHILD_POLICY_APPLIED"] - }, - "WorkflowExecutionCancelRequestedEventAttributes":{ - "type":"structure", - "members":{ - "externalWorkflowExecution":{ - "shape":"WorkflowExecution", - "documentation":"

The external workflow execution for which the cancellation was requested.

" - }, - "externalInitiatedEventId":{ - "shape":"EventId", - "documentation":"

The id of the RequestCancelExternalWorkflowExecutionInitiated event corresponding to the RequestCancelExternalWorkflowExecution decision to cancel this workflow execution.The source event with this Id can be found in the history of the source workflow execution. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event.

" - }, - "cause":{ - "shape":"WorkflowExecutionCancelRequestedCause", - "documentation":"

If set, indicates that the request to cancel the workflow execution was automatically generated, and specifies the cause. This happens if the parent workflow execution times out or is terminated, and the child policy is set to cancel child executions.

" - } - }, - "documentation":"

Provides details of the WorkflowExecutionCancelRequested event.

" - }, - "WorkflowExecutionCanceledEventAttributes":{ - "type":"structure", - "required":["decisionTaskCompletedEventId"], - "members":{ - "details":{ - "shape":"Data", - "documentation":"

Details for the cancellation (if any).

" - }, - "decisionTaskCompletedEventId":{ - "shape":"EventId", - "documentation":"

The id of the DecisionTaskCompleted event corresponding to the decision task that resulted in the CancelWorkflowExecution decision for this cancellation request. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event.

" - } - }, - "documentation":"

Provides details of the WorkflowExecutionCanceled event.

" - }, - "WorkflowExecutionCompletedEventAttributes":{ - "type":"structure", - "required":["decisionTaskCompletedEventId"], - "members":{ - "result":{ - "shape":"Data", - "documentation":"

The result produced by the workflow execution upon successful completion.

" - }, - "decisionTaskCompletedEventId":{ - "shape":"EventId", - "documentation":"

The id of the DecisionTaskCompleted event corresponding to the decision task that resulted in the CompleteWorkflowExecution decision to complete this execution. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event.

" - } - }, - "documentation":"

Provides details of the WorkflowExecutionCompleted event.

" - }, - "WorkflowExecutionConfiguration":{ - "type":"structure", - "required":[ - "taskStartToCloseTimeout", - "executionStartToCloseTimeout", - "taskList", - "childPolicy" - ], - "members":{ - "taskStartToCloseTimeout":{ - "shape":"DurationInSeconds", - "documentation":"

The maximum duration allowed for decision tasks for this workflow execution.

The duration is specified in seconds; an integer greater than or equal to 0. The value \"NONE\" can be used to specify unlimited duration.

" - }, - "executionStartToCloseTimeout":{ - "shape":"DurationInSeconds", - "documentation":"

The total duration for this workflow execution.

The duration is specified in seconds; an integer greater than or equal to 0. The value \"NONE\" can be used to specify unlimited duration.

" - }, - "taskList":{ - "shape":"TaskList", - "documentation":"

The task list used for the decision tasks generated for this workflow execution.

" - }, - "taskPriority":{ - "shape":"TaskPriority", - "documentation":"

The priority assigned to decision tasks for this workflow execution. Valid values are integers that range from Java's Integer.MIN_VALUE (-2147483648) to Integer.MAX_VALUE (2147483647). Higher numbers indicate higher priority.

For more information about setting task priority, see Setting Task Priority in the Amazon Simple Workflow Developer Guide.

" - }, - "childPolicy":{ - "shape":"ChildPolicy", - "documentation":"

The policy to use for the child workflow executions if this workflow execution is terminated, by calling the TerminateWorkflowExecution action explicitly or due to an expired timeout.

The supported child policies are:

" - } - }, - "documentation":"

The configuration settings for a workflow execution including timeout values, tasklist etc. These configuration settings are determined from the defaults specified when registering the workflow type and those specified when starting the workflow execution.

" - }, - "WorkflowExecutionContinuedAsNewEventAttributes":{ - "type":"structure", - "required":[ - "decisionTaskCompletedEventId", - "newExecutionRunId", - "taskList", - "childPolicy", - "workflowType" - ], - "members":{ - "input":{ - "shape":"Data", - "documentation":"

The input provided to the new workflow execution.

" - }, - "decisionTaskCompletedEventId":{ - "shape":"EventId", - "documentation":"

The id of the DecisionTaskCompleted event corresponding to the decision task that resulted in the ContinueAsNewWorkflowExecution decision that started this execution. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event.

" - }, - "newExecutionRunId":{ - "shape":"RunId", - "documentation":"

The runId of the new workflow execution.

" - }, - "executionStartToCloseTimeout":{ - "shape":"DurationInSecondsOptional", - "documentation":"

The total duration allowed for the new workflow execution.

The duration is specified in seconds; an integer greater than or equal to 0. The value \"NONE\" can be used to specify unlimited duration.

" - }, - "taskList":{"shape":"TaskList"}, - "taskPriority":{"shape":"TaskPriority"}, - "taskStartToCloseTimeout":{ - "shape":"DurationInSecondsOptional", - "documentation":"

The maximum duration of decision tasks for the new workflow execution.

The duration is specified in seconds; an integer greater than or equal to 0. The value \"NONE\" can be used to specify unlimited duration.

" - }, - "childPolicy":{ - "shape":"ChildPolicy", - "documentation":"

The policy to use for the child workflow executions of the new execution if it is terminated by calling the TerminateWorkflowExecution action explicitly or due to an expired timeout.

The supported child policies are:

" - }, - "tagList":{ - "shape":"TagList", - "documentation":"

The list of tags associated with the new workflow execution.

" - }, - "workflowType":{"shape":"WorkflowType"} - }, - "documentation":"

Provides details of the WorkflowExecutionContinuedAsNew event.

" - }, - "WorkflowExecutionCount":{ - "type":"structure", - "required":["count"], - "members":{ - "count":{ - "shape":"Count", - "documentation":"

The number of workflow executions.

" - }, - "truncated":{ - "shape":"Truncated", - "documentation":"

If set to true, indicates that the actual count was more than the maximum supported by this API and the count returned is the truncated value.

" - } - }, - "documentation":"

Contains the count of workflow executions returned from CountOpenWorkflowExecutions or CountClosedWorkflowExecutions

" - }, - "WorkflowExecutionDetail":{ - "type":"structure", - "required":[ - "executionInfo", - "executionConfiguration", - "openCounts" - ], - "members":{ - "executionInfo":{ - "shape":"WorkflowExecutionInfo", - "documentation":"

Information about the workflow execution.

" - }, - "executionConfiguration":{ - "shape":"WorkflowExecutionConfiguration", - "documentation":"

The configuration settings for this workflow execution including timeout values, tasklist etc.

" - }, - "openCounts":{ - "shape":"WorkflowExecutionOpenCounts", - "documentation":"

The number of tasks for this workflow execution. This includes open and closed tasks of all types.

" - }, - "latestActivityTaskTimestamp":{ - "shape":"Timestamp", - "documentation":"

The time when the last activity task was scheduled for this workflow execution. You can use this information to determine if the workflow has not made progress for an unusually long period of time and might require a corrective action.

" - }, - "latestExecutionContext":{ - "shape":"Data", - "documentation":"

The latest executionContext provided by the decider for this workflow execution. A decider can provide an executionContext (a free-form string) when closing a decision task using RespondDecisionTaskCompleted.

" - } - }, - "documentation":"

Contains details about a workflow execution.

" - }, - "WorkflowExecutionFailedEventAttributes":{ - "type":"structure", - "required":["decisionTaskCompletedEventId"], - "members":{ - "reason":{ - "shape":"FailureReason", - "documentation":"

The descriptive reason provided for the failure (if any).

" - }, - "details":{ - "shape":"Data", - "documentation":"

The details of the failure (if any).

" - }, - "decisionTaskCompletedEventId":{ - "shape":"EventId", - "documentation":"

The id of the DecisionTaskCompleted event corresponding to the decision task that resulted in the FailWorkflowExecution decision to fail this execution. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event.

" - } - }, - "documentation":"

Provides details of the WorkflowExecutionFailed event.

" - }, - "WorkflowExecutionFilter":{ - "type":"structure", - "required":["workflowId"], - "members":{ - "workflowId":{ - "shape":"WorkflowId", - "documentation":"

The workflowId to pass of match the criteria of this filter.

" - } - }, - "documentation":"

Used to filter the workflow executions in visibility APIs by their workflowId.

" - }, - "WorkflowExecutionInfo":{ - "type":"structure", - "required":[ - "execution", - "workflowType", - "startTimestamp", - "executionStatus" - ], - "members":{ - "execution":{ - "shape":"WorkflowExecution", - "documentation":"

The workflow execution this information is about.

" - }, - "workflowType":{ - "shape":"WorkflowType", - "documentation":"

The type of the workflow execution.

" - }, - "startTimestamp":{ - "shape":"Timestamp", - "documentation":"

The time when the execution was started.

" - }, - "closeTimestamp":{ - "shape":"Timestamp", - "documentation":"

The time when the workflow execution was closed. Set only if the execution status is CLOSED.

" - }, - "executionStatus":{ - "shape":"ExecutionStatus", - "documentation":"

The current status of the execution.

" - }, - "closeStatus":{ - "shape":"CloseStatus", - "documentation":"

If the execution status is closed then this specifies how the execution was closed:

" - }, - "parent":{ - "shape":"WorkflowExecution", - "documentation":"

If this workflow execution is a child of another execution then contains the workflow execution that started this execution.

" - }, - "tagList":{ - "shape":"TagList", - "documentation":"

The list of tags associated with the workflow execution. Tags can be used to identify and list workflow executions of interest through the visibility APIs. A workflow execution can have a maximum of 5 tags.

" - }, - "cancelRequested":{ - "shape":"Canceled", - "documentation":"

Set to true if a cancellation is requested for this workflow execution.

" - } - }, - "documentation":"

Contains information about a workflow execution.

" - }, - "WorkflowExecutionInfoList":{ - "type":"list", - "member":{"shape":"WorkflowExecutionInfo"} - }, - "WorkflowExecutionInfos":{ - "type":"structure", - "required":["executionInfos"], - "members":{ - "executionInfos":{ - "shape":"WorkflowExecutionInfoList", - "documentation":"

The list of workflow information structures.

" - }, - "nextPageToken":{ - "shape":"PageToken", - "documentation":"

If a NextPageToken was returned by a previous call, there are more results available. To retrieve the next page of results, make the call again using the returned token in nextPageToken. Keep all other arguments unchanged.

The configured maximumPageSize determines how many results can be returned in a single call.

" - } - }, - "documentation":"

Contains a paginated list of information about workflow executions.

" - }, - "WorkflowExecutionOpenCounts":{ - "type":"structure", - "required":[ - "openActivityTasks", - "openDecisionTasks", - "openTimers", - "openChildWorkflowExecutions" - ], - "members":{ - "openActivityTasks":{ - "shape":"Count", - "documentation":"

The count of activity tasks whose status is OPEN.

" - }, - "openDecisionTasks":{ - "shape":"OpenDecisionTasksCount", - "documentation":"

The count of decision tasks whose status is OPEN. A workflow execution can have at most one open decision task.

" - }, - "openTimers":{ - "shape":"Count", - "documentation":"

The count of timers started by this workflow execution that have not fired yet.

" - }, - "openChildWorkflowExecutions":{ - "shape":"Count", - "documentation":"

The count of child workflow executions whose status is OPEN.

" - } - }, - "documentation":"

Contains the counts of open tasks, child workflow executions and timers for a workflow execution.

" - }, - "WorkflowExecutionSignaledEventAttributes":{ - "type":"structure", - "required":["signalName"], - "members":{ - "signalName":{ - "shape":"SignalName", - "documentation":"

The name of the signal received. The decider can use the signal name and inputs to determine how to the process the signal.

" - }, - "input":{ - "shape":"Data", - "documentation":"

Inputs provided with the signal (if any). The decider can use the signal name and inputs to determine how to process the signal.

" - }, - "externalWorkflowExecution":{ - "shape":"WorkflowExecution", - "documentation":"

The workflow execution that sent the signal. This is set only of the signal was sent by another workflow execution.

" - }, - "externalInitiatedEventId":{ - "shape":"EventId", - "documentation":"

The id of the SignalExternalWorkflowExecutionInitiated event corresponding to the SignalExternalWorkflow decision to signal this workflow execution.The source event with this Id can be found in the history of the source workflow execution. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event. This field is set only if the signal was initiated by another workflow execution.

" - } - }, - "documentation":"

Provides details of the WorkflowExecutionSignaled event.

" - }, - "WorkflowExecutionStartedEventAttributes":{ - "type":"structure", - "required":[ - "childPolicy", - "taskList", - "workflowType" - ], - "members":{ - "input":{ - "shape":"Data", - "documentation":"

The input provided to the workflow execution (if any).

" - }, - "executionStartToCloseTimeout":{ - "shape":"DurationInSecondsOptional", - "documentation":"

The maximum duration for this workflow execution.

The duration is specified in seconds; an integer greater than or equal to 0. The value \"NONE\" can be used to specify unlimited duration.

" - }, - "taskStartToCloseTimeout":{ - "shape":"DurationInSecondsOptional", - "documentation":"

The maximum duration of decision tasks for this workflow type.

The duration is specified in seconds; an integer greater than or equal to 0. The value \"NONE\" can be used to specify unlimited duration.

" - }, - "childPolicy":{ - "shape":"ChildPolicy", - "documentation":"

The policy to use for the child workflow executions if this workflow execution is terminated, by calling the TerminateWorkflowExecution action explicitly or due to an expired timeout.

The supported child policies are:

" - }, - "taskList":{ - "shape":"TaskList", - "documentation":"

The name of the task list for scheduling the decision tasks for this workflow execution.

" - }, - "workflowType":{ - "shape":"WorkflowType", - "documentation":"

The workflow type of this execution.

" - }, - "tagList":{ - "shape":"TagList", - "documentation":"

The list of tags associated with this workflow execution. An execution can have up to 5 tags.

" - }, - "taskPriority":{"shape":"TaskPriority"}, - "continuedExecutionRunId":{ - "shape":"RunIdOptional", - "documentation":"

If this workflow execution was started due to a ContinueAsNewWorkflowExecution decision, then it contains the runId of the previous workflow execution that was closed and continued as this execution.

" - }, - "parentWorkflowExecution":{ - "shape":"WorkflowExecution", - "documentation":"

The source workflow execution that started this workflow execution. The member is not set if the workflow execution was not started by a workflow.

" - }, - "parentInitiatedEventId":{ - "shape":"EventId", - "documentation":"

The id of the StartChildWorkflowExecutionInitiated event corresponding to the StartChildWorkflowExecution Decision to start this workflow execution. The source event with this Id can be found in the history of the source workflow execution. This information can be useful for diagnosing problems by tracing back the chain of events leading up to this event.

" - } - }, - "documentation":"

Provides details of WorkflowExecutionStarted event.

" - }, - "WorkflowExecutionTerminatedCause":{ - "type":"string", - "enum":[ - "CHILD_POLICY_APPLIED", - "EVENT_LIMIT_EXCEEDED", - "OPERATOR_INITIATED" - ] - }, - "WorkflowExecutionTerminatedEventAttributes":{ - "type":"structure", - "required":["childPolicy"], - "members":{ - "reason":{ - "shape":"TerminateReason", - "documentation":"

The reason provided for the termination (if any).

" - }, - "details":{ - "shape":"Data", - "documentation":"

The details provided for the termination (if any).

" - }, - "childPolicy":{ - "shape":"ChildPolicy", - "documentation":"

The policy used for the child workflow executions of this workflow execution.

The supported child policies are:

" - }, - "cause":{ - "shape":"WorkflowExecutionTerminatedCause", - "documentation":"

If set, indicates that the workflow execution was automatically terminated, and specifies the cause. This happens if the parent workflow execution times out or is terminated and the child policy is set to terminate child executions.

" - } - }, - "documentation":"

Provides details of the WorkflowExecutionTerminated event.

" - }, - "WorkflowExecutionTimedOutEventAttributes":{ - "type":"structure", - "required":[ - "timeoutType", - "childPolicy" - ], - "members":{ - "timeoutType":{ - "shape":"WorkflowExecutionTimeoutType", - "documentation":"

The type of timeout that caused this event.

" - }, - "childPolicy":{ - "shape":"ChildPolicy", - "documentation":"

The policy used for the child workflow executions of this workflow execution.

The supported child policies are:

" - } - }, - "documentation":"

Provides details of the WorkflowExecutionTimedOut event.

" - }, - "WorkflowExecutionTimeoutType":{ - "type":"string", - "enum":["START_TO_CLOSE"] - }, - "WorkflowId":{ - "type":"string", - "min":1, - "max":256 - }, - "WorkflowType":{ - "type":"structure", - "required":[ - "name", - "version" - ], - "members":{ - "name":{ - "shape":"Name", - "documentation":"

Required. The name of the workflow type.

The combination of workflow type name and version must be unique with in a domain." - }, - "version":{ - "shape":"Version", - "documentation":"

Required. The version of the workflow type.

The combination of workflow type name and version must be unique with in a domain." - } - }, - "documentation":"

Represents a workflow type.

" - }, - "WorkflowTypeConfiguration":{ - "type":"structure", - "members":{ - "defaultTaskStartToCloseTimeout":{ - "shape":"DurationInSecondsOptional", - "documentation":"

Optional. The default maximum duration, specified when registering the workflow type, that a decision task for executions of this workflow type might take before returning completion or failure. If the task does not close in the specified time then the task is automatically timed out and rescheduled. If the decider eventually reports a completion or failure, it is ignored. This default can be overridden when starting a workflow execution using the StartWorkflowExecution action or the StartChildWorkflowExecution Decision.

The duration is specified in seconds; an integer greater than or equal to 0. The value \"NONE\" can be used to specify unlimited duration.

" - }, - "defaultExecutionStartToCloseTimeout":{ - "shape":"DurationInSecondsOptional", - "documentation":"

Optional. The default maximum duration, specified when registering the workflow type, for executions of this workflow type. This default can be overridden when starting a workflow execution using the StartWorkflowExecution action or the StartChildWorkflowExecution Decision.

The duration is specified in seconds; an integer greater than or equal to 0. The value \"NONE\" can be used to specify unlimited duration.

" - }, - "defaultTaskList":{ - "shape":"TaskList", - "documentation":"

Optional. The default task list, specified when registering the workflow type, for decisions tasks scheduled for workflow executions of this type. This default can be overridden when starting a workflow execution using the StartWorkflowExecution action or the StartChildWorkflowExecution Decision.

" - }, - "defaultTaskPriority":{ - "shape":"TaskPriority", - "documentation":"

Optional. The default task priority, specified when registering the workflow type, for all decision tasks of this workflow type. This default can be overridden when starting a workflow execution using the StartWorkflowExecution action or the StartChildWorkflowExecution decision.

Valid values are integers that range from Java's Integer.MIN_VALUE (-2147483648) to Integer.MAX_VALUE (2147483647). Higher numbers indicate higher priority.

For more information about setting task priority, see Setting Task Priority in the Amazon Simple Workflow Developer Guide.

" - }, - "defaultChildPolicy":{ - "shape":"ChildPolicy", - "documentation":"

Optional. The default policy to use for the child workflow executions when a workflow execution of this type is terminated, by calling the TerminateWorkflowExecution action explicitly or due to an expired timeout. This default can be overridden when starting a workflow execution using the StartWorkflowExecution action or the StartChildWorkflowExecution Decision.

The supported child policies are:

" - } - }, - "documentation":"

The configuration settings of a workflow type.

" - }, - "WorkflowTypeDetail":{ - "type":"structure", - "required":[ - "typeInfo", - "configuration" - ], - "members":{ - "typeInfo":{ - "shape":"WorkflowTypeInfo", - "documentation":"

General information about the workflow type.

The status of the workflow type (returned in the WorkflowTypeInfo structure) can be one of the following.

" - }, - "configuration":{ - "shape":"WorkflowTypeConfiguration", - "documentation":"

Configuration settings of the workflow type registered through RegisterWorkflowType

" - } - }, - "documentation":"

Contains details about a workflow type.

" - }, - "WorkflowTypeFilter":{ - "type":"structure", - "required":["name"], - "members":{ - "name":{ - "shape":"Name", - "documentation":"

Required. Name of the workflow type.

" - }, - "version":{ - "shape":"VersionOptional", - "documentation":"

Version of the workflow type.

" - } - }, - "documentation":"

Used to filter workflow execution query results by type. Each parameter, if specified, defines a rule that must be satisfied by each returned result.

" - }, - "WorkflowTypeInfo":{ - "type":"structure", - "required":[ - "workflowType", - "status", - "creationDate" - ], - "members":{ - "workflowType":{ - "shape":"WorkflowType", - "documentation":"

The workflow type this information is about.

" - }, - "status":{ - "shape":"RegistrationStatus", - "documentation":"

The current status of the workflow type.

" - }, - "description":{ - "shape":"Description", - "documentation":"

The description of the type registered through RegisterWorkflowType.

" - }, - "creationDate":{ - "shape":"Timestamp", - "documentation":"

The date when this type was registered.

" - }, - "deprecationDate":{ - "shape":"Timestamp", - "documentation":"

If the type is in deprecated state, then it is set to the date when the type was deprecated.

" - } - }, - "documentation":"

Contains information about a workflow type.

" - }, - "WorkflowTypeInfoList":{ - "type":"list", - "member":{"shape":"WorkflowTypeInfo"} - }, - "WorkflowTypeInfos":{ - "type":"structure", - "required":["typeInfos"], - "members":{ - "typeInfos":{ - "shape":"WorkflowTypeInfoList", - "documentation":"

The list of workflow type information.

" - }, - "nextPageToken":{ - "shape":"PageToken", - "documentation":"

If a NextPageToken was returned by a previous call, there are more results available. To retrieve the next page of results, make the call again using the returned token in nextPageToken. Keep all other arguments unchanged.

The configured maximumPageSize determines how many results can be returned in a single call.

" - } - }, - "documentation":"

Contains a paginated list of information structures about workflow types.

" - } - } -} diff --git a/src/github.com/getlantern/aws-sdk-go/apis/swf/2012-01-25.paginators.json b/src/github.com/getlantern/aws-sdk-go/apis/swf/2012-01-25.paginators.json deleted file mode 100644 index e92bfebe6b..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/apis/swf/2012-01-25.paginators.json +++ /dev/null @@ -1,53 +0,0 @@ -{ - "pagination": { - "GetWorkflowExecutionHistory": { - "limit_key": "maximumPageSize", - "input_token": "nextPageToken", - "output_token": "nextPageToken", - "result_key": "events" - }, - "ListActivityTypes": { - "limit_key": "maximumPageSize", - "input_token": "nextPageToken", - "output_token": "nextPageToken", - "result_key": "typeInfos" - }, - "ListClosedWorkflowExecutions": { - "limit_key": "maximumPageSize", - "input_token": "nextPageToken", - "output_token": "nextPageToken", - "result_key": "executionInfos" - }, - "ListDomains": { - "limit_key": "maximumPageSize", - "input_token": "nextPageToken", - "output_token": "nextPageToken", - "result_key": "domainInfos" - }, - "ListOpenWorkflowExecutions": { - "limit_key": "maximumPageSize", - "input_token": "nextPageToken", - "output_token": "nextPageToken", - "result_key": "executionInfos" - }, - "ListWorkflowTypes": { - "limit_key": "maximumPageSize", - "input_token": "nextPageToken", - "output_token": "nextPageToken", - "result_key": "typeInfos" - }, - "PollForDecisionTask": { - "limit_key": "maximumPageSize", - "input_token": "nextPageToken", - "output_token": "nextPageToken", - "result_key": "events", - "non_aggregate_keys": [ - "taskToken", - "startedEventId", - "workflowExecution", - "workflowType", - "previousStartedEventId" - ] - } - } -} diff --git a/src/github.com/getlantern/aws-sdk-go/aws/auth.go b/src/github.com/getlantern/aws-sdk-go/aws/auth.go deleted file mode 100644 index a29b0c2b7b..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/aws/auth.go +++ /dev/null @@ -1,270 +0,0 @@ -package aws - -import ( - "bufio" - "encoding/json" - "fmt" - "net/http" - "os" - "os/user" - "path" - "sync" - "time" - - "github.com/vaughan0/go-ini" -) - -// Credentials are used to authenticate and authorize calls that you make to -// AWS. -type Credentials struct { - AccessKeyID string - SecretAccessKey string - SecurityToken string -} - -// A CredentialsProvider is a provider of credentials. -type CredentialsProvider interface { - // Credentials returns a set of credentials (or an error if no credentials - // could be provided). - Credentials() (*Credentials, error) -} - -var ( - // ErrAccessKeyIDNotFound is returned when the AWS Access Key ID can't be - // found in the process's environment. - ErrAccessKeyIDNotFound = fmt.Errorf("AWS_ACCESS_KEY_ID or AWS_ACCESS_KEY not found in environment") - // ErrSecretAccessKeyNotFound is returned when the AWS Secret Access Key - // can't be found in the process's environment. - ErrSecretAccessKeyNotFound = fmt.Errorf("AWS_SECRET_ACCESS_KEY or AWS_SECRET_KEY not found in environment") -) - -// Context encapsulates the context of a client's connection to an AWS service. -type Context struct { - Service string - Region string - Credentials CredentialsProvider -} - -var currentTime = func() time.Time { - return time.Now() -} - -// DetectCreds returns a CredentialsProvider based on the available information. -// -// If the access key ID and secret access key are provided, it returns a basic -// provider. -// -// If credentials are available via environment variables, it returns an -// environment provider. -// -// If a profile configuration file is available in the default location and has -// a default profile configured, it returns a profile provider. -// -// Otherwise, it returns an IAM instance provider. -func DetectCreds(accessKeyID, secretAccessKey, securityToken string) CredentialsProvider { - if accessKeyID != "" && secretAccessKey != "" { - return Creds(accessKeyID, secretAccessKey, securityToken) - } - - env, err := EnvCreds() - if err == nil { - return env - } - - profile, err := ProfileCreds("", "", 10*time.Minute) - if err != nil { - return IAMCreds() - } - - _, err = profile.Credentials() - if err != nil { - return IAMCreds() - } - - return profile -} - -// EnvCreds returns a static provider of AWS credentials from the process's -// environment, or an error if none are found. -func EnvCreds() (CredentialsProvider, error) { - id := os.Getenv("AWS_ACCESS_KEY_ID") - if id == "" { - id = os.Getenv("AWS_ACCESS_KEY") - } - - secret := os.Getenv("AWS_SECRET_ACCESS_KEY") - if secret == "" { - secret = os.Getenv("AWS_SECRET_KEY") - } - - if id == "" { - return nil, ErrAccessKeyIDNotFound - } - - if secret == "" { - return nil, ErrSecretAccessKeyNotFound - } - - return Creds(id, secret, os.Getenv("AWS_SESSION_TOKEN")), nil -} - -// Creds returns a static provider of credentials. -func Creds(accessKeyID, secretAccessKey, securityToken string) CredentialsProvider { - return staticCredentialsProvider{ - creds: Credentials{ - AccessKeyID: accessKeyID, - SecretAccessKey: secretAccessKey, - SecurityToken: securityToken, - }, - } -} - -// IAMCreds returns a provider which pulls credentials from the local EC2 -// instance's IAM roles. -func IAMCreds() CredentialsProvider { - return &iamProvider{} -} - -// ProfileCreds returns a provider which pulls credentials from the profile -// configuration file. -func ProfileCreds(filename, profile string, expiry time.Duration) (CredentialsProvider, error) { - if filename == "" { - u, err := user.Current() - if err != nil { - return nil, err - } - - filename = path.Join(u.HomeDir, ".aws", "credentials") - } - - if profile == "" { - profile = "default" - } - - return &profileProvider{ - filename: filename, - profile: profile, - expiry: expiry, - }, nil -} - -type profileProvider struct { - filename string - profile string - expiry time.Duration - - creds Credentials - m sync.Mutex - expiration time.Time -} - -func (p *profileProvider) Credentials() (*Credentials, error) { - p.m.Lock() - defer p.m.Unlock() - - if p.expiration.After(currentTime()) { - return &p.creds, nil - } - - config, err := ini.LoadFile(p.filename) - if err != nil { - return nil, err - } - profile := config.Section(p.profile) - - accessKeyID, ok := profile["aws_access_key_id"] - if !ok { - return nil, fmt.Errorf("profile %s in %s did not contain aws_access_key_id", p.profile, p.filename) - } - - secretAccessKey, ok := profile["aws_secret_access_key"] - if !ok { - return nil, fmt.Errorf("profile %s in %s did not contain aws_secret_access_key", p.profile, p.filename) - } - - securityToken := profile["aws_session_token"] - - p.creds = Credentials{ - AccessKeyID: accessKeyID, - SecretAccessKey: secretAccessKey, - SecurityToken: securityToken, - } - p.expiration = currentTime().Add(p.expiry) - - return &p.creds, nil -} - -type iamProvider struct { - creds Credentials - m sync.Mutex - expiration time.Time -} - -var metadataCredentialsEndpoint = "http://169.254.169.254/latest/meta-data/iam/security-credentials/" - -// IAMClient is the HTTP client used to query the metadata endpoint for IAM -// credentials. -var IAMClient = http.Client{ - Timeout: 1 * time.Second, -} - -func (p *iamProvider) Credentials() (*Credentials, error) { - p.m.Lock() - defer p.m.Unlock() - - if p.expiration.After(currentTime()) { - return &p.creds, nil - } - - var body struct { - Expiration time.Time - AccessKeyID string - SecretAccessKey string - Token string - } - - resp, err := IAMClient.Get(metadataCredentialsEndpoint) - if err != nil { - return nil, fmt.Errorf("listing IAM credentials") - } - defer func() { - _ = resp.Body.Close() - }() - - // Take the first line of the body of the metadata endpoint - s := bufio.NewScanner(resp.Body) - if !s.Scan() { - return nil, fmt.Errorf("unable to find default IAM credentials") - } else if s.Err() != nil { - return nil, fmt.Errorf("%s listing IAM credentials", s.Err()) - } - - resp, err = IAMClient.Get(metadataCredentialsEndpoint + s.Text()) - if err != nil { - return nil, fmt.Errorf("getting %s IAM credentials", s.Text()) - } - defer func() { - _ = resp.Body.Close() - }() - - if err := json.NewDecoder(resp.Body).Decode(&body); err != nil { - return nil, fmt.Errorf("decoding %s IAM credentials", s.Text()) - } - - p.creds = Credentials{ - AccessKeyID: body.AccessKeyID, - SecretAccessKey: body.SecretAccessKey, - SecurityToken: body.Token, - } - p.expiration = body.Expiration - - return &p.creds, nil -} - -type staticCredentialsProvider struct { - creds Credentials -} - -func (p staticCredentialsProvider) Credentials() (*Credentials, error) { - return &p.creds, nil -} diff --git a/src/github.com/getlantern/aws-sdk-go/aws/auth_test.go b/src/github.com/getlantern/aws-sdk-go/aws/auth_test.go deleted file mode 100644 index 339789809d..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/aws/auth_test.go +++ /dev/null @@ -1,236 +0,0 @@ -package aws - -import ( - "fmt" - "net/http" - "net/http/httptest" - "os" - "testing" - "time" -) - -func TestEnvCreds(t *testing.T) { - os.Clearenv() - os.Setenv("AWS_ACCESS_KEY_ID", "access") - os.Setenv("AWS_SECRET_ACCESS_KEY", "secret") - os.Setenv("AWS_SESSION_TOKEN", "token") - - prov, err := EnvCreds() - if err != nil { - t.Fatal(err) - } - - creds, err := prov.Credentials() - if err != nil { - t.Fatal(err) - } - - if v, want := creds.AccessKeyID, "access"; v != want { - t.Errorf("Access key ID was %v, expected %v", v, want) - } - - if v, want := creds.SecretAccessKey, "secret"; v != want { - t.Errorf("Secret access key was %v, expected %v", v, want) - } - - if v, want := creds.SecurityToken, "token"; v != want { - t.Errorf("Security token was %v, expected %v", v, want) - } -} - -func TestEnvCredsNoAccessKeyID(t *testing.T) { - os.Clearenv() - os.Setenv("AWS_SECRET_ACCESS_KEY", "secret") - - prov, err := EnvCreds() - if err != ErrAccessKeyIDNotFound { - t.Fatalf("ErrAccessKeyIDNotFound expected, but was %#v/%#v", prov, err) - } -} - -func TestEnvCredsNoSecretAccessKey(t *testing.T) { - os.Clearenv() - os.Setenv("AWS_ACCESS_KEY_ID", "access") - - prov, err := EnvCreds() - if err != ErrSecretAccessKeyNotFound { - t.Fatalf("ErrSecretAccessKeyNotFound expected, but was %#v/%#v", prov, err) - } -} - -func TestEnvCredsAlternateNames(t *testing.T) { - os.Clearenv() - os.Setenv("AWS_ACCESS_KEY", "access") - os.Setenv("AWS_SECRET_KEY", "secret") - - prov, err := EnvCreds() - if err != nil { - t.Fatal(err) - } - - creds, err := prov.Credentials() - if err != nil { - t.Fatal(err) - } - - if v, want := creds.AccessKeyID, "access"; v != want { - t.Errorf("Access key ID was %v, expected %v", v, want) - } - - if v, want := creds.SecretAccessKey, "secret"; v != want { - t.Errorf("Secret access key was %v, expected %v", v, want) - } -} - -func TestIAMCreds(t *testing.T) { - server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - if r.RequestURI == "/" { - fmt.Fprintln(w, "/creds") - } else { - fmt.Fprintln(w, `{ - "AccessKeyId" : "accessKey", - "SecretAccessKey" : "secret", - "Token" : "token", - "Expiration" : "2014-12-16T01:51:37Z" -}`) - } - })) - defer server.Close() - - defer func(s string) { - metadataCredentialsEndpoint = s - }(metadataCredentialsEndpoint) - metadataCredentialsEndpoint = server.URL - - defer func() { - currentTime = time.Now - }() - currentTime = func() time.Time { - return time.Date(2014, 12, 15, 21, 26, 0, 0, time.UTC) - } - - prov := IAMCreds() - creds, err := prov.Credentials() - if err != nil { - t.Fatal(err) - } - - if v, want := creds.AccessKeyID, "accessKey"; v != want { - t.Errorf("AcccessKeyID was %v, but expected %v", v, want) - } - - if v, want := creds.SecretAccessKey, "secret"; v != want { - t.Errorf("SecretAccessKey was %v, but expected %v", v, want) - } - - if v, want := creds.SecurityToken, "token"; v != want { - t.Errorf("SecurityToken was %v, but expected %v", v, want) - } -} - -func TestProfileCreds(t *testing.T) { - prov, err := ProfileCreds("example.ini", "", 10*time.Minute) - if err != nil { - t.Fatal(err) - } - - creds, err := prov.Credentials() - if err != nil { - t.Fatal(err) - } - - if v, want := creds.AccessKeyID, "accessKey"; v != want { - t.Errorf("AcccessKeyID was %v, but expected %v", v, want) - } - - if v, want := creds.SecretAccessKey, "secret"; v != want { - t.Errorf("SecretAccessKey was %v, but expected %v", v, want) - } - - if v, want := creds.SecurityToken, "token"; v != want { - t.Errorf("SecurityToken was %v, but expected %v", v, want) - } -} - -func TestProfileCredsWithoutToken(t *testing.T) { - prov, err := ProfileCreds("example.ini", "no_token", 10*time.Minute) - if err != nil { - t.Fatal(err) - } - - creds, err := prov.Credentials() - if err != nil { - t.Fatal(err) - } - - if v, want := creds.AccessKeyID, "accessKey"; v != want { - t.Errorf("AcccessKeyID was %v, but expected %v", v, want) - } - - if v, want := creds.SecretAccessKey, "secret"; v != want { - t.Errorf("SecretAccessKey was %v, but expected %v", v, want) - } - - if v, want := creds.SecurityToken, ""; v != want { - t.Errorf("SecurityToken was %v, but expected %v", v, want) - } -} - -func BenchmarkProfileCreds(b *testing.B) { - prov, err := ProfileCreds("example.ini", "", 10*time.Minute) - if err != nil { - b.Fatal(err) - } - - b.ResetTimer() - - b.RunParallel(func(pb *testing.PB) { - for pb.Next() { - _, err := prov.Credentials() - if err != nil { - b.Fatal(err) - } - } - }) -} - -func BenchmarkIAMCreds(b *testing.B) { - server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - if r.RequestURI == "/" { - fmt.Fprintln(w, "/creds") - } else { - fmt.Fprintln(w, `{ - "AccessKeyId" : "accessKey", - "SecretAccessKey" : "secret", - "Token" : "token", - "Expiration" : "2014-12-16T01:51:37Z" -}`) - } - })) - defer server.Close() - - defer func(s string) { - metadataCredentialsEndpoint = s - }(metadataCredentialsEndpoint) - metadataCredentialsEndpoint = server.URL - - defer func() { - currentTime = time.Now - }() - currentTime = func() time.Time { - return time.Date(2014, 12, 15, 21, 26, 0, 0, time.UTC) - } - - b.ResetTimer() - - prov := IAMCreds() - - b.RunParallel(func(pb *testing.PB) { - for pb.Next() { - _, err := prov.Credentials() - if err != nil { - b.Fatal(err) - } - } - }) -} diff --git a/src/github.com/getlantern/aws-sdk-go/aws/doc.go b/src/github.com/getlantern/aws-sdk-go/aws/doc.go deleted file mode 100644 index 465e362981..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/aws/doc.go +++ /dev/null @@ -1,3 +0,0 @@ -// Package aws contains support code for the various AWS clients in the -// github.com/awslabs/aws-sdk-go/gen subpackages. -package aws diff --git a/src/github.com/getlantern/aws-sdk-go/aws/ec2.go b/src/github.com/getlantern/aws-sdk-go/aws/ec2.go deleted file mode 100644 index 7cef773ab6..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/aws/ec2.go +++ /dev/null @@ -1,176 +0,0 @@ -package aws - -import ( - "encoding/xml" - "fmt" - "io/ioutil" - "net/http" - "net/url" - "reflect" - "strconv" - "strings" - "time" -) - -// EC2Client is the underlying client for EC2 APIs. -type EC2Client struct { - Context Context - Client *http.Client - Endpoint string - APIVersion string -} - -// Do sends an HTTP request and returns an HTTP response, following policy -// (e.g. redirects, cookies, auth) as configured on the client. -func (c *EC2Client) Do(op, method, uri string, req, resp interface{}) error { - body := url.Values{"Action": {op}, "Version": {c.APIVersion}} - if err := c.loadValues(body, req, ""); err != nil { - return err - } - - httpReq, err := http.NewRequest(method, c.Endpoint+uri, strings.NewReader(body.Encode())) - if err != nil { - return err - } - httpReq.Header.Set("Content-Type", "application/x-www-form-urlencoded") - httpReq.Header.Set("User-Agent", "aws-go") - if err := c.Context.sign(httpReq); err != nil { - return err - } - - httpResp, err := c.Client.Do(httpReq) - if err != nil { - return err - } - defer func() { - _ = httpResp.Body.Close() - }() - - if httpResp.StatusCode != http.StatusOK { - bodyBytes, err := ioutil.ReadAll(httpResp.Body) - if err != nil { - return err - } - if len(bodyBytes) == 0 { - return APIError{ - StatusCode: httpResp.StatusCode, - Message: httpResp.Status, - } - } - var ec2Err ec2ErrorResponse - if err := xml.Unmarshal(bodyBytes, &ec2Err); err != nil { - return err - } - return ec2Err.Err(httpResp.StatusCode) - } - - if resp != nil { - return xml.NewDecoder(httpResp.Body).Decode(resp) - } - return nil -} - -type ec2ErrorResponse struct { - XMLName xml.Name `xml:"Response"` - Type string `xml:"Errors>Error>Type"` - Code string `xml:"Errors>Error>Code"` - Message string `xml:"Errors>Error>Message"` - RequestID string `xml:"RequestID"` -} - -func (e ec2ErrorResponse) Err(StatusCode int) error { - return APIError{ - StatusCode: StatusCode, - Type: e.Type, - Code: e.Code, - Message: e.Message, - RequestID: e.RequestID, - } -} - -func (c *EC2Client) loadValues(v url.Values, i interface{}, prefix string) error { - value := reflect.ValueOf(i) - - // follow any pointers - for value.Kind() == reflect.Ptr { - value = value.Elem() - } - - if value.Kind() == reflect.Slice { - for i := 0; i < value.Len(); i++ { - vPrefix := prefix - if vPrefix == "" { - vPrefix = strconv.Itoa(i + 1) - } else { - vPrefix = vPrefix + "." + strconv.Itoa(i+1) - } - if err := c.loadValues(v, value.Index(i).Interface(), vPrefix); err != nil { - return err - } - } - return nil - } - - return c.loadStruct(v, value, prefix) -} - -func (c *EC2Client) loadStruct(v url.Values, value reflect.Value, prefix string) error { - if !value.IsValid() { - return nil - } - - t := value.Type() - for i := 0; i < value.NumField(); i++ { - value := value.Field(i) - name := t.Field(i).Tag.Get("ec2") - - if name == "" { - name = t.Field(i).Name - } - if prefix != "" { - name = prefix + "." + name - } - switch casted := value.Interface().(type) { - case StringValue: - if casted != nil { - v.Set(name, *casted) - } - case BooleanValue: - if casted != nil { - v.Set(name, strconv.FormatBool(*casted)) - } - case LongValue: - if casted != nil { - v.Set(name, strconv.FormatInt(*casted, 10)) - } - case IntegerValue: - if casted != nil { - v.Set(name, strconv.Itoa(*casted)) - } - case DoubleValue: - if casted != nil { - v.Set(name, strconv.FormatFloat(*casted, 'f', -1, 64)) - } - case FloatValue: - if casted != nil { - v.Set(name, strconv.FormatFloat(float64(*casted), 'f', -1, 32)) - } - case []string: - if len(casted) != 0 { - for i, val := range casted { - v.Set(fmt.Sprintf("%s.%d", name, i+1), val) - } - } - case time.Time: - if !casted.IsZero() { - const ISO8601UTC = "2006-01-02T15:04:05Z" - v.Set(name, casted.UTC().Format(ISO8601UTC)) - } - default: - if err := c.loadValues(v, value.Interface(), name); err != nil { - return err - } - } - } - return nil -} diff --git a/src/github.com/getlantern/aws-sdk-go/aws/ec2_test.go b/src/github.com/getlantern/aws-sdk-go/aws/ec2_test.go deleted file mode 100644 index 66b4346958..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/aws/ec2_test.go +++ /dev/null @@ -1,227 +0,0 @@ -package aws_test - -import ( - "fmt" - "net/http" - "net/http/httptest" - "net/url" - "reflect" - "sync" - "testing" - "time" - - "github.com/awslabs/aws-sdk-go/aws" -) - -func TestEC2Request(t *testing.T) { - var m sync.Mutex - var httpReq *http.Request - var form url.Values - - server := httptest.NewServer(http.HandlerFunc( - func(w http.ResponseWriter, r *http.Request) { - m.Lock() - defer m.Unlock() - - httpReq = r - - if err := r.ParseForm(); err != nil { - t.Fatal(err) - } - form = r.Form - - fmt.Fprintln(w, `woo`) - }, - )) - defer server.Close() - - client := aws.EC2Client{ - Context: aws.Context{ - Service: "animals", - Region: "us-west-2", - Credentials: aws.Creds( - "accessKeyID", - "secretAccessKey", - "securityToken", - ), - }, - Client: http.DefaultClient, - Endpoint: server.URL, - APIVersion: "1.1", - } - - req := fakeEC2Request{ - PresentString: aws.String("string"), - PresentBoolean: aws.True(), - PresentInteger: aws.Integer(1), - PresentLong: aws.Long(2), - PresentDouble: aws.Double(1.2), - PresentFloat: aws.Float(2.3), - PresentTime: time.Date(2001, 1, 1, 2, 1, 1, 0, time.FixedZone("UTC+1", 3600)), - PresentSlice: []string{"one", "two"}, - PresentStruct: &EmbeddedStruct{Value: aws.String("v")}, - PresentStructSlice: []EmbeddedStruct{ - {Value: aws.String("p")}, - {Value: aws.String("q")}, - }, - } - var resp fakeEC2Response - if err := client.Do("GetIP", "POST", "/", &req, &resp); err != nil { - t.Fatal(err) - } - - m.Lock() - defer m.Unlock() - - if v, want := httpReq.Method, "POST"; v != want { - t.Errorf("Method was %v but expected %v", v, want) - } - - if httpReq.Header.Get("Authorization") == "" { - t.Error("Authorization header is missing") - } - - if v, want := httpReq.Header.Get("Content-Type"), "application/x-www-form-urlencoded"; v != want { - t.Errorf("Content-Type was %v but expected %v", v, want) - } - - if v, want := httpReq.Header.Get("User-Agent"), "aws-go"; v != want { - t.Errorf("User-Agent was %v but expected %v", v, want) - } - - if err := httpReq.ParseForm(); err != nil { - t.Fatal(err) - } - - expectedForm := url.Values{ - "Action": []string{"GetIP"}, - "Version": []string{"1.1"}, - "PresentString": []string{"string"}, - "PresentBoolean": []string{"true"}, - "PresentInteger": []string{"1"}, - "PresentLong": []string{"2"}, - "PresentDouble": []string{"1.2"}, - "PresentFloat": []string{"2.3"}, - "PresentTime": []string{"2001-01-01T01:01:01Z"}, - "PresentSlice.1": []string{"one"}, - "PresentSlice.2": []string{"two"}, - "PresentStruct.Value": []string{"v"}, - "PresentStructSlice.1.Value": []string{"p"}, - "PresentStructSlice.2.Value": []string{"q"}, - } - - if !reflect.DeepEqual(form, expectedForm) { - t.Errorf("Post body was \n%s\n but expected \n%s", form.Encode(), expectedForm.Encode()) - } - - if want := (fakeEC2Response{IPAddress: "woo"}); want != resp { - t.Errorf("Response was %#v, but expected %#v", resp, want) - } -} - -func TestEC2RequestError(t *testing.T) { - var m sync.Mutex - var httpReq *http.Request - var form url.Values - - server := httptest.NewServer(http.HandlerFunc( - func(w http.ResponseWriter, r *http.Request) { - m.Lock() - defer m.Unlock() - - httpReq = r - - if err := r.ParseForm(); err != nil { - t.Fatal(err) - } - form = r.Form - - w.WriteHeader(400) - fmt.Fprintln(w, ` -woo - - -Problem -Uh Oh -You done did it - - -`) - }, - )) - defer server.Close() - - client := aws.EC2Client{ - Context: aws.Context{ - Service: "animals", - Region: "us-west-2", - Credentials: aws.Creds( - "accessKeyID", - "secretAccessKey", - "securityToken", - ), - }, - Client: http.DefaultClient, - Endpoint: server.URL, - APIVersion: "1.1", - } - - req := fakeEC2Request{} - var resp fakeEC2Response - err := client.Do("GetIP", "POST", "/", &req, &resp) - if err == nil { - t.Fatal("Expected an error but none was returned") - } - - if err, ok := err.(aws.APIError); ok { - if v, want := err.Type, "Problem"; v != want { - t.Errorf("Error type was %v, but expected %v", v, want) - } - - if v, want := err.Code, "Uh Oh"; v != want { - t.Errorf("Error type was %v, but expected %v", v, want) - } - - if v, want := err.Message, "You done did it"; v != want { - t.Errorf("Error message was %v, but expected %v", v, want) - } - } else { - t.Errorf("Unknown error returned: %#v", err) - } -} - -type fakeEC2Request struct { - PresentString aws.StringValue `ec2:"PresentString"` - MissingString aws.StringValue `ec2:"MissingString"` - - PresentInteger aws.IntegerValue `ec2:"PresentInteger"` - MissingInteger aws.IntegerValue `ec2:"MissingInteger"` - - PresentLong aws.LongValue `ec2:"PresentLong"` - MissingLong aws.LongValue `ec2:"MissingLong"` - - PresentDouble aws.DoubleValue `ec2:"PresentDouble"` - MissingDouble aws.DoubleValue `ec2:"MissingDouble"` - - PresentFloat aws.FloatValue `ec2:"PresentFloat"` - MissingFloat aws.FloatValue `ec2:"MissingFloat"` - - PresentTime time.Time `ec2:"PresentTime"` - MissingTime time.Time `ec2:"MissingTime"` - - PresentBoolean aws.BooleanValue `ec2:"PresentBoolean"` - MissingBoolean aws.BooleanValue `ec2:"MissingBoolean"` - - PresentSlice []string `ec2:"PresentSlice"` - MissingSlice []string `ec2:"MissingSlice"` - - PresentStructSlice []EmbeddedStruct `ec2:"PresentStructSlice"` - MissingStructSlice []EmbeddedStruct `ec2:"MissingStructSlice"` - - PresentStruct *EmbeddedStruct `ec2:"PresentStruct"` - MissingStruct *EmbeddedStruct `ec2:"MissingStruct"` -} - -type fakeEC2Response struct { - IPAddress string `xml:"IpAddress"` -} diff --git a/src/github.com/getlantern/aws-sdk-go/aws/error.go b/src/github.com/getlantern/aws-sdk-go/aws/error.go deleted file mode 100644 index 90fa387d3c..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/aws/error.go +++ /dev/null @@ -1,16 +0,0 @@ -package aws - -// An APIError is an error returned by an AWS API. -type APIError struct { - StatusCode int // HTTP status code e.g. 200 - Type string - Code string - Message string - RequestID string - HostID string - Specifics map[string]string -} - -func (e APIError) Error() string { - return e.Message -} diff --git a/src/github.com/getlantern/aws-sdk-go/aws/example.ini b/src/github.com/getlantern/aws-sdk-go/aws/example.ini deleted file mode 100644 index aa2dc506ad..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/aws/example.ini +++ /dev/null @@ -1,8 +0,0 @@ -[default] -aws_access_key_id = accessKey -aws_secret_access_key = secret -aws_session_token = token - -[no_token] -aws_access_key_id = accessKey -aws_secret_access_key = secret diff --git a/src/github.com/getlantern/aws-sdk-go/aws/json.go b/src/github.com/getlantern/aws-sdk-go/aws/json.go deleted file mode 100644 index f49f193de4..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/aws/json.go +++ /dev/null @@ -1,81 +0,0 @@ -package aws - -import ( - "bytes" - "encoding/json" - "io/ioutil" - "net/http" -) - -// JSONClient is the underlying client for JSON APIs. -type JSONClient struct { - Context Context - Client *http.Client - Endpoint string - TargetPrefix string - JSONVersion string -} - -// Do sends an HTTP request and returns an HTTP response, following policy -// (e.g. redirects, cookies, auth) as configured on the client. -func (c *JSONClient) Do(op, method, uri string, req, resp interface{}) error { - b, err := json.Marshal(req) - if err != nil { - return err - } - - httpReq, err := http.NewRequest(method, c.Endpoint+uri, bytes.NewReader(b)) - if err != nil { - return err - } - httpReq.Header.Set("User-Agent", "aws-go") - httpReq.Header.Set("X-Amz-Target", c.TargetPrefix+"."+op) - httpReq.Header.Set("Content-Type", "application/x-amz-json-"+c.JSONVersion) - if err := c.Context.sign(httpReq); err != nil { - return err - } - - httpResp, err := c.Client.Do(httpReq) - if err != nil { - return err - } - defer func() { - _ = httpResp.Body.Close() - }() - - if httpResp.StatusCode != http.StatusOK { - bodyBytes, err := ioutil.ReadAll(httpResp.Body) - if err != nil { - return err - } - if len(bodyBytes) == 0 { - return APIError{ - StatusCode: httpResp.StatusCode, - Message: httpResp.Status, - } - } - var jsonErr jsonErrorResponse - if err := json.Unmarshal(bodyBytes, &jsonErr); err != nil { - return err - } - return jsonErr.Err(httpResp.StatusCode) - } - - if resp != nil { - return json.NewDecoder(httpResp.Body).Decode(resp) - } - return nil -} - -type jsonErrorResponse struct { - Type string `json:"__type"` - Message string `json:"message"` -} - -func (e jsonErrorResponse) Err(StatusCode int) error { - return APIError{ - StatusCode: StatusCode, - Type: e.Type, - Message: e.Message, - } -} diff --git a/src/github.com/getlantern/aws-sdk-go/aws/json_test.go b/src/github.com/getlantern/aws-sdk-go/aws/json_test.go deleted file mode 100644 index 5910a1c87a..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/aws/json_test.go +++ /dev/null @@ -1,143 +0,0 @@ -package aws_test - -import ( - "fmt" - "io/ioutil" - "net/http" - "net/http/httptest" - "sync" - "testing" - - "github.com/awslabs/aws-sdk-go/aws" -) - -func TestJSONRequest(t *testing.T) { - var m sync.Mutex - var httpReq *http.Request - var body []byte - - server := httptest.NewServer(http.HandlerFunc( - func(w http.ResponseWriter, r *http.Request) { - m.Lock() - defer m.Unlock() - - b, err := ioutil.ReadAll(r.Body) - if err != nil { - t.Fatal(err) - } - defer r.Body.Close() - - httpReq = r - body = b - - fmt.Fprintln(w, `{"TailWagged":true}`) - }, - )) - defer server.Close() - - client := aws.JSONClient{ - Context: aws.Context{ - Service: "animals", - Region: "us-west-2", - Credentials: aws.Creds( - "accessKeyID", - "secretAccessKey", - "securityToken", - ), - }, - Client: http.DefaultClient, - Endpoint: server.URL, - TargetPrefix: "Animals", - JSONVersion: "1.1", - } - - req := fakeJSONRequest{Name: "Penny"} - var resp fakeJSONResponse - if err := client.Do("PetTheDog", "POST", "/", req, &resp); err != nil { - t.Fatal(err) - } - - m.Lock() - defer m.Unlock() - - if v, want := httpReq.Method, "POST"; v != want { - t.Errorf("Method was %v but expected %v", v, want) - } - - if httpReq.Header.Get("Authorization") == "" { - t.Error("Authorization header is missing") - } - - if v, want := httpReq.Header.Get("Content-Type"), "application/x-amz-json-1.1"; v != want { - t.Errorf("Content-Type was %v but expected %v", v, want) - } - - if v, want := httpReq.Header.Get("User-Agent"), "aws-go"; v != want { - t.Errorf("User-Agent was %v but expected %v", v, want) - } - - if v, want := httpReq.Header.Get("X-Amz-Target"), "Animals.PetTheDog"; v != want { - t.Errorf("X-Amz-Target was %v but expected %v", v, want) - } - - if v, want := string(body), `{"Name":"Penny"}`; v != want { - t.Errorf("Body was %v but expected %v", v, want) - } - - if v, want := resp, (fakeJSONResponse{TailWagged: true}); v != want { - t.Errorf("Response was %#v but expected %#v", v, want) - } -} - -func TestJSONRequestError(t *testing.T) { - server := httptest.NewServer(http.HandlerFunc( - func(w http.ResponseWriter, r *http.Request) { - w.WriteHeader(400) - fmt.Fprintln(w, `{"__type":"Problem", "message":"What even"}`) - }, - )) - defer server.Close() - - client := aws.JSONClient{ - Context: aws.Context{ - Service: "animals", - Region: "us-west-2", - Credentials: aws.Creds( - "accessKeyID", - "secretAccessKey", - "securityToken", - ), - }, - Client: http.DefaultClient, - Endpoint: server.URL, - TargetPrefix: "Animals", - JSONVersion: "1.1", - } - - req := fakeJSONRequest{Name: "Penny"} - var resp fakeJSONResponse - err := client.Do("PetTheDog", "POST", "/", req, &resp) - if err == nil { - t.Fatal("Expected an error but none was returned") - } - - if err, ok := err.(aws.APIError); ok { - if v, want := err.Type, "Problem"; v != want { - t.Errorf("Error type was %v, but expected %v", v, want) - } - - if v, want := err.Message, "What even"; v != want { - t.Errorf("Error message was %v, but expected %v", v, want) - } - } else { - t.Errorf("Unknown error returned: %#v", err) - } -} - -type fakeJSONRequest struct { - Name string -} - -type fakeJSONResponse struct { - TailWagged bool -} diff --git a/src/github.com/getlantern/aws-sdk-go/aws/query.go b/src/github.com/getlantern/aws-sdk-go/aws/query.go deleted file mode 100644 index f89f40f8dc..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/aws/query.go +++ /dev/null @@ -1,234 +0,0 @@ -package aws - -import ( - "encoding/xml" - "fmt" - "io/ioutil" - "net/http" - "net/url" - "reflect" - "sort" - "strconv" - "strings" - "time" -) - -// QueryClient is the underlying client for Query APIs. -type QueryClient struct { - Context Context - Client *http.Client - Endpoint string - APIVersion string -} - -// Do sends an HTTP request and returns an HTTP response, following policy -// (e.g. redirects, cookies, auth) as configured on the client. -func (c *QueryClient) Do(op, method, uri string, req, resp interface{}) error { - body := url.Values{"Action": {op}, "Version": {c.APIVersion}} - if err := c.loadValues(body, req, ""); err != nil { - return err - } - - httpReq, err := http.NewRequest(method, c.Endpoint+uri, strings.NewReader(body.Encode())) - if err != nil { - return err - } - httpReq.Header.Set("Content-Type", "application/x-www-form-urlencoded") - httpReq.Header.Set("User-Agent", "aws-go") - if err := c.Context.sign(httpReq); err != nil { - return err - } - - httpResp, err := c.Client.Do(httpReq) - if err != nil { - return err - } - defer func() { - _ = httpResp.Body.Close() - }() - - if httpResp.StatusCode != http.StatusOK { - bodyBytes, err := ioutil.ReadAll(httpResp.Body) - if err != nil { - return err - } - if len(bodyBytes) == 0 { - return APIError{ - StatusCode: httpResp.StatusCode, - Message: httpResp.Status, - } - } - var queryErr queryErrorResponse - if err := xml.Unmarshal(bodyBytes, &queryErr); err != nil { - return err - } - return queryErr.Err(httpResp.StatusCode) - } - - if resp != nil { - return xml.NewDecoder(httpResp.Body).Decode(resp) - } - return nil -} - -type queryErrorResponse struct { - XMLName xml.Name `xml:"ErrorResponse"` - Type string `xml:"Error>Type"` - Code string `xml:"Error>Code"` - Message string `xml:"Error>Message"` - RequestID string `xml:"RequestId"` -} - -func (e queryErrorResponse) Err(StatusCode int) error { - return APIError{ - StatusCode: StatusCode, - Type: e.Type, - Code: e.Code, - Message: e.Message, - RequestID: e.RequestID, - } -} - -func (c *QueryClient) loadValues(v url.Values, i interface{}, prefix string) error { - value := reflect.ValueOf(i) - - // follow any pointers - for value.Kind() == reflect.Ptr { - value = value.Elem() - } - - // no need to handle zero values - if !value.IsValid() { - return nil - } - - switch value.Kind() { - case reflect.Struct: - return c.loadStruct(v, value, prefix) - case reflect.Slice: - for i := 0; i < value.Len(); i++ { - slicePrefix := prefix - if slicePrefix == "" { - slicePrefix = strconv.Itoa(i + 1) - } else { - slicePrefix = slicePrefix + "." + strconv.Itoa(i+1) - } - if err := c.loadValues(v, value.Index(i).Interface(), slicePrefix); err != nil { - return err - } - } - return nil - case reflect.Map: - sortedKeys := []string{} - keysByString := map[string]reflect.Value{} - for _, k := range value.MapKeys() { - s := fmt.Sprintf("%v", k.Interface()) - sortedKeys = append(sortedKeys, s) - keysByString[s] = k - } - sort.Strings(sortedKeys) - - for i, sortKey := range sortedKeys { - mapKey := keysByString[sortKey] - - var keyName string - if prefix == "" { - keyName = strconv.Itoa(i+1) + ".Name" - } else { - keyName = prefix + "." + strconv.Itoa(i+1) + ".Name" - } - - if err := c.loadValue(v, mapKey, keyName); err != nil { - return err - } - - mapValue := value.MapIndex(mapKey) - - var valueName string - if prefix == "" { - valueName = strconv.Itoa(i+1) + ".Value" - } else { - valueName = prefix + "." + strconv.Itoa(i+1) + ".Value" - } - - if err := c.loadValue(v, mapValue, valueName); err != nil { - return err - } - } - - return nil - default: - panic("unknown request member type: " + value.String()) - } -} - -func (c *QueryClient) loadStruct(v url.Values, value reflect.Value, prefix string) error { - if !value.IsValid() { - return nil - } - - t := value.Type() - for i := 0; i < value.NumField(); i++ { - value := value.Field(i) - name := t.Field(i).Tag.Get("query") - if name == "" { - name = t.Field(i).Name - } - if prefix != "" { - name = prefix + "." + name - } - if err := c.loadValue(v, value, name); err != nil { - return err - } - } - return nil -} - -func (c *QueryClient) loadValue(v url.Values, value reflect.Value, name string) error { - switch casted := value.Interface().(type) { - case string: - if casted != "" { - v.Set(name, casted) - } - case StringValue: - if casted != nil { - v.Set(name, *casted) - } - case BooleanValue: - if casted != nil { - v.Set(name, strconv.FormatBool(*casted)) - } - case LongValue: - if casted != nil { - v.Set(name, strconv.FormatInt(*casted, 10)) - } - case IntegerValue: - if casted != nil { - v.Set(name, strconv.Itoa(*casted)) - } - case DoubleValue: - if casted != nil { - v.Set(name, strconv.FormatFloat(*casted, 'f', -1, 64)) - } - case FloatValue: - if casted != nil { - v.Set(name, strconv.FormatFloat(float64(*casted), 'f', -1, 32)) - } - case time.Time: - if !casted.IsZero() { - const ISO8601UTC = "2006-01-02T15:04:05Z" - v.Set(name, casted.UTC().Format(ISO8601UTC)) - } - case []string: - if len(casted) != 0 { - for i, val := range casted { - v.Set(fmt.Sprintf("%s.%d", name, i+1), val) - } - } - default: - if err := c.loadValues(v, value.Interface(), name); err != nil { - return err - } - } - return nil -} diff --git a/src/github.com/getlantern/aws-sdk-go/aws/query_test.go b/src/github.com/getlantern/aws-sdk-go/aws/query_test.go deleted file mode 100644 index 31eea35dec..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/aws/query_test.go +++ /dev/null @@ -1,240 +0,0 @@ -package aws_test - -import ( - "fmt" - "net/http" - "net/http/httptest" - "net/url" - "reflect" - "sync" - "testing" - "time" - - "github.com/awslabs/aws-sdk-go/aws" -) - -func TestQueryRequest(t *testing.T) { - var m sync.Mutex - var httpReq *http.Request - var form url.Values - - server := httptest.NewServer(http.HandlerFunc( - func(w http.ResponseWriter, r *http.Request) { - m.Lock() - defer m.Unlock() - - httpReq = r - - if err := r.ParseForm(); err != nil { - t.Fatal(err) - } - form = r.Form - - fmt.Fprintln(w, `woo`) - }, - )) - defer server.Close() - - client := aws.QueryClient{ - Context: aws.Context{ - Service: "animals", - Region: "us-west-2", - Credentials: aws.Creds( - "accessKeyID", - "secretAccessKey", - "securityToken", - ), - }, - Client: http.DefaultClient, - Endpoint: server.URL, - APIVersion: "1.1", - } - - req := fakeQueryRequest{ - PresentString: aws.String("string"), - PresentBoolean: aws.True(), - PresentInteger: aws.Integer(1), - PresentLong: aws.Long(2), - PresentDouble: aws.Double(1.2), - PresentFloat: aws.Float(2.3), - PresentTime: time.Date(2001, 1, 1, 2, 1, 1, 0, time.FixedZone("UTC+1", 3600)), - PresentSlice: []string{"one", "two"}, - PresentStruct: &EmbeddedStruct{Value: aws.String("v")}, - PresentStructSlice: []EmbeddedStruct{ - {Value: aws.String("p")}, - {Value: aws.String("q")}, - }, - PresentMap: map[string]EmbeddedStruct{ - "aa": EmbeddedStruct{Value: aws.String("AA")}, - "bb": EmbeddedStruct{Value: aws.String("BB")}, - }, - } - var resp fakeQueryResponse - if err := client.Do("GetIP", "POST", "/", &req, &resp); err != nil { - t.Fatal(err) - } - - m.Lock() - defer m.Unlock() - - if v, want := httpReq.Method, "POST"; v != want { - t.Errorf("Method was %v but expected %v", v, want) - } - - if httpReq.Header.Get("Authorization") == "" { - t.Error("Authorization header is missing") - } - - if v, want := httpReq.Header.Get("Content-Type"), "application/x-www-form-urlencoded"; v != want { - t.Errorf("Content-Type was %v but expected %v", v, want) - } - - if v, want := httpReq.Header.Get("User-Agent"), "aws-go"; v != want { - t.Errorf("User-Agent was %v but expected %v", v, want) - } - - if err := httpReq.ParseForm(); err != nil { - t.Fatal(err) - } - - expectedForm := url.Values{ - "Action": []string{"GetIP"}, - "Version": []string{"1.1"}, - "PresentString": []string{"string"}, - "PresentBoolean": []string{"true"}, - "PresentInteger": []string{"1"}, - "PresentLong": []string{"2"}, - "PresentDouble": []string{"1.2"}, - "PresentFloat": []string{"2.3"}, - "PresentTime": []string{"2001-01-01T01:01:01Z"}, - "PresentSlice.1": []string{"one"}, - "PresentSlice.2": []string{"two"}, - "PresentStruct.Value": []string{"v"}, - "PresentStructSlice.1.Value": []string{"p"}, - "PresentStructSlice.2.Value": []string{"q"}, - "PresentMap.1.Name": []string{"aa"}, - "PresentMap.1.Value.Value": []string{"AA"}, - "PresentMap.2.Name": []string{"bb"}, - "PresentMap.2.Value.Value": []string{"BB"}, - } - - if !reflect.DeepEqual(form, expectedForm) { - t.Errorf("Post body was \n%s\n but expected \n%s", form.Encode(), expectedForm.Encode()) - } - - if want := (fakeQueryResponse{IPAddress: "woo"}); want != resp { - t.Errorf("Response was %#v, but expected %#v", resp, want) - } -} - -func TestQueryRequestError(t *testing.T) { - var m sync.Mutex - var httpReq *http.Request - var form url.Values - - server := httptest.NewServer(http.HandlerFunc( - func(w http.ResponseWriter, r *http.Request) { - m.Lock() - defer m.Unlock() - - httpReq = r - - if err := r.ParseForm(); err != nil { - t.Fatal(err) - } - form = r.Form - - w.WriteHeader(400) - fmt.Fprintln(w, ` -woo - -Problem -Uh Oh -You done did it - -`) - }, - )) - defer server.Close() - - client := aws.QueryClient{ - Context: aws.Context{ - Service: "animals", - Region: "us-west-2", - Credentials: aws.Creds( - "accessKeyID", - "secretAccessKey", - "securityToken", - ), - }, - Client: http.DefaultClient, - Endpoint: server.URL, - APIVersion: "1.1", - } - - req := fakeQueryRequest{} - var resp fakeQueryResponse - err := client.Do("GetIP", "POST", "/", &req, &resp) - if err == nil { - t.Fatal("Expected an error but none was returned") - } - - if err, ok := err.(aws.APIError); ok { - if v, want := err.Type, "Problem"; v != want { - t.Errorf("Error type was %v, but expected %v", v, want) - } - - if v, want := err.Code, "Uh Oh"; v != want { - t.Errorf("Error type was %v, but expected %v", v, want) - } - - if v, want := err.Message, "You done did it"; v != want { - t.Errorf("Error message was %v, but expected %v", v, want) - } - } else { - t.Errorf("Unknown error returned: %#v", err) - } -} - -type fakeQueryRequest struct { - PresentString aws.StringValue `query:"PresentString"` - MissingString aws.StringValue `query:"MissingString"` - - PresentInteger aws.IntegerValue `query:"PresentInteger"` - MissingInteger aws.IntegerValue `query:"MissingInteger"` - - PresentLong aws.LongValue `query:"PresentLong"` - MissingLong aws.LongValue `query:"MissingLong"` - - PresentDouble aws.DoubleValue `query:"PresentDouble"` - MissingDouble aws.DoubleValue `query:"MissingDouble"` - - PresentFloat aws.FloatValue `query:"PresentFloat"` - MissingFloat aws.FloatValue `query:"MissingFloat"` - - PresentBoolean aws.BooleanValue `query:"PresentBoolean"` - MissingBoolean aws.BooleanValue `query:"MissingBoolean"` - - PresentTime time.Time `query:"PresentTime"` - MissingTime time.Time `query:"MissingTime"` - - PresentSlice []string `query:"PresentSlice"` - MissingSlice []string `query:"MissingSlice"` - - PresentStructSlice []EmbeddedStruct `query:"PresentStructSlice"` - MissingStructSlice []EmbeddedStruct `query:"MissingStructSlice"` - - PresentMap map[string]EmbeddedStruct `query:"PresentMap"` - MissingMap map[string]EmbeddedStruct `query:"MissingMap"` - - PresentStruct *EmbeddedStruct `query:"PresentStruct"` - MissingStruct *EmbeddedStruct `query:"MissingStruct"` -} - -type EmbeddedStruct struct { - Value aws.StringValue -} - -type fakeQueryResponse struct { - IPAddress string `xml:"IpAddress"` -} diff --git a/src/github.com/getlantern/aws-sdk-go/aws/rest.go b/src/github.com/getlantern/aws-sdk-go/aws/rest.go deleted file mode 100644 index 1252223cf2..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/aws/rest.go +++ /dev/null @@ -1,136 +0,0 @@ -package aws - -import ( - "bytes" - "encoding/json" - "encoding/xml" - "io/ioutil" - "net/http" - "strconv" - "strings" -) - -// RestClient is the underlying client for REST-JSON and REST-XML APIs. -type RestClient struct { - Context Context - Client *http.Client - Endpoint string - APIVersion string -} - -// Whether the byte value can be sent without escaping in AWS URLs -var noEscape [256]bool - -// Initialise noEscape -func init() { - for i := range noEscape { - // Amazon expects every character except these escaped - noEscape[i] = (i >= 'A' && i <= 'Z') || - (i >= 'a' && i <= 'z') || - (i >= '0' && i <= '9') || - i == '-' || - i == '.' || - i == '/' || - i == ':' || - i == '_' || - i == '~' - } -} - -// EscapePath escapes part of a URL path in Amazon style -func EscapePath(path string) string { - var buf bytes.Buffer - for i := 0; i < len(path); i++ { - c := path[i] - if noEscape[c] { - buf.WriteByte(c) - } else { - buf.WriteByte('%') - buf.WriteString(strings.ToUpper(strconv.FormatUint(uint64(c), 16))) - } - } - return buf.String() -} - -// Do sends an HTTP request and returns an HTTP response, following policy -// (e.g. redirects, cookies, auth) as configured on the client. -func (c *RestClient) Do(req *http.Request) (*http.Response, error) { - // Set the form for the URL - req.URL.Opaque = EscapePath(req.URL.Path) - req.Header.Set("User-Agent", "aws-go") - if err := c.Context.sign(req); err != nil { - return nil, err - } - - resp, err := c.Client.Do(req) - if err != nil { - return nil, err - } - - if resp.StatusCode >= 400 { - bodyBytes, err := ioutil.ReadAll(resp.Body) - defer resp.Body.Close() - if err != nil { - return nil, err - } - if len(bodyBytes) == 0 { - return nil, APIError{ - StatusCode: resp.StatusCode, - Message: resp.Status, - } - } - var restErr restError - switch resp.Header.Get("Content-Type") { - case "application/json": - if err := json.Unmarshal(bodyBytes, &restErr); err != nil { - return nil, err - } - return nil, restErr.Err(resp.StatusCode) - case "application/xml", "text/xml": - // AWS XML error documents can have a couple of different formats. - // Try each before returning a decode error. - var wrappedErr restErrorResponse - if err := xml.Unmarshal(bodyBytes, &wrappedErr); err == nil { - return nil, wrappedErr.Error.Err(resp.StatusCode) - } - if err := xml.Unmarshal(bodyBytes, &restErr); err != nil { - return nil, err - } - return nil, restErr.Err(resp.StatusCode) - default: - return nil, APIError{ - StatusCode: resp.StatusCode, - Message: string(bodyBytes), - } - } - } - - return resp, nil -} - -type restErrorResponse struct { - XMLName xml.Name `xml:"ErrorResponse",json:"-"` - Error restError -} - -type restError struct { - XMLName xml.Name `xml:"Error",json:"-"` - Code string - BucketName string - Message string - RequestID string - HostID string -} - -func (e restError) Err(StatusCode int) error { - return APIError{ - StatusCode: StatusCode, - Code: e.Code, - Message: e.Message, - RequestID: e.RequestID, - HostID: e.HostID, - Specifics: map[string]string{ - "BucketName": e.BucketName, - }, - } -} diff --git a/src/github.com/getlantern/aws-sdk-go/aws/rest_test.go b/src/github.com/getlantern/aws-sdk-go/aws/rest_test.go deleted file mode 100644 index d3b9dcb688..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/aws/rest_test.go +++ /dev/null @@ -1,215 +0,0 @@ -package aws_test - -import ( - "fmt" - "io/ioutil" - "net/http" - "net/http/httptest" - "sync" - "testing" - - "github.com/awslabs/aws-sdk-go/aws" -) - -func TestRestRequest(t *testing.T) { - var m sync.Mutex - var httpReq *http.Request - - server := httptest.NewServer(http.HandlerFunc( - func(w http.ResponseWriter, r *http.Request) { - m.Lock() - defer m.Unlock() - - httpReq = r - - fmt.Fprintln(w, `woo`) - }, - )) - defer server.Close() - - client := aws.RestClient{ - Context: aws.Context{ - Service: "animals", - Region: "us-west-2", - Credentials: aws.Creds( - "accessKeyID", - "secretAccessKey", - "securityToken", - ), - }, - Client: http.DefaultClient, - } - - req, err := http.NewRequest("GET", server.URL+"/yay", nil) - if err != nil { - t.Fatal(err) - } - - resp, err := client.Do(req) - if err != nil { - t.Fatal(err) - } - defer resp.Body.Close() - - body, err := ioutil.ReadAll(resp.Body) - if err != nil { - t.Fatal(err) - } - - if v, want := string(body), "woo\n"; v != want { - t.Errorf("Response entity was %q, but expected %q", v, want) - } - - m.Lock() - defer m.Unlock() - - if v, want := httpReq.Method, "GET"; v != want { - t.Errorf("Method was %v but expected %v", v, want) - } - - if httpReq.Header.Get("Authorization") == "" { - t.Error("Authorization header is missing") - } - - if v, want := httpReq.Header.Get("User-Agent"), "aws-go"; v != want { - t.Errorf("User-Agent was %v but expected %v", v, want) - } - - if v, want := httpReq.URL.String(), "/yay"; v != want { - t.Errorf("URL was %v but expected %v", v, want) - } -} - -func TestRestRequestXMLError(t *testing.T) { - var m sync.Mutex - var httpReq *http.Request - - server := httptest.NewServer(http.HandlerFunc( - func(w http.ResponseWriter, r *http.Request) { - m.Lock() - defer m.Unlock() - - httpReq = r - - w.Header().Set("Content-Type", "application/xml") - w.WriteHeader(500) - fmt.Fprintln(w, ` -bonus -bingo -the bad thing -woo woo -woo woo -`) - }, - )) - defer server.Close() - - client := aws.RestClient{ - Context: aws.Context{ - Service: "animals", - Region: "us-west-2", - Credentials: aws.Creds( - "accessKeyID", - "secretAccessKey", - "securityToken", - ), - }, - Client: http.DefaultClient, - } - - req, err := http.NewRequest("GET", server.URL+"/yay", nil) - if err != nil { - t.Fatal(err) - } - - _, err = client.Do(req) - if err == nil { - t.Fatal("Expected an error but none was returned") - } - - if err, ok := err.(aws.APIError); ok { - if v, want := err.Code, "bonus"; v != want { - t.Errorf("Error code was %v, but expected %v", v, want) - } - - if v, want := err.Message, "the bad thing"; v != want { - t.Errorf("Error message was %v, but expected %v", v, want) - } - } else { - t.Errorf("Unknown error returned: %#v", err) - } -} - -func TestRestRequestJSONError(t *testing.T) { - var m sync.Mutex - var httpReq *http.Request - - server := httptest.NewServer(http.HandlerFunc( - func(w http.ResponseWriter, r *http.Request) { - m.Lock() - defer m.Unlock() - - httpReq = r - - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(500) - fmt.Fprintln(w, `{"Code":"bonus", "Message":"the bad thing"}`) - }, - )) - defer server.Close() - - client := aws.RestClient{ - Context: aws.Context{ - Service: "animals", - Region: "us-west-2", - Credentials: aws.Creds( - "accessKeyID", - "secretAccessKey", - "securityToken", - ), - }, - Client: http.DefaultClient, - } - - req, err := http.NewRequest("GET", server.URL+"/yay", nil) - if err != nil { - t.Fatal(err) - } - - _, err = client.Do(req) - if err == nil { - t.Fatal("Expected an error but none was returned") - } - - if err, ok := err.(aws.APIError); ok { - if v, want := err.Code, "bonus"; v != want { - t.Errorf("Error code was %v, but expected %v", v, want) - } - - if v, want := err.Message, "the bad thing"; v != want { - t.Errorf("Error message was %v, but expected %v", v, want) - } - } else { - t.Errorf("Unknown error returned: %#v", err) - } -} - -func TestEscapePath(t *testing.T) { - for _, x := range []struct { - in string - want string - }{ - {"", ""}, - {"ABCDEFGHIJKLMNOPQRTSUVWXYZ", "ABCDEFGHIJKLMNOPQRTSUVWXYZ"}, - {"abcdefghijklmnopqrtsuvwxyz", "abcdefghijklmnopqrtsuvwxyz"}, - {"0123456789", "0123456789"}, - {"_-~./:", "_-~./:"}, - {"test? file", "test%3F%20file"}, - {`hello? sausage/êé/Hello, 世界/ " ' @ < > & ?/z.txt`, "hello%3F%20sausage/%C3%AA%C3%A9/Hello%2C%20%E4%B8%96%E7%95%8C/%20%22%20%27%20%40%20%3C%20%3E%20%26%20%3F/z.txt"}, - } { - got := aws.EscapePath(x.in) - if got != x.want { - t.Errorf("EscapePath(%q) got %q, want %v", x.in, got, x.want) - } - } -} diff --git a/src/github.com/getlantern/aws-sdk-go/aws/types.go b/src/github.com/getlantern/aws-sdk-go/aws/types.go deleted file mode 100644 index b58096f85b..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/aws/types.go +++ /dev/null @@ -1,94 +0,0 @@ -package aws - -import ( - "math" - "strconv" - "time" -) - -// A StringValue is a string which may or may not be present. -type StringValue *string - -// String converts a Go string into a StringValue. -func String(v string) StringValue { - return &v -} - -// A BooleanValue is a boolean which may or may not be present. -type BooleanValue *bool - -// Boolean converts a Go bool into a BooleanValue. -func Boolean(v bool) BooleanValue { - return &v -} - -// True is the BooleanValue equivalent of the Go literal true. -func True() BooleanValue { - return Boolean(true) -} - -// False is the BooleanValue equivalent of the Go literal false. -func False() BooleanValue { - return Boolean(false) -} - -// An IntegerValue is an integer which may or may not be present. -type IntegerValue *int - -// Integer converts a Go int into an IntegerValue. -func Integer(v int) IntegerValue { - return &v -} - -// A LongValue is a 64-bit integer which may or may not be present. -type LongValue *int64 - -// Long converts a Go int64 into a LongValue. -func Long(v int64) LongValue { - return &v -} - -// A FloatValue is a 32-bit floating point number which may or may not be -// present. -type FloatValue *float32 - -// Float converts a Go float32 into a FloatValue. -func Float(v float32) FloatValue { - return &v -} - -// A DoubleValue is a 64-bit floating point number which may or may not be -// present. -type DoubleValue *float64 - -// Double converts a Go float64 into a DoubleValue. -func Double(v float64) DoubleValue { - return &v -} - -// A UnixTimestamp is a Unix timestamp represented as fractional seconds since -// the Unix epoch. -type UnixTimestamp struct { - Time time.Time -} - -// MarshalJSON marshals the timestamp as a float. -func (t UnixTimestamp) MarshalJSON() (text []byte, err error) { - n := float64(t.Time.UnixNano()) / 1e9 - s := strconv.FormatFloat(n, 'f', -1, 64) - return []byte(s), nil -} - -// UnmarshalJSON unmarshals the timestamp from a float. -func (t *UnixTimestamp) UnmarshalJSON(text []byte) error { - f, err := strconv.ParseFloat(string(text), 64) - if err != nil { - return err - } - - sec := math.Floor(f) - nsec := (f - sec) * 1e9 - - t.Time = time.Unix(int64(sec), int64(nsec)).UTC() - return nil -} diff --git a/src/github.com/getlantern/aws-sdk-go/aws/types_test.go b/src/github.com/getlantern/aws-sdk-go/aws/types_test.go deleted file mode 100644 index 0f1dea40e8..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/aws/types_test.go +++ /dev/null @@ -1,33 +0,0 @@ -package aws_test - -import ( - "encoding/json" - "testing" - "time" - - "github.com/awslabs/aws-sdk-go/aws" -) - -func TestUnixTimestampSerialization(t *testing.T) { - d := time.Date(2014, 12, 20, 14, 55, 30, 500000000, time.UTC) - ts := aws.UnixTimestamp{Time: d} - out, err := json.Marshal(ts) - if err != nil { - t.Fatal(err) - } - - if v, want := string(out), `1419087330.5`; v != want { - t.Errorf("Was %q but expected %q", v, want) - } -} - -func TestUnixTimestampDeserialization(t *testing.T) { - var ts aws.UnixTimestamp - if err := json.Unmarshal([]byte(`1419087330.5`), &ts); err != nil { - t.Fatal(err) - } - - if v, want := ts.Time.Format(time.RFC3339Nano), "2014-12-20T14:55:30.5Z"; v != want { - t.Errorf("Was %s but expected %s", v, want) - } -} diff --git a/src/github.com/getlantern/aws-sdk-go/aws/v4.go b/src/github.com/getlantern/aws-sdk-go/aws/v4.go deleted file mode 100644 index c0ac0abeeb..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/aws/v4.go +++ /dev/null @@ -1,249 +0,0 @@ -package aws - -import ( - "bytes" - "crypto/hmac" - "crypto/sha256" - "fmt" - "io" - "io/ioutil" - "net/http" - "sort" - "strconv" - "strings" - "time" -) - -const ( - authHeaderPrefix = "AWS4-HMAC-SHA256" - timeFormat = "20060102T150405Z" - shortTimeFormat = "20060102" -) - -func (c *Context) sign(r *http.Request) error { - creds, err := c.Credentials.Credentials() - if err != nil { - return err - } - - date := r.Header.Get("Date") - t := currentTime().UTC() - if date != "" { - var err error - t, err = time.Parse(http.TimeFormat, date) - if err != nil { - return err - } - } - - s := signer{ - Request: r, - Time: t, - Body: r.Body, - ServiceName: c.Service, - Region: c.Region, - AccessKeyID: creds.AccessKeyID, - SecretAccessKey: creds.SecretAccessKey, - SessionToken: creds.SecurityToken, - Debug: 0, - } - s.sign() - return nil -} - -type signer struct { - Request *http.Request - Time time.Time - ServiceName string - Region string - AccessKeyID string - SecretAccessKey string - SessionToken string - Body io.Reader - Debug uint - - formattedTime string - formattedShortTime string - - signedHeaders string - canonicalHeaders string - canonicalString string - credentialString string - stringToSign string - signature string - authorization string -} - -func (v4 *signer) sign() { - formatted := v4.Time.UTC().Format(timeFormat) - - // remove the old headers - v4.Request.Header.Del("Date") - v4.Request.Header.Del("Authorization") - - if v4.SessionToken != "" { - v4.Request.Header.Set("X-Amz-Security-Token", v4.SessionToken) - } - - v4.build() - - //v4.Debug = true - if v4.Debug > 0 { - fmt.Printf("---[ CANONICAL STRING ]-----------------------------\n") - fmt.Printf("%s\n", v4.canonicalString) - fmt.Printf("-----------------------------------------------------\n\n") - fmt.Printf("---[ STRING TO SIGN ]--------------------------------\n") - fmt.Printf("%s\n", v4.stringToSign) - fmt.Printf("-----------------------------------------------------\n") - } - - // add the new ones - v4.Request.Header.Set("Date", formatted) - v4.Request.Header.Set("Authorization", v4.authorization) -} - -func (v4 *signer) build() { - v4.buildTime() - v4.buildCanonicalHeaders() - v4.buildCredentialString() - v4.buildCanonicalString() - v4.buildStringToSign() - v4.buildSignature() - v4.buildAuthorization() -} - -func (v4 *signer) buildTime() { - v4.formattedTime = v4.Time.UTC().Format(timeFormat) - v4.formattedShortTime = v4.Time.UTC().Format(shortTimeFormat) -} - -func (v4 *signer) buildAuthorization() { - v4.authorization = strings.Join([]string{ - authHeaderPrefix + " Credential=" + v4.AccessKeyID + "/" + v4.credentialString, - "SignedHeaders=" + v4.signedHeaders, - "Signature=" + v4.signature, - }, ",") -} - -func (v4 *signer) buildCredentialString() { - v4.credentialString = strings.Join([]string{ - v4.formattedShortTime, - v4.Region, - v4.ServiceName, - "aws4_request", - }, "/") -} - -func (v4 *signer) buildCanonicalHeaders() { - headers := make([]string, 0) - headers = append(headers, "host") - for k, _ := range v4.Request.Header { - if http.CanonicalHeaderKey(k) == "Content-Length" { - continue // never sign content-length - } - headers = append(headers, strings.ToLower(k)) - } - sort.Strings(headers) - - headerValues := make([]string, len(headers)) - for i, k := range headers { - if k == "host" { - headerValues[i] = "host:" + v4.Request.URL.Host - } else { - headerValues[i] = k + ":" + - strings.Join(v4.Request.Header[http.CanonicalHeaderKey(k)], ",") - } - } - - v4.signedHeaders = strings.Join(headers, ";") - v4.canonicalHeaders = strings.Join(headerValues, "\n") -} - -func (v4 *signer) buildCanonicalString() { - v4.canonicalString = strings.Join([]string{ - v4.Request.Method, - v4.Request.URL.Path, - v4.Request.URL.Query().Encode(), - v4.canonicalHeaders + "\n", - v4.signedHeaders, - v4.bodyDigest(), - }, "\n") -} - -func (v4 *signer) buildStringToSign() { - v4.stringToSign = strings.Join([]string{ - authHeaderPrefix, - v4.formattedTime, - v4.credentialString, - hexDigest(makeSha256([]byte(v4.canonicalString))), - }, "\n") -} - -func (v4 *signer) buildSignature() { - secret := v4.SecretAccessKey - date := makeHmac([]byte("AWS4"+secret), []byte(v4.formattedShortTime)) - region := makeHmac(date, []byte(v4.Region)) - service := makeHmac(region, []byte(v4.ServiceName)) - credentials := makeHmac(service, []byte("aws4_request")) - signature := makeHmac(credentials, []byte(v4.stringToSign)) - v4.signature = hexDigest(signature) -} - -func (v4 *signer) bodyDigest() string { - hash := v4.Request.Header.Get("X-Amz-Content-Sha256") - if hash == "" { - if v4.Body == nil { - hash = hexDigest(makeSha256([]byte{})) - } else { - // TODO refactor body to support seeking body payloads - b, _ := ioutil.ReadAll(v4.Body) - hash = hexDigest(makeSha256(b)) - v4.Request.Body = ioutil.NopCloser(bytes.NewReader(b)) - } - v4.Request.Header.Add("X-Amz-Content-Sha256", hash) - } - return hash -} - -func makeHmac(key []byte, data []byte) []byte { - hash := hmac.New(sha256.New, key) - hash.Write(data) - return hash.Sum(nil) -} - -func makeSha256(data []byte) []byte { - hash := sha256.New() - hash.Write(data) - return hash.Sum(nil) -} - -func makeSha256Reader(reader io.Reader) []byte { - packet := make([]byte, 4096) - hash := sha256.New() - - //reader.Seek(0, 0) - for { - n, err := reader.Read(packet) - if n > 0 { - hash.Write(packet[0:n]) - } - if err == io.EOF || n == 0 { - break - } - } - //reader.Seek(0, 0) - - return hash.Sum(nil) -} - -func hexDigest(data []byte) string { - var buffer bytes.Buffer - for i := range data { - str := strconv.FormatUint(uint64(data[i]), 16) - if len(str) < 2 { - buffer.WriteString("0") - } - buffer.WriteString(str) - } - return buffer.String() -} diff --git a/src/github.com/getlantern/aws-sdk-go/aws/v4_test.go b/src/github.com/getlantern/aws-sdk-go/aws/v4_test.go deleted file mode 100644 index 29ef08a339..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/aws/v4_test.go +++ /dev/null @@ -1,64 +0,0 @@ -package aws - -import ( - "net/http" - "strings" - "testing" - "time" -) - -func buildSigner(serviceName string, region string, signTime time.Time, body string) signer { - endpoint := "https://" + serviceName + "." + region + ".amazonaws.com" - reader := strings.NewReader(body) - req, _ := http.NewRequest("POST", endpoint, reader) - req.Header.Add("X-Amz-Target", "prefix.Operation") - req.Header.Add("Content-Type", "application/x-amz-json-1.0") - req.Header.Add("Content-Length", string(len(body))) - - return signer{ - Request: req, - Time: signTime, - Body: reader, - ServiceName: serviceName, - Region: region, - AccessKeyID: "AKID", - SecretAccessKey: "SECRET", - SessionToken: "SESSION", - } -} - -func removeWS(text string) string { - text = strings.Replace(text, " ", "", -1) - text = strings.Replace(text, "\n", "", -1) - text = strings.Replace(text, "\t", "", -1) - return text -} - -func assertEqual(t *testing.T, expected, given string) { - if removeWS(expected) != removeWS(given) { - t.Errorf("\nExpected: %s\nGiven: %s", expected, given) - } -} - -func TestSignRequest(t *testing.T) { - signer := buildSigner("dynamodb", "us-east-1", time.Unix(0, 0), "{}") - signer.sign() - - expectedDate := "19700101T000000Z" - expectedAuth := ` - AWS4-HMAC-SHA256 - Credential=AKID/19700101/us-east-1/dynamodb/aws4_request, - SignedHeaders=content-type;host;x-amz-security-token;x-amz-target, - Signature=4662104789134800e088b6a2bf3a1153ca7d38ecfc07a69bff2859f04900b67f - ` - - assertEqual(t, expectedAuth, signer.Request.Header.Get("Authorization")) - assertEqual(t, expectedDate, signer.Request.Header.Get("Date")) -} - -func BenchmarkSignRequest(b *testing.B) { - signer := buildSigner("dynamodb", "us-east-1", time.Now(), "{}") - for i := 0; i < b.N; i++ { - signer.sign() - } -} diff --git a/src/github.com/getlantern/aws-sdk-go/aws/xml.go b/src/github.com/getlantern/aws-sdk-go/aws/xml.go deleted file mode 100644 index a919407fc4..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/aws/xml.go +++ /dev/null @@ -1,178 +0,0 @@ -package aws - -import ( - "encoding/xml" - "reflect" - "strings" -) - -// MarshalXML is a weird and stunted version of xml.Marshal which is used by the -// REST-XML request types to get around a bug in encoding/xml which doesn't -// allow us to marshal pointers to zero values: -// -// https://github.com/golang/go/issues/5452 -func MarshalXML(v interface{}, e *xml.Encoder, start xml.StartElement) error { - value := reflect.ValueOf(v) - t := value.Type() - switch value.Kind() { - case reflect.Ptr: - if !value.IsNil() { - return MarshalXML(value.Elem().Interface(), e, start) - } - case reflect.Struct: - var rootInfo xmlFieldInfo - - // detect xml.Name, if any - for i := 0; i < value.NumField(); i++ { - f := t.Field(i) - v := value.Field(i) - if f.Type == xmlName { - rootInfo = parseXMLTag(f.Tag.Get("xml")) - if rootInfo.name == "" { - // name not in tag, try value - name := v.Interface().(xml.Name) - rootInfo = xmlFieldInfo{ - name: name.Local, - ns: name.Space, - } - } - } - } - - for _, start := range rootInfo.start(t.Name()) { - if err := e.EncodeToken(start); err != nil { - return err - } - } - - for i := 0; i < value.NumField(); i++ { - ft := value.Type().Field(i) - - if ft.Type == xmlName { - continue - } - - fv := value.Field(i) - fi := parseXMLTag(ft.Tag.Get("xml")) - - if fi.name == "-" { - continue - } - - if fi.omit { - switch fv.Kind() { - case reflect.Ptr: - if fv.IsNil() { - continue - } - case reflect.Slice, reflect.Map: - if fv.Len() == 0 { - continue - } - default: - if !fv.IsValid() { - continue - } - } - } - - starts := fi.start(ft.Name) - for _, start := range starts[:len(starts)-1] { - if err := e.EncodeToken(start); err != nil { - return err - } - } - - start := starts[len(starts)-1] - if err := e.EncodeElement(fv.Interface(), start); err != nil { - return err - } - - for _, end := range fi.end(ft.Name)[1:] { - if err := e.EncodeToken(end); err != nil { - return err - } - } - } - - for _, end := range rootInfo.end(t.Name()) { - if err := e.EncodeToken(end); err != nil { - return err - } - } - default: - return e.Encode(v) - } - return nil -} - -var xmlName = reflect.TypeOf(xml.Name{}) - -type xmlFieldInfo struct { - name string - ns string - omit bool -} - -func (fi xmlFieldInfo) start(name string) []xml.StartElement { - if fi.name != "" { - name = fi.name - } - - var elements []xml.StartElement - for _, part := range strings.Split(name, ">") { - elements = append(elements, xml.StartElement{ - Name: xml.Name{ - Local: part, - Space: fi.ns, - }, - }) - } - return elements -} - -func (fi xmlFieldInfo) end(name string) []xml.EndElement { - if fi.name != "" { - name = fi.name - } - - var elements []xml.EndElement - parts := strings.Split(name, ">") - for i := range parts { - part := parts[len(parts)-i-1] - elements = append(elements, xml.EndElement{ - Name: xml.Name{ - Local: part, - Space: fi.ns, - }, - }) - } - return elements -} - -func parseXMLTag(t string) xmlFieldInfo { - parts := strings.Split(t, ",") - - var omit bool - for _, p := range parts { - omit = omit || p == "omitempty" - } - - var name, ns string - if len(parts) > 0 { - nameParts := strings.Split(parts[0], " ") - if len(nameParts) == 2 { - name = nameParts[1] - ns = nameParts[0] - } else if len(nameParts) == 1 { - name = nameParts[0] - } - - } - - return xmlFieldInfo{ - name: name, - ns: ns, - omit: omit, - } -} diff --git a/src/github.com/getlantern/aws-sdk-go/aws/xml_test.go b/src/github.com/getlantern/aws-sdk-go/aws/xml_test.go deleted file mode 100644 index 33adbc618e..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/aws/xml_test.go +++ /dev/null @@ -1,35 +0,0 @@ -package aws_test - -import ( - "encoding/xml" - "testing" - - "github.com/awslabs/aws-sdk-go/aws" -) - -type XMLRequest struct { - XMLName xml.Name `xml:"http://whatever Request"` - - Integer aws.IntegerValue `xml:",omitempty"` - DangerZone string `xml:"-"` -} - -func (r *XMLRequest) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(r, e, start) -} - -func TestMarshalingXML(t *testing.T) { - r := &XMLRequest{ - Integer: aws.Integer(0), - DangerZone: "a zone of danger", - } - - out, err := xml.Marshal(r) - if err != nil { - t.Fatal(err) - } - - if v, want := string(out), `0`; v != want { - t.Errorf("XML was \n%s\n but expected \n%s", v, want) - } -} diff --git a/src/github.com/getlantern/aws-sdk-go/cfn/autoscaling.go b/src/github.com/getlantern/aws-sdk-go/cfn/autoscaling.go deleted file mode 100644 index e82655598f..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/cfn/autoscaling.go +++ /dev/null @@ -1,114 +0,0 @@ -package cfn - -import "time" - -// An AutoScalingGroup resource creates an Auto Scaling group. -type AutoScalingGroup struct { - AvailabilityZones interface{} - Cooldown string `json:",omitempty"` - DesiredCapacity int `json:",omitempty"` - HealthCheckGracePeriod int `json:",omitempty"` - HealthCheckType string `json:",omitempty"` - InstanceID string `json:"InstanceId,omitempty"` - LaunchConfigurationName interface{} `json:",omitempty"` - LoadBalancerNames []string `json:",omitempty"` - MaxSize int - MetricsCollection []MetricsCollection `json:",omitempty"` - MinSize int - NotificationConfiguration *NotificationConfiguration `json:",omitempty"` - PlacementGroup string `json:",omitempty"` - Tags []AutoScalingTag `json:",omitempty"` - TerminationPolicies []string `json:",omitempty"` - VPCZoneIdentifier []string `json:",omitempty"` -} - -// The NotificationConfiguration property is an embedded property of the -// AWS::AutoScaling::AutoScalingGroup resource that specifies the events for -// which the Auto Scaling group sends notifications. -type NotificationConfiguration struct { - NotificationTypes string - TopicARN []string -} - -// The MetricsCollection is a property of the AutoScalingGroup resource that -// describes the group metrics that an Auto Scaling group sends to CloudWatch. -type MetricsCollection struct { - Granularity string - Metrics []string `json:",omitempty"` -} - -// An AutoScalingTag is like a regular tag, but can propagate to ASG instances -// when they launch. -type AutoScalingTag struct { - Key string - Value string - PropagateAtLaunch bool -} - -// The LaunchConfiguration resource creates an Auto Scaling launch configuration -// that can be used by an Auto Scaling group to configure Amazon EC2 instances -// in the Auto Scaling group. -type LaunchConfiguration struct { - AssociatePublicIPAddress bool `json:"AssociatePublicIpAddress,omitempty"` - BlockDeviceMappings []BlockDeviceMapping `json:",omitempty"` - EBSOptimized bool `json:"EbsOptimized,omitempty"` - IAMInstanceProfile string `json:"IamInstanceProfile,omitempty"` - ImageID string `json:"ImageId"` - InstanceID string `json:"InstanceId,omitempty"` - InstanceMonitoring *bool `json:",omitempty"` - InstanceType string - KernelID string `json:"KernelId,omitempty"` - KeyName string `json:",omitempty"` - RAMDiskID string `json:"RamDiskId,omitempty"` - SecurityGroups interface{} `json:",omitempty"` - SpotPrice string `json:",omitempty"` - UserData []byte `json:",omitempty"` -} - -// The BlockDeviceMapping type is an embedded property of the -// LaunchConfiguration type. -type BlockDeviceMapping struct { - DeviceName string - EBS *EBSBlockDevice `json:"Ebs,omitempty"` - NoDevice bool `json:",omitempty"` - VirtualName string `json:",omitempty"` -} - -// The EBSBlockDevice type is an embedded property of the AutoScaling Block -// Device Mapping type. -type EBSBlockDevice struct { - DeleteOnTermination bool `json:",omitempty"` - IOPS int `json:",omitempty"` - SnapshotID string `json:"SnapshotId,omitempty"` - VolumeSize int `json:",omitempty"` - VolumeType string `json:",omitempty"` -} - -// Possible values for ScalingPolicy's AdjustmentType. -const ( - ChangeInCapacityAdjustment = "ChangeInCapacity" - ExactCapacityAdjustment = "ExactCapacity" - PercentChangeInCapacityAdjustment = "PercentChangeInCapacity" -) - -// A ScalingPolicy specifies whether to scale the auto scaling group up or down, -// and by how much. -type ScalingPolicy struct { - AdjustmentType string - AutoScalingGroupName interface{} - Cooldown string `json:",omitempty"` - ScalingAdjustment string -} - -// ScheduledAction creates a scheduled scaling action for an Auto Scaling group, -// changing the number of servers available for your application in response to -// predictable load changes. -type ScheduledAction struct { - AutoScalingGroupName interface{} - DesiredCapacity int `json:",omitempty"` - EndTime time.Time `json:",omitempty"` - MaxSize int `json:",omitempty"` - MinSize int `json:",omitempty"` - Recurrence time.Time `json:",omitempty"` - StartTime time.Time `json:",omitempty"` -} diff --git a/src/github.com/getlantern/aws-sdk-go/cfn/cfn.go b/src/github.com/getlantern/aws-sdk-go/cfn/cfn.go deleted file mode 100644 index 275a38e901..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/cfn/cfn.go +++ /dev/null @@ -1,117 +0,0 @@ -// Package cfn provides functionality for creating AWS CloudFormation templates. -package cfn - -// Version is the version of the CloudFormation templates supported by this -// package. -const Version = "2010-09-09" - -// A Parameter is a value which can be passed into a template. -type Parameter struct { - Type string - Default string `json:",omitempty"` - NoEcho bool `json:",omitempty"` - AllowedValues []interface{} `json:",omitempty"` - AllowedPattern string `json:",omitempty"` - MaxLength int `json:",omitempty"` - MinLength int `json:",omitempty"` - MaxValue interface{} `json:",omitempty"` - MinValue interface{} `json:",omitempty"` - Description string `json:",omitempty"` -} - -// A Template describes a set of AWS resources which belong to a stack. -type Template struct { - AWSTemplateFormatVersion string `json:",omitempty"` - Description string `json:",omitempty"` - Parameters map[string]Parameter `json:",omitempty"` - Mappings map[string]interface{} `json:",omitempty"` - Conditions map[string]interface{} `json:",omitempty"` - Resources Resources `json:",omitempty"` - Outputs map[string]Output `json:",omitempty"` -} - -// Resources is a set of named resources. -type Resources map[string]Resource - -// An Output is a value based on the resources in a stack. -type Output struct { - Value interface{} - Description string `json:",omitempty"` -} - -// A Resource is an AWS resource. -type Resource struct { - Type string - CreationPolicy *CreationPolicy `json:",omitempty"` - DeletionPolicy DeletionPolicy `json:",omitempty"` - DependsOn []interface{} `json:",omitempty"` - Metadata interface{} `json:",omitempty"` - Properties interface{} - UpdatePolicy *UpdatePolicy `json:",omitempty"` -} - -// A CreationPolicy is associated 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. -type CreationPolicy struct { - ResouceSignal *ResourceSignal `json:",omitempty"` -} - -// A ResourceSignal determines how many signals are required by a CreationPolicy. -type ResourceSignal struct { - Count int `json:",omitempty"` - Timeout string `json:",omitempty"` -} - -// A DeletionPolicy dictates what is to be done with a resource when it is -// deleted. -type DeletionPolicy string - -const ( - // Delete is the default deletion policy, and will simply delete the - // resource in question. - Delete DeletionPolicy = "Delete" - // Retain will not delete the resource in question. - Retain DeletionPolicy = "Retain" - // Snapshot will create a snapshot of the resource and then delete it. (Not - // available for all resource types.) - Snapshot DeletionPolicy = "Snapshot" -) - -// An UpdatePolicy dictates how a resource should be updated. -type UpdatePolicy struct { - AutoScalingRollingUpdate *AutoScalingRollingUpdate `json:",omitempty"` - AutoScalingScheduledAction *AutoScalingScheduledAction `json:",omitempty"` -} - -// An AutoScalingRollingUpdate policy specifies how AWS CloudFormation handles -// rolling updates for a particular resource. -type AutoScalingRollingUpdate struct { - MaxBatchSize string `json:",omitempty"` - MinInstancesInService string `json:",omitempty"` - PauseTime string `json:",omitempty"` - SuspendProcesses []interface{} `json:",omitempty"` - WaitOnResourceSignals bool `json:",omitempty"` -} - -// An AutoScalingScheduledAction policy describes how AWS CloudFormation handles -// updates for the MinSize, MaxSize, and DesiredCapacity properties if an -// autoscaling group has an associated scheduled action. -type AutoScalingScheduledAction struct { - IgnoreUnmodifiedGroupSizeProperties bool `json:",omitempty"` -} - -// A Tag is a key and value pair. -type Tag struct { - Key interface{} - Value interface{} -} - -// NewTemplate returns a new, blank template with the given description. -func NewTemplate(desc string) *Template { - return &Template{ - AWSTemplateFormatVersion: Version, - Description: desc, - Resources: map[string]Resource{}, - } -} diff --git a/src/github.com/getlantern/aws-sdk-go/cfn/cloudtrail.go b/src/github.com/getlantern/aws-sdk-go/cfn/cloudtrail.go deleted file mode 100644 index 741323c627..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/cfn/cloudtrail.go +++ /dev/null @@ -1,12 +0,0 @@ -package cfn - -// The CloudTrail resource creates a trail and specifies where logs are -// published. A CloudTrail trail can capture AWS API calls made by your AWS -// account and publishes the logs to an Amazon S3 bucket. -type CloudTrail struct { - IncludeGlobalServiceEvents bool `json:",omitempty"` - IsLogging bool - S3BucketName interface{} - S3KeyPrefix interface{} `json:",omitempty"` - SNSTopicName interface{} `json:"SnsTopicName,omitempty"` -} diff --git a/src/github.com/getlantern/aws-sdk-go/cfn/cloudwatch.go b/src/github.com/getlantern/aws-sdk-go/cfn/cloudwatch.go deleted file mode 100644 index 648338e5ed..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/cfn/cloudwatch.go +++ /dev/null @@ -1,28 +0,0 @@ -package cfn - -// An Alarm resource creates an CloudWatch alarm. -type Alarm struct { - ActionsEnabled interface{} `json:",omitempty"` - AlarmActions []string `json:",omitempty"` - AlarmDescription string `json:",omitempty"` - AlarmName string `json:",omitempty"` - ComparisonOperator string - Dimensions []MetricDimension `json:",omitempty"` - EvaluationPeriods string - InsufficientDataActions []string `json:",omitempty"` - MetricName string - Namespace string - OKActions []string `json:",omitempty"` - Period string - Statistic string - Threshold string - Unit string `json:",omitempty"` -} - -// The MetricDimension is an embedded property of the AWS::CloudWatch::Alarm -// type. Dimensions are arbitrary name/value pairs that can be associated with a -// CloudWatch metric. -type MetricDimension struct { - Name string - Value interface{} -} diff --git a/src/github.com/getlantern/aws-sdk-go/cfn/dynamodb.go b/src/github.com/getlantern/aws-sdk-go/cfn/dynamodb.go deleted file mode 100644 index 9b578b05c4..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/cfn/dynamodb.go +++ /dev/null @@ -1,71 +0,0 @@ -package cfn - -// A DynamoDBTable creates a DynamoDB table. -type DynamoDBTable struct { - AttributeDefinitions []AttributeDefinition - GlobalSecondaryIndexes []GlobalSecondaryIndex `json:",omitempty"` - KeySchema []KeySchema - LocalSecondaryIndexes []LocalSecondaryIndex `json:",omitempty"` - ProvisionedThroughput ProvisionedThroughput - TableName string `json:",omitempty"` -} - -// An AttributeDefinition defines an attribute of a DynamoDBTable. -type AttributeDefinition struct { - AttributeName string - AttributeType string -} - -// A GlobalSecondaryIndex describes a global secondary index for the -// DynamoDBTable resource. -type GlobalSecondaryIndex struct { - IndexName string - KeySchema []KeySchema - Projection Projection - ProvisionedThroughput ProvisionedThroughput -} - -// LocalSecondaryIndex describes local secondary indexes for the DynamoDBTable -// resource. Each index is scoped to a given hash key value. Tables with one or -// more local secondary indexes are subject to an item collection size limit, -// where the amount of data within a given item collection cannot exceed 10 GB. -type LocalSecondaryIndex struct { - IndexName string - KeySchema []KeySchema - Projection Projection -} - -// Possible values for KeySchema's KeyType field. -const ( - KeyTypeHash = "HASH" - KeyTypeRange = "RANGE" -) - -// KeySchema describes a primary key for the DynamoDBTable resource or a key -// schema for an index. -type KeySchema struct { - AttributeName string - KeyType string -} - -// Possible values for Projection's ProjectionType field. -const ( - ProjectionTypeKeysOnly = "KEYS_ONLY" - ProjectionTypeInclude = "INCLUDE" - ProjectionTypeAll = "ALL" -) - -// A Projection defines attributes that are copied (projected) from the source -// table into the index. These attributes are additions to the primary key -// attributes and index key attributes, which are automatically projected. -type Projection struct { - NonKeyAttributes []string `json:",omitempty"` - ProjectionType string -} - -// ProvisionedThroughput describes a set of provisioned throughput values for a -// DynamoDBTable resource. -type ProvisionedThroughput struct { - ReadCapacityUnits int - WriteCapacityUnits int -} diff --git a/src/github.com/getlantern/aws-sdk-go/cfn/ec2.go b/src/github.com/getlantern/aws-sdk-go/cfn/ec2.go deleted file mode 100644 index 5d6a641c54..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/cfn/ec2.go +++ /dev/null @@ -1,73 +0,0 @@ -package cfn - -// An InternetGateway is a VPC internet gateway. -type InternetGateway struct { - Tags []Tag `json:",omitempty"` -} - -// A Route is an entry in a route table. -type Route struct { - DestinationCIDRBlock string `json:"DestinationCidrBlock"` - GatewayID interface{} `json:"GatewayId,omitempty"` - InstanceID interface{} `json:"InstanceId,omitempty"` - NetworkInterfaceID interface{} `json:"NetworkInterfaceId,omitempty"` - RouteTableID interface{} `json:"RouteTableId,omitempty"` - VPCPeeringConnectionID interface{} `json:"VpcPeeringConnectionId,omitempty"` -} - -// A RouteTable is a table of routes. -type RouteTable struct { - VPCID interface{} `json:"VpcId,omitempty"` - Tags []Tag `json:"Tags,omitempty"` -} - -// A SecurityGroup determines which instances can communicate with each other. -type SecurityGroup struct { - GroupDescription interface{} - SecurityGroupEgress []SecurityGroupRule `json:",omitempty"` - SecurityGroupIngress []SecurityGroupRule `json:",omitempty"` - Tags []Tag `json:",omitempty"` - VPCID interface{} `json:"VpcId"` -} - -// A SecurityGroupRule is a rule in a security group. -type SecurityGroupRule struct { - CIDRIP interface{} `json:"CidrIp,omitempty"` - DestinationSecurityGroupID interface{} `json:"DestinationSecurityGroupId,omitempty"` - FromPort int - IPProtocol interface{} `json:"IpProtocol"` - SourceSecurityGroupID interface{} `json:"SourceSecurityGroupId,omitempty"` - SourceSecurityGroupName string `json:",omitempty"` - SourceSecurityGroupOwnerID interface{} `json:"SourceSecurityGroupOwnerId,omitempty"` - ToPort int -} - -// A Subnet is an IP subnet in a VPC. -type Subnet struct { - AvailabilityZone string `json:"AvailabilityZone,omitempty"` - CIDRBlock string `json:"CidrBlock,omitempty"` - Tags []Tag `json:"Tags,omitempty"` - VPCID interface{} `json:"VpcId,omitempty"` -} - -// A SubnetRouteTableAssociation associates a route table with a subnet. -type SubnetRouteTableAssociation struct { - RouteTableID interface{} `json:"RouteTableId,omitempty"` - SubnetID interface{} `json:"SubnetId,omitempty"` -} - -// A VPC is a virtual private cloud. -type VPC struct { - CIDRBlock string `json:"CidrBlock"` - EnableDNSSupport bool `json:"EnableDnsSupport,omitempty"` - EnableDNSHostnames bool `json:"EnableDnsHostnames,omitempty"` - InstanceTenancy string `json:"InstanceTenancy,omitempty"` - Tags []Tag `json:"Tags,omitempty"` -} - -// A VPCGatewayAttachment attaches an internet gateway to a VPC. -type VPCGatewayAttachment struct { - InternetGatewayID interface{} `json:"InternetGatewayId,omitempty"` - VPCID interface{} `json:"VpcId,omitempty"` - VPNGatewayID string `json:"VpnGatewayId,omitempty"` -} diff --git a/src/github.com/getlantern/aws-sdk-go/cfn/elb.go b/src/github.com/getlantern/aws-sdk-go/cfn/elb.go deleted file mode 100644 index 0d0ec8c27b..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/cfn/elb.go +++ /dev/null @@ -1,69 +0,0 @@ -package cfn - -// A LoadBalancer is an EC2 Elastic LoadBalancer (ELB). -type LoadBalancer struct { - Name string `json:"LoadBalancerName"` - AvailabilityZones []string `json:",omitempty"` - CrossZone bool - Scheme string `json:",omitempty"` - Subnets []string `json:",omitempty"` - SecurityGroups []interface{} `json:",omitempty"` - AccessLoggingPolicy *AccessLoggingPolicy `json:",omitempty"` - ConnectionDrainingPolicy *ConnectionDrainingPolicy `json:",omitempty"` - HealthCheck *HealthCheck `json:",omitempty"` - Listeners []Listener `json:",omitempty"` - Policies []LoadBalancerPolicy `json:",omitempty"` - Tags []Tag `json:",omitempty"` -} - -// A HealthCheck determines if an instance registered with a load balancer is -// healthy. -type HealthCheck struct { - HealthyThreshold interface{} `json:",omitempty"` - Interval interface{} `json:",omitempty"` - Target interface{} `json:",omitempty"` - Timeout interface{} `json:",omitempty"` - UnhealthyThreshold interface{} `json:",omitempty"` -} - -// A Listener accepts connections for a load balancer and routes them to an -// instance port. -type Listener struct { - InstancePort interface{} `json:",omitempty"` - LoadBalancerPort interface{} `json:",omitempty"` - Protocol interface{} `json:",omitempty"` - InstanceProtocol interface{} `json:",omitempty"` - SSLCertificateID interface{} `json:",omitempty"` - PolicyNames []interface{} `json:",omitempty"` -} - -// An AccessLoggingPolicy configures how the load balancer logs requests. -type AccessLoggingPolicy struct { - LogEveryNMinutes int `json:"EmitInterval,omitempty"` - Enabled bool - S3BucketName string - S3BucketPrefix string -} - -// A ConnectionDrainingPolicy configures how long the load balancer will wait -// before removing an instance from rotation. -type ConnectionDrainingPolicy struct { - Enabled bool - TimeoutSeconds int `json:"Timeout,omitempty"` -} - -// A LoadBalancerPolicy configures some other arbitrary bits of load balancer -// behavior, like proxy protocol support and TLS config. -type LoadBalancerPolicy struct { - Name string `json:"PolicyName"` - Type string `json:"PolicyType"` - Attributes []LoadBalancerPolicyAttribute `json:",omitempty"` - InstancePorts []int `json:",omitempty"` - LoadBalancerPorts []int `json:",omitempty"` -} - -// A LoadBalancerPolicyAttribute is an attribute of a LoadBalancerPolicy. -type LoadBalancerPolicyAttribute struct { - Name string - Value string -} diff --git a/src/github.com/getlantern/aws-sdk-go/cfn/funcs.go b/src/github.com/getlantern/aws-sdk-go/cfn/funcs.go deleted file mode 100644 index 3b0162fd4d..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/cfn/funcs.go +++ /dev/null @@ -1,109 +0,0 @@ -package cfn - -// Ref returns a reference to the given resource. -func Ref(resource interface{}) interface{} { - return map[string]interface{}{"Ref": resource} -} - -// Fn returns a function with the given name and body. -func Fn(name string, body interface{}) interface{} { - return map[string]interface{}{"Fn::" + name: body} -} - -// Base64 returns the argument, encoded with Base64. -func Base64(v interface{}) interface{} { - return Fn("Base64", v) -} - -// And returns the conjunction of the terms. -func And(v []interface{}) interface{} { - return Fn("And", v) -} - -// Or returns the disjunction of the terms. -func Or(v []interface{}) interface{} { - return Fn("Or", v) -} - -// Equals returns true if the arguments are equal. -func Equals(a, b interface{}) interface{} { - return Fn("Equals", []interface{}{a, b}) -} - -// If returns the t argument if the condition is true; otherwise, it returns the -// f argument. -func If(cond, t, f interface{}) interface{} { - return Fn("If", []interface{}{cond, t, f}) -} - -// Not returns the negation of the argument. -func Not(v interface{}) interface{} { - return Fn("Not", v) -} - -// FindInMap returns the value corresponding to keys in a two-level map that is -// declared in the Mappings section of a template. -func FindInMap(name, key, subkey interface{}) interface{} { - return Fn("FindInMap", []interface{}{name, key, subkey}) -} - -// GetAtt returns the value of an attribute from a resource in the template. -func GetAtt(name, attribute interface{}) interface{} { - return Fn("GetAtt", []interface{}{name, attribute}) -} - -// GetAZs returns an array that lists Availability Zones for a specified -// region. For the EC2-VPC platform, GetAZs returns only the Availablity Zones -// that have default subnets. For the EC2-Classic platform, GetAZs returns all -// Availability Zones for a region. -func GetAZs(region interface{}) interface{} { - return Fn("GetAZs", region) -} - -// Join appends a set of values into a single value, separated by the specified -// delimiter. If a delimiter is the empty string, the set of values are -// concatenated with no delimiter. -func Join(delim interface{}, values ...interface{}) interface{} { - return Fn("Join", []interface{}{delim, values}) -} - -// Select returns a single object from a list of objects by index. -func Select(index, values interface{}) interface{} { - return Fn("Select", []interface{}{index, values}) -} - -// AccountID returns the AWS account ID of the account in which the stack is -// being created. -func AccountID() interface{} { - return Ref("AWS::AccountId") -} - -// NotificationARNs returns the list of notification Amazon Resource Names -// (ARNs) for the current stack. -func NotificationARNs() interface{} { - return Ref("AWS::NotificationARNs") -} - -// NoValue removes the corresponding resource property when specified as a -// return value in the If function. -func NoValue() interface{} { - return Ref("AWS::NoValue") -} - -// Region returns a string representing the AWS Region in which the encompassing -// resource is being created. -func Region() interface{} { - return Ref("AWS::Region") -} - -// StackID returns the ID of the stack as specified with the CreateStack -// operation. -func StackID() interface{} { - return Ref("AWS::StackId") -} - -// StackName returns the name of the stack as specified with the CreateStack -// operation. -func StackName() interface{} { - return Ref("AWS::StackName") -} diff --git a/src/github.com/getlantern/aws-sdk-go/cfn/iam.go b/src/github.com/getlantern/aws-sdk-go/cfn/iam.go deleted file mode 100644 index 81c7ca3acc..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/cfn/iam.go +++ /dev/null @@ -1,14 +0,0 @@ -package cfn - -// A Role is an IAM role. -type Role struct { - AssumeRolePolicyDocument interface{} - Path string - Policies interface{} `json:",omitempty"` -} - -// An InstanceProfile is an IAM instance profile. -type InstanceProfile struct { - Path string - Roles []interface{} -} diff --git a/src/github.com/getlantern/aws-sdk-go/cfn/rds.go b/src/github.com/getlantern/aws-sdk-go/cfn/rds.go deleted file mode 100644 index 279b3de1d3..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/cfn/rds.go +++ /dev/null @@ -1,47 +0,0 @@ -package cfn - -// A DBSubnetGroup places an RDS instance in a set of VPC subnets. -type DBSubnetGroup struct { - DBSubnetGroupDescription string - SubnetIDs []string `json:"SubnetIds"` - Tags []Tag `json:",omitempty"` -} - -// A DBParameterGroup is group of configuration parameters used for a set of DB -// instances. -type DBParameterGroup struct { - Description string - Family string - Parameters map[string]string `json:",omitempty"` - Tags []Tag `json:",omitempty"` -} - -// A DBInstance is a RDS instance. -type DBInstance struct { - AllocatedStorage int - AllowMajorVersionUpgrade bool `json:",omitempty"` - AutoMinorVersionUpgrade bool `json:",omitempty"` - AvailabilityZone string `json:",omitempty"` - BackupRetentionPeriod int `json:",omitempty"` - DBInstanceClass string - DBInstanceIdentifier string `json:",omitempty"` - DBName string `json:",omitempty"` - DBParameterGroupName interface{} `json:",omitempty"` - DBSecurityGroups []string `json:",omitempty"` - DBSnapshotIdentifier string `json:",omitempty"` - DBSubnetGroupName interface{} `json:",omitempty"` - Engine string `json:",omitempty"` - EngineVersion string `json:",omitempty"` - Iops int `json:",omitempty"` - LicenseModel string `json:",omitempty"` - MasterUsername string `json:",omitempty"` - MasterUserPassword string `json:",omitempty"` - MultiAZ bool `json:",omitempty"` - Port int `json:",omitempty"` - PreferredBackupWindow string `json:",omitempty"` - PreferredMaintenanceWindow string `json:",omitempty"` - PubliclyAccessible bool `json:",omitempty"` - SourceDBInstanceIdentifier string `json:",omitempty"` - Tags []Tag `json:",omitempty"` - VPCSecurityGroups []interface{} `json:",omitempty"` -} diff --git a/src/github.com/getlantern/aws-sdk-go/cfn/s3.go b/src/github.com/getlantern/aws-sdk-go/cfn/s3.go deleted file mode 100644 index b783c44007..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/cfn/s3.go +++ /dev/null @@ -1,21 +0,0 @@ -package cfn - -// An S3Bucket is a collection of blobs on S3. -type S3Bucket struct { - AccessControl string - BucketName interface{} - LoggingConfiguration *S3LoggingConfiguration `json:",omitempty"` - Tags []Tag `json:",omitempty"` -} - -// An S3LoggingConfiguration configures logging for S3 buckets. -type S3LoggingConfiguration struct { - DestinationBucketName interface{} - LogFilePrefix string `json:",omitempty"` -} - -// An S3BucketPolicy is a policy for an S3 bucket. -type S3BucketPolicy struct { - Bucket interface{} - PolicyDocument map[string]interface{} -} diff --git a/src/github.com/getlantern/aws-sdk-go/cmd/aws-gen-gocli/aws-gen-gocli.go b/src/github.com/getlantern/aws-sdk-go/cmd/aws-gen-gocli/aws-gen-gocli.go deleted file mode 100644 index 715798c956..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/cmd/aws-gen-gocli/aws-gen-gocli.go +++ /dev/null @@ -1,35 +0,0 @@ -// Command aws-gen-gocli parses a JSON description of an AWS API and generates a -// Go file containing a client for the API. -// -// aws-gen-gocli EC2 apis/ec2/2014-10-01.api.json gen/ec2/ec2.go -package main - -import ( - "fmt" - "os" - - "github.com/getlantern/aws-sdk-go/model" -) - -func main() { - in, err := os.Open(os.Args[2]) - if err != nil { - panic(err) - } - defer in.Close() - - out, err := os.Create(os.Args[3]) - if err != nil { - panic(err) - } - defer out.Close() - - if err := model.Load(os.Args[1], in); err != nil { - panic(err) - } - - if err := model.Generate(out); err != nil { - fmt.Fprintf(os.Stderr, "error generating %s\n", os.Args[3]) - panic(err) - } -} diff --git a/src/github.com/getlantern/aws-sdk-go/cmd/aws-gen-goendpoints/aws-gen-goendpoints.go b/src/github.com/getlantern/aws-sdk-go/cmd/aws-gen-goendpoints/aws-gen-goendpoints.go deleted file mode 100644 index f040324be3..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/cmd/aws-gen-goendpoints/aws-gen-goendpoints.go +++ /dev/null @@ -1,34 +0,0 @@ -// Command aws-gen-goendpoints parses a JSON description of the AWS endpoint -// discovery logic and generates a Go file which returns an endpoint. -// -// aws-gen-goendpoints apis/_endpoints.json gen/endpoints/endpoints.go -package main - -import ( - "os" - - "github.com/awslabs/aws-sdk-go/model" -) - -func main() { - in, err := os.Open(os.Args[1]) - if err != nil { - panic(err) - } - defer in.Close() - - var endpoints model.Endpoints - if err := endpoints.Parse(in); err != nil { - panic(err) - } - - out, err := os.Create(os.Args[2]) - if err != nil { - panic(err) - } - defer out.Close() - - if err := endpoints.Generate(out); err != nil { - panic(err) - } -} diff --git a/src/github.com/getlantern/aws-sdk-go/gen/autoscaling/autoscaling.go b/src/github.com/getlantern/aws-sdk-go/gen/autoscaling/autoscaling.go deleted file mode 100644 index e5a4d1cd64..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/gen/autoscaling/autoscaling.go +++ /dev/null @@ -1,1328 +0,0 @@ -// THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. - -// Package autoscaling provides a client for Auto Scaling. -package autoscaling - -import ( - "net/http" - "time" - - "github.com/awslabs/aws-sdk-go/aws" - "github.com/awslabs/aws-sdk-go/gen/endpoints" -) - -import ( - "encoding/xml" - "io" -) - -// AutoScaling is a client for Auto Scaling. -type AutoScaling struct { - client *aws.QueryClient -} - -// New returns a new AutoScaling client. -func New(creds aws.CredentialsProvider, region string, client *http.Client) *AutoScaling { - if client == nil { - client = http.DefaultClient - } - - endpoint, service, region := endpoints.Lookup("autoscaling", region) - - return &AutoScaling{ - client: &aws.QueryClient{ - Context: aws.Context{ - Credentials: creds, - Service: service, - Region: region, - }, - Client: client, - Endpoint: endpoint, - APIVersion: "2011-01-01", - }, - } -} - -// AttachInstances attaches one or more EC2 instances to the specified Auto -// Scaling group. For more information, see Attach Amazon EC2 Instances to -// Your Existing Auto Scaling Group in the Auto Scaling Developer Guide -func (c *AutoScaling) AttachInstances(req *AttachInstancesQuery) (err error) { - // NRE - err = c.client.Do("AttachInstances", "POST", "/", req, nil) - return -} - -// CompleteLifecycleAction completes the lifecycle action for the -// associated token initiated under the given lifecycle hook with the -// specified result. This operation is a part of the basic sequence for -// adding a lifecycle hook to an Auto Scaling group: Create a notification -// target. A target can be either an Amazon SQS queue or an Amazon SNS -// topic. Create an IAM role. This role allows Auto Scaling to publish -// lifecycle notifications to the designated SQS queue or SNS topic. Create -// the lifecycle hook. You can create a hook that acts when instances -// launch or when instances terminate. If necessary, record the lifecycle -// action heartbeat to keep the instance in a pending state. Complete the -// lifecycle action For more information, see Auto Scaling Pending State -// and Auto Scaling Terminating State in the Auto Scaling Developer Guide -func (c *AutoScaling) CompleteLifecycleAction(req *CompleteLifecycleActionType) (resp *CompleteLifecycleActionResult, err error) { - resp = &CompleteLifecycleActionResult{} - err = c.client.Do("CompleteLifecycleAction", "POST", "/", req, resp) - return -} - -// CreateAutoScalingGroup creates an Auto Scaling group with the specified -// name and attributes. If you exceed your maximum limit of Auto Scaling -// groups, which by default is 20 per region, the call fails. For -// information about viewing and updating these limits, see -// DescribeAccountLimits -func (c *AutoScaling) CreateAutoScalingGroup(req *CreateAutoScalingGroupType) (err error) { - // NRE - err = c.client.Do("CreateAutoScalingGroup", "POST", "/", req, nil) - return -} - -// CreateLaunchConfiguration creates a launch configuration. If you exceed -// your maximum limit of launch configurations, which by default is 100 per -// region, the call fails. For information about viewing and updating these -// limits, see DescribeAccountLimits -func (c *AutoScaling) CreateLaunchConfiguration(req *CreateLaunchConfigurationType) (err error) { - // NRE - err = c.client.Do("CreateLaunchConfiguration", "POST", "/", req, nil) - return -} - -// CreateOrUpdateTags creates or updates tags for the specified Auto -// Scaling group. A tag's definition is composed of a resource ID, resource -// type, key and value, and the propagate flag. Value and the propagate -// flag are optional parameters. See the Request Parameters for more -// information. For more information, see Add, Modify, or Remove Auto -// Scaling Group Tags in the Auto Scaling Developer Guide -func (c *AutoScaling) CreateOrUpdateTags(req *CreateOrUpdateTagsType) (err error) { - // NRE - err = c.client.Do("CreateOrUpdateTags", "POST", "/", req, nil) - return -} - -// DeleteAutoScalingGroup deletes the specified Auto Scaling group. The -// group must have no instances and no scaling activities in progress. To -// remove all instances before calling DeleteAutoScalingGroup , you can -// call UpdateAutoScalingGroup to set the minimum and maximum size of the -// AutoScalingGroup to zero. -func (c *AutoScaling) DeleteAutoScalingGroup(req *DeleteAutoScalingGroupType) (err error) { - // NRE - err = c.client.Do("DeleteAutoScalingGroup", "POST", "/", req, nil) - return -} - -// DeleteLaunchConfiguration deletes the specified launch configuration. -// The launch configuration must not be attached to an Auto Scaling group. -// When this call completes, the launch configuration is no longer -// available for use. -func (c *AutoScaling) DeleteLaunchConfiguration(req *LaunchConfigurationNameType) (err error) { - // NRE - err = c.client.Do("DeleteLaunchConfiguration", "POST", "/", req, nil) - return -} - -// DeleteLifecycleHook deletes the specified lifecycle hook. If there are -// any outstanding lifecycle actions, they are completed first for -// launching instances, for terminating instances). -func (c *AutoScaling) DeleteLifecycleHook(req *DeleteLifecycleHookType) (resp *DeleteLifecycleHookResult, err error) { - resp = &DeleteLifecycleHookResult{} - err = c.client.Do("DeleteLifecycleHook", "POST", "/", req, resp) - return -} - -// DeleteNotificationConfiguration is undocumented. -func (c *AutoScaling) DeleteNotificationConfiguration(req *DeleteNotificationConfigurationType) (err error) { - // NRE - err = c.client.Do("DeleteNotificationConfiguration", "POST", "/", req, nil) - return -} - -// DeletePolicy is undocumented. -func (c *AutoScaling) DeletePolicy(req *DeletePolicyType) (err error) { - // NRE - err = c.client.Do("DeletePolicy", "POST", "/", req, nil) - return -} - -// DeleteScheduledAction is undocumented. -func (c *AutoScaling) DeleteScheduledAction(req *DeleteScheduledActionType) (err error) { - // NRE - err = c.client.Do("DeleteScheduledAction", "POST", "/", req, nil) - return -} - -// DeleteTags is undocumented. -func (c *AutoScaling) DeleteTags(req *DeleteTagsType) (err error) { - // NRE - err = c.client.Do("DeleteTags", "POST", "/", req, nil) - return -} - -// DescribeAccountLimits describes the current Auto Scaling resource limits -// for your AWS account. For information about requesting an increase in -// these limits, see AWS Service Limits -func (c *AutoScaling) DescribeAccountLimits() (resp *DescribeAccountLimitsResult, err error) { - resp = &DescribeAccountLimitsResult{} - err = c.client.Do("DescribeAccountLimits", "POST", "/", nil, resp) - return -} - -// DescribeAdjustmentTypes lists the policy adjustment types for use with -// PutScalingPolicy -func (c *AutoScaling) DescribeAdjustmentTypes() (resp *DescribeAdjustmentTypesResult, err error) { - resp = &DescribeAdjustmentTypesResult{} - err = c.client.Do("DescribeAdjustmentTypes", "POST", "/", nil, resp) - return -} - -// DescribeAutoScalingGroups describes one or more Auto Scaling groups. If -// a list of names is not provided, the call describes all Auto Scaling -// groups. You can specify a maximum number of items to be returned with a -// single call. If there are more items to return, the call returns a -// token. To get the next set of items, repeat the call with the returned -// token in the NextToken parameter. -func (c *AutoScaling) DescribeAutoScalingGroups(req *AutoScalingGroupNamesType) (resp *DescribeAutoScalingGroupsResult, err error) { - resp = &DescribeAutoScalingGroupsResult{} - err = c.client.Do("DescribeAutoScalingGroups", "POST", "/", req, resp) - return -} - -// DescribeAutoScalingInstances describes one or more Auto Scaling -// instances. If a list is not provided, the call describes all instances. -// You can describe up to a maximum of 50 instances with a single call. By -// default, a call returns up to 20 instances. If there are more items to -// return, the call returns a token. To get the next set of items, repeat -// the call with the returned token in the NextToken parameter. -func (c *AutoScaling) DescribeAutoScalingInstances(req *DescribeAutoScalingInstancesType) (resp *DescribeAutoScalingInstancesResult, err error) { - resp = &DescribeAutoScalingInstancesResult{} - err = c.client.Do("DescribeAutoScalingInstances", "POST", "/", req, resp) - return -} - -// DescribeAutoScalingNotificationTypes lists the notification types that -// are supported by Auto Scaling. -func (c *AutoScaling) DescribeAutoScalingNotificationTypes() (resp *DescribeAutoScalingNotificationTypesResult, err error) { - resp = &DescribeAutoScalingNotificationTypesResult{} - err = c.client.Do("DescribeAutoScalingNotificationTypes", "POST", "/", nil, resp) - return -} - -// DescribeLaunchConfigurations describes one or more launch -// configurations. If you omit the list of names, then the call describes -// all launch configurations. You can specify a maximum number of items to -// be returned with a single call. If there are more items to return, the -// call returns a token. To get the next set of items, repeat the call with -// the returned token in the NextToken parameter. -func (c *AutoScaling) DescribeLaunchConfigurations(req *LaunchConfigurationNamesType) (resp *DescribeLaunchConfigurationsResult, err error) { - resp = &DescribeLaunchConfigurationsResult{} - err = c.client.Do("DescribeLaunchConfigurations", "POST", "/", req, resp) - return -} - -// DescribeLifecycleHookTypes is undocumented. -func (c *AutoScaling) DescribeLifecycleHookTypes() (resp *DescribeLifecycleHookTypesResult, err error) { - resp = &DescribeLifecycleHookTypesResult{} - err = c.client.Do("DescribeLifecycleHookTypes", "POST", "/", nil, resp) - return -} - -// DescribeLifecycleHooks describes the lifecycle hooks for the specified -// Auto Scaling group. -func (c *AutoScaling) DescribeLifecycleHooks(req *DescribeLifecycleHooksType) (resp *DescribeLifecycleHooksResult, err error) { - resp = &DescribeLifecycleHooksResult{} - err = c.client.Do("DescribeLifecycleHooks", "POST", "/", req, resp) - return -} - -// DescribeMetricCollectionTypes returns a list of metrics and a -// corresponding list of granularities for each metric. The -// GroupStandbyInstances metric is not returned by default. You must -// explicitly request it when calling EnableMetricsCollection -func (c *AutoScaling) DescribeMetricCollectionTypes() (resp *DescribeMetricCollectionTypesResult, err error) { - resp = &DescribeMetricCollectionTypesResult{} - err = c.client.Do("DescribeMetricCollectionTypes", "POST", "/", nil, resp) - return -} - -// DescribeNotificationConfigurations describes the notification actions -// associated with the specified Auto Scaling group. -func (c *AutoScaling) DescribeNotificationConfigurations(req *DescribeNotificationConfigurationsType) (resp *DescribeNotificationConfigurationsResult, err error) { - resp = &DescribeNotificationConfigurationsResult{} - err = c.client.Do("DescribeNotificationConfigurations", "POST", "/", req, resp) - return -} - -// DescribePolicies describes the policies for the specified Auto Scaling -// group. You can specify a maximum number of items to be returned with a -// single call. If there are more items to return, the call returns a -// token. To get the next set of items, repeat the call with the returned -// token in the NextToken parameter. -func (c *AutoScaling) DescribePolicies(req *DescribePoliciesType) (resp *DescribePoliciesResult, err error) { - resp = &DescribePoliciesResult{} - err = c.client.Do("DescribePolicies", "POST", "/", req, resp) - return -} - -// DescribeScalingActivities describes one or more scaling activities for -// the specified Auto Scaling group. If you omit the ActivityIds , the call -// returns all activities from the past six weeks. Activities are sorted by -// the start time. Activities still in progress appear first on the list. -// You can specify a maximum number of items to be returned with a single -// call. If there are more items to return, the call returns a token. To -// get the next set of items, repeat the call with the returned token in -// the NextToken parameter. -func (c *AutoScaling) DescribeScalingActivities(req *DescribeScalingActivitiesType) (resp *DescribeScalingActivitiesResult, err error) { - resp = &DescribeScalingActivitiesResult{} - err = c.client.Do("DescribeScalingActivities", "POST", "/", req, resp) - return -} - -// DescribeScalingProcessTypes returns scaling process types for use in the -// ResumeProcesses and SuspendProcesses actions. -func (c *AutoScaling) DescribeScalingProcessTypes() (resp *DescribeScalingProcessTypesResult, err error) { - resp = &DescribeScalingProcessTypesResult{} - err = c.client.Do("DescribeScalingProcessTypes", "POST", "/", nil, resp) - return -} - -// DescribeScheduledActions lists the actions scheduled for your Auto -// Scaling group that haven't been executed. To list the actions that were -// already executed, use DescribeScalingActivities -func (c *AutoScaling) DescribeScheduledActions(req *DescribeScheduledActionsType) (resp *DescribeScheduledActionsResult, err error) { - resp = &DescribeScheduledActionsResult{} - err = c.client.Do("DescribeScheduledActions", "POST", "/", req, resp) - return -} - -// DescribeTags describes the specified tags. You can use filters to limit -// the results. For example, you can query for the tags for a specific Auto -// Scaling group. You can specify multiple values for a filter. A tag must -// match at least one of the specified values for it to be included in the -// results. You can also specify multiple filters. The result includes -// information for a particular tag only if it matches all the filters. If -// there's no match, no special message is returned. -func (c *AutoScaling) DescribeTags(req *DescribeTagsType) (resp *DescribeTagsResult, err error) { - resp = &DescribeTagsResult{} - err = c.client.Do("DescribeTags", "POST", "/", req, resp) - return -} - -// DescribeTerminationPolicyTypes lists the termination policies supported -// by Auto Scaling. -func (c *AutoScaling) DescribeTerminationPolicyTypes() (resp *DescribeTerminationPolicyTypesResult, err error) { - resp = &DescribeTerminationPolicyTypesResult{} - err = c.client.Do("DescribeTerminationPolicyTypes", "POST", "/", nil, resp) - return -} - -// DetachInstances removes one or more instances from the specified Auto -// Scaling group. After the instances are detached, you can manage them -// independently from the rest of the Auto Scaling group. For more -// information, see Detach EC2 Instances from Your Auto Scaling Group in -// the Auto Scaling Developer Guide -func (c *AutoScaling) DetachInstances(req *DetachInstancesQuery) (resp *DetachInstancesResult, err error) { - resp = &DetachInstancesResult{} - err = c.client.Do("DetachInstances", "POST", "/", req, resp) - return -} - -// DisableMetricsCollection disables monitoring of the specified metrics -// for the specified Auto Scaling group. -func (c *AutoScaling) DisableMetricsCollection(req *DisableMetricsCollectionQuery) (err error) { - // NRE - err = c.client.Do("DisableMetricsCollection", "POST", "/", req, nil) - return -} - -// EnableMetricsCollection enables monitoring of the specified metrics for -// the specified Auto Scaling group. You can only enable metrics collection -// if InstanceMonitoring in the launch configuration for the group is set -// to True -func (c *AutoScaling) EnableMetricsCollection(req *EnableMetricsCollectionQuery) (err error) { - // NRE - err = c.client.Do("EnableMetricsCollection", "POST", "/", req, nil) - return -} - -// EnterStandby moves the specified instances into Standby mode. For more -// information, see Auto Scaling InService State in the Auto Scaling -// Developer Guide -func (c *AutoScaling) EnterStandby(req *EnterStandbyQuery) (resp *EnterStandbyResult, err error) { - resp = &EnterStandbyResult{} - err = c.client.Do("EnterStandby", "POST", "/", req, resp) - return -} - -// ExecutePolicy is undocumented. -func (c *AutoScaling) ExecutePolicy(req *ExecutePolicyType) (err error) { - // NRE - err = c.client.Do("ExecutePolicy", "POST", "/", req, nil) - return -} - -// ExitStandby moves the specified instances out of Standby mode. For more -// information, see Auto Scaling InService State in the Auto Scaling -// Developer Guide -func (c *AutoScaling) ExitStandby(req *ExitStandbyQuery) (resp *ExitStandbyResult, err error) { - resp = &ExitStandbyResult{} - err = c.client.Do("ExitStandby", "POST", "/", req, resp) - return -} - -// PutLifecycleHook creates or updates a lifecycle hook for the specified -// Auto Scaling Group. A lifecycle hook tells Auto Scaling that you want to -// perform an action on an instance that is not actively in service; for -// example, either when the instance launches or before the instance -// terminates. This operation is a part of the basic sequence for adding a -// lifecycle hook to an Auto Scaling group: Create a notification target. A -// target can be either an Amazon SQS queue or an Amazon SNS topic. Create -// an IAM role. This role allows Auto Scaling to publish lifecycle -// notifications to the designated SQS queue or SNS topic. Create the -// lifecycle hook. You can create a hook that acts when instances launch or -// when instances terminate. If necessary, record the lifecycle action -// heartbeat to keep the instance in a pending state. Complete the -// lifecycle action. For more information, see Auto Scaling Pending State -// and Auto Scaling Terminating State in the Auto Scaling Developer Guide -func (c *AutoScaling) PutLifecycleHook(req *PutLifecycleHookType) (resp *PutLifecycleHookResult, err error) { - resp = &PutLifecycleHookResult{} - err = c.client.Do("PutLifecycleHook", "POST", "/", req, resp) - return -} - -// PutNotificationConfiguration configures an Auto Scaling group to send -// notifications when specified events take place. Subscribers to this -// topic can have messages for events delivered to an endpoint such as a -// web server or email address. For more information see Getting -// Notifications When Your Auto Scaling Group Changes in the Auto Scaling -// Developer Guide This configuration overwrites an existing configuration. -func (c *AutoScaling) PutNotificationConfiguration(req *PutNotificationConfigurationType) (err error) { - // NRE - err = c.client.Do("PutNotificationConfiguration", "POST", "/", req, nil) - return -} - -// PutScalingPolicy creates or updates a policy for an Auto Scaling group. -// To update an existing policy, use the existing policy name and set the -// parameters you want to change. Any existing parameter not changed in an -// update to an existing policy is not changed in this update request. -func (c *AutoScaling) PutScalingPolicy(req *PutScalingPolicyType) (resp *PutScalingPolicyResult, err error) { - resp = &PutScalingPolicyResult{} - err = c.client.Do("PutScalingPolicy", "POST", "/", req, resp) - return -} - -// PutScheduledUpdateGroupAction creates or updates a scheduled scaling -// action for an Auto Scaling group. When updating a scheduled scaling -// action, if you leave a parameter unspecified, the corresponding value -// remains unchanged in the affected Auto Scaling group. For more -// information, see Scheduled Scaling in the Auto Scaling Developer Guide -// Auto Scaling supports the date and time expressed in -// "YYYY-MM-DDThh:mm:ssZ" format in only. -func (c *AutoScaling) PutScheduledUpdateGroupAction(req *PutScheduledUpdateGroupActionType) (err error) { - // NRE - err = c.client.Do("PutScheduledUpdateGroupAction", "POST", "/", req, nil) - return -} - -// RecordLifecycleActionHeartbeat records a heartbeat for the lifecycle -// action associated with a specific token. This extends the timeout by the -// length of time defined by the HeartbeatTimeout parameter of -// PutLifecycleHook This operation is a part of the basic sequence for -// adding a lifecycle hook to an Auto Scaling group: Create a notification -// target. A target can be either an Amazon SQS queue or an Amazon SNS -// topic. Create an IAM role. This role allows Auto Scaling to publish -// lifecycle notifications to the designated SQS queue or SNS topic. Create -// the lifecycle hook. You can create a hook that acts when instances -// launch or when instances terminate. If necessary, record the lifecycle -// action heartbeat to keep the instance in a pending state. Complete the -// lifecycle action. For more information, see Auto Scaling Pending State -// and Auto Scaling Terminating State in the Auto Scaling Developer Guide -func (c *AutoScaling) RecordLifecycleActionHeartbeat(req *RecordLifecycleActionHeartbeatType) (resp *RecordLifecycleActionHeartbeatResult, err error) { - resp = &RecordLifecycleActionHeartbeatResult{} - err = c.client.Do("RecordLifecycleActionHeartbeat", "POST", "/", req, resp) - return -} - -// ResumeProcesses resumes the specified suspended Auto Scaling processes -// for the specified Auto Scaling group. To resume specific processes, use -// the ScalingProcesses parameter. To resume all processes, omit the -// ScalingProcesses parameter. For more information, see Suspend and Resume -// Auto Scaling Processes in the Auto Scaling Developer Guide -func (c *AutoScaling) ResumeProcesses(req *ScalingProcessQuery) (err error) { - // NRE - err = c.client.Do("ResumeProcesses", "POST", "/", req, nil) - return -} - -// SetDesiredCapacity is undocumented. -func (c *AutoScaling) SetDesiredCapacity(req *SetDesiredCapacityType) (err error) { - // NRE - err = c.client.Do("SetDesiredCapacity", "POST", "/", req, nil) - return -} - -// SetInstanceHealth sets the health status of the specified instance. For -// more information, see Health Checks in the Auto Scaling Developer Guide -func (c *AutoScaling) SetInstanceHealth(req *SetInstanceHealthQuery) (err error) { - // NRE - err = c.client.Do("SetInstanceHealth", "POST", "/", req, nil) - return -} - -// SuspendProcesses suspends the specified Auto Scaling processes for the -// specified Auto Scaling group. To suspend specific processes, use the -// ScalingProcesses parameter. To suspend all processes, omit the -// ScalingProcesses parameter. Note that if you suspend either the Launch -// or Terminate process types, it can prevent other process types from -// functioning properly. To resume processes that have been suspended, use -// ResumeProcesses For more information, see Suspend and Resume Auto -// Scaling Processes in the Auto Scaling Developer Guide -func (c *AutoScaling) SuspendProcesses(req *ScalingProcessQuery) (err error) { - // NRE - err = c.client.Do("SuspendProcesses", "POST", "/", req, nil) - return -} - -// TerminateInstanceInAutoScalingGroup terminates the specified instance -// and optionally adjusts the desired group size. This call simply makes a -// termination request. The instances is not terminated immediately. -func (c *AutoScaling) TerminateInstanceInAutoScalingGroup(req *TerminateInstanceInAutoScalingGroupType) (resp *TerminateInstanceInAutoScalingGroupResult, err error) { - resp = &TerminateInstanceInAutoScalingGroupResult{} - err = c.client.Do("TerminateInstanceInAutoScalingGroup", "POST", "/", req, resp) - return -} - -// UpdateAutoScalingGroup updates the configuration for the specified -// AutoScalingGroup . To update an Auto Scaling group with a launch -// configuration that has the InstanceMonitoring flag set to False , you -// must first ensure that collection of group metrics is disabled. -// Otherwise, calls to UpdateAutoScalingGroup will fail. If you have -// previously enabled group metrics collection, you can disable collection -// of all group metrics by calling DisableMetricsCollection . The new -// settings are registered upon the completion of this call. Any launch -// configuration settings take effect on any triggers after this call -// returns. Scaling activities that are currently in progress aren't -// affected. If a new value is specified for MinSize without specifying the -// value for DesiredCapacity , and if the new MinSize is larger than the -// current size of the Auto Scaling group, there will be an implicit call -// to SetDesiredCapacity to set the group to the new MinSize . If a new -// value is specified for MaxSize without specifying the value for -// DesiredCapacity , and the new MaxSize is smaller than the current size -// of the Auto Scaling group, there will be an implicit call to -// SetDesiredCapacity to set the group to the new MaxSize . All other -// optional parameters are left unchanged if not passed in the request. -func (c *AutoScaling) UpdateAutoScalingGroup(req *UpdateAutoScalingGroupType) (err error) { - // NRE - err = c.client.Do("UpdateAutoScalingGroup", "POST", "/", req, nil) - return -} - -// ActivitiesType is undocumented. -type ActivitiesType struct { - Activities []Activity `query:"Activities.member" xml:"DescribeScalingActivitiesResult>Activities>member"` - NextToken aws.StringValue `query:"NextToken" xml:"DescribeScalingActivitiesResult>NextToken"` -} - -// Activity is undocumented. -type Activity struct { - ActivityID aws.StringValue `query:"ActivityId" xml:"ActivityId"` - AutoScalingGroupName aws.StringValue `query:"AutoScalingGroupName" xml:"AutoScalingGroupName"` - Cause aws.StringValue `query:"Cause" xml:"Cause"` - Description aws.StringValue `query:"Description" xml:"Description"` - Details aws.StringValue `query:"Details" xml:"Details"` - EndTime time.Time `query:"EndTime" xml:"EndTime"` - Progress aws.IntegerValue `query:"Progress" xml:"Progress"` - StartTime time.Time `query:"StartTime" xml:"StartTime"` - StatusCode aws.StringValue `query:"StatusCode" xml:"StatusCode"` - StatusMessage aws.StringValue `query:"StatusMessage" xml:"StatusMessage"` -} - -// ActivityType is undocumented. -type ActivityType struct { - Activity *Activity `query:"Activity" xml:"TerminateInstanceInAutoScalingGroupResult>Activity"` -} - -// AdjustmentType is undocumented. -type AdjustmentType struct { - AdjustmentType aws.StringValue `query:"AdjustmentType" xml:"AdjustmentType"` -} - -// Alarm is undocumented. -type Alarm struct { - AlarmARN aws.StringValue `query:"AlarmARN" xml:"AlarmARN"` - AlarmName aws.StringValue `query:"AlarmName" xml:"AlarmName"` -} - -// AttachInstancesQuery is undocumented. -type AttachInstancesQuery struct { - AutoScalingGroupName aws.StringValue `query:"AutoScalingGroupName" xml:"AutoScalingGroupName"` - InstanceIDs []string `query:"InstanceIds.member" xml:"InstanceIds>member"` -} - -// AutoScalingGroup is undocumented. -type AutoScalingGroup struct { - AutoScalingGroupARN aws.StringValue `query:"AutoScalingGroupARN" xml:"AutoScalingGroupARN"` - AutoScalingGroupName aws.StringValue `query:"AutoScalingGroupName" xml:"AutoScalingGroupName"` - AvailabilityZones []string `query:"AvailabilityZones.member" xml:"AvailabilityZones>member"` - CreatedTime time.Time `query:"CreatedTime" xml:"CreatedTime"` - DefaultCooldown aws.IntegerValue `query:"DefaultCooldown" xml:"DefaultCooldown"` - DesiredCapacity aws.IntegerValue `query:"DesiredCapacity" xml:"DesiredCapacity"` - EnabledMetrics []EnabledMetric `query:"EnabledMetrics.member" xml:"EnabledMetrics>member"` - HealthCheckGracePeriod aws.IntegerValue `query:"HealthCheckGracePeriod" xml:"HealthCheckGracePeriod"` - HealthCheckType aws.StringValue `query:"HealthCheckType" xml:"HealthCheckType"` - Instances []Instance `query:"Instances.member" xml:"Instances>member"` - LaunchConfigurationName aws.StringValue `query:"LaunchConfigurationName" xml:"LaunchConfigurationName"` - LoadBalancerNames []string `query:"LoadBalancerNames.member" xml:"LoadBalancerNames>member"` - MaxSize aws.IntegerValue `query:"MaxSize" xml:"MaxSize"` - MinSize aws.IntegerValue `query:"MinSize" xml:"MinSize"` - PlacementGroup aws.StringValue `query:"PlacementGroup" xml:"PlacementGroup"` - Status aws.StringValue `query:"Status" xml:"Status"` - SuspendedProcesses []SuspendedProcess `query:"SuspendedProcesses.member" xml:"SuspendedProcesses>member"` - Tags []TagDescription `query:"Tags.member" xml:"Tags>member"` - TerminationPolicies []string `query:"TerminationPolicies.member" xml:"TerminationPolicies>member"` - VPCZoneIdentifier aws.StringValue `query:"VPCZoneIdentifier" xml:"VPCZoneIdentifier"` -} - -// AutoScalingGroupNamesType is undocumented. -type AutoScalingGroupNamesType struct { - AutoScalingGroupNames []string `query:"AutoScalingGroupNames.member" xml:"AutoScalingGroupNames>member"` - MaxRecords aws.IntegerValue `query:"MaxRecords" xml:"MaxRecords"` - NextToken aws.StringValue `query:"NextToken" xml:"NextToken"` -} - -// AutoScalingGroupsType is undocumented. -type AutoScalingGroupsType struct { - AutoScalingGroups []AutoScalingGroup `query:"AutoScalingGroups.member" xml:"DescribeAutoScalingGroupsResult>AutoScalingGroups>member"` - NextToken aws.StringValue `query:"NextToken" xml:"DescribeAutoScalingGroupsResult>NextToken"` -} - -// AutoScalingInstanceDetails is undocumented. -type AutoScalingInstanceDetails struct { - AutoScalingGroupName aws.StringValue `query:"AutoScalingGroupName" xml:"AutoScalingGroupName"` - AvailabilityZone aws.StringValue `query:"AvailabilityZone" xml:"AvailabilityZone"` - HealthStatus aws.StringValue `query:"HealthStatus" xml:"HealthStatus"` - InstanceID aws.StringValue `query:"InstanceId" xml:"InstanceId"` - LaunchConfigurationName aws.StringValue `query:"LaunchConfigurationName" xml:"LaunchConfigurationName"` - LifecycleState aws.StringValue `query:"LifecycleState" xml:"LifecycleState"` -} - -// AutoScalingInstancesType is undocumented. -type AutoScalingInstancesType struct { - AutoScalingInstances []AutoScalingInstanceDetails `query:"AutoScalingInstances.member" xml:"DescribeAutoScalingInstancesResult>AutoScalingInstances>member"` - NextToken aws.StringValue `query:"NextToken" xml:"DescribeAutoScalingInstancesResult>NextToken"` -} - -// BlockDeviceMapping is undocumented. -type BlockDeviceMapping struct { - DeviceName aws.StringValue `query:"DeviceName" xml:"DeviceName"` - EBS *EBS `query:"Ebs" xml:"Ebs"` - NoDevice aws.BooleanValue `query:"NoDevice" xml:"NoDevice"` - VirtualName aws.StringValue `query:"VirtualName" xml:"VirtualName"` -} - -// CompleteLifecycleActionAnswer is undocumented. -type CompleteLifecycleActionAnswer struct { -} - -// CompleteLifecycleActionType is undocumented. -type CompleteLifecycleActionType struct { - AutoScalingGroupName aws.StringValue `query:"AutoScalingGroupName" xml:"AutoScalingGroupName"` - LifecycleActionResult aws.StringValue `query:"LifecycleActionResult" xml:"LifecycleActionResult"` - LifecycleActionToken aws.StringValue `query:"LifecycleActionToken" xml:"LifecycleActionToken"` - LifecycleHookName aws.StringValue `query:"LifecycleHookName" xml:"LifecycleHookName"` -} - -// CreateAutoScalingGroupType is undocumented. -type CreateAutoScalingGroupType struct { - AutoScalingGroupName aws.StringValue `query:"AutoScalingGroupName" xml:"AutoScalingGroupName"` - AvailabilityZones []string `query:"AvailabilityZones.member" xml:"AvailabilityZones>member"` - DefaultCooldown aws.IntegerValue `query:"DefaultCooldown" xml:"DefaultCooldown"` - DesiredCapacity aws.IntegerValue `query:"DesiredCapacity" xml:"DesiredCapacity"` - HealthCheckGracePeriod aws.IntegerValue `query:"HealthCheckGracePeriod" xml:"HealthCheckGracePeriod"` - HealthCheckType aws.StringValue `query:"HealthCheckType" xml:"HealthCheckType"` - InstanceID aws.StringValue `query:"InstanceId" xml:"InstanceId"` - LaunchConfigurationName aws.StringValue `query:"LaunchConfigurationName" xml:"LaunchConfigurationName"` - LoadBalancerNames []string `query:"LoadBalancerNames.member" xml:"LoadBalancerNames>member"` - MaxSize aws.IntegerValue `query:"MaxSize" xml:"MaxSize"` - MinSize aws.IntegerValue `query:"MinSize" xml:"MinSize"` - PlacementGroup aws.StringValue `query:"PlacementGroup" xml:"PlacementGroup"` - Tags []Tag `query:"Tags.member" xml:"Tags>member"` - TerminationPolicies []string `query:"TerminationPolicies.member" xml:"TerminationPolicies>member"` - VPCZoneIdentifier aws.StringValue `query:"VPCZoneIdentifier" xml:"VPCZoneIdentifier"` -} - -// CreateLaunchConfigurationType is undocumented. -type CreateLaunchConfigurationType struct { - AssociatePublicIPAddress aws.BooleanValue `query:"AssociatePublicIpAddress" xml:"AssociatePublicIpAddress"` - BlockDeviceMappings []BlockDeviceMapping `query:"BlockDeviceMappings.member" xml:"BlockDeviceMappings>member"` - ClassicLinkVPCID aws.StringValue `query:"ClassicLinkVPCId" xml:"ClassicLinkVPCId"` - ClassicLinkVPCSecurityGroups []string `query:"ClassicLinkVPCSecurityGroups.member" xml:"ClassicLinkVPCSecurityGroups>member"` - EBSOptimized aws.BooleanValue `query:"EbsOptimized" xml:"EbsOptimized"` - IAMInstanceProfile aws.StringValue `query:"IamInstanceProfile" xml:"IamInstanceProfile"` - ImageID aws.StringValue `query:"ImageId" xml:"ImageId"` - InstanceID aws.StringValue `query:"InstanceId" xml:"InstanceId"` - InstanceMonitoring *InstanceMonitoring `query:"InstanceMonitoring" xml:"InstanceMonitoring"` - InstanceType aws.StringValue `query:"InstanceType" xml:"InstanceType"` - KernelID aws.StringValue `query:"KernelId" xml:"KernelId"` - KeyName aws.StringValue `query:"KeyName" xml:"KeyName"` - LaunchConfigurationName aws.StringValue `query:"LaunchConfigurationName" xml:"LaunchConfigurationName"` - PlacementTenancy aws.StringValue `query:"PlacementTenancy" xml:"PlacementTenancy"` - RAMDiskID aws.StringValue `query:"RamdiskId" xml:"RamdiskId"` - SecurityGroups []string `query:"SecurityGroups.member" xml:"SecurityGroups>member"` - SpotPrice aws.StringValue `query:"SpotPrice" xml:"SpotPrice"` - UserData aws.StringValue `query:"UserData" xml:"UserData"` -} - -// CreateOrUpdateTagsType is undocumented. -type CreateOrUpdateTagsType struct { - Tags []Tag `query:"Tags.member" xml:"Tags>member"` -} - -// DeleteAutoScalingGroupType is undocumented. -type DeleteAutoScalingGroupType struct { - AutoScalingGroupName aws.StringValue `query:"AutoScalingGroupName" xml:"AutoScalingGroupName"` - ForceDelete aws.BooleanValue `query:"ForceDelete" xml:"ForceDelete"` -} - -// DeleteLifecycleHookAnswer is undocumented. -type DeleteLifecycleHookAnswer struct { -} - -// DeleteLifecycleHookType is undocumented. -type DeleteLifecycleHookType struct { - AutoScalingGroupName aws.StringValue `query:"AutoScalingGroupName" xml:"AutoScalingGroupName"` - LifecycleHookName aws.StringValue `query:"LifecycleHookName" xml:"LifecycleHookName"` -} - -// DeleteNotificationConfigurationType is undocumented. -type DeleteNotificationConfigurationType struct { - AutoScalingGroupName aws.StringValue `query:"AutoScalingGroupName" xml:"AutoScalingGroupName"` - TopicARN aws.StringValue `query:"TopicARN" xml:"TopicARN"` -} - -// DeletePolicyType is undocumented. -type DeletePolicyType struct { - AutoScalingGroupName aws.StringValue `query:"AutoScalingGroupName" xml:"AutoScalingGroupName"` - PolicyName aws.StringValue `query:"PolicyName" xml:"PolicyName"` -} - -// DeleteScheduledActionType is undocumented. -type DeleteScheduledActionType struct { - AutoScalingGroupName aws.StringValue `query:"AutoScalingGroupName" xml:"AutoScalingGroupName"` - ScheduledActionName aws.StringValue `query:"ScheduledActionName" xml:"ScheduledActionName"` -} - -// DeleteTagsType is undocumented. -type DeleteTagsType struct { - Tags []Tag `query:"Tags.member" xml:"Tags>member"` -} - -// DescribeAccountLimitsAnswer is undocumented. -type DescribeAccountLimitsAnswer struct { - MaxNumberOfAutoScalingGroups aws.IntegerValue `query:"MaxNumberOfAutoScalingGroups" xml:"DescribeAccountLimitsResult>MaxNumberOfAutoScalingGroups"` - MaxNumberOfLaunchConfigurations aws.IntegerValue `query:"MaxNumberOfLaunchConfigurations" xml:"DescribeAccountLimitsResult>MaxNumberOfLaunchConfigurations"` -} - -// DescribeAdjustmentTypesAnswer is undocumented. -type DescribeAdjustmentTypesAnswer struct { - AdjustmentTypes []AdjustmentType `query:"AdjustmentTypes.member" xml:"DescribeAdjustmentTypesResult>AdjustmentTypes>member"` -} - -// DescribeAutoScalingInstancesType is undocumented. -type DescribeAutoScalingInstancesType struct { - InstanceIDs []string `query:"InstanceIds.member" xml:"InstanceIds>member"` - MaxRecords aws.IntegerValue `query:"MaxRecords" xml:"MaxRecords"` - NextToken aws.StringValue `query:"NextToken" xml:"NextToken"` -} - -// DescribeAutoScalingNotificationTypesAnswer is undocumented. -type DescribeAutoScalingNotificationTypesAnswer struct { - AutoScalingNotificationTypes []string `query:"AutoScalingNotificationTypes.member" xml:"DescribeAutoScalingNotificationTypesResult>AutoScalingNotificationTypes>member"` -} - -// DescribeLifecycleHookTypesAnswer is undocumented. -type DescribeLifecycleHookTypesAnswer struct { - LifecycleHookTypes []string `query:"LifecycleHookTypes.member" xml:"DescribeLifecycleHookTypesResult>LifecycleHookTypes>member"` -} - -// DescribeLifecycleHooksAnswer is undocumented. -type DescribeLifecycleHooksAnswer struct { - LifecycleHooks []LifecycleHook `query:"LifecycleHooks.member" xml:"DescribeLifecycleHooksResult>LifecycleHooks>member"` -} - -// DescribeLifecycleHooksType is undocumented. -type DescribeLifecycleHooksType struct { - AutoScalingGroupName aws.StringValue `query:"AutoScalingGroupName" xml:"AutoScalingGroupName"` - LifecycleHookNames []string `query:"LifecycleHookNames.member" xml:"LifecycleHookNames>member"` -} - -// DescribeMetricCollectionTypesAnswer is undocumented. -type DescribeMetricCollectionTypesAnswer struct { - Granularities []MetricGranularityType `query:"Granularities.member" xml:"DescribeMetricCollectionTypesResult>Granularities>member"` - Metrics []MetricCollectionType `query:"Metrics.member" xml:"DescribeMetricCollectionTypesResult>Metrics>member"` -} - -// DescribeNotificationConfigurationsAnswer is undocumented. -type DescribeNotificationConfigurationsAnswer struct { - NextToken aws.StringValue `query:"NextToken" xml:"DescribeNotificationConfigurationsResult>NextToken"` - NotificationConfigurations []NotificationConfiguration `query:"NotificationConfigurations.member" xml:"DescribeNotificationConfigurationsResult>NotificationConfigurations>member"` -} - -// DescribeNotificationConfigurationsType is undocumented. -type DescribeNotificationConfigurationsType struct { - AutoScalingGroupNames []string `query:"AutoScalingGroupNames.member" xml:"AutoScalingGroupNames>member"` - MaxRecords aws.IntegerValue `query:"MaxRecords" xml:"MaxRecords"` - NextToken aws.StringValue `query:"NextToken" xml:"NextToken"` -} - -// DescribePoliciesType is undocumented. -type DescribePoliciesType struct { - AutoScalingGroupName aws.StringValue `query:"AutoScalingGroupName" xml:"AutoScalingGroupName"` - MaxRecords aws.IntegerValue `query:"MaxRecords" xml:"MaxRecords"` - NextToken aws.StringValue `query:"NextToken" xml:"NextToken"` - PolicyNames []string `query:"PolicyNames.member" xml:"PolicyNames>member"` -} - -// DescribeScalingActivitiesType is undocumented. -type DescribeScalingActivitiesType struct { - ActivityIDs []string `query:"ActivityIds.member" xml:"ActivityIds>member"` - AutoScalingGroupName aws.StringValue `query:"AutoScalingGroupName" xml:"AutoScalingGroupName"` - MaxRecords aws.IntegerValue `query:"MaxRecords" xml:"MaxRecords"` - NextToken aws.StringValue `query:"NextToken" xml:"NextToken"` -} - -// DescribeScheduledActionsType is undocumented. -type DescribeScheduledActionsType struct { - AutoScalingGroupName aws.StringValue `query:"AutoScalingGroupName" xml:"AutoScalingGroupName"` - EndTime time.Time `query:"EndTime" xml:"EndTime"` - MaxRecords aws.IntegerValue `query:"MaxRecords" xml:"MaxRecords"` - NextToken aws.StringValue `query:"NextToken" xml:"NextToken"` - ScheduledActionNames []string `query:"ScheduledActionNames.member" xml:"ScheduledActionNames>member"` - StartTime time.Time `query:"StartTime" xml:"StartTime"` -} - -// DescribeTagsType is undocumented. -type DescribeTagsType struct { - Filters []Filter `query:"Filters.member" xml:"Filters>member"` - MaxRecords aws.IntegerValue `query:"MaxRecords" xml:"MaxRecords"` - NextToken aws.StringValue `query:"NextToken" xml:"NextToken"` -} - -// DescribeTerminationPolicyTypesAnswer is undocumented. -type DescribeTerminationPolicyTypesAnswer struct { - TerminationPolicyTypes []string `query:"TerminationPolicyTypes.member" xml:"DescribeTerminationPolicyTypesResult>TerminationPolicyTypes>member"` -} - -// DetachInstancesAnswer is undocumented. -type DetachInstancesAnswer struct { - Activities []Activity `query:"Activities.member" xml:"DetachInstancesResult>Activities>member"` -} - -// DetachInstancesQuery is undocumented. -type DetachInstancesQuery struct { - AutoScalingGroupName aws.StringValue `query:"AutoScalingGroupName" xml:"AutoScalingGroupName"` - InstanceIDs []string `query:"InstanceIds.member" xml:"InstanceIds>member"` - ShouldDecrementDesiredCapacity aws.BooleanValue `query:"ShouldDecrementDesiredCapacity" xml:"ShouldDecrementDesiredCapacity"` -} - -// DisableMetricsCollectionQuery is undocumented. -type DisableMetricsCollectionQuery struct { - AutoScalingGroupName aws.StringValue `query:"AutoScalingGroupName" xml:"AutoScalingGroupName"` - Metrics []string `query:"Metrics.member" xml:"Metrics>member"` -} - -// EBS is undocumented. -type EBS struct { - DeleteOnTermination aws.BooleanValue `query:"DeleteOnTermination" xml:"DeleteOnTermination"` - IOPS aws.IntegerValue `query:"Iops" xml:"Iops"` - SnapshotID aws.StringValue `query:"SnapshotId" xml:"SnapshotId"` - VolumeSize aws.IntegerValue `query:"VolumeSize" xml:"VolumeSize"` - VolumeType aws.StringValue `query:"VolumeType" xml:"VolumeType"` -} - -// EnableMetricsCollectionQuery is undocumented. -type EnableMetricsCollectionQuery struct { - AutoScalingGroupName aws.StringValue `query:"AutoScalingGroupName" xml:"AutoScalingGroupName"` - Granularity aws.StringValue `query:"Granularity" xml:"Granularity"` - Metrics []string `query:"Metrics.member" xml:"Metrics>member"` -} - -// EnabledMetric is undocumented. -type EnabledMetric struct { - Granularity aws.StringValue `query:"Granularity" xml:"Granularity"` - Metric aws.StringValue `query:"Metric" xml:"Metric"` -} - -// EnterStandbyAnswer is undocumented. -type EnterStandbyAnswer struct { - Activities []Activity `query:"Activities.member" xml:"EnterStandbyResult>Activities>member"` -} - -// EnterStandbyQuery is undocumented. -type EnterStandbyQuery struct { - AutoScalingGroupName aws.StringValue `query:"AutoScalingGroupName" xml:"AutoScalingGroupName"` - InstanceIDs []string `query:"InstanceIds.member" xml:"InstanceIds>member"` - ShouldDecrementDesiredCapacity aws.BooleanValue `query:"ShouldDecrementDesiredCapacity" xml:"ShouldDecrementDesiredCapacity"` -} - -// ExecutePolicyType is undocumented. -type ExecutePolicyType struct { - AutoScalingGroupName aws.StringValue `query:"AutoScalingGroupName" xml:"AutoScalingGroupName"` - HonorCooldown aws.BooleanValue `query:"HonorCooldown" xml:"HonorCooldown"` - PolicyName aws.StringValue `query:"PolicyName" xml:"PolicyName"` -} - -// ExitStandbyAnswer is undocumented. -type ExitStandbyAnswer struct { - Activities []Activity `query:"Activities.member" xml:"ExitStandbyResult>Activities>member"` -} - -// ExitStandbyQuery is undocumented. -type ExitStandbyQuery struct { - AutoScalingGroupName aws.StringValue `query:"AutoScalingGroupName" xml:"AutoScalingGroupName"` - InstanceIDs []string `query:"InstanceIds.member" xml:"InstanceIds>member"` -} - -// Filter is undocumented. -type Filter struct { - Name aws.StringValue `query:"Name" xml:"Name"` - Values []string `query:"Values.member" xml:"Values>member"` -} - -// Instance is undocumented. -type Instance struct { - AvailabilityZone aws.StringValue `query:"AvailabilityZone" xml:"AvailabilityZone"` - HealthStatus aws.StringValue `query:"HealthStatus" xml:"HealthStatus"` - InstanceID aws.StringValue `query:"InstanceId" xml:"InstanceId"` - LaunchConfigurationName aws.StringValue `query:"LaunchConfigurationName" xml:"LaunchConfigurationName"` - LifecycleState aws.StringValue `query:"LifecycleState" xml:"LifecycleState"` -} - -// InstanceMonitoring is undocumented. -type InstanceMonitoring struct { - Enabled aws.BooleanValue `query:"Enabled" xml:"Enabled"` -} - -// LaunchConfiguration is undocumented. -type LaunchConfiguration struct { - AssociatePublicIPAddress aws.BooleanValue `query:"AssociatePublicIpAddress" xml:"AssociatePublicIpAddress"` - BlockDeviceMappings []BlockDeviceMapping `query:"BlockDeviceMappings.member" xml:"BlockDeviceMappings>member"` - ClassicLinkVPCID aws.StringValue `query:"ClassicLinkVPCId" xml:"ClassicLinkVPCId"` - ClassicLinkVPCSecurityGroups []string `query:"ClassicLinkVPCSecurityGroups.member" xml:"ClassicLinkVPCSecurityGroups>member"` - CreatedTime time.Time `query:"CreatedTime" xml:"CreatedTime"` - EBSOptimized aws.BooleanValue `query:"EbsOptimized" xml:"EbsOptimized"` - IAMInstanceProfile aws.StringValue `query:"IamInstanceProfile" xml:"IamInstanceProfile"` - ImageID aws.StringValue `query:"ImageId" xml:"ImageId"` - InstanceMonitoring *InstanceMonitoring `query:"InstanceMonitoring" xml:"InstanceMonitoring"` - InstanceType aws.StringValue `query:"InstanceType" xml:"InstanceType"` - KernelID aws.StringValue `query:"KernelId" xml:"KernelId"` - KeyName aws.StringValue `query:"KeyName" xml:"KeyName"` - LaunchConfigurationARN aws.StringValue `query:"LaunchConfigurationARN" xml:"LaunchConfigurationARN"` - LaunchConfigurationName aws.StringValue `query:"LaunchConfigurationName" xml:"LaunchConfigurationName"` - PlacementTenancy aws.StringValue `query:"PlacementTenancy" xml:"PlacementTenancy"` - RAMDiskID aws.StringValue `query:"RamdiskId" xml:"RamdiskId"` - SecurityGroups []string `query:"SecurityGroups.member" xml:"SecurityGroups>member"` - SpotPrice aws.StringValue `query:"SpotPrice" xml:"SpotPrice"` - UserData aws.StringValue `query:"UserData" xml:"UserData"` -} - -// LaunchConfigurationNameType is undocumented. -type LaunchConfigurationNameType struct { - LaunchConfigurationName aws.StringValue `query:"LaunchConfigurationName" xml:"LaunchConfigurationName"` -} - -// LaunchConfigurationNamesType is undocumented. -type LaunchConfigurationNamesType struct { - LaunchConfigurationNames []string `query:"LaunchConfigurationNames.member" xml:"LaunchConfigurationNames>member"` - MaxRecords aws.IntegerValue `query:"MaxRecords" xml:"MaxRecords"` - NextToken aws.StringValue `query:"NextToken" xml:"NextToken"` -} - -// LaunchConfigurationsType is undocumented. -type LaunchConfigurationsType struct { - LaunchConfigurations []LaunchConfiguration `query:"LaunchConfigurations.member" xml:"DescribeLaunchConfigurationsResult>LaunchConfigurations>member"` - NextToken aws.StringValue `query:"NextToken" xml:"DescribeLaunchConfigurationsResult>NextToken"` -} - -// LifecycleHook is undocumented. -type LifecycleHook struct { - AutoScalingGroupName aws.StringValue `query:"AutoScalingGroupName" xml:"AutoScalingGroupName"` - DefaultResult aws.StringValue `query:"DefaultResult" xml:"DefaultResult"` - GlobalTimeout aws.IntegerValue `query:"GlobalTimeout" xml:"GlobalTimeout"` - HeartbeatTimeout aws.IntegerValue `query:"HeartbeatTimeout" xml:"HeartbeatTimeout"` - LifecycleHookName aws.StringValue `query:"LifecycleHookName" xml:"LifecycleHookName"` - LifecycleTransition aws.StringValue `query:"LifecycleTransition" xml:"LifecycleTransition"` - NotificationMetadata aws.StringValue `query:"NotificationMetadata" xml:"NotificationMetadata"` - NotificationTargetARN aws.StringValue `query:"NotificationTargetARN" xml:"NotificationTargetARN"` - RoleARN aws.StringValue `query:"RoleARN" xml:"RoleARN"` -} - -// Possible values for AutoScaling. -const ( - LifecycleStateDetached = "Detached" - LifecycleStateDetaching = "Detaching" - LifecycleStateEnteringStandby = "EnteringStandby" - LifecycleStateInService = "InService" - LifecycleStatePending = "Pending" - LifecycleStatePendingProceed = "Pending:Proceed" - LifecycleStatePendingWait = "Pending:Wait" - LifecycleStateQuarantined = "Quarantined" - LifecycleStateStandby = "Standby" - LifecycleStateTerminated = "Terminated" - LifecycleStateTerminating = "Terminating" - LifecycleStateTerminatingProceed = "Terminating:Proceed" - LifecycleStateTerminatingWait = "Terminating:Wait" -) - -// MetricCollectionType is undocumented. -type MetricCollectionType struct { - Metric aws.StringValue `query:"Metric" xml:"Metric"` -} - -// MetricGranularityType is undocumented. -type MetricGranularityType struct { - Granularity aws.StringValue `query:"Granularity" xml:"Granularity"` -} - -// NotificationConfiguration is undocumented. -type NotificationConfiguration struct { - AutoScalingGroupName aws.StringValue `query:"AutoScalingGroupName" xml:"AutoScalingGroupName"` - NotificationType aws.StringValue `query:"NotificationType" xml:"NotificationType"` - TopicARN aws.StringValue `query:"TopicARN" xml:"TopicARN"` -} - -// PoliciesType is undocumented. -type PoliciesType struct { - NextToken aws.StringValue `query:"NextToken" xml:"DescribePoliciesResult>NextToken"` - ScalingPolicies []ScalingPolicy `query:"ScalingPolicies.member" xml:"DescribePoliciesResult>ScalingPolicies>member"` -} - -// PolicyARNType is undocumented. -type PolicyARNType struct { - PolicyARN aws.StringValue `query:"PolicyARN" xml:"PutScalingPolicyResult>PolicyARN"` -} - -// ProcessType is undocumented. -type ProcessType struct { - ProcessName aws.StringValue `query:"ProcessName" xml:"ProcessName"` -} - -// ProcessesType is undocumented. -type ProcessesType struct { - Processes []ProcessType `query:"Processes.member" xml:"DescribeScalingProcessTypesResult>Processes>member"` -} - -// PutLifecycleHookAnswer is undocumented. -type PutLifecycleHookAnswer struct { -} - -// PutLifecycleHookType is undocumented. -type PutLifecycleHookType struct { - AutoScalingGroupName aws.StringValue `query:"AutoScalingGroupName" xml:"AutoScalingGroupName"` - DefaultResult aws.StringValue `query:"DefaultResult" xml:"DefaultResult"` - HeartbeatTimeout aws.IntegerValue `query:"HeartbeatTimeout" xml:"HeartbeatTimeout"` - LifecycleHookName aws.StringValue `query:"LifecycleHookName" xml:"LifecycleHookName"` - LifecycleTransition aws.StringValue `query:"LifecycleTransition" xml:"LifecycleTransition"` - NotificationMetadata aws.StringValue `query:"NotificationMetadata" xml:"NotificationMetadata"` - NotificationTargetARN aws.StringValue `query:"NotificationTargetARN" xml:"NotificationTargetARN"` - RoleARN aws.StringValue `query:"RoleARN" xml:"RoleARN"` -} - -// PutNotificationConfigurationType is undocumented. -type PutNotificationConfigurationType struct { - AutoScalingGroupName aws.StringValue `query:"AutoScalingGroupName" xml:"AutoScalingGroupName"` - NotificationTypes []string `query:"NotificationTypes.member" xml:"NotificationTypes>member"` - TopicARN aws.StringValue `query:"TopicARN" xml:"TopicARN"` -} - -// PutScalingPolicyType is undocumented. -type PutScalingPolicyType struct { - AdjustmentType aws.StringValue `query:"AdjustmentType" xml:"AdjustmentType"` - AutoScalingGroupName aws.StringValue `query:"AutoScalingGroupName" xml:"AutoScalingGroupName"` - Cooldown aws.IntegerValue `query:"Cooldown" xml:"Cooldown"` - MinAdjustmentStep aws.IntegerValue `query:"MinAdjustmentStep" xml:"MinAdjustmentStep"` - PolicyName aws.StringValue `query:"PolicyName" xml:"PolicyName"` - ScalingAdjustment aws.IntegerValue `query:"ScalingAdjustment" xml:"ScalingAdjustment"` -} - -// PutScheduledUpdateGroupActionType is undocumented. -type PutScheduledUpdateGroupActionType struct { - AutoScalingGroupName aws.StringValue `query:"AutoScalingGroupName" xml:"AutoScalingGroupName"` - DesiredCapacity aws.IntegerValue `query:"DesiredCapacity" xml:"DesiredCapacity"` - EndTime time.Time `query:"EndTime" xml:"EndTime"` - MaxSize aws.IntegerValue `query:"MaxSize" xml:"MaxSize"` - MinSize aws.IntegerValue `query:"MinSize" xml:"MinSize"` - Recurrence aws.StringValue `query:"Recurrence" xml:"Recurrence"` - ScheduledActionName aws.StringValue `query:"ScheduledActionName" xml:"ScheduledActionName"` - StartTime time.Time `query:"StartTime" xml:"StartTime"` - Time time.Time `query:"Time" xml:"Time"` -} - -// RecordLifecycleActionHeartbeatAnswer is undocumented. -type RecordLifecycleActionHeartbeatAnswer struct { -} - -// RecordLifecycleActionHeartbeatType is undocumented. -type RecordLifecycleActionHeartbeatType struct { - AutoScalingGroupName aws.StringValue `query:"AutoScalingGroupName" xml:"AutoScalingGroupName"` - LifecycleActionToken aws.StringValue `query:"LifecycleActionToken" xml:"LifecycleActionToken"` - LifecycleHookName aws.StringValue `query:"LifecycleHookName" xml:"LifecycleHookName"` -} - -// Possible values for AutoScaling. -const ( - ScalingActivityStatusCodeCancelled = "Cancelled" - ScalingActivityStatusCodeFailed = "Failed" - ScalingActivityStatusCodeInProgress = "InProgress" - ScalingActivityStatusCodeMidLifecycleAction = "MidLifecycleAction" - ScalingActivityStatusCodePreInService = "PreInService" - ScalingActivityStatusCodeSuccessful = "Successful" - ScalingActivityStatusCodeWaitingForElbconnectionDraining = "WaitingForELBConnectionDraining" - ScalingActivityStatusCodeWaitingForInstanceID = "WaitingForInstanceId" - ScalingActivityStatusCodeWaitingForSpotInstanceID = "WaitingForSpotInstanceId" - ScalingActivityStatusCodeWaitingForSpotInstanceRequestID = "WaitingForSpotInstanceRequestId" -) - -// ScalingPolicy is undocumented. -type ScalingPolicy struct { - AdjustmentType aws.StringValue `query:"AdjustmentType" xml:"AdjustmentType"` - Alarms []Alarm `query:"Alarms.member" xml:"Alarms>member"` - AutoScalingGroupName aws.StringValue `query:"AutoScalingGroupName" xml:"AutoScalingGroupName"` - Cooldown aws.IntegerValue `query:"Cooldown" xml:"Cooldown"` - MinAdjustmentStep aws.IntegerValue `query:"MinAdjustmentStep" xml:"MinAdjustmentStep"` - PolicyARN aws.StringValue `query:"PolicyARN" xml:"PolicyARN"` - PolicyName aws.StringValue `query:"PolicyName" xml:"PolicyName"` - ScalingAdjustment aws.IntegerValue `query:"ScalingAdjustment" xml:"ScalingAdjustment"` -} - -// ScalingProcessQuery is undocumented. -type ScalingProcessQuery struct { - AutoScalingGroupName aws.StringValue `query:"AutoScalingGroupName" xml:"AutoScalingGroupName"` - ScalingProcesses []string `query:"ScalingProcesses.member" xml:"ScalingProcesses>member"` -} - -// ScheduledActionsType is undocumented. -type ScheduledActionsType struct { - NextToken aws.StringValue `query:"NextToken" xml:"DescribeScheduledActionsResult>NextToken"` - ScheduledUpdateGroupActions []ScheduledUpdateGroupAction `query:"ScheduledUpdateGroupActions.member" xml:"DescribeScheduledActionsResult>ScheduledUpdateGroupActions>member"` -} - -// ScheduledUpdateGroupAction is undocumented. -type ScheduledUpdateGroupAction struct { - AutoScalingGroupName aws.StringValue `query:"AutoScalingGroupName" xml:"AutoScalingGroupName"` - DesiredCapacity aws.IntegerValue `query:"DesiredCapacity" xml:"DesiredCapacity"` - EndTime time.Time `query:"EndTime" xml:"EndTime"` - MaxSize aws.IntegerValue `query:"MaxSize" xml:"MaxSize"` - MinSize aws.IntegerValue `query:"MinSize" xml:"MinSize"` - Recurrence aws.StringValue `query:"Recurrence" xml:"Recurrence"` - ScheduledActionARN aws.StringValue `query:"ScheduledActionARN" xml:"ScheduledActionARN"` - ScheduledActionName aws.StringValue `query:"ScheduledActionName" xml:"ScheduledActionName"` - StartTime time.Time `query:"StartTime" xml:"StartTime"` - Time time.Time `query:"Time" xml:"Time"` -} - -// SetDesiredCapacityType is undocumented. -type SetDesiredCapacityType struct { - AutoScalingGroupName aws.StringValue `query:"AutoScalingGroupName" xml:"AutoScalingGroupName"` - DesiredCapacity aws.IntegerValue `query:"DesiredCapacity" xml:"DesiredCapacity"` - HonorCooldown aws.BooleanValue `query:"HonorCooldown" xml:"HonorCooldown"` -} - -// SetInstanceHealthQuery is undocumented. -type SetInstanceHealthQuery struct { - HealthStatus aws.StringValue `query:"HealthStatus" xml:"HealthStatus"` - InstanceID aws.StringValue `query:"InstanceId" xml:"InstanceId"` - ShouldRespectGracePeriod aws.BooleanValue `query:"ShouldRespectGracePeriod" xml:"ShouldRespectGracePeriod"` -} - -// SuspendedProcess is undocumented. -type SuspendedProcess struct { - ProcessName aws.StringValue `query:"ProcessName" xml:"ProcessName"` - SuspensionReason aws.StringValue `query:"SuspensionReason" xml:"SuspensionReason"` -} - -// Tag is undocumented. -type Tag struct { - Key aws.StringValue `query:"Key" xml:"Key"` - PropagateAtLaunch aws.BooleanValue `query:"PropagateAtLaunch" xml:"PropagateAtLaunch"` - ResourceID aws.StringValue `query:"ResourceId" xml:"ResourceId"` - ResourceType aws.StringValue `query:"ResourceType" xml:"ResourceType"` - Value aws.StringValue `query:"Value" xml:"Value"` -} - -// TagDescription is undocumented. -type TagDescription struct { - Key aws.StringValue `query:"Key" xml:"Key"` - PropagateAtLaunch aws.BooleanValue `query:"PropagateAtLaunch" xml:"PropagateAtLaunch"` - ResourceID aws.StringValue `query:"ResourceId" xml:"ResourceId"` - ResourceType aws.StringValue `query:"ResourceType" xml:"ResourceType"` - Value aws.StringValue `query:"Value" xml:"Value"` -} - -// TagsType is undocumented. -type TagsType struct { - NextToken aws.StringValue `query:"NextToken" xml:"DescribeTagsResult>NextToken"` - Tags []TagDescription `query:"Tags.member" xml:"DescribeTagsResult>Tags>member"` -} - -// TerminateInstanceInAutoScalingGroupType is undocumented. -type TerminateInstanceInAutoScalingGroupType struct { - InstanceID aws.StringValue `query:"InstanceId" xml:"InstanceId"` - ShouldDecrementDesiredCapacity aws.BooleanValue `query:"ShouldDecrementDesiredCapacity" xml:"ShouldDecrementDesiredCapacity"` -} - -// UpdateAutoScalingGroupType is undocumented. -type UpdateAutoScalingGroupType struct { - AutoScalingGroupName aws.StringValue `query:"AutoScalingGroupName" xml:"AutoScalingGroupName"` - AvailabilityZones []string `query:"AvailabilityZones.member" xml:"AvailabilityZones>member"` - DefaultCooldown aws.IntegerValue `query:"DefaultCooldown" xml:"DefaultCooldown"` - DesiredCapacity aws.IntegerValue `query:"DesiredCapacity" xml:"DesiredCapacity"` - HealthCheckGracePeriod aws.IntegerValue `query:"HealthCheckGracePeriod" xml:"HealthCheckGracePeriod"` - HealthCheckType aws.StringValue `query:"HealthCheckType" xml:"HealthCheckType"` - LaunchConfigurationName aws.StringValue `query:"LaunchConfigurationName" xml:"LaunchConfigurationName"` - MaxSize aws.IntegerValue `query:"MaxSize" xml:"MaxSize"` - MinSize aws.IntegerValue `query:"MinSize" xml:"MinSize"` - PlacementGroup aws.StringValue `query:"PlacementGroup" xml:"PlacementGroup"` - TerminationPolicies []string `query:"TerminationPolicies.member" xml:"TerminationPolicies>member"` - VPCZoneIdentifier aws.StringValue `query:"VPCZoneIdentifier" xml:"VPCZoneIdentifier"` -} - -// CompleteLifecycleActionResult is a wrapper for CompleteLifecycleActionAnswer. -type CompleteLifecycleActionResult struct { -} - -// DeleteLifecycleHookResult is a wrapper for DeleteLifecycleHookAnswer. -type DeleteLifecycleHookResult struct { -} - -// DescribeAccountLimitsResult is a wrapper for DescribeAccountLimitsAnswer. -type DescribeAccountLimitsResult struct { - MaxNumberOfAutoScalingGroups aws.IntegerValue `query:"MaxNumberOfAutoScalingGroups" xml:"DescribeAccountLimitsResult>MaxNumberOfAutoScalingGroups"` - MaxNumberOfLaunchConfigurations aws.IntegerValue `query:"MaxNumberOfLaunchConfigurations" xml:"DescribeAccountLimitsResult>MaxNumberOfLaunchConfigurations"` -} - -// DescribeAdjustmentTypesResult is a wrapper for DescribeAdjustmentTypesAnswer. -type DescribeAdjustmentTypesResult struct { - AdjustmentTypes []AdjustmentType `query:"AdjustmentTypes.member" xml:"DescribeAdjustmentTypesResult>AdjustmentTypes>member"` -} - -// DescribeAutoScalingGroupsResult is a wrapper for AutoScalingGroupsType. -type DescribeAutoScalingGroupsResult struct { - AutoScalingGroups []AutoScalingGroup `query:"AutoScalingGroups.member" xml:"DescribeAutoScalingGroupsResult>AutoScalingGroups>member"` - NextToken aws.StringValue `query:"NextToken" xml:"DescribeAutoScalingGroupsResult>NextToken"` -} - -// DescribeAutoScalingInstancesResult is a wrapper for AutoScalingInstancesType. -type DescribeAutoScalingInstancesResult struct { - AutoScalingInstances []AutoScalingInstanceDetails `query:"AutoScalingInstances.member" xml:"DescribeAutoScalingInstancesResult>AutoScalingInstances>member"` - NextToken aws.StringValue `query:"NextToken" xml:"DescribeAutoScalingInstancesResult>NextToken"` -} - -// DescribeAutoScalingNotificationTypesResult is a wrapper for DescribeAutoScalingNotificationTypesAnswer. -type DescribeAutoScalingNotificationTypesResult struct { - AutoScalingNotificationTypes []string `query:"AutoScalingNotificationTypes.member" xml:"DescribeAutoScalingNotificationTypesResult>AutoScalingNotificationTypes>member"` -} - -// DescribeLaunchConfigurationsResult is a wrapper for LaunchConfigurationsType. -type DescribeLaunchConfigurationsResult struct { - LaunchConfigurations []LaunchConfiguration `query:"LaunchConfigurations.member" xml:"DescribeLaunchConfigurationsResult>LaunchConfigurations>member"` - NextToken aws.StringValue `query:"NextToken" xml:"DescribeLaunchConfigurationsResult>NextToken"` -} - -// DescribeLifecycleHookTypesResult is a wrapper for DescribeLifecycleHookTypesAnswer. -type DescribeLifecycleHookTypesResult struct { - LifecycleHookTypes []string `query:"LifecycleHookTypes.member" xml:"DescribeLifecycleHookTypesResult>LifecycleHookTypes>member"` -} - -// DescribeLifecycleHooksResult is a wrapper for DescribeLifecycleHooksAnswer. -type DescribeLifecycleHooksResult struct { - LifecycleHooks []LifecycleHook `query:"LifecycleHooks.member" xml:"DescribeLifecycleHooksResult>LifecycleHooks>member"` -} - -// DescribeMetricCollectionTypesResult is a wrapper for DescribeMetricCollectionTypesAnswer. -type DescribeMetricCollectionTypesResult struct { - Granularities []MetricGranularityType `query:"Granularities.member" xml:"DescribeMetricCollectionTypesResult>Granularities>member"` - Metrics []MetricCollectionType `query:"Metrics.member" xml:"DescribeMetricCollectionTypesResult>Metrics>member"` -} - -// DescribeNotificationConfigurationsResult is a wrapper for DescribeNotificationConfigurationsAnswer. -type DescribeNotificationConfigurationsResult struct { - NextToken aws.StringValue `query:"NextToken" xml:"DescribeNotificationConfigurationsResult>NextToken"` - NotificationConfigurations []NotificationConfiguration `query:"NotificationConfigurations.member" xml:"DescribeNotificationConfigurationsResult>NotificationConfigurations>member"` -} - -// DescribePoliciesResult is a wrapper for PoliciesType. -type DescribePoliciesResult struct { - NextToken aws.StringValue `query:"NextToken" xml:"DescribePoliciesResult>NextToken"` - ScalingPolicies []ScalingPolicy `query:"ScalingPolicies.member" xml:"DescribePoliciesResult>ScalingPolicies>member"` -} - -// DescribeScalingActivitiesResult is a wrapper for ActivitiesType. -type DescribeScalingActivitiesResult struct { - Activities []Activity `query:"Activities.member" xml:"DescribeScalingActivitiesResult>Activities>member"` - NextToken aws.StringValue `query:"NextToken" xml:"DescribeScalingActivitiesResult>NextToken"` -} - -// DescribeScalingProcessTypesResult is a wrapper for ProcessesType. -type DescribeScalingProcessTypesResult struct { - Processes []ProcessType `query:"Processes.member" xml:"DescribeScalingProcessTypesResult>Processes>member"` -} - -// DescribeScheduledActionsResult is a wrapper for ScheduledActionsType. -type DescribeScheduledActionsResult struct { - NextToken aws.StringValue `query:"NextToken" xml:"DescribeScheduledActionsResult>NextToken"` - ScheduledUpdateGroupActions []ScheduledUpdateGroupAction `query:"ScheduledUpdateGroupActions.member" xml:"DescribeScheduledActionsResult>ScheduledUpdateGroupActions>member"` -} - -// DescribeTagsResult is a wrapper for TagsType. -type DescribeTagsResult struct { - NextToken aws.StringValue `query:"NextToken" xml:"DescribeTagsResult>NextToken"` - Tags []TagDescription `query:"Tags.member" xml:"DescribeTagsResult>Tags>member"` -} - -// DescribeTerminationPolicyTypesResult is a wrapper for DescribeTerminationPolicyTypesAnswer. -type DescribeTerminationPolicyTypesResult struct { - TerminationPolicyTypes []string `query:"TerminationPolicyTypes.member" xml:"DescribeTerminationPolicyTypesResult>TerminationPolicyTypes>member"` -} - -// DetachInstancesResult is a wrapper for DetachInstancesAnswer. -type DetachInstancesResult struct { - Activities []Activity `query:"Activities.member" xml:"DetachInstancesResult>Activities>member"` -} - -// EnterStandbyResult is a wrapper for EnterStandbyAnswer. -type EnterStandbyResult struct { - Activities []Activity `query:"Activities.member" xml:"EnterStandbyResult>Activities>member"` -} - -// ExitStandbyResult is a wrapper for ExitStandbyAnswer. -type ExitStandbyResult struct { - Activities []Activity `query:"Activities.member" xml:"ExitStandbyResult>Activities>member"` -} - -// PutLifecycleHookResult is a wrapper for PutLifecycleHookAnswer. -type PutLifecycleHookResult struct { -} - -// PutScalingPolicyResult is a wrapper for PolicyARNType. -type PutScalingPolicyResult struct { - PolicyARN aws.StringValue `query:"PolicyARN" xml:"PutScalingPolicyResult>PolicyARN"` -} - -// RecordLifecycleActionHeartbeatResult is a wrapper for RecordLifecycleActionHeartbeatAnswer. -type RecordLifecycleActionHeartbeatResult struct { -} - -// TerminateInstanceInAutoScalingGroupResult is a wrapper for ActivityType. -type TerminateInstanceInAutoScalingGroupResult struct { - Activity *Activity `query:"Activity" xml:"TerminateInstanceInAutoScalingGroupResult>Activity"` -} - -// avoid errors if the packages aren't referenced -var _ time.Time - -var _ xml.Decoder -var _ = io.EOF diff --git a/src/github.com/getlantern/aws-sdk-go/gen/cloudformation/cloudformation.go b/src/github.com/getlantern/aws-sdk-go/gen/cloudformation/cloudformation.go deleted file mode 100644 index 13b309c13a..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/gen/cloudformation/cloudformation.go +++ /dev/null @@ -1,677 +0,0 @@ -// THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. - -// Package cloudformation provides a client for AWS CloudFormation. -package cloudformation - -import ( - "net/http" - "time" - - "github.com/awslabs/aws-sdk-go/aws" - "github.com/awslabs/aws-sdk-go/gen/endpoints" -) - -import ( - "encoding/xml" - "io" -) - -// CloudFormation is a client for AWS CloudFormation. -type CloudFormation struct { - client *aws.QueryClient -} - -// New returns a new CloudFormation client. -func New(creds aws.CredentialsProvider, region string, client *http.Client) *CloudFormation { - if client == nil { - client = http.DefaultClient - } - - endpoint, service, region := endpoints.Lookup("cloudformation", region) - - return &CloudFormation{ - client: &aws.QueryClient{ - Context: aws.Context{ - Credentials: creds, - Service: service, - Region: region, - }, - Client: client, - Endpoint: endpoint, - APIVersion: "2010-05-15", - }, - } -} - -// CancelUpdateStack cancels an update on the specified stack. If the call -// completes successfully, the stack will roll back the update and revert -// to the previous stack configuration. Only stacks that are in the state -// can be canceled. -func (c *CloudFormation) CancelUpdateStack(req *CancelUpdateStackInput) (err error) { - // NRE - err = c.client.Do("CancelUpdateStack", "POST", "/", req, nil) - return -} - -// CreateStack creates a stack as specified in the template. After the call -// completes successfully, the stack creation starts. You can check the -// status of the stack via the DescribeStacks -func (c *CloudFormation) CreateStack(req *CreateStackInput) (resp *CreateStackResult, err error) { - resp = &CreateStackResult{} - err = c.client.Do("CreateStack", "POST", "/", req, resp) - return -} - -// DeleteStack deletes a specified stack. Once the call completes -// successfully, stack deletion starts. Deleted stacks do not show up in -// the DescribeStacks API if the deletion has been completed successfully. -func (c *CloudFormation) DeleteStack(req *DeleteStackInput) (err error) { - // NRE - err = c.client.Do("DeleteStack", "POST", "/", req, nil) - return -} - -// DescribeStackEvents returns all stack related events for a specified -// stack. For more information about a stack's event history, go to Stacks -// in the AWS CloudFormation User Guide. You can list events for stacks -// that have failed to create or have been deleted by specifying the unique -// stack identifier (stack -func (c *CloudFormation) DescribeStackEvents(req *DescribeStackEventsInput) (resp *DescribeStackEventsResult, err error) { - resp = &DescribeStackEventsResult{} - err = c.client.Do("DescribeStackEvents", "POST", "/", req, resp) - return -} - -// DescribeStackResource returns a description of the specified resource in -// the specified stack. For deleted stacks, DescribeStackResource returns -// resource information for up to 90 days after the stack has been deleted. -func (c *CloudFormation) DescribeStackResource(req *DescribeStackResourceInput) (resp *DescribeStackResourceResult, err error) { - resp = &DescribeStackResourceResult{} - err = c.client.Do("DescribeStackResource", "POST", "/", req, resp) - return -} - -// DescribeStackResources returns AWS resource descriptions for running and -// deleted stacks. If StackName is specified, all the associated resources -// that are part of the stack are returned. If PhysicalResourceId is -// specified, the associated resources of the stack that the resource -// belongs to are returned. Only the first 100 resources will be returned. -// If your stack has more resources than this, you should use -// ListStackResources instead. For deleted stacks, DescribeStackResources -// returns resource information for up to 90 days after the stack has been -// deleted. You must specify either StackName or PhysicalResourceId , but -// not both. In addition, you can specify LogicalResourceId to filter the -// returned result. For more information about resources, the -// LogicalResourceId and PhysicalResourceId , go to the AWS CloudFormation -// User Guide A ValidationError is returned if you specify both StackName -// and PhysicalResourceId in the same request. -func (c *CloudFormation) DescribeStackResources(req *DescribeStackResourcesInput) (resp *DescribeStackResourcesResult, err error) { - resp = &DescribeStackResourcesResult{} - err = c.client.Do("DescribeStackResources", "POST", "/", req, resp) - return -} - -// DescribeStacks returns the description for the specified stack; if no -// stack name was specified, then it returns the description for all the -// stacks created. -func (c *CloudFormation) DescribeStacks(req *DescribeStacksInput) (resp *DescribeStacksResult, err error) { - resp = &DescribeStacksResult{} - err = c.client.Do("DescribeStacks", "POST", "/", req, resp) - return -} - -// EstimateTemplateCost returns the estimated monthly cost of a template. -// The return value is an AWS Simple Monthly Calculator URL with a query -// string that describes the resources required to run the template. -func (c *CloudFormation) EstimateTemplateCost(req *EstimateTemplateCostInput) (resp *EstimateTemplateCostResult, err error) { - resp = &EstimateTemplateCostResult{} - err = c.client.Do("EstimateTemplateCost", "POST", "/", req, resp) - return -} - -// GetStackPolicy returns the stack policy for a specified stack. If a -// stack doesn't have a policy, a null value is returned. -func (c *CloudFormation) GetStackPolicy(req *GetStackPolicyInput) (resp *GetStackPolicyResult, err error) { - resp = &GetStackPolicyResult{} - err = c.client.Do("GetStackPolicy", "POST", "/", req, resp) - return -} - -// GetTemplate returns the template body for a specified stack. You can get -// the template for running or deleted stacks. For deleted stacks, -// GetTemplate returns the template for up to 90 days after the stack has -// been deleted. If the template does not exist, a ValidationError is -// returned. -func (c *CloudFormation) GetTemplate(req *GetTemplateInput) (resp *GetTemplateResult, err error) { - resp = &GetTemplateResult{} - err = c.client.Do("GetTemplate", "POST", "/", req, resp) - return -} - -// GetTemplateSummary returns information about a new or existing template. -// The GetTemplateSummary action is useful for viewing parameter -// information, such as default parameter values and parameter types, -// before you create or update a stack. You can use the GetTemplateSummary -// action when you submit a template, or you can get template information -// for a running or deleted stack. For deleted stacks, GetTemplateSummary -// returns the template information for up to 90 days after the stack has -// been deleted. If the template does not exist, a ValidationError is -// returned. -func (c *CloudFormation) GetTemplateSummary(req *GetTemplateSummaryInput) (resp *GetTemplateSummaryResult, err error) { - resp = &GetTemplateSummaryResult{} - err = c.client.Do("GetTemplateSummary", "POST", "/", req, resp) - return -} - -// ListStackResources returns descriptions of all resources of the -// specified stack. For deleted stacks, ListStackResources returns resource -// information for up to 90 days after the stack has been deleted. -func (c *CloudFormation) ListStackResources(req *ListStackResourcesInput) (resp *ListStackResourcesResult, err error) { - resp = &ListStackResourcesResult{} - err = c.client.Do("ListStackResources", "POST", "/", req, resp) - return -} - -// ListStacks returns the summary information for stacks whose status -// matches the specified StackStatusFilter. Summary information for stacks -// that have been deleted is kept for 90 days after the stack is deleted. -// If no StackStatusFilter is specified, summary information for all stacks -// is returned (including existing stacks and stacks that have been -// deleted). -func (c *CloudFormation) ListStacks(req *ListStacksInput) (resp *ListStacksResult, err error) { - resp = &ListStacksResult{} - err = c.client.Do("ListStacks", "POST", "/", req, resp) - return -} - -// SetStackPolicy is undocumented. -func (c *CloudFormation) SetStackPolicy(req *SetStackPolicyInput) (err error) { - // NRE - err = c.client.Do("SetStackPolicy", "POST", "/", req, nil) - return -} - -// SignalResource sends a signal to the specified resource with a success -// or failure status. You can use the SignalResource API in conjunction -// with a creation policy or update policy. AWS CloudFormation doesn't -// proceed with a stack creation or update until resources receive the -// required number of signals or the timeout period is exceeded. The -// SignalResource API is useful in cases where you want to send signals -// from anywhere other than an Amazon EC2 instance. -func (c *CloudFormation) SignalResource(req *SignalResourceInput) (err error) { - // NRE - err = c.client.Do("SignalResource", "POST", "/", req, nil) - return -} - -// UpdateStack updates a stack as specified in the template. After the call -// completes successfully, the stack update starts. You can check the -// status of the stack via the DescribeStacks action. To get a copy of the -// template for an existing stack, you can use the GetTemplate action. Tags -// that were associated with this stack during creation time will still be -// associated with the stack after an UpdateStack operation. For more -// information about creating an update template, updating a stack, and -// monitoring the progress of the update, see Updating a Stack -func (c *CloudFormation) UpdateStack(req *UpdateStackInput) (resp *UpdateStackResult, err error) { - resp = &UpdateStackResult{} - err = c.client.Do("UpdateStack", "POST", "/", req, resp) - return -} - -// ValidateTemplate is undocumented. -func (c *CloudFormation) ValidateTemplate(req *ValidateTemplateInput) (resp *ValidateTemplateResult, err error) { - resp = &ValidateTemplateResult{} - err = c.client.Do("ValidateTemplate", "POST", "/", req, resp) - return -} - -// CancelUpdateStackInput is undocumented. -type CancelUpdateStackInput struct { - StackName aws.StringValue `query:"StackName" xml:"StackName"` -} - -// Possible values for CloudFormation. -const ( - CapabilityCapabilityIAM = "CAPABILITY_IAM" -) - -// CreateStackInput is undocumented. -type CreateStackInput struct { - Capabilities []string `query:"Capabilities.member" xml:"Capabilities>member"` - DisableRollback aws.BooleanValue `query:"DisableRollback" xml:"DisableRollback"` - NotificationARNs []string `query:"NotificationARNs.member" xml:"NotificationARNs>member"` - OnFailure aws.StringValue `query:"OnFailure" xml:"OnFailure"` - Parameters []Parameter `query:"Parameters.member" xml:"Parameters>member"` - StackName aws.StringValue `query:"StackName" xml:"StackName"` - StackPolicyBody aws.StringValue `query:"StackPolicyBody" xml:"StackPolicyBody"` - StackPolicyURL aws.StringValue `query:"StackPolicyURL" xml:"StackPolicyURL"` - Tags []Tag `query:"Tags.member" xml:"Tags>member"` - TemplateBody aws.StringValue `query:"TemplateBody" xml:"TemplateBody"` - TemplateURL aws.StringValue `query:"TemplateURL" xml:"TemplateURL"` - TimeoutInMinutes aws.IntegerValue `query:"TimeoutInMinutes" xml:"TimeoutInMinutes"` -} - -// CreateStackOutput is undocumented. -type CreateStackOutput struct { - StackID aws.StringValue `query:"StackId" xml:"CreateStackResult>StackId"` -} - -// DeleteStackInput is undocumented. -type DeleteStackInput struct { - StackName aws.StringValue `query:"StackName" xml:"StackName"` -} - -// DescribeStackEventsInput is undocumented. -type DescribeStackEventsInput struct { - NextToken aws.StringValue `query:"NextToken" xml:"NextToken"` - StackName aws.StringValue `query:"StackName" xml:"StackName"` -} - -// DescribeStackEventsOutput is undocumented. -type DescribeStackEventsOutput struct { - NextToken aws.StringValue `query:"NextToken" xml:"DescribeStackEventsResult>NextToken"` - StackEvents []StackEvent `query:"StackEvents.member" xml:"DescribeStackEventsResult>StackEvents>member"` -} - -// DescribeStackResourceInput is undocumented. -type DescribeStackResourceInput struct { - LogicalResourceID aws.StringValue `query:"LogicalResourceId" xml:"LogicalResourceId"` - StackName aws.StringValue `query:"StackName" xml:"StackName"` -} - -// DescribeStackResourceOutput is undocumented. -type DescribeStackResourceOutput struct { - StackResourceDetail *StackResourceDetail `query:"StackResourceDetail" xml:"DescribeStackResourceResult>StackResourceDetail"` -} - -// DescribeStackResourcesInput is undocumented. -type DescribeStackResourcesInput struct { - LogicalResourceID aws.StringValue `query:"LogicalResourceId" xml:"LogicalResourceId"` - PhysicalResourceID aws.StringValue `query:"PhysicalResourceId" xml:"PhysicalResourceId"` - StackName aws.StringValue `query:"StackName" xml:"StackName"` -} - -// DescribeStackResourcesOutput is undocumented. -type DescribeStackResourcesOutput struct { - StackResources []StackResource `query:"StackResources.member" xml:"DescribeStackResourcesResult>StackResources>member"` -} - -// DescribeStacksInput is undocumented. -type DescribeStacksInput struct { - NextToken aws.StringValue `query:"NextToken" xml:"NextToken"` - StackName aws.StringValue `query:"StackName" xml:"StackName"` -} - -// DescribeStacksOutput is undocumented. -type DescribeStacksOutput struct { - NextToken aws.StringValue `query:"NextToken" xml:"DescribeStacksResult>NextToken"` - Stacks []Stack `query:"Stacks.member" xml:"DescribeStacksResult>Stacks>member"` -} - -// EstimateTemplateCostInput is undocumented. -type EstimateTemplateCostInput struct { - Parameters []Parameter `query:"Parameters.member" xml:"Parameters>member"` - TemplateBody aws.StringValue `query:"TemplateBody" xml:"TemplateBody"` - TemplateURL aws.StringValue `query:"TemplateURL" xml:"TemplateURL"` -} - -// EstimateTemplateCostOutput is undocumented. -type EstimateTemplateCostOutput struct { - URL aws.StringValue `query:"Url" xml:"EstimateTemplateCostResult>Url"` -} - -// GetStackPolicyInput is undocumented. -type GetStackPolicyInput struct { - StackName aws.StringValue `query:"StackName" xml:"StackName"` -} - -// GetStackPolicyOutput is undocumented. -type GetStackPolicyOutput struct { - StackPolicyBody aws.StringValue `query:"StackPolicyBody" xml:"GetStackPolicyResult>StackPolicyBody"` -} - -// GetTemplateInput is undocumented. -type GetTemplateInput struct { - StackName aws.StringValue `query:"StackName" xml:"StackName"` -} - -// GetTemplateOutput is undocumented. -type GetTemplateOutput struct { - TemplateBody aws.StringValue `query:"TemplateBody" xml:"GetTemplateResult>TemplateBody"` -} - -// GetTemplateSummaryInput is undocumented. -type GetTemplateSummaryInput struct { - StackName aws.StringValue `query:"StackName" xml:"StackName"` - TemplateBody aws.StringValue `query:"TemplateBody" xml:"TemplateBody"` - TemplateURL aws.StringValue `query:"TemplateURL" xml:"TemplateURL"` -} - -// GetTemplateSummaryOutput is undocumented. -type GetTemplateSummaryOutput struct { - Capabilities []string `query:"Capabilities.member" xml:"GetTemplateSummaryResult>Capabilities>member"` - CapabilitiesReason aws.StringValue `query:"CapabilitiesReason" xml:"GetTemplateSummaryResult>CapabilitiesReason"` - Description aws.StringValue `query:"Description" xml:"GetTemplateSummaryResult>Description"` - Parameters []ParameterDeclaration `query:"Parameters.member" xml:"GetTemplateSummaryResult>Parameters>member"` - Version aws.StringValue `query:"Version" xml:"GetTemplateSummaryResult>Version"` -} - -// ListStackResourcesInput is undocumented. -type ListStackResourcesInput struct { - NextToken aws.StringValue `query:"NextToken" xml:"NextToken"` - StackName aws.StringValue `query:"StackName" xml:"StackName"` -} - -// ListStackResourcesOutput is undocumented. -type ListStackResourcesOutput struct { - NextToken aws.StringValue `query:"NextToken" xml:"ListStackResourcesResult>NextToken"` - StackResourceSummaries []StackResourceSummary `query:"StackResourceSummaries.member" xml:"ListStackResourcesResult>StackResourceSummaries>member"` -} - -// ListStacksInput is undocumented. -type ListStacksInput struct { - NextToken aws.StringValue `query:"NextToken" xml:"NextToken"` - StackStatusFilter []string `query:"StackStatusFilter.member" xml:"StackStatusFilter>member"` -} - -// ListStacksOutput is undocumented. -type ListStacksOutput struct { - NextToken aws.StringValue `query:"NextToken" xml:"ListStacksResult>NextToken"` - StackSummaries []StackSummary `query:"StackSummaries.member" xml:"ListStacksResult>StackSummaries>member"` -} - -// Possible values for CloudFormation. -const ( - OnFailureDelete = "DELETE" - OnFailureDoNothing = "DO_NOTHING" - OnFailureRollback = "ROLLBACK" -) - -// Output is undocumented. -type Output struct { - Description aws.StringValue `query:"Description" xml:"Description"` - OutputKey aws.StringValue `query:"OutputKey" xml:"OutputKey"` - OutputValue aws.StringValue `query:"OutputValue" xml:"OutputValue"` -} - -// Parameter is undocumented. -type Parameter struct { - ParameterKey aws.StringValue `query:"ParameterKey" xml:"ParameterKey"` - ParameterValue aws.StringValue `query:"ParameterValue" xml:"ParameterValue"` - UsePreviousValue aws.BooleanValue `query:"UsePreviousValue" xml:"UsePreviousValue"` -} - -// ParameterDeclaration is undocumented. -type ParameterDeclaration struct { - DefaultValue aws.StringValue `query:"DefaultValue" xml:"DefaultValue"` - Description aws.StringValue `query:"Description" xml:"Description"` - NoEcho aws.BooleanValue `query:"NoEcho" xml:"NoEcho"` - ParameterKey aws.StringValue `query:"ParameterKey" xml:"ParameterKey"` - ParameterType aws.StringValue `query:"ParameterType" xml:"ParameterType"` -} - -// Possible values for CloudFormation. -const ( - ResourceSignalStatusFailure = "FAILURE" - ResourceSignalStatusSuccess = "SUCCESS" -) - -// Possible values for CloudFormation. -const ( - ResourceStatusCreateComplete = "CREATE_COMPLETE" - ResourceStatusCreateFailed = "CREATE_FAILED" - ResourceStatusCreateInProgress = "CREATE_IN_PROGRESS" - ResourceStatusDeleteComplete = "DELETE_COMPLETE" - ResourceStatusDeleteFailed = "DELETE_FAILED" - ResourceStatusDeleteInProgress = "DELETE_IN_PROGRESS" - ResourceStatusDeleteSkipped = "DELETE_SKIPPED" - ResourceStatusUpdateComplete = "UPDATE_COMPLETE" - ResourceStatusUpdateFailed = "UPDATE_FAILED" - ResourceStatusUpdateInProgress = "UPDATE_IN_PROGRESS" -) - -// SetStackPolicyInput is undocumented. -type SetStackPolicyInput struct { - StackName aws.StringValue `query:"StackName" xml:"StackName"` - StackPolicyBody aws.StringValue `query:"StackPolicyBody" xml:"StackPolicyBody"` - StackPolicyURL aws.StringValue `query:"StackPolicyURL" xml:"StackPolicyURL"` -} - -// SignalResourceInput is undocumented. -type SignalResourceInput struct { - LogicalResourceID aws.StringValue `query:"LogicalResourceId" xml:"LogicalResourceId"` - StackName aws.StringValue `query:"StackName" xml:"StackName"` - Status aws.StringValue `query:"Status" xml:"Status"` - UniqueID aws.StringValue `query:"UniqueId" xml:"UniqueId"` -} - -// Stack is undocumented. -type Stack struct { - Capabilities []string `query:"Capabilities.member" xml:"Capabilities>member"` - CreationTime time.Time `query:"CreationTime" xml:"CreationTime"` - Description aws.StringValue `query:"Description" xml:"Description"` - DisableRollback aws.BooleanValue `query:"DisableRollback" xml:"DisableRollback"` - LastUpdatedTime time.Time `query:"LastUpdatedTime" xml:"LastUpdatedTime"` - NotificationARNs []string `query:"NotificationARNs.member" xml:"NotificationARNs>member"` - Outputs []Output `query:"Outputs.member" xml:"Outputs>member"` - Parameters []Parameter `query:"Parameters.member" xml:"Parameters>member"` - StackID aws.StringValue `query:"StackId" xml:"StackId"` - StackName aws.StringValue `query:"StackName" xml:"StackName"` - StackStatus aws.StringValue `query:"StackStatus" xml:"StackStatus"` - StackStatusReason aws.StringValue `query:"StackStatusReason" xml:"StackStatusReason"` - Tags []Tag `query:"Tags.member" xml:"Tags>member"` - TimeoutInMinutes aws.IntegerValue `query:"TimeoutInMinutes" xml:"TimeoutInMinutes"` -} - -// StackEvent is undocumented. -type StackEvent struct { - EventID aws.StringValue `query:"EventId" xml:"EventId"` - LogicalResourceID aws.StringValue `query:"LogicalResourceId" xml:"LogicalResourceId"` - PhysicalResourceID aws.StringValue `query:"PhysicalResourceId" xml:"PhysicalResourceId"` - ResourceProperties aws.StringValue `query:"ResourceProperties" xml:"ResourceProperties"` - ResourceStatus aws.StringValue `query:"ResourceStatus" xml:"ResourceStatus"` - ResourceStatusReason aws.StringValue `query:"ResourceStatusReason" xml:"ResourceStatusReason"` - ResourceType aws.StringValue `query:"ResourceType" xml:"ResourceType"` - StackID aws.StringValue `query:"StackId" xml:"StackId"` - StackName aws.StringValue `query:"StackName" xml:"StackName"` - Timestamp time.Time `query:"Timestamp" xml:"Timestamp"` -} - -// StackResource is undocumented. -type StackResource struct { - Description aws.StringValue `query:"Description" xml:"Description"` - LogicalResourceID aws.StringValue `query:"LogicalResourceId" xml:"LogicalResourceId"` - PhysicalResourceID aws.StringValue `query:"PhysicalResourceId" xml:"PhysicalResourceId"` - ResourceStatus aws.StringValue `query:"ResourceStatus" xml:"ResourceStatus"` - ResourceStatusReason aws.StringValue `query:"ResourceStatusReason" xml:"ResourceStatusReason"` - ResourceType aws.StringValue `query:"ResourceType" xml:"ResourceType"` - StackID aws.StringValue `query:"StackId" xml:"StackId"` - StackName aws.StringValue `query:"StackName" xml:"StackName"` - Timestamp time.Time `query:"Timestamp" xml:"Timestamp"` -} - -// StackResourceDetail is undocumented. -type StackResourceDetail struct { - Description aws.StringValue `query:"Description" xml:"Description"` - LastUpdatedTimestamp time.Time `query:"LastUpdatedTimestamp" xml:"LastUpdatedTimestamp"` - LogicalResourceID aws.StringValue `query:"LogicalResourceId" xml:"LogicalResourceId"` - Metadata aws.StringValue `query:"Metadata" xml:"Metadata"` - PhysicalResourceID aws.StringValue `query:"PhysicalResourceId" xml:"PhysicalResourceId"` - ResourceStatus aws.StringValue `query:"ResourceStatus" xml:"ResourceStatus"` - ResourceStatusReason aws.StringValue `query:"ResourceStatusReason" xml:"ResourceStatusReason"` - ResourceType aws.StringValue `query:"ResourceType" xml:"ResourceType"` - StackID aws.StringValue `query:"StackId" xml:"StackId"` - StackName aws.StringValue `query:"StackName" xml:"StackName"` -} - -// StackResourceSummary is undocumented. -type StackResourceSummary struct { - LastUpdatedTimestamp time.Time `query:"LastUpdatedTimestamp" xml:"LastUpdatedTimestamp"` - LogicalResourceID aws.StringValue `query:"LogicalResourceId" xml:"LogicalResourceId"` - PhysicalResourceID aws.StringValue `query:"PhysicalResourceId" xml:"PhysicalResourceId"` - ResourceStatus aws.StringValue `query:"ResourceStatus" xml:"ResourceStatus"` - ResourceStatusReason aws.StringValue `query:"ResourceStatusReason" xml:"ResourceStatusReason"` - ResourceType aws.StringValue `query:"ResourceType" xml:"ResourceType"` -} - -// Possible values for CloudFormation. -const ( - StackStatusCreateComplete = "CREATE_COMPLETE" - StackStatusCreateFailed = "CREATE_FAILED" - StackStatusCreateInProgress = "CREATE_IN_PROGRESS" - StackStatusDeleteComplete = "DELETE_COMPLETE" - StackStatusDeleteFailed = "DELETE_FAILED" - StackStatusDeleteInProgress = "DELETE_IN_PROGRESS" - StackStatusRollbackComplete = "ROLLBACK_COMPLETE" - StackStatusRollbackFailed = "ROLLBACK_FAILED" - StackStatusRollbackInProgress = "ROLLBACK_IN_PROGRESS" - StackStatusUpdateComplete = "UPDATE_COMPLETE" - StackStatusUpdateCompleteCleanupInProgress = "UPDATE_COMPLETE_CLEANUP_IN_PROGRESS" - StackStatusUpdateInProgress = "UPDATE_IN_PROGRESS" - StackStatusUpdateRollbackComplete = "UPDATE_ROLLBACK_COMPLETE" - StackStatusUpdateRollbackCompleteCleanupInProgress = "UPDATE_ROLLBACK_COMPLETE_CLEANUP_IN_PROGRESS" - StackStatusUpdateRollbackFailed = "UPDATE_ROLLBACK_FAILED" - StackStatusUpdateRollbackInProgress = "UPDATE_ROLLBACK_IN_PROGRESS" -) - -// StackSummary is undocumented. -type StackSummary struct { - CreationTime time.Time `query:"CreationTime" xml:"CreationTime"` - DeletionTime time.Time `query:"DeletionTime" xml:"DeletionTime"` - LastUpdatedTime time.Time `query:"LastUpdatedTime" xml:"LastUpdatedTime"` - StackID aws.StringValue `query:"StackId" xml:"StackId"` - StackName aws.StringValue `query:"StackName" xml:"StackName"` - StackStatus aws.StringValue `query:"StackStatus" xml:"StackStatus"` - StackStatusReason aws.StringValue `query:"StackStatusReason" xml:"StackStatusReason"` - TemplateDescription aws.StringValue `query:"TemplateDescription" xml:"TemplateDescription"` -} - -// Tag is undocumented. -type Tag struct { - Key aws.StringValue `query:"Key" xml:"Key"` - Value aws.StringValue `query:"Value" xml:"Value"` -} - -// TemplateParameter is undocumented. -type TemplateParameter struct { - DefaultValue aws.StringValue `query:"DefaultValue" xml:"DefaultValue"` - Description aws.StringValue `query:"Description" xml:"Description"` - NoEcho aws.BooleanValue `query:"NoEcho" xml:"NoEcho"` - ParameterKey aws.StringValue `query:"ParameterKey" xml:"ParameterKey"` -} - -// UpdateStackInput is undocumented. -type UpdateStackInput struct { - Capabilities []string `query:"Capabilities.member" xml:"Capabilities>member"` - NotificationARNs []string `query:"NotificationARNs.member" xml:"NotificationARNs>member"` - Parameters []Parameter `query:"Parameters.member" xml:"Parameters>member"` - StackName aws.StringValue `query:"StackName" xml:"StackName"` - StackPolicyBody aws.StringValue `query:"StackPolicyBody" xml:"StackPolicyBody"` - StackPolicyDuringUpdateBody aws.StringValue `query:"StackPolicyDuringUpdateBody" xml:"StackPolicyDuringUpdateBody"` - StackPolicyDuringUpdateURL aws.StringValue `query:"StackPolicyDuringUpdateURL" xml:"StackPolicyDuringUpdateURL"` - StackPolicyURL aws.StringValue `query:"StackPolicyURL" xml:"StackPolicyURL"` - TemplateBody aws.StringValue `query:"TemplateBody" xml:"TemplateBody"` - TemplateURL aws.StringValue `query:"TemplateURL" xml:"TemplateURL"` - UsePreviousTemplate aws.BooleanValue `query:"UsePreviousTemplate" xml:"UsePreviousTemplate"` -} - -// UpdateStackOutput is undocumented. -type UpdateStackOutput struct { - StackID aws.StringValue `query:"StackId" xml:"UpdateStackResult>StackId"` -} - -// ValidateTemplateInput is undocumented. -type ValidateTemplateInput struct { - TemplateBody aws.StringValue `query:"TemplateBody" xml:"TemplateBody"` - TemplateURL aws.StringValue `query:"TemplateURL" xml:"TemplateURL"` -} - -// ValidateTemplateOutput is undocumented. -type ValidateTemplateOutput struct { - Capabilities []string `query:"Capabilities.member" xml:"ValidateTemplateResult>Capabilities>member"` - CapabilitiesReason aws.StringValue `query:"CapabilitiesReason" xml:"ValidateTemplateResult>CapabilitiesReason"` - Description aws.StringValue `query:"Description" xml:"ValidateTemplateResult>Description"` - Parameters []TemplateParameter `query:"Parameters.member" xml:"ValidateTemplateResult>Parameters>member"` -} - -// CreateStackResult is a wrapper for CreateStackOutput. -type CreateStackResult struct { - StackID aws.StringValue `query:"StackId" xml:"CreateStackResult>StackId"` -} - -// DescribeStackEventsResult is a wrapper for DescribeStackEventsOutput. -type DescribeStackEventsResult struct { - NextToken aws.StringValue `query:"NextToken" xml:"DescribeStackEventsResult>NextToken"` - StackEvents []StackEvent `query:"StackEvents.member" xml:"DescribeStackEventsResult>StackEvents>member"` -} - -// DescribeStackResourceResult is a wrapper for DescribeStackResourceOutput. -type DescribeStackResourceResult struct { - StackResourceDetail *StackResourceDetail `query:"StackResourceDetail" xml:"DescribeStackResourceResult>StackResourceDetail"` -} - -// DescribeStackResourcesResult is a wrapper for DescribeStackResourcesOutput. -type DescribeStackResourcesResult struct { - StackResources []StackResource `query:"StackResources.member" xml:"DescribeStackResourcesResult>StackResources>member"` -} - -// DescribeStacksResult is a wrapper for DescribeStacksOutput. -type DescribeStacksResult struct { - NextToken aws.StringValue `query:"NextToken" xml:"DescribeStacksResult>NextToken"` - Stacks []Stack `query:"Stacks.member" xml:"DescribeStacksResult>Stacks>member"` -} - -// EstimateTemplateCostResult is a wrapper for EstimateTemplateCostOutput. -type EstimateTemplateCostResult struct { - URL aws.StringValue `query:"Url" xml:"EstimateTemplateCostResult>Url"` -} - -// GetStackPolicyResult is a wrapper for GetStackPolicyOutput. -type GetStackPolicyResult struct { - StackPolicyBody aws.StringValue `query:"StackPolicyBody" xml:"GetStackPolicyResult>StackPolicyBody"` -} - -// GetTemplateResult is a wrapper for GetTemplateOutput. -type GetTemplateResult struct { - TemplateBody aws.StringValue `query:"TemplateBody" xml:"GetTemplateResult>TemplateBody"` -} - -// GetTemplateSummaryResult is a wrapper for GetTemplateSummaryOutput. -type GetTemplateSummaryResult struct { - Capabilities []string `query:"Capabilities.member" xml:"GetTemplateSummaryResult>Capabilities>member"` - CapabilitiesReason aws.StringValue `query:"CapabilitiesReason" xml:"GetTemplateSummaryResult>CapabilitiesReason"` - Description aws.StringValue `query:"Description" xml:"GetTemplateSummaryResult>Description"` - Parameters []ParameterDeclaration `query:"Parameters.member" xml:"GetTemplateSummaryResult>Parameters>member"` - Version aws.StringValue `query:"Version" xml:"GetTemplateSummaryResult>Version"` -} - -// ListStackResourcesResult is a wrapper for ListStackResourcesOutput. -type ListStackResourcesResult struct { - NextToken aws.StringValue `query:"NextToken" xml:"ListStackResourcesResult>NextToken"` - StackResourceSummaries []StackResourceSummary `query:"StackResourceSummaries.member" xml:"ListStackResourcesResult>StackResourceSummaries>member"` -} - -// ListStacksResult is a wrapper for ListStacksOutput. -type ListStacksResult struct { - NextToken aws.StringValue `query:"NextToken" xml:"ListStacksResult>NextToken"` - StackSummaries []StackSummary `query:"StackSummaries.member" xml:"ListStacksResult>StackSummaries>member"` -} - -// UpdateStackResult is a wrapper for UpdateStackOutput. -type UpdateStackResult struct { - StackID aws.StringValue `query:"StackId" xml:"UpdateStackResult>StackId"` -} - -// ValidateTemplateResult is a wrapper for ValidateTemplateOutput. -type ValidateTemplateResult struct { - Capabilities []string `query:"Capabilities.member" xml:"ValidateTemplateResult>Capabilities>member"` - CapabilitiesReason aws.StringValue `query:"CapabilitiesReason" xml:"ValidateTemplateResult>CapabilitiesReason"` - Description aws.StringValue `query:"Description" xml:"ValidateTemplateResult>Description"` - Parameters []TemplateParameter `query:"Parameters.member" xml:"ValidateTemplateResult>Parameters>member"` -} - -// avoid errors if the packages aren't referenced -var _ time.Time - -var _ xml.Decoder -var _ = io.EOF diff --git a/src/github.com/getlantern/aws-sdk-go/gen/cloudfront/cloudfront.go b/src/github.com/getlantern/aws-sdk-go/gen/cloudfront/cloudfront.go deleted file mode 100644 index bb41a8fc53..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/gen/cloudfront/cloudfront.go +++ /dev/null @@ -1,2313 +0,0 @@ -// THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. - -// Package cloudfront provides a client for Amazon CloudFront. -package cloudfront - -import ( - "net/http" - "time" - - "github.com/getlantern/aws-sdk-go/aws" - "github.com/getlantern/aws-sdk-go/gen/endpoints" -) - -import ( - "bytes" - "encoding/xml" - "fmt" - "io" - "io/ioutil" - "net/url" - "strconv" - "strings" -) - -// CloudFront is a client for Amazon CloudFront. -type CloudFront struct { - client *aws.RestClient -} - -// New returns a new CloudFront client. -func New(creds aws.CredentialsProvider, region string, client *http.Client) *CloudFront { - if client == nil { - client = http.DefaultClient - } - - endpoint, service, region := endpoints.Lookup("cloudfront", region) - - return &CloudFront{ - client: &aws.RestClient{ - Context: aws.Context{ - Credentials: creds, - Service: service, - Region: region, - }, - Client: client, - Endpoint: endpoint, - APIVersion: "2014-10-21", - }, - } -} - -// CreateCloudFrontOriginAccessIdentity is undocumented. -func (c *CloudFront) CreateCloudFrontOriginAccessIdentity(req *CreateCloudFrontOriginAccessIdentityRequest) (resp *CreateCloudFrontOriginAccessIdentityResult, err error) { - resp = &CreateCloudFrontOriginAccessIdentityResult{} - - var body io.Reader - var contentType string - - contentType = "application/xml" - - if req.CloudFrontOriginAccessIdentityConfig != nil { - req.CloudFrontOriginAccessIdentityConfig.XMLName = xml.Name{ - Space: "http://cloudfront.amazonaws.com/doc/2014-10-21/", - Local: "CloudFrontOriginAccessIdentityConfig", - } - } - - b, err := xml.Marshal(req.CloudFrontOriginAccessIdentityConfig) - if err != nil { - return - } - body = bytes.NewReader(b) - - uri := c.client.Endpoint + "/2014-10-21/origin-access-identity/cloudfront" - - q := url.Values{} - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("POST", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - if e := xml.NewDecoder(httpResp.Body).Decode(&resp.CloudFrontOriginAccessIdentity); e != nil && e != io.EOF { - err = e - return - } - - if s := httpResp.Header.Get("ETag"); s != "" { - - resp.ETag = &s - - } - - if s := httpResp.Header.Get("Location"); s != "" { - - resp.Location = &s - - } - - return -} - -// CreateDistribution is undocumented. -func (c *CloudFront) CreateDistribution(req *CreateDistributionRequest) (resp *CreateDistributionResult, err error) { - resp = &CreateDistributionResult{} - - var body io.Reader - var contentType string - - contentType = "application/xml" - - if req.DistributionConfig != nil { - req.DistributionConfig.XMLName = xml.Name{ - Space: "http://cloudfront.amazonaws.com/doc/2014-10-21/", - Local: "DistributionConfig", - } - } - - b, err := xml.Marshal(req.DistributionConfig) - if err != nil { - return - } - body = bytes.NewReader(b) - - uri := c.client.Endpoint + "/2014-10-21/distribution" - - q := url.Values{} - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("POST", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - if e := xml.NewDecoder(httpResp.Body).Decode(&resp.Distribution); e != nil && e != io.EOF { - err = e - return - } - - if s := httpResp.Header.Get("ETag"); s != "" { - - resp.ETag = &s - - } - - if s := httpResp.Header.Get("Location"); s != "" { - - resp.Location = &s - - } - - return -} - -// CreateInvalidation is undocumented. -func (c *CloudFront) CreateInvalidation(req *CreateInvalidationRequest) (resp *CreateInvalidationResult, err error) { - resp = &CreateInvalidationResult{} - - var body io.Reader - var contentType string - - contentType = "application/xml" - - if req.InvalidationBatch != nil { - req.InvalidationBatch.XMLName = xml.Name{ - Space: "http://cloudfront.amazonaws.com/doc/2014-10-21/", - Local: "InvalidationBatch", - } - } - - b, err := xml.Marshal(req.InvalidationBatch) - if err != nil { - return - } - body = bytes.NewReader(b) - - uri := c.client.Endpoint + "/2014-10-21/distribution/{DistributionId}/invalidation" - - if req.DistributionID != nil { - uri = strings.Replace(uri, "{"+"DistributionId"+"}", aws.EscapePath(*req.DistributionID), -1) - uri = strings.Replace(uri, "{"+"DistributionId+"+"}", aws.EscapePath(*req.DistributionID), -1) - } - - q := url.Values{} - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("POST", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - if e := xml.NewDecoder(httpResp.Body).Decode(&resp.Invalidation); e != nil && e != io.EOF { - err = e - return - } - - if s := httpResp.Header.Get("Location"); s != "" { - - resp.Location = &s - - } - - return -} - -// CreateStreamingDistribution is undocumented. -func (c *CloudFront) CreateStreamingDistribution(req *CreateStreamingDistributionRequest) (resp *CreateStreamingDistributionResult, err error) { - resp = &CreateStreamingDistributionResult{} - - var body io.Reader - var contentType string - - contentType = "application/xml" - - if req.StreamingDistributionConfig != nil { - req.StreamingDistributionConfig.XMLName = xml.Name{ - Space: "http://cloudfront.amazonaws.com/doc/2014-10-21/", - Local: "StreamingDistributionConfig", - } - } - - b, err := xml.Marshal(req.StreamingDistributionConfig) - if err != nil { - return - } - body = bytes.NewReader(b) - - uri := c.client.Endpoint + "/2014-10-21/streaming-distribution" - - q := url.Values{} - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("POST", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - if e := xml.NewDecoder(httpResp.Body).Decode(&resp.StreamingDistribution); e != nil && e != io.EOF { - err = e - return - } - - if s := httpResp.Header.Get("ETag"); s != "" { - - resp.ETag = &s - - } - - if s := httpResp.Header.Get("Location"); s != "" { - - resp.Location = &s - - } - - return -} - -// DeleteCloudFrontOriginAccessIdentity is undocumented. -func (c *CloudFront) DeleteCloudFrontOriginAccessIdentity(req *DeleteCloudFrontOriginAccessIdentityRequest) (err error) { - // NRE - - var body io.Reader - var contentType string - - uri := c.client.Endpoint + "/2014-10-21/origin-access-identity/cloudfront/{Id}" - - if req.ID != nil { - uri = strings.Replace(uri, "{"+"Id"+"}", aws.EscapePath(*req.ID), -1) - uri = strings.Replace(uri, "{"+"Id+"+"}", aws.EscapePath(*req.ID), -1) - } - - q := url.Values{} - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("DELETE", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - if req.IfMatch != nil { - httpReq.Header.Set("If-Match", *req.IfMatch) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - - return -} - -// DeleteDistribution is undocumented. -func (c *CloudFront) DeleteDistribution(req *DeleteDistributionRequest) (err error) { - // NRE - - var body io.Reader - var contentType string - - uri := c.client.Endpoint + "/2014-10-21/distribution/{Id}" - - if req.ID != nil { - uri = strings.Replace(uri, "{"+"Id"+"}", aws.EscapePath(*req.ID), -1) - uri = strings.Replace(uri, "{"+"Id+"+"}", aws.EscapePath(*req.ID), -1) - } - - q := url.Values{} - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("DELETE", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - if req.IfMatch != nil { - httpReq.Header.Set("If-Match", *req.IfMatch) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - - return -} - -// DeleteStreamingDistribution is undocumented. -func (c *CloudFront) DeleteStreamingDistribution(req *DeleteStreamingDistributionRequest) (err error) { - // NRE - - var body io.Reader - var contentType string - - uri := c.client.Endpoint + "/2014-10-21/streaming-distribution/{Id}" - - if req.ID != nil { - uri = strings.Replace(uri, "{"+"Id"+"}", aws.EscapePath(*req.ID), -1) - uri = strings.Replace(uri, "{"+"Id+"+"}", aws.EscapePath(*req.ID), -1) - } - - q := url.Values{} - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("DELETE", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - if req.IfMatch != nil { - httpReq.Header.Set("If-Match", *req.IfMatch) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - - return -} - -// GetCloudFrontOriginAccessIdentity get the information about an origin -// access identity. -func (c *CloudFront) GetCloudFrontOriginAccessIdentity(req *GetCloudFrontOriginAccessIdentityRequest) (resp *GetCloudFrontOriginAccessIdentityResult, err error) { - resp = &GetCloudFrontOriginAccessIdentityResult{} - - var body io.Reader - var contentType string - - uri := c.client.Endpoint + "/2014-10-21/origin-access-identity/cloudfront/{Id}" - - if req.ID != nil { - uri = strings.Replace(uri, "{"+"Id"+"}", aws.EscapePath(*req.ID), -1) - uri = strings.Replace(uri, "{"+"Id+"+"}", aws.EscapePath(*req.ID), -1) - } - - q := url.Values{} - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("GET", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - if e := xml.NewDecoder(httpResp.Body).Decode(&resp.CloudFrontOriginAccessIdentity); e != nil && e != io.EOF { - err = e - return - } - - if s := httpResp.Header.Get("ETag"); s != "" { - - resp.ETag = &s - - } - - return -} - -// GetCloudFrontOriginAccessIdentityConfig get the configuration -// information about an origin access identity. -func (c *CloudFront) GetCloudFrontOriginAccessIdentityConfig(req *GetCloudFrontOriginAccessIdentityConfigRequest) (resp *GetCloudFrontOriginAccessIdentityConfigResult, err error) { - resp = &GetCloudFrontOriginAccessIdentityConfigResult{} - - var body io.Reader - var contentType string - - uri := c.client.Endpoint + "/2014-10-21/origin-access-identity/cloudfront/{Id}/config" - - if req.ID != nil { - uri = strings.Replace(uri, "{"+"Id"+"}", aws.EscapePath(*req.ID), -1) - uri = strings.Replace(uri, "{"+"Id+"+"}", aws.EscapePath(*req.ID), -1) - } - - q := url.Values{} - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("GET", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - if e := xml.NewDecoder(httpResp.Body).Decode(&resp.CloudFrontOriginAccessIdentityConfig); e != nil && e != io.EOF { - err = e - return - } - - if s := httpResp.Header.Get("ETag"); s != "" { - - resp.ETag = &s - - } - - return -} - -// GetDistribution is undocumented. -func (c *CloudFront) GetDistribution(req *GetDistributionRequest) (resp *GetDistributionResult, err error) { - resp = &GetDistributionResult{} - - var body io.Reader - var contentType string - - uri := c.client.Endpoint + "/2014-10-21/distribution/{Id}" - - if req.ID != nil { - uri = strings.Replace(uri, "{"+"Id"+"}", aws.EscapePath(*req.ID), -1) - uri = strings.Replace(uri, "{"+"Id+"+"}", aws.EscapePath(*req.ID), -1) - } - - q := url.Values{} - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("GET", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - if e := xml.NewDecoder(httpResp.Body).Decode(&resp.Distribution); e != nil && e != io.EOF { - err = e - return - } - - if s := httpResp.Header.Get("ETag"); s != "" { - - resp.ETag = &s - - } - - return -} - -// GetDistributionConfig get the configuration information about a -// distribution. -func (c *CloudFront) GetDistributionConfig(req *GetDistributionConfigRequest) (resp *GetDistributionConfigResult, err error) { - resp = &GetDistributionConfigResult{} - - var body io.Reader - var contentType string - - uri := c.client.Endpoint + "/2014-10-21/distribution/{Id}/config" - - if req.ID != nil { - uri = strings.Replace(uri, "{"+"Id"+"}", aws.EscapePath(*req.ID), -1) - uri = strings.Replace(uri, "{"+"Id+"+"}", aws.EscapePath(*req.ID), -1) - } - - q := url.Values{} - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("GET", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - if e := xml.NewDecoder(httpResp.Body).Decode(&resp.DistributionConfig); e != nil && e != io.EOF { - err = e - return - } - - if s := httpResp.Header.Get("ETag"); s != "" { - - resp.ETag = &s - - } - - return -} - -// GetInvalidation is undocumented. -func (c *CloudFront) GetInvalidation(req *GetInvalidationRequest) (resp *GetInvalidationResult, err error) { - resp = &GetInvalidationResult{} - - var body io.Reader - var contentType string - - uri := c.client.Endpoint + "/2014-10-21/distribution/{DistributionId}/invalidation/{Id}" - - if req.DistributionID != nil { - uri = strings.Replace(uri, "{"+"DistributionId"+"}", aws.EscapePath(*req.DistributionID), -1) - uri = strings.Replace(uri, "{"+"DistributionId+"+"}", aws.EscapePath(*req.DistributionID), -1) - } - - if req.ID != nil { - uri = strings.Replace(uri, "{"+"Id"+"}", aws.EscapePath(*req.ID), -1) - uri = strings.Replace(uri, "{"+"Id+"+"}", aws.EscapePath(*req.ID), -1) - } - - q := url.Values{} - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("GET", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - if e := xml.NewDecoder(httpResp.Body).Decode(&resp.Invalidation); e != nil && e != io.EOF { - err = e - return - } - - return -} - -// GetStreamingDistribution get the information about a streaming -// distribution. -func (c *CloudFront) GetStreamingDistribution(req *GetStreamingDistributionRequest) (resp *GetStreamingDistributionResult, err error) { - resp = &GetStreamingDistributionResult{} - - var body io.Reader - var contentType string - - uri := c.client.Endpoint + "/2014-10-21/streaming-distribution/{Id}" - - if req.ID != nil { - uri = strings.Replace(uri, "{"+"Id"+"}", aws.EscapePath(*req.ID), -1) - uri = strings.Replace(uri, "{"+"Id+"+"}", aws.EscapePath(*req.ID), -1) - } - - q := url.Values{} - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("GET", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - if e := xml.NewDecoder(httpResp.Body).Decode(&resp.StreamingDistribution); e != nil && e != io.EOF { - err = e - return - } - - if s := httpResp.Header.Get("ETag"); s != "" { - - resp.ETag = &s - - } - - return -} - -// GetStreamingDistributionConfig get the configuration information about a -// streaming distribution. -func (c *CloudFront) GetStreamingDistributionConfig(req *GetStreamingDistributionConfigRequest) (resp *GetStreamingDistributionConfigResult, err error) { - resp = &GetStreamingDistributionConfigResult{} - - var body io.Reader - var contentType string - - uri := c.client.Endpoint + "/2014-10-21/streaming-distribution/{Id}/config" - - if req.ID != nil { - uri = strings.Replace(uri, "{"+"Id"+"}", aws.EscapePath(*req.ID), -1) - uri = strings.Replace(uri, "{"+"Id+"+"}", aws.EscapePath(*req.ID), -1) - } - - q := url.Values{} - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("GET", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - if e := xml.NewDecoder(httpResp.Body).Decode(&resp.StreamingDistributionConfig); e != nil && e != io.EOF { - err = e - return - } - - if s := httpResp.Header.Get("ETag"); s != "" { - - resp.ETag = &s - - } - - return -} - -// ListCloudFrontOriginAccessIdentities is undocumented. -func (c *CloudFront) ListCloudFrontOriginAccessIdentities(req *ListCloudFrontOriginAccessIdentitiesRequest) (resp *ListCloudFrontOriginAccessIdentitiesResult, err error) { - resp = &ListCloudFrontOriginAccessIdentitiesResult{} - - var body io.Reader - var contentType string - - uri := c.client.Endpoint + "/2014-10-21/origin-access-identity/cloudfront" - - q := url.Values{} - - if req.Marker != nil { - q.Set("Marker", *req.Marker) - } - - if req.MaxItems != nil { - q.Set("MaxItems", *req.MaxItems) - } - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("GET", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - if e := xml.NewDecoder(httpResp.Body).Decode(&resp.CloudFrontOriginAccessIdentityList); e != nil && e != io.EOF { - err = e - return - } - - return -} - -// ListDistributions is undocumented. -func (c *CloudFront) ListDistributions(req *ListDistributionsRequest) (resp *ListDistributionsResult, err error) { - resp = &ListDistributionsResult{} - - var body io.Reader - var contentType string - - uri := c.client.Endpoint + "/2014-10-21/distribution" - - q := url.Values{} - - if req.Marker != nil { - q.Set("Marker", *req.Marker) - } - - if req.MaxItems != nil { - q.Set("MaxItems", *req.MaxItems) - } - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("GET", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - if e := xml.NewDecoder(httpResp.Body).Decode(&resp.DistributionList); e != nil && e != io.EOF { - err = e - return - } - - return -} - -// ListInvalidations is undocumented. -func (c *CloudFront) ListInvalidations(req *ListInvalidationsRequest) (resp *ListInvalidationsResult, err error) { - resp = &ListInvalidationsResult{} - - var body io.Reader - var contentType string - - uri := c.client.Endpoint + "/2014-10-21/distribution/{DistributionId}/invalidation" - - if req.DistributionID != nil { - uri = strings.Replace(uri, "{"+"DistributionId"+"}", aws.EscapePath(*req.DistributionID), -1) - uri = strings.Replace(uri, "{"+"DistributionId+"+"}", aws.EscapePath(*req.DistributionID), -1) - } - - q := url.Values{} - - if req.Marker != nil { - q.Set("Marker", *req.Marker) - } - - if req.MaxItems != nil { - q.Set("MaxItems", *req.MaxItems) - } - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("GET", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - if e := xml.NewDecoder(httpResp.Body).Decode(&resp.InvalidationList); e != nil && e != io.EOF { - err = e - return - } - - return -} - -// ListStreamingDistributions is undocumented. -func (c *CloudFront) ListStreamingDistributions(req *ListStreamingDistributionsRequest) (resp *ListStreamingDistributionsResult, err error) { - resp = &ListStreamingDistributionsResult{} - - var body io.Reader - var contentType string - - uri := c.client.Endpoint + "/2014-10-21/streaming-distribution" - - q := url.Values{} - - if req.Marker != nil { - q.Set("Marker", *req.Marker) - } - - if req.MaxItems != nil { - q.Set("MaxItems", *req.MaxItems) - } - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("GET", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - if e := xml.NewDecoder(httpResp.Body).Decode(&resp.StreamingDistributionList); e != nil && e != io.EOF { - err = e - return - } - - return -} - -// UpdateCloudFrontOriginAccessIdentity is undocumented. -func (c *CloudFront) UpdateCloudFrontOriginAccessIdentity(req *UpdateCloudFrontOriginAccessIdentityRequest) (resp *UpdateCloudFrontOriginAccessIdentityResult, err error) { - resp = &UpdateCloudFrontOriginAccessIdentityResult{} - - var body io.Reader - var contentType string - - contentType = "application/xml" - - if req.CloudFrontOriginAccessIdentityConfig != nil { - req.CloudFrontOriginAccessIdentityConfig.XMLName = xml.Name{ - Space: "http://cloudfront.amazonaws.com/doc/2014-10-21/", - Local: "CloudFrontOriginAccessIdentityConfig", - } - } - - b, err := xml.Marshal(req.CloudFrontOriginAccessIdentityConfig) - if err != nil { - return - } - body = bytes.NewReader(b) - - uri := c.client.Endpoint + "/2014-10-21/origin-access-identity/cloudfront/{Id}/config" - - if req.ID != nil { - uri = strings.Replace(uri, "{"+"Id"+"}", aws.EscapePath(*req.ID), -1) - uri = strings.Replace(uri, "{"+"Id+"+"}", aws.EscapePath(*req.ID), -1) - } - - q := url.Values{} - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("PUT", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - if req.IfMatch != nil { - httpReq.Header.Set("If-Match", *req.IfMatch) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - if e := xml.NewDecoder(httpResp.Body).Decode(&resp.CloudFrontOriginAccessIdentity); e != nil && e != io.EOF { - err = e - return - } - - if s := httpResp.Header.Get("ETag"); s != "" { - - resp.ETag = &s - - } - - return -} - -// UpdateDistribution is undocumented. -func (c *CloudFront) UpdateDistribution(req *UpdateDistributionRequest) (resp *UpdateDistributionResult, err error) { - resp = &UpdateDistributionResult{} - - var body io.Reader - var contentType string - - contentType = "application/xml" - - if req.DistributionConfig != nil { - req.DistributionConfig.XMLName = xml.Name{ - Space: "http://cloudfront.amazonaws.com/doc/2014-10-21/", - Local: "DistributionConfig", - } - } - - b, err := xml.Marshal(req.DistributionConfig) - if err != nil { - return - } - body = bytes.NewReader(b) - - uri := c.client.Endpoint + "/2014-10-21/distribution/{Id}/config" - - if req.ID != nil { - uri = strings.Replace(uri, "{"+"Id"+"}", aws.EscapePath(*req.ID), -1) - uri = strings.Replace(uri, "{"+"Id+"+"}", aws.EscapePath(*req.ID), -1) - } - - q := url.Values{} - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("PUT", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - if req.IfMatch != nil { - httpReq.Header.Set("If-Match", *req.IfMatch) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - if e := xml.NewDecoder(httpResp.Body).Decode(&resp.Distribution); e != nil && e != io.EOF { - err = e - return - } - - if s := httpResp.Header.Get("ETag"); s != "" { - - resp.ETag = &s - - } - - return -} - -// UpdateStreamingDistribution is undocumented. -func (c *CloudFront) UpdateStreamingDistribution(req *UpdateStreamingDistributionRequest) (resp *UpdateStreamingDistributionResult, err error) { - resp = &UpdateStreamingDistributionResult{} - - var body io.Reader - var contentType string - - contentType = "application/xml" - - if req.StreamingDistributionConfig != nil { - req.StreamingDistributionConfig.XMLName = xml.Name{ - Space: "http://cloudfront.amazonaws.com/doc/2014-10-21/", - Local: "StreamingDistributionConfig", - } - } - - b, err := xml.Marshal(req.StreamingDistributionConfig) - if err != nil { - return - } - body = bytes.NewReader(b) - - uri := c.client.Endpoint + "/2014-10-21/streaming-distribution/{Id}/config" - - if req.ID != nil { - uri = strings.Replace(uri, "{"+"Id"+"}", aws.EscapePath(*req.ID), -1) - uri = strings.Replace(uri, "{"+"Id+"+"}", aws.EscapePath(*req.ID), -1) - } - - q := url.Values{} - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("PUT", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - if req.IfMatch != nil { - httpReq.Header.Set("If-Match", *req.IfMatch) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - if e := xml.NewDecoder(httpResp.Body).Decode(&resp.StreamingDistribution); e != nil && e != io.EOF { - err = e - return - } - - if s := httpResp.Header.Get("ETag"); s != "" { - - resp.ETag = &s - - } - - return -} - -// ActiveTrustedSigners is undocumented. -type ActiveTrustedSigners struct { - XMLName xml.Name - - Enabled aws.BooleanValue `xml:"Enabled"` - Items []Signer `xml:"Items>Signer,omitempty"` - Quantity aws.IntegerValue `xml:"Quantity"` -} - -func (v *ActiveTrustedSigners) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// Aliases is undocumented. -type Aliases struct { - XMLName xml.Name - - Items []string `xml:"Items>CNAME,omitempty"` - Quantity aws.IntegerValue `xml:"Quantity"` -} - -func (v *Aliases) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// AllowedMethods is undocumented. -type AllowedMethods struct { - XMLName xml.Name - - CachedMethods *CachedMethods `xml:"CachedMethods,omitempty"` - Items []string `xml:"Items>Method,omitempty"` - Quantity aws.IntegerValue `xml:"Quantity"` -} - -func (v *AllowedMethods) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// CacheBehavior is undocumented. -type CacheBehavior struct { - XMLName xml.Name - - AllowedMethods *AllowedMethods `xml:"AllowedMethods,omitempty"` - ForwardedValues *ForwardedValues `xml:"ForwardedValues,omitempty"` - MinTTL aws.LongValue `xml:"MinTTL"` - PathPattern aws.StringValue `xml:"PathPattern"` - SmoothStreaming aws.BooleanValue `xml:"SmoothStreaming"` - TargetOriginID aws.StringValue `xml:"TargetOriginId"` - TrustedSigners *TrustedSigners `xml:"TrustedSigners,omitempty"` - ViewerProtocolPolicy aws.StringValue `xml:"ViewerProtocolPolicy"` -} - -func (v *CacheBehavior) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// CacheBehaviors is undocumented. -type CacheBehaviors struct { - XMLName xml.Name - - Items []CacheBehavior `xml:"Items>CacheBehavior,omitempty"` - Quantity aws.IntegerValue `xml:"Quantity"` -} - -func (v *CacheBehaviors) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// CachedMethods is undocumented. -type CachedMethods struct { - XMLName xml.Name - - Items []string `xml:"Items>Method,omitempty"` - Quantity aws.IntegerValue `xml:"Quantity"` -} - -func (v *CachedMethods) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// CloudFrontOriginAccessIdentity is undocumented. -type CloudFrontOriginAccessIdentity struct { - XMLName xml.Name - - CloudFrontOriginAccessIdentityConfig *CloudFrontOriginAccessIdentityConfig `xml:"CloudFrontOriginAccessIdentityConfig,omitempty"` - ID aws.StringValue `xml:"Id"` - S3CanonicalUserID aws.StringValue `xml:"S3CanonicalUserId"` -} - -func (v *CloudFrontOriginAccessIdentity) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// CloudFrontOriginAccessIdentityConfig is undocumented. -type CloudFrontOriginAccessIdentityConfig struct { - XMLName xml.Name - - CallerReference aws.StringValue `xml:"CallerReference"` - Comment aws.StringValue `xml:"Comment"` -} - -func (v *CloudFrontOriginAccessIdentityConfig) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// CloudFrontOriginAccessIdentityList is undocumented. -type CloudFrontOriginAccessIdentityList struct { - XMLName xml.Name - - IsTruncated aws.BooleanValue `xml:"IsTruncated"` - Items []CloudFrontOriginAccessIdentitySummary `xml:"Items>CloudFrontOriginAccessIdentitySummary,omitempty"` - Marker aws.StringValue `xml:"Marker"` - MaxItems aws.IntegerValue `xml:"MaxItems"` - NextMarker aws.StringValue `xml:"NextMarker"` - Quantity aws.IntegerValue `xml:"Quantity"` -} - -func (v *CloudFrontOriginAccessIdentityList) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// CloudFrontOriginAccessIdentitySummary is undocumented. -type CloudFrontOriginAccessIdentitySummary struct { - XMLName xml.Name - - Comment aws.StringValue `xml:"Comment"` - ID aws.StringValue `xml:"Id"` - S3CanonicalUserID aws.StringValue `xml:"S3CanonicalUserId"` -} - -func (v *CloudFrontOriginAccessIdentitySummary) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// CookieNames is undocumented. -type CookieNames struct { - XMLName xml.Name - - Items []string `xml:"Items>Name,omitempty"` - Quantity aws.IntegerValue `xml:"Quantity"` -} - -func (v *CookieNames) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// CookiePreference is undocumented. -type CookiePreference struct { - XMLName xml.Name - - Forward aws.StringValue `xml:"Forward"` - WhitelistedNames *CookieNames `xml:"WhitelistedNames,omitempty"` -} - -func (v *CookiePreference) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// CreateCloudFrontOriginAccessIdentityRequest is undocumented. -type CreateCloudFrontOriginAccessIdentityRequest struct { - XMLName xml.Name - - CloudFrontOriginAccessIdentityConfig *CloudFrontOriginAccessIdentityConfig `xml:"CloudFrontOriginAccessIdentityConfig,omitempty"` -} - -func (v *CreateCloudFrontOriginAccessIdentityRequest) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// CreateCloudFrontOriginAccessIdentityResult is undocumented. -type CreateCloudFrontOriginAccessIdentityResult struct { - XMLName xml.Name - - CloudFrontOriginAccessIdentity *CloudFrontOriginAccessIdentity `xml:"CloudFrontOriginAccessIdentity,omitempty"` - ETag aws.StringValue `xml:"-"` - Location aws.StringValue `xml:"-"` -} - -func (v *CreateCloudFrontOriginAccessIdentityResult) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// CreateDistributionRequest is undocumented. -type CreateDistributionRequest struct { - XMLName xml.Name - - DistributionConfig *DistributionConfig `xml:"DistributionConfig,omitempty"` -} - -func (v *CreateDistributionRequest) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// CreateDistributionResult is undocumented. -type CreateDistributionResult struct { - XMLName xml.Name - - Distribution *Distribution `xml:"Distribution,omitempty"` - ETag aws.StringValue `xml:"-"` - Location aws.StringValue `xml:"-"` -} - -func (v *CreateDistributionResult) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// CreateInvalidationRequest is undocumented. -type CreateInvalidationRequest struct { - XMLName xml.Name - - DistributionID aws.StringValue `xml:"-"` - InvalidationBatch *InvalidationBatch `xml:"InvalidationBatch,omitempty"` -} - -func (v *CreateInvalidationRequest) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// CreateInvalidationResult is undocumented. -type CreateInvalidationResult struct { - XMLName xml.Name - - Invalidation *Invalidation `xml:"Invalidation,omitempty"` - Location aws.StringValue `xml:"-"` -} - -func (v *CreateInvalidationResult) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// CreateStreamingDistributionRequest is undocumented. -type CreateStreamingDistributionRequest struct { - XMLName xml.Name - - StreamingDistributionConfig *StreamingDistributionConfig `xml:"StreamingDistributionConfig,omitempty"` -} - -func (v *CreateStreamingDistributionRequest) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// CreateStreamingDistributionResult is undocumented. -type CreateStreamingDistributionResult struct { - XMLName xml.Name - - ETag aws.StringValue `xml:"-"` - Location aws.StringValue `xml:"-"` - StreamingDistribution *StreamingDistribution `xml:"StreamingDistribution,omitempty"` -} - -func (v *CreateStreamingDistributionResult) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// CustomErrorResponse is undocumented. -type CustomErrorResponse struct { - XMLName xml.Name - - ErrorCachingMinTTL aws.LongValue `xml:"ErrorCachingMinTTL"` - ErrorCode aws.IntegerValue `xml:"ErrorCode"` - ResponseCode aws.StringValue `xml:"ResponseCode"` - ResponsePagePath aws.StringValue `xml:"ResponsePagePath"` -} - -func (v *CustomErrorResponse) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// CustomErrorResponses is undocumented. -type CustomErrorResponses struct { - XMLName xml.Name - - Items []CustomErrorResponse `xml:"Items>CustomErrorResponse,omitempty"` - Quantity aws.IntegerValue `xml:"Quantity"` -} - -func (v *CustomErrorResponses) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// CustomOriginConfig is undocumented. -type CustomOriginConfig struct { - XMLName xml.Name - - HTTPPort aws.IntegerValue `xml:"HTTPPort"` - HTTPSPort aws.IntegerValue `xml:"HTTPSPort"` - OriginProtocolPolicy aws.StringValue `xml:"OriginProtocolPolicy"` -} - -func (v *CustomOriginConfig) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// DefaultCacheBehavior is undocumented. -type DefaultCacheBehavior struct { - XMLName xml.Name - - AllowedMethods *AllowedMethods `xml:"AllowedMethods,omitempty"` - ForwardedValues *ForwardedValues `xml:"ForwardedValues,omitempty"` - MinTTL aws.LongValue `xml:"MinTTL"` - SmoothStreaming aws.BooleanValue `xml:"SmoothStreaming"` - TargetOriginID aws.StringValue `xml:"TargetOriginId"` - TrustedSigners *TrustedSigners `xml:"TrustedSigners,omitempty"` - ViewerProtocolPolicy aws.StringValue `xml:"ViewerProtocolPolicy"` -} - -func (v *DefaultCacheBehavior) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// DeleteCloudFrontOriginAccessIdentityRequest is undocumented. -type DeleteCloudFrontOriginAccessIdentityRequest struct { - XMLName xml.Name - - ID aws.StringValue `xml:"-"` - IfMatch aws.StringValue `xml:"-"` -} - -func (v *DeleteCloudFrontOriginAccessIdentityRequest) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// DeleteDistributionRequest is undocumented. -type DeleteDistributionRequest struct { - XMLName xml.Name - - ID aws.StringValue `xml:"-"` - IfMatch aws.StringValue `xml:"-"` -} - -func (v *DeleteDistributionRequest) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// DeleteStreamingDistributionRequest is undocumented. -type DeleteStreamingDistributionRequest struct { - XMLName xml.Name - - ID aws.StringValue `xml:"-"` - IfMatch aws.StringValue `xml:"-"` -} - -func (v *DeleteStreamingDistributionRequest) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// Distribution is undocumented. -type Distribution struct { - XMLName xml.Name - - ActiveTrustedSigners *ActiveTrustedSigners `xml:"ActiveTrustedSigners,omitempty"` - DistributionConfig *DistributionConfig `xml:"DistributionConfig,omitempty"` - DomainName aws.StringValue `xml:"DomainName"` - ID aws.StringValue `xml:"Id"` - InProgressInvalidationBatches aws.IntegerValue `xml:"InProgressInvalidationBatches"` - LastModifiedTime time.Time `xml:"LastModifiedTime"` - Status aws.StringValue `xml:"Status"` -} - -func (v *Distribution) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// DistributionConfig is undocumented. -type DistributionConfig struct { - XMLName xml.Name - - Aliases *Aliases `xml:"Aliases,omitempty"` - CacheBehaviors *CacheBehaviors `xml:"CacheBehaviors,omitempty"` - CallerReference aws.StringValue `xml:"CallerReference"` - Comment aws.StringValue `xml:"Comment"` - CustomErrorResponses *CustomErrorResponses `xml:"CustomErrorResponses,omitempty"` - DefaultCacheBehavior *DefaultCacheBehavior `xml:"DefaultCacheBehavior,omitempty"` - DefaultRootObject aws.StringValue `xml:"DefaultRootObject"` - Enabled aws.BooleanValue `xml:"Enabled"` - Logging *LoggingConfig `xml:"Logging,omitempty"` - Origins *Origins `xml:"Origins,omitempty"` - PriceClass aws.StringValue `xml:"PriceClass"` - Restrictions *Restrictions `xml:"Restrictions,omitempty"` - ViewerCertificate *ViewerCertificate `xml:"ViewerCertificate,omitempty"` -} - -func (v *DistributionConfig) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// DistributionList is undocumented. -type DistributionList struct { - XMLName xml.Name - - IsTruncated aws.BooleanValue `xml:"IsTruncated"` - Items []DistributionSummary `xml:"Items>DistributionSummary,omitempty"` - Marker aws.StringValue `xml:"Marker"` - MaxItems aws.IntegerValue `xml:"MaxItems"` - NextMarker aws.StringValue `xml:"NextMarker"` - Quantity aws.IntegerValue `xml:"Quantity"` -} - -func (v *DistributionList) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// DistributionSummary is undocumented. -type DistributionSummary struct { - XMLName xml.Name - - Aliases *Aliases `xml:"Aliases,omitempty"` - CacheBehaviors *CacheBehaviors `xml:"CacheBehaviors,omitempty"` - Comment aws.StringValue `xml:"Comment"` - CustomErrorResponses *CustomErrorResponses `xml:"CustomErrorResponses,omitempty"` - DefaultCacheBehavior *DefaultCacheBehavior `xml:"DefaultCacheBehavior,omitempty"` - DomainName aws.StringValue `xml:"DomainName"` - Enabled aws.BooleanValue `xml:"Enabled"` - ID aws.StringValue `xml:"Id"` - LastModifiedTime time.Time `xml:"LastModifiedTime"` - Origins *Origins `xml:"Origins,omitempty"` - PriceClass aws.StringValue `xml:"PriceClass"` - Restrictions *Restrictions `xml:"Restrictions,omitempty"` - Status aws.StringValue `xml:"Status"` - ViewerCertificate *ViewerCertificate `xml:"ViewerCertificate,omitempty"` -} - -func (v *DistributionSummary) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// ForwardedValues is undocumented. -type ForwardedValues struct { - XMLName xml.Name - - Cookies *CookiePreference `xml:"Cookies,omitempty"` - Headers *Headers `xml:"Headers,omitempty"` - QueryString aws.BooleanValue `xml:"QueryString"` -} - -func (v *ForwardedValues) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// GeoRestriction is undocumented. -type GeoRestriction struct { - XMLName xml.Name - - Items []string `xml:"Items>Location,omitempty"` - Quantity aws.IntegerValue `xml:"Quantity"` - RestrictionType aws.StringValue `xml:"RestrictionType"` -} - -func (v *GeoRestriction) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// Possible values for CloudFront. -const ( - GeoRestrictionTypeBlacklist = "blacklist" - GeoRestrictionTypeNone = "none" - GeoRestrictionTypeWhitelist = "whitelist" -) - -// GetCloudFrontOriginAccessIdentityConfigRequest is undocumented. -type GetCloudFrontOriginAccessIdentityConfigRequest struct { - XMLName xml.Name - - ID aws.StringValue `xml:"-"` -} - -func (v *GetCloudFrontOriginAccessIdentityConfigRequest) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// GetCloudFrontOriginAccessIdentityConfigResult is undocumented. -type GetCloudFrontOriginAccessIdentityConfigResult struct { - XMLName xml.Name - - CloudFrontOriginAccessIdentityConfig *CloudFrontOriginAccessIdentityConfig `xml:"CloudFrontOriginAccessIdentityConfig,omitempty"` - ETag aws.StringValue `xml:"-"` -} - -func (v *GetCloudFrontOriginAccessIdentityConfigResult) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// GetCloudFrontOriginAccessIdentityRequest is undocumented. -type GetCloudFrontOriginAccessIdentityRequest struct { - XMLName xml.Name - - ID aws.StringValue `xml:"-"` -} - -func (v *GetCloudFrontOriginAccessIdentityRequest) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// GetCloudFrontOriginAccessIdentityResult is undocumented. -type GetCloudFrontOriginAccessIdentityResult struct { - XMLName xml.Name - - CloudFrontOriginAccessIdentity *CloudFrontOriginAccessIdentity `xml:"CloudFrontOriginAccessIdentity,omitempty"` - ETag aws.StringValue `xml:"-"` -} - -func (v *GetCloudFrontOriginAccessIdentityResult) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// GetDistributionConfigRequest is undocumented. -type GetDistributionConfigRequest struct { - XMLName xml.Name - - ID aws.StringValue `xml:"-"` -} - -func (v *GetDistributionConfigRequest) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// GetDistributionConfigResult is undocumented. -type GetDistributionConfigResult struct { - XMLName xml.Name - - DistributionConfig *DistributionConfig `xml:"DistributionConfig,omitempty"` - ETag aws.StringValue `xml:"-"` -} - -func (v *GetDistributionConfigResult) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// GetDistributionRequest is undocumented. -type GetDistributionRequest struct { - XMLName xml.Name - - ID aws.StringValue `xml:"-"` -} - -func (v *GetDistributionRequest) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// GetDistributionResult is undocumented. -type GetDistributionResult struct { - XMLName xml.Name - - Distribution *Distribution `xml:"Distribution,omitempty"` - ETag aws.StringValue `xml:"-"` -} - -func (v *GetDistributionResult) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// GetInvalidationRequest is undocumented. -type GetInvalidationRequest struct { - XMLName xml.Name - - DistributionID aws.StringValue `xml:"-"` - ID aws.StringValue `xml:"-"` -} - -func (v *GetInvalidationRequest) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// GetInvalidationResult is undocumented. -type GetInvalidationResult struct { - XMLName xml.Name - - Invalidation *Invalidation `xml:"Invalidation,omitempty"` -} - -func (v *GetInvalidationResult) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// GetStreamingDistributionConfigRequest is undocumented. -type GetStreamingDistributionConfigRequest struct { - XMLName xml.Name - - ID aws.StringValue `xml:"-"` -} - -func (v *GetStreamingDistributionConfigRequest) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// GetStreamingDistributionConfigResult is undocumented. -type GetStreamingDistributionConfigResult struct { - XMLName xml.Name - - ETag aws.StringValue `xml:"-"` - StreamingDistributionConfig *StreamingDistributionConfig `xml:"StreamingDistributionConfig,omitempty"` -} - -func (v *GetStreamingDistributionConfigResult) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// GetStreamingDistributionRequest is undocumented. -type GetStreamingDistributionRequest struct { - XMLName xml.Name - - ID aws.StringValue `xml:"-"` -} - -func (v *GetStreamingDistributionRequest) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// GetStreamingDistributionResult is undocumented. -type GetStreamingDistributionResult struct { - XMLName xml.Name - - ETag aws.StringValue `xml:"-"` - StreamingDistribution *StreamingDistribution `xml:"StreamingDistribution,omitempty"` -} - -func (v *GetStreamingDistributionResult) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// Headers is undocumented. -type Headers struct { - XMLName xml.Name - - Items []string `xml:"Items>Name,omitempty"` - Quantity aws.IntegerValue `xml:"Quantity"` -} - -func (v *Headers) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// Invalidation is undocumented. -type Invalidation struct { - XMLName xml.Name - - CreateTime time.Time `xml:"CreateTime"` - ID aws.StringValue `xml:"Id"` - InvalidationBatch *InvalidationBatch `xml:"InvalidationBatch,omitempty"` - Status aws.StringValue `xml:"Status"` -} - -func (v *Invalidation) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// InvalidationBatch is undocumented. -type InvalidationBatch struct { - XMLName xml.Name - - CallerReference aws.StringValue `xml:"CallerReference"` - Paths *Paths `xml:"Paths,omitempty"` -} - -func (v *InvalidationBatch) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// InvalidationList is undocumented. -type InvalidationList struct { - XMLName xml.Name - - IsTruncated aws.BooleanValue `xml:"IsTruncated"` - Items []InvalidationSummary `xml:"Items>InvalidationSummary,omitempty"` - Marker aws.StringValue `xml:"Marker"` - MaxItems aws.IntegerValue `xml:"MaxItems"` - NextMarker aws.StringValue `xml:"NextMarker"` - Quantity aws.IntegerValue `xml:"Quantity"` -} - -func (v *InvalidationList) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// InvalidationSummary is undocumented. -type InvalidationSummary struct { - XMLName xml.Name - - CreateTime time.Time `xml:"CreateTime"` - ID aws.StringValue `xml:"Id"` - Status aws.StringValue `xml:"Status"` -} - -func (v *InvalidationSummary) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// Possible values for CloudFront. -const ( - ItemSelectionAll = "all" - ItemSelectionNone = "none" - ItemSelectionWhitelist = "whitelist" -) - -// KeyPairIDs is undocumented. -type KeyPairIDs struct { - XMLName xml.Name - - Items []string `xml:"Items>KeyPairId,omitempty"` - Quantity aws.IntegerValue `xml:"Quantity"` -} - -func (v *KeyPairIDs) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// ListCloudFrontOriginAccessIdentitiesRequest is undocumented. -type ListCloudFrontOriginAccessIdentitiesRequest struct { - XMLName xml.Name - - Marker aws.StringValue `xml:"-"` - MaxItems aws.StringValue `xml:"-"` -} - -func (v *ListCloudFrontOriginAccessIdentitiesRequest) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// ListCloudFrontOriginAccessIdentitiesResult is undocumented. -type ListCloudFrontOriginAccessIdentitiesResult struct { - XMLName xml.Name - - CloudFrontOriginAccessIdentityList *CloudFrontOriginAccessIdentityList `xml:"CloudFrontOriginAccessIdentityList,omitempty"` -} - -func (v *ListCloudFrontOriginAccessIdentitiesResult) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// ListDistributionsRequest is undocumented. -type ListDistributionsRequest struct { - XMLName xml.Name - - Marker aws.StringValue `xml:"-"` - MaxItems aws.StringValue `xml:"-"` -} - -func (v *ListDistributionsRequest) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// ListDistributionsResult is undocumented. -type ListDistributionsResult struct { - XMLName xml.Name - - DistributionList *DistributionList `xml:"DistributionList,omitempty"` -} - -func (v *ListDistributionsResult) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// ListInvalidationsRequest is undocumented. -type ListInvalidationsRequest struct { - XMLName xml.Name - - DistributionID aws.StringValue `xml:"-"` - Marker aws.StringValue `xml:"-"` - MaxItems aws.StringValue `xml:"-"` -} - -func (v *ListInvalidationsRequest) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// ListInvalidationsResult is undocumented. -type ListInvalidationsResult struct { - XMLName xml.Name - - InvalidationList *InvalidationList `xml:"InvalidationList,omitempty"` -} - -func (v *ListInvalidationsResult) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// ListStreamingDistributionsRequest is undocumented. -type ListStreamingDistributionsRequest struct { - XMLName xml.Name - - Marker aws.StringValue `xml:"-"` - MaxItems aws.StringValue `xml:"-"` -} - -func (v *ListStreamingDistributionsRequest) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// ListStreamingDistributionsResult is undocumented. -type ListStreamingDistributionsResult struct { - XMLName xml.Name - - StreamingDistributionList *StreamingDistributionList `xml:"StreamingDistributionList,omitempty"` -} - -func (v *ListStreamingDistributionsResult) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// LoggingConfig is undocumented. -type LoggingConfig struct { - XMLName xml.Name - - Bucket aws.StringValue `xml:"Bucket"` - Enabled aws.BooleanValue `xml:"Enabled"` - IncludeCookies aws.BooleanValue `xml:"IncludeCookies"` - Prefix aws.StringValue `xml:"Prefix"` -} - -func (v *LoggingConfig) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// Possible values for CloudFront. -const ( - MethodDelete = "DELETE" - MethodGet = "GET" - MethodHead = "HEAD" - MethodOptions = "OPTIONS" - MethodPatch = "PATCH" - MethodPost = "POST" - MethodPut = "PUT" -) - -// Possible values for CloudFront. -const ( - MinimumProtocolVersionSSLv3 = "SSLv3" - MinimumProtocolVersionTLSv1 = "TLSv1" -) - -// Origin is undocumented. -type Origin struct { - XMLName xml.Name - - CustomOriginConfig *CustomOriginConfig `xml:"CustomOriginConfig,omitempty"` - DomainName aws.StringValue `xml:"DomainName"` - ID aws.StringValue `xml:"Id"` - S3OriginConfig *S3OriginConfig `xml:"S3OriginConfig,omitempty"` -} - -func (v *Origin) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// Possible values for CloudFront. -const ( - OriginProtocolPolicyHTTPOnly = "http-only" - OriginProtocolPolicyMatchViewer = "match-viewer" -) - -// Origins is undocumented. -type Origins struct { - XMLName xml.Name - - Items []Origin `xml:"Items>Origin,omitempty"` - Quantity aws.IntegerValue `xml:"Quantity"` -} - -func (v *Origins) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// Paths is undocumented. -type Paths struct { - XMLName xml.Name - - Items []string `xml:"Items>Path,omitempty"` - Quantity aws.IntegerValue `xml:"Quantity"` -} - -func (v *Paths) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// Possible values for CloudFront. -const ( - PriceClassPriceClass100 = "PriceClass_100" - PriceClassPriceClass200 = "PriceClass_200" - PriceClassPriceClassAll = "PriceClass_All" -) - -// Restrictions is undocumented. -type Restrictions struct { - XMLName xml.Name - - GeoRestriction *GeoRestriction `xml:"GeoRestriction,omitempty"` -} - -func (v *Restrictions) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// S3Origin is undocumented. -type S3Origin struct { - XMLName xml.Name - - DomainName aws.StringValue `xml:"DomainName"` - OriginAccessIdentity aws.StringValue `xml:"OriginAccessIdentity"` -} - -func (v *S3Origin) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// S3OriginConfig is undocumented. -type S3OriginConfig struct { - XMLName xml.Name - - OriginAccessIdentity aws.StringValue `xml:"OriginAccessIdentity"` -} - -func (v *S3OriginConfig) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// Possible values for CloudFront. -const ( - SSLSupportMethodSNIOnly = "sni-only" - SSLSupportMethodVIP = "vip" -) - -// Signer is undocumented. -type Signer struct { - XMLName xml.Name - - AWSAccountNumber aws.StringValue `xml:"AwsAccountNumber"` - KeyPairIDs *KeyPairIDs `xml:"KeyPairIds,omitempty"` -} - -func (v *Signer) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// StreamingDistribution is undocumented. -type StreamingDistribution struct { - XMLName xml.Name - - ActiveTrustedSigners *ActiveTrustedSigners `xml:"ActiveTrustedSigners,omitempty"` - DomainName aws.StringValue `xml:"DomainName"` - ID aws.StringValue `xml:"Id"` - LastModifiedTime time.Time `xml:"LastModifiedTime"` - Status aws.StringValue `xml:"Status"` - StreamingDistributionConfig *StreamingDistributionConfig `xml:"StreamingDistributionConfig,omitempty"` -} - -func (v *StreamingDistribution) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// StreamingDistributionConfig is undocumented. -type StreamingDistributionConfig struct { - XMLName xml.Name - - Aliases *Aliases `xml:"Aliases,omitempty"` - CallerReference aws.StringValue `xml:"CallerReference"` - Comment aws.StringValue `xml:"Comment"` - Enabled aws.BooleanValue `xml:"Enabled"` - Logging *StreamingLoggingConfig `xml:"Logging,omitempty"` - PriceClass aws.StringValue `xml:"PriceClass"` - S3Origin *S3Origin `xml:"S3Origin,omitempty"` - TrustedSigners *TrustedSigners `xml:"TrustedSigners,omitempty"` -} - -func (v *StreamingDistributionConfig) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// StreamingDistributionList is undocumented. -type StreamingDistributionList struct { - XMLName xml.Name - - IsTruncated aws.BooleanValue `xml:"IsTruncated"` - Items []StreamingDistributionSummary `xml:"Items>StreamingDistributionSummary,omitempty"` - Marker aws.StringValue `xml:"Marker"` - MaxItems aws.IntegerValue `xml:"MaxItems"` - NextMarker aws.StringValue `xml:"NextMarker"` - Quantity aws.IntegerValue `xml:"Quantity"` -} - -func (v *StreamingDistributionList) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// StreamingDistributionSummary is undocumented. -type StreamingDistributionSummary struct { - XMLName xml.Name - - Aliases *Aliases `xml:"Aliases,omitempty"` - Comment aws.StringValue `xml:"Comment"` - DomainName aws.StringValue `xml:"DomainName"` - Enabled aws.BooleanValue `xml:"Enabled"` - ID aws.StringValue `xml:"Id"` - LastModifiedTime time.Time `xml:"LastModifiedTime"` - PriceClass aws.StringValue `xml:"PriceClass"` - S3Origin *S3Origin `xml:"S3Origin,omitempty"` - Status aws.StringValue `xml:"Status"` - TrustedSigners *TrustedSigners `xml:"TrustedSigners,omitempty"` -} - -func (v *StreamingDistributionSummary) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// StreamingLoggingConfig is undocumented. -type StreamingLoggingConfig struct { - XMLName xml.Name - - Bucket aws.StringValue `xml:"Bucket"` - Enabled aws.BooleanValue `xml:"Enabled"` - Prefix aws.StringValue `xml:"Prefix"` -} - -func (v *StreamingLoggingConfig) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// TrustedSigners is undocumented. -type TrustedSigners struct { - XMLName xml.Name - - Enabled aws.BooleanValue `xml:"Enabled"` - Items []string `xml:"Items>AwsAccountNumber,omitempty"` - Quantity aws.IntegerValue `xml:"Quantity"` -} - -func (v *TrustedSigners) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// UpdateCloudFrontOriginAccessIdentityRequest is undocumented. -type UpdateCloudFrontOriginAccessIdentityRequest struct { - XMLName xml.Name - - CloudFrontOriginAccessIdentityConfig *CloudFrontOriginAccessIdentityConfig `xml:"CloudFrontOriginAccessIdentityConfig,omitempty"` - ID aws.StringValue `xml:"-"` - IfMatch aws.StringValue `xml:"-"` -} - -func (v *UpdateCloudFrontOriginAccessIdentityRequest) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// UpdateCloudFrontOriginAccessIdentityResult is undocumented. -type UpdateCloudFrontOriginAccessIdentityResult struct { - XMLName xml.Name - - CloudFrontOriginAccessIdentity *CloudFrontOriginAccessIdentity `xml:"CloudFrontOriginAccessIdentity,omitempty"` - ETag aws.StringValue `xml:"-"` -} - -func (v *UpdateCloudFrontOriginAccessIdentityResult) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// UpdateDistributionRequest is undocumented. -type UpdateDistributionRequest struct { - XMLName xml.Name - - DistributionConfig *DistributionConfig `xml:"DistributionConfig,omitempty"` - ID aws.StringValue `xml:"-"` - IfMatch aws.StringValue `xml:"-"` -} - -func (v *UpdateDistributionRequest) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// UpdateDistributionResult is undocumented. -type UpdateDistributionResult struct { - XMLName xml.Name - - Distribution *Distribution `xml:"Distribution,omitempty"` - ETag aws.StringValue `xml:"-"` -} - -func (v *UpdateDistributionResult) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// UpdateStreamingDistributionRequest is undocumented. -type UpdateStreamingDistributionRequest struct { - XMLName xml.Name - - ID aws.StringValue `xml:"-"` - IfMatch aws.StringValue `xml:"-"` - StreamingDistributionConfig *StreamingDistributionConfig `xml:"StreamingDistributionConfig,omitempty"` -} - -func (v *UpdateStreamingDistributionRequest) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// UpdateStreamingDistributionResult is undocumented. -type UpdateStreamingDistributionResult struct { - XMLName xml.Name - - ETag aws.StringValue `xml:"-"` - StreamingDistribution *StreamingDistribution `xml:"StreamingDistribution,omitempty"` -} - -func (v *UpdateStreamingDistributionResult) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// ViewerCertificate is undocumented. -type ViewerCertificate struct { - XMLName xml.Name - - CloudFrontDefaultCertificate aws.BooleanValue `xml:"CloudFrontDefaultCertificate"` - IAMCertificateID aws.StringValue `xml:"IAMCertificateId"` - MinimumProtocolVersion aws.StringValue `xml:"MinimumProtocolVersion"` - SSLSupportMethod aws.StringValue `xml:"SSLSupportMethod"` -} - -func (v *ViewerCertificate) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// Possible values for CloudFront. -const ( - ViewerProtocolPolicyAllowAll = "allow-all" - ViewerProtocolPolicyHTTPSOnly = "https-only" - ViewerProtocolPolicyRedirectToHTTPS = "redirect-to-https" -) - -// avoid errors if the packages aren't referenced -var _ time.Time - -var _ bytes.Reader -var _ url.URL -var _ fmt.Stringer -var _ strings.Reader -var _ strconv.NumError -var _ = ioutil.Discard diff --git a/src/github.com/getlantern/aws-sdk-go/gen/cloudhsm/cloudhsm.go b/src/github.com/getlantern/aws-sdk-go/gen/cloudhsm/cloudhsm.go deleted file mode 100644 index 67c4f28f2f..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/gen/cloudhsm/cloudhsm.go +++ /dev/null @@ -1,439 +0,0 @@ -// THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. - -// Package cloudhsm provides a client for Amazon CloudHSM. -package cloudhsm - -import ( - "net/http" - "time" - - "github.com/awslabs/aws-sdk-go/aws" - "github.com/awslabs/aws-sdk-go/gen/endpoints" -) - -// CloudHSM is a client for Amazon CloudHSM. -type CloudHSM struct { - client *aws.JSONClient -} - -// New returns a new CloudHSM client. -func New(creds aws.CredentialsProvider, region string, client *http.Client) *CloudHSM { - if client == nil { - client = http.DefaultClient - } - - endpoint, service, region := endpoints.Lookup("cloudhsm", region) - - return &CloudHSM{ - client: &aws.JSONClient{ - Context: aws.Context{ - Credentials: creds, - Service: service, - Region: region, - }, Client: client, - Endpoint: endpoint, - JSONVersion: "1.1", - TargetPrefix: "CloudHsmFrontendService", - }, - } -} - -// CreateHapg creates a high-availability partition group. A -// high-availability partition group is a group of partitions that spans -// multiple physical HSMs. -func (c *CloudHSM) CreateHapg(req *CreateHapgRequest) (resp *CreateHapgResponse, err error) { - resp = &CreateHapgResponse{} - err = c.client.Do("CreateHapg", "POST", "/", req, resp) - return -} - -// CreateHSM creates an uninitialized HSM instance. Running this command -// provisions an HSM appliance and will result in charges to your AWS -// account for the -func (c *CloudHSM) CreateHSM(req *CreateHSMRequest) (resp *CreateHSMResponse, err error) { - resp = &CreateHSMResponse{} - err = c.client.Do("CreateHsm", "POST", "/", req, resp) - return -} - -// CreateLunaClient is undocumented. -func (c *CloudHSM) CreateLunaClient(req *CreateLunaClientRequest) (resp *CreateLunaClientResponse, err error) { - resp = &CreateLunaClientResponse{} - err = c.client.Do("CreateLunaClient", "POST", "/", req, resp) - return -} - -// DeleteHapg is undocumented. -func (c *CloudHSM) DeleteHapg(req *DeleteHapgRequest) (resp *DeleteHapgResponse, err error) { - resp = &DeleteHapgResponse{} - err = c.client.Do("DeleteHapg", "POST", "/", req, resp) - return -} - -// DeleteHSM deletes an Once complete, this operation cannot be undone and -// your key material cannot be recovered. -func (c *CloudHSM) DeleteHSM(req *DeleteHSMRequest) (resp *DeleteHSMResponse, err error) { - resp = &DeleteHSMResponse{} - err = c.client.Do("DeleteHsm", "POST", "/", req, resp) - return -} - -// DeleteLunaClient is undocumented. -func (c *CloudHSM) DeleteLunaClient(req *DeleteLunaClientRequest) (resp *DeleteLunaClientResponse, err error) { - resp = &DeleteLunaClientResponse{} - err = c.client.Do("DeleteLunaClient", "POST", "/", req, resp) - return -} - -// DescribeHapg retrieves information about a high-availability partition -// group. -func (c *CloudHSM) DescribeHapg(req *DescribeHapgRequest) (resp *DescribeHapgResponse, err error) { - resp = &DescribeHapgResponse{} - err = c.client.Do("DescribeHapg", "POST", "/", req, resp) - return -} - -// DescribeHSM retrieves information about an You can identify the HSM by -// its ARN or its serial number. -func (c *CloudHSM) DescribeHSM(req *DescribeHSMRequest) (resp *DescribeHSMResponse, err error) { - resp = &DescribeHSMResponse{} - err = c.client.Do("DescribeHsm", "POST", "/", req, resp) - return -} - -// DescribeLunaClient is undocumented. -func (c *CloudHSM) DescribeLunaClient(req *DescribeLunaClientRequest) (resp *DescribeLunaClientResponse, err error) { - resp = &DescribeLunaClientResponse{} - err = c.client.Do("DescribeLunaClient", "POST", "/", req, resp) - return -} - -// GetConfig gets the configuration files necessary to connect to all high -// availability partition groups the client is associated with. -func (c *CloudHSM) GetConfig(req *GetConfigRequest) (resp *GetConfigResponse, err error) { - resp = &GetConfigResponse{} - err = c.client.Do("GetConfig", "POST", "/", req, resp) - return -} - -// ListAvailableZones lists the Availability Zones that have available AWS -// CloudHSM capacity. -func (c *CloudHSM) ListAvailableZones(req *ListAvailableZonesRequest) (resp *ListAvailableZonesResponse, err error) { - resp = &ListAvailableZonesResponse{} - err = c.client.Do("ListAvailableZones", "POST", "/", req, resp) - return -} - -// ListHapgs lists the high-availability partition groups for the account. -// This operation supports pagination with the use of the NextToken member. -// If more results are available, the NextToken member of the response -// contains a token that you pass in the next call to ListHapgs to retrieve -// the next set of items. -func (c *CloudHSM) ListHapgs(req *ListHapgsRequest) (resp *ListHapgsResponse, err error) { - resp = &ListHapgsResponse{} - err = c.client.Do("ListHapgs", "POST", "/", req, resp) - return -} - -// ListHSMs retrieves the identifiers of all of the HSMs provisioned for -// the current customer. This operation supports pagination with the use of -// the NextToken member. If more results are available, the NextToken -// member of the response contains a token that you pass in the next call -// to ListHsms to retrieve the next set of items. -func (c *CloudHSM) ListHSMs(req *ListHSMsRequest) (resp *ListHSMsResponse, err error) { - resp = &ListHSMsResponse{} - err = c.client.Do("ListHsms", "POST", "/", req, resp) - return -} - -// ListLunaClients lists all of the clients. This operation supports -// pagination with the use of the NextToken member. If more results are -// available, the NextToken member of the response contains a token that -// you pass in the next call to ListLunaClients to retrieve the next set of -// items. -func (c *CloudHSM) ListLunaClients(req *ListLunaClientsRequest) (resp *ListLunaClientsResponse, err error) { - resp = &ListLunaClientsResponse{} - err = c.client.Do("ListLunaClients", "POST", "/", req, resp) - return -} - -// ModifyHapg modifies an existing high-availability partition group. -func (c *CloudHSM) ModifyHapg(req *ModifyHapgRequest) (resp *ModifyHapgResponse, err error) { - resp = &ModifyHapgResponse{} - err = c.client.Do("ModifyHapg", "POST", "/", req, resp) - return -} - -// ModifyHSM is undocumented. -func (c *CloudHSM) ModifyHSM(req *ModifyHSMRequest) (resp *ModifyHSMResponse, err error) { - resp = &ModifyHSMResponse{} - err = c.client.Do("ModifyHsm", "POST", "/", req, resp) - return -} - -// ModifyLunaClient modifies the certificate used by the client. This -// action can potentially start a workflow to install the new certificate -// on the client's HSMs. -func (c *CloudHSM) ModifyLunaClient(req *ModifyLunaClientRequest) (resp *ModifyLunaClientResponse, err error) { - resp = &ModifyLunaClientResponse{} - err = c.client.Do("ModifyLunaClient", "POST", "/", req, resp) - return -} - -// Possible values for CloudHSM. -const ( - ClientVersion51 = "5.1" - ClientVersion53 = "5.3" -) - -// Possible values for CloudHSM. -const ( - CloudHSMObjectStateDegraded = "DEGRADED" - CloudHSMObjectStateReady = "READY" - CloudHSMObjectStateUpdating = "UPDATING" -) - -// CreateHapgRequest is undocumented. -type CreateHapgRequest struct { - Label aws.StringValue `json:"Label"` -} - -// CreateHapgResponse is undocumented. -type CreateHapgResponse struct { - HapgARN aws.StringValue `json:"HapgArn,omitempty"` -} - -// CreateHSMRequest is undocumented. -type CreateHSMRequest struct { - ClientToken aws.StringValue `json:"ClientToken,omitempty"` - EniIP aws.StringValue `json:"EniIp,omitempty"` - ExternalID aws.StringValue `json:"ExternalId,omitempty"` - IAMRoleARN aws.StringValue `json:"IamRoleArn"` - SSHKey aws.StringValue `json:"SshKey"` - SubnetID aws.StringValue `json:"SubnetId"` - SubscriptionType aws.StringValue `json:"SubscriptionType"` - SyslogIP aws.StringValue `json:"SyslogIp,omitempty"` -} - -// CreateHSMResponse is undocumented. -type CreateHSMResponse struct { - HSMARN aws.StringValue `json:"HsmArn,omitempty"` -} - -// CreateLunaClientRequest is undocumented. -type CreateLunaClientRequest struct { - Certificate aws.StringValue `json:"Certificate"` - Label aws.StringValue `json:"Label,omitempty"` -} - -// CreateLunaClientResponse is undocumented. -type CreateLunaClientResponse struct { - ClientARN aws.StringValue `json:"ClientArn,omitempty"` -} - -// DeleteHapgRequest is undocumented. -type DeleteHapgRequest struct { - HapgARN aws.StringValue `json:"HapgArn"` -} - -// DeleteHapgResponse is undocumented. -type DeleteHapgResponse struct { - Status aws.StringValue `json:"Status"` -} - -// DeleteHSMRequest is undocumented. -type DeleteHSMRequest struct { - HSMARN aws.StringValue `json:"HsmArn"` -} - -// DeleteHSMResponse is undocumented. -type DeleteHSMResponse struct { - Status aws.StringValue `json:"Status"` -} - -// DeleteLunaClientRequest is undocumented. -type DeleteLunaClientRequest struct { - ClientARN aws.StringValue `json:"ClientArn"` -} - -// DeleteLunaClientResponse is undocumented. -type DeleteLunaClientResponse struct { - Status aws.StringValue `json:"Status"` -} - -// DescribeHapgRequest is undocumented. -type DescribeHapgRequest struct { - HapgARN aws.StringValue `json:"HapgArn"` -} - -// DescribeHapgResponse is undocumented. -type DescribeHapgResponse struct { - HapgARN aws.StringValue `json:"HapgArn,omitempty"` - HapgSerial aws.StringValue `json:"HapgSerial,omitempty"` - HSMsLastActionFailed []string `json:"HsmsLastActionFailed,omitempty"` - HSMsPendingDeletion []string `json:"HsmsPendingDeletion,omitempty"` - HSMsPendingRegistration []string `json:"HsmsPendingRegistration,omitempty"` - Label aws.StringValue `json:"Label,omitempty"` - LastModifiedTimestamp aws.StringValue `json:"LastModifiedTimestamp,omitempty"` - PartitionSerialList []string `json:"PartitionSerialList,omitempty"` - State aws.StringValue `json:"State,omitempty"` -} - -// DescribeHSMRequest is undocumented. -type DescribeHSMRequest struct { - HSMARN aws.StringValue `json:"HsmArn,omitempty"` - HSMSerialNumber aws.StringValue `json:"HsmSerialNumber,omitempty"` -} - -// DescribeHSMResponse is undocumented. -type DescribeHSMResponse struct { - AvailabilityZone aws.StringValue `json:"AvailabilityZone,omitempty"` - EniID aws.StringValue `json:"EniId,omitempty"` - EniIP aws.StringValue `json:"EniIp,omitempty"` - HSMARN aws.StringValue `json:"HsmArn,omitempty"` - HSMType aws.StringValue `json:"HsmType,omitempty"` - IAMRoleARN aws.StringValue `json:"IamRoleArn,omitempty"` - Partitions []string `json:"Partitions,omitempty"` - SerialNumber aws.StringValue `json:"SerialNumber,omitempty"` - ServerCertLastUpdated aws.StringValue `json:"ServerCertLastUpdated,omitempty"` - ServerCertURI aws.StringValue `json:"ServerCertUri,omitempty"` - SoftwareVersion aws.StringValue `json:"SoftwareVersion,omitempty"` - SSHKeyLastUpdated aws.StringValue `json:"SshKeyLastUpdated,omitempty"` - SSHPublicKey aws.StringValue `json:"SshPublicKey,omitempty"` - Status aws.StringValue `json:"Status,omitempty"` - StatusDetails aws.StringValue `json:"StatusDetails,omitempty"` - SubnetID aws.StringValue `json:"SubnetId,omitempty"` - SubscriptionEndDate aws.StringValue `json:"SubscriptionEndDate,omitempty"` - SubscriptionStartDate aws.StringValue `json:"SubscriptionStartDate,omitempty"` - SubscriptionType aws.StringValue `json:"SubscriptionType,omitempty"` - VendorName aws.StringValue `json:"VendorName,omitempty"` - VPCID aws.StringValue `json:"VpcId,omitempty"` -} - -// DescribeLunaClientRequest is undocumented. -type DescribeLunaClientRequest struct { - CertificateFingerprint aws.StringValue `json:"CertificateFingerprint,omitempty"` - ClientARN aws.StringValue `json:"ClientArn,omitempty"` -} - -// DescribeLunaClientResponse is undocumented. -type DescribeLunaClientResponse struct { - Certificate aws.StringValue `json:"Certificate,omitempty"` - CertificateFingerprint aws.StringValue `json:"CertificateFingerprint,omitempty"` - ClientARN aws.StringValue `json:"ClientArn,omitempty"` - Label aws.StringValue `json:"Label,omitempty"` - LastModifiedTimestamp aws.StringValue `json:"LastModifiedTimestamp,omitempty"` -} - -// GetConfigRequest is undocumented. -type GetConfigRequest struct { - ClientARN aws.StringValue `json:"ClientArn"` - ClientVersion aws.StringValue `json:"ClientVersion"` - HapgList []string `json:"HapgList"` -} - -// GetConfigResponse is undocumented. -type GetConfigResponse struct { - ConfigCred aws.StringValue `json:"ConfigCred,omitempty"` - ConfigFile aws.StringValue `json:"ConfigFile,omitempty"` - ConfigType aws.StringValue `json:"ConfigType,omitempty"` -} - -// Possible values for CloudHSM. -const ( - HSMStatusDegraded = "DEGRADED" - HSMStatusPending = "PENDING" - HSMStatusRunning = "RUNNING" - HSMStatusSuspended = "SUSPENDED" - HSMStatusTerminated = "TERMINATED" - HSMStatusTerminating = "TERMINATING" - HSMStatusUpdating = "UPDATING" -) - -// ListAvailableZonesRequest is undocumented. -type ListAvailableZonesRequest struct { -} - -// ListAvailableZonesResponse is undocumented. -type ListAvailableZonesResponse struct { - AZList []string `json:"AZList,omitempty"` -} - -// ListHapgsRequest is undocumented. -type ListHapgsRequest struct { - NextToken aws.StringValue `json:"NextToken,omitempty"` -} - -// ListHapgsResponse is undocumented. -type ListHapgsResponse struct { - HapgList []string `json:"HapgList"` - NextToken aws.StringValue `json:"NextToken,omitempty"` -} - -// ListHSMsRequest is undocumented. -type ListHSMsRequest struct { - NextToken aws.StringValue `json:"NextToken,omitempty"` -} - -// ListHSMsResponse is undocumented. -type ListHSMsResponse struct { - HSMList []string `json:"HsmList,omitempty"` - NextToken aws.StringValue `json:"NextToken,omitempty"` -} - -// ListLunaClientsRequest is undocumented. -type ListLunaClientsRequest struct { - NextToken aws.StringValue `json:"NextToken,omitempty"` -} - -// ListLunaClientsResponse is undocumented. -type ListLunaClientsResponse struct { - ClientList []string `json:"ClientList"` - NextToken aws.StringValue `json:"NextToken,omitempty"` -} - -// ModifyHapgRequest is undocumented. -type ModifyHapgRequest struct { - HapgARN aws.StringValue `json:"HapgArn"` - Label aws.StringValue `json:"Label,omitempty"` - PartitionSerialList []string `json:"PartitionSerialList,omitempty"` -} - -// ModifyHapgResponse is undocumented. -type ModifyHapgResponse struct { - HapgARN aws.StringValue `json:"HapgArn,omitempty"` -} - -// ModifyHSMRequest is undocumented. -type ModifyHSMRequest struct { - EniIP aws.StringValue `json:"EniIp,omitempty"` - ExternalID aws.StringValue `json:"ExternalId,omitempty"` - HSMARN aws.StringValue `json:"HsmArn"` - IAMRoleARN aws.StringValue `json:"IamRoleArn,omitempty"` - SubnetID aws.StringValue `json:"SubnetId,omitempty"` - SyslogIP aws.StringValue `json:"SyslogIp,omitempty"` -} - -// ModifyHSMResponse is undocumented. -type ModifyHSMResponse struct { - HSMARN aws.StringValue `json:"HsmArn,omitempty"` -} - -// ModifyLunaClientRequest is undocumented. -type ModifyLunaClientRequest struct { - Certificate aws.StringValue `json:"Certificate"` - ClientARN aws.StringValue `json:"ClientArn"` -} - -// ModifyLunaClientResponse is undocumented. -type ModifyLunaClientResponse struct { - ClientARN aws.StringValue `json:"ClientArn,omitempty"` -} - -// Possible values for CloudHSM. -const ( - SubscriptionTypeProduction = "PRODUCTION" -) - -// avoid errors if the packages aren't referenced -var _ time.Time diff --git a/src/github.com/getlantern/aws-sdk-go/gen/cloudsearch/cloudsearch.go b/src/github.com/getlantern/aws-sdk-go/gen/cloudsearch/cloudsearch.go deleted file mode 100644 index 45a1877f2a..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/gen/cloudsearch/cloudsearch.go +++ /dev/null @@ -1,1035 +0,0 @@ -// THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. - -// Package cloudsearch provides a client for Amazon CloudSearch. -package cloudsearch - -import ( - "net/http" - "time" - - "github.com/awslabs/aws-sdk-go/aws" - "github.com/awslabs/aws-sdk-go/gen/endpoints" -) - -import ( - "encoding/xml" - "io" -) - -// CloudSearch is a client for Amazon CloudSearch. -type CloudSearch struct { - client *aws.QueryClient -} - -// New returns a new CloudSearch client. -func New(creds aws.CredentialsProvider, region string, client *http.Client) *CloudSearch { - if client == nil { - client = http.DefaultClient - } - - endpoint, service, region := endpoints.Lookup("cloudsearch", region) - - return &CloudSearch{ - client: &aws.QueryClient{ - Context: aws.Context{ - Credentials: creds, - Service: service, - Region: region, - }, - Client: client, - Endpoint: endpoint, - APIVersion: "2013-01-01", - }, - } -} - -// BuildSuggesters indexes the search suggestions. For more information, -// see Configuring Suggesters in the Amazon CloudSearch Developer Guide -func (c *CloudSearch) BuildSuggesters(req *BuildSuggestersRequest) (resp *BuildSuggestersResult, err error) { - resp = &BuildSuggestersResult{} - err = c.client.Do("BuildSuggesters", "POST", "/", req, resp) - return -} - -// CreateDomain creates a new search domain. For more information, see -// Creating a Search Domain in the Amazon CloudSearch Developer Guide -func (c *CloudSearch) CreateDomain(req *CreateDomainRequest) (resp *CreateDomainResult, err error) { - resp = &CreateDomainResult{} - err = c.client.Do("CreateDomain", "POST", "/", req, resp) - return -} - -// DefineAnalysisScheme configures an analysis scheme that can be applied -// to a text or text-array field to define language-specific text -// processing options. For more information, see Configuring Analysis -// Schemes in the Amazon CloudSearch Developer Guide -func (c *CloudSearch) DefineAnalysisScheme(req *DefineAnalysisSchemeRequest) (resp *DefineAnalysisSchemeResult, err error) { - resp = &DefineAnalysisSchemeResult{} - err = c.client.Do("DefineAnalysisScheme", "POST", "/", req, resp) - return -} - -// DefineExpression configures an Expression for the search domain. Used to -// create new expressions and modify existing ones. If the expression -// exists, the new configuration replaces the old one. For more -// information, see Configuring Expressions in the Amazon CloudSearch -// Developer Guide -func (c *CloudSearch) DefineExpression(req *DefineExpressionRequest) (resp *DefineExpressionResult, err error) { - resp = &DefineExpressionResult{} - err = c.client.Do("DefineExpression", "POST", "/", req, resp) - return -} - -// DefineIndexField configures an IndexField for the search domain. Used to -// create new fields and modify existing ones. You must specify the name of -// the domain you are configuring and an index field configuration. The -// index field configuration specifies a unique name, the index field type, -// and the options you want to configure for the field. The options you can -// specify depend on the IndexFieldType . If the field exists, the new -// configuration replaces the old one. For more information, see -// Configuring Index Fields in the Amazon CloudSearch Developer Guide . -func (c *CloudSearch) DefineIndexField(req *DefineIndexFieldRequest) (resp *DefineIndexFieldResult, err error) { - resp = &DefineIndexFieldResult{} - err = c.client.Do("DefineIndexField", "POST", "/", req, resp) - return -} - -// DefineSuggester configures a suggester for a domain. A suggester enables -// you to display possible matches before users finish typing their -// queries. When you configure a suggester, you must specify the name of -// the text field you want to search for possible matches and a unique name -// for the suggester. For more information, see Getting Search Suggestions -// in the Amazon CloudSearch Developer Guide -func (c *CloudSearch) DefineSuggester(req *DefineSuggesterRequest) (resp *DefineSuggesterResult, err error) { - resp = &DefineSuggesterResult{} - err = c.client.Do("DefineSuggester", "POST", "/", req, resp) - return -} - -// DeleteAnalysisScheme deletes an analysis scheme. For more information, -// see Configuring Analysis Schemes in the Amazon CloudSearch Developer -// Guide . -func (c *CloudSearch) DeleteAnalysisScheme(req *DeleteAnalysisSchemeRequest) (resp *DeleteAnalysisSchemeResult, err error) { - resp = &DeleteAnalysisSchemeResult{} - err = c.client.Do("DeleteAnalysisScheme", "POST", "/", req, resp) - return -} - -// DeleteDomain permanently deletes a search domain and all of its data. -// Once a domain has been deleted, it cannot be recovered. For more -// information, see Deleting a Search Domain in the Amazon CloudSearch -// Developer Guide . -func (c *CloudSearch) DeleteDomain(req *DeleteDomainRequest) (resp *DeleteDomainResult, err error) { - resp = &DeleteDomainResult{} - err = c.client.Do("DeleteDomain", "POST", "/", req, resp) - return -} - -// DeleteExpression removes an Expression from the search domain. For more -// information, see Configuring Expressions in the Amazon CloudSearch -// Developer Guide -func (c *CloudSearch) DeleteExpression(req *DeleteExpressionRequest) (resp *DeleteExpressionResult, err error) { - resp = &DeleteExpressionResult{} - err = c.client.Do("DeleteExpression", "POST", "/", req, resp) - return -} - -// DeleteIndexField removes an IndexField from the search domain. For more -// information, see Configuring Index Fields in the Amazon CloudSearch -// Developer Guide -func (c *CloudSearch) DeleteIndexField(req *DeleteIndexFieldRequest) (resp *DeleteIndexFieldResult, err error) { - resp = &DeleteIndexFieldResult{} - err = c.client.Do("DeleteIndexField", "POST", "/", req, resp) - return -} - -// DeleteSuggester deletes a suggester. For more information, see Getting -// Search Suggestions in the Amazon CloudSearch Developer Guide -func (c *CloudSearch) DeleteSuggester(req *DeleteSuggesterRequest) (resp *DeleteSuggesterResult, err error) { - resp = &DeleteSuggesterResult{} - err = c.client.Do("DeleteSuggester", "POST", "/", req, resp) - return -} - -// DescribeAnalysisSchemes gets the analysis schemes configured for a -// domain. An analysis scheme defines language-specific text processing -// options for a text field. Can be limited to specific analysis schemes by -// name. By default, shows all analysis schemes and includes any pending -// changes to the configuration. Set the Deployed option to true to show -// the active configuration and exclude pending changes. For more -// information, see Configuring Analysis Schemes in the Amazon CloudSearch -// Developer Guide -func (c *CloudSearch) DescribeAnalysisSchemes(req *DescribeAnalysisSchemesRequest) (resp *DescribeAnalysisSchemesResult, err error) { - resp = &DescribeAnalysisSchemesResult{} - err = c.client.Do("DescribeAnalysisSchemes", "POST", "/", req, resp) - return -} - -// DescribeAvailabilityOptions gets the availability options configured for -// a domain. By default, shows the configuration with any pending changes. -// Set the Deployed option to true to show the active configuration and -// exclude pending changes. For more information, see Configuring -// Availability Options in the Amazon CloudSearch Developer Guide -func (c *CloudSearch) DescribeAvailabilityOptions(req *DescribeAvailabilityOptionsRequest) (resp *DescribeAvailabilityOptionsResult, err error) { - resp = &DescribeAvailabilityOptionsResult{} - err = c.client.Do("DescribeAvailabilityOptions", "POST", "/", req, resp) - return -} - -// DescribeDomains gets information about the search domains owned by this -// account. Can be limited to specific domains. Shows all domains by -// default. To get the number of searchable documents in a domain, use the -// console or submit a matchall request to your domain's search endpoint: -// q=matchall&q.parser=structured&size=0 . For more information, see -// Getting Information about a Search Domain in the Amazon CloudSearch -// Developer Guide -func (c *CloudSearch) DescribeDomains(req *DescribeDomainsRequest) (resp *DescribeDomainsResult, err error) { - resp = &DescribeDomainsResult{} - err = c.client.Do("DescribeDomains", "POST", "/", req, resp) - return -} - -// DescribeExpressions gets the expressions configured for the search -// domain. Can be limited to specific expressions by name. By default, -// shows all expressions and includes any pending changes to the -// configuration. Set the Deployed option to true to show the active -// configuration and exclude pending changes. For more information, see -// Configuring Expressions in the Amazon CloudSearch Developer Guide -func (c *CloudSearch) DescribeExpressions(req *DescribeExpressionsRequest) (resp *DescribeExpressionsResult, err error) { - resp = &DescribeExpressionsResult{} - err = c.client.Do("DescribeExpressions", "POST", "/", req, resp) - return -} - -// DescribeIndexFields gets information about the index fields configured -// for the search domain. Can be limited to specific fields by name. By -// default, shows all fields and includes any pending changes to the -// configuration. Set the Deployed option to true to show the active -// configuration and exclude pending changes. For more information, see -// Getting Domain Information in the Amazon CloudSearch Developer Guide -func (c *CloudSearch) DescribeIndexFields(req *DescribeIndexFieldsRequest) (resp *DescribeIndexFieldsResult, err error) { - resp = &DescribeIndexFieldsResult{} - err = c.client.Do("DescribeIndexFields", "POST", "/", req, resp) - return -} - -// DescribeScalingParameters gets the scaling parameters configured for a -// domain. A domain's scaling parameters specify the desired search -// instance type and replication count. For more information, see -// Configuring Scaling Options in the Amazon CloudSearch Developer Guide -func (c *CloudSearch) DescribeScalingParameters(req *DescribeScalingParametersRequest) (resp *DescribeScalingParametersResult, err error) { - resp = &DescribeScalingParametersResult{} - err = c.client.Do("DescribeScalingParameters", "POST", "/", req, resp) - return -} - -// DescribeServiceAccessPolicies gets information about the access policies -// that control access to the domain's document and search endpoints. By -// default, shows the configuration with any pending changes. Set the -// Deployed option to true to show the active configuration and exclude -// pending changes. For more information, see Configuring Access for a -// Search Domain in the Amazon CloudSearch Developer Guide -func (c *CloudSearch) DescribeServiceAccessPolicies(req *DescribeServiceAccessPoliciesRequest) (resp *DescribeServiceAccessPoliciesResult, err error) { - resp = &DescribeServiceAccessPoliciesResult{} - err = c.client.Do("DescribeServiceAccessPolicies", "POST", "/", req, resp) - return -} - -// DescribeSuggesters gets the suggesters configured for a domain. A -// suggester enables you to display possible matches before users finish -// typing their queries. Can be limited to specific suggesters by name. By -// default, shows all suggesters and includes any pending changes to the -// configuration. Set the Deployed option to true to show the active -// configuration and exclude pending changes. For more information, see -// Getting Search Suggestions in the Amazon CloudSearch Developer Guide -func (c *CloudSearch) DescribeSuggesters(req *DescribeSuggestersRequest) (resp *DescribeSuggestersResult, err error) { - resp = &DescribeSuggestersResult{} - err = c.client.Do("DescribeSuggesters", "POST", "/", req, resp) - return -} - -// IndexDocuments tells the search domain to start indexing its documents -// using the latest indexing options. This operation must be invoked to -// activate options whose OptionStatus is RequiresIndexDocuments -func (c *CloudSearch) IndexDocuments(req *IndexDocumentsRequest) (resp *IndexDocumentsResult, err error) { - resp = &IndexDocumentsResult{} - err = c.client.Do("IndexDocuments", "POST", "/", req, resp) - return -} - -// ListDomainNames is undocumented. -func (c *CloudSearch) ListDomainNames() (resp *ListDomainNamesResult, err error) { - resp = &ListDomainNamesResult{} - err = c.client.Do("ListDomainNames", "POST", "/", nil, resp) - return -} - -// UpdateAvailabilityOptions configures the availability options for a -// domain. Enabling the Multi-AZ option expands an Amazon CloudSearch -// domain to an additional Availability Zone in the same Region to increase -// fault tolerance in the event of a service disruption. Changes to the -// Multi-AZ option can take about half an hour to become active. For more -// information, see Configuring Availability Options in the Amazon -// CloudSearch Developer Guide -func (c *CloudSearch) UpdateAvailabilityOptions(req *UpdateAvailabilityOptionsRequest) (resp *UpdateAvailabilityOptionsResult, err error) { - resp = &UpdateAvailabilityOptionsResult{} - err = c.client.Do("UpdateAvailabilityOptions", "POST", "/", req, resp) - return -} - -// UpdateScalingParameters configures scaling parameters for a domain. A -// domain's scaling parameters specify the desired search instance type and -// replication count. Amazon CloudSearch will still automatically scale -// your domain based on the volume of data and traffic, but not below the -// desired instance type and replication count. If the Multi-AZ option is -// enabled, these values control the resources used per Availability Zone. -// For more information, see Configuring Scaling Options in the Amazon -// CloudSearch Developer Guide . -func (c *CloudSearch) UpdateScalingParameters(req *UpdateScalingParametersRequest) (resp *UpdateScalingParametersResult, err error) { - resp = &UpdateScalingParametersResult{} - err = c.client.Do("UpdateScalingParameters", "POST", "/", req, resp) - return -} - -// UpdateServiceAccessPolicies configures the access rules that control -// access to the domain's document and search endpoints. For more -// information, see Configuring Access for an Amazon CloudSearch Domain -func (c *CloudSearch) UpdateServiceAccessPolicies(req *UpdateServiceAccessPoliciesRequest) (resp *UpdateServiceAccessPoliciesResult, err error) { - resp = &UpdateServiceAccessPoliciesResult{} - err = c.client.Do("UpdateServiceAccessPolicies", "POST", "/", req, resp) - return -} - -// AccessPoliciesStatus is undocumented. -type AccessPoliciesStatus struct { - Options aws.StringValue `query:"Options" xml:"Options"` - Status *OptionStatus `query:"Status" xml:"Status"` -} - -// Possible values for CloudSearch. -const ( - AlgorithmicStemmingFull = "full" - AlgorithmicStemmingLight = "light" - AlgorithmicStemmingMinimal = "minimal" - AlgorithmicStemmingNone = "none" -) - -// AnalysisOptions is undocumented. -type AnalysisOptions struct { - AlgorithmicStemming aws.StringValue `query:"AlgorithmicStemming" xml:"AlgorithmicStemming"` - JapaneseTokenizationDictionary aws.StringValue `query:"JapaneseTokenizationDictionary" xml:"JapaneseTokenizationDictionary"` - StemmingDictionary aws.StringValue `query:"StemmingDictionary" xml:"StemmingDictionary"` - Stopwords aws.StringValue `query:"Stopwords" xml:"Stopwords"` - Synonyms aws.StringValue `query:"Synonyms" xml:"Synonyms"` -} - -// AnalysisScheme is undocumented. -type AnalysisScheme struct { - AnalysisOptions *AnalysisOptions `query:"AnalysisOptions" xml:"AnalysisOptions"` - AnalysisSchemeLanguage aws.StringValue `query:"AnalysisSchemeLanguage" xml:"AnalysisSchemeLanguage"` - AnalysisSchemeName aws.StringValue `query:"AnalysisSchemeName" xml:"AnalysisSchemeName"` -} - -// Possible values for CloudSearch. -const ( - AnalysisSchemeLanguageAr = "ar" - AnalysisSchemeLanguageBg = "bg" - AnalysisSchemeLanguageCa = "ca" - AnalysisSchemeLanguageCs = "cs" - AnalysisSchemeLanguageDa = "da" - AnalysisSchemeLanguageDe = "de" - AnalysisSchemeLanguageEl = "el" - AnalysisSchemeLanguageEn = "en" - AnalysisSchemeLanguageEs = "es" - AnalysisSchemeLanguageEu = "eu" - AnalysisSchemeLanguageFa = "fa" - AnalysisSchemeLanguageFi = "fi" - AnalysisSchemeLanguageFr = "fr" - AnalysisSchemeLanguageGa = "ga" - AnalysisSchemeLanguageGl = "gl" - AnalysisSchemeLanguageHe = "he" - AnalysisSchemeLanguageHi = "hi" - AnalysisSchemeLanguageHu = "hu" - AnalysisSchemeLanguageHy = "hy" - AnalysisSchemeLanguageID = "id" - AnalysisSchemeLanguageIt = "it" - AnalysisSchemeLanguageJa = "ja" - AnalysisSchemeLanguageKo = "ko" - AnalysisSchemeLanguageLv = "lv" - AnalysisSchemeLanguageMul = "mul" - AnalysisSchemeLanguageNl = "nl" - AnalysisSchemeLanguageNo = "no" - AnalysisSchemeLanguagePt = "pt" - AnalysisSchemeLanguageRo = "ro" - AnalysisSchemeLanguageRu = "ru" - AnalysisSchemeLanguageSv = "sv" - AnalysisSchemeLanguageTh = "th" - AnalysisSchemeLanguageTr = "tr" - AnalysisSchemeLanguageZhHans = "zh-Hans" - AnalysisSchemeLanguageZhHant = "zh-Hant" -) - -// AnalysisSchemeStatus is undocumented. -type AnalysisSchemeStatus struct { - Options *AnalysisScheme `query:"Options" xml:"Options"` - Status *OptionStatus `query:"Status" xml:"Status"` -} - -// AvailabilityOptionsStatus is undocumented. -type AvailabilityOptionsStatus struct { - Options aws.BooleanValue `query:"Options" xml:"Options"` - Status *OptionStatus `query:"Status" xml:"Status"` -} - -// BuildSuggestersRequest is undocumented. -type BuildSuggestersRequest struct { - DomainName aws.StringValue `query:"DomainName" xml:"DomainName"` -} - -// BuildSuggestersResponse is undocumented. -type BuildSuggestersResponse struct { - FieldNames []string `query:"FieldNames.member" xml:"BuildSuggestersResult>FieldNames>member"` -} - -// CreateDomainRequest is undocumented. -type CreateDomainRequest struct { - DomainName aws.StringValue `query:"DomainName" xml:"DomainName"` -} - -// CreateDomainResponse is undocumented. -type CreateDomainResponse struct { - DomainStatus *DomainStatus `query:"DomainStatus" xml:"CreateDomainResult>DomainStatus"` -} - -// DateArrayOptions is undocumented. -type DateArrayOptions struct { - DefaultValue aws.StringValue `query:"DefaultValue" xml:"DefaultValue"` - FacetEnabled aws.BooleanValue `query:"FacetEnabled" xml:"FacetEnabled"` - ReturnEnabled aws.BooleanValue `query:"ReturnEnabled" xml:"ReturnEnabled"` - SearchEnabled aws.BooleanValue `query:"SearchEnabled" xml:"SearchEnabled"` - SourceFields aws.StringValue `query:"SourceFields" xml:"SourceFields"` -} - -// DateOptions is undocumented. -type DateOptions struct { - DefaultValue aws.StringValue `query:"DefaultValue" xml:"DefaultValue"` - FacetEnabled aws.BooleanValue `query:"FacetEnabled" xml:"FacetEnabled"` - ReturnEnabled aws.BooleanValue `query:"ReturnEnabled" xml:"ReturnEnabled"` - SearchEnabled aws.BooleanValue `query:"SearchEnabled" xml:"SearchEnabled"` - SortEnabled aws.BooleanValue `query:"SortEnabled" xml:"SortEnabled"` - SourceField aws.StringValue `query:"SourceField" xml:"SourceField"` -} - -// DefineAnalysisSchemeRequest is undocumented. -type DefineAnalysisSchemeRequest struct { - AnalysisScheme *AnalysisScheme `query:"AnalysisScheme" xml:"AnalysisScheme"` - DomainName aws.StringValue `query:"DomainName" xml:"DomainName"` -} - -// DefineAnalysisSchemeResponse is undocumented. -type DefineAnalysisSchemeResponse struct { - AnalysisScheme *AnalysisSchemeStatus `query:"AnalysisScheme" xml:"DefineAnalysisSchemeResult>AnalysisScheme"` -} - -// DefineExpressionRequest is undocumented. -type DefineExpressionRequest struct { - DomainName aws.StringValue `query:"DomainName" xml:"DomainName"` - Expression *Expression `query:"Expression" xml:"Expression"` -} - -// DefineExpressionResponse is undocumented. -type DefineExpressionResponse struct { - Expression *ExpressionStatus `query:"Expression" xml:"DefineExpressionResult>Expression"` -} - -// DefineIndexFieldRequest is undocumented. -type DefineIndexFieldRequest struct { - DomainName aws.StringValue `query:"DomainName" xml:"DomainName"` - IndexField *IndexField `query:"IndexField" xml:"IndexField"` -} - -// DefineIndexFieldResponse is undocumented. -type DefineIndexFieldResponse struct { - IndexField *IndexFieldStatus `query:"IndexField" xml:"DefineIndexFieldResult>IndexField"` -} - -// DefineSuggesterRequest is undocumented. -type DefineSuggesterRequest struct { - DomainName aws.StringValue `query:"DomainName" xml:"DomainName"` - Suggester *Suggester `query:"Suggester" xml:"Suggester"` -} - -// DefineSuggesterResponse is undocumented. -type DefineSuggesterResponse struct { - Suggester *SuggesterStatus `query:"Suggester" xml:"DefineSuggesterResult>Suggester"` -} - -// DeleteAnalysisSchemeRequest is undocumented. -type DeleteAnalysisSchemeRequest struct { - AnalysisSchemeName aws.StringValue `query:"AnalysisSchemeName" xml:"AnalysisSchemeName"` - DomainName aws.StringValue `query:"DomainName" xml:"DomainName"` -} - -// DeleteAnalysisSchemeResponse is undocumented. -type DeleteAnalysisSchemeResponse struct { - AnalysisScheme *AnalysisSchemeStatus `query:"AnalysisScheme" xml:"DeleteAnalysisSchemeResult>AnalysisScheme"` -} - -// DeleteDomainRequest is undocumented. -type DeleteDomainRequest struct { - DomainName aws.StringValue `query:"DomainName" xml:"DomainName"` -} - -// DeleteDomainResponse is undocumented. -type DeleteDomainResponse struct { - DomainStatus *DomainStatus `query:"DomainStatus" xml:"DeleteDomainResult>DomainStatus"` -} - -// DeleteExpressionRequest is undocumented. -type DeleteExpressionRequest struct { - DomainName aws.StringValue `query:"DomainName" xml:"DomainName"` - ExpressionName aws.StringValue `query:"ExpressionName" xml:"ExpressionName"` -} - -// DeleteExpressionResponse is undocumented. -type DeleteExpressionResponse struct { - Expression *ExpressionStatus `query:"Expression" xml:"DeleteExpressionResult>Expression"` -} - -// DeleteIndexFieldRequest is undocumented. -type DeleteIndexFieldRequest struct { - DomainName aws.StringValue `query:"DomainName" xml:"DomainName"` - IndexFieldName aws.StringValue `query:"IndexFieldName" xml:"IndexFieldName"` -} - -// DeleteIndexFieldResponse is undocumented. -type DeleteIndexFieldResponse struct { - IndexField *IndexFieldStatus `query:"IndexField" xml:"DeleteIndexFieldResult>IndexField"` -} - -// DeleteSuggesterRequest is undocumented. -type DeleteSuggesterRequest struct { - DomainName aws.StringValue `query:"DomainName" xml:"DomainName"` - SuggesterName aws.StringValue `query:"SuggesterName" xml:"SuggesterName"` -} - -// DeleteSuggesterResponse is undocumented. -type DeleteSuggesterResponse struct { - Suggester *SuggesterStatus `query:"Suggester" xml:"DeleteSuggesterResult>Suggester"` -} - -// DescribeAnalysisSchemesRequest is undocumented. -type DescribeAnalysisSchemesRequest struct { - AnalysisSchemeNames []string `query:"AnalysisSchemeNames.member" xml:"AnalysisSchemeNames>member"` - Deployed aws.BooleanValue `query:"Deployed" xml:"Deployed"` - DomainName aws.StringValue `query:"DomainName" xml:"DomainName"` -} - -// DescribeAnalysisSchemesResponse is undocumented. -type DescribeAnalysisSchemesResponse struct { - AnalysisSchemes []AnalysisSchemeStatus `query:"AnalysisSchemes.member" xml:"DescribeAnalysisSchemesResult>AnalysisSchemes>member"` -} - -// DescribeAvailabilityOptionsRequest is undocumented. -type DescribeAvailabilityOptionsRequest struct { - Deployed aws.BooleanValue `query:"Deployed" xml:"Deployed"` - DomainName aws.StringValue `query:"DomainName" xml:"DomainName"` -} - -// DescribeAvailabilityOptionsResponse is undocumented. -type DescribeAvailabilityOptionsResponse struct { - AvailabilityOptions *AvailabilityOptionsStatus `query:"AvailabilityOptions" xml:"DescribeAvailabilityOptionsResult>AvailabilityOptions"` -} - -// DescribeDomainsRequest is undocumented. -type DescribeDomainsRequest struct { - DomainNames []string `query:"DomainNames.member" xml:"DomainNames>member"` -} - -// DescribeDomainsResponse is undocumented. -type DescribeDomainsResponse struct { - DomainStatusList []DomainStatus `query:"DomainStatusList.member" xml:"DescribeDomainsResult>DomainStatusList>member"` -} - -// DescribeExpressionsRequest is undocumented. -type DescribeExpressionsRequest struct { - Deployed aws.BooleanValue `query:"Deployed" xml:"Deployed"` - DomainName aws.StringValue `query:"DomainName" xml:"DomainName"` - ExpressionNames []string `query:"ExpressionNames.member" xml:"ExpressionNames>member"` -} - -// DescribeExpressionsResponse is undocumented. -type DescribeExpressionsResponse struct { - Expressions []ExpressionStatus `query:"Expressions.member" xml:"DescribeExpressionsResult>Expressions>member"` -} - -// DescribeIndexFieldsRequest is undocumented. -type DescribeIndexFieldsRequest struct { - Deployed aws.BooleanValue `query:"Deployed" xml:"Deployed"` - DomainName aws.StringValue `query:"DomainName" xml:"DomainName"` - FieldNames []string `query:"FieldNames.member" xml:"FieldNames>member"` -} - -// DescribeIndexFieldsResponse is undocumented. -type DescribeIndexFieldsResponse struct { - IndexFields []IndexFieldStatus `query:"IndexFields.member" xml:"DescribeIndexFieldsResult>IndexFields>member"` -} - -// DescribeScalingParametersRequest is undocumented. -type DescribeScalingParametersRequest struct { - DomainName aws.StringValue `query:"DomainName" xml:"DomainName"` -} - -// DescribeScalingParametersResponse is undocumented. -type DescribeScalingParametersResponse struct { - ScalingParameters *ScalingParametersStatus `query:"ScalingParameters" xml:"DescribeScalingParametersResult>ScalingParameters"` -} - -// DescribeServiceAccessPoliciesRequest is undocumented. -type DescribeServiceAccessPoliciesRequest struct { - Deployed aws.BooleanValue `query:"Deployed" xml:"Deployed"` - DomainName aws.StringValue `query:"DomainName" xml:"DomainName"` -} - -// DescribeServiceAccessPoliciesResponse is undocumented. -type DescribeServiceAccessPoliciesResponse struct { - AccessPolicies *AccessPoliciesStatus `query:"AccessPolicies" xml:"DescribeServiceAccessPoliciesResult>AccessPolicies"` -} - -// DescribeSuggestersRequest is undocumented. -type DescribeSuggestersRequest struct { - Deployed aws.BooleanValue `query:"Deployed" xml:"Deployed"` - DomainName aws.StringValue `query:"DomainName" xml:"DomainName"` - SuggesterNames []string `query:"SuggesterNames.member" xml:"SuggesterNames>member"` -} - -// DescribeSuggestersResponse is undocumented. -type DescribeSuggestersResponse struct { - Suggesters []SuggesterStatus `query:"Suggesters.member" xml:"DescribeSuggestersResult>Suggesters>member"` -} - -// DocumentSuggesterOptions is undocumented. -type DocumentSuggesterOptions struct { - FuzzyMatching aws.StringValue `query:"FuzzyMatching" xml:"FuzzyMatching"` - SortExpression aws.StringValue `query:"SortExpression" xml:"SortExpression"` - SourceField aws.StringValue `query:"SourceField" xml:"SourceField"` -} - -type DomainNameMap map[string]string - -// UnmarshalXML implements xml.UnmarshalXML interface for map -func (m *DomainNameMap) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error { - if *m == nil { - (*m) = make(DomainNameMap) - } - for { - var e struct { - Key string `xml:"key"` - Value string `xml:"value"` - } - err := d.DecodeElement(&e, &start) - if err != nil && err != io.EOF { - return err - } - if err == io.EOF { - break - } - (*m)[e.Key] = e.Value - } - return nil -} - -// DomainStatus is undocumented. -type DomainStatus struct { - ARN aws.StringValue `query:"ARN" xml:"ARN"` - Created aws.BooleanValue `query:"Created" xml:"Created"` - Deleted aws.BooleanValue `query:"Deleted" xml:"Deleted"` - DocService *ServiceEndpoint `query:"DocService" xml:"DocService"` - DomainID aws.StringValue `query:"DomainId" xml:"DomainId"` - DomainName aws.StringValue `query:"DomainName" xml:"DomainName"` - Limits *Limits `query:"Limits" xml:"Limits"` - Processing aws.BooleanValue `query:"Processing" xml:"Processing"` - RequiresIndexDocuments aws.BooleanValue `query:"RequiresIndexDocuments" xml:"RequiresIndexDocuments"` - SearchInstanceCount aws.IntegerValue `query:"SearchInstanceCount" xml:"SearchInstanceCount"` - SearchInstanceType aws.StringValue `query:"SearchInstanceType" xml:"SearchInstanceType"` - SearchPartitionCount aws.IntegerValue `query:"SearchPartitionCount" xml:"SearchPartitionCount"` - SearchService *ServiceEndpoint `query:"SearchService" xml:"SearchService"` -} - -// DoubleArrayOptions is undocumented. -type DoubleArrayOptions struct { - DefaultValue aws.DoubleValue `query:"DefaultValue" xml:"DefaultValue"` - FacetEnabled aws.BooleanValue `query:"FacetEnabled" xml:"FacetEnabled"` - ReturnEnabled aws.BooleanValue `query:"ReturnEnabled" xml:"ReturnEnabled"` - SearchEnabled aws.BooleanValue `query:"SearchEnabled" xml:"SearchEnabled"` - SourceFields aws.StringValue `query:"SourceFields" xml:"SourceFields"` -} - -// DoubleOptions is undocumented. -type DoubleOptions struct { - DefaultValue aws.DoubleValue `query:"DefaultValue" xml:"DefaultValue"` - FacetEnabled aws.BooleanValue `query:"FacetEnabled" xml:"FacetEnabled"` - ReturnEnabled aws.BooleanValue `query:"ReturnEnabled" xml:"ReturnEnabled"` - SearchEnabled aws.BooleanValue `query:"SearchEnabled" xml:"SearchEnabled"` - SortEnabled aws.BooleanValue `query:"SortEnabled" xml:"SortEnabled"` - SourceField aws.StringValue `query:"SourceField" xml:"SourceField"` -} - -// Expression is undocumented. -type Expression struct { - ExpressionName aws.StringValue `query:"ExpressionName" xml:"ExpressionName"` - ExpressionValue aws.StringValue `query:"ExpressionValue" xml:"ExpressionValue"` -} - -// ExpressionStatus is undocumented. -type ExpressionStatus struct { - Options *Expression `query:"Options" xml:"Options"` - Status *OptionStatus `query:"Status" xml:"Status"` -} - -// IndexDocumentsRequest is undocumented. -type IndexDocumentsRequest struct { - DomainName aws.StringValue `query:"DomainName" xml:"DomainName"` -} - -// IndexDocumentsResponse is undocumented. -type IndexDocumentsResponse struct { - FieldNames []string `query:"FieldNames.member" xml:"IndexDocumentsResult>FieldNames>member"` -} - -// IndexField is undocumented. -type IndexField struct { - DateArrayOptions *DateArrayOptions `query:"DateArrayOptions" xml:"DateArrayOptions"` - DateOptions *DateOptions `query:"DateOptions" xml:"DateOptions"` - DoubleArrayOptions *DoubleArrayOptions `query:"DoubleArrayOptions" xml:"DoubleArrayOptions"` - DoubleOptions *DoubleOptions `query:"DoubleOptions" xml:"DoubleOptions"` - IndexFieldName aws.StringValue `query:"IndexFieldName" xml:"IndexFieldName"` - IndexFieldType aws.StringValue `query:"IndexFieldType" xml:"IndexFieldType"` - IntArrayOptions *IntArrayOptions `query:"IntArrayOptions" xml:"IntArrayOptions"` - IntOptions *IntOptions `query:"IntOptions" xml:"IntOptions"` - LatLonOptions *LatLonOptions `query:"LatLonOptions" xml:"LatLonOptions"` - LiteralArrayOptions *LiteralArrayOptions `query:"LiteralArrayOptions" xml:"LiteralArrayOptions"` - LiteralOptions *LiteralOptions `query:"LiteralOptions" xml:"LiteralOptions"` - TextArrayOptions *TextArrayOptions `query:"TextArrayOptions" xml:"TextArrayOptions"` - TextOptions *TextOptions `query:"TextOptions" xml:"TextOptions"` -} - -// IndexFieldStatus is undocumented. -type IndexFieldStatus struct { - Options *IndexField `query:"Options" xml:"Options"` - Status *OptionStatus `query:"Status" xml:"Status"` -} - -// Possible values for CloudSearch. -const ( - IndexFieldTypeDate = "date" - IndexFieldTypeDateArray = "date-array" - IndexFieldTypeDouble = "double" - IndexFieldTypeDoubleArray = "double-array" - IndexFieldTypeInt = "int" - IndexFieldTypeIntArray = "int-array" - IndexFieldTypeLatlon = "latlon" - IndexFieldTypeLiteral = "literal" - IndexFieldTypeLiteralArray = "literal-array" - IndexFieldTypeText = "text" - IndexFieldTypeTextArray = "text-array" -) - -// IntArrayOptions is undocumented. -type IntArrayOptions struct { - DefaultValue aws.LongValue `query:"DefaultValue" xml:"DefaultValue"` - FacetEnabled aws.BooleanValue `query:"FacetEnabled" xml:"FacetEnabled"` - ReturnEnabled aws.BooleanValue `query:"ReturnEnabled" xml:"ReturnEnabled"` - SearchEnabled aws.BooleanValue `query:"SearchEnabled" xml:"SearchEnabled"` - SourceFields aws.StringValue `query:"SourceFields" xml:"SourceFields"` -} - -// IntOptions is undocumented. -type IntOptions struct { - DefaultValue aws.LongValue `query:"DefaultValue" xml:"DefaultValue"` - FacetEnabled aws.BooleanValue `query:"FacetEnabled" xml:"FacetEnabled"` - ReturnEnabled aws.BooleanValue `query:"ReturnEnabled" xml:"ReturnEnabled"` - SearchEnabled aws.BooleanValue `query:"SearchEnabled" xml:"SearchEnabled"` - SortEnabled aws.BooleanValue `query:"SortEnabled" xml:"SortEnabled"` - SourceField aws.StringValue `query:"SourceField" xml:"SourceField"` -} - -// LatLonOptions is undocumented. -type LatLonOptions struct { - DefaultValue aws.StringValue `query:"DefaultValue" xml:"DefaultValue"` - FacetEnabled aws.BooleanValue `query:"FacetEnabled" xml:"FacetEnabled"` - ReturnEnabled aws.BooleanValue `query:"ReturnEnabled" xml:"ReturnEnabled"` - SearchEnabled aws.BooleanValue `query:"SearchEnabled" xml:"SearchEnabled"` - SortEnabled aws.BooleanValue `query:"SortEnabled" xml:"SortEnabled"` - SourceField aws.StringValue `query:"SourceField" xml:"SourceField"` -} - -// Limits is undocumented. -type Limits struct { - MaximumPartitionCount aws.IntegerValue `query:"MaximumPartitionCount" xml:"MaximumPartitionCount"` - MaximumReplicationCount aws.IntegerValue `query:"MaximumReplicationCount" xml:"MaximumReplicationCount"` -} - -// ListDomainNamesResponse is undocumented. -type ListDomainNamesResponse struct { - DomainNames DomainNameMap `query:"DomainNames.entry" xml:"ListDomainNamesResult>DomainNames>entry"` -} - -// LiteralArrayOptions is undocumented. -type LiteralArrayOptions struct { - DefaultValue aws.StringValue `query:"DefaultValue" xml:"DefaultValue"` - FacetEnabled aws.BooleanValue `query:"FacetEnabled" xml:"FacetEnabled"` - ReturnEnabled aws.BooleanValue `query:"ReturnEnabled" xml:"ReturnEnabled"` - SearchEnabled aws.BooleanValue `query:"SearchEnabled" xml:"SearchEnabled"` - SourceFields aws.StringValue `query:"SourceFields" xml:"SourceFields"` -} - -// LiteralOptions is undocumented. -type LiteralOptions struct { - DefaultValue aws.StringValue `query:"DefaultValue" xml:"DefaultValue"` - FacetEnabled aws.BooleanValue `query:"FacetEnabled" xml:"FacetEnabled"` - ReturnEnabled aws.BooleanValue `query:"ReturnEnabled" xml:"ReturnEnabled"` - SearchEnabled aws.BooleanValue `query:"SearchEnabled" xml:"SearchEnabled"` - SortEnabled aws.BooleanValue `query:"SortEnabled" xml:"SortEnabled"` - SourceField aws.StringValue `query:"SourceField" xml:"SourceField"` -} - -// Possible values for CloudSearch. -const ( - OptionStateActive = "Active" - OptionStateFailedToValidate = "FailedToValidate" - OptionStateProcessing = "Processing" - OptionStateRequiresIndexDocuments = "RequiresIndexDocuments" -) - -// OptionStatus is undocumented. -type OptionStatus struct { - CreationDate time.Time `query:"CreationDate" xml:"CreationDate"` - PendingDeletion aws.BooleanValue `query:"PendingDeletion" xml:"PendingDeletion"` - State aws.StringValue `query:"State" xml:"State"` - UpdateDate time.Time `query:"UpdateDate" xml:"UpdateDate"` - UpdateVersion aws.IntegerValue `query:"UpdateVersion" xml:"UpdateVersion"` -} - -// Possible values for CloudSearch. -const ( - PartitionInstanceTypeSearchM1Large = "search.m1.large" - PartitionInstanceTypeSearchM1Small = "search.m1.small" - PartitionInstanceTypeSearchM22xlarge = "search.m2.2xlarge" - PartitionInstanceTypeSearchM2Xlarge = "search.m2.xlarge" -) - -// ScalingParameters is undocumented. -type ScalingParameters struct { - DesiredInstanceType aws.StringValue `query:"DesiredInstanceType" xml:"DesiredInstanceType"` - DesiredPartitionCount aws.IntegerValue `query:"DesiredPartitionCount" xml:"DesiredPartitionCount"` - DesiredReplicationCount aws.IntegerValue `query:"DesiredReplicationCount" xml:"DesiredReplicationCount"` -} - -// ScalingParametersStatus is undocumented. -type ScalingParametersStatus struct { - Options *ScalingParameters `query:"Options" xml:"Options"` - Status *OptionStatus `query:"Status" xml:"Status"` -} - -// ServiceEndpoint is undocumented. -type ServiceEndpoint struct { - Endpoint aws.StringValue `query:"Endpoint" xml:"Endpoint"` -} - -// Suggester is undocumented. -type Suggester struct { - DocumentSuggesterOptions *DocumentSuggesterOptions `query:"DocumentSuggesterOptions" xml:"DocumentSuggesterOptions"` - SuggesterName aws.StringValue `query:"SuggesterName" xml:"SuggesterName"` -} - -// Possible values for CloudSearch. -const ( - SuggesterFuzzyMatchingHigh = "high" - SuggesterFuzzyMatchingLow = "low" - SuggesterFuzzyMatchingNone = "none" -) - -// SuggesterStatus is undocumented. -type SuggesterStatus struct { - Options *Suggester `query:"Options" xml:"Options"` - Status *OptionStatus `query:"Status" xml:"Status"` -} - -// TextArrayOptions is undocumented. -type TextArrayOptions struct { - AnalysisScheme aws.StringValue `query:"AnalysisScheme" xml:"AnalysisScheme"` - DefaultValue aws.StringValue `query:"DefaultValue" xml:"DefaultValue"` - HighlightEnabled aws.BooleanValue `query:"HighlightEnabled" xml:"HighlightEnabled"` - ReturnEnabled aws.BooleanValue `query:"ReturnEnabled" xml:"ReturnEnabled"` - SourceFields aws.StringValue `query:"SourceFields" xml:"SourceFields"` -} - -// TextOptions is undocumented. -type TextOptions struct { - AnalysisScheme aws.StringValue `query:"AnalysisScheme" xml:"AnalysisScheme"` - DefaultValue aws.StringValue `query:"DefaultValue" xml:"DefaultValue"` - HighlightEnabled aws.BooleanValue `query:"HighlightEnabled" xml:"HighlightEnabled"` - ReturnEnabled aws.BooleanValue `query:"ReturnEnabled" xml:"ReturnEnabled"` - SortEnabled aws.BooleanValue `query:"SortEnabled" xml:"SortEnabled"` - SourceField aws.StringValue `query:"SourceField" xml:"SourceField"` -} - -// UpdateAvailabilityOptionsRequest is undocumented. -type UpdateAvailabilityOptionsRequest struct { - DomainName aws.StringValue `query:"DomainName" xml:"DomainName"` - MultiAZ aws.BooleanValue `query:"MultiAZ" xml:"MultiAZ"` -} - -// UpdateAvailabilityOptionsResponse is undocumented. -type UpdateAvailabilityOptionsResponse struct { - AvailabilityOptions *AvailabilityOptionsStatus `query:"AvailabilityOptions" xml:"UpdateAvailabilityOptionsResult>AvailabilityOptions"` -} - -// UpdateScalingParametersRequest is undocumented. -type UpdateScalingParametersRequest struct { - DomainName aws.StringValue `query:"DomainName" xml:"DomainName"` - ScalingParameters *ScalingParameters `query:"ScalingParameters" xml:"ScalingParameters"` -} - -// UpdateScalingParametersResponse is undocumented. -type UpdateScalingParametersResponse struct { - ScalingParameters *ScalingParametersStatus `query:"ScalingParameters" xml:"UpdateScalingParametersResult>ScalingParameters"` -} - -// UpdateServiceAccessPoliciesRequest is undocumented. -type UpdateServiceAccessPoliciesRequest struct { - AccessPolicies aws.StringValue `query:"AccessPolicies" xml:"AccessPolicies"` - DomainName aws.StringValue `query:"DomainName" xml:"DomainName"` -} - -// UpdateServiceAccessPoliciesResponse is undocumented. -type UpdateServiceAccessPoliciesResponse struct { - AccessPolicies *AccessPoliciesStatus `query:"AccessPolicies" xml:"UpdateServiceAccessPoliciesResult>AccessPolicies"` -} - -// BuildSuggestersResult is a wrapper for BuildSuggestersResponse. -type BuildSuggestersResult struct { - FieldNames []string `query:"FieldNames.member" xml:"BuildSuggestersResult>FieldNames>member"` -} - -// CreateDomainResult is a wrapper for CreateDomainResponse. -type CreateDomainResult struct { - DomainStatus *DomainStatus `query:"DomainStatus" xml:"CreateDomainResult>DomainStatus"` -} - -// DefineAnalysisSchemeResult is a wrapper for DefineAnalysisSchemeResponse. -type DefineAnalysisSchemeResult struct { - AnalysisScheme *AnalysisSchemeStatus `query:"AnalysisScheme" xml:"DefineAnalysisSchemeResult>AnalysisScheme"` -} - -// DefineExpressionResult is a wrapper for DefineExpressionResponse. -type DefineExpressionResult struct { - Expression *ExpressionStatus `query:"Expression" xml:"DefineExpressionResult>Expression"` -} - -// DefineIndexFieldResult is a wrapper for DefineIndexFieldResponse. -type DefineIndexFieldResult struct { - IndexField *IndexFieldStatus `query:"IndexField" xml:"DefineIndexFieldResult>IndexField"` -} - -// DefineSuggesterResult is a wrapper for DefineSuggesterResponse. -type DefineSuggesterResult struct { - Suggester *SuggesterStatus `query:"Suggester" xml:"DefineSuggesterResult>Suggester"` -} - -// DeleteAnalysisSchemeResult is a wrapper for DeleteAnalysisSchemeResponse. -type DeleteAnalysisSchemeResult struct { - AnalysisScheme *AnalysisSchemeStatus `query:"AnalysisScheme" xml:"DeleteAnalysisSchemeResult>AnalysisScheme"` -} - -// DeleteDomainResult is a wrapper for DeleteDomainResponse. -type DeleteDomainResult struct { - DomainStatus *DomainStatus `query:"DomainStatus" xml:"DeleteDomainResult>DomainStatus"` -} - -// DeleteExpressionResult is a wrapper for DeleteExpressionResponse. -type DeleteExpressionResult struct { - Expression *ExpressionStatus `query:"Expression" xml:"DeleteExpressionResult>Expression"` -} - -// DeleteIndexFieldResult is a wrapper for DeleteIndexFieldResponse. -type DeleteIndexFieldResult struct { - IndexField *IndexFieldStatus `query:"IndexField" xml:"DeleteIndexFieldResult>IndexField"` -} - -// DeleteSuggesterResult is a wrapper for DeleteSuggesterResponse. -type DeleteSuggesterResult struct { - Suggester *SuggesterStatus `query:"Suggester" xml:"DeleteSuggesterResult>Suggester"` -} - -// DescribeAnalysisSchemesResult is a wrapper for DescribeAnalysisSchemesResponse. -type DescribeAnalysisSchemesResult struct { - AnalysisSchemes []AnalysisSchemeStatus `query:"AnalysisSchemes.member" xml:"DescribeAnalysisSchemesResult>AnalysisSchemes>member"` -} - -// DescribeAvailabilityOptionsResult is a wrapper for DescribeAvailabilityOptionsResponse. -type DescribeAvailabilityOptionsResult struct { - AvailabilityOptions *AvailabilityOptionsStatus `query:"AvailabilityOptions" xml:"DescribeAvailabilityOptionsResult>AvailabilityOptions"` -} - -// DescribeDomainsResult is a wrapper for DescribeDomainsResponse. -type DescribeDomainsResult struct { - DomainStatusList []DomainStatus `query:"DomainStatusList.member" xml:"DescribeDomainsResult>DomainStatusList>member"` -} - -// DescribeExpressionsResult is a wrapper for DescribeExpressionsResponse. -type DescribeExpressionsResult struct { - Expressions []ExpressionStatus `query:"Expressions.member" xml:"DescribeExpressionsResult>Expressions>member"` -} - -// DescribeIndexFieldsResult is a wrapper for DescribeIndexFieldsResponse. -type DescribeIndexFieldsResult struct { - IndexFields []IndexFieldStatus `query:"IndexFields.member" xml:"DescribeIndexFieldsResult>IndexFields>member"` -} - -// DescribeScalingParametersResult is a wrapper for DescribeScalingParametersResponse. -type DescribeScalingParametersResult struct { - ScalingParameters *ScalingParametersStatus `query:"ScalingParameters" xml:"DescribeScalingParametersResult>ScalingParameters"` -} - -// DescribeServiceAccessPoliciesResult is a wrapper for DescribeServiceAccessPoliciesResponse. -type DescribeServiceAccessPoliciesResult struct { - AccessPolicies *AccessPoliciesStatus `query:"AccessPolicies" xml:"DescribeServiceAccessPoliciesResult>AccessPolicies"` -} - -// DescribeSuggestersResult is a wrapper for DescribeSuggestersResponse. -type DescribeSuggestersResult struct { - Suggesters []SuggesterStatus `query:"Suggesters.member" xml:"DescribeSuggestersResult>Suggesters>member"` -} - -// IndexDocumentsResult is a wrapper for IndexDocumentsResponse. -type IndexDocumentsResult struct { - FieldNames []string `query:"FieldNames.member" xml:"IndexDocumentsResult>FieldNames>member"` -} - -// ListDomainNamesResult is a wrapper for ListDomainNamesResponse. -type ListDomainNamesResult struct { - DomainNames DomainNameMap `query:"DomainNames.entry" xml:"ListDomainNamesResult>DomainNames>entry"` -} - -// UpdateAvailabilityOptionsResult is a wrapper for UpdateAvailabilityOptionsResponse. -type UpdateAvailabilityOptionsResult struct { - AvailabilityOptions *AvailabilityOptionsStatus `query:"AvailabilityOptions" xml:"UpdateAvailabilityOptionsResult>AvailabilityOptions"` -} - -// UpdateScalingParametersResult is a wrapper for UpdateScalingParametersResponse. -type UpdateScalingParametersResult struct { - ScalingParameters *ScalingParametersStatus `query:"ScalingParameters" xml:"UpdateScalingParametersResult>ScalingParameters"` -} - -// UpdateServiceAccessPoliciesResult is a wrapper for UpdateServiceAccessPoliciesResponse. -type UpdateServiceAccessPoliciesResult struct { - AccessPolicies *AccessPoliciesStatus `query:"AccessPolicies" xml:"UpdateServiceAccessPoliciesResult>AccessPolicies"` -} - -// avoid errors if the packages aren't referenced -var _ time.Time - -var _ xml.Decoder -var _ = io.EOF diff --git a/src/github.com/getlantern/aws-sdk-go/gen/cloudsearchdomain/cloudsearchdomain.go b/src/github.com/getlantern/aws-sdk-go/gen/cloudsearchdomain/cloudsearchdomain.go deleted file mode 100644 index 7433d5eba0..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/gen/cloudsearchdomain/cloudsearchdomain.go +++ /dev/null @@ -1,423 +0,0 @@ -// THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. - -// Package cloudsearchdomain provides a client for Amazon CloudSearch Domain. -package cloudsearchdomain - -import ( - "net/http" - "time" - - "github.com/awslabs/aws-sdk-go/aws" - "github.com/awslabs/aws-sdk-go/gen/endpoints" -) - -import ( - "bytes" - "encoding/json" - "fmt" - "io" - "io/ioutil" - "net/url" - "strconv" - "strings" -) - -// CloudSearchDomain is a client for Amazon CloudSearch Domain. -type CloudSearchDomain struct { - client *aws.RestClient -} - -// New returns a new CloudSearchDomain client. -func New(creds aws.CredentialsProvider, region string, client *http.Client) *CloudSearchDomain { - if client == nil { - client = http.DefaultClient - } - - endpoint, service, region := endpoints.Lookup("cloudsearchdomain", region) - - return &CloudSearchDomain{ - client: &aws.RestClient{ - Context: aws.Context{ - Credentials: creds, - Service: service, - Region: region, - }, - Client: client, - Endpoint: endpoint, - APIVersion: "2013-01-01", - }, - } -} - -// Search retrieves a list of documents that match the specified search -// criteria. How you specify the search criteria depends on which query -// parser you use. Amazon CloudSearch supports four query parsers: simple : -// search all text and text-array fields for the specified string. Search -// for phrases, individual terms, and prefixes. structured : search -// specific fields, construct compound queries using Boolean operators, and -// use advanced features such as term boosting and proximity searching. -// lucene : specify search criteria using the Apache Lucene query parser -// syntax. dismax : specify search criteria using the simplified subset of -// the Apache Lucene query parser syntax defined by the DisMax query -// parser. For more information, see Searching Your Data in the Amazon -// CloudSearch Developer Guide The endpoint for submitting Search requests -// is domain-specific. You submit search requests to a domain's search -// endpoint. To get the search endpoint for your domain, use the Amazon -// CloudSearch configuration service DescribeDomains action. A domain's -// endpoints are also displayed on the domain dashboard in the Amazon -// CloudSearch console. -func (c *CloudSearchDomain) Search(req *SearchRequest) (resp *SearchResponse, err error) { - resp = &SearchResponse{} - - var body io.Reader - var contentType string - - uri := c.client.Endpoint + "/2013-01-01/search?format=sdk&pretty=true" - - q := url.Values{} - - if req.Cursor != nil { - q.Set("cursor", *req.Cursor) - } - - if req.Expr != nil { - q.Set("expr", *req.Expr) - } - - if req.Facet != nil { - q.Set("facet", *req.Facet) - } - - if req.FilterQuery != nil { - q.Set("fq", *req.FilterQuery) - } - - if req.Highlight != nil { - q.Set("highlight", *req.Highlight) - } - - if req.Partial != nil { - q.Set("partial", fmt.Sprintf("%v", req.Partial)) - } - - if req.Query != nil { - q.Set("q", *req.Query) - } - - if req.QueryOptions != nil { - q.Set("q.options", *req.QueryOptions) - } - - if req.QueryParser != nil { - q.Set("q.parser", *req.QueryParser) - } - - if req.Return != nil { - q.Set("return", *req.Return) - } - - if req.Size != nil { - q.Set("size", fmt.Sprintf("%v", req.Size)) - } - - if req.Sort != nil { - q.Set("sort", *req.Sort) - } - - if req.Start != nil { - q.Set("start", fmt.Sprintf("%v", req.Start)) - } - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("GET", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - - if e := json.NewDecoder(httpResp.Body).Decode(resp); e != nil && e != io.EOF { - err = e - return - } - - return -} - -// Suggest retrieves autocomplete suggestions for a partial query string. -// You can use suggestions enable you to display likely matches before -// users finish typing. In Amazon CloudSearch, suggestions are based on the -// contents of a particular text field. When you request suggestions, -// Amazon CloudSearch finds all of the documents whose values in the -// suggester field start with the specified query string. The beginning of -// the field must match the query string to be considered a match. For more -// information about configuring suggesters and retrieving suggestions, see -// Getting Suggestions in the Amazon CloudSearch Developer Guide . The -// endpoint for submitting Suggest requests is domain-specific. You submit -// suggest requests to a domain's search endpoint. To get the search -// endpoint for your domain, use the Amazon CloudSearch configuration -// service DescribeDomains action. A domain's endpoints are also displayed -// on the domain dashboard in the Amazon CloudSearch console. -func (c *CloudSearchDomain) Suggest(req *SuggestRequest) (resp *SuggestResponse, err error) { - resp = &SuggestResponse{} - - var body io.Reader - var contentType string - - uri := c.client.Endpoint + "/2013-01-01/suggest?format=sdk&pretty=true" - - q := url.Values{} - - if req.Query != nil { - q.Set("q", *req.Query) - } - - if req.Size != nil { - q.Set("size", fmt.Sprintf("%v", req.Size)) - } - - if req.Suggester != nil { - q.Set("suggester", *req.Suggester) - } - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("GET", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - - if e := json.NewDecoder(httpResp.Body).Decode(resp); e != nil && e != io.EOF { - err = e - return - } - - return -} - -// UploadDocuments posts a batch of documents to a search domain for -// indexing. A document batch is a collection of add and delete operations -// that represent the documents you want to add, update, or delete from -// your domain. Batches can be described in either or Each item that you -// want Amazon CloudSearch to return as a search result (such as a product) -// is represented as a document. Every document has a unique ID and one or -// more fields that contain the data that you want to search and return in -// results. Individual documents cannot contain more than 1 MB of data. The -// entire batch cannot exceed 5 MB. To get the best possible upload -// performance, group add and delete operations in batches that are close -// the 5 MB limit. Submitting a large volume of single-document batches can -// overload a domain's document service. The endpoint for submitting -// UploadDocuments requests is domain-specific. To get the document -// endpoint for your domain, use the Amazon CloudSearch configuration -// service DescribeDomains action. A domain's endpoints are also displayed -// on the domain dashboard in the Amazon CloudSearch console. For more -// information about formatting your data for Amazon CloudSearch, see -// Preparing Your Data in the Amazon CloudSearch Developer Guide . For more -// information about uploading data for indexing, see Uploading Data in the -// Amazon CloudSearch Developer Guide . -func (c *CloudSearchDomain) UploadDocuments(req *UploadDocumentsRequest) (resp *UploadDocumentsResponse, err error) { - resp = &UploadDocumentsResponse{} - - var body io.Reader - var contentType string - - contentType = "application/json" - b, err := json.Marshal(req.Documents) - if err != nil { - return - } - body = bytes.NewReader(b) - - uri := c.client.Endpoint + "/2013-01-01/documents/batch?format=sdk" - - q := url.Values{} - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("POST", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - if req.ContentType != nil { - httpReq.Header.Set("Content-Type", *req.ContentType) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - - if e := json.NewDecoder(httpResp.Body).Decode(resp); e != nil && e != io.EOF { - err = e - return - } - - return -} - -// Bucket is undocumented. -type Bucket struct { - Count aws.LongValue `json:"count,omitempty"` - Value aws.StringValue `json:"value,omitempty"` -} - -// BucketInfo is undocumented. -type BucketInfo struct { - Buckets []Bucket `json:"buckets,omitempty"` -} - -// Possible values for CloudSearchDomain. -const ( - ContentTypeApplicationJSON = "application/json" - ContentTypeApplicationXML = "application/xml" -) - -// DocumentServiceWarning is undocumented. -type DocumentServiceWarning struct { - Message aws.StringValue `json:"message,omitempty"` -} - -// Hit is undocumented. -type Hit struct { - Fields map[string][]string `json:"fields,omitempty"` - Highlights map[string]string `json:"highlights,omitempty"` - ID aws.StringValue `json:"id,omitempty"` -} - -// Hits is undocumented. -type Hits struct { - Cursor aws.StringValue `json:"cursor,omitempty"` - Found aws.LongValue `json:"found,omitempty"` - Hit []Hit `json:"hit,omitempty"` - Start aws.LongValue `json:"start,omitempty"` -} - -// Possible values for CloudSearchDomain. -const ( - QueryParserDismax = "dismax" - QueryParserLucene = "lucene" - QueryParserSimple = "simple" - QueryParserStructured = "structured" -) - -// SearchRequest is undocumented. -type SearchRequest struct { - Cursor aws.StringValue `json:"-"` - Expr aws.StringValue `json:"-"` - Facet aws.StringValue `json:"-"` - FilterQuery aws.StringValue `json:"-"` - Highlight aws.StringValue `json:"-"` - Partial aws.BooleanValue `json:"-"` - Query aws.StringValue `json:"-"` - QueryOptions aws.StringValue `json:"-"` - QueryParser aws.StringValue `json:"-"` - Return aws.StringValue `json:"-"` - Size aws.LongValue `json:"-"` - Sort aws.StringValue `json:"-"` - Start aws.LongValue `json:"-"` -} - -// SearchResponse is undocumented. -type SearchResponse struct { - Facets map[string]BucketInfo `json:"facets,omitempty"` - Hits *Hits `json:"hits,omitempty"` - Status *SearchStatus `json:"status,omitempty"` -} - -// SearchStatus is undocumented. -type SearchStatus struct { - Rid aws.StringValue `json:"rid,omitempty"` - Timems aws.LongValue `json:"timems,omitempty"` -} - -// SuggestModel is undocumented. -type SuggestModel struct { - Found aws.LongValue `json:"found,omitempty"` - Query aws.StringValue `json:"query,omitempty"` - Suggestions []SuggestionMatch `json:"suggestions,omitempty"` -} - -// SuggestRequest is undocumented. -type SuggestRequest struct { - Query aws.StringValue `json:"-"` - Size aws.LongValue `json:"-"` - Suggester aws.StringValue `json:"-"` -} - -// SuggestResponse is undocumented. -type SuggestResponse struct { - Status *SuggestStatus `json:"status,omitempty"` - Suggest *SuggestModel `json:"suggest,omitempty"` -} - -// SuggestStatus is undocumented. -type SuggestStatus struct { - Rid aws.StringValue `json:"rid,omitempty"` - Timems aws.LongValue `json:"timems,omitempty"` -} - -// SuggestionMatch is undocumented. -type SuggestionMatch struct { - ID aws.StringValue `json:"id,omitempty"` - Score aws.LongValue `json:"score,omitempty"` - Suggestion aws.StringValue `json:"suggestion,omitempty"` -} - -// UploadDocumentsRequest is undocumented. -type UploadDocumentsRequest struct { - ContentType aws.StringValue `json:"-"` - Documents []byte `json:"documents"` -} - -// UploadDocumentsResponse is undocumented. -type UploadDocumentsResponse struct { - Adds aws.LongValue `json:"adds,omitempty"` - Deletes aws.LongValue `json:"deletes,omitempty"` - Status aws.StringValue `json:"status,omitempty"` - Warnings []DocumentServiceWarning `json:"warnings,omitempty"` -} - -// avoid errors if the packages aren't referenced -var _ time.Time - -var _ bytes.Reader -var _ url.URL -var _ fmt.Stringer -var _ strings.Reader -var _ strconv.NumError -var _ = ioutil.Discard -var _ json.RawMessage diff --git a/src/github.com/getlantern/aws-sdk-go/gen/cloudtrail/cloudtrail.go b/src/github.com/getlantern/aws-sdk-go/gen/cloudtrail/cloudtrail.go deleted file mode 100644 index 74c9da9748..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/gen/cloudtrail/cloudtrail.go +++ /dev/null @@ -1,216 +0,0 @@ -// THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. - -// Package cloudtrail provides a client for AWS CloudTrail. -package cloudtrail - -import ( - "net/http" - "time" - - "github.com/awslabs/aws-sdk-go/aws" - "github.com/awslabs/aws-sdk-go/gen/endpoints" -) - -// CloudTrail is a client for AWS CloudTrail. -type CloudTrail struct { - client *aws.JSONClient -} - -// New returns a new CloudTrail client. -func New(creds aws.CredentialsProvider, region string, client *http.Client) *CloudTrail { - if client == nil { - client = http.DefaultClient - } - - endpoint, service, region := endpoints.Lookup("cloudtrail", region) - - return &CloudTrail{ - client: &aws.JSONClient{ - Context: aws.Context{ - Credentials: creds, - Service: service, - Region: region, - }, Client: client, - Endpoint: endpoint, - JSONVersion: "1.1", - TargetPrefix: "com.amazonaws.cloudtrail.v20131101.CloudTrail_20131101", - }, - } -} - -// CreateTrail from the command line, use create-subscription . Creates a -// trail that specifies the settings for delivery of log data to an Amazon -// S3 bucket. -func (c *CloudTrail) CreateTrail(req *CreateTrailRequest) (resp *CreateTrailResponse, err error) { - resp = &CreateTrailResponse{} - err = c.client.Do("CreateTrail", "POST", "/", req, resp) - return -} - -// DeleteTrail is undocumented. -func (c *CloudTrail) DeleteTrail(req *DeleteTrailRequest) (resp *DeleteTrailResponse, err error) { - resp = &DeleteTrailResponse{} - err = c.client.Do("DeleteTrail", "POST", "/", req, resp) - return -} - -// DescribeTrails retrieves settings for the trail associated with the -// current region for your account. -func (c *CloudTrail) DescribeTrails(req *DescribeTrailsRequest) (resp *DescribeTrailsResponse, err error) { - resp = &DescribeTrailsResponse{} - err = c.client.Do("DescribeTrails", "POST", "/", req, resp) - return -} - -// GetTrailStatus returns a JSON-formatted list of information about the -// specified trail. Fields include information on delivery errors, Amazon -// SNS and Amazon S3 errors, and start and stop logging times for each -// trail. -func (c *CloudTrail) GetTrailStatus(req *GetTrailStatusRequest) (resp *GetTrailStatusResponse, err error) { - resp = &GetTrailStatusResponse{} - err = c.client.Do("GetTrailStatus", "POST", "/", req, resp) - return -} - -// StartLogging starts the recording of AWS API calls and log file delivery -// for a trail. -func (c *CloudTrail) StartLogging(req *StartLoggingRequest) (resp *StartLoggingResponse, err error) { - resp = &StartLoggingResponse{} - err = c.client.Do("StartLogging", "POST", "/", req, resp) - return -} - -// StopLogging suspends the recording of AWS API calls and log file -// delivery for the specified trail. Under most circumstances, there is no -// need to use this action. You can update a trail without stopping it -// first. This action is the only way to stop recording. -func (c *CloudTrail) StopLogging(req *StopLoggingRequest) (resp *StopLoggingResponse, err error) { - resp = &StopLoggingResponse{} - err = c.client.Do("StopLogging", "POST", "/", req, resp) - return -} - -// UpdateTrail from the command line, use update-subscription Updates the -// settings that specify delivery of log files. Changes to a trail do not -// require stopping the CloudTrail service. Use this action to designate an -// existing bucket for log delivery. If the existing bucket has previously -// been a target for CloudTrail log files, an IAM policy exists for the -// bucket. -func (c *CloudTrail) UpdateTrail(req *UpdateTrailRequest) (resp *UpdateTrailResponse, err error) { - resp = &UpdateTrailResponse{} - err = c.client.Do("UpdateTrail", "POST", "/", req, resp) - return -} - -// CreateTrailRequest is undocumented. -type CreateTrailRequest struct { - CloudWatchLogsLogGroupARN aws.StringValue `json:"CloudWatchLogsLogGroupArn,omitempty"` - CloudWatchLogsRoleARN aws.StringValue `json:"CloudWatchLogsRoleArn,omitempty"` - IncludeGlobalServiceEvents aws.BooleanValue `json:"IncludeGlobalServiceEvents,omitempty"` - Name aws.StringValue `json:"Name"` - S3BucketName aws.StringValue `json:"S3BucketName"` - S3KeyPrefix aws.StringValue `json:"S3KeyPrefix,omitempty"` - SNSTopicName aws.StringValue `json:"SnsTopicName,omitempty"` -} - -// CreateTrailResponse is undocumented. -type CreateTrailResponse struct { - CloudWatchLogsLogGroupARN aws.StringValue `json:"CloudWatchLogsLogGroupArn,omitempty"` - CloudWatchLogsRoleARN aws.StringValue `json:"CloudWatchLogsRoleArn,omitempty"` - IncludeGlobalServiceEvents aws.BooleanValue `json:"IncludeGlobalServiceEvents,omitempty"` - Name aws.StringValue `json:"Name,omitempty"` - S3BucketName aws.StringValue `json:"S3BucketName,omitempty"` - S3KeyPrefix aws.StringValue `json:"S3KeyPrefix,omitempty"` - SNSTopicName aws.StringValue `json:"SnsTopicName,omitempty"` -} - -// DeleteTrailRequest is undocumented. -type DeleteTrailRequest struct { - Name aws.StringValue `json:"Name"` -} - -// DeleteTrailResponse is undocumented. -type DeleteTrailResponse struct { -} - -// DescribeTrailsRequest is undocumented. -type DescribeTrailsRequest struct { - TrailNameList []string `json:"trailNameList,omitempty"` -} - -// DescribeTrailsResponse is undocumented. -type DescribeTrailsResponse struct { - TrailList []Trail `json:"trailList,omitempty"` -} - -// GetTrailStatusRequest is undocumented. -type GetTrailStatusRequest struct { - Name aws.StringValue `json:"Name"` -} - -// GetTrailStatusResponse is undocumented. -type GetTrailStatusResponse struct { - IsLogging aws.BooleanValue `json:"IsLogging,omitempty"` - LatestCloudWatchLogsDeliveryError aws.StringValue `json:"LatestCloudWatchLogsDeliveryError,omitempty"` - LatestCloudWatchLogsDeliveryTime *aws.UnixTimestamp `json:"LatestCloudWatchLogsDeliveryTime,omitempty"` - LatestDeliveryError aws.StringValue `json:"LatestDeliveryError,omitempty"` - LatestDeliveryTime *aws.UnixTimestamp `json:"LatestDeliveryTime,omitempty"` - LatestNotificationError aws.StringValue `json:"LatestNotificationError,omitempty"` - LatestNotificationTime *aws.UnixTimestamp `json:"LatestNotificationTime,omitempty"` - StartLoggingTime *aws.UnixTimestamp `json:"StartLoggingTime,omitempty"` - StopLoggingTime *aws.UnixTimestamp `json:"StopLoggingTime,omitempty"` -} - -// StartLoggingRequest is undocumented. -type StartLoggingRequest struct { - Name aws.StringValue `json:"Name"` -} - -// StartLoggingResponse is undocumented. -type StartLoggingResponse struct { -} - -// StopLoggingRequest is undocumented. -type StopLoggingRequest struct { - Name aws.StringValue `json:"Name"` -} - -// StopLoggingResponse is undocumented. -type StopLoggingResponse struct { -} - -// Trail is undocumented. -type Trail struct { - CloudWatchLogsLogGroupARN aws.StringValue `json:"CloudWatchLogsLogGroupArn,omitempty"` - CloudWatchLogsRoleARN aws.StringValue `json:"CloudWatchLogsRoleArn,omitempty"` - IncludeGlobalServiceEvents aws.BooleanValue `json:"IncludeGlobalServiceEvents,omitempty"` - Name aws.StringValue `json:"Name,omitempty"` - S3BucketName aws.StringValue `json:"S3BucketName,omitempty"` - S3KeyPrefix aws.StringValue `json:"S3KeyPrefix,omitempty"` - SNSTopicName aws.StringValue `json:"SnsTopicName,omitempty"` -} - -// UpdateTrailRequest is undocumented. -type UpdateTrailRequest struct { - CloudWatchLogsLogGroupARN aws.StringValue `json:"CloudWatchLogsLogGroupArn,omitempty"` - CloudWatchLogsRoleARN aws.StringValue `json:"CloudWatchLogsRoleArn,omitempty"` - IncludeGlobalServiceEvents aws.BooleanValue `json:"IncludeGlobalServiceEvents,omitempty"` - Name aws.StringValue `json:"Name"` - S3BucketName aws.StringValue `json:"S3BucketName,omitempty"` - S3KeyPrefix aws.StringValue `json:"S3KeyPrefix,omitempty"` - SNSTopicName aws.StringValue `json:"SnsTopicName,omitempty"` -} - -// UpdateTrailResponse is undocumented. -type UpdateTrailResponse struct { - CloudWatchLogsLogGroupARN aws.StringValue `json:"CloudWatchLogsLogGroupArn,omitempty"` - CloudWatchLogsRoleARN aws.StringValue `json:"CloudWatchLogsRoleArn,omitempty"` - IncludeGlobalServiceEvents aws.BooleanValue `json:"IncludeGlobalServiceEvents,omitempty"` - Name aws.StringValue `json:"Name,omitempty"` - S3BucketName aws.StringValue `json:"S3BucketName,omitempty"` - S3KeyPrefix aws.StringValue `json:"S3KeyPrefix,omitempty"` - SNSTopicName aws.StringValue `json:"SnsTopicName,omitempty"` -} - -// avoid errors if the packages aren't referenced -var _ time.Time diff --git a/src/github.com/getlantern/aws-sdk-go/gen/cloudwatch/cloudwatch.go b/src/github.com/getlantern/aws-sdk-go/gen/cloudwatch/cloudwatch.go deleted file mode 100644 index e6f5dc22ae..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/gen/cloudwatch/cloudwatch.go +++ /dev/null @@ -1,481 +0,0 @@ -// THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. - -// Package cloudwatch provides a client for Amazon CloudWatch. -package cloudwatch - -import ( - "net/http" - "time" - - "github.com/awslabs/aws-sdk-go/aws" - "github.com/awslabs/aws-sdk-go/gen/endpoints" -) - -import ( - "encoding/xml" - "io" -) - -// CloudWatch is a client for Amazon CloudWatch. -type CloudWatch struct { - client *aws.QueryClient -} - -// New returns a new CloudWatch client. -func New(creds aws.CredentialsProvider, region string, client *http.Client) *CloudWatch { - if client == nil { - client = http.DefaultClient - } - - endpoint, service, region := endpoints.Lookup("monitoring", region) - - return &CloudWatch{ - client: &aws.QueryClient{ - Context: aws.Context{ - Credentials: creds, - Service: service, - Region: region, - }, - Client: client, - Endpoint: endpoint, - APIVersion: "2010-08-01", - }, - } -} - -// DeleteAlarms deletes all specified alarms. In the event of an error, no -// alarms are deleted. -func (c *CloudWatch) DeleteAlarms(req *DeleteAlarmsInput) (err error) { - // NRE - err = c.client.Do("DeleteAlarms", "POST", "/", req, nil) - return -} - -// DescribeAlarmHistory retrieves history for the specified alarm. Filter -// alarms by date range or item type. If an alarm name is not specified, -// Amazon CloudWatch returns histories for all of the owner's alarms. -func (c *CloudWatch) DescribeAlarmHistory(req *DescribeAlarmHistoryInput) (resp *DescribeAlarmHistoryResult, err error) { - resp = &DescribeAlarmHistoryResult{} - err = c.client.Do("DescribeAlarmHistory", "POST", "/", req, resp) - return -} - -// DescribeAlarms retrieves alarms with the specified names. If no name is -// specified, all alarms for the user are returned. Alarms can be retrieved -// by using only a prefix for the alarm name, the alarm state, or a prefix -// for any action. -func (c *CloudWatch) DescribeAlarms(req *DescribeAlarmsInput) (resp *DescribeAlarmsResult, err error) { - resp = &DescribeAlarmsResult{} - err = c.client.Do("DescribeAlarms", "POST", "/", req, resp) - return -} - -// DescribeAlarmsForMetric retrieves all alarms for a single metric. -// Specify a statistic, period, or unit to filter the set of alarms -// further. -func (c *CloudWatch) DescribeAlarmsForMetric(req *DescribeAlarmsForMetricInput) (resp *DescribeAlarmsForMetricResult, err error) { - resp = &DescribeAlarmsForMetricResult{} - err = c.client.Do("DescribeAlarmsForMetric", "POST", "/", req, resp) - return -} - -// DisableAlarmActions disables actions for the specified alarms. When an -// alarm's actions are disabled the alarm's state may change, but none of -// the alarm's actions will execute. -func (c *CloudWatch) DisableAlarmActions(req *DisableAlarmActionsInput) (err error) { - // NRE - err = c.client.Do("DisableAlarmActions", "POST", "/", req, nil) - return -} - -// EnableAlarmActions is undocumented. -func (c *CloudWatch) EnableAlarmActions(req *EnableAlarmActionsInput) (err error) { - // NRE - err = c.client.Do("EnableAlarmActions", "POST", "/", req, nil) - return -} - -// GetMetricStatistics gets statistics for the specified metric. The -// maximum number of data points returned from a single GetMetricStatistics -// request is 1,440, wereas the maximum number of data points that can be -// queried is 50,850. If you make a request that generates more than 1,440 -// data points, Amazon CloudWatch returns an error. In such a case, you can -// alter the request by narrowing the specified time range or increasing -// the specified period. Alternatively, you can make multiple requests -// across adjacent time ranges. Amazon CloudWatch aggregates data points -// based on the length of the period that you specify. For example, if you -// request statistics with a one-minute granularity, Amazon CloudWatch -// aggregates data points with time stamps that fall within the same -// one-minute period. In such a case, the data points queried can greatly -// outnumber the data points returned. The following examples show various -// statistics allowed by the data point query maximum of 50,850 when you -// call GetMetricStatistics on Amazon EC2 instances with detailed -// (one-minute) monitoring enabled: Statistics for up to 400 instances for -// a span of one hour Statistics for up to 35 instances over a span of 24 -// hours Statistics for up to 2 instances over a span of 2 weeks For -// information about the namespace, metric names, and dimensions that other -// Amazon Web Services products use to send metrics to Cloudwatch, go to -// Amazon CloudWatch Metrics, Namespaces, and Dimensions Reference in the -// Amazon CloudWatch Developer Guide . -func (c *CloudWatch) GetMetricStatistics(req *GetMetricStatisticsInput) (resp *GetMetricStatisticsResult, err error) { - resp = &GetMetricStatisticsResult{} - err = c.client.Do("GetMetricStatistics", "POST", "/", req, resp) - return -} - -// ListMetrics returns a list of valid metrics stored for the AWS account -// owner. Returned metrics can be used with GetMetricStatistics to obtain -// statistical data for a given metric. -func (c *CloudWatch) ListMetrics(req *ListMetricsInput) (resp *ListMetricsResult, err error) { - resp = &ListMetricsResult{} - err = c.client.Do("ListMetrics", "POST", "/", req, resp) - return -} - -// PutMetricAlarm creates or updates an alarm and associates it with the -// specified Amazon CloudWatch metric. Optionally, this operation can -// associate one or more Amazon Simple Notification Service resources with -// the alarm. When this operation creates an alarm, the alarm state is -// immediately set to . The alarm is evaluated and its StateValue is set -// appropriately. Any actions associated with the StateValue is then -// executed. -func (c *CloudWatch) PutMetricAlarm(req *PutMetricAlarmInput) (err error) { - // NRE - err = c.client.Do("PutMetricAlarm", "POST", "/", req, nil) - return -} - -// PutMetricData publishes metric data points to Amazon CloudWatch. Amazon -// Cloudwatch associates the data points with the specified metric. If the -// specified metric does not exist, Amazon CloudWatch creates the metric. -// It can take up to fifteen minutes for a new metric to appear in calls to -// the ListMetrics action. request is limited to 8 KB for GET requests and -// 40 KB for requests. Although the Value parameter accepts numbers of type -// Double , Amazon CloudWatch truncates values with very large exponents. -// Values with base-10 exponents greater than 126 (1 x 10^126) are -// truncated. Likewise, values with base-10 exponents less than -130 (1 x -// 10^-130) are also truncated. Data that is timestamped 24 hours or more -// in the past may take in excess of 48 hours to become available from -// submission time using GetMetricStatistics -func (c *CloudWatch) PutMetricData(req *PutMetricDataInput) (err error) { - // NRE - err = c.client.Do("PutMetricData", "POST", "/", req, nil) - return -} - -// SetAlarmState temporarily sets the state of an alarm. When the updated -// StateValue differs from the previous value, the action configured for -// the appropriate state is invoked. This is not a permanent change. The -// next periodic alarm check (in about a minute) will set the alarm to its -// actual state. -func (c *CloudWatch) SetAlarmState(req *SetAlarmStateInput) (err error) { - // NRE - err = c.client.Do("SetAlarmState", "POST", "/", req, nil) - return -} - -// AlarmHistoryItem is undocumented. -type AlarmHistoryItem struct { - AlarmName aws.StringValue `query:"AlarmName" xml:"AlarmName"` - HistoryData aws.StringValue `query:"HistoryData" xml:"HistoryData"` - HistoryItemType aws.StringValue `query:"HistoryItemType" xml:"HistoryItemType"` - HistorySummary aws.StringValue `query:"HistorySummary" xml:"HistorySummary"` - Timestamp time.Time `query:"Timestamp" xml:"Timestamp"` -} - -// Possible values for CloudWatch. -const ( - ComparisonOperatorGreaterThanOrEqualToThreshold = "GreaterThanOrEqualToThreshold" - ComparisonOperatorGreaterThanThreshold = "GreaterThanThreshold" - ComparisonOperatorLessThanOrEqualToThreshold = "LessThanOrEqualToThreshold" - ComparisonOperatorLessThanThreshold = "LessThanThreshold" -) - -// Datapoint is undocumented. -type Datapoint struct { - Average aws.DoubleValue `query:"Average" xml:"Average"` - Maximum aws.DoubleValue `query:"Maximum" xml:"Maximum"` - Minimum aws.DoubleValue `query:"Minimum" xml:"Minimum"` - SampleCount aws.DoubleValue `query:"SampleCount" xml:"SampleCount"` - Sum aws.DoubleValue `query:"Sum" xml:"Sum"` - Timestamp time.Time `query:"Timestamp" xml:"Timestamp"` - Unit aws.StringValue `query:"Unit" xml:"Unit"` -} - -// DeleteAlarmsInput is undocumented. -type DeleteAlarmsInput struct { - AlarmNames []string `query:"AlarmNames.member" xml:"AlarmNames>member"` -} - -// DescribeAlarmHistoryInput is undocumented. -type DescribeAlarmHistoryInput struct { - AlarmName aws.StringValue `query:"AlarmName" xml:"AlarmName"` - EndDate time.Time `query:"EndDate" xml:"EndDate"` - HistoryItemType aws.StringValue `query:"HistoryItemType" xml:"HistoryItemType"` - MaxRecords aws.IntegerValue `query:"MaxRecords" xml:"MaxRecords"` - NextToken aws.StringValue `query:"NextToken" xml:"NextToken"` - StartDate time.Time `query:"StartDate" xml:"StartDate"` -} - -// DescribeAlarmHistoryOutput is undocumented. -type DescribeAlarmHistoryOutput struct { - AlarmHistoryItems []AlarmHistoryItem `query:"AlarmHistoryItems.member" xml:"DescribeAlarmHistoryResult>AlarmHistoryItems>member"` - NextToken aws.StringValue `query:"NextToken" xml:"DescribeAlarmHistoryResult>NextToken"` -} - -// DescribeAlarmsForMetricInput is undocumented. -type DescribeAlarmsForMetricInput struct { - Dimensions []Dimension `query:"Dimensions.member" xml:"Dimensions>member"` - MetricName aws.StringValue `query:"MetricName" xml:"MetricName"` - Namespace aws.StringValue `query:"Namespace" xml:"Namespace"` - Period aws.IntegerValue `query:"Period" xml:"Period"` - Statistic aws.StringValue `query:"Statistic" xml:"Statistic"` - Unit aws.StringValue `query:"Unit" xml:"Unit"` -} - -// DescribeAlarmsForMetricOutput is undocumented. -type DescribeAlarmsForMetricOutput struct { - MetricAlarms []MetricAlarm `query:"MetricAlarms.member" xml:"DescribeAlarmsForMetricResult>MetricAlarms>member"` -} - -// DescribeAlarmsInput is undocumented. -type DescribeAlarmsInput struct { - ActionPrefix aws.StringValue `query:"ActionPrefix" xml:"ActionPrefix"` - AlarmNamePrefix aws.StringValue `query:"AlarmNamePrefix" xml:"AlarmNamePrefix"` - AlarmNames []string `query:"AlarmNames.member" xml:"AlarmNames>member"` - MaxRecords aws.IntegerValue `query:"MaxRecords" xml:"MaxRecords"` - NextToken aws.StringValue `query:"NextToken" xml:"NextToken"` - StateValue aws.StringValue `query:"StateValue" xml:"StateValue"` -} - -// DescribeAlarmsOutput is undocumented. -type DescribeAlarmsOutput struct { - MetricAlarms []MetricAlarm `query:"MetricAlarms.member" xml:"DescribeAlarmsResult>MetricAlarms>member"` - NextToken aws.StringValue `query:"NextToken" xml:"DescribeAlarmsResult>NextToken"` -} - -// Dimension is undocumented. -type Dimension struct { - Name aws.StringValue `query:"Name" xml:"Name"` - Value aws.StringValue `query:"Value" xml:"Value"` -} - -// DimensionFilter is undocumented. -type DimensionFilter struct { - Name aws.StringValue `query:"Name" xml:"Name"` - Value aws.StringValue `query:"Value" xml:"Value"` -} - -// DisableAlarmActionsInput is undocumented. -type DisableAlarmActionsInput struct { - AlarmNames []string `query:"AlarmNames.member" xml:"AlarmNames>member"` -} - -// EnableAlarmActionsInput is undocumented. -type EnableAlarmActionsInput struct { - AlarmNames []string `query:"AlarmNames.member" xml:"AlarmNames>member"` -} - -// GetMetricStatisticsInput is undocumented. -type GetMetricStatisticsInput struct { - Dimensions []Dimension `query:"Dimensions.member" xml:"Dimensions>member"` - EndTime time.Time `query:"EndTime" xml:"EndTime"` - MetricName aws.StringValue `query:"MetricName" xml:"MetricName"` - Namespace aws.StringValue `query:"Namespace" xml:"Namespace"` - Period aws.IntegerValue `query:"Period" xml:"Period"` - StartTime time.Time `query:"StartTime" xml:"StartTime"` - Statistics []string `query:"Statistics.member" xml:"Statistics>member"` - Unit aws.StringValue `query:"Unit" xml:"Unit"` -} - -// GetMetricStatisticsOutput is undocumented. -type GetMetricStatisticsOutput struct { - Datapoints []Datapoint `query:"Datapoints.member" xml:"GetMetricStatisticsResult>Datapoints>member"` - Label aws.StringValue `query:"Label" xml:"GetMetricStatisticsResult>Label"` -} - -// Possible values for CloudWatch. -const ( - HistoryItemTypeAction = "Action" - HistoryItemTypeConfigurationUpdate = "ConfigurationUpdate" - HistoryItemTypeStateUpdate = "StateUpdate" -) - -// ListMetricsInput is undocumented. -type ListMetricsInput struct { - Dimensions []DimensionFilter `query:"Dimensions.member" xml:"Dimensions>member"` - MetricName aws.StringValue `query:"MetricName" xml:"MetricName"` - Namespace aws.StringValue `query:"Namespace" xml:"Namespace"` - NextToken aws.StringValue `query:"NextToken" xml:"NextToken"` -} - -// ListMetricsOutput is undocumented. -type ListMetricsOutput struct { - Metrics []Metric `query:"Metrics.member" xml:"ListMetricsResult>Metrics>member"` - NextToken aws.StringValue `query:"NextToken" xml:"ListMetricsResult>NextToken"` -} - -// Metric is undocumented. -type Metric struct { - Dimensions []Dimension `query:"Dimensions.member" xml:"Dimensions>member"` - MetricName aws.StringValue `query:"MetricName" xml:"MetricName"` - Namespace aws.StringValue `query:"Namespace" xml:"Namespace"` -} - -// MetricAlarm is undocumented. -type MetricAlarm struct { - ActionsEnabled aws.BooleanValue `query:"ActionsEnabled" xml:"ActionsEnabled"` - AlarmActions []string `query:"AlarmActions.member" xml:"AlarmActions>member"` - AlarmARN aws.StringValue `query:"AlarmArn" xml:"AlarmArn"` - AlarmConfigurationUpdatedTimestamp time.Time `query:"AlarmConfigurationUpdatedTimestamp" xml:"AlarmConfigurationUpdatedTimestamp"` - AlarmDescription aws.StringValue `query:"AlarmDescription" xml:"AlarmDescription"` - AlarmName aws.StringValue `query:"AlarmName" xml:"AlarmName"` - ComparisonOperator aws.StringValue `query:"ComparisonOperator" xml:"ComparisonOperator"` - Dimensions []Dimension `query:"Dimensions.member" xml:"Dimensions>member"` - EvaluationPeriods aws.IntegerValue `query:"EvaluationPeriods" xml:"EvaluationPeriods"` - InsufficientDataActions []string `query:"InsufficientDataActions.member" xml:"InsufficientDataActions>member"` - MetricName aws.StringValue `query:"MetricName" xml:"MetricName"` - Namespace aws.StringValue `query:"Namespace" xml:"Namespace"` - OKActions []string `query:"OKActions.member" xml:"OKActions>member"` - Period aws.IntegerValue `query:"Period" xml:"Period"` - StateReason aws.StringValue `query:"StateReason" xml:"StateReason"` - StateReasonData aws.StringValue `query:"StateReasonData" xml:"StateReasonData"` - StateUpdatedTimestamp time.Time `query:"StateUpdatedTimestamp" xml:"StateUpdatedTimestamp"` - StateValue aws.StringValue `query:"StateValue" xml:"StateValue"` - Statistic aws.StringValue `query:"Statistic" xml:"Statistic"` - Threshold aws.DoubleValue `query:"Threshold" xml:"Threshold"` - Unit aws.StringValue `query:"Unit" xml:"Unit"` -} - -// MetricDatum is undocumented. -type MetricDatum struct { - Dimensions []Dimension `query:"Dimensions.member" xml:"Dimensions>member"` - MetricName aws.StringValue `query:"MetricName" xml:"MetricName"` - StatisticValues *StatisticSet `query:"StatisticValues" xml:"StatisticValues"` - Timestamp time.Time `query:"Timestamp" xml:"Timestamp"` - Unit aws.StringValue `query:"Unit" xml:"Unit"` - Value aws.DoubleValue `query:"Value" xml:"Value"` -} - -// PutMetricAlarmInput is undocumented. -type PutMetricAlarmInput struct { - ActionsEnabled aws.BooleanValue `query:"ActionsEnabled" xml:"ActionsEnabled"` - AlarmActions []string `query:"AlarmActions.member" xml:"AlarmActions>member"` - AlarmDescription aws.StringValue `query:"AlarmDescription" xml:"AlarmDescription"` - AlarmName aws.StringValue `query:"AlarmName" xml:"AlarmName"` - ComparisonOperator aws.StringValue `query:"ComparisonOperator" xml:"ComparisonOperator"` - Dimensions []Dimension `query:"Dimensions.member" xml:"Dimensions>member"` - EvaluationPeriods aws.IntegerValue `query:"EvaluationPeriods" xml:"EvaluationPeriods"` - InsufficientDataActions []string `query:"InsufficientDataActions.member" xml:"InsufficientDataActions>member"` - MetricName aws.StringValue `query:"MetricName" xml:"MetricName"` - Namespace aws.StringValue `query:"Namespace" xml:"Namespace"` - OKActions []string `query:"OKActions.member" xml:"OKActions>member"` - Period aws.IntegerValue `query:"Period" xml:"Period"` - Statistic aws.StringValue `query:"Statistic" xml:"Statistic"` - Threshold aws.DoubleValue `query:"Threshold" xml:"Threshold"` - Unit aws.StringValue `query:"Unit" xml:"Unit"` -} - -// PutMetricDataInput is undocumented. -type PutMetricDataInput struct { - MetricData []MetricDatum `query:"MetricData.member" xml:"MetricData>member"` - Namespace aws.StringValue `query:"Namespace" xml:"Namespace"` -} - -// SetAlarmStateInput is undocumented. -type SetAlarmStateInput struct { - AlarmName aws.StringValue `query:"AlarmName" xml:"AlarmName"` - StateReason aws.StringValue `query:"StateReason" xml:"StateReason"` - StateReasonData aws.StringValue `query:"StateReasonData" xml:"StateReasonData"` - StateValue aws.StringValue `query:"StateValue" xml:"StateValue"` -} - -// Possible values for CloudWatch. -const ( - StandardUnitBits = "Bits" - StandardUnitBitsSecond = "Bits/Second" - StandardUnitBytes = "Bytes" - StandardUnitBytesSecond = "Bytes/Second" - StandardUnitCount = "Count" - StandardUnitCountSecond = "Count/Second" - StandardUnitGigabits = "Gigabits" - StandardUnitGigabitsSecond = "Gigabits/Second" - StandardUnitGigabytes = "Gigabytes" - StandardUnitGigabytesSecond = "Gigabytes/Second" - StandardUnitKilobits = "Kilobits" - StandardUnitKilobitsSecond = "Kilobits/Second" - StandardUnitKilobytes = "Kilobytes" - StandardUnitKilobytesSecond = "Kilobytes/Second" - StandardUnitMegabits = "Megabits" - StandardUnitMegabitsSecond = "Megabits/Second" - StandardUnitMegabytes = "Megabytes" - StandardUnitMegabytesSecond = "Megabytes/Second" - StandardUnitMicroseconds = "Microseconds" - StandardUnitMilliseconds = "Milliseconds" - StandardUnitNone = "None" - StandardUnitPercent = "Percent" - StandardUnitSeconds = "Seconds" - StandardUnitTerabits = "Terabits" - StandardUnitTerabitsSecond = "Terabits/Second" - StandardUnitTerabytes = "Terabytes" - StandardUnitTerabytesSecond = "Terabytes/Second" -) - -// Possible values for CloudWatch. -const ( - StateValueAlarm = "ALARM" - StateValueInsufficientData = "INSUFFICIENT_DATA" - StateValueOK = "OK" -) - -// Possible values for CloudWatch. -const ( - StatisticAverage = "Average" - StatisticMaximum = "Maximum" - StatisticMinimum = "Minimum" - StatisticSampleCount = "SampleCount" - StatisticSum = "Sum" -) - -// StatisticSet is undocumented. -type StatisticSet struct { - Maximum aws.DoubleValue `query:"Maximum" xml:"Maximum"` - Minimum aws.DoubleValue `query:"Minimum" xml:"Minimum"` - SampleCount aws.DoubleValue `query:"SampleCount" xml:"SampleCount"` - Sum aws.DoubleValue `query:"Sum" xml:"Sum"` -} - -// DescribeAlarmHistoryResult is a wrapper for DescribeAlarmHistoryOutput. -type DescribeAlarmHistoryResult struct { - AlarmHistoryItems []AlarmHistoryItem `query:"AlarmHistoryItems.member" xml:"DescribeAlarmHistoryResult>AlarmHistoryItems>member"` - NextToken aws.StringValue `query:"NextToken" xml:"DescribeAlarmHistoryResult>NextToken"` -} - -// DescribeAlarmsForMetricResult is a wrapper for DescribeAlarmsForMetricOutput. -type DescribeAlarmsForMetricResult struct { - MetricAlarms []MetricAlarm `query:"MetricAlarms.member" xml:"DescribeAlarmsForMetricResult>MetricAlarms>member"` -} - -// DescribeAlarmsResult is a wrapper for DescribeAlarmsOutput. -type DescribeAlarmsResult struct { - MetricAlarms []MetricAlarm `query:"MetricAlarms.member" xml:"DescribeAlarmsResult>MetricAlarms>member"` - NextToken aws.StringValue `query:"NextToken" xml:"DescribeAlarmsResult>NextToken"` -} - -// GetMetricStatisticsResult is a wrapper for GetMetricStatisticsOutput. -type GetMetricStatisticsResult struct { - Datapoints []Datapoint `query:"Datapoints.member" xml:"GetMetricStatisticsResult>Datapoints>member"` - Label aws.StringValue `query:"Label" xml:"GetMetricStatisticsResult>Label"` -} - -// ListMetricsResult is a wrapper for ListMetricsOutput. -type ListMetricsResult struct { - Metrics []Metric `query:"Metrics.member" xml:"ListMetricsResult>Metrics>member"` - NextToken aws.StringValue `query:"NextToken" xml:"ListMetricsResult>NextToken"` -} - -// avoid errors if the packages aren't referenced -var _ time.Time - -var _ xml.Decoder -var _ = io.EOF diff --git a/src/github.com/getlantern/aws-sdk-go/gen/codedeploy/codedeploy.go b/src/github.com/getlantern/aws-sdk-go/gen/codedeploy/codedeploy.go deleted file mode 100644 index 046728080e..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/gen/codedeploy/codedeploy.go +++ /dev/null @@ -1,763 +0,0 @@ -// THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. - -// Package codedeploy provides a client for AWS CodeDeploy. -package codedeploy - -import ( - "net/http" - "time" - - "github.com/awslabs/aws-sdk-go/aws" - "github.com/awslabs/aws-sdk-go/gen/endpoints" -) - -// CodeDeploy is a client for AWS CodeDeploy. -type CodeDeploy struct { - client *aws.JSONClient -} - -// New returns a new CodeDeploy client. -func New(creds aws.CredentialsProvider, region string, client *http.Client) *CodeDeploy { - if client == nil { - client = http.DefaultClient - } - - endpoint, service, region := endpoints.Lookup("codedeploy", region) - - return &CodeDeploy{ - client: &aws.JSONClient{ - Context: aws.Context{ - Credentials: creds, - Service: service, - Region: region, - }, Client: client, - Endpoint: endpoint, - JSONVersion: "1.1", - TargetPrefix: "CodeDeploy_20141006", - }, - } -} - -// BatchGetApplications is undocumented. -func (c *CodeDeploy) BatchGetApplications(req *BatchGetApplicationsInput) (resp *BatchGetApplicationsOutput, err error) { - resp = &BatchGetApplicationsOutput{} - err = c.client.Do("BatchGetApplications", "POST", "/", req, resp) - return -} - -// BatchGetDeployments is undocumented. -func (c *CodeDeploy) BatchGetDeployments(req *BatchGetDeploymentsInput) (resp *BatchGetDeploymentsOutput, err error) { - resp = &BatchGetDeploymentsOutput{} - err = c.client.Do("BatchGetDeployments", "POST", "/", req, resp) - return -} - -// CreateApplication is undocumented. -func (c *CodeDeploy) CreateApplication(req *CreateApplicationInput) (resp *CreateApplicationOutput, err error) { - resp = &CreateApplicationOutput{} - err = c.client.Do("CreateApplication", "POST", "/", req, resp) - return -} - -// CreateDeployment deploys an application revision to the specified -// deployment group. -func (c *CodeDeploy) CreateDeployment(req *CreateDeploymentInput) (resp *CreateDeploymentOutput, err error) { - resp = &CreateDeploymentOutput{} - err = c.client.Do("CreateDeployment", "POST", "/", req, resp) - return -} - -// CreateDeploymentConfig is undocumented. -func (c *CodeDeploy) CreateDeploymentConfig(req *CreateDeploymentConfigInput) (resp *CreateDeploymentConfigOutput, err error) { - resp = &CreateDeploymentConfigOutput{} - err = c.client.Do("CreateDeploymentConfig", "POST", "/", req, resp) - return -} - -// CreateDeploymentGroup creates a new deployment group for application -// revisions to be deployed to. -func (c *CodeDeploy) CreateDeploymentGroup(req *CreateDeploymentGroupInput) (resp *CreateDeploymentGroupOutput, err error) { - resp = &CreateDeploymentGroupOutput{} - err = c.client.Do("CreateDeploymentGroup", "POST", "/", req, resp) - return -} - -// DeleteApplication is undocumented. -func (c *CodeDeploy) DeleteApplication(req *DeleteApplicationInput) (err error) { - // NRE - err = c.client.Do("DeleteApplication", "POST", "/", req, nil) - return -} - -// DeleteDeploymentConfig deletes a deployment configuration. A deployment -// configuration cannot be deleted if it is currently in use. Also, -// predefined configurations cannot be deleted. -func (c *CodeDeploy) DeleteDeploymentConfig(req *DeleteDeploymentConfigInput) (err error) { - // NRE - err = c.client.Do("DeleteDeploymentConfig", "POST", "/", req, nil) - return -} - -// DeleteDeploymentGroup is undocumented. -func (c *CodeDeploy) DeleteDeploymentGroup(req *DeleteDeploymentGroupInput) (resp *DeleteDeploymentGroupOutput, err error) { - resp = &DeleteDeploymentGroupOutput{} - err = c.client.Do("DeleteDeploymentGroup", "POST", "/", req, resp) - return -} - -// GetApplication is undocumented. -func (c *CodeDeploy) GetApplication(req *GetApplicationInput) (resp *GetApplicationOutput, err error) { - resp = &GetApplicationOutput{} - err = c.client.Do("GetApplication", "POST", "/", req, resp) - return -} - -// GetApplicationRevision is undocumented. -func (c *CodeDeploy) GetApplicationRevision(req *GetApplicationRevisionInput) (resp *GetApplicationRevisionOutput, err error) { - resp = &GetApplicationRevisionOutput{} - err = c.client.Do("GetApplicationRevision", "POST", "/", req, resp) - return -} - -// GetDeployment is undocumented. -func (c *CodeDeploy) GetDeployment(req *GetDeploymentInput) (resp *GetDeploymentOutput, err error) { - resp = &GetDeploymentOutput{} - err = c.client.Do("GetDeployment", "POST", "/", req, resp) - return -} - -// GetDeploymentConfig is undocumented. -func (c *CodeDeploy) GetDeploymentConfig(req *GetDeploymentConfigInput) (resp *GetDeploymentConfigOutput, err error) { - resp = &GetDeploymentConfigOutput{} - err = c.client.Do("GetDeploymentConfig", "POST", "/", req, resp) - return -} - -// GetDeploymentGroup is undocumented. -func (c *CodeDeploy) GetDeploymentGroup(req *GetDeploymentGroupInput) (resp *GetDeploymentGroupOutput, err error) { - resp = &GetDeploymentGroupOutput{} - err = c.client.Do("GetDeploymentGroup", "POST", "/", req, resp) - return -} - -// GetDeploymentInstance gets information about an Amazon EC2 instance as -// part of a deployment. -func (c *CodeDeploy) GetDeploymentInstance(req *GetDeploymentInstanceInput) (resp *GetDeploymentInstanceOutput, err error) { - resp = &GetDeploymentInstanceOutput{} - err = c.client.Do("GetDeploymentInstance", "POST", "/", req, resp) - return -} - -// ListApplicationRevisions lists information about revisions for an -// application. -func (c *CodeDeploy) ListApplicationRevisions(req *ListApplicationRevisionsInput) (resp *ListApplicationRevisionsOutput, err error) { - resp = &ListApplicationRevisionsOutput{} - err = c.client.Do("ListApplicationRevisions", "POST", "/", req, resp) - return -} - -// ListApplications lists the applications registered within the AWS user -// account. -func (c *CodeDeploy) ListApplications(req *ListApplicationsInput) (resp *ListApplicationsOutput, err error) { - resp = &ListApplicationsOutput{} - err = c.client.Do("ListApplications", "POST", "/", req, resp) - return -} - -// ListDeploymentConfigs lists the deployment configurations within the AWS -// user account. -func (c *CodeDeploy) ListDeploymentConfigs(req *ListDeploymentConfigsInput) (resp *ListDeploymentConfigsOutput, err error) { - resp = &ListDeploymentConfigsOutput{} - err = c.client.Do("ListDeploymentConfigs", "POST", "/", req, resp) - return -} - -// ListDeploymentGroups lists the deployment groups for an application -// registered within the AWS user account. -func (c *CodeDeploy) ListDeploymentGroups(req *ListDeploymentGroupsInput) (resp *ListDeploymentGroupsOutput, err error) { - resp = &ListDeploymentGroupsOutput{} - err = c.client.Do("ListDeploymentGroups", "POST", "/", req, resp) - return -} - -// ListDeploymentInstances lists the Amazon EC2 instances for a deployment -// within the AWS user account. -func (c *CodeDeploy) ListDeploymentInstances(req *ListDeploymentInstancesInput) (resp *ListDeploymentInstancesOutput, err error) { - resp = &ListDeploymentInstancesOutput{} - err = c.client.Do("ListDeploymentInstances", "POST", "/", req, resp) - return -} - -// ListDeployments lists the deployments under a deployment group for an -// application registered within the AWS user account. -func (c *CodeDeploy) ListDeployments(req *ListDeploymentsInput) (resp *ListDeploymentsOutput, err error) { - resp = &ListDeploymentsOutput{} - err = c.client.Do("ListDeployments", "POST", "/", req, resp) - return -} - -// RegisterApplicationRevision registers with AWS CodeDeploy a revision for -// the specified application. -func (c *CodeDeploy) RegisterApplicationRevision(req *RegisterApplicationRevisionInput) (err error) { - // NRE - err = c.client.Do("RegisterApplicationRevision", "POST", "/", req, nil) - return -} - -// StopDeployment is undocumented. -func (c *CodeDeploy) StopDeployment(req *StopDeploymentInput) (resp *StopDeploymentOutput, err error) { - resp = &StopDeploymentOutput{} - err = c.client.Do("StopDeployment", "POST", "/", req, resp) - return -} - -// UpdateApplication is undocumented. -func (c *CodeDeploy) UpdateApplication(req *UpdateApplicationInput) (err error) { - // NRE - err = c.client.Do("UpdateApplication", "POST", "/", req, nil) - return -} - -// UpdateDeploymentGroup changes information about an existing deployment -// group. -func (c *CodeDeploy) UpdateDeploymentGroup(req *UpdateDeploymentGroupInput) (resp *UpdateDeploymentGroupOutput, err error) { - resp = &UpdateDeploymentGroupOutput{} - err = c.client.Do("UpdateDeploymentGroup", "POST", "/", req, resp) - return -} - -// ApplicationInfo is undocumented. -type ApplicationInfo struct { - ApplicationID aws.StringValue `json:"applicationId,omitempty"` - ApplicationName aws.StringValue `json:"applicationName,omitempty"` - CreateTime *aws.UnixTimestamp `json:"createTime,omitempty"` - LinkedToGitHub aws.BooleanValue `json:"linkedToGitHub,omitempty"` -} - -// Possible values for CodeDeploy. -const ( - ApplicationRevisionSortByFirstUsedTime = "firstUsedTime" - ApplicationRevisionSortByLastUsedTime = "lastUsedTime" - ApplicationRevisionSortByRegisterTime = "registerTime" -) - -// AutoScalingGroup is undocumented. -type AutoScalingGroup struct { - Hook aws.StringValue `json:"hook,omitempty"` - Name aws.StringValue `json:"name,omitempty"` -} - -// BatchGetApplicationsInput is undocumented. -type BatchGetApplicationsInput struct { - ApplicationNames []string `json:"applicationNames,omitempty"` -} - -// BatchGetApplicationsOutput is undocumented. -type BatchGetApplicationsOutput struct { - ApplicationsInfo []ApplicationInfo `json:"applicationsInfo,omitempty"` -} - -// BatchGetDeploymentsInput is undocumented. -type BatchGetDeploymentsInput struct { - DeploymentIDs []string `json:"deploymentIds,omitempty"` -} - -// BatchGetDeploymentsOutput is undocumented. -type BatchGetDeploymentsOutput struct { - DeploymentsInfo []DeploymentInfo `json:"deploymentsInfo,omitempty"` -} - -// Possible values for CodeDeploy. -const ( - BundleTypeTAR = "tar" - BundleTypeTGZ = "tgz" - BundleTypeZip = "zip" -) - -// CreateApplicationInput is undocumented. -type CreateApplicationInput struct { - ApplicationName aws.StringValue `json:"applicationName"` -} - -// CreateApplicationOutput is undocumented. -type CreateApplicationOutput struct { - ApplicationID aws.StringValue `json:"applicationId,omitempty"` -} - -// CreateDeploymentConfigInput is undocumented. -type CreateDeploymentConfigInput struct { - DeploymentConfigName aws.StringValue `json:"deploymentConfigName"` - MinimumHealthyHosts *MinimumHealthyHosts `json:"minimumHealthyHosts,omitempty"` -} - -// CreateDeploymentConfigOutput is undocumented. -type CreateDeploymentConfigOutput struct { - DeploymentConfigID aws.StringValue `json:"deploymentConfigId,omitempty"` -} - -// CreateDeploymentGroupInput is undocumented. -type CreateDeploymentGroupInput struct { - ApplicationName aws.StringValue `json:"applicationName"` - AutoScalingGroups []string `json:"autoScalingGroups,omitempty"` - DeploymentConfigName aws.StringValue `json:"deploymentConfigName,omitempty"` - DeploymentGroupName aws.StringValue `json:"deploymentGroupName"` - EC2TagFilters []EC2TagFilter `json:"ec2TagFilters,omitempty"` - ServiceRoleARN aws.StringValue `json:"serviceRoleArn,omitempty"` -} - -// CreateDeploymentGroupOutput is undocumented. -type CreateDeploymentGroupOutput struct { - DeploymentGroupID aws.StringValue `json:"deploymentGroupId,omitempty"` -} - -// CreateDeploymentInput is undocumented. -type CreateDeploymentInput struct { - ApplicationName aws.StringValue `json:"applicationName"` - DeploymentConfigName aws.StringValue `json:"deploymentConfigName,omitempty"` - DeploymentGroupName aws.StringValue `json:"deploymentGroupName,omitempty"` - Description aws.StringValue `json:"description,omitempty"` - IgnoreApplicationStopFailures aws.BooleanValue `json:"ignoreApplicationStopFailures,omitempty"` - Revision *RevisionLocation `json:"revision,omitempty"` -} - -// CreateDeploymentOutput is undocumented. -type CreateDeploymentOutput struct { - DeploymentID aws.StringValue `json:"deploymentId,omitempty"` -} - -// DeleteApplicationInput is undocumented. -type DeleteApplicationInput struct { - ApplicationName aws.StringValue `json:"applicationName"` -} - -// DeleteDeploymentConfigInput is undocumented. -type DeleteDeploymentConfigInput struct { - DeploymentConfigName aws.StringValue `json:"deploymentConfigName"` -} - -// DeleteDeploymentGroupInput is undocumented. -type DeleteDeploymentGroupInput struct { - ApplicationName aws.StringValue `json:"applicationName"` - DeploymentGroupName aws.StringValue `json:"deploymentGroupName"` -} - -// DeleteDeploymentGroupOutput is undocumented. -type DeleteDeploymentGroupOutput struct { - HooksNotCleanedUp []AutoScalingGroup `json:"hooksNotCleanedUp,omitempty"` -} - -// DeploymentConfigInfo is undocumented. -type DeploymentConfigInfo struct { - CreateTime *aws.UnixTimestamp `json:"createTime,omitempty"` - DeploymentConfigID aws.StringValue `json:"deploymentConfigId,omitempty"` - DeploymentConfigName aws.StringValue `json:"deploymentConfigName,omitempty"` - MinimumHealthyHosts *MinimumHealthyHosts `json:"minimumHealthyHosts,omitempty"` -} - -// Possible values for CodeDeploy. -const ( - DeploymentCreatorAutoscaling = "autoscaling" - DeploymentCreatorUser = "user" -) - -// DeploymentGroupInfo is undocumented. -type DeploymentGroupInfo struct { - ApplicationName aws.StringValue `json:"applicationName,omitempty"` - AutoScalingGroups []AutoScalingGroup `json:"autoScalingGroups,omitempty"` - DeploymentConfigName aws.StringValue `json:"deploymentConfigName,omitempty"` - DeploymentGroupID aws.StringValue `json:"deploymentGroupId,omitempty"` - DeploymentGroupName aws.StringValue `json:"deploymentGroupName,omitempty"` - EC2TagFilters []EC2TagFilter `json:"ec2TagFilters,omitempty"` - ServiceRoleARN aws.StringValue `json:"serviceRoleArn,omitempty"` - TargetRevision *RevisionLocation `json:"targetRevision,omitempty"` -} - -// DeploymentInfo is undocumented. -type DeploymentInfo struct { - ApplicationName aws.StringValue `json:"applicationName,omitempty"` - CompleteTime *aws.UnixTimestamp `json:"completeTime,omitempty"` - CreateTime *aws.UnixTimestamp `json:"createTime,omitempty"` - Creator aws.StringValue `json:"creator,omitempty"` - DeploymentConfigName aws.StringValue `json:"deploymentConfigName,omitempty"` - DeploymentGroupName aws.StringValue `json:"deploymentGroupName,omitempty"` - DeploymentID aws.StringValue `json:"deploymentId,omitempty"` - DeploymentOverview *DeploymentOverview `json:"deploymentOverview,omitempty"` - Description aws.StringValue `json:"description,omitempty"` - ErrorInformation *ErrorInformation `json:"errorInformation,omitempty"` - IgnoreApplicationStopFailures aws.BooleanValue `json:"ignoreApplicationStopFailures,omitempty"` - Revision *RevisionLocation `json:"revision,omitempty"` - StartTime *aws.UnixTimestamp `json:"startTime,omitempty"` - Status aws.StringValue `json:"status,omitempty"` -} - -// DeploymentOverview is undocumented. -type DeploymentOverview struct { - Failed aws.LongValue `json:"Failed,omitempty"` - InProgress aws.LongValue `json:"InProgress,omitempty"` - Pending aws.LongValue `json:"Pending,omitempty"` - Skipped aws.LongValue `json:"Skipped,omitempty"` - Succeeded aws.LongValue `json:"Succeeded,omitempty"` -} - -// Possible values for CodeDeploy. -const ( - DeploymentStatusCreated = "Created" - DeploymentStatusFailed = "Failed" - DeploymentStatusInProgress = "InProgress" - DeploymentStatusQueued = "Queued" - DeploymentStatusStopped = "Stopped" - DeploymentStatusSucceeded = "Succeeded" -) - -// Diagnostics is undocumented. -type Diagnostics struct { - ErrorCode aws.StringValue `json:"errorCode,omitempty"` - LogTail aws.StringValue `json:"logTail,omitempty"` - Message aws.StringValue `json:"message,omitempty"` - ScriptName aws.StringValue `json:"scriptName,omitempty"` -} - -// EC2TagFilter is undocumented. -type EC2TagFilter struct { - Key aws.StringValue `json:"Key,omitempty"` - Type aws.StringValue `json:"Type,omitempty"` - Value aws.StringValue `json:"Value,omitempty"` -} - -// Possible values for CodeDeploy. -const ( - EC2TagFilterTypeKeyAndValue = "KEY_AND_VALUE" - EC2TagFilterTypeKeyOnly = "KEY_ONLY" - EC2TagFilterTypeValueOnly = "VALUE_ONLY" -) - -// Possible values for CodeDeploy. -const ( - ErrorCodeApplicationMissing = "APPLICATION_MISSING" - ErrorCodeDeploymentGroupMissing = "DEPLOYMENT_GROUP_MISSING" - ErrorCodeHealthConstraints = "HEALTH_CONSTRAINTS" - ErrorCodeHealthConstraintsInvalid = "HEALTH_CONSTRAINTS_INVALID" - ErrorCodeIAMRoleMissing = "IAM_ROLE_MISSING" - ErrorCodeIAMRolePermissions = "IAM_ROLE_PERMISSIONS" - ErrorCodeInternalError = "INTERNAL_ERROR" - ErrorCodeNoInstances = "NO_INSTANCES" - ErrorCodeOverMaxInstances = "OVER_MAX_INSTANCES" - ErrorCodeRevisionMissing = "REVISION_MISSING" - ErrorCodeTimeout = "TIMEOUT" -) - -// ErrorInformation is undocumented. -type ErrorInformation struct { - Code aws.StringValue `json:"code,omitempty"` - Message aws.StringValue `json:"message,omitempty"` -} - -// GenericRevisionInfo is undocumented. -type GenericRevisionInfo struct { - DeploymentGroups []string `json:"deploymentGroups,omitempty"` - Description aws.StringValue `json:"description,omitempty"` - FirstUsedTime *aws.UnixTimestamp `json:"firstUsedTime,omitempty"` - LastUsedTime *aws.UnixTimestamp `json:"lastUsedTime,omitempty"` - RegisterTime *aws.UnixTimestamp `json:"registerTime,omitempty"` -} - -// GetApplicationInput is undocumented. -type GetApplicationInput struct { - ApplicationName aws.StringValue `json:"applicationName"` -} - -// GetApplicationOutput is undocumented. -type GetApplicationOutput struct { - Application *ApplicationInfo `json:"application,omitempty"` -} - -// GetApplicationRevisionInput is undocumented. -type GetApplicationRevisionInput struct { - ApplicationName aws.StringValue `json:"applicationName"` - Revision *RevisionLocation `json:"revision"` -} - -// GetApplicationRevisionOutput is undocumented. -type GetApplicationRevisionOutput struct { - ApplicationName aws.StringValue `json:"applicationName,omitempty"` - Revision *RevisionLocation `json:"revision,omitempty"` - RevisionInfo *GenericRevisionInfo `json:"revisionInfo,omitempty"` -} - -// GetDeploymentConfigInput is undocumented. -type GetDeploymentConfigInput struct { - DeploymentConfigName aws.StringValue `json:"deploymentConfigName"` -} - -// GetDeploymentConfigOutput is undocumented. -type GetDeploymentConfigOutput struct { - DeploymentConfigInfo *DeploymentConfigInfo `json:"deploymentConfigInfo,omitempty"` -} - -// GetDeploymentGroupInput is undocumented. -type GetDeploymentGroupInput struct { - ApplicationName aws.StringValue `json:"applicationName"` - DeploymentGroupName aws.StringValue `json:"deploymentGroupName"` -} - -// GetDeploymentGroupOutput is undocumented. -type GetDeploymentGroupOutput struct { - DeploymentGroupInfo *DeploymentGroupInfo `json:"deploymentGroupInfo,omitempty"` -} - -// GetDeploymentInput is undocumented. -type GetDeploymentInput struct { - DeploymentID aws.StringValue `json:"deploymentId"` -} - -// GetDeploymentInstanceInput is undocumented. -type GetDeploymentInstanceInput struct { - DeploymentID aws.StringValue `json:"deploymentId"` - InstanceID aws.StringValue `json:"instanceId"` -} - -// GetDeploymentInstanceOutput is undocumented. -type GetDeploymentInstanceOutput struct { - InstanceSummary *InstanceSummary `json:"instanceSummary,omitempty"` -} - -// GetDeploymentOutput is undocumented. -type GetDeploymentOutput struct { - DeploymentInfo *DeploymentInfo `json:"deploymentInfo,omitempty"` -} - -// GitHubLocation is undocumented. -type GitHubLocation struct { - CommitID aws.StringValue `json:"commitId,omitempty"` - Repository aws.StringValue `json:"repository,omitempty"` -} - -// Possible values for CodeDeploy. -const ( - InstanceStatusFailed = "Failed" - InstanceStatusInProgress = "InProgress" - InstanceStatusPending = "Pending" - InstanceStatusSkipped = "Skipped" - InstanceStatusSucceeded = "Succeeded" - InstanceStatusUnknown = "Unknown" -) - -// InstanceSummary is undocumented. -type InstanceSummary struct { - DeploymentID aws.StringValue `json:"deploymentId,omitempty"` - InstanceID aws.StringValue `json:"instanceId,omitempty"` - LastUpdatedAt *aws.UnixTimestamp `json:"lastUpdatedAt,omitempty"` - LifecycleEvents []LifecycleEvent `json:"lifecycleEvents,omitempty"` - Status aws.StringValue `json:"status,omitempty"` -} - -// Possible values for CodeDeploy. -const ( - LifecycleErrorCodeScriptFailed = "ScriptFailed" - LifecycleErrorCodeScriptMissing = "ScriptMissing" - LifecycleErrorCodeScriptNotExecutable = "ScriptNotExecutable" - LifecycleErrorCodeScriptTimedOut = "ScriptTimedOut" - LifecycleErrorCodeSuccess = "Success" - LifecycleErrorCodeUnknownError = "UnknownError" -) - -// LifecycleEvent is undocumented. -type LifecycleEvent struct { - Diagnostics *Diagnostics `json:"diagnostics,omitempty"` - EndTime *aws.UnixTimestamp `json:"endTime,omitempty"` - LifecycleEventName aws.StringValue `json:"lifecycleEventName,omitempty"` - StartTime *aws.UnixTimestamp `json:"startTime,omitempty"` - Status aws.StringValue `json:"status,omitempty"` -} - -// Possible values for CodeDeploy. -const ( - LifecycleEventStatusFailed = "Failed" - LifecycleEventStatusInProgress = "InProgress" - LifecycleEventStatusPending = "Pending" - LifecycleEventStatusSkipped = "Skipped" - LifecycleEventStatusSucceeded = "Succeeded" - LifecycleEventStatusUnknown = "Unknown" -) - -// ListApplicationRevisionsInput is undocumented. -type ListApplicationRevisionsInput struct { - ApplicationName aws.StringValue `json:"applicationName"` - Deployed aws.StringValue `json:"deployed,omitempty"` - NextToken aws.StringValue `json:"nextToken,omitempty"` - S3Bucket aws.StringValue `json:"s3Bucket,omitempty"` - S3KeyPrefix aws.StringValue `json:"s3KeyPrefix,omitempty"` - SortBy aws.StringValue `json:"sortBy,omitempty"` - SortOrder aws.StringValue `json:"sortOrder,omitempty"` -} - -// ListApplicationRevisionsOutput is undocumented. -type ListApplicationRevisionsOutput struct { - NextToken aws.StringValue `json:"nextToken,omitempty"` - Revisions []RevisionLocation `json:"revisions,omitempty"` -} - -// ListApplicationsInput is undocumented. -type ListApplicationsInput struct { - NextToken aws.StringValue `json:"nextToken,omitempty"` -} - -// ListApplicationsOutput is undocumented. -type ListApplicationsOutput struct { - Applications []string `json:"applications,omitempty"` - NextToken aws.StringValue `json:"nextToken,omitempty"` -} - -// ListDeploymentConfigsInput is undocumented. -type ListDeploymentConfigsInput struct { - NextToken aws.StringValue `json:"nextToken,omitempty"` -} - -// ListDeploymentConfigsOutput is undocumented. -type ListDeploymentConfigsOutput struct { - DeploymentConfigsList []string `json:"deploymentConfigsList,omitempty"` - NextToken aws.StringValue `json:"nextToken,omitempty"` -} - -// ListDeploymentGroupsInput is undocumented. -type ListDeploymentGroupsInput struct { - ApplicationName aws.StringValue `json:"applicationName"` - NextToken aws.StringValue `json:"nextToken,omitempty"` -} - -// ListDeploymentGroupsOutput is undocumented. -type ListDeploymentGroupsOutput struct { - ApplicationName aws.StringValue `json:"applicationName,omitempty"` - DeploymentGroups []string `json:"deploymentGroups,omitempty"` - NextToken aws.StringValue `json:"nextToken,omitempty"` -} - -// ListDeploymentInstancesInput is undocumented. -type ListDeploymentInstancesInput struct { - DeploymentID aws.StringValue `json:"deploymentId"` - InstanceStatusFilter []string `json:"instanceStatusFilter,omitempty"` - NextToken aws.StringValue `json:"nextToken,omitempty"` -} - -// ListDeploymentInstancesOutput is undocumented. -type ListDeploymentInstancesOutput struct { - InstancesList []string `json:"instancesList,omitempty"` - NextToken aws.StringValue `json:"nextToken,omitempty"` -} - -// ListDeploymentsInput is undocumented. -type ListDeploymentsInput struct { - ApplicationName aws.StringValue `json:"applicationName,omitempty"` - CreateTimeRange *TimeRange `json:"createTimeRange,omitempty"` - DeploymentGroupName aws.StringValue `json:"deploymentGroupName,omitempty"` - IncludeOnlyStatuses []string `json:"includeOnlyStatuses,omitempty"` - NextToken aws.StringValue `json:"nextToken,omitempty"` -} - -// ListDeploymentsOutput is undocumented. -type ListDeploymentsOutput struct { - Deployments []string `json:"deployments,omitempty"` - NextToken aws.StringValue `json:"nextToken,omitempty"` -} - -// Possible values for CodeDeploy. -const ( - ListStateFilterActionExclude = "exclude" - ListStateFilterActionIgnore = "ignore" - ListStateFilterActionInclude = "include" -) - -// MinimumHealthyHosts is undocumented. -type MinimumHealthyHosts struct { - Type aws.StringValue `json:"type,omitempty"` - Value aws.IntegerValue `json:"value,omitempty"` -} - -// Possible values for CodeDeploy. -const ( - MinimumHealthyHostsTypeFleetPercent = "FLEET_PERCENT" - MinimumHealthyHostsTypeHostCount = "HOST_COUNT" -) - -// RegisterApplicationRevisionInput is undocumented. -type RegisterApplicationRevisionInput struct { - ApplicationName aws.StringValue `json:"applicationName"` - Description aws.StringValue `json:"description,omitempty"` - Revision *RevisionLocation `json:"revision"` -} - -// RevisionLocation is undocumented. -type RevisionLocation struct { - GitHubLocation *GitHubLocation `json:"gitHubLocation,omitempty"` - RevisionType aws.StringValue `json:"revisionType,omitempty"` - S3Location *S3Location `json:"s3Location,omitempty"` -} - -// Possible values for CodeDeploy. -const ( - RevisionLocationTypeGitHub = "GitHub" - RevisionLocationTypeS3 = "S3" -) - -// S3Location is undocumented. -type S3Location struct { - Bucket aws.StringValue `json:"bucket,omitempty"` - BundleType aws.StringValue `json:"bundleType,omitempty"` - ETag aws.StringValue `json:"eTag,omitempty"` - Key aws.StringValue `json:"key,omitempty"` - Version aws.StringValue `json:"version,omitempty"` -} - -// Possible values for CodeDeploy. -const ( - SortOrderAscending = "ascending" - SortOrderDescending = "descending" -) - -// StopDeploymentInput is undocumented. -type StopDeploymentInput struct { - DeploymentID aws.StringValue `json:"deploymentId"` -} - -// StopDeploymentOutput is undocumented. -type StopDeploymentOutput struct { - Status aws.StringValue `json:"status,omitempty"` - StatusMessage aws.StringValue `json:"statusMessage,omitempty"` -} - -// Possible values for CodeDeploy. -const ( - StopStatusPending = "Pending" - StopStatusSucceeded = "Succeeded" -) - -// TimeRange is undocumented. -type TimeRange struct { - End *aws.UnixTimestamp `json:"end,omitempty"` - Start *aws.UnixTimestamp `json:"start,omitempty"` -} - -// UpdateApplicationInput is undocumented. -type UpdateApplicationInput struct { - ApplicationName aws.StringValue `json:"applicationName,omitempty"` - NewApplicationName aws.StringValue `json:"newApplicationName,omitempty"` -} - -// UpdateDeploymentGroupInput is undocumented. -type UpdateDeploymentGroupInput struct { - ApplicationName aws.StringValue `json:"applicationName"` - AutoScalingGroups []string `json:"autoScalingGroups,omitempty"` - CurrentDeploymentGroupName aws.StringValue `json:"currentDeploymentGroupName"` - DeploymentConfigName aws.StringValue `json:"deploymentConfigName,omitempty"` - EC2TagFilters []EC2TagFilter `json:"ec2TagFilters,omitempty"` - NewDeploymentGroupName aws.StringValue `json:"newDeploymentGroupName,omitempty"` - ServiceRoleARN aws.StringValue `json:"serviceRoleArn,omitempty"` -} - -// UpdateDeploymentGroupOutput is undocumented. -type UpdateDeploymentGroupOutput struct { - HooksNotCleanedUp []AutoScalingGroup `json:"hooksNotCleanedUp,omitempty"` -} - -// avoid errors if the packages aren't referenced -var _ time.Time diff --git a/src/github.com/getlantern/aws-sdk-go/gen/cognito/identity/identity.go b/src/github.com/getlantern/aws-sdk-go/gen/cognito/identity/identity.go deleted file mode 100644 index b89b6a9b73..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/gen/cognito/identity/identity.go +++ /dev/null @@ -1,408 +0,0 @@ -// THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. - -// Package cognitoidentity provides a client for Amazon Cognito Identity. -package cognitoidentity - -import ( - "net/http" - "time" - - "github.com/awslabs/aws-sdk-go/aws" - "github.com/awslabs/aws-sdk-go/gen/endpoints" -) - -// CognitoIdentity is a client for Amazon Cognito Identity. -type CognitoIdentity struct { - client *aws.JSONClient -} - -// New returns a new CognitoIdentity client. -func New(creds aws.CredentialsProvider, region string, client *http.Client) *CognitoIdentity { - if client == nil { - client = http.DefaultClient - } - - endpoint, service, region := endpoints.Lookup("cognito-identity", region) - - return &CognitoIdentity{ - client: &aws.JSONClient{ - Context: aws.Context{ - Credentials: creds, - Service: service, - Region: region, - }, Client: client, - Endpoint: endpoint, - JSONVersion: "1.1", - TargetPrefix: "AWSCognitoIdentityService", - }, - } -} - -// CreateIdentityPool creates a new identity pool. The identity pool is a -// store of user identity information that is specific to your AWS account. -// The limit on identity pools is 60 per account. -func (c *CognitoIdentity) CreateIdentityPool(req *CreateIdentityPoolInput) (resp *IdentityPool, err error) { - resp = &IdentityPool{} - err = c.client.Do("CreateIdentityPool", "POST", "/", req, resp) - return -} - -// DeleteIdentityPool deletes a user pool. Once a pool is deleted, users -// will not be able to authenticate with the pool. -func (c *CognitoIdentity) DeleteIdentityPool(req *DeleteIdentityPoolInput) (err error) { - // NRE - err = c.client.Do("DeleteIdentityPool", "POST", "/", req, nil) - return -} - -// DescribeIdentity returns metadata related to the given identity, -// including when the identity was created and any associated linked -// logins. -func (c *CognitoIdentity) DescribeIdentity(req *DescribeIdentityInput) (resp *IdentityDescription, err error) { - resp = &IdentityDescription{} - err = c.client.Do("DescribeIdentity", "POST", "/", req, resp) - return -} - -// DescribeIdentityPool gets details about a particular identity pool, -// including the pool name, ID description, creation date, and current -// number of users. -func (c *CognitoIdentity) DescribeIdentityPool(req *DescribeIdentityPoolInput) (resp *IdentityPool, err error) { - resp = &IdentityPool{} - err = c.client.Do("DescribeIdentityPool", "POST", "/", req, resp) - return -} - -// GetCredentialsForIdentity returns credentials for the the provided -// identity ID. Any provided logins will be validated against supported -// login providers. If the token is for cognito-identity.amazonaws.com, it -// will be passed through to AWS Security Token Service with the -// appropriate role for the token. -func (c *CognitoIdentity) GetCredentialsForIdentity(req *GetCredentialsForIdentityInput) (resp *GetCredentialsForIdentityResponse, err error) { - resp = &GetCredentialsForIdentityResponse{} - err = c.client.Do("GetCredentialsForIdentity", "POST", "/", req, resp) - return -} - -// GetID generates (or retrieves) a Cognito ID. Supplying multiple logins -// will create an implicit linked account. -func (c *CognitoIdentity) GetID(req *GetIDInput) (resp *GetIDResponse, err error) { - resp = &GetIDResponse{} - err = c.client.Do("GetId", "POST", "/", req, resp) - return -} - -// GetIdentityPoolRoles is undocumented. -func (c *CognitoIdentity) GetIdentityPoolRoles(req *GetIdentityPoolRolesInput) (resp *GetIdentityPoolRolesResponse, err error) { - resp = &GetIdentityPoolRolesResponse{} - err = c.client.Do("GetIdentityPoolRoles", "POST", "/", req, resp) - return -} - -// GetOpenIDToken gets an OpenID token, using a known Cognito ID. This -// known Cognito ID is returned by GetId . You can optionally add -// additional logins for the identity. Supplying multiple logins creates an -// implicit link. The OpenId token is valid for 15 minutes. -func (c *CognitoIdentity) GetOpenIDToken(req *GetOpenIDTokenInput) (resp *GetOpenIDTokenResponse, err error) { - resp = &GetOpenIDTokenResponse{} - err = c.client.Do("GetOpenIdToken", "POST", "/", req, resp) - return -} - -// GetOpenIDTokenForDeveloperIdentity registers (or retrieves) a Cognito -// IdentityId and an OpenID Connect token for a user authenticated by your -// backend authentication process. Supplying multiple logins will create an -// implicit linked account. You can only specify one developer provider as -// part of the Logins map, which is linked to the identity pool. The -// developer provider is the "domain" by which Cognito will refer to your -// users. You can use GetOpenIdTokenForDeveloperIdentity to create a new -// identity and to link new logins (that is, user credentials issued by a -// public provider or developer provider) to an existing identity. When you -// want to create a new identity, the IdentityId should be null. When you -// want to associate a new login with an existing -// authenticated/unauthenticated identity, you can do so by providing the -// existing IdentityId . This API will create the identity in the specified -// IdentityPoolId -func (c *CognitoIdentity) GetOpenIDTokenForDeveloperIdentity(req *GetOpenIDTokenForDeveloperIdentityInput) (resp *GetOpenIDTokenForDeveloperIdentityResponse, err error) { - resp = &GetOpenIDTokenForDeveloperIdentityResponse{} - err = c.client.Do("GetOpenIdTokenForDeveloperIdentity", "POST", "/", req, resp) - return -} - -// ListIdentities is undocumented. -func (c *CognitoIdentity) ListIdentities(req *ListIdentitiesInput) (resp *ListIdentitiesResponse, err error) { - resp = &ListIdentitiesResponse{} - err = c.client.Do("ListIdentities", "POST", "/", req, resp) - return -} - -// ListIdentityPools lists all of the Cognito identity pools registered for -// your account. -func (c *CognitoIdentity) ListIdentityPools(req *ListIdentityPoolsInput) (resp *ListIdentityPoolsResponse, err error) { - resp = &ListIdentityPoolsResponse{} - err = c.client.Do("ListIdentityPools", "POST", "/", req, resp) - return -} - -// LookupDeveloperIdentity retrieves the IdentityID associated with a -// DeveloperUserIdentifier or the list of DeveloperUserIdentifier s -// associated with an IdentityId for an existing identity. Either -// IdentityID or DeveloperUserIdentifier must not be null. If you supply -// only one of these values, the other value will be searched in the -// database and returned as a part of the response. If you supply both, -// DeveloperUserIdentifier will be matched against IdentityID . If the -// values are verified against the database, the response returns both -// values and is the same as the request. Otherwise a -// ResourceConflictException is thrown. -func (c *CognitoIdentity) LookupDeveloperIdentity(req *LookupDeveloperIdentityInput) (resp *LookupDeveloperIdentityResponse, err error) { - resp = &LookupDeveloperIdentityResponse{} - err = c.client.Do("LookupDeveloperIdentity", "POST", "/", req, resp) - return -} - -// MergeDeveloperIdentities merges two users having different IdentityId s, -// existing in the same identity pool, and identified by the same developer -// provider. You can use this action to request that discrete users be -// merged and identified as a single user in the Cognito environment. -// Cognito associates the given source user SourceUserIdentifier ) with the -// IdentityId of the DestinationUserIdentifier . Only -// developer-authenticated users can be merged. If the users to be merged -// are associated with the same public provider, but as two different -// users, an exception will be thrown. -func (c *CognitoIdentity) MergeDeveloperIdentities(req *MergeDeveloperIdentitiesInput) (resp *MergeDeveloperIdentitiesResponse, err error) { - resp = &MergeDeveloperIdentitiesResponse{} - err = c.client.Do("MergeDeveloperIdentities", "POST", "/", req, resp) - return -} - -// SetIdentityPoolRoles sets the roles for an identity pool. These roles -// are used when making calls to GetCredentialsForIdentity action. -func (c *CognitoIdentity) SetIdentityPoolRoles(req *SetIdentityPoolRolesInput) (err error) { - // NRE - err = c.client.Do("SetIdentityPoolRoles", "POST", "/", req, nil) - return -} - -// UnlinkDeveloperIdentity unlinks a DeveloperUserIdentifier from an -// existing identity. Unlinked developer users will be considered new -// identities next time they are seen. If, for a given Cognito identity, -// you remove all federated identities as well as the developer user -// identifier, the Cognito identity becomes inaccessible. -func (c *CognitoIdentity) UnlinkDeveloperIdentity(req *UnlinkDeveloperIdentityInput) (err error) { - // NRE - err = c.client.Do("UnlinkDeveloperIdentity", "POST", "/", req, nil) - return -} - -// UnlinkIdentity unlinks a federated identity from an existing account. -// Unlinked logins will be considered new identities next time they are -// seen. Removing the last linked login will make this identity -// inaccessible. -func (c *CognitoIdentity) UnlinkIdentity(req *UnlinkIdentityInput) (err error) { - // NRE - err = c.client.Do("UnlinkIdentity", "POST", "/", req, nil) - return -} - -// UpdateIdentityPool is undocumented. -func (c *CognitoIdentity) UpdateIdentityPool(req *IdentityPool) (resp *IdentityPool, err error) { - resp = &IdentityPool{} - err = c.client.Do("UpdateIdentityPool", "POST", "/", req, resp) - return -} - -// CreateIdentityPoolInput is undocumented. -type CreateIdentityPoolInput struct { - AllowUnauthenticatedIdentities aws.BooleanValue `json:"AllowUnauthenticatedIdentities"` - DeveloperProviderName aws.StringValue `json:"DeveloperProviderName,omitempty"` - IdentityPoolName aws.StringValue `json:"IdentityPoolName"` - OpenIDConnectProviderARNs []string `json:"OpenIdConnectProviderARNs,omitempty"` - SupportedLoginProviders map[string]string `json:"SupportedLoginProviders,omitempty"` -} - -// Credentials is undocumented. -type Credentials struct { - AccessKeyID aws.StringValue `json:"AccessKeyId,omitempty"` - Expiration *aws.UnixTimestamp `json:"Expiration,omitempty"` - SecretKey aws.StringValue `json:"SecretKey,omitempty"` - SessionToken aws.StringValue `json:"SessionToken,omitempty"` -} - -// DeleteIdentityPoolInput is undocumented. -type DeleteIdentityPoolInput struct { - IdentityPoolID aws.StringValue `json:"IdentityPoolId"` -} - -// DescribeIdentityInput is undocumented. -type DescribeIdentityInput struct { - IdentityID aws.StringValue `json:"IdentityId"` -} - -// DescribeIdentityPoolInput is undocumented. -type DescribeIdentityPoolInput struct { - IdentityPoolID aws.StringValue `json:"IdentityPoolId"` -} - -// GetCredentialsForIdentityInput is undocumented. -type GetCredentialsForIdentityInput struct { - IdentityID aws.StringValue `json:"IdentityId"` - Logins map[string]string `json:"Logins,omitempty"` -} - -// GetCredentialsForIdentityResponse is undocumented. -type GetCredentialsForIdentityResponse struct { - Credentials *Credentials `json:"Credentials,omitempty"` - IdentityID aws.StringValue `json:"IdentityId,omitempty"` -} - -// GetIDInput is undocumented. -type GetIDInput struct { - AccountID aws.StringValue `json:"AccountId,omitempty"` - IdentityPoolID aws.StringValue `json:"IdentityPoolId"` - Logins map[string]string `json:"Logins,omitempty"` -} - -// GetIDResponse is undocumented. -type GetIDResponse struct { - IdentityID aws.StringValue `json:"IdentityId,omitempty"` -} - -// GetIdentityPoolRolesInput is undocumented. -type GetIdentityPoolRolesInput struct { - IdentityPoolID aws.StringValue `json:"IdentityPoolId,omitempty"` -} - -// GetIdentityPoolRolesResponse is undocumented. -type GetIdentityPoolRolesResponse struct { - IdentityPoolID aws.StringValue `json:"IdentityPoolId,omitempty"` - Roles map[string]string `json:"Roles,omitempty"` -} - -// GetOpenIDTokenForDeveloperIdentityInput is undocumented. -type GetOpenIDTokenForDeveloperIdentityInput struct { - IdentityID aws.StringValue `json:"IdentityId,omitempty"` - IdentityPoolID aws.StringValue `json:"IdentityPoolId"` - Logins map[string]string `json:"Logins"` - TokenDuration aws.LongValue `json:"TokenDuration,omitempty"` -} - -// GetOpenIDTokenForDeveloperIdentityResponse is undocumented. -type GetOpenIDTokenForDeveloperIdentityResponse struct { - IdentityID aws.StringValue `json:"IdentityId,omitempty"` - Token aws.StringValue `json:"Token,omitempty"` -} - -// GetOpenIDTokenInput is undocumented. -type GetOpenIDTokenInput struct { - IdentityID aws.StringValue `json:"IdentityId"` - Logins map[string]string `json:"Logins,omitempty"` -} - -// GetOpenIDTokenResponse is undocumented. -type GetOpenIDTokenResponse struct { - IdentityID aws.StringValue `json:"IdentityId,omitempty"` - Token aws.StringValue `json:"Token,omitempty"` -} - -// IdentityDescription is undocumented. -type IdentityDescription struct { - CreationDate *aws.UnixTimestamp `json:"CreationDate,omitempty"` - IdentityID aws.StringValue `json:"IdentityId,omitempty"` - LastModifiedDate *aws.UnixTimestamp `json:"LastModifiedDate,omitempty"` - Logins []string `json:"Logins,omitempty"` -} - -// IdentityPool is undocumented. -type IdentityPool struct { - AllowUnauthenticatedIdentities aws.BooleanValue `json:"AllowUnauthenticatedIdentities"` - DeveloperProviderName aws.StringValue `json:"DeveloperProviderName,omitempty"` - IdentityPoolID aws.StringValue `json:"IdentityPoolId"` - IdentityPoolName aws.StringValue `json:"IdentityPoolName"` - OpenIDConnectProviderARNs []string `json:"OpenIdConnectProviderARNs,omitempty"` - SupportedLoginProviders map[string]string `json:"SupportedLoginProviders,omitempty"` -} - -// IdentityPoolShortDescription is undocumented. -type IdentityPoolShortDescription struct { - IdentityPoolID aws.StringValue `json:"IdentityPoolId,omitempty"` - IdentityPoolName aws.StringValue `json:"IdentityPoolName,omitempty"` -} - -// ListIdentitiesInput is undocumented. -type ListIdentitiesInput struct { - IdentityPoolID aws.StringValue `json:"IdentityPoolId"` - MaxResults aws.IntegerValue `json:"MaxResults"` - NextToken aws.StringValue `json:"NextToken,omitempty"` -} - -// ListIdentitiesResponse is undocumented. -type ListIdentitiesResponse struct { - Identities []IdentityDescription `json:"Identities,omitempty"` - IdentityPoolID aws.StringValue `json:"IdentityPoolId,omitempty"` - NextToken aws.StringValue `json:"NextToken,omitempty"` -} - -// ListIdentityPoolsInput is undocumented. -type ListIdentityPoolsInput struct { - MaxResults aws.IntegerValue `json:"MaxResults"` - NextToken aws.StringValue `json:"NextToken,omitempty"` -} - -// ListIdentityPoolsResponse is undocumented. -type ListIdentityPoolsResponse struct { - IdentityPools []IdentityPoolShortDescription `json:"IdentityPools,omitempty"` - NextToken aws.StringValue `json:"NextToken,omitempty"` -} - -// LookupDeveloperIdentityInput is undocumented. -type LookupDeveloperIdentityInput struct { - DeveloperUserIdentifier aws.StringValue `json:"DeveloperUserIdentifier,omitempty"` - IdentityID aws.StringValue `json:"IdentityId,omitempty"` - IdentityPoolID aws.StringValue `json:"IdentityPoolId"` - MaxResults aws.IntegerValue `json:"MaxResults,omitempty"` - NextToken aws.StringValue `json:"NextToken,omitempty"` -} - -// LookupDeveloperIdentityResponse is undocumented. -type LookupDeveloperIdentityResponse struct { - DeveloperUserIdentifierList []string `json:"DeveloperUserIdentifierList,omitempty"` - IdentityID aws.StringValue `json:"IdentityId,omitempty"` - NextToken aws.StringValue `json:"NextToken,omitempty"` -} - -// MergeDeveloperIdentitiesInput is undocumented. -type MergeDeveloperIdentitiesInput struct { - DestinationUserIdentifier aws.StringValue `json:"DestinationUserIdentifier"` - DeveloperProviderName aws.StringValue `json:"DeveloperProviderName"` - IdentityPoolID aws.StringValue `json:"IdentityPoolId"` - SourceUserIdentifier aws.StringValue `json:"SourceUserIdentifier"` -} - -// MergeDeveloperIdentitiesResponse is undocumented. -type MergeDeveloperIdentitiesResponse struct { - IdentityID aws.StringValue `json:"IdentityId,omitempty"` -} - -// SetIdentityPoolRolesInput is undocumented. -type SetIdentityPoolRolesInput struct { - IdentityPoolID aws.StringValue `json:"IdentityPoolId"` - Roles map[string]string `json:"Roles"` -} - -// UnlinkDeveloperIdentityInput is undocumented. -type UnlinkDeveloperIdentityInput struct { - DeveloperProviderName aws.StringValue `json:"DeveloperProviderName"` - DeveloperUserIdentifier aws.StringValue `json:"DeveloperUserIdentifier"` - IdentityID aws.StringValue `json:"IdentityId"` - IdentityPoolID aws.StringValue `json:"IdentityPoolId"` -} - -// UnlinkIdentityInput is undocumented. -type UnlinkIdentityInput struct { - IdentityID aws.StringValue `json:"IdentityId"` - Logins map[string]string `json:"Logins"` - LoginsToRemove []string `json:"LoginsToRemove"` -} - -// avoid errors if the packages aren't referenced -var _ time.Time diff --git a/src/github.com/getlantern/aws-sdk-go/gen/cognito/sync/sync.go b/src/github.com/getlantern/aws-sdk-go/gen/cognito/sync/sync.go deleted file mode 100644 index aeb0caf245..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/gen/cognito/sync/sync.go +++ /dev/null @@ -1,1017 +0,0 @@ -// THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. - -// Package cognitosync provides a client for Amazon Cognito Sync. -package cognitosync - -import ( - "net/http" - "time" - - "github.com/awslabs/aws-sdk-go/aws" - "github.com/awslabs/aws-sdk-go/gen/endpoints" -) - -import ( - "bytes" - "encoding/json" - "fmt" - "io" - "io/ioutil" - "net/url" - "strconv" - "strings" -) - -// CognitoSync is a client for Amazon Cognito Sync. -type CognitoSync struct { - client *aws.RestClient -} - -// New returns a new CognitoSync client. -func New(creds aws.CredentialsProvider, region string, client *http.Client) *CognitoSync { - if client == nil { - client = http.DefaultClient - } - - endpoint, service, region := endpoints.Lookup("cognito-sync", region) - - return &CognitoSync{ - client: &aws.RestClient{ - Context: aws.Context{ - Credentials: creds, - Service: service, - Region: region, - }, - Client: client, - Endpoint: endpoint, - APIVersion: "2014-06-30", - }, - } -} - -// DeleteDataset deletes the specific dataset. The dataset will be deleted -// permanently, and the action can't be undone. Datasets that this dataset -// was merged with will no longer report the merge. Any consequent -// operation on this dataset will result in a ResourceNotFoundException. -func (c *CognitoSync) DeleteDataset(req *DeleteDatasetRequest) (resp *DeleteDatasetResponse, err error) { - resp = &DeleteDatasetResponse{} - - var body io.Reader - var contentType string - - uri := c.client.Endpoint + "/identitypools/{IdentityPoolId}/identities/{IdentityId}/datasets/{DatasetName}" - - if req.DatasetName != nil { - uri = strings.Replace(uri, "{"+"DatasetName"+"}", aws.EscapePath(*req.DatasetName), -1) - uri = strings.Replace(uri, "{"+"DatasetName+"+"}", aws.EscapePath(*req.DatasetName), -1) - } - - if req.IdentityID != nil { - uri = strings.Replace(uri, "{"+"IdentityId"+"}", aws.EscapePath(*req.IdentityID), -1) - uri = strings.Replace(uri, "{"+"IdentityId+"+"}", aws.EscapePath(*req.IdentityID), -1) - } - - if req.IdentityPoolID != nil { - uri = strings.Replace(uri, "{"+"IdentityPoolId"+"}", aws.EscapePath(*req.IdentityPoolID), -1) - uri = strings.Replace(uri, "{"+"IdentityPoolId+"+"}", aws.EscapePath(*req.IdentityPoolID), -1) - } - - q := url.Values{} - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("DELETE", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - - if e := json.NewDecoder(httpResp.Body).Decode(resp); e != nil && e != io.EOF { - err = e - return - } - - return -} - -// DescribeDataset gets metadata about a dataset by identity and dataset -// name. The credentials used to make this API call need to have access to -// the identity data. With Amazon Cognito Sync, each identity has access -// only to its own data. You should use Amazon Cognito Identity service to -// retrieve the credentials necessary to make this API call. -func (c *CognitoSync) DescribeDataset(req *DescribeDatasetRequest) (resp *DescribeDatasetResponse, err error) { - resp = &DescribeDatasetResponse{} - - var body io.Reader - var contentType string - - uri := c.client.Endpoint + "/identitypools/{IdentityPoolId}/identities/{IdentityId}/datasets/{DatasetName}" - - if req.DatasetName != nil { - uri = strings.Replace(uri, "{"+"DatasetName"+"}", aws.EscapePath(*req.DatasetName), -1) - uri = strings.Replace(uri, "{"+"DatasetName+"+"}", aws.EscapePath(*req.DatasetName), -1) - } - - if req.IdentityID != nil { - uri = strings.Replace(uri, "{"+"IdentityId"+"}", aws.EscapePath(*req.IdentityID), -1) - uri = strings.Replace(uri, "{"+"IdentityId+"+"}", aws.EscapePath(*req.IdentityID), -1) - } - - if req.IdentityPoolID != nil { - uri = strings.Replace(uri, "{"+"IdentityPoolId"+"}", aws.EscapePath(*req.IdentityPoolID), -1) - uri = strings.Replace(uri, "{"+"IdentityPoolId+"+"}", aws.EscapePath(*req.IdentityPoolID), -1) - } - - q := url.Values{} - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("GET", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - - if e := json.NewDecoder(httpResp.Body).Decode(resp); e != nil && e != io.EOF { - err = e - return - } - - return -} - -// DescribeIdentityPoolUsage gets usage details (for example, data storage) -// about a particular identity pool. -func (c *CognitoSync) DescribeIdentityPoolUsage(req *DescribeIdentityPoolUsageRequest) (resp *DescribeIdentityPoolUsageResponse, err error) { - resp = &DescribeIdentityPoolUsageResponse{} - - var body io.Reader - var contentType string - - uri := c.client.Endpoint + "/identitypools/{IdentityPoolId}" - - if req.IdentityPoolID != nil { - uri = strings.Replace(uri, "{"+"IdentityPoolId"+"}", aws.EscapePath(*req.IdentityPoolID), -1) - uri = strings.Replace(uri, "{"+"IdentityPoolId+"+"}", aws.EscapePath(*req.IdentityPoolID), -1) - } - - q := url.Values{} - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("GET", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - - if e := json.NewDecoder(httpResp.Body).Decode(resp); e != nil && e != io.EOF { - err = e - return - } - - return -} - -// DescribeIdentityUsage gets usage information for an identity, including -// number of datasets and data usage. -func (c *CognitoSync) DescribeIdentityUsage(req *DescribeIdentityUsageRequest) (resp *DescribeIdentityUsageResponse, err error) { - resp = &DescribeIdentityUsageResponse{} - - var body io.Reader - var contentType string - - uri := c.client.Endpoint + "/identitypools/{IdentityPoolId}/identities/{IdentityId}" - - if req.IdentityID != nil { - uri = strings.Replace(uri, "{"+"IdentityId"+"}", aws.EscapePath(*req.IdentityID), -1) - uri = strings.Replace(uri, "{"+"IdentityId+"+"}", aws.EscapePath(*req.IdentityID), -1) - } - - if req.IdentityPoolID != nil { - uri = strings.Replace(uri, "{"+"IdentityPoolId"+"}", aws.EscapePath(*req.IdentityPoolID), -1) - uri = strings.Replace(uri, "{"+"IdentityPoolId+"+"}", aws.EscapePath(*req.IdentityPoolID), -1) - } - - q := url.Values{} - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("GET", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - - if e := json.NewDecoder(httpResp.Body).Decode(resp); e != nil && e != io.EOF { - err = e - return - } - - return -} - -// GetIdentityPoolConfiguration gets the configuration settings of an -// identity pool. -func (c *CognitoSync) GetIdentityPoolConfiguration(req *GetIdentityPoolConfigurationRequest) (resp *GetIdentityPoolConfigurationResponse, err error) { - resp = &GetIdentityPoolConfigurationResponse{} - - var body io.Reader - var contentType string - - uri := c.client.Endpoint + "/identitypools/{IdentityPoolId}/configuration" - - if req.IdentityPoolID != nil { - uri = strings.Replace(uri, "{"+"IdentityPoolId"+"}", aws.EscapePath(*req.IdentityPoolID), -1) - uri = strings.Replace(uri, "{"+"IdentityPoolId+"+"}", aws.EscapePath(*req.IdentityPoolID), -1) - } - - q := url.Values{} - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("GET", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - - if e := json.NewDecoder(httpResp.Body).Decode(resp); e != nil && e != io.EOF { - err = e - return - } - - return -} - -// ListDatasets lists datasets for an identity. The credentials used to -// make this API call need to have access to the identity data. With Amazon -// Cognito Sync, each identity has access only to its own data. You should -// use Amazon Cognito Identity service to retrieve the credentials -// necessary to make this API call. -func (c *CognitoSync) ListDatasets(req *ListDatasetsRequest) (resp *ListDatasetsResponse, err error) { - resp = &ListDatasetsResponse{} - - var body io.Reader - var contentType string - - uri := c.client.Endpoint + "/identitypools/{IdentityPoolId}/identities/{IdentityId}/datasets" - - if req.IdentityID != nil { - uri = strings.Replace(uri, "{"+"IdentityId"+"}", aws.EscapePath(*req.IdentityID), -1) - uri = strings.Replace(uri, "{"+"IdentityId+"+"}", aws.EscapePath(*req.IdentityID), -1) - } - - if req.IdentityPoolID != nil { - uri = strings.Replace(uri, "{"+"IdentityPoolId"+"}", aws.EscapePath(*req.IdentityPoolID), -1) - uri = strings.Replace(uri, "{"+"IdentityPoolId+"+"}", aws.EscapePath(*req.IdentityPoolID), -1) - } - - q := url.Values{} - - if req.MaxResults != nil { - q.Set("maxResults", strconv.Itoa(*req.MaxResults)) - } - - if req.NextToken != nil { - q.Set("nextToken", *req.NextToken) - } - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("GET", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - - if e := json.NewDecoder(httpResp.Body).Decode(resp); e != nil && e != io.EOF { - err = e - return - } - - return -} - -// ListIdentityPoolUsage gets a list of identity pools registered with -// Cognito. -func (c *CognitoSync) ListIdentityPoolUsage(req *ListIdentityPoolUsageRequest) (resp *ListIdentityPoolUsageResponse, err error) { - resp = &ListIdentityPoolUsageResponse{} - - var body io.Reader - var contentType string - - uri := c.client.Endpoint + "/identitypools" - - q := url.Values{} - - if req.MaxResults != nil { - q.Set("maxResults", strconv.Itoa(*req.MaxResults)) - } - - if req.NextToken != nil { - q.Set("nextToken", *req.NextToken) - } - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("GET", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - - if e := json.NewDecoder(httpResp.Body).Decode(resp); e != nil && e != io.EOF { - err = e - return - } - - return -} - -// ListRecords gets paginated records, optionally changed after a -// particular sync count for a dataset and identity. The credentials used -// to make this API call need to have access to the identity data. With -// Amazon Cognito Sync, each identity has access only to its own data. You -// should use Amazon Cognito Identity service to retrieve the credentials -// necessary to make this API call. -func (c *CognitoSync) ListRecords(req *ListRecordsRequest) (resp *ListRecordsResponse, err error) { - resp = &ListRecordsResponse{} - - var body io.Reader - var contentType string - - uri := c.client.Endpoint + "/identitypools/{IdentityPoolId}/identities/{IdentityId}/datasets/{DatasetName}/records" - - if req.DatasetName != nil { - uri = strings.Replace(uri, "{"+"DatasetName"+"}", aws.EscapePath(*req.DatasetName), -1) - uri = strings.Replace(uri, "{"+"DatasetName+"+"}", aws.EscapePath(*req.DatasetName), -1) - } - - if req.IdentityID != nil { - uri = strings.Replace(uri, "{"+"IdentityId"+"}", aws.EscapePath(*req.IdentityID), -1) - uri = strings.Replace(uri, "{"+"IdentityId+"+"}", aws.EscapePath(*req.IdentityID), -1) - } - - if req.IdentityPoolID != nil { - uri = strings.Replace(uri, "{"+"IdentityPoolId"+"}", aws.EscapePath(*req.IdentityPoolID), -1) - uri = strings.Replace(uri, "{"+"IdentityPoolId+"+"}", aws.EscapePath(*req.IdentityPoolID), -1) - } - - q := url.Values{} - - if req.LastSyncCount != nil { - q.Set("lastSyncCount", fmt.Sprintf("%v", req.LastSyncCount)) - } - - if req.MaxResults != nil { - q.Set("maxResults", strconv.Itoa(*req.MaxResults)) - } - - if req.NextToken != nil { - q.Set("nextToken", *req.NextToken) - } - - if req.SyncSessionToken != nil { - q.Set("syncSessionToken", *req.SyncSessionToken) - } - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("GET", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - - if e := json.NewDecoder(httpResp.Body).Decode(resp); e != nil && e != io.EOF { - err = e - return - } - - return -} - -// RegisterDevice registers a device to receive push sync notifications. -func (c *CognitoSync) RegisterDevice(req *RegisterDeviceRequest) (resp *RegisterDeviceResponse, err error) { - resp = &RegisterDeviceResponse{} - - var body io.Reader - var contentType string - - uri := c.client.Endpoint + "/identitypools/{IdentityPoolId}/identity/{IdentityId}/device" - - if req.IdentityID != nil { - uri = strings.Replace(uri, "{"+"IdentityId"+"}", aws.EscapePath(*req.IdentityID), -1) - uri = strings.Replace(uri, "{"+"IdentityId+"+"}", aws.EscapePath(*req.IdentityID), -1) - } - - if req.IdentityPoolID != nil { - uri = strings.Replace(uri, "{"+"IdentityPoolId"+"}", aws.EscapePath(*req.IdentityPoolID), -1) - uri = strings.Replace(uri, "{"+"IdentityPoolId+"+"}", aws.EscapePath(*req.IdentityPoolID), -1) - } - - q := url.Values{} - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("POST", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - - if e := json.NewDecoder(httpResp.Body).Decode(resp); e != nil && e != io.EOF { - err = e - return - } - - return -} - -// SetIdentityPoolConfiguration is undocumented. -func (c *CognitoSync) SetIdentityPoolConfiguration(req *SetIdentityPoolConfigurationRequest) (resp *SetIdentityPoolConfigurationResponse, err error) { - resp = &SetIdentityPoolConfigurationResponse{} - - var body io.Reader - var contentType string - - uri := c.client.Endpoint + "/identitypools/{IdentityPoolId}/configuration" - - if req.IdentityPoolID != nil { - uri = strings.Replace(uri, "{"+"IdentityPoolId"+"}", aws.EscapePath(*req.IdentityPoolID), -1) - uri = strings.Replace(uri, "{"+"IdentityPoolId+"+"}", aws.EscapePath(*req.IdentityPoolID), -1) - } - - q := url.Values{} - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("POST", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - - if e := json.NewDecoder(httpResp.Body).Decode(resp); e != nil && e != io.EOF { - err = e - return - } - - return -} - -// SubscribeToDataset subscribes to receive notifications when a dataset is -// modified by another device. -func (c *CognitoSync) SubscribeToDataset(req *SubscribeToDatasetRequest) (resp *SubscribeToDatasetResponse, err error) { - resp = &SubscribeToDatasetResponse{} - - var body io.Reader - var contentType string - - uri := c.client.Endpoint + "/identitypools/{IdentityPoolId}/identities/{IdentityId}/datasets/{DatasetName}/subscriptions/{DeviceId}" - - if req.DatasetName != nil { - uri = strings.Replace(uri, "{"+"DatasetName"+"}", aws.EscapePath(*req.DatasetName), -1) - uri = strings.Replace(uri, "{"+"DatasetName+"+"}", aws.EscapePath(*req.DatasetName), -1) - } - - if req.DeviceID != nil { - uri = strings.Replace(uri, "{"+"DeviceId"+"}", aws.EscapePath(*req.DeviceID), -1) - uri = strings.Replace(uri, "{"+"DeviceId+"+"}", aws.EscapePath(*req.DeviceID), -1) - } - - if req.IdentityID != nil { - uri = strings.Replace(uri, "{"+"IdentityId"+"}", aws.EscapePath(*req.IdentityID), -1) - uri = strings.Replace(uri, "{"+"IdentityId+"+"}", aws.EscapePath(*req.IdentityID), -1) - } - - if req.IdentityPoolID != nil { - uri = strings.Replace(uri, "{"+"IdentityPoolId"+"}", aws.EscapePath(*req.IdentityPoolID), -1) - uri = strings.Replace(uri, "{"+"IdentityPoolId+"+"}", aws.EscapePath(*req.IdentityPoolID), -1) - } - - q := url.Values{} - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("POST", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - - if e := json.NewDecoder(httpResp.Body).Decode(resp); e != nil && e != io.EOF { - err = e - return - } - - return -} - -// UnsubscribeFromDataset unsubscribe from receiving notifications when a -// dataset is modified by another device. -func (c *CognitoSync) UnsubscribeFromDataset(req *UnsubscribeFromDatasetRequest) (resp *UnsubscribeFromDatasetResponse, err error) { - resp = &UnsubscribeFromDatasetResponse{} - - var body io.Reader - var contentType string - - uri := c.client.Endpoint + "/identitypools/{IdentityPoolId}/identities/{IdentityId}/datasets/{DatasetName}/subscriptions/{DeviceId}" - - if req.DatasetName != nil { - uri = strings.Replace(uri, "{"+"DatasetName"+"}", aws.EscapePath(*req.DatasetName), -1) - uri = strings.Replace(uri, "{"+"DatasetName+"+"}", aws.EscapePath(*req.DatasetName), -1) - } - - if req.DeviceID != nil { - uri = strings.Replace(uri, "{"+"DeviceId"+"}", aws.EscapePath(*req.DeviceID), -1) - uri = strings.Replace(uri, "{"+"DeviceId+"+"}", aws.EscapePath(*req.DeviceID), -1) - } - - if req.IdentityID != nil { - uri = strings.Replace(uri, "{"+"IdentityId"+"}", aws.EscapePath(*req.IdentityID), -1) - uri = strings.Replace(uri, "{"+"IdentityId+"+"}", aws.EscapePath(*req.IdentityID), -1) - } - - if req.IdentityPoolID != nil { - uri = strings.Replace(uri, "{"+"IdentityPoolId"+"}", aws.EscapePath(*req.IdentityPoolID), -1) - uri = strings.Replace(uri, "{"+"IdentityPoolId+"+"}", aws.EscapePath(*req.IdentityPoolID), -1) - } - - q := url.Values{} - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("DELETE", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - - if e := json.NewDecoder(httpResp.Body).Decode(resp); e != nil && e != io.EOF { - err = e - return - } - - return -} - -// UpdateRecords posts updates to records and add and delete records for a -// dataset and user. The credentials used to make this API call need to -// have access to the identity data. With Amazon Cognito Sync, each -// identity has access only to its own data. You should use Amazon Cognito -// Identity service to retrieve the credentials necessary to make this API -// call. -func (c *CognitoSync) UpdateRecords(req *UpdateRecordsRequest) (resp *UpdateRecordsResponse, err error) { - resp = &UpdateRecordsResponse{} - - var body io.Reader - var contentType string - - uri := c.client.Endpoint + "/identitypools/{IdentityPoolId}/identities/{IdentityId}/datasets/{DatasetName}" - - if req.DatasetName != nil { - uri = strings.Replace(uri, "{"+"DatasetName"+"}", aws.EscapePath(*req.DatasetName), -1) - uri = strings.Replace(uri, "{"+"DatasetName+"+"}", aws.EscapePath(*req.DatasetName), -1) - } - - if req.IdentityID != nil { - uri = strings.Replace(uri, "{"+"IdentityId"+"}", aws.EscapePath(*req.IdentityID), -1) - uri = strings.Replace(uri, "{"+"IdentityId+"+"}", aws.EscapePath(*req.IdentityID), -1) - } - - if req.IdentityPoolID != nil { - uri = strings.Replace(uri, "{"+"IdentityPoolId"+"}", aws.EscapePath(*req.IdentityPoolID), -1) - uri = strings.Replace(uri, "{"+"IdentityPoolId+"+"}", aws.EscapePath(*req.IdentityPoolID), -1) - } - - q := url.Values{} - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("POST", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - if req.ClientContext != nil { - httpReq.Header.Set("x-amz-Client-Context", *req.ClientContext) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - - if e := json.NewDecoder(httpResp.Body).Decode(resp); e != nil && e != io.EOF { - err = e - return - } - - return -} - -// Dataset is undocumented. -type Dataset struct { - CreationDate time.Time `json:"CreationDate,omitempty"` - DataStorage aws.LongValue `json:"DataStorage,omitempty"` - DatasetName aws.StringValue `json:"DatasetName,omitempty"` - IdentityID aws.StringValue `json:"IdentityId,omitempty"` - LastModifiedBy aws.StringValue `json:"LastModifiedBy,omitempty"` - LastModifiedDate time.Time `json:"LastModifiedDate,omitempty"` - NumRecords aws.LongValue `json:"NumRecords,omitempty"` -} - -// DeleteDatasetRequest is undocumented. -type DeleteDatasetRequest struct { - DatasetName aws.StringValue `json:"-"` - IdentityID aws.StringValue `json:"-"` - IdentityPoolID aws.StringValue `json:"-"` -} - -// DeleteDatasetResponse is undocumented. -type DeleteDatasetResponse struct { - Dataset *Dataset `json:"Dataset,omitempty"` -} - -// DescribeDatasetRequest is undocumented. -type DescribeDatasetRequest struct { - DatasetName aws.StringValue `json:"-"` - IdentityID aws.StringValue `json:"-"` - IdentityPoolID aws.StringValue `json:"-"` -} - -// DescribeDatasetResponse is undocumented. -type DescribeDatasetResponse struct { - Dataset *Dataset `json:"Dataset,omitempty"` -} - -// DescribeIdentityPoolUsageRequest is undocumented. -type DescribeIdentityPoolUsageRequest struct { - IdentityPoolID aws.StringValue `json:"-"` -} - -// DescribeIdentityPoolUsageResponse is undocumented. -type DescribeIdentityPoolUsageResponse struct { - IdentityPoolUsage *IdentityPoolUsage `json:"IdentityPoolUsage,omitempty"` -} - -// DescribeIdentityUsageRequest is undocumented. -type DescribeIdentityUsageRequest struct { - IdentityID aws.StringValue `json:"-"` - IdentityPoolID aws.StringValue `json:"-"` -} - -// DescribeIdentityUsageResponse is undocumented. -type DescribeIdentityUsageResponse struct { - IdentityUsage *IdentityUsage `json:"IdentityUsage,omitempty"` -} - -// GetIdentityPoolConfigurationRequest is undocumented. -type GetIdentityPoolConfigurationRequest struct { - IdentityPoolID aws.StringValue `json:"-"` -} - -// GetIdentityPoolConfigurationResponse is undocumented. -type GetIdentityPoolConfigurationResponse struct { - IdentityPoolID aws.StringValue `json:"IdentityPoolId,omitempty"` - PushSync *PushSync `json:"PushSync,omitempty"` -} - -// IdentityPoolUsage is undocumented. -type IdentityPoolUsage struct { - DataStorage aws.LongValue `json:"DataStorage,omitempty"` - IdentityPoolID aws.StringValue `json:"IdentityPoolId,omitempty"` - LastModifiedDate time.Time `json:"LastModifiedDate,omitempty"` - SyncSessionsCount aws.LongValue `json:"SyncSessionsCount,omitempty"` -} - -// IdentityUsage is undocumented. -type IdentityUsage struct { - DataStorage aws.LongValue `json:"DataStorage,omitempty"` - DatasetCount aws.IntegerValue `json:"DatasetCount,omitempty"` - IdentityID aws.StringValue `json:"IdentityId,omitempty"` - IdentityPoolID aws.StringValue `json:"IdentityPoolId,omitempty"` - LastModifiedDate time.Time `json:"LastModifiedDate,omitempty"` -} - -// ListDatasetsRequest is undocumented. -type ListDatasetsRequest struct { - IdentityID aws.StringValue `json:"-"` - IdentityPoolID aws.StringValue `json:"-"` - MaxResults aws.IntegerValue `json:"-"` - NextToken aws.StringValue `json:"-"` -} - -// ListDatasetsResponse is undocumented. -type ListDatasetsResponse struct { - Count aws.IntegerValue `json:"Count,omitempty"` - Datasets []Dataset `json:"Datasets,omitempty"` - NextToken aws.StringValue `json:"NextToken,omitempty"` -} - -// ListIdentityPoolUsageRequest is undocumented. -type ListIdentityPoolUsageRequest struct { - MaxResults aws.IntegerValue `json:"-"` - NextToken aws.StringValue `json:"-"` -} - -// ListIdentityPoolUsageResponse is undocumented. -type ListIdentityPoolUsageResponse struct { - Count aws.IntegerValue `json:"Count,omitempty"` - IdentityPoolUsages []IdentityPoolUsage `json:"IdentityPoolUsages,omitempty"` - MaxResults aws.IntegerValue `json:"MaxResults,omitempty"` - NextToken aws.StringValue `json:"NextToken,omitempty"` -} - -// ListRecordsRequest is undocumented. -type ListRecordsRequest struct { - DatasetName aws.StringValue `json:"-"` - IdentityID aws.StringValue `json:"-"` - IdentityPoolID aws.StringValue `json:"-"` - LastSyncCount aws.LongValue `json:"-"` - MaxResults aws.IntegerValue `json:"-"` - NextToken aws.StringValue `json:"-"` - SyncSessionToken aws.StringValue `json:"-"` -} - -// ListRecordsResponse is undocumented. -type ListRecordsResponse struct { - Count aws.IntegerValue `json:"Count,omitempty"` - DatasetDeletedAfterRequestedSyncCount aws.BooleanValue `json:"DatasetDeletedAfterRequestedSyncCount,omitempty"` - DatasetExists aws.BooleanValue `json:"DatasetExists,omitempty"` - DatasetSyncCount aws.LongValue `json:"DatasetSyncCount,omitempty"` - LastModifiedBy aws.StringValue `json:"LastModifiedBy,omitempty"` - MergedDatasetNames []string `json:"MergedDatasetNames,omitempty"` - NextToken aws.StringValue `json:"NextToken,omitempty"` - Records []Record `json:"Records,omitempty"` - SyncSessionToken aws.StringValue `json:"SyncSessionToken,omitempty"` -} - -// Possible values for CognitoSync. -const ( - OperationRemove = "remove" - OperationReplace = "replace" -) - -// Possible values for CognitoSync. -const ( - PlatformADM = "ADM" - PlatformAPNS = "APNS" - PlatformAPNSSandbox = "APNS_SANDBOX" - PlatformGCM = "GCM" -) - -// PushSync is undocumented. -type PushSync struct { - ApplicationARNs []string `json:"ApplicationArns,omitempty"` - RoleARN aws.StringValue `json:"RoleArn,omitempty"` -} - -// Record is undocumented. -type Record struct { - DeviceLastModifiedDate time.Time `json:"DeviceLastModifiedDate,omitempty"` - Key aws.StringValue `json:"Key,omitempty"` - LastModifiedBy aws.StringValue `json:"LastModifiedBy,omitempty"` - LastModifiedDate time.Time `json:"LastModifiedDate,omitempty"` - SyncCount aws.LongValue `json:"SyncCount,omitempty"` - Value aws.StringValue `json:"Value,omitempty"` -} - -// RecordPatch is undocumented. -type RecordPatch struct { - DeviceLastModifiedDate time.Time `json:"DeviceLastModifiedDate,omitempty"` - Key aws.StringValue `json:"Key"` - Op aws.StringValue `json:"Op"` - SyncCount aws.LongValue `json:"SyncCount"` - Value aws.StringValue `json:"Value,omitempty"` -} - -// RegisterDeviceRequest is undocumented. -type RegisterDeviceRequest struct { - IdentityID aws.StringValue `json:"-"` - IdentityPoolID aws.StringValue `json:"-"` - Platform aws.StringValue `json:"Platform"` - Token aws.StringValue `json:"Token"` -} - -// RegisterDeviceResponse is undocumented. -type RegisterDeviceResponse struct { - DeviceID aws.StringValue `json:"DeviceId,omitempty"` -} - -// SetIdentityPoolConfigurationRequest is undocumented. -type SetIdentityPoolConfigurationRequest struct { - IdentityPoolID aws.StringValue `json:"-"` - PushSync *PushSync `json:"PushSync,omitempty"` -} - -// SetIdentityPoolConfigurationResponse is undocumented. -type SetIdentityPoolConfigurationResponse struct { - IdentityPoolID aws.StringValue `json:"IdentityPoolId,omitempty"` - PushSync *PushSync `json:"PushSync,omitempty"` -} - -// SubscribeToDatasetRequest is undocumented. -type SubscribeToDatasetRequest struct { - DatasetName aws.StringValue `json:"-"` - DeviceID aws.StringValue `json:"-"` - IdentityID aws.StringValue `json:"-"` - IdentityPoolID aws.StringValue `json:"-"` -} - -// SubscribeToDatasetResponse is undocumented. -type SubscribeToDatasetResponse struct { -} - -// UnsubscribeFromDatasetRequest is undocumented. -type UnsubscribeFromDatasetRequest struct { - DatasetName aws.StringValue `json:"-"` - DeviceID aws.StringValue `json:"-"` - IdentityID aws.StringValue `json:"-"` - IdentityPoolID aws.StringValue `json:"-"` -} - -// UnsubscribeFromDatasetResponse is undocumented. -type UnsubscribeFromDatasetResponse struct { -} - -// UpdateRecordsRequest is undocumented. -type UpdateRecordsRequest struct { - ClientContext aws.StringValue `json:"-"` - DatasetName aws.StringValue `json:"-"` - DeviceID aws.StringValue `json:"DeviceId,omitempty"` - IdentityID aws.StringValue `json:"-"` - IdentityPoolID aws.StringValue `json:"-"` - RecordPatches []RecordPatch `json:"RecordPatches,omitempty"` - SyncSessionToken aws.StringValue `json:"SyncSessionToken"` -} - -// UpdateRecordsResponse is undocumented. -type UpdateRecordsResponse struct { - Records []Record `json:"Records,omitempty"` -} - -// avoid errors if the packages aren't referenced -var _ time.Time - -var _ bytes.Reader -var _ url.URL -var _ fmt.Stringer -var _ strings.Reader -var _ strconv.NumError -var _ = ioutil.Discard -var _ json.RawMessage diff --git a/src/github.com/getlantern/aws-sdk-go/gen/config/config.go b/src/github.com/getlantern/aws-sdk-go/gen/config/config.go deleted file mode 100644 index 11ea6406e7..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/gen/config/config.go +++ /dev/null @@ -1,372 +0,0 @@ -// THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. - -// Package config provides a client for AWS Config. -package config - -import ( - "net/http" - "time" - - "github.com/awslabs/aws-sdk-go/aws" - "github.com/awslabs/aws-sdk-go/gen/endpoints" -) - -// Config is a client for AWS Config. -type Config struct { - client *aws.JSONClient -} - -// New returns a new Config client. -func New(creds aws.CredentialsProvider, region string, client *http.Client) *Config { - if client == nil { - client = http.DefaultClient - } - - endpoint, service, region := endpoints.Lookup("config", region) - - return &Config{ - client: &aws.JSONClient{ - Context: aws.Context{ - Credentials: creds, - Service: service, - Region: region, - }, Client: client, - Endpoint: endpoint, - JSONVersion: "1.1", - TargetPrefix: "StarlingDoveService", - }, - } -} - -// DeleteDeliveryChannel deletes the specified delivery channel. The -// delivery channel cannot be deleted if it is the only delivery channel -// and the configuration recorder is still running. To delete the delivery -// channel, stop the running configuration recorder using the -// StopConfigurationRecorder action. -func (c *Config) DeleteDeliveryChannel(req *DeleteDeliveryChannelRequest) (err error) { - // NRE - err = c.client.Do("DeleteDeliveryChannel", "POST", "/", req, nil) - return -} - -// DeliverConfigSnapshot schedules delivery of a configuration snapshot to -// the Amazon S3 bucket in the specified delivery channel. After the -// delivery has started, AWS Config sends following notifications using an -// Amazon SNS topic that you have specified. Notification of starting the -// delivery. Notification of delivery completed, if the delivery was -// successfully completed. Notification of delivery failure, if the -// delivery failed to complete. -func (c *Config) DeliverConfigSnapshot(req *DeliverConfigSnapshotRequest) (resp *DeliverConfigSnapshotResponse, err error) { - resp = &DeliverConfigSnapshotResponse{} - err = c.client.Do("DeliverConfigSnapshot", "POST", "/", req, resp) - return -} - -// DescribeConfigurationRecorderStatus returns the current status of the -// specified configuration recorder. If a configuration recorder is not -// specified, this action returns the status of all configuration recorder -// associated with the account. -func (c *Config) DescribeConfigurationRecorderStatus(req *DescribeConfigurationRecorderStatusRequest) (resp *DescribeConfigurationRecorderStatusResponse, err error) { - resp = &DescribeConfigurationRecorderStatusResponse{} - err = c.client.Do("DescribeConfigurationRecorderStatus", "POST", "/", req, resp) - return -} - -// DescribeConfigurationRecorders returns the name of one or more specified -// configuration recorders. If the recorder name is not specified, this -// action returns the names of all the configuration recorders associated -// with the account. -func (c *Config) DescribeConfigurationRecorders(req *DescribeConfigurationRecordersRequest) (resp *DescribeConfigurationRecordersResponse, err error) { - resp = &DescribeConfigurationRecordersResponse{} - err = c.client.Do("DescribeConfigurationRecorders", "POST", "/", req, resp) - return -} - -// DescribeDeliveryChannelStatus returns the current status of the -// specified delivery channel. If a delivery channel is not specified, this -// action returns the current status of all delivery channels associated -// with the account. -func (c *Config) DescribeDeliveryChannelStatus(req *DescribeDeliveryChannelStatusRequest) (resp *DescribeDeliveryChannelStatusResponse, err error) { - resp = &DescribeDeliveryChannelStatusResponse{} - err = c.client.Do("DescribeDeliveryChannelStatus", "POST", "/", req, resp) - return -} - -// DescribeDeliveryChannels returns details about the specified delivery -// channel. If a delivery channel is not specified, this action returns the -// details of all delivery channels associated with the account. -func (c *Config) DescribeDeliveryChannels(req *DescribeDeliveryChannelsRequest) (resp *DescribeDeliveryChannelsResponse, err error) { - resp = &DescribeDeliveryChannelsResponse{} - err = c.client.Do("DescribeDeliveryChannels", "POST", "/", req, resp) - return -} - -// GetResourceConfigHistory returns a list of configuration items for the -// specified resource. The list contains details about each state of the -// resource during the specified time interval. You can specify a limit on -// the number of results returned on the page. If a limit is specified, a -// nextToken is returned as part of the result that you can use to continue -// this request. -func (c *Config) GetResourceConfigHistory(req *GetResourceConfigHistoryRequest) (resp *GetResourceConfigHistoryResponse, err error) { - resp = &GetResourceConfigHistoryResponse{} - err = c.client.Do("GetResourceConfigHistory", "POST", "/", req, resp) - return -} - -// PutConfigurationRecorder creates a new configuration recorder to record -// the resource configurations. You can use this action to change the role -// roleARN ) of an existing recorder. To change the role, call the action -// on the existing configuration recorder and specify a role. -func (c *Config) PutConfigurationRecorder(req *PutConfigurationRecorderRequest) (err error) { - // NRE - err = c.client.Do("PutConfigurationRecorder", "POST", "/", req, nil) - return -} - -// PutDeliveryChannel creates a new delivery channel object to deliver the -// configuration information to an Amazon S3 bucket, and to an Amazon SNS -// topic. You can use this action to change the Amazon S3 bucket or an -// Amazon SNS topic of the existing delivery channel. To change the Amazon -// S3 bucket or an Amazon SNS topic, call this action and specify the -// changed values for the S3 bucket and the SNS topic. If you specify a -// different value for either the S3 bucket or the SNS topic, this action -// will keep the existing value for the parameter that is not changed. -func (c *Config) PutDeliveryChannel(req *PutDeliveryChannelRequest) (err error) { - // NRE - err = c.client.Do("PutDeliveryChannel", "POST", "/", req, nil) - return -} - -// StartConfigurationRecorder starts recording configurations of all the -// resources associated with the account. You must have created at least -// one delivery channel to successfully start the configuration recorder. -func (c *Config) StartConfigurationRecorder(req *StartConfigurationRecorderRequest) (err error) { - // NRE - err = c.client.Do("StartConfigurationRecorder", "POST", "/", req, nil) - return -} - -// StopConfigurationRecorder stops recording configurations of all the -// resources associated with the account. -func (c *Config) StopConfigurationRecorder(req *StopConfigurationRecorderRequest) (err error) { - // NRE - err = c.client.Do("StopConfigurationRecorder", "POST", "/", req, nil) - return -} - -// Possible values for Config. -const ( - ChronologicalOrderForward = "Forward" - ChronologicalOrderReverse = "Reverse" -) - -// ConfigExportDeliveryInfo is undocumented. -type ConfigExportDeliveryInfo struct { - LastAttemptTime *aws.UnixTimestamp `json:"lastAttemptTime,omitempty"` - LastErrorCode aws.StringValue `json:"lastErrorCode,omitempty"` - LastErrorMessage aws.StringValue `json:"lastErrorMessage,omitempty"` - LastStatus aws.StringValue `json:"lastStatus,omitempty"` - LastSuccessfulTime *aws.UnixTimestamp `json:"lastSuccessfulTime,omitempty"` -} - -// ConfigStreamDeliveryInfo is undocumented. -type ConfigStreamDeliveryInfo struct { - LastErrorCode aws.StringValue `json:"lastErrorCode,omitempty"` - LastErrorMessage aws.StringValue `json:"lastErrorMessage,omitempty"` - LastStatus aws.StringValue `json:"lastStatus,omitempty"` - LastStatusChangeTime *aws.UnixTimestamp `json:"lastStatusChangeTime,omitempty"` -} - -// ConfigurationItem is undocumented. -type ConfigurationItem struct { - AccountID aws.StringValue `json:"accountId,omitempty"` - ARN aws.StringValue `json:"arn,omitempty"` - AvailabilityZone aws.StringValue `json:"availabilityZone,omitempty"` - Configuration aws.StringValue `json:"configuration,omitempty"` - ConfigurationItemCaptureTime *aws.UnixTimestamp `json:"configurationItemCaptureTime,omitempty"` - ConfigurationItemMD5Hash aws.StringValue `json:"configurationItemMD5Hash,omitempty"` - ConfigurationItemStatus aws.StringValue `json:"configurationItemStatus,omitempty"` - ConfigurationStateID aws.StringValue `json:"configurationStateId,omitempty"` - RelatedEvents []string `json:"relatedEvents,omitempty"` - Relationships []Relationship `json:"relationships,omitempty"` - ResourceCreationTime *aws.UnixTimestamp `json:"resourceCreationTime,omitempty"` - ResourceID aws.StringValue `json:"resourceId,omitempty"` - ResourceType aws.StringValue `json:"resourceType,omitempty"` - Tags map[string]string `json:"tags,omitempty"` - Version aws.StringValue `json:"version,omitempty"` -} - -// Possible values for Config. -const ( - ConfigurationItemStatusDeleted = "Deleted" - ConfigurationItemStatusDiscovered = "Discovered" - ConfigurationItemStatusFailed = "Failed" - ConfigurationItemStatusOK = "Ok" -) - -// ConfigurationRecorder is undocumented. -type ConfigurationRecorder struct { - Name aws.StringValue `json:"name,omitempty"` - RoleARN aws.StringValue `json:"roleARN,omitempty"` -} - -// ConfigurationRecorderStatus is undocumented. -type ConfigurationRecorderStatus struct { - LastErrorCode aws.StringValue `json:"lastErrorCode,omitempty"` - LastErrorMessage aws.StringValue `json:"lastErrorMessage,omitempty"` - LastStartTime *aws.UnixTimestamp `json:"lastStartTime,omitempty"` - LastStatus aws.StringValue `json:"lastStatus,omitempty"` - LastStatusChangeTime *aws.UnixTimestamp `json:"lastStatusChangeTime,omitempty"` - LastStopTime *aws.UnixTimestamp `json:"lastStopTime,omitempty"` - Name aws.StringValue `json:"name,omitempty"` - Recording aws.BooleanValue `json:"recording,omitempty"` -} - -// DeleteDeliveryChannelRequest is undocumented. -type DeleteDeliveryChannelRequest struct { - DeliveryChannelName aws.StringValue `json:"DeliveryChannelName"` -} - -// DeliverConfigSnapshotRequest is undocumented. -type DeliverConfigSnapshotRequest struct { - DeliveryChannelName aws.StringValue `json:"deliveryChannelName"` -} - -// DeliverConfigSnapshotResponse is undocumented. -type DeliverConfigSnapshotResponse struct { - ConfigSnapshotID aws.StringValue `json:"configSnapshotId,omitempty"` -} - -// DeliveryChannel is undocumented. -type DeliveryChannel struct { - Name aws.StringValue `json:"name,omitempty"` - S3BucketName aws.StringValue `json:"s3BucketName,omitempty"` - S3KeyPrefix aws.StringValue `json:"s3KeyPrefix,omitempty"` - SNSTopicARN aws.StringValue `json:"snsTopicARN,omitempty"` -} - -// DeliveryChannelStatus is undocumented. -type DeliveryChannelStatus struct { - ConfigHistoryDeliveryInfo *ConfigExportDeliveryInfo `json:"configHistoryDeliveryInfo,omitempty"` - ConfigSnapshotDeliveryInfo *ConfigExportDeliveryInfo `json:"configSnapshotDeliveryInfo,omitempty"` - ConfigStreamDeliveryInfo *ConfigStreamDeliveryInfo `json:"configStreamDeliveryInfo,omitempty"` - Name aws.StringValue `json:"name,omitempty"` -} - -// Possible values for Config. -const ( - DeliveryStatusFailure = "Failure" - DeliveryStatusSuccess = "Success" -) - -// DescribeConfigurationRecorderStatusRequest is undocumented. -type DescribeConfigurationRecorderStatusRequest struct { - ConfigurationRecorderNames []string `json:"ConfigurationRecorderNames,omitempty"` -} - -// DescribeConfigurationRecorderStatusResponse is undocumented. -type DescribeConfigurationRecorderStatusResponse struct { - ConfigurationRecordersStatus []ConfigurationRecorderStatus `json:"ConfigurationRecordersStatus,omitempty"` -} - -// DescribeConfigurationRecordersRequest is undocumented. -type DescribeConfigurationRecordersRequest struct { - ConfigurationRecorderNames []string `json:"ConfigurationRecorderNames,omitempty"` -} - -// DescribeConfigurationRecordersResponse is undocumented. -type DescribeConfigurationRecordersResponse struct { - ConfigurationRecorders []ConfigurationRecorder `json:"ConfigurationRecorders,omitempty"` -} - -// DescribeDeliveryChannelStatusRequest is undocumented. -type DescribeDeliveryChannelStatusRequest struct { - DeliveryChannelNames []string `json:"DeliveryChannelNames,omitempty"` -} - -// DescribeDeliveryChannelStatusResponse is undocumented. -type DescribeDeliveryChannelStatusResponse struct { - DeliveryChannelsStatus []DeliveryChannelStatus `json:"DeliveryChannelsStatus,omitempty"` -} - -// DescribeDeliveryChannelsRequest is undocumented. -type DescribeDeliveryChannelsRequest struct { - DeliveryChannelNames []string `json:"DeliveryChannelNames,omitempty"` -} - -// DescribeDeliveryChannelsResponse is undocumented. -type DescribeDeliveryChannelsResponse struct { - DeliveryChannels []DeliveryChannel `json:"DeliveryChannels,omitempty"` -} - -// GetResourceConfigHistoryRequest is undocumented. -type GetResourceConfigHistoryRequest struct { - ChronologicalOrder aws.StringValue `json:"chronologicalOrder,omitempty"` - EarlierTime *aws.UnixTimestamp `json:"earlierTime,omitempty"` - LaterTime *aws.UnixTimestamp `json:"laterTime,omitempty"` - Limit aws.IntegerValue `json:"limit,omitempty"` - NextToken aws.StringValue `json:"nextToken,omitempty"` - ResourceID aws.StringValue `json:"resourceId"` - ResourceType aws.StringValue `json:"resourceType"` -} - -// GetResourceConfigHistoryResponse is undocumented. -type GetResourceConfigHistoryResponse struct { - ConfigurationItems []ConfigurationItem `json:"configurationItems,omitempty"` - NextToken aws.StringValue `json:"nextToken,omitempty"` -} - -// PutConfigurationRecorderRequest is undocumented. -type PutConfigurationRecorderRequest struct { - ConfigurationRecorder *ConfigurationRecorder `json:"ConfigurationRecorder"` -} - -// PutDeliveryChannelRequest is undocumented. -type PutDeliveryChannelRequest struct { - DeliveryChannel *DeliveryChannel `json:"DeliveryChannel"` -} - -// Possible values for Config. -const ( - RecorderStatusFailure = "Failure" - RecorderStatusPending = "Pending" - RecorderStatusSuccess = "Success" -) - -// Relationship is undocumented. -type Relationship struct { - RelationshipName aws.StringValue `json:"relationshipName,omitempty"` - ResourceID aws.StringValue `json:"resourceId,omitempty"` - ResourceType aws.StringValue `json:"resourceType,omitempty"` -} - -// Possible values for Config. -const ( - ResourceTypeAWSCloudTrailTrail = "AWS::CloudTrail::Trail" - ResourceTypeAWSEC2CustomerGateway = "AWS::EC2::CustomerGateway" - ResourceTypeAWSEC2EIP = "AWS::EC2::EIP" - ResourceTypeAWSEC2Instance = "AWS::EC2::Instance" - ResourceTypeAWSEC2InternetGateway = "AWS::EC2::InternetGateway" - ResourceTypeAWSEC2NetworkACL = "AWS::EC2::NetworkAcl" - ResourceTypeAWSEC2NetworkInterface = "AWS::EC2::NetworkInterface" - ResourceTypeAWSEC2RouteTable = "AWS::EC2::RouteTable" - ResourceTypeAWSEC2SecurityGroup = "AWS::EC2::SecurityGroup" - ResourceTypeAWSEC2Subnet = "AWS::EC2::Subnet" - ResourceTypeAWSEC2VPC = "AWS::EC2::VPC" - ResourceTypeAWSEC2VPNconnection = "AWS::EC2::VPNConnection" - ResourceTypeAWSEC2VPNgateway = "AWS::EC2::VPNGateway" - ResourceTypeAWSEC2Volume = "AWS::EC2::Volume" -) - -// StartConfigurationRecorderRequest is undocumented. -type StartConfigurationRecorderRequest struct { - ConfigurationRecorderName aws.StringValue `json:"ConfigurationRecorderName"` -} - -// StopConfigurationRecorderRequest is undocumented. -type StopConfigurationRecorderRequest struct { - ConfigurationRecorderName aws.StringValue `json:"ConfigurationRecorderName"` -} - -// avoid errors if the packages aren't referenced -var _ time.Time diff --git a/src/github.com/getlantern/aws-sdk-go/gen/datapipeline/datapipeline.go b/src/github.com/getlantern/aws-sdk-go/gen/datapipeline/datapipeline.go deleted file mode 100644 index 1e4bfdf51a..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/gen/datapipeline/datapipeline.go +++ /dev/null @@ -1,534 +0,0 @@ -// THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. - -// Package datapipeline provides a client for AWS Data Pipeline. -package datapipeline - -import ( - "net/http" - "time" - - "github.com/awslabs/aws-sdk-go/aws" - "github.com/awslabs/aws-sdk-go/gen/endpoints" -) - -// DataPipeline is a client for AWS Data Pipeline. -type DataPipeline struct { - client *aws.JSONClient -} - -// New returns a new DataPipeline client. -func New(creds aws.CredentialsProvider, region string, client *http.Client) *DataPipeline { - if client == nil { - client = http.DefaultClient - } - - endpoint, service, region := endpoints.Lookup("datapipeline", region) - - return &DataPipeline{ - client: &aws.JSONClient{ - Context: aws.Context{ - Credentials: creds, - Service: service, - Region: region, - }, Client: client, - Endpoint: endpoint, - JSONVersion: "1.1", - TargetPrefix: "DataPipeline", - }, - } -} - -// ActivatePipeline validates a pipeline and initiates processing. If the -// pipeline does not pass validation, activation fails. You cannot perform -// this operation on pipelines and attempting to do so will return an -// InvalidRequestException. Call this action to start processing pipeline -// tasks of a pipeline you've created using the CreatePipeline and -// PutPipelineDefinition actions. A pipeline cannot be modified after it -// has been successfully activated. -func (c *DataPipeline) ActivatePipeline(req *ActivatePipelineInput) (resp *ActivatePipelineOutput, err error) { - resp = &ActivatePipelineOutput{} - err = c.client.Do("ActivatePipeline", "POST", "/", req, resp) - return -} - -// CreatePipeline creates a new empty pipeline. When this action succeeds, -// you can then use the PutPipelineDefinition action to populate the -// pipeline. -func (c *DataPipeline) CreatePipeline(req *CreatePipelineInput) (resp *CreatePipelineOutput, err error) { - resp = &CreatePipelineOutput{} - err = c.client.Do("CreatePipeline", "POST", "/", req, resp) - return -} - -// DeletePipeline permanently deletes a pipeline, its pipeline definition -// and its run history. You cannot query or restore a deleted pipeline. AWS -// Data Pipeline will attempt to cancel instances associated with the -// pipeline that are currently being processed by task runners. Deleting a -// pipeline cannot be undone. To temporarily pause a pipeline instead of -// deleting it, call SetStatus with the status set to Pause on individual -// components. Components that are paused by SetStatus can be resumed. -func (c *DataPipeline) DeletePipeline(req *DeletePipelineInput) (err error) { - // NRE - err = c.client.Do("DeletePipeline", "POST", "/", req, nil) - return -} - -// DescribeObjects returns the object definitions for a set of objects -// associated with the pipeline. Object definitions are composed of a set -// of fields that define the properties of the object. -func (c *DataPipeline) DescribeObjects(req *DescribeObjectsInput) (resp *DescribeObjectsOutput, err error) { - resp = &DescribeObjectsOutput{} - err = c.client.Do("DescribeObjects", "POST", "/", req, resp) - return -} - -// DescribePipelines retrieve metadata about one or more pipelines. The -// information retrieved includes the name of the pipeline, the pipeline -// identifier, its current state, and the user account that owns the -// pipeline. Using account credentials, you can retrieve metadata about -// pipelines that you or your IAM users have created. If you are using an -// IAM user account, you can retrieve metadata about only those pipelines -// you have read permission for. To retrieve the full pipeline definition -// instead of metadata about the pipeline, call the GetPipelineDefinition -// action. -func (c *DataPipeline) DescribePipelines(req *DescribePipelinesInput) (resp *DescribePipelinesOutput, err error) { - resp = &DescribePipelinesOutput{} - err = c.client.Do("DescribePipelines", "POST", "/", req, resp) - return -} - -// EvaluateExpression evaluates a string in the context of a specified -// object. A task runner can use this action to evaluate SQL queries stored -// in Amazon S3. -func (c *DataPipeline) EvaluateExpression(req *EvaluateExpressionInput) (resp *EvaluateExpressionOutput, err error) { - resp = &EvaluateExpressionOutput{} - err = c.client.Do("EvaluateExpression", "POST", "/", req, resp) - return -} - -// GetPipelineDefinition returns the definition of the specified pipeline. -// You can call GetPipelineDefinition to retrieve the pipeline definition -// you provided using PutPipelineDefinition -func (c *DataPipeline) GetPipelineDefinition(req *GetPipelineDefinitionInput) (resp *GetPipelineDefinitionOutput, err error) { - resp = &GetPipelineDefinitionOutput{} - err = c.client.Do("GetPipelineDefinition", "POST", "/", req, resp) - return -} - -// ListPipelines returns a list of pipeline identifiers for all active -// pipelines. Identifiers are returned only for pipelines you have -// permission to access. -func (c *DataPipeline) ListPipelines(req *ListPipelinesInput) (resp *ListPipelinesOutput, err error) { - resp = &ListPipelinesOutput{} - err = c.client.Do("ListPipelines", "POST", "/", req, resp) - return -} - -// PollForTask task runners call this action to receive a task to perform -// from AWS Data Pipeline. The task runner specifies which tasks it can -// perform by setting a value for the workerGroup parameter of the -// PollForTask call. The task returned by PollForTask may come from any of -// the pipelines that match the workerGroup value passed in by the task -// runner and that was launched using the IAM user credentials specified by -// the task runner. If tasks are ready in the work queue, PollForTask -// returns a response immediately. If no tasks are available in the queue, -// PollForTask uses long-polling and holds on to a poll connection for up -// to a 90 seconds during which time the first newly scheduled task is -// handed to the task runner. To accomodate this, set the socket timeout in -// your task runner to 90 seconds. The task runner should not call -// PollForTask again on the same workerGroup until it receives a response, -// and this may take up to 90 seconds. -func (c *DataPipeline) PollForTask(req *PollForTaskInput) (resp *PollForTaskOutput, err error) { - resp = &PollForTaskOutput{} - err = c.client.Do("PollForTask", "POST", "/", req, resp) - return -} - -// PutPipelineDefinition adds tasks, schedules, and preconditions that -// control the behavior of the pipeline. You can use PutPipelineDefinition -// to populate a new pipeline. PutPipelineDefinition also validates the -// configuration as it adds it to the pipeline. Changes to the pipeline are -// saved unless one of the following three validation errors exists in the -// pipeline. An object is missing a name or identifier field. A string or -// reference field is empty. The number of objects in the pipeline exceeds -// the maximum allowed objects. The pipeline is in a state. Pipeline object -// definitions are passed to the PutPipelineDefinition action and returned -// by the GetPipelineDefinition action. -func (c *DataPipeline) PutPipelineDefinition(req *PutPipelineDefinitionInput) (resp *PutPipelineDefinitionOutput, err error) { - resp = &PutPipelineDefinitionOutput{} - err = c.client.Do("PutPipelineDefinition", "POST", "/", req, resp) - return -} - -// QueryObjects queries a pipeline for the names of objects that match a -// specified set of conditions. The objects returned by QueryObjects are -// paginated and then filtered by the value you set for query. This means -// the action may return an empty result set with a value set for marker. -// If HasMoreResults is set to True , you should continue to call -// QueryObjects , passing in the returned value for marker, until -// HasMoreResults returns False -func (c *DataPipeline) QueryObjects(req *QueryObjectsInput) (resp *QueryObjectsOutput, err error) { - resp = &QueryObjectsOutput{} - err = c.client.Do("QueryObjects", "POST", "/", req, resp) - return -} - -// ReportTaskProgress updates the AWS Data Pipeline service on the progress -// of the calling task runner. When the task runner is assigned a task, it -// should call ReportTaskProgress to acknowledge that it has the task -// within 2 minutes. If the web service does not recieve this -// acknowledgement within the 2 minute window, it will assign the task in a -// subsequent PollForTask call. After this initial acknowledgement, the -// task runner only needs to report progress every 15 minutes to maintain -// its ownership of the task. You can change this reporting time from 15 -// minutes by specifying a reportProgressTimeout field in your pipeline. If -// a task runner does not report its status after 5 minutes, AWS Data -// Pipeline will assume that the task runner is unable to process the task -// and will reassign the task in a subsequent response to PollForTask . -// task runners should call ReportTaskProgress every 60 seconds. -func (c *DataPipeline) ReportTaskProgress(req *ReportTaskProgressInput) (resp *ReportTaskProgressOutput, err error) { - resp = &ReportTaskProgressOutput{} - err = c.client.Do("ReportTaskProgress", "POST", "/", req, resp) - return -} - -// ReportTaskRunnerHeartbeat task runners call ReportTaskRunnerHeartbeat -// every 15 minutes to indicate that they are operational. In the case of -// AWS Data Pipeline Task Runner launched on a resource managed by AWS Data -// Pipeline, the web service can use this call to detect when the task -// runner application has failed and restart a new instance. -func (c *DataPipeline) ReportTaskRunnerHeartbeat(req *ReportTaskRunnerHeartbeatInput) (resp *ReportTaskRunnerHeartbeatOutput, err error) { - resp = &ReportTaskRunnerHeartbeatOutput{} - err = c.client.Do("ReportTaskRunnerHeartbeat", "POST", "/", req, resp) - return -} - -// SetStatus requests that the status of an array of physical or logical -// pipeline objects be updated in the pipeline. This update may not occur -// immediately, but is eventually consistent. The status that can be set -// depends on the type of object, e.g. DataNode or Activity. You cannot -// perform this operation on pipelines and attempting to do so will return -// an InvalidRequestException. -func (c *DataPipeline) SetStatus(req *SetStatusInput) (err error) { - // NRE - err = c.client.Do("SetStatus", "POST", "/", req, nil) - return -} - -// SetTaskStatus notifies AWS Data Pipeline that a task is completed and -// provides information about the final status. The task runner calls this -// action regardless of whether the task was sucessful. The task runner -// does not need to call SetTaskStatus for tasks that are canceled by the -// web service during a call to ReportTaskProgress . -func (c *DataPipeline) SetTaskStatus(req *SetTaskStatusInput) (resp *SetTaskStatusOutput, err error) { - resp = &SetTaskStatusOutput{} - err = c.client.Do("SetTaskStatus", "POST", "/", req, resp) - return -} - -// ValidatePipelineDefinition tests the pipeline definition with a set of -// validation checks to ensure that it is well formed and can run without -// error. -func (c *DataPipeline) ValidatePipelineDefinition(req *ValidatePipelineDefinitionInput) (resp *ValidatePipelineDefinitionOutput, err error) { - resp = &ValidatePipelineDefinitionOutput{} - err = c.client.Do("ValidatePipelineDefinition", "POST", "/", req, resp) - return -} - -// ActivatePipelineInput is undocumented. -type ActivatePipelineInput struct { - ParameterValues []ParameterValue `json:"parameterValues,omitempty"` - PipelineID aws.StringValue `json:"pipelineId"` -} - -// ActivatePipelineOutput is undocumented. -type ActivatePipelineOutput struct { -} - -// CreatePipelineInput is undocumented. -type CreatePipelineInput struct { - Description aws.StringValue `json:"description,omitempty"` - Name aws.StringValue `json:"name"` - UniqueID aws.StringValue `json:"uniqueId"` -} - -// CreatePipelineOutput is undocumented. -type CreatePipelineOutput struct { - PipelineID aws.StringValue `json:"pipelineId"` -} - -// DeletePipelineInput is undocumented. -type DeletePipelineInput struct { - PipelineID aws.StringValue `json:"pipelineId"` -} - -// DescribeObjectsInput is undocumented. -type DescribeObjectsInput struct { - EvaluateExpressions aws.BooleanValue `json:"evaluateExpressions,omitempty"` - Marker aws.StringValue `json:"marker,omitempty"` - ObjectIDs []string `json:"objectIds"` - PipelineID aws.StringValue `json:"pipelineId"` -} - -// DescribeObjectsOutput is undocumented. -type DescribeObjectsOutput struct { - HasMoreResults aws.BooleanValue `json:"hasMoreResults,omitempty"` - Marker aws.StringValue `json:"marker,omitempty"` - PipelineObjects []PipelineObject `json:"pipelineObjects"` -} - -// DescribePipelinesInput is undocumented. -type DescribePipelinesInput struct { - PipelineIDs []string `json:"pipelineIds"` -} - -// DescribePipelinesOutput is undocumented. -type DescribePipelinesOutput struct { - PipelineDescriptionList []PipelineDescription `json:"pipelineDescriptionList"` -} - -// EvaluateExpressionInput is undocumented. -type EvaluateExpressionInput struct { - Expression aws.StringValue `json:"expression"` - ObjectID aws.StringValue `json:"objectId"` - PipelineID aws.StringValue `json:"pipelineId"` -} - -// EvaluateExpressionOutput is undocumented. -type EvaluateExpressionOutput struct { - EvaluatedExpression aws.StringValue `json:"evaluatedExpression"` -} - -// Field is undocumented. -type Field struct { - Key aws.StringValue `json:"key"` - RefValue aws.StringValue `json:"refValue,omitempty"` - StringValue aws.StringValue `json:"stringValue,omitempty"` -} - -// GetPipelineDefinitionInput is undocumented. -type GetPipelineDefinitionInput struct { - PipelineID aws.StringValue `json:"pipelineId"` - Version aws.StringValue `json:"version,omitempty"` -} - -// GetPipelineDefinitionOutput is undocumented. -type GetPipelineDefinitionOutput struct { - ParameterObjects []ParameterObject `json:"parameterObjects,omitempty"` - ParameterValues []ParameterValue `json:"parameterValues,omitempty"` - PipelineObjects []PipelineObject `json:"pipelineObjects,omitempty"` -} - -// InstanceIdentity is undocumented. -type InstanceIdentity struct { - Document aws.StringValue `json:"document,omitempty"` - Signature aws.StringValue `json:"signature,omitempty"` -} - -// ListPipelinesInput is undocumented. -type ListPipelinesInput struct { - Marker aws.StringValue `json:"marker,omitempty"` -} - -// ListPipelinesOutput is undocumented. -type ListPipelinesOutput struct { - HasMoreResults aws.BooleanValue `json:"hasMoreResults,omitempty"` - Marker aws.StringValue `json:"marker,omitempty"` - PipelineIDList []PipelineIDName `json:"pipelineIdList"` -} - -// Operator is undocumented. -type Operator struct { - Type aws.StringValue `json:"type,omitempty"` - Values []string `json:"values,omitempty"` -} - -// Possible values for DataPipeline. -const ( - OperatorTypeBetween = "BETWEEN" - OperatorTypeEq = "EQ" - OperatorTypeGe = "GE" - OperatorTypeLe = "LE" - OperatorTypeRefEq = "REF_EQ" -) - -// ParameterAttribute is undocumented. -type ParameterAttribute struct { - Key aws.StringValue `json:"key"` - StringValue aws.StringValue `json:"stringValue"` -} - -// ParameterObject is undocumented. -type ParameterObject struct { - Attributes []ParameterAttribute `json:"attributes"` - ID aws.StringValue `json:"id"` -} - -// ParameterValue is undocumented. -type ParameterValue struct { - ID aws.StringValue `json:"id"` - StringValue aws.StringValue `json:"stringValue"` -} - -// PipelineDescription is undocumented. -type PipelineDescription struct { - Description aws.StringValue `json:"description,omitempty"` - Fields []Field `json:"fields"` - Name aws.StringValue `json:"name"` - PipelineID aws.StringValue `json:"pipelineId"` -} - -// PipelineIDName is undocumented. -type PipelineIDName struct { - ID aws.StringValue `json:"id,omitempty"` - Name aws.StringValue `json:"name,omitempty"` -} - -// PipelineObject is undocumented. -type PipelineObject struct { - Fields []Field `json:"fields"` - ID aws.StringValue `json:"id"` - Name aws.StringValue `json:"name"` -} - -// PollForTaskInput is undocumented. -type PollForTaskInput struct { - Hostname aws.StringValue `json:"hostname,omitempty"` - InstanceIdentity *InstanceIdentity `json:"instanceIdentity,omitempty"` - WorkerGroup aws.StringValue `json:"workerGroup"` -} - -// PollForTaskOutput is undocumented. -type PollForTaskOutput struct { - TaskObject *TaskObject `json:"taskObject,omitempty"` -} - -// PutPipelineDefinitionInput is undocumented. -type PutPipelineDefinitionInput struct { - ParameterObjects []ParameterObject `json:"parameterObjects,omitempty"` - ParameterValues []ParameterValue `json:"parameterValues,omitempty"` - PipelineID aws.StringValue `json:"pipelineId"` - PipelineObjects []PipelineObject `json:"pipelineObjects"` -} - -// PutPipelineDefinitionOutput is undocumented. -type PutPipelineDefinitionOutput struct { - Errored aws.BooleanValue `json:"errored"` - ValidationErrors []ValidationError `json:"validationErrors,omitempty"` - ValidationWarnings []ValidationWarning `json:"validationWarnings,omitempty"` -} - -// Query is undocumented. -type Query struct { - Selectors []Selector `json:"selectors,omitempty"` -} - -// QueryObjectsInput is undocumented. -type QueryObjectsInput struct { - Limit aws.IntegerValue `json:"limit,omitempty"` - Marker aws.StringValue `json:"marker,omitempty"` - PipelineID aws.StringValue `json:"pipelineId"` - Query *Query `json:"query,omitempty"` - Sphere aws.StringValue `json:"sphere"` -} - -// QueryObjectsOutput is undocumented. -type QueryObjectsOutput struct { - HasMoreResults aws.BooleanValue `json:"hasMoreResults,omitempty"` - IDs []string `json:"ids,omitempty"` - Marker aws.StringValue `json:"marker,omitempty"` -} - -// ReportTaskProgressInput is undocumented. -type ReportTaskProgressInput struct { - Fields []Field `json:"fields,omitempty"` - TaskID aws.StringValue `json:"taskId"` -} - -// ReportTaskProgressOutput is undocumented. -type ReportTaskProgressOutput struct { - Canceled aws.BooleanValue `json:"canceled"` -} - -// ReportTaskRunnerHeartbeatInput is undocumented. -type ReportTaskRunnerHeartbeatInput struct { - Hostname aws.StringValue `json:"hostname,omitempty"` - TaskrunnerID aws.StringValue `json:"taskrunnerId"` - WorkerGroup aws.StringValue `json:"workerGroup,omitempty"` -} - -// ReportTaskRunnerHeartbeatOutput is undocumented. -type ReportTaskRunnerHeartbeatOutput struct { - Terminate aws.BooleanValue `json:"terminate"` -} - -// Selector is undocumented. -type Selector struct { - FieldName aws.StringValue `json:"fieldName,omitempty"` - Operator *Operator `json:"operator,omitempty"` -} - -// SetStatusInput is undocumented. -type SetStatusInput struct { - ObjectIDs []string `json:"objectIds"` - PipelineID aws.StringValue `json:"pipelineId"` - Status aws.StringValue `json:"status"` -} - -// SetTaskStatusInput is undocumented. -type SetTaskStatusInput struct { - ErrorID aws.StringValue `json:"errorId,omitempty"` - ErrorMessage aws.StringValue `json:"errorMessage,omitempty"` - ErrorStackTrace aws.StringValue `json:"errorStackTrace,omitempty"` - TaskID aws.StringValue `json:"taskId"` - TaskStatus aws.StringValue `json:"taskStatus"` -} - -// SetTaskStatusOutput is undocumented. -type SetTaskStatusOutput struct { -} - -// TaskObject is undocumented. -type TaskObject struct { - AttemptID aws.StringValue `json:"attemptId,omitempty"` - Objects map[string]PipelineObject `json:"objects,omitempty"` - PipelineID aws.StringValue `json:"pipelineId,omitempty"` - TaskID aws.StringValue `json:"taskId,omitempty"` -} - -// Possible values for DataPipeline. -const ( - TaskStatusFailed = "FAILED" - TaskStatusFalse = "FALSE" - TaskStatusFinished = "FINISHED" -) - -// ValidatePipelineDefinitionInput is undocumented. -type ValidatePipelineDefinitionInput struct { - ParameterObjects []ParameterObject `json:"parameterObjects,omitempty"` - ParameterValues []ParameterValue `json:"parameterValues,omitempty"` - PipelineID aws.StringValue `json:"pipelineId"` - PipelineObjects []PipelineObject `json:"pipelineObjects"` -} - -// ValidatePipelineDefinitionOutput is undocumented. -type ValidatePipelineDefinitionOutput struct { - Errored aws.BooleanValue `json:"errored"` - ValidationErrors []ValidationError `json:"validationErrors,omitempty"` - ValidationWarnings []ValidationWarning `json:"validationWarnings,omitempty"` -} - -// ValidationError is undocumented. -type ValidationError struct { - Errors []string `json:"errors,omitempty"` - ID aws.StringValue `json:"id,omitempty"` -} - -// ValidationWarning is undocumented. -type ValidationWarning struct { - ID aws.StringValue `json:"id,omitempty"` - Warnings []string `json:"warnings,omitempty"` -} - -// avoid errors if the packages aren't referenced -var _ time.Time diff --git a/src/github.com/getlantern/aws-sdk-go/gen/directconnect/directconnect.go b/src/github.com/getlantern/aws-sdk-go/gen/directconnect/directconnect.go deleted file mode 100644 index 2457ce2dcb..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/gen/directconnect/directconnect.go +++ /dev/null @@ -1,540 +0,0 @@ -// THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. - -// Package directconnect provides a client for AWS Direct Connect. -package directconnect - -import ( - "net/http" - "time" - - "github.com/awslabs/aws-sdk-go/aws" - "github.com/awslabs/aws-sdk-go/gen/endpoints" -) - -// DirectConnect is a client for AWS Direct Connect. -type DirectConnect struct { - client *aws.JSONClient -} - -// New returns a new DirectConnect client. -func New(creds aws.CredentialsProvider, region string, client *http.Client) *DirectConnect { - if client == nil { - client = http.DefaultClient - } - - endpoint, service, region := endpoints.Lookup("directconnect", region) - - return &DirectConnect{ - client: &aws.JSONClient{ - Context: aws.Context{ - Credentials: creds, - Service: service, - Region: region, - }, Client: client, - Endpoint: endpoint, - JSONVersion: "1.1", - TargetPrefix: "OvertureService", - }, - } -} - -// AllocateConnectionOnInterconnect creates a hosted connection on an -// interconnect. Allocates a number and a specified amount of bandwidth for -// use by a hosted connection on the given interconnect. -func (c *DirectConnect) AllocateConnectionOnInterconnect(req *AllocateConnectionOnInterconnectRequest) (resp *Connection, err error) { - resp = &Connection{} - err = c.client.Do("AllocateConnectionOnInterconnect", "POST", "/", req, resp) - return -} - -// AllocatePrivateVirtualInterface provisions a private virtual interface -// to be owned by a different customer. The owner of a connection calls -// this function to provision a private virtual interface which will be -// owned by another AWS customer. Virtual interfaces created using this -// function must be confirmed by the virtual interface owner by calling -// ConfirmPrivateVirtualInterface. Until this step has been completed, the -// virtual interface will be in 'Confirming' state, and will not be -// available for handling traffic. -func (c *DirectConnect) AllocatePrivateVirtualInterface(req *AllocatePrivateVirtualInterfaceRequest) (resp *VirtualInterface, err error) { - resp = &VirtualInterface{} - err = c.client.Do("AllocatePrivateVirtualInterface", "POST", "/", req, resp) - return -} - -// AllocatePublicVirtualInterface provisions a public virtual interface to -// be owned by a different customer. The owner of a connection calls this -// function to provision a public virtual interface which will be owned by -// another AWS customer. Virtual interfaces created using this function -// must be confirmed by the virtual interface owner by calling -// ConfirmPublicVirtualInterface. Until this step has been completed, the -// virtual interface will be in 'Confirming' state, and will not be -// available for handling traffic. -func (c *DirectConnect) AllocatePublicVirtualInterface(req *AllocatePublicVirtualInterfaceRequest) (resp *VirtualInterface, err error) { - resp = &VirtualInterface{} - err = c.client.Do("AllocatePublicVirtualInterface", "POST", "/", req, resp) - return -} - -// ConfirmConnection confirm the creation of a hosted connection on an -// interconnect. Upon creation, the hosted connection is initially in the -// 'Ordering' state, and will remain in this state until the owner calls -// ConfirmConnection to confirm creation of the hosted connection. -func (c *DirectConnect) ConfirmConnection(req *ConfirmConnectionRequest) (resp *ConfirmConnectionResponse, err error) { - resp = &ConfirmConnectionResponse{} - err = c.client.Do("ConfirmConnection", "POST", "/", req, resp) - return -} - -// ConfirmPrivateVirtualInterface accept ownership of a private virtual -// interface created by another customer. After the virtual interface owner -// calls this function, the virtual interface will be created and attached -// to the given virtual private gateway, and will be available for handling -// traffic. -func (c *DirectConnect) ConfirmPrivateVirtualInterface(req *ConfirmPrivateVirtualInterfaceRequest) (resp *ConfirmPrivateVirtualInterfaceResponse, err error) { - resp = &ConfirmPrivateVirtualInterfaceResponse{} - err = c.client.Do("ConfirmPrivateVirtualInterface", "POST", "/", req, resp) - return -} - -// ConfirmPublicVirtualInterface accept ownership of a public virtual -// interface created by another customer. After the virtual interface owner -// calls this function, the specified virtual interface will be created and -// made available for handling traffic. -func (c *DirectConnect) ConfirmPublicVirtualInterface(req *ConfirmPublicVirtualInterfaceRequest) (resp *ConfirmPublicVirtualInterfaceResponse, err error) { - resp = &ConfirmPublicVirtualInterfaceResponse{} - err = c.client.Do("ConfirmPublicVirtualInterface", "POST", "/", req, resp) - return -} - -// CreateConnection creates a new connection between the customer network -// and a specific AWS Direct Connect location. A connection links your -// internal network to an AWS Direct Connect location over a standard 1 -// gigabit or 10 gigabit Ethernet fiber-optic cable. One end of the cable -// is connected to your router, the other to an AWS Direct Connect router. -// An AWS Direct Connect location provides access to Amazon Web Services in -// the region it is associated with. You can establish connections with AWS -// Direct Connect locations in multiple regions, but a connection in one -// region does not provide connectivity to other regions. -func (c *DirectConnect) CreateConnection(req *CreateConnectionRequest) (resp *Connection, err error) { - resp = &Connection{} - err = c.client.Do("CreateConnection", "POST", "/", req, resp) - return -} - -// CreateInterconnect creates a new interconnect between a AWS Direct -// Connect partner's network and a specific AWS Direct Connect location. An -// interconnect is a connection which is capable of hosting other -// connections. The AWS Direct Connect partner can use an interconnect to -// provide sub-1Gbps AWS Direct Connect service to tier 2 customers who do -// not have their own connections. Like a standard connection, an -// interconnect links the AWS Direct Connect partner's network to an AWS -// Direct Connect location over a standard 1 Gbps or 10 Gbps Ethernet -// fiber-optic cable. One end is connected to the partner's router, the -// other to an AWS Direct Connect router. For each end customer, the AWS -// Direct Connect partner provisions a connection on their interconnect by -// calling AllocateConnectionOnInterconnect. The end customer can then -// connect to AWS resources by creating a virtual interface on their -// connection, using the assigned to them by the AWS Direct Connect -// partner. -func (c *DirectConnect) CreateInterconnect(req *CreateInterconnectRequest) (resp *Interconnect, err error) { - resp = &Interconnect{} - err = c.client.Do("CreateInterconnect", "POST", "/", req, resp) - return -} - -// CreatePrivateVirtualInterface creates a new private virtual interface. A -// virtual interface is the that transports AWS Direct Connect traffic. A -// private virtual interface supports sending traffic to a single virtual -// private cloud -func (c *DirectConnect) CreatePrivateVirtualInterface(req *CreatePrivateVirtualInterfaceRequest) (resp *VirtualInterface, err error) { - resp = &VirtualInterface{} - err = c.client.Do("CreatePrivateVirtualInterface", "POST", "/", req, resp) - return -} - -// CreatePublicVirtualInterface creates a new public virtual interface. A -// virtual interface is the that transports AWS Direct Connect traffic. A -// public virtual interface supports sending traffic to public services of -// AWS such as Amazon Simple Storage Service (Amazon S3). -func (c *DirectConnect) CreatePublicVirtualInterface(req *CreatePublicVirtualInterfaceRequest) (resp *VirtualInterface, err error) { - resp = &VirtualInterface{} - err = c.client.Do("CreatePublicVirtualInterface", "POST", "/", req, resp) - return -} - -// DeleteConnection deletes the connection. Deleting a connection only -// stops the AWS Direct Connect port hour and data transfer charges. You -// need to cancel separately with the providers any services or charges for -// cross-connects or network circuits that connect you to the AWS Direct -// Connect location. -func (c *DirectConnect) DeleteConnection(req *DeleteConnectionRequest) (resp *Connection, err error) { - resp = &Connection{} - err = c.client.Do("DeleteConnection", "POST", "/", req, resp) - return -} - -// DeleteInterconnect is undocumented. -func (c *DirectConnect) DeleteInterconnect(req *DeleteInterconnectRequest) (resp *DeleteInterconnectResponse, err error) { - resp = &DeleteInterconnectResponse{} - err = c.client.Do("DeleteInterconnect", "POST", "/", req, resp) - return -} - -// DeleteVirtualInterface is undocumented. -func (c *DirectConnect) DeleteVirtualInterface(req *DeleteVirtualInterfaceRequest) (resp *DeleteVirtualInterfaceResponse, err error) { - resp = &DeleteVirtualInterfaceResponse{} - err = c.client.Do("DeleteVirtualInterface", "POST", "/", req, resp) - return -} - -// DescribeConnections displays all connections in this region. If a -// connection ID is provided, the call returns only that particular -// connection. -func (c *DirectConnect) DescribeConnections(req *DescribeConnectionsRequest) (resp *Connections, err error) { - resp = &Connections{} - err = c.client.Do("DescribeConnections", "POST", "/", req, resp) - return -} - -// DescribeConnectionsOnInterconnect return a list of connections that have -// been provisioned on the given interconnect. -func (c *DirectConnect) DescribeConnectionsOnInterconnect(req *DescribeConnectionsOnInterconnectRequest) (resp *Connections, err error) { - resp = &Connections{} - err = c.client.Do("DescribeConnectionsOnInterconnect", "POST", "/", req, resp) - return -} - -// DescribeInterconnects returns a list of interconnects owned by the AWS -// account. If an interconnect ID is provided, it will only return this -// particular interconnect. -func (c *DirectConnect) DescribeInterconnects(req *DescribeInterconnectsRequest) (resp *Interconnects, err error) { - resp = &Interconnects{} - err = c.client.Do("DescribeInterconnects", "POST", "/", req, resp) - return -} - -// DescribeLocations returns the list of AWS Direct Connect locations in -// the current AWS region. These are the locations that may be selected -// when calling CreateConnection or CreateInterconnect. -func (c *DirectConnect) DescribeLocations() (resp *Locations, err error) { - resp = &Locations{} - err = c.client.Do("DescribeLocations", "POST", "/", nil, resp) - return -} - -// DescribeVirtualGateways returns a list of virtual private gateways owned -// by the AWS account. You can create one or more AWS Direct Connect -// private virtual interfaces linking to a virtual private gateway. A -// virtual private gateway can be managed via Amazon Virtual Private Cloud -// console or the EC2 CreateVpnGateway action. -func (c *DirectConnect) DescribeVirtualGateways() (resp *VirtualGateways, err error) { - resp = &VirtualGateways{} - err = c.client.Do("DescribeVirtualGateways", "POST", "/", nil, resp) - return -} - -// DescribeVirtualInterfaces displays all virtual interfaces for an AWS -// account. Virtual interfaces deleted fewer than 15 minutes before -// DescribeVirtualInterfaces is called are also returned. If a connection -// ID is included then only virtual interfaces associated with this -// connection will be returned. If a virtual interface ID is included then -// only a single virtual interface will be returned. A virtual interface -// transmits the traffic between the AWS Direct Connect location and the -// customer. If a connection ID is provided, only virtual interfaces -// provisioned on the specified connection will be returned. If a virtual -// interface ID is provided, only this particular virtual interface will be -// returned. -func (c *DirectConnect) DescribeVirtualInterfaces(req *DescribeVirtualInterfacesRequest) (resp *VirtualInterfaces, err error) { - resp = &VirtualInterfaces{} - err = c.client.Do("DescribeVirtualInterfaces", "POST", "/", req, resp) - return -} - -// AllocateConnectionOnInterconnectRequest is undocumented. -type AllocateConnectionOnInterconnectRequest struct { - Bandwidth aws.StringValue `json:"bandwidth"` - ConnectionName aws.StringValue `json:"connectionName"` - InterconnectID aws.StringValue `json:"interconnectId"` - OwnerAccount aws.StringValue `json:"ownerAccount"` - VLAN aws.IntegerValue `json:"vlan"` -} - -// AllocatePrivateVirtualInterfaceRequest is undocumented. -type AllocatePrivateVirtualInterfaceRequest struct { - ConnectionID aws.StringValue `json:"connectionId"` - NewPrivateVirtualInterfaceAllocation *NewPrivateVirtualInterfaceAllocation `json:"newPrivateVirtualInterfaceAllocation"` - OwnerAccount aws.StringValue `json:"ownerAccount"` -} - -// AllocatePublicVirtualInterfaceRequest is undocumented. -type AllocatePublicVirtualInterfaceRequest struct { - ConnectionID aws.StringValue `json:"connectionId"` - NewPublicVirtualInterfaceAllocation *NewPublicVirtualInterfaceAllocation `json:"newPublicVirtualInterfaceAllocation"` - OwnerAccount aws.StringValue `json:"ownerAccount"` -} - -// ConfirmConnectionRequest is undocumented. -type ConfirmConnectionRequest struct { - ConnectionID aws.StringValue `json:"connectionId"` -} - -// ConfirmConnectionResponse is undocumented. -type ConfirmConnectionResponse struct { - ConnectionState aws.StringValue `json:"connectionState,omitempty"` -} - -// ConfirmPrivateVirtualInterfaceRequest is undocumented. -type ConfirmPrivateVirtualInterfaceRequest struct { - VirtualGatewayID aws.StringValue `json:"virtualGatewayId"` - VirtualInterfaceID aws.StringValue `json:"virtualInterfaceId"` -} - -// ConfirmPrivateVirtualInterfaceResponse is undocumented. -type ConfirmPrivateVirtualInterfaceResponse struct { - VirtualInterfaceState aws.StringValue `json:"virtualInterfaceState,omitempty"` -} - -// ConfirmPublicVirtualInterfaceRequest is undocumented. -type ConfirmPublicVirtualInterfaceRequest struct { - VirtualInterfaceID aws.StringValue `json:"virtualInterfaceId"` -} - -// ConfirmPublicVirtualInterfaceResponse is undocumented. -type ConfirmPublicVirtualInterfaceResponse struct { - VirtualInterfaceState aws.StringValue `json:"virtualInterfaceState,omitempty"` -} - -// Connection is undocumented. -type Connection struct { - Bandwidth aws.StringValue `json:"bandwidth,omitempty"` - ConnectionID aws.StringValue `json:"connectionId,omitempty"` - ConnectionName aws.StringValue `json:"connectionName,omitempty"` - ConnectionState aws.StringValue `json:"connectionState,omitempty"` - Location aws.StringValue `json:"location,omitempty"` - OwnerAccount aws.StringValue `json:"ownerAccount,omitempty"` - PartnerName aws.StringValue `json:"partnerName,omitempty"` - Region aws.StringValue `json:"region,omitempty"` - VLAN aws.IntegerValue `json:"vlan,omitempty"` -} - -// Possible values for DirectConnect. -const ( - ConnectionStateAvailable = "available" - ConnectionStateDeleted = "deleted" - ConnectionStateDeleting = "deleting" - ConnectionStateDown = "down" - ConnectionStateOrdering = "ordering" - ConnectionStatePending = "pending" - ConnectionStateRejected = "rejected" - ConnectionStateRequested = "requested" -) - -// Connections is undocumented. -type Connections struct { - Connections []Connection `json:"connections,omitempty"` -} - -// CreateConnectionRequest is undocumented. -type CreateConnectionRequest struct { - Bandwidth aws.StringValue `json:"bandwidth"` - ConnectionName aws.StringValue `json:"connectionName"` - Location aws.StringValue `json:"location"` -} - -// CreateInterconnectRequest is undocumented. -type CreateInterconnectRequest struct { - Bandwidth aws.StringValue `json:"bandwidth"` - InterconnectName aws.StringValue `json:"interconnectName"` - Location aws.StringValue `json:"location"` -} - -// CreatePrivateVirtualInterfaceRequest is undocumented. -type CreatePrivateVirtualInterfaceRequest struct { - ConnectionID aws.StringValue `json:"connectionId"` - NewPrivateVirtualInterface *NewPrivateVirtualInterface `json:"newPrivateVirtualInterface"` -} - -// CreatePublicVirtualInterfaceRequest is undocumented. -type CreatePublicVirtualInterfaceRequest struct { - ConnectionID aws.StringValue `json:"connectionId"` - NewPublicVirtualInterface *NewPublicVirtualInterface `json:"newPublicVirtualInterface"` -} - -// DeleteConnectionRequest is undocumented. -type DeleteConnectionRequest struct { - ConnectionID aws.StringValue `json:"connectionId"` -} - -// DeleteInterconnectRequest is undocumented. -type DeleteInterconnectRequest struct { - InterconnectID aws.StringValue `json:"interconnectId"` -} - -// DeleteInterconnectResponse is undocumented. -type DeleteInterconnectResponse struct { - InterconnectState aws.StringValue `json:"interconnectState,omitempty"` -} - -// DeleteVirtualInterfaceRequest is undocumented. -type DeleteVirtualInterfaceRequest struct { - VirtualInterfaceID aws.StringValue `json:"virtualInterfaceId"` -} - -// DeleteVirtualInterfaceResponse is undocumented. -type DeleteVirtualInterfaceResponse struct { - VirtualInterfaceState aws.StringValue `json:"virtualInterfaceState,omitempty"` -} - -// DescribeConnectionsOnInterconnectRequest is undocumented. -type DescribeConnectionsOnInterconnectRequest struct { - InterconnectID aws.StringValue `json:"interconnectId"` -} - -// DescribeConnectionsRequest is undocumented. -type DescribeConnectionsRequest struct { - ConnectionID aws.StringValue `json:"connectionId,omitempty"` -} - -// DescribeInterconnectsRequest is undocumented. -type DescribeInterconnectsRequest struct { - InterconnectID aws.StringValue `json:"interconnectId,omitempty"` -} - -// DescribeVirtualInterfacesRequest is undocumented. -type DescribeVirtualInterfacesRequest struct { - ConnectionID aws.StringValue `json:"connectionId,omitempty"` - VirtualInterfaceID aws.StringValue `json:"virtualInterfaceId,omitempty"` -} - -// Interconnect is undocumented. -type Interconnect struct { - Bandwidth aws.StringValue `json:"bandwidth,omitempty"` - InterconnectID aws.StringValue `json:"interconnectId,omitempty"` - InterconnectName aws.StringValue `json:"interconnectName,omitempty"` - InterconnectState aws.StringValue `json:"interconnectState,omitempty"` - Location aws.StringValue `json:"location,omitempty"` - Region aws.StringValue `json:"region,omitempty"` -} - -// Possible values for DirectConnect. -const ( - InterconnectStateAvailable = "available" - InterconnectStateDeleted = "deleted" - InterconnectStateDeleting = "deleting" - InterconnectStateDown = "down" - InterconnectStatePending = "pending" - InterconnectStateRequested = "requested" -) - -// Interconnects is undocumented. -type Interconnects struct { - Interconnects []Interconnect `json:"interconnects,omitempty"` -} - -// Location is undocumented. -type Location struct { - LocationCode aws.StringValue `json:"locationCode,omitempty"` - LocationName aws.StringValue `json:"locationName,omitempty"` -} - -// Locations is undocumented. -type Locations struct { - Locations []Location `json:"locations,omitempty"` -} - -// NewPrivateVirtualInterface is undocumented. -type NewPrivateVirtualInterface struct { - AmazonAddress aws.StringValue `json:"amazonAddress,omitempty"` - ASN aws.IntegerValue `json:"asn"` - AuthKey aws.StringValue `json:"authKey,omitempty"` - CustomerAddress aws.StringValue `json:"customerAddress,omitempty"` - VirtualGatewayID aws.StringValue `json:"virtualGatewayId"` - VirtualInterfaceName aws.StringValue `json:"virtualInterfaceName"` - VLAN aws.IntegerValue `json:"vlan"` -} - -// NewPrivateVirtualInterfaceAllocation is undocumented. -type NewPrivateVirtualInterfaceAllocation struct { - AmazonAddress aws.StringValue `json:"amazonAddress,omitempty"` - ASN aws.IntegerValue `json:"asn"` - AuthKey aws.StringValue `json:"authKey,omitempty"` - CustomerAddress aws.StringValue `json:"customerAddress,omitempty"` - VirtualInterfaceName aws.StringValue `json:"virtualInterfaceName"` - VLAN aws.IntegerValue `json:"vlan"` -} - -// NewPublicVirtualInterface is undocumented. -type NewPublicVirtualInterface struct { - AmazonAddress aws.StringValue `json:"amazonAddress"` - ASN aws.IntegerValue `json:"asn"` - AuthKey aws.StringValue `json:"authKey,omitempty"` - CustomerAddress aws.StringValue `json:"customerAddress"` - RouteFilterPrefixes []RouteFilterPrefix `json:"routeFilterPrefixes"` - VirtualInterfaceName aws.StringValue `json:"virtualInterfaceName"` - VLAN aws.IntegerValue `json:"vlan"` -} - -// NewPublicVirtualInterfaceAllocation is undocumented. -type NewPublicVirtualInterfaceAllocation struct { - AmazonAddress aws.StringValue `json:"amazonAddress"` - ASN aws.IntegerValue `json:"asn"` - AuthKey aws.StringValue `json:"authKey,omitempty"` - CustomerAddress aws.StringValue `json:"customerAddress"` - RouteFilterPrefixes []RouteFilterPrefix `json:"routeFilterPrefixes"` - VirtualInterfaceName aws.StringValue `json:"virtualInterfaceName"` - VLAN aws.IntegerValue `json:"vlan"` -} - -// RouteFilterPrefix is undocumented. -type RouteFilterPrefix struct { - CIDR aws.StringValue `json:"cidr,omitempty"` -} - -// VirtualGateway is undocumented. -type VirtualGateway struct { - VirtualGatewayID aws.StringValue `json:"virtualGatewayId,omitempty"` - VirtualGatewayState aws.StringValue `json:"virtualGatewayState,omitempty"` -} - -// VirtualGateways is undocumented. -type VirtualGateways struct { - VirtualGateways []VirtualGateway `json:"virtualGateways,omitempty"` -} - -// VirtualInterface is undocumented. -type VirtualInterface struct { - AmazonAddress aws.StringValue `json:"amazonAddress,omitempty"` - ASN aws.IntegerValue `json:"asn,omitempty"` - AuthKey aws.StringValue `json:"authKey,omitempty"` - ConnectionID aws.StringValue `json:"connectionId,omitempty"` - CustomerAddress aws.StringValue `json:"customerAddress,omitempty"` - CustomerRouterConfig aws.StringValue `json:"customerRouterConfig,omitempty"` - Location aws.StringValue `json:"location,omitempty"` - OwnerAccount aws.StringValue `json:"ownerAccount,omitempty"` - RouteFilterPrefixes []RouteFilterPrefix `json:"routeFilterPrefixes,omitempty"` - VirtualGatewayID aws.StringValue `json:"virtualGatewayId,omitempty"` - VirtualInterfaceID aws.StringValue `json:"virtualInterfaceId,omitempty"` - VirtualInterfaceName aws.StringValue `json:"virtualInterfaceName,omitempty"` - VirtualInterfaceState aws.StringValue `json:"virtualInterfaceState,omitempty"` - VirtualInterfaceType aws.StringValue `json:"virtualInterfaceType,omitempty"` - VLAN aws.IntegerValue `json:"vlan,omitempty"` -} - -// Possible values for DirectConnect. -const ( - VirtualInterfaceStateAvailable = "available" - VirtualInterfaceStateConfirming = "confirming" - VirtualInterfaceStateDeleted = "deleted" - VirtualInterfaceStateDeleting = "deleting" - VirtualInterfaceStatePending = "pending" - VirtualInterfaceStateRejected = "rejected" - VirtualInterfaceStateVerifying = "verifying" -) - -// VirtualInterfaces is undocumented. -type VirtualInterfaces struct { - VirtualInterfaces []VirtualInterface `json:"virtualInterfaces,omitempty"` -} - -// avoid errors if the packages aren't referenced -var _ time.Time diff --git a/src/github.com/getlantern/aws-sdk-go/gen/dynamodb/dynamodb.go b/src/github.com/getlantern/aws-sdk-go/gen/dynamodb/dynamodb.go deleted file mode 100644 index e07782087f..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/gen/dynamodb/dynamodb.go +++ /dev/null @@ -1,813 +0,0 @@ -// THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. - -// Package dynamodb provides a client for Amazon DynamoDB. -package dynamodb - -import ( - "net/http" - "time" - - "github.com/awslabs/aws-sdk-go/aws" - "github.com/awslabs/aws-sdk-go/gen/endpoints" -) - -// DynamoDB is a client for Amazon DynamoDB. -type DynamoDB struct { - client *aws.JSONClient -} - -// New returns a new DynamoDB client. -func New(creds aws.CredentialsProvider, region string, client *http.Client) *DynamoDB { - if client == nil { - client = http.DefaultClient - } - - endpoint, service, region := endpoints.Lookup("dynamodb", region) - - return &DynamoDB{ - client: &aws.JSONClient{ - Context: aws.Context{ - Credentials: creds, - Service: service, - Region: region, - }, Client: client, - Endpoint: endpoint, - JSONVersion: "1.0", - TargetPrefix: "DynamoDB_20120810", - }, - } -} - -// BatchGetItem the BatchGetItem operation returns the attributes of one or -// more items from one or more tables. You identify requested items by -// primary key. A single operation can retrieve up to 16 MB of data, which -// can contain as many as 100 items. BatchGetItem will return a partial -// result if the response size limit is exceeded, the table's provisioned -// throughput is exceeded, or an internal processing failure occurs. If a -// partial result is returned, the operation returns a value for -// UnprocessedKeys . You can use this value to retry the operation starting -// with the next item to get. For example, if you ask to retrieve 100 -// items, but each individual item is 300 KB in size, the system returns 52 -// items (so as not to exceed the 16 MB limit). It also returns an -// appropriate UnprocessedKeys value so you can get the next page of -// results. If desired, your application can include its own logic to -// assemble the pages of results into one data set. If none of the items -// can be processed due to insufficient provisioned throughput on all of -// the tables in the request, then BatchGetItem will return a -// ProvisionedThroughputExceededException . If at least one of the items is -// successfully processed, then BatchGetItem completes successfully, while -// returning the keys of the unread items in UnprocessedKeys If DynamoDB -// returns any unprocessed items, you should retry the batch operation on -// those items. However, we strongly recommend that you use an exponential -// backoff algorithm . If you retry the batch operation immediately, the -// underlying read or write requests can still fail due to throttling on -// the individual tables. If you delay the batch operation using -// exponential backoff, the individual requests in the batch are much more -// likely to succeed. For more information, go to Batch Operations and -// Error Handling in the Amazon DynamoDB Developer Guide By default, -// BatchGetItem performs eventually consistent reads on every table in the -// request. If you want strongly consistent reads instead, you can set -// ConsistentRead to true for any or all tables. In order to minimize -// response latency, BatchGetItem retrieves items in parallel. When -// designing your application, keep in mind that DynamoDB does not return -// attributes in any particular order. To help parse the response by item, -// include the primary key values for the items in your request in the -// AttributesToGet parameter. If a requested item does not exist, it is not -// returned in the result. Requests for nonexistent items consume the -// minimum read capacity units according to the type of read. For more -// information, see Capacity Units Calculations in the Amazon DynamoDB -// Developer Guide -func (c *DynamoDB) BatchGetItem(req *BatchGetItemInput) (resp *BatchGetItemOutput, err error) { - resp = &BatchGetItemOutput{} - err = c.client.Do("BatchGetItem", "POST", "/", req, resp) - return -} - -// BatchWriteItem the BatchWriteItem operation puts or deletes multiple -// items in one or more tables. A single call to BatchWriteItem can write -// up to 16 MB of data, which can comprise as many as 25 put or delete -// requests. Individual items to be written can be as large as 400 The -// individual PutItem and DeleteItem operations specified in BatchWriteItem -// are atomic; however BatchWriteItem as a whole is not. If any requested -// operations fail because the table's provisioned throughput is exceeded -// or an internal processing failure occurs, the failed operations are -// returned in the UnprocessedItems response parameter. You can investigate -// and optionally resend the requests. Typically, you would call -// BatchWriteItem in a loop. Each iteration would check for unprocessed -// items and submit a new BatchWriteItem request with those unprocessed -// items until all items have been processed. Note that if none of the -// items can be processed due to insufficient provisioned throughput on all -// of the tables in the request, then BatchWriteItem will return a -// ProvisionedThroughputExceededException If DynamoDB returns any -// unprocessed items, you should retry the batch operation on those items. -// However, we strongly recommend that you use an exponential backoff -// algorithm . If you retry the batch operation immediately, the underlying -// read or write requests can still fail due to throttling on the -// individual tables. If you delay the batch operation using exponential -// backoff, the individual requests in the batch are much more likely to -// succeed. For more information, go to Batch Operations and Error Handling -// in the Amazon DynamoDB Developer Guide With BatchWriteItem , you can -// efficiently write or delete large amounts of data, such as from Amazon -// Elastic MapReduce or copy data from another database into DynamoDB. In -// order to improve performance with these large-scale operations, -// BatchWriteItem does not behave in the same way as individual PutItem and -// DeleteItem calls would For example, you cannot specify conditions on -// individual put and delete requests, and BatchWriteItem does not return -// deleted items in the response. If you use a programming language that -// supports concurrency, such as Java, you can use threads to write items -// in parallel. Your application must include the necessary logic to manage -// the threads. With languages that don't support threading, such as you -// must update or delete the specified items one at a time. In both -// situations, BatchWriteItem provides an alternative where the API -// performs the specified put and delete operations in parallel, giving you -// the power of the thread pool approach without having to introduce -// complexity into your application. Parallel processing reduces latency, -// but each specified put and delete request consumes the same number of -// write capacity units whether it is processed in parallel or not. Delete -// operations on nonexistent items consume one write capacity unit. If one -// or more of the following is true, DynamoDB rejects the entire batch -// write operation: One or more tables specified in the BatchWriteItem -// request does not exist. Primary key attributes specified on an item in -// the request do not match those in the corresponding table's primary key -// schema. You try to perform multiple operations on the same item in the -// same BatchWriteItem request. For example, you cannot put and delete the -// same item in the same BatchWriteItem request. There are more than 25 -// requests in the batch. -func (c *DynamoDB) BatchWriteItem(req *BatchWriteItemInput) (resp *BatchWriteItemOutput, err error) { - resp = &BatchWriteItemOutput{} - err = c.client.Do("BatchWriteItem", "POST", "/", req, resp) - return -} - -// CreateTable the CreateTable operation adds a new table to your account. -// In an AWS account, table names must be unique within each region. That -// is, you can have two tables with same name if you create the tables in -// different regions. CreateTable is an asynchronous operation. Upon -// receiving a CreateTable request, DynamoDB immediately returns a response -// with a TableStatus of . After the table is created, DynamoDB sets the -// TableStatus to . You can perform read and write operations only on an -// table. If you want to create multiple tables with secondary indexes on -// them, you must create them sequentially. Only one table with secondary -// indexes can be in the state at any given time. You can use the -// DescribeTable API to check the table status. -func (c *DynamoDB) CreateTable(req *CreateTableInput) (resp *CreateTableOutput, err error) { - resp = &CreateTableOutput{} - err = c.client.Do("CreateTable", "POST", "/", req, resp) - return -} - -// DeleteItem deletes a single item in a table by primary key. You can -// perform a conditional delete operation that deletes the item if it -// exists, or if it has an expected attribute value. In addition to -// deleting an item, you can also return the item's attribute values in the -// same operation, using the ReturnValues parameter. Unless you specify -// conditions, the DeleteItem is an idempotent operation; running it -// multiple times on the same item or attribute does not result in an error -// response. Conditional deletes are useful for deleting items only if -// specific conditions are met. If those conditions are met, DynamoDB -// performs the delete. Otherwise, the item is not deleted. -func (c *DynamoDB) DeleteItem(req *DeleteItemInput) (resp *DeleteItemOutput, err error) { - resp = &DeleteItemOutput{} - err = c.client.Do("DeleteItem", "POST", "/", req, resp) - return -} - -// DeleteTable the DeleteTable operation deletes a table and all of its -// items. After a DeleteTable request, the specified table is in the state -// until DynamoDB completes the deletion. If the table is in the state, you -// can delete it. If a table is in or states, then DynamoDB returns a -// ResourceInUseException . If the specified table does not exist, DynamoDB -// returns a ResourceNotFoundException . If table is already in the state, -// no error is returned. When you delete a table, any indexes on that table -// are also deleted. Use the DescribeTable API to check the status of the -// table. -func (c *DynamoDB) DeleteTable(req *DeleteTableInput) (resp *DeleteTableOutput, err error) { - resp = &DeleteTableOutput{} - err = c.client.Do("DeleteTable", "POST", "/", req, resp) - return -} - -// DescribeTable returns information about the table, including the current -// status of the table, when it was created, the primary key schema, and -// any indexes on the table. -func (c *DynamoDB) DescribeTable(req *DescribeTableInput) (resp *DescribeTableOutput, err error) { - resp = &DescribeTableOutput{} - err = c.client.Do("DescribeTable", "POST", "/", req, resp) - return -} - -// GetItem the GetItem operation returns a set of attributes for the item -// with the given primary key. If there is no matching item, GetItem does -// not return any data. GetItem provides an eventually consistent read by -// default. If your application requires a strongly consistent read, set -// ConsistentRead to true . Although a strongly consistent read might take -// more time than an eventually consistent read, it always returns the last -// updated value. -func (c *DynamoDB) GetItem(req *GetItemInput) (resp *GetItemOutput, err error) { - resp = &GetItemOutput{} - err = c.client.Do("GetItem", "POST", "/", req, resp) - return -} - -// ListTables returns an array of table names associated with the current -// account and endpoint. The output from ListTables is paginated, with each -// page returning a maximum of 100 table names. -func (c *DynamoDB) ListTables(req *ListTablesInput) (resp *ListTablesOutput, err error) { - resp = &ListTablesOutput{} - err = c.client.Do("ListTables", "POST", "/", req, resp) - return -} - -// PutItem creates a new item, or replaces an old item with a new item. If -// an item that has the same primary key as the new item already exists in -// the specified table, the new item completely replaces the existing item. -// You can perform a conditional put operation (add a new item if one with -// the specified primary key doesn't exist), or replace an existing item if -// it has certain attribute values. In addition to putting an item, you can -// also return the item's attribute values in the same operation, using the -// ReturnValues parameter. When you add an item, the primary key -// attribute(s) are the only required attributes. Attribute values cannot -// be null. String and Binary type attributes must have lengths greater -// than zero. Set type attributes cannot be empty. Requests with empty -// values will be rejected with a ValidationException exception. You can -// request that PutItem return either a copy of the original item (before -// the update) or a copy of the updated item (after the update). For more -// information, see the ReturnValues description below. For more -// information about using this see Working with Items in the Amazon -// DynamoDB Developer Guide -func (c *DynamoDB) PutItem(req *PutItemInput) (resp *PutItemOutput, err error) { - resp = &PutItemOutput{} - err = c.client.Do("PutItem", "POST", "/", req, resp) - return -} - -// Query a Query operation directly accesses items from a table using the -// table primary key, or from an index using the index key. You must -// provide a specific hash key value. You can narrow the scope of the query -// by using comparison operators on the range key value, or on the index -// key. You can use the ScanIndexForward parameter to get results in -// forward or reverse order, by range key or by index key. Queries that do -// not return results consume the minimum number of read capacity units for -// that type of read operation. If the total number of items meeting the -// query criteria exceeds the result set size limit of 1 MB, the query -// stops and results are returned to the user with LastEvaluatedKey to -// continue the query in a subsequent operation. Unlike a Scan operation, a -// Query operation never returns both an empty result set and a -// LastEvaluatedKey . The LastEvaluatedKey is only provided if the results -// exceed 1 MB, or if you have used Limit . You can query a table, a local -// secondary index, or a global secondary index. For a query on a table or -// on a local secondary index, you can set ConsistentRead to true and -// obtain a strongly consistent result. Global secondary indexes support -// eventually consistent reads only, so do not specify ConsistentRead when -// querying a global secondary index. -func (c *DynamoDB) Query(req *QueryInput) (resp *QueryOutput, err error) { - resp = &QueryOutput{} - err = c.client.Do("Query", "POST", "/", req, resp) - return -} - -// Scan the Scan operation returns one or more items and item attributes by -// accessing every item in the table. To have DynamoDB return fewer items, -// you can provide a ScanFilter operation. If the total number of scanned -// items exceeds the maximum data set size limit of 1 MB, the scan stops -// and results are returned to the user as a LastEvaluatedKey value to -// continue the scan in a subsequent operation. The results also include -// the number of items exceeding the limit. A scan can result in no table -// data meeting the filter criteria. The result set is eventually -// consistent. By default, Scan operations proceed sequentially; however, -// for faster performance on large tables, applications can request a -// parallel Scan operation by specifying the Segment and TotalSegments -// parameters. For more information, see Parallel Scan in the Amazon -// DynamoDB Developer Guide -func (c *DynamoDB) Scan(req *ScanInput) (resp *ScanOutput, err error) { - resp = &ScanOutput{} - err = c.client.Do("Scan", "POST", "/", req, resp) - return -} - -// UpdateItem edits an existing item's attributes, or adds a new item to -// the table if it does not already exist. You can put, delete, or add -// attribute values. You can also perform a conditional update (insert a -// new attribute name-value pair if it doesn't exist, or replace an -// existing name-value pair if it has certain expected attribute values). -// You can also return the item's attribute values in the same UpdateItem -// operation using the ReturnValues parameter. -func (c *DynamoDB) UpdateItem(req *UpdateItemInput) (resp *UpdateItemOutput, err error) { - resp = &UpdateItemOutput{} - err = c.client.Do("UpdateItem", "POST", "/", req, resp) - return -} - -// UpdateTable updates the provisioned throughput for the given table. -// Setting the throughput for a table helps you manage performance and is -// part of the provisioned throughput feature of DynamoDB. The provisioned -// throughput values can be upgraded or downgraded based on the maximums -// and minimums listed in the Limits section in the Amazon DynamoDB -// Developer Guide The table must be in the state for this operation to -// succeed. UpdateTable is an asynchronous operation; while executing the -// operation, the table is in the state. While the table is in the state, -// the table still has the provisioned throughput from before the call. The -// new provisioned throughput setting is in effect only when the table -// returns to the state after the UpdateTable operation. You cannot add, -// modify or delete indexes using UpdateTable . Indexes can only be defined -// at table creation time. -func (c *DynamoDB) UpdateTable(req *UpdateTableInput) (resp *UpdateTableOutput, err error) { - resp = &UpdateTableOutput{} - err = c.client.Do("UpdateTable", "POST", "/", req, resp) - return -} - -// Possible values for DynamoDB. -const ( - AttributeActionAdd = "ADD" - AttributeActionDelete = "DELETE" - AttributeActionPut = "PUT" -) - -// AttributeDefinition is undocumented. -type AttributeDefinition struct { - AttributeName aws.StringValue `json:"AttributeName"` - AttributeType aws.StringValue `json:"AttributeType"` -} - -// AttributeValue is undocumented. -type AttributeValue struct { - B []byte `json:"B,omitempty"` - BOOL aws.BooleanValue `json:"BOOL,omitempty"` - BS [][]byte `json:"BS,omitempty"` - L []AttributeValue `json:"L,omitempty"` - M map[string]AttributeValue `json:"M,omitempty"` - N aws.StringValue `json:"N,omitempty"` - NS []string `json:"NS,omitempty"` - NULL aws.BooleanValue `json:"NULL,omitempty"` - S aws.StringValue `json:"S,omitempty"` - SS []string `json:"SS,omitempty"` -} - -// AttributeValueUpdate is undocumented. -type AttributeValueUpdate struct { - Action aws.StringValue `json:"Action,omitempty"` - Value *AttributeValue `json:"Value,omitempty"` -} - -// BatchGetItemInput is undocumented. -type BatchGetItemInput struct { - RequestItems map[string]KeysAndAttributes `json:"RequestItems"` - ReturnConsumedCapacity aws.StringValue `json:"ReturnConsumedCapacity,omitempty"` -} - -// BatchGetItemOutput is undocumented. -type BatchGetItemOutput struct { - ConsumedCapacity []ConsumedCapacity `json:"ConsumedCapacity,omitempty"` - Responses map[string][]map[string]AttributeValue `json:"Responses,omitempty"` - UnprocessedKeys map[string]KeysAndAttributes `json:"UnprocessedKeys,omitempty"` -} - -// BatchWriteItemInput is undocumented. -type BatchWriteItemInput struct { - RequestItems map[string][]WriteRequest `json:"RequestItems"` - ReturnConsumedCapacity aws.StringValue `json:"ReturnConsumedCapacity,omitempty"` - ReturnItemCollectionMetrics aws.StringValue `json:"ReturnItemCollectionMetrics,omitempty"` -} - -// BatchWriteItemOutput is undocumented. -type BatchWriteItemOutput struct { - ConsumedCapacity []ConsumedCapacity `json:"ConsumedCapacity,omitempty"` - ItemCollectionMetrics map[string][]ItemCollectionMetrics `json:"ItemCollectionMetrics,omitempty"` - UnprocessedItems map[string][]WriteRequest `json:"UnprocessedItems,omitempty"` -} - -// Capacity is undocumented. -type Capacity struct { - CapacityUnits aws.DoubleValue `json:"CapacityUnits,omitempty"` -} - -// Possible values for DynamoDB. -const ( - ComparisonOperatorBeginsWith = "BEGINS_WITH" - ComparisonOperatorBetween = "BETWEEN" - ComparisonOperatorContains = "CONTAINS" - ComparisonOperatorEq = "EQ" - ComparisonOperatorGe = "GE" - ComparisonOperatorGt = "GT" - ComparisonOperatorIn = "IN" - ComparisonOperatorLe = "LE" - ComparisonOperatorLt = "LT" - ComparisonOperatorNe = "NE" - ComparisonOperatorNotContains = "NOT_CONTAINS" - ComparisonOperatorNotNull = "NOT_NULL" - ComparisonOperatorNull = "NULL" -) - -// Condition is undocumented. -type Condition struct { - AttributeValueList []AttributeValue `json:"AttributeValueList,omitempty"` - ComparisonOperator aws.StringValue `json:"ComparisonOperator"` -} - -// Possible values for DynamoDB. -const ( - ConditionalOperatorAnd = "AND" - ConditionalOperatorOr = "OR" -) - -// ConsumedCapacity is undocumented. -type ConsumedCapacity struct { - CapacityUnits aws.DoubleValue `json:"CapacityUnits,omitempty"` - GlobalSecondaryIndexes map[string]Capacity `json:"GlobalSecondaryIndexes,omitempty"` - LocalSecondaryIndexes map[string]Capacity `json:"LocalSecondaryIndexes,omitempty"` - Table *Capacity `json:"Table,omitempty"` - TableName aws.StringValue `json:"TableName,omitempty"` -} - -// CreateTableInput is undocumented. -type CreateTableInput struct { - AttributeDefinitions []AttributeDefinition `json:"AttributeDefinitions"` - GlobalSecondaryIndexes []GlobalSecondaryIndex `json:"GlobalSecondaryIndexes,omitempty"` - KeySchema []KeySchemaElement `json:"KeySchema"` - LocalSecondaryIndexes []LocalSecondaryIndex `json:"LocalSecondaryIndexes,omitempty"` - ProvisionedThroughput *ProvisionedThroughput `json:"ProvisionedThroughput"` - TableName aws.StringValue `json:"TableName"` -} - -// CreateTableOutput is undocumented. -type CreateTableOutput struct { - TableDescription *TableDescription `json:"TableDescription,omitempty"` -} - -// DeleteItemInput is undocumented. -type DeleteItemInput struct { - ConditionExpression aws.StringValue `json:"ConditionExpression,omitempty"` - ConditionalOperator aws.StringValue `json:"ConditionalOperator,omitempty"` - Expected map[string]ExpectedAttributeValue `json:"Expected,omitempty"` - ExpressionAttributeNames map[string]string `json:"ExpressionAttributeNames,omitempty"` - ExpressionAttributeValues map[string]AttributeValue `json:"ExpressionAttributeValues,omitempty"` - Key map[string]AttributeValue `json:"Key"` - ReturnConsumedCapacity aws.StringValue `json:"ReturnConsumedCapacity,omitempty"` - ReturnItemCollectionMetrics aws.StringValue `json:"ReturnItemCollectionMetrics,omitempty"` - ReturnValues aws.StringValue `json:"ReturnValues,omitempty"` - TableName aws.StringValue `json:"TableName"` -} - -// DeleteItemOutput is undocumented. -type DeleteItemOutput struct { - Attributes map[string]AttributeValue `json:"Attributes,omitempty"` - ConsumedCapacity *ConsumedCapacity `json:"ConsumedCapacity,omitempty"` - ItemCollectionMetrics *ItemCollectionMetrics `json:"ItemCollectionMetrics,omitempty"` -} - -// DeleteRequest is undocumented. -type DeleteRequest struct { - Key map[string]AttributeValue `json:"Key"` -} - -// DeleteTableInput is undocumented. -type DeleteTableInput struct { - TableName aws.StringValue `json:"TableName"` -} - -// DeleteTableOutput is undocumented. -type DeleteTableOutput struct { - TableDescription *TableDescription `json:"TableDescription,omitempty"` -} - -// DescribeTableInput is undocumented. -type DescribeTableInput struct { - TableName aws.StringValue `json:"TableName"` -} - -// DescribeTableOutput is undocumented. -type DescribeTableOutput struct { - Table *TableDescription `json:"Table,omitempty"` -} - -// ExpectedAttributeValue is undocumented. -type ExpectedAttributeValue struct { - AttributeValueList []AttributeValue `json:"AttributeValueList,omitempty"` - ComparisonOperator aws.StringValue `json:"ComparisonOperator,omitempty"` - Exists aws.BooleanValue `json:"Exists,omitempty"` - Value *AttributeValue `json:"Value,omitempty"` -} - -// GetItemInput is undocumented. -type GetItemInput struct { - AttributesToGet []string `json:"AttributesToGet,omitempty"` - ConsistentRead aws.BooleanValue `json:"ConsistentRead,omitempty"` - ExpressionAttributeNames map[string]string `json:"ExpressionAttributeNames,omitempty"` - Key map[string]AttributeValue `json:"Key"` - ProjectionExpression aws.StringValue `json:"ProjectionExpression,omitempty"` - ReturnConsumedCapacity aws.StringValue `json:"ReturnConsumedCapacity,omitempty"` - TableName aws.StringValue `json:"TableName"` -} - -// GetItemOutput is undocumented. -type GetItemOutput struct { - ConsumedCapacity *ConsumedCapacity `json:"ConsumedCapacity,omitempty"` - Item map[string]AttributeValue `json:"Item,omitempty"` -} - -// GlobalSecondaryIndex is undocumented. -type GlobalSecondaryIndex struct { - IndexName aws.StringValue `json:"IndexName"` - KeySchema []KeySchemaElement `json:"KeySchema"` - Projection *Projection `json:"Projection"` - ProvisionedThroughput *ProvisionedThroughput `json:"ProvisionedThroughput"` -} - -// GlobalSecondaryIndexDescription is undocumented. -type GlobalSecondaryIndexDescription struct { - IndexName aws.StringValue `json:"IndexName,omitempty"` - IndexSizeBytes aws.LongValue `json:"IndexSizeBytes,omitempty"` - IndexStatus aws.StringValue `json:"IndexStatus,omitempty"` - ItemCount aws.LongValue `json:"ItemCount,omitempty"` - KeySchema []KeySchemaElement `json:"KeySchema,omitempty"` - Projection *Projection `json:"Projection,omitempty"` - ProvisionedThroughput *ProvisionedThroughputDescription `json:"ProvisionedThroughput,omitempty"` -} - -// GlobalSecondaryIndexUpdate is undocumented. -type GlobalSecondaryIndexUpdate struct { - Update *UpdateGlobalSecondaryIndexAction `json:"Update,omitempty"` -} - -// Possible values for DynamoDB. -const ( - IndexStatusActive = "ACTIVE" - IndexStatusCreating = "CREATING" - IndexStatusDeleting = "DELETING" - IndexStatusUpdating = "UPDATING" -) - -// ItemCollectionMetrics is undocumented. -type ItemCollectionMetrics struct { - ItemCollectionKey map[string]AttributeValue `json:"ItemCollectionKey,omitempty"` - SizeEstimateRangeGB []float64 `json:"SizeEstimateRangeGB,omitempty"` -} - -// KeySchemaElement is undocumented. -type KeySchemaElement struct { - AttributeName aws.StringValue `json:"AttributeName"` - KeyType aws.StringValue `json:"KeyType"` -} - -// Possible values for DynamoDB. -const ( - KeyTypeHash = "HASH" - KeyTypeRange = "RANGE" -) - -// KeysAndAttributes is undocumented. -type KeysAndAttributes struct { - AttributesToGet []string `json:"AttributesToGet,omitempty"` - ConsistentRead aws.BooleanValue `json:"ConsistentRead,omitempty"` - ExpressionAttributeNames map[string]string `json:"ExpressionAttributeNames,omitempty"` - Keys []map[string]AttributeValue `json:"Keys"` - ProjectionExpression aws.StringValue `json:"ProjectionExpression,omitempty"` -} - -// ListTablesInput is undocumented. -type ListTablesInput struct { - ExclusiveStartTableName aws.StringValue `json:"ExclusiveStartTableName,omitempty"` - Limit aws.IntegerValue `json:"Limit,omitempty"` -} - -// ListTablesOutput is undocumented. -type ListTablesOutput struct { - LastEvaluatedTableName aws.StringValue `json:"LastEvaluatedTableName,omitempty"` - TableNames []string `json:"TableNames,omitempty"` -} - -// LocalSecondaryIndex is undocumented. -type LocalSecondaryIndex struct { - IndexName aws.StringValue `json:"IndexName"` - KeySchema []KeySchemaElement `json:"KeySchema"` - Projection *Projection `json:"Projection"` -} - -// LocalSecondaryIndexDescription is undocumented. -type LocalSecondaryIndexDescription struct { - IndexName aws.StringValue `json:"IndexName,omitempty"` - IndexSizeBytes aws.LongValue `json:"IndexSizeBytes,omitempty"` - ItemCount aws.LongValue `json:"ItemCount,omitempty"` - KeySchema []KeySchemaElement `json:"KeySchema,omitempty"` - Projection *Projection `json:"Projection,omitempty"` -} - -// Projection is undocumented. -type Projection struct { - NonKeyAttributes []string `json:"NonKeyAttributes,omitempty"` - ProjectionType aws.StringValue `json:"ProjectionType,omitempty"` -} - -// Possible values for DynamoDB. -const ( - ProjectionTypeAll = "ALL" - ProjectionTypeInclude = "INCLUDE" - ProjectionTypeKeysOnly = "KEYS_ONLY" -) - -// ProvisionedThroughput is undocumented. -type ProvisionedThroughput struct { - ReadCapacityUnits aws.LongValue `json:"ReadCapacityUnits"` - WriteCapacityUnits aws.LongValue `json:"WriteCapacityUnits"` -} - -// ProvisionedThroughputDescription is undocumented. -type ProvisionedThroughputDescription struct { - LastDecreaseDateTime *aws.UnixTimestamp `json:"LastDecreaseDateTime,omitempty"` - LastIncreaseDateTime *aws.UnixTimestamp `json:"LastIncreaseDateTime,omitempty"` - NumberOfDecreasesToday aws.LongValue `json:"NumberOfDecreasesToday,omitempty"` - ReadCapacityUnits aws.LongValue `json:"ReadCapacityUnits,omitempty"` - WriteCapacityUnits aws.LongValue `json:"WriteCapacityUnits,omitempty"` -} - -// PutItemInput is undocumented. -type PutItemInput struct { - ConditionExpression aws.StringValue `json:"ConditionExpression,omitempty"` - ConditionalOperator aws.StringValue `json:"ConditionalOperator,omitempty"` - Expected map[string]ExpectedAttributeValue `json:"Expected,omitempty"` - ExpressionAttributeNames map[string]string `json:"ExpressionAttributeNames,omitempty"` - ExpressionAttributeValues map[string]AttributeValue `json:"ExpressionAttributeValues,omitempty"` - Item map[string]AttributeValue `json:"Item"` - ReturnConsumedCapacity aws.StringValue `json:"ReturnConsumedCapacity,omitempty"` - ReturnItemCollectionMetrics aws.StringValue `json:"ReturnItemCollectionMetrics,omitempty"` - ReturnValues aws.StringValue `json:"ReturnValues,omitempty"` - TableName aws.StringValue `json:"TableName"` -} - -// PutItemOutput is undocumented. -type PutItemOutput struct { - Attributes map[string]AttributeValue `json:"Attributes,omitempty"` - ConsumedCapacity *ConsumedCapacity `json:"ConsumedCapacity,omitempty"` - ItemCollectionMetrics *ItemCollectionMetrics `json:"ItemCollectionMetrics,omitempty"` -} - -// PutRequest is undocumented. -type PutRequest struct { - Item map[string]AttributeValue `json:"Item"` -} - -// QueryInput is undocumented. -type QueryInput struct { - AttributesToGet []string `json:"AttributesToGet,omitempty"` - ConditionalOperator aws.StringValue `json:"ConditionalOperator,omitempty"` - ConsistentRead aws.BooleanValue `json:"ConsistentRead,omitempty"` - ExclusiveStartKey map[string]AttributeValue `json:"ExclusiveStartKey,omitempty"` - ExpressionAttributeNames map[string]string `json:"ExpressionAttributeNames,omitempty"` - ExpressionAttributeValues map[string]AttributeValue `json:"ExpressionAttributeValues,omitempty"` - FilterExpression aws.StringValue `json:"FilterExpression,omitempty"` - IndexName aws.StringValue `json:"IndexName,omitempty"` - KeyConditions map[string]Condition `json:"KeyConditions"` - Limit aws.IntegerValue `json:"Limit,omitempty"` - ProjectionExpression aws.StringValue `json:"ProjectionExpression,omitempty"` - QueryFilter map[string]Condition `json:"QueryFilter,omitempty"` - ReturnConsumedCapacity aws.StringValue `json:"ReturnConsumedCapacity,omitempty"` - ScanIndexForward aws.BooleanValue `json:"ScanIndexForward,omitempty"` - Select aws.StringValue `json:"Select,omitempty"` - TableName aws.StringValue `json:"TableName"` -} - -// QueryOutput is undocumented. -type QueryOutput struct { - ConsumedCapacity *ConsumedCapacity `json:"ConsumedCapacity,omitempty"` - Count aws.IntegerValue `json:"Count,omitempty"` - Items []map[string]AttributeValue `json:"Items,omitempty"` - LastEvaluatedKey map[string]AttributeValue `json:"LastEvaluatedKey,omitempty"` - ScannedCount aws.IntegerValue `json:"ScannedCount,omitempty"` -} - -// Possible values for DynamoDB. -const ( - ReturnConsumedCapacityIndexes = "INDEXES" - ReturnConsumedCapacityNone = "NONE" - ReturnConsumedCapacityTotal = "TOTAL" -) - -// Possible values for DynamoDB. -const ( - ReturnItemCollectionMetricsNone = "NONE" - ReturnItemCollectionMetricsSize = "SIZE" -) - -// Possible values for DynamoDB. -const ( - ReturnValueAllNew = "ALL_NEW" - ReturnValueAllOld = "ALL_OLD" - ReturnValueNone = "NONE" - ReturnValueUpdatedNew = "UPDATED_NEW" - ReturnValueUpdatedOld = "UPDATED_OLD" -) - -// Possible values for DynamoDB. -const ( - ScalarAttributeTypeB = "B" - ScalarAttributeTypeN = "N" - ScalarAttributeTypeS = "S" -) - -// ScanInput is undocumented. -type ScanInput struct { - AttributesToGet []string `json:"AttributesToGet,omitempty"` - ConditionalOperator aws.StringValue `json:"ConditionalOperator,omitempty"` - ExclusiveStartKey map[string]AttributeValue `json:"ExclusiveStartKey,omitempty"` - ExpressionAttributeNames map[string]string `json:"ExpressionAttributeNames,omitempty"` - ExpressionAttributeValues map[string]AttributeValue `json:"ExpressionAttributeValues,omitempty"` - FilterExpression aws.StringValue `json:"FilterExpression,omitempty"` - Limit aws.IntegerValue `json:"Limit,omitempty"` - ProjectionExpression aws.StringValue `json:"ProjectionExpression,omitempty"` - ReturnConsumedCapacity aws.StringValue `json:"ReturnConsumedCapacity,omitempty"` - ScanFilter map[string]Condition `json:"ScanFilter,omitempty"` - Segment aws.IntegerValue `json:"Segment,omitempty"` - Select aws.StringValue `json:"Select,omitempty"` - TableName aws.StringValue `json:"TableName"` - TotalSegments aws.IntegerValue `json:"TotalSegments,omitempty"` -} - -// ScanOutput is undocumented. -type ScanOutput struct { - ConsumedCapacity *ConsumedCapacity `json:"ConsumedCapacity,omitempty"` - Count aws.IntegerValue `json:"Count,omitempty"` - Items []map[string]AttributeValue `json:"Items,omitempty"` - LastEvaluatedKey map[string]AttributeValue `json:"LastEvaluatedKey,omitempty"` - ScannedCount aws.IntegerValue `json:"ScannedCount,omitempty"` -} - -// Possible values for DynamoDB. -const ( - SelectAllAttributes = "ALL_ATTRIBUTES" - SelectAllProjectedAttributes = "ALL_PROJECTED_ATTRIBUTES" - SelectCount = "COUNT" - SelectSpecificAttributes = "SPECIFIC_ATTRIBUTES" -) - -// TableDescription is undocumented. -type TableDescription struct { - AttributeDefinitions []AttributeDefinition `json:"AttributeDefinitions,omitempty"` - CreationDateTime *aws.UnixTimestamp `json:"CreationDateTime,omitempty"` - GlobalSecondaryIndexes []GlobalSecondaryIndexDescription `json:"GlobalSecondaryIndexes,omitempty"` - ItemCount aws.LongValue `json:"ItemCount,omitempty"` - KeySchema []KeySchemaElement `json:"KeySchema,omitempty"` - LocalSecondaryIndexes []LocalSecondaryIndexDescription `json:"LocalSecondaryIndexes,omitempty"` - ProvisionedThroughput *ProvisionedThroughputDescription `json:"ProvisionedThroughput,omitempty"` - TableName aws.StringValue `json:"TableName,omitempty"` - TableSizeBytes aws.LongValue `json:"TableSizeBytes,omitempty"` - TableStatus aws.StringValue `json:"TableStatus,omitempty"` -} - -// Possible values for DynamoDB. -const ( - TableStatusActive = "ACTIVE" - TableStatusCreating = "CREATING" - TableStatusDeleting = "DELETING" - TableStatusUpdating = "UPDATING" -) - -// UpdateGlobalSecondaryIndexAction is undocumented. -type UpdateGlobalSecondaryIndexAction struct { - IndexName aws.StringValue `json:"IndexName"` - ProvisionedThroughput *ProvisionedThroughput `json:"ProvisionedThroughput"` -} - -// UpdateItemInput is undocumented. -type UpdateItemInput struct { - AttributeUpdates map[string]AttributeValueUpdate `json:"AttributeUpdates,omitempty"` - ConditionExpression aws.StringValue `json:"ConditionExpression,omitempty"` - ConditionalOperator aws.StringValue `json:"ConditionalOperator,omitempty"` - Expected map[string]ExpectedAttributeValue `json:"Expected,omitempty"` - ExpressionAttributeNames map[string]string `json:"ExpressionAttributeNames,omitempty"` - ExpressionAttributeValues map[string]AttributeValue `json:"ExpressionAttributeValues,omitempty"` - Key map[string]AttributeValue `json:"Key"` - ReturnConsumedCapacity aws.StringValue `json:"ReturnConsumedCapacity,omitempty"` - ReturnItemCollectionMetrics aws.StringValue `json:"ReturnItemCollectionMetrics,omitempty"` - ReturnValues aws.StringValue `json:"ReturnValues,omitempty"` - TableName aws.StringValue `json:"TableName"` - UpdateExpression aws.StringValue `json:"UpdateExpression,omitempty"` -} - -// UpdateItemOutput is undocumented. -type UpdateItemOutput struct { - Attributes map[string]AttributeValue `json:"Attributes,omitempty"` - ConsumedCapacity *ConsumedCapacity `json:"ConsumedCapacity,omitempty"` - ItemCollectionMetrics *ItemCollectionMetrics `json:"ItemCollectionMetrics,omitempty"` -} - -// UpdateTableInput is undocumented. -type UpdateTableInput struct { - GlobalSecondaryIndexUpdates []GlobalSecondaryIndexUpdate `json:"GlobalSecondaryIndexUpdates,omitempty"` - ProvisionedThroughput *ProvisionedThroughput `json:"ProvisionedThroughput,omitempty"` - TableName aws.StringValue `json:"TableName"` -} - -// UpdateTableOutput is undocumented. -type UpdateTableOutput struct { - TableDescription *TableDescription `json:"TableDescription,omitempty"` -} - -// WriteRequest is undocumented. -type WriteRequest struct { - DeleteRequest *DeleteRequest `json:"DeleteRequest,omitempty"` - PutRequest *PutRequest `json:"PutRequest,omitempty"` -} - -// avoid errors if the packages aren't referenced -var _ time.Time diff --git a/src/github.com/getlantern/aws-sdk-go/gen/ec2/ec2.go b/src/github.com/getlantern/aws-sdk-go/gen/ec2/ec2.go deleted file mode 100644 index 693346d255..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/gen/ec2/ec2.go +++ /dev/null @@ -1,5637 +0,0 @@ -// THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. - -// Package ec2 provides a client for Amazon Elastic Compute Cloud. -package ec2 - -import ( - "net/http" - "time" - - "github.com/awslabs/aws-sdk-go/aws" - "github.com/awslabs/aws-sdk-go/gen/endpoints" -) - -// EC2 is a client for Amazon Elastic Compute Cloud. -type EC2 struct { - client *aws.EC2Client -} - -// New returns a new EC2 client. -func New(creds aws.CredentialsProvider, region string, client *http.Client) *EC2 { - if client == nil { - client = http.DefaultClient - } - - endpoint, service, region := endpoints.Lookup("ec2", region) - - return &EC2{ - client: &aws.EC2Client{ - Context: aws.Context{ - Credentials: creds, - Service: service, - Region: region, - }, - Client: client, - Endpoint: endpoint, - APIVersion: "2014-10-01", - }, - } -} - -// AcceptVPCPeeringConnection accept a VPC peering connection request. To -// accept a request, the VPC peering connection must be in the -// pending-acceptance state, and you must be the owner of the peer Use the -// DescribeVpcPeeringConnections request to view your outstanding VPC -// peering connection requests. -func (c *EC2) AcceptVPCPeeringConnection(req *AcceptVPCPeeringConnectionRequest) (resp *AcceptVPCPeeringConnectionResult, err error) { - resp = &AcceptVPCPeeringConnectionResult{} - err = c.client.Do("AcceptVpcPeeringConnection", "POST", "/", req, resp) - return -} - -// AllocateAddress acquires an Elastic IP address. An Elastic IP address is -// for use either in the EC2-Classic platform or in a For more information, -// see Elastic IP Addresses in the Amazon Elastic Compute Cloud User Guide -// for Linux -func (c *EC2) AllocateAddress(req *AllocateAddressRequest) (resp *AllocateAddressResult, err error) { - resp = &AllocateAddressResult{} - err = c.client.Do("AllocateAddress", "POST", "/", req, resp) - return -} - -// AssignPrivateIPAddresses assigns one or more secondary private IP -// addresses to the specified network interface. You can specify one or -// more specific secondary IP addresses, or you can specify the number of -// secondary IP addresses to be automatically assigned within the subnet's -// block range. The number of secondary IP addresses that you can assign to -// an instance varies by instance type. For information about instance -// types, see Instance Types in the Amazon Elastic Compute Cloud User Guide -// for Linux . For more information about Elastic IP addresses, see Elastic -// IP Addresses in the Amazon Elastic Compute Cloud User Guide for Linux -// AssignPrivateIpAddresses is available only in EC2-VPC. -func (c *EC2) AssignPrivateIPAddresses(req *AssignPrivateIPAddressesRequest) (err error) { - // NRE - err = c.client.Do("AssignPrivateIpAddresses", "POST", "/", req, nil) - return -} - -// AssociateAddress associates an Elastic IP address with an instance or a -// network interface. An Elastic IP address is for use in either the -// EC2-Classic platform or in a For more information, see Elastic IP -// Addresses in the Amazon Elastic Compute Cloud User Guide for Linux -// [EC2-Classic, VPC in an EC2-VPC-only account] If the Elastic IP address -// is already associated with a different instance, it is disassociated -// from that instance and associated with the specified instance. in an -// EC2-Classic account] If you don't specify a private IP address, the -// Elastic IP address is associated with the primary IP address. If the -// Elastic IP address is already associated with a different instance or a -// network interface, you get an error unless you allow reassociation. This -// is an idempotent operation. If you perform the operation more than once, -// Amazon EC2 doesn't return an error. -func (c *EC2) AssociateAddress(req *AssociateAddressRequest) (resp *AssociateAddressResult, err error) { - resp = &AssociateAddressResult{} - err = c.client.Do("AssociateAddress", "POST", "/", req, resp) - return -} - -// AssociateDHCPOptions associates a set of options (that you've previously -// created) with the specified or associates no options with the After you -// associate the options with the any existing instances and all new -// instances that you launch in that VPC use the options. You don't need to -// restart or relaunch the instances. They automatically pick up the -// changes within a few hours, depending on how frequently the instance -// renews its lease. You can explicitly renew the lease using the operating -// system on the instance. For more information, see Options Sets in the -// Amazon Virtual Private Cloud User Guide -func (c *EC2) AssociateDHCPOptions(req *AssociateDHCPOptionsRequest) (err error) { - // NRE - err = c.client.Do("AssociateDhcpOptions", "POST", "/", req, nil) - return -} - -// AssociateRouteTable associates a subnet with a route table. The subnet -// and route table must be in the same This association causes traffic -// originating from the subnet to be routed according to the routes in the -// route table. The action returns an association ID, which you need in -// order to disassociate the route table from the subnet later. A route -// table can be associated with multiple subnets. For more information -// about route tables, see Route Tables in the Amazon Virtual Private Cloud -// User Guide -func (c *EC2) AssociateRouteTable(req *AssociateRouteTableRequest) (resp *AssociateRouteTableResult, err error) { - resp = &AssociateRouteTableResult{} - err = c.client.Do("AssociateRouteTable", "POST", "/", req, resp) - return -} - -// AttachClassicLinkVPC links an EC2-Classic instance to a -// ClassicLink-enabled VPC through one or more of the VPC's security -// groups. You cannot link an EC2-Classic instance to more than one VPC at -// a time. You can only link an instance that's in the running state. An -// instance is automatically unlinked from a VPC when it's stopped - you -// can link it to the VPC again when you restart it. After you've linked an -// instance, you cannot change the VPC security groups that are associated -// with it. To change the security groups, you must first unlink the -// instance, and then link it again. Linking your instance to a VPC is -// sometimes referred to as attaching your instance. -func (c *EC2) AttachClassicLinkVPC(req *AttachClassicLinkVPCRequest) (resp *AttachClassicLinkVPCResult, err error) { - resp = &AttachClassicLinkVPCResult{} - err = c.client.Do("AttachClassicLinkVpc", "POST", "/", req, resp) - return -} - -// AttachInternetGateway attaches an Internet gateway to a enabling -// connectivity between the Internet and the For more information about -// your VPC and Internet gateway, see the Amazon Virtual Private Cloud User -// Guide -func (c *EC2) AttachInternetGateway(req *AttachInternetGatewayRequest) (err error) { - // NRE - err = c.client.Do("AttachInternetGateway", "POST", "/", req, nil) - return -} - -// AttachNetworkInterface is undocumented. -func (c *EC2) AttachNetworkInterface(req *AttachNetworkInterfaceRequest) (resp *AttachNetworkInterfaceResult, err error) { - resp = &AttachNetworkInterfaceResult{} - err = c.client.Do("AttachNetworkInterface", "POST", "/", req, resp) - return -} - -// AttachVolume attaches an Amazon EBS volume to a running or stopped -// instance and exposes it to the instance with the specified device name. -// Encrypted Amazon EBS volumes may only be attached to instances that -// support Amazon EBS encryption. For more information, see Amazon EBS -// Encryption in the Amazon Elastic Compute Cloud User Guide for Linux For -// a list of supported device names, see Attaching an Amazon EBS Volume to -// an Instance . Any device names that aren't reserved for instance store -// volumes can be used for Amazon EBS volumes. For more information, see -// Amazon EC2 Instance Store in the Amazon Elastic Compute Cloud User Guide -// for Linux If a volume has an AWS Marketplace product code: The volume -// can be attached only to a stopped instance. AWS Marketplace product -// codes are copied from the volume to the instance. You must be subscribed -// to the product. The instance type and operating system of the instance -// must support the product. For example, you can't detach a volume from a -// Windows instance and attach it to a Linux instance. For an overview of -// the AWS Marketplace, see Introducing AWS Marketplace For more -// information about Amazon EBS volumes, see Attaching Amazon EBS Volumes -// in the Amazon Elastic Compute Cloud User Guide for Linux -func (c *EC2) AttachVolume(req *AttachVolumeRequest) (resp *VolumeAttachment, err error) { - resp = &VolumeAttachment{} - err = c.client.Do("AttachVolume", "POST", "/", req, resp) - return -} - -// AttachVPNGateway attaches a virtual private gateway to a For more -// information, see Adding a Hardware Virtual Private Gateway to Your in -// the Amazon Virtual Private Cloud User Guide -func (c *EC2) AttachVPNGateway(req *AttachVPNGatewayRequest) (resp *AttachVPNGatewayResult, err error) { - resp = &AttachVPNGatewayResult{} - err = c.client.Do("AttachVpnGateway", "POST", "/", req, resp) - return -} - -// AuthorizeSecurityGroupEgress adds one or more egress rules to a security -// group for use with a Specifically, this action permits instances to send -// traffic to one or more destination IP address ranges, or to one or more -// destination security groups for the same You can have up to 50 rules per -// security group (covering both ingress and egress rules). A security -// group is for use with instances either in the EC2-Classic platform or in -// a specific This action doesn't apply to security groups for use in -// EC2-Classic. For more information, see Security Groups for Your in the -// Amazon Virtual Private Cloud User Guide Each rule consists of the -// protocol (for example, plus either a range or a source group. For the -// TCP and UDP protocols, you must also specify the destination port or -// port range. For the protocol, you must also specify the type and code. -// You can use -1 for the type or code to mean all types or all codes. Rule -// changes are propagated to affected instances as quickly as possible. -// However, a small delay might occur. -func (c *EC2) AuthorizeSecurityGroupEgress(req *AuthorizeSecurityGroupEgressRequest) (err error) { - // NRE - err = c.client.Do("AuthorizeSecurityGroupEgress", "POST", "/", req, nil) - return -} - -// AuthorizeSecurityGroupIngress adds one or more ingress rules to a -// security group. EC2-Classic: You can have up to 100 rules per group. -// EC2-VPC: You can have up to 50 rules per group (covering both ingress -// and egress rules). Rule changes are propagated to instances within the -// security group as quickly as possible. However, a small delay might -// occur. [EC2-Classic] This action gives one or more IP address ranges -// permission to access a security group in your account, or gives one or -// more security groups (called the source groups ) permission to access a -// security group for your account. A source group can be for your own AWS -// account, or another. [EC2-VPC] This action gives one or more IP address -// ranges permission to access a security group in your or gives one or -// more other security groups (called the source groups ) permission to -// access a security group for your The security groups must all be for the -// same -func (c *EC2) AuthorizeSecurityGroupIngress(req *AuthorizeSecurityGroupIngressRequest) (err error) { - // NRE - err = c.client.Do("AuthorizeSecurityGroupIngress", "POST", "/", req, nil) - return -} - -// BundleInstance bundles an Amazon instance store-backed Windows instance. -// During bundling, only the root device volume is bundled. Data on other -// instance store volumes is not preserved. This action is not applicable -// for Linux/Unix instances or Windows instances that are backed by Amazon -// For more information, see Creating an Instance Store-Backed Windows -func (c *EC2) BundleInstance(req *BundleInstanceRequest) (resp *BundleInstanceResult, err error) { - resp = &BundleInstanceResult{} - err = c.client.Do("BundleInstance", "POST", "/", req, resp) - return -} - -// CancelBundleTask cancels a bundling operation for an instance -// store-backed Windows instance. -func (c *EC2) CancelBundleTask(req *CancelBundleTaskRequest) (resp *CancelBundleTaskResult, err error) { - resp = &CancelBundleTaskResult{} - err = c.client.Do("CancelBundleTask", "POST", "/", req, resp) - return -} - -// CancelConversionTask cancels an active conversion task. The task can be -// the import of an instance or volume. The action removes all artifacts of -// the conversion, including a partially uploaded volume or instance. If -// the conversion is complete or is in the process of transferring the -// final disk image, the command fails and returns an exception. For more -// information, see Using the Command Line Tools to Import Your Virtual -// Machine to Amazon EC2 in the Amazon Elastic Compute Cloud User Guide for -// Linux -func (c *EC2) CancelConversionTask(req *CancelConversionRequest) (err error) { - // NRE - err = c.client.Do("CancelConversionTask", "POST", "/", req, nil) - return -} - -// CancelExportTask cancels an active export task. The request removes all -// artifacts of the export, including any partially-created Amazon S3 -// objects. If the export task is complete or is in the process of -// transferring the final disk image, the command fails and returns an -// error. -func (c *EC2) CancelExportTask(req *CancelExportTaskRequest) (err error) { - // NRE - err = c.client.Do("CancelExportTask", "POST", "/", req, nil) - return -} - -// CancelReservedInstancesListing cancels the specified Reserved Instance -// listing in the Reserved Instance Marketplace. For more information, see -// Reserved Instance Marketplace in the Amazon Elastic Compute Cloud User -// Guide for Linux -func (c *EC2) CancelReservedInstancesListing(req *CancelReservedInstancesListingRequest) (resp *CancelReservedInstancesListingResult, err error) { - resp = &CancelReservedInstancesListingResult{} - err = c.client.Do("CancelReservedInstancesListing", "POST", "/", req, resp) - return -} - -// CancelSpotInstanceRequests cancels one or more Spot Instance requests. -// Spot Instances are instances that Amazon EC2 starts on your behalf when -// the bid price that you specify exceeds the current Spot Price. Amazon -// EC2 periodically sets the Spot Price based on available Spot Instance -// capacity and current Spot Instance requests. For more information, see -// Spot Instance Requests in the Amazon Elastic Compute Cloud User Guide -// for Linux Canceling a Spot Instance request does not terminate running -// Spot Instances associated with the request. -func (c *EC2) CancelSpotInstanceRequests(req *CancelSpotInstanceRequestsRequest) (resp *CancelSpotInstanceRequestsResult, err error) { - resp = &CancelSpotInstanceRequestsResult{} - err = c.client.Do("CancelSpotInstanceRequests", "POST", "/", req, resp) - return -} - -// ConfirmProductInstance determines whether a product code is associated -// with an instance. This action can only be used by the owner of the -// product code. It is useful when a product code owner needs to verify -// whether another user's instance is eligible for support. -func (c *EC2) ConfirmProductInstance(req *ConfirmProductInstanceRequest) (resp *ConfirmProductInstanceResult, err error) { - resp = &ConfirmProductInstanceResult{} - err = c.client.Do("ConfirmProductInstance", "POST", "/", req, resp) - return -} - -// CopyImage initiates the copy of an AMI from the specified source region -// to the current region. You specify the destination region by using its -// endpoint when making the request. AMIs that use encrypted Amazon EBS -// snapshots cannot be copied with this method. For more information, see -// Copying AMIs in the Amazon Elastic Compute Cloud User Guide for Linux -func (c *EC2) CopyImage(req *CopyImageRequest) (resp *CopyImageResult, err error) { - resp = &CopyImageResult{} - err = c.client.Do("CopyImage", "POST", "/", req, resp) - return -} - -// CopySnapshot copies a point-in-time snapshot of an Amazon EBS volume and -// stores it in Amazon S3. You can copy the snapshot within the same region -// or from one region to another. You can use the snapshot to create Amazon -// EBS volumes or Amazon Machine Images (AMIs). The snapshot is copied to -// the regional endpoint that you send the request to. Copies of encrypted -// Amazon EBS snapshots remain encrypted. Copies of unencrypted snapshots -// remain unencrypted. Copying snapshots that were encrypted with -// non-default AWS Key Management Service master keys is not supported at -// this time. For more information, see Copying an Amazon EBS Snapshot in -// the Amazon Elastic Compute Cloud User Guide for Linux -func (c *EC2) CopySnapshot(req *CopySnapshotRequest) (resp *CopySnapshotResult, err error) { - resp = &CopySnapshotResult{} - err = c.client.Do("CopySnapshot", "POST", "/", req, resp) - return -} - -// CreateCustomerGateway provides information to AWS about your VPN -// customer gateway device. The customer gateway is the appliance at your -// end of the VPN connection. (The device on the AWS side of the VPN -// connection is the virtual private gateway.) You must provide the -// Internet-routable IP address of the customer gateway's external -// interface. The IP address must be static and can't be behind a device -// performing network address translation For devices that use Border -// Gateway Protocol you can also provide the device's BGP Autonomous System -// Number You can use an existing ASN assigned to your network. If you -// don't have an ASN already, you can use a private ASN (in the 64512 - -// 65534 range). Amazon EC2 supports all 2-byte ASN numbers in the range of -// 1 - 65534, with the exception of 7224, which is reserved in the -// us-east-1 region, and 9059, which is reserved in the eu-west-1 region. -// For more information about VPN customer gateways, see Adding a Hardware -// Virtual Private Gateway to Your in the Amazon Virtual Private Cloud User -// Guide -func (c *EC2) CreateCustomerGateway(req *CreateCustomerGatewayRequest) (resp *CreateCustomerGatewayResult, err error) { - resp = &CreateCustomerGatewayResult{} - err = c.client.Do("CreateCustomerGateway", "POST", "/", req, resp) - return -} - -// CreateDHCPOptions creates a set of options for your After creating the -// set, you must associate it with the causing all existing and new -// instances that you launch in the VPC to use this set of options. The -// following are the individual options you can specify. For more -// information about the options, see RFC 2132 domain-name-servers - The IP -// addresses of up to four domain name servers, or AmazonProvidedDNS . The -// default option set specifies AmazonProvidedDNS . If specifying more than -// one domain name server, specify the IP addresses in a single parameter, -// separated by commas. domain-name - If you're using AmazonProvidedDNS in -// us-east-1 , specify ec2.internal . If you're using AmazonProvidedDNS in -// another region, specify region.compute.internal (for example, -// ap-northeast-1.compute.internal ). Otherwise, specify a domain name (for -// example, MyCompany.com ). Important : Some Linux operating systems -// accept multiple domain names separated by spaces. However, Windows and -// other Linux operating systems treat the value as a single domain, which -// results in unexpected behavior. If your options set is associated with a -// VPC that has instances with multiple operating systems, specify only one -// domain name. ntp-servers - The IP addresses of up to four Network Time -// Protocol servers. netbios-name-servers - The IP addresses of up to four -// NetBIOS name servers. netbios-node-type - The NetBIOS node type (1, 2, -// 4, or 8). We recommend that you specify 2 (broadcast and multicast are -// not currently supported). For more information about these node types, -// see RFC 2132 . Your VPC automatically starts out with a set of options -// that includes only a DNS server that we provide (AmazonProvidedDNS). If -// you create a set of options, and if your VPC has an Internet gateway, -// make sure to set the domain-name-servers option either to -// AmazonProvidedDNS or to a domain name server of your choice. For more -// information about options, see Options Sets in the Amazon Virtual -// Private Cloud User Guide -func (c *EC2) CreateDHCPOptions(req *CreateDHCPOptionsRequest) (resp *CreateDHCPOptionsResult, err error) { - resp = &CreateDHCPOptionsResult{} - err = c.client.Do("CreateDhcpOptions", "POST", "/", req, resp) - return -} - -// CreateImage creates an Amazon EBS-backed AMI from an Amazon EBS-backed -// instance that is either running or stopped. If you customized your -// instance with instance store volumes or EBS volumes in addition to the -// root device volume, the new AMI contains block device mapping -// information for those volumes. When you launch an instance from this new -// the instance automatically launches with those additional volumes. For -// more information, see Creating Amazon EBS-Backed Linux AMIs in the -// Amazon Elastic Compute Cloud User Guide for Linux -func (c *EC2) CreateImage(req *CreateImageRequest) (resp *CreateImageResult, err error) { - resp = &CreateImageResult{} - err = c.client.Do("CreateImage", "POST", "/", req, resp) - return -} - -// CreateInstanceExportTask exports a running or stopped instance to an -// Amazon S3 bucket. For information about the supported operating systems, -// image formats, and known limitations for the types of instances you can -// export, see Exporting EC2 Instances in the Amazon Elastic Compute Cloud -// User Guide for Linux -func (c *EC2) CreateInstanceExportTask(req *CreateInstanceExportTaskRequest) (resp *CreateInstanceExportTaskResult, err error) { - resp = &CreateInstanceExportTaskResult{} - err = c.client.Do("CreateInstanceExportTask", "POST", "/", req, resp) - return -} - -// CreateInternetGateway creates an Internet gateway for use with a After -// creating the Internet gateway, you attach it to a VPC using -// AttachInternetGateway For more information about your VPC and Internet -// gateway, see the Amazon Virtual Private Cloud User Guide -func (c *EC2) CreateInternetGateway(req *CreateInternetGatewayRequest) (resp *CreateInternetGatewayResult, err error) { - resp = &CreateInternetGatewayResult{} - err = c.client.Do("CreateInternetGateway", "POST", "/", req, resp) - return -} - -// CreateKeyPair creates a 2048-bit RSA key pair with the specified name. -// Amazon EC2 stores the public key and displays the private key for you to -// save to a file. The private key is returned as an unencrypted PEM -// encoded PKCS#8 private key. If a key with the specified name already -// exists, Amazon EC2 returns an error. You can have up to five thousand -// key pairs per region. The key pair returned to you is available only in -// the region in which you create it. To create a key pair that is -// available in all regions, use ImportKeyPair For more information about -// key pairs, see Key Pairs in the Amazon Elastic Compute Cloud User Guide -// for Linux -func (c *EC2) CreateKeyPair(req *CreateKeyPairRequest) (resp *KeyPair, err error) { - resp = &KeyPair{} - err = c.client.Do("CreateKeyPair", "POST", "/", req, resp) - return -} - -// CreateNetworkACL creates a network ACL in a Network ACLs provide an -// optional layer of security (in addition to security groups) for the -// instances in your For more information about network ACLs, see Network -// ACLs in the Amazon Virtual Private Cloud User Guide -func (c *EC2) CreateNetworkACL(req *CreateNetworkACLRequest) (resp *CreateNetworkACLResult, err error) { - resp = &CreateNetworkACLResult{} - err = c.client.Do("CreateNetworkAcl", "POST", "/", req, resp) - return -} - -// CreateNetworkACLEntry creates an entry (a rule) in a network ACL with -// the specified rule number. Each network ACL has a set of numbered -// ingress rules and a separate set of numbered egress rules. When -// determining whether a packet should be allowed in or out of a subnet -// associated with the we process the entries in the ACL according to the -// rule numbers, in ascending order. Each network ACL has a set of ingress -// rules and a separate set of egress rules. We recommend that you leave -// room between the rule numbers (for example, 100, 110, 120, and not -// number them one right after the other (for example, 101, 102, 103, This -// makes it easier to add a rule between existing ones without having to -// renumber the rules. After you add an entry, you can't modify it; you -// must either replace it, or create an entry and delete the old one. For -// more information about network ACLs, see Network ACLs in the Amazon -// Virtual Private Cloud User Guide -func (c *EC2) CreateNetworkACLEntry(req *CreateNetworkACLEntryRequest) (err error) { - // NRE - err = c.client.Do("CreateNetworkAclEntry", "POST", "/", req, nil) - return -} - -// CreateNetworkInterface creates a network interface in the specified -// subnet. For more information about network interfaces, see Elastic -// Network Interfaces in the Amazon Elastic Compute Cloud User Guide for -// Linux -func (c *EC2) CreateNetworkInterface(req *CreateNetworkInterfaceRequest) (resp *CreateNetworkInterfaceResult, err error) { - resp = &CreateNetworkInterfaceResult{} - err = c.client.Do("CreateNetworkInterface", "POST", "/", req, resp) - return -} - -// CreatePlacementGroup creates a placement group that you launch cluster -// instances into. You must give the group a name that's unique within the -// scope of your account. For more information about placement groups and -// cluster instances, see Cluster Instances in the Amazon Elastic Compute -// Cloud User Guide for Linux -func (c *EC2) CreatePlacementGroup(req *CreatePlacementGroupRequest) (err error) { - // NRE - err = c.client.Do("CreatePlacementGroup", "POST", "/", req, nil) - return -} - -// CreateReservedInstancesListing creates a listing for Amazon EC2 Reserved -// Instances to be sold in the Reserved Instance Marketplace. You can -// submit one Reserved Instance listing at a time. To get a list of your -// Reserved Instances, you can use the DescribeReservedInstances operation. -// The Reserved Instance Marketplace matches sellers who want to resell -// Reserved Instance capacity that they no longer need with buyers who want -// to purchase additional capacity. Reserved Instances bought and sold -// through the Reserved Instance Marketplace work like any other Reserved -// Instances. To sell your Reserved Instances, you must first register as a -// Seller in the Reserved Instance Marketplace. After completing the -// registration process, you can create a Reserved Instance Marketplace -// listing of some or all of your Reserved Instances, and specify the -// upfront price to receive for them. Your Reserved Instance listings then -// become available for purchase. To view the details of your Reserved -// Instance listing, you can use the DescribeReservedInstancesListings -// operation. For more information, see Reserved Instance Marketplace in -// the Amazon Elastic Compute Cloud User Guide for Linux -func (c *EC2) CreateReservedInstancesListing(req *CreateReservedInstancesListingRequest) (resp *CreateReservedInstancesListingResult, err error) { - resp = &CreateReservedInstancesListingResult{} - err = c.client.Do("CreateReservedInstancesListing", "POST", "/", req, resp) - return -} - -// CreateRoute creates a route in a route table within a You must specify -// one of the following targets: Internet gateway or virtual private -// gateway, NAT instance, VPC peering connection, or network interface. -// When determining how to route traffic, we use the route with the most -// specific match. For example, let's say the traffic is destined for -// 192.0.2.3 , and the route table includes the following two routes: -// 192.0.2.0/24 (goes to some target 192.0.2.0/28 (goes to some target Both -// routes apply to the traffic destined for 192.0.2.3 . However, the second -// route in the list covers a smaller number of IP addresses and is -// therefore more specific, so we use that route to determine where to -// target the traffic. For more information about route tables, see Route -// Tables in the Amazon Virtual Private Cloud User Guide -func (c *EC2) CreateRoute(req *CreateRouteRequest) (err error) { - // NRE - err = c.client.Do("CreateRoute", "POST", "/", req, nil) - return -} - -// CreateRouteTable creates a route table for the specified After you -// create a route table, you can add routes and associate the table with a -// subnet. For more information about route tables, see Route Tables in the -// Amazon Virtual Private Cloud User Guide -func (c *EC2) CreateRouteTable(req *CreateRouteTableRequest) (resp *CreateRouteTableResult, err error) { - resp = &CreateRouteTableResult{} - err = c.client.Do("CreateRouteTable", "POST", "/", req, resp) - return -} - -// CreateSecurityGroup creates a security group. A security group is for -// use with instances either in the EC2-Classic platform or in a specific -// For more information, see Amazon EC2 Security Groups in the Amazon -// Elastic Compute Cloud User Guide for Linux and Security Groups for Your -// in the Amazon Virtual Private Cloud User Guide EC2-Classic: You can have -// up to 500 security groups. EC2-VPC: You can create up to 100 security -// groups per When you create a security group, you specify a friendly name -// of your choice. You can have a security group for use in EC2-Classic -// with the same name as a security group for use in a However, you can't -// have two security groups for use in EC2-Classic with the same name or -// two security groups for use in a VPC with the same name. You have a -// default security group for use in EC2-Classic and a default security -// group for use in your If you don't specify a security group when you -// launch an instance, the instance is launched into the appropriate -// default security group. A default security group includes a default rule -// that grants instances unrestricted network access to each other. You can -// add or remove rules from your security groups using -// AuthorizeSecurityGroupIngress , AuthorizeSecurityGroupEgress , -// RevokeSecurityGroupIngress , and RevokeSecurityGroupEgress -func (c *EC2) CreateSecurityGroup(req *CreateSecurityGroupRequest) (resp *CreateSecurityGroupResult, err error) { - resp = &CreateSecurityGroupResult{} - err = c.client.Do("CreateSecurityGroup", "POST", "/", req, resp) - return -} - -// CreateSnapshot creates a snapshot of an Amazon EBS volume and stores it -// in Amazon S3. You can use snapshots for backups, to make copies of -// Amazon EBS volumes, and to save data before shutting down an instance. -// When a snapshot is created, any AWS Marketplace product codes that are -// associated with the source volume are propagated to the snapshot. You -// can take a snapshot of an attached volume that is in use. However, -// snapshots only capture data that has been written to your Amazon EBS -// volume at the time the snapshot command is issued; this may exclude any -// data that has been cached by any applications or the operating system. -// If you can pause any file systems on the volume long enough to take a -// snapshot, your snapshot should be complete. However, if you cannot pause -// all file writes to the volume, you should unmount the volume from within -// the instance, issue the snapshot command, and then remount the volume to -// ensure a consistent and complete snapshot. You may remount and use your -// volume while the snapshot status is pending To create a snapshot for -// Amazon EBS volumes that serve as root devices, you should stop the -// instance before taking the snapshot. Snapshots that are taken from -// encrypted volumes are automatically encrypted. Volumes that are created -// from encrypted snapshots are also automatically encrypted. Your -// encrypted volumes and any associated snapshots always remain protected. -// For more information, see Amazon Elastic Block Store and Amazon EBS -// Encryption in the Amazon Elastic Compute Cloud User Guide for Linux -func (c *EC2) CreateSnapshot(req *CreateSnapshotRequest) (resp *Snapshot, err error) { - resp = &Snapshot{} - err = c.client.Do("CreateSnapshot", "POST", "/", req, resp) - return -} - -// CreateSpotDatafeedSubscription creates a data feed for Spot Instances, -// enabling you to view Spot Instance usage logs. You can create one data -// feed per AWS account. For more information, see Spot Instance Data Feed -// in the Amazon Elastic Compute Cloud User Guide for Linux -func (c *EC2) CreateSpotDatafeedSubscription(req *CreateSpotDatafeedSubscriptionRequest) (resp *CreateSpotDatafeedSubscriptionResult, err error) { - resp = &CreateSpotDatafeedSubscriptionResult{} - err = c.client.Do("CreateSpotDatafeedSubscription", "POST", "/", req, resp) - return -} - -// CreateSubnet creates a subnet in an existing When you create each -// subnet, you provide the VPC ID and the block you want for the subnet. -// After you create a subnet, you can't change its block. The subnet's -// block can be the same as the VPC's block (assuming you want only a -// single subnet in the or a subset of the VPC's block. If you create more -// than one subnet in a the subnets' blocks must not overlap. The smallest -// subnet (and you can create uses a /28 netmask (16 IP addresses), and the -// largest uses a /16 netmask (65,536 IP addresses). AWS reserves both the -// first four and the last IP address in each subnet's block. They're not -// available for use. If you add more than one subnet to a they're set up -// in a star topology with a logical router in the middle. If you launch an -// instance in a VPC using an Amazon EBS-backed the IP address doesn't -// change if you stop and restart the instance (unlike a similar instance -// launched outside a which gets a new IP address when restarted). It's -// therefore possible to have a subnet with no running instances (they're -// all stopped), but no remaining IP addresses available. For more -// information about subnets, see Your VPC and Subnets in the Amazon -// Virtual Private Cloud User Guide -func (c *EC2) CreateSubnet(req *CreateSubnetRequest) (resp *CreateSubnetResult, err error) { - resp = &CreateSubnetResult{} - err = c.client.Do("CreateSubnet", "POST", "/", req, resp) - return -} - -// CreateTags adds or overwrites one or more tags for the specified Amazon -// EC2 resource or resources. Each resource can have a maximum of 10 tags. -// Each tag consists of a key and optional value. Tag keys must be unique -// per resource. For more information about tags, see Tagging Your -// Resources in the Amazon Elastic Compute Cloud User Guide for Linux -func (c *EC2) CreateTags(req *CreateTagsRequest) (err error) { - // NRE - err = c.client.Do("CreateTags", "POST", "/", req, nil) - return -} - -// CreateVolume creates an Amazon EBS volume that can be attached to an -// instance in the same Availability Zone. The volume is created in the -// regional endpoint that you send the request to. For more information see -// Regions and Endpoints You can create a new empty volume or restore a -// volume from an Amazon EBS snapshot. Any AWS Marketplace product codes -// from the snapshot are propagated to the volume. You can create encrypted -// volumes with the Encrypted parameter. Encrypted volumes may only be -// attached to instances that support Amazon EBS encryption. Volumes that -// are created from encrypted snapshots are also automatically encrypted. -// For more information, see Amazon EBS Encryption in the Amazon Elastic -// Compute Cloud User Guide for Linux For more information, see Creating or -// Restoring an Amazon EBS Volume in the Amazon Elastic Compute Cloud User -// Guide for Linux -func (c *EC2) CreateVolume(req *CreateVolumeRequest) (resp *Volume, err error) { - resp = &Volume{} - err = c.client.Do("CreateVolume", "POST", "/", req, resp) - return -} - -// CreateVPC creates a VPC with the specified block. The smallest VPC you -// can create uses a /28 netmask (16 IP addresses), and the largest uses a -// /16 netmask (65,536 IP addresses). To help you decide how big to make -// your see Your VPC and Subnets in the Amazon Virtual Private Cloud User -// Guide By default, each instance you launch in the VPC has the default -// options, which includes only a default DNS server that we provide -// (AmazonProvidedDNS). For more information about options, see Options -// Sets in the Amazon Virtual Private Cloud User Guide -func (c *EC2) CreateVPC(req *CreateVPCRequest) (resp *CreateVPCResult, err error) { - resp = &CreateVPCResult{} - err = c.client.Do("CreateVpc", "POST", "/", req, resp) - return -} - -// CreateVPCPeeringConnection requests a VPC peering connection between two -// VPCs: a requester VPC that you own and a peer VPC with which to create -// the connection. The peer VPC can belong to another AWS account. The -// requester VPC and peer VPC cannot have overlapping blocks. The owner of -// the peer VPC must accept the peering request to activate the peering -// connection. The VPC peering connection request expires after 7 days, -// after which it cannot be accepted or rejected. A -// CreateVpcPeeringConnection request between VPCs with overlapping blocks -// results in the VPC peering connection having a status of failed -func (c *EC2) CreateVPCPeeringConnection(req *CreateVPCPeeringConnectionRequest) (resp *CreateVPCPeeringConnectionResult, err error) { - resp = &CreateVPCPeeringConnectionResult{} - err = c.client.Do("CreateVpcPeeringConnection", "POST", "/", req, resp) - return -} - -// CreateVPNConnection creates a VPN connection between an existing virtual -// private gateway and a VPN customer gateway. The only supported -// connection type is ipsec.1 The response includes information that you -// need to give to your network administrator to configure your customer -// gateway. We strongly recommend that you use when calling this operation -// because the response contains sensitive cryptographic information for -// configuring your customer gateway. If you decide to shut down your VPN -// connection for any reason and later create a new VPN connection, you -// must reconfigure your customer gateway with the new information returned -// from this call. For more information about VPN connections, see Adding a -// Hardware Virtual Private Gateway to Your in the Amazon Virtual Private -// Cloud User Guide -func (c *EC2) CreateVPNConnection(req *CreateVPNConnectionRequest) (resp *CreateVPNConnectionResult, err error) { - resp = &CreateVPNConnectionResult{} - err = c.client.Do("CreateVpnConnection", "POST", "/", req, resp) - return -} - -// CreateVPNConnectionRoute creates a static route associated with a VPN -// connection between an existing virtual private gateway and a VPN -// customer gateway. The static route allows traffic to be routed from the -// virtual private gateway to the VPN customer gateway. For more -// information about VPN connections, see Adding a Hardware Virtual Private -// Gateway to Your in the Amazon Virtual Private Cloud User Guide -func (c *EC2) CreateVPNConnectionRoute(req *CreateVPNConnectionRouteRequest) (err error) { - // NRE - err = c.client.Do("CreateVpnConnectionRoute", "POST", "/", req, nil) - return -} - -// CreateVPNGateway creates a virtual private gateway. A virtual private -// gateway is the endpoint on the VPC side of your VPN connection. You can -// create a virtual private gateway before creating the VPC itself. For -// more information about virtual private gateways, see Adding a Hardware -// Virtual Private Gateway to Your in the Amazon Virtual Private Cloud User -// Guide -func (c *EC2) CreateVPNGateway(req *CreateVPNGatewayRequest) (resp *CreateVPNGatewayResult, err error) { - resp = &CreateVPNGatewayResult{} - err = c.client.Do("CreateVpnGateway", "POST", "/", req, resp) - return -} - -// DeleteCustomerGateway deletes the specified customer gateway. You must -// delete the VPN connection before you can delete the customer gateway. -func (c *EC2) DeleteCustomerGateway(req *DeleteCustomerGatewayRequest) (err error) { - // NRE - err = c.client.Do("DeleteCustomerGateway", "POST", "/", req, nil) - return -} - -// DeleteDHCPOptions deletes the specified set of options. You must -// disassociate the set of options before you can delete it. You can -// disassociate the set of options by associating either a new set of -// options or the default set of options with the -func (c *EC2) DeleteDHCPOptions(req *DeleteDHCPOptionsRequest) (err error) { - // NRE - err = c.client.Do("DeleteDhcpOptions", "POST", "/", req, nil) - return -} - -// DeleteInternetGateway deletes the specified Internet gateway. You must -// detach the Internet gateway from the VPC before you can delete it. -func (c *EC2) DeleteInternetGateway(req *DeleteInternetGatewayRequest) (err error) { - // NRE - err = c.client.Do("DeleteInternetGateway", "POST", "/", req, nil) - return -} - -// DeleteKeyPair deletes the specified key pair, by removing the public key -// from Amazon EC2. -func (c *EC2) DeleteKeyPair(req *DeleteKeyPairRequest) (err error) { - // NRE - err = c.client.Do("DeleteKeyPair", "POST", "/", req, nil) - return -} - -// DeleteNetworkACL deletes the specified network You can't delete the ACL -// if it's associated with any subnets. You can't delete the default -// network -func (c *EC2) DeleteNetworkACL(req *DeleteNetworkACLRequest) (err error) { - // NRE - err = c.client.Do("DeleteNetworkAcl", "POST", "/", req, nil) - return -} - -// DeleteNetworkACLEntry deletes the specified ingress or egress entry -// (rule) from the specified network -func (c *EC2) DeleteNetworkACLEntry(req *DeleteNetworkACLEntryRequest) (err error) { - // NRE - err = c.client.Do("DeleteNetworkAclEntry", "POST", "/", req, nil) - return -} - -// DeleteNetworkInterface deletes the specified network interface. You must -// detach the network interface before you can delete it. -func (c *EC2) DeleteNetworkInterface(req *DeleteNetworkInterfaceRequest) (err error) { - // NRE - err = c.client.Do("DeleteNetworkInterface", "POST", "/", req, nil) - return -} - -// DeletePlacementGroup deletes the specified placement group. You must -// terminate all instances in the placement group before you can delete the -// placement group. For more information about placement groups and cluster -// instances, see Cluster Instances in the Amazon Elastic Compute Cloud -// User Guide for Linux -func (c *EC2) DeletePlacementGroup(req *DeletePlacementGroupRequest) (err error) { - // NRE - err = c.client.Do("DeletePlacementGroup", "POST", "/", req, nil) - return -} - -// DeleteRoute deletes the specified route from the specified route table. -func (c *EC2) DeleteRoute(req *DeleteRouteRequest) (err error) { - // NRE - err = c.client.Do("DeleteRoute", "POST", "/", req, nil) - return -} - -// DeleteRouteTable deletes the specified route table. You must -// disassociate the route table from any subnets before you can delete it. -// You can't delete the main route table. -func (c *EC2) DeleteRouteTable(req *DeleteRouteTableRequest) (err error) { - // NRE - err = c.client.Do("DeleteRouteTable", "POST", "/", req, nil) - return -} - -// DeleteSecurityGroup deletes a security group. If you attempt to delete a -// security group that is associated with an instance, or is referenced by -// another security group, the operation fails with InvalidGroup.InUse in -// EC2-Classic or DependencyViolation in EC2-VPC. -func (c *EC2) DeleteSecurityGroup(req *DeleteSecurityGroupRequest) (err error) { - // NRE - err = c.client.Do("DeleteSecurityGroup", "POST", "/", req, nil) - return -} - -// DeleteSnapshot deletes the specified snapshot. When you make periodic -// snapshots of a volume, the snapshots are incremental, and only the -// blocks on the device that have changed since your last snapshot are -// saved in the new snapshot. When you delete a snapshot, only the data not -// needed for any other snapshot is removed. So regardless of which prior -// snapshots have been deleted, all active snapshots will have access to -// all the information needed to restore the volume. You cannot delete a -// snapshot of the root device of an Amazon EBS volume used by a registered -// You must first de-register the AMI before you can delete the snapshot. -// For more information, see Deleting an Amazon EBS Snapshot in the Amazon -// Elastic Compute Cloud User Guide for Linux -func (c *EC2) DeleteSnapshot(req *DeleteSnapshotRequest) (err error) { - // NRE - err = c.client.Do("DeleteSnapshot", "POST", "/", req, nil) - return -} - -// DeleteSpotDatafeedSubscription deletes the data feed for Spot Instances. -// For more information, see Spot Instance Data Feed in the Amazon Elastic -// Compute Cloud User Guide for Linux -func (c *EC2) DeleteSpotDatafeedSubscription(req *DeleteSpotDatafeedSubscriptionRequest) (err error) { - // NRE - err = c.client.Do("DeleteSpotDatafeedSubscription", "POST", "/", req, nil) - return -} - -// DeleteSubnet deletes the specified subnet. You must terminate all -// running instances in the subnet before you can delete the subnet. -func (c *EC2) DeleteSubnet(req *DeleteSubnetRequest) (err error) { - // NRE - err = c.client.Do("DeleteSubnet", "POST", "/", req, nil) - return -} - -// DeleteTags deletes the specified set of tags from the specified set of -// resources. This call is designed to follow a DescribeTags request. For -// more information about tags, see Tagging Your Resources in the Amazon -// Elastic Compute Cloud User Guide for Linux -func (c *EC2) DeleteTags(req *DeleteTagsRequest) (err error) { - // NRE - err = c.client.Do("DeleteTags", "POST", "/", req, nil) - return -} - -// DeleteVolume deletes the specified Amazon EBS volume. The volume must be -// in the available state (not attached to an instance). The volume may -// remain in the deleting state for several minutes. For more information, -// see Deleting an Amazon EBS Volume in the Amazon Elastic Compute Cloud -// User Guide for Linux -func (c *EC2) DeleteVolume(req *DeleteVolumeRequest) (err error) { - // NRE - err = c.client.Do("DeleteVolume", "POST", "/", req, nil) - return -} - -// DeleteVPC deletes the specified You must detach or delete all gateways -// and resources that are associated with the VPC before you can delete it. -// For example, you must terminate all instances running in the delete all -// security groups associated with the VPC (except the default one), delete -// all route tables associated with the VPC (except the default one), and -// so on. -func (c *EC2) DeleteVPC(req *DeleteVPCRequest) (err error) { - // NRE - err = c.client.Do("DeleteVpc", "POST", "/", req, nil) - return -} - -// DeleteVPCPeeringConnection deletes a VPC peering connection. Either the -// owner of the requester VPC or the owner of the peer VPC can delete the -// VPC peering connection if it's in the active state. The owner of the -// requester VPC can delete a VPC peering connection in the -// pending-acceptance state. -func (c *EC2) DeleteVPCPeeringConnection(req *DeleteVPCPeeringConnectionRequest) (resp *DeleteVPCPeeringConnectionResult, err error) { - resp = &DeleteVPCPeeringConnectionResult{} - err = c.client.Do("DeleteVpcPeeringConnection", "POST", "/", req, resp) - return -} - -// DeleteVPNConnection deletes the specified VPN connection. If you're -// deleting the VPC and its associated components, we recommend that you -// detach the virtual private gateway from the VPC and delete the VPC -// before deleting the VPN connection. If you believe that the tunnel -// credentials for your VPN connection have been compromised, you can -// delete the VPN connection and create a new one that has new keys, -// without needing to delete the VPC or virtual private gateway. If you -// create a new VPN connection, you must reconfigure the customer gateway -// using the new configuration information returned with the new VPN -// connection -func (c *EC2) DeleteVPNConnection(req *DeleteVPNConnectionRequest) (err error) { - // NRE - err = c.client.Do("DeleteVpnConnection", "POST", "/", req, nil) - return -} - -// DeleteVPNConnectionRoute deletes the specified static route associated -// with a VPN connection between an existing virtual private gateway and a -// VPN customer gateway. The static route allows traffic to be routed from -// the virtual private gateway to the VPN customer gateway. -func (c *EC2) DeleteVPNConnectionRoute(req *DeleteVPNConnectionRouteRequest) (err error) { - // NRE - err = c.client.Do("DeleteVpnConnectionRoute", "POST", "/", req, nil) - return -} - -// DeleteVPNGateway deletes the specified virtual private gateway. We -// recommend that before you delete a virtual private gateway, you detach -// it from the VPC and delete the VPN connection. Note that you don't need -// to delete the virtual private gateway if you plan to delete and recreate -// the VPN connection between your VPC and your network. -func (c *EC2) DeleteVPNGateway(req *DeleteVPNGatewayRequest) (err error) { - // NRE - err = c.client.Do("DeleteVpnGateway", "POST", "/", req, nil) - return -} - -// DeregisterImage deregisters the specified After you deregister an it -// can't be used to launch new instances. This command does not delete the -func (c *EC2) DeregisterImage(req *DeregisterImageRequest) (err error) { - // NRE - err = c.client.Do("DeregisterImage", "POST", "/", req, nil) - return -} - -// DescribeAccountAttributes describes attributes of your AWS account. The -// following are the supported account attributes: supported-platforms : -// Indicates whether your account can launch instances into EC2-Classic and -// EC2-VPC, or only into EC2-VPC. default-vpc : The ID of the default VPC -// for your account, or none max-instances : The maximum number of -// On-Demand instances that you can run. -// vpc-max-security-groups-per-interface : The maximum number of security -// groups that you can assign to a network interface. max-elastic-ips : The -// maximum number of Elastic IP addresses that you can allocate for use -// with EC2-Classic. vpc-max-elastic-ips : The maximum number of Elastic IP -// addresses that you can allocate for use with EC2-VPC. -func (c *EC2) DescribeAccountAttributes(req *DescribeAccountAttributesRequest) (resp *DescribeAccountAttributesResult, err error) { - resp = &DescribeAccountAttributesResult{} - err = c.client.Do("DescribeAccountAttributes", "POST", "/", req, resp) - return -} - -// DescribeAddresses describes one or more of your Elastic IP addresses. An -// Elastic IP address is for use in either the EC2-Classic platform or in a -// For more information, see Elastic IP Addresses in the Amazon Elastic -// Compute Cloud User Guide for Linux -func (c *EC2) DescribeAddresses(req *DescribeAddressesRequest) (resp *DescribeAddressesResult, err error) { - resp = &DescribeAddressesResult{} - err = c.client.Do("DescribeAddresses", "POST", "/", req, resp) - return -} - -// DescribeAvailabilityZones describes one or more of the Availability -// Zones that are available to you. The results include zones only for the -// region you're currently using. If there is an event impacting an -// Availability Zone, you can use this request to view the state and any -// provided message for that Availability Zone. For more information, see -// Regions and Availability Zones in the Amazon Elastic Compute Cloud User -// Guide for Linux -func (c *EC2) DescribeAvailabilityZones(req *DescribeAvailabilityZonesRequest) (resp *DescribeAvailabilityZonesResult, err error) { - resp = &DescribeAvailabilityZonesResult{} - err = c.client.Do("DescribeAvailabilityZones", "POST", "/", req, resp) - return -} - -// DescribeBundleTasks describes one or more of your bundling tasks. -// Completed bundle tasks are listed for only a limited time. If your -// bundle task is no longer in the list, you can still register an AMI from -// it. Just use RegisterImage with the Amazon S3 bucket name and image -// manifest name you provided to the bundle task. -func (c *EC2) DescribeBundleTasks(req *DescribeBundleTasksRequest) (resp *DescribeBundleTasksResult, err error) { - resp = &DescribeBundleTasksResult{} - err = c.client.Do("DescribeBundleTasks", "POST", "/", req, resp) - return -} - -// DescribeClassicLinkInstances describes one or more of your linked -// EC2-Classic instances. This request only returns information about -// EC2-Classic instances linked to a VPC through ClassicLink; you cannot -// use this request to return information about other instances. -func (c *EC2) DescribeClassicLinkInstances(req *DescribeClassicLinkInstancesRequest) (resp *DescribeClassicLinkInstancesResult, err error) { - resp = &DescribeClassicLinkInstancesResult{} - err = c.client.Do("DescribeClassicLinkInstances", "POST", "/", req, resp) - return -} - -// DescribeConversionTasks describes one or more of your conversion tasks. -// For more information, see Using the Command Line Tools to Import Your -// Virtual Machine to Amazon EC2 in the Amazon Elastic Compute Cloud User -// Guide for Linux -func (c *EC2) DescribeConversionTasks(req *DescribeConversionTasksRequest) (resp *DescribeConversionTasksResult, err error) { - resp = &DescribeConversionTasksResult{} - err = c.client.Do("DescribeConversionTasks", "POST", "/", req, resp) - return -} - -// DescribeCustomerGateways describes one or more of your VPN customer -// gateways. For more information about VPN customer gateways, see Adding a -// Hardware Virtual Private Gateway to Your in the Amazon Virtual Private -// Cloud User Guide -func (c *EC2) DescribeCustomerGateways(req *DescribeCustomerGatewaysRequest) (resp *DescribeCustomerGatewaysResult, err error) { - resp = &DescribeCustomerGatewaysResult{} - err = c.client.Do("DescribeCustomerGateways", "POST", "/", req, resp) - return -} - -// DescribeDHCPOptions describes one or more of your options sets. For more -// information about options sets, see Options Sets in the Amazon Virtual -// Private Cloud User Guide -func (c *EC2) DescribeDHCPOptions(req *DescribeDHCPOptionsRequest) (resp *DescribeDHCPOptionsResult, err error) { - resp = &DescribeDHCPOptionsResult{} - err = c.client.Do("DescribeDhcpOptions", "POST", "/", req, resp) - return -} - -// DescribeExportTasks is undocumented. -func (c *EC2) DescribeExportTasks(req *DescribeExportTasksRequest) (resp *DescribeExportTasksResult, err error) { - resp = &DescribeExportTasksResult{} - err = c.client.Do("DescribeExportTasks", "POST", "/", req, resp) - return -} - -// DescribeImageAttribute describes the specified attribute of the -// specified You can specify only one attribute at a time. -func (c *EC2) DescribeImageAttribute(req *DescribeImageAttributeRequest) (resp *ImageAttribute, err error) { - resp = &ImageAttribute{} - err = c.client.Do("DescribeImageAttribute", "POST", "/", req, resp) - return -} - -// DescribeImages describes one or more of the images (AMIs, AKIs, and -// ARIs) available to you. Images available to you include public images, -// private images that you own, and private images owned by other AWS -// accounts but for which you have explicit launch permissions. -// Deregistered images are included in the returned results for an -// unspecified interval after deregistration. -func (c *EC2) DescribeImages(req *DescribeImagesRequest) (resp *DescribeImagesResult, err error) { - resp = &DescribeImagesResult{} - err = c.client.Do("DescribeImages", "POST", "/", req, resp) - return -} - -// DescribeInstanceAttribute describes the specified attribute of the -// specified instance. You can specify only one attribute at a time. Valid -// attribute values are: instanceType | kernel | ramdisk | userData | -// disableApiTermination | instanceInitiatedShutdownBehavior | -// rootDeviceName | blockDeviceMapping | productCodes | sourceDestCheck | -// groupSet | ebsOptimized | sriovNetSupport -func (c *EC2) DescribeInstanceAttribute(req *DescribeInstanceAttributeRequest) (resp *InstanceAttribute, err error) { - resp = &InstanceAttribute{} - err = c.client.Do("DescribeInstanceAttribute", "POST", "/", req, resp) - return -} - -// DescribeInstanceStatus describes the status of one or more instances, -// including any scheduled events. Instance status has two main components: -// System Status reports impaired functionality that stems from issues -// related to the systems that support an instance, such as such as -// hardware failures and network connectivity problems. This call reports -// such problems as impaired reachability. Instance Status reports impaired -// functionality that arises from problems internal to the instance. This -// call reports such problems as impaired reachability. Instance status -// provides information about four types of scheduled events for an -// instance that may require your attention: Scheduled Reboot: When Amazon -// EC2 determines that an instance must be rebooted, the instances status -// returns one of two event codes: system-reboot or instance-reboot . -// System reboot commonly occurs if certain maintenance or upgrade -// operations require a reboot of the underlying host that supports an -// instance. Instance reboot commonly occurs if the instance must be -// rebooted, rather than the underlying host. Rebooting events include a -// scheduled start and end time. System Maintenance: When Amazon EC2 -// determines that an instance requires maintenance that requires power or -// network impact, the instance status is the event code system-maintenance -// . System maintenance is either power maintenance or network maintenance. -// For power maintenance, your instance will be unavailable for a brief -// period of time and then rebooted. For network maintenance, your instance -// will experience a brief loss of network connectivity. System maintenance -// events include a scheduled start and end time. You will also be notified -// by email if one of your instances is set for system maintenance. The -// email message indicates when your instance is scheduled for maintenance. -// Scheduled Retirement: When Amazon EC2 determines that an instance must -// be shut down, the instance status is the event code instance-retirement -// . Retirement commonly occurs when the underlying host is degraded and -// must be replaced. Retirement events include a scheduled start and end -// time. You will also be notified by email if one of your instances is set -// to retiring. The email message indicates when your instance will be -// permanently retired. Scheduled Stop: When Amazon EC2 determines that an -// instance must be shut down, the instances status returns an event code -// called instance-stop . Stop events include a scheduled start and end -// time. You will also be notified by email if one of your instances is set -// to stop. The email message indicates when your instance will be stopped. -// When your instance is retired, it will either be terminated (if its root -// device type is the instance-store) or stopped (if its root device type -// is an EBS volume). Instances stopped due to retirement will not be -// restarted, but you can do so manually. You can also avoid retirement of -// EBS-backed instances by manually restarting your instance when its event -// code is instance-retirement . This ensures that your instance is started -// on a different underlying host. For more information about failed status -// checks, see Troubleshooting Instances with Failed Status Checks in the -// Amazon Elastic Compute Cloud User Guide for Linux . For more information -// about working with scheduled events, see Working with an Instance That -// Has a Scheduled Event in the Amazon Elastic Compute Cloud User Guide for -// Linux -func (c *EC2) DescribeInstanceStatus(req *DescribeInstanceStatusRequest) (resp *DescribeInstanceStatusResult, err error) { - resp = &DescribeInstanceStatusResult{} - err = c.client.Do("DescribeInstanceStatus", "POST", "/", req, resp) - return -} - -// DescribeInstances describes one or more of your instances. If you -// specify one or more instance IDs, Amazon EC2 returns information for -// those instances. If you do not specify instance IDs, Amazon EC2 returns -// information for all relevant instances. If you specify an instance ID -// that is not valid, an error is returned. If you specify an instance that -// you do not own, it is not included in the returned results. Recently -// terminated instances might appear in the returned results. This interval -// is usually less than one hour. -func (c *EC2) DescribeInstances(req *DescribeInstancesRequest) (resp *DescribeInstancesResult, err error) { - resp = &DescribeInstancesResult{} - err = c.client.Do("DescribeInstances", "POST", "/", req, resp) - return -} - -// DescribeInternetGateways is undocumented. -func (c *EC2) DescribeInternetGateways(req *DescribeInternetGatewaysRequest) (resp *DescribeInternetGatewaysResult, err error) { - resp = &DescribeInternetGatewaysResult{} - err = c.client.Do("DescribeInternetGateways", "POST", "/", req, resp) - return -} - -// DescribeKeyPairs describes one or more of your key pairs. For more -// information about key pairs, see Key Pairs in the Amazon Elastic Compute -// Cloud User Guide for Linux -func (c *EC2) DescribeKeyPairs(req *DescribeKeyPairsRequest) (resp *DescribeKeyPairsResult, err error) { - resp = &DescribeKeyPairsResult{} - err = c.client.Do("DescribeKeyPairs", "POST", "/", req, resp) - return -} - -// DescribeNetworkACLs describes one or more of your network ACLs. For more -// information about network ACLs, see Network ACLs in the Amazon Virtual -// Private Cloud User Guide -func (c *EC2) DescribeNetworkACLs(req *DescribeNetworkACLsRequest) (resp *DescribeNetworkACLsResult, err error) { - resp = &DescribeNetworkACLsResult{} - err = c.client.Do("DescribeNetworkAcls", "POST", "/", req, resp) - return -} - -// DescribeNetworkInterfaceAttribute describes a network interface -// attribute. You can specify only one attribute at a time. -func (c *EC2) DescribeNetworkInterfaceAttribute(req *DescribeNetworkInterfaceAttributeRequest) (resp *DescribeNetworkInterfaceAttributeResult, err error) { - resp = &DescribeNetworkInterfaceAttributeResult{} - err = c.client.Do("DescribeNetworkInterfaceAttribute", "POST", "/", req, resp) - return -} - -// DescribeNetworkInterfaces is undocumented. -func (c *EC2) DescribeNetworkInterfaces(req *DescribeNetworkInterfacesRequest) (resp *DescribeNetworkInterfacesResult, err error) { - resp = &DescribeNetworkInterfacesResult{} - err = c.client.Do("DescribeNetworkInterfaces", "POST", "/", req, resp) - return -} - -// DescribePlacementGroups describes one or more of your placement groups. -// For more information about placement groups and cluster instances, see -// Cluster Instances in the Amazon Elastic Compute Cloud User Guide for -// Linux -func (c *EC2) DescribePlacementGroups(req *DescribePlacementGroupsRequest) (resp *DescribePlacementGroupsResult, err error) { - resp = &DescribePlacementGroupsResult{} - err = c.client.Do("DescribePlacementGroups", "POST", "/", req, resp) - return -} - -// DescribeRegions describes one or more regions that are currently -// available to you. For a list of the regions supported by Amazon EC2, see -// Regions and Endpoints -func (c *EC2) DescribeRegions(req *DescribeRegionsRequest) (resp *DescribeRegionsResult, err error) { - resp = &DescribeRegionsResult{} - err = c.client.Do("DescribeRegions", "POST", "/", req, resp) - return -} - -// DescribeReservedInstances describes one or more of the Reserved -// Instances that you purchased. For more information about Reserved -// Instances, see Reserved Instances in the Amazon Elastic Compute Cloud -// User Guide for Linux -func (c *EC2) DescribeReservedInstances(req *DescribeReservedInstancesRequest) (resp *DescribeReservedInstancesResult, err error) { - resp = &DescribeReservedInstancesResult{} - err = c.client.Do("DescribeReservedInstances", "POST", "/", req, resp) - return -} - -// DescribeReservedInstancesListings describes your account's Reserved -// Instance listings in the Reserved Instance Marketplace. The Reserved -// Instance Marketplace matches sellers who want to resell Reserved -// Instance capacity that they no longer need with buyers who want to -// purchase additional capacity. Reserved Instances bought and sold through -// the Reserved Instance Marketplace work like any other Reserved -// Instances. As a seller, you choose to list some or all of your Reserved -// Instances, and you specify the upfront price to receive for them. Your -// Reserved Instances are then listed in the Reserved Instance Marketplace -// and are available for purchase. As a buyer, you specify the -// configuration of the Reserved Instance to purchase, and the Marketplace -// matches what you're searching for with what's available. The Marketplace -// first sells the lowest priced Reserved Instances to you, and continues -// to sell available Reserved Instance listings to you until your demand is -// met. You are charged based on the total price of all of the listings -// that you purchase. For more information, see Reserved Instance -// Marketplace in the Amazon Elastic Compute Cloud User Guide for Linux -func (c *EC2) DescribeReservedInstancesListings(req *DescribeReservedInstancesListingsRequest) (resp *DescribeReservedInstancesListingsResult, err error) { - resp = &DescribeReservedInstancesListingsResult{} - err = c.client.Do("DescribeReservedInstancesListings", "POST", "/", req, resp) - return -} - -// DescribeReservedInstancesModifications describes the modifications made -// to your Reserved Instances. If no parameter is specified, information -// about all your Reserved Instances modification requests is returned. If -// a modification ID is specified, only information about the specific -// modification is returned. For more information, see Modifying Reserved -// Instances in the Amazon Elastic Compute Cloud User Guide for Linux. -func (c *EC2) DescribeReservedInstancesModifications(req *DescribeReservedInstancesModificationsRequest) (resp *DescribeReservedInstancesModificationsResult, err error) { - resp = &DescribeReservedInstancesModificationsResult{} - err = c.client.Do("DescribeReservedInstancesModifications", "POST", "/", req, resp) - return -} - -// DescribeReservedInstancesOfferings describes Reserved Instance offerings -// that are available for purchase. With Reserved Instances, you purchase -// the right to launch instances for a period of time. During that time -// period, you do not receive insufficient capacity errors, and you pay a -// lower usage rate than the rate charged for On-Demand instances for the -// actual time used. For more information, see Reserved Instance -// Marketplace in the Amazon Elastic Compute Cloud User Guide for Linux -func (c *EC2) DescribeReservedInstancesOfferings(req *DescribeReservedInstancesOfferingsRequest) (resp *DescribeReservedInstancesOfferingsResult, err error) { - resp = &DescribeReservedInstancesOfferingsResult{} - err = c.client.Do("DescribeReservedInstancesOfferings", "POST", "/", req, resp) - return -} - -// DescribeRouteTables describes one or more of your route tables. For more -// information about route tables, see Route Tables in the Amazon Virtual -// Private Cloud User Guide -func (c *EC2) DescribeRouteTables(req *DescribeRouteTablesRequest) (resp *DescribeRouteTablesResult, err error) { - resp = &DescribeRouteTablesResult{} - err = c.client.Do("DescribeRouteTables", "POST", "/", req, resp) - return -} - -// DescribeSecurityGroups describes one or more of your security groups. A -// security group is for use with instances either in the EC2-Classic -// platform or in a specific For more information, see Amazon EC2 Security -// Groups in the Amazon Elastic Compute Cloud User Guide for Linux and -// Security Groups for Your in the Amazon Virtual Private Cloud User Guide -func (c *EC2) DescribeSecurityGroups(req *DescribeSecurityGroupsRequest) (resp *DescribeSecurityGroupsResult, err error) { - resp = &DescribeSecurityGroupsResult{} - err = c.client.Do("DescribeSecurityGroups", "POST", "/", req, resp) - return -} - -// DescribeSnapshotAttribute describes the specified attribute of the -// specified snapshot. You can specify only one attribute at a time. For -// more information about Amazon EBS snapshots, see Amazon EBS Snapshots in -// the Amazon Elastic Compute Cloud User Guide for Linux -func (c *EC2) DescribeSnapshotAttribute(req *DescribeSnapshotAttributeRequest) (resp *DescribeSnapshotAttributeResult, err error) { - resp = &DescribeSnapshotAttributeResult{} - err = c.client.Do("DescribeSnapshotAttribute", "POST", "/", req, resp) - return -} - -// DescribeSnapshots describes one or more of the Amazon EBS snapshots -// available to you. Available snapshots include public snapshots available -// for any AWS account to launch, private snapshots that you own, and -// private snapshots owned by another AWS account but for which you've been -// given explicit create volume permissions. The create volume permissions -// fall into the following categories: public : The owner of the snapshot -// granted create volume permissions for the snapshot to the all group. All -// AWS accounts have create volume permissions for these snapshots. -// explicit : The owner of the snapshot granted create volume permissions -// to a specific AWS account. implicit : An AWS account has implicit create -// volume permissions for all snapshots it owns. The list of snapshots -// returned can be modified by specifying snapshot IDs, snapshot owners, or -// AWS accounts with create volume permissions. If no options are -// specified, Amazon EC2 returns all snapshots for which you have create -// volume permissions. If you specify one or more snapshot IDs, only -// snapshots that have the specified IDs are returned. If you specify an -// invalid snapshot ID, an error is returned. If you specify a snapshot ID -// for which you do not have access, it is not included in the returned -// results. If you specify one or more snapshot owners, only snapshots from -// the specified owners and for which you have access are returned. The -// results can include the AWS account IDs of the specified owners, amazon -// for snapshots owned by Amazon, or self for snapshots that you own. If -// you specify a list of restorable users, only snapshots with create -// snapshot permissions for those users are returned. You can specify AWS -// account IDs (if you own the snapshots), self for snapshots for which you -// own or have explicit permissions, or all for public snapshots. For more -// information about Amazon EBS snapshots, see Amazon EBS Snapshots in the -// Amazon Elastic Compute Cloud User Guide for Linux -func (c *EC2) DescribeSnapshots(req *DescribeSnapshotsRequest) (resp *DescribeSnapshotsResult, err error) { - resp = &DescribeSnapshotsResult{} - err = c.client.Do("DescribeSnapshots", "POST", "/", req, resp) - return -} - -// DescribeSpotDatafeedSubscription describes the data feed for Spot -// Instances. For more information, see Spot Instance Data Feed in the -// Amazon Elastic Compute Cloud User Guide for Linux -func (c *EC2) DescribeSpotDatafeedSubscription(req *DescribeSpotDatafeedSubscriptionRequest) (resp *DescribeSpotDatafeedSubscriptionResult, err error) { - resp = &DescribeSpotDatafeedSubscriptionResult{} - err = c.client.Do("DescribeSpotDatafeedSubscription", "POST", "/", req, resp) - return -} - -// DescribeSpotInstanceRequests describes the Spot Instance requests that -// belong to your account. Spot Instances are instances that Amazon EC2 -// launches when the bid price that you specify exceeds the current Spot -// Price. Amazon EC2 periodically sets the Spot Price based on available -// Spot Instance capacity and current Spot Instance requests. For more -// information, see Spot Instance Requests in the Amazon Elastic Compute -// Cloud User Guide for Linux You can use DescribeSpotInstanceRequests to -// find a running Spot Instance by examining the response. If the status of -// the Spot Instance is fulfilled , the instance ID appears in the response -// and contains the identifier of the instance. Alternatively, you can use -// DescribeInstances with a filter to look for instances where the instance -// lifecycle is spot -func (c *EC2) DescribeSpotInstanceRequests(req *DescribeSpotInstanceRequestsRequest) (resp *DescribeSpotInstanceRequestsResult, err error) { - resp = &DescribeSpotInstanceRequestsResult{} - err = c.client.Do("DescribeSpotInstanceRequests", "POST", "/", req, resp) - return -} - -// DescribeSpotPriceHistory describes the Spot Price history. Spot -// Instances are instances that Amazon EC2 starts on your behalf when the -// maximum price that you specify exceeds the current Spot Price. Amazon -// EC2 periodically sets the Spot Price based on available Spot Instance -// capacity and current Spot Instance requests. For more information, see -// Spot Instance Pricing History in the Amazon Elastic Compute Cloud User -// Guide for Linux When you specify an Availability Zone, this operation -// describes the price history for the specified Availability Zone with the -// most recent set of prices listed first. If you don't specify an -// Availability Zone, you get the prices across all Availability Zones, -// starting with the most recent set. However, if you're using an API -// version earlier than 2011-05-15, you get the lowest price across the -// region for the specified time period. The prices returned are listed in -// chronological order, from the oldest to the most recent. When you -// specify the start and end time options, this operation returns two -// pieces of data: the prices of the instance types within the time range -// that you specified and the time when the price changed. The price is -// valid within the time period that you specified; the response merely -// indicates the last time that the price changed. -func (c *EC2) DescribeSpotPriceHistory(req *DescribeSpotPriceHistoryRequest) (resp *DescribeSpotPriceHistoryResult, err error) { - resp = &DescribeSpotPriceHistoryResult{} - err = c.client.Do("DescribeSpotPriceHistory", "POST", "/", req, resp) - return -} - -// DescribeSubnets describes one or more of your subnets. For more -// information about subnets, see Your VPC and Subnets in the Amazon -// Virtual Private Cloud User Guide -func (c *EC2) DescribeSubnets(req *DescribeSubnetsRequest) (resp *DescribeSubnetsResult, err error) { - resp = &DescribeSubnetsResult{} - err = c.client.Do("DescribeSubnets", "POST", "/", req, resp) - return -} - -// DescribeTags describes one or more of the tags for your EC2 resources. -// For more information about tags, see Tagging Your Resources in the -// Amazon Elastic Compute Cloud User Guide for Linux -func (c *EC2) DescribeTags(req *DescribeTagsRequest) (resp *DescribeTagsResult, err error) { - resp = &DescribeTagsResult{} - err = c.client.Do("DescribeTags", "POST", "/", req, resp) - return -} - -// DescribeVolumeAttribute describes the specified attribute of the -// specified volume. You can specify only one attribute at a time. For more -// information about Amazon EBS volumes, see Amazon EBS Volumes in the -// Amazon Elastic Compute Cloud User Guide for Linux -func (c *EC2) DescribeVolumeAttribute(req *DescribeVolumeAttributeRequest) (resp *DescribeVolumeAttributeResult, err error) { - resp = &DescribeVolumeAttributeResult{} - err = c.client.Do("DescribeVolumeAttribute", "POST", "/", req, resp) - return -} - -// DescribeVolumeStatus describes the status of the specified volumes. -// Volume status provides the result of the checks performed on your -// volumes to determine events that can impair the performance of your -// volumes. The performance of a volume can be affected if an issue occurs -// on the volume's underlying host. If the volume's underlying host -// experiences a power outage or system issue, after the system is -// restored, there could be data inconsistencies on the volume. Volume -// events notify you if this occurs. Volume actions notify you if any -// action needs to be taken in response to the event. The -// DescribeVolumeStatus operation provides the following information about -// the specified volumes: Status : Reflects the current status of the -// volume. The possible values are ok , impaired , warning , or -// insufficient-data . If all checks pass, the overall status of the volume -// is ok . If the check fails, the overall status is impaired . If the -// status is insufficient-data , then the checks may still be taking place -// on your volume at the time. We recommend that you retry the request. For -// more information on volume status, see Monitoring the Status of Your -// Volumes Events : Reflect the cause of a volume status and may require -// you to take action. For example, if your volume returns an impaired -// status, then the volume event might be potential-data-inconsistency . -// This means that your volume has been affected by an issue with the -// underlying host, has all I/O operations disabled, and may have -// inconsistent data. Actions : Reflect the actions you may have to take in -// response to an event. For example, if the status of the volume is -// impaired and the volume event shows potential-data-inconsistency , then -// the action shows enable-volume-io . This means that you may want to -// enable the I/O operations for the volume by calling the EnableVolumeIO -// action and then check the volume for data consistency. Volume status is -// based on the volume status checks, and does not reflect the volume -// state. Therefore, volume status does not indicate volumes in the error -// state (for example, when a volume is incapable of accepting -func (c *EC2) DescribeVolumeStatus(req *DescribeVolumeStatusRequest) (resp *DescribeVolumeStatusResult, err error) { - resp = &DescribeVolumeStatusResult{} - err = c.client.Do("DescribeVolumeStatus", "POST", "/", req, resp) - return -} - -// DescribeVolumes describes the specified Amazon EBS volumes. If you are -// describing a long list of volumes, you can paginate the output to make -// the list more manageable. The MaxResults parameter sets the maximum -// number of results returned in a single page. If the list of results -// exceeds your MaxResults value, then that number of results is returned -// along with a NextToken value that can be passed to a subsequent -// DescribeVolumes request to retrieve the remaining results. For more -// information about Amazon EBS volumes, see Amazon EBS Volumes in the -// Amazon Elastic Compute Cloud User Guide for Linux -func (c *EC2) DescribeVolumes(req *DescribeVolumesRequest) (resp *DescribeVolumesResult, err error) { - resp = &DescribeVolumesResult{} - err = c.client.Do("DescribeVolumes", "POST", "/", req, resp) - return -} - -// DescribeVPCAttribute describes the specified attribute of the specified -// You can specify only one attribute at a time. -func (c *EC2) DescribeVPCAttribute(req *DescribeVPCAttributeRequest) (resp *DescribeVPCAttributeResult, err error) { - resp = &DescribeVPCAttributeResult{} - err = c.client.Do("DescribeVpcAttribute", "POST", "/", req, resp) - return -} - -// DescribeVPCClassicLink describes the ClassicLink status of one or more -// VPCs. -func (c *EC2) DescribeVPCClassicLink(req *DescribeVPCClassicLinkRequest) (resp *DescribeVPCClassicLinkResult, err error) { - resp = &DescribeVPCClassicLinkResult{} - err = c.client.Do("DescribeVpcClassicLink", "POST", "/", req, resp) - return -} - -// DescribeVPCPeeringConnections describes one or more of your VPC peering -// connections. -func (c *EC2) DescribeVPCPeeringConnections(req *DescribeVPCPeeringConnectionsRequest) (resp *DescribeVPCPeeringConnectionsResult, err error) { - resp = &DescribeVPCPeeringConnectionsResult{} - err = c.client.Do("DescribeVpcPeeringConnections", "POST", "/", req, resp) - return -} - -// DescribeVPCs is undocumented. -func (c *EC2) DescribeVPCs(req *DescribeVPCsRequest) (resp *DescribeVPCsResult, err error) { - resp = &DescribeVPCsResult{} - err = c.client.Do("DescribeVpcs", "POST", "/", req, resp) - return -} - -// DescribeVPNConnections describes one or more of your VPN connections. -// For more information about VPN connections, see Adding a Hardware -// Virtual Private Gateway to Your in the Amazon Virtual Private Cloud User -// Guide -func (c *EC2) DescribeVPNConnections(req *DescribeVPNConnectionsRequest) (resp *DescribeVPNConnectionsResult, err error) { - resp = &DescribeVPNConnectionsResult{} - err = c.client.Do("DescribeVpnConnections", "POST", "/", req, resp) - return -} - -// DescribeVPNGateways describes one or more of your virtual private -// gateways. For more information about virtual private gateways, see -// Adding an IPsec Hardware VPN to Your in the Amazon Virtual Private Cloud -// User Guide -func (c *EC2) DescribeVPNGateways(req *DescribeVPNGatewaysRequest) (resp *DescribeVPNGatewaysResult, err error) { - resp = &DescribeVPNGatewaysResult{} - err = c.client.Do("DescribeVpnGateways", "POST", "/", req, resp) - return -} - -// DetachClassicLinkVPC unlinks (detaches) a linked EC2-Classic instance -// from a After the instance has been unlinked, the VPC security groups are -// no longer associated with it. An instance is automatically unlinked from -// a VPC when it's stopped. -func (c *EC2) DetachClassicLinkVPC(req *DetachClassicLinkVPCRequest) (resp *DetachClassicLinkVPCResult, err error) { - resp = &DetachClassicLinkVPCResult{} - err = c.client.Do("DetachClassicLinkVpc", "POST", "/", req, resp) - return -} - -// DetachInternetGateway detaches an Internet gateway from a disabling -// connectivity between the Internet and the The VPC must not contain any -// running instances with Elastic IP addresses. -func (c *EC2) DetachInternetGateway(req *DetachInternetGatewayRequest) (err error) { - // NRE - err = c.client.Do("DetachInternetGateway", "POST", "/", req, nil) - return -} - -// DetachNetworkInterface is undocumented. -func (c *EC2) DetachNetworkInterface(req *DetachNetworkInterfaceRequest) (err error) { - // NRE - err = c.client.Do("DetachNetworkInterface", "POST", "/", req, nil) - return -} - -// DetachVolume detaches an Amazon EBS volume from an instance. Make sure -// to unmount any file systems on the device within your operating system -// before detaching the volume. Failure to do so results in the volume -// being stuck in a busy state while detaching. If an Amazon EBS volume is -// the root device of an instance, it can't be detached while the instance -// is running. To detach the root volume, stop the instance first. When a -// volume with an AWS Marketplace product code is detached from an -// instance, the product code is no longer associated with the instance. -// For more information, see Detaching an Amazon EBS Volume in the Amazon -// Elastic Compute Cloud User Guide for Linux -func (c *EC2) DetachVolume(req *DetachVolumeRequest) (resp *VolumeAttachment, err error) { - resp = &VolumeAttachment{} - err = c.client.Do("DetachVolume", "POST", "/", req, resp) - return -} - -// DetachVPNGateway detaches a virtual private gateway from a You do this -// if you're planning to turn off the VPC and not use it anymore. You can -// confirm a virtual private gateway has been completely detached from a -// VPC by describing the virtual private gateway (any attachments to the -// virtual private gateway are also described). You must wait for the -// attachment's state to switch to detached before you can delete the VPC -// or attach a different VPC to the virtual private gateway. -func (c *EC2) DetachVPNGateway(req *DetachVPNGatewayRequest) (err error) { - // NRE - err = c.client.Do("DetachVpnGateway", "POST", "/", req, nil) - return -} - -// DisableVGWRoutePropagation disables a virtual private gateway from -// propagating routes to a specified route table of a -func (c *EC2) DisableVGWRoutePropagation(req *DisableVGWRoutePropagationRequest) (err error) { - // NRE - err = c.client.Do("DisableVgwRoutePropagation", "POST", "/", req, nil) - return -} - -// DisableVPCClassicLink disables ClassicLink for a You cannot disable -// ClassicLink for a VPC that has EC2-Classic instances linked to it. -func (c *EC2) DisableVPCClassicLink(req *DisableVPCClassicLinkRequest) (resp *DisableVPCClassicLinkResult, err error) { - resp = &DisableVPCClassicLinkResult{} - err = c.client.Do("DisableVpcClassicLink", "POST", "/", req, resp) - return -} - -// DisassociateAddress disassociates an Elastic IP address from the -// instance or network interface it's associated with. An Elastic IP -// address is for use in either the EC2-Classic platform or in a For more -// information, see Elastic IP Addresses in the Amazon Elastic Compute -// Cloud User Guide for Linux This is an idempotent operation. If you -// perform the operation more than once, Amazon EC2 doesn't return an -// error. -func (c *EC2) DisassociateAddress(req *DisassociateAddressRequest) (err error) { - // NRE - err = c.client.Do("DisassociateAddress", "POST", "/", req, nil) - return -} - -// DisassociateRouteTable disassociates a subnet from a route table. After -// you perform this action, the subnet no longer uses the routes in the -// route table. Instead, it uses the routes in the VPC's main route table. -// For more information about route tables, see Route Tables in the Amazon -// Virtual Private Cloud User Guide -func (c *EC2) DisassociateRouteTable(req *DisassociateRouteTableRequest) (err error) { - // NRE - err = c.client.Do("DisassociateRouteTable", "POST", "/", req, nil) - return -} - -// EnableVGWRoutePropagation enables a virtual private gateway to propagate -// routes to the specified route table of a -func (c *EC2) EnableVGWRoutePropagation(req *EnableVGWRoutePropagationRequest) (err error) { - // NRE - err = c.client.Do("EnableVgwRoutePropagation", "POST", "/", req, nil) - return -} - -// EnableVolumeIO enables I/O operations for a volume that had I/O -// operations disabled because the data on the volume was potentially -// inconsistent. -func (c *EC2) EnableVolumeIO(req *EnableVolumeIORequest) (err error) { - // NRE - err = c.client.Do("EnableVolumeIO", "POST", "/", req, nil) - return -} - -// EnableVPCClassicLink enables a VPC for ClassicLink. You can then link -// EC2-Classic instances to your ClassicLink-enabled VPC to allow -// communication over private IP addresses. You cannot enable your VPC for -// ClassicLink if any of your VPC's route tables have existing routes for -// address ranges within the 10.0.0.0/8 IP address range, excluding local -// routes for VPCs in the 10.0.0.0/16 and 10.1.0.0/16 IP address ranges. -// For more information, see ClassicLink in the Amazon Elastic Compute -// Cloud User Guide for Linux. -func (c *EC2) EnableVPCClassicLink(req *EnableVPCClassicLinkRequest) (resp *EnableVPCClassicLinkResult, err error) { - resp = &EnableVPCClassicLinkResult{} - err = c.client.Do("EnableVpcClassicLink", "POST", "/", req, resp) - return -} - -// GetConsoleOutput gets the console output for the specified instance. -// Instances do not have a physical monitor through which you can view -// their console output. They also lack physical controls that allow you to -// power up, reboot, or shut them down. To allow these actions, we provide -// them through the Amazon EC2 API and command line interface. Instance -// console output is buffered and posted shortly after instance boot, -// reboot, and termination. Amazon EC2 preserves the most recent 64 KB -// output which is available for at least one hour after the most recent -// post. For Linux/Unix instances, the instance console output displays the -// exact console output that would normally be displayed on a physical -// monitor attached to a machine. This output is buffered because the -// instance produces it and then posts it to a store where the instance's -// owner can retrieve it. For Windows instances, the instance console -// output displays the last three system event log errors. -func (c *EC2) GetConsoleOutput(req *GetConsoleOutputRequest) (resp *GetConsoleOutputResult, err error) { - resp = &GetConsoleOutputResult{} - err = c.client.Do("GetConsoleOutput", "POST", "/", req, resp) - return -} - -// GetPasswordData retrieves the encrypted administrator password for an -// instance running Windows. The Windows password is generated at boot if -// the EC2Config service plugin, Ec2SetPassword , is enabled. This usually -// only happens the first time an AMI is launched, and then Ec2SetPassword -// is automatically disabled. The password is not generated for rebundled -// AMIs unless Ec2SetPassword is enabled before bundling. The password is -// encrypted using the key pair that you specified when you launched the -// instance. You must provide the corresponding key pair file. Password -// generation and encryption takes a few moments. We recommend that you -// wait up to 15 minutes after launching an instance before trying to -// retrieve the generated password. -func (c *EC2) GetPasswordData(req *GetPasswordDataRequest) (resp *GetPasswordDataResult, err error) { - resp = &GetPasswordDataResult{} - err = c.client.Do("GetPasswordData", "POST", "/", req, resp) - return -} - -// ImportInstance creates an import instance task using metadata from the -// specified disk image. After importing the image, you then upload it -// using the command in the EC2 command line tools. For more information, -// see Using the Command Line Tools to Import Your Virtual Machine to -// Amazon EC2 -func (c *EC2) ImportInstance(req *ImportInstanceRequest) (resp *ImportInstanceResult, err error) { - resp = &ImportInstanceResult{} - err = c.client.Do("ImportInstance", "POST", "/", req, resp) - return -} - -// ImportKeyPair imports the public key from an RSA key pair that you -// created with a third-party tool. Compare this with CreateKeyPair , in -// which AWS creates the key pair and gives the keys to you keeps a copy of -// the public key). With ImportKeyPair, you create the key pair and give -// AWS just the public key. The private key is never transferred between -// you and For more information about key pairs, see Key Pairs in the -// Amazon Elastic Compute Cloud User Guide for Linux -func (c *EC2) ImportKeyPair(req *ImportKeyPairRequest) (resp *ImportKeyPairResult, err error) { - resp = &ImportKeyPairResult{} - err = c.client.Do("ImportKeyPair", "POST", "/", req, resp) - return -} - -// ImportVolume creates an import volume task using metadata from the -// specified disk image. After importing the image, you then upload it -// using the command in the Amazon EC2 command-line interface tools. For -// more information, see Using the Command Line Tools to Import Your -// Virtual Machine to Amazon EC2 in the Amazon Elastic Compute Cloud User -// Guide for Linux -func (c *EC2) ImportVolume(req *ImportVolumeRequest) (resp *ImportVolumeResult, err error) { - resp = &ImportVolumeResult{} - err = c.client.Do("ImportVolume", "POST", "/", req, resp) - return -} - -// ModifyImageAttribute modifies the specified attribute of the specified -// You can specify only one attribute at a time. AWS Marketplace product -// codes cannot be modified. Images with an AWS Marketplace product code -// cannot be made public. -func (c *EC2) ModifyImageAttribute(req *ModifyImageAttributeRequest) (err error) { - // NRE - err = c.client.Do("ModifyImageAttribute", "POST", "/", req, nil) - return -} - -// ModifyInstanceAttribute modifies the specified attribute of the -// specified instance. You can specify only one attribute at a time. To -// modify some attributes, the instance must be stopped. For more -// information, see Modifying Attributes of a Stopped Instance in the -// Amazon Elastic Compute Cloud User Guide for Linux -func (c *EC2) ModifyInstanceAttribute(req *ModifyInstanceAttributeRequest) (err error) { - // NRE - err = c.client.Do("ModifyInstanceAttribute", "POST", "/", req, nil) - return -} - -// ModifyNetworkInterfaceAttribute modifies the specified network interface -// attribute. You can specify only one attribute at a time. -func (c *EC2) ModifyNetworkInterfaceAttribute(req *ModifyNetworkInterfaceAttributeRequest) (err error) { - // NRE - err = c.client.Do("ModifyNetworkInterfaceAttribute", "POST", "/", req, nil) - return -} - -// ModifyReservedInstances modifies the Availability Zone, instance count, -// instance type, or network platform (EC2-Classic or EC2-VPC) of your -// Reserved Instances. The Reserved Instances to be modified must be -// identical, except for Availability Zone, network platform, and instance -// type. For more information, see Modifying Reserved Instances in the -// Amazon Elastic Compute Cloud User Guide for Linux. -func (c *EC2) ModifyReservedInstances(req *ModifyReservedInstancesRequest) (resp *ModifyReservedInstancesResult, err error) { - resp = &ModifyReservedInstancesResult{} - err = c.client.Do("ModifyReservedInstances", "POST", "/", req, resp) - return -} - -// ModifySnapshotAttribute adds or removes permission settings for the -// specified snapshot. You may add or remove specified AWS account IDs from -// a snapshot's list of create volume permissions, but you cannot do both -// in a single API call. If you need to both add and remove account IDs for -// a snapshot, you must use multiple API calls. For more information on -// modifying snapshot permissions, see Sharing Snapshots in the Amazon -// Elastic Compute Cloud User Guide for Linux Snapshots with AWS -// Marketplace product codes cannot be made public. -func (c *EC2) ModifySnapshotAttribute(req *ModifySnapshotAttributeRequest) (err error) { - // NRE - err = c.client.Do("ModifySnapshotAttribute", "POST", "/", req, nil) - return -} - -// ModifySubnetAttribute is undocumented. -func (c *EC2) ModifySubnetAttribute(req *ModifySubnetAttributeRequest) (err error) { - // NRE - err = c.client.Do("ModifySubnetAttribute", "POST", "/", req, nil) - return -} - -// ModifyVolumeAttribute modifies a volume attribute. By default, all I/O -// operations for the volume are suspended when the data on the volume is -// determined to be potentially inconsistent, to prevent undetectable, -// latent data corruption. The I/O access to the volume can be resumed by -// first enabling I/O access and then checking the data consistency on your -// volume. You can change the default behavior to resume I/O operations. We -// recommend that you change this only for boot volumes or for volumes that -// are stateless or disposable. -func (c *EC2) ModifyVolumeAttribute(req *ModifyVolumeAttributeRequest) (err error) { - // NRE - err = c.client.Do("ModifyVolumeAttribute", "POST", "/", req, nil) - return -} - -// ModifyVPCAttribute is undocumented. -func (c *EC2) ModifyVPCAttribute(req *ModifyVPCAttributeRequest) (err error) { - // NRE - err = c.client.Do("ModifyVpcAttribute", "POST", "/", req, nil) - return -} - -// MonitorInstances enables monitoring for a running instance. For more -// information about monitoring instances, see Monitoring Your Instances -// and Volumes in the Amazon Elastic Compute Cloud User Guide for Linux -func (c *EC2) MonitorInstances(req *MonitorInstancesRequest) (resp *MonitorInstancesResult, err error) { - resp = &MonitorInstancesResult{} - err = c.client.Do("MonitorInstances", "POST", "/", req, resp) - return -} - -// PurchaseReservedInstancesOffering purchases a Reserved Instance for use -// with your account. With Amazon EC2 Reserved Instances, you obtain a -// capacity reservation for a certain instance configuration over a -// specified period of time. You pay a lower usage rate than with On-Demand -// instances for the time that you actually use the capacity reservation. -// Use DescribeReservedInstancesOfferings to get a list of Reserved -// Instance offerings that match your specifications. After you've -// purchased a Reserved Instance, you can check for your new Reserved -// Instance with DescribeReservedInstances For more information, see -// Reserved Instances and Reserved Instance Marketplace in the Amazon -// Elastic Compute Cloud User Guide for Linux -func (c *EC2) PurchaseReservedInstancesOffering(req *PurchaseReservedInstancesOfferingRequest) (resp *PurchaseReservedInstancesOfferingResult, err error) { - resp = &PurchaseReservedInstancesOfferingResult{} - err = c.client.Do("PurchaseReservedInstancesOffering", "POST", "/", req, resp) - return -} - -// RebootInstances requests a reboot of one or more instances. This -// operation is asynchronous; it only queues a request to reboot the -// specified instances. The operation succeeds if the instances are valid -// and belong to you. Requests to reboot terminated instances are ignored. -// If a Linux/Unix instance does not cleanly shut down within four minutes, -// Amazon EC2 performs a hard reboot. For more information about -// troubleshooting, see Getting Console Output and Rebooting Instances in -// the Amazon Elastic Compute Cloud User Guide for Linux -func (c *EC2) RebootInstances(req *RebootInstancesRequest) (err error) { - // NRE - err = c.client.Do("RebootInstances", "POST", "/", req, nil) - return -} - -// RegisterImage registers an When you're creating an this is the final -// step you must complete before you can launch an instance from the For -// more information about creating AMIs, see Creating Your Own AMIs in the -// Amazon Elastic Compute Cloud User Guide for Linux For Amazon EBS-backed -// instances, CreateImage creates and registers the AMI in a single -// request, so you don't have to register the AMI yourself. You can also -// use RegisterImage to create an Amazon EBS-backed AMI from a snapshot of -// a root device volume. For more information, see Launching an Instance -// from a Snapshot in the Amazon Elastic Compute Cloud User Guide for Linux -// If needed, you can deregister an AMI at any time. Any modifications you -// make to an AMI backed by an instance store volume invalidates its -// registration. If you make changes to an image, deregister the previous -// image and register the new image. You can't register an image where a -// secondary (non-root) snapshot has AWS Marketplace product codes. -func (c *EC2) RegisterImage(req *RegisterImageRequest) (resp *RegisterImageResult, err error) { - resp = &RegisterImageResult{} - err = c.client.Do("RegisterImage", "POST", "/", req, resp) - return -} - -// RejectVPCPeeringConnection rejects a VPC peering connection request. The -// VPC peering connection must be in the pending-acceptance state. Use the -// DescribeVpcPeeringConnections request to view your outstanding VPC -// peering connection requests. To delete an active VPC peering connection, -// or to delete a VPC peering connection request that you initiated, use -// DeleteVpcPeeringConnection -func (c *EC2) RejectVPCPeeringConnection(req *RejectVPCPeeringConnectionRequest) (resp *RejectVPCPeeringConnectionResult, err error) { - resp = &RejectVPCPeeringConnectionResult{} - err = c.client.Do("RejectVpcPeeringConnection", "POST", "/", req, resp) - return -} - -// ReleaseAddress releases the specified Elastic IP address. After -// releasing an Elastic IP address, it is released to the IP address pool -// and might be unavailable to you. Be sure to update your DNS records and -// any servers or devices that communicate with the address. If you attempt -// to release an Elastic IP address that you already released, you'll get -// an AuthFailure error if the address is already allocated to another AWS -// account. [EC2-Classic, default Releasing an Elastic IP address -// automatically disassociates it from any instance that it's associated -// with. To disassociate an Elastic IP address without releasing it, use -// DisassociateAddress [Nondefault You must use DisassociateAddress to -// disassociate the Elastic IP address before you try to release it. -// Otherwise, Amazon EC2 returns an error InvalidIPAddress.InUse -func (c *EC2) ReleaseAddress(req *ReleaseAddressRequest) (err error) { - // NRE - err = c.client.Do("ReleaseAddress", "POST", "/", req, nil) - return -} - -// ReplaceNetworkACLAssociation changes which network ACL a subnet is -// associated with. By default when you create a subnet, it's automatically -// associated with the default network For more information about network -// ACLs, see Network ACLs in the Amazon Virtual Private Cloud User Guide -func (c *EC2) ReplaceNetworkACLAssociation(req *ReplaceNetworkACLAssociationRequest) (resp *ReplaceNetworkACLAssociationResult, err error) { - resp = &ReplaceNetworkACLAssociationResult{} - err = c.client.Do("ReplaceNetworkAclAssociation", "POST", "/", req, resp) - return -} - -// ReplaceNetworkACLEntry replaces an entry (rule) in a network For more -// information about network ACLs, see Network ACLs in the Amazon Virtual -// Private Cloud User Guide -func (c *EC2) ReplaceNetworkACLEntry(req *ReplaceNetworkACLEntryRequest) (err error) { - // NRE - err = c.client.Do("ReplaceNetworkAclEntry", "POST", "/", req, nil) - return -} - -// ReplaceRoute replaces an existing route within a route table in a You -// must provide only one of the following: Internet gateway or virtual -// private gateway, NAT instance, VPC peering connection, or network -// interface. For more information about route tables, see Route Tables in -// the Amazon Virtual Private Cloud User Guide -func (c *EC2) ReplaceRoute(req *ReplaceRouteRequest) (err error) { - // NRE - err = c.client.Do("ReplaceRoute", "POST", "/", req, nil) - return -} - -// ReplaceRouteTableAssociation changes the route table associated with a -// given subnet in a After the operation completes, the subnet uses the -// routes in the new route table it's associated with. For more information -// about route tables, see Route Tables in the Amazon Virtual Private Cloud -// User Guide You can also use ReplaceRouteTableAssociation to change which -// table is the main route table in the You just specify the main route -// table's association ID and the route table to be the new main route -// table. -func (c *EC2) ReplaceRouteTableAssociation(req *ReplaceRouteTableAssociationRequest) (resp *ReplaceRouteTableAssociationResult, err error) { - resp = &ReplaceRouteTableAssociationResult{} - err = c.client.Do("ReplaceRouteTableAssociation", "POST", "/", req, resp) - return -} - -// ReportInstanceStatus submits feedback about the status of an instance. -// The instance must be in the running state. If your experience with the -// instance differs from the instance status returned by -// DescribeInstanceStatus , use ReportInstanceStatus to report your -// experience with the instance. Amazon EC2 collects this information to -// improve the accuracy of status checks. Use of this action does not -// change the value returned by DescribeInstanceStatus -func (c *EC2) ReportInstanceStatus(req *ReportInstanceStatusRequest) (err error) { - // NRE - err = c.client.Do("ReportInstanceStatus", "POST", "/", req, nil) - return -} - -// RequestSpotInstances creates a Spot Instance request. Spot Instances are -// instances that Amazon EC2 starts on your behalf when the maximum price -// that you specify exceeds the current Spot Price. Amazon EC2 periodically -// sets the Spot Price based on available Spot Instance capacity and -// current Spot Instance requests. For more information, see Spot Instance -// Requests in the Amazon Elastic Compute Cloud User Guide for Linux Users -// must be subscribed to the required product to run an instance with AWS -// Marketplace product codes. -func (c *EC2) RequestSpotInstances(req *RequestSpotInstancesRequest) (resp *RequestSpotInstancesResult, err error) { - resp = &RequestSpotInstancesResult{} - err = c.client.Do("RequestSpotInstances", "POST", "/", req, resp) - return -} - -// ResetImageAttribute resets an attribute of an AMI to its default value. -// The productCodes attribute can't be reset. -func (c *EC2) ResetImageAttribute(req *ResetImageAttributeRequest) (err error) { - // NRE - err = c.client.Do("ResetImageAttribute", "POST", "/", req, nil) - return -} - -// ResetInstanceAttribute resets an attribute of an instance to its default -// value. To reset the kernel or ramdisk , the instance must be in a -// stopped state. To reset the SourceDestCheck , the instance can be either -// running or stopped. The SourceDestCheck attribute controls whether -// source/destination checking is enabled. The default value is true , -// which means checking is enabled. This value must be false for a NAT -// instance to perform For more information, see NAT Instances in the -// Amazon Virtual Private Cloud User Guide -func (c *EC2) ResetInstanceAttribute(req *ResetInstanceAttributeRequest) (err error) { - // NRE - err = c.client.Do("ResetInstanceAttribute", "POST", "/", req, nil) - return -} - -// ResetNetworkInterfaceAttribute resets a network interface attribute. You -// can specify only one attribute at a time. -func (c *EC2) ResetNetworkInterfaceAttribute(req *ResetNetworkInterfaceAttributeRequest) (err error) { - // NRE - err = c.client.Do("ResetNetworkInterfaceAttribute", "POST", "/", req, nil) - return -} - -// ResetSnapshotAttribute resets permission settings for the specified -// snapshot. For more information on modifying snapshot permissions, see -// Sharing Snapshots in the Amazon Elastic Compute Cloud User Guide for -// Linux -func (c *EC2) ResetSnapshotAttribute(req *ResetSnapshotAttributeRequest) (err error) { - // NRE - err = c.client.Do("ResetSnapshotAttribute", "POST", "/", req, nil) - return -} - -// RevokeSecurityGroupEgress removes one or more egress rules from a -// security group for EC2-VPC. The values that you specify in the revoke -// request (for example, ports) must match the existing rule's values for -// the rule to be revoked. Each rule consists of the protocol and the range -// or source security group. For the TCP and UDP protocols, you must also -// specify the destination port or range of ports. For the protocol, you -// must also specify the type and code. Rule changes are propagated to -// instances within the security group as quickly as possible. However, a -// small delay might occur. -func (c *EC2) RevokeSecurityGroupEgress(req *RevokeSecurityGroupEgressRequest) (err error) { - // NRE - err = c.client.Do("RevokeSecurityGroupEgress", "POST", "/", req, nil) - return -} - -// RevokeSecurityGroupIngress removes one or more ingress rules from a -// security group. The values that you specify in the revoke request (for -// example, ports) must match the existing rule's values for the rule to be -// removed. Each rule consists of the protocol and the range or source -// security group. For the TCP and UDP protocols, you must also specify the -// destination port or range of ports. For the protocol, you must also -// specify the type and code. Rule changes are propagated to instances -// within the security group as quickly as possible. However, a small delay -// might occur. -func (c *EC2) RevokeSecurityGroupIngress(req *RevokeSecurityGroupIngressRequest) (err error) { - // NRE - err = c.client.Do("RevokeSecurityGroupIngress", "POST", "/", req, nil) - return -} - -// RunInstances launches the specified number of instances using an AMI for -// which you have permissions. When you launch an instance, it enters the -// pending state. After the instance is ready for you, it enters the -// running state. To check the state of your instance, call -// DescribeInstances If you don't specify a security group when launching -// an instance, Amazon EC2 uses the default security group. For more -// information, see Security Groups in the Amazon Elastic Compute Cloud -// User Guide for Linux Linux instances have access to the public key of -// the key pair at boot. You can use this key to provide secure access to -// the instance. Amazon EC2 public images use this feature to provide -// secure access without passwords. For more information, see Key Pairs in -// the Amazon Elastic Compute Cloud User Guide for Linux You can provide -// optional user data when launching an instance. For more information, see -// Instance Metadata in the Amazon Elastic Compute Cloud User Guide for -// Linux If any of the AMIs have a product code attached for which the user -// has not subscribed, RunInstances fails. T2 instance types can only be -// launched into a If you do not have a default or if you do not specify a -// subnet ID in the request, RunInstances fails. For more information about -// troubleshooting, see What To Do If An Instance Immediately Terminates , -// and Troubleshooting Connecting to Your Instance in the Amazon Elastic -// Compute Cloud User Guide for Linux -func (c *EC2) RunInstances(req *RunInstancesRequest) (resp *Reservation, err error) { - resp = &Reservation{} - err = c.client.Do("RunInstances", "POST", "/", req, resp) - return -} - -// StartInstances starts an Amazon EBS-backed AMI that you've previously -// stopped. Instances that use Amazon EBS volumes as their root devices can -// be quickly stopped and started. When an instance is stopped, the compute -// resources are released and you are not billed for hourly instance usage. -// However, your root partition Amazon EBS volume remains, continues to -// persist your data, and you are charged for Amazon EBS volume usage. You -// can restart your instance at any time. Each time you transition an -// instance from stopped to started, Amazon EC2 charges a full instance -// hour, even if transitions happen multiple times within a single hour. -// Before stopping an instance, make sure it is in a state from which it -// can be restarted. Stopping an instance does not preserve data stored in -// Performing this operation on an instance that uses an instance store as -// its root device returns an error. For more information, see Stopping -// Instances in the Amazon Elastic Compute Cloud User Guide for Linux -func (c *EC2) StartInstances(req *StartInstancesRequest) (resp *StartInstancesResult, err error) { - resp = &StartInstancesResult{} - err = c.client.Do("StartInstances", "POST", "/", req, resp) - return -} - -// StopInstances stops an Amazon EBS-backed instance. Each time you -// transition an instance from stopped to started, Amazon EC2 charges a -// full instance hour, even if transitions happen multiple times within a -// single hour. You can't start or stop Spot Instances. Instances that use -// Amazon EBS volumes as their root devices can be quickly stopped and -// started. When an instance is stopped, the compute resources are released -// and you are not billed for hourly instance usage. However, your root -// partition Amazon EBS volume remains, continues to persist your data, and -// you are charged for Amazon EBS volume usage. You can restart your -// instance at any time. Before stopping an instance, make sure it is in a -// state from which it can be restarted. Stopping an instance does not -// preserve data stored in Performing this operation on an instance that -// uses an instance store as its root device returns an error. You can -// stop, start, and terminate EBS-backed instances. You can only terminate -// instance store-backed instances. What happens to an instance differs if -// you stop it or terminate it. For example, when you stop an instance, the -// root device and any other devices attached to the instance persist. When -// you terminate an instance, the root device and any other devices -// attached during the instance launch are automatically deleted. For more -// information about the differences between stopping and terminating -// instances, see Instance Lifecycle in the Amazon Elastic Compute Cloud -// User Guide for Linux For more information about troubleshooting, see -// Troubleshooting Stopping Your Instance in the Amazon Elastic Compute -// Cloud User Guide for Linux -func (c *EC2) StopInstances(req *StopInstancesRequest) (resp *StopInstancesResult, err error) { - resp = &StopInstancesResult{} - err = c.client.Do("StopInstances", "POST", "/", req, resp) - return -} - -// TerminateInstances shuts down one or more instances. This operation is -// idempotent; if you terminate an instance more than once, each call -// succeeds. Terminated instances remain visible after termination (for -// approximately one hour). By default, Amazon EC2 deletes all Amazon EBS -// volumes that were attached when the instance launched. Volumes attached -// after instance launch continue running. You can stop, start, and -// terminate EBS-backed instances. You can only terminate instance -// store-backed instances. What happens to an instance differs if you stop -// it or terminate it. For example, when you stop an instance, the root -// device and any other devices attached to the instance persist. When you -// terminate an instance, the root device and any other devices attached -// during the instance launch are automatically deleted. For more -// information about the differences between stopping and terminating -// instances, see Instance Lifecycle in the Amazon Elastic Compute Cloud -// User Guide for Linux For more information about troubleshooting, see -// Troubleshooting Terminating Your Instance in the Amazon Elastic Compute -// Cloud User Guide for Linux -func (c *EC2) TerminateInstances(req *TerminateInstancesRequest) (resp *TerminateInstancesResult, err error) { - resp = &TerminateInstancesResult{} - err = c.client.Do("TerminateInstances", "POST", "/", req, resp) - return -} - -// UnassignPrivateIPAddresses unassigns one or more secondary private IP -// addresses from a network interface. -func (c *EC2) UnassignPrivateIPAddresses(req *UnassignPrivateIPAddressesRequest) (err error) { - // NRE - err = c.client.Do("UnassignPrivateIpAddresses", "POST", "/", req, nil) - return -} - -// UnmonitorInstances disables monitoring for a running instance. For more -// information about monitoring instances, see Monitoring Your Instances -// and Volumes in the Amazon Elastic Compute Cloud User Guide for Linux -func (c *EC2) UnmonitorInstances(req *UnmonitorInstancesRequest) (resp *UnmonitorInstancesResult, err error) { - resp = &UnmonitorInstancesResult{} - err = c.client.Do("UnmonitorInstances", "POST", "/", req, resp) - return -} - -// AcceptVPCPeeringConnectionRequest is undocumented. -type AcceptVPCPeeringConnectionRequest struct { - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - VPCPeeringConnectionID aws.StringValue `ec2:"VpcPeeringConnectionId" xml:"vpcPeeringConnectionId"` -} - -// AcceptVPCPeeringConnectionResult is undocumented. -type AcceptVPCPeeringConnectionResult struct { - VPCPeeringConnection *VPCPeeringConnection `ec2:"VpcPeeringConnection" xml:"vpcPeeringConnection"` -} - -// AccountAttribute is undocumented. -type AccountAttribute struct { - AttributeName aws.StringValue `ec2:"AttributeName" xml:"attributeName"` - AttributeValues []AccountAttributeValue `ec2:"AttributeValues" xml:"attributeValueSet>item"` -} - -// Possible values for EC2. -const ( - AccountAttributeNameDefaultVPC = "default-vpc" - AccountAttributeNameSupportedPlatforms = "supported-platforms" -) - -// AccountAttributeValue is undocumented. -type AccountAttributeValue struct { - AttributeValue aws.StringValue `ec2:"AttributeValue" xml:"attributeValue"` -} - -// Address is undocumented. -type Address struct { - AllocationID aws.StringValue `ec2:"AllocationId" xml:"allocationId"` - AssociationID aws.StringValue `ec2:"AssociationId" xml:"associationId"` - Domain aws.StringValue `ec2:"Domain" xml:"domain"` - InstanceID aws.StringValue `ec2:"InstanceId" xml:"instanceId"` - NetworkInterfaceID aws.StringValue `ec2:"NetworkInterfaceId" xml:"networkInterfaceId"` - NetworkInterfaceOwnerID aws.StringValue `ec2:"NetworkInterfaceOwnerId" xml:"networkInterfaceOwnerId"` - PrivateIPAddress aws.StringValue `ec2:"PrivateIpAddress" xml:"privateIpAddress"` - PublicIP aws.StringValue `ec2:"PublicIp" xml:"publicIp"` -} - -// AllocateAddressRequest is undocumented. -type AllocateAddressRequest struct { - Domain aws.StringValue `ec2:"Domain" xml:"Domain"` - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` -} - -// AllocateAddressResult is undocumented. -type AllocateAddressResult struct { - AllocationID aws.StringValue `ec2:"AllocationId" xml:"allocationId"` - Domain aws.StringValue `ec2:"Domain" xml:"domain"` - PublicIP aws.StringValue `ec2:"PublicIp" xml:"publicIp"` -} - -// Possible values for EC2. -const ( - ArchitectureValuesI386 = "i386" - ArchitectureValuesX8664 = "x86_64" -) - -// AssignPrivateIPAddressesRequest is undocumented. -type AssignPrivateIPAddressesRequest struct { - AllowReassignment aws.BooleanValue `ec2:"AllowReassignment" xml:"allowReassignment"` - NetworkInterfaceID aws.StringValue `ec2:"NetworkInterfaceId" xml:"networkInterfaceId"` - PrivateIPAddresses []string `ec2:"PrivateIpAddresses" xml:"privateIpAddress>PrivateIpAddress"` - SecondaryPrivateIPAddressCount aws.IntegerValue `ec2:"SecondaryPrivateIpAddressCount" xml:"secondaryPrivateIpAddressCount"` -} - -// AssociateAddressRequest is undocumented. -type AssociateAddressRequest struct { - AllocationID aws.StringValue `ec2:"AllocationId" xml:"AllocationId"` - AllowReassociation aws.BooleanValue `ec2:"AllowReassociation" xml:"allowReassociation"` - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - InstanceID aws.StringValue `ec2:"InstanceId" xml:"InstanceId"` - NetworkInterfaceID aws.StringValue `ec2:"NetworkInterfaceId" xml:"networkInterfaceId"` - PrivateIPAddress aws.StringValue `ec2:"PrivateIpAddress" xml:"privateIpAddress"` - PublicIP aws.StringValue `ec2:"PublicIp" xml:"PublicIp"` -} - -// AssociateAddressResult is undocumented. -type AssociateAddressResult struct { - AssociationID aws.StringValue `ec2:"AssociationId" xml:"associationId"` -} - -// AssociateDHCPOptionsRequest is undocumented. -type AssociateDHCPOptionsRequest struct { - DHCPOptionsID aws.StringValue `ec2:"DhcpOptionsId" xml:"DhcpOptionsId"` - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - VPCID aws.StringValue `ec2:"VpcId" xml:"VpcId"` -} - -// AssociateRouteTableRequest is undocumented. -type AssociateRouteTableRequest struct { - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - RouteTableID aws.StringValue `ec2:"RouteTableId" xml:"routeTableId"` - SubnetID aws.StringValue `ec2:"SubnetId" xml:"subnetId"` -} - -// AssociateRouteTableResult is undocumented. -type AssociateRouteTableResult struct { - AssociationID aws.StringValue `ec2:"AssociationId" xml:"associationId"` -} - -// AttachClassicLinkVPCRequest is undocumented. -type AttachClassicLinkVPCRequest struct { - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - Groups []string `ec2:"SecurityGroupId" xml:"SecurityGroupId>groupId"` - InstanceID aws.StringValue `ec2:"InstanceId" xml:"instanceId"` - VPCID aws.StringValue `ec2:"VpcId" xml:"vpcId"` -} - -// AttachClassicLinkVPCResult is undocumented. -type AttachClassicLinkVPCResult struct { - Return aws.BooleanValue `ec2:"Return" xml:"return"` -} - -// AttachInternetGatewayRequest is undocumented. -type AttachInternetGatewayRequest struct { - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - InternetGatewayID aws.StringValue `ec2:"InternetGatewayId" xml:"internetGatewayId"` - VPCID aws.StringValue `ec2:"VpcId" xml:"vpcId"` -} - -// AttachNetworkInterfaceRequest is undocumented. -type AttachNetworkInterfaceRequest struct { - DeviceIndex aws.IntegerValue `ec2:"DeviceIndex" xml:"deviceIndex"` - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - InstanceID aws.StringValue `ec2:"InstanceId" xml:"instanceId"` - NetworkInterfaceID aws.StringValue `ec2:"NetworkInterfaceId" xml:"networkInterfaceId"` -} - -// AttachNetworkInterfaceResult is undocumented. -type AttachNetworkInterfaceResult struct { - AttachmentID aws.StringValue `ec2:"AttachmentId" xml:"attachmentId"` -} - -// AttachVolumeRequest is undocumented. -type AttachVolumeRequest struct { - Device aws.StringValue `ec2:"Device" xml:"Device"` - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - InstanceID aws.StringValue `ec2:"InstanceId" xml:"InstanceId"` - VolumeID aws.StringValue `ec2:"VolumeId" xml:"VolumeId"` -} - -// AttachVPNGatewayRequest is undocumented. -type AttachVPNGatewayRequest struct { - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - VPCID aws.StringValue `ec2:"VpcId" xml:"VpcId"` - VPNGatewayID aws.StringValue `ec2:"VpnGatewayId" xml:"VpnGatewayId"` -} - -// AttachVPNGatewayResult is undocumented. -type AttachVPNGatewayResult struct { - VPCAttachment *VPCAttachment `ec2:"VpcAttachment" xml:"attachment"` -} - -// Possible values for EC2. -const ( - AttachmentStatusAttached = "attached" - AttachmentStatusAttaching = "attaching" - AttachmentStatusDetached = "detached" - AttachmentStatusDetaching = "detaching" -) - -// AttributeBooleanValue is undocumented. -type AttributeBooleanValue struct { - Value aws.BooleanValue `ec2:"Value" xml:"value"` -} - -// AttributeValue is undocumented. -type AttributeValue struct { - Value aws.StringValue `ec2:"Value" xml:"value"` -} - -// AuthorizeSecurityGroupEgressRequest is undocumented. -type AuthorizeSecurityGroupEgressRequest struct { - CIDRIP aws.StringValue `ec2:"CidrIp" xml:"cidrIp"` - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - FromPort aws.IntegerValue `ec2:"FromPort" xml:"fromPort"` - GroupID aws.StringValue `ec2:"GroupId" xml:"groupId"` - IPPermissions []IPPermission `ec2:"IpPermissions" xml:"ipPermissions>item"` - IPProtocol aws.StringValue `ec2:"IpProtocol" xml:"ipProtocol"` - SourceSecurityGroupName aws.StringValue `ec2:"SourceSecurityGroupName" xml:"sourceSecurityGroupName"` - SourceSecurityGroupOwnerID aws.StringValue `ec2:"SourceSecurityGroupOwnerId" xml:"sourceSecurityGroupOwnerId"` - ToPort aws.IntegerValue `ec2:"ToPort" xml:"toPort"` -} - -// AuthorizeSecurityGroupIngressRequest is undocumented. -type AuthorizeSecurityGroupIngressRequest struct { - CIDRIP aws.StringValue `ec2:"CidrIp" xml:"CidrIp"` - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - FromPort aws.IntegerValue `ec2:"FromPort" xml:"FromPort"` - GroupID aws.StringValue `ec2:"GroupId" xml:"GroupId"` - GroupName aws.StringValue `ec2:"GroupName" xml:"GroupName"` - IPPermissions []IPPermission `ec2:"IpPermissions" xml:"IpPermissions>item"` - IPProtocol aws.StringValue `ec2:"IpProtocol" xml:"IpProtocol"` - SourceSecurityGroupName aws.StringValue `ec2:"SourceSecurityGroupName" xml:"SourceSecurityGroupName"` - SourceSecurityGroupOwnerID aws.StringValue `ec2:"SourceSecurityGroupOwnerId" xml:"SourceSecurityGroupOwnerId"` - ToPort aws.IntegerValue `ec2:"ToPort" xml:"ToPort"` -} - -// AvailabilityZone is undocumented. -type AvailabilityZone struct { - Messages []AvailabilityZoneMessage `ec2:"Messages" xml:"messageSet>item"` - RegionName aws.StringValue `ec2:"RegionName" xml:"regionName"` - State aws.StringValue `ec2:"State" xml:"zoneState"` - ZoneName aws.StringValue `ec2:"ZoneName" xml:"zoneName"` -} - -// AvailabilityZoneMessage is undocumented. -type AvailabilityZoneMessage struct { - Message aws.StringValue `ec2:"Message" xml:"message"` -} - -// Possible values for EC2. -const ( - AvailabilityZoneStateAvailable = "available" -) - -// BlobAttributeValue is undocumented. -type BlobAttributeValue struct { - Value []byte `ec2:"Value" xml:"value"` -} - -// BlockDeviceMapping is undocumented. -type BlockDeviceMapping struct { - DeviceName aws.StringValue `ec2:"DeviceName" xml:"deviceName"` - EBS *EBSBlockDevice `ec2:"Ebs" xml:"ebs"` - NoDevice aws.StringValue `ec2:"NoDevice" xml:"noDevice"` - VirtualName aws.StringValue `ec2:"VirtualName" xml:"virtualName"` -} - -// BundleInstanceRequest is undocumented. -type BundleInstanceRequest struct { - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - InstanceID aws.StringValue `ec2:"InstanceId" xml:"InstanceId"` - Storage *Storage `ec2:"Storage" xml:"Storage"` -} - -// BundleInstanceResult is undocumented. -type BundleInstanceResult struct { - BundleTask *BundleTask `ec2:"BundleTask" xml:"bundleInstanceTask"` -} - -// BundleTask is undocumented. -type BundleTask struct { - BundleID aws.StringValue `ec2:"BundleId" xml:"bundleId"` - BundleTaskError *BundleTaskError `ec2:"BundleTaskError" xml:"error"` - InstanceID aws.StringValue `ec2:"InstanceId" xml:"instanceId"` - Progress aws.StringValue `ec2:"Progress" xml:"progress"` - StartTime time.Time `ec2:"StartTime" xml:"startTime"` - State aws.StringValue `ec2:"State" xml:"state"` - Storage *Storage `ec2:"Storage" xml:"storage"` - UpdateTime time.Time `ec2:"UpdateTime" xml:"updateTime"` -} - -// BundleTaskError is undocumented. -type BundleTaskError struct { - Code aws.StringValue `ec2:"Code" xml:"code"` - Message aws.StringValue `ec2:"Message" xml:"message"` -} - -// Possible values for EC2. -const ( - BundleTaskStateBundling = "bundling" - BundleTaskStateCancelling = "cancelling" - BundleTaskStateComplete = "complete" - BundleTaskStateFailed = "failed" - BundleTaskStatePending = "pending" - BundleTaskStateStoring = "storing" - BundleTaskStateWaitingForShutdown = "waiting-for-shutdown" -) - -// CancelBundleTaskRequest is undocumented. -type CancelBundleTaskRequest struct { - BundleID aws.StringValue `ec2:"BundleId" xml:"BundleId"` - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` -} - -// CancelBundleTaskResult is undocumented. -type CancelBundleTaskResult struct { - BundleTask *BundleTask `ec2:"BundleTask" xml:"bundleInstanceTask"` -} - -// CancelConversionRequest is undocumented. -type CancelConversionRequest struct { - ConversionTaskID aws.StringValue `ec2:"ConversionTaskId" xml:"conversionTaskId"` - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - ReasonMessage aws.StringValue `ec2:"ReasonMessage" xml:"reasonMessage"` -} - -// CancelExportTaskRequest is undocumented. -type CancelExportTaskRequest struct { - ExportTaskID aws.StringValue `ec2:"ExportTaskId" xml:"exportTaskId"` -} - -// CancelReservedInstancesListingRequest is undocumented. -type CancelReservedInstancesListingRequest struct { - ReservedInstancesListingID aws.StringValue `ec2:"ReservedInstancesListingId" xml:"reservedInstancesListingId"` -} - -// CancelReservedInstancesListingResult is undocumented. -type CancelReservedInstancesListingResult struct { - ReservedInstancesListings []ReservedInstancesListing `ec2:"ReservedInstancesListings" xml:"reservedInstancesListingsSet>item"` -} - -// Possible values for EC2. -const ( - CancelSpotInstanceRequestStateActive = "active" - CancelSpotInstanceRequestStateCancelled = "cancelled" - CancelSpotInstanceRequestStateClosed = "closed" - CancelSpotInstanceRequestStateCompleted = "completed" - CancelSpotInstanceRequestStateOpen = "open" -) - -// CancelSpotInstanceRequestsRequest is undocumented. -type CancelSpotInstanceRequestsRequest struct { - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - SpotInstanceRequestIDs []string `ec2:"SpotInstanceRequestId" xml:"SpotInstanceRequestId>SpotInstanceRequestId"` -} - -// CancelSpotInstanceRequestsResult is undocumented. -type CancelSpotInstanceRequestsResult struct { - CancelledSpotInstanceRequests []CancelledSpotInstanceRequest `ec2:"CancelledSpotInstanceRequests" xml:"spotInstanceRequestSet>item"` -} - -// CancelledSpotInstanceRequest is undocumented. -type CancelledSpotInstanceRequest struct { - SpotInstanceRequestID aws.StringValue `ec2:"SpotInstanceRequestId" xml:"spotInstanceRequestId"` - State aws.StringValue `ec2:"State" xml:"state"` -} - -// ClassicLinkInstance is undocumented. -type ClassicLinkInstance struct { - Groups []GroupIdentifier `ec2:"Groups" xml:"groupSet>item"` - InstanceID aws.StringValue `ec2:"InstanceId" xml:"instanceId"` - Tags []Tag `ec2:"Tags" xml:"tagSet>item"` - VPCID aws.StringValue `ec2:"VpcId" xml:"vpcId"` -} - -// ConfirmProductInstanceRequest is undocumented. -type ConfirmProductInstanceRequest struct { - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - InstanceID aws.StringValue `ec2:"InstanceId" xml:"InstanceId"` - ProductCode aws.StringValue `ec2:"ProductCode" xml:"ProductCode"` -} - -// ConfirmProductInstanceResult is undocumented. -type ConfirmProductInstanceResult struct { - OwnerID aws.StringValue `ec2:"OwnerId" xml:"ownerId"` -} - -// Possible values for EC2. -const ( - ContainerFormatOva = "ova" -) - -// ConversionTask is undocumented. -type ConversionTask struct { - ConversionTaskID aws.StringValue `ec2:"ConversionTaskId" xml:"conversionTaskId"` - ExpirationTime aws.StringValue `ec2:"ExpirationTime" xml:"expirationTime"` - ImportInstance *ImportInstanceTaskDetails `ec2:"ImportInstance" xml:"importInstance"` - ImportVolume *ImportVolumeTaskDetails `ec2:"ImportVolume" xml:"importVolume"` - State aws.StringValue `ec2:"State" xml:"state"` - StatusMessage aws.StringValue `ec2:"StatusMessage" xml:"statusMessage"` - Tags []Tag `ec2:"Tags" xml:"tagSet>item"` -} - -// Possible values for EC2. -const ( - ConversionTaskStateActive = "active" - ConversionTaskStateCancelled = "cancelled" - ConversionTaskStateCancelling = "cancelling" - ConversionTaskStateCompleted = "completed" -) - -// CopyImageRequest is undocumented. -type CopyImageRequest struct { - ClientToken aws.StringValue `ec2:"ClientToken" xml:"ClientToken"` - Description aws.StringValue `ec2:"Description" xml:"Description"` - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - Name aws.StringValue `ec2:"Name" xml:"Name"` - SourceImageID aws.StringValue `ec2:"SourceImageId" xml:"SourceImageId"` - SourceRegion aws.StringValue `ec2:"SourceRegion" xml:"SourceRegion"` -} - -// CopyImageResult is undocumented. -type CopyImageResult struct { - ImageID aws.StringValue `ec2:"ImageId" xml:"imageId"` -} - -// CopySnapshotRequest is undocumented. -type CopySnapshotRequest struct { - Description aws.StringValue `ec2:"Description" xml:"Description"` - DestinationRegion aws.StringValue `ec2:"DestinationRegion" xml:"destinationRegion"` - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - PresignedURL aws.StringValue `ec2:"PresignedUrl" xml:"presignedUrl"` - SourceRegion aws.StringValue `ec2:"SourceRegion" xml:"SourceRegion"` - SourceSnapshotID aws.StringValue `ec2:"SourceSnapshotId" xml:"SourceSnapshotId"` -} - -// CopySnapshotResult is undocumented. -type CopySnapshotResult struct { - SnapshotID aws.StringValue `ec2:"SnapshotId" xml:"snapshotId"` -} - -// CreateCustomerGatewayRequest is undocumented. -type CreateCustomerGatewayRequest struct { - BGPASN aws.IntegerValue `ec2:"BgpAsn" xml:"BgpAsn"` - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - PublicIP aws.StringValue `ec2:"IpAddress" xml:"IpAddress"` - Type aws.StringValue `ec2:"Type" xml:"Type"` -} - -// CreateCustomerGatewayResult is undocumented. -type CreateCustomerGatewayResult struct { - CustomerGateway *CustomerGateway `ec2:"CustomerGateway" xml:"customerGateway"` -} - -// CreateDHCPOptionsRequest is undocumented. -type CreateDHCPOptionsRequest struct { - DHCPConfigurations []NewDHCPConfiguration `ec2:"DhcpConfigurations" xml:"dhcpConfiguration>item"` - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` -} - -// CreateDHCPOptionsResult is undocumented. -type CreateDHCPOptionsResult struct { - DHCPOptions *DHCPOptions `ec2:"DhcpOptions" xml:"dhcpOptions"` -} - -// CreateImageRequest is undocumented. -type CreateImageRequest struct { - BlockDeviceMappings []BlockDeviceMapping `ec2:"BlockDeviceMappings" xml:"blockDeviceMapping>BlockDeviceMapping"` - Description aws.StringValue `ec2:"Description" xml:"description"` - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - InstanceID aws.StringValue `ec2:"InstanceId" xml:"instanceId"` - Name aws.StringValue `ec2:"Name" xml:"name"` - NoReboot aws.BooleanValue `ec2:"NoReboot" xml:"noReboot"` -} - -// CreateImageResult is undocumented. -type CreateImageResult struct { - ImageID aws.StringValue `ec2:"ImageId" xml:"imageId"` -} - -// CreateInstanceExportTaskRequest is undocumented. -type CreateInstanceExportTaskRequest struct { - Description aws.StringValue `ec2:"Description" xml:"description"` - ExportToS3Task *ExportToS3TaskSpecification `ec2:"ExportToS3Task" xml:"exportToS3"` - InstanceID aws.StringValue `ec2:"InstanceId" xml:"instanceId"` - TargetEnvironment aws.StringValue `ec2:"TargetEnvironment" xml:"targetEnvironment"` -} - -// CreateInstanceExportTaskResult is undocumented. -type CreateInstanceExportTaskResult struct { - ExportTask *ExportTask `ec2:"ExportTask" xml:"exportTask"` -} - -// CreateInternetGatewayRequest is undocumented. -type CreateInternetGatewayRequest struct { - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` -} - -// CreateInternetGatewayResult is undocumented. -type CreateInternetGatewayResult struct { - InternetGateway *InternetGateway `ec2:"InternetGateway" xml:"internetGateway"` -} - -// CreateKeyPairRequest is undocumented. -type CreateKeyPairRequest struct { - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - KeyName aws.StringValue `ec2:"KeyName" xml:"KeyName"` -} - -// CreateNetworkACLEntryRequest is undocumented. -type CreateNetworkACLEntryRequest struct { - CIDRBlock aws.StringValue `ec2:"CidrBlock" xml:"cidrBlock"` - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - Egress aws.BooleanValue `ec2:"Egress" xml:"egress"` - ICMPTypeCode *ICMPTypeCode `ec2:"Icmp" xml:"Icmp"` - NetworkACLID aws.StringValue `ec2:"NetworkAclId" xml:"networkAclId"` - PortRange *PortRange `ec2:"PortRange" xml:"portRange"` - Protocol aws.StringValue `ec2:"Protocol" xml:"protocol"` - RuleAction aws.StringValue `ec2:"RuleAction" xml:"ruleAction"` - RuleNumber aws.IntegerValue `ec2:"RuleNumber" xml:"ruleNumber"` -} - -// CreateNetworkACLRequest is undocumented. -type CreateNetworkACLRequest struct { - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - VPCID aws.StringValue `ec2:"VpcId" xml:"vpcId"` -} - -// CreateNetworkACLResult is undocumented. -type CreateNetworkACLResult struct { - NetworkACL *NetworkACL `ec2:"NetworkAcl" xml:"networkAcl"` -} - -// CreateNetworkInterfaceRequest is undocumented. -type CreateNetworkInterfaceRequest struct { - Description aws.StringValue `ec2:"Description" xml:"description"` - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - Groups []string `ec2:"SecurityGroupId" xml:"SecurityGroupId>SecurityGroupId"` - PrivateIPAddress aws.StringValue `ec2:"PrivateIpAddress" xml:"privateIpAddress"` - PrivateIPAddresses []PrivateIPAddressSpecification `ec2:"PrivateIpAddresses" xml:"privateIpAddresses>item"` - SecondaryPrivateIPAddressCount aws.IntegerValue `ec2:"SecondaryPrivateIpAddressCount" xml:"secondaryPrivateIpAddressCount"` - SubnetID aws.StringValue `ec2:"SubnetId" xml:"subnetId"` -} - -// CreateNetworkInterfaceResult is undocumented. -type CreateNetworkInterfaceResult struct { - NetworkInterface *NetworkInterface `ec2:"NetworkInterface" xml:"networkInterface"` -} - -// CreatePlacementGroupRequest is undocumented. -type CreatePlacementGroupRequest struct { - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - GroupName aws.StringValue `ec2:"GroupName" xml:"groupName"` - Strategy aws.StringValue `ec2:"Strategy" xml:"strategy"` -} - -// CreateReservedInstancesListingRequest is undocumented. -type CreateReservedInstancesListingRequest struct { - ClientToken aws.StringValue `ec2:"ClientToken" xml:"clientToken"` - InstanceCount aws.IntegerValue `ec2:"InstanceCount" xml:"instanceCount"` - PriceSchedules []PriceScheduleSpecification `ec2:"PriceSchedules" xml:"priceSchedules>item"` - ReservedInstancesID aws.StringValue `ec2:"ReservedInstancesId" xml:"reservedInstancesId"` -} - -// CreateReservedInstancesListingResult is undocumented. -type CreateReservedInstancesListingResult struct { - ReservedInstancesListings []ReservedInstancesListing `ec2:"ReservedInstancesListings" xml:"reservedInstancesListingsSet>item"` -} - -// CreateRouteRequest is undocumented. -type CreateRouteRequest struct { - DestinationCIDRBlock aws.StringValue `ec2:"DestinationCidrBlock" xml:"destinationCidrBlock"` - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - GatewayID aws.StringValue `ec2:"GatewayId" xml:"gatewayId"` - InstanceID aws.StringValue `ec2:"InstanceId" xml:"instanceId"` - NetworkInterfaceID aws.StringValue `ec2:"NetworkInterfaceId" xml:"networkInterfaceId"` - RouteTableID aws.StringValue `ec2:"RouteTableId" xml:"routeTableId"` - VPCPeeringConnectionID aws.StringValue `ec2:"VpcPeeringConnectionId" xml:"vpcPeeringConnectionId"` -} - -// CreateRouteTableRequest is undocumented. -type CreateRouteTableRequest struct { - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - VPCID aws.StringValue `ec2:"VpcId" xml:"vpcId"` -} - -// CreateRouteTableResult is undocumented. -type CreateRouteTableResult struct { - RouteTable *RouteTable `ec2:"RouteTable" xml:"routeTable"` -} - -// CreateSecurityGroupRequest is undocumented. -type CreateSecurityGroupRequest struct { - Description aws.StringValue `ec2:"GroupDescription" xml:"GroupDescription"` - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - GroupName aws.StringValue `ec2:"GroupName" xml:"GroupName"` - VPCID aws.StringValue `ec2:"VpcId" xml:"VpcId"` -} - -// CreateSecurityGroupResult is undocumented. -type CreateSecurityGroupResult struct { - GroupID aws.StringValue `ec2:"GroupId" xml:"groupId"` -} - -// CreateSnapshotRequest is undocumented. -type CreateSnapshotRequest struct { - Description aws.StringValue `ec2:"Description" xml:"Description"` - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - VolumeID aws.StringValue `ec2:"VolumeId" xml:"VolumeId"` -} - -// CreateSpotDatafeedSubscriptionRequest is undocumented. -type CreateSpotDatafeedSubscriptionRequest struct { - Bucket aws.StringValue `ec2:"Bucket" xml:"bucket"` - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - Prefix aws.StringValue `ec2:"Prefix" xml:"prefix"` -} - -// CreateSpotDatafeedSubscriptionResult is undocumented. -type CreateSpotDatafeedSubscriptionResult struct { - SpotDatafeedSubscription *SpotDatafeedSubscription `ec2:"SpotDatafeedSubscription" xml:"spotDatafeedSubscription"` -} - -// CreateSubnetRequest is undocumented. -type CreateSubnetRequest struct { - AvailabilityZone aws.StringValue `ec2:"AvailabilityZone" xml:"AvailabilityZone"` - CIDRBlock aws.StringValue `ec2:"CidrBlock" xml:"CidrBlock"` - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - VPCID aws.StringValue `ec2:"VpcId" xml:"VpcId"` -} - -// CreateSubnetResult is undocumented. -type CreateSubnetResult struct { - Subnet *Subnet `ec2:"Subnet" xml:"subnet"` -} - -// CreateTagsRequest is undocumented. -type CreateTagsRequest struct { - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - Resources []string `ec2:"ResourceId" xml:"ResourceId>member"` - Tags []Tag `ec2:"Tag" xml:"Tag>item"` -} - -// CreateVolumePermission is undocumented. -type CreateVolumePermission struct { - Group aws.StringValue `ec2:"Group" xml:"group"` - UserID aws.StringValue `ec2:"UserId" xml:"userId"` -} - -// CreateVolumePermissionModifications is undocumented. -type CreateVolumePermissionModifications struct { - Add []CreateVolumePermission `ec2:"Add" xml:"Add>item"` - Remove []CreateVolumePermission `ec2:"Remove" xml:"Remove>item"` -} - -// CreateVolumeRequest is undocumented. -type CreateVolumeRequest struct { - AvailabilityZone aws.StringValue `ec2:"AvailabilityZone" xml:"AvailabilityZone"` - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - Encrypted aws.BooleanValue `ec2:"Encrypted" xml:"encrypted"` - IOPS aws.IntegerValue `ec2:"Iops" xml:"Iops"` - KMSKeyID aws.StringValue `ec2:"KmsKeyId" xml:"KmsKeyId"` - Size aws.IntegerValue `ec2:"Size" xml:"Size"` - SnapshotID aws.StringValue `ec2:"SnapshotId" xml:"SnapshotId"` - VolumeType aws.StringValue `ec2:"VolumeType" xml:"VolumeType"` -} - -// CreateVPCPeeringConnectionRequest is undocumented. -type CreateVPCPeeringConnectionRequest struct { - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - PeerOwnerID aws.StringValue `ec2:"PeerOwnerId" xml:"peerOwnerId"` - PeerVPCID aws.StringValue `ec2:"PeerVpcId" xml:"peerVpcId"` - VPCID aws.StringValue `ec2:"VpcId" xml:"vpcId"` -} - -// CreateVPCPeeringConnectionResult is undocumented. -type CreateVPCPeeringConnectionResult struct { - VPCPeeringConnection *VPCPeeringConnection `ec2:"VpcPeeringConnection" xml:"vpcPeeringConnection"` -} - -// CreateVPCRequest is undocumented. -type CreateVPCRequest struct { - CIDRBlock aws.StringValue `ec2:"CidrBlock" xml:"CidrBlock"` - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - InstanceTenancy aws.StringValue `ec2:"InstanceTenancy" xml:"instanceTenancy"` -} - -// CreateVPCResult is undocumented. -type CreateVPCResult struct { - VPC *VPC `ec2:"Vpc" xml:"vpc"` -} - -// CreateVPNConnectionRequest is undocumented. -type CreateVPNConnectionRequest struct { - CustomerGatewayID aws.StringValue `ec2:"CustomerGatewayId" xml:"CustomerGatewayId"` - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - Options *VPNConnectionOptionsSpecification `ec2:"Options" xml:"options"` - Type aws.StringValue `ec2:"Type" xml:"Type"` - VPNGatewayID aws.StringValue `ec2:"VpnGatewayId" xml:"VpnGatewayId"` -} - -// CreateVPNConnectionResult is undocumented. -type CreateVPNConnectionResult struct { - VPNConnection *VPNConnection `ec2:"VpnConnection" xml:"vpnConnection"` -} - -// CreateVPNConnectionRouteRequest is undocumented. -type CreateVPNConnectionRouteRequest struct { - DestinationCIDRBlock aws.StringValue `ec2:"DestinationCidrBlock" xml:"DestinationCidrBlock"` - VPNConnectionID aws.StringValue `ec2:"VpnConnectionId" xml:"VpnConnectionId"` -} - -// CreateVPNGatewayRequest is undocumented. -type CreateVPNGatewayRequest struct { - AvailabilityZone aws.StringValue `ec2:"AvailabilityZone" xml:"AvailabilityZone"` - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - Type aws.StringValue `ec2:"Type" xml:"Type"` -} - -// CreateVPNGatewayResult is undocumented. -type CreateVPNGatewayResult struct { - VPNGateway *VPNGateway `ec2:"VpnGateway" xml:"vpnGateway"` -} - -// Possible values for EC2. -const ( - CurrencyCodeValuesUsd = "USD" -) - -// CustomerGateway is undocumented. -type CustomerGateway struct { - BGPASN aws.StringValue `ec2:"BgpAsn" xml:"bgpAsn"` - CustomerGatewayID aws.StringValue `ec2:"CustomerGatewayId" xml:"customerGatewayId"` - IPAddress aws.StringValue `ec2:"IpAddress" xml:"ipAddress"` - State aws.StringValue `ec2:"State" xml:"state"` - Tags []Tag `ec2:"Tags" xml:"tagSet>item"` - Type aws.StringValue `ec2:"Type" xml:"type"` -} - -// Possible values for EC2. -const ( - DatafeedSubscriptionStateActive = "Active" - DatafeedSubscriptionStateInactive = "Inactive" -) - -// DeleteCustomerGatewayRequest is undocumented. -type DeleteCustomerGatewayRequest struct { - CustomerGatewayID aws.StringValue `ec2:"CustomerGatewayId" xml:"CustomerGatewayId"` - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` -} - -// DeleteDHCPOptionsRequest is undocumented. -type DeleteDHCPOptionsRequest struct { - DHCPOptionsID aws.StringValue `ec2:"DhcpOptionsId" xml:"DhcpOptionsId"` - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` -} - -// DeleteInternetGatewayRequest is undocumented. -type DeleteInternetGatewayRequest struct { - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - InternetGatewayID aws.StringValue `ec2:"InternetGatewayId" xml:"internetGatewayId"` -} - -// DeleteKeyPairRequest is undocumented. -type DeleteKeyPairRequest struct { - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - KeyName aws.StringValue `ec2:"KeyName" xml:"KeyName"` -} - -// DeleteNetworkACLEntryRequest is undocumented. -type DeleteNetworkACLEntryRequest struct { - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - Egress aws.BooleanValue `ec2:"Egress" xml:"egress"` - NetworkACLID aws.StringValue `ec2:"NetworkAclId" xml:"networkAclId"` - RuleNumber aws.IntegerValue `ec2:"RuleNumber" xml:"ruleNumber"` -} - -// DeleteNetworkACLRequest is undocumented. -type DeleteNetworkACLRequest struct { - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - NetworkACLID aws.StringValue `ec2:"NetworkAclId" xml:"networkAclId"` -} - -// DeleteNetworkInterfaceRequest is undocumented. -type DeleteNetworkInterfaceRequest struct { - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - NetworkInterfaceID aws.StringValue `ec2:"NetworkInterfaceId" xml:"networkInterfaceId"` -} - -// DeletePlacementGroupRequest is undocumented. -type DeletePlacementGroupRequest struct { - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - GroupName aws.StringValue `ec2:"GroupName" xml:"groupName"` -} - -// DeleteRouteRequest is undocumented. -type DeleteRouteRequest struct { - DestinationCIDRBlock aws.StringValue `ec2:"DestinationCidrBlock" xml:"destinationCidrBlock"` - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - RouteTableID aws.StringValue `ec2:"RouteTableId" xml:"routeTableId"` -} - -// DeleteRouteTableRequest is undocumented. -type DeleteRouteTableRequest struct { - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - RouteTableID aws.StringValue `ec2:"RouteTableId" xml:"routeTableId"` -} - -// DeleteSecurityGroupRequest is undocumented. -type DeleteSecurityGroupRequest struct { - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - GroupID aws.StringValue `ec2:"GroupId" xml:"GroupId"` - GroupName aws.StringValue `ec2:"GroupName" xml:"GroupName"` -} - -// DeleteSnapshotRequest is undocumented. -type DeleteSnapshotRequest struct { - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - SnapshotID aws.StringValue `ec2:"SnapshotId" xml:"SnapshotId"` -} - -// DeleteSpotDatafeedSubscriptionRequest is undocumented. -type DeleteSpotDatafeedSubscriptionRequest struct { - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` -} - -// DeleteSubnetRequest is undocumented. -type DeleteSubnetRequest struct { - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - SubnetID aws.StringValue `ec2:"SubnetId" xml:"SubnetId"` -} - -// DeleteTagsRequest is undocumented. -type DeleteTagsRequest struct { - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - Resources []string `ec2:"Resources" xml:"resourceId>member"` - Tags []Tag `ec2:"Tags" xml:"tag>item"` -} - -// DeleteVolumeRequest is undocumented. -type DeleteVolumeRequest struct { - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - VolumeID aws.StringValue `ec2:"VolumeId" xml:"VolumeId"` -} - -// DeleteVPCPeeringConnectionRequest is undocumented. -type DeleteVPCPeeringConnectionRequest struct { - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - VPCPeeringConnectionID aws.StringValue `ec2:"VpcPeeringConnectionId" xml:"vpcPeeringConnectionId"` -} - -// DeleteVPCPeeringConnectionResult is undocumented. -type DeleteVPCPeeringConnectionResult struct { - Return aws.BooleanValue `ec2:"Return" xml:"return"` -} - -// DeleteVPCRequest is undocumented. -type DeleteVPCRequest struct { - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - VPCID aws.StringValue `ec2:"VpcId" xml:"VpcId"` -} - -// DeleteVPNConnectionRequest is undocumented. -type DeleteVPNConnectionRequest struct { - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - VPNConnectionID aws.StringValue `ec2:"VpnConnectionId" xml:"VpnConnectionId"` -} - -// DeleteVPNConnectionRouteRequest is undocumented. -type DeleteVPNConnectionRouteRequest struct { - DestinationCIDRBlock aws.StringValue `ec2:"DestinationCidrBlock" xml:"DestinationCidrBlock"` - VPNConnectionID aws.StringValue `ec2:"VpnConnectionId" xml:"VpnConnectionId"` -} - -// DeleteVPNGatewayRequest is undocumented. -type DeleteVPNGatewayRequest struct { - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - VPNGatewayID aws.StringValue `ec2:"VpnGatewayId" xml:"VpnGatewayId"` -} - -// DeregisterImageRequest is undocumented. -type DeregisterImageRequest struct { - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - ImageID aws.StringValue `ec2:"ImageId" xml:"ImageId"` -} - -// DescribeAccountAttributesRequest is undocumented. -type DescribeAccountAttributesRequest struct { - AttributeNames []string `ec2:"AttributeNames" xml:"attributeName>attributeName"` - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` -} - -// DescribeAccountAttributesResult is undocumented. -type DescribeAccountAttributesResult struct { - AccountAttributes []AccountAttribute `ec2:"AccountAttributes" xml:"accountAttributeSet>item"` -} - -// DescribeAddressesRequest is undocumented. -type DescribeAddressesRequest struct { - AllocationIDs []string `ec2:"AllocationId" xml:"AllocationId>AllocationId"` - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - Filters []Filter `ec2:"Filter" xml:"Filter>Filter"` - PublicIPs []string `ec2:"PublicIp" xml:"PublicIp>PublicIp"` -} - -// DescribeAddressesResult is undocumented. -type DescribeAddressesResult struct { - Addresses []Address `ec2:"Addresses" xml:"addressesSet>item"` -} - -// DescribeAvailabilityZonesRequest is undocumented. -type DescribeAvailabilityZonesRequest struct { - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - Filters []Filter `ec2:"Filter" xml:"Filter>Filter"` - ZoneNames []string `ec2:"ZoneName" xml:"ZoneName>ZoneName"` -} - -// DescribeAvailabilityZonesResult is undocumented. -type DescribeAvailabilityZonesResult struct { - AvailabilityZones []AvailabilityZone `ec2:"AvailabilityZones" xml:"availabilityZoneInfo>item"` -} - -// DescribeBundleTasksRequest is undocumented. -type DescribeBundleTasksRequest struct { - BundleIDs []string `ec2:"BundleId" xml:"BundleId>BundleId"` - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - Filters []Filter `ec2:"Filter" xml:"Filter>Filter"` -} - -// DescribeBundleTasksResult is undocumented. -type DescribeBundleTasksResult struct { - BundleTasks []BundleTask `ec2:"BundleTasks" xml:"bundleInstanceTasksSet>item"` -} - -// DescribeClassicLinkInstancesRequest is undocumented. -type DescribeClassicLinkInstancesRequest struct { - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - Filters []Filter `ec2:"Filter" xml:"Filter>Filter"` - InstanceIDs []string `ec2:"InstanceId" xml:"InstanceId>InstanceId"` - MaxResults aws.IntegerValue `ec2:"MaxResults" xml:"maxResults"` - NextToken aws.StringValue `ec2:"NextToken" xml:"nextToken"` -} - -// DescribeClassicLinkInstancesResult is undocumented. -type DescribeClassicLinkInstancesResult struct { - Instances []ClassicLinkInstance `ec2:"Instances" xml:"instancesSet>item"` - NextToken aws.StringValue `ec2:"NextToken" xml:"nextToken"` -} - -// DescribeConversionTasksRequest is undocumented. -type DescribeConversionTasksRequest struct { - ConversionTaskIDs []string `ec2:"ConversionTaskIds" xml:"conversionTaskId>item"` - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - Filters []Filter `ec2:"Filters" xml:"filter>Filter"` -} - -// DescribeConversionTasksResult is undocumented. -type DescribeConversionTasksResult struct { - ConversionTasks []ConversionTask `ec2:"ConversionTasks" xml:"conversionTasks>item"` -} - -// DescribeCustomerGatewaysRequest is undocumented. -type DescribeCustomerGatewaysRequest struct { - CustomerGatewayIDs []string `ec2:"CustomerGatewayId" xml:"CustomerGatewayId>CustomerGatewayId"` - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - Filters []Filter `ec2:"Filter" xml:"Filter>Filter"` -} - -// DescribeCustomerGatewaysResult is undocumented. -type DescribeCustomerGatewaysResult struct { - CustomerGateways []CustomerGateway `ec2:"CustomerGateways" xml:"customerGatewaySet>item"` -} - -// DescribeDHCPOptionsRequest is undocumented. -type DescribeDHCPOptionsRequest struct { - DHCPOptionsIDs []string `ec2:"DhcpOptionsId" xml:"DhcpOptionsId>DhcpOptionsId"` - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - Filters []Filter `ec2:"Filter" xml:"Filter>Filter"` -} - -// DescribeDHCPOptionsResult is undocumented. -type DescribeDHCPOptionsResult struct { - DHCPOptions []DHCPOptions `ec2:"DhcpOptions" xml:"dhcpOptionsSet>item"` -} - -// DescribeExportTasksRequest is undocumented. -type DescribeExportTasksRequest struct { - ExportTaskIDs []string `ec2:"ExportTaskIds" xml:"exportTaskId>ExportTaskId"` -} - -// DescribeExportTasksResult is undocumented. -type DescribeExportTasksResult struct { - ExportTasks []ExportTask `ec2:"ExportTasks" xml:"exportTaskSet>item"` -} - -// DescribeImageAttributeRequest is undocumented. -type DescribeImageAttributeRequest struct { - Attribute aws.StringValue `ec2:"Attribute" xml:"Attribute"` - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - ImageID aws.StringValue `ec2:"ImageId" xml:"ImageId"` -} - -// DescribeImagesRequest is undocumented. -type DescribeImagesRequest struct { - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - ExecutableUsers []string `ec2:"ExecutableBy" xml:"ExecutableBy>ExecutableBy"` - Filters []Filter `ec2:"Filter" xml:"Filter>Filter"` - ImageIDs []string `ec2:"ImageId" xml:"ImageId>ImageId"` - Owners []string `ec2:"Owner" xml:"Owner>Owner"` -} - -// DescribeImagesResult is undocumented. -type DescribeImagesResult struct { - Images []Image `ec2:"Images" xml:"imagesSet>item"` -} - -// DescribeInstanceAttributeRequest is undocumented. -type DescribeInstanceAttributeRequest struct { - Attribute aws.StringValue `ec2:"Attribute" xml:"attribute"` - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - InstanceID aws.StringValue `ec2:"InstanceId" xml:"instanceId"` -} - -// DescribeInstanceStatusRequest is undocumented. -type DescribeInstanceStatusRequest struct { - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - Filters []Filter `ec2:"Filter" xml:"Filter>Filter"` - IncludeAllInstances aws.BooleanValue `ec2:"IncludeAllInstances" xml:"includeAllInstances"` - InstanceIDs []string `ec2:"InstanceId" xml:"InstanceId>InstanceId"` - MaxResults aws.IntegerValue `ec2:"MaxResults" xml:"MaxResults"` - NextToken aws.StringValue `ec2:"NextToken" xml:"NextToken"` -} - -// DescribeInstanceStatusResult is undocumented. -type DescribeInstanceStatusResult struct { - InstanceStatuses []InstanceStatus `ec2:"InstanceStatuses" xml:"instanceStatusSet>item"` - NextToken aws.StringValue `ec2:"NextToken" xml:"nextToken"` -} - -// DescribeInstancesRequest is undocumented. -type DescribeInstancesRequest struct { - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - Filters []Filter `ec2:"Filter" xml:"Filter>Filter"` - InstanceIDs []string `ec2:"InstanceId" xml:"InstanceId>InstanceId"` - MaxResults aws.IntegerValue `ec2:"MaxResults" xml:"maxResults"` - NextToken aws.StringValue `ec2:"NextToken" xml:"nextToken"` -} - -// DescribeInstancesResult is undocumented. -type DescribeInstancesResult struct { - NextToken aws.StringValue `ec2:"NextToken" xml:"nextToken"` - Reservations []Reservation `ec2:"Reservations" xml:"reservationSet>item"` -} - -// DescribeInternetGatewaysRequest is undocumented. -type DescribeInternetGatewaysRequest struct { - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - Filters []Filter `ec2:"Filter" xml:"Filter>Filter"` - InternetGatewayIDs []string `ec2:"InternetGatewayIds" xml:"internetGatewayId>item"` -} - -// DescribeInternetGatewaysResult is undocumented. -type DescribeInternetGatewaysResult struct { - InternetGateways []InternetGateway `ec2:"InternetGateways" xml:"internetGatewaySet>item"` -} - -// DescribeKeyPairsRequest is undocumented. -type DescribeKeyPairsRequest struct { - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - Filters []Filter `ec2:"Filter" xml:"Filter>Filter"` - KeyNames []string `ec2:"KeyName" xml:"KeyName>KeyName"` -} - -// DescribeKeyPairsResult is undocumented. -type DescribeKeyPairsResult struct { - KeyPairs []KeyPairInfo `ec2:"KeyPairs" xml:"keySet>item"` -} - -// DescribeNetworkACLsRequest is undocumented. -type DescribeNetworkACLsRequest struct { - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - Filters []Filter `ec2:"Filter" xml:"Filter>Filter"` - NetworkACLIDs []string `ec2:"NetworkAclId" xml:"NetworkAclId>item"` -} - -// DescribeNetworkACLsResult is undocumented. -type DescribeNetworkACLsResult struct { - NetworkACLs []NetworkACL `ec2:"NetworkAcls" xml:"networkAclSet>item"` -} - -// DescribeNetworkInterfaceAttributeRequest is undocumented. -type DescribeNetworkInterfaceAttributeRequest struct { - Attribute aws.StringValue `ec2:"Attribute" xml:"attribute"` - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - NetworkInterfaceID aws.StringValue `ec2:"NetworkInterfaceId" xml:"networkInterfaceId"` -} - -// DescribeNetworkInterfaceAttributeResult is undocumented. -type DescribeNetworkInterfaceAttributeResult struct { - Attachment *NetworkInterfaceAttachment `ec2:"Attachment" xml:"attachment"` - Description *AttributeValue `ec2:"Description" xml:"description"` - Groups []GroupIdentifier `ec2:"Groups" xml:"groupSet>item"` - NetworkInterfaceID aws.StringValue `ec2:"NetworkInterfaceId" xml:"networkInterfaceId"` - SourceDestCheck *AttributeBooleanValue `ec2:"SourceDestCheck" xml:"sourceDestCheck"` -} - -// DescribeNetworkInterfacesRequest is undocumented. -type DescribeNetworkInterfacesRequest struct { - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - Filters []Filter `ec2:"Filters" xml:"filter>Filter"` - NetworkInterfaceIDs []string `ec2:"NetworkInterfaceId" xml:"NetworkInterfaceId>item"` -} - -// DescribeNetworkInterfacesResult is undocumented. -type DescribeNetworkInterfacesResult struct { - NetworkInterfaces []NetworkInterface `ec2:"NetworkInterfaces" xml:"networkInterfaceSet>item"` -} - -// DescribePlacementGroupsRequest is undocumented. -type DescribePlacementGroupsRequest struct { - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - Filters []Filter `ec2:"Filter" xml:"Filter>Filter"` - GroupNames []string `ec2:"GroupNames" xml:"groupName>member"` -} - -// DescribePlacementGroupsResult is undocumented. -type DescribePlacementGroupsResult struct { - PlacementGroups []PlacementGroup `ec2:"PlacementGroups" xml:"placementGroupSet>item"` -} - -// DescribeRegionsRequest is undocumented. -type DescribeRegionsRequest struct { - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - Filters []Filter `ec2:"Filter" xml:"Filter>Filter"` - RegionNames []string `ec2:"RegionName" xml:"RegionName>RegionName"` -} - -// DescribeRegionsResult is undocumented. -type DescribeRegionsResult struct { - Regions []Region `ec2:"Regions" xml:"regionInfo>item"` -} - -// DescribeReservedInstancesListingsRequest is undocumented. -type DescribeReservedInstancesListingsRequest struct { - Filters []Filter `ec2:"Filters" xml:"filters>Filter"` - ReservedInstancesID aws.StringValue `ec2:"ReservedInstancesId" xml:"reservedInstancesId"` - ReservedInstancesListingID aws.StringValue `ec2:"ReservedInstancesListingId" xml:"reservedInstancesListingId"` -} - -// DescribeReservedInstancesListingsResult is undocumented. -type DescribeReservedInstancesListingsResult struct { - ReservedInstancesListings []ReservedInstancesListing `ec2:"ReservedInstancesListings" xml:"reservedInstancesListingsSet>item"` -} - -// DescribeReservedInstancesModificationsRequest is undocumented. -type DescribeReservedInstancesModificationsRequest struct { - Filters []Filter `ec2:"Filter" xml:"Filter>Filter"` - NextToken aws.StringValue `ec2:"NextToken" xml:"nextToken"` - ReservedInstancesModificationIDs []string `ec2:"ReservedInstancesModificationId" xml:"ReservedInstancesModificationId>ReservedInstancesModificationId"` -} - -// DescribeReservedInstancesModificationsResult is undocumented. -type DescribeReservedInstancesModificationsResult struct { - NextToken aws.StringValue `ec2:"NextToken" xml:"nextToken"` - ReservedInstancesModifications []ReservedInstancesModification `ec2:"ReservedInstancesModifications" xml:"reservedInstancesModificationsSet>item"` -} - -// DescribeReservedInstancesOfferingsRequest is undocumented. -type DescribeReservedInstancesOfferingsRequest struct { - AvailabilityZone aws.StringValue `ec2:"AvailabilityZone" xml:"AvailabilityZone"` - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - Filters []Filter `ec2:"Filter" xml:"Filter>Filter"` - IncludeMarketplace aws.BooleanValue `ec2:"IncludeMarketplace" xml:"IncludeMarketplace"` - InstanceTenancy aws.StringValue `ec2:"InstanceTenancy" xml:"instanceTenancy"` - InstanceType aws.StringValue `ec2:"InstanceType" xml:"InstanceType"` - MaxDuration aws.LongValue `ec2:"MaxDuration" xml:"MaxDuration"` - MaxInstanceCount aws.IntegerValue `ec2:"MaxInstanceCount" xml:"MaxInstanceCount"` - MaxResults aws.IntegerValue `ec2:"MaxResults" xml:"maxResults"` - MinDuration aws.LongValue `ec2:"MinDuration" xml:"MinDuration"` - NextToken aws.StringValue `ec2:"NextToken" xml:"nextToken"` - OfferingType aws.StringValue `ec2:"OfferingType" xml:"offeringType"` - ProductDescription aws.StringValue `ec2:"ProductDescription" xml:"ProductDescription"` - ReservedInstancesOfferingIDs []string `ec2:"ReservedInstancesOfferingId" xml:"ReservedInstancesOfferingId>member"` -} - -// DescribeReservedInstancesOfferingsResult is undocumented. -type DescribeReservedInstancesOfferingsResult struct { - NextToken aws.StringValue `ec2:"NextToken" xml:"nextToken"` - ReservedInstancesOfferings []ReservedInstancesOffering `ec2:"ReservedInstancesOfferings" xml:"reservedInstancesOfferingsSet>item"` -} - -// DescribeReservedInstancesRequest is undocumented. -type DescribeReservedInstancesRequest struct { - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - Filters []Filter `ec2:"Filter" xml:"Filter>Filter"` - OfferingType aws.StringValue `ec2:"OfferingType" xml:"offeringType"` - ReservedInstancesIDs []string `ec2:"ReservedInstancesId" xml:"ReservedInstancesId>ReservedInstancesId"` -} - -// DescribeReservedInstancesResult is undocumented. -type DescribeReservedInstancesResult struct { - ReservedInstances []ReservedInstances `ec2:"ReservedInstances" xml:"reservedInstancesSet>item"` -} - -// DescribeRouteTablesRequest is undocumented. -type DescribeRouteTablesRequest struct { - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - Filters []Filter `ec2:"Filter" xml:"Filter>Filter"` - RouteTableIDs []string `ec2:"RouteTableId" xml:"RouteTableId>item"` -} - -// DescribeRouteTablesResult is undocumented. -type DescribeRouteTablesResult struct { - RouteTables []RouteTable `ec2:"RouteTables" xml:"routeTableSet>item"` -} - -// DescribeSecurityGroupsRequest is undocumented. -type DescribeSecurityGroupsRequest struct { - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - Filters []Filter `ec2:"Filter" xml:"Filter>Filter"` - GroupIDs []string `ec2:"GroupId" xml:"GroupId>groupId"` - GroupNames []string `ec2:"GroupName" xml:"GroupName>GroupName"` -} - -// DescribeSecurityGroupsResult is undocumented. -type DescribeSecurityGroupsResult struct { - SecurityGroups []SecurityGroup `ec2:"SecurityGroups" xml:"securityGroupInfo>item"` -} - -// DescribeSnapshotAttributeRequest is undocumented. -type DescribeSnapshotAttributeRequest struct { - Attribute aws.StringValue `ec2:"Attribute" xml:"Attribute"` - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - SnapshotID aws.StringValue `ec2:"SnapshotId" xml:"SnapshotId"` -} - -// DescribeSnapshotAttributeResult is undocumented. -type DescribeSnapshotAttributeResult struct { - CreateVolumePermissions []CreateVolumePermission `ec2:"CreateVolumePermissions" xml:"createVolumePermission>item"` - ProductCodes []ProductCode `ec2:"ProductCodes" xml:"productCodes>item"` - SnapshotID aws.StringValue `ec2:"SnapshotId" xml:"snapshotId"` -} - -// DescribeSnapshotsRequest is undocumented. -type DescribeSnapshotsRequest struct { - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - Filters []Filter `ec2:"Filter" xml:"Filter>Filter"` - OwnerIDs []string `ec2:"Owner" xml:"Owner>Owner"` - RestorableByUserIDs []string `ec2:"RestorableBy" xml:"RestorableBy>member"` - SnapshotIDs []string `ec2:"SnapshotId" xml:"SnapshotId>SnapshotId"` -} - -// DescribeSnapshotsResult is undocumented. -type DescribeSnapshotsResult struct { - Snapshots []Snapshot `ec2:"Snapshots" xml:"snapshotSet>item"` -} - -// DescribeSpotDatafeedSubscriptionRequest is undocumented. -type DescribeSpotDatafeedSubscriptionRequest struct { - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` -} - -// DescribeSpotDatafeedSubscriptionResult is undocumented. -type DescribeSpotDatafeedSubscriptionResult struct { - SpotDatafeedSubscription *SpotDatafeedSubscription `ec2:"SpotDatafeedSubscription" xml:"spotDatafeedSubscription"` -} - -// DescribeSpotInstanceRequestsRequest is undocumented. -type DescribeSpotInstanceRequestsRequest struct { - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - Filters []Filter `ec2:"Filter" xml:"Filter>Filter"` - SpotInstanceRequestIDs []string `ec2:"SpotInstanceRequestId" xml:"SpotInstanceRequestId>SpotInstanceRequestId"` -} - -// DescribeSpotInstanceRequestsResult is undocumented. -type DescribeSpotInstanceRequestsResult struct { - SpotInstanceRequests []SpotInstanceRequest `ec2:"SpotInstanceRequests" xml:"spotInstanceRequestSet>item"` -} - -// DescribeSpotPriceHistoryRequest is undocumented. -type DescribeSpotPriceHistoryRequest struct { - AvailabilityZone aws.StringValue `ec2:"AvailabilityZone" xml:"availabilityZone"` - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - EndTime time.Time `ec2:"EndTime" xml:"endTime"` - Filters []Filter `ec2:"Filter" xml:"Filter>Filter"` - InstanceTypes []string `ec2:"InstanceType" xml:"InstanceType>member"` - MaxResults aws.IntegerValue `ec2:"MaxResults" xml:"maxResults"` - NextToken aws.StringValue `ec2:"NextToken" xml:"nextToken"` - ProductDescriptions []string `ec2:"ProductDescription" xml:"ProductDescription>member"` - StartTime time.Time `ec2:"StartTime" xml:"startTime"` -} - -// DescribeSpotPriceHistoryResult is undocumented. -type DescribeSpotPriceHistoryResult struct { - NextToken aws.StringValue `ec2:"NextToken" xml:"nextToken"` - SpotPriceHistory []SpotPrice `ec2:"SpotPriceHistory" xml:"spotPriceHistorySet>item"` -} - -// DescribeSubnetsRequest is undocumented. -type DescribeSubnetsRequest struct { - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - Filters []Filter `ec2:"Filter" xml:"Filter>Filter"` - SubnetIDs []string `ec2:"SubnetId" xml:"SubnetId>SubnetId"` -} - -// DescribeSubnetsResult is undocumented. -type DescribeSubnetsResult struct { - Subnets []Subnet `ec2:"Subnets" xml:"subnetSet>item"` -} - -// DescribeTagsRequest is undocumented. -type DescribeTagsRequest struct { - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - Filters []Filter `ec2:"Filter" xml:"Filter>Filter"` - MaxResults aws.IntegerValue `ec2:"MaxResults" xml:"maxResults"` - NextToken aws.StringValue `ec2:"NextToken" xml:"nextToken"` -} - -// DescribeTagsResult is undocumented. -type DescribeTagsResult struct { - NextToken aws.StringValue `ec2:"NextToken" xml:"nextToken"` - Tags []TagDescription `ec2:"Tags" xml:"tagSet>item"` -} - -// DescribeVolumeAttributeRequest is undocumented. -type DescribeVolumeAttributeRequest struct { - Attribute aws.StringValue `ec2:"Attribute" xml:"Attribute"` - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - VolumeID aws.StringValue `ec2:"VolumeId" xml:"VolumeId"` -} - -// DescribeVolumeAttributeResult is undocumented. -type DescribeVolumeAttributeResult struct { - AutoEnableIO *AttributeBooleanValue `ec2:"AutoEnableIO" xml:"autoEnableIO"` - ProductCodes []ProductCode `ec2:"ProductCodes" xml:"productCodes>item"` - VolumeID aws.StringValue `ec2:"VolumeId" xml:"volumeId"` -} - -// DescribeVolumeStatusRequest is undocumented. -type DescribeVolumeStatusRequest struct { - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - Filters []Filter `ec2:"Filter" xml:"Filter>Filter"` - MaxResults aws.IntegerValue `ec2:"MaxResults" xml:"MaxResults"` - NextToken aws.StringValue `ec2:"NextToken" xml:"NextToken"` - VolumeIDs []string `ec2:"VolumeId" xml:"VolumeId>VolumeId"` -} - -// DescribeVolumeStatusResult is undocumented. -type DescribeVolumeStatusResult struct { - NextToken aws.StringValue `ec2:"NextToken" xml:"nextToken"` - VolumeStatuses []VolumeStatusItem `ec2:"VolumeStatuses" xml:"volumeStatusSet>item"` -} - -// DescribeVolumesRequest is undocumented. -type DescribeVolumesRequest struct { - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - Filters []Filter `ec2:"Filter" xml:"Filter>Filter"` - MaxResults aws.IntegerValue `ec2:"MaxResults" xml:"maxResults"` - NextToken aws.StringValue `ec2:"NextToken" xml:"nextToken"` - VolumeIDs []string `ec2:"VolumeId" xml:"VolumeId>VolumeId"` -} - -// DescribeVolumesResult is undocumented. -type DescribeVolumesResult struct { - NextToken aws.StringValue `ec2:"NextToken" xml:"nextToken"` - Volumes []Volume `ec2:"Volumes" xml:"volumeSet>item"` -} - -// DescribeVPCAttributeRequest is undocumented. -type DescribeVPCAttributeRequest struct { - Attribute aws.StringValue `ec2:"Attribute" xml:"Attribute"` - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - VPCID aws.StringValue `ec2:"VpcId" xml:"VpcId"` -} - -// DescribeVPCAttributeResult is undocumented. -type DescribeVPCAttributeResult struct { - EnableDNSHostnames *AttributeBooleanValue `ec2:"EnableDnsHostnames" xml:"enableDnsHostnames"` - EnableDNSSupport *AttributeBooleanValue `ec2:"EnableDnsSupport" xml:"enableDnsSupport"` - VPCID aws.StringValue `ec2:"VpcId" xml:"vpcId"` -} - -// DescribeVPCClassicLinkRequest is undocumented. -type DescribeVPCClassicLinkRequest struct { - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - Filters []Filter `ec2:"Filter" xml:"Filter>Filter"` - VPCIDs []string `ec2:"VpcId" xml:"VpcId>VpcId"` -} - -// DescribeVPCClassicLinkResult is undocumented. -type DescribeVPCClassicLinkResult struct { - VPCs []VPCClassicLink `ec2:"Vpcs" xml:"vpcSet>item"` -} - -// DescribeVPCPeeringConnectionsRequest is undocumented. -type DescribeVPCPeeringConnectionsRequest struct { - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - Filters []Filter `ec2:"Filter" xml:"Filter>Filter"` - VPCPeeringConnectionIDs []string `ec2:"VpcPeeringConnectionId" xml:"VpcPeeringConnectionId>item"` -} - -// DescribeVPCPeeringConnectionsResult is undocumented. -type DescribeVPCPeeringConnectionsResult struct { - VPCPeeringConnections []VPCPeeringConnection `ec2:"VpcPeeringConnections" xml:"vpcPeeringConnectionSet>item"` -} - -// DescribeVPCsRequest is undocumented. -type DescribeVPCsRequest struct { - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - Filters []Filter `ec2:"Filter" xml:"Filter>Filter"` - VPCIDs []string `ec2:"VpcId" xml:"VpcId>VpcId"` -} - -// DescribeVPCsResult is undocumented. -type DescribeVPCsResult struct { - VPCs []VPC `ec2:"Vpcs" xml:"vpcSet>item"` -} - -// DescribeVPNConnectionsRequest is undocumented. -type DescribeVPNConnectionsRequest struct { - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - Filters []Filter `ec2:"Filter" xml:"Filter>Filter"` - VPNConnectionIDs []string `ec2:"VpnConnectionId" xml:"VpnConnectionId>VpnConnectionId"` -} - -// DescribeVPNConnectionsResult is undocumented. -type DescribeVPNConnectionsResult struct { - VPNConnections []VPNConnection `ec2:"VpnConnections" xml:"vpnConnectionSet>item"` -} - -// DescribeVPNGatewaysRequest is undocumented. -type DescribeVPNGatewaysRequest struct { - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - Filters []Filter `ec2:"Filter" xml:"Filter>Filter"` - VPNGatewayIDs []string `ec2:"VpnGatewayId" xml:"VpnGatewayId>VpnGatewayId"` -} - -// DescribeVPNGatewaysResult is undocumented. -type DescribeVPNGatewaysResult struct { - VPNGateways []VPNGateway `ec2:"VpnGateways" xml:"vpnGatewaySet>item"` -} - -// DetachClassicLinkVPCRequest is undocumented. -type DetachClassicLinkVPCRequest struct { - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - InstanceID aws.StringValue `ec2:"InstanceId" xml:"instanceId"` - VPCID aws.StringValue `ec2:"VpcId" xml:"vpcId"` -} - -// DetachClassicLinkVPCResult is undocumented. -type DetachClassicLinkVPCResult struct { - Return aws.BooleanValue `ec2:"Return" xml:"return"` -} - -// DetachInternetGatewayRequest is undocumented. -type DetachInternetGatewayRequest struct { - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - InternetGatewayID aws.StringValue `ec2:"InternetGatewayId" xml:"internetGatewayId"` - VPCID aws.StringValue `ec2:"VpcId" xml:"vpcId"` -} - -// DetachNetworkInterfaceRequest is undocumented. -type DetachNetworkInterfaceRequest struct { - AttachmentID aws.StringValue `ec2:"AttachmentId" xml:"attachmentId"` - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - Force aws.BooleanValue `ec2:"Force" xml:"force"` -} - -// DetachVolumeRequest is undocumented. -type DetachVolumeRequest struct { - Device aws.StringValue `ec2:"Device" xml:"Device"` - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - Force aws.BooleanValue `ec2:"Force" xml:"Force"` - InstanceID aws.StringValue `ec2:"InstanceId" xml:"InstanceId"` - VolumeID aws.StringValue `ec2:"VolumeId" xml:"VolumeId"` -} - -// DetachVPNGatewayRequest is undocumented. -type DetachVPNGatewayRequest struct { - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - VPCID aws.StringValue `ec2:"VpcId" xml:"VpcId"` - VPNGatewayID aws.StringValue `ec2:"VpnGatewayId" xml:"VpnGatewayId"` -} - -// Possible values for EC2. -const ( - DeviceTypeEBS = "ebs" - DeviceTypeInstanceStore = "instance-store" -) - -// DHCPConfiguration is undocumented. -type DHCPConfiguration struct { - Key aws.StringValue `ec2:"Key" xml:"key"` - Values []AttributeValue `ec2:"Values" xml:"valueSet>item"` -} - -// DHCPOptions is undocumented. -type DHCPOptions struct { - DHCPConfigurations []DHCPConfiguration `ec2:"DhcpConfigurations" xml:"dhcpConfigurationSet>item"` - DHCPOptionsID aws.StringValue `ec2:"DhcpOptionsId" xml:"dhcpOptionsId"` - Tags []Tag `ec2:"Tags" xml:"tagSet>item"` -} - -// DisableVGWRoutePropagationRequest is undocumented. -type DisableVGWRoutePropagationRequest struct { - GatewayID aws.StringValue `ec2:"GatewayId" xml:"GatewayId"` - RouteTableID aws.StringValue `ec2:"RouteTableId" xml:"RouteTableId"` -} - -// DisableVPCClassicLinkRequest is undocumented. -type DisableVPCClassicLinkRequest struct { - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - VPCID aws.StringValue `ec2:"VpcId" xml:"vpcId"` -} - -// DisableVPCClassicLinkResult is undocumented. -type DisableVPCClassicLinkResult struct { - Return aws.BooleanValue `ec2:"Return" xml:"return"` -} - -// DisassociateAddressRequest is undocumented. -type DisassociateAddressRequest struct { - AssociationID aws.StringValue `ec2:"AssociationId" xml:"AssociationId"` - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - PublicIP aws.StringValue `ec2:"PublicIp" xml:"PublicIp"` -} - -// DisassociateRouteTableRequest is undocumented. -type DisassociateRouteTableRequest struct { - AssociationID aws.StringValue `ec2:"AssociationId" xml:"associationId"` - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` -} - -// DiskImage is undocumented. -type DiskImage struct { - Description aws.StringValue `ec2:"Description" xml:"Description"` - Image *DiskImageDetail `ec2:"Image" xml:"Image"` - Volume *VolumeDetail `ec2:"Volume" xml:"Volume"` -} - -// DiskImageDescription is undocumented. -type DiskImageDescription struct { - Checksum aws.StringValue `ec2:"Checksum" xml:"checksum"` - Format aws.StringValue `ec2:"Format" xml:"format"` - ImportManifestURL aws.StringValue `ec2:"ImportManifestUrl" xml:"importManifestUrl"` - Size aws.LongValue `ec2:"Size" xml:"size"` -} - -// DiskImageDetail is undocumented. -type DiskImageDetail struct { - Bytes aws.LongValue `ec2:"Bytes" xml:"bytes"` - Format aws.StringValue `ec2:"Format" xml:"format"` - ImportManifestURL aws.StringValue `ec2:"ImportManifestUrl" xml:"importManifestUrl"` -} - -// Possible values for EC2. -const ( - DiskImageFormatRaw = "RAW" - DiskImageFormatVHD = "VHD" - DiskImageFormatVMDK = "VMDK" -) - -// DiskImageVolumeDescription is undocumented. -type DiskImageVolumeDescription struct { - ID aws.StringValue `ec2:"Id" xml:"id"` - Size aws.LongValue `ec2:"Size" xml:"size"` -} - -// Possible values for EC2. -const ( - DomainTypeStandard = "standard" - DomainTypeVPC = "vpc" -) - -// EBSBlockDevice is undocumented. -type EBSBlockDevice struct { - DeleteOnTermination aws.BooleanValue `ec2:"DeleteOnTermination" xml:"deleteOnTermination"` - Encrypted aws.BooleanValue `ec2:"Encrypted" xml:"encrypted"` - IOPS aws.IntegerValue `ec2:"Iops" xml:"iops"` - SnapshotID aws.StringValue `ec2:"SnapshotId" xml:"snapshotId"` - VolumeSize aws.IntegerValue `ec2:"VolumeSize" xml:"volumeSize"` - VolumeType aws.StringValue `ec2:"VolumeType" xml:"volumeType"` -} - -// EBSInstanceBlockDevice is undocumented. -type EBSInstanceBlockDevice struct { - AttachTime time.Time `ec2:"AttachTime" xml:"attachTime"` - DeleteOnTermination aws.BooleanValue `ec2:"DeleteOnTermination" xml:"deleteOnTermination"` - Status aws.StringValue `ec2:"Status" xml:"status"` - VolumeID aws.StringValue `ec2:"VolumeId" xml:"volumeId"` -} - -// EBSInstanceBlockDeviceSpecification is undocumented. -type EBSInstanceBlockDeviceSpecification struct { - DeleteOnTermination aws.BooleanValue `ec2:"DeleteOnTermination" xml:"deleteOnTermination"` - VolumeID aws.StringValue `ec2:"VolumeId" xml:"volumeId"` -} - -// EnableVGWRoutePropagationRequest is undocumented. -type EnableVGWRoutePropagationRequest struct { - GatewayID aws.StringValue `ec2:"GatewayId" xml:"GatewayId"` - RouteTableID aws.StringValue `ec2:"RouteTableId" xml:"RouteTableId"` -} - -// EnableVolumeIORequest is undocumented. -type EnableVolumeIORequest struct { - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - VolumeID aws.StringValue `ec2:"VolumeId" xml:"volumeId"` -} - -// EnableVPCClassicLinkRequest is undocumented. -type EnableVPCClassicLinkRequest struct { - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - VPCID aws.StringValue `ec2:"VpcId" xml:"vpcId"` -} - -// EnableVPCClassicLinkResult is undocumented. -type EnableVPCClassicLinkResult struct { - Return aws.BooleanValue `ec2:"Return" xml:"return"` -} - -// Possible values for EC2. -const ( - EventCodeInstanceReboot = "instance-reboot" - EventCodeInstanceRetirement = "instance-retirement" - EventCodeInstanceStop = "instance-stop" - EventCodeSystemMaintenance = "system-maintenance" - EventCodeSystemReboot = "system-reboot" -) - -// Possible values for EC2. -const ( - ExportEnvironmentCitrix = "citrix" - ExportEnvironmentMicrosoft = "microsoft" - ExportEnvironmentVMware = "vmware" -) - -// ExportTask is undocumented. -type ExportTask struct { - Description aws.StringValue `ec2:"Description" xml:"description"` - ExportTaskID aws.StringValue `ec2:"ExportTaskId" xml:"exportTaskId"` - ExportToS3Task *ExportToS3Task `ec2:"ExportToS3Task" xml:"exportToS3"` - InstanceExportDetails *InstanceExportDetails `ec2:"InstanceExportDetails" xml:"instanceExport"` - State aws.StringValue `ec2:"State" xml:"state"` - StatusMessage aws.StringValue `ec2:"StatusMessage" xml:"statusMessage"` -} - -// Possible values for EC2. -const ( - ExportTaskStateActive = "active" - ExportTaskStateCancelled = "cancelled" - ExportTaskStateCancelling = "cancelling" - ExportTaskStateCompleted = "completed" -) - -// ExportToS3Task is undocumented. -type ExportToS3Task struct { - ContainerFormat aws.StringValue `ec2:"ContainerFormat" xml:"containerFormat"` - DiskImageFormat aws.StringValue `ec2:"DiskImageFormat" xml:"diskImageFormat"` - S3Bucket aws.StringValue `ec2:"S3Bucket" xml:"s3Bucket"` - S3Key aws.StringValue `ec2:"S3Key" xml:"s3Key"` -} - -// ExportToS3TaskSpecification is undocumented. -type ExportToS3TaskSpecification struct { - ContainerFormat aws.StringValue `ec2:"ContainerFormat" xml:"containerFormat"` - DiskImageFormat aws.StringValue `ec2:"DiskImageFormat" xml:"diskImageFormat"` - S3Bucket aws.StringValue `ec2:"S3Bucket" xml:"s3Bucket"` - S3Prefix aws.StringValue `ec2:"S3Prefix" xml:"s3Prefix"` -} - -// Filter is undocumented. -type Filter struct { - Name aws.StringValue `ec2:"Name" xml:"Name"` - Values []string `ec2:"Value" xml:"Value>item"` -} - -// Possible values for EC2. -const ( - GatewayTypeIPsec1 = "ipsec.1" -) - -// GetConsoleOutputRequest is undocumented. -type GetConsoleOutputRequest struct { - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - InstanceID aws.StringValue `ec2:"InstanceId" xml:"InstanceId"` -} - -// GetConsoleOutputResult is undocumented. -type GetConsoleOutputResult struct { - InstanceID aws.StringValue `ec2:"InstanceId" xml:"instanceId"` - Output aws.StringValue `ec2:"Output" xml:"output"` - Timestamp time.Time `ec2:"Timestamp" xml:"timestamp"` -} - -// GetPasswordDataRequest is undocumented. -type GetPasswordDataRequest struct { - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - InstanceID aws.StringValue `ec2:"InstanceId" xml:"InstanceId"` -} - -// GetPasswordDataResult is undocumented. -type GetPasswordDataResult struct { - InstanceID aws.StringValue `ec2:"InstanceId" xml:"instanceId"` - PasswordData aws.StringValue `ec2:"PasswordData" xml:"passwordData"` - Timestamp time.Time `ec2:"Timestamp" xml:"timestamp"` -} - -// GroupIdentifier is undocumented. -type GroupIdentifier struct { - GroupID aws.StringValue `ec2:"GroupId" xml:"groupId"` - GroupName aws.StringValue `ec2:"GroupName" xml:"groupName"` -} - -// Possible values for EC2. -const ( - HypervisorTypeOvm = "ovm" - HypervisorTypeXen = "xen" -) - -// IAMInstanceProfile is undocumented. -type IAMInstanceProfile struct { - ARN aws.StringValue `ec2:"Arn" xml:"arn"` - ID aws.StringValue `ec2:"Id" xml:"id"` -} - -// IAMInstanceProfileSpecification is undocumented. -type IAMInstanceProfileSpecification struct { - ARN aws.StringValue `ec2:"Arn" xml:"arn"` - Name aws.StringValue `ec2:"Name" xml:"name"` -} - -// ICMPTypeCode is undocumented. -type ICMPTypeCode struct { - Code aws.IntegerValue `ec2:"Code" xml:"code"` - Type aws.IntegerValue `ec2:"Type" xml:"type"` -} - -// Image is undocumented. -type Image struct { - Architecture aws.StringValue `ec2:"Architecture" xml:"architecture"` - BlockDeviceMappings []BlockDeviceMapping `ec2:"BlockDeviceMappings" xml:"blockDeviceMapping>item"` - CreationDate aws.StringValue `ec2:"CreationDate" xml:"creationDate"` - Description aws.StringValue `ec2:"Description" xml:"description"` - Hypervisor aws.StringValue `ec2:"Hypervisor" xml:"hypervisor"` - ImageID aws.StringValue `ec2:"ImageId" xml:"imageId"` - ImageLocation aws.StringValue `ec2:"ImageLocation" xml:"imageLocation"` - ImageOwnerAlias aws.StringValue `ec2:"ImageOwnerAlias" xml:"imageOwnerAlias"` - ImageType aws.StringValue `ec2:"ImageType" xml:"imageType"` - KernelID aws.StringValue `ec2:"KernelId" xml:"kernelId"` - Name aws.StringValue `ec2:"Name" xml:"name"` - OwnerID aws.StringValue `ec2:"OwnerId" xml:"imageOwnerId"` - Platform aws.StringValue `ec2:"Platform" xml:"platform"` - ProductCodes []ProductCode `ec2:"ProductCodes" xml:"productCodes>item"` - Public aws.BooleanValue `ec2:"Public" xml:"isPublic"` - RAMDiskID aws.StringValue `ec2:"RamdiskId" xml:"ramdiskId"` - RootDeviceName aws.StringValue `ec2:"RootDeviceName" xml:"rootDeviceName"` - RootDeviceType aws.StringValue `ec2:"RootDeviceType" xml:"rootDeviceType"` - SRIOVNetSupport aws.StringValue `ec2:"SriovNetSupport" xml:"sriovNetSupport"` - State aws.StringValue `ec2:"State" xml:"imageState"` - StateReason *StateReason `ec2:"StateReason" xml:"stateReason"` - Tags []Tag `ec2:"Tags" xml:"tagSet>item"` - VirtualizationType aws.StringValue `ec2:"VirtualizationType" xml:"virtualizationType"` -} - -// ImageAttribute is undocumented. -type ImageAttribute struct { - BlockDeviceMappings []BlockDeviceMapping `ec2:"BlockDeviceMappings" xml:"blockDeviceMapping>item"` - Description *AttributeValue `ec2:"Description" xml:"description"` - ImageID aws.StringValue `ec2:"ImageId" xml:"imageId"` - KernelID *AttributeValue `ec2:"KernelId" xml:"kernel"` - LaunchPermissions []LaunchPermission `ec2:"LaunchPermissions" xml:"launchPermission>item"` - ProductCodes []ProductCode `ec2:"ProductCodes" xml:"productCodes>item"` - RAMDiskID *AttributeValue `ec2:"RamdiskId" xml:"ramdisk"` - SRIOVNetSupport *AttributeValue `ec2:"SriovNetSupport" xml:"sriovNetSupport"` -} - -// Possible values for EC2. -const ( - ImageAttributeNameBlockDeviceMapping = "blockDeviceMapping" - ImageAttributeNameDescription = "description" - ImageAttributeNameKernel = "kernel" - ImageAttributeNameLaunchPermission = "launchPermission" - ImageAttributeNameProductCodes = "productCodes" - ImageAttributeNameRAMDisk = "ramdisk" -) - -// Possible values for EC2. -const ( - ImageStateAvailable = "available" - ImageStateDeregistered = "deregistered" -) - -// Possible values for EC2. -const ( - ImageTypeValuesKernel = "kernel" - ImageTypeValuesMachine = "machine" - ImageTypeValuesRAMDisk = "ramdisk" -) - -// ImportInstanceLaunchSpecification is undocumented. -type ImportInstanceLaunchSpecification struct { - AdditionalInfo aws.StringValue `ec2:"AdditionalInfo" xml:"additionalInfo"` - Architecture aws.StringValue `ec2:"Architecture" xml:"architecture"` - GroupIDs []string `ec2:"GroupId" xml:"GroupId>SecurityGroupId"` - GroupNames []string `ec2:"GroupName" xml:"GroupName>SecurityGroup"` - InstanceInitiatedShutdownBehavior aws.StringValue `ec2:"InstanceInitiatedShutdownBehavior" xml:"instanceInitiatedShutdownBehavior"` - InstanceType aws.StringValue `ec2:"InstanceType" xml:"instanceType"` - Monitoring aws.BooleanValue `ec2:"Monitoring" xml:"monitoring"` - Placement *Placement `ec2:"Placement" xml:"placement"` - PrivateIPAddress aws.StringValue `ec2:"PrivateIpAddress" xml:"privateIpAddress"` - SubnetID aws.StringValue `ec2:"SubnetId" xml:"subnetId"` - UserData *UserData `ec2:"UserData" xml:"userData"` -} - -// ImportInstanceRequest is undocumented. -type ImportInstanceRequest struct { - Description aws.StringValue `ec2:"Description" xml:"description"` - DiskImages []DiskImage `ec2:"DiskImages" xml:"diskImage>member"` - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - LaunchSpecification *ImportInstanceLaunchSpecification `ec2:"LaunchSpecification" xml:"launchSpecification"` - Platform aws.StringValue `ec2:"Platform" xml:"platform"` -} - -// ImportInstanceResult is undocumented. -type ImportInstanceResult struct { - ConversionTask *ConversionTask `ec2:"ConversionTask" xml:"conversionTask"` -} - -// ImportInstanceTaskDetails is undocumented. -type ImportInstanceTaskDetails struct { - Description aws.StringValue `ec2:"Description" xml:"description"` - InstanceID aws.StringValue `ec2:"InstanceId" xml:"instanceId"` - Platform aws.StringValue `ec2:"Platform" xml:"platform"` - Volumes []ImportInstanceVolumeDetailItem `ec2:"Volumes" xml:"volumes>item"` -} - -// ImportInstanceVolumeDetailItem is undocumented. -type ImportInstanceVolumeDetailItem struct { - AvailabilityZone aws.StringValue `ec2:"AvailabilityZone" xml:"availabilityZone"` - BytesConverted aws.LongValue `ec2:"BytesConverted" xml:"bytesConverted"` - Description aws.StringValue `ec2:"Description" xml:"description"` - Image *DiskImageDescription `ec2:"Image" xml:"image"` - Status aws.StringValue `ec2:"Status" xml:"status"` - StatusMessage aws.StringValue `ec2:"StatusMessage" xml:"statusMessage"` - Volume *DiskImageVolumeDescription `ec2:"Volume" xml:"volume"` -} - -// ImportKeyPairRequest is undocumented. -type ImportKeyPairRequest struct { - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - KeyName aws.StringValue `ec2:"KeyName" xml:"keyName"` - PublicKeyMaterial []byte `ec2:"PublicKeyMaterial" xml:"publicKeyMaterial"` -} - -// ImportKeyPairResult is undocumented. -type ImportKeyPairResult struct { - KeyFingerprint aws.StringValue `ec2:"KeyFingerprint" xml:"keyFingerprint"` - KeyName aws.StringValue `ec2:"KeyName" xml:"keyName"` -} - -// ImportVolumeRequest is undocumented. -type ImportVolumeRequest struct { - AvailabilityZone aws.StringValue `ec2:"AvailabilityZone" xml:"availabilityZone"` - Description aws.StringValue `ec2:"Description" xml:"description"` - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - Image *DiskImageDetail `ec2:"Image" xml:"image"` - Volume *VolumeDetail `ec2:"Volume" xml:"volume"` -} - -// ImportVolumeResult is undocumented. -type ImportVolumeResult struct { - ConversionTask *ConversionTask `ec2:"ConversionTask" xml:"conversionTask"` -} - -// ImportVolumeTaskDetails is undocumented. -type ImportVolumeTaskDetails struct { - AvailabilityZone aws.StringValue `ec2:"AvailabilityZone" xml:"availabilityZone"` - BytesConverted aws.LongValue `ec2:"BytesConverted" xml:"bytesConverted"` - Description aws.StringValue `ec2:"Description" xml:"description"` - Image *DiskImageDescription `ec2:"Image" xml:"image"` - Volume *DiskImageVolumeDescription `ec2:"Volume" xml:"volume"` -} - -// Instance is undocumented. -type Instance struct { - AMILaunchIndex aws.IntegerValue `ec2:"AmiLaunchIndex" xml:"amiLaunchIndex"` - Architecture aws.StringValue `ec2:"Architecture" xml:"architecture"` - BlockDeviceMappings []InstanceBlockDeviceMapping `ec2:"BlockDeviceMappings" xml:"blockDeviceMapping>item"` - ClientToken aws.StringValue `ec2:"ClientToken" xml:"clientToken"` - EBSOptimized aws.BooleanValue `ec2:"EbsOptimized" xml:"ebsOptimized"` - Hypervisor aws.StringValue `ec2:"Hypervisor" xml:"hypervisor"` - IAMInstanceProfile *IAMInstanceProfile `ec2:"IamInstanceProfile" xml:"iamInstanceProfile"` - ImageID aws.StringValue `ec2:"ImageId" xml:"imageId"` - InstanceID aws.StringValue `ec2:"InstanceId" xml:"instanceId"` - InstanceLifecycle aws.StringValue `ec2:"InstanceLifecycle" xml:"instanceLifecycle"` - InstanceType aws.StringValue `ec2:"InstanceType" xml:"instanceType"` - KernelID aws.StringValue `ec2:"KernelId" xml:"kernelId"` - KeyName aws.StringValue `ec2:"KeyName" xml:"keyName"` - LaunchTime time.Time `ec2:"LaunchTime" xml:"launchTime"` - Monitoring *Monitoring `ec2:"Monitoring" xml:"monitoring"` - NetworkInterfaces []InstanceNetworkInterface `ec2:"NetworkInterfaces" xml:"networkInterfaceSet>item"` - Placement *Placement `ec2:"Placement" xml:"placement"` - Platform aws.StringValue `ec2:"Platform" xml:"platform"` - PrivateDNSName aws.StringValue `ec2:"PrivateDnsName" xml:"privateDnsName"` - PrivateIPAddress aws.StringValue `ec2:"PrivateIpAddress" xml:"privateIpAddress"` - ProductCodes []ProductCode `ec2:"ProductCodes" xml:"productCodes>item"` - PublicDNSName aws.StringValue `ec2:"PublicDnsName" xml:"dnsName"` - PublicIPAddress aws.StringValue `ec2:"PublicIpAddress" xml:"ipAddress"` - RAMDiskID aws.StringValue `ec2:"RamdiskId" xml:"ramdiskId"` - RootDeviceName aws.StringValue `ec2:"RootDeviceName" xml:"rootDeviceName"` - RootDeviceType aws.StringValue `ec2:"RootDeviceType" xml:"rootDeviceType"` - SecurityGroups []GroupIdentifier `ec2:"SecurityGroups" xml:"groupSet>item"` - SourceDestCheck aws.BooleanValue `ec2:"SourceDestCheck" xml:"sourceDestCheck"` - SpotInstanceRequestID aws.StringValue `ec2:"SpotInstanceRequestId" xml:"spotInstanceRequestId"` - SRIOVNetSupport aws.StringValue `ec2:"SriovNetSupport" xml:"sriovNetSupport"` - State *InstanceState `ec2:"State" xml:"instanceState"` - StateReason *StateReason `ec2:"StateReason" xml:"stateReason"` - StateTransitionReason aws.StringValue `ec2:"StateTransitionReason" xml:"reason"` - SubnetID aws.StringValue `ec2:"SubnetId" xml:"subnetId"` - Tags []Tag `ec2:"Tags" xml:"tagSet>item"` - VirtualizationType aws.StringValue `ec2:"VirtualizationType" xml:"virtualizationType"` - VPCID aws.StringValue `ec2:"VpcId" xml:"vpcId"` -} - -// InstanceAttribute is undocumented. -type InstanceAttribute struct { - BlockDeviceMappings []InstanceBlockDeviceMapping `ec2:"BlockDeviceMappings" xml:"blockDeviceMapping>item"` - DisableAPITermination *AttributeBooleanValue `ec2:"DisableApiTermination" xml:"disableApiTermination"` - EBSOptimized *AttributeBooleanValue `ec2:"EbsOptimized" xml:"ebsOptimized"` - Groups []GroupIdentifier `ec2:"Groups" xml:"groupSet>item"` - InstanceID aws.StringValue `ec2:"InstanceId" xml:"instanceId"` - InstanceInitiatedShutdownBehavior *AttributeValue `ec2:"InstanceInitiatedShutdownBehavior" xml:"instanceInitiatedShutdownBehavior"` - InstanceType *AttributeValue `ec2:"InstanceType" xml:"instanceType"` - KernelID *AttributeValue `ec2:"KernelId" xml:"kernel"` - ProductCodes []ProductCode `ec2:"ProductCodes" xml:"productCodes>item"` - RAMDiskID *AttributeValue `ec2:"RamdiskId" xml:"ramdisk"` - RootDeviceName *AttributeValue `ec2:"RootDeviceName" xml:"rootDeviceName"` - SourceDestCheck *AttributeBooleanValue `ec2:"SourceDestCheck" xml:"sourceDestCheck"` - SRIOVNetSupport *AttributeValue `ec2:"SriovNetSupport" xml:"sriovNetSupport"` - UserData *AttributeValue `ec2:"UserData" xml:"userData"` -} - -// Possible values for EC2. -const ( - InstanceAttributeNameBlockDeviceMapping = "blockDeviceMapping" - InstanceAttributeNameDisableAPITermination = "disableApiTermination" - InstanceAttributeNameEBSOptimized = "ebsOptimized" - InstanceAttributeNameGroupSet = "groupSet" - InstanceAttributeNameInstanceInitiatedShutdownBehavior = "instanceInitiatedShutdownBehavior" - InstanceAttributeNameInstanceType = "instanceType" - InstanceAttributeNameKernel = "kernel" - InstanceAttributeNameProductCodes = "productCodes" - InstanceAttributeNameRAMDisk = "ramdisk" - InstanceAttributeNameRootDeviceName = "rootDeviceName" - InstanceAttributeNameSRIOVNetSupport = "sriovNetSupport" - InstanceAttributeNameSourceDestCheck = "sourceDestCheck" - InstanceAttributeNameUserData = "userData" -) - -// InstanceBlockDeviceMapping is undocumented. -type InstanceBlockDeviceMapping struct { - DeviceName aws.StringValue `ec2:"DeviceName" xml:"deviceName"` - EBS *EBSInstanceBlockDevice `ec2:"Ebs" xml:"ebs"` -} - -// InstanceBlockDeviceMappingSpecification is undocumented. -type InstanceBlockDeviceMappingSpecification struct { - DeviceName aws.StringValue `ec2:"DeviceName" xml:"deviceName"` - EBS *EBSInstanceBlockDeviceSpecification `ec2:"Ebs" xml:"ebs"` - NoDevice aws.StringValue `ec2:"NoDevice" xml:"noDevice"` - VirtualName aws.StringValue `ec2:"VirtualName" xml:"virtualName"` -} - -// InstanceCount is undocumented. -type InstanceCount struct { - InstanceCount aws.IntegerValue `ec2:"InstanceCount" xml:"instanceCount"` - State aws.StringValue `ec2:"State" xml:"state"` -} - -// InstanceExportDetails is undocumented. -type InstanceExportDetails struct { - InstanceID aws.StringValue `ec2:"InstanceId" xml:"instanceId"` - TargetEnvironment aws.StringValue `ec2:"TargetEnvironment" xml:"targetEnvironment"` -} - -// Possible values for EC2. -const ( - InstanceLifecycleTypeSpot = "spot" -) - -// InstanceMonitoring is undocumented. -type InstanceMonitoring struct { - InstanceID aws.StringValue `ec2:"InstanceId" xml:"instanceId"` - Monitoring *Monitoring `ec2:"Monitoring" xml:"monitoring"` -} - -// InstanceNetworkInterface is undocumented. -type InstanceNetworkInterface struct { - Association *InstanceNetworkInterfaceAssociation `ec2:"Association" xml:"association"` - Attachment *InstanceNetworkInterfaceAttachment `ec2:"Attachment" xml:"attachment"` - Description aws.StringValue `ec2:"Description" xml:"description"` - Groups []GroupIdentifier `ec2:"Groups" xml:"groupSet>item"` - MACAddress aws.StringValue `ec2:"MacAddress" xml:"macAddress"` - NetworkInterfaceID aws.StringValue `ec2:"NetworkInterfaceId" xml:"networkInterfaceId"` - OwnerID aws.StringValue `ec2:"OwnerId" xml:"ownerId"` - PrivateDNSName aws.StringValue `ec2:"PrivateDnsName" xml:"privateDnsName"` - PrivateIPAddress aws.StringValue `ec2:"PrivateIpAddress" xml:"privateIpAddress"` - PrivateIPAddresses []InstancePrivateIPAddress `ec2:"PrivateIpAddresses" xml:"privateIpAddressesSet>item"` - SourceDestCheck aws.BooleanValue `ec2:"SourceDestCheck" xml:"sourceDestCheck"` - Status aws.StringValue `ec2:"Status" xml:"status"` - SubnetID aws.StringValue `ec2:"SubnetId" xml:"subnetId"` - VPCID aws.StringValue `ec2:"VpcId" xml:"vpcId"` -} - -// InstanceNetworkInterfaceAssociation is undocumented. -type InstanceNetworkInterfaceAssociation struct { - IPOwnerID aws.StringValue `ec2:"IpOwnerId" xml:"ipOwnerId"` - PublicDNSName aws.StringValue `ec2:"PublicDnsName" xml:"publicDnsName"` - PublicIP aws.StringValue `ec2:"PublicIp" xml:"publicIp"` -} - -// InstanceNetworkInterfaceAttachment is undocumented. -type InstanceNetworkInterfaceAttachment struct { - AttachTime time.Time `ec2:"AttachTime" xml:"attachTime"` - AttachmentID aws.StringValue `ec2:"AttachmentId" xml:"attachmentId"` - DeleteOnTermination aws.BooleanValue `ec2:"DeleteOnTermination" xml:"deleteOnTermination"` - DeviceIndex aws.IntegerValue `ec2:"DeviceIndex" xml:"deviceIndex"` - Status aws.StringValue `ec2:"Status" xml:"status"` -} - -// InstanceNetworkInterfaceSpecification is undocumented. -type InstanceNetworkInterfaceSpecification struct { - AssociatePublicIPAddress aws.BooleanValue `ec2:"AssociatePublicIpAddress" xml:"associatePublicIpAddress"` - DeleteOnTermination aws.BooleanValue `ec2:"DeleteOnTermination" xml:"deleteOnTermination"` - Description aws.StringValue `ec2:"Description" xml:"description"` - DeviceIndex aws.IntegerValue `ec2:"DeviceIndex" xml:"deviceIndex"` - Groups []string `ec2:"SecurityGroupId" xml:"SecurityGroupId>SecurityGroupId"` - NetworkInterfaceID aws.StringValue `ec2:"NetworkInterfaceId" xml:"networkInterfaceId"` - PrivateIPAddress aws.StringValue `ec2:"PrivateIpAddress" xml:"privateIpAddress"` - PrivateIPAddresses []PrivateIPAddressSpecification `ec2:"PrivateIpAddresses" xml:"privateIpAddressesSet>item"` - SecondaryPrivateIPAddressCount aws.IntegerValue `ec2:"SecondaryPrivateIpAddressCount" xml:"secondaryPrivateIpAddressCount"` - SubnetID aws.StringValue `ec2:"SubnetId" xml:"subnetId"` -} - -// InstancePrivateIPAddress is undocumented. -type InstancePrivateIPAddress struct { - Association *InstanceNetworkInterfaceAssociation `ec2:"Association" xml:"association"` - Primary aws.BooleanValue `ec2:"Primary" xml:"primary"` - PrivateDNSName aws.StringValue `ec2:"PrivateDnsName" xml:"privateDnsName"` - PrivateIPAddress aws.StringValue `ec2:"PrivateIpAddress" xml:"privateIpAddress"` -} - -// InstanceState is undocumented. -type InstanceState struct { - Code aws.IntegerValue `ec2:"Code" xml:"code"` - Name aws.StringValue `ec2:"Name" xml:"name"` -} - -// InstanceStateChange is undocumented. -type InstanceStateChange struct { - CurrentState *InstanceState `ec2:"CurrentState" xml:"currentState"` - InstanceID aws.StringValue `ec2:"InstanceId" xml:"instanceId"` - PreviousState *InstanceState `ec2:"PreviousState" xml:"previousState"` -} - -// Possible values for EC2. -const ( - InstanceStateNamePending = "pending" - InstanceStateNameRunning = "running" - InstanceStateNameShuttingDown = "shutting-down" - InstanceStateNameStopped = "stopped" - InstanceStateNameStopping = "stopping" - InstanceStateNameTerminated = "terminated" -) - -// InstanceStatus is undocumented. -type InstanceStatus struct { - AvailabilityZone aws.StringValue `ec2:"AvailabilityZone" xml:"availabilityZone"` - Events []InstanceStatusEvent `ec2:"Events" xml:"eventsSet>item"` - InstanceID aws.StringValue `ec2:"InstanceId" xml:"instanceId"` - InstanceState *InstanceState `ec2:"InstanceState" xml:"instanceState"` - InstanceStatus *InstanceStatusSummary `ec2:"InstanceStatus" xml:"instanceStatus"` - SystemStatus *InstanceStatusSummary `ec2:"SystemStatus" xml:"systemStatus"` -} - -// InstanceStatusDetails is undocumented. -type InstanceStatusDetails struct { - ImpairedSince time.Time `ec2:"ImpairedSince" xml:"impairedSince"` - Name aws.StringValue `ec2:"Name" xml:"name"` - Status aws.StringValue `ec2:"Status" xml:"status"` -} - -// InstanceStatusEvent is undocumented. -type InstanceStatusEvent struct { - Code aws.StringValue `ec2:"Code" xml:"code"` - Description aws.StringValue `ec2:"Description" xml:"description"` - NotAfter time.Time `ec2:"NotAfter" xml:"notAfter"` - NotBefore time.Time `ec2:"NotBefore" xml:"notBefore"` -} - -// InstanceStatusSummary is undocumented. -type InstanceStatusSummary struct { - Details []InstanceStatusDetails `ec2:"Details" xml:"details>item"` - Status aws.StringValue `ec2:"Status" xml:"status"` -} - -// Possible values for EC2. -const ( - InstanceTypeC1Medium = "c1.medium" - InstanceTypeC1Xlarge = "c1.xlarge" - InstanceTypeC32xlarge = "c3.2xlarge" - InstanceTypeC34xlarge = "c3.4xlarge" - InstanceTypeC38xlarge = "c3.8xlarge" - InstanceTypeC3Large = "c3.large" - InstanceTypeC3Xlarge = "c3.xlarge" - InstanceTypeC42xlarge = "c4.2xlarge" - InstanceTypeC44xlarge = "c4.4xlarge" - InstanceTypeC48xlarge = "c4.8xlarge" - InstanceTypeC4Large = "c4.large" - InstanceTypeC4Xlarge = "c4.xlarge" - InstanceTypeCc14xlarge = "cc1.4xlarge" - InstanceTypeCc28xlarge = "cc2.8xlarge" - InstanceTypeCg14xlarge = "cg1.4xlarge" - InstanceTypeCr18xlarge = "cr1.8xlarge" - InstanceTypeG22xlarge = "g2.2xlarge" - InstanceTypeHi14xlarge = "hi1.4xlarge" - InstanceTypeHs18xlarge = "hs1.8xlarge" - InstanceTypeI22xlarge = "i2.2xlarge" - InstanceTypeI24xlarge = "i2.4xlarge" - InstanceTypeI28xlarge = "i2.8xlarge" - InstanceTypeI2Xlarge = "i2.xlarge" - InstanceTypeM1Large = "m1.large" - InstanceTypeM1Medium = "m1.medium" - InstanceTypeM1Small = "m1.small" - InstanceTypeM1Xlarge = "m1.xlarge" - InstanceTypeM22xlarge = "m2.2xlarge" - InstanceTypeM24xlarge = "m2.4xlarge" - InstanceTypeM2Xlarge = "m2.xlarge" - InstanceTypeM32xlarge = "m3.2xlarge" - InstanceTypeM3Large = "m3.large" - InstanceTypeM3Medium = "m3.medium" - InstanceTypeM3Xlarge = "m3.xlarge" - InstanceTypeR32xlarge = "r3.2xlarge" - InstanceTypeR34xlarge = "r3.4xlarge" - InstanceTypeR38xlarge = "r3.8xlarge" - InstanceTypeR3Large = "r3.large" - InstanceTypeR3Xlarge = "r3.xlarge" - InstanceTypeT1Micro = "t1.micro" - InstanceTypeT2Medium = "t2.medium" - InstanceTypeT2Micro = "t2.micro" - InstanceTypeT2Small = "t2.small" -) - -// InternetGateway is undocumented. -type InternetGateway struct { - Attachments []InternetGatewayAttachment `ec2:"Attachments" xml:"attachmentSet>item"` - InternetGatewayID aws.StringValue `ec2:"InternetGatewayId" xml:"internetGatewayId"` - Tags []Tag `ec2:"Tags" xml:"tagSet>item"` -} - -// InternetGatewayAttachment is undocumented. -type InternetGatewayAttachment struct { - State aws.StringValue `ec2:"State" xml:"state"` - VPCID aws.StringValue `ec2:"VpcId" xml:"vpcId"` -} - -// IPPermission is undocumented. -type IPPermission struct { - FromPort aws.IntegerValue `ec2:"FromPort" xml:"fromPort"` - IPProtocol aws.StringValue `ec2:"IpProtocol" xml:"ipProtocol"` - IPRanges []IPRange `ec2:"IpRanges" xml:"ipRanges>item"` - ToPort aws.IntegerValue `ec2:"ToPort" xml:"toPort"` - UserIDGroupPairs []UserIDGroupPair `ec2:"UserIdGroupPairs" xml:"groups>item"` -} - -// IPRange is undocumented. -type IPRange struct { - CIDRIP aws.StringValue `ec2:"CidrIp" xml:"cidrIp"` -} - -// KeyPair is undocumented. -type KeyPair struct { - KeyFingerprint aws.StringValue `ec2:"KeyFingerprint" xml:"keyFingerprint"` - KeyMaterial aws.StringValue `ec2:"KeyMaterial" xml:"keyMaterial"` - KeyName aws.StringValue `ec2:"KeyName" xml:"keyName"` -} - -// KeyPairInfo is undocumented. -type KeyPairInfo struct { - KeyFingerprint aws.StringValue `ec2:"KeyFingerprint" xml:"keyFingerprint"` - KeyName aws.StringValue `ec2:"KeyName" xml:"keyName"` -} - -// LaunchPermission is undocumented. -type LaunchPermission struct { - Group aws.StringValue `ec2:"Group" xml:"group"` - UserID aws.StringValue `ec2:"UserId" xml:"userId"` -} - -// LaunchPermissionModifications is undocumented. -type LaunchPermissionModifications struct { - Add []LaunchPermission `ec2:"Add" xml:"Add>item"` - Remove []LaunchPermission `ec2:"Remove" xml:"Remove>item"` -} - -// LaunchSpecification is undocumented. -type LaunchSpecification struct { - AddressingType aws.StringValue `ec2:"AddressingType" xml:"addressingType"` - BlockDeviceMappings []BlockDeviceMapping `ec2:"BlockDeviceMappings" xml:"blockDeviceMapping>item"` - EBSOptimized aws.BooleanValue `ec2:"EbsOptimized" xml:"ebsOptimized"` - IAMInstanceProfile *IAMInstanceProfileSpecification `ec2:"IamInstanceProfile" xml:"iamInstanceProfile"` - ImageID aws.StringValue `ec2:"ImageId" xml:"imageId"` - InstanceType aws.StringValue `ec2:"InstanceType" xml:"instanceType"` - KernelID aws.StringValue `ec2:"KernelId" xml:"kernelId"` - KeyName aws.StringValue `ec2:"KeyName" xml:"keyName"` - Monitoring *RunInstancesMonitoringEnabled `ec2:"Monitoring" xml:"monitoring"` - NetworkInterfaces []InstanceNetworkInterfaceSpecification `ec2:"NetworkInterfaces" xml:"networkInterfaceSet>item"` - Placement *SpotPlacement `ec2:"Placement" xml:"placement"` - RAMDiskID aws.StringValue `ec2:"RamdiskId" xml:"ramdiskId"` - SecurityGroups []GroupIdentifier `ec2:"SecurityGroups" xml:"groupSet>item"` - SubnetID aws.StringValue `ec2:"SubnetId" xml:"subnetId"` - UserData aws.StringValue `ec2:"UserData" xml:"userData"` -} - -// Possible values for EC2. -const ( - ListingStateAvailable = "available" - ListingStateCancelled = "cancelled" - ListingStatePending = "pending" - ListingStateSold = "sold" -) - -// Possible values for EC2. -const ( - ListingStatusActive = "active" - ListingStatusCancelled = "cancelled" - ListingStatusClosed = "closed" - ListingStatusPending = "pending" -) - -// ModifyImageAttributeRequest is undocumented. -type ModifyImageAttributeRequest struct { - Attribute aws.StringValue `ec2:"Attribute" xml:"Attribute"` - Description *AttributeValue `ec2:"Description" xml:"Description"` - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - ImageID aws.StringValue `ec2:"ImageId" xml:"ImageId"` - LaunchPermission *LaunchPermissionModifications `ec2:"LaunchPermission" xml:"LaunchPermission"` - OperationType aws.StringValue `ec2:"OperationType" xml:"OperationType"` - ProductCodes []string `ec2:"ProductCode" xml:"ProductCode>ProductCode"` - UserGroups []string `ec2:"UserGroup" xml:"UserGroup>UserGroup"` - UserIDs []string `ec2:"UserId" xml:"UserId>UserId"` - Value aws.StringValue `ec2:"Value" xml:"Value"` -} - -// ModifyInstanceAttributeRequest is undocumented. -type ModifyInstanceAttributeRequest struct { - Attribute aws.StringValue `ec2:"Attribute" xml:"attribute"` - BlockDeviceMappings []InstanceBlockDeviceMappingSpecification `ec2:"BlockDeviceMappings" xml:"blockDeviceMapping>item"` - DisableAPITermination *AttributeBooleanValue `ec2:"DisableApiTermination" xml:"disableApiTermination"` - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - EBSOptimized *AttributeBooleanValue `ec2:"EbsOptimized" xml:"ebsOptimized"` - Groups []string `ec2:"GroupId" xml:"GroupId>groupId"` - InstanceID aws.StringValue `ec2:"InstanceId" xml:"instanceId"` - InstanceInitiatedShutdownBehavior *AttributeValue `ec2:"InstanceInitiatedShutdownBehavior" xml:"instanceInitiatedShutdownBehavior"` - InstanceType *AttributeValue `ec2:"InstanceType" xml:"instanceType"` - Kernel *AttributeValue `ec2:"Kernel" xml:"kernel"` - RAMDisk *AttributeValue `ec2:"Ramdisk" xml:"ramdisk"` - SourceDestCheck *AttributeBooleanValue `ec2:"SourceDestCheck" xml:"SourceDestCheck"` - SRIOVNetSupport *AttributeValue `ec2:"SriovNetSupport" xml:"sriovNetSupport"` - UserData *BlobAttributeValue `ec2:"UserData" xml:"userData"` - Value aws.StringValue `ec2:"Value" xml:"value"` -} - -// ModifyNetworkInterfaceAttributeRequest is undocumented. -type ModifyNetworkInterfaceAttributeRequest struct { - Attachment *NetworkInterfaceAttachmentChanges `ec2:"Attachment" xml:"attachment"` - Description *AttributeValue `ec2:"Description" xml:"description"` - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - Groups []string `ec2:"SecurityGroupId" xml:"SecurityGroupId>SecurityGroupId"` - NetworkInterfaceID aws.StringValue `ec2:"NetworkInterfaceId" xml:"networkInterfaceId"` - SourceDestCheck *AttributeBooleanValue `ec2:"SourceDestCheck" xml:"sourceDestCheck"` -} - -// ModifyReservedInstancesRequest is undocumented. -type ModifyReservedInstancesRequest struct { - ClientToken aws.StringValue `ec2:"ClientToken" xml:"clientToken"` - ReservedInstancesIDs []string `ec2:"ReservedInstancesId" xml:"ReservedInstancesId>ReservedInstancesId"` - TargetConfigurations []ReservedInstancesConfiguration `ec2:"ReservedInstancesConfigurationSetItemType" xml:"ReservedInstancesConfigurationSetItemType>item"` -} - -// ModifyReservedInstancesResult is undocumented. -type ModifyReservedInstancesResult struct { - ReservedInstancesModificationID aws.StringValue `ec2:"ReservedInstancesModificationId" xml:"reservedInstancesModificationId"` -} - -// ModifySnapshotAttributeRequest is undocumented. -type ModifySnapshotAttributeRequest struct { - Attribute aws.StringValue `ec2:"Attribute" xml:"Attribute"` - CreateVolumePermission *CreateVolumePermissionModifications `ec2:"CreateVolumePermission" xml:"CreateVolumePermission"` - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - GroupNames []string `ec2:"UserGroup" xml:"UserGroup>GroupName"` - OperationType aws.StringValue `ec2:"OperationType" xml:"OperationType"` - SnapshotID aws.StringValue `ec2:"SnapshotId" xml:"SnapshotId"` - UserIDs []string `ec2:"UserId" xml:"UserId>UserId"` -} - -// ModifySubnetAttributeRequest is undocumented. -type ModifySubnetAttributeRequest struct { - MapPublicIPOnLaunch *AttributeBooleanValue `ec2:"MapPublicIpOnLaunch" xml:"MapPublicIpOnLaunch"` - SubnetID aws.StringValue `ec2:"SubnetId" xml:"subnetId"` -} - -// ModifyVolumeAttributeRequest is undocumented. -type ModifyVolumeAttributeRequest struct { - AutoEnableIO *AttributeBooleanValue `ec2:"AutoEnableIO" xml:"AutoEnableIO"` - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - VolumeID aws.StringValue `ec2:"VolumeId" xml:"VolumeId"` -} - -// ModifyVPCAttributeRequest is undocumented. -type ModifyVPCAttributeRequest struct { - EnableDNSHostnames *AttributeBooleanValue `ec2:"EnableDnsHostnames" xml:"EnableDnsHostnames"` - EnableDNSSupport *AttributeBooleanValue `ec2:"EnableDnsSupport" xml:"EnableDnsSupport"` - VPCID aws.StringValue `ec2:"VpcId" xml:"vpcId"` -} - -// MonitorInstancesRequest is undocumented. -type MonitorInstancesRequest struct { - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - InstanceIDs []string `ec2:"InstanceId" xml:"InstanceId>InstanceId"` -} - -// MonitorInstancesResult is undocumented. -type MonitorInstancesResult struct { - InstanceMonitorings []InstanceMonitoring `ec2:"InstanceMonitorings" xml:"instancesSet>item"` -} - -// Monitoring is undocumented. -type Monitoring struct { - State aws.StringValue `ec2:"State" xml:"state"` -} - -// Possible values for EC2. -const ( - MonitoringStateDisabled = "disabled" - MonitoringStateEnabled = "enabled" - MonitoringStatePending = "pending" -) - -// NetworkACL is undocumented. -type NetworkACL struct { - Associations []NetworkACLAssociation `ec2:"Associations" xml:"associationSet>item"` - Entries []NetworkACLEntry `ec2:"Entries" xml:"entrySet>item"` - IsDefault aws.BooleanValue `ec2:"IsDefault" xml:"default"` - NetworkACLID aws.StringValue `ec2:"NetworkAclId" xml:"networkAclId"` - Tags []Tag `ec2:"Tags" xml:"tagSet>item"` - VPCID aws.StringValue `ec2:"VpcId" xml:"vpcId"` -} - -// NetworkACLAssociation is undocumented. -type NetworkACLAssociation struct { - NetworkACLAssociationID aws.StringValue `ec2:"NetworkAclAssociationId" xml:"networkAclAssociationId"` - NetworkACLID aws.StringValue `ec2:"NetworkAclId" xml:"networkAclId"` - SubnetID aws.StringValue `ec2:"SubnetId" xml:"subnetId"` -} - -// NetworkACLEntry is undocumented. -type NetworkACLEntry struct { - CIDRBlock aws.StringValue `ec2:"CidrBlock" xml:"cidrBlock"` - Egress aws.BooleanValue `ec2:"Egress" xml:"egress"` - ICMPTypeCode *ICMPTypeCode `ec2:"IcmpTypeCode" xml:"icmpTypeCode"` - PortRange *PortRange `ec2:"PortRange" xml:"portRange"` - Protocol aws.StringValue `ec2:"Protocol" xml:"protocol"` - RuleAction aws.StringValue `ec2:"RuleAction" xml:"ruleAction"` - RuleNumber aws.IntegerValue `ec2:"RuleNumber" xml:"ruleNumber"` -} - -// NetworkInterface is undocumented. -type NetworkInterface struct { - Association *NetworkInterfaceAssociation `ec2:"Association" xml:"association"` - Attachment *NetworkInterfaceAttachment `ec2:"Attachment" xml:"attachment"` - AvailabilityZone aws.StringValue `ec2:"AvailabilityZone" xml:"availabilityZone"` - Description aws.StringValue `ec2:"Description" xml:"description"` - Groups []GroupIdentifier `ec2:"Groups" xml:"groupSet>item"` - MACAddress aws.StringValue `ec2:"MacAddress" xml:"macAddress"` - NetworkInterfaceID aws.StringValue `ec2:"NetworkInterfaceId" xml:"networkInterfaceId"` - OwnerID aws.StringValue `ec2:"OwnerId" xml:"ownerId"` - PrivateDNSName aws.StringValue `ec2:"PrivateDnsName" xml:"privateDnsName"` - PrivateIPAddress aws.StringValue `ec2:"PrivateIpAddress" xml:"privateIpAddress"` - PrivateIPAddresses []NetworkInterfacePrivateIPAddress `ec2:"PrivateIpAddresses" xml:"privateIpAddressesSet>item"` - RequesterID aws.StringValue `ec2:"RequesterId" xml:"requesterId"` - RequesterManaged aws.BooleanValue `ec2:"RequesterManaged" xml:"requesterManaged"` - SourceDestCheck aws.BooleanValue `ec2:"SourceDestCheck" xml:"sourceDestCheck"` - Status aws.StringValue `ec2:"Status" xml:"status"` - SubnetID aws.StringValue `ec2:"SubnetId" xml:"subnetId"` - TagSet []Tag `ec2:"TagSet" xml:"tagSet>item"` - VPCID aws.StringValue `ec2:"VpcId" xml:"vpcId"` -} - -// NetworkInterfaceAssociation is undocumented. -type NetworkInterfaceAssociation struct { - AllocationID aws.StringValue `ec2:"AllocationId" xml:"allocationId"` - AssociationID aws.StringValue `ec2:"AssociationId" xml:"associationId"` - IPOwnerID aws.StringValue `ec2:"IpOwnerId" xml:"ipOwnerId"` - PublicDNSName aws.StringValue `ec2:"PublicDnsName" xml:"publicDnsName"` - PublicIP aws.StringValue `ec2:"PublicIp" xml:"publicIp"` -} - -// NetworkInterfaceAttachment is undocumented. -type NetworkInterfaceAttachment struct { - AttachTime time.Time `ec2:"AttachTime" xml:"attachTime"` - AttachmentID aws.StringValue `ec2:"AttachmentId" xml:"attachmentId"` - DeleteOnTermination aws.BooleanValue `ec2:"DeleteOnTermination" xml:"deleteOnTermination"` - DeviceIndex aws.IntegerValue `ec2:"DeviceIndex" xml:"deviceIndex"` - InstanceID aws.StringValue `ec2:"InstanceId" xml:"instanceId"` - InstanceOwnerID aws.StringValue `ec2:"InstanceOwnerId" xml:"instanceOwnerId"` - Status aws.StringValue `ec2:"Status" xml:"status"` -} - -// NetworkInterfaceAttachmentChanges is undocumented. -type NetworkInterfaceAttachmentChanges struct { - AttachmentID aws.StringValue `ec2:"AttachmentId" xml:"attachmentId"` - DeleteOnTermination aws.BooleanValue `ec2:"DeleteOnTermination" xml:"deleteOnTermination"` -} - -// Possible values for EC2. -const ( - NetworkInterfaceAttributeAttachment = "attachment" - NetworkInterfaceAttributeDescription = "description" - NetworkInterfaceAttributeGroupSet = "groupSet" - NetworkInterfaceAttributeSourceDestCheck = "sourceDestCheck" -) - -// NetworkInterfacePrivateIPAddress is undocumented. -type NetworkInterfacePrivateIPAddress struct { - Association *NetworkInterfaceAssociation `ec2:"Association" xml:"association"` - Primary aws.BooleanValue `ec2:"Primary" xml:"primary"` - PrivateDNSName aws.StringValue `ec2:"PrivateDnsName" xml:"privateDnsName"` - PrivateIPAddress aws.StringValue `ec2:"PrivateIpAddress" xml:"privateIpAddress"` -} - -// Possible values for EC2. -const ( - NetworkInterfaceStatusAttaching = "attaching" - NetworkInterfaceStatusAvailable = "available" - NetworkInterfaceStatusDetaching = "detaching" - NetworkInterfaceStatusInUse = "in-use" -) - -// NewDHCPConfiguration is undocumented. -type NewDHCPConfiguration struct { - Key aws.StringValue `ec2:"Key" xml:"key"` - Values []string `ec2:"Value" xml:"Value>item"` -} - -// Possible values for EC2. -const ( - OfferingTypeValuesHeavyUtilization = "Heavy Utilization" - OfferingTypeValuesLightUtilization = "Light Utilization" - OfferingTypeValuesMediumUtilization = "Medium Utilization" -) - -// Possible values for EC2. -const ( - PermissionGroupAll = "all" -) - -// Placement is undocumented. -type Placement struct { - AvailabilityZone aws.StringValue `ec2:"AvailabilityZone" xml:"availabilityZone"` - GroupName aws.StringValue `ec2:"GroupName" xml:"groupName"` - Tenancy aws.StringValue `ec2:"Tenancy" xml:"tenancy"` -} - -// PlacementGroup is undocumented. -type PlacementGroup struct { - GroupName aws.StringValue `ec2:"GroupName" xml:"groupName"` - State aws.StringValue `ec2:"State" xml:"state"` - Strategy aws.StringValue `ec2:"Strategy" xml:"strategy"` -} - -// Possible values for EC2. -const ( - PlacementGroupStateAvailable = "available" - PlacementGroupStateDeleted = "deleted" - PlacementGroupStateDeleting = "deleting" - PlacementGroupStatePending = "pending" -) - -// Possible values for EC2. -const ( - PlacementStrategyCluster = "cluster" -) - -// Possible values for EC2. -const ( - PlatformValuesWindows = "Windows" -) - -// PortRange is undocumented. -type PortRange struct { - From aws.IntegerValue `ec2:"From" xml:"from"` - To aws.IntegerValue `ec2:"To" xml:"to"` -} - -// PriceSchedule is undocumented. -type PriceSchedule struct { - Active aws.BooleanValue `ec2:"Active" xml:"active"` - CurrencyCode aws.StringValue `ec2:"CurrencyCode" xml:"currencyCode"` - Price aws.DoubleValue `ec2:"Price" xml:"price"` - Term aws.LongValue `ec2:"Term" xml:"term"` -} - -// PriceScheduleSpecification is undocumented. -type PriceScheduleSpecification struct { - CurrencyCode aws.StringValue `ec2:"CurrencyCode" xml:"currencyCode"` - Price aws.DoubleValue `ec2:"Price" xml:"price"` - Term aws.LongValue `ec2:"Term" xml:"term"` -} - -// PricingDetail is undocumented. -type PricingDetail struct { - Count aws.IntegerValue `ec2:"Count" xml:"count"` - Price aws.DoubleValue `ec2:"Price" xml:"price"` -} - -// PrivateIPAddressSpecification is undocumented. -type PrivateIPAddressSpecification struct { - Primary aws.BooleanValue `ec2:"Primary" xml:"primary"` - PrivateIPAddress aws.StringValue `ec2:"PrivateIpAddress" xml:"privateIpAddress"` -} - -// ProductCode is undocumented. -type ProductCode struct { - ProductCodeID aws.StringValue `ec2:"ProductCodeId" xml:"productCode"` - ProductCodeType aws.StringValue `ec2:"ProductCodeType" xml:"type"` -} - -// Possible values for EC2. -const ( - ProductCodeValuesDevpay = "devpay" - ProductCodeValuesMarketplace = "marketplace" -) - -// PropagatingVGW is undocumented. -type PropagatingVGW struct { - GatewayID aws.StringValue `ec2:"GatewayId" xml:"gatewayId"` -} - -// PurchaseReservedInstancesOfferingRequest is undocumented. -type PurchaseReservedInstancesOfferingRequest struct { - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - InstanceCount aws.IntegerValue `ec2:"InstanceCount" xml:"InstanceCount"` - LimitPrice *ReservedInstanceLimitPrice `ec2:"LimitPrice" xml:"limitPrice"` - ReservedInstancesOfferingID aws.StringValue `ec2:"ReservedInstancesOfferingId" xml:"ReservedInstancesOfferingId"` -} - -// PurchaseReservedInstancesOfferingResult is undocumented. -type PurchaseReservedInstancesOfferingResult struct { - ReservedInstancesID aws.StringValue `ec2:"ReservedInstancesId" xml:"reservedInstancesId"` -} - -// Possible values for EC2. -const ( - RIProductDescriptionLinuxUnix = "Linux/UNIX" - RIProductDescriptionLinuxUnixamazonVPC = "Linux/UNIX (Amazon VPC)" - RIProductDescriptionWindows = "Windows" - RIProductDescriptionWindowsAmazonVPC = "Windows (Amazon VPC)" -) - -// RebootInstancesRequest is undocumented. -type RebootInstancesRequest struct { - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - InstanceIDs []string `ec2:"InstanceId" xml:"InstanceId>InstanceId"` -} - -// RecurringCharge is undocumented. -type RecurringCharge struct { - Amount aws.DoubleValue `ec2:"Amount" xml:"amount"` - Frequency aws.StringValue `ec2:"Frequency" xml:"frequency"` -} - -// Possible values for EC2. -const ( - RecurringChargeFrequencyHourly = "Hourly" -) - -// Region is undocumented. -type Region struct { - Endpoint aws.StringValue `ec2:"Endpoint" xml:"regionEndpoint"` - RegionName aws.StringValue `ec2:"RegionName" xml:"regionName"` -} - -// RegisterImageRequest is undocumented. -type RegisterImageRequest struct { - Architecture aws.StringValue `ec2:"Architecture" xml:"architecture"` - BlockDeviceMappings []BlockDeviceMapping `ec2:"BlockDeviceMapping" xml:"BlockDeviceMapping>BlockDeviceMapping"` - Description aws.StringValue `ec2:"Description" xml:"description"` - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - ImageLocation aws.StringValue `ec2:"ImageLocation" xml:"ImageLocation"` - KernelID aws.StringValue `ec2:"KernelId" xml:"kernelId"` - Name aws.StringValue `ec2:"Name" xml:"name"` - RAMDiskID aws.StringValue `ec2:"RamdiskId" xml:"ramdiskId"` - RootDeviceName aws.StringValue `ec2:"RootDeviceName" xml:"rootDeviceName"` - SRIOVNetSupport aws.StringValue `ec2:"SriovNetSupport" xml:"sriovNetSupport"` - VirtualizationType aws.StringValue `ec2:"VirtualizationType" xml:"virtualizationType"` -} - -// RegisterImageResult is undocumented. -type RegisterImageResult struct { - ImageID aws.StringValue `ec2:"ImageId" xml:"imageId"` -} - -// RejectVPCPeeringConnectionRequest is undocumented. -type RejectVPCPeeringConnectionRequest struct { - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - VPCPeeringConnectionID aws.StringValue `ec2:"VpcPeeringConnectionId" xml:"vpcPeeringConnectionId"` -} - -// RejectVPCPeeringConnectionResult is undocumented. -type RejectVPCPeeringConnectionResult struct { - Return aws.BooleanValue `ec2:"Return" xml:"return"` -} - -// ReleaseAddressRequest is undocumented. -type ReleaseAddressRequest struct { - AllocationID aws.StringValue `ec2:"AllocationId" xml:"AllocationId"` - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - PublicIP aws.StringValue `ec2:"PublicIp" xml:"PublicIp"` -} - -// ReplaceNetworkACLAssociationRequest is undocumented. -type ReplaceNetworkACLAssociationRequest struct { - AssociationID aws.StringValue `ec2:"AssociationId" xml:"associationId"` - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - NetworkACLID aws.StringValue `ec2:"NetworkAclId" xml:"networkAclId"` -} - -// ReplaceNetworkACLAssociationResult is undocumented. -type ReplaceNetworkACLAssociationResult struct { - NewAssociationID aws.StringValue `ec2:"NewAssociationId" xml:"newAssociationId"` -} - -// ReplaceNetworkACLEntryRequest is undocumented. -type ReplaceNetworkACLEntryRequest struct { - CIDRBlock aws.StringValue `ec2:"CidrBlock" xml:"cidrBlock"` - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - Egress aws.BooleanValue `ec2:"Egress" xml:"egress"` - ICMPTypeCode *ICMPTypeCode `ec2:"Icmp" xml:"Icmp"` - NetworkACLID aws.StringValue `ec2:"NetworkAclId" xml:"networkAclId"` - PortRange *PortRange `ec2:"PortRange" xml:"portRange"` - Protocol aws.StringValue `ec2:"Protocol" xml:"protocol"` - RuleAction aws.StringValue `ec2:"RuleAction" xml:"ruleAction"` - RuleNumber aws.IntegerValue `ec2:"RuleNumber" xml:"ruleNumber"` -} - -// ReplaceRouteRequest is undocumented. -type ReplaceRouteRequest struct { - DestinationCIDRBlock aws.StringValue `ec2:"DestinationCidrBlock" xml:"destinationCidrBlock"` - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - GatewayID aws.StringValue `ec2:"GatewayId" xml:"gatewayId"` - InstanceID aws.StringValue `ec2:"InstanceId" xml:"instanceId"` - NetworkInterfaceID aws.StringValue `ec2:"NetworkInterfaceId" xml:"networkInterfaceId"` - RouteTableID aws.StringValue `ec2:"RouteTableId" xml:"routeTableId"` - VPCPeeringConnectionID aws.StringValue `ec2:"VpcPeeringConnectionId" xml:"vpcPeeringConnectionId"` -} - -// ReplaceRouteTableAssociationRequest is undocumented. -type ReplaceRouteTableAssociationRequest struct { - AssociationID aws.StringValue `ec2:"AssociationId" xml:"associationId"` - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - RouteTableID aws.StringValue `ec2:"RouteTableId" xml:"routeTableId"` -} - -// ReplaceRouteTableAssociationResult is undocumented. -type ReplaceRouteTableAssociationResult struct { - NewAssociationID aws.StringValue `ec2:"NewAssociationId" xml:"newAssociationId"` -} - -// Possible values for EC2. -const ( - ReportInstanceReasonCodesInstanceStuckInState = "instance-stuck-in-state" - ReportInstanceReasonCodesNotAcceptingCredentials = "not-accepting-credentials" - ReportInstanceReasonCodesOther = "other" - ReportInstanceReasonCodesPasswordNotAvailable = "password-not-available" - ReportInstanceReasonCodesPerformanceEBSVolume = "performance-ebs-volume" - ReportInstanceReasonCodesPerformanceInstanceStore = "performance-instance-store" - ReportInstanceReasonCodesPerformanceNetwork = "performance-network" - ReportInstanceReasonCodesPerformanceOther = "performance-other" - ReportInstanceReasonCodesUnresponsive = "unresponsive" -) - -// ReportInstanceStatusRequest is undocumented. -type ReportInstanceStatusRequest struct { - Description aws.StringValue `ec2:"Description" xml:"description"` - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - EndTime time.Time `ec2:"EndTime" xml:"endTime"` - Instances []string `ec2:"Instances" xml:"instanceId>InstanceId"` - ReasonCodes []string `ec2:"ReasonCodes" xml:"reasonCode>item"` - StartTime time.Time `ec2:"StartTime" xml:"startTime"` - Status aws.StringValue `ec2:"Status" xml:"status"` -} - -// Possible values for EC2. -const ( - ReportStatusTypeImpaired = "impaired" - ReportStatusTypeOK = "ok" -) - -// RequestSpotInstancesRequest is undocumented. -type RequestSpotInstancesRequest struct { - AvailabilityZoneGroup aws.StringValue `ec2:"AvailabilityZoneGroup" xml:"availabilityZoneGroup"` - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - InstanceCount aws.IntegerValue `ec2:"InstanceCount" xml:"instanceCount"` - LaunchGroup aws.StringValue `ec2:"LaunchGroup" xml:"launchGroup"` - LaunchSpecification *RequestSpotLaunchSpecification `ec2:"LaunchSpecification" xml:"LaunchSpecification"` - SpotPrice aws.StringValue `ec2:"SpotPrice" xml:"spotPrice"` - Type aws.StringValue `ec2:"Type" xml:"type"` - ValidFrom time.Time `ec2:"ValidFrom" xml:"validFrom"` - ValidUntil time.Time `ec2:"ValidUntil" xml:"validUntil"` -} - -// RequestSpotInstancesResult is undocumented. -type RequestSpotInstancesResult struct { - SpotInstanceRequests []SpotInstanceRequest `ec2:"SpotInstanceRequests" xml:"spotInstanceRequestSet>item"` -} - -// RequestSpotLaunchSpecification is undocumented. -type RequestSpotLaunchSpecification struct { - AddressingType aws.StringValue `ec2:"AddressingType" xml:"addressingType"` - BlockDeviceMappings []BlockDeviceMapping `ec2:"BlockDeviceMappings" xml:"blockDeviceMapping>item"` - EBSOptimized aws.BooleanValue `ec2:"EbsOptimized" xml:"ebsOptimized"` - IAMInstanceProfile *IAMInstanceProfileSpecification `ec2:"IamInstanceProfile" xml:"iamInstanceProfile"` - ImageID aws.StringValue `ec2:"ImageId" xml:"imageId"` - InstanceType aws.StringValue `ec2:"InstanceType" xml:"instanceType"` - KernelID aws.StringValue `ec2:"KernelId" xml:"kernelId"` - KeyName aws.StringValue `ec2:"KeyName" xml:"keyName"` - Monitoring *RunInstancesMonitoringEnabled `ec2:"Monitoring" xml:"monitoring"` - NetworkInterfaces []InstanceNetworkInterfaceSpecification `ec2:"NetworkInterface" xml:"NetworkInterface>item"` - Placement *SpotPlacement `ec2:"Placement" xml:"placement"` - RAMDiskID aws.StringValue `ec2:"RamdiskId" xml:"ramdiskId"` - SecurityGroupIDs []string `ec2:"SecurityGroupId" xml:"SecurityGroupId>item"` - SecurityGroups []string `ec2:"SecurityGroup" xml:"SecurityGroup>item"` - SubnetID aws.StringValue `ec2:"SubnetId" xml:"subnetId"` - UserData aws.StringValue `ec2:"UserData" xml:"userData"` -} - -// Reservation is undocumented. -type Reservation struct { - Groups []GroupIdentifier `ec2:"Groups" xml:"groupSet>item"` - Instances []Instance `ec2:"Instances" xml:"instancesSet>item"` - OwnerID aws.StringValue `ec2:"OwnerId" xml:"ownerId"` - RequesterID aws.StringValue `ec2:"RequesterId" xml:"requesterId"` - ReservationID aws.StringValue `ec2:"ReservationId" xml:"reservationId"` -} - -// ReservedInstanceLimitPrice is undocumented. -type ReservedInstanceLimitPrice struct { - Amount aws.DoubleValue `ec2:"Amount" xml:"amount"` - CurrencyCode aws.StringValue `ec2:"CurrencyCode" xml:"currencyCode"` -} - -// Possible values for EC2. -const ( - ReservedInstanceStateActive = "active" - ReservedInstanceStatePaymentFailed = "payment-failed" - ReservedInstanceStatePaymentPending = "payment-pending" - ReservedInstanceStateRetired = "retired" -) - -// ReservedInstances is undocumented. -type ReservedInstances struct { - AvailabilityZone aws.StringValue `ec2:"AvailabilityZone" xml:"availabilityZone"` - CurrencyCode aws.StringValue `ec2:"CurrencyCode" xml:"currencyCode"` - Duration aws.LongValue `ec2:"Duration" xml:"duration"` - End time.Time `ec2:"End" xml:"end"` - FixedPrice aws.FloatValue `ec2:"FixedPrice" xml:"fixedPrice"` - InstanceCount aws.IntegerValue `ec2:"InstanceCount" xml:"instanceCount"` - InstanceTenancy aws.StringValue `ec2:"InstanceTenancy" xml:"instanceTenancy"` - InstanceType aws.StringValue `ec2:"InstanceType" xml:"instanceType"` - OfferingType aws.StringValue `ec2:"OfferingType" xml:"offeringType"` - ProductDescription aws.StringValue `ec2:"ProductDescription" xml:"productDescription"` - RecurringCharges []RecurringCharge `ec2:"RecurringCharges" xml:"recurringCharges>item"` - ReservedInstancesID aws.StringValue `ec2:"ReservedInstancesId" xml:"reservedInstancesId"` - Start time.Time `ec2:"Start" xml:"start"` - State aws.StringValue `ec2:"State" xml:"state"` - Tags []Tag `ec2:"Tags" xml:"tagSet>item"` - UsagePrice aws.FloatValue `ec2:"UsagePrice" xml:"usagePrice"` -} - -// ReservedInstancesConfiguration is undocumented. -type ReservedInstancesConfiguration struct { - AvailabilityZone aws.StringValue `ec2:"AvailabilityZone" xml:"availabilityZone"` - InstanceCount aws.IntegerValue `ec2:"InstanceCount" xml:"instanceCount"` - InstanceType aws.StringValue `ec2:"InstanceType" xml:"instanceType"` - Platform aws.StringValue `ec2:"Platform" xml:"platform"` -} - -// ReservedInstancesID is undocumented. -type ReservedInstancesID struct { - ReservedInstancesID aws.StringValue `ec2:"ReservedInstancesId" xml:"reservedInstancesId"` -} - -// ReservedInstancesListing is undocumented. -type ReservedInstancesListing struct { - ClientToken aws.StringValue `ec2:"ClientToken" xml:"clientToken"` - CreateDate time.Time `ec2:"CreateDate" xml:"createDate"` - InstanceCounts []InstanceCount `ec2:"InstanceCounts" xml:"instanceCounts>item"` - PriceSchedules []PriceSchedule `ec2:"PriceSchedules" xml:"priceSchedules>item"` - ReservedInstancesID aws.StringValue `ec2:"ReservedInstancesId" xml:"reservedInstancesId"` - ReservedInstancesListingID aws.StringValue `ec2:"ReservedInstancesListingId" xml:"reservedInstancesListingId"` - Status aws.StringValue `ec2:"Status" xml:"status"` - StatusMessage aws.StringValue `ec2:"StatusMessage" xml:"statusMessage"` - Tags []Tag `ec2:"Tags" xml:"tagSet>item"` - UpdateDate time.Time `ec2:"UpdateDate" xml:"updateDate"` -} - -// ReservedInstancesModification is undocumented. -type ReservedInstancesModification struct { - ClientToken aws.StringValue `ec2:"ClientToken" xml:"clientToken"` - CreateDate time.Time `ec2:"CreateDate" xml:"createDate"` - EffectiveDate time.Time `ec2:"EffectiveDate" xml:"effectiveDate"` - ModificationResults []ReservedInstancesModificationResult `ec2:"ModificationResults" xml:"modificationResultSet>item"` - ReservedInstancesIDs []ReservedInstancesID `ec2:"ReservedInstancesIds" xml:"reservedInstancesSet>item"` - ReservedInstancesModificationID aws.StringValue `ec2:"ReservedInstancesModificationId" xml:"reservedInstancesModificationId"` - Status aws.StringValue `ec2:"Status" xml:"status"` - StatusMessage aws.StringValue `ec2:"StatusMessage" xml:"statusMessage"` - UpdateDate time.Time `ec2:"UpdateDate" xml:"updateDate"` -} - -// ReservedInstancesModificationResult is undocumented. -type ReservedInstancesModificationResult struct { - ReservedInstancesID aws.StringValue `ec2:"ReservedInstancesId" xml:"reservedInstancesId"` - TargetConfiguration *ReservedInstancesConfiguration `ec2:"TargetConfiguration" xml:"targetConfiguration"` -} - -// ReservedInstancesOffering is undocumented. -type ReservedInstancesOffering struct { - AvailabilityZone aws.StringValue `ec2:"AvailabilityZone" xml:"availabilityZone"` - CurrencyCode aws.StringValue `ec2:"CurrencyCode" xml:"currencyCode"` - Duration aws.LongValue `ec2:"Duration" xml:"duration"` - FixedPrice aws.FloatValue `ec2:"FixedPrice" xml:"fixedPrice"` - InstanceTenancy aws.StringValue `ec2:"InstanceTenancy" xml:"instanceTenancy"` - InstanceType aws.StringValue `ec2:"InstanceType" xml:"instanceType"` - Marketplace aws.BooleanValue `ec2:"Marketplace" xml:"marketplace"` - OfferingType aws.StringValue `ec2:"OfferingType" xml:"offeringType"` - PricingDetails []PricingDetail `ec2:"PricingDetails" xml:"pricingDetailsSet>item"` - ProductDescription aws.StringValue `ec2:"ProductDescription" xml:"productDescription"` - RecurringCharges []RecurringCharge `ec2:"RecurringCharges" xml:"recurringCharges>item"` - ReservedInstancesOfferingID aws.StringValue `ec2:"ReservedInstancesOfferingId" xml:"reservedInstancesOfferingId"` - UsagePrice aws.FloatValue `ec2:"UsagePrice" xml:"usagePrice"` -} - -// Possible values for EC2. -const ( - ResetImageAttributeNameLaunchPermission = "launchPermission" -) - -// ResetImageAttributeRequest is undocumented. -type ResetImageAttributeRequest struct { - Attribute aws.StringValue `ec2:"Attribute" xml:"Attribute"` - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - ImageID aws.StringValue `ec2:"ImageId" xml:"ImageId"` -} - -// ResetInstanceAttributeRequest is undocumented. -type ResetInstanceAttributeRequest struct { - Attribute aws.StringValue `ec2:"Attribute" xml:"attribute"` - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - InstanceID aws.StringValue `ec2:"InstanceId" xml:"instanceId"` -} - -// ResetNetworkInterfaceAttributeRequest is undocumented. -type ResetNetworkInterfaceAttributeRequest struct { - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - NetworkInterfaceID aws.StringValue `ec2:"NetworkInterfaceId" xml:"networkInterfaceId"` - SourceDestCheck aws.StringValue `ec2:"SourceDestCheck" xml:"sourceDestCheck"` -} - -// ResetSnapshotAttributeRequest is undocumented. -type ResetSnapshotAttributeRequest struct { - Attribute aws.StringValue `ec2:"Attribute" xml:"Attribute"` - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - SnapshotID aws.StringValue `ec2:"SnapshotId" xml:"SnapshotId"` -} - -// Possible values for EC2. -const ( - ResourceTypeCustomerGateway = "customer-gateway" - ResourceTypeDHCPOptions = "dhcp-options" - ResourceTypeImage = "image" - ResourceTypeInstance = "instance" - ResourceTypeInternetGateway = "internet-gateway" - ResourceTypeNetworkACL = "network-acl" - ResourceTypeNetworkInterface = "network-interface" - ResourceTypeReservedInstances = "reserved-instances" - ResourceTypeRouteTable = "route-table" - ResourceTypeSecurityGroup = "security-group" - ResourceTypeSnapshot = "snapshot" - ResourceTypeSpotInstancesRequest = "spot-instances-request" - ResourceTypeSubnet = "subnet" - ResourceTypeVPC = "vpc" - ResourceTypeVPNConnection = "vpn-connection" - ResourceTypeVPNGateway = "vpn-gateway" - ResourceTypeVolume = "volume" -) - -// RevokeSecurityGroupEgressRequest is undocumented. -type RevokeSecurityGroupEgressRequest struct { - CIDRIP aws.StringValue `ec2:"CidrIp" xml:"cidrIp"` - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - FromPort aws.IntegerValue `ec2:"FromPort" xml:"fromPort"` - GroupID aws.StringValue `ec2:"GroupId" xml:"groupId"` - IPPermissions []IPPermission `ec2:"IpPermissions" xml:"ipPermissions>item"` - IPProtocol aws.StringValue `ec2:"IpProtocol" xml:"ipProtocol"` - SourceSecurityGroupName aws.StringValue `ec2:"SourceSecurityGroupName" xml:"sourceSecurityGroupName"` - SourceSecurityGroupOwnerID aws.StringValue `ec2:"SourceSecurityGroupOwnerId" xml:"sourceSecurityGroupOwnerId"` - ToPort aws.IntegerValue `ec2:"ToPort" xml:"toPort"` -} - -// RevokeSecurityGroupIngressRequest is undocumented. -type RevokeSecurityGroupIngressRequest struct { - CIDRIP aws.StringValue `ec2:"CidrIp" xml:"CidrIp"` - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - FromPort aws.IntegerValue `ec2:"FromPort" xml:"FromPort"` - GroupID aws.StringValue `ec2:"GroupId" xml:"GroupId"` - GroupName aws.StringValue `ec2:"GroupName" xml:"GroupName"` - IPPermissions []IPPermission `ec2:"IpPermissions" xml:"IpPermissions>item"` - IPProtocol aws.StringValue `ec2:"IpProtocol" xml:"IpProtocol"` - SourceSecurityGroupName aws.StringValue `ec2:"SourceSecurityGroupName" xml:"SourceSecurityGroupName"` - SourceSecurityGroupOwnerID aws.StringValue `ec2:"SourceSecurityGroupOwnerId" xml:"SourceSecurityGroupOwnerId"` - ToPort aws.IntegerValue `ec2:"ToPort" xml:"ToPort"` -} - -// Route is undocumented. -type Route struct { - DestinationCIDRBlock aws.StringValue `ec2:"DestinationCidrBlock" xml:"destinationCidrBlock"` - GatewayID aws.StringValue `ec2:"GatewayId" xml:"gatewayId"` - InstanceID aws.StringValue `ec2:"InstanceId" xml:"instanceId"` - InstanceOwnerID aws.StringValue `ec2:"InstanceOwnerId" xml:"instanceOwnerId"` - NetworkInterfaceID aws.StringValue `ec2:"NetworkInterfaceId" xml:"networkInterfaceId"` - Origin aws.StringValue `ec2:"Origin" xml:"origin"` - State aws.StringValue `ec2:"State" xml:"state"` - VPCPeeringConnectionID aws.StringValue `ec2:"VpcPeeringConnectionId" xml:"vpcPeeringConnectionId"` -} - -// Possible values for EC2. -const ( - RouteOriginCreateRoute = "CreateRoute" - RouteOriginCreateRouteTable = "CreateRouteTable" - RouteOriginEnableVGWRoutePropagation = "EnableVgwRoutePropagation" -) - -// Possible values for EC2. -const ( - RouteStateActive = "active" - RouteStateBlackhole = "blackhole" -) - -// RouteTable is undocumented. -type RouteTable struct { - Associations []RouteTableAssociation `ec2:"Associations" xml:"associationSet>item"` - PropagatingVGWs []PropagatingVGW `ec2:"PropagatingVgws" xml:"propagatingVgwSet>item"` - RouteTableID aws.StringValue `ec2:"RouteTableId" xml:"routeTableId"` - Routes []Route `ec2:"Routes" xml:"routeSet>item"` - Tags []Tag `ec2:"Tags" xml:"tagSet>item"` - VPCID aws.StringValue `ec2:"VpcId" xml:"vpcId"` -} - -// RouteTableAssociation is undocumented. -type RouteTableAssociation struct { - Main aws.BooleanValue `ec2:"Main" xml:"main"` - RouteTableAssociationID aws.StringValue `ec2:"RouteTableAssociationId" xml:"routeTableAssociationId"` - RouteTableID aws.StringValue `ec2:"RouteTableId" xml:"routeTableId"` - SubnetID aws.StringValue `ec2:"SubnetId" xml:"subnetId"` -} - -// Possible values for EC2. -const ( - RuleActionAllow = "allow" - RuleActionDeny = "deny" -) - -// RunInstancesMonitoringEnabled is undocumented. -type RunInstancesMonitoringEnabled struct { - Enabled aws.BooleanValue `ec2:"Enabled" xml:"enabled"` -} - -// RunInstancesRequest is undocumented. -type RunInstancesRequest struct { - AdditionalInfo aws.StringValue `ec2:"AdditionalInfo" xml:"additionalInfo"` - BlockDeviceMappings []BlockDeviceMapping `ec2:"BlockDeviceMapping" xml:"BlockDeviceMapping>BlockDeviceMapping"` - ClientToken aws.StringValue `ec2:"ClientToken" xml:"clientToken"` - DisableAPITermination aws.BooleanValue `ec2:"DisableApiTermination" xml:"disableApiTermination"` - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - EBSOptimized aws.BooleanValue `ec2:"EbsOptimized" xml:"ebsOptimized"` - IAMInstanceProfile *IAMInstanceProfileSpecification `ec2:"IamInstanceProfile" xml:"iamInstanceProfile"` - ImageID aws.StringValue `ec2:"ImageId" xml:"ImageId"` - InstanceInitiatedShutdownBehavior aws.StringValue `ec2:"InstanceInitiatedShutdownBehavior" xml:"instanceInitiatedShutdownBehavior"` - InstanceType aws.StringValue `ec2:"InstanceType" xml:"InstanceType"` - KernelID aws.StringValue `ec2:"KernelId" xml:"KernelId"` - KeyName aws.StringValue `ec2:"KeyName" xml:"KeyName"` - MaxCount aws.IntegerValue `ec2:"MaxCount" xml:"MaxCount"` - MinCount aws.IntegerValue `ec2:"MinCount" xml:"MinCount"` - Monitoring *RunInstancesMonitoringEnabled `ec2:"Monitoring" xml:"Monitoring"` - NetworkInterfaces []InstanceNetworkInterfaceSpecification `ec2:"NetworkInterfaces" xml:"networkInterface>item"` - Placement *Placement `ec2:"Placement" xml:"Placement"` - PrivateIPAddress aws.StringValue `ec2:"PrivateIpAddress" xml:"privateIpAddress"` - RAMDiskID aws.StringValue `ec2:"RamdiskId" xml:"RamdiskId"` - SecurityGroupIDs []string `ec2:"SecurityGroupId" xml:"SecurityGroupId>SecurityGroupId"` - SecurityGroups []string `ec2:"SecurityGroup" xml:"SecurityGroup>SecurityGroup"` - SubnetID aws.StringValue `ec2:"SubnetId" xml:"SubnetId"` - UserData aws.StringValue `ec2:"UserData" xml:"UserData"` -} - -// S3Storage is undocumented. -type S3Storage struct { - AWSAccessKeyID aws.StringValue `ec2:"AWSAccessKeyId" xml:"AWSAccessKeyId"` - Bucket aws.StringValue `ec2:"Bucket" xml:"bucket"` - Prefix aws.StringValue `ec2:"Prefix" xml:"prefix"` - UploadPolicy []byte `ec2:"UploadPolicy" xml:"uploadPolicy"` - UploadPolicySignature aws.StringValue `ec2:"UploadPolicySignature" xml:"uploadPolicySignature"` -} - -// SecurityGroup is undocumented. -type SecurityGroup struct { - Description aws.StringValue `ec2:"Description" xml:"groupDescription"` - GroupID aws.StringValue `ec2:"GroupId" xml:"groupId"` - GroupName aws.StringValue `ec2:"GroupName" xml:"groupName"` - IPPermissions []IPPermission `ec2:"IpPermissions" xml:"ipPermissions>item"` - IPPermissionsEgress []IPPermission `ec2:"IpPermissionsEgress" xml:"ipPermissionsEgress>item"` - OwnerID aws.StringValue `ec2:"OwnerId" xml:"ownerId"` - Tags []Tag `ec2:"Tags" xml:"tagSet>item"` - VPCID aws.StringValue `ec2:"VpcId" xml:"vpcId"` -} - -// Possible values for EC2. -const ( - ShutdownBehaviorStop = "stop" - ShutdownBehaviorTerminate = "terminate" -) - -// Snapshot is undocumented. -type Snapshot struct { - Description aws.StringValue `ec2:"Description" xml:"description"` - Encrypted aws.BooleanValue `ec2:"Encrypted" xml:"encrypted"` - KMSKeyID aws.StringValue `ec2:"KmsKeyId" xml:"kmsKeyId"` - OwnerAlias aws.StringValue `ec2:"OwnerAlias" xml:"ownerAlias"` - OwnerID aws.StringValue `ec2:"OwnerId" xml:"ownerId"` - Progress aws.StringValue `ec2:"Progress" xml:"progress"` - SnapshotID aws.StringValue `ec2:"SnapshotId" xml:"snapshotId"` - StartTime time.Time `ec2:"StartTime" xml:"startTime"` - State aws.StringValue `ec2:"State" xml:"status"` - Tags []Tag `ec2:"Tags" xml:"tagSet>item"` - VolumeID aws.StringValue `ec2:"VolumeId" xml:"volumeId"` - VolumeSize aws.IntegerValue `ec2:"VolumeSize" xml:"volumeSize"` -} - -// Possible values for EC2. -const ( - SnapshotAttributeNameCreateVolumePermission = "createVolumePermission" - SnapshotAttributeNameProductCodes = "productCodes" -) - -// Possible values for EC2. -const ( - SnapshotStateCompleted = "completed" - SnapshotStateError = "error" - SnapshotStatePending = "pending" -) - -// SpotDatafeedSubscription is undocumented. -type SpotDatafeedSubscription struct { - Bucket aws.StringValue `ec2:"Bucket" xml:"bucket"` - Fault *SpotInstanceStateFault `ec2:"Fault" xml:"fault"` - OwnerID aws.StringValue `ec2:"OwnerId" xml:"ownerId"` - Prefix aws.StringValue `ec2:"Prefix" xml:"prefix"` - State aws.StringValue `ec2:"State" xml:"state"` -} - -// SpotInstanceRequest is undocumented. -type SpotInstanceRequest struct { - AvailabilityZoneGroup aws.StringValue `ec2:"AvailabilityZoneGroup" xml:"availabilityZoneGroup"` - CreateTime time.Time `ec2:"CreateTime" xml:"createTime"` - Fault *SpotInstanceStateFault `ec2:"Fault" xml:"fault"` - InstanceID aws.StringValue `ec2:"InstanceId" xml:"instanceId"` - LaunchGroup aws.StringValue `ec2:"LaunchGroup" xml:"launchGroup"` - LaunchSpecification *LaunchSpecification `ec2:"LaunchSpecification" xml:"launchSpecification"` - LaunchedAvailabilityZone aws.StringValue `ec2:"LaunchedAvailabilityZone" xml:"launchedAvailabilityZone"` - ProductDescription aws.StringValue `ec2:"ProductDescription" xml:"productDescription"` - SpotInstanceRequestID aws.StringValue `ec2:"SpotInstanceRequestId" xml:"spotInstanceRequestId"` - SpotPrice aws.StringValue `ec2:"SpotPrice" xml:"spotPrice"` - State aws.StringValue `ec2:"State" xml:"state"` - Status *SpotInstanceStatus `ec2:"Status" xml:"status"` - Tags []Tag `ec2:"Tags" xml:"tagSet>item"` - Type aws.StringValue `ec2:"Type" xml:"type"` - ValidFrom time.Time `ec2:"ValidFrom" xml:"validFrom"` - ValidUntil time.Time `ec2:"ValidUntil" xml:"validUntil"` -} - -// Possible values for EC2. -const ( - SpotInstanceStateActive = "active" - SpotInstanceStateCancelled = "cancelled" - SpotInstanceStateClosed = "closed" - SpotInstanceStateFailed = "failed" - SpotInstanceStateOpen = "open" -) - -// SpotInstanceStateFault is undocumented. -type SpotInstanceStateFault struct { - Code aws.StringValue `ec2:"Code" xml:"code"` - Message aws.StringValue `ec2:"Message" xml:"message"` -} - -// SpotInstanceStatus is undocumented. -type SpotInstanceStatus struct { - Code aws.StringValue `ec2:"Code" xml:"code"` - Message aws.StringValue `ec2:"Message" xml:"message"` - UpdateTime time.Time `ec2:"UpdateTime" xml:"updateTime"` -} - -// Possible values for EC2. -const ( - SpotInstanceTypeOneTime = "one-time" - SpotInstanceTypePersistent = "persistent" -) - -// SpotPlacement is undocumented. -type SpotPlacement struct { - AvailabilityZone aws.StringValue `ec2:"AvailabilityZone" xml:"availabilityZone"` - GroupName aws.StringValue `ec2:"GroupName" xml:"groupName"` -} - -// SpotPrice is undocumented. -type SpotPrice struct { - AvailabilityZone aws.StringValue `ec2:"AvailabilityZone" xml:"availabilityZone"` - InstanceType aws.StringValue `ec2:"InstanceType" xml:"instanceType"` - ProductDescription aws.StringValue `ec2:"ProductDescription" xml:"productDescription"` - SpotPrice aws.StringValue `ec2:"SpotPrice" xml:"spotPrice"` - Timestamp time.Time `ec2:"Timestamp" xml:"timestamp"` -} - -// StartInstancesRequest is undocumented. -type StartInstancesRequest struct { - AdditionalInfo aws.StringValue `ec2:"AdditionalInfo" xml:"additionalInfo"` - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - InstanceIDs []string `ec2:"InstanceId" xml:"InstanceId>InstanceId"` -} - -// StartInstancesResult is undocumented. -type StartInstancesResult struct { - StartingInstances []InstanceStateChange `ec2:"StartingInstances" xml:"instancesSet>item"` -} - -// StateReason is undocumented. -type StateReason struct { - Code aws.StringValue `ec2:"Code" xml:"code"` - Message aws.StringValue `ec2:"Message" xml:"message"` -} - -// Possible values for EC2. -const ( - StatusNameReachability = "reachability" -) - -// Possible values for EC2. -const ( - StatusTypeFailed = "failed" - StatusTypeInsufficientData = "insufficient-data" - StatusTypePassed = "passed" -) - -// StopInstancesRequest is undocumented. -type StopInstancesRequest struct { - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - Force aws.BooleanValue `ec2:"Force" xml:"force"` - InstanceIDs []string `ec2:"InstanceId" xml:"InstanceId>InstanceId"` -} - -// StopInstancesResult is undocumented. -type StopInstancesResult struct { - StoppingInstances []InstanceStateChange `ec2:"StoppingInstances" xml:"instancesSet>item"` -} - -// Storage is undocumented. -type Storage struct { - S3 *S3Storage `ec2:"S3" xml:"S3"` -} - -// Subnet is undocumented. -type Subnet struct { - AvailabilityZone aws.StringValue `ec2:"AvailabilityZone" xml:"availabilityZone"` - AvailableIPAddressCount aws.IntegerValue `ec2:"AvailableIpAddressCount" xml:"availableIpAddressCount"` - CIDRBlock aws.StringValue `ec2:"CidrBlock" xml:"cidrBlock"` - DefaultForAz aws.BooleanValue `ec2:"DefaultForAz" xml:"defaultForAz"` - MapPublicIPOnLaunch aws.BooleanValue `ec2:"MapPublicIpOnLaunch" xml:"mapPublicIpOnLaunch"` - State aws.StringValue `ec2:"State" xml:"state"` - SubnetID aws.StringValue `ec2:"SubnetId" xml:"subnetId"` - Tags []Tag `ec2:"Tags" xml:"tagSet>item"` - VPCID aws.StringValue `ec2:"VpcId" xml:"vpcId"` -} - -// Possible values for EC2. -const ( - SubnetStateAvailable = "available" - SubnetStatePending = "pending" -) - -// Possible values for EC2. -const ( - SummaryStatusImpaired = "impaired" - SummaryStatusInsufficientData = "insufficient-data" - SummaryStatusNotApplicable = "not-applicable" - SummaryStatusOK = "ok" -) - -// Tag is undocumented. -type Tag struct { - Key aws.StringValue `ec2:"Key" xml:"key"` - Value aws.StringValue `ec2:"Value" xml:"value"` -} - -// TagDescription is undocumented. -type TagDescription struct { - Key aws.StringValue `ec2:"Key" xml:"key"` - ResourceID aws.StringValue `ec2:"ResourceId" xml:"resourceId"` - ResourceType aws.StringValue `ec2:"ResourceType" xml:"resourceType"` - Value aws.StringValue `ec2:"Value" xml:"value"` -} - -// Possible values for EC2. -const ( - TelemetryStatusDown = "DOWN" - TelemetryStatusUp = "UP" -) - -// Possible values for EC2. -const ( - TenancyDedicated = "dedicated" - TenancyDefault = "default" -) - -// TerminateInstancesRequest is undocumented. -type TerminateInstancesRequest struct { - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - InstanceIDs []string `ec2:"InstanceId" xml:"InstanceId>InstanceId"` -} - -// TerminateInstancesResult is undocumented. -type TerminateInstancesResult struct { - TerminatingInstances []InstanceStateChange `ec2:"TerminatingInstances" xml:"instancesSet>item"` -} - -// UnassignPrivateIPAddressesRequest is undocumented. -type UnassignPrivateIPAddressesRequest struct { - NetworkInterfaceID aws.StringValue `ec2:"NetworkInterfaceId" xml:"networkInterfaceId"` - PrivateIPAddresses []string `ec2:"PrivateIpAddresses" xml:"privateIpAddress>PrivateIpAddress"` -} - -// UnmonitorInstancesRequest is undocumented. -type UnmonitorInstancesRequest struct { - DryRun aws.BooleanValue `ec2:"DryRun" xml:"dryRun"` - InstanceIDs []string `ec2:"InstanceId" xml:"InstanceId>InstanceId"` -} - -// UnmonitorInstancesResult is undocumented. -type UnmonitorInstancesResult struct { - InstanceMonitorings []InstanceMonitoring `ec2:"InstanceMonitorings" xml:"instancesSet>item"` -} - -// UserData is undocumented. -type UserData struct { - Data aws.StringValue `ec2:"Data" xml:"data"` -} - -// UserIDGroupPair is undocumented. -type UserIDGroupPair struct { - GroupID aws.StringValue `ec2:"GroupId" xml:"groupId"` - GroupName aws.StringValue `ec2:"GroupName" xml:"groupName"` - UserID aws.StringValue `ec2:"UserId" xml:"userId"` -} - -// VGWTelemetry is undocumented. -type VGWTelemetry struct { - AcceptedRouteCount aws.IntegerValue `ec2:"AcceptedRouteCount" xml:"acceptedRouteCount"` - LastStatusChange time.Time `ec2:"LastStatusChange" xml:"lastStatusChange"` - OutsideIPAddress aws.StringValue `ec2:"OutsideIpAddress" xml:"outsideIpAddress"` - Status aws.StringValue `ec2:"Status" xml:"status"` - StatusMessage aws.StringValue `ec2:"StatusMessage" xml:"statusMessage"` -} - -// Possible values for EC2. -const ( - VirtualizationTypeHVM = "hvm" - VirtualizationTypeParavirtual = "paravirtual" -) - -// Volume is undocumented. -type Volume struct { - Attachments []VolumeAttachment `ec2:"Attachments" xml:"attachmentSet>item"` - AvailabilityZone aws.StringValue `ec2:"AvailabilityZone" xml:"availabilityZone"` - CreateTime time.Time `ec2:"CreateTime" xml:"createTime"` - Encrypted aws.BooleanValue `ec2:"Encrypted" xml:"encrypted"` - IOPS aws.IntegerValue `ec2:"Iops" xml:"iops"` - KMSKeyID aws.StringValue `ec2:"KmsKeyId" xml:"kmsKeyId"` - Size aws.IntegerValue `ec2:"Size" xml:"size"` - SnapshotID aws.StringValue `ec2:"SnapshotId" xml:"snapshotId"` - State aws.StringValue `ec2:"State" xml:"status"` - Tags []Tag `ec2:"Tags" xml:"tagSet>item"` - VolumeID aws.StringValue `ec2:"VolumeId" xml:"volumeId"` - VolumeType aws.StringValue `ec2:"VolumeType" xml:"volumeType"` -} - -// VolumeAttachment is undocumented. -type VolumeAttachment struct { - AttachTime time.Time `ec2:"AttachTime" xml:"attachTime"` - DeleteOnTermination aws.BooleanValue `ec2:"DeleteOnTermination" xml:"deleteOnTermination"` - Device aws.StringValue `ec2:"Device" xml:"device"` - InstanceID aws.StringValue `ec2:"InstanceId" xml:"instanceId"` - State aws.StringValue `ec2:"State" xml:"status"` - VolumeID aws.StringValue `ec2:"VolumeId" xml:"volumeId"` -} - -// Possible values for EC2. -const ( - VolumeAttachmentStateAttached = "attached" - VolumeAttachmentStateAttaching = "attaching" - VolumeAttachmentStateDetached = "detached" - VolumeAttachmentStateDetaching = "detaching" -) - -// Possible values for EC2. -const ( - VolumeAttributeNameAutoEnableIo = "autoEnableIO" - VolumeAttributeNameProductCodes = "productCodes" -) - -// VolumeDetail is undocumented. -type VolumeDetail struct { - Size aws.LongValue `ec2:"Size" xml:"size"` -} - -// Possible values for EC2. -const ( - VolumeStateAvailable = "available" - VolumeStateCreating = "creating" - VolumeStateDeleted = "deleted" - VolumeStateDeleting = "deleting" - VolumeStateError = "error" - VolumeStateInUse = "in-use" -) - -// VolumeStatusAction is undocumented. -type VolumeStatusAction struct { - Code aws.StringValue `ec2:"Code" xml:"code"` - Description aws.StringValue `ec2:"Description" xml:"description"` - EventID aws.StringValue `ec2:"EventId" xml:"eventId"` - EventType aws.StringValue `ec2:"EventType" xml:"eventType"` -} - -// VolumeStatusDetails is undocumented. -type VolumeStatusDetails struct { - Name aws.StringValue `ec2:"Name" xml:"name"` - Status aws.StringValue `ec2:"Status" xml:"status"` -} - -// VolumeStatusEvent is undocumented. -type VolumeStatusEvent struct { - Description aws.StringValue `ec2:"Description" xml:"description"` - EventID aws.StringValue `ec2:"EventId" xml:"eventId"` - EventType aws.StringValue `ec2:"EventType" xml:"eventType"` - NotAfter time.Time `ec2:"NotAfter" xml:"notAfter"` - NotBefore time.Time `ec2:"NotBefore" xml:"notBefore"` -} - -// VolumeStatusInfo is undocumented. -type VolumeStatusInfo struct { - Details []VolumeStatusDetails `ec2:"Details" xml:"details>item"` - Status aws.StringValue `ec2:"Status" xml:"status"` -} - -// Possible values for EC2. -const ( - VolumeStatusInfoStatusImpaired = "impaired" - VolumeStatusInfoStatusInsufficientData = "insufficient-data" - VolumeStatusInfoStatusOK = "ok" -) - -// VolumeStatusItem is undocumented. -type VolumeStatusItem struct { - Actions []VolumeStatusAction `ec2:"Actions" xml:"actionsSet>item"` - AvailabilityZone aws.StringValue `ec2:"AvailabilityZone" xml:"availabilityZone"` - Events []VolumeStatusEvent `ec2:"Events" xml:"eventsSet>item"` - VolumeID aws.StringValue `ec2:"VolumeId" xml:"volumeId"` - VolumeStatus *VolumeStatusInfo `ec2:"VolumeStatus" xml:"volumeStatus"` -} - -// Possible values for EC2. -const ( - VolumeStatusNameIoEnabled = "io-enabled" - VolumeStatusNameIoPerformance = "io-performance" -) - -// Possible values for EC2. -const ( - VolumeTypeGp2 = "gp2" - VolumeTypeIo1 = "io1" - VolumeTypeStandard = "standard" -) - -// VPC is undocumented. -type VPC struct { - CIDRBlock aws.StringValue `ec2:"CidrBlock" xml:"cidrBlock"` - DHCPOptionsID aws.StringValue `ec2:"DhcpOptionsId" xml:"dhcpOptionsId"` - InstanceTenancy aws.StringValue `ec2:"InstanceTenancy" xml:"instanceTenancy"` - IsDefault aws.BooleanValue `ec2:"IsDefault" xml:"isDefault"` - State aws.StringValue `ec2:"State" xml:"state"` - Tags []Tag `ec2:"Tags" xml:"tagSet>item"` - VPCID aws.StringValue `ec2:"VpcId" xml:"vpcId"` -} - -// VPCAttachment is undocumented. -type VPCAttachment struct { - State aws.StringValue `ec2:"State" xml:"state"` - VPCID aws.StringValue `ec2:"VpcId" xml:"vpcId"` -} - -// Possible values for EC2. -const ( - VPCAttributeNameEnableDNSHostnames = "enableDnsHostnames" - VPCAttributeNameEnableDNSSupport = "enableDnsSupport" -) - -// VPCClassicLink is undocumented. -type VPCClassicLink struct { - ClassicLinkEnabled aws.BooleanValue `ec2:"ClassicLinkEnabled" xml:"classicLinkEnabled"` - Tags []Tag `ec2:"Tags" xml:"tagSet>item"` - VPCID aws.StringValue `ec2:"VpcId" xml:"vpcId"` -} - -// VPCPeeringConnection is undocumented. -type VPCPeeringConnection struct { - AccepterVPCInfo *VPCPeeringConnectionVPCInfo `ec2:"AccepterVpcInfo" xml:"accepterVpcInfo"` - ExpirationTime time.Time `ec2:"ExpirationTime" xml:"expirationTime"` - RequesterVPCInfo *VPCPeeringConnectionVPCInfo `ec2:"RequesterVpcInfo" xml:"requesterVpcInfo"` - Status *VPCPeeringConnectionStateReason `ec2:"Status" xml:"status"` - Tags []Tag `ec2:"Tags" xml:"tagSet>item"` - VPCPeeringConnectionID aws.StringValue `ec2:"VpcPeeringConnectionId" xml:"vpcPeeringConnectionId"` -} - -// VPCPeeringConnectionStateReason is undocumented. -type VPCPeeringConnectionStateReason struct { - Code aws.StringValue `ec2:"Code" xml:"code"` - Message aws.StringValue `ec2:"Message" xml:"message"` -} - -// VPCPeeringConnectionVPCInfo is undocumented. -type VPCPeeringConnectionVPCInfo struct { - CIDRBlock aws.StringValue `ec2:"CidrBlock" xml:"cidrBlock"` - OwnerID aws.StringValue `ec2:"OwnerId" xml:"ownerId"` - VPCID aws.StringValue `ec2:"VpcId" xml:"vpcId"` -} - -// Possible values for EC2. -const ( - VPCStateAvailable = "available" - VPCStatePending = "pending" -) - -// VPNConnection is undocumented. -type VPNConnection struct { - CustomerGatewayConfiguration aws.StringValue `ec2:"CustomerGatewayConfiguration" xml:"customerGatewayConfiguration"` - CustomerGatewayID aws.StringValue `ec2:"CustomerGatewayId" xml:"customerGatewayId"` - Options *VPNConnectionOptions `ec2:"Options" xml:"options"` - Routes []VPNStaticRoute `ec2:"Routes" xml:"routes>item"` - State aws.StringValue `ec2:"State" xml:"state"` - Tags []Tag `ec2:"Tags" xml:"tagSet>item"` - Type aws.StringValue `ec2:"Type" xml:"type"` - VGWTelemetry []VGWTelemetry `ec2:"VgwTelemetry" xml:"vgwTelemetry>item"` - VPNConnectionID aws.StringValue `ec2:"VpnConnectionId" xml:"vpnConnectionId"` - VPNGatewayID aws.StringValue `ec2:"VpnGatewayId" xml:"vpnGatewayId"` -} - -// VPNConnectionOptions is undocumented. -type VPNConnectionOptions struct { - StaticRoutesOnly aws.BooleanValue `ec2:"StaticRoutesOnly" xml:"staticRoutesOnly"` -} - -// VPNConnectionOptionsSpecification is undocumented. -type VPNConnectionOptionsSpecification struct { - StaticRoutesOnly aws.BooleanValue `ec2:"StaticRoutesOnly" xml:"staticRoutesOnly"` -} - -// VPNGateway is undocumented. -type VPNGateway struct { - AvailabilityZone aws.StringValue `ec2:"AvailabilityZone" xml:"availabilityZone"` - State aws.StringValue `ec2:"State" xml:"state"` - Tags []Tag `ec2:"Tags" xml:"tagSet>item"` - Type aws.StringValue `ec2:"Type" xml:"type"` - VPCAttachments []VPCAttachment `ec2:"VpcAttachments" xml:"attachments>item"` - VPNGatewayID aws.StringValue `ec2:"VpnGatewayId" xml:"vpnGatewayId"` -} - -// Possible values for EC2. -const ( - VPNStateAvailable = "available" - VPNStateDeleted = "deleted" - VPNStateDeleting = "deleting" - VPNStatePending = "pending" -) - -// VPNStaticRoute is undocumented. -type VPNStaticRoute struct { - DestinationCIDRBlock aws.StringValue `ec2:"DestinationCidrBlock" xml:"destinationCidrBlock"` - Source aws.StringValue `ec2:"Source" xml:"source"` - State aws.StringValue `ec2:"State" xml:"state"` -} - -// Possible values for EC2. -const ( - VPNStaticRouteSourceStatic = "Static" -) - -// avoid errors if the packages aren't referenced -var _ time.Time diff --git a/src/github.com/getlantern/aws-sdk-go/gen/ecs/ecs.go b/src/github.com/getlantern/aws-sdk-go/gen/ecs/ecs.go deleted file mode 100644 index 604263ce7d..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/gen/ecs/ecs.go +++ /dev/null @@ -1,682 +0,0 @@ -// THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. - -// Package ecs provides a client for Amazon EC2 Container Service. -package ecs - -import ( - "net/http" - "time" - - "github.com/awslabs/aws-sdk-go/aws" - "github.com/awslabs/aws-sdk-go/gen/endpoints" -) - -import ( - "encoding/xml" - "io" -) - -// ECS is a client for Amazon EC2 Container Service. -type ECS struct { - client *aws.QueryClient -} - -// New returns a new ECS client. -func New(creds aws.CredentialsProvider, region string, client *http.Client) *ECS { - if client == nil { - client = http.DefaultClient - } - - endpoint, service, region := endpoints.Lookup("ecs", region) - - return &ECS{ - client: &aws.QueryClient{ - Context: aws.Context{ - Credentials: creds, - Service: service, - Region: region, - }, - Client: client, - Endpoint: endpoint, - APIVersion: "2014-11-13", - }, - } -} - -// CreateCluster creates a new Amazon ECS cluster. By default, your account -// will receive a default cluster when you launch your first container -// instance. However, you can create your own cluster with a unique name -// with the CreateCluster action. During the preview, each account is -// limited to two clusters. -func (c *ECS) CreateCluster(req *CreateClusterRequest) (resp *CreateClusterResult, err error) { - resp = &CreateClusterResult{} - err = c.client.Do("CreateCluster", "POST", "/", req, resp) - return -} - -// DeleteCluster deletes the specified cluster. You must deregister all -// container instances from this cluster before you may delete it. You can -// list the container instances in a cluster with ListContainerInstances -// and deregister them with DeregisterContainerInstance -func (c *ECS) DeleteCluster(req *DeleteClusterRequest) (resp *DeleteClusterResult, err error) { - resp = &DeleteClusterResult{} - err = c.client.Do("DeleteCluster", "POST", "/", req, resp) - return -} - -// DeregisterContainerInstance deregisters an Amazon ECS container instance -// from the specified cluster. This instance will no longer be available to -// run tasks. -func (c *ECS) DeregisterContainerInstance(req *DeregisterContainerInstanceRequest) (resp *DeregisterContainerInstanceResult, err error) { - resp = &DeregisterContainerInstanceResult{} - err = c.client.Do("DeregisterContainerInstance", "POST", "/", req, resp) - return -} - -// DeregisterTaskDefinition deregisters the specified task definition. You -// will no longer be able to run tasks from this definition after -// deregistration. -func (c *ECS) DeregisterTaskDefinition(req *DeregisterTaskDefinitionRequest) (resp *DeregisterTaskDefinitionResult, err error) { - resp = &DeregisterTaskDefinitionResult{} - err = c.client.Do("DeregisterTaskDefinition", "POST", "/", req, resp) - return -} - -// DescribeClusters is undocumented. -func (c *ECS) DescribeClusters(req *DescribeClustersRequest) (resp *DescribeClustersResult, err error) { - resp = &DescribeClustersResult{} - err = c.client.Do("DescribeClusters", "POST", "/", req, resp) - return -} - -// DescribeContainerInstances describes Amazon EC2 Container Service -// container instances. Returns metadata about registered and remaining -// resources on each container instance requested. -func (c *ECS) DescribeContainerInstances(req *DescribeContainerInstancesRequest) (resp *DescribeContainerInstancesResult, err error) { - resp = &DescribeContainerInstancesResult{} - err = c.client.Do("DescribeContainerInstances", "POST", "/", req, resp) - return -} - -// DescribeTaskDefinition is undocumented. -func (c *ECS) DescribeTaskDefinition(req *DescribeTaskDefinitionRequest) (resp *DescribeTaskDefinitionResult, err error) { - resp = &DescribeTaskDefinitionResult{} - err = c.client.Do("DescribeTaskDefinition", "POST", "/", req, resp) - return -} - -// DescribeTasks is undocumented. -func (c *ECS) DescribeTasks(req *DescribeTasksRequest) (resp *DescribeTasksResult, err error) { - resp = &DescribeTasksResult{} - err = c.client.Do("DescribeTasks", "POST", "/", req, resp) - return -} - -// DiscoverPollEndpoint this action is only used by the Amazon EC2 -// Container Service agent, and it is not intended for use outside of the -// agent. Returns an endpoint for the Amazon EC2 Container Service agent to -// poll for updates. -func (c *ECS) DiscoverPollEndpoint(req *DiscoverPollEndpointRequest) (resp *DiscoverPollEndpointResult, err error) { - resp = &DiscoverPollEndpointResult{} - err = c.client.Do("DiscoverPollEndpoint", "POST", "/", req, resp) - return -} - -// ListClusters is undocumented. -func (c *ECS) ListClusters(req *ListClustersRequest) (resp *ListClustersResult, err error) { - resp = &ListClustersResult{} - err = c.client.Do("ListClusters", "POST", "/", req, resp) - return -} - -// ListContainerInstances returns a list of container instances in a -// specified cluster. -func (c *ECS) ListContainerInstances(req *ListContainerInstancesRequest) (resp *ListContainerInstancesResult, err error) { - resp = &ListContainerInstancesResult{} - err = c.client.Do("ListContainerInstances", "POST", "/", req, resp) - return -} - -// ListTaskDefinitions returns a list of task definitions that are -// registered to your account. You can filter the results by family name -// with the familyPrefix parameter. -func (c *ECS) ListTaskDefinitions(req *ListTaskDefinitionsRequest) (resp *ListTaskDefinitionsResult, err error) { - resp = &ListTaskDefinitionsResult{} - err = c.client.Do("ListTaskDefinitions", "POST", "/", req, resp) - return -} - -// ListTasks returns a list of tasks for a specified cluster. You can -// filter the results by family name or by a particular container instance -// with the family and containerInstance parameters. -func (c *ECS) ListTasks(req *ListTasksRequest) (resp *ListTasksResult, err error) { - resp = &ListTasksResult{} - err = c.client.Do("ListTasks", "POST", "/", req, resp) - return -} - -// RegisterContainerInstance this action is only used by the Amazon EC2 -// Container Service agent, and it is not intended for use outside of the -// agent. Registers an Amazon EC2 instance into the specified cluster. This -// instance will become available to place containers on. -func (c *ECS) RegisterContainerInstance(req *RegisterContainerInstanceRequest) (resp *RegisterContainerInstanceResult, err error) { - resp = &RegisterContainerInstanceResult{} - err = c.client.Do("RegisterContainerInstance", "POST", "/", req, resp) - return -} - -// RegisterTaskDefinition registers a new task definition from the supplied -// family and containerDefinitions -func (c *ECS) RegisterTaskDefinition(req *RegisterTaskDefinitionRequest) (resp *RegisterTaskDefinitionResult, err error) { - resp = &RegisterTaskDefinitionResult{} - err = c.client.Do("RegisterTaskDefinition", "POST", "/", req, resp) - return -} - -// RunTask start a task using random placement and the default Amazon ECS -// scheduler. If you want to use your own scheduler or place a task on a -// specific container instance, use StartTask instead. -func (c *ECS) RunTask(req *RunTaskRequest) (resp *RunTaskResult, err error) { - resp = &RunTaskResult{} - err = c.client.Do("RunTask", "POST", "/", req, resp) - return -} - -// StartTask starts a new task from the specified task definition on the -// specified container instance or instances. If you want to use the -// default Amazon ECS scheduler to place your task, use RunTask instead. -func (c *ECS) StartTask(req *StartTaskRequest) (resp *StartTaskResult, err error) { - resp = &StartTaskResult{} - err = c.client.Do("StartTask", "POST", "/", req, resp) - return -} - -// StopTask is undocumented. -func (c *ECS) StopTask(req *StopTaskRequest) (resp *StopTaskResult, err error) { - resp = &StopTaskResult{} - err = c.client.Do("StopTask", "POST", "/", req, resp) - return -} - -// SubmitContainerStateChange this action is only used by the Amazon EC2 -// Container Service agent, and it is not intended for use outside of the -// agent. Sent to acknowledge that a container changed states. -func (c *ECS) SubmitContainerStateChange(req *SubmitContainerStateChangeRequest) (resp *SubmitContainerStateChangeResult, err error) { - resp = &SubmitContainerStateChangeResult{} - err = c.client.Do("SubmitContainerStateChange", "POST", "/", req, resp) - return -} - -// SubmitTaskStateChange this action is only used by the Amazon EC2 -// Container Service agent, and it is not intended for use outside of the -// agent. Sent to acknowledge that a task changed states. -func (c *ECS) SubmitTaskStateChange(req *SubmitTaskStateChangeRequest) (resp *SubmitTaskStateChangeResult, err error) { - resp = &SubmitTaskStateChangeResult{} - err = c.client.Do("SubmitTaskStateChange", "POST", "/", req, resp) - return -} - -// Cluster is undocumented. -type Cluster struct { - ClusterARN aws.StringValue `query:"clusterArn" xml:"clusterArn"` - ClusterName aws.StringValue `query:"clusterName" xml:"clusterName"` - Status aws.StringValue `query:"status" xml:"status"` -} - -// Container is undocumented. -type Container struct { - ContainerARN aws.StringValue `query:"containerArn" xml:"containerArn"` - ExitCode aws.IntegerValue `query:"exitCode" xml:"exitCode"` - LastStatus aws.StringValue `query:"lastStatus" xml:"lastStatus"` - Name aws.StringValue `query:"name" xml:"name"` - NetworkBindings []NetworkBinding `query:"networkBindings.member" xml:"networkBindings>member"` - Reason aws.StringValue `query:"reason" xml:"reason"` - TaskARN aws.StringValue `query:"taskArn" xml:"taskArn"` -} - -// ContainerDefinition is undocumented. -type ContainerDefinition struct { - Command []string `query:"command.member" xml:"command>member"` - CPU aws.IntegerValue `query:"cpu" xml:"cpu"` - EntryPoint []string `query:"entryPoint.member" xml:"entryPoint>member"` - Environment []KeyValuePair `query:"environment.member" xml:"environment>member"` - Essential aws.BooleanValue `query:"essential" xml:"essential"` - Image aws.StringValue `query:"image" xml:"image"` - Links []string `query:"links.member" xml:"links>member"` - Memory aws.IntegerValue `query:"memory" xml:"memory"` - Name aws.StringValue `query:"name" xml:"name"` - PortMappings []PortMapping `query:"portMappings.member" xml:"portMappings>member"` -} - -// ContainerInstance is undocumented. -type ContainerInstance struct { - AgentConnected aws.BooleanValue `query:"agentConnected" xml:"agentConnected"` - ContainerInstanceARN aws.StringValue `query:"containerInstanceArn" xml:"containerInstanceArn"` - EC2InstanceID aws.StringValue `query:"ec2InstanceId" xml:"ec2InstanceId"` - RegisteredResources []Resource `query:"registeredResources.member" xml:"registeredResources>member"` - RemainingResources []Resource `query:"remainingResources.member" xml:"remainingResources>member"` - Status aws.StringValue `query:"status" xml:"status"` -} - -// ContainerOverride is undocumented. -type ContainerOverride struct { - Command []string `query:"command.member" xml:"command>member"` - Name aws.StringValue `query:"name" xml:"name"` -} - -// CreateClusterRequest is undocumented. -type CreateClusterRequest struct { - ClusterName aws.StringValue `query:"clusterName" xml:"clusterName"` -} - -// CreateClusterResponse is undocumented. -type CreateClusterResponse struct { - Cluster *Cluster `query:"cluster" xml:"CreateClusterResult>cluster"` -} - -// DeleteClusterRequest is undocumented. -type DeleteClusterRequest struct { - Cluster aws.StringValue `query:"cluster" xml:"cluster"` -} - -// DeleteClusterResponse is undocumented. -type DeleteClusterResponse struct { - Cluster *Cluster `query:"cluster" xml:"DeleteClusterResult>cluster"` -} - -// DeregisterContainerInstanceRequest is undocumented. -type DeregisterContainerInstanceRequest struct { - Cluster aws.StringValue `query:"cluster" xml:"cluster"` - ContainerInstance aws.StringValue `query:"containerInstance" xml:"containerInstance"` - Force aws.BooleanValue `query:"force" xml:"force"` -} - -// DeregisterContainerInstanceResponse is undocumented. -type DeregisterContainerInstanceResponse struct { - ContainerInstance *ContainerInstance `query:"containerInstance" xml:"DeregisterContainerInstanceResult>containerInstance"` -} - -// DeregisterTaskDefinitionRequest is undocumented. -type DeregisterTaskDefinitionRequest struct { - TaskDefinition aws.StringValue `query:"taskDefinition" xml:"taskDefinition"` -} - -// DeregisterTaskDefinitionResponse is undocumented. -type DeregisterTaskDefinitionResponse struct { - TaskDefinition *TaskDefinition `query:"taskDefinition" xml:"DeregisterTaskDefinitionResult>taskDefinition"` -} - -// DescribeClustersRequest is undocumented. -type DescribeClustersRequest struct { - Clusters []string `query:"clusters.member" xml:"clusters>member"` -} - -// DescribeClustersResponse is undocumented. -type DescribeClustersResponse struct { - Clusters []Cluster `query:"clusters.member" xml:"DescribeClustersResult>clusters>member"` - Failures []Failure `query:"failures.member" xml:"DescribeClustersResult>failures>member"` -} - -// DescribeContainerInstancesRequest is undocumented. -type DescribeContainerInstancesRequest struct { - Cluster aws.StringValue `query:"cluster" xml:"cluster"` - ContainerInstances []string `query:"containerInstances.member" xml:"containerInstances>member"` -} - -// DescribeContainerInstancesResponse is undocumented. -type DescribeContainerInstancesResponse struct { - ContainerInstances []ContainerInstance `query:"containerInstances.member" xml:"DescribeContainerInstancesResult>containerInstances>member"` - Failures []Failure `query:"failures.member" xml:"DescribeContainerInstancesResult>failures>member"` -} - -// DescribeTaskDefinitionRequest is undocumented. -type DescribeTaskDefinitionRequest struct { - TaskDefinition aws.StringValue `query:"taskDefinition" xml:"taskDefinition"` -} - -// DescribeTaskDefinitionResponse is undocumented. -type DescribeTaskDefinitionResponse struct { - TaskDefinition *TaskDefinition `query:"taskDefinition" xml:"DescribeTaskDefinitionResult>taskDefinition"` -} - -// DescribeTasksRequest is undocumented. -type DescribeTasksRequest struct { - Cluster aws.StringValue `query:"cluster" xml:"cluster"` - Tasks []string `query:"tasks.member" xml:"tasks>member"` -} - -// DescribeTasksResponse is undocumented. -type DescribeTasksResponse struct { - Failures []Failure `query:"failures.member" xml:"DescribeTasksResult>failures>member"` - Tasks []Task `query:"tasks.member" xml:"DescribeTasksResult>tasks>member"` -} - -// DiscoverPollEndpointRequest is undocumented. -type DiscoverPollEndpointRequest struct { - ContainerInstance aws.StringValue `query:"containerInstance" xml:"containerInstance"` -} - -// DiscoverPollEndpointResponse is undocumented. -type DiscoverPollEndpointResponse struct { - Endpoint aws.StringValue `query:"endpoint" xml:"DiscoverPollEndpointResult>endpoint"` -} - -// Failure is undocumented. -type Failure struct { - ARN aws.StringValue `query:"arn" xml:"arn"` - Reason aws.StringValue `query:"reason" xml:"reason"` -} - -// KeyValuePair is undocumented. -type KeyValuePair struct { - Name aws.StringValue `query:"name" xml:"name"` - Value aws.StringValue `query:"value" xml:"value"` -} - -// ListClustersRequest is undocumented. -type ListClustersRequest struct { - MaxResults aws.IntegerValue `query:"maxResults" xml:"maxResults"` - NextToken aws.StringValue `query:"nextToken" xml:"nextToken"` -} - -// ListClustersResponse is undocumented. -type ListClustersResponse struct { - ClusterARNs []string `query:"clusterArns.member" xml:"ListClustersResult>clusterArns>member"` - NextToken aws.StringValue `query:"nextToken" xml:"ListClustersResult>nextToken"` -} - -// ListContainerInstancesRequest is undocumented. -type ListContainerInstancesRequest struct { - Cluster aws.StringValue `query:"cluster" xml:"cluster"` - MaxResults aws.IntegerValue `query:"maxResults" xml:"maxResults"` - NextToken aws.StringValue `query:"nextToken" xml:"nextToken"` -} - -// ListContainerInstancesResponse is undocumented. -type ListContainerInstancesResponse struct { - ContainerInstanceARNs []string `query:"containerInstanceArns.member" xml:"ListContainerInstancesResult>containerInstanceArns>member"` - NextToken aws.StringValue `query:"nextToken" xml:"ListContainerInstancesResult>nextToken"` -} - -// ListTaskDefinitionsRequest is undocumented. -type ListTaskDefinitionsRequest struct { - FamilyPrefix aws.StringValue `query:"familyPrefix" xml:"familyPrefix"` - MaxResults aws.IntegerValue `query:"maxResults" xml:"maxResults"` - NextToken aws.StringValue `query:"nextToken" xml:"nextToken"` -} - -// ListTaskDefinitionsResponse is undocumented. -type ListTaskDefinitionsResponse struct { - NextToken aws.StringValue `query:"nextToken" xml:"ListTaskDefinitionsResult>nextToken"` - TaskDefinitionARNs []string `query:"taskDefinitionArns.member" xml:"ListTaskDefinitionsResult>taskDefinitionArns>member"` -} - -// ListTasksRequest is undocumented. -type ListTasksRequest struct { - Cluster aws.StringValue `query:"cluster" xml:"cluster"` - ContainerInstance aws.StringValue `query:"containerInstance" xml:"containerInstance"` - Family aws.StringValue `query:"family" xml:"family"` - MaxResults aws.IntegerValue `query:"maxResults" xml:"maxResults"` - NextToken aws.StringValue `query:"nextToken" xml:"nextToken"` -} - -// ListTasksResponse is undocumented. -type ListTasksResponse struct { - NextToken aws.StringValue `query:"nextToken" xml:"ListTasksResult>nextToken"` - TaskARNs []string `query:"taskArns.member" xml:"ListTasksResult>taskArns>member"` -} - -// NetworkBinding is undocumented. -type NetworkBinding struct { - BindIP aws.StringValue `query:"bindIP" xml:"bindIP"` - ContainerPort aws.IntegerValue `query:"containerPort" xml:"containerPort"` - HostPort aws.IntegerValue `query:"hostPort" xml:"hostPort"` -} - -// PortMapping is undocumented. -type PortMapping struct { - ContainerPort aws.IntegerValue `query:"containerPort" xml:"containerPort"` - HostPort aws.IntegerValue `query:"hostPort" xml:"hostPort"` -} - -// RegisterContainerInstanceRequest is undocumented. -type RegisterContainerInstanceRequest struct { - Cluster aws.StringValue `query:"cluster" xml:"cluster"` - InstanceIdentityDocument aws.StringValue `query:"instanceIdentityDocument" xml:"instanceIdentityDocument"` - InstanceIdentityDocumentSignature aws.StringValue `query:"instanceIdentityDocumentSignature" xml:"instanceIdentityDocumentSignature"` - TotalResources []Resource `query:"totalResources.member" xml:"totalResources>member"` -} - -// RegisterContainerInstanceResponse is undocumented. -type RegisterContainerInstanceResponse struct { - ContainerInstance *ContainerInstance `query:"containerInstance" xml:"RegisterContainerInstanceResult>containerInstance"` -} - -// RegisterTaskDefinitionRequest is undocumented. -type RegisterTaskDefinitionRequest struct { - ContainerDefinitions []ContainerDefinition `query:"containerDefinitions.member" xml:"containerDefinitions>member"` - Family aws.StringValue `query:"family" xml:"family"` -} - -// RegisterTaskDefinitionResponse is undocumented. -type RegisterTaskDefinitionResponse struct { - TaskDefinition *TaskDefinition `query:"taskDefinition" xml:"RegisterTaskDefinitionResult>taskDefinition"` -} - -// Resource is undocumented. -type Resource struct { - DoubleValue aws.DoubleValue `query:"doubleValue" xml:"doubleValue"` - IntegerValue aws.IntegerValue `query:"integerValue" xml:"integerValue"` - LongValue aws.LongValue `query:"longValue" xml:"longValue"` - Name aws.StringValue `query:"name" xml:"name"` - StringSetValue []string `query:"stringSetValue.member" xml:"stringSetValue>member"` - Type aws.StringValue `query:"type" xml:"type"` -} - -// RunTaskRequest is undocumented. -type RunTaskRequest struct { - Cluster aws.StringValue `query:"cluster" xml:"cluster"` - Count aws.IntegerValue `query:"count" xml:"count"` - Overrides *TaskOverride `query:"overrides" xml:"overrides"` - TaskDefinition aws.StringValue `query:"taskDefinition" xml:"taskDefinition"` -} - -// RunTaskResponse is undocumented. -type RunTaskResponse struct { - Failures []Failure `query:"failures.member" xml:"RunTaskResult>failures>member"` - Tasks []Task `query:"tasks.member" xml:"RunTaskResult>tasks>member"` -} - -// StartTaskRequest is undocumented. -type StartTaskRequest struct { - Cluster aws.StringValue `query:"cluster" xml:"cluster"` - ContainerInstances []string `query:"containerInstances.member" xml:"containerInstances>member"` - Overrides *TaskOverride `query:"overrides" xml:"overrides"` - TaskDefinition aws.StringValue `query:"taskDefinition" xml:"taskDefinition"` -} - -// StartTaskResponse is undocumented. -type StartTaskResponse struct { - Failures []Failure `query:"failures.member" xml:"StartTaskResult>failures>member"` - Tasks []Task `query:"tasks.member" xml:"StartTaskResult>tasks>member"` -} - -// StopTaskRequest is undocumented. -type StopTaskRequest struct { - Cluster aws.StringValue `query:"cluster" xml:"cluster"` - Task aws.StringValue `query:"task" xml:"task"` -} - -// StopTaskResponse is undocumented. -type StopTaskResponse struct { - Task *Task `query:"task" xml:"StopTaskResult>task"` -} - -// SubmitContainerStateChangeRequest is undocumented. -type SubmitContainerStateChangeRequest struct { - Cluster aws.StringValue `query:"cluster" xml:"cluster"` - ContainerName aws.StringValue `query:"containerName" xml:"containerName"` - ExitCode aws.IntegerValue `query:"exitCode" xml:"exitCode"` - NetworkBindings []NetworkBinding `query:"networkBindings.member" xml:"networkBindings>member"` - Reason aws.StringValue `query:"reason" xml:"reason"` - Status aws.StringValue `query:"status" xml:"status"` - Task aws.StringValue `query:"task" xml:"task"` -} - -// SubmitContainerStateChangeResponse is undocumented. -type SubmitContainerStateChangeResponse struct { - Acknowledgment aws.StringValue `query:"acknowledgment" xml:"SubmitContainerStateChangeResult>acknowledgment"` -} - -// SubmitTaskStateChangeRequest is undocumented. -type SubmitTaskStateChangeRequest struct { - Cluster aws.StringValue `query:"cluster" xml:"cluster"` - Reason aws.StringValue `query:"reason" xml:"reason"` - Status aws.StringValue `query:"status" xml:"status"` - Task aws.StringValue `query:"task" xml:"task"` -} - -// SubmitTaskStateChangeResponse is undocumented. -type SubmitTaskStateChangeResponse struct { - Acknowledgment aws.StringValue `query:"acknowledgment" xml:"SubmitTaskStateChangeResult>acknowledgment"` -} - -// Task is undocumented. -type Task struct { - ClusterARN aws.StringValue `query:"clusterArn" xml:"clusterArn"` - ContainerInstanceARN aws.StringValue `query:"containerInstanceArn" xml:"containerInstanceArn"` - Containers []Container `query:"containers.member" xml:"containers>member"` - DesiredStatus aws.StringValue `query:"desiredStatus" xml:"desiredStatus"` - LastStatus aws.StringValue `query:"lastStatus" xml:"lastStatus"` - Overrides *TaskOverride `query:"overrides" xml:"overrides"` - TaskARN aws.StringValue `query:"taskArn" xml:"taskArn"` - TaskDefinitionARN aws.StringValue `query:"taskDefinitionArn" xml:"taskDefinitionArn"` -} - -// TaskDefinition is undocumented. -type TaskDefinition struct { - ContainerDefinitions []ContainerDefinition `query:"containerDefinitions.member" xml:"containerDefinitions>member"` - Family aws.StringValue `query:"family" xml:"family"` - Revision aws.IntegerValue `query:"revision" xml:"revision"` - TaskDefinitionARN aws.StringValue `query:"taskDefinitionArn" xml:"taskDefinitionArn"` -} - -// TaskOverride is undocumented. -type TaskOverride struct { - ContainerOverrides []ContainerOverride `query:"containerOverrides.member" xml:"containerOverrides>member"` -} - -// CreateClusterResult is a wrapper for CreateClusterResponse. -type CreateClusterResult struct { - Cluster *Cluster `query:"cluster" xml:"CreateClusterResult>cluster"` -} - -// DeleteClusterResult is a wrapper for DeleteClusterResponse. -type DeleteClusterResult struct { - Cluster *Cluster `query:"cluster" xml:"DeleteClusterResult>cluster"` -} - -// DeregisterContainerInstanceResult is a wrapper for DeregisterContainerInstanceResponse. -type DeregisterContainerInstanceResult struct { - ContainerInstance *ContainerInstance `query:"containerInstance" xml:"DeregisterContainerInstanceResult>containerInstance"` -} - -// DeregisterTaskDefinitionResult is a wrapper for DeregisterTaskDefinitionResponse. -type DeregisterTaskDefinitionResult struct { - TaskDefinition *TaskDefinition `query:"taskDefinition" xml:"DeregisterTaskDefinitionResult>taskDefinition"` -} - -// DescribeClustersResult is a wrapper for DescribeClustersResponse. -type DescribeClustersResult struct { - Clusters []Cluster `query:"clusters.member" xml:"DescribeClustersResult>clusters>member"` - Failures []Failure `query:"failures.member" xml:"DescribeClustersResult>failures>member"` -} - -// DescribeContainerInstancesResult is a wrapper for DescribeContainerInstancesResponse. -type DescribeContainerInstancesResult struct { - ContainerInstances []ContainerInstance `query:"containerInstances.member" xml:"DescribeContainerInstancesResult>containerInstances>member"` - Failures []Failure `query:"failures.member" xml:"DescribeContainerInstancesResult>failures>member"` -} - -// DescribeTaskDefinitionResult is a wrapper for DescribeTaskDefinitionResponse. -type DescribeTaskDefinitionResult struct { - TaskDefinition *TaskDefinition `query:"taskDefinition" xml:"DescribeTaskDefinitionResult>taskDefinition"` -} - -// DescribeTasksResult is a wrapper for DescribeTasksResponse. -type DescribeTasksResult struct { - Failures []Failure `query:"failures.member" xml:"DescribeTasksResult>failures>member"` - Tasks []Task `query:"tasks.member" xml:"DescribeTasksResult>tasks>member"` -} - -// DiscoverPollEndpointResult is a wrapper for DiscoverPollEndpointResponse. -type DiscoverPollEndpointResult struct { - Endpoint aws.StringValue `query:"endpoint" xml:"DiscoverPollEndpointResult>endpoint"` -} - -// ListClustersResult is a wrapper for ListClustersResponse. -type ListClustersResult struct { - ClusterARNs []string `query:"clusterArns.member" xml:"ListClustersResult>clusterArns>member"` - NextToken aws.StringValue `query:"nextToken" xml:"ListClustersResult>nextToken"` -} - -// ListContainerInstancesResult is a wrapper for ListContainerInstancesResponse. -type ListContainerInstancesResult struct { - ContainerInstanceARNs []string `query:"containerInstanceArns.member" xml:"ListContainerInstancesResult>containerInstanceArns>member"` - NextToken aws.StringValue `query:"nextToken" xml:"ListContainerInstancesResult>nextToken"` -} - -// ListTaskDefinitionsResult is a wrapper for ListTaskDefinitionsResponse. -type ListTaskDefinitionsResult struct { - NextToken aws.StringValue `query:"nextToken" xml:"ListTaskDefinitionsResult>nextToken"` - TaskDefinitionARNs []string `query:"taskDefinitionArns.member" xml:"ListTaskDefinitionsResult>taskDefinitionArns>member"` -} - -// ListTasksResult is a wrapper for ListTasksResponse. -type ListTasksResult struct { - NextToken aws.StringValue `query:"nextToken" xml:"ListTasksResult>nextToken"` - TaskARNs []string `query:"taskArns.member" xml:"ListTasksResult>taskArns>member"` -} - -// RegisterContainerInstanceResult is a wrapper for RegisterContainerInstanceResponse. -type RegisterContainerInstanceResult struct { - ContainerInstance *ContainerInstance `query:"containerInstance" xml:"RegisterContainerInstanceResult>containerInstance"` -} - -// RegisterTaskDefinitionResult is a wrapper for RegisterTaskDefinitionResponse. -type RegisterTaskDefinitionResult struct { - TaskDefinition *TaskDefinition `query:"taskDefinition" xml:"RegisterTaskDefinitionResult>taskDefinition"` -} - -// RunTaskResult is a wrapper for RunTaskResponse. -type RunTaskResult struct { - Failures []Failure `query:"failures.member" xml:"RunTaskResult>failures>member"` - Tasks []Task `query:"tasks.member" xml:"RunTaskResult>tasks>member"` -} - -// StartTaskResult is a wrapper for StartTaskResponse. -type StartTaskResult struct { - Failures []Failure `query:"failures.member" xml:"StartTaskResult>failures>member"` - Tasks []Task `query:"tasks.member" xml:"StartTaskResult>tasks>member"` -} - -// StopTaskResult is a wrapper for StopTaskResponse. -type StopTaskResult struct { - Task *Task `query:"task" xml:"StopTaskResult>task"` -} - -// SubmitContainerStateChangeResult is a wrapper for SubmitContainerStateChangeResponse. -type SubmitContainerStateChangeResult struct { - Acknowledgment aws.StringValue `query:"acknowledgment" xml:"SubmitContainerStateChangeResult>acknowledgment"` -} - -// SubmitTaskStateChangeResult is a wrapper for SubmitTaskStateChangeResponse. -type SubmitTaskStateChangeResult struct { - Acknowledgment aws.StringValue `query:"acknowledgment" xml:"SubmitTaskStateChangeResult>acknowledgment"` -} - -// avoid errors if the packages aren't referenced -var _ time.Time - -var _ xml.Decoder -var _ = io.EOF diff --git a/src/github.com/getlantern/aws-sdk-go/gen/elasticache/elasticache.go b/src/github.com/getlantern/aws-sdk-go/gen/elasticache/elasticache.go deleted file mode 100644 index 7411afb3a0..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/gen/elasticache/elasticache.go +++ /dev/null @@ -1,1253 +0,0 @@ -// THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. - -// Package elasticcache provides a client for Amazon ElastiCache. -package elasticcache - -import ( - "net/http" - "time" - - "github.com/awslabs/aws-sdk-go/aws" - "github.com/awslabs/aws-sdk-go/gen/endpoints" -) - -import ( - "encoding/xml" - "io" -) - -// ElasticCache is a client for Amazon ElastiCache. -type ElasticCache struct { - client *aws.QueryClient -} - -// New returns a new ElasticCache client. -func New(creds aws.CredentialsProvider, region string, client *http.Client) *ElasticCache { - if client == nil { - client = http.DefaultClient - } - - endpoint, service, region := endpoints.Lookup("elasticache", region) - - return &ElasticCache{ - client: &aws.QueryClient{ - Context: aws.Context{ - Credentials: creds, - Service: service, - Region: region, - }, - Client: client, - Endpoint: endpoint, - APIVersion: "2014-09-30", - }, - } -} - -// AuthorizeCacheSecurityGroupIngress the -// AuthorizeCacheSecurityGroupIngress operation allows network ingress to a -// cache security group. Applications using ElastiCache must be running on -// Amazon EC2, and Amazon EC2 security groups are used as the authorization -// mechanism. -func (c *ElasticCache) AuthorizeCacheSecurityGroupIngress(req *AuthorizeCacheSecurityGroupIngressMessage) (resp *AuthorizeCacheSecurityGroupIngressResult, err error) { - resp = &AuthorizeCacheSecurityGroupIngressResult{} - err = c.client.Do("AuthorizeCacheSecurityGroupIngress", "POST", "/", req, resp) - return -} - -// CopySnapshot the CopySnapshot operation makes a copy of an existing -// snapshot. -func (c *ElasticCache) CopySnapshot(req *CopySnapshotMessage) (resp *CopySnapshotResult, err error) { - resp = &CopySnapshotResult{} - err = c.client.Do("CopySnapshot", "POST", "/", req, resp) - return -} - -// CreateCacheCluster the CreateCacheCluster operation creates a cache -// cluster. All nodes in the cache cluster run the same protocol-compliant -// cache engine software, either Memcached or Redis. -func (c *ElasticCache) CreateCacheCluster(req *CreateCacheClusterMessage) (resp *CreateCacheClusterResult, err error) { - resp = &CreateCacheClusterResult{} - err = c.client.Do("CreateCacheCluster", "POST", "/", req, resp) - return -} - -// CreateCacheParameterGroup the CreateCacheParameterGroup operation -// creates a new cache parameter group. A cache parameter group is a -// collection of parameters that you apply to all of the nodes in a cache -// cluster. -func (c *ElasticCache) CreateCacheParameterGroup(req *CreateCacheParameterGroupMessage) (resp *CreateCacheParameterGroupResult, err error) { - resp = &CreateCacheParameterGroupResult{} - err = c.client.Do("CreateCacheParameterGroup", "POST", "/", req, resp) - return -} - -// CreateCacheSecurityGroup the CreateCacheSecurityGroup operation creates -// a new cache security group. Use a cache security group to control access -// to one or more cache clusters. Cache security groups are only used when -// you are creating a cache cluster outside of an Amazon Virtual Private -// Cloud If you are creating a cache cluster inside of a use a cache subnet -// group instead. For more information, see CreateCacheSubnetGroup -func (c *ElasticCache) CreateCacheSecurityGroup(req *CreateCacheSecurityGroupMessage) (resp *CreateCacheSecurityGroupResult, err error) { - resp = &CreateCacheSecurityGroupResult{} - err = c.client.Do("CreateCacheSecurityGroup", "POST", "/", req, resp) - return -} - -// CreateCacheSubnetGroup the CreateCacheSubnetGroup operation creates a -// new cache subnet group. Use this parameter only when you are creating a -// cluster in an Amazon Virtual Private Cloud -func (c *ElasticCache) CreateCacheSubnetGroup(req *CreateCacheSubnetGroupMessage) (resp *CreateCacheSubnetGroupResult, err error) { - resp = &CreateCacheSubnetGroupResult{} - err = c.client.Do("CreateCacheSubnetGroup", "POST", "/", req, resp) - return -} - -// CreateReplicationGroup the CreateReplicationGroup operation creates a -// replication group. A replication group is a collection of cache -// clusters, where one of the cache clusters is a read/write primary and -// the others are read-only replicas. Writes to the primary are -// automatically propagated to the replicas. When you create a replication -// group, you must specify an existing cache cluster that is in the primary -// role. When the replication group has been successfully created, you can -// add one or more read replica replicas to it, up to a total of five read -// replicas. Note: This action is valid only for Redis. -func (c *ElasticCache) CreateReplicationGroup(req *CreateReplicationGroupMessage) (resp *CreateReplicationGroupResult, err error) { - resp = &CreateReplicationGroupResult{} - err = c.client.Do("CreateReplicationGroup", "POST", "/", req, resp) - return -} - -// CreateSnapshot the CreateSnapshot operation creates a copy of an entire -// cache cluster at a specific moment in time. -func (c *ElasticCache) CreateSnapshot(req *CreateSnapshotMessage) (resp *CreateSnapshotResult, err error) { - resp = &CreateSnapshotResult{} - err = c.client.Do("CreateSnapshot", "POST", "/", req, resp) - return -} - -// DeleteCacheCluster the DeleteCacheCluster operation deletes a previously -// provisioned cache cluster. DeleteCacheCluster deletes all associated -// cache nodes, node endpoints and the cache cluster itself. When you -// receive a successful response from this operation, Amazon ElastiCache -// immediately begins deleting the cache cluster; you cannot cancel or -// revert this operation. This API cannot be used to delete a cache cluster -// that is the last read replica of a replication group that has automatic -// failover mode enabled. -func (c *ElasticCache) DeleteCacheCluster(req *DeleteCacheClusterMessage) (resp *DeleteCacheClusterResult, err error) { - resp = &DeleteCacheClusterResult{} - err = c.client.Do("DeleteCacheCluster", "POST", "/", req, resp) - return -} - -// DeleteCacheParameterGroup the DeleteCacheParameterGroup operation -// deletes the specified cache parameter group. You cannot delete a cache -// parameter group if it is associated with any cache clusters. -func (c *ElasticCache) DeleteCacheParameterGroup(req *DeleteCacheParameterGroupMessage) (err error) { - // NRE - err = c.client.Do("DeleteCacheParameterGroup", "POST", "/", req, nil) - return -} - -// DeleteCacheSecurityGroup the DeleteCacheSecurityGroup operation deletes -// a cache security group. -func (c *ElasticCache) DeleteCacheSecurityGroup(req *DeleteCacheSecurityGroupMessage) (err error) { - // NRE - err = c.client.Do("DeleteCacheSecurityGroup", "POST", "/", req, nil) - return -} - -// DeleteCacheSubnetGroup the DeleteCacheSubnetGroup operation deletes a -// cache subnet group. -func (c *ElasticCache) DeleteCacheSubnetGroup(req *DeleteCacheSubnetGroupMessage) (err error) { - // NRE - err = c.client.Do("DeleteCacheSubnetGroup", "POST", "/", req, nil) - return -} - -// DeleteReplicationGroup the DeleteReplicationGroup operation deletes an -// existing cluster. By default, this operation deletes the entire cluster, -// including the primary node group and all of the read replicas. You can -// optionally delete only the read replicas, while retaining the primary -// node group. When you receive a successful response from this operation, -// Amazon ElastiCache immediately begins deleting the selected resources; -// you cannot cancel or revert this operation. -func (c *ElasticCache) DeleteReplicationGroup(req *DeleteReplicationGroupMessage) (resp *DeleteReplicationGroupResult, err error) { - resp = &DeleteReplicationGroupResult{} - err = c.client.Do("DeleteReplicationGroup", "POST", "/", req, resp) - return -} - -// DeleteSnapshot the DeleteSnapshot operation deletes an existing -// snapshot. When you receive a successful response from this operation, -// ElastiCache immediately begins deleting the snapshot; you cannot cancel -// or revert this operation. -func (c *ElasticCache) DeleteSnapshot(req *DeleteSnapshotMessage) (resp *DeleteSnapshotResult, err error) { - resp = &DeleteSnapshotResult{} - err = c.client.Do("DeleteSnapshot", "POST", "/", req, resp) - return -} - -// DescribeCacheClusters the DescribeCacheClusters operation returns -// information about all provisioned cache clusters if no cache cluster -// identifier is specified, or about a specific cache cluster if a cache -// cluster identifier is supplied. By default, abbreviated information -// about the cache clusters(s) will be returned. You can use the optional -// ShowDetails flag to retrieve detailed information about the cache nodes -// associated with the cache clusters. These details include the DNS -// address and port for the cache node endpoint. If the cluster is in the -// state, only cluster level information will be displayed until all of the -// nodes are successfully provisioned. If the cluster is in the state, only -// cluster level information will be displayed. If cache nodes are -// currently being added to the cache cluster, node endpoint information -// and creation time for the additional nodes will not be displayed until -// they are completely provisioned. When the cache cluster state is -// available , the cluster is ready for use. If cache nodes are currently -// being removed from the cache cluster, no endpoint information for the -// removed nodes is displayed. -func (c *ElasticCache) DescribeCacheClusters(req *DescribeCacheClustersMessage) (resp *DescribeCacheClustersResult, err error) { - resp = &DescribeCacheClustersResult{} - err = c.client.Do("DescribeCacheClusters", "POST", "/", req, resp) - return -} - -// DescribeCacheEngineVersions the DescribeCacheEngineVersions operation -// returns a list of the available cache engines and their versions. -func (c *ElasticCache) DescribeCacheEngineVersions(req *DescribeCacheEngineVersionsMessage) (resp *DescribeCacheEngineVersionsResult, err error) { - resp = &DescribeCacheEngineVersionsResult{} - err = c.client.Do("DescribeCacheEngineVersions", "POST", "/", req, resp) - return -} - -// DescribeCacheParameterGroups the DescribeCacheParameterGroups operation -// returns a list of cache parameter group descriptions. If a cache -// parameter group name is specified, the list will contain only the -// descriptions for that group. -func (c *ElasticCache) DescribeCacheParameterGroups(req *DescribeCacheParameterGroupsMessage) (resp *DescribeCacheParameterGroupsResult, err error) { - resp = &DescribeCacheParameterGroupsResult{} - err = c.client.Do("DescribeCacheParameterGroups", "POST", "/", req, resp) - return -} - -// DescribeCacheParameters the DescribeCacheParameters operation returns -// the detailed parameter list for a particular cache parameter group. -func (c *ElasticCache) DescribeCacheParameters(req *DescribeCacheParametersMessage) (resp *DescribeCacheParametersResult, err error) { - resp = &DescribeCacheParametersResult{} - err = c.client.Do("DescribeCacheParameters", "POST", "/", req, resp) - return -} - -// DescribeCacheSecurityGroups the DescribeCacheSecurityGroups operation -// returns a list of cache security group descriptions. If a cache security -// group name is specified, the list will contain only the description of -// that group. -func (c *ElasticCache) DescribeCacheSecurityGroups(req *DescribeCacheSecurityGroupsMessage) (resp *DescribeCacheSecurityGroupsResult, err error) { - resp = &DescribeCacheSecurityGroupsResult{} - err = c.client.Do("DescribeCacheSecurityGroups", "POST", "/", req, resp) - return -} - -// DescribeCacheSubnetGroups the DescribeCacheSubnetGroups operation -// returns a list of cache subnet group descriptions. If a subnet group -// name is specified, the list will contain only the description of that -// group. -func (c *ElasticCache) DescribeCacheSubnetGroups(req *DescribeCacheSubnetGroupsMessage) (resp *DescribeCacheSubnetGroupsResult, err error) { - resp = &DescribeCacheSubnetGroupsResult{} - err = c.client.Do("DescribeCacheSubnetGroups", "POST", "/", req, resp) - return -} - -// DescribeEngineDefaultParameters the DescribeEngineDefaultParameters -// operation returns the default engine and system parameter information -// for the specified cache engine. -func (c *ElasticCache) DescribeEngineDefaultParameters(req *DescribeEngineDefaultParametersMessage) (resp *DescribeEngineDefaultParametersResult, err error) { - resp = &DescribeEngineDefaultParametersResult{} - err = c.client.Do("DescribeEngineDefaultParameters", "POST", "/", req, resp) - return -} - -// DescribeEvents the DescribeEvents operation returns events related to -// cache clusters, cache security groups, and cache parameter groups. You -// can obtain events specific to a particular cache cluster, cache security -// group, or cache parameter group by providing the name as a parameter. By -// default, only the events occurring within the last hour are returned; -// however, you can retrieve up to 14 days' worth of events if necessary. -func (c *ElasticCache) DescribeEvents(req *DescribeEventsMessage) (resp *DescribeEventsResult, err error) { - resp = &DescribeEventsResult{} - err = c.client.Do("DescribeEvents", "POST", "/", req, resp) - return -} - -// DescribeReplicationGroups the DescribeReplicationGroups operation -// returns information about a particular replication group. If no -// identifier is specified, DescribeReplicationGroups returns information -// about all replication groups. -func (c *ElasticCache) DescribeReplicationGroups(req *DescribeReplicationGroupsMessage) (resp *DescribeReplicationGroupsResult, err error) { - resp = &DescribeReplicationGroupsResult{} - err = c.client.Do("DescribeReplicationGroups", "POST", "/", req, resp) - return -} - -// DescribeReservedCacheNodes the DescribeReservedCacheNodes operation -// returns information about reserved cache nodes for this account, or -// about a specified reserved cache node. -func (c *ElasticCache) DescribeReservedCacheNodes(req *DescribeReservedCacheNodesMessage) (resp *DescribeReservedCacheNodesResult, err error) { - resp = &DescribeReservedCacheNodesResult{} - err = c.client.Do("DescribeReservedCacheNodes", "POST", "/", req, resp) - return -} - -// DescribeReservedCacheNodesOfferings the -// DescribeReservedCacheNodesOfferings operation lists available reserved -// cache node offerings. -func (c *ElasticCache) DescribeReservedCacheNodesOfferings(req *DescribeReservedCacheNodesOfferingsMessage) (resp *DescribeReservedCacheNodesOfferingsResult, err error) { - resp = &DescribeReservedCacheNodesOfferingsResult{} - err = c.client.Do("DescribeReservedCacheNodesOfferings", "POST", "/", req, resp) - return -} - -// DescribeSnapshots the DescribeSnapshots operation returns information -// about cache cluster snapshots. By default, DescribeSnapshots lists all -// of your snapshots; it can optionally describe a single snapshot, or just -// the snapshots associated with a particular cache cluster. -func (c *ElasticCache) DescribeSnapshots(req *DescribeSnapshotsMessage) (resp *DescribeSnapshotsResult, err error) { - resp = &DescribeSnapshotsResult{} - err = c.client.Do("DescribeSnapshots", "POST", "/", req, resp) - return -} - -// ModifyCacheCluster the ModifyCacheCluster operation modifies the -// settings for a cache cluster. You can use this operation to change one -// or more cluster configuration parameters by specifying the parameters -// and the new values. -func (c *ElasticCache) ModifyCacheCluster(req *ModifyCacheClusterMessage) (resp *ModifyCacheClusterResult, err error) { - resp = &ModifyCacheClusterResult{} - err = c.client.Do("ModifyCacheCluster", "POST", "/", req, resp) - return -} - -// ModifyCacheParameterGroup the ModifyCacheParameterGroup operation -// modifies the parameters of a cache parameter group. You can modify up to -// 20 parameters in a single request by submitting a list parameter name -// and value pairs. -func (c *ElasticCache) ModifyCacheParameterGroup(req *ModifyCacheParameterGroupMessage) (resp *ModifyCacheParameterGroupResult, err error) { - resp = &ModifyCacheParameterGroupResult{} - err = c.client.Do("ModifyCacheParameterGroup", "POST", "/", req, resp) - return -} - -// ModifyCacheSubnetGroup the ModifyCacheSubnetGroup operation modifies an -// existing cache subnet group. -func (c *ElasticCache) ModifyCacheSubnetGroup(req *ModifyCacheSubnetGroupMessage) (resp *ModifyCacheSubnetGroupResult, err error) { - resp = &ModifyCacheSubnetGroupResult{} - err = c.client.Do("ModifyCacheSubnetGroup", "POST", "/", req, resp) - return -} - -// ModifyReplicationGroup the ModifyReplicationGroup operation modifies the -// settings for a replication group. -func (c *ElasticCache) ModifyReplicationGroup(req *ModifyReplicationGroupMessage) (resp *ModifyReplicationGroupResult, err error) { - resp = &ModifyReplicationGroupResult{} - err = c.client.Do("ModifyReplicationGroup", "POST", "/", req, resp) - return -} - -// PurchaseReservedCacheNodesOffering the -// PurchaseReservedCacheNodesOffering operation allows you to purchase a -// reserved cache node offering. -func (c *ElasticCache) PurchaseReservedCacheNodesOffering(req *PurchaseReservedCacheNodesOfferingMessage) (resp *PurchaseReservedCacheNodesOfferingResult, err error) { - resp = &PurchaseReservedCacheNodesOfferingResult{} - err = c.client.Do("PurchaseReservedCacheNodesOffering", "POST", "/", req, resp) - return -} - -// RebootCacheCluster the RebootCacheCluster operation reboots some, or -// all, of the cache nodes within a provisioned cache cluster. This API -// will apply any modified cache parameter groups to the cache cluster. The -// reboot action takes place as soon as possible, and results in a -// momentary outage to the cache cluster. During the reboot, the cache -// cluster status is set to The reboot causes the contents of the cache -// (for each cache node being rebooted) to be lost. When the reboot is -// complete, a cache cluster event is created. -func (c *ElasticCache) RebootCacheCluster(req *RebootCacheClusterMessage) (resp *RebootCacheClusterResult, err error) { - resp = &RebootCacheClusterResult{} - err = c.client.Do("RebootCacheCluster", "POST", "/", req, resp) - return -} - -// ResetCacheParameterGroup the ResetCacheParameterGroup operation modifies -// the parameters of a cache parameter group to the engine or system -// default value. You can reset specific parameters by submitting a list of -// parameter names. To reset the entire cache parameter group, specify the -// ResetAllParameters and CacheParameterGroupName parameters. -func (c *ElasticCache) ResetCacheParameterGroup(req *ResetCacheParameterGroupMessage) (resp *ResetCacheParameterGroupResult, err error) { - resp = &ResetCacheParameterGroupResult{} - err = c.client.Do("ResetCacheParameterGroup", "POST", "/", req, resp) - return -} - -// RevokeCacheSecurityGroupIngress the RevokeCacheSecurityGroupIngress -// operation revokes ingress from a cache security group. Use this -// operation to disallow access from an Amazon EC2 security group that had -// been previously authorized. -func (c *ElasticCache) RevokeCacheSecurityGroupIngress(req *RevokeCacheSecurityGroupIngressMessage) (resp *RevokeCacheSecurityGroupIngressResult, err error) { - resp = &RevokeCacheSecurityGroupIngressResult{} - err = c.client.Do("RevokeCacheSecurityGroupIngress", "POST", "/", req, resp) - return -} - -// Possible values for ElasticCache. -const ( - AZModeCrossAz = "cross-az" - AZModeSingleAz = "single-az" -) - -// AuthorizeCacheSecurityGroupIngressMessage is undocumented. -type AuthorizeCacheSecurityGroupIngressMessage struct { - CacheSecurityGroupName aws.StringValue `query:"CacheSecurityGroupName" xml:"CacheSecurityGroupName"` - EC2SecurityGroupName aws.StringValue `query:"EC2SecurityGroupName" xml:"EC2SecurityGroupName"` - EC2SecurityGroupOwnerID aws.StringValue `query:"EC2SecurityGroupOwnerId" xml:"EC2SecurityGroupOwnerId"` -} - -// AuthorizeCacheSecurityGroupIngressResult is undocumented. -type AuthorizeCacheSecurityGroupIngressResult struct { - CacheSecurityGroup *CacheSecurityGroup `query:"CacheSecurityGroup" xml:"AuthorizeCacheSecurityGroupIngressResult>CacheSecurityGroup"` -} - -// Possible values for ElasticCache. -const ( - AutomaticFailoverStatusDisabled = "disabled" - AutomaticFailoverStatusDisabling = "disabling" - AutomaticFailoverStatusEnabled = "enabled" - AutomaticFailoverStatusEnabling = "enabling" -) - -// AvailabilityZone is undocumented. -type AvailabilityZone struct { - Name aws.StringValue `query:"Name" xml:"Name"` -} - -// CacheCluster is undocumented. -type CacheCluster struct { - AutoMinorVersionUpgrade aws.BooleanValue `query:"AutoMinorVersionUpgrade" xml:"AutoMinorVersionUpgrade"` - CacheClusterCreateTime time.Time `query:"CacheClusterCreateTime" xml:"CacheClusterCreateTime"` - CacheClusterID aws.StringValue `query:"CacheClusterId" xml:"CacheClusterId"` - CacheClusterStatus aws.StringValue `query:"CacheClusterStatus" xml:"CacheClusterStatus"` - CacheNodeType aws.StringValue `query:"CacheNodeType" xml:"CacheNodeType"` - CacheNodes []CacheNode `query:"CacheNodes.member" xml:"CacheNodes>CacheNode"` - CacheParameterGroup *CacheParameterGroupStatus `query:"CacheParameterGroup" xml:"CacheParameterGroup"` - CacheSecurityGroups []CacheSecurityGroupMembership `query:"CacheSecurityGroups.member" xml:"CacheSecurityGroups>CacheSecurityGroup"` - CacheSubnetGroupName aws.StringValue `query:"CacheSubnetGroupName" xml:"CacheSubnetGroupName"` - ClientDownloadLandingPage aws.StringValue `query:"ClientDownloadLandingPage" xml:"ClientDownloadLandingPage"` - ConfigurationEndpoint *Endpoint `query:"ConfigurationEndpoint" xml:"ConfigurationEndpoint"` - Engine aws.StringValue `query:"Engine" xml:"Engine"` - EngineVersion aws.StringValue `query:"EngineVersion" xml:"EngineVersion"` - NotificationConfiguration *NotificationConfiguration `query:"NotificationConfiguration" xml:"NotificationConfiguration"` - NumCacheNodes aws.IntegerValue `query:"NumCacheNodes" xml:"NumCacheNodes"` - PendingModifiedValues *PendingModifiedValues `query:"PendingModifiedValues" xml:"PendingModifiedValues"` - PreferredAvailabilityZone aws.StringValue `query:"PreferredAvailabilityZone" xml:"PreferredAvailabilityZone"` - PreferredMaintenanceWindow aws.StringValue `query:"PreferredMaintenanceWindow" xml:"PreferredMaintenanceWindow"` - ReplicationGroupID aws.StringValue `query:"ReplicationGroupId" xml:"ReplicationGroupId"` - SecurityGroups []SecurityGroupMembership `query:"SecurityGroups.member" xml:"SecurityGroups>member"` - SnapshotRetentionLimit aws.IntegerValue `query:"SnapshotRetentionLimit" xml:"SnapshotRetentionLimit"` - SnapshotWindow aws.StringValue `query:"SnapshotWindow" xml:"SnapshotWindow"` -} - -// CacheClusterMessage is undocumented. -type CacheClusterMessage struct { - CacheClusters []CacheCluster `query:"CacheClusters.member" xml:"DescribeCacheClustersResult>CacheClusters>CacheCluster"` - Marker aws.StringValue `query:"Marker" xml:"DescribeCacheClustersResult>Marker"` -} - -// CacheEngineVersion is undocumented. -type CacheEngineVersion struct { - CacheEngineDescription aws.StringValue `query:"CacheEngineDescription" xml:"CacheEngineDescription"` - CacheEngineVersionDescription aws.StringValue `query:"CacheEngineVersionDescription" xml:"CacheEngineVersionDescription"` - CacheParameterGroupFamily aws.StringValue `query:"CacheParameterGroupFamily" xml:"CacheParameterGroupFamily"` - Engine aws.StringValue `query:"Engine" xml:"Engine"` - EngineVersion aws.StringValue `query:"EngineVersion" xml:"EngineVersion"` -} - -// CacheEngineVersionMessage is undocumented. -type CacheEngineVersionMessage struct { - CacheEngineVersions []CacheEngineVersion `query:"CacheEngineVersions.member" xml:"DescribeCacheEngineVersionsResult>CacheEngineVersions>CacheEngineVersion"` - Marker aws.StringValue `query:"Marker" xml:"DescribeCacheEngineVersionsResult>Marker"` -} - -// CacheNode is undocumented. -type CacheNode struct { - CacheNodeCreateTime time.Time `query:"CacheNodeCreateTime" xml:"CacheNodeCreateTime"` - CacheNodeID aws.StringValue `query:"CacheNodeId" xml:"CacheNodeId"` - CacheNodeStatus aws.StringValue `query:"CacheNodeStatus" xml:"CacheNodeStatus"` - CustomerAvailabilityZone aws.StringValue `query:"CustomerAvailabilityZone" xml:"CustomerAvailabilityZone"` - Endpoint *Endpoint `query:"Endpoint" xml:"Endpoint"` - ParameterGroupStatus aws.StringValue `query:"ParameterGroupStatus" xml:"ParameterGroupStatus"` - SourceCacheNodeID aws.StringValue `query:"SourceCacheNodeId" xml:"SourceCacheNodeId"` -} - -// CacheNodeTypeSpecificParameter is undocumented. -type CacheNodeTypeSpecificParameter struct { - AllowedValues aws.StringValue `query:"AllowedValues" xml:"AllowedValues"` - CacheNodeTypeSpecificValues []CacheNodeTypeSpecificValue `query:"CacheNodeTypeSpecificValues.member" xml:"CacheNodeTypeSpecificValues>CacheNodeTypeSpecificValue"` - DataType aws.StringValue `query:"DataType" xml:"DataType"` - Description aws.StringValue `query:"Description" xml:"Description"` - IsModifiable aws.BooleanValue `query:"IsModifiable" xml:"IsModifiable"` - MinimumEngineVersion aws.StringValue `query:"MinimumEngineVersion" xml:"MinimumEngineVersion"` - ParameterName aws.StringValue `query:"ParameterName" xml:"ParameterName"` - Source aws.StringValue `query:"Source" xml:"Source"` -} - -// CacheNodeTypeSpecificValue is undocumented. -type CacheNodeTypeSpecificValue struct { - CacheNodeType aws.StringValue `query:"CacheNodeType" xml:"CacheNodeType"` - Value aws.StringValue `query:"Value" xml:"Value"` -} - -// CacheParameterGroup is undocumented. -type CacheParameterGroup struct { - CacheParameterGroupFamily aws.StringValue `query:"CacheParameterGroupFamily" xml:"CacheParameterGroupFamily"` - CacheParameterGroupName aws.StringValue `query:"CacheParameterGroupName" xml:"CacheParameterGroupName"` - Description aws.StringValue `query:"Description" xml:"Description"` -} - -// CacheParameterGroupDetails is undocumented. -type CacheParameterGroupDetails struct { - CacheNodeTypeSpecificParameters []CacheNodeTypeSpecificParameter `query:"CacheNodeTypeSpecificParameters.member" xml:"DescribeCacheParametersResult>CacheNodeTypeSpecificParameters>CacheNodeTypeSpecificParameter"` - Marker aws.StringValue `query:"Marker" xml:"DescribeCacheParametersResult>Marker"` - Parameters []Parameter `query:"Parameters.member" xml:"DescribeCacheParametersResult>Parameters>Parameter"` -} - -// CacheParameterGroupNameMessage is undocumented. -type CacheParameterGroupNameMessage struct { - CacheParameterGroupName aws.StringValue `query:"CacheParameterGroupName" xml:"CacheParameterGroupName"` -} - -// CacheParameterGroupStatus is undocumented. -type CacheParameterGroupStatus struct { - CacheNodeIDsToReboot []string `query:"CacheNodeIdsToReboot.member" xml:"CacheNodeIdsToReboot>CacheNodeId"` - CacheParameterGroupName aws.StringValue `query:"CacheParameterGroupName" xml:"CacheParameterGroupName"` - ParameterApplyStatus aws.StringValue `query:"ParameterApplyStatus" xml:"ParameterApplyStatus"` -} - -// CacheParameterGroupsMessage is undocumented. -type CacheParameterGroupsMessage struct { - CacheParameterGroups []CacheParameterGroup `query:"CacheParameterGroups.member" xml:"DescribeCacheParameterGroupsResult>CacheParameterGroups>CacheParameterGroup"` - Marker aws.StringValue `query:"Marker" xml:"DescribeCacheParameterGroupsResult>Marker"` -} - -// CacheSecurityGroup is undocumented. -type CacheSecurityGroup struct { - CacheSecurityGroupName aws.StringValue `query:"CacheSecurityGroupName" xml:"CacheSecurityGroupName"` - Description aws.StringValue `query:"Description" xml:"Description"` - EC2SecurityGroups []EC2SecurityGroup `query:"EC2SecurityGroups.member" xml:"EC2SecurityGroups>EC2SecurityGroup"` - OwnerID aws.StringValue `query:"OwnerId" xml:"OwnerId"` -} - -// CacheSecurityGroupMembership is undocumented. -type CacheSecurityGroupMembership struct { - CacheSecurityGroupName aws.StringValue `query:"CacheSecurityGroupName" xml:"CacheSecurityGroupName"` - Status aws.StringValue `query:"Status" xml:"Status"` -} - -// CacheSecurityGroupMessage is undocumented. -type CacheSecurityGroupMessage struct { - CacheSecurityGroups []CacheSecurityGroup `query:"CacheSecurityGroups.member" xml:"DescribeCacheSecurityGroupsResult>CacheSecurityGroups>CacheSecurityGroup"` - Marker aws.StringValue `query:"Marker" xml:"DescribeCacheSecurityGroupsResult>Marker"` -} - -// CacheSubnetGroup is undocumented. -type CacheSubnetGroup struct { - CacheSubnetGroupDescription aws.StringValue `query:"CacheSubnetGroupDescription" xml:"CacheSubnetGroupDescription"` - CacheSubnetGroupName aws.StringValue `query:"CacheSubnetGroupName" xml:"CacheSubnetGroupName"` - Subnets []Subnet `query:"Subnets.member" xml:"Subnets>Subnet"` - VPCID aws.StringValue `query:"VpcId" xml:"VpcId"` -} - -// CacheSubnetGroupMessage is undocumented. -type CacheSubnetGroupMessage struct { - CacheSubnetGroups []CacheSubnetGroup `query:"CacheSubnetGroups.member" xml:"DescribeCacheSubnetGroupsResult>CacheSubnetGroups>CacheSubnetGroup"` - Marker aws.StringValue `query:"Marker" xml:"DescribeCacheSubnetGroupsResult>Marker"` -} - -// CopySnapshotMessage is undocumented. -type CopySnapshotMessage struct { - SourceSnapshotName aws.StringValue `query:"SourceSnapshotName" xml:"SourceSnapshotName"` - TargetSnapshotName aws.StringValue `query:"TargetSnapshotName" xml:"TargetSnapshotName"` -} - -// CopySnapshotResult is undocumented. -type CopySnapshotResult struct { - Snapshot *Snapshot `query:"Snapshot" xml:"CopySnapshotResult>Snapshot"` -} - -// CreateCacheClusterMessage is undocumented. -type CreateCacheClusterMessage struct { - AZMode aws.StringValue `query:"AZMode" xml:"AZMode"` - AutoMinorVersionUpgrade aws.BooleanValue `query:"AutoMinorVersionUpgrade" xml:"AutoMinorVersionUpgrade"` - CacheClusterID aws.StringValue `query:"CacheClusterId" xml:"CacheClusterId"` - CacheNodeType aws.StringValue `query:"CacheNodeType" xml:"CacheNodeType"` - CacheParameterGroupName aws.StringValue `query:"CacheParameterGroupName" xml:"CacheParameterGroupName"` - CacheSecurityGroupNames []string `query:"CacheSecurityGroupNames.member" xml:"CacheSecurityGroupNames>CacheSecurityGroupName"` - CacheSubnetGroupName aws.StringValue `query:"CacheSubnetGroupName" xml:"CacheSubnetGroupName"` - Engine aws.StringValue `query:"Engine" xml:"Engine"` - EngineVersion aws.StringValue `query:"EngineVersion" xml:"EngineVersion"` - NotificationTopicARN aws.StringValue `query:"NotificationTopicArn" xml:"NotificationTopicArn"` - NumCacheNodes aws.IntegerValue `query:"NumCacheNodes" xml:"NumCacheNodes"` - Port aws.IntegerValue `query:"Port" xml:"Port"` - PreferredAvailabilityZone aws.StringValue `query:"PreferredAvailabilityZone" xml:"PreferredAvailabilityZone"` - PreferredAvailabilityZones []string `query:"PreferredAvailabilityZones.member" xml:"PreferredAvailabilityZones>PreferredAvailabilityZone"` - PreferredMaintenanceWindow aws.StringValue `query:"PreferredMaintenanceWindow" xml:"PreferredMaintenanceWindow"` - ReplicationGroupID aws.StringValue `query:"ReplicationGroupId" xml:"ReplicationGroupId"` - SecurityGroupIDs []string `query:"SecurityGroupIds.member" xml:"SecurityGroupIds>SecurityGroupId"` - SnapshotARNs []string `query:"SnapshotArns.member" xml:"SnapshotArns>SnapshotArn"` - SnapshotName aws.StringValue `query:"SnapshotName" xml:"SnapshotName"` - SnapshotRetentionLimit aws.IntegerValue `query:"SnapshotRetentionLimit" xml:"SnapshotRetentionLimit"` - SnapshotWindow aws.StringValue `query:"SnapshotWindow" xml:"SnapshotWindow"` -} - -// CreateCacheClusterResult is undocumented. -type CreateCacheClusterResult struct { - CacheCluster *CacheCluster `query:"CacheCluster" xml:"CreateCacheClusterResult>CacheCluster"` -} - -// CreateCacheParameterGroupMessage is undocumented. -type CreateCacheParameterGroupMessage struct { - CacheParameterGroupFamily aws.StringValue `query:"CacheParameterGroupFamily" xml:"CacheParameterGroupFamily"` - CacheParameterGroupName aws.StringValue `query:"CacheParameterGroupName" xml:"CacheParameterGroupName"` - Description aws.StringValue `query:"Description" xml:"Description"` -} - -// CreateCacheParameterGroupResult is undocumented. -type CreateCacheParameterGroupResult struct { - CacheParameterGroup *CacheParameterGroup `query:"CacheParameterGroup" xml:"CreateCacheParameterGroupResult>CacheParameterGroup"` -} - -// CreateCacheSecurityGroupMessage is undocumented. -type CreateCacheSecurityGroupMessage struct { - CacheSecurityGroupName aws.StringValue `query:"CacheSecurityGroupName" xml:"CacheSecurityGroupName"` - Description aws.StringValue `query:"Description" xml:"Description"` -} - -// CreateCacheSecurityGroupResult is undocumented. -type CreateCacheSecurityGroupResult struct { - CacheSecurityGroup *CacheSecurityGroup `query:"CacheSecurityGroup" xml:"CreateCacheSecurityGroupResult>CacheSecurityGroup"` -} - -// CreateCacheSubnetGroupMessage is undocumented. -type CreateCacheSubnetGroupMessage struct { - CacheSubnetGroupDescription aws.StringValue `query:"CacheSubnetGroupDescription" xml:"CacheSubnetGroupDescription"` - CacheSubnetGroupName aws.StringValue `query:"CacheSubnetGroupName" xml:"CacheSubnetGroupName"` - SubnetIDs []string `query:"SubnetIds.member" xml:"SubnetIds>SubnetIdentifier"` -} - -// CreateCacheSubnetGroupResult is undocumented. -type CreateCacheSubnetGroupResult struct { - CacheSubnetGroup *CacheSubnetGroup `query:"CacheSubnetGroup" xml:"CreateCacheSubnetGroupResult>CacheSubnetGroup"` -} - -// CreateReplicationGroupMessage is undocumented. -type CreateReplicationGroupMessage struct { - AutoMinorVersionUpgrade aws.BooleanValue `query:"AutoMinorVersionUpgrade" xml:"AutoMinorVersionUpgrade"` - AutomaticFailoverEnabled aws.BooleanValue `query:"AutomaticFailoverEnabled" xml:"AutomaticFailoverEnabled"` - CacheNodeType aws.StringValue `query:"CacheNodeType" xml:"CacheNodeType"` - CacheParameterGroupName aws.StringValue `query:"CacheParameterGroupName" xml:"CacheParameterGroupName"` - CacheSecurityGroupNames []string `query:"CacheSecurityGroupNames.member" xml:"CacheSecurityGroupNames>CacheSecurityGroupName"` - CacheSubnetGroupName aws.StringValue `query:"CacheSubnetGroupName" xml:"CacheSubnetGroupName"` - Engine aws.StringValue `query:"Engine" xml:"Engine"` - EngineVersion aws.StringValue `query:"EngineVersion" xml:"EngineVersion"` - NotificationTopicARN aws.StringValue `query:"NotificationTopicArn" xml:"NotificationTopicArn"` - NumCacheClusters aws.IntegerValue `query:"NumCacheClusters" xml:"NumCacheClusters"` - Port aws.IntegerValue `query:"Port" xml:"Port"` - PreferredCacheClusterAZs []string `query:"PreferredCacheClusterAZs.member" xml:"PreferredCacheClusterAZs>AvailabilityZone"` - PreferredMaintenanceWindow aws.StringValue `query:"PreferredMaintenanceWindow" xml:"PreferredMaintenanceWindow"` - PrimaryClusterID aws.StringValue `query:"PrimaryClusterId" xml:"PrimaryClusterId"` - ReplicationGroupDescription aws.StringValue `query:"ReplicationGroupDescription" xml:"ReplicationGroupDescription"` - ReplicationGroupID aws.StringValue `query:"ReplicationGroupId" xml:"ReplicationGroupId"` - SecurityGroupIDs []string `query:"SecurityGroupIds.member" xml:"SecurityGroupIds>SecurityGroupId"` - SnapshotARNs []string `query:"SnapshotArns.member" xml:"SnapshotArns>SnapshotArn"` - SnapshotName aws.StringValue `query:"SnapshotName" xml:"SnapshotName"` - SnapshotRetentionLimit aws.IntegerValue `query:"SnapshotRetentionLimit" xml:"SnapshotRetentionLimit"` - SnapshotWindow aws.StringValue `query:"SnapshotWindow" xml:"SnapshotWindow"` -} - -// CreateReplicationGroupResult is undocumented. -type CreateReplicationGroupResult struct { - ReplicationGroup *ReplicationGroup `query:"ReplicationGroup" xml:"CreateReplicationGroupResult>ReplicationGroup"` -} - -// CreateSnapshotMessage is undocumented. -type CreateSnapshotMessage struct { - CacheClusterID aws.StringValue `query:"CacheClusterId" xml:"CacheClusterId"` - SnapshotName aws.StringValue `query:"SnapshotName" xml:"SnapshotName"` -} - -// CreateSnapshotResult is undocumented. -type CreateSnapshotResult struct { - Snapshot *Snapshot `query:"Snapshot" xml:"CreateSnapshotResult>Snapshot"` -} - -// DeleteCacheClusterMessage is undocumented. -type DeleteCacheClusterMessage struct { - CacheClusterID aws.StringValue `query:"CacheClusterId" xml:"CacheClusterId"` - FinalSnapshotIdentifier aws.StringValue `query:"FinalSnapshotIdentifier" xml:"FinalSnapshotIdentifier"` -} - -// DeleteCacheClusterResult is undocumented. -type DeleteCacheClusterResult struct { - CacheCluster *CacheCluster `query:"CacheCluster" xml:"DeleteCacheClusterResult>CacheCluster"` -} - -// DeleteCacheParameterGroupMessage is undocumented. -type DeleteCacheParameterGroupMessage struct { - CacheParameterGroupName aws.StringValue `query:"CacheParameterGroupName" xml:"CacheParameterGroupName"` -} - -// DeleteCacheSecurityGroupMessage is undocumented. -type DeleteCacheSecurityGroupMessage struct { - CacheSecurityGroupName aws.StringValue `query:"CacheSecurityGroupName" xml:"CacheSecurityGroupName"` -} - -// DeleteCacheSubnetGroupMessage is undocumented. -type DeleteCacheSubnetGroupMessage struct { - CacheSubnetGroupName aws.StringValue `query:"CacheSubnetGroupName" xml:"CacheSubnetGroupName"` -} - -// DeleteReplicationGroupMessage is undocumented. -type DeleteReplicationGroupMessage struct { - FinalSnapshotIdentifier aws.StringValue `query:"FinalSnapshotIdentifier" xml:"FinalSnapshotIdentifier"` - ReplicationGroupID aws.StringValue `query:"ReplicationGroupId" xml:"ReplicationGroupId"` - RetainPrimaryCluster aws.BooleanValue `query:"RetainPrimaryCluster" xml:"RetainPrimaryCluster"` -} - -// DeleteReplicationGroupResult is undocumented. -type DeleteReplicationGroupResult struct { - ReplicationGroup *ReplicationGroup `query:"ReplicationGroup" xml:"DeleteReplicationGroupResult>ReplicationGroup"` -} - -// DeleteSnapshotMessage is undocumented. -type DeleteSnapshotMessage struct { - SnapshotName aws.StringValue `query:"SnapshotName" xml:"SnapshotName"` -} - -// DeleteSnapshotResult is undocumented. -type DeleteSnapshotResult struct { - Snapshot *Snapshot `query:"Snapshot" xml:"DeleteSnapshotResult>Snapshot"` -} - -// DescribeCacheClustersMessage is undocumented. -type DescribeCacheClustersMessage struct { - CacheClusterID aws.StringValue `query:"CacheClusterId" xml:"CacheClusterId"` - Marker aws.StringValue `query:"Marker" xml:"Marker"` - MaxRecords aws.IntegerValue `query:"MaxRecords" xml:"MaxRecords"` - ShowCacheNodeInfo aws.BooleanValue `query:"ShowCacheNodeInfo" xml:"ShowCacheNodeInfo"` -} - -// DescribeCacheEngineVersionsMessage is undocumented. -type DescribeCacheEngineVersionsMessage struct { - CacheParameterGroupFamily aws.StringValue `query:"CacheParameterGroupFamily" xml:"CacheParameterGroupFamily"` - DefaultOnly aws.BooleanValue `query:"DefaultOnly" xml:"DefaultOnly"` - Engine aws.StringValue `query:"Engine" xml:"Engine"` - EngineVersion aws.StringValue `query:"EngineVersion" xml:"EngineVersion"` - Marker aws.StringValue `query:"Marker" xml:"Marker"` - MaxRecords aws.IntegerValue `query:"MaxRecords" xml:"MaxRecords"` -} - -// DescribeCacheParameterGroupsMessage is undocumented. -type DescribeCacheParameterGroupsMessage struct { - CacheParameterGroupName aws.StringValue `query:"CacheParameterGroupName" xml:"CacheParameterGroupName"` - Marker aws.StringValue `query:"Marker" xml:"Marker"` - MaxRecords aws.IntegerValue `query:"MaxRecords" xml:"MaxRecords"` -} - -// DescribeCacheParametersMessage is undocumented. -type DescribeCacheParametersMessage struct { - CacheParameterGroupName aws.StringValue `query:"CacheParameterGroupName" xml:"CacheParameterGroupName"` - Marker aws.StringValue `query:"Marker" xml:"Marker"` - MaxRecords aws.IntegerValue `query:"MaxRecords" xml:"MaxRecords"` - Source aws.StringValue `query:"Source" xml:"Source"` -} - -// DescribeCacheSecurityGroupsMessage is undocumented. -type DescribeCacheSecurityGroupsMessage struct { - CacheSecurityGroupName aws.StringValue `query:"CacheSecurityGroupName" xml:"CacheSecurityGroupName"` - Marker aws.StringValue `query:"Marker" xml:"Marker"` - MaxRecords aws.IntegerValue `query:"MaxRecords" xml:"MaxRecords"` -} - -// DescribeCacheSubnetGroupsMessage is undocumented. -type DescribeCacheSubnetGroupsMessage struct { - CacheSubnetGroupName aws.StringValue `query:"CacheSubnetGroupName" xml:"CacheSubnetGroupName"` - Marker aws.StringValue `query:"Marker" xml:"Marker"` - MaxRecords aws.IntegerValue `query:"MaxRecords" xml:"MaxRecords"` -} - -// DescribeEngineDefaultParametersMessage is undocumented. -type DescribeEngineDefaultParametersMessage struct { - CacheParameterGroupFamily aws.StringValue `query:"CacheParameterGroupFamily" xml:"CacheParameterGroupFamily"` - Marker aws.StringValue `query:"Marker" xml:"Marker"` - MaxRecords aws.IntegerValue `query:"MaxRecords" xml:"MaxRecords"` -} - -// DescribeEngineDefaultParametersResult is undocumented. -type DescribeEngineDefaultParametersResult struct { - EngineDefaults *EngineDefaults `query:"EngineDefaults" xml:"DescribeEngineDefaultParametersResult>EngineDefaults"` -} - -// DescribeEventsMessage is undocumented. -type DescribeEventsMessage struct { - Duration aws.IntegerValue `query:"Duration" xml:"Duration"` - EndTime time.Time `query:"EndTime" xml:"EndTime"` - Marker aws.StringValue `query:"Marker" xml:"Marker"` - MaxRecords aws.IntegerValue `query:"MaxRecords" xml:"MaxRecords"` - SourceIdentifier aws.StringValue `query:"SourceIdentifier" xml:"SourceIdentifier"` - SourceType aws.StringValue `query:"SourceType" xml:"SourceType"` - StartTime time.Time `query:"StartTime" xml:"StartTime"` -} - -// DescribeReplicationGroupsMessage is undocumented. -type DescribeReplicationGroupsMessage struct { - Marker aws.StringValue `query:"Marker" xml:"Marker"` - MaxRecords aws.IntegerValue `query:"MaxRecords" xml:"MaxRecords"` - ReplicationGroupID aws.StringValue `query:"ReplicationGroupId" xml:"ReplicationGroupId"` -} - -// DescribeReservedCacheNodesMessage is undocumented. -type DescribeReservedCacheNodesMessage struct { - CacheNodeType aws.StringValue `query:"CacheNodeType" xml:"CacheNodeType"` - Duration aws.StringValue `query:"Duration" xml:"Duration"` - Marker aws.StringValue `query:"Marker" xml:"Marker"` - MaxRecords aws.IntegerValue `query:"MaxRecords" xml:"MaxRecords"` - OfferingType aws.StringValue `query:"OfferingType" xml:"OfferingType"` - ProductDescription aws.StringValue `query:"ProductDescription" xml:"ProductDescription"` - ReservedCacheNodeID aws.StringValue `query:"ReservedCacheNodeId" xml:"ReservedCacheNodeId"` - ReservedCacheNodesOfferingID aws.StringValue `query:"ReservedCacheNodesOfferingId" xml:"ReservedCacheNodesOfferingId"` -} - -// DescribeReservedCacheNodesOfferingsMessage is undocumented. -type DescribeReservedCacheNodesOfferingsMessage struct { - CacheNodeType aws.StringValue `query:"CacheNodeType" xml:"CacheNodeType"` - Duration aws.StringValue `query:"Duration" xml:"Duration"` - Marker aws.StringValue `query:"Marker" xml:"Marker"` - MaxRecords aws.IntegerValue `query:"MaxRecords" xml:"MaxRecords"` - OfferingType aws.StringValue `query:"OfferingType" xml:"OfferingType"` - ProductDescription aws.StringValue `query:"ProductDescription" xml:"ProductDescription"` - ReservedCacheNodesOfferingID aws.StringValue `query:"ReservedCacheNodesOfferingId" xml:"ReservedCacheNodesOfferingId"` -} - -// DescribeSnapshotsListMessage is undocumented. -type DescribeSnapshotsListMessage struct { - Marker aws.StringValue `query:"Marker" xml:"DescribeSnapshotsResult>Marker"` - Snapshots []Snapshot `query:"Snapshots.member" xml:"DescribeSnapshotsResult>Snapshots>Snapshot"` -} - -// DescribeSnapshotsMessage is undocumented. -type DescribeSnapshotsMessage struct { - CacheClusterID aws.StringValue `query:"CacheClusterId" xml:"CacheClusterId"` - Marker aws.StringValue `query:"Marker" xml:"Marker"` - MaxRecords aws.IntegerValue `query:"MaxRecords" xml:"MaxRecords"` - SnapshotName aws.StringValue `query:"SnapshotName" xml:"SnapshotName"` - SnapshotSource aws.StringValue `query:"SnapshotSource" xml:"SnapshotSource"` -} - -// EC2SecurityGroup is undocumented. -type EC2SecurityGroup struct { - EC2SecurityGroupName aws.StringValue `query:"EC2SecurityGroupName" xml:"EC2SecurityGroupName"` - EC2SecurityGroupOwnerID aws.StringValue `query:"EC2SecurityGroupOwnerId" xml:"EC2SecurityGroupOwnerId"` - Status aws.StringValue `query:"Status" xml:"Status"` -} - -// Endpoint is undocumented. -type Endpoint struct { - Address aws.StringValue `query:"Address" xml:"Address"` - Port aws.IntegerValue `query:"Port" xml:"Port"` -} - -// EngineDefaults is undocumented. -type EngineDefaults struct { - CacheNodeTypeSpecificParameters []CacheNodeTypeSpecificParameter `query:"CacheNodeTypeSpecificParameters.member" xml:"CacheNodeTypeSpecificParameters>CacheNodeTypeSpecificParameter"` - CacheParameterGroupFamily aws.StringValue `query:"CacheParameterGroupFamily" xml:"CacheParameterGroupFamily"` - Marker aws.StringValue `query:"Marker" xml:"Marker"` - Parameters []Parameter `query:"Parameters.member" xml:"Parameters>Parameter"` -} - -// Event is undocumented. -type Event struct { - Date time.Time `query:"Date" xml:"Date"` - Message aws.StringValue `query:"Message" xml:"Message"` - SourceIdentifier aws.StringValue `query:"SourceIdentifier" xml:"SourceIdentifier"` - SourceType aws.StringValue `query:"SourceType" xml:"SourceType"` -} - -// EventsMessage is undocumented. -type EventsMessage struct { - Events []Event `query:"Events.member" xml:"DescribeEventsResult>Events>Event"` - Marker aws.StringValue `query:"Marker" xml:"DescribeEventsResult>Marker"` -} - -// ModifyCacheClusterMessage is undocumented. -type ModifyCacheClusterMessage struct { - AZMode aws.StringValue `query:"AZMode" xml:"AZMode"` - ApplyImmediately aws.BooleanValue `query:"ApplyImmediately" xml:"ApplyImmediately"` - AutoMinorVersionUpgrade aws.BooleanValue `query:"AutoMinorVersionUpgrade" xml:"AutoMinorVersionUpgrade"` - CacheClusterID aws.StringValue `query:"CacheClusterId" xml:"CacheClusterId"` - CacheNodeIDsToRemove []string `query:"CacheNodeIdsToRemove.member" xml:"CacheNodeIdsToRemove>CacheNodeId"` - CacheParameterGroupName aws.StringValue `query:"CacheParameterGroupName" xml:"CacheParameterGroupName"` - CacheSecurityGroupNames []string `query:"CacheSecurityGroupNames.member" xml:"CacheSecurityGroupNames>CacheSecurityGroupName"` - EngineVersion aws.StringValue `query:"EngineVersion" xml:"EngineVersion"` - NewAvailabilityZones []string `query:"NewAvailabilityZones.member" xml:"NewAvailabilityZones>PreferredAvailabilityZone"` - NotificationTopicARN aws.StringValue `query:"NotificationTopicArn" xml:"NotificationTopicArn"` - NotificationTopicStatus aws.StringValue `query:"NotificationTopicStatus" xml:"NotificationTopicStatus"` - NumCacheNodes aws.IntegerValue `query:"NumCacheNodes" xml:"NumCacheNodes"` - PreferredMaintenanceWindow aws.StringValue `query:"PreferredMaintenanceWindow" xml:"PreferredMaintenanceWindow"` - SecurityGroupIDs []string `query:"SecurityGroupIds.member" xml:"SecurityGroupIds>SecurityGroupId"` - SnapshotRetentionLimit aws.IntegerValue `query:"SnapshotRetentionLimit" xml:"SnapshotRetentionLimit"` - SnapshotWindow aws.StringValue `query:"SnapshotWindow" xml:"SnapshotWindow"` -} - -// ModifyCacheClusterResult is undocumented. -type ModifyCacheClusterResult struct { - CacheCluster *CacheCluster `query:"CacheCluster" xml:"ModifyCacheClusterResult>CacheCluster"` -} - -// ModifyCacheParameterGroupMessage is undocumented. -type ModifyCacheParameterGroupMessage struct { - CacheParameterGroupName aws.StringValue `query:"CacheParameterGroupName" xml:"CacheParameterGroupName"` - ParameterNameValues []ParameterNameValue `query:"ParameterNameValues.member" xml:"ParameterNameValues>ParameterNameValue"` -} - -// ModifyCacheSubnetGroupMessage is undocumented. -type ModifyCacheSubnetGroupMessage struct { - CacheSubnetGroupDescription aws.StringValue `query:"CacheSubnetGroupDescription" xml:"CacheSubnetGroupDescription"` - CacheSubnetGroupName aws.StringValue `query:"CacheSubnetGroupName" xml:"CacheSubnetGroupName"` - SubnetIDs []string `query:"SubnetIds.member" xml:"SubnetIds>SubnetIdentifier"` -} - -// ModifyCacheSubnetGroupResult is undocumented. -type ModifyCacheSubnetGroupResult struct { - CacheSubnetGroup *CacheSubnetGroup `query:"CacheSubnetGroup" xml:"ModifyCacheSubnetGroupResult>CacheSubnetGroup"` -} - -// ModifyReplicationGroupMessage is undocumented. -type ModifyReplicationGroupMessage struct { - ApplyImmediately aws.BooleanValue `query:"ApplyImmediately" xml:"ApplyImmediately"` - AutoMinorVersionUpgrade aws.BooleanValue `query:"AutoMinorVersionUpgrade" xml:"AutoMinorVersionUpgrade"` - AutomaticFailoverEnabled aws.BooleanValue `query:"AutomaticFailoverEnabled" xml:"AutomaticFailoverEnabled"` - CacheParameterGroupName aws.StringValue `query:"CacheParameterGroupName" xml:"CacheParameterGroupName"` - CacheSecurityGroupNames []string `query:"CacheSecurityGroupNames.member" xml:"CacheSecurityGroupNames>CacheSecurityGroupName"` - EngineVersion aws.StringValue `query:"EngineVersion" xml:"EngineVersion"` - NotificationTopicARN aws.StringValue `query:"NotificationTopicArn" xml:"NotificationTopicArn"` - NotificationTopicStatus aws.StringValue `query:"NotificationTopicStatus" xml:"NotificationTopicStatus"` - PreferredMaintenanceWindow aws.StringValue `query:"PreferredMaintenanceWindow" xml:"PreferredMaintenanceWindow"` - PrimaryClusterID aws.StringValue `query:"PrimaryClusterId" xml:"PrimaryClusterId"` - ReplicationGroupDescription aws.StringValue `query:"ReplicationGroupDescription" xml:"ReplicationGroupDescription"` - ReplicationGroupID aws.StringValue `query:"ReplicationGroupId" xml:"ReplicationGroupId"` - SecurityGroupIDs []string `query:"SecurityGroupIds.member" xml:"SecurityGroupIds>SecurityGroupId"` - SnapshotRetentionLimit aws.IntegerValue `query:"SnapshotRetentionLimit" xml:"SnapshotRetentionLimit"` - SnapshotWindow aws.StringValue `query:"SnapshotWindow" xml:"SnapshotWindow"` - SnapshottingClusterID aws.StringValue `query:"SnapshottingClusterId" xml:"SnapshottingClusterId"` -} - -// ModifyReplicationGroupResult is undocumented. -type ModifyReplicationGroupResult struct { - ReplicationGroup *ReplicationGroup `query:"ReplicationGroup" xml:"ModifyReplicationGroupResult>ReplicationGroup"` -} - -// NodeGroup is undocumented. -type NodeGroup struct { - NodeGroupID aws.StringValue `query:"NodeGroupId" xml:"NodeGroupId"` - NodeGroupMembers []NodeGroupMember `query:"NodeGroupMembers.member" xml:"NodeGroupMembers>NodeGroupMember"` - PrimaryEndpoint *Endpoint `query:"PrimaryEndpoint" xml:"PrimaryEndpoint"` - Status aws.StringValue `query:"Status" xml:"Status"` -} - -// NodeGroupMember is undocumented. -type NodeGroupMember struct { - CacheClusterID aws.StringValue `query:"CacheClusterId" xml:"CacheClusterId"` - CacheNodeID aws.StringValue `query:"CacheNodeId" xml:"CacheNodeId"` - CurrentRole aws.StringValue `query:"CurrentRole" xml:"CurrentRole"` - PreferredAvailabilityZone aws.StringValue `query:"PreferredAvailabilityZone" xml:"PreferredAvailabilityZone"` - ReadEndpoint *Endpoint `query:"ReadEndpoint" xml:"ReadEndpoint"` -} - -// NodeSnapshot is undocumented. -type NodeSnapshot struct { - CacheNodeCreateTime time.Time `query:"CacheNodeCreateTime" xml:"CacheNodeCreateTime"` - CacheNodeID aws.StringValue `query:"CacheNodeId" xml:"CacheNodeId"` - CacheSize aws.StringValue `query:"CacheSize" xml:"CacheSize"` - SnapshotCreateTime time.Time `query:"SnapshotCreateTime" xml:"SnapshotCreateTime"` -} - -// NotificationConfiguration is undocumented. -type NotificationConfiguration struct { - TopicARN aws.StringValue `query:"TopicArn" xml:"TopicArn"` - TopicStatus aws.StringValue `query:"TopicStatus" xml:"TopicStatus"` -} - -// Parameter is undocumented. -type Parameter struct { - AllowedValues aws.StringValue `query:"AllowedValues" xml:"AllowedValues"` - DataType aws.StringValue `query:"DataType" xml:"DataType"` - Description aws.StringValue `query:"Description" xml:"Description"` - IsModifiable aws.BooleanValue `query:"IsModifiable" xml:"IsModifiable"` - MinimumEngineVersion aws.StringValue `query:"MinimumEngineVersion" xml:"MinimumEngineVersion"` - ParameterName aws.StringValue `query:"ParameterName" xml:"ParameterName"` - ParameterValue aws.StringValue `query:"ParameterValue" xml:"ParameterValue"` - Source aws.StringValue `query:"Source" xml:"Source"` -} - -// ParameterNameValue is undocumented. -type ParameterNameValue struct { - ParameterName aws.StringValue `query:"ParameterName" xml:"ParameterName"` - ParameterValue aws.StringValue `query:"ParameterValue" xml:"ParameterValue"` -} - -// Possible values for ElasticCache. -const ( - PendingAutomaticFailoverStatusDisabled = "disabled" - PendingAutomaticFailoverStatusEnabled = "enabled" -) - -// PendingModifiedValues is undocumented. -type PendingModifiedValues struct { - CacheNodeIDsToRemove []string `query:"CacheNodeIdsToRemove.member" xml:"CacheNodeIdsToRemove>CacheNodeId"` - EngineVersion aws.StringValue `query:"EngineVersion" xml:"EngineVersion"` - NumCacheNodes aws.IntegerValue `query:"NumCacheNodes" xml:"NumCacheNodes"` -} - -// PurchaseReservedCacheNodesOfferingMessage is undocumented. -type PurchaseReservedCacheNodesOfferingMessage struct { - CacheNodeCount aws.IntegerValue `query:"CacheNodeCount" xml:"CacheNodeCount"` - ReservedCacheNodeID aws.StringValue `query:"ReservedCacheNodeId" xml:"ReservedCacheNodeId"` - ReservedCacheNodesOfferingID aws.StringValue `query:"ReservedCacheNodesOfferingId" xml:"ReservedCacheNodesOfferingId"` -} - -// PurchaseReservedCacheNodesOfferingResult is undocumented. -type PurchaseReservedCacheNodesOfferingResult struct { - ReservedCacheNode *ReservedCacheNode `query:"ReservedCacheNode" xml:"PurchaseReservedCacheNodesOfferingResult>ReservedCacheNode"` -} - -// RebootCacheClusterMessage is undocumented. -type RebootCacheClusterMessage struct { - CacheClusterID aws.StringValue `query:"CacheClusterId" xml:"CacheClusterId"` - CacheNodeIDsToReboot []string `query:"CacheNodeIdsToReboot.member" xml:"CacheNodeIdsToReboot>CacheNodeId"` -} - -// RebootCacheClusterResult is undocumented. -type RebootCacheClusterResult struct { - CacheCluster *CacheCluster `query:"CacheCluster" xml:"RebootCacheClusterResult>CacheCluster"` -} - -// RecurringCharge is undocumented. -type RecurringCharge struct { - RecurringChargeAmount aws.DoubleValue `query:"RecurringChargeAmount" xml:"RecurringChargeAmount"` - RecurringChargeFrequency aws.StringValue `query:"RecurringChargeFrequency" xml:"RecurringChargeFrequency"` -} - -// ReplicationGroup is undocumented. -type ReplicationGroup struct { - AutomaticFailover aws.StringValue `query:"AutomaticFailover" xml:"AutomaticFailover"` - Description aws.StringValue `query:"Description" xml:"Description"` - MemberClusters []string `query:"MemberClusters.member" xml:"MemberClusters>ClusterId"` - NodeGroups []NodeGroup `query:"NodeGroups.member" xml:"NodeGroups>NodeGroup"` - PendingModifiedValues *ReplicationGroupPendingModifiedValues `query:"PendingModifiedValues" xml:"PendingModifiedValues"` - ReplicationGroupID aws.StringValue `query:"ReplicationGroupId" xml:"ReplicationGroupId"` - SnapshottingClusterID aws.StringValue `query:"SnapshottingClusterId" xml:"SnapshottingClusterId"` - Status aws.StringValue `query:"Status" xml:"Status"` -} - -// ReplicationGroupMessage is undocumented. -type ReplicationGroupMessage struct { - Marker aws.StringValue `query:"Marker" xml:"DescribeReplicationGroupsResult>Marker"` - ReplicationGroups []ReplicationGroup `query:"ReplicationGroups.member" xml:"DescribeReplicationGroupsResult>ReplicationGroups>ReplicationGroup"` -} - -// ReplicationGroupPendingModifiedValues is undocumented. -type ReplicationGroupPendingModifiedValues struct { - AutomaticFailoverStatus aws.StringValue `query:"AutomaticFailoverStatus" xml:"AutomaticFailoverStatus"` - PrimaryClusterID aws.StringValue `query:"PrimaryClusterId" xml:"PrimaryClusterId"` -} - -// ReservedCacheNode is undocumented. -type ReservedCacheNode struct { - CacheNodeCount aws.IntegerValue `query:"CacheNodeCount" xml:"CacheNodeCount"` - CacheNodeType aws.StringValue `query:"CacheNodeType" xml:"CacheNodeType"` - Duration aws.IntegerValue `query:"Duration" xml:"Duration"` - FixedPrice aws.DoubleValue `query:"FixedPrice" xml:"FixedPrice"` - OfferingType aws.StringValue `query:"OfferingType" xml:"OfferingType"` - ProductDescription aws.StringValue `query:"ProductDescription" xml:"ProductDescription"` - RecurringCharges []RecurringCharge `query:"RecurringCharges.member" xml:"RecurringCharges>RecurringCharge"` - ReservedCacheNodeID aws.StringValue `query:"ReservedCacheNodeId" xml:"ReservedCacheNodeId"` - ReservedCacheNodesOfferingID aws.StringValue `query:"ReservedCacheNodesOfferingId" xml:"ReservedCacheNodesOfferingId"` - StartTime time.Time `query:"StartTime" xml:"StartTime"` - State aws.StringValue `query:"State" xml:"State"` - UsagePrice aws.DoubleValue `query:"UsagePrice" xml:"UsagePrice"` -} - -// ReservedCacheNodeMessage is undocumented. -type ReservedCacheNodeMessage struct { - Marker aws.StringValue `query:"Marker" xml:"DescribeReservedCacheNodesResult>Marker"` - ReservedCacheNodes []ReservedCacheNode `query:"ReservedCacheNodes.member" xml:"DescribeReservedCacheNodesResult>ReservedCacheNodes>ReservedCacheNode"` -} - -// ReservedCacheNodesOffering is undocumented. -type ReservedCacheNodesOffering struct { - CacheNodeType aws.StringValue `query:"CacheNodeType" xml:"CacheNodeType"` - Duration aws.IntegerValue `query:"Duration" xml:"Duration"` - FixedPrice aws.DoubleValue `query:"FixedPrice" xml:"FixedPrice"` - OfferingType aws.StringValue `query:"OfferingType" xml:"OfferingType"` - ProductDescription aws.StringValue `query:"ProductDescription" xml:"ProductDescription"` - RecurringCharges []RecurringCharge `query:"RecurringCharges.member" xml:"RecurringCharges>RecurringCharge"` - ReservedCacheNodesOfferingID aws.StringValue `query:"ReservedCacheNodesOfferingId" xml:"ReservedCacheNodesOfferingId"` - UsagePrice aws.DoubleValue `query:"UsagePrice" xml:"UsagePrice"` -} - -// ReservedCacheNodesOfferingMessage is undocumented. -type ReservedCacheNodesOfferingMessage struct { - Marker aws.StringValue `query:"Marker" xml:"DescribeReservedCacheNodesOfferingsResult>Marker"` - ReservedCacheNodesOfferings []ReservedCacheNodesOffering `query:"ReservedCacheNodesOfferings.member" xml:"DescribeReservedCacheNodesOfferingsResult>ReservedCacheNodesOfferings>ReservedCacheNodesOffering"` -} - -// ResetCacheParameterGroupMessage is undocumented. -type ResetCacheParameterGroupMessage struct { - CacheParameterGroupName aws.StringValue `query:"CacheParameterGroupName" xml:"CacheParameterGroupName"` - ParameterNameValues []ParameterNameValue `query:"ParameterNameValues.member" xml:"ParameterNameValues>ParameterNameValue"` - ResetAllParameters aws.BooleanValue `query:"ResetAllParameters" xml:"ResetAllParameters"` -} - -// RevokeCacheSecurityGroupIngressMessage is undocumented. -type RevokeCacheSecurityGroupIngressMessage struct { - CacheSecurityGroupName aws.StringValue `query:"CacheSecurityGroupName" xml:"CacheSecurityGroupName"` - EC2SecurityGroupName aws.StringValue `query:"EC2SecurityGroupName" xml:"EC2SecurityGroupName"` - EC2SecurityGroupOwnerID aws.StringValue `query:"EC2SecurityGroupOwnerId" xml:"EC2SecurityGroupOwnerId"` -} - -// RevokeCacheSecurityGroupIngressResult is undocumented. -type RevokeCacheSecurityGroupIngressResult struct { - CacheSecurityGroup *CacheSecurityGroup `query:"CacheSecurityGroup" xml:"RevokeCacheSecurityGroupIngressResult>CacheSecurityGroup"` -} - -// SecurityGroupMembership is undocumented. -type SecurityGroupMembership struct { - SecurityGroupID aws.StringValue `query:"SecurityGroupId" xml:"SecurityGroupId"` - Status aws.StringValue `query:"Status" xml:"Status"` -} - -// Snapshot is undocumented. -type Snapshot struct { - AutoMinorVersionUpgrade aws.BooleanValue `query:"AutoMinorVersionUpgrade" xml:"AutoMinorVersionUpgrade"` - CacheClusterCreateTime time.Time `query:"CacheClusterCreateTime" xml:"CacheClusterCreateTime"` - CacheClusterID aws.StringValue `query:"CacheClusterId" xml:"CacheClusterId"` - CacheNodeType aws.StringValue `query:"CacheNodeType" xml:"CacheNodeType"` - CacheParameterGroupName aws.StringValue `query:"CacheParameterGroupName" xml:"CacheParameterGroupName"` - CacheSubnetGroupName aws.StringValue `query:"CacheSubnetGroupName" xml:"CacheSubnetGroupName"` - Engine aws.StringValue `query:"Engine" xml:"Engine"` - EngineVersion aws.StringValue `query:"EngineVersion" xml:"EngineVersion"` - NodeSnapshots []NodeSnapshot `query:"NodeSnapshots.member" xml:"NodeSnapshots>NodeSnapshot"` - NumCacheNodes aws.IntegerValue `query:"NumCacheNodes" xml:"NumCacheNodes"` - Port aws.IntegerValue `query:"Port" xml:"Port"` - PreferredAvailabilityZone aws.StringValue `query:"PreferredAvailabilityZone" xml:"PreferredAvailabilityZone"` - PreferredMaintenanceWindow aws.StringValue `query:"PreferredMaintenanceWindow" xml:"PreferredMaintenanceWindow"` - SnapshotName aws.StringValue `query:"SnapshotName" xml:"SnapshotName"` - SnapshotRetentionLimit aws.IntegerValue `query:"SnapshotRetentionLimit" xml:"SnapshotRetentionLimit"` - SnapshotSource aws.StringValue `query:"SnapshotSource" xml:"SnapshotSource"` - SnapshotStatus aws.StringValue `query:"SnapshotStatus" xml:"SnapshotStatus"` - SnapshotWindow aws.StringValue `query:"SnapshotWindow" xml:"SnapshotWindow"` - TopicARN aws.StringValue `query:"TopicArn" xml:"TopicArn"` - VPCID aws.StringValue `query:"VpcId" xml:"VpcId"` -} - -// Possible values for ElasticCache. -const ( - SourceTypeCacheCluster = "cache-cluster" - SourceTypeCacheParameterGroup = "cache-parameter-group" - SourceTypeCacheSecurityGroup = "cache-security-group" - SourceTypeCacheSubnetGroup = "cache-subnet-group" -) - -// Subnet is undocumented. -type Subnet struct { - SubnetAvailabilityZone *AvailabilityZone `query:"SubnetAvailabilityZone" xml:"SubnetAvailabilityZone"` - SubnetIdentifier aws.StringValue `query:"SubnetIdentifier" xml:"SubnetIdentifier"` -} - -// DescribeCacheClustersResult is a wrapper for CacheClusterMessage. -type DescribeCacheClustersResult struct { - CacheClusters []CacheCluster `query:"CacheClusters.member" xml:"DescribeCacheClustersResult>CacheClusters>CacheCluster"` - Marker aws.StringValue `query:"Marker" xml:"DescribeCacheClustersResult>Marker"` -} - -// DescribeCacheEngineVersionsResult is a wrapper for CacheEngineVersionMessage. -type DescribeCacheEngineVersionsResult struct { - CacheEngineVersions []CacheEngineVersion `query:"CacheEngineVersions.member" xml:"DescribeCacheEngineVersionsResult>CacheEngineVersions>CacheEngineVersion"` - Marker aws.StringValue `query:"Marker" xml:"DescribeCacheEngineVersionsResult>Marker"` -} - -// DescribeCacheParameterGroupsResult is a wrapper for CacheParameterGroupsMessage. -type DescribeCacheParameterGroupsResult struct { - CacheParameterGroups []CacheParameterGroup `query:"CacheParameterGroups.member" xml:"DescribeCacheParameterGroupsResult>CacheParameterGroups>CacheParameterGroup"` - Marker aws.StringValue `query:"Marker" xml:"DescribeCacheParameterGroupsResult>Marker"` -} - -// DescribeCacheParametersResult is a wrapper for CacheParameterGroupDetails. -type DescribeCacheParametersResult struct { - CacheNodeTypeSpecificParameters []CacheNodeTypeSpecificParameter `query:"CacheNodeTypeSpecificParameters.member" xml:"DescribeCacheParametersResult>CacheNodeTypeSpecificParameters>CacheNodeTypeSpecificParameter"` - Marker aws.StringValue `query:"Marker" xml:"DescribeCacheParametersResult>Marker"` - Parameters []Parameter `query:"Parameters.member" xml:"DescribeCacheParametersResult>Parameters>Parameter"` -} - -// DescribeCacheSecurityGroupsResult is a wrapper for CacheSecurityGroupMessage. -type DescribeCacheSecurityGroupsResult struct { - CacheSecurityGroups []CacheSecurityGroup `query:"CacheSecurityGroups.member" xml:"DescribeCacheSecurityGroupsResult>CacheSecurityGroups>CacheSecurityGroup"` - Marker aws.StringValue `query:"Marker" xml:"DescribeCacheSecurityGroupsResult>Marker"` -} - -// DescribeCacheSubnetGroupsResult is a wrapper for CacheSubnetGroupMessage. -type DescribeCacheSubnetGroupsResult struct { - CacheSubnetGroups []CacheSubnetGroup `query:"CacheSubnetGroups.member" xml:"DescribeCacheSubnetGroupsResult>CacheSubnetGroups>CacheSubnetGroup"` - Marker aws.StringValue `query:"Marker" xml:"DescribeCacheSubnetGroupsResult>Marker"` -} - -// DescribeEventsResult is a wrapper for EventsMessage. -type DescribeEventsResult struct { - Events []Event `query:"Events.member" xml:"DescribeEventsResult>Events>Event"` - Marker aws.StringValue `query:"Marker" xml:"DescribeEventsResult>Marker"` -} - -// DescribeReplicationGroupsResult is a wrapper for ReplicationGroupMessage. -type DescribeReplicationGroupsResult struct { - Marker aws.StringValue `query:"Marker" xml:"DescribeReplicationGroupsResult>Marker"` - ReplicationGroups []ReplicationGroup `query:"ReplicationGroups.member" xml:"DescribeReplicationGroupsResult>ReplicationGroups>ReplicationGroup"` -} - -// DescribeReservedCacheNodesOfferingsResult is a wrapper for ReservedCacheNodesOfferingMessage. -type DescribeReservedCacheNodesOfferingsResult struct { - Marker aws.StringValue `query:"Marker" xml:"DescribeReservedCacheNodesOfferingsResult>Marker"` - ReservedCacheNodesOfferings []ReservedCacheNodesOffering `query:"ReservedCacheNodesOfferings.member" xml:"DescribeReservedCacheNodesOfferingsResult>ReservedCacheNodesOfferings>ReservedCacheNodesOffering"` -} - -// DescribeReservedCacheNodesResult is a wrapper for ReservedCacheNodeMessage. -type DescribeReservedCacheNodesResult struct { - Marker aws.StringValue `query:"Marker" xml:"DescribeReservedCacheNodesResult>Marker"` - ReservedCacheNodes []ReservedCacheNode `query:"ReservedCacheNodes.member" xml:"DescribeReservedCacheNodesResult>ReservedCacheNodes>ReservedCacheNode"` -} - -// DescribeSnapshotsResult is a wrapper for DescribeSnapshotsListMessage. -type DescribeSnapshotsResult struct { - Marker aws.StringValue `query:"Marker" xml:"DescribeSnapshotsResult>Marker"` - Snapshots []Snapshot `query:"Snapshots.member" xml:"DescribeSnapshotsResult>Snapshots>Snapshot"` -} - -// ModifyCacheParameterGroupResult is a wrapper for CacheParameterGroupNameMessage. -type ModifyCacheParameterGroupResult struct { - CacheParameterGroupName aws.StringValue `query:"CacheParameterGroupName" xml:"ModifyCacheParameterGroupResult>CacheParameterGroupName"` -} - -// ResetCacheParameterGroupResult is a wrapper for CacheParameterGroupNameMessage. -type ResetCacheParameterGroupResult struct { - CacheParameterGroupName aws.StringValue `query:"CacheParameterGroupName" xml:"ResetCacheParameterGroupResult>CacheParameterGroupName"` -} - -// avoid errors if the packages aren't referenced -var _ time.Time - -var _ xml.Decoder -var _ = io.EOF diff --git a/src/github.com/getlantern/aws-sdk-go/gen/elasticbeanstalk/elasticbeanstalk.go b/src/github.com/getlantern/aws-sdk-go/gen/elasticbeanstalk/elasticbeanstalk.go deleted file mode 100644 index ae321f8149..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/gen/elasticbeanstalk/elasticbeanstalk.go +++ /dev/null @@ -1,1016 +0,0 @@ -// THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. - -// Package elasticbeanstalk provides a client for AWS Elastic Beanstalk. -package elasticbeanstalk - -import ( - "net/http" - "time" - - "github.com/awslabs/aws-sdk-go/aws" - "github.com/awslabs/aws-sdk-go/gen/endpoints" -) - -import ( - "encoding/xml" - "io" -) - -// ElasticBeanstalk is a client for AWS Elastic Beanstalk. -type ElasticBeanstalk struct { - client *aws.QueryClient -} - -// New returns a new ElasticBeanstalk client. -func New(creds aws.CredentialsProvider, region string, client *http.Client) *ElasticBeanstalk { - if client == nil { - client = http.DefaultClient - } - - endpoint, service, region := endpoints.Lookup("elasticbeanstalk", region) - - return &ElasticBeanstalk{ - client: &aws.QueryClient{ - Context: aws.Context{ - Credentials: creds, - Service: service, - Region: region, - }, - Client: client, - Endpoint: endpoint, - APIVersion: "2010-12-01", - }, - } -} - -// CheckDNSAvailability is undocumented. -func (c *ElasticBeanstalk) CheckDNSAvailability(req *CheckDNSAvailabilityMessage) (resp *CheckDNSAvailabilityResult, err error) { - resp = &CheckDNSAvailabilityResult{} - err = c.client.Do("CheckDNSAvailability", "POST", "/", req, resp) - return -} - -// CreateApplication creates an application that has one configuration -// template named default and no application versions. -func (c *ElasticBeanstalk) CreateApplication(req *CreateApplicationMessage) (resp *CreateApplicationResult, err error) { - resp = &CreateApplicationResult{} - err = c.client.Do("CreateApplication", "POST", "/", req, resp) - return -} - -// CreateApplicationVersion creates an application version for the -// specified application. -func (c *ElasticBeanstalk) CreateApplicationVersion(req *CreateApplicationVersionMessage) (resp *CreateApplicationVersionResult, err error) { - resp = &CreateApplicationVersionResult{} - err = c.client.Do("CreateApplicationVersion", "POST", "/", req, resp) - return -} - -// CreateConfigurationTemplate creates a configuration template. Templates -// are associated with a specific application and are used to deploy -// different versions of the application with the same configuration -// settings. -func (c *ElasticBeanstalk) CreateConfigurationTemplate(req *CreateConfigurationTemplateMessage) (resp *CreateConfigurationTemplateResult, err error) { - resp = &CreateConfigurationTemplateResult{} - err = c.client.Do("CreateConfigurationTemplate", "POST", "/", req, resp) - return -} - -// CreateEnvironment launches an environment for the specified application -// using the specified configuration. -func (c *ElasticBeanstalk) CreateEnvironment(req *CreateEnvironmentMessage) (resp *CreateEnvironmentResult, err error) { - resp = &CreateEnvironmentResult{} - err = c.client.Do("CreateEnvironment", "POST", "/", req, resp) - return -} - -// CreateStorageLocation creates the Amazon S3 storage location for the -// account. This location is used to store user log files. -func (c *ElasticBeanstalk) CreateStorageLocation() (resp *CreateStorageLocationResult, err error) { - resp = &CreateStorageLocationResult{} - err = c.client.Do("CreateStorageLocation", "POST", "/", nil, resp) - return -} - -// DeleteApplication deletes the specified application along with all -// associated versions and configurations. The application versions will -// not be deleted from your Amazon S3 bucket. -func (c *ElasticBeanstalk) DeleteApplication(req *DeleteApplicationMessage) (err error) { - // NRE - err = c.client.Do("DeleteApplication", "POST", "/", req, nil) - return -} - -// DeleteApplicationVersion deletes the specified version from the -// specified application. -func (c *ElasticBeanstalk) DeleteApplicationVersion(req *DeleteApplicationVersionMessage) (err error) { - // NRE - err = c.client.Do("DeleteApplicationVersion", "POST", "/", req, nil) - return -} - -// DeleteConfigurationTemplate is undocumented. -func (c *ElasticBeanstalk) DeleteConfigurationTemplate(req *DeleteConfigurationTemplateMessage) (err error) { - // NRE - err = c.client.Do("DeleteConfigurationTemplate", "POST", "/", req, nil) - return -} - -// DeleteEnvironmentConfiguration deletes the draft configuration -// associated with the running environment. Updating a running environment -// with any configuration changes creates a draft configuration set. You -// can get the draft configuration using DescribeConfigurationSettings -// while the update is in progress or if the update fails. The -// DeploymentStatus for the draft configuration indicates whether the -// deployment is in process or has failed. The draft configuration remains -// in existence until it is deleted with this action. -func (c *ElasticBeanstalk) DeleteEnvironmentConfiguration(req *DeleteEnvironmentConfigurationMessage) (err error) { - // NRE - err = c.client.Do("DeleteEnvironmentConfiguration", "POST", "/", req, nil) - return -} - -// DescribeApplicationVersions returns descriptions for existing -// application versions. -func (c *ElasticBeanstalk) DescribeApplicationVersions(req *DescribeApplicationVersionsMessage) (resp *DescribeApplicationVersionsResult, err error) { - resp = &DescribeApplicationVersionsResult{} - err = c.client.Do("DescribeApplicationVersions", "POST", "/", req, resp) - return -} - -// DescribeApplications is undocumented. -func (c *ElasticBeanstalk) DescribeApplications(req *DescribeApplicationsMessage) (resp *DescribeApplicationsResult, err error) { - resp = &DescribeApplicationsResult{} - err = c.client.Do("DescribeApplications", "POST", "/", req, resp) - return -} - -// DescribeConfigurationOptions describes the configuration options that -// are used in a particular configuration template or environment, or that -// a specified solution stack defines. The description includes the values -// the options, their default values, and an indication of the required -// action on a running environment if an option value is changed. -func (c *ElasticBeanstalk) DescribeConfigurationOptions(req *DescribeConfigurationOptionsMessage) (resp *DescribeConfigurationOptionsResult, err error) { - resp = &DescribeConfigurationOptionsResult{} - err = c.client.Do("DescribeConfigurationOptions", "POST", "/", req, resp) - return -} - -// DescribeConfigurationSettings returns a description of the settings for -// the specified configuration set, that is, either a configuration -// template or the configuration set associated with a running environment. -// When describing the settings for the configuration set associated with a -// running environment, it is possible to receive two sets of setting -// descriptions. One is the deployed configuration set, and the other is a -// draft configuration of an environment that is either in the process of -// deployment or that failed to deploy. -func (c *ElasticBeanstalk) DescribeConfigurationSettings(req *DescribeConfigurationSettingsMessage) (resp *DescribeConfigurationSettingsResult, err error) { - resp = &DescribeConfigurationSettingsResult{} - err = c.client.Do("DescribeConfigurationSettings", "POST", "/", req, resp) - return -} - -// DescribeEnvironmentResources is undocumented. -func (c *ElasticBeanstalk) DescribeEnvironmentResources(req *DescribeEnvironmentResourcesMessage) (resp *DescribeEnvironmentResourcesResult, err error) { - resp = &DescribeEnvironmentResourcesResult{} - err = c.client.Do("DescribeEnvironmentResources", "POST", "/", req, resp) - return -} - -// DescribeEnvironments is undocumented. -func (c *ElasticBeanstalk) DescribeEnvironments(req *DescribeEnvironmentsMessage) (resp *DescribeEnvironmentsResult, err error) { - resp = &DescribeEnvironmentsResult{} - err = c.client.Do("DescribeEnvironments", "POST", "/", req, resp) - return -} - -// DescribeEvents returns list of event descriptions matching criteria up -// to the last 6 weeks. -func (c *ElasticBeanstalk) DescribeEvents(req *DescribeEventsMessage) (resp *DescribeEventsResult, err error) { - resp = &DescribeEventsResult{} - err = c.client.Do("DescribeEvents", "POST", "/", req, resp) - return -} - -// ListAvailableSolutionStacks returns a list of the available solution -// stack names. -func (c *ElasticBeanstalk) ListAvailableSolutionStacks() (resp *ListAvailableSolutionStacksResult, err error) { - resp = &ListAvailableSolutionStacksResult{} - err = c.client.Do("ListAvailableSolutionStacks", "POST", "/", nil, resp) - return -} - -// RebuildEnvironment deletes and recreates all of the AWS resources (for -// example: the Auto Scaling group, load balancer, etc.) for a specified -// environment and forces a restart. -func (c *ElasticBeanstalk) RebuildEnvironment(req *RebuildEnvironmentMessage) (err error) { - // NRE - err = c.client.Do("RebuildEnvironment", "POST", "/", req, nil) - return -} - -// RequestEnvironmentInfo initiates a request to compile the specified type -// of information of the deployed environment. Setting the InfoType to tail -// compiles the last lines from the application server log files of every -// Amazon EC2 instance in your environment. Use RetrieveEnvironmentInfo to -// access the compiled information. -func (c *ElasticBeanstalk) RequestEnvironmentInfo(req *RequestEnvironmentInfoMessage) (err error) { - // NRE - err = c.client.Do("RequestEnvironmentInfo", "POST", "/", req, nil) - return -} - -// RestartAppServer causes the environment to restart the application -// container server running on each Amazon EC2 instance. -func (c *ElasticBeanstalk) RestartAppServer(req *RestartAppServerMessage) (err error) { - // NRE - err = c.client.Do("RestartAppServer", "POST", "/", req, nil) - return -} - -// RetrieveEnvironmentInfo retrieves the compiled information from a -// RequestEnvironmentInfo request. -func (c *ElasticBeanstalk) RetrieveEnvironmentInfo(req *RetrieveEnvironmentInfoMessage) (resp *RetrieveEnvironmentInfoResult, err error) { - resp = &RetrieveEnvironmentInfoResult{} - err = c.client.Do("RetrieveEnvironmentInfo", "POST", "/", req, resp) - return -} - -// SwapEnvironmentCNAMEs is undocumented. -func (c *ElasticBeanstalk) SwapEnvironmentCNAMEs(req *SwapEnvironmentCNAMEsMessage) (err error) { - // NRE - err = c.client.Do("SwapEnvironmentCNAMEs", "POST", "/", req, nil) - return -} - -// TerminateEnvironment is undocumented. -func (c *ElasticBeanstalk) TerminateEnvironment(req *TerminateEnvironmentMessage) (resp *TerminateEnvironmentResult, err error) { - resp = &TerminateEnvironmentResult{} - err = c.client.Do("TerminateEnvironment", "POST", "/", req, resp) - return -} - -// UpdateApplication updates the specified application to have the -// specified properties. -func (c *ElasticBeanstalk) UpdateApplication(req *UpdateApplicationMessage) (resp *UpdateApplicationResult, err error) { - resp = &UpdateApplicationResult{} - err = c.client.Do("UpdateApplication", "POST", "/", req, resp) - return -} - -// UpdateApplicationVersion updates the specified application version to -// have the specified properties. -func (c *ElasticBeanstalk) UpdateApplicationVersion(req *UpdateApplicationVersionMessage) (resp *UpdateApplicationVersionResult, err error) { - resp = &UpdateApplicationVersionResult{} - err = c.client.Do("UpdateApplicationVersion", "POST", "/", req, resp) - return -} - -// UpdateConfigurationTemplate updates the specified configuration template -// to have the specified properties or configuration option values. -func (c *ElasticBeanstalk) UpdateConfigurationTemplate(req *UpdateConfigurationTemplateMessage) (resp *UpdateConfigurationTemplateResult, err error) { - resp = &UpdateConfigurationTemplateResult{} - err = c.client.Do("UpdateConfigurationTemplate", "POST", "/", req, resp) - return -} - -// UpdateEnvironment updates the environment description, deploys a new -// application version, updates the configuration settings to an entirely -// new configuration template, or updates select configuration option -// values in the running environment. Attempting to update both the release -// and configuration is not allowed and AWS Elastic Beanstalk returns an -// InvalidParameterCombination error. When updating the configuration -// settings to a new template or individual settings, a draft configuration -// is created and DescribeConfigurationSettings for this environment -// returns two setting descriptions with different DeploymentStatus values. -func (c *ElasticBeanstalk) UpdateEnvironment(req *UpdateEnvironmentMessage) (resp *UpdateEnvironmentResult, err error) { - resp = &UpdateEnvironmentResult{} - err = c.client.Do("UpdateEnvironment", "POST", "/", req, resp) - return -} - -// ValidateConfigurationSettings takes a set of configuration settings and -// either a configuration template or environment, and determines whether -// those values are valid. This action returns a list of messages -// indicating any errors or warnings associated with the selection of -// option values. -func (c *ElasticBeanstalk) ValidateConfigurationSettings(req *ValidateConfigurationSettingsMessage) (resp *ValidateConfigurationSettingsResult, err error) { - resp = &ValidateConfigurationSettingsResult{} - err = c.client.Do("ValidateConfigurationSettings", "POST", "/", req, resp) - return -} - -// ApplicationDescription is undocumented. -type ApplicationDescription struct { - ApplicationName aws.StringValue `query:"ApplicationName" xml:"ApplicationName"` - ConfigurationTemplates []string `query:"ConfigurationTemplates.member" xml:"ConfigurationTemplates>member"` - DateCreated time.Time `query:"DateCreated" xml:"DateCreated"` - DateUpdated time.Time `query:"DateUpdated" xml:"DateUpdated"` - Description aws.StringValue `query:"Description" xml:"Description"` - Versions []string `query:"Versions.member" xml:"Versions>member"` -} - -// ApplicationDescriptionMessage is undocumented. -type ApplicationDescriptionMessage struct { - Application *ApplicationDescription `query:"Application" xml:"Application"` -} - -// ApplicationDescriptionsMessage is undocumented. -type ApplicationDescriptionsMessage struct { - Applications []ApplicationDescription `query:"Applications.member" xml:"DescribeApplicationsResult>Applications>member"` -} - -// ApplicationVersionDescription is undocumented. -type ApplicationVersionDescription struct { - ApplicationName aws.StringValue `query:"ApplicationName" xml:"ApplicationName"` - DateCreated time.Time `query:"DateCreated" xml:"DateCreated"` - DateUpdated time.Time `query:"DateUpdated" xml:"DateUpdated"` - Description aws.StringValue `query:"Description" xml:"Description"` - SourceBundle *S3Location `query:"SourceBundle" xml:"SourceBundle"` - VersionLabel aws.StringValue `query:"VersionLabel" xml:"VersionLabel"` -} - -// ApplicationVersionDescriptionMessage is undocumented. -type ApplicationVersionDescriptionMessage struct { - ApplicationVersion *ApplicationVersionDescription `query:"ApplicationVersion" xml:"ApplicationVersion"` -} - -// ApplicationVersionDescriptionsMessage is undocumented. -type ApplicationVersionDescriptionsMessage struct { - ApplicationVersions []ApplicationVersionDescription `query:"ApplicationVersions.member" xml:"DescribeApplicationVersionsResult>ApplicationVersions>member"` -} - -// AutoScalingGroup is undocumented. -type AutoScalingGroup struct { - Name aws.StringValue `query:"Name" xml:"Name"` -} - -// CheckDNSAvailabilityMessage is undocumented. -type CheckDNSAvailabilityMessage struct { - CNAMEPrefix aws.StringValue `query:"CNAMEPrefix" xml:"CNAMEPrefix"` -} - -// CheckDNSAvailabilityResultMessage is undocumented. -type CheckDNSAvailabilityResultMessage struct { - Available aws.BooleanValue `query:"Available" xml:"CheckDNSAvailabilityResult>Available"` - FullyQualifiedCNAME aws.StringValue `query:"FullyQualifiedCNAME" xml:"CheckDNSAvailabilityResult>FullyQualifiedCNAME"` -} - -// Possible values for ElasticBeanstalk. -const ( - ConfigurationDeploymentStatusDeployed = "deployed" - ConfigurationDeploymentStatusFailed = "failed" - ConfigurationDeploymentStatusPending = "pending" -) - -// ConfigurationOptionDescription is undocumented. -type ConfigurationOptionDescription struct { - ChangeSeverity aws.StringValue `query:"ChangeSeverity" xml:"ChangeSeverity"` - DefaultValue aws.StringValue `query:"DefaultValue" xml:"DefaultValue"` - MaxLength aws.IntegerValue `query:"MaxLength" xml:"MaxLength"` - MaxValue aws.IntegerValue `query:"MaxValue" xml:"MaxValue"` - MinValue aws.IntegerValue `query:"MinValue" xml:"MinValue"` - Name aws.StringValue `query:"Name" xml:"Name"` - Namespace aws.StringValue `query:"Namespace" xml:"Namespace"` - Regex *OptionRestrictionRegex `query:"Regex" xml:"Regex"` - UserDefined aws.BooleanValue `query:"UserDefined" xml:"UserDefined"` - ValueOptions []string `query:"ValueOptions.member" xml:"ValueOptions>member"` - ValueType aws.StringValue `query:"ValueType" xml:"ValueType"` -} - -// ConfigurationOptionSetting is undocumented. -type ConfigurationOptionSetting struct { - Namespace aws.StringValue `query:"Namespace" xml:"Namespace"` - OptionName aws.StringValue `query:"OptionName" xml:"OptionName"` - Value aws.StringValue `query:"Value" xml:"Value"` -} - -// Possible values for ElasticBeanstalk. -const ( - ConfigurationOptionValueTypeList = "List" - ConfigurationOptionValueTypeScalar = "Scalar" -) - -// ConfigurationOptionsDescription is undocumented. -type ConfigurationOptionsDescription struct { - Options []ConfigurationOptionDescription `query:"Options.member" xml:"DescribeConfigurationOptionsResult>Options>member"` - SolutionStackName aws.StringValue `query:"SolutionStackName" xml:"DescribeConfigurationOptionsResult>SolutionStackName"` -} - -// ConfigurationSettingsDescription is undocumented. -type ConfigurationSettingsDescription struct { - ApplicationName aws.StringValue `query:"ApplicationName" xml:"ApplicationName"` - DateCreated time.Time `query:"DateCreated" xml:"DateCreated"` - DateUpdated time.Time `query:"DateUpdated" xml:"DateUpdated"` - DeploymentStatus aws.StringValue `query:"DeploymentStatus" xml:"DeploymentStatus"` - Description aws.StringValue `query:"Description" xml:"Description"` - EnvironmentName aws.StringValue `query:"EnvironmentName" xml:"EnvironmentName"` - OptionSettings []ConfigurationOptionSetting `query:"OptionSettings.member" xml:"OptionSettings>member"` - SolutionStackName aws.StringValue `query:"SolutionStackName" xml:"SolutionStackName"` - TemplateName aws.StringValue `query:"TemplateName" xml:"TemplateName"` -} - -// ConfigurationSettingsDescriptions is undocumented. -type ConfigurationSettingsDescriptions struct { - ConfigurationSettings []ConfigurationSettingsDescription `query:"ConfigurationSettings.member" xml:"DescribeConfigurationSettingsResult>ConfigurationSettings>member"` -} - -// ConfigurationSettingsValidationMessages is undocumented. -type ConfigurationSettingsValidationMessages struct { - Messages []ValidationMessage `query:"Messages.member" xml:"ValidateConfigurationSettingsResult>Messages>member"` -} - -// CreateApplicationMessage is undocumented. -type CreateApplicationMessage struct { - ApplicationName aws.StringValue `query:"ApplicationName" xml:"ApplicationName"` - Description aws.StringValue `query:"Description" xml:"Description"` -} - -// CreateApplicationVersionMessage is undocumented. -type CreateApplicationVersionMessage struct { - ApplicationName aws.StringValue `query:"ApplicationName" xml:"ApplicationName"` - AutoCreateApplication aws.BooleanValue `query:"AutoCreateApplication" xml:"AutoCreateApplication"` - Description aws.StringValue `query:"Description" xml:"Description"` - SourceBundle *S3Location `query:"SourceBundle" xml:"SourceBundle"` - VersionLabel aws.StringValue `query:"VersionLabel" xml:"VersionLabel"` -} - -// CreateConfigurationTemplateMessage is undocumented. -type CreateConfigurationTemplateMessage struct { - ApplicationName aws.StringValue `query:"ApplicationName" xml:"ApplicationName"` - Description aws.StringValue `query:"Description" xml:"Description"` - EnvironmentID aws.StringValue `query:"EnvironmentId" xml:"EnvironmentId"` - OptionSettings []ConfigurationOptionSetting `query:"OptionSettings.member" xml:"OptionSettings>member"` - SolutionStackName aws.StringValue `query:"SolutionStackName" xml:"SolutionStackName"` - SourceConfiguration *SourceConfiguration `query:"SourceConfiguration" xml:"SourceConfiguration"` - TemplateName aws.StringValue `query:"TemplateName" xml:"TemplateName"` -} - -// CreateEnvironmentMessage is undocumented. -type CreateEnvironmentMessage struct { - ApplicationName aws.StringValue `query:"ApplicationName" xml:"ApplicationName"` - CNAMEPrefix aws.StringValue `query:"CNAMEPrefix" xml:"CNAMEPrefix"` - Description aws.StringValue `query:"Description" xml:"Description"` - EnvironmentName aws.StringValue `query:"EnvironmentName" xml:"EnvironmentName"` - OptionSettings []ConfigurationOptionSetting `query:"OptionSettings.member" xml:"OptionSettings>member"` - OptionsToRemove []OptionSpecification `query:"OptionsToRemove.member" xml:"OptionsToRemove>member"` - SolutionStackName aws.StringValue `query:"SolutionStackName" xml:"SolutionStackName"` - Tags []Tag `query:"Tags.member" xml:"Tags>member"` - TemplateName aws.StringValue `query:"TemplateName" xml:"TemplateName"` - Tier *EnvironmentTier `query:"Tier" xml:"Tier"` - VersionLabel aws.StringValue `query:"VersionLabel" xml:"VersionLabel"` -} - -// CreateStorageLocationResultMessage is undocumented. -type CreateStorageLocationResultMessage struct { - S3Bucket aws.StringValue `query:"S3Bucket" xml:"CreateStorageLocationResult>S3Bucket"` -} - -// DeleteApplicationMessage is undocumented. -type DeleteApplicationMessage struct { - ApplicationName aws.StringValue `query:"ApplicationName" xml:"ApplicationName"` - TerminateEnvByForce aws.BooleanValue `query:"TerminateEnvByForce" xml:"TerminateEnvByForce"` -} - -// DeleteApplicationVersionMessage is undocumented. -type DeleteApplicationVersionMessage struct { - ApplicationName aws.StringValue `query:"ApplicationName" xml:"ApplicationName"` - DeleteSourceBundle aws.BooleanValue `query:"DeleteSourceBundle" xml:"DeleteSourceBundle"` - VersionLabel aws.StringValue `query:"VersionLabel" xml:"VersionLabel"` -} - -// DeleteConfigurationTemplateMessage is undocumented. -type DeleteConfigurationTemplateMessage struct { - ApplicationName aws.StringValue `query:"ApplicationName" xml:"ApplicationName"` - TemplateName aws.StringValue `query:"TemplateName" xml:"TemplateName"` -} - -// DeleteEnvironmentConfigurationMessage is undocumented. -type DeleteEnvironmentConfigurationMessage struct { - ApplicationName aws.StringValue `query:"ApplicationName" xml:"ApplicationName"` - EnvironmentName aws.StringValue `query:"EnvironmentName" xml:"EnvironmentName"` -} - -// DescribeApplicationVersionsMessage is undocumented. -type DescribeApplicationVersionsMessage struct { - ApplicationName aws.StringValue `query:"ApplicationName" xml:"ApplicationName"` - VersionLabels []string `query:"VersionLabels.member" xml:"VersionLabels>member"` -} - -// DescribeApplicationsMessage is undocumented. -type DescribeApplicationsMessage struct { - ApplicationNames []string `query:"ApplicationNames.member" xml:"ApplicationNames>member"` -} - -// DescribeConfigurationOptionsMessage is undocumented. -type DescribeConfigurationOptionsMessage struct { - ApplicationName aws.StringValue `query:"ApplicationName" xml:"ApplicationName"` - EnvironmentName aws.StringValue `query:"EnvironmentName" xml:"EnvironmentName"` - Options []OptionSpecification `query:"Options.member" xml:"Options>member"` - SolutionStackName aws.StringValue `query:"SolutionStackName" xml:"SolutionStackName"` - TemplateName aws.StringValue `query:"TemplateName" xml:"TemplateName"` -} - -// DescribeConfigurationSettingsMessage is undocumented. -type DescribeConfigurationSettingsMessage struct { - ApplicationName aws.StringValue `query:"ApplicationName" xml:"ApplicationName"` - EnvironmentName aws.StringValue `query:"EnvironmentName" xml:"EnvironmentName"` - TemplateName aws.StringValue `query:"TemplateName" xml:"TemplateName"` -} - -// DescribeEnvironmentResourcesMessage is undocumented. -type DescribeEnvironmentResourcesMessage struct { - EnvironmentID aws.StringValue `query:"EnvironmentId" xml:"EnvironmentId"` - EnvironmentName aws.StringValue `query:"EnvironmentName" xml:"EnvironmentName"` -} - -// DescribeEnvironmentsMessage is undocumented. -type DescribeEnvironmentsMessage struct { - ApplicationName aws.StringValue `query:"ApplicationName" xml:"ApplicationName"` - EnvironmentIDs []string `query:"EnvironmentIds.member" xml:"EnvironmentIds>member"` - EnvironmentNames []string `query:"EnvironmentNames.member" xml:"EnvironmentNames>member"` - IncludeDeleted aws.BooleanValue `query:"IncludeDeleted" xml:"IncludeDeleted"` - IncludedDeletedBackTo time.Time `query:"IncludedDeletedBackTo" xml:"IncludedDeletedBackTo"` - VersionLabel aws.StringValue `query:"VersionLabel" xml:"VersionLabel"` -} - -// DescribeEventsMessage is undocumented. -type DescribeEventsMessage struct { - ApplicationName aws.StringValue `query:"ApplicationName" xml:"ApplicationName"` - EndTime time.Time `query:"EndTime" xml:"EndTime"` - EnvironmentID aws.StringValue `query:"EnvironmentId" xml:"EnvironmentId"` - EnvironmentName aws.StringValue `query:"EnvironmentName" xml:"EnvironmentName"` - MaxRecords aws.IntegerValue `query:"MaxRecords" xml:"MaxRecords"` - NextToken aws.StringValue `query:"NextToken" xml:"NextToken"` - RequestID aws.StringValue `query:"RequestId" xml:"RequestId"` - Severity aws.StringValue `query:"Severity" xml:"Severity"` - StartTime time.Time `query:"StartTime" xml:"StartTime"` - TemplateName aws.StringValue `query:"TemplateName" xml:"TemplateName"` - VersionLabel aws.StringValue `query:"VersionLabel" xml:"VersionLabel"` -} - -// EnvironmentDescription is undocumented. -type EnvironmentDescription struct { - ApplicationName aws.StringValue `query:"ApplicationName" xml:"ApplicationName"` - CNAME aws.StringValue `query:"CNAME" xml:"CNAME"` - DateCreated time.Time `query:"DateCreated" xml:"DateCreated"` - DateUpdated time.Time `query:"DateUpdated" xml:"DateUpdated"` - Description aws.StringValue `query:"Description" xml:"Description"` - EndpointURL aws.StringValue `query:"EndpointURL" xml:"EndpointURL"` - EnvironmentID aws.StringValue `query:"EnvironmentId" xml:"EnvironmentId"` - EnvironmentName aws.StringValue `query:"EnvironmentName" xml:"EnvironmentName"` - Health aws.StringValue `query:"Health" xml:"Health"` - Resources *EnvironmentResourcesDescription `query:"Resources" xml:"Resources"` - SolutionStackName aws.StringValue `query:"SolutionStackName" xml:"SolutionStackName"` - Status aws.StringValue `query:"Status" xml:"Status"` - TemplateName aws.StringValue `query:"TemplateName" xml:"TemplateName"` - Tier *EnvironmentTier `query:"Tier" xml:"Tier"` - VersionLabel aws.StringValue `query:"VersionLabel" xml:"VersionLabel"` -} - -// EnvironmentDescriptionsMessage is undocumented. -type EnvironmentDescriptionsMessage struct { - Environments []EnvironmentDescription `query:"Environments.member" xml:"DescribeEnvironmentsResult>Environments>member"` -} - -// Possible values for ElasticBeanstalk. -const ( - EnvironmentHealthGreen = "Green" - EnvironmentHealthGrey = "Grey" - EnvironmentHealthRed = "Red" - EnvironmentHealthYellow = "Yellow" -) - -// EnvironmentInfoDescription is undocumented. -type EnvironmentInfoDescription struct { - EC2InstanceID aws.StringValue `query:"Ec2InstanceId" xml:"Ec2InstanceId"` - InfoType aws.StringValue `query:"InfoType" xml:"InfoType"` - Message aws.StringValue `query:"Message" xml:"Message"` - SampleTimestamp time.Time `query:"SampleTimestamp" xml:"SampleTimestamp"` -} - -// Possible values for ElasticBeanstalk. -const ( - EnvironmentInfoTypeTail = "tail" -) - -// EnvironmentResourceDescription is undocumented. -type EnvironmentResourceDescription struct { - AutoScalingGroups []AutoScalingGroup `query:"AutoScalingGroups.member" xml:"AutoScalingGroups>member"` - EnvironmentName aws.StringValue `query:"EnvironmentName" xml:"EnvironmentName"` - Instances []Instance `query:"Instances.member" xml:"Instances>member"` - LaunchConfigurations []LaunchConfiguration `query:"LaunchConfigurations.member" xml:"LaunchConfigurations>member"` - LoadBalancers []LoadBalancer `query:"LoadBalancers.member" xml:"LoadBalancers>member"` - Queues []Queue `query:"Queues.member" xml:"Queues>member"` - Triggers []Trigger `query:"Triggers.member" xml:"Triggers>member"` -} - -// EnvironmentResourceDescriptionsMessage is undocumented. -type EnvironmentResourceDescriptionsMessage struct { - EnvironmentResources *EnvironmentResourceDescription `query:"EnvironmentResources" xml:"DescribeEnvironmentResourcesResult>EnvironmentResources"` -} - -// EnvironmentResourcesDescription is undocumented. -type EnvironmentResourcesDescription struct { - LoadBalancer *LoadBalancerDescription `query:"LoadBalancer" xml:"LoadBalancer"` -} - -// Possible values for ElasticBeanstalk. -const ( - EnvironmentStatusLaunching = "Launching" - EnvironmentStatusReady = "Ready" - EnvironmentStatusTerminated = "Terminated" - EnvironmentStatusTerminating = "Terminating" - EnvironmentStatusUpdating = "Updating" -) - -// EnvironmentTier is undocumented. -type EnvironmentTier struct { - Name aws.StringValue `query:"Name" xml:"Name"` - Type aws.StringValue `query:"Type" xml:"Type"` - Version aws.StringValue `query:"Version" xml:"Version"` -} - -// EventDescription is undocumented. -type EventDescription struct { - ApplicationName aws.StringValue `query:"ApplicationName" xml:"ApplicationName"` - EnvironmentName aws.StringValue `query:"EnvironmentName" xml:"EnvironmentName"` - EventDate time.Time `query:"EventDate" xml:"EventDate"` - Message aws.StringValue `query:"Message" xml:"Message"` - RequestID aws.StringValue `query:"RequestId" xml:"RequestId"` - Severity aws.StringValue `query:"Severity" xml:"Severity"` - TemplateName aws.StringValue `query:"TemplateName" xml:"TemplateName"` - VersionLabel aws.StringValue `query:"VersionLabel" xml:"VersionLabel"` -} - -// EventDescriptionsMessage is undocumented. -type EventDescriptionsMessage struct { - Events []EventDescription `query:"Events.member" xml:"DescribeEventsResult>Events>member"` - NextToken aws.StringValue `query:"NextToken" xml:"DescribeEventsResult>NextToken"` -} - -// Possible values for ElasticBeanstalk. -const ( - EventSeverityDebug = "DEBUG" - EventSeverityError = "ERROR" - EventSeverityFatal = "FATAL" - EventSeverityInfo = "INFO" - EventSeverityTrace = "TRACE" - EventSeverityWarn = "WARN" -) - -// Instance is undocumented. -type Instance struct { - ID aws.StringValue `query:"Id" xml:"Id"` -} - -// LaunchConfiguration is undocumented. -type LaunchConfiguration struct { - Name aws.StringValue `query:"Name" xml:"Name"` -} - -// ListAvailableSolutionStacksResultMessage is undocumented. -type ListAvailableSolutionStacksResultMessage struct { - SolutionStackDetails []SolutionStackDescription `query:"SolutionStackDetails.member" xml:"ListAvailableSolutionStacksResult>SolutionStackDetails>member"` - SolutionStacks []string `query:"SolutionStacks.member" xml:"ListAvailableSolutionStacksResult>SolutionStacks>member"` -} - -// Listener is undocumented. -type Listener struct { - Port aws.IntegerValue `query:"Port" xml:"Port"` - Protocol aws.StringValue `query:"Protocol" xml:"Protocol"` -} - -// LoadBalancer is undocumented. -type LoadBalancer struct { - Name aws.StringValue `query:"Name" xml:"Name"` -} - -// LoadBalancerDescription is undocumented. -type LoadBalancerDescription struct { - Domain aws.StringValue `query:"Domain" xml:"Domain"` - Listeners []Listener `query:"Listeners.member" xml:"Listeners>member"` - LoadBalancerName aws.StringValue `query:"LoadBalancerName" xml:"LoadBalancerName"` -} - -// OptionRestrictionRegex is undocumented. -type OptionRestrictionRegex struct { - Label aws.StringValue `query:"Label" xml:"Label"` - Pattern aws.StringValue `query:"Pattern" xml:"Pattern"` -} - -// OptionSpecification is undocumented. -type OptionSpecification struct { - Namespace aws.StringValue `query:"Namespace" xml:"Namespace"` - OptionName aws.StringValue `query:"OptionName" xml:"OptionName"` -} - -// Queue is undocumented. -type Queue struct { - Name aws.StringValue `query:"Name" xml:"Name"` - URL aws.StringValue `query:"URL" xml:"URL"` -} - -// RebuildEnvironmentMessage is undocumented. -type RebuildEnvironmentMessage struct { - EnvironmentID aws.StringValue `query:"EnvironmentId" xml:"EnvironmentId"` - EnvironmentName aws.StringValue `query:"EnvironmentName" xml:"EnvironmentName"` -} - -// RequestEnvironmentInfoMessage is undocumented. -type RequestEnvironmentInfoMessage struct { - EnvironmentID aws.StringValue `query:"EnvironmentId" xml:"EnvironmentId"` - EnvironmentName aws.StringValue `query:"EnvironmentName" xml:"EnvironmentName"` - InfoType aws.StringValue `query:"InfoType" xml:"InfoType"` -} - -// RestartAppServerMessage is undocumented. -type RestartAppServerMessage struct { - EnvironmentID aws.StringValue `query:"EnvironmentId" xml:"EnvironmentId"` - EnvironmentName aws.StringValue `query:"EnvironmentName" xml:"EnvironmentName"` -} - -// RetrieveEnvironmentInfoMessage is undocumented. -type RetrieveEnvironmentInfoMessage struct { - EnvironmentID aws.StringValue `query:"EnvironmentId" xml:"EnvironmentId"` - EnvironmentName aws.StringValue `query:"EnvironmentName" xml:"EnvironmentName"` - InfoType aws.StringValue `query:"InfoType" xml:"InfoType"` -} - -// RetrieveEnvironmentInfoResultMessage is undocumented. -type RetrieveEnvironmentInfoResultMessage struct { - EnvironmentInfo []EnvironmentInfoDescription `query:"EnvironmentInfo.member" xml:"RetrieveEnvironmentInfoResult>EnvironmentInfo>member"` -} - -// S3Location is undocumented. -type S3Location struct { - S3Bucket aws.StringValue `query:"S3Bucket" xml:"S3Bucket"` - S3Key aws.StringValue `query:"S3Key" xml:"S3Key"` -} - -// SolutionStackDescription is undocumented. -type SolutionStackDescription struct { - PermittedFileTypes []string `query:"PermittedFileTypes.member" xml:"PermittedFileTypes>member"` - SolutionStackName aws.StringValue `query:"SolutionStackName" xml:"SolutionStackName"` -} - -// SourceConfiguration is undocumented. -type SourceConfiguration struct { - ApplicationName aws.StringValue `query:"ApplicationName" xml:"ApplicationName"` - TemplateName aws.StringValue `query:"TemplateName" xml:"TemplateName"` -} - -// SwapEnvironmentCNAMEsMessage is undocumented. -type SwapEnvironmentCNAMEsMessage struct { - DestinationEnvironmentID aws.StringValue `query:"DestinationEnvironmentId" xml:"DestinationEnvironmentId"` - DestinationEnvironmentName aws.StringValue `query:"DestinationEnvironmentName" xml:"DestinationEnvironmentName"` - SourceEnvironmentID aws.StringValue `query:"SourceEnvironmentId" xml:"SourceEnvironmentId"` - SourceEnvironmentName aws.StringValue `query:"SourceEnvironmentName" xml:"SourceEnvironmentName"` -} - -// Tag is undocumented. -type Tag struct { - Key aws.StringValue `query:"Key" xml:"Key"` - Value aws.StringValue `query:"Value" xml:"Value"` -} - -// TerminateEnvironmentMessage is undocumented. -type TerminateEnvironmentMessage struct { - EnvironmentID aws.StringValue `query:"EnvironmentId" xml:"EnvironmentId"` - EnvironmentName aws.StringValue `query:"EnvironmentName" xml:"EnvironmentName"` - TerminateResources aws.BooleanValue `query:"TerminateResources" xml:"TerminateResources"` -} - -// Trigger is undocumented. -type Trigger struct { - Name aws.StringValue `query:"Name" xml:"Name"` -} - -// UpdateApplicationMessage is undocumented. -type UpdateApplicationMessage struct { - ApplicationName aws.StringValue `query:"ApplicationName" xml:"ApplicationName"` - Description aws.StringValue `query:"Description" xml:"Description"` -} - -// UpdateApplicationVersionMessage is undocumented. -type UpdateApplicationVersionMessage struct { - ApplicationName aws.StringValue `query:"ApplicationName" xml:"ApplicationName"` - Description aws.StringValue `query:"Description" xml:"Description"` - VersionLabel aws.StringValue `query:"VersionLabel" xml:"VersionLabel"` -} - -// UpdateConfigurationTemplateMessage is undocumented. -type UpdateConfigurationTemplateMessage struct { - ApplicationName aws.StringValue `query:"ApplicationName" xml:"ApplicationName"` - Description aws.StringValue `query:"Description" xml:"Description"` - OptionSettings []ConfigurationOptionSetting `query:"OptionSettings.member" xml:"OptionSettings>member"` - OptionsToRemove []OptionSpecification `query:"OptionsToRemove.member" xml:"OptionsToRemove>member"` - TemplateName aws.StringValue `query:"TemplateName" xml:"TemplateName"` -} - -// UpdateEnvironmentMessage is undocumented. -type UpdateEnvironmentMessage struct { - Description aws.StringValue `query:"Description" xml:"Description"` - EnvironmentID aws.StringValue `query:"EnvironmentId" xml:"EnvironmentId"` - EnvironmentName aws.StringValue `query:"EnvironmentName" xml:"EnvironmentName"` - OptionSettings []ConfigurationOptionSetting `query:"OptionSettings.member" xml:"OptionSettings>member"` - OptionsToRemove []OptionSpecification `query:"OptionsToRemove.member" xml:"OptionsToRemove>member"` - TemplateName aws.StringValue `query:"TemplateName" xml:"TemplateName"` - Tier *EnvironmentTier `query:"Tier" xml:"Tier"` - VersionLabel aws.StringValue `query:"VersionLabel" xml:"VersionLabel"` -} - -// ValidateConfigurationSettingsMessage is undocumented. -type ValidateConfigurationSettingsMessage struct { - ApplicationName aws.StringValue `query:"ApplicationName" xml:"ApplicationName"` - EnvironmentName aws.StringValue `query:"EnvironmentName" xml:"EnvironmentName"` - OptionSettings []ConfigurationOptionSetting `query:"OptionSettings.member" xml:"OptionSettings>member"` - TemplateName aws.StringValue `query:"TemplateName" xml:"TemplateName"` -} - -// ValidationMessage is undocumented. -type ValidationMessage struct { - Message aws.StringValue `query:"Message" xml:"Message"` - Namespace aws.StringValue `query:"Namespace" xml:"Namespace"` - OptionName aws.StringValue `query:"OptionName" xml:"OptionName"` - Severity aws.StringValue `query:"Severity" xml:"Severity"` -} - -// Possible values for ElasticBeanstalk. -const ( - ValidationSeverityError = "error" - ValidationSeverityWarning = "warning" -) - -// CheckDNSAvailabilityResult is a wrapper for CheckDNSAvailabilityResultMessage. -type CheckDNSAvailabilityResult struct { - Available aws.BooleanValue `query:"Available" xml:"CheckDNSAvailabilityResult>Available"` - FullyQualifiedCNAME aws.StringValue `query:"FullyQualifiedCNAME" xml:"CheckDNSAvailabilityResult>FullyQualifiedCNAME"` -} - -// CreateApplicationResult is a wrapper for ApplicationDescriptionMessage. -type CreateApplicationResult struct { - Application *ApplicationDescription `query:"Application" xml:"CreateApplicationResult>Application"` -} - -// CreateApplicationVersionResult is a wrapper for ApplicationVersionDescriptionMessage. -type CreateApplicationVersionResult struct { - ApplicationVersion *ApplicationVersionDescription `query:"ApplicationVersion" xml:"CreateApplicationVersionResult>ApplicationVersion"` -} - -// CreateConfigurationTemplateResult is a wrapper for ConfigurationSettingsDescription. -type CreateConfigurationTemplateResult struct { - ApplicationName aws.StringValue `query:"ApplicationName" xml:"CreateConfigurationTemplateResult>ApplicationName"` - DateCreated time.Time `query:"DateCreated" xml:"CreateConfigurationTemplateResult>DateCreated"` - DateUpdated time.Time `query:"DateUpdated" xml:"CreateConfigurationTemplateResult>DateUpdated"` - DeploymentStatus aws.StringValue `query:"DeploymentStatus" xml:"CreateConfigurationTemplateResult>DeploymentStatus"` - Description aws.StringValue `query:"Description" xml:"CreateConfigurationTemplateResult>Description"` - EnvironmentName aws.StringValue `query:"EnvironmentName" xml:"CreateConfigurationTemplateResult>EnvironmentName"` - OptionSettings []ConfigurationOptionSetting `query:"OptionSettings.member" xml:"CreateConfigurationTemplateResult>OptionSettings>member"` - SolutionStackName aws.StringValue `query:"SolutionStackName" xml:"CreateConfigurationTemplateResult>SolutionStackName"` - TemplateName aws.StringValue `query:"TemplateName" xml:"CreateConfigurationTemplateResult>TemplateName"` -} - -// CreateEnvironmentResult is a wrapper for EnvironmentDescription. -type CreateEnvironmentResult struct { - ApplicationName aws.StringValue `query:"ApplicationName" xml:"CreateEnvironmentResult>ApplicationName"` - CNAME aws.StringValue `query:"CNAME" xml:"CreateEnvironmentResult>CNAME"` - DateCreated time.Time `query:"DateCreated" xml:"CreateEnvironmentResult>DateCreated"` - DateUpdated time.Time `query:"DateUpdated" xml:"CreateEnvironmentResult>DateUpdated"` - Description aws.StringValue `query:"Description" xml:"CreateEnvironmentResult>Description"` - EndpointURL aws.StringValue `query:"EndpointURL" xml:"CreateEnvironmentResult>EndpointURL"` - EnvironmentID aws.StringValue `query:"EnvironmentId" xml:"CreateEnvironmentResult>EnvironmentId"` - EnvironmentName aws.StringValue `query:"EnvironmentName" xml:"CreateEnvironmentResult>EnvironmentName"` - Health aws.StringValue `query:"Health" xml:"CreateEnvironmentResult>Health"` - Resources *EnvironmentResourcesDescription `query:"Resources" xml:"CreateEnvironmentResult>Resources"` - SolutionStackName aws.StringValue `query:"SolutionStackName" xml:"CreateEnvironmentResult>SolutionStackName"` - Status aws.StringValue `query:"Status" xml:"CreateEnvironmentResult>Status"` - TemplateName aws.StringValue `query:"TemplateName" xml:"CreateEnvironmentResult>TemplateName"` - Tier *EnvironmentTier `query:"Tier" xml:"CreateEnvironmentResult>Tier"` - VersionLabel aws.StringValue `query:"VersionLabel" xml:"CreateEnvironmentResult>VersionLabel"` -} - -// CreateStorageLocationResult is a wrapper for CreateStorageLocationResultMessage. -type CreateStorageLocationResult struct { - S3Bucket aws.StringValue `query:"S3Bucket" xml:"CreateStorageLocationResult>S3Bucket"` -} - -// DescribeApplicationVersionsResult is a wrapper for ApplicationVersionDescriptionsMessage. -type DescribeApplicationVersionsResult struct { - ApplicationVersions []ApplicationVersionDescription `query:"ApplicationVersions.member" xml:"DescribeApplicationVersionsResult>ApplicationVersions>member"` -} - -// DescribeApplicationsResult is a wrapper for ApplicationDescriptionsMessage. -type DescribeApplicationsResult struct { - Applications []ApplicationDescription `query:"Applications.member" xml:"DescribeApplicationsResult>Applications>member"` -} - -// DescribeConfigurationOptionsResult is a wrapper for ConfigurationOptionsDescription. -type DescribeConfigurationOptionsResult struct { - Options []ConfigurationOptionDescription `query:"Options.member" xml:"DescribeConfigurationOptionsResult>Options>member"` - SolutionStackName aws.StringValue `query:"SolutionStackName" xml:"DescribeConfigurationOptionsResult>SolutionStackName"` -} - -// DescribeConfigurationSettingsResult is a wrapper for ConfigurationSettingsDescriptions. -type DescribeConfigurationSettingsResult struct { - ConfigurationSettings []ConfigurationSettingsDescription `query:"ConfigurationSettings.member" xml:"DescribeConfigurationSettingsResult>ConfigurationSettings>member"` -} - -// DescribeEnvironmentResourcesResult is a wrapper for EnvironmentResourceDescriptionsMessage. -type DescribeEnvironmentResourcesResult struct { - EnvironmentResources *EnvironmentResourceDescription `query:"EnvironmentResources" xml:"DescribeEnvironmentResourcesResult>EnvironmentResources"` -} - -// DescribeEnvironmentsResult is a wrapper for EnvironmentDescriptionsMessage. -type DescribeEnvironmentsResult struct { - Environments []EnvironmentDescription `query:"Environments.member" xml:"DescribeEnvironmentsResult>Environments>member"` -} - -// DescribeEventsResult is a wrapper for EventDescriptionsMessage. -type DescribeEventsResult struct { - Events []EventDescription `query:"Events.member" xml:"DescribeEventsResult>Events>member"` - NextToken aws.StringValue `query:"NextToken" xml:"DescribeEventsResult>NextToken"` -} - -// ListAvailableSolutionStacksResult is a wrapper for ListAvailableSolutionStacksResultMessage. -type ListAvailableSolutionStacksResult struct { - SolutionStackDetails []SolutionStackDescription `query:"SolutionStackDetails.member" xml:"ListAvailableSolutionStacksResult>SolutionStackDetails>member"` - SolutionStacks []string `query:"SolutionStacks.member" xml:"ListAvailableSolutionStacksResult>SolutionStacks>member"` -} - -// RetrieveEnvironmentInfoResult is a wrapper for RetrieveEnvironmentInfoResultMessage. -type RetrieveEnvironmentInfoResult struct { - EnvironmentInfo []EnvironmentInfoDescription `query:"EnvironmentInfo.member" xml:"RetrieveEnvironmentInfoResult>EnvironmentInfo>member"` -} - -// TerminateEnvironmentResult is a wrapper for EnvironmentDescription. -type TerminateEnvironmentResult struct { - ApplicationName aws.StringValue `query:"ApplicationName" xml:"TerminateEnvironmentResult>ApplicationName"` - CNAME aws.StringValue `query:"CNAME" xml:"TerminateEnvironmentResult>CNAME"` - DateCreated time.Time `query:"DateCreated" xml:"TerminateEnvironmentResult>DateCreated"` - DateUpdated time.Time `query:"DateUpdated" xml:"TerminateEnvironmentResult>DateUpdated"` - Description aws.StringValue `query:"Description" xml:"TerminateEnvironmentResult>Description"` - EndpointURL aws.StringValue `query:"EndpointURL" xml:"TerminateEnvironmentResult>EndpointURL"` - EnvironmentID aws.StringValue `query:"EnvironmentId" xml:"TerminateEnvironmentResult>EnvironmentId"` - EnvironmentName aws.StringValue `query:"EnvironmentName" xml:"TerminateEnvironmentResult>EnvironmentName"` - Health aws.StringValue `query:"Health" xml:"TerminateEnvironmentResult>Health"` - Resources *EnvironmentResourcesDescription `query:"Resources" xml:"TerminateEnvironmentResult>Resources"` - SolutionStackName aws.StringValue `query:"SolutionStackName" xml:"TerminateEnvironmentResult>SolutionStackName"` - Status aws.StringValue `query:"Status" xml:"TerminateEnvironmentResult>Status"` - TemplateName aws.StringValue `query:"TemplateName" xml:"TerminateEnvironmentResult>TemplateName"` - Tier *EnvironmentTier `query:"Tier" xml:"TerminateEnvironmentResult>Tier"` - VersionLabel aws.StringValue `query:"VersionLabel" xml:"TerminateEnvironmentResult>VersionLabel"` -} - -// UpdateApplicationResult is a wrapper for ApplicationDescriptionMessage. -type UpdateApplicationResult struct { - Application *ApplicationDescription `query:"Application" xml:"UpdateApplicationResult>Application"` -} - -// UpdateApplicationVersionResult is a wrapper for ApplicationVersionDescriptionMessage. -type UpdateApplicationVersionResult struct { - ApplicationVersion *ApplicationVersionDescription `query:"ApplicationVersion" xml:"UpdateApplicationVersionResult>ApplicationVersion"` -} - -// UpdateConfigurationTemplateResult is a wrapper for ConfigurationSettingsDescription. -type UpdateConfigurationTemplateResult struct { - ApplicationName aws.StringValue `query:"ApplicationName" xml:"UpdateConfigurationTemplateResult>ApplicationName"` - DateCreated time.Time `query:"DateCreated" xml:"UpdateConfigurationTemplateResult>DateCreated"` - DateUpdated time.Time `query:"DateUpdated" xml:"UpdateConfigurationTemplateResult>DateUpdated"` - DeploymentStatus aws.StringValue `query:"DeploymentStatus" xml:"UpdateConfigurationTemplateResult>DeploymentStatus"` - Description aws.StringValue `query:"Description" xml:"UpdateConfigurationTemplateResult>Description"` - EnvironmentName aws.StringValue `query:"EnvironmentName" xml:"UpdateConfigurationTemplateResult>EnvironmentName"` - OptionSettings []ConfigurationOptionSetting `query:"OptionSettings.member" xml:"UpdateConfigurationTemplateResult>OptionSettings>member"` - SolutionStackName aws.StringValue `query:"SolutionStackName" xml:"UpdateConfigurationTemplateResult>SolutionStackName"` - TemplateName aws.StringValue `query:"TemplateName" xml:"UpdateConfigurationTemplateResult>TemplateName"` -} - -// UpdateEnvironmentResult is a wrapper for EnvironmentDescription. -type UpdateEnvironmentResult struct { - ApplicationName aws.StringValue `query:"ApplicationName" xml:"UpdateEnvironmentResult>ApplicationName"` - CNAME aws.StringValue `query:"CNAME" xml:"UpdateEnvironmentResult>CNAME"` - DateCreated time.Time `query:"DateCreated" xml:"UpdateEnvironmentResult>DateCreated"` - DateUpdated time.Time `query:"DateUpdated" xml:"UpdateEnvironmentResult>DateUpdated"` - Description aws.StringValue `query:"Description" xml:"UpdateEnvironmentResult>Description"` - EndpointURL aws.StringValue `query:"EndpointURL" xml:"UpdateEnvironmentResult>EndpointURL"` - EnvironmentID aws.StringValue `query:"EnvironmentId" xml:"UpdateEnvironmentResult>EnvironmentId"` - EnvironmentName aws.StringValue `query:"EnvironmentName" xml:"UpdateEnvironmentResult>EnvironmentName"` - Health aws.StringValue `query:"Health" xml:"UpdateEnvironmentResult>Health"` - Resources *EnvironmentResourcesDescription `query:"Resources" xml:"UpdateEnvironmentResult>Resources"` - SolutionStackName aws.StringValue `query:"SolutionStackName" xml:"UpdateEnvironmentResult>SolutionStackName"` - Status aws.StringValue `query:"Status" xml:"UpdateEnvironmentResult>Status"` - TemplateName aws.StringValue `query:"TemplateName" xml:"UpdateEnvironmentResult>TemplateName"` - Tier *EnvironmentTier `query:"Tier" xml:"UpdateEnvironmentResult>Tier"` - VersionLabel aws.StringValue `query:"VersionLabel" xml:"UpdateEnvironmentResult>VersionLabel"` -} - -// ValidateConfigurationSettingsResult is a wrapper for ConfigurationSettingsValidationMessages. -type ValidateConfigurationSettingsResult struct { - Messages []ValidationMessage `query:"Messages.member" xml:"ValidateConfigurationSettingsResult>Messages>member"` -} - -// avoid errors if the packages aren't referenced -var _ time.Time - -var _ xml.Decoder -var _ = io.EOF diff --git a/src/github.com/getlantern/aws-sdk-go/gen/elastictranscoder/elastictranscoder.go b/src/github.com/getlantern/aws-sdk-go/gen/elastictranscoder/elastictranscoder.go deleted file mode 100644 index 0849f520ed..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/gen/elastictranscoder/elastictranscoder.go +++ /dev/null @@ -1,1342 +0,0 @@ -// THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. - -// Package elastictranscoder provides a client for Amazon Elastic Transcoder. -package elastictranscoder - -import ( - "net/http" - "time" - - "github.com/awslabs/aws-sdk-go/aws" - "github.com/awslabs/aws-sdk-go/gen/endpoints" -) - -import ( - "bytes" - "encoding/json" - "fmt" - "io" - "io/ioutil" - "net/url" - "strconv" - "strings" -) - -// ElasticTranscoder is a client for Amazon Elastic Transcoder. -type ElasticTranscoder struct { - client *aws.RestClient -} - -// New returns a new ElasticTranscoder client. -func New(creds aws.CredentialsProvider, region string, client *http.Client) *ElasticTranscoder { - if client == nil { - client = http.DefaultClient - } - - endpoint, service, region := endpoints.Lookup("elastictranscoder", region) - - return &ElasticTranscoder{ - client: &aws.RestClient{ - Context: aws.Context{ - Credentials: creds, - Service: service, - Region: region, - }, - Client: client, - Endpoint: endpoint, - APIVersion: "2012-09-25", - }, - } -} - -// CancelJob the CancelJob operation cancels an unfinished job. You can -// only cancel a job that has a status of Submitted . To prevent a pipeline -// from starting to process a job while you're getting the job identifier, -// use UpdatePipelineStatus to temporarily pause the pipeline. -func (c *ElasticTranscoder) CancelJob(req *CancelJobRequest) (resp *CancelJobResponse, err error) { - resp = &CancelJobResponse{} - - var body io.Reader - var contentType string - - uri := c.client.Endpoint + "/2012-09-25/jobs/{Id}" - - if req.ID != nil { - uri = strings.Replace(uri, "{"+"Id"+"}", aws.EscapePath(*req.ID), -1) - uri = strings.Replace(uri, "{"+"Id+"+"}", aws.EscapePath(*req.ID), -1) - } - - q := url.Values{} - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("DELETE", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - - if e := json.NewDecoder(httpResp.Body).Decode(resp); e != nil && e != io.EOF { - err = e - return - } - - return -} - -// CreateJob when you create a job, Elastic Transcoder returns data that -// includes the values that you specified plus information about the job -// that is created. If you have specified more than one output for your -// jobs (for example, one output for the Kindle Fire and another output for -// the Apple iPhone 4s), you currently must use the Elastic Transcoder API -// to list the jobs (as opposed to the AWS Console). -func (c *ElasticTranscoder) CreateJob(req *CreateJobRequest) (resp *CreateJobResponse, err error) { - resp = &CreateJobResponse{} - - var body io.Reader - var contentType string - - uri := c.client.Endpoint + "/2012-09-25/jobs" - - q := url.Values{} - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("POST", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - - if e := json.NewDecoder(httpResp.Body).Decode(resp); e != nil && e != io.EOF { - err = e - return - } - - return -} - -// CreatePipeline the CreatePipeline operation creates a pipeline with -// settings that you specify. -func (c *ElasticTranscoder) CreatePipeline(req *CreatePipelineRequest) (resp *CreatePipelineResponse, err error) { - resp = &CreatePipelineResponse{} - - var body io.Reader - var contentType string - - uri := c.client.Endpoint + "/2012-09-25/pipelines" - - q := url.Values{} - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("POST", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - - if e := json.NewDecoder(httpResp.Body).Decode(resp); e != nil && e != io.EOF { - err = e - return - } - - return -} - -// CreatePreset the CreatePreset operation creates a preset with settings -// that you specify. Elastic Transcoder checks the CreatePreset settings to -// ensure that they meet Elastic Transcoder requirements and to determine -// whether they comply with H.264 standards. If your settings are not valid -// for Elastic Transcoder, Elastic Transcoder returns an 400 response -// ValidationException ) and does not create the preset. If the settings -// are valid for Elastic Transcoder but aren't strictly compliant with the -// H.264 standard, Elastic Transcoder creates the preset and returns a -// warning message in the response. This helps you determine whether your -// settings comply with the H.264 standard while giving you greater -// flexibility with respect to the video that Elastic Transcoder produces. -// Elastic Transcoder uses the H.264 video-compression format. For more -// information, see the International Telecommunication Union publication -// Recommendation H.264: Advanced video coding for generic audiovisual -// services -func (c *ElasticTranscoder) CreatePreset(req *CreatePresetRequest) (resp *CreatePresetResponse, err error) { - resp = &CreatePresetResponse{} - - var body io.Reader - var contentType string - - uri := c.client.Endpoint + "/2012-09-25/presets" - - q := url.Values{} - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("POST", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - - if e := json.NewDecoder(httpResp.Body).Decode(resp); e != nil && e != io.EOF { - err = e - return - } - - return -} - -// DeletePipeline the DeletePipeline operation removes a pipeline. You can -// only delete a pipeline that has never been used or that is not currently -// in use (doesn't contain any active jobs). If the pipeline is currently -// in use, DeletePipeline returns an error. -func (c *ElasticTranscoder) DeletePipeline(req *DeletePipelineRequest) (resp *DeletePipelineResponse, err error) { - resp = &DeletePipelineResponse{} - - var body io.Reader - var contentType string - - uri := c.client.Endpoint + "/2012-09-25/pipelines/{Id}" - - if req.ID != nil { - uri = strings.Replace(uri, "{"+"Id"+"}", aws.EscapePath(*req.ID), -1) - uri = strings.Replace(uri, "{"+"Id+"+"}", aws.EscapePath(*req.ID), -1) - } - - q := url.Values{} - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("DELETE", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - - if e := json.NewDecoder(httpResp.Body).Decode(resp); e != nil && e != io.EOF { - err = e - return - } - - return -} - -// DeletePreset the DeletePreset operation removes a preset that you've -// added in an AWS region. You can't delete the default presets that are -// included with Elastic Transcoder. -func (c *ElasticTranscoder) DeletePreset(req *DeletePresetRequest) (resp *DeletePresetResponse, err error) { - resp = &DeletePresetResponse{} - - var body io.Reader - var contentType string - - uri := c.client.Endpoint + "/2012-09-25/presets/{Id}" - - if req.ID != nil { - uri = strings.Replace(uri, "{"+"Id"+"}", aws.EscapePath(*req.ID), -1) - uri = strings.Replace(uri, "{"+"Id+"+"}", aws.EscapePath(*req.ID), -1) - } - - q := url.Values{} - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("DELETE", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - - if e := json.NewDecoder(httpResp.Body).Decode(resp); e != nil && e != io.EOF { - err = e - return - } - - return -} - -// ListJobsByPipeline the ListJobsByPipeline operation gets a list of the -// jobs currently in a pipeline. Elastic Transcoder returns all of the jobs -// currently in the specified pipeline. The response body contains one -// element for each job that satisfies the search criteria. -func (c *ElasticTranscoder) ListJobsByPipeline(req *ListJobsByPipelineRequest) (resp *ListJobsByPipelineResponse, err error) { - resp = &ListJobsByPipelineResponse{} - - var body io.Reader - var contentType string - - uri := c.client.Endpoint + "/2012-09-25/jobsByPipeline/{PipelineId}" - - if req.PipelineID != nil { - uri = strings.Replace(uri, "{"+"PipelineId"+"}", aws.EscapePath(*req.PipelineID), -1) - uri = strings.Replace(uri, "{"+"PipelineId+"+"}", aws.EscapePath(*req.PipelineID), -1) - } - - q := url.Values{} - - if req.Ascending != nil { - q.Set("Ascending", *req.Ascending) - } - - if req.PageToken != nil { - q.Set("PageToken", *req.PageToken) - } - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("GET", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - - if e := json.NewDecoder(httpResp.Body).Decode(resp); e != nil && e != io.EOF { - err = e - return - } - - return -} - -// ListJobsByStatus the ListJobsByStatus operation gets a list of jobs that -// have a specified status. The response body contains one element for each -// job that satisfies the search criteria. -func (c *ElasticTranscoder) ListJobsByStatus(req *ListJobsByStatusRequest) (resp *ListJobsByStatusResponse, err error) { - resp = &ListJobsByStatusResponse{} - - var body io.Reader - var contentType string - - uri := c.client.Endpoint + "/2012-09-25/jobsByStatus/{Status}" - - if req.Status != nil { - uri = strings.Replace(uri, "{"+"Status"+"}", aws.EscapePath(*req.Status), -1) - uri = strings.Replace(uri, "{"+"Status+"+"}", aws.EscapePath(*req.Status), -1) - } - - q := url.Values{} - - if req.Ascending != nil { - q.Set("Ascending", *req.Ascending) - } - - if req.PageToken != nil { - q.Set("PageToken", *req.PageToken) - } - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("GET", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - - if e := json.NewDecoder(httpResp.Body).Decode(resp); e != nil && e != io.EOF { - err = e - return - } - - return -} - -// ListPipelines the ListPipelines operation gets a list of the pipelines -// associated with the current AWS account. -func (c *ElasticTranscoder) ListPipelines(req *ListPipelinesRequest) (resp *ListPipelinesResponse, err error) { - resp = &ListPipelinesResponse{} - - var body io.Reader - var contentType string - - uri := c.client.Endpoint + "/2012-09-25/pipelines" - - q := url.Values{} - - if req.Ascending != nil { - q.Set("Ascending", *req.Ascending) - } - - if req.PageToken != nil { - q.Set("PageToken", *req.PageToken) - } - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("GET", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - - if e := json.NewDecoder(httpResp.Body).Decode(resp); e != nil && e != io.EOF { - err = e - return - } - - return -} - -// ListPresets the ListPresets operation gets a list of the default presets -// included with Elastic Transcoder and the presets that you've added in an -// AWS region. -func (c *ElasticTranscoder) ListPresets(req *ListPresetsRequest) (resp *ListPresetsResponse, err error) { - resp = &ListPresetsResponse{} - - var body io.Reader - var contentType string - - uri := c.client.Endpoint + "/2012-09-25/presets" - - q := url.Values{} - - if req.Ascending != nil { - q.Set("Ascending", *req.Ascending) - } - - if req.PageToken != nil { - q.Set("PageToken", *req.PageToken) - } - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("GET", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - - if e := json.NewDecoder(httpResp.Body).Decode(resp); e != nil && e != io.EOF { - err = e - return - } - - return -} - -// ReadJob the ReadJob operation returns detailed information about a job. -func (c *ElasticTranscoder) ReadJob(req *ReadJobRequest) (resp *ReadJobResponse, err error) { - resp = &ReadJobResponse{} - - var body io.Reader - var contentType string - - uri := c.client.Endpoint + "/2012-09-25/jobs/{Id}" - - if req.ID != nil { - uri = strings.Replace(uri, "{"+"Id"+"}", aws.EscapePath(*req.ID), -1) - uri = strings.Replace(uri, "{"+"Id+"+"}", aws.EscapePath(*req.ID), -1) - } - - q := url.Values{} - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("GET", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - - if e := json.NewDecoder(httpResp.Body).Decode(resp); e != nil && e != io.EOF { - err = e - return - } - - return -} - -// ReadPipeline the ReadPipeline operation gets detailed information about -// a pipeline. -func (c *ElasticTranscoder) ReadPipeline(req *ReadPipelineRequest) (resp *ReadPipelineResponse, err error) { - resp = &ReadPipelineResponse{} - - var body io.Reader - var contentType string - - uri := c.client.Endpoint + "/2012-09-25/pipelines/{Id}" - - if req.ID != nil { - uri = strings.Replace(uri, "{"+"Id"+"}", aws.EscapePath(*req.ID), -1) - uri = strings.Replace(uri, "{"+"Id+"+"}", aws.EscapePath(*req.ID), -1) - } - - q := url.Values{} - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("GET", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - - if e := json.NewDecoder(httpResp.Body).Decode(resp); e != nil && e != io.EOF { - err = e - return - } - - return -} - -// ReadPreset the ReadPreset operation gets detailed information about a -// preset. -func (c *ElasticTranscoder) ReadPreset(req *ReadPresetRequest) (resp *ReadPresetResponse, err error) { - resp = &ReadPresetResponse{} - - var body io.Reader - var contentType string - - uri := c.client.Endpoint + "/2012-09-25/presets/{Id}" - - if req.ID != nil { - uri = strings.Replace(uri, "{"+"Id"+"}", aws.EscapePath(*req.ID), -1) - uri = strings.Replace(uri, "{"+"Id+"+"}", aws.EscapePath(*req.ID), -1) - } - - q := url.Values{} - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("GET", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - - if e := json.NewDecoder(httpResp.Body).Decode(resp); e != nil && e != io.EOF { - err = e - return - } - - return -} - -// TestRole the TestRole operation tests the IAM role used to create the -// pipeline. The TestRole action lets you determine whether the IAM role -// you are using has sufficient permissions to let Elastic Transcoder -// perform tasks associated with the transcoding process. The action -// attempts to assume the specified IAM role, checks read access to the -// input and output buckets, and tries to send a test notification to -// Amazon SNS topics that you specify. -func (c *ElasticTranscoder) TestRole(req *TestRoleRequest) (resp *TestRoleResponse, err error) { - resp = &TestRoleResponse{} - - var body io.Reader - var contentType string - - uri := c.client.Endpoint + "/2012-09-25/roleTests" - - q := url.Values{} - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("POST", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - - if e := json.NewDecoder(httpResp.Body).Decode(resp); e != nil && e != io.EOF { - err = e - return - } - - return -} - -// UpdatePipeline use the UpdatePipeline operation to update settings for a -// pipeline. When you change pipeline settings, your changes take effect -// immediately. Jobs that you have already submitted and that Elastic -// Transcoder has not started to process are affected in addition to jobs -// that you submit after you change settings. -func (c *ElasticTranscoder) UpdatePipeline(req *UpdatePipelineRequest) (resp *UpdatePipelineResponse, err error) { - resp = &UpdatePipelineResponse{} - - var body io.Reader - var contentType string - - uri := c.client.Endpoint + "/2012-09-25/pipelines/{Id}" - - if req.ID != nil { - uri = strings.Replace(uri, "{"+"Id"+"}", aws.EscapePath(*req.ID), -1) - uri = strings.Replace(uri, "{"+"Id+"+"}", aws.EscapePath(*req.ID), -1) - } - - q := url.Values{} - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("PUT", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - - if e := json.NewDecoder(httpResp.Body).Decode(resp); e != nil && e != io.EOF { - err = e - return - } - - return -} - -// UpdatePipelineNotifications with the UpdatePipelineNotifications -// operation, you can update Amazon Simple Notification Service (Amazon -// notifications for a pipeline. When you update notifications for a -// pipeline, Elastic Transcoder returns the values that you specified in -// the request. -func (c *ElasticTranscoder) UpdatePipelineNotifications(req *UpdatePipelineNotificationsRequest) (resp *UpdatePipelineNotificationsResponse, err error) { - resp = &UpdatePipelineNotificationsResponse{} - - var body io.Reader - var contentType string - - uri := c.client.Endpoint + "/2012-09-25/pipelines/{Id}/notifications" - - if req.ID != nil { - uri = strings.Replace(uri, "{"+"Id"+"}", aws.EscapePath(*req.ID), -1) - uri = strings.Replace(uri, "{"+"Id+"+"}", aws.EscapePath(*req.ID), -1) - } - - q := url.Values{} - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("POST", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - - if e := json.NewDecoder(httpResp.Body).Decode(resp); e != nil && e != io.EOF { - err = e - return - } - - return -} - -// UpdatePipelineStatus the UpdatePipelineStatus operation pauses or -// reactivates a pipeline, so that the pipeline stops or restarts the -// processing of jobs. Changing the pipeline status is useful if you want -// to cancel one or more jobs. You can't cancel jobs after Elastic -// Transcoder has started processing them; if you pause the pipeline to -// which you submitted the jobs, you have more time to get the job IDs for -// the jobs that you want to cancel, and to send a CancelJob request. -func (c *ElasticTranscoder) UpdatePipelineStatus(req *UpdatePipelineStatusRequest) (resp *UpdatePipelineStatusResponse, err error) { - resp = &UpdatePipelineStatusResponse{} - - var body io.Reader - var contentType string - - uri := c.client.Endpoint + "/2012-09-25/pipelines/{Id}/status" - - if req.ID != nil { - uri = strings.Replace(uri, "{"+"Id"+"}", aws.EscapePath(*req.ID), -1) - uri = strings.Replace(uri, "{"+"Id+"+"}", aws.EscapePath(*req.ID), -1) - } - - q := url.Values{} - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("POST", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - - if e := json.NewDecoder(httpResp.Body).Decode(resp); e != nil && e != io.EOF { - err = e - return - } - - return -} - -// Artwork is undocumented. -type Artwork struct { - AlbumArtFormat aws.StringValue `json:"AlbumArtFormat,omitempty"` - Encryption *Encryption `json:"Encryption,omitempty"` - InputKey aws.StringValue `json:"InputKey,omitempty"` - MaxHeight aws.StringValue `json:"MaxHeight,omitempty"` - MaxWidth aws.StringValue `json:"MaxWidth,omitempty"` - PaddingPolicy aws.StringValue `json:"PaddingPolicy,omitempty"` - SizingPolicy aws.StringValue `json:"SizingPolicy,omitempty"` -} - -// AudioCodecOptions is undocumented. -type AudioCodecOptions struct { - Profile aws.StringValue `json:"Profile,omitempty"` -} - -// AudioParameters is undocumented. -type AudioParameters struct { - BitRate aws.StringValue `json:"BitRate,omitempty"` - Channels aws.StringValue `json:"Channels,omitempty"` - Codec aws.StringValue `json:"Codec,omitempty"` - CodecOptions *AudioCodecOptions `json:"CodecOptions,omitempty"` - SampleRate aws.StringValue `json:"SampleRate,omitempty"` -} - -// CancelJobRequest is undocumented. -type CancelJobRequest struct { - ID aws.StringValue `json:"-"` -} - -// CancelJobResponse is undocumented. -type CancelJobResponse struct { -} - -// CaptionFormat is undocumented. -type CaptionFormat struct { - Encryption *Encryption `json:"Encryption,omitempty"` - Format aws.StringValue `json:"Format,omitempty"` - Pattern aws.StringValue `json:"Pattern,omitempty"` -} - -// CaptionSource is undocumented. -type CaptionSource struct { - Encryption *Encryption `json:"Encryption,omitempty"` - Key aws.StringValue `json:"Key,omitempty"` - Label aws.StringValue `json:"Label,omitempty"` - Language aws.StringValue `json:"Language,omitempty"` - TimeOffset aws.StringValue `json:"TimeOffset,omitempty"` -} - -// Captions is undocumented. -type Captions struct { - CaptionFormats []CaptionFormat `json:"CaptionFormats,omitempty"` - CaptionSources []CaptionSource `json:"CaptionSources,omitempty"` - MergePolicy aws.StringValue `json:"MergePolicy,omitempty"` -} - -// Clip is undocumented. -type Clip struct { - TimeSpan *TimeSpan `json:"TimeSpan,omitempty"` -} - -// CreateJobOutput is undocumented. -type CreateJobOutput struct { - AlbumArt *JobAlbumArt `json:"AlbumArt,omitempty"` - Captions *Captions `json:"Captions,omitempty"` - Composition []Clip `json:"Composition,omitempty"` - Encryption *Encryption `json:"Encryption,omitempty"` - Key aws.StringValue `json:"Key,omitempty"` - PresetID aws.StringValue `json:"PresetId,omitempty"` - Rotate aws.StringValue `json:"Rotate,omitempty"` - SegmentDuration aws.StringValue `json:"SegmentDuration,omitempty"` - ThumbnailEncryption *Encryption `json:"ThumbnailEncryption,omitempty"` - ThumbnailPattern aws.StringValue `json:"ThumbnailPattern,omitempty"` - Watermarks []JobWatermark `json:"Watermarks,omitempty"` -} - -// CreateJobPlaylist is undocumented. -type CreateJobPlaylist struct { - Format aws.StringValue `json:"Format,omitempty"` - HlsContentProtection *HlsContentProtection `json:"HlsContentProtection,omitempty"` - Name aws.StringValue `json:"Name,omitempty"` - OutputKeys []string `json:"OutputKeys,omitempty"` -} - -// CreateJobRequest is undocumented. -type CreateJobRequest struct { - Input *JobInput `json:"Input"` - Output *CreateJobOutput `json:"Output,omitempty"` - OutputKeyPrefix aws.StringValue `json:"OutputKeyPrefix,omitempty"` - Outputs []CreateJobOutput `json:"Outputs,omitempty"` - PipelineID aws.StringValue `json:"PipelineId"` - Playlists []CreateJobPlaylist `json:"Playlists,omitempty"` - UserMetadata map[string]string `json:"UserMetadata,omitempty"` -} - -// CreateJobResponse is undocumented. -type CreateJobResponse struct { - Job *Job `json:"Job,omitempty"` -} - -// CreatePipelineRequest is undocumented. -type CreatePipelineRequest struct { - AWSKMSKeyARN aws.StringValue `json:"AwsKmsKeyArn,omitempty"` - ContentConfig *PipelineOutputConfig `json:"ContentConfig,omitempty"` - InputBucket aws.StringValue `json:"InputBucket"` - Name aws.StringValue `json:"Name"` - Notifications *Notifications `json:"Notifications,omitempty"` - OutputBucket aws.StringValue `json:"OutputBucket,omitempty"` - Role aws.StringValue `json:"Role"` - ThumbnailConfig *PipelineOutputConfig `json:"ThumbnailConfig,omitempty"` -} - -// CreatePipelineResponse is undocumented. -type CreatePipelineResponse struct { - Pipeline *Pipeline `json:"Pipeline,omitempty"` -} - -// CreatePresetRequest is undocumented. -type CreatePresetRequest struct { - Audio *AudioParameters `json:"Audio,omitempty"` - Container aws.StringValue `json:"Container"` - Description aws.StringValue `json:"Description,omitempty"` - Name aws.StringValue `json:"Name"` - Thumbnails *Thumbnails `json:"Thumbnails,omitempty"` - Video *VideoParameters `json:"Video,omitempty"` -} - -// CreatePresetResponse is undocumented. -type CreatePresetResponse struct { - Preset *Preset `json:"Preset,omitempty"` - Warning aws.StringValue `json:"Warning,omitempty"` -} - -// DeletePipelineRequest is undocumented. -type DeletePipelineRequest struct { - ID aws.StringValue `json:"-"` -} - -// DeletePipelineResponse is undocumented. -type DeletePipelineResponse struct { -} - -// DeletePresetRequest is undocumented. -type DeletePresetRequest struct { - ID aws.StringValue `json:"-"` -} - -// DeletePresetResponse is undocumented. -type DeletePresetResponse struct { -} - -// Encryption is undocumented. -type Encryption struct { - InitializationVector aws.StringValue `json:"InitializationVector,omitempty"` - Key aws.StringValue `json:"Key,omitempty"` - KeyMD5 aws.StringValue `json:"KeyMd5,omitempty"` - Mode aws.StringValue `json:"Mode,omitempty"` -} - -// HlsContentProtection is undocumented. -type HlsContentProtection struct { - InitializationVector aws.StringValue `json:"InitializationVector,omitempty"` - Key aws.StringValue `json:"Key,omitempty"` - KeyMD5 aws.StringValue `json:"KeyMd5,omitempty"` - KeyStoragePolicy aws.StringValue `json:"KeyStoragePolicy,omitempty"` - LicenseAcquisitionURL aws.StringValue `json:"LicenseAcquisitionUrl,omitempty"` - Method aws.StringValue `json:"Method,omitempty"` -} - -// Job is undocumented. -type Job struct { - ARN aws.StringValue `json:"Arn,omitempty"` - ID aws.StringValue `json:"Id,omitempty"` - Input *JobInput `json:"Input,omitempty"` - Output *JobOutput `json:"Output,omitempty"` - OutputKeyPrefix aws.StringValue `json:"OutputKeyPrefix,omitempty"` - Outputs []JobOutput `json:"Outputs,omitempty"` - PipelineID aws.StringValue `json:"PipelineId,omitempty"` - Playlists []Playlist `json:"Playlists,omitempty"` - Status aws.StringValue `json:"Status,omitempty"` - UserMetadata map[string]string `json:"UserMetadata,omitempty"` -} - -// JobAlbumArt is undocumented. -type JobAlbumArt struct { - Artwork []Artwork `json:"Artwork,omitempty"` - MergePolicy aws.StringValue `json:"MergePolicy,omitempty"` -} - -// JobInput is undocumented. -type JobInput struct { - AspectRatio aws.StringValue `json:"AspectRatio,omitempty"` - Container aws.StringValue `json:"Container,omitempty"` - Encryption *Encryption `json:"Encryption,omitempty"` - FrameRate aws.StringValue `json:"FrameRate,omitempty"` - Interlaced aws.StringValue `json:"Interlaced,omitempty"` - Key aws.StringValue `json:"Key,omitempty"` - Resolution aws.StringValue `json:"Resolution,omitempty"` -} - -// JobOutput is undocumented. -type JobOutput struct { - AlbumArt *JobAlbumArt `json:"AlbumArt,omitempty"` - Captions *Captions `json:"Captions,omitempty"` - Composition []Clip `json:"Composition,omitempty"` - Duration aws.LongValue `json:"Duration,omitempty"` - Encryption *Encryption `json:"Encryption,omitempty"` - Height aws.IntegerValue `json:"Height,omitempty"` - ID aws.StringValue `json:"Id,omitempty"` - Key aws.StringValue `json:"Key,omitempty"` - PresetID aws.StringValue `json:"PresetId,omitempty"` - Rotate aws.StringValue `json:"Rotate,omitempty"` - SegmentDuration aws.StringValue `json:"SegmentDuration,omitempty"` - Status aws.StringValue `json:"Status,omitempty"` - StatusDetail aws.StringValue `json:"StatusDetail,omitempty"` - ThumbnailEncryption *Encryption `json:"ThumbnailEncryption,omitempty"` - ThumbnailPattern aws.StringValue `json:"ThumbnailPattern,omitempty"` - Watermarks []JobWatermark `json:"Watermarks,omitempty"` - Width aws.IntegerValue `json:"Width,omitempty"` -} - -// JobWatermark is undocumented. -type JobWatermark struct { - Encryption *Encryption `json:"Encryption,omitempty"` - InputKey aws.StringValue `json:"InputKey,omitempty"` - PresetWatermarkID aws.StringValue `json:"PresetWatermarkId,omitempty"` -} - -// ListJobsByPipelineRequest is undocumented. -type ListJobsByPipelineRequest struct { - Ascending aws.StringValue `json:"-"` - PageToken aws.StringValue `json:"-"` - PipelineID aws.StringValue `json:"-"` -} - -// ListJobsByPipelineResponse is undocumented. -type ListJobsByPipelineResponse struct { - Jobs []Job `json:"Jobs,omitempty"` - NextPageToken aws.StringValue `json:"NextPageToken,omitempty"` -} - -// ListJobsByStatusRequest is undocumented. -type ListJobsByStatusRequest struct { - Ascending aws.StringValue `json:"-"` - PageToken aws.StringValue `json:"-"` - Status aws.StringValue `json:"-"` -} - -// ListJobsByStatusResponse is undocumented. -type ListJobsByStatusResponse struct { - Jobs []Job `json:"Jobs,omitempty"` - NextPageToken aws.StringValue `json:"NextPageToken,omitempty"` -} - -// ListPipelinesRequest is undocumented. -type ListPipelinesRequest struct { - Ascending aws.StringValue `json:"-"` - PageToken aws.StringValue `json:"-"` -} - -// ListPipelinesResponse is undocumented. -type ListPipelinesResponse struct { - NextPageToken aws.StringValue `json:"NextPageToken,omitempty"` - Pipelines []Pipeline `json:"Pipelines,omitempty"` -} - -// ListPresetsRequest is undocumented. -type ListPresetsRequest struct { - Ascending aws.StringValue `json:"-"` - PageToken aws.StringValue `json:"-"` -} - -// ListPresetsResponse is undocumented. -type ListPresetsResponse struct { - NextPageToken aws.StringValue `json:"NextPageToken,omitempty"` - Presets []Preset `json:"Presets,omitempty"` -} - -// Notifications is undocumented. -type Notifications struct { - Completed aws.StringValue `json:"Completed,omitempty"` - Error aws.StringValue `json:"Error,omitempty"` - Progressing aws.StringValue `json:"Progressing,omitempty"` - Warning aws.StringValue `json:"Warning,omitempty"` -} - -// Permission is undocumented. -type Permission struct { - Access []string `json:"Access,omitempty"` - Grantee aws.StringValue `json:"Grantee,omitempty"` - GranteeType aws.StringValue `json:"GranteeType,omitempty"` -} - -// Pipeline is undocumented. -type Pipeline struct { - ARN aws.StringValue `json:"Arn,omitempty"` - AWSKMSKeyARN aws.StringValue `json:"AwsKmsKeyArn,omitempty"` - ContentConfig *PipelineOutputConfig `json:"ContentConfig,omitempty"` - ID aws.StringValue `json:"Id,omitempty"` - InputBucket aws.StringValue `json:"InputBucket,omitempty"` - Name aws.StringValue `json:"Name,omitempty"` - Notifications *Notifications `json:"Notifications,omitempty"` - OutputBucket aws.StringValue `json:"OutputBucket,omitempty"` - Role aws.StringValue `json:"Role,omitempty"` - Status aws.StringValue `json:"Status,omitempty"` - ThumbnailConfig *PipelineOutputConfig `json:"ThumbnailConfig,omitempty"` -} - -// PipelineOutputConfig is undocumented. -type PipelineOutputConfig struct { - Bucket aws.StringValue `json:"Bucket,omitempty"` - Permissions []Permission `json:"Permissions,omitempty"` - StorageClass aws.StringValue `json:"StorageClass,omitempty"` -} - -// Playlist is undocumented. -type Playlist struct { - Format aws.StringValue `json:"Format,omitempty"` - HlsContentProtection *HlsContentProtection `json:"HlsContentProtection,omitempty"` - Name aws.StringValue `json:"Name,omitempty"` - OutputKeys []string `json:"OutputKeys,omitempty"` - Status aws.StringValue `json:"Status,omitempty"` - StatusDetail aws.StringValue `json:"StatusDetail,omitempty"` -} - -// Preset is undocumented. -type Preset struct { - ARN aws.StringValue `json:"Arn,omitempty"` - Audio *AudioParameters `json:"Audio,omitempty"` - Container aws.StringValue `json:"Container,omitempty"` - Description aws.StringValue `json:"Description,omitempty"` - ID aws.StringValue `json:"Id,omitempty"` - Name aws.StringValue `json:"Name,omitempty"` - Thumbnails *Thumbnails `json:"Thumbnails,omitempty"` - Type aws.StringValue `json:"Type,omitempty"` - Video *VideoParameters `json:"Video,omitempty"` -} - -// PresetWatermark is undocumented. -type PresetWatermark struct { - HorizontalAlign aws.StringValue `json:"HorizontalAlign,omitempty"` - HorizontalOffset aws.StringValue `json:"HorizontalOffset,omitempty"` - ID aws.StringValue `json:"Id,omitempty"` - MaxHeight aws.StringValue `json:"MaxHeight,omitempty"` - MaxWidth aws.StringValue `json:"MaxWidth,omitempty"` - Opacity aws.StringValue `json:"Opacity,omitempty"` - SizingPolicy aws.StringValue `json:"SizingPolicy,omitempty"` - Target aws.StringValue `json:"Target,omitempty"` - VerticalAlign aws.StringValue `json:"VerticalAlign,omitempty"` - VerticalOffset aws.StringValue `json:"VerticalOffset,omitempty"` -} - -// ReadJobRequest is undocumented. -type ReadJobRequest struct { - ID aws.StringValue `json:"-"` -} - -// ReadJobResponse is undocumented. -type ReadJobResponse struct { - Job *Job `json:"Job,omitempty"` -} - -// ReadPipelineRequest is undocumented. -type ReadPipelineRequest struct { - ID aws.StringValue `json:"-"` -} - -// ReadPipelineResponse is undocumented. -type ReadPipelineResponse struct { - Pipeline *Pipeline `json:"Pipeline,omitempty"` -} - -// ReadPresetRequest is undocumented. -type ReadPresetRequest struct { - ID aws.StringValue `json:"-"` -} - -// ReadPresetResponse is undocumented. -type ReadPresetResponse struct { - Preset *Preset `json:"Preset,omitempty"` -} - -// TestRoleRequest is undocumented. -type TestRoleRequest struct { - InputBucket aws.StringValue `json:"InputBucket"` - OutputBucket aws.StringValue `json:"OutputBucket"` - Role aws.StringValue `json:"Role"` - Topics []string `json:"Topics"` -} - -// TestRoleResponse is undocumented. -type TestRoleResponse struct { - Messages []string `json:"Messages,omitempty"` - Success aws.StringValue `json:"Success,omitempty"` -} - -// Thumbnails is undocumented. -type Thumbnails struct { - AspectRatio aws.StringValue `json:"AspectRatio,omitempty"` - Format aws.StringValue `json:"Format,omitempty"` - Interval aws.StringValue `json:"Interval,omitempty"` - MaxHeight aws.StringValue `json:"MaxHeight,omitempty"` - MaxWidth aws.StringValue `json:"MaxWidth,omitempty"` - PaddingPolicy aws.StringValue `json:"PaddingPolicy,omitempty"` - Resolution aws.StringValue `json:"Resolution,omitempty"` - SizingPolicy aws.StringValue `json:"SizingPolicy,omitempty"` -} - -// TimeSpan is undocumented. -type TimeSpan struct { - Duration aws.StringValue `json:"Duration,omitempty"` - StartTime aws.StringValue `json:"StartTime,omitempty"` -} - -// UpdatePipelineNotificationsRequest is undocumented. -type UpdatePipelineNotificationsRequest struct { - ID aws.StringValue `json:"-"` - Notifications *Notifications `json:"Notifications"` -} - -// UpdatePipelineNotificationsResponse is undocumented. -type UpdatePipelineNotificationsResponse struct { - Pipeline *Pipeline `json:"Pipeline,omitempty"` -} - -// UpdatePipelineRequest is undocumented. -type UpdatePipelineRequest struct { - AWSKMSKeyARN aws.StringValue `json:"AwsKmsKeyArn,omitempty"` - ContentConfig *PipelineOutputConfig `json:"ContentConfig,omitempty"` - ID aws.StringValue `json:"-"` - InputBucket aws.StringValue `json:"InputBucket,omitempty"` - Name aws.StringValue `json:"Name,omitempty"` - Notifications *Notifications `json:"Notifications,omitempty"` - Role aws.StringValue `json:"Role,omitempty"` - ThumbnailConfig *PipelineOutputConfig `json:"ThumbnailConfig,omitempty"` -} - -// UpdatePipelineResponse is undocumented. -type UpdatePipelineResponse struct { - Pipeline *Pipeline `json:"Pipeline,omitempty"` -} - -// UpdatePipelineStatusRequest is undocumented. -type UpdatePipelineStatusRequest struct { - ID aws.StringValue `json:"-"` - Status aws.StringValue `json:"Status"` -} - -// UpdatePipelineStatusResponse is undocumented. -type UpdatePipelineStatusResponse struct { - Pipeline *Pipeline `json:"Pipeline,omitempty"` -} - -// VideoParameters is undocumented. -type VideoParameters struct { - AspectRatio aws.StringValue `json:"AspectRatio,omitempty"` - BitRate aws.StringValue `json:"BitRate,omitempty"` - Codec aws.StringValue `json:"Codec,omitempty"` - CodecOptions map[string]string `json:"CodecOptions,omitempty"` - DisplayAspectRatio aws.StringValue `json:"DisplayAspectRatio,omitempty"` - FixedGOP aws.StringValue `json:"FixedGOP,omitempty"` - FrameRate aws.StringValue `json:"FrameRate,omitempty"` - KeyframesMaxDist aws.StringValue `json:"KeyframesMaxDist,omitempty"` - MaxFrameRate aws.StringValue `json:"MaxFrameRate,omitempty"` - MaxHeight aws.StringValue `json:"MaxHeight,omitempty"` - MaxWidth aws.StringValue `json:"MaxWidth,omitempty"` - PaddingPolicy aws.StringValue `json:"PaddingPolicy,omitempty"` - Resolution aws.StringValue `json:"Resolution,omitempty"` - SizingPolicy aws.StringValue `json:"SizingPolicy,omitempty"` - Watermarks []PresetWatermark `json:"Watermarks,omitempty"` -} - -// avoid errors if the packages aren't referenced -var _ time.Time - -var _ bytes.Reader -var _ url.URL -var _ fmt.Stringer -var _ strings.Reader -var _ strconv.NumError -var _ = ioutil.Discard -var _ json.RawMessage diff --git a/src/github.com/getlantern/aws-sdk-go/gen/elb/elb.go b/src/github.com/getlantern/aws-sdk-go/gen/elb/elb.go deleted file mode 100644 index 892a735c2a..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/gen/elb/elb.go +++ /dev/null @@ -1,1037 +0,0 @@ -// THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. - -// Package elb provides a client for Elastic Load Balancing. -package elb - -import ( - "net/http" - "time" - - "github.com/awslabs/aws-sdk-go/aws" - "github.com/awslabs/aws-sdk-go/gen/endpoints" -) - -import ( - "encoding/xml" - "io" -) - -// ELB is a client for Elastic Load Balancing. -type ELB struct { - client *aws.QueryClient -} - -// New returns a new ELB client. -func New(creds aws.CredentialsProvider, region string, client *http.Client) *ELB { - if client == nil { - client = http.DefaultClient - } - - endpoint, service, region := endpoints.Lookup("elasticloadbalancing", region) - - return &ELB{ - client: &aws.QueryClient{ - Context: aws.Context{ - Credentials: creds, - Service: service, - Region: region, - }, - Client: client, - Endpoint: endpoint, - APIVersion: "2012-06-01", - }, - } -} - -// AddTags adds one or more tags for the specified load balancer. Each load -// balancer can have a maximum of 10 tags. Each tag consists of a key and -// an optional value. Tag keys must be unique for each load balancer. If a -// tag with the same key is already associated with the load balancer, this -// action will update the value of the key. For more information, see -// Tagging in the Elastic Load Balancing Developer Guide -func (c *ELB) AddTags(req *AddTagsInput) (resp *AddTagsResult, err error) { - resp = &AddTagsResult{} - err = c.client.Do("AddTags", "POST", "/", req, resp) - return -} - -// ApplySecurityGroupsToLoadBalancer associates one or more security groups -// with your load balancer in Amazon Virtual Private Cloud (Amazon The -// provided security group IDs will override any currently applied security -// groups. For more information, see Manage Security Groups in Amazon in -// the Elastic Load Balancing Developer Guide -func (c *ELB) ApplySecurityGroupsToLoadBalancer(req *ApplySecurityGroupsToLoadBalancerInput) (resp *ApplySecurityGroupsToLoadBalancerResult, err error) { - resp = &ApplySecurityGroupsToLoadBalancerResult{} - err = c.client.Do("ApplySecurityGroupsToLoadBalancer", "POST", "/", req, resp) - return -} - -// AttachLoadBalancerToSubnets adds one or more subnets to the set of -// configured subnets in the Amazon Virtual Private Cloud (Amazon for the -// load balancer. The load balancers evenly distribute requests across all -// of the registered subnets. For more information, see Deploy Elastic Load -// Balancing in Amazon in the Elastic Load Balancing Developer Guide . -func (c *ELB) AttachLoadBalancerToSubnets(req *AttachLoadBalancerToSubnetsInput) (resp *AttachLoadBalancerToSubnetsResult, err error) { - resp = &AttachLoadBalancerToSubnetsResult{} - err = c.client.Do("AttachLoadBalancerToSubnets", "POST", "/", req, resp) - return -} - -// ConfigureHealthCheck specifies the health check settings to use for -// evaluating the health state of your back-end instances. For more -// information, see Health Check in the Elastic Load Balancing Developer -// Guide -func (c *ELB) ConfigureHealthCheck(req *ConfigureHealthCheckInput) (resp *ConfigureHealthCheckResult, err error) { - resp = &ConfigureHealthCheckResult{} - err = c.client.Do("ConfigureHealthCheck", "POST", "/", req, resp) - return -} - -// CreateAppCookieStickinessPolicy generates a stickiness policy with -// sticky session lifetimes that follow that of an application-generated -// cookie. This policy can be associated only with listeners. This policy -// is similar to the policy created by CreateLBCookieStickinessPolicy , -// except that the lifetime of the special Elastic Load Balancing cookie -// follows the lifetime of the application-generated cookie specified in -// the policy configuration. The load balancer only inserts a new -// stickiness cookie when the application response includes a new -// application cookie. If the application cookie is explicitly removed or -// expires, the session stops being sticky until a new application cookie -// is issued. An application client must receive and send two cookies: the -// application-generated cookie and the special Elastic Load Balancing -// cookie named . This is the default behavior for many common web -// browsers. For more information, see Enabling Application-Controlled -// Session Stickiness in the Elastic Load Balancing Developer Guide -func (c *ELB) CreateAppCookieStickinessPolicy(req *CreateAppCookieStickinessPolicyInput) (resp *CreateAppCookieStickinessPolicyResult, err error) { - resp = &CreateAppCookieStickinessPolicyResult{} - err = c.client.Do("CreateAppCookieStickinessPolicy", "POST", "/", req, resp) - return -} - -// CreateLBCookieStickinessPolicy generates a stickiness policy with sticky -// session lifetimes controlled by the lifetime of the browser (user-agent) -// or a specified expiration period. This policy can be associated only -// with listeners. When a load balancer implements this policy, the load -// balancer uses a special cookie to track the backend server instance for -// each request. When the load balancer receives a request, it first checks -// to see if this cookie is present in the request. If so, the load -// balancer sends the request to the application server specified in the -// cookie. If not, the load balancer sends the request to a server that is -// chosen based on the existing load balancing algorithm. A cookie is -// inserted into the response for binding subsequent requests from the same -// user to that server. The validity of the cookie is based on the cookie -// expiration time, which is specified in the policy configuration. For -// more information, see Enabling Duration-Based Session Stickiness in the -// Elastic Load Balancing Developer Guide -func (c *ELB) CreateLBCookieStickinessPolicy(req *CreateLBCookieStickinessPolicyInput) (resp *CreateLBCookieStickinessPolicyResult, err error) { - resp = &CreateLBCookieStickinessPolicyResult{} - err = c.client.Do("CreateLBCookieStickinessPolicy", "POST", "/", req, resp) - return -} - -// CreateLoadBalancer creates a new load balancer. After the call has -// completed successfully, a new load balancer is created with a unique -// Domain Name Service name. The DNS name includes the name of the AWS -// region in which the load balance was created. For example, if your load -// balancer was created in the United States, the DNS name might end with -// either of the following: us-east-1.elb.amazonaws.com (for the Northern -// Virginia region) us-west-1.elb.amazonaws.com (for the Northern -// California region) For information about the AWS regions supported by -// Elastic Load Balancing, see Regions and Endpoints You can create up to -// 20 load balancers per region per account. Elastic Load Balancing -// supports load balancing your Amazon EC2 instances launched within any -// one of the following platforms: For information on creating and managing -// your load balancers in EC2-Classic, see Deploy Elastic Load Balancing in -// Amazon EC2-Classic For information on creating and managing your load -// balancers in EC2-VPC, see Deploy Elastic Load Balancing in Amazon -func (c *ELB) CreateLoadBalancer(req *CreateAccessPointInput) (resp *CreateLoadBalancerResult, err error) { - resp = &CreateLoadBalancerResult{} - err = c.client.Do("CreateLoadBalancer", "POST", "/", req, resp) - return -} - -// CreateLoadBalancerListeners creates one or more listeners on a load -// balancer for the specified port. If a listener with the given port does -// not already exist, it will be created; otherwise, the properties of the -// new listener must match the properties of the existing listener. For -// more information, see Add a Listener to Your Load Balancer in the -// Elastic Load Balancing Developer Guide -func (c *ELB) CreateLoadBalancerListeners(req *CreateLoadBalancerListenerInput) (resp *CreateLoadBalancerListenersResult, err error) { - resp = &CreateLoadBalancerListenersResult{} - err = c.client.Do("CreateLoadBalancerListeners", "POST", "/", req, resp) - return -} - -// CreateLoadBalancerPolicy creates a new policy that contains the -// necessary attributes depending on the policy type. Policies are settings -// that are saved for your load balancer and that can be applied to the -// front-end listener, or the back-end application server, depending on -// your policy type. -func (c *ELB) CreateLoadBalancerPolicy(req *CreateLoadBalancerPolicyInput) (resp *CreateLoadBalancerPolicyResult, err error) { - resp = &CreateLoadBalancerPolicyResult{} - err = c.client.Do("CreateLoadBalancerPolicy", "POST", "/", req, resp) - return -} - -// DeleteLoadBalancer deletes the specified load balancer. If attempting to -// recreate the load balancer, you must reconfigure all the settings. The -// DNS name associated with a deleted load balancer will no longer be -// usable. Once deleted, the name and associated DNS record of the load -// balancer no longer exist and traffic sent to any of its IP addresses -// will no longer be delivered to back-end instances. To successfully call -// this you must provide the same account credentials as were used to -// create the load balancer. By design, if the load balancer does not exist -// or has already been deleted, a call to DeleteLoadBalancer action still -// succeeds. -func (c *ELB) DeleteLoadBalancer(req *DeleteAccessPointInput) (resp *DeleteLoadBalancerResult, err error) { - resp = &DeleteLoadBalancerResult{} - err = c.client.Do("DeleteLoadBalancer", "POST", "/", req, resp) - return -} - -// DeleteLoadBalancerListeners deletes listeners from the load balancer for -// the specified port. -func (c *ELB) DeleteLoadBalancerListeners(req *DeleteLoadBalancerListenerInput) (resp *DeleteLoadBalancerListenersResult, err error) { - resp = &DeleteLoadBalancerListenersResult{} - err = c.client.Do("DeleteLoadBalancerListeners", "POST", "/", req, resp) - return -} - -// DeleteLoadBalancerPolicy deletes a policy from the load balancer. The -// specified policy must not be enabled for any listeners. -func (c *ELB) DeleteLoadBalancerPolicy(req *DeleteLoadBalancerPolicyInput) (resp *DeleteLoadBalancerPolicyResult, err error) { - resp = &DeleteLoadBalancerPolicyResult{} - err = c.client.Do("DeleteLoadBalancerPolicy", "POST", "/", req, resp) - return -} - -// DeregisterInstancesFromLoadBalancer deregisters instances from the load -// balancer. Once the instance is deregistered, it will stop receiving -// traffic from the load balancer. In order to successfully call this the -// same account credentials as those used to create the load balancer must -// be provided. For more information, see De-register and Register Amazon -// EC2 Instances in the Elastic Load Balancing Developer Guide You can use -// DescribeLoadBalancers to verify if the instance is deregistered from the -// load balancer. -func (c *ELB) DeregisterInstancesFromLoadBalancer(req *DeregisterEndPointsInput) (resp *DeregisterInstancesFromLoadBalancerResult, err error) { - resp = &DeregisterInstancesFromLoadBalancerResult{} - err = c.client.Do("DeregisterInstancesFromLoadBalancer", "POST", "/", req, resp) - return -} - -// DescribeInstanceHealth returns the current state of the specified -// instances registered with the specified load balancer. If no instances -// are specified, the state of all the instances registered with the load -// balancer is returned. You must provide the same account credentials as -// those that were used to create the load balancer. -func (c *ELB) DescribeInstanceHealth(req *DescribeEndPointStateInput) (resp *DescribeInstanceHealthResult, err error) { - resp = &DescribeInstanceHealthResult{} - err = c.client.Do("DescribeInstanceHealth", "POST", "/", req, resp) - return -} - -// DescribeLoadBalancerAttributes returns detailed information about all of -// the attributes associated with the specified load balancer. -func (c *ELB) DescribeLoadBalancerAttributes(req *DescribeLoadBalancerAttributesInput) (resp *DescribeLoadBalancerAttributesResult, err error) { - resp = &DescribeLoadBalancerAttributesResult{} - err = c.client.Do("DescribeLoadBalancerAttributes", "POST", "/", req, resp) - return -} - -// DescribeLoadBalancerPolicies returns detailed descriptions of the -// policies. If you specify a load balancer name, the action returns the -// descriptions of all the policies created for the load balancer. If you -// specify a policy name associated with your load balancer, the action -// returns the description of that policy. If you don't specify a load -// balancer name, the action returns descriptions of the specified sample -// policies, or descriptions of all the sample policies. The names of the -// sample policies have the ELBSample- prefix. -func (c *ELB) DescribeLoadBalancerPolicies(req *DescribeLoadBalancerPoliciesInput) (resp *DescribeLoadBalancerPoliciesResult, err error) { - resp = &DescribeLoadBalancerPoliciesResult{} - err = c.client.Do("DescribeLoadBalancerPolicies", "POST", "/", req, resp) - return -} - -// DescribeLoadBalancerPolicyTypes returns meta-information on the -// specified load balancer policies defined by the Elastic Load Balancing -// service. The policy types that are returned from this action can be used -// in a CreateLoadBalancerPolicy action to instantiate specific policy -// configurations that will be applied to a load balancer. -func (c *ELB) DescribeLoadBalancerPolicyTypes(req *DescribeLoadBalancerPolicyTypesInput) (resp *DescribeLoadBalancerPolicyTypesResult, err error) { - resp = &DescribeLoadBalancerPolicyTypesResult{} - err = c.client.Do("DescribeLoadBalancerPolicyTypes", "POST", "/", req, resp) - return -} - -// DescribeLoadBalancers returns detailed configuration information for all -// the load balancers created for the account. If you specify load balancer -// names, the action returns configuration information of the specified -// load balancers. In order to retrieve this information, you must provide -// the same account credentials that was used to create the load balancer. -func (c *ELB) DescribeLoadBalancers(req *DescribeAccessPointsInput) (resp *DescribeLoadBalancersResult, err error) { - resp = &DescribeLoadBalancersResult{} - err = c.client.Do("DescribeLoadBalancers", "POST", "/", req, resp) - return -} - -// DescribeTags describes the tags associated with one or more load -// balancers. -func (c *ELB) DescribeTags(req *DescribeTagsInput) (resp *DescribeTagsResult, err error) { - resp = &DescribeTagsResult{} - err = c.client.Do("DescribeTags", "POST", "/", req, resp) - return -} - -// DetachLoadBalancerFromSubnets removes subnets from the set of configured -// subnets in the Amazon Virtual Private Cloud (Amazon for the load -// balancer. After a subnet is removed all of the EC2 instances registered -// with the load balancer that are in the removed subnet will go into the -// OutOfService state. When a subnet is removed, the load balancer will -// balance the traffic among the remaining routable subnets for the load -// balancer. -func (c *ELB) DetachLoadBalancerFromSubnets(req *DetachLoadBalancerFromSubnetsInput) (resp *DetachLoadBalancerFromSubnetsResult, err error) { - resp = &DetachLoadBalancerFromSubnetsResult{} - err = c.client.Do("DetachLoadBalancerFromSubnets", "POST", "/", req, resp) - return -} - -// DisableAvailabilityZonesForLoadBalancer removes the specified EC2 -// Availability Zones from the set of configured Availability Zones for the -// load balancer. There must be at least one Availability Zone registered -// with a load balancer at all times. Once an Availability Zone is removed, -// all the instances registered with the load balancer that are in the -// removed Availability Zone go into the OutOfService state. Upon -// Availability Zone removal, the load balancer attempts to equally balance -// the traffic among its remaining usable Availability Zones. Trying to -// remove an Availability Zone that was not associated with the load -// balancer does nothing. For more information, see Disable an Availability -// Zone from a Load-Balanced Application in the Elastic Load Balancing -// Developer Guide -func (c *ELB) DisableAvailabilityZonesForLoadBalancer(req *RemoveAvailabilityZonesInput) (resp *DisableAvailabilityZonesForLoadBalancerResult, err error) { - resp = &DisableAvailabilityZonesForLoadBalancerResult{} - err = c.client.Do("DisableAvailabilityZonesForLoadBalancer", "POST", "/", req, resp) - return -} - -// EnableAvailabilityZonesForLoadBalancer adds one or more EC2 Availability -// Zones to the load balancer. The load balancer evenly distributes -// requests across all its registered Availability Zones that contain -// instances. The new EC2 Availability Zones to be added must be in the -// same EC2 Region as the Availability Zones for which the load balancer -// was created. For more information, see Expand a Load Balanced -// Application to an Additional Availability Zone in the Elastic Load -// Balancing Developer Guide -func (c *ELB) EnableAvailabilityZonesForLoadBalancer(req *AddAvailabilityZonesInput) (resp *EnableAvailabilityZonesForLoadBalancerResult, err error) { - resp = &EnableAvailabilityZonesForLoadBalancerResult{} - err = c.client.Do("EnableAvailabilityZonesForLoadBalancer", "POST", "/", req, resp) - return -} - -// ModifyLoadBalancerAttributes modifies the attributes of a specified load -// balancer. You can modify the load balancer attributes, such as -// AccessLogs , ConnectionDraining , and CrossZoneLoadBalancing by either -// enabling or disabling them. Or, you can modify the load balancer -// attribute ConnectionSettings by specifying an idle connection timeout -// value for your load balancer. For more information, see the following: -func (c *ELB) ModifyLoadBalancerAttributes(req *ModifyLoadBalancerAttributesInput) (resp *ModifyLoadBalancerAttributesResult, err error) { - resp = &ModifyLoadBalancerAttributesResult{} - err = c.client.Do("ModifyLoadBalancerAttributes", "POST", "/", req, resp) - return -} - -// RegisterInstancesWithLoadBalancer adds new instances to the load -// balancer. Once the instance is registered, it starts receiving traffic -// and requests from the load balancer. Any instance that is not in any of -// the Availability Zones registered for the load balancer will be moved to -// the OutOfService state. It will move to the InService state when the -// Availability Zone is added to the load balancer. When an instance -// registered with a load balancer is stopped and then restarted, the IP -// addresses associated with the instance changes. Elastic Load Balancing -// cannot recognize the new IP address, which prevents it from routing -// traffic to the instances. We recommend that you de-register your Amazon -// EC2 instances from your load balancer after you stop your instance, and -// then register the load balancer with your instance after you've -// restarted. To de-register your instances from load balancer, use -// DeregisterInstancesFromLoadBalancer action. For more information, see -// De-register and Register Amazon EC2 Instances in the Elastic Load -// Balancing Developer Guide In order for this call to be successful, you -// must provide the same account credentials as those that were used to -// create the load balancer. Completion of this API does not guarantee that -// operation has completed. Rather, it means that the request has been -// registered and the changes will happen shortly. You can use -// DescribeLoadBalancers or DescribeInstanceHealth action to check the -// state of the newly registered instances. -func (c *ELB) RegisterInstancesWithLoadBalancer(req *RegisterEndPointsInput) (resp *RegisterInstancesWithLoadBalancerResult, err error) { - resp = &RegisterInstancesWithLoadBalancerResult{} - err = c.client.Do("RegisterInstancesWithLoadBalancer", "POST", "/", req, resp) - return -} - -// RemoveTags removes one or more tags from the specified load balancer. -func (c *ELB) RemoveTags(req *RemoveTagsInput) (resp *RemoveTagsResult, err error) { - resp = &RemoveTagsResult{} - err = c.client.Do("RemoveTags", "POST", "/", req, resp) - return -} - -// SetLoadBalancerListenerSSLCertificate sets the certificate that -// terminates the specified listener's SSL connections. The specified -// certificate replaces any prior certificate that was used on the same -// load balancer and port. For more information on updating your SSL -// certificate, see Updating an SSL Certificate for a Load Balancer in the -// Elastic Load Balancing Developer Guide -func (c *ELB) SetLoadBalancerListenerSSLCertificate(req *SetLoadBalancerListenerSSLCertificateInput) (resp *SetLoadBalancerListenerSSLCertificateResult, err error) { - resp = &SetLoadBalancerListenerSSLCertificateResult{} - err = c.client.Do("SetLoadBalancerListenerSSLCertificate", "POST", "/", req, resp) - return -} - -// SetLoadBalancerPoliciesForBackendServer replaces the current set of -// policies associated with a port on which the back-end server is -// listening with a new set of policies. After the policies have been -// created using CreateLoadBalancerPolicy , they can be applied here as a -// list. At this time, only the back-end server authentication policy type -// can be applied to the back-end ports; this policy type is composed of -// multiple public key policies. The -// SetLoadBalancerPoliciesForBackendServer replaces the current set of -// policies associated with the specified instance port. Every time you use -// this action to enable the policies, use the PolicyNames parameter to -// list all the policies you want to enable. You can use -// DescribeLoadBalancers or DescribeLoadBalancerPolicies action to verify -// that the policy has been associated with the back-end server. -func (c *ELB) SetLoadBalancerPoliciesForBackendServer(req *SetLoadBalancerPoliciesForBackendServerInput) (resp *SetLoadBalancerPoliciesForBackendServerResult, err error) { - resp = &SetLoadBalancerPoliciesForBackendServerResult{} - err = c.client.Do("SetLoadBalancerPoliciesForBackendServer", "POST", "/", req, resp) - return -} - -// SetLoadBalancerPoliciesOfListener associates, updates, or disables a -// policy with a listener on the load balancer. You can associate multiple -// policies with a listener. -func (c *ELB) SetLoadBalancerPoliciesOfListener(req *SetLoadBalancerPoliciesOfListenerInput) (resp *SetLoadBalancerPoliciesOfListenerResult, err error) { - resp = &SetLoadBalancerPoliciesOfListenerResult{} - err = c.client.Do("SetLoadBalancerPoliciesOfListener", "POST", "/", req, resp) - return -} - -// AccessLog is undocumented. -type AccessLog struct { - EmitInterval aws.IntegerValue `query:"EmitInterval" xml:"EmitInterval"` - Enabled aws.BooleanValue `query:"Enabled" xml:"Enabled"` - S3BucketName aws.StringValue `query:"S3BucketName" xml:"S3BucketName"` - S3BucketPrefix aws.StringValue `query:"S3BucketPrefix" xml:"S3BucketPrefix"` -} - -// AddAvailabilityZonesInput is undocumented. -type AddAvailabilityZonesInput struct { - AvailabilityZones []string `query:"AvailabilityZones.member" xml:"AvailabilityZones>member"` - LoadBalancerName aws.StringValue `query:"LoadBalancerName" xml:"LoadBalancerName"` -} - -// AddAvailabilityZonesOutput is undocumented. -type AddAvailabilityZonesOutput struct { - AvailabilityZones []string `query:"AvailabilityZones.member" xml:"EnableAvailabilityZonesForLoadBalancerResult>AvailabilityZones>member"` -} - -// AddTagsInput is undocumented. -type AddTagsInput struct { - LoadBalancerNames []string `query:"LoadBalancerNames.member" xml:"LoadBalancerNames>member"` - Tags []Tag `query:"Tags.member" xml:"Tags>member"` -} - -// AddTagsOutput is undocumented. -type AddTagsOutput struct { -} - -// AdditionalAttribute is undocumented. -type AdditionalAttribute struct { - Key aws.StringValue `query:"Key" xml:"Key"` - Value aws.StringValue `query:"Value" xml:"Value"` -} - -// AppCookieStickinessPolicy is undocumented. -type AppCookieStickinessPolicy struct { - CookieName aws.StringValue `query:"CookieName" xml:"CookieName"` - PolicyName aws.StringValue `query:"PolicyName" xml:"PolicyName"` -} - -// ApplySecurityGroupsToLoadBalancerInput is undocumented. -type ApplySecurityGroupsToLoadBalancerInput struct { - LoadBalancerName aws.StringValue `query:"LoadBalancerName" xml:"LoadBalancerName"` - SecurityGroups []string `query:"SecurityGroups.member" xml:"SecurityGroups>member"` -} - -// ApplySecurityGroupsToLoadBalancerOutput is undocumented. -type ApplySecurityGroupsToLoadBalancerOutput struct { - SecurityGroups []string `query:"SecurityGroups.member" xml:"ApplySecurityGroupsToLoadBalancerResult>SecurityGroups>member"` -} - -// AttachLoadBalancerToSubnetsInput is undocumented. -type AttachLoadBalancerToSubnetsInput struct { - LoadBalancerName aws.StringValue `query:"LoadBalancerName" xml:"LoadBalancerName"` - Subnets []string `query:"Subnets.member" xml:"Subnets>member"` -} - -// AttachLoadBalancerToSubnetsOutput is undocumented. -type AttachLoadBalancerToSubnetsOutput struct { - Subnets []string `query:"Subnets.member" xml:"AttachLoadBalancerToSubnetsResult>Subnets>member"` -} - -// BackendServerDescription is undocumented. -type BackendServerDescription struct { - InstancePort aws.IntegerValue `query:"InstancePort" xml:"InstancePort"` - PolicyNames []string `query:"PolicyNames.member" xml:"PolicyNames>member"` -} - -// ConfigureHealthCheckInput is undocumented. -type ConfigureHealthCheckInput struct { - HealthCheck *HealthCheck `query:"HealthCheck" xml:"HealthCheck"` - LoadBalancerName aws.StringValue `query:"LoadBalancerName" xml:"LoadBalancerName"` -} - -// ConfigureHealthCheckOutput is undocumented. -type ConfigureHealthCheckOutput struct { - HealthCheck *HealthCheck `query:"HealthCheck" xml:"ConfigureHealthCheckResult>HealthCheck"` -} - -// ConnectionDraining is undocumented. -type ConnectionDraining struct { - Enabled aws.BooleanValue `query:"Enabled" xml:"Enabled"` - Timeout aws.IntegerValue `query:"Timeout" xml:"Timeout"` -} - -// ConnectionSettings is undocumented. -type ConnectionSettings struct { - IdleTimeout aws.IntegerValue `query:"IdleTimeout" xml:"IdleTimeout"` -} - -// CreateAccessPointInput is undocumented. -type CreateAccessPointInput struct { - AvailabilityZones []string `query:"AvailabilityZones.member" xml:"AvailabilityZones>member"` - Listeners []Listener `query:"Listeners.member" xml:"Listeners>member"` - LoadBalancerName aws.StringValue `query:"LoadBalancerName" xml:"LoadBalancerName"` - Scheme aws.StringValue `query:"Scheme" xml:"Scheme"` - SecurityGroups []string `query:"SecurityGroups.member" xml:"SecurityGroups>member"` - Subnets []string `query:"Subnets.member" xml:"Subnets>member"` - Tags []Tag `query:"Tags.member" xml:"Tags>member"` -} - -// CreateAccessPointOutput is undocumented. -type CreateAccessPointOutput struct { - DNSName aws.StringValue `query:"DNSName" xml:"CreateLoadBalancerResult>DNSName"` -} - -// CreateAppCookieStickinessPolicyInput is undocumented. -type CreateAppCookieStickinessPolicyInput struct { - CookieName aws.StringValue `query:"CookieName" xml:"CookieName"` - LoadBalancerName aws.StringValue `query:"LoadBalancerName" xml:"LoadBalancerName"` - PolicyName aws.StringValue `query:"PolicyName" xml:"PolicyName"` -} - -// CreateAppCookieStickinessPolicyOutput is undocumented. -type CreateAppCookieStickinessPolicyOutput struct { -} - -// CreateLBCookieStickinessPolicyInput is undocumented. -type CreateLBCookieStickinessPolicyInput struct { - CookieExpirationPeriod aws.LongValue `query:"CookieExpirationPeriod" xml:"CookieExpirationPeriod"` - LoadBalancerName aws.StringValue `query:"LoadBalancerName" xml:"LoadBalancerName"` - PolicyName aws.StringValue `query:"PolicyName" xml:"PolicyName"` -} - -// CreateLBCookieStickinessPolicyOutput is undocumented. -type CreateLBCookieStickinessPolicyOutput struct { -} - -// CreateLoadBalancerListenerInput is undocumented. -type CreateLoadBalancerListenerInput struct { - Listeners []Listener `query:"Listeners.member" xml:"Listeners>member"` - LoadBalancerName aws.StringValue `query:"LoadBalancerName" xml:"LoadBalancerName"` -} - -// CreateLoadBalancerListenerOutput is undocumented. -type CreateLoadBalancerListenerOutput struct { -} - -// CreateLoadBalancerPolicyInput is undocumented. -type CreateLoadBalancerPolicyInput struct { - LoadBalancerName aws.StringValue `query:"LoadBalancerName" xml:"LoadBalancerName"` - PolicyAttributes []PolicyAttribute `query:"PolicyAttributes.member" xml:"PolicyAttributes>member"` - PolicyName aws.StringValue `query:"PolicyName" xml:"PolicyName"` - PolicyTypeName aws.StringValue `query:"PolicyTypeName" xml:"PolicyTypeName"` -} - -// CreateLoadBalancerPolicyOutput is undocumented. -type CreateLoadBalancerPolicyOutput struct { -} - -// CrossZoneLoadBalancing is undocumented. -type CrossZoneLoadBalancing struct { - Enabled aws.BooleanValue `query:"Enabled" xml:"Enabled"` -} - -// DeleteAccessPointInput is undocumented. -type DeleteAccessPointInput struct { - LoadBalancerName aws.StringValue `query:"LoadBalancerName" xml:"LoadBalancerName"` -} - -// DeleteAccessPointOutput is undocumented. -type DeleteAccessPointOutput struct { -} - -// DeleteLoadBalancerListenerInput is undocumented. -type DeleteLoadBalancerListenerInput struct { - LoadBalancerName aws.StringValue `query:"LoadBalancerName" xml:"LoadBalancerName"` - LoadBalancerPorts []int `query:"LoadBalancerPorts.member" xml:"LoadBalancerPorts>member"` -} - -// DeleteLoadBalancerListenerOutput is undocumented. -type DeleteLoadBalancerListenerOutput struct { -} - -// DeleteLoadBalancerPolicyInput is undocumented. -type DeleteLoadBalancerPolicyInput struct { - LoadBalancerName aws.StringValue `query:"LoadBalancerName" xml:"LoadBalancerName"` - PolicyName aws.StringValue `query:"PolicyName" xml:"PolicyName"` -} - -// DeleteLoadBalancerPolicyOutput is undocumented. -type DeleteLoadBalancerPolicyOutput struct { -} - -// DeregisterEndPointsInput is undocumented. -type DeregisterEndPointsInput struct { - Instances []Instance `query:"Instances.member" xml:"Instances>member"` - LoadBalancerName aws.StringValue `query:"LoadBalancerName" xml:"LoadBalancerName"` -} - -// DeregisterEndPointsOutput is undocumented. -type DeregisterEndPointsOutput struct { - Instances []Instance `query:"Instances.member" xml:"DeregisterInstancesFromLoadBalancerResult>Instances>member"` -} - -// DescribeAccessPointsInput is undocumented. -type DescribeAccessPointsInput struct { - LoadBalancerNames []string `query:"LoadBalancerNames.member" xml:"LoadBalancerNames>member"` - Marker aws.StringValue `query:"Marker" xml:"Marker"` - PageSize aws.IntegerValue `query:"PageSize" xml:"PageSize"` -} - -// DescribeAccessPointsOutput is undocumented. -type DescribeAccessPointsOutput struct { - LoadBalancerDescriptions []LoadBalancerDescription `query:"LoadBalancerDescriptions.member" xml:"DescribeLoadBalancersResult>LoadBalancerDescriptions>member"` - NextMarker aws.StringValue `query:"NextMarker" xml:"DescribeLoadBalancersResult>NextMarker"` -} - -// DescribeEndPointStateInput is undocumented. -type DescribeEndPointStateInput struct { - Instances []Instance `query:"Instances.member" xml:"Instances>member"` - LoadBalancerName aws.StringValue `query:"LoadBalancerName" xml:"LoadBalancerName"` -} - -// DescribeEndPointStateOutput is undocumented. -type DescribeEndPointStateOutput struct { - InstanceStates []InstanceState `query:"InstanceStates.member" xml:"DescribeInstanceHealthResult>InstanceStates>member"` -} - -// DescribeLoadBalancerAttributesInput is undocumented. -type DescribeLoadBalancerAttributesInput struct { - LoadBalancerName aws.StringValue `query:"LoadBalancerName" xml:"LoadBalancerName"` -} - -// DescribeLoadBalancerAttributesOutput is undocumented. -type DescribeLoadBalancerAttributesOutput struct { - LoadBalancerAttributes *LoadBalancerAttributes `query:"LoadBalancerAttributes" xml:"DescribeLoadBalancerAttributesResult>LoadBalancerAttributes"` -} - -// DescribeLoadBalancerPoliciesInput is undocumented. -type DescribeLoadBalancerPoliciesInput struct { - LoadBalancerName aws.StringValue `query:"LoadBalancerName" xml:"LoadBalancerName"` - PolicyNames []string `query:"PolicyNames.member" xml:"PolicyNames>member"` -} - -// DescribeLoadBalancerPoliciesOutput is undocumented. -type DescribeLoadBalancerPoliciesOutput struct { - PolicyDescriptions []PolicyDescription `query:"PolicyDescriptions.member" xml:"DescribeLoadBalancerPoliciesResult>PolicyDescriptions>member"` -} - -// DescribeLoadBalancerPolicyTypesInput is undocumented. -type DescribeLoadBalancerPolicyTypesInput struct { - PolicyTypeNames []string `query:"PolicyTypeNames.member" xml:"PolicyTypeNames>member"` -} - -// DescribeLoadBalancerPolicyTypesOutput is undocumented. -type DescribeLoadBalancerPolicyTypesOutput struct { - PolicyTypeDescriptions []PolicyTypeDescription `query:"PolicyTypeDescriptions.member" xml:"DescribeLoadBalancerPolicyTypesResult>PolicyTypeDescriptions>member"` -} - -// DescribeTagsInput is undocumented. -type DescribeTagsInput struct { - LoadBalancerNames []string `query:"LoadBalancerNames.member" xml:"LoadBalancerNames>member"` -} - -// DescribeTagsOutput is undocumented. -type DescribeTagsOutput struct { - TagDescriptions []TagDescription `query:"TagDescriptions.member" xml:"DescribeTagsResult>TagDescriptions>member"` -} - -// DetachLoadBalancerFromSubnetsInput is undocumented. -type DetachLoadBalancerFromSubnetsInput struct { - LoadBalancerName aws.StringValue `query:"LoadBalancerName" xml:"LoadBalancerName"` - Subnets []string `query:"Subnets.member" xml:"Subnets>member"` -} - -// DetachLoadBalancerFromSubnetsOutput is undocumented. -type DetachLoadBalancerFromSubnetsOutput struct { - Subnets []string `query:"Subnets.member" xml:"DetachLoadBalancerFromSubnetsResult>Subnets>member"` -} - -// HealthCheck is undocumented. -type HealthCheck struct { - HealthyThreshold aws.IntegerValue `query:"HealthyThreshold" xml:"HealthyThreshold"` - Interval aws.IntegerValue `query:"Interval" xml:"Interval"` - Target aws.StringValue `query:"Target" xml:"Target"` - Timeout aws.IntegerValue `query:"Timeout" xml:"Timeout"` - UnhealthyThreshold aws.IntegerValue `query:"UnhealthyThreshold" xml:"UnhealthyThreshold"` -} - -// Instance is undocumented. -type Instance struct { - InstanceID aws.StringValue `query:"InstanceId" xml:"InstanceId"` -} - -// InstanceState is undocumented. -type InstanceState struct { - Description aws.StringValue `query:"Description" xml:"Description"` - InstanceID aws.StringValue `query:"InstanceId" xml:"InstanceId"` - ReasonCode aws.StringValue `query:"ReasonCode" xml:"ReasonCode"` - State aws.StringValue `query:"State" xml:"State"` -} - -// LBCookieStickinessPolicy is undocumented. -type LBCookieStickinessPolicy struct { - CookieExpirationPeriod aws.LongValue `query:"CookieExpirationPeriod" xml:"CookieExpirationPeriod"` - PolicyName aws.StringValue `query:"PolicyName" xml:"PolicyName"` -} - -// Listener is undocumented. -type Listener struct { - InstancePort aws.IntegerValue `query:"InstancePort" xml:"InstancePort"` - InstanceProtocol aws.StringValue `query:"InstanceProtocol" xml:"InstanceProtocol"` - LoadBalancerPort aws.IntegerValue `query:"LoadBalancerPort" xml:"LoadBalancerPort"` - Protocol aws.StringValue `query:"Protocol" xml:"Protocol"` - SSLCertificateID aws.StringValue `query:"SSLCertificateId" xml:"SSLCertificateId"` -} - -// ListenerDescription is undocumented. -type ListenerDescription struct { - Listener *Listener `query:"Listener" xml:"Listener"` - PolicyNames []string `query:"PolicyNames.member" xml:"PolicyNames>member"` -} - -// LoadBalancerAttributes is undocumented. -type LoadBalancerAttributes struct { - AccessLog *AccessLog `query:"AccessLog" xml:"AccessLog"` - AdditionalAttributes []AdditionalAttribute `query:"AdditionalAttributes.member" xml:"AdditionalAttributes>member"` - ConnectionDraining *ConnectionDraining `query:"ConnectionDraining" xml:"ConnectionDraining"` - ConnectionSettings *ConnectionSettings `query:"ConnectionSettings" xml:"ConnectionSettings"` - CrossZoneLoadBalancing *CrossZoneLoadBalancing `query:"CrossZoneLoadBalancing" xml:"CrossZoneLoadBalancing"` -} - -// LoadBalancerDescription is undocumented. -type LoadBalancerDescription struct { - AvailabilityZones []string `query:"AvailabilityZones.member" xml:"AvailabilityZones>member"` - BackendServerDescriptions []BackendServerDescription `query:"BackendServerDescriptions.member" xml:"BackendServerDescriptions>member"` - CanonicalHostedZoneName aws.StringValue `query:"CanonicalHostedZoneName" xml:"CanonicalHostedZoneName"` - CanonicalHostedZoneNameID aws.StringValue `query:"CanonicalHostedZoneNameID" xml:"CanonicalHostedZoneNameID"` - CreatedTime time.Time `query:"CreatedTime" xml:"CreatedTime"` - DNSName aws.StringValue `query:"DNSName" xml:"DNSName"` - HealthCheck *HealthCheck `query:"HealthCheck" xml:"HealthCheck"` - Instances []Instance `query:"Instances.member" xml:"Instances>member"` - ListenerDescriptions []ListenerDescription `query:"ListenerDescriptions.member" xml:"ListenerDescriptions>member"` - LoadBalancerName aws.StringValue `query:"LoadBalancerName" xml:"LoadBalancerName"` - Policies *Policies `query:"Policies" xml:"Policies"` - Scheme aws.StringValue `query:"Scheme" xml:"Scheme"` - SecurityGroups []string `query:"SecurityGroups.member" xml:"SecurityGroups>member"` - SourceSecurityGroup *SourceSecurityGroup `query:"SourceSecurityGroup" xml:"SourceSecurityGroup"` - Subnets []string `query:"Subnets.member" xml:"Subnets>member"` - VPCID aws.StringValue `query:"VPCId" xml:"VPCId"` -} - -// ModifyLoadBalancerAttributesInput is undocumented. -type ModifyLoadBalancerAttributesInput struct { - LoadBalancerAttributes *LoadBalancerAttributes `query:"LoadBalancerAttributes" xml:"LoadBalancerAttributes"` - LoadBalancerName aws.StringValue `query:"LoadBalancerName" xml:"LoadBalancerName"` -} - -// ModifyLoadBalancerAttributesOutput is undocumented. -type ModifyLoadBalancerAttributesOutput struct { - LoadBalancerAttributes *LoadBalancerAttributes `query:"LoadBalancerAttributes" xml:"ModifyLoadBalancerAttributesResult>LoadBalancerAttributes"` - LoadBalancerName aws.StringValue `query:"LoadBalancerName" xml:"ModifyLoadBalancerAttributesResult>LoadBalancerName"` -} - -// Policies is undocumented. -type Policies struct { - AppCookieStickinessPolicies []AppCookieStickinessPolicy `query:"AppCookieStickinessPolicies.member" xml:"AppCookieStickinessPolicies>member"` - LBCookieStickinessPolicies []LBCookieStickinessPolicy `query:"LBCookieStickinessPolicies.member" xml:"LBCookieStickinessPolicies>member"` - OtherPolicies []string `query:"OtherPolicies.member" xml:"OtherPolicies>member"` -} - -// PolicyAttribute is undocumented. -type PolicyAttribute struct { - AttributeName aws.StringValue `query:"AttributeName" xml:"AttributeName"` - AttributeValue aws.StringValue `query:"AttributeValue" xml:"AttributeValue"` -} - -// PolicyAttributeDescription is undocumented. -type PolicyAttributeDescription struct { - AttributeName aws.StringValue `query:"AttributeName" xml:"AttributeName"` - AttributeValue aws.StringValue `query:"AttributeValue" xml:"AttributeValue"` -} - -// PolicyAttributeTypeDescription is undocumented. -type PolicyAttributeTypeDescription struct { - AttributeName aws.StringValue `query:"AttributeName" xml:"AttributeName"` - AttributeType aws.StringValue `query:"AttributeType" xml:"AttributeType"` - Cardinality aws.StringValue `query:"Cardinality" xml:"Cardinality"` - DefaultValue aws.StringValue `query:"DefaultValue" xml:"DefaultValue"` - Description aws.StringValue `query:"Description" xml:"Description"` -} - -// PolicyDescription is undocumented. -type PolicyDescription struct { - PolicyAttributeDescriptions []PolicyAttributeDescription `query:"PolicyAttributeDescriptions.member" xml:"PolicyAttributeDescriptions>member"` - PolicyName aws.StringValue `query:"PolicyName" xml:"PolicyName"` - PolicyTypeName aws.StringValue `query:"PolicyTypeName" xml:"PolicyTypeName"` -} - -// PolicyTypeDescription is undocumented. -type PolicyTypeDescription struct { - Description aws.StringValue `query:"Description" xml:"Description"` - PolicyAttributeTypeDescriptions []PolicyAttributeTypeDescription `query:"PolicyAttributeTypeDescriptions.member" xml:"PolicyAttributeTypeDescriptions>member"` - PolicyTypeName aws.StringValue `query:"PolicyTypeName" xml:"PolicyTypeName"` -} - -// RegisterEndPointsInput is undocumented. -type RegisterEndPointsInput struct { - Instances []Instance `query:"Instances.member" xml:"Instances>member"` - LoadBalancerName aws.StringValue `query:"LoadBalancerName" xml:"LoadBalancerName"` -} - -// RegisterEndPointsOutput is undocumented. -type RegisterEndPointsOutput struct { - Instances []Instance `query:"Instances.member" xml:"RegisterInstancesWithLoadBalancerResult>Instances>member"` -} - -// RemoveAvailabilityZonesInput is undocumented. -type RemoveAvailabilityZonesInput struct { - AvailabilityZones []string `query:"AvailabilityZones.member" xml:"AvailabilityZones>member"` - LoadBalancerName aws.StringValue `query:"LoadBalancerName" xml:"LoadBalancerName"` -} - -// RemoveAvailabilityZonesOutput is undocumented. -type RemoveAvailabilityZonesOutput struct { - AvailabilityZones []string `query:"AvailabilityZones.member" xml:"DisableAvailabilityZonesForLoadBalancerResult>AvailabilityZones>member"` -} - -// RemoveTagsInput is undocumented. -type RemoveTagsInput struct { - LoadBalancerNames []string `query:"LoadBalancerNames.member" xml:"LoadBalancerNames>member"` - Tags []TagKeyOnly `query:"Tags.member" xml:"Tags>member"` -} - -// RemoveTagsOutput is undocumented. -type RemoveTagsOutput struct { -} - -// SetLoadBalancerListenerSSLCertificateInput is undocumented. -type SetLoadBalancerListenerSSLCertificateInput struct { - LoadBalancerName aws.StringValue `query:"LoadBalancerName" xml:"LoadBalancerName"` - LoadBalancerPort aws.IntegerValue `query:"LoadBalancerPort" xml:"LoadBalancerPort"` - SSLCertificateID aws.StringValue `query:"SSLCertificateId" xml:"SSLCertificateId"` -} - -// SetLoadBalancerListenerSSLCertificateOutput is undocumented. -type SetLoadBalancerListenerSSLCertificateOutput struct { -} - -// SetLoadBalancerPoliciesForBackendServerInput is undocumented. -type SetLoadBalancerPoliciesForBackendServerInput struct { - InstancePort aws.IntegerValue `query:"InstancePort" xml:"InstancePort"` - LoadBalancerName aws.StringValue `query:"LoadBalancerName" xml:"LoadBalancerName"` - PolicyNames []string `query:"PolicyNames.member" xml:"PolicyNames>member"` -} - -// SetLoadBalancerPoliciesForBackendServerOutput is undocumented. -type SetLoadBalancerPoliciesForBackendServerOutput struct { -} - -// SetLoadBalancerPoliciesOfListenerInput is undocumented. -type SetLoadBalancerPoliciesOfListenerInput struct { - LoadBalancerName aws.StringValue `query:"LoadBalancerName" xml:"LoadBalancerName"` - LoadBalancerPort aws.IntegerValue `query:"LoadBalancerPort" xml:"LoadBalancerPort"` - PolicyNames []string `query:"PolicyNames.member" xml:"PolicyNames>member"` -} - -// SetLoadBalancerPoliciesOfListenerOutput is undocumented. -type SetLoadBalancerPoliciesOfListenerOutput struct { -} - -// SourceSecurityGroup is undocumented. -type SourceSecurityGroup struct { - GroupName aws.StringValue `query:"GroupName" xml:"GroupName"` - OwnerAlias aws.StringValue `query:"OwnerAlias" xml:"OwnerAlias"` -} - -// Tag is undocumented. -type Tag struct { - Key aws.StringValue `query:"Key" xml:"Key"` - Value aws.StringValue `query:"Value" xml:"Value"` -} - -// TagDescription is undocumented. -type TagDescription struct { - LoadBalancerName aws.StringValue `query:"LoadBalancerName" xml:"LoadBalancerName"` - Tags []Tag `query:"Tags.member" xml:"Tags>member"` -} - -// TagKeyOnly is undocumented. -type TagKeyOnly struct { - Key aws.StringValue `query:"Key" xml:"Key"` -} - -// AddTagsResult is a wrapper for AddTagsOutput. -type AddTagsResult struct { -} - -// ApplySecurityGroupsToLoadBalancerResult is a wrapper for ApplySecurityGroupsToLoadBalancerOutput. -type ApplySecurityGroupsToLoadBalancerResult struct { - SecurityGroups []string `query:"SecurityGroups.member" xml:"ApplySecurityGroupsToLoadBalancerResult>SecurityGroups>member"` -} - -// AttachLoadBalancerToSubnetsResult is a wrapper for AttachLoadBalancerToSubnetsOutput. -type AttachLoadBalancerToSubnetsResult struct { - Subnets []string `query:"Subnets.member" xml:"AttachLoadBalancerToSubnetsResult>Subnets>member"` -} - -// ConfigureHealthCheckResult is a wrapper for ConfigureHealthCheckOutput. -type ConfigureHealthCheckResult struct { - HealthCheck *HealthCheck `query:"HealthCheck" xml:"ConfigureHealthCheckResult>HealthCheck"` -} - -// CreateAppCookieStickinessPolicyResult is a wrapper for CreateAppCookieStickinessPolicyOutput. -type CreateAppCookieStickinessPolicyResult struct { -} - -// CreateLBCookieStickinessPolicyResult is a wrapper for CreateLBCookieStickinessPolicyOutput. -type CreateLBCookieStickinessPolicyResult struct { -} - -// CreateLoadBalancerListenersResult is a wrapper for CreateLoadBalancerListenerOutput. -type CreateLoadBalancerListenersResult struct { -} - -// CreateLoadBalancerPolicyResult is a wrapper for CreateLoadBalancerPolicyOutput. -type CreateLoadBalancerPolicyResult struct { -} - -// CreateLoadBalancerResult is a wrapper for CreateAccessPointOutput. -type CreateLoadBalancerResult struct { - DNSName aws.StringValue `query:"DNSName" xml:"CreateLoadBalancerResult>DNSName"` -} - -// DeleteLoadBalancerListenersResult is a wrapper for DeleteLoadBalancerListenerOutput. -type DeleteLoadBalancerListenersResult struct { -} - -// DeleteLoadBalancerPolicyResult is a wrapper for DeleteLoadBalancerPolicyOutput. -type DeleteLoadBalancerPolicyResult struct { -} - -// DeleteLoadBalancerResult is a wrapper for DeleteAccessPointOutput. -type DeleteLoadBalancerResult struct { -} - -// DeregisterInstancesFromLoadBalancerResult is a wrapper for DeregisterEndPointsOutput. -type DeregisterInstancesFromLoadBalancerResult struct { - Instances []Instance `query:"Instances.member" xml:"DeregisterInstancesFromLoadBalancerResult>Instances>member"` -} - -// DescribeInstanceHealthResult is a wrapper for DescribeEndPointStateOutput. -type DescribeInstanceHealthResult struct { - InstanceStates []InstanceState `query:"InstanceStates.member" xml:"DescribeInstanceHealthResult>InstanceStates>member"` -} - -// DescribeLoadBalancerAttributesResult is a wrapper for DescribeLoadBalancerAttributesOutput. -type DescribeLoadBalancerAttributesResult struct { - LoadBalancerAttributes *LoadBalancerAttributes `query:"LoadBalancerAttributes" xml:"DescribeLoadBalancerAttributesResult>LoadBalancerAttributes"` -} - -// DescribeLoadBalancerPoliciesResult is a wrapper for DescribeLoadBalancerPoliciesOutput. -type DescribeLoadBalancerPoliciesResult struct { - PolicyDescriptions []PolicyDescription `query:"PolicyDescriptions.member" xml:"DescribeLoadBalancerPoliciesResult>PolicyDescriptions>member"` -} - -// DescribeLoadBalancerPolicyTypesResult is a wrapper for DescribeLoadBalancerPolicyTypesOutput. -type DescribeLoadBalancerPolicyTypesResult struct { - PolicyTypeDescriptions []PolicyTypeDescription `query:"PolicyTypeDescriptions.member" xml:"DescribeLoadBalancerPolicyTypesResult>PolicyTypeDescriptions>member"` -} - -// DescribeLoadBalancersResult is a wrapper for DescribeAccessPointsOutput. -type DescribeLoadBalancersResult struct { - LoadBalancerDescriptions []LoadBalancerDescription `query:"LoadBalancerDescriptions.member" xml:"DescribeLoadBalancersResult>LoadBalancerDescriptions>member"` - NextMarker aws.StringValue `query:"NextMarker" xml:"DescribeLoadBalancersResult>NextMarker"` -} - -// DescribeTagsResult is a wrapper for DescribeTagsOutput. -type DescribeTagsResult struct { - TagDescriptions []TagDescription `query:"TagDescriptions.member" xml:"DescribeTagsResult>TagDescriptions>member"` -} - -// DetachLoadBalancerFromSubnetsResult is a wrapper for DetachLoadBalancerFromSubnetsOutput. -type DetachLoadBalancerFromSubnetsResult struct { - Subnets []string `query:"Subnets.member" xml:"DetachLoadBalancerFromSubnetsResult>Subnets>member"` -} - -// DisableAvailabilityZonesForLoadBalancerResult is a wrapper for RemoveAvailabilityZonesOutput. -type DisableAvailabilityZonesForLoadBalancerResult struct { - AvailabilityZones []string `query:"AvailabilityZones.member" xml:"DisableAvailabilityZonesForLoadBalancerResult>AvailabilityZones>member"` -} - -// EnableAvailabilityZonesForLoadBalancerResult is a wrapper for AddAvailabilityZonesOutput. -type EnableAvailabilityZonesForLoadBalancerResult struct { - AvailabilityZones []string `query:"AvailabilityZones.member" xml:"EnableAvailabilityZonesForLoadBalancerResult>AvailabilityZones>member"` -} - -// ModifyLoadBalancerAttributesResult is a wrapper for ModifyLoadBalancerAttributesOutput. -type ModifyLoadBalancerAttributesResult struct { - LoadBalancerAttributes *LoadBalancerAttributes `query:"LoadBalancerAttributes" xml:"ModifyLoadBalancerAttributesResult>LoadBalancerAttributes"` - LoadBalancerName aws.StringValue `query:"LoadBalancerName" xml:"ModifyLoadBalancerAttributesResult>LoadBalancerName"` -} - -// RegisterInstancesWithLoadBalancerResult is a wrapper for RegisterEndPointsOutput. -type RegisterInstancesWithLoadBalancerResult struct { - Instances []Instance `query:"Instances.member" xml:"RegisterInstancesWithLoadBalancerResult>Instances>member"` -} - -// RemoveTagsResult is a wrapper for RemoveTagsOutput. -type RemoveTagsResult struct { -} - -// SetLoadBalancerListenerSSLCertificateResult is a wrapper for SetLoadBalancerListenerSSLCertificateOutput. -type SetLoadBalancerListenerSSLCertificateResult struct { -} - -// SetLoadBalancerPoliciesForBackendServerResult is a wrapper for SetLoadBalancerPoliciesForBackendServerOutput. -type SetLoadBalancerPoliciesForBackendServerResult struct { -} - -// SetLoadBalancerPoliciesOfListenerResult is a wrapper for SetLoadBalancerPoliciesOfListenerOutput. -type SetLoadBalancerPoliciesOfListenerResult struct { -} - -// avoid errors if the packages aren't referenced -var _ time.Time - -var _ xml.Decoder -var _ = io.EOF diff --git a/src/github.com/getlantern/aws-sdk-go/gen/emr/emr.go b/src/github.com/getlantern/aws-sdk-go/gen/emr/emr.go deleted file mode 100644 index 03245f0e8c..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/gen/emr/emr.go +++ /dev/null @@ -1,923 +0,0 @@ -// THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. - -// Package emr provides a client for Amazon Elastic MapReduce. -package emr - -import ( - "net/http" - "time" - - "github.com/awslabs/aws-sdk-go/aws" - "github.com/awslabs/aws-sdk-go/gen/endpoints" -) - -// EMR is a client for Amazon Elastic MapReduce. -type EMR struct { - client *aws.JSONClient -} - -// New returns a new EMR client. -func New(creds aws.CredentialsProvider, region string, client *http.Client) *EMR { - if client == nil { - client = http.DefaultClient - } - - endpoint, service, region := endpoints.Lookup("elasticmapreduce", region) - - return &EMR{ - client: &aws.JSONClient{ - Context: aws.Context{ - Credentials: creds, - Service: service, - Region: region, - }, Client: client, - Endpoint: endpoint, - JSONVersion: "1.1", - TargetPrefix: "ElasticMapReduce", - }, - } -} - -// AddInstanceGroups addInstanceGroups adds an instance group to a running -// cluster. -func (c *EMR) AddInstanceGroups(req *AddInstanceGroupsInput) (resp *AddInstanceGroupsOutput, err error) { - resp = &AddInstanceGroupsOutput{} - err = c.client.Do("AddInstanceGroups", "POST", "/", req, resp) - return -} - -// AddJobFlowSteps addJobFlowSteps adds new steps to a running job flow. A -// maximum of 256 steps are allowed in each job flow. If your job flow is -// long-running (such as a Hive data warehouse) or complex, you may require -// more than 256 steps to process your data. You can bypass the 256-step -// limitation in various ways, including using the SSH shell to connect to -// the master node and submitting queries directly to the software running -// on the master node, such as Hive and Hadoop. For more information on how -// to do this, go to Add More than 256 Steps to a Job Flow in the Amazon -// Elastic MapReduce Developer's Guide A step specifies the location of a -// JAR file stored either on the master node of the job flow or in Amazon -// S3. Each step is performed by the main function of the main class of the -// JAR file. The main class can be specified either in the manifest of the -// JAR or by using the MainFunction parameter of the step. Elastic -// MapReduce executes each step in the order listed. For a step to be -// considered complete, the main function must exit with a zero exit code -// and all Hadoop jobs started while the step was running must have -// completed and run successfully. You can only add steps to a job flow -// that is in one of the following states: or -func (c *EMR) AddJobFlowSteps(req *AddJobFlowStepsInput) (resp *AddJobFlowStepsOutput, err error) { - resp = &AddJobFlowStepsOutput{} - err = c.client.Do("AddJobFlowSteps", "POST", "/", req, resp) - return -} - -// AddTags adds tags to an Amazon EMR resource. Tags make it easier to -// associate clusters in various ways, such as grouping clusters to track -// your Amazon EMR resource allocation costs. For more information, see -// Tagging Amazon EMR Resources . -func (c *EMR) AddTags(req *AddTagsInput) (resp *AddTagsOutput, err error) { - resp = &AddTagsOutput{} - err = c.client.Do("AddTags", "POST", "/", req, resp) - return -} - -// DescribeCluster provides cluster-level details including status, -// hardware and software configuration, VPC settings, and so on. For -// information about the cluster steps, see ListSteps -func (c *EMR) DescribeCluster(req *DescribeClusterInput) (resp *DescribeClusterOutput, err error) { - resp = &DescribeClusterOutput{} - err = c.client.Do("DescribeCluster", "POST", "/", req, resp) - return -} - -// DescribeJobFlows this API is deprecated and will eventually be removed. -// We recommend you use ListClusters , DescribeCluster , ListSteps , -// ListInstanceGroups and ListBootstrapActions instead. DescribeJobFlows -// returns a list of job flows that match all of the supplied parameters. -// The parameters can include a list of job flow IDs, job flow states, and -// restrictions on job flow creation date and time. Regardless of supplied -// parameters, only job flows created within the last two months are -// returned. If no parameters are supplied, then job flows matching either -// of the following criteria are returned: Job flows created and completed -// in the last two weeks Job flows created within the last two months that -// are in one of the following states: , , , Amazon Elastic MapReduce can -// return a maximum of 512 job flow descriptions. -func (c *EMR) DescribeJobFlows(req *DescribeJobFlowsInput) (resp *DescribeJobFlowsOutput, err error) { - resp = &DescribeJobFlowsOutput{} - err = c.client.Do("DescribeJobFlows", "POST", "/", req, resp) - return -} - -// DescribeStep is undocumented. -func (c *EMR) DescribeStep(req *DescribeStepInput) (resp *DescribeStepOutput, err error) { - resp = &DescribeStepOutput{} - err = c.client.Do("DescribeStep", "POST", "/", req, resp) - return -} - -// ListBootstrapActions provides information about the bootstrap actions -// associated with a cluster. -func (c *EMR) ListBootstrapActions(req *ListBootstrapActionsInput) (resp *ListBootstrapActionsOutput, err error) { - resp = &ListBootstrapActionsOutput{} - err = c.client.Do("ListBootstrapActions", "POST", "/", req, resp) - return -} - -// ListClusters provides the status of all clusters visible to this AWS -// account. Allows you to filter the list of clusters based on certain -// criteria; for example, filtering by cluster creation date and time or by -// status. This call returns a maximum of 50 clusters per call, but returns -// a marker to track the paging of the cluster list across multiple -// ListClusters calls. -func (c *EMR) ListClusters(req *ListClustersInput) (resp *ListClustersOutput, err error) { - resp = &ListClustersOutput{} - err = c.client.Do("ListClusters", "POST", "/", req, resp) - return -} - -// ListInstanceGroups provides all available details about the instance -// groups in a cluster. -func (c *EMR) ListInstanceGroups(req *ListInstanceGroupsInput) (resp *ListInstanceGroupsOutput, err error) { - resp = &ListInstanceGroupsOutput{} - err = c.client.Do("ListInstanceGroups", "POST", "/", req, resp) - return -} - -// ListInstances provides information about the cluster instances that -// Amazon EMR provisions on behalf of a user when it creates the cluster. -// For example, this operation indicates when the EC2 instances reach the -// Ready state, when instances become available to Amazon EMR to use for -// jobs, and the IP addresses for cluster instances, etc. -func (c *EMR) ListInstances(req *ListInstancesInput) (resp *ListInstancesOutput, err error) { - resp = &ListInstancesOutput{} - err = c.client.Do("ListInstances", "POST", "/", req, resp) - return -} - -// ListSteps is undocumented. -func (c *EMR) ListSteps(req *ListStepsInput) (resp *ListStepsOutput, err error) { - resp = &ListStepsOutput{} - err = c.client.Do("ListSteps", "POST", "/", req, resp) - return -} - -// ModifyInstanceGroups modifyInstanceGroups modifies the number of nodes -// and configuration settings of an instance group. The input parameters -// include the new target instance count for the group and the instance -// group ID. The call will either succeed or fail atomically. -func (c *EMR) ModifyInstanceGroups(req *ModifyInstanceGroupsInput) (err error) { - // NRE - err = c.client.Do("ModifyInstanceGroups", "POST", "/", req, nil) - return -} - -// RemoveTags removes tags from an Amazon EMR resource. Tags make it easier -// to associate clusters in various ways, such as grouping clusters to -// track your Amazon EMR resource allocation costs. For more information, -// see Tagging Amazon EMR Resources . The following example removes the -// stack tag with value Prod from a cluster: -func (c *EMR) RemoveTags(req *RemoveTagsInput) (resp *RemoveTagsOutput, err error) { - resp = &RemoveTagsOutput{} - err = c.client.Do("RemoveTags", "POST", "/", req, resp) - return -} - -// RunJobFlow runJobFlow creates and starts running a new job flow. The job -// flow will run the steps specified. Once the job flow completes, the -// cluster is stopped and the partition is lost. To prevent loss of data, -// configure the last step of the job flow to store results in Amazon S3. -// If the JobFlowInstancesConfig KeepJobFlowAliveWhenNoSteps parameter is -// set to , the job flow will transition to the state rather than shutting -// down once the steps have completed. For additional protection, you can -// set the JobFlowInstancesConfig TerminationProtected parameter to to lock -// the job flow and prevent it from being terminated by API call, user -// intervention, or in the event of a job flow error. A maximum of 256 -// steps are allowed in each job flow. If your job flow is long-running -// (such as a Hive data warehouse) or complex, you may require more than -// 256 steps to process your data. You can bypass the 256-step limitation -// in various ways, including using the SSH shell to connect to the master -// node and submitting queries directly to the software running on the -// master node, such as Hive and Hadoop. For more information on how to do -// this, go to Add More than 256 Steps to a Job Flow in the Amazon Elastic -// MapReduce Developer's Guide For long running job flows, we recommend -// that you periodically store your results. -func (c *EMR) RunJobFlow(req *RunJobFlowInput) (resp *RunJobFlowOutput, err error) { - resp = &RunJobFlowOutput{} - err = c.client.Do("RunJobFlow", "POST", "/", req, resp) - return -} - -// SetTerminationProtection setTerminationProtection locks a job flow so -// the Amazon EC2 instances in the cluster cannot be terminated by user -// intervention, an API call, or in the event of a job-flow error. The -// cluster still terminates upon successful completion of the job flow. -// Calling SetTerminationProtection on a job flow is analogous to calling -// the Amazon EC2 DisableAPITermination API on all of the EC2 instances in -// a cluster. SetTerminationProtection is used to prevent accidental -// termination of a job flow and to ensure that in the event of an error, -// the instances will persist so you can recover any data stored in their -// ephemeral instance storage. To terminate a job flow that has been locked -// by setting SetTerminationProtection to true , you must first unlock the -// job flow by a subsequent call to SetTerminationProtection in which you -// set the value to false . For more information, go to Protecting a Job -// Flow from Termination in the Amazon Elastic MapReduce Developer's Guide. -func (c *EMR) SetTerminationProtection(req *SetTerminationProtectionInput) (err error) { - // NRE - err = c.client.Do("SetTerminationProtection", "POST", "/", req, nil) - return -} - -// SetVisibleToAllUsers sets whether all AWS Identity and Access Management -// users under your account can access the specified job flows. This action -// works on running job flows. You can also set the visibility of a job -// flow when you launch it using the VisibleToAllUsers parameter of -// RunJobFlow . The SetVisibleToAllUsers action can be called only by an -// IAM user who created the job flow or the AWS account that owns the job -// flow. -func (c *EMR) SetVisibleToAllUsers(req *SetVisibleToAllUsersInput) (err error) { - // NRE - err = c.client.Do("SetVisibleToAllUsers", "POST", "/", req, nil) - return -} - -// TerminateJobFlows terminateJobFlows shuts a list of job flows down. When -// a job flow is shut down, any step not yet completed is canceled and the -// EC2 instances on which the job flow is running are stopped. Any log -// files not already saved are uploaded to Amazon S3 if a LogUri was -// specified when the job flow was created. The maximum number of JobFlows -// allowed is 10. The call to TerminateJobFlows is asynchronous. Depending -// on the configuration of the job flow, it may take up to 5-20 minutes for -// the job flow to completely terminate and release allocated resources, -// such as Amazon EC2 instances. -func (c *EMR) TerminateJobFlows(req *TerminateJobFlowsInput) (err error) { - // NRE - err = c.client.Do("TerminateJobFlows", "POST", "/", req, nil) - return -} - -// Possible values for EMR. -const ( - ActionOnFailureCancelAndWait = "CANCEL_AND_WAIT" - ActionOnFailureContinue = "CONTINUE" - ActionOnFailureTerminateCluster = "TERMINATE_CLUSTER" - ActionOnFailureTerminateJobFlow = "TERMINATE_JOB_FLOW" -) - -// AddInstanceGroupsInput is undocumented. -type AddInstanceGroupsInput struct { - InstanceGroups []InstanceGroupConfig `json:"InstanceGroups"` - JobFlowID aws.StringValue `json:"JobFlowId"` -} - -// AddInstanceGroupsOutput is undocumented. -type AddInstanceGroupsOutput struct { - InstanceGroupIDs []string `json:"InstanceGroupIds,omitempty"` - JobFlowID aws.StringValue `json:"JobFlowId,omitempty"` -} - -// AddJobFlowStepsInput is undocumented. -type AddJobFlowStepsInput struct { - JobFlowID aws.StringValue `json:"JobFlowId"` - Steps []StepConfig `json:"Steps"` -} - -// AddJobFlowStepsOutput is undocumented. -type AddJobFlowStepsOutput struct { - StepIDs []string `json:"StepIds,omitempty"` -} - -// AddTagsInput is undocumented. -type AddTagsInput struct { - ResourceID aws.StringValue `json:"ResourceId"` - Tags []Tag `json:"Tags"` -} - -// AddTagsOutput is undocumented. -type AddTagsOutput struct { -} - -// Application is undocumented. -type Application struct { - AdditionalInfo map[string]string `json:"AdditionalInfo,omitempty"` - Args []string `json:"Args,omitempty"` - Name aws.StringValue `json:"Name,omitempty"` - Version aws.StringValue `json:"Version,omitempty"` -} - -// BootstrapActionConfig is undocumented. -type BootstrapActionConfig struct { - Name aws.StringValue `json:"Name"` - ScriptBootstrapAction *ScriptBootstrapActionConfig `json:"ScriptBootstrapAction"` -} - -// BootstrapActionDetail is undocumented. -type BootstrapActionDetail struct { - BootstrapActionConfig *BootstrapActionConfig `json:"BootstrapActionConfig,omitempty"` -} - -// Cluster is undocumented. -type Cluster struct { - Applications []Application `json:"Applications,omitempty"` - AutoTerminate aws.BooleanValue `json:"AutoTerminate,omitempty"` - EC2InstanceAttributes *EC2InstanceAttributes `json:"Ec2InstanceAttributes,omitempty"` - ID aws.StringValue `json:"Id,omitempty"` - LogURI aws.StringValue `json:"LogUri,omitempty"` - MasterPublicDNSName aws.StringValue `json:"MasterPublicDnsName,omitempty"` - Name aws.StringValue `json:"Name,omitempty"` - NormalizedInstanceHours aws.IntegerValue `json:"NormalizedInstanceHours,omitempty"` - RequestedAMIVersion aws.StringValue `json:"RequestedAmiVersion,omitempty"` - RunningAMIVersion aws.StringValue `json:"RunningAmiVersion,omitempty"` - ServiceRole aws.StringValue `json:"ServiceRole,omitempty"` - Status *ClusterStatus `json:"Status,omitempty"` - Tags []Tag `json:"Tags,omitempty"` - TerminationProtected aws.BooleanValue `json:"TerminationProtected,omitempty"` - VisibleToAllUsers aws.BooleanValue `json:"VisibleToAllUsers,omitempty"` -} - -// Possible values for EMR. -const ( - ClusterStateBootstrapping = "BOOTSTRAPPING" - ClusterStateRunning = "RUNNING" - ClusterStateStarting = "STARTING" - ClusterStateTerminated = "TERMINATED" - ClusterStateTerminatedWithErrors = "TERMINATED_WITH_ERRORS" - ClusterStateTerminating = "TERMINATING" - ClusterStateWaiting = "WAITING" -) - -// ClusterStateChangeReason is undocumented. -type ClusterStateChangeReason struct { - Code aws.StringValue `json:"Code,omitempty"` - Message aws.StringValue `json:"Message,omitempty"` -} - -// Possible values for EMR. -const ( - ClusterStateChangeReasonCodeAllStepsCompleted = "ALL_STEPS_COMPLETED" - ClusterStateChangeReasonCodeBootstrapFailure = "BOOTSTRAP_FAILURE" - ClusterStateChangeReasonCodeInstanceFailure = "INSTANCE_FAILURE" - ClusterStateChangeReasonCodeInternalError = "INTERNAL_ERROR" - ClusterStateChangeReasonCodeStepFailure = "STEP_FAILURE" - ClusterStateChangeReasonCodeUserRequest = "USER_REQUEST" - ClusterStateChangeReasonCodeValidationError = "VALIDATION_ERROR" -) - -// ClusterStatus is undocumented. -type ClusterStatus struct { - State aws.StringValue `json:"State,omitempty"` - StateChangeReason *ClusterStateChangeReason `json:"StateChangeReason,omitempty"` - Timeline *ClusterTimeline `json:"Timeline,omitempty"` -} - -// ClusterSummary is undocumented. -type ClusterSummary struct { - ID aws.StringValue `json:"Id,omitempty"` - Name aws.StringValue `json:"Name,omitempty"` - NormalizedInstanceHours aws.IntegerValue `json:"NormalizedInstanceHours,omitempty"` - Status *ClusterStatus `json:"Status,omitempty"` -} - -// ClusterTimeline is undocumented. -type ClusterTimeline struct { - CreationDateTime *aws.UnixTimestamp `json:"CreationDateTime,omitempty"` - EndDateTime *aws.UnixTimestamp `json:"EndDateTime,omitempty"` - ReadyDateTime *aws.UnixTimestamp `json:"ReadyDateTime,omitempty"` -} - -// Command is undocumented. -type Command struct { - Args []string `json:"Args,omitempty"` - Name aws.StringValue `json:"Name,omitempty"` - ScriptPath aws.StringValue `json:"ScriptPath,omitempty"` -} - -// DescribeClusterInput is undocumented. -type DescribeClusterInput struct { - ClusterID aws.StringValue `json:"ClusterId"` -} - -// DescribeClusterOutput is undocumented. -type DescribeClusterOutput struct { - Cluster *Cluster `json:"Cluster,omitempty"` -} - -// DescribeJobFlowsInput is undocumented. -type DescribeJobFlowsInput struct { - CreatedAfter *aws.UnixTimestamp `json:"CreatedAfter,omitempty"` - CreatedBefore *aws.UnixTimestamp `json:"CreatedBefore,omitempty"` - JobFlowIDs []string `json:"JobFlowIds,omitempty"` - JobFlowStates []string `json:"JobFlowStates,omitempty"` -} - -// DescribeJobFlowsOutput is undocumented. -type DescribeJobFlowsOutput struct { - JobFlows []JobFlowDetail `json:"JobFlows,omitempty"` -} - -// DescribeStepInput is undocumented. -type DescribeStepInput struct { - ClusterID aws.StringValue `json:"ClusterId"` - StepID aws.StringValue `json:"StepId"` -} - -// DescribeStepOutput is undocumented. -type DescribeStepOutput struct { - Step *Step `json:"Step,omitempty"` -} - -// EC2InstanceAttributes is undocumented. -type EC2InstanceAttributes struct { - AdditionalMasterSecurityGroups []string `json:"AdditionalMasterSecurityGroups,omitempty"` - AdditionalSlaveSecurityGroups []string `json:"AdditionalSlaveSecurityGroups,omitempty"` - EC2AvailabilityZone aws.StringValue `json:"Ec2AvailabilityZone,omitempty"` - EC2KeyName aws.StringValue `json:"Ec2KeyName,omitempty"` - EC2SubnetID aws.StringValue `json:"Ec2SubnetId,omitempty"` - EmrManagedMasterSecurityGroup aws.StringValue `json:"EmrManagedMasterSecurityGroup,omitempty"` - EmrManagedSlaveSecurityGroup aws.StringValue `json:"EmrManagedSlaveSecurityGroup,omitempty"` - IAMInstanceProfile aws.StringValue `json:"IamInstanceProfile,omitempty"` -} - -// HadoopJARStepConfig is undocumented. -type HadoopJARStepConfig struct { - Args []string `json:"Args,omitempty"` - JAR aws.StringValue `json:"Jar"` - MainClass aws.StringValue `json:"MainClass,omitempty"` - Properties []KeyValue `json:"Properties,omitempty"` -} - -// HadoopStepConfig is undocumented. -type HadoopStepConfig struct { - Args []string `json:"Args,omitempty"` - JAR aws.StringValue `json:"Jar,omitempty"` - MainClass aws.StringValue `json:"MainClass,omitempty"` - Properties map[string]string `json:"Properties,omitempty"` -} - -// Instance is undocumented. -type Instance struct { - EC2InstanceID aws.StringValue `json:"Ec2InstanceId,omitempty"` - ID aws.StringValue `json:"Id,omitempty"` - PrivateDNSName aws.StringValue `json:"PrivateDnsName,omitempty"` - PrivateIPAddress aws.StringValue `json:"PrivateIpAddress,omitempty"` - PublicDNSName aws.StringValue `json:"PublicDnsName,omitempty"` - PublicIPAddress aws.StringValue `json:"PublicIpAddress,omitempty"` - Status *InstanceStatus `json:"Status,omitempty"` -} - -// InstanceGroup is undocumented. -type InstanceGroup struct { - BidPrice aws.StringValue `json:"BidPrice,omitempty"` - ID aws.StringValue `json:"Id,omitempty"` - InstanceGroupType aws.StringValue `json:"InstanceGroupType,omitempty"` - InstanceType aws.StringValue `json:"InstanceType,omitempty"` - Market aws.StringValue `json:"Market,omitempty"` - Name aws.StringValue `json:"Name,omitempty"` - RequestedInstanceCount aws.IntegerValue `json:"RequestedInstanceCount,omitempty"` - RunningInstanceCount aws.IntegerValue `json:"RunningInstanceCount,omitempty"` - Status *InstanceGroupStatus `json:"Status,omitempty"` -} - -// InstanceGroupConfig is undocumented. -type InstanceGroupConfig struct { - BidPrice aws.StringValue `json:"BidPrice,omitempty"` - InstanceCount aws.IntegerValue `json:"InstanceCount"` - InstanceRole aws.StringValue `json:"InstanceRole"` - InstanceType aws.StringValue `json:"InstanceType"` - Market aws.StringValue `json:"Market,omitempty"` - Name aws.StringValue `json:"Name,omitempty"` -} - -// InstanceGroupDetail is undocumented. -type InstanceGroupDetail struct { - BidPrice aws.StringValue `json:"BidPrice,omitempty"` - CreationDateTime *aws.UnixTimestamp `json:"CreationDateTime"` - EndDateTime *aws.UnixTimestamp `json:"EndDateTime,omitempty"` - InstanceGroupID aws.StringValue `json:"InstanceGroupId,omitempty"` - InstanceRequestCount aws.IntegerValue `json:"InstanceRequestCount"` - InstanceRole aws.StringValue `json:"InstanceRole"` - InstanceRunningCount aws.IntegerValue `json:"InstanceRunningCount"` - InstanceType aws.StringValue `json:"InstanceType"` - LastStateChangeReason aws.StringValue `json:"LastStateChangeReason,omitempty"` - Market aws.StringValue `json:"Market"` - Name aws.StringValue `json:"Name,omitempty"` - ReadyDateTime *aws.UnixTimestamp `json:"ReadyDateTime,omitempty"` - StartDateTime *aws.UnixTimestamp `json:"StartDateTime,omitempty"` - State aws.StringValue `json:"State"` -} - -// InstanceGroupModifyConfig is undocumented. -type InstanceGroupModifyConfig struct { - EC2InstanceIDsToTerminate []string `json:"EC2InstanceIdsToTerminate,omitempty"` - InstanceCount aws.IntegerValue `json:"InstanceCount,omitempty"` - InstanceGroupID aws.StringValue `json:"InstanceGroupId"` -} - -// Possible values for EMR. -const ( - InstanceGroupStateArrested = "ARRESTED" - InstanceGroupStateBootstrapping = "BOOTSTRAPPING" - InstanceGroupStateEnded = "ENDED" - InstanceGroupStateProvisioning = "PROVISIONING" - InstanceGroupStateResizing = "RESIZING" - InstanceGroupStateRunning = "RUNNING" - InstanceGroupStateShuttingDown = "SHUTTING_DOWN" - InstanceGroupStateSuspended = "SUSPENDED" - InstanceGroupStateTerminated = "TERMINATED" - InstanceGroupStateTerminating = "TERMINATING" -) - -// InstanceGroupStateChangeReason is undocumented. -type InstanceGroupStateChangeReason struct { - Code aws.StringValue `json:"Code,omitempty"` - Message aws.StringValue `json:"Message,omitempty"` -} - -// Possible values for EMR. -const ( - InstanceGroupStateChangeReasonCodeClusterTerminated = "CLUSTER_TERMINATED" - InstanceGroupStateChangeReasonCodeInstanceFailure = "INSTANCE_FAILURE" - InstanceGroupStateChangeReasonCodeInternalError = "INTERNAL_ERROR" - InstanceGroupStateChangeReasonCodeValidationError = "VALIDATION_ERROR" -) - -// InstanceGroupStatus is undocumented. -type InstanceGroupStatus struct { - State aws.StringValue `json:"State,omitempty"` - StateChangeReason *InstanceGroupStateChangeReason `json:"StateChangeReason,omitempty"` - Timeline *InstanceGroupTimeline `json:"Timeline,omitempty"` -} - -// InstanceGroupTimeline is undocumented. -type InstanceGroupTimeline struct { - CreationDateTime *aws.UnixTimestamp `json:"CreationDateTime,omitempty"` - EndDateTime *aws.UnixTimestamp `json:"EndDateTime,omitempty"` - ReadyDateTime *aws.UnixTimestamp `json:"ReadyDateTime,omitempty"` -} - -// Possible values for EMR. -const ( - InstanceGroupTypeCore = "CORE" - InstanceGroupTypeMaster = "MASTER" - InstanceGroupTypeTask = "TASK" -) - -// Possible values for EMR. -const ( - InstanceRoleTypeCore = "CORE" - InstanceRoleTypeMaster = "MASTER" - InstanceRoleTypeTask = "TASK" -) - -// Possible values for EMR. -const ( - InstanceStateAwaitingFulfillment = "AWAITING_FULFILLMENT" - InstanceStateBootstrapping = "BOOTSTRAPPING" - InstanceStateProvisioning = "PROVISIONING" - InstanceStateRunning = "RUNNING" - InstanceStateTerminated = "TERMINATED" -) - -// InstanceStateChangeReason is undocumented. -type InstanceStateChangeReason struct { - Code aws.StringValue `json:"Code,omitempty"` - Message aws.StringValue `json:"Message,omitempty"` -} - -// Possible values for EMR. -const ( - InstanceStateChangeReasonCodeBootstrapFailure = "BOOTSTRAP_FAILURE" - InstanceStateChangeReasonCodeClusterTerminated = "CLUSTER_TERMINATED" - InstanceStateChangeReasonCodeInstanceFailure = "INSTANCE_FAILURE" - InstanceStateChangeReasonCodeInternalError = "INTERNAL_ERROR" - InstanceStateChangeReasonCodeValidationError = "VALIDATION_ERROR" -) - -// InstanceStatus is undocumented. -type InstanceStatus struct { - State aws.StringValue `json:"State,omitempty"` - StateChangeReason *InstanceStateChangeReason `json:"StateChangeReason,omitempty"` - Timeline *InstanceTimeline `json:"Timeline,omitempty"` -} - -// InstanceTimeline is undocumented. -type InstanceTimeline struct { - CreationDateTime *aws.UnixTimestamp `json:"CreationDateTime,omitempty"` - EndDateTime *aws.UnixTimestamp `json:"EndDateTime,omitempty"` - ReadyDateTime *aws.UnixTimestamp `json:"ReadyDateTime,omitempty"` -} - -// JobFlowDetail is undocumented. -type JobFlowDetail struct { - AMIVersion aws.StringValue `json:"AmiVersion,omitempty"` - BootstrapActions []BootstrapActionDetail `json:"BootstrapActions,omitempty"` - ExecutionStatusDetail *JobFlowExecutionStatusDetail `json:"ExecutionStatusDetail"` - Instances *JobFlowInstancesDetail `json:"Instances"` - JobFlowID aws.StringValue `json:"JobFlowId"` - JobFlowRole aws.StringValue `json:"JobFlowRole,omitempty"` - LogURI aws.StringValue `json:"LogUri,omitempty"` - Name aws.StringValue `json:"Name"` - ServiceRole aws.StringValue `json:"ServiceRole,omitempty"` - Steps []StepDetail `json:"Steps,omitempty"` - SupportedProducts []string `json:"SupportedProducts,omitempty"` - VisibleToAllUsers aws.BooleanValue `json:"VisibleToAllUsers,omitempty"` -} - -// Possible values for EMR. -const ( - JobFlowExecutionStateBootstrapping = "BOOTSTRAPPING" - JobFlowExecutionStateCompleted = "COMPLETED" - JobFlowExecutionStateFailed = "FAILED" - JobFlowExecutionStateRunning = "RUNNING" - JobFlowExecutionStateShuttingDown = "SHUTTING_DOWN" - JobFlowExecutionStateStarting = "STARTING" - JobFlowExecutionStateTerminated = "TERMINATED" - JobFlowExecutionStateWaiting = "WAITING" -) - -// JobFlowExecutionStatusDetail is undocumented. -type JobFlowExecutionStatusDetail struct { - CreationDateTime *aws.UnixTimestamp `json:"CreationDateTime"` - EndDateTime *aws.UnixTimestamp `json:"EndDateTime,omitempty"` - LastStateChangeReason aws.StringValue `json:"LastStateChangeReason,omitempty"` - ReadyDateTime *aws.UnixTimestamp `json:"ReadyDateTime,omitempty"` - StartDateTime *aws.UnixTimestamp `json:"StartDateTime,omitempty"` - State aws.StringValue `json:"State"` -} - -// JobFlowInstancesConfig is undocumented. -type JobFlowInstancesConfig struct { - AdditionalMasterSecurityGroups []string `json:"AdditionalMasterSecurityGroups,omitempty"` - AdditionalSlaveSecurityGroups []string `json:"AdditionalSlaveSecurityGroups,omitempty"` - EC2KeyName aws.StringValue `json:"Ec2KeyName,omitempty"` - EC2SubnetID aws.StringValue `json:"Ec2SubnetId,omitempty"` - EmrManagedMasterSecurityGroup aws.StringValue `json:"EmrManagedMasterSecurityGroup,omitempty"` - EmrManagedSlaveSecurityGroup aws.StringValue `json:"EmrManagedSlaveSecurityGroup,omitempty"` - HadoopVersion aws.StringValue `json:"HadoopVersion,omitempty"` - InstanceCount aws.IntegerValue `json:"InstanceCount,omitempty"` - InstanceGroups []InstanceGroupConfig `json:"InstanceGroups,omitempty"` - KeepJobFlowAliveWhenNoSteps aws.BooleanValue `json:"KeepJobFlowAliveWhenNoSteps,omitempty"` - MasterInstanceType aws.StringValue `json:"MasterInstanceType,omitempty"` - Placement *PlacementType `json:"Placement,omitempty"` - SlaveInstanceType aws.StringValue `json:"SlaveInstanceType,omitempty"` - TerminationProtected aws.BooleanValue `json:"TerminationProtected,omitempty"` -} - -// JobFlowInstancesDetail is undocumented. -type JobFlowInstancesDetail struct { - EC2KeyName aws.StringValue `json:"Ec2KeyName,omitempty"` - EC2SubnetID aws.StringValue `json:"Ec2SubnetId,omitempty"` - HadoopVersion aws.StringValue `json:"HadoopVersion,omitempty"` - InstanceCount aws.IntegerValue `json:"InstanceCount"` - InstanceGroups []InstanceGroupDetail `json:"InstanceGroups,omitempty"` - KeepJobFlowAliveWhenNoSteps aws.BooleanValue `json:"KeepJobFlowAliveWhenNoSteps,omitempty"` - MasterInstanceID aws.StringValue `json:"MasterInstanceId,omitempty"` - MasterInstanceType aws.StringValue `json:"MasterInstanceType"` - MasterPublicDNSName aws.StringValue `json:"MasterPublicDnsName,omitempty"` - NormalizedInstanceHours aws.IntegerValue `json:"NormalizedInstanceHours,omitempty"` - Placement *PlacementType `json:"Placement,omitempty"` - SlaveInstanceType aws.StringValue `json:"SlaveInstanceType"` - TerminationProtected aws.BooleanValue `json:"TerminationProtected,omitempty"` -} - -// KeyValue is undocumented. -type KeyValue struct { - Key aws.StringValue `json:"Key,omitempty"` - Value aws.StringValue `json:"Value,omitempty"` -} - -// ListBootstrapActionsInput is undocumented. -type ListBootstrapActionsInput struct { - ClusterID aws.StringValue `json:"ClusterId"` - Marker aws.StringValue `json:"Marker,omitempty"` -} - -// ListBootstrapActionsOutput is undocumented. -type ListBootstrapActionsOutput struct { - BootstrapActions []Command `json:"BootstrapActions,omitempty"` - Marker aws.StringValue `json:"Marker,omitempty"` -} - -// ListClustersInput is undocumented. -type ListClustersInput struct { - ClusterStates []string `json:"ClusterStates,omitempty"` - CreatedAfter *aws.UnixTimestamp `json:"CreatedAfter,omitempty"` - CreatedBefore *aws.UnixTimestamp `json:"CreatedBefore,omitempty"` - Marker aws.StringValue `json:"Marker,omitempty"` -} - -// ListClustersOutput is undocumented. -type ListClustersOutput struct { - Clusters []ClusterSummary `json:"Clusters,omitempty"` - Marker aws.StringValue `json:"Marker,omitempty"` -} - -// ListInstanceGroupsInput is undocumented. -type ListInstanceGroupsInput struct { - ClusterID aws.StringValue `json:"ClusterId"` - Marker aws.StringValue `json:"Marker,omitempty"` -} - -// ListInstanceGroupsOutput is undocumented. -type ListInstanceGroupsOutput struct { - InstanceGroups []InstanceGroup `json:"InstanceGroups,omitempty"` - Marker aws.StringValue `json:"Marker,omitempty"` -} - -// ListInstancesInput is undocumented. -type ListInstancesInput struct { - ClusterID aws.StringValue `json:"ClusterId"` - InstanceGroupID aws.StringValue `json:"InstanceGroupId,omitempty"` - InstanceGroupTypes []string `json:"InstanceGroupTypes,omitempty"` - Marker aws.StringValue `json:"Marker,omitempty"` -} - -// ListInstancesOutput is undocumented. -type ListInstancesOutput struct { - Instances []Instance `json:"Instances,omitempty"` - Marker aws.StringValue `json:"Marker,omitempty"` -} - -// ListStepsInput is undocumented. -type ListStepsInput struct { - ClusterID aws.StringValue `json:"ClusterId"` - Marker aws.StringValue `json:"Marker,omitempty"` - StepIDs []string `json:"StepIds,omitempty"` - StepStates []string `json:"StepStates,omitempty"` -} - -// ListStepsOutput is undocumented. -type ListStepsOutput struct { - Marker aws.StringValue `json:"Marker,omitempty"` - Steps []StepSummary `json:"Steps,omitempty"` -} - -// Possible values for EMR. -const ( - MarketTypeOnDemand = "ON_DEMAND" - MarketTypeSpot = "SPOT" -) - -// ModifyInstanceGroupsInput is undocumented. -type ModifyInstanceGroupsInput struct { - InstanceGroups []InstanceGroupModifyConfig `json:"InstanceGroups,omitempty"` -} - -// PlacementType is undocumented. -type PlacementType struct { - AvailabilityZone aws.StringValue `json:"AvailabilityZone"` -} - -// RemoveTagsInput is undocumented. -type RemoveTagsInput struct { - ResourceID aws.StringValue `json:"ResourceId"` - TagKeys []string `json:"TagKeys"` -} - -// RemoveTagsOutput is undocumented. -type RemoveTagsOutput struct { -} - -// RunJobFlowInput is undocumented. -type RunJobFlowInput struct { - AdditionalInfo aws.StringValue `json:"AdditionalInfo,omitempty"` - AMIVersion aws.StringValue `json:"AmiVersion,omitempty"` - BootstrapActions []BootstrapActionConfig `json:"BootstrapActions,omitempty"` - Instances *JobFlowInstancesConfig `json:"Instances"` - JobFlowRole aws.StringValue `json:"JobFlowRole,omitempty"` - LogURI aws.StringValue `json:"LogUri,omitempty"` - Name aws.StringValue `json:"Name"` - NewSupportedProducts []SupportedProductConfig `json:"NewSupportedProducts,omitempty"` - ServiceRole aws.StringValue `json:"ServiceRole,omitempty"` - Steps []StepConfig `json:"Steps,omitempty"` - SupportedProducts []string `json:"SupportedProducts,omitempty"` - Tags []Tag `json:"Tags,omitempty"` - VisibleToAllUsers aws.BooleanValue `json:"VisibleToAllUsers,omitempty"` -} - -// RunJobFlowOutput is undocumented. -type RunJobFlowOutput struct { - JobFlowID aws.StringValue `json:"JobFlowId,omitempty"` -} - -// ScriptBootstrapActionConfig is undocumented. -type ScriptBootstrapActionConfig struct { - Args []string `json:"Args,omitempty"` - Path aws.StringValue `json:"Path"` -} - -// SetTerminationProtectionInput is undocumented. -type SetTerminationProtectionInput struct { - JobFlowIDs []string `json:"JobFlowIds"` - TerminationProtected aws.BooleanValue `json:"TerminationProtected"` -} - -// SetVisibleToAllUsersInput is undocumented. -type SetVisibleToAllUsersInput struct { - JobFlowIDs []string `json:"JobFlowIds"` - VisibleToAllUsers aws.BooleanValue `json:"VisibleToAllUsers"` -} - -// Step is undocumented. -type Step struct { - ActionOnFailure aws.StringValue `json:"ActionOnFailure,omitempty"` - Config *HadoopStepConfig `json:"Config,omitempty"` - ID aws.StringValue `json:"Id,omitempty"` - Name aws.StringValue `json:"Name,omitempty"` - Status *StepStatus `json:"Status,omitempty"` -} - -// StepConfig is undocumented. -type StepConfig struct { - ActionOnFailure aws.StringValue `json:"ActionOnFailure,omitempty"` - HadoopJARStep *HadoopJARStepConfig `json:"HadoopJarStep"` - Name aws.StringValue `json:"Name"` -} - -// StepDetail is undocumented. -type StepDetail struct { - ExecutionStatusDetail *StepExecutionStatusDetail `json:"ExecutionStatusDetail"` - StepConfig *StepConfig `json:"StepConfig"` -} - -// Possible values for EMR. -const ( - StepExecutionStateCancelled = "CANCELLED" - StepExecutionStateCompleted = "COMPLETED" - StepExecutionStateContinue = "CONTINUE" - StepExecutionStateFailed = "FAILED" - StepExecutionStateInterrupted = "INTERRUPTED" - StepExecutionStatePending = "PENDING" - StepExecutionStateRunning = "RUNNING" -) - -// StepExecutionStatusDetail is undocumented. -type StepExecutionStatusDetail struct { - CreationDateTime *aws.UnixTimestamp `json:"CreationDateTime"` - EndDateTime *aws.UnixTimestamp `json:"EndDateTime,omitempty"` - LastStateChangeReason aws.StringValue `json:"LastStateChangeReason,omitempty"` - StartDateTime *aws.UnixTimestamp `json:"StartDateTime,omitempty"` - State aws.StringValue `json:"State"` -} - -// Possible values for EMR. -const ( - StepStateCancelled = "CANCELLED" - StepStateCompleted = "COMPLETED" - StepStateFailed = "FAILED" - StepStateInterrupted = "INTERRUPTED" - StepStatePending = "PENDING" - StepStateRunning = "RUNNING" -) - -// StepStateChangeReason is undocumented. -type StepStateChangeReason struct { - Code aws.StringValue `json:"Code,omitempty"` - Message aws.StringValue `json:"Message,omitempty"` -} - -// Possible values for EMR. -const ( - StepStateChangeReasonCodeNone = "NONE" -) - -// StepStatus is undocumented. -type StepStatus struct { - State aws.StringValue `json:"State,omitempty"` - StateChangeReason *StepStateChangeReason `json:"StateChangeReason,omitempty"` - Timeline *StepTimeline `json:"Timeline,omitempty"` -} - -// StepSummary is undocumented. -type StepSummary struct { - ActionOnFailure aws.StringValue `json:"ActionOnFailure,omitempty"` - Config *HadoopStepConfig `json:"Config,omitempty"` - ID aws.StringValue `json:"Id,omitempty"` - Name aws.StringValue `json:"Name,omitempty"` - Status *StepStatus `json:"Status,omitempty"` -} - -// StepTimeline is undocumented. -type StepTimeline struct { - CreationDateTime *aws.UnixTimestamp `json:"CreationDateTime,omitempty"` - EndDateTime *aws.UnixTimestamp `json:"EndDateTime,omitempty"` - StartDateTime *aws.UnixTimestamp `json:"StartDateTime,omitempty"` -} - -// SupportedProductConfig is undocumented. -type SupportedProductConfig struct { - Args []string `json:"Args,omitempty"` - Name aws.StringValue `json:"Name,omitempty"` -} - -// Tag is undocumented. -type Tag struct { - Key aws.StringValue `json:"Key,omitempty"` - Value aws.StringValue `json:"Value,omitempty"` -} - -// TerminateJobFlowsInput is undocumented. -type TerminateJobFlowsInput struct { - JobFlowIDs []string `json:"JobFlowIds"` -} - -// avoid errors if the packages aren't referenced -var _ time.Time diff --git a/src/github.com/getlantern/aws-sdk-go/gen/endpoints/endpoints.go b/src/github.com/getlantern/aws-sdk-go/gen/endpoints/endpoints.go deleted file mode 100644 index 01ab7b2d8b..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/gen/endpoints/endpoints.go +++ /dev/null @@ -1,178 +0,0 @@ -// THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. - -// Package endpoints provides lookups for all AWS service endpoints. -package endpoints - -import ( - "strings" -) - -// Lookup returns the endpoint for the given service in the given region plus -// any overrides for the service name and region. -func Lookup(service, region string) (uri, newService, newRegion string) { - if override := findOverride(service, region); override != nil { - return override.uri, override.service, override.region - } - - switch service { - - case "cloudfront": - - if !strings.HasPrefix(region, "cn-") { - return format("https://cloudfront.amazonaws.com", service, region), service, "us-east-1" - } - - case "dynamodb": - - if region == "local" { - return format("http://localhost:8000", service, region), "dynamodb", "us-east-1" - } - - case "elasticmapreduce": - - if strings.HasPrefix(region, "cn-") { - return format("https://elasticmapreduce.cn-north-1.amazonaws.com.cn", service, region), service, region - } - - if region == "eu-central-1" { - return format("https://elasticmapreduce.eu-central-1.amazonaws.com", service, region), service, region - } - - if region == "us-east-1" { - return format("https://elasticmapreduce.us-east-1.amazonaws.com", service, region), service, region - } - - if region != "" { - return format("https://{region}.elasticmapreduce.amazonaws.com", service, region), service, region - } - - case "iam": - - if strings.HasPrefix(region, "cn-") { - return format("https://{service}.cn-north-1.amazonaws.com.cn", service, region), service, region - } - - if strings.HasPrefix(region, "us-gov") { - return format("https://{service}.us-gov.amazonaws.com", service, region), service, region - } - - return format("https://iam.amazonaws.com", service, region), service, "us-east-1" - - case "importexport": - - if !strings.HasPrefix(region, "cn-") { - return format("https://importexport.amazonaws.com", service, region), service, region - } - - case "rds": - - if region == "us-east-1" { - return format("https://rds.amazonaws.com", service, region), service, region - } - - case "route53": - - if !strings.HasPrefix(region, "cn-") { - return format("https://route53.amazonaws.com", service, region), service, region - } - - case "s3": - - if region == "us-east-1" || region == "" { - return format("{scheme}://s3.amazonaws.com", service, region), service, "us-east-1" - } - - if strings.HasPrefix(region, "cn-") { - return format("{scheme}://{service}.{region}.amazonaws.com.cn", service, region), service, region - } - - if region == "us-east-1" || region == "ap-northeast-1" || region == "sa-east-1" || region == "ap-southeast-1" || region == "ap-southeast-2" || region == "us-west-2" || region == "us-west-1" || region == "eu-west-1" || region == "us-gov-west-1" || region == "fips-us-gov-west-1" { - return format("{scheme}://{service}-{region}.amazonaws.com", service, region), service, region - } - - if region != "" { - return format("{scheme}://{service}.{region}.amazonaws.com", service, region), service, region - } - - case "sdb": - - if region == "us-east-1" { - return format("https://sdb.amazonaws.com", service, region), service, region - } - - case "sqs": - - if region == "us-east-1" { - return format("https://queue.amazonaws.com", service, region), service, region - } - - if strings.HasPrefix(region, "cn-") { - return format("https://{region}.queue.amazonaws.com.cn", service, region), service, region - } - - if region != "" { - return format("https://{region}.queue.amazonaws.com", service, region), service, region - } - - case "sts": - - if strings.HasPrefix(region, "cn-") { - return format("{scheme}://{service}.cn-north-1.amazonaws.com.cn", service, region), service, region - } - - if strings.HasPrefix(region, "us-gov") { - return format("https://{service}.{region}.amazonaws.com", service, region), service, region - } - - return format("https://sts.amazonaws.com", service, region), service, "us-east-1" - - } - - if strings.HasPrefix(region, "cn-") { - return format("{scheme}://{service}.{region}.amazonaws.com.cn", service, region), service, region - } - - if region != "" { - return format("{scheme}://{service}.{region}.amazonaws.com", service, region), service, region - } - - panic("unknown endpoint for " + service + " in " + region) -} - -// AddOverride overrides the endpoint for a specific service, using either an -// existing region name or a fake one (e.g. "test-1"). -// -// This allows developers to use local mock AWS services when they're -// writing tests for their Go code that uses aws-go: -// -// endpoints.AddOverride("EC2", "test-1", "http://localhost:3000") -// // This EC2 client uses the override as service endpoint. -// cli := ec2.New(credentials, "test-1", nil) -func AddOverride(service, region, uri string) { - overrides = append(overrides, override{service, region, uri}) -} - -func format(uri, service, region string) string { - uri = strings.Replace(uri, "{scheme}", "https", -1) - uri = strings.Replace(uri, "{service}", service, -1) - uri = strings.Replace(uri, "{region}", region, -1) - return uri -} - -func findOverride(service, region string) *override { - for _, override := range overrides { - if strings.ToUpper(override.service) == strings.ToUpper(service) && - override.region == region { - return &override - } - } - return nil -} - -type override struct { - service string - region string - uri string -} - -var overrides []override diff --git a/src/github.com/getlantern/aws-sdk-go/gen/gen.go b/src/github.com/getlantern/aws-sdk-go/gen/gen.go deleted file mode 100644 index 09afd0517f..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/gen/gen.go +++ /dev/null @@ -1,47 +0,0 @@ -// Package gen contains automatically generated AWS clients. -package gen - -//go:generate aws-gen-goendpoints ../apis/_endpoints.json endpoints/endpoints.go -//go:generate aws-gen-gocli AutoScaling ../apis/autoscaling/2011-01-01.normal.json autoscaling/autoscaling.go -//go:generate aws-gen-gocli CloudFormation ../apis/cloudformation/2010-05-15.normal.json cloudformation/cloudformation.go -//go:generate aws-gen-gocli CloudFront ../apis/cloudfront/2014-10-21.normal.json cloudfront/cloudfront.go -//go:generate aws-gen-gocli CloudHSM ../apis/cloudhsm/2014-05-30.normal.json cloudhsm/cloudhsm.go -//go:generate aws-gen-gocli CloudTrail ../apis/cloudtrail/2013-11-01.normal.json cloudtrail/cloudtrail.go -//go:generate aws-gen-gocli CloudSearch ../apis/cloudsearch/2013-01-01.normal.json cloudsearch/cloudsearch.go -//go:generate aws-gen-gocli CloudSearchDomain ../apis/cloudsearchdomain/2013-01-01.normal.json cloudsearchdomain/cloudsearchdomain.go -//go:generate aws-gen-gocli CloudWatch ../apis/cloudwatch/2010-08-01.normal.json cloudwatch/cloudwatch.go -//go:generate aws-gen-gocli CognitoIdentity ../apis/cognito-identity/2014-06-30.normal.json cognito/identity/identity.go -//go:generate aws-gen-gocli CognitoSync ../apis/cognito-sync/2014-06-30.normal.json cognito/sync/sync.go -//go:generate aws-gen-gocli CodeDeploy ../apis/codedeploy/2014-10-06.normal.json codedeploy/codedeploy.go -//go:generate aws-gen-gocli Config ../apis/config/2014-11-12.normal.json config/config.go -//go:generate aws-gen-gocli DataPipeline ../apis/datapipeline/2012-10-29.normal.json datapipeline/datapipeline.go -//go:generate aws-gen-gocli DirectConnect ../apis/directconnect/2012-10-25.normal.json directconnect/directconnect.go -//go:generate aws-gen-gocli DynamoDB ../apis/dynamodb/2012-08-10.normal.json dynamodb/dynamodb.go -//go:generate aws-gen-gocli EC2 ../apis/ec2/2014-10-01.normal.json ec2/ec2.go -//go:generate aws-gen-gocli ECS ../apis/ecs/2014-11-13.normal.json ecs/ecs.go -//go:generate aws-gen-gocli ElasticCache ../apis/elasticache/2014-09-30.normal.json elasticache/elasticache.go -//go:generate aws-gen-gocli ElasticBeanstalk ../apis/elasticbeanstalk/2010-12-01.normal.json elasticbeanstalk/elasticbeanstalk.go -//go:generate aws-gen-gocli ElasticTranscoder ../apis/elastictranscoder/2012-09-25.normal.json elastictranscoder/elastictranscoder.go -//go:generate aws-gen-gocli ELB ../apis/elb/2012-06-01.normal.json elb/elb.go -//go:generate aws-gen-gocli EMR ../apis/emr/2009-03-31.normal.json emr/emr.go -//go:generate aws-gen-gocli Glacier ../apis/glacier/2012-06-01.normal.json glacier/glacier.go -//go:generate aws-gen-gocli IAM ../apis/iam/2010-05-08.normal.json iam/iam.go -//go:generate aws-gen-gocli ImportExport ../apis/importexport/2010-06-01.normal.json importexport/importexport.go -//go:generate aws-gen-gocli Kinesis ../apis/kinesis/2013-12-02.normal.json kinesis/kinesis.go -//go:generate aws-gen-gocli KMS ../apis/kms/2014-11-01.normal.json kms/kms.go -//go:generate aws-gen-gocli Lambda ../apis/lambda/2014-11-11.normal.json lambda/lambda.go -//go:generate aws-gen-gocli Logs ../apis/logs/2014-03-28.normal.json logs/logs.go -//go:generate aws-gen-gocli OpsWorks ../apis/opsworks/2013-02-18.normal.json opsworks/opsworks.go -//go:generate aws-gen-gocli RDS ../apis/rds/2014-10-31.normal.json rds/rds.go -//go:generate aws-gen-gocli RedShift ../apis/redshift/2012-12-01.normal.json redshift/redshift.go -//go:generate aws-gen-gocli Route53 ../apis/route53/2013-04-01.normal.json route53/route53.go -//go:generate aws-gen-gocli Route53Domains ../apis/route53domains/2014-05-15.normal.json route53domains/route53domains.go -//go:generate aws-gen-gocli S3 ../apis/s3/2006-03-01.normal.json s3/s3.go -//go:generate aws-gen-gocli SDB ../apis/sdb/2009-04-15.normal.json sdb/sdb.go -//go:generate aws-gen-gocli SES ../apis/ses/2010-12-01.normal.json ses/ses.go -//go:generate aws-gen-gocli SNS ../apis/sns/2010-03-31.normal.json sns/sns.go -//go:generate aws-gen-gocli SQS ../apis/sqs/2012-11-05.normal.json sqs/sqs.go -//go:generate aws-gen-gocli StorageGateway ../apis/storagegateway/2013-06-30.normal.json storagegateway/storagegateway.go -//go:generate aws-gen-gocli STS ../apis/sts/2011-06-15.normal.json sts/sts.go -//go:generate aws-gen-gocli Support ../apis/support/2013-04-15.normal.json support/support.go -//go:generate aws-gen-gocli SWF ../apis/swf/2012-01-25.normal.json swf/swf.go diff --git a/src/github.com/getlantern/aws-sdk-go/gen/glacier/glacier.go b/src/github.com/getlantern/aws-sdk-go/gen/glacier/glacier.go deleted file mode 100644 index b46ec1ff41..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/gen/glacier/glacier.go +++ /dev/null @@ -1,2083 +0,0 @@ -// THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. - -// Package glacier provides a client for Amazon Glacier. -package glacier - -import ( - "net/http" - "time" - - "github.com/awslabs/aws-sdk-go/aws" - "github.com/awslabs/aws-sdk-go/gen/endpoints" -) - -import ( - "bytes" - "encoding/json" - "fmt" - "io" - "io/ioutil" - "net/url" - "strconv" - "strings" -) - -// Glacier is a client for Amazon Glacier. -type Glacier struct { - client *aws.RestClient -} - -// New returns a new Glacier client. -func New(creds aws.CredentialsProvider, region string, client *http.Client) *Glacier { - if client == nil { - client = http.DefaultClient - } - - endpoint, service, region := endpoints.Lookup("glacier", region) - - return &Glacier{ - client: &aws.RestClient{ - Context: aws.Context{ - Credentials: creds, - Service: service, - Region: region, - }, - Client: client, - Endpoint: endpoint, - APIVersion: "2012-06-01", - }, - } -} - -// AbortMultipartUpload this operation aborts a multipart upload identified -// by the upload After the Abort Multipart Upload request succeeds, you -// cannot upload any more parts to the multipart upload or complete the -// multipart upload. Aborting a completed upload fails. However, aborting -// an already-aborted upload will succeed, for a short time. For more -// information about uploading a part and completing a multipart upload, -// see UploadMultipartPart and CompleteMultipartUpload This operation is -// idempotent. An AWS account has full permission to perform all operations -// (actions). However, AWS Identity and Access Management users don't have -// any permissions by default. You must grant them explicit permission to -// perform specific actions. For more information, see Access Control Using -// AWS Identity and Access Management For conceptual information and -// underlying go to Working with Archives in Amazon Glacier and Abort -// Multipart Upload in the Amazon Glacier Developer Guide . -func (c *Glacier) AbortMultipartUpload(req *AbortMultipartUploadInput) (err error) { - // NRE - - var body io.Reader - var contentType string - - uri := c.client.Endpoint + "/{accountId}/vaults/{vaultName}/multipart-uploads/{uploadId}" - - if req.AccountID != nil { - uri = strings.Replace(uri, "{"+"accountId"+"}", aws.EscapePath(*req.AccountID), -1) - uri = strings.Replace(uri, "{"+"accountId+"+"}", aws.EscapePath(*req.AccountID), -1) - } - - if req.UploadID != nil { - uri = strings.Replace(uri, "{"+"uploadId"+"}", aws.EscapePath(*req.UploadID), -1) - uri = strings.Replace(uri, "{"+"uploadId+"+"}", aws.EscapePath(*req.UploadID), -1) - } - - if req.VaultName != nil { - uri = strings.Replace(uri, "{"+"vaultName"+"}", aws.EscapePath(*req.VaultName), -1) - uri = strings.Replace(uri, "{"+"vaultName+"+"}", aws.EscapePath(*req.VaultName), -1) - } - - q := url.Values{} - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("DELETE", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - - return -} - -// CompleteMultipartUpload you call this operation to inform Amazon Glacier -// that all the archive parts have been uploaded and that Amazon Glacier -// can now assemble the archive from the uploaded parts. After assembling -// and saving the archive to the vault, Amazon Glacier returns the URI path -// of the newly created archive resource. Using the URI path, you can then -// access the archive. After you upload an archive, you should save the -// archive ID returned to retrieve the archive at a later point. You can -// also get the vault inventory to obtain a list of archive IDs in a vault. -// For more information, see InitiateJob In the request, you must include -// the computed SHA256 tree hash of the entire archive you have uploaded. -// For information about computing a SHA256 tree hash, see Computing -// Checksums . On the server side, Amazon Glacier also constructs the -// SHA256 tree hash of the assembled archive. If the values match, Amazon -// Glacier saves the archive to the vault; otherwise, it returns an error, -// and the operation fails. The ListParts operation returns a list of parts -// uploaded for a specific multipart upload. It includes checksum -// information for each uploaded part that can be used to debug a bad -// checksum issue. Additionally, Amazon Glacier also checks for any missing -// content ranges when assembling the archive, if missing content ranges -// are found, Amazon Glacier returns an error and the operation fails. -// Complete Multipart Upload is an idempotent operation. After your first -// successful complete multipart upload, if you call the operation again -// within a short period, the operation will succeed and return the same -// archive ID. This is useful in the event you experience a network issue -// that causes an aborted connection or receive a 500 server error, in -// which case you can repeat your Complete Multipart Upload request and get -// the same archive ID without creating duplicate archives. Note, however, -// that after the multipart upload completes, you cannot call the List -// Parts operation and the multipart upload will not appear in List -// Multipart Uploads response, even if idempotent complete is possible. An -// AWS account has full permission to perform all operations (actions). -// However, AWS Identity and Access Management users don't have any -// permissions by default. You must grant them explicit permission to -// perform specific actions. For more information, see Access Control Using -// AWS Identity and Access Management For conceptual information and -// underlying go to Uploading Large Archives in Parts (Multipart Upload) -// and Complete Multipart Upload in the Amazon Glacier Developer Guide . -func (c *Glacier) CompleteMultipartUpload(req *CompleteMultipartUploadInput) (resp *ArchiveCreationOutput, err error) { - resp = &ArchiveCreationOutput{} - - var body io.Reader - var contentType string - - uri := c.client.Endpoint + "/{accountId}/vaults/{vaultName}/multipart-uploads/{uploadId}" - - if req.AccountID != nil { - uri = strings.Replace(uri, "{"+"accountId"+"}", aws.EscapePath(*req.AccountID), -1) - uri = strings.Replace(uri, "{"+"accountId+"+"}", aws.EscapePath(*req.AccountID), -1) - } - - if req.UploadID != nil { - uri = strings.Replace(uri, "{"+"uploadId"+"}", aws.EscapePath(*req.UploadID), -1) - uri = strings.Replace(uri, "{"+"uploadId+"+"}", aws.EscapePath(*req.UploadID), -1) - } - - if req.VaultName != nil { - uri = strings.Replace(uri, "{"+"vaultName"+"}", aws.EscapePath(*req.VaultName), -1) - uri = strings.Replace(uri, "{"+"vaultName+"+"}", aws.EscapePath(*req.VaultName), -1) - } - - q := url.Values{} - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("POST", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - if req.ArchiveSize != nil { - httpReq.Header.Set("x-amz-archive-size", *req.ArchiveSize) - } - - if req.Checksum != nil { - httpReq.Header.Set("x-amz-sha256-tree-hash", *req.Checksum) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - - if e := json.NewDecoder(httpResp.Body).Decode(resp); e != nil && e != io.EOF { - err = e - return - } - - if s := httpResp.Header.Get("x-amz-archive-id"); s != "" { - - resp.ArchiveID = &s - - } - - if s := httpResp.Header.Get("x-amz-sha256-tree-hash"); s != "" { - - resp.Checksum = &s - - } - - if s := httpResp.Header.Get("Location"); s != "" { - - resp.Location = &s - - } - - return -} - -// CreateVault this operation creates a new vault with the specified name. -// The name of the vault must be unique within a region for an AWS account. -// You can create up to 1,000 vaults per account. If you need to create -// more vaults, contact Amazon Glacier. You must use the following -// guidelines when naming a vault. Names can be between 1 and 255 -// characters long. Allowed characters are a-z, 0-9, '_' (underscore), '-' -// (hyphen), and '.' (period). This operation is idempotent. An AWS account -// has full permission to perform all operations (actions). However, AWS -// Identity and Access Management users don't have any permissions by -// default. You must grant them explicit permission to perform specific -// actions. For more information, see Access Control Using AWS Identity and -// Access Management For conceptual information and underlying go to -// Creating a Vault in Amazon Glacier and Create Vault in the Amazon -// Glacier Developer Guide . -func (c *Glacier) CreateVault(req *CreateVaultInput) (resp *CreateVaultOutput, err error) { - resp = &CreateVaultOutput{} - - var body io.Reader - var contentType string - - uri := c.client.Endpoint + "/{accountId}/vaults/{vaultName}" - - if req.AccountID != nil { - uri = strings.Replace(uri, "{"+"accountId"+"}", aws.EscapePath(*req.AccountID), -1) - uri = strings.Replace(uri, "{"+"accountId+"+"}", aws.EscapePath(*req.AccountID), -1) - } - - if req.VaultName != nil { - uri = strings.Replace(uri, "{"+"vaultName"+"}", aws.EscapePath(*req.VaultName), -1) - uri = strings.Replace(uri, "{"+"vaultName+"+"}", aws.EscapePath(*req.VaultName), -1) - } - - q := url.Values{} - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("PUT", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - - if e := json.NewDecoder(httpResp.Body).Decode(resp); e != nil && e != io.EOF { - err = e - return - } - - if s := httpResp.Header.Get("Location"); s != "" { - - resp.Location = &s - - } - - return -} - -// DeleteArchive this operation deletes an archive from a vault. Subsequent -// requests to initiate a retrieval of this archive will fail. Archive -// retrievals that are in progress for this archive ID may or may not -// succeed according to the following scenarios: If the archive retrieval -// job is actively preparing the data for download when Amazon Glacier -// receives the delete archive request, the archival retrieval operation -// might fail. If the archive retrieval job has successfully prepared the -// archive for download when Amazon Glacier receives the delete archive -// request, you will be able to download the output. This operation is -// idempotent. Attempting to delete an already-deleted archive does not -// result in an error. An AWS account has full permission to perform all -// operations (actions). However, AWS Identity and Access Management users -// don't have any permissions by default. You must grant them explicit -// permission to perform specific actions. For more information, see Access -// Control Using AWS Identity and Access Management For conceptual -// information and underlying go to Deleting an Archive in Amazon Glacier -// and Delete Archive in the Amazon Glacier Developer Guide . -func (c *Glacier) DeleteArchive(req *DeleteArchiveInput) (err error) { - // NRE - - var body io.Reader - var contentType string - - uri := c.client.Endpoint + "/{accountId}/vaults/{vaultName}/archives/{archiveId}" - - if req.AccountID != nil { - uri = strings.Replace(uri, "{"+"accountId"+"}", aws.EscapePath(*req.AccountID), -1) - uri = strings.Replace(uri, "{"+"accountId+"+"}", aws.EscapePath(*req.AccountID), -1) - } - - if req.ArchiveID != nil { - uri = strings.Replace(uri, "{"+"archiveId"+"}", aws.EscapePath(*req.ArchiveID), -1) - uri = strings.Replace(uri, "{"+"archiveId+"+"}", aws.EscapePath(*req.ArchiveID), -1) - } - - if req.VaultName != nil { - uri = strings.Replace(uri, "{"+"vaultName"+"}", aws.EscapePath(*req.VaultName), -1) - uri = strings.Replace(uri, "{"+"vaultName+"+"}", aws.EscapePath(*req.VaultName), -1) - } - - q := url.Values{} - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("DELETE", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - - return -} - -// DeleteVault this operation deletes a vault. Amazon Glacier will delete a -// vault only if there are no archives in the vault as of the last -// inventory and there have been no writes to the vault since the last -// inventory. If either of these conditions is not satisfied, the vault -// deletion fails (that is, the vault is not removed) and Amazon Glacier -// returns an error. You can use DescribeVault to return the number of -// archives in a vault, and you can use Initiate a Job jobs) to initiate a -// new inventory retrieval for a vault. The inventory contains the archive -// IDs you use to delete archives using Delete Archive archive) This -// operation is idempotent. An AWS account has full permission to perform -// all operations (actions). However, AWS Identity and Access Management -// users don't have any permissions by default. You must grant them -// explicit permission to perform specific actions. For more information, -// see Access Control Using AWS Identity and Access Management For -// conceptual information and underlying go to Deleting a Vault in Amazon -// Glacier and Delete Vault in the Amazon Glacier Developer Guide . -func (c *Glacier) DeleteVault(req *DeleteVaultInput) (err error) { - // NRE - - var body io.Reader - var contentType string - - uri := c.client.Endpoint + "/{accountId}/vaults/{vaultName}" - - if req.AccountID != nil { - uri = strings.Replace(uri, "{"+"accountId"+"}", aws.EscapePath(*req.AccountID), -1) - uri = strings.Replace(uri, "{"+"accountId+"+"}", aws.EscapePath(*req.AccountID), -1) - } - - if req.VaultName != nil { - uri = strings.Replace(uri, "{"+"vaultName"+"}", aws.EscapePath(*req.VaultName), -1) - uri = strings.Replace(uri, "{"+"vaultName+"+"}", aws.EscapePath(*req.VaultName), -1) - } - - q := url.Values{} - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("DELETE", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - - return -} - -// DeleteVaultNotifications this operation deletes the notification -// configuration set for a vault. The operation is eventually -// consistent;that is, it might take some time for Amazon Glacier to -// completely disable the notifications and you might still receive some -// notifications for a short time after you send the delete request. An AWS -// account has full permission to perform all operations (actions). -// However, AWS Identity and Access Management users don't have any -// permissions by default. You must grant them explicit permission to -// perform specific actions. For more information, see Access Control Using -// AWS Identity and Access Management For conceptual information and -// underlying go to Configuring Vault Notifications in Amazon Glacier and -// Delete Vault Notification Configuration in the Amazon Glacier Developer -// Guide. -func (c *Glacier) DeleteVaultNotifications(req *DeleteVaultNotificationsInput) (err error) { - // NRE - - var body io.Reader - var contentType string - - uri := c.client.Endpoint + "/{accountId}/vaults/{vaultName}/notification-configuration" - - if req.AccountID != nil { - uri = strings.Replace(uri, "{"+"accountId"+"}", aws.EscapePath(*req.AccountID), -1) - uri = strings.Replace(uri, "{"+"accountId+"+"}", aws.EscapePath(*req.AccountID), -1) - } - - if req.VaultName != nil { - uri = strings.Replace(uri, "{"+"vaultName"+"}", aws.EscapePath(*req.VaultName), -1) - uri = strings.Replace(uri, "{"+"vaultName+"+"}", aws.EscapePath(*req.VaultName), -1) - } - - q := url.Values{} - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("DELETE", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - - return -} - -// DescribeJob this operation returns information about a job you -// previously initiated, including the job initiation date, the user who -// initiated the job, the job status code/message and the Amazon SNS topic -// to notify after Amazon Glacier completes the job. For more information -// about initiating a job, see InitiateJob . This operation enables you to -// check the status of your job. However, it is strongly recommended that -// you set up an Amazon SNS topic and specify it in your initiate job -// request so that Amazon Glacier can notify the topic after it completes -// the job. A job ID will not expire for at least 24 hours after Amazon -// Glacier completes the job. An AWS account has full permission to perform -// all operations (actions). However, AWS Identity and Access Management -// users don't have any permissions by default. You must grant them -// explicit permission to perform specific actions. For more information, -// see Access Control Using AWS Identity and Access Management For -// information about the underlying go to Working with Archives in Amazon -// Glacier in the Amazon Glacier Developer Guide . -func (c *Glacier) DescribeJob(req *DescribeJobInput) (resp *GlacierJobDescription, err error) { - resp = &GlacierJobDescription{} - - var body io.Reader - var contentType string - - uri := c.client.Endpoint + "/{accountId}/vaults/{vaultName}/jobs/{jobId}" - - if req.AccountID != nil { - uri = strings.Replace(uri, "{"+"accountId"+"}", aws.EscapePath(*req.AccountID), -1) - uri = strings.Replace(uri, "{"+"accountId+"+"}", aws.EscapePath(*req.AccountID), -1) - } - - if req.JobID != nil { - uri = strings.Replace(uri, "{"+"jobId"+"}", aws.EscapePath(*req.JobID), -1) - uri = strings.Replace(uri, "{"+"jobId+"+"}", aws.EscapePath(*req.JobID), -1) - } - - if req.VaultName != nil { - uri = strings.Replace(uri, "{"+"vaultName"+"}", aws.EscapePath(*req.VaultName), -1) - uri = strings.Replace(uri, "{"+"vaultName+"+"}", aws.EscapePath(*req.VaultName), -1) - } - - q := url.Values{} - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("GET", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - - if e := json.NewDecoder(httpResp.Body).Decode(resp); e != nil && e != io.EOF { - err = e - return - } - - return -} - -// DescribeVault this operation returns information about a vault, -// including the vault's Amazon Resource Name the date the vault was -// created, the number of archives it contains, and the total size of all -// the archives in the vault. The number of archives and their total size -// are as of the last inventory generation. This means that if you add or -// remove an archive from a vault, and then immediately use Describe Vault, -// the change in contents will not be immediately reflected. If you want to -// retrieve the latest inventory of the vault, use InitiateJob . Amazon -// Glacier generates vault inventories approximately daily. For more -// information, see Downloading a Vault Inventory in Amazon Glacier . An -// AWS account has full permission to perform all operations (actions). -// However, AWS Identity and Access Management users don't have any -// permissions by default. You must grant them explicit permission to -// perform specific actions. For more information, see Access Control Using -// AWS Identity and Access Management For conceptual information and -// underlying go to Retrieving Vault Metadata in Amazon Glacier and -// Describe Vault in the Amazon Glacier Developer Guide . -func (c *Glacier) DescribeVault(req *DescribeVaultInput) (resp *DescribeVaultOutput, err error) { - resp = &DescribeVaultOutput{} - - var body io.Reader - var contentType string - - uri := c.client.Endpoint + "/{accountId}/vaults/{vaultName}" - - if req.AccountID != nil { - uri = strings.Replace(uri, "{"+"accountId"+"}", aws.EscapePath(*req.AccountID), -1) - uri = strings.Replace(uri, "{"+"accountId+"+"}", aws.EscapePath(*req.AccountID), -1) - } - - if req.VaultName != nil { - uri = strings.Replace(uri, "{"+"vaultName"+"}", aws.EscapePath(*req.VaultName), -1) - uri = strings.Replace(uri, "{"+"vaultName+"+"}", aws.EscapePath(*req.VaultName), -1) - } - - q := url.Values{} - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("GET", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - - if e := json.NewDecoder(httpResp.Body).Decode(resp); e != nil && e != io.EOF { - err = e - return - } - - return -} - -// GetDataRetrievalPolicy -func (c *Glacier) GetDataRetrievalPolicy(req *GetDataRetrievalPolicyInput) (resp *GetDataRetrievalPolicyOutput, err error) { - resp = &GetDataRetrievalPolicyOutput{} - - var body io.Reader - var contentType string - - uri := c.client.Endpoint + "/{accountId}/policies/data-retrieval" - - if req.AccountID != nil { - uri = strings.Replace(uri, "{"+"accountId"+"}", aws.EscapePath(*req.AccountID), -1) - uri = strings.Replace(uri, "{"+"accountId+"+"}", aws.EscapePath(*req.AccountID), -1) - } - - q := url.Values{} - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("GET", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - - if e := json.NewDecoder(httpResp.Body).Decode(resp); e != nil && e != io.EOF { - err = e - return - } - - return -} - -// GetJobOutput this operation downloads the output of the job you -// initiated using InitiateJob . Depending on the job type you specified -// when you initiated the job, the output will be either the content of an -// archive or a vault inventory. A job ID will not expire for at least 24 -// hours after Amazon Glacier completes the job. That is, you can download -// the job output within the 24 hours period after Amazon Glacier completes -// the job. If the job output is large, then you can use the Range request -// header to retrieve a portion of the output. This allows you to download -// the entire output in smaller chunks of bytes. For example, suppose you -// have 1 GB of job output you want to download and you decide to download -// 128 MB chunks of data at a time, which is a total of eight Get Job -// Output requests. You use the following process to download the job -// output: Download a 128 MB chunk of output by specifying the appropriate -// byte range using the Range header. Along with the data, the response -// includes a checksum of the payload. You compute the checksum of the -// payload on the client and compare it with the checksum you received in -// the response to ensure you received all the expected data. Repeat steps -// 1 and 2 for all the eight 128 MB chunks of output data, each time -// specifying the appropriate byte range. After downloading all the parts -// of the job output, you have a list of eight checksum values. Compute the -// tree hash of these values to find the checksum of the entire output. -// Using the DescribeJob obtain job information of the job that provided -// you the output. The response includes the checksum of the entire archive -// stored in Amazon Glacier. You compare this value with the checksum you -// computed to ensure you have downloaded the entire archive content with -// no errors. An AWS account has full permission to perform all operations -// (actions). However, AWS Identity and Access Management users don't have -// any permissions by default. You must grant them explicit permission to -// perform specific actions. For more information, see Access Control Using -// AWS Identity and Access Management For conceptual information and the -// underlying go to Downloading a Vault Inventory , Downloading an Archive -// , and Get Job Output -func (c *Glacier) GetJobOutput(req *GetJobOutputInput) (resp *GetJobOutputOutput, err error) { - resp = &GetJobOutputOutput{} - - var body io.Reader - var contentType string - - uri := c.client.Endpoint + "/{accountId}/vaults/{vaultName}/jobs/{jobId}/output" - - if req.AccountID != nil { - uri = strings.Replace(uri, "{"+"accountId"+"}", aws.EscapePath(*req.AccountID), -1) - uri = strings.Replace(uri, "{"+"accountId+"+"}", aws.EscapePath(*req.AccountID), -1) - } - - if req.JobID != nil { - uri = strings.Replace(uri, "{"+"jobId"+"}", aws.EscapePath(*req.JobID), -1) - uri = strings.Replace(uri, "{"+"jobId+"+"}", aws.EscapePath(*req.JobID), -1) - } - - if req.VaultName != nil { - uri = strings.Replace(uri, "{"+"vaultName"+"}", aws.EscapePath(*req.VaultName), -1) - uri = strings.Replace(uri, "{"+"vaultName+"+"}", aws.EscapePath(*req.VaultName), -1) - } - - q := url.Values{} - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("GET", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - if req.Range != nil { - httpReq.Header.Set("Range", *req.Range) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - - if e := json.NewDecoder(httpResp.Body).Decode(resp); e != nil && e != io.EOF { - err = e - return - } - - if s := httpResp.Header.Get("Accept-Ranges"); s != "" { - - resp.AcceptRanges = &s - - } - - if s := httpResp.Header.Get("x-amz-archive-description"); s != "" { - - resp.ArchiveDescription = &s - - } - - if s := httpResp.Header.Get("x-amz-sha256-tree-hash"); s != "" { - - resp.Checksum = &s - - } - - if s := httpResp.Header.Get("Content-Range"); s != "" { - - resp.ContentRange = &s - - } - - if s := httpResp.Header.Get("Content-Type"); s != "" { - - resp.ContentType = &s - - } - - resp.Status = aws.Integer(httpResp.StatusCode) - - return -} - -// GetVaultNotifications this operation retrieves the -// notification-configuration subresource of the specified vault. For -// information about setting a notification configuration on a vault, see -// SetVaultNotifications . If a notification configuration for a vault is -// not set, the operation returns a 404 Not Found error. For more -// information about vault notifications, see Configuring Vault -// Notifications in Amazon Glacier . An AWS account has full permission to -// perform all operations (actions). However, AWS Identity and Access -// Management users don't have any permissions by default. You must grant -// them explicit permission to perform specific actions. For more -// information, see Access Control Using AWS Identity and Access Management -// For conceptual information and underlying go to Configuring Vault -// Notifications in Amazon Glacier and Get Vault Notification Configuration -// in the Amazon Glacier Developer Guide . -func (c *Glacier) GetVaultNotifications(req *GetVaultNotificationsInput) (resp *GetVaultNotificationsOutput, err error) { - resp = &GetVaultNotificationsOutput{} - - var body io.Reader - var contentType string - - uri := c.client.Endpoint + "/{accountId}/vaults/{vaultName}/notification-configuration" - - if req.AccountID != nil { - uri = strings.Replace(uri, "{"+"accountId"+"}", aws.EscapePath(*req.AccountID), -1) - uri = strings.Replace(uri, "{"+"accountId+"+"}", aws.EscapePath(*req.AccountID), -1) - } - - if req.VaultName != nil { - uri = strings.Replace(uri, "{"+"vaultName"+"}", aws.EscapePath(*req.VaultName), -1) - uri = strings.Replace(uri, "{"+"vaultName+"+"}", aws.EscapePath(*req.VaultName), -1) - } - - q := url.Values{} - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("GET", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - - if e := json.NewDecoder(httpResp.Body).Decode(resp); e != nil && e != io.EOF { - err = e - return - } - - return -} - -// InitiateJob this operation initiates a job of the specified type. In -// this release, you can initiate a job to retrieve either an archive or a -// vault inventory (a list of archives in a vault). Retrieving data from -// Amazon Glacier is a two-step process: Initiate a retrieval job. After -// the job completes, download the bytes. The retrieval request is executed -// asynchronously. When you initiate a retrieval job, Amazon Glacier -// creates a job and returns a job ID in the response. When Amazon Glacier -// completes the job, you can get the job output (archive or inventory -// data). For information about getting job output, see GetJobOutput -// operation. The job must complete before you can get its output. To -// determine when a job is complete, you have the following options: Use -// Amazon SNS Notification You can specify an Amazon Simple Notification -// Service (Amazon topic to which Amazon Glacier can post a notification -// after the job is completed. You can specify an SNS topic per job -// request. The notification is sent only after Amazon Glacier completes -// the job. In addition to specifying an SNS topic per job request, you can -// configure vault notifications for a vault so that job notifications are -// always sent. For more information, see SetVaultNotifications Get job -// details You can make a DescribeJob request to obtain job status -// information while a job is in progress. However, it is more efficient to -// use an Amazon SNS notification to determine when a job is complete. The -// information you get via notification is same that you get by calling -// DescribeJob If for a specific event, you add both the notification -// configuration on the vault and also specify an SNS topic in your -// initiate job request, Amazon Glacier sends both notifications. For more -// information, see SetVaultNotifications An AWS account has full -// permission to perform all operations (actions). However, AWS Identity -// and Access Management users don't have any permissions by default. You -// must grant them explicit permission to perform specific actions. For -// more information, see Access Control Using AWS Identity and Access -// Management About the Vault Inventory Amazon Glacier prepares an -// inventory for each vault periodically, every 24 hours. When you initiate -// a job for a vault inventory, Amazon Glacier returns the last inventory -// for the vault. The inventory data you get might be up to a day or two -// days old. Also, the initiate inventory job might take some time to -// complete before you can download the vault inventory. So you do not want -// to retrieve a vault inventory for each vault operation. However, in some -// scenarios, you might find the vault inventory useful. For example, when -// you upload an archive, you can provide an archive description but not an -// archive name. Amazon Glacier provides you a unique archive ID, an opaque -// string of characters. So, you might maintain your own database that maps -// archive names to their corresponding Amazon Glacier assigned archive -// IDs. You might find the vault inventory useful in the event you need to -// reconcile information in your database with the actual vault inventory. -// Range Inventory Retrieval You can limit the number of inventory items -// retrieved by filtering on the archive creation date or by setting a -// limit. Filtering by Archive Creation Date You can retrieve inventory -// items for archives created between StartDate and EndDate by specifying -// values for these parameters in the InitiateJob request. Archives created -// on or after the StartDate and before the EndDate will be returned. If -// you only provide the StartDate without the EndDate , you will retrieve -// the inventory for all archives created on or after the StartDate . If -// you only provide the EndDate without the StartDate , you will get back -// the inventory for all archives created before the EndDate Limiting -// Inventory Items per Retrieval You can limit the number of inventory -// items returned by setting the Limit parameter in the InitiateJob -// request. The inventory job output will contain inventory items up to the -// specified Limit . If there are more inventory items available, the -// result is paginated. After a job is complete you can use the DescribeJob -// operation to get a marker that you use in a subsequent InitiateJob -// request. The marker will indicate the starting point to retrieve the -// next set of inventory items. You can page through your entire inventory -// by repeatedly making InitiateJob requests with the marker from the -// previous DescribeJob output, until you get a marker from DescribeJob -// that returns null, indicating that there are no more inventory items -// available. You can use the Limit parameter together with the date range -// parameters. About Ranged Archive Retrieval You can initiate an archive -// retrieval for the whole archive or a range of the archive. In the case -// of ranged archive retrieval, you specify a byte range to return or the -// whole archive. The range specified must be megabyte aligned, that is the -// range start value must be divisible by 1 MB and range end value plus 1 -// must be divisible by 1 MB or equal the end of the archive. If the ranged -// archive retrieval is not megabyte aligned, this operation returns a 400 -// response. Furthermore, to ensure you get checksum values for data you -// download using Get Job Output the range must be tree hash aligned. An -// AWS account has full permission to perform all operations (actions). -// However, AWS Identity and Access Management users don't have any -// permissions by default. You must grant them explicit permission to -// perform specific actions. For more information, see Access Control Using -// AWS Identity and Access Management For conceptual information and the -// underlying go to Initiate a Job and Downloading a Vault Inventory -func (c *Glacier) InitiateJob(req *InitiateJobInput) (resp *InitiateJobOutput, err error) { - resp = &InitiateJobOutput{} - - var body io.Reader - var contentType string - - contentType = "application/json" - b, err := json.Marshal(req.JobParameters) - if err != nil { - return - } - body = bytes.NewReader(b) - - uri := c.client.Endpoint + "/{accountId}/vaults/{vaultName}/jobs" - - if req.AccountID != nil { - uri = strings.Replace(uri, "{"+"accountId"+"}", aws.EscapePath(*req.AccountID), -1) - uri = strings.Replace(uri, "{"+"accountId+"+"}", aws.EscapePath(*req.AccountID), -1) - } - - if req.VaultName != nil { - uri = strings.Replace(uri, "{"+"vaultName"+"}", aws.EscapePath(*req.VaultName), -1) - uri = strings.Replace(uri, "{"+"vaultName+"+"}", aws.EscapePath(*req.VaultName), -1) - } - - q := url.Values{} - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("POST", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - - if e := json.NewDecoder(httpResp.Body).Decode(resp); e != nil && e != io.EOF { - err = e - return - } - - if s := httpResp.Header.Get("x-amz-job-id"); s != "" { - - resp.JobID = &s - - } - - if s := httpResp.Header.Get("Location"); s != "" { - - resp.Location = &s - - } - - return -} - -// InitiateMultipartUpload this operation initiates a multipart upload. -// Amazon Glacier creates a multipart upload resource and returns its ID in -// the response. The multipart upload ID is used in subsequent requests to -// upload parts of an archive (see UploadMultipartPart When you initiate a -// multipart upload, you specify the part size in number of bytes. The part -// size must be a megabyte (1024 KB) multiplied by a power of 2-for -// example, 1048576 (1 2097152 (2 4194304 (4 8388608 (8 and so on. The -// minimum allowable part size is 1 MB, and the maximum is 4 Every part you -// upload to this resource (see UploadMultipartPart ), except the last one, -// must have the same size. The last one can be the same size or smaller. -// For example, suppose you want to upload a 16.2 MB file. If you initiate -// the multipart upload with a part size of 4 MB, you will upload four -// parts of 4 MB each and one part of 0.2 MB. You don't need to know the -// size of the archive when you start a multipart upload because Amazon -// Glacier does not require you to specify the overall archive size. After -// you complete the multipart upload, Amazon Glacier removes the multipart -// upload resource referenced by the ID. Amazon Glacier also removes the -// multipart upload resource if you cancel the multipart upload or it may -// be removed if there is no activity for a period of 24 hours. An AWS -// account has full permission to perform all operations (actions). -// However, AWS Identity and Access Management users don't have any -// permissions by default. You must grant them explicit permission to -// perform specific actions. For more information, see Access Control Using -// AWS Identity and Access Management For conceptual information and -// underlying go to Uploading Large Archives in Parts (Multipart Upload) -// and Initiate Multipart Upload in the Amazon Glacier Developer Guide -func (c *Glacier) InitiateMultipartUpload(req *InitiateMultipartUploadInput) (resp *InitiateMultipartUploadOutput, err error) { - resp = &InitiateMultipartUploadOutput{} - - var body io.Reader - var contentType string - - uri := c.client.Endpoint + "/{accountId}/vaults/{vaultName}/multipart-uploads" - - if req.AccountID != nil { - uri = strings.Replace(uri, "{"+"accountId"+"}", aws.EscapePath(*req.AccountID), -1) - uri = strings.Replace(uri, "{"+"accountId+"+"}", aws.EscapePath(*req.AccountID), -1) - } - - if req.VaultName != nil { - uri = strings.Replace(uri, "{"+"vaultName"+"}", aws.EscapePath(*req.VaultName), -1) - uri = strings.Replace(uri, "{"+"vaultName+"+"}", aws.EscapePath(*req.VaultName), -1) - } - - q := url.Values{} - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("POST", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - if req.ArchiveDescription != nil { - httpReq.Header.Set("x-amz-archive-description", *req.ArchiveDescription) - } - - if req.PartSize != nil { - httpReq.Header.Set("x-amz-part-size", *req.PartSize) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - - if e := json.NewDecoder(httpResp.Body).Decode(resp); e != nil && e != io.EOF { - err = e - return - } - - if s := httpResp.Header.Get("Location"); s != "" { - - resp.Location = &s - - } - - if s := httpResp.Header.Get("x-amz-multipart-upload-id"); s != "" { - - resp.UploadID = &s - - } - - return -} - -// ListJobs this operation lists jobs for a vault, including jobs that are -// in-progress and jobs that have recently finished. Amazon Glacier retains -// recently completed jobs for a period before deleting them; however, it -// eventually removes completed jobs. The output of completed jobs can be -// retrieved. Retaining completed jobs for a period of time after they have -// completed enables you to get a job output in the event you miss the job -// completion notification or your first attempt to download it fails. For -// example, suppose you start an archive retrieval job to download an -// archive. After the job completes, you start to download the archive but -// encounter a network error. In this scenario, you can retry and download -// the archive while the job exists. To retrieve an archive or retrieve a -// vault inventory from Amazon Glacier, you first initiate a job, and after -// the job completes, you download the data. For an archive retrieval, the -// output is the archive data, and for an inventory retrieval, it is the -// inventory list. The List Job operation returns a list of these jobs -// sorted by job initiation time. This List Jobs operation supports -// pagination. By default, this operation returns up to 1,000 jobs in the -// response. You should always check the response for a marker at which to -// continue the list; if there are no more items the marker is null . To -// return a list of jobs that begins at a specific job, set the marker -// request parameter to the value you obtained from a previous List Jobs -// request. You can also limit the number of jobs returned in the response -// by specifying the limit parameter in the request. Additionally, you can -// filter the jobs list returned by specifying an optional statuscode -// (InProgress, Succeeded, or Failed) and completed (true, false) -// parameter. The statuscode allows you to specify that only jobs that -// match a specified status are returned. The completed parameter allows -// you to specify that only jobs in a specific completion state are -// returned. An AWS account has full permission to perform all operations -// (actions). However, AWS Identity and Access Management users don't have -// any permissions by default. You must grant them explicit permission to -// perform specific actions. For more information, see Access Control Using -// AWS Identity and Access Management For the underlying go to List Jobs -func (c *Glacier) ListJobs(req *ListJobsInput) (resp *ListJobsOutput, err error) { - resp = &ListJobsOutput{} - - var body io.Reader - var contentType string - - uri := c.client.Endpoint + "/{accountId}/vaults/{vaultName}/jobs" - - if req.AccountID != nil { - uri = strings.Replace(uri, "{"+"accountId"+"}", aws.EscapePath(*req.AccountID), -1) - uri = strings.Replace(uri, "{"+"accountId+"+"}", aws.EscapePath(*req.AccountID), -1) - } - - if req.VaultName != nil { - uri = strings.Replace(uri, "{"+"vaultName"+"}", aws.EscapePath(*req.VaultName), -1) - uri = strings.Replace(uri, "{"+"vaultName+"+"}", aws.EscapePath(*req.VaultName), -1) - } - - q := url.Values{} - - if req.Completed != nil { - q.Set("completed", *req.Completed) - } - - if req.Limit != nil { - q.Set("limit", *req.Limit) - } - - if req.Marker != nil { - q.Set("marker", *req.Marker) - } - - if req.Statuscode != nil { - q.Set("statuscode", *req.Statuscode) - } - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("GET", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - - if e := json.NewDecoder(httpResp.Body).Decode(resp); e != nil && e != io.EOF { - err = e - return - } - - return -} - -// ListMultipartUploads this operation lists in-progress multipart uploads -// for the specified vault. An in-progress multipart upload is a multipart -// upload that has been initiated by an InitiateMultipartUpload request, -// but has not yet been completed or aborted. The list returned in the List -// Multipart Upload response has no guaranteed order. The List Multipart -// Uploads operation supports pagination. By default, this operation -// returns up to 1,000 multipart uploads in the response. You should always -// check the response for a marker at which to continue the list; if there -// are no more items the marker is null . To return a list of multipart -// uploads that begins at a specific upload, set the marker request -// parameter to the value you obtained from a previous List Multipart -// Upload request. You can also limit the number of uploads returned in the -// response by specifying the limit parameter in the request. Note the -// difference between this operation and listing parts ListParts ). The -// List Multipart Uploads operation lists all multipart uploads for a vault -// and does not require a multipart upload ID. The List Parts operation -// requires a multipart upload ID since parts are associated with a single -// upload. An AWS account has full permission to perform all operations -// (actions). However, AWS Identity and Access Management users don't have -// any permissions by default. You must grant them explicit permission to -// perform specific actions. For more information, see Access Control Using -// AWS Identity and Access Management For conceptual information and the -// underlying go to Working with Archives in Amazon Glacier and List -// Multipart Uploads in the Amazon Glacier Developer Guide -func (c *Glacier) ListMultipartUploads(req *ListMultipartUploadsInput) (resp *ListMultipartUploadsOutput, err error) { - resp = &ListMultipartUploadsOutput{} - - var body io.Reader - var contentType string - - uri := c.client.Endpoint + "/{accountId}/vaults/{vaultName}/multipart-uploads" - - if req.AccountID != nil { - uri = strings.Replace(uri, "{"+"accountId"+"}", aws.EscapePath(*req.AccountID), -1) - uri = strings.Replace(uri, "{"+"accountId+"+"}", aws.EscapePath(*req.AccountID), -1) - } - - if req.VaultName != nil { - uri = strings.Replace(uri, "{"+"vaultName"+"}", aws.EscapePath(*req.VaultName), -1) - uri = strings.Replace(uri, "{"+"vaultName+"+"}", aws.EscapePath(*req.VaultName), -1) - } - - q := url.Values{} - - if req.Limit != nil { - q.Set("limit", *req.Limit) - } - - if req.Marker != nil { - q.Set("marker", *req.Marker) - } - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("GET", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - - if e := json.NewDecoder(httpResp.Body).Decode(resp); e != nil && e != io.EOF { - err = e - return - } - - return -} - -// ListParts this operation lists the parts of an archive that have been -// uploaded in a specific multipart upload. You can make this request at -// any time during an in-progress multipart upload before you complete the -// upload (see CompleteMultipartUpload . List Parts returns an error for -// completed uploads. The list returned in the List Parts response is -// sorted by part range. The List Parts operation supports pagination. By -// default, this operation returns up to 1,000 uploaded parts in the -// response. You should always check the response for a marker at which to -// continue the list; if there are no more items the marker is null . To -// return a list of parts that begins at a specific part, set the marker -// request parameter to the value you obtained from a previous List Parts -// request. You can also limit the number of parts returned in the response -// by specifying the limit parameter in the request. An AWS account has -// full permission to perform all operations (actions). However, AWS -// Identity and Access Management users don't have any permissions by -// default. You must grant them explicit permission to perform specific -// actions. For more information, see Access Control Using AWS Identity and -// Access Management For conceptual information and the underlying go to -// Working with Archives in Amazon Glacier and List Parts in the Amazon -// Glacier Developer Guide -func (c *Glacier) ListParts(req *ListPartsInput) (resp *ListPartsOutput, err error) { - resp = &ListPartsOutput{} - - var body io.Reader - var contentType string - - uri := c.client.Endpoint + "/{accountId}/vaults/{vaultName}/multipart-uploads/{uploadId}" - - if req.AccountID != nil { - uri = strings.Replace(uri, "{"+"accountId"+"}", aws.EscapePath(*req.AccountID), -1) - uri = strings.Replace(uri, "{"+"accountId+"+"}", aws.EscapePath(*req.AccountID), -1) - } - - if req.UploadID != nil { - uri = strings.Replace(uri, "{"+"uploadId"+"}", aws.EscapePath(*req.UploadID), -1) - uri = strings.Replace(uri, "{"+"uploadId+"+"}", aws.EscapePath(*req.UploadID), -1) - } - - if req.VaultName != nil { - uri = strings.Replace(uri, "{"+"vaultName"+"}", aws.EscapePath(*req.VaultName), -1) - uri = strings.Replace(uri, "{"+"vaultName+"+"}", aws.EscapePath(*req.VaultName), -1) - } - - q := url.Values{} - - if req.Limit != nil { - q.Set("limit", *req.Limit) - } - - if req.Marker != nil { - q.Set("marker", *req.Marker) - } - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("GET", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - - if e := json.NewDecoder(httpResp.Body).Decode(resp); e != nil && e != io.EOF { - err = e - return - } - - return -} - -// ListVaults this operation lists all vaults owned by the calling user's -// account. The list returned in the response is ASCII-sorted by vault -// name. By default, this operation returns up to 1,000 items. If there are -// more vaults to list, the response marker field contains the vault Amazon -// Resource Name at which to continue the list with a new List Vaults -// request; otherwise, the marker field is null . To return a list of -// vaults that begins at a specific vault, set the marker request parameter -// to the vault ARN you obtained from a previous List Vaults request. You -// can also limit the number of vaults returned in the response by -// specifying the limit parameter in the request. An AWS account has full -// permission to perform all operations (actions). However, AWS Identity -// and Access Management users don't have any permissions by default. You -// must grant them explicit permission to perform specific actions. For -// more information, see Access Control Using AWS Identity and Access -// Management For conceptual information and underlying go to Retrieving -// Vault Metadata in Amazon Glacier and List Vaults in the Amazon Glacier -// Developer Guide . -func (c *Glacier) ListVaults(req *ListVaultsInput) (resp *ListVaultsOutput, err error) { - resp = &ListVaultsOutput{} - - var body io.Reader - var contentType string - - uri := c.client.Endpoint + "/{accountId}/vaults" - - if req.AccountID != nil { - uri = strings.Replace(uri, "{"+"accountId"+"}", aws.EscapePath(*req.AccountID), -1) - uri = strings.Replace(uri, "{"+"accountId+"+"}", aws.EscapePath(*req.AccountID), -1) - } - - q := url.Values{} - - if req.Limit != nil { - q.Set("limit", *req.Limit) - } - - if req.Marker != nil { - q.Set("marker", *req.Marker) - } - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("GET", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - - if e := json.NewDecoder(httpResp.Body).Decode(resp); e != nil && e != io.EOF { - err = e - return - } - - return -} - -// SetDataRetrievalPolicy -func (c *Glacier) SetDataRetrievalPolicy(req *SetDataRetrievalPolicyInput) (err error) { - // NRE - - var body io.Reader - var contentType string - - uri := c.client.Endpoint + "/{accountId}/policies/data-retrieval" - - if req.AccountID != nil { - uri = strings.Replace(uri, "{"+"accountId"+"}", aws.EscapePath(*req.AccountID), -1) - uri = strings.Replace(uri, "{"+"accountId+"+"}", aws.EscapePath(*req.AccountID), -1) - } - - q := url.Values{} - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("PUT", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - - return -} - -// SetVaultNotifications this operation configures notifications that will -// be sent when specific events happen to a vault. By default, you don't -// get any notifications. To configure vault notifications, send a PUT -// request to the notification-configuration subresource of the vault. The -// request should include a document that provides an Amazon SNS topic and -// specific events for which you want Amazon Glacier to send notifications -// to the topic. Amazon SNS topics must grant permission to the vault to be -// allowed to publish notifications to the topic. You can configure a vault -// to publish a notification for the following vault events: -// ArchiveRetrievalCompleted This event occurs when a job that was -// initiated for an archive retrieval is completed InitiateJob ). The -// status of the completed job can be "Succeeded" or "Failed". The -// notification sent to the SNS topic is the same output as returned from -// DescribeJob . InventoryRetrievalCompleted This event occurs when a job -// that was initiated for an inventory retrieval is completed InitiateJob -// ). The status of the completed job can be "Succeeded" or "Failed". The -// notification sent to the SNS topic is the same output as returned from -// DescribeJob . An AWS account has full permission to perform all -// operations (actions). However, AWS Identity and Access Management users -// don't have any permissions by default. You must grant them explicit -// permission to perform specific actions. For more information, see Access -// Control Using AWS Identity and Access Management For conceptual -// information and underlying go to Configuring Vault Notifications in -// Amazon Glacier and Set Vault Notification Configuration in the Amazon -// Glacier Developer Guide . -func (c *Glacier) SetVaultNotifications(req *SetVaultNotificationsInput) (err error) { - // NRE - - var body io.Reader - var contentType string - - contentType = "application/json" - b, err := json.Marshal(req.VaultNotificationConfig) - if err != nil { - return - } - body = bytes.NewReader(b) - - uri := c.client.Endpoint + "/{accountId}/vaults/{vaultName}/notification-configuration" - - if req.AccountID != nil { - uri = strings.Replace(uri, "{"+"accountId"+"}", aws.EscapePath(*req.AccountID), -1) - uri = strings.Replace(uri, "{"+"accountId+"+"}", aws.EscapePath(*req.AccountID), -1) - } - - if req.VaultName != nil { - uri = strings.Replace(uri, "{"+"vaultName"+"}", aws.EscapePath(*req.VaultName), -1) - uri = strings.Replace(uri, "{"+"vaultName+"+"}", aws.EscapePath(*req.VaultName), -1) - } - - q := url.Values{} - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("PUT", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - - return -} - -// UploadArchive this operation adds an archive to a vault. This is a -// synchronous operation, and for a successful upload, your data is durably -// persisted. Amazon Glacier returns the archive ID in the x-amz-archive-id -// header of the response. You must use the archive ID to access your data -// in Amazon Glacier. After you upload an archive, you should save the -// archive ID returned so that you can retrieve or delete the archive -// later. Besides saving the archive ID, you can also index it and give it -// a friendly name to allow for better searching. You can also use the -// optional archive description field to specify how the archive is -// referred to in an external index of archives, such as you might create -// in Amazon DynamoDB. You can also get the vault inventory to obtain a -// list of archive IDs in a vault. For more information, see InitiateJob . -// You must provide a SHA256 tree hash of the data you are uploading. For -// information about computing a SHA256 tree hash, see Computing Checksums -// . You can optionally specify an archive description of up to 1,024 -// printable characters. You can get the archive description when you -// either retrieve the archive or get the vault inventory. For more -// information, see InitiateJob . Amazon Glacier does not interpret the -// description in any way. An archive description does not need to be -// unique. You cannot use the description to retrieve or sort the archive -// list. Archives are immutable. After you upload an archive, you cannot -// edit the archive or its description. An AWS account has full permission -// to perform all operations (actions). However, AWS Identity and Access -// Management users don't have any permissions by default. You must grant -// them explicit permission to perform specific actions. For more -// information, see Access Control Using AWS Identity and Access Management -// For conceptual information and underlying go to Uploading an Archive in -// Amazon Glacier and Upload Archive in the Amazon Glacier Developer Guide -// . -func (c *Glacier) UploadArchive(req *UploadArchiveInput) (resp *ArchiveCreationOutput, err error) { - resp = &ArchiveCreationOutput{} - - var body io.Reader - var contentType string - - contentType = "application/json" - b, err := json.Marshal(req.Body) - if err != nil { - return - } - body = bytes.NewReader(b) - - uri := c.client.Endpoint + "/{accountId}/vaults/{vaultName}/archives" - - if req.AccountID != nil { - uri = strings.Replace(uri, "{"+"accountId"+"}", aws.EscapePath(*req.AccountID), -1) - uri = strings.Replace(uri, "{"+"accountId+"+"}", aws.EscapePath(*req.AccountID), -1) - } - - if req.VaultName != nil { - uri = strings.Replace(uri, "{"+"vaultName"+"}", aws.EscapePath(*req.VaultName), -1) - uri = strings.Replace(uri, "{"+"vaultName+"+"}", aws.EscapePath(*req.VaultName), -1) - } - - q := url.Values{} - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("POST", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - if req.ArchiveDescription != nil { - httpReq.Header.Set("x-amz-archive-description", *req.ArchiveDescription) - } - - if req.Checksum != nil { - httpReq.Header.Set("x-amz-sha256-tree-hash", *req.Checksum) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - - if e := json.NewDecoder(httpResp.Body).Decode(resp); e != nil && e != io.EOF { - err = e - return - } - - if s := httpResp.Header.Get("x-amz-archive-id"); s != "" { - - resp.ArchiveID = &s - - } - - if s := httpResp.Header.Get("x-amz-sha256-tree-hash"); s != "" { - - resp.Checksum = &s - - } - - if s := httpResp.Header.Get("Location"); s != "" { - - resp.Location = &s - - } - - return -} - -// UploadMultipartPart this operation uploads a part of an archive. You can -// upload archive parts in any order. You can also upload them in parallel. -// You can upload up to 10,000 parts for a multipart upload. Amazon Glacier -// rejects your upload part request if any of the following conditions is -// true: SHA256 tree hash does not match To ensure that part data is not -// corrupted in transmission, you compute a SHA256 tree hash of the part -// and include it in your request. Upon receiving the part data, Amazon -// Glacier also computes a SHA256 tree hash. If these hash values don't -// match, the operation fails. For information about computing a SHA256 -// tree hash, see Computing Checksums Part size does not match The size of -// each part except the last must match the size specified in the -// corresponding InitiateMultipartUpload request. The size of the last part -// must be the same size as, or smaller than, the specified size. If you -// upload a part whose size is smaller than the part size you specified in -// your initiate multipart upload request and that part is not the last -// part, then the upload part request will succeed. However, the subsequent -// Complete Multipart Upload request will fail. Range does not align The -// byte range value in the request does not align with the part size -// specified in the corresponding initiate request. For example, if you -// specify a part size of 4194304 bytes (4 then 0 to 4194303 bytes (4 MB - -// 1) and 4194304 (4 MB) to 8388607 (8 MB - 1) are valid part ranges. -// However, if you set a range value of 2 MB to 6 MB, the range does not -// align with the part size and the upload will fail. This operation is -// idempotent. If you upload the same part multiple times, the data -// included in the most recent request overwrites the previously uploaded -// data. An AWS account has full permission to perform all operations -// (actions). However, AWS Identity and Access Management users don't have -// any permissions by default. You must grant them explicit permission to -// perform specific actions. For more information, see Access Control Using -// AWS Identity and Access Management For conceptual information and -// underlying go to Uploading Large Archives in Parts (Multipart Upload) -// and Upload Part in the Amazon Glacier Developer Guide -func (c *Glacier) UploadMultipartPart(req *UploadMultipartPartInput) (resp *UploadMultipartPartOutput, err error) { - resp = &UploadMultipartPartOutput{} - - var body io.Reader - var contentType string - - contentType = "application/json" - b, err := json.Marshal(req.Body) - if err != nil { - return - } - body = bytes.NewReader(b) - - uri := c.client.Endpoint + "/{accountId}/vaults/{vaultName}/multipart-uploads/{uploadId}" - - if req.AccountID != nil { - uri = strings.Replace(uri, "{"+"accountId"+"}", aws.EscapePath(*req.AccountID), -1) - uri = strings.Replace(uri, "{"+"accountId+"+"}", aws.EscapePath(*req.AccountID), -1) - } - - if req.UploadID != nil { - uri = strings.Replace(uri, "{"+"uploadId"+"}", aws.EscapePath(*req.UploadID), -1) - uri = strings.Replace(uri, "{"+"uploadId+"+"}", aws.EscapePath(*req.UploadID), -1) - } - - if req.VaultName != nil { - uri = strings.Replace(uri, "{"+"vaultName"+"}", aws.EscapePath(*req.VaultName), -1) - uri = strings.Replace(uri, "{"+"vaultName+"+"}", aws.EscapePath(*req.VaultName), -1) - } - - q := url.Values{} - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("PUT", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - if req.Checksum != nil { - httpReq.Header.Set("x-amz-sha256-tree-hash", *req.Checksum) - } - - if req.Range != nil { - httpReq.Header.Set("Content-Range", *req.Range) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - - if e := json.NewDecoder(httpResp.Body).Decode(resp); e != nil && e != io.EOF { - err = e - return - } - - if s := httpResp.Header.Get("x-amz-sha256-tree-hash"); s != "" { - - resp.Checksum = &s - - } - - return -} - -// AbortMultipartUploadInput is undocumented. -type AbortMultipartUploadInput struct { - AccountID aws.StringValue `json:"-"` - UploadID aws.StringValue `json:"-"` - VaultName aws.StringValue `json:"-"` -} - -// Possible values for Glacier. -const ( - ActionCodeArchiveRetrieval = "ArchiveRetrieval" - ActionCodeInventoryRetrieval = "InventoryRetrieval" -) - -// ArchiveCreationOutput is undocumented. -type ArchiveCreationOutput struct { - ArchiveID aws.StringValue `json:"-"` - Checksum aws.StringValue `json:"-"` - Location aws.StringValue `json:"-"` -} - -// CompleteMultipartUploadInput is undocumented. -type CompleteMultipartUploadInput struct { - AccountID aws.StringValue `json:"-"` - ArchiveSize aws.StringValue `json:"-"` - Checksum aws.StringValue `json:"-"` - UploadID aws.StringValue `json:"-"` - VaultName aws.StringValue `json:"-"` -} - -// CreateVaultInput is undocumented. -type CreateVaultInput struct { - AccountID aws.StringValue `json:"-"` - VaultName aws.StringValue `json:"-"` -} - -// CreateVaultOutput is undocumented. -type CreateVaultOutput struct { - Location aws.StringValue `json:"-"` -} - -// DataRetrievalPolicy is undocumented. -type DataRetrievalPolicy struct { - Rules []DataRetrievalRule `json:"Rules,omitempty"` -} - -// DataRetrievalRule is undocumented. -type DataRetrievalRule struct { - BytesPerHour aws.LongValue `json:"BytesPerHour,omitempty"` - Strategy aws.StringValue `json:"Strategy,omitempty"` -} - -// DeleteArchiveInput is undocumented. -type DeleteArchiveInput struct { - AccountID aws.StringValue `json:"-"` - ArchiveID aws.StringValue `json:"-"` - VaultName aws.StringValue `json:"-"` -} - -// DeleteVaultInput is undocumented. -type DeleteVaultInput struct { - AccountID aws.StringValue `json:"-"` - VaultName aws.StringValue `json:"-"` -} - -// DeleteVaultNotificationsInput is undocumented. -type DeleteVaultNotificationsInput struct { - AccountID aws.StringValue `json:"-"` - VaultName aws.StringValue `json:"-"` -} - -// DescribeJobInput is undocumented. -type DescribeJobInput struct { - AccountID aws.StringValue `json:"-"` - JobID aws.StringValue `json:"-"` - VaultName aws.StringValue `json:"-"` -} - -// DescribeVaultInput is undocumented. -type DescribeVaultInput struct { - AccountID aws.StringValue `json:"-"` - VaultName aws.StringValue `json:"-"` -} - -// DescribeVaultOutput is undocumented. -type DescribeVaultOutput struct { - CreationDate aws.StringValue `json:"CreationDate,omitempty"` - LastInventoryDate aws.StringValue `json:"LastInventoryDate,omitempty"` - NumberOfArchives aws.LongValue `json:"NumberOfArchives,omitempty"` - SizeInBytes aws.LongValue `json:"SizeInBytes,omitempty"` - VaultARN aws.StringValue `json:"VaultARN,omitempty"` - VaultName aws.StringValue `json:"VaultName,omitempty"` -} - -// GetDataRetrievalPolicyInput is undocumented. -type GetDataRetrievalPolicyInput struct { - AccountID aws.StringValue `json:"-"` -} - -// GetDataRetrievalPolicyOutput is undocumented. -type GetDataRetrievalPolicyOutput struct { - Policy *DataRetrievalPolicy `json:"Policy,omitempty"` -} - -// GetJobOutputInput is undocumented. -type GetJobOutputInput struct { - AccountID aws.StringValue `json:"-"` - JobID aws.StringValue `json:"-"` - Range aws.StringValue `json:"-"` - VaultName aws.StringValue `json:"-"` -} - -// GetJobOutputOutput is undocumented. -type GetJobOutputOutput struct { - AcceptRanges aws.StringValue `json:"-"` - ArchiveDescription aws.StringValue `json:"-"` - Body []byte `json:"body,omitempty"` - Checksum aws.StringValue `json:"-"` - ContentRange aws.StringValue `json:"-"` - ContentType aws.StringValue `json:"-"` - Status aws.IntegerValue `json:"-"` -} - -// GetVaultNotificationsInput is undocumented. -type GetVaultNotificationsInput struct { - AccountID aws.StringValue `json:"-"` - VaultName aws.StringValue `json:"-"` -} - -// GetVaultNotificationsOutput is undocumented. -type GetVaultNotificationsOutput struct { - VaultNotificationConfig *VaultNotificationConfig `json:"vaultNotificationConfig,omitempty"` -} - -// GlacierJobDescription is undocumented. -type GlacierJobDescription struct { - Action aws.StringValue `json:"Action,omitempty"` - ArchiveID aws.StringValue `json:"ArchiveId,omitempty"` - ArchiveSHA256TreeHash aws.StringValue `json:"ArchiveSHA256TreeHash,omitempty"` - ArchiveSizeInBytes aws.LongValue `json:"ArchiveSizeInBytes,omitempty"` - Completed aws.BooleanValue `json:"Completed,omitempty"` - CompletionDate aws.StringValue `json:"CompletionDate,omitempty"` - CreationDate aws.StringValue `json:"CreationDate,omitempty"` - InventoryRetrievalParameters *InventoryRetrievalJobDescription `json:"InventoryRetrievalParameters,omitempty"` - InventorySizeInBytes aws.LongValue `json:"InventorySizeInBytes,omitempty"` - JobDescription aws.StringValue `json:"JobDescription,omitempty"` - JobID aws.StringValue `json:"JobId,omitempty"` - RetrievalByteRange aws.StringValue `json:"RetrievalByteRange,omitempty"` - SHA256TreeHash aws.StringValue `json:"SHA256TreeHash,omitempty"` - SNSTopic aws.StringValue `json:"SNSTopic,omitempty"` - StatusCode aws.StringValue `json:"StatusCode,omitempty"` - StatusMessage aws.StringValue `json:"StatusMessage,omitempty"` - VaultARN aws.StringValue `json:"VaultARN,omitempty"` -} - -// InitiateJobInput is undocumented. -type InitiateJobInput struct { - AccountID aws.StringValue `json:"-"` - JobParameters *JobParameters `json:"jobParameters,omitempty"` - VaultName aws.StringValue `json:"-"` -} - -// InitiateJobOutput is undocumented. -type InitiateJobOutput struct { - JobID aws.StringValue `json:"-"` - Location aws.StringValue `json:"-"` -} - -// InitiateMultipartUploadInput is undocumented. -type InitiateMultipartUploadInput struct { - AccountID aws.StringValue `json:"-"` - ArchiveDescription aws.StringValue `json:"-"` - PartSize aws.StringValue `json:"-"` - VaultName aws.StringValue `json:"-"` -} - -// InitiateMultipartUploadOutput is undocumented. -type InitiateMultipartUploadOutput struct { - Location aws.StringValue `json:"-"` - UploadID aws.StringValue `json:"-"` -} - -// InventoryRetrievalJobDescription is undocumented. -type InventoryRetrievalJobDescription struct { - EndDate aws.StringValue `json:"EndDate,omitempty"` - Format aws.StringValue `json:"Format,omitempty"` - Limit aws.StringValue `json:"Limit,omitempty"` - Marker aws.StringValue `json:"Marker,omitempty"` - StartDate aws.StringValue `json:"StartDate,omitempty"` -} - -// InventoryRetrievalJobInput is undocumented. -type InventoryRetrievalJobInput struct { - EndDate aws.StringValue `json:"EndDate,omitempty"` - Limit aws.StringValue `json:"Limit,omitempty"` - Marker aws.StringValue `json:"Marker,omitempty"` - StartDate aws.StringValue `json:"StartDate,omitempty"` -} - -// JobParameters is undocumented. -type JobParameters struct { - ArchiveID aws.StringValue `json:"ArchiveId,omitempty"` - Description aws.StringValue `json:"Description,omitempty"` - Format aws.StringValue `json:"Format,omitempty"` - InventoryRetrievalParameters *InventoryRetrievalJobInput `json:"InventoryRetrievalParameters,omitempty"` - RetrievalByteRange aws.StringValue `json:"RetrievalByteRange,omitempty"` - SNSTopic aws.StringValue `json:"SNSTopic,omitempty"` - Type aws.StringValue `json:"Type,omitempty"` -} - -// ListJobsInput is undocumented. -type ListJobsInput struct { - AccountID aws.StringValue `json:"-"` - Completed aws.StringValue `json:"-"` - Limit aws.StringValue `json:"-"` - Marker aws.StringValue `json:"-"` - Statuscode aws.StringValue `json:"-"` - VaultName aws.StringValue `json:"-"` -} - -// ListJobsOutput is undocumented. -type ListJobsOutput struct { - JobList []GlacierJobDescription `json:"JobList,omitempty"` - Marker aws.StringValue `json:"Marker,omitempty"` -} - -// ListMultipartUploadsInput is undocumented. -type ListMultipartUploadsInput struct { - AccountID aws.StringValue `json:"-"` - Limit aws.StringValue `json:"-"` - Marker aws.StringValue `json:"-"` - VaultName aws.StringValue `json:"-"` -} - -// ListMultipartUploadsOutput is undocumented. -type ListMultipartUploadsOutput struct { - Marker aws.StringValue `json:"Marker,omitempty"` - UploadsList []UploadListElement `json:"UploadsList,omitempty"` -} - -// ListPartsInput is undocumented. -type ListPartsInput struct { - AccountID aws.StringValue `json:"-"` - Limit aws.StringValue `json:"-"` - Marker aws.StringValue `json:"-"` - UploadID aws.StringValue `json:"-"` - VaultName aws.StringValue `json:"-"` -} - -// ListPartsOutput is undocumented. -type ListPartsOutput struct { - ArchiveDescription aws.StringValue `json:"ArchiveDescription,omitempty"` - CreationDate aws.StringValue `json:"CreationDate,omitempty"` - Marker aws.StringValue `json:"Marker,omitempty"` - MultipartUploadID aws.StringValue `json:"MultipartUploadId,omitempty"` - PartSizeInBytes aws.LongValue `json:"PartSizeInBytes,omitempty"` - Parts []PartListElement `json:"Parts,omitempty"` - VaultARN aws.StringValue `json:"VaultARN,omitempty"` -} - -// ListVaultsInput is undocumented. -type ListVaultsInput struct { - AccountID aws.StringValue `json:"-"` - Limit aws.StringValue `json:"-"` - Marker aws.StringValue `json:"-"` -} - -// ListVaultsOutput is undocumented. -type ListVaultsOutput struct { - Marker aws.StringValue `json:"Marker,omitempty"` - VaultList []DescribeVaultOutput `json:"VaultList,omitempty"` -} - -// PartListElement is undocumented. -type PartListElement struct { - RangeInBytes aws.StringValue `json:"RangeInBytes,omitempty"` - SHA256TreeHash aws.StringValue `json:"SHA256TreeHash,omitempty"` -} - -// SetDataRetrievalPolicyInput is undocumented. -type SetDataRetrievalPolicyInput struct { - Policy *DataRetrievalPolicy `json:"Policy,omitempty"` - AccountID aws.StringValue `json:"-"` -} - -// SetVaultNotificationsInput is undocumented. -type SetVaultNotificationsInput struct { - AccountID aws.StringValue `json:"-"` - VaultName aws.StringValue `json:"-"` - VaultNotificationConfig *VaultNotificationConfig `json:"vaultNotificationConfig,omitempty"` -} - -// Possible values for Glacier. -const ( - StatusCodeFailed = "Failed" - StatusCodeInProgress = "InProgress" - StatusCodeSucceeded = "Succeeded" -) - -// UploadArchiveInput is undocumented. -type UploadArchiveInput struct { - AccountID aws.StringValue `json:"-"` - ArchiveDescription aws.StringValue `json:"-"` - Body []byte `json:"body,omitempty"` - Checksum aws.StringValue `json:"-"` - VaultName aws.StringValue `json:"-"` -} - -// UploadListElement is undocumented. -type UploadListElement struct { - ArchiveDescription aws.StringValue `json:"ArchiveDescription,omitempty"` - CreationDate aws.StringValue `json:"CreationDate,omitempty"` - MultipartUploadID aws.StringValue `json:"MultipartUploadId,omitempty"` - PartSizeInBytes aws.LongValue `json:"PartSizeInBytes,omitempty"` - VaultARN aws.StringValue `json:"VaultARN,omitempty"` -} - -// UploadMultipartPartInput is undocumented. -type UploadMultipartPartInput struct { - AccountID aws.StringValue `json:"-"` - Body []byte `json:"body,omitempty"` - Checksum aws.StringValue `json:"-"` - Range aws.StringValue `json:"-"` - UploadID aws.StringValue `json:"-"` - VaultName aws.StringValue `json:"-"` -} - -// UploadMultipartPartOutput is undocumented. -type UploadMultipartPartOutput struct { - Checksum aws.StringValue `json:"-"` -} - -// VaultNotificationConfig is undocumented. -type VaultNotificationConfig struct { - Events []string `json:"Events,omitempty"` - SNSTopic aws.StringValue `json:"SNSTopic,omitempty"` -} - -// avoid errors if the packages aren't referenced -var _ time.Time - -var _ bytes.Reader -var _ url.URL -var _ fmt.Stringer -var _ strings.Reader -var _ strconv.NumError -var _ = ioutil.Discard -var _ json.RawMessage diff --git a/src/github.com/getlantern/aws-sdk-go/gen/iam/iam.go b/src/github.com/getlantern/aws-sdk-go/gen/iam/iam.go deleted file mode 100644 index f829abcd4b..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/gen/iam/iam.go +++ /dev/null @@ -1,2284 +0,0 @@ -// THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. - -// Package iam provides a client for AWS Identity and Access Management. -package iam - -import ( - "net/http" - "time" - - "github.com/awslabs/aws-sdk-go/aws" - "github.com/awslabs/aws-sdk-go/gen/endpoints" -) - -import ( - "encoding/xml" - "io" -) - -// IAM is a client for AWS Identity and Access Management. -type IAM struct { - client *aws.QueryClient -} - -// New returns a new IAM client. -func New(creds aws.CredentialsProvider, region string, client *http.Client) *IAM { - if client == nil { - client = http.DefaultClient - } - - endpoint, service, region := endpoints.Lookup("iam", region) - - return &IAM{ - client: &aws.QueryClient{ - Context: aws.Context{ - Credentials: creds, - Service: service, - Region: region, - }, - Client: client, - Endpoint: endpoint, - APIVersion: "2010-05-08", - }, - } -} - -// AddClientIDToOpenIDConnectProvider adds a new client ID (also known as -// audience) to the list of client IDs already registered for the specified -// IAM OpenID Connect provider. This action is idempotent; it does not fail -// or return an error if you add an existing client ID to the provider. -func (c *IAM) AddClientIDToOpenIDConnectProvider(req *AddClientIDToOpenIDConnectProviderRequest) (err error) { - // NRE - err = c.client.Do("AddClientIDToOpenIDConnectProvider", "POST", "/", req, nil) - return -} - -// AddRoleToInstanceProfile adds the specified role to the specified -// instance profile. For more information about roles, go to Working with -// Roles . For more information about instance profiles, go to About -// Instance Profiles . -func (c *IAM) AddRoleToInstanceProfile(req *AddRoleToInstanceProfileRequest) (err error) { - // NRE - err = c.client.Do("AddRoleToInstanceProfile", "POST", "/", req, nil) - return -} - -// AddUserToGroup is undocumented. -func (c *IAM) AddUserToGroup(req *AddUserToGroupRequest) (err error) { - // NRE - err = c.client.Do("AddUserToGroup", "POST", "/", req, nil) - return -} - -// ChangePassword changes the password of the IAM user who is calling this -// action. The root account password is not affected by this action. To -// change the password for a different user, see UpdateLoginProfile . For -// more information about modifying passwords, see Managing Passwords in -// the Using guide. -func (c *IAM) ChangePassword(req *ChangePasswordRequest) (err error) { - // NRE - err = c.client.Do("ChangePassword", "POST", "/", req, nil) - return -} - -// CreateAccessKey creates a new AWS secret access key and corresponding -// AWS access key ID for the specified user. The default status for new -// keys is Active . If you do not specify a user name, IAM determines the -// user name implicitly based on the AWS access key ID signing the request. -// Because this action works for access keys under the AWS account, you can -// use this action to manage root credentials even if the AWS account has -// no associated users. For information about limits on the number of keys -// you can create, see Limitations on IAM Entities in the Using guide. To -// ensure the security of your AWS account, the secret access key is -// accessible only during key and user creation. You must save the key (for -// example, in a text file) if you want to be able to access it again. If a -// secret key is lost, you can delete the access keys for the associated -// user and then create new keys. -func (c *IAM) CreateAccessKey(req *CreateAccessKeyRequest) (resp *CreateAccessKeyResult, err error) { - resp = &CreateAccessKeyResult{} - err = c.client.Do("CreateAccessKey", "POST", "/", req, resp) - return -} - -// CreateAccountAlias creates an alias for your AWS account. For -// information about using an AWS account alias, see Using an Alias for -// Your AWS Account in the Using guide. -func (c *IAM) CreateAccountAlias(req *CreateAccountAliasRequest) (err error) { - // NRE - err = c.client.Do("CreateAccountAlias", "POST", "/", req, nil) - return -} - -// CreateGroup creates a new group. For information about the number of -// groups you can create, see Limitations on IAM Entities in the Using -// guide. -func (c *IAM) CreateGroup(req *CreateGroupRequest) (resp *CreateGroupResult, err error) { - resp = &CreateGroupResult{} - err = c.client.Do("CreateGroup", "POST", "/", req, resp) - return -} - -// CreateInstanceProfile creates a new instance profile. For information -// about instance profiles, go to About Instance Profiles . For information -// about the number of instance profiles you can create, see Limitations on -// IAM Entities in the Using guide. -func (c *IAM) CreateInstanceProfile(req *CreateInstanceProfileRequest) (resp *CreateInstanceProfileResult, err error) { - resp = &CreateInstanceProfileResult{} - err = c.client.Do("CreateInstanceProfile", "POST", "/", req, resp) - return -} - -// CreateLoginProfile creates a password for the specified user, giving the -// user the ability to access AWS services through the AWS Management -// Console. For more information about managing passwords, see Managing -// Passwords in the Using guide. -func (c *IAM) CreateLoginProfile(req *CreateLoginProfileRequest) (resp *CreateLoginProfileResult, err error) { - resp = &CreateLoginProfileResult{} - err = c.client.Do("CreateLoginProfile", "POST", "/", req, resp) - return -} - -// CreateOpenIDConnectProvider creates an IAM entity to describe an -// identity provider (IdP) that supports OpenID Connect . The provider that -// you create with this operation can be used as a principal in a role's -// trust policy to establish a trust relationship between AWS and the -// provider. When you create the IAM provider, you specify the URL of the -// identity provider (IdP) to trust, a list of client IDs (also known as -// audiences) that identify the application or applications that are -// allowed to authenticate using the provider, and a list of thumbprints of -// the server certificate(s) that the IdP uses. You get all of this -// information from the IdP that you want to use for access to Because -// trust for the provider is ultimately derived from the IAM provider that -// this action creates, it is a best practice to limit access to the -// CreateOpenIDConnectProvider action to highly-privileged users. -func (c *IAM) CreateOpenIDConnectProvider(req *CreateOpenIDConnectProviderRequest) (resp *CreateOpenIDConnectProviderResult, err error) { - resp = &CreateOpenIDConnectProviderResult{} - err = c.client.Do("CreateOpenIDConnectProvider", "POST", "/", req, resp) - return -} - -// CreateRole creates a new role for your AWS account. For more information -// about roles, go to Working with Roles . For information about -// limitations on role names and the number of roles you can create, go to -// Limitations on IAM Entities in the Using guide. The example policy -// grants permission to an EC2 instance to assume the role. The policy is -// URL-encoded according to RFC 3986. For more information about RFC 3986, -// go to http://www.faqs.org/rfcs/rfc3986.html . -func (c *IAM) CreateRole(req *CreateRoleRequest) (resp *CreateRoleResult, err error) { - resp = &CreateRoleResult{} - err = c.client.Do("CreateRole", "POST", "/", req, resp) - return -} - -// CreateSAMLProvider creates an IAM entity to describe an identity -// provider (IdP) that supports 2.0. The provider that you create with this -// operation can be used as a principal in a role's trust policy to -// establish a trust relationship between AWS and a identity provider. You -// can create an IAM role that supports Web-based single sign-on to the AWS -// Management Console or one that supports API access to When you create -// the provider, you upload an a metadata document that you get from your -// IdP and that includes the issuer's name, expiration information, and -// keys that can be used to validate the authentication response -// (assertions) that are received from the IdP. You must generate the -// metadata document using the identity management software that is used as -// your organization's IdP. This operation requires Signature Version 4 . -// For more information, see Giving Console Access Using and Creating -// Temporary Security Credentials for Federation in the Using Temporary -// Credentials guide. -func (c *IAM) CreateSAMLProvider(req *CreateSAMLProviderRequest) (resp *CreateSAMLProviderResult, err error) { - resp = &CreateSAMLProviderResult{} - err = c.client.Do("CreateSAMLProvider", "POST", "/", req, resp) - return -} - -// CreateUser creates a new user for your AWS account. For information -// about limitations on the number of users you can create, see Limitations -// on IAM Entities in the Using guide. -func (c *IAM) CreateUser(req *CreateUserRequest) (resp *CreateUserResult, err error) { - resp = &CreateUserResult{} - err = c.client.Do("CreateUser", "POST", "/", req, resp) - return -} - -// CreateVirtualMFADevice creates a new virtual MFA device for the AWS -// account. After creating the virtual use EnableMFADevice to attach the -// MFA device to an IAM user. For more information about creating and -// working with virtual MFA devices, go to Using a Virtual MFA Device in -// the Using guide. For information about limits on the number of MFA -// devices you can create, see Limitations on Entities in the Using guide. -// The seed information contained in the QR code and the Base32 string -// should be treated like any other secret access information, such as your -// AWS access keys or your passwords. After you provision your virtual -// device, you should ensure that the information is destroyed following -// secure procedures. -func (c *IAM) CreateVirtualMFADevice(req *CreateVirtualMFADeviceRequest) (resp *CreateVirtualMFADeviceResult, err error) { - resp = &CreateVirtualMFADeviceResult{} - err = c.client.Do("CreateVirtualMFADevice", "POST", "/", req, resp) - return -} - -// DeactivateMFADevice deactivates the specified MFA device and removes it -// from association with the user name for which it was originally enabled. -// For more information about creating and working with virtual MFA -// devices, go to Using a Virtual MFA Device in the Using guide. -func (c *IAM) DeactivateMFADevice(req *DeactivateMFADeviceRequest) (err error) { - // NRE - err = c.client.Do("DeactivateMFADevice", "POST", "/", req, nil) - return -} - -// DeleteAccessKey deletes the access key associated with the specified -// user. If you do not specify a user name, IAM determines the user name -// implicitly based on the AWS access key ID signing the request. Because -// this action works for access keys under the AWS account, you can use -// this action to manage root credentials even if the AWS account has no -// associated users. -func (c *IAM) DeleteAccessKey(req *DeleteAccessKeyRequest) (err error) { - // NRE - err = c.client.Do("DeleteAccessKey", "POST", "/", req, nil) - return -} - -// DeleteAccountAlias deletes the specified AWS account alias. For -// information about using an AWS account alias, see Using an Alias for -// Your AWS Account in the Using guide. -func (c *IAM) DeleteAccountAlias(req *DeleteAccountAliasRequest) (err error) { - // NRE - err = c.client.Do("DeleteAccountAlias", "POST", "/", req, nil) - return -} - -// DeleteAccountPasswordPolicy is undocumented. -func (c *IAM) DeleteAccountPasswordPolicy() (err error) { - // NRE - err = c.client.Do("DeleteAccountPasswordPolicy", "POST", "/", nil, nil) - return -} - -// DeleteGroup deletes the specified group. The group must not contain any -// users or have any attached policies. -func (c *IAM) DeleteGroup(req *DeleteGroupRequest) (err error) { - // NRE - err = c.client.Do("DeleteGroup", "POST", "/", req, nil) - return -} - -// DeleteGroupPolicy deletes the specified policy that is associated with -// the specified group. -func (c *IAM) DeleteGroupPolicy(req *DeleteGroupPolicyRequest) (err error) { - // NRE - err = c.client.Do("DeleteGroupPolicy", "POST", "/", req, nil) - return -} - -// DeleteInstanceProfile deletes the specified instance profile. The -// instance profile must not have an associated role. Make sure you do not -// have any Amazon EC2 instances running with the instance profile you are -// about to delete. Deleting a role or instance profile that is associated -// with a running instance will break any applications running on the -// instance. For more information about instance profiles, go to About -// Instance Profiles . -func (c *IAM) DeleteInstanceProfile(req *DeleteInstanceProfileRequest) (err error) { - // NRE - err = c.client.Do("DeleteInstanceProfile", "POST", "/", req, nil) - return -} - -// DeleteLoginProfile deletes the password for the specified user, which -// terminates the user's ability to access AWS services through the AWS -// Management Console. Deleting a user's password does not prevent a user -// from accessing IAM through the command line interface or the To prevent -// all user access you must also either make the access key inactive or -// delete it. For more information about making keys inactive or deleting -// them, see UpdateAccessKey and DeleteAccessKey . -func (c *IAM) DeleteLoginProfile(req *DeleteLoginProfileRequest) (err error) { - // NRE - err = c.client.Do("DeleteLoginProfile", "POST", "/", req, nil) - return -} - -// DeleteOpenIDConnectProvider deletes an IAM OpenID Connect identity -// provider. Deleting an provider does not update any roles that reference -// the provider as a principal in their trust policies. Any attempt to -// assume a role that references a provider that has been deleted will -// fail. This action is idempotent; it does not fail or return an error if -// you call the action for a provider that was already deleted. -func (c *IAM) DeleteOpenIDConnectProvider(req *DeleteOpenIDConnectProviderRequest) (err error) { - // NRE - err = c.client.Do("DeleteOpenIDConnectProvider", "POST", "/", req, nil) - return -} - -// DeleteRole deletes the specified role. The role must not have any -// policies attached. For more information about roles, go to Working with -// Roles . Make sure you do not have any Amazon EC2 instances running with -// the role you are about to delete. Deleting a role or instance profile -// that is associated with a running instance will break any applications -// running on the instance. -func (c *IAM) DeleteRole(req *DeleteRoleRequest) (err error) { - // NRE - err = c.client.Do("DeleteRole", "POST", "/", req, nil) - return -} - -// DeleteRolePolicy deletes the specified policy associated with the -// specified role. -func (c *IAM) DeleteRolePolicy(req *DeleteRolePolicyRequest) (err error) { - // NRE - err = c.client.Do("DeleteRolePolicy", "POST", "/", req, nil) - return -} - -// DeleteSAMLProvider deletes a provider. Deleting the provider does not -// update any roles that reference the provider as a principal in their -// trust policies. Any attempt to assume a role that references a provider -// that has been deleted will fail. This operation requires Signature -// Version 4 . -func (c *IAM) DeleteSAMLProvider(req *DeleteSAMLProviderRequest) (err error) { - // NRE - err = c.client.Do("DeleteSAMLProvider", "POST", "/", req, nil) - return -} - -// DeleteServerCertificate deletes the specified server certificate. If you -// are using a server certificate with Elastic Load Balancing, deleting the -// certificate could have implications for your application. If Elastic -// Load Balancing doesn't detect the deletion of bound certificates, it may -// continue to use the certificates. This could cause Elastic Load -// Balancing to stop accepting traffic. We recommend that you remove the -// reference to the certificate from Elastic Load Balancing before using -// this command to delete the certificate. For more information, go to -// DeleteLoadBalancerListeners in the Elastic Load Balancing API Reference -// . -func (c *IAM) DeleteServerCertificate(req *DeleteServerCertificateRequest) (err error) { - // NRE - err = c.client.Do("DeleteServerCertificate", "POST", "/", req, nil) - return -} - -// DeleteSigningCertificate deletes the specified signing certificate -// associated with the specified user. If you do not specify a user name, -// IAM determines the user name implicitly based on the AWS access key ID -// signing the request. Because this action works for access keys under the -// AWS account, you can use this action to manage root credentials even if -// the AWS account has no associated users. -func (c *IAM) DeleteSigningCertificate(req *DeleteSigningCertificateRequest) (err error) { - // NRE - err = c.client.Do("DeleteSigningCertificate", "POST", "/", req, nil) - return -} - -// DeleteUser deletes the specified user. The user must not belong to any -// groups, have any keys or signing certificates, or have any attached -// policies. -func (c *IAM) DeleteUser(req *DeleteUserRequest) (err error) { - // NRE - err = c.client.Do("DeleteUser", "POST", "/", req, nil) - return -} - -// DeleteUserPolicy deletes the specified policy associated with the -// specified user. -func (c *IAM) DeleteUserPolicy(req *DeleteUserPolicyRequest) (err error) { - // NRE - err = c.client.Do("DeleteUserPolicy", "POST", "/", req, nil) - return -} - -// DeleteVirtualMFADevice deletes a virtual MFA device. You must deactivate -// a user's virtual MFA device before you can delete it. For information -// about deactivating MFA devices, see DeactivateMFADevice . -func (c *IAM) DeleteVirtualMFADevice(req *DeleteVirtualMFADeviceRequest) (err error) { - // NRE - err = c.client.Do("DeleteVirtualMFADevice", "POST", "/", req, nil) - return -} - -// EnableMFADevice enables the specified MFA device and associates it with -// the specified user name. When enabled, the MFA device is required for -// every subsequent login by the user name associated with the device. -func (c *IAM) EnableMFADevice(req *EnableMFADeviceRequest) (err error) { - // NRE - err = c.client.Do("EnableMFADevice", "POST", "/", req, nil) - return -} - -// GenerateCredentialReport generates a credential report for the AWS -// account. For more information about the credential report, see Getting -// Credential Reports in the Using guide. -func (c *IAM) GenerateCredentialReport() (resp *GenerateCredentialReportResult, err error) { - resp = &GenerateCredentialReportResult{} - err = c.client.Do("GenerateCredentialReport", "POST", "/", nil, resp) - return -} - -// GetAccountAuthorizationDetails retrieves information about all IAM -// users, groups, and roles in your account, including their relationships -// to one another and their attached policies. Use this API to obtain a -// snapshot of the configuration of IAM permissions (users, groups, roles, -// and policies) in your account. You can optionally filter the results -// using the Filter parameter. You can paginate the results using the -// MaxItems and Marker parameters. -func (c *IAM) GetAccountAuthorizationDetails(req *GetAccountAuthorizationDetailsRequest) (resp *GetAccountAuthorizationDetailsResult, err error) { - resp = &GetAccountAuthorizationDetailsResult{} - err = c.client.Do("GetAccountAuthorizationDetails", "POST", "/", req, resp) - return -} - -// GetAccountPasswordPolicy retrieves the password policy for the AWS -// account. For more information about using a password policy, go to -// Managing an IAM Password Policy . -func (c *IAM) GetAccountPasswordPolicy() (resp *GetAccountPasswordPolicyResult, err error) { - resp = &GetAccountPasswordPolicyResult{} - err = c.client.Do("GetAccountPasswordPolicy", "POST", "/", nil, resp) - return -} - -// GetAccountSummary retrieves account level information about account -// entity usage and IAM quotas. For information about limitations on IAM -// entities, see Limitations on IAM Entities in the Using guide. -func (c *IAM) GetAccountSummary() (resp *GetAccountSummaryResult, err error) { - resp = &GetAccountSummaryResult{} - err = c.client.Do("GetAccountSummary", "POST", "/", nil, resp) - return -} - -// GetCredentialReport retrieves a credential report for the AWS account. -// For more information about the credential report, see Getting Credential -// Reports in the Using guide. -func (c *IAM) GetCredentialReport() (resp *GetCredentialReportResult, err error) { - resp = &GetCredentialReportResult{} - err = c.client.Do("GetCredentialReport", "POST", "/", nil, resp) - return -} - -// GetGroup returns a list of users that are in the specified group. You -// can paginate the results using the MaxItems and Marker parameters. -func (c *IAM) GetGroup(req *GetGroupRequest) (resp *GetGroupResult, err error) { - resp = &GetGroupResult{} - err = c.client.Do("GetGroup", "POST", "/", req, resp) - return -} - -// GetGroupPolicy retrieves the specified policy document for the specified -// group. The returned policy is URL-encoded according to RFC 3986. For -// more information about RFC 3986, go to -// http://www.faqs.org/rfcs/rfc3986.html . -func (c *IAM) GetGroupPolicy(req *GetGroupPolicyRequest) (resp *GetGroupPolicyResult, err error) { - resp = &GetGroupPolicyResult{} - err = c.client.Do("GetGroupPolicy", "POST", "/", req, resp) - return -} - -// GetInstanceProfile retrieves information about the specified instance -// profile, including the instance profile's path, and role. For more -// information about instance profiles, go to About Instance Profiles . For -// more information about ARNs, go to ARNs . -func (c *IAM) GetInstanceProfile(req *GetInstanceProfileRequest) (resp *GetInstanceProfileResult, err error) { - resp = &GetInstanceProfileResult{} - err = c.client.Do("GetInstanceProfile", "POST", "/", req, resp) - return -} - -// GetLoginProfile retrieves the user name and password-creation date for -// the specified user. If the user has not been assigned a password, the -// action returns a 404 NoSuchEntity ) error. -func (c *IAM) GetLoginProfile(req *GetLoginProfileRequest) (resp *GetLoginProfileResult, err error) { - resp = &GetLoginProfileResult{} - err = c.client.Do("GetLoginProfile", "POST", "/", req, resp) - return -} - -// GetOpenIDConnectProvider returns information about the specified OpenID -// Connect provider. -func (c *IAM) GetOpenIDConnectProvider(req *GetOpenIDConnectProviderRequest) (resp *GetOpenIDConnectProviderResult, err error) { - resp = &GetOpenIDConnectProviderResult{} - err = c.client.Do("GetOpenIDConnectProvider", "POST", "/", req, resp) - return -} - -// GetRole retrieves information about the specified role, including the -// role's path, and the policy granting permission to assume the role. For -// more information about ARNs, go to ARNs . For more information about -// roles, go to Working with Roles . The returned policy is URL-encoded -// according to RFC 3986. For more information about RFC 3986, go to -// http://www.faqs.org/rfcs/rfc3986.html . -func (c *IAM) GetRole(req *GetRoleRequest) (resp *GetRoleResult, err error) { - resp = &GetRoleResult{} - err = c.client.Do("GetRole", "POST", "/", req, resp) - return -} - -// GetRolePolicy retrieves the specified policy document for the specified -// role. For more information about roles, go to Working with Roles . The -// returned policy is URL-encoded according to RFC 3986. For more -// information about RFC 3986, go to http://www.faqs.org/rfcs/rfc3986.html -// . -func (c *IAM) GetRolePolicy(req *GetRolePolicyRequest) (resp *GetRolePolicyResult, err error) { - resp = &GetRolePolicyResult{} - err = c.client.Do("GetRolePolicy", "POST", "/", req, resp) - return -} - -// GetSAMLProvider returns the provider metadocument that was uploaded when -// the provider was created or updated. This operation requires Signature -// Version 4 . -func (c *IAM) GetSAMLProvider(req *GetSAMLProviderRequest) (resp *GetSAMLProviderResult, err error) { - resp = &GetSAMLProviderResult{} - err = c.client.Do("GetSAMLProvider", "POST", "/", req, resp) - return -} - -// GetServerCertificate retrieves information about the specified server -// certificate. -func (c *IAM) GetServerCertificate(req *GetServerCertificateRequest) (resp *GetServerCertificateResult, err error) { - resp = &GetServerCertificateResult{} - err = c.client.Do("GetServerCertificate", "POST", "/", req, resp) - return -} - -// GetUser retrieves information about the specified user, including the -// user's creation date, path, unique ID, and If you do not specify a user -// name, IAM determines the user name implicitly based on the AWS access -// key ID used to sign the request. -func (c *IAM) GetUser(req *GetUserRequest) (resp *GetUserResult, err error) { - resp = &GetUserResult{} - err = c.client.Do("GetUser", "POST", "/", req, resp) - return -} - -// GetUserPolicy retrieves the specified policy document for the specified -// user. The returned policy is URL-encoded according to RFC 3986. For more -// information about RFC 3986, go to http://www.faqs.org/rfcs/rfc3986.html -// . -func (c *IAM) GetUserPolicy(req *GetUserPolicyRequest) (resp *GetUserPolicyResult, err error) { - resp = &GetUserPolicyResult{} - err = c.client.Do("GetUserPolicy", "POST", "/", req, resp) - return -} - -// ListAccessKeys returns information about the access key IDs associated -// with the specified user. If there are none, the action returns an empty -// list. Although each user is limited to a small number of keys, you can -// still paginate the results using the MaxItems and Marker parameters. If -// the UserName field is not specified, the UserName is determined -// implicitly based on the AWS access key ID used to sign the request. -// Because this action works for access keys under the AWS account, you can -// use this action to manage root credentials even if the AWS account has -// no associated users. To ensure the security of your AWS account, the -// secret access key is accessible only during key and user creation. -func (c *IAM) ListAccessKeys(req *ListAccessKeysRequest) (resp *ListAccessKeysResult, err error) { - resp = &ListAccessKeysResult{} - err = c.client.Do("ListAccessKeys", "POST", "/", req, resp) - return -} - -// ListAccountAliases lists the account aliases associated with the -// account. For information about using an AWS account alias, see Using an -// Alias for Your AWS Account in the Using guide. You can paginate the -// results using the MaxItems and Marker parameters. -func (c *IAM) ListAccountAliases(req *ListAccountAliasesRequest) (resp *ListAccountAliasesResult, err error) { - resp = &ListAccountAliasesResult{} - err = c.client.Do("ListAccountAliases", "POST", "/", req, resp) - return -} - -// ListGroupPolicies lists the names of the policies associated with the -// specified group. If there are none, the action returns an empty list. -// You can paginate the results using the MaxItems and Marker parameters. -func (c *IAM) ListGroupPolicies(req *ListGroupPoliciesRequest) (resp *ListGroupPoliciesResult, err error) { - resp = &ListGroupPoliciesResult{} - err = c.client.Do("ListGroupPolicies", "POST", "/", req, resp) - return -} - -// ListGroups lists the groups that have the specified path prefix. You can -// paginate the results using the MaxItems and Marker parameters. -func (c *IAM) ListGroups(req *ListGroupsRequest) (resp *ListGroupsResult, err error) { - resp = &ListGroupsResult{} - err = c.client.Do("ListGroups", "POST", "/", req, resp) - return -} - -// ListGroupsForUser lists the groups the specified user belongs to. You -// can paginate the results using the MaxItems and Marker parameters. -func (c *IAM) ListGroupsForUser(req *ListGroupsForUserRequest) (resp *ListGroupsForUserResult, err error) { - resp = &ListGroupsForUserResult{} - err = c.client.Do("ListGroupsForUser", "POST", "/", req, resp) - return -} - -// ListInstanceProfiles lists the instance profiles that have the specified -// path prefix. If there are none, the action returns an empty list. For -// more information about instance profiles, go to About Instance Profiles -// . You can paginate the results using the MaxItems and Marker parameters. -func (c *IAM) ListInstanceProfiles(req *ListInstanceProfilesRequest) (resp *ListInstanceProfilesResult, err error) { - resp = &ListInstanceProfilesResult{} - err = c.client.Do("ListInstanceProfiles", "POST", "/", req, resp) - return -} - -// ListInstanceProfilesForRole lists the instance profiles that have the -// specified associated role. If there are none, the action returns an -// empty list. For more information about instance profiles, go to About -// Instance Profiles . You can paginate the results using the MaxItems and -// Marker parameters. -func (c *IAM) ListInstanceProfilesForRole(req *ListInstanceProfilesForRoleRequest) (resp *ListInstanceProfilesForRoleResult, err error) { - resp = &ListInstanceProfilesForRoleResult{} - err = c.client.Do("ListInstanceProfilesForRole", "POST", "/", req, resp) - return -} - -// ListMFADevices lists the MFA devices. If the request includes the user -// name, then this action lists all the MFA devices associated with the -// specified user name. If you do not specify a user name, IAM determines -// the user name implicitly based on the AWS access key ID signing the -// request. You can paginate the results using the MaxItems and Marker -// parameters. -func (c *IAM) ListMFADevices(req *ListMFADevicesRequest) (resp *ListMFADevicesResult, err error) { - resp = &ListMFADevicesResult{} - err = c.client.Do("ListMFADevices", "POST", "/", req, resp) - return -} - -// ListOpenIDConnectProviders lists information about the OpenID Connect -// providers in the AWS account. -func (c *IAM) ListOpenIDConnectProviders(req *ListOpenIDConnectProvidersRequest) (resp *ListOpenIDConnectProvidersResult, err error) { - resp = &ListOpenIDConnectProvidersResult{} - err = c.client.Do("ListOpenIDConnectProviders", "POST", "/", req, resp) - return -} - -// ListRolePolicies lists the names of the policies associated with the -// specified role. If there are none, the action returns an empty list. You -// can paginate the results using the MaxItems and Marker parameters. -func (c *IAM) ListRolePolicies(req *ListRolePoliciesRequest) (resp *ListRolePoliciesResult, err error) { - resp = &ListRolePoliciesResult{} - err = c.client.Do("ListRolePolicies", "POST", "/", req, resp) - return -} - -// ListRoles lists the roles that have the specified path prefix. If there -// are none, the action returns an empty list. For more information about -// roles, go to Working with Roles . You can paginate the results using the -// MaxItems and Marker parameters. The returned policy is URL-encoded -// according to RFC 3986. For more information about RFC 3986, go to -// http://www.faqs.org/rfcs/rfc3986.html . -func (c *IAM) ListRoles(req *ListRolesRequest) (resp *ListRolesResult, err error) { - resp = &ListRolesResult{} - err = c.client.Do("ListRoles", "POST", "/", req, resp) - return -} - -// ListSAMLProviders is undocumented. -func (c *IAM) ListSAMLProviders(req *ListSAMLProvidersRequest) (resp *ListSAMLProvidersResult, err error) { - resp = &ListSAMLProvidersResult{} - err = c.client.Do("ListSAMLProviders", "POST", "/", req, resp) - return -} - -// ListServerCertificates lists the server certificates that have the -// specified path prefix. If none exist, the action returns an empty list. -// You can paginate the results using the MaxItems and Marker parameters. -func (c *IAM) ListServerCertificates(req *ListServerCertificatesRequest) (resp *ListServerCertificatesResult, err error) { - resp = &ListServerCertificatesResult{} - err = c.client.Do("ListServerCertificates", "POST", "/", req, resp) - return -} - -// ListSigningCertificates returns information about the signing -// certificates associated with the specified user. If there are none, the -// action returns an empty list. Although each user is limited to a small -// number of signing certificates, you can still paginate the results using -// the MaxItems and Marker parameters. If the UserName field is not -// specified, the user name is determined implicitly based on the AWS -// access key ID used to sign the request. Because this action works for -// access keys under the AWS account, you can use this action to manage -// root credentials even if the AWS account has no associated users. -func (c *IAM) ListSigningCertificates(req *ListSigningCertificatesRequest) (resp *ListSigningCertificatesResult, err error) { - resp = &ListSigningCertificatesResult{} - err = c.client.Do("ListSigningCertificates", "POST", "/", req, resp) - return -} - -// ListUserPolicies lists the names of the policies associated with the -// specified user. If there are none, the action returns an empty list. You -// can paginate the results using the MaxItems and Marker parameters. -func (c *IAM) ListUserPolicies(req *ListUserPoliciesRequest) (resp *ListUserPoliciesResult, err error) { - resp = &ListUserPoliciesResult{} - err = c.client.Do("ListUserPolicies", "POST", "/", req, resp) - return -} - -// ListUsers lists the IAM users that have the specified path prefix. If no -// path prefix is specified, the action returns all users in the AWS -// account. If there are none, the action returns an empty list. You can -// paginate the results using the MaxItems and Marker parameters. -func (c *IAM) ListUsers(req *ListUsersRequest) (resp *ListUsersResult, err error) { - resp = &ListUsersResult{} - err = c.client.Do("ListUsers", "POST", "/", req, resp) - return -} - -// ListVirtualMFADevices lists the virtual MFA devices under the AWS -// account by assignment status. If you do not specify an assignment -// status, the action returns a list of all virtual MFA devices. Assignment -// status can be Assigned , Unassigned , or Any . You can paginate the -// results using the MaxItems and Marker parameters. -func (c *IAM) ListVirtualMFADevices(req *ListVirtualMFADevicesRequest) (resp *ListVirtualMFADevicesResult, err error) { - resp = &ListVirtualMFADevicesResult{} - err = c.client.Do("ListVirtualMFADevices", "POST", "/", req, resp) - return -} - -// PutGroupPolicy adds (or updates) a policy document associated with the -// specified group. For information about policies, refer to Overview of -// Policies in the Using guide. For information about limits on the number -// of policies you can associate with a group, see Limitations on IAM -// Entities in the Using guide. Because policy documents can be large, you -// should use rather than GET when calling PutGroupPolicy . For information -// about setting up signatures and authorization through the go to Signing -// AWS API Requests in the AWS General Reference . For general information -// about using the Query API with go to Making Query Requests in the Using -// guide. -func (c *IAM) PutGroupPolicy(req *PutGroupPolicyRequest) (err error) { - // NRE - err = c.client.Do("PutGroupPolicy", "POST", "/", req, nil) - return -} - -// PutRolePolicy adds (or updates) a policy document associated with the -// specified role. For information about policies, go to Overview of -// Policies in the Using guide. For information about limits on the -// policies you can associate with a role, see Limitations on IAM Entities -// in the Using guide. Because policy documents can be large, you should -// use rather than GET when calling PutRolePolicy . For information about -// setting up signatures and authorization through the go to Signing AWS -// API Requests in the AWS General Reference . For general information -// about using the Query API with go to Making Query Requests in the Using -// guide. -func (c *IAM) PutRolePolicy(req *PutRolePolicyRequest) (err error) { - // NRE - err = c.client.Do("PutRolePolicy", "POST", "/", req, nil) - return -} - -// PutUserPolicy adds (or updates) a policy document associated with the -// specified user. For information about policies, refer to Overview of -// Policies in the Using guide. For information about limits on the number -// of policies you can associate with a user, see Limitations on IAM -// Entities in the Using guide. Because policy documents can be large, you -// should use rather than GET when calling PutUserPolicy . For information -// about setting up signatures and authorization through the go to Signing -// AWS API Requests in the AWS General Reference . For general information -// about using the Query API with go to Making Query Requests in the Using -// guide. -func (c *IAM) PutUserPolicy(req *PutUserPolicyRequest) (err error) { - // NRE - err = c.client.Do("PutUserPolicy", "POST", "/", req, nil) - return -} - -// RemoveClientIDFromOpenIDConnectProvider removes the specified client ID -// (also known as audience) from the list of client IDs registered for the -// specified IAM OpenID Connect provider. This action is idempotent; it -// does not fail or return an error if you try to remove a client ID that -// was removed previously. -func (c *IAM) RemoveClientIDFromOpenIDConnectProvider(req *RemoveClientIDFromOpenIDConnectProviderRequest) (err error) { - // NRE - err = c.client.Do("RemoveClientIDFromOpenIDConnectProvider", "POST", "/", req, nil) - return -} - -// RemoveRoleFromInstanceProfile removes the specified role from the -// specified instance profile. Make sure you do not have any Amazon EC2 -// instances running with the role you are about to remove from the -// instance profile. Removing a role from an instance profile that is -// associated with a running instance will break any applications running -// on the instance. For more information about roles, go to Working with -// Roles . For more information about instance profiles, go to About -// Instance Profiles . -func (c *IAM) RemoveRoleFromInstanceProfile(req *RemoveRoleFromInstanceProfileRequest) (err error) { - // NRE - err = c.client.Do("RemoveRoleFromInstanceProfile", "POST", "/", req, nil) - return -} - -// RemoveUserFromGroup removes the specified user from the specified group. -func (c *IAM) RemoveUserFromGroup(req *RemoveUserFromGroupRequest) (err error) { - // NRE - err = c.client.Do("RemoveUserFromGroup", "POST", "/", req, nil) - return -} - -// ResyncMFADevice synchronizes the specified MFA device with AWS servers. -// For more information about creating and working with virtual MFA -// devices, go to Using a Virtual MFA Device in the Using guide. -func (c *IAM) ResyncMFADevice(req *ResyncMFADeviceRequest) (err error) { - // NRE - err = c.client.Do("ResyncMFADevice", "POST", "/", req, nil) - return -} - -// UpdateAccessKey changes the status of the specified access key from -// Active to Inactive, or vice versa. This action can be used to disable a -// user's key as part of a key rotation work flow. If the UserName field is -// not specified, the UserName is determined implicitly based on the AWS -// access key ID used to sign the request. Because this action works for -// access keys under the AWS account, you can use this action to manage -// root credentials even if the AWS account has no associated users. For -// information about rotating keys, see Managing Keys and Certificates in -// the Using guide. -func (c *IAM) UpdateAccessKey(req *UpdateAccessKeyRequest) (err error) { - // NRE - err = c.client.Do("UpdateAccessKey", "POST", "/", req, nil) - return -} - -// UpdateAccountPasswordPolicy updates the password policy settings for the -// AWS account. This action does not support partial updates. No parameters -// are required, but if you do not specify a parameter, that parameter's -// value reverts to its default value. See the Request Parameters section -// for each parameter's default value. For more information about using a -// password policy, see Managing an IAM Password Policy in the Using guide. -func (c *IAM) UpdateAccountPasswordPolicy(req *UpdateAccountPasswordPolicyRequest) (err error) { - // NRE - err = c.client.Do("UpdateAccountPasswordPolicy", "POST", "/", req, nil) - return -} - -// UpdateAssumeRolePolicy updates the policy that grants an entity -// permission to assume a role. For more information about roles, go to -// Working with Roles . -func (c *IAM) UpdateAssumeRolePolicy(req *UpdateAssumeRolePolicyRequest) (err error) { - // NRE - err = c.client.Do("UpdateAssumeRolePolicy", "POST", "/", req, nil) - return -} - -// UpdateGroup updates the name and/or the path of the specified group. You -// should understand the implications of changing a group's path or name. -// For more information, see Renaming Users and Groups in the Using guide. -// To change a group name the requester must have appropriate permissions -// on both the source object and the target object. For example, to change -// Managers to MGRs, the entity making the request must have permission on -// Managers and MGRs, or must have permission on all For more information -// about permissions, see Permissions and Policies . -func (c *IAM) UpdateGroup(req *UpdateGroupRequest) (err error) { - // NRE - err = c.client.Do("UpdateGroup", "POST", "/", req, nil) - return -} - -// UpdateLoginProfile changes the password for the specified user. Users -// can change their own passwords by calling ChangePassword . For more -// information about modifying passwords, see Managing Passwords in the -// Using guide. -func (c *IAM) UpdateLoginProfile(req *UpdateLoginProfileRequest) (err error) { - // NRE - err = c.client.Do("UpdateLoginProfile", "POST", "/", req, nil) - return -} - -// UpdateOpenIDConnectProviderThumbprint replaces the existing list of -// server certificate thumbprints with a new list. The list that you pass -// with this action completely replaces the existing list of thumbprints. -// (The lists are not merged.) Typically, you need to update a thumbprint -// only when the identity provider's certificate changes, which occurs -// rarely. However, if the provider's certificate does change, any attempt -// to assume an IAM role that specifies the IAM provider as a principal -// will fail until the certificate thumbprint is updated. Because trust for -// the OpenID Connect provider is ultimately derived from the provider's -// certificate and is validated by the thumbprint, it is a best practice to -// limit access to the UpdateOpenIDConnectProviderThumbprint action to -// highly-privileged users. -func (c *IAM) UpdateOpenIDConnectProviderThumbprint(req *UpdateOpenIDConnectProviderThumbprintRequest) (err error) { - // NRE - err = c.client.Do("UpdateOpenIDConnectProviderThumbprint", "POST", "/", req, nil) - return -} - -// UpdateSAMLProvider updates the metadata document for an existing -// provider. This operation requires Signature Version 4 . -func (c *IAM) UpdateSAMLProvider(req *UpdateSAMLProviderRequest) (resp *UpdateSAMLProviderResult, err error) { - resp = &UpdateSAMLProviderResult{} - err = c.client.Do("UpdateSAMLProvider", "POST", "/", req, resp) - return -} - -// UpdateServerCertificate updates the name and/or the path of the -// specified server certificate. You should understand the implications of -// changing a server certificate's path or name. For more information, see -// Managing Server Certificates in the Using guide. To change a server -// certificate name the requester must have appropriate permissions on both -// the source object and the target object. For example, to change the name -// from ProductionCert to ProdCert, the entity making the request must have -// permission on ProductionCert and ProdCert, or must have permission on -// all For more information about permissions, see Permissions and Policies -// . -func (c *IAM) UpdateServerCertificate(req *UpdateServerCertificateRequest) (err error) { - // NRE - err = c.client.Do("UpdateServerCertificate", "POST", "/", req, nil) - return -} - -// UpdateSigningCertificate changes the status of the specified signing -// certificate from active to disabled, or vice versa. This action can be -// used to disable a user's signing certificate as part of a certificate -// rotation work flow. If the UserName field is not specified, the UserName -// is determined implicitly based on the AWS access key ID used to sign the -// request. Because this action works for access keys under the AWS -// account, you can use this action to manage root credentials even if the -// AWS account has no associated users. For information about rotating -// certificates, see Managing Keys and Certificates in the Using guide. -func (c *IAM) UpdateSigningCertificate(req *UpdateSigningCertificateRequest) (err error) { - // NRE - err = c.client.Do("UpdateSigningCertificate", "POST", "/", req, nil) - return -} - -// UpdateUser updates the name and/or the path of the specified user. You -// should understand the implications of changing a user's path or name. -// For more information, see Renaming Users and Groups in the Using guide. -// To change a user name the requester must have appropriate permissions on -// both the source object and the target object. For example, to change Bob -// to Robert, the entity making the request must have permission on Bob and -// Robert, or must have permission on all For more information about -// permissions, see Permissions and Policies . -func (c *IAM) UpdateUser(req *UpdateUserRequest) (err error) { - // NRE - err = c.client.Do("UpdateUser", "POST", "/", req, nil) - return -} - -// UploadServerCertificate uploads a server certificate entity for the AWS -// account. The server certificate entity includes a public key -// certificate, a private key, and an optional certificate chain, which -// should all be PEM-encoded. For information about the number of server -// certificates you can upload, see Limitations on IAM Entities in the -// Using guide. Because the body of the public key certificate, private -// key, and the certificate chain can be large, you should use rather than -// GET when calling UploadServerCertificate . For information about setting -// up signatures and authorization through the go to Signing AWS API -// Requests in the AWS General Reference . For general information about -// using the Query API with go to Making Query Requests in the Using guide. -func (c *IAM) UploadServerCertificate(req *UploadServerCertificateRequest) (resp *UploadServerCertificateResult, err error) { - resp = &UploadServerCertificateResult{} - err = c.client.Do("UploadServerCertificate", "POST", "/", req, resp) - return -} - -// UploadSigningCertificate uploads an X.509 signing certificate and -// associates it with the specified user. Some AWS services use X.509 -// signing certificates to validate requests that are signed with a -// corresponding private key. When you upload the certificate, its default -// status is Active . If the UserName field is not specified, the user name -// is determined implicitly based on the AWS access key ID used to sign the -// request. Because this action works for access keys under the AWS -// account, you can use this action to manage root credentials even if the -// AWS account has no associated users. Because the body of a X.509 -// certificate can be large, you should use rather than GET when calling -// UploadSigningCertificate . For information about setting up signatures -// and authorization through the go to Signing AWS API Requests in the AWS -// General Reference . For general information about using the Query API -// with go to Making Query Requests in the Using guide. -func (c *IAM) UploadSigningCertificate(req *UploadSigningCertificateRequest) (resp *UploadSigningCertificateResult, err error) { - resp = &UploadSigningCertificateResult{} - err = c.client.Do("UploadSigningCertificate", "POST", "/", req, resp) - return -} - -// AccessKey is undocumented. -type AccessKey struct { - AccessKeyID aws.StringValue `query:"AccessKeyId" xml:"AccessKeyId"` - CreateDate time.Time `query:"CreateDate" xml:"CreateDate"` - SecretAccessKey aws.StringValue `query:"SecretAccessKey" xml:"SecretAccessKey"` - Status aws.StringValue `query:"Status" xml:"Status"` - UserName aws.StringValue `query:"UserName" xml:"UserName"` -} - -// AccessKeyMetadata is undocumented. -type AccessKeyMetadata struct { - AccessKeyID aws.StringValue `query:"AccessKeyId" xml:"AccessKeyId"` - CreateDate time.Time `query:"CreateDate" xml:"CreateDate"` - Status aws.StringValue `query:"Status" xml:"Status"` - UserName aws.StringValue `query:"UserName" xml:"UserName"` -} - -// AddClientIDToOpenIDConnectProviderRequest is undocumented. -type AddClientIDToOpenIDConnectProviderRequest struct { - ClientID aws.StringValue `query:"ClientID" xml:"ClientID"` - OpenIDConnectProviderARN aws.StringValue `query:"OpenIDConnectProviderArn" xml:"OpenIDConnectProviderArn"` -} - -// AddRoleToInstanceProfileRequest is undocumented. -type AddRoleToInstanceProfileRequest struct { - InstanceProfileName aws.StringValue `query:"InstanceProfileName" xml:"InstanceProfileName"` - RoleName aws.StringValue `query:"RoleName" xml:"RoleName"` -} - -// AddUserToGroupRequest is undocumented. -type AddUserToGroupRequest struct { - GroupName aws.StringValue `query:"GroupName" xml:"GroupName"` - UserName aws.StringValue `query:"UserName" xml:"UserName"` -} - -// ChangePasswordRequest is undocumented. -type ChangePasswordRequest struct { - NewPassword aws.StringValue `query:"NewPassword" xml:"NewPassword"` - OldPassword aws.StringValue `query:"OldPassword" xml:"OldPassword"` -} - -// CreateAccessKeyRequest is undocumented. -type CreateAccessKeyRequest struct { - UserName aws.StringValue `query:"UserName" xml:"UserName"` -} - -// CreateAccessKeyResponse is undocumented. -type CreateAccessKeyResponse struct { - AccessKey *AccessKey `query:"AccessKey" xml:"CreateAccessKeyResult>AccessKey"` -} - -// CreateAccountAliasRequest is undocumented. -type CreateAccountAliasRequest struct { - AccountAlias aws.StringValue `query:"AccountAlias" xml:"AccountAlias"` -} - -// CreateGroupRequest is undocumented. -type CreateGroupRequest struct { - GroupName aws.StringValue `query:"GroupName" xml:"GroupName"` - Path aws.StringValue `query:"Path" xml:"Path"` -} - -// CreateGroupResponse is undocumented. -type CreateGroupResponse struct { - Group *Group `query:"Group" xml:"CreateGroupResult>Group"` -} - -// CreateInstanceProfileRequest is undocumented. -type CreateInstanceProfileRequest struct { - InstanceProfileName aws.StringValue `query:"InstanceProfileName" xml:"InstanceProfileName"` - Path aws.StringValue `query:"Path" xml:"Path"` -} - -// CreateInstanceProfileResponse is undocumented. -type CreateInstanceProfileResponse struct { - InstanceProfile *InstanceProfile `query:"InstanceProfile" xml:"CreateInstanceProfileResult>InstanceProfile"` -} - -// CreateLoginProfileRequest is undocumented. -type CreateLoginProfileRequest struct { - Password aws.StringValue `query:"Password" xml:"Password"` - PasswordResetRequired aws.BooleanValue `query:"PasswordResetRequired" xml:"PasswordResetRequired"` - UserName aws.StringValue `query:"UserName" xml:"UserName"` -} - -// CreateLoginProfileResponse is undocumented. -type CreateLoginProfileResponse struct { - LoginProfile *LoginProfile `query:"LoginProfile" xml:"CreateLoginProfileResult>LoginProfile"` -} - -// CreateOpenIDConnectProviderRequest is undocumented. -type CreateOpenIDConnectProviderRequest struct { - ClientIDList []string `query:"ClientIDList.member" xml:"ClientIDList>member"` - ThumbprintList []string `query:"ThumbprintList.member" xml:"ThumbprintList>member"` - URL aws.StringValue `query:"Url" xml:"Url"` -} - -// CreateOpenIDConnectProviderResponse is undocumented. -type CreateOpenIDConnectProviderResponse struct { - OpenIDConnectProviderARN aws.StringValue `query:"OpenIDConnectProviderArn" xml:"CreateOpenIDConnectProviderResult>OpenIDConnectProviderArn"` -} - -// CreateRoleRequest is undocumented. -type CreateRoleRequest struct { - AssumeRolePolicyDocument aws.StringValue `query:"AssumeRolePolicyDocument" xml:"AssumeRolePolicyDocument"` - Path aws.StringValue `query:"Path" xml:"Path"` - RoleName aws.StringValue `query:"RoleName" xml:"RoleName"` -} - -// CreateRoleResponse is undocumented. -type CreateRoleResponse struct { - Role *Role `query:"Role" xml:"CreateRoleResult>Role"` -} - -// CreateSAMLProviderRequest is undocumented. -type CreateSAMLProviderRequest struct { - Name aws.StringValue `query:"Name" xml:"Name"` - SAMLMetadataDocument aws.StringValue `query:"SAMLMetadataDocument" xml:"SAMLMetadataDocument"` -} - -// CreateSAMLProviderResponse is undocumented. -type CreateSAMLProviderResponse struct { - SAMLProviderARN aws.StringValue `query:"SAMLProviderArn" xml:"CreateSAMLProviderResult>SAMLProviderArn"` -} - -// CreateUserRequest is undocumented. -type CreateUserRequest struct { - Path aws.StringValue `query:"Path" xml:"Path"` - UserName aws.StringValue `query:"UserName" xml:"UserName"` -} - -// CreateUserResponse is undocumented. -type CreateUserResponse struct { - User *User `query:"User" xml:"CreateUserResult>User"` -} - -// CreateVirtualMFADeviceRequest is undocumented. -type CreateVirtualMFADeviceRequest struct { - Path aws.StringValue `query:"Path" xml:"Path"` - VirtualMFADeviceName aws.StringValue `query:"VirtualMFADeviceName" xml:"VirtualMFADeviceName"` -} - -// CreateVirtualMFADeviceResponse is undocumented. -type CreateVirtualMFADeviceResponse struct { - VirtualMFADevice *VirtualMFADevice `query:"VirtualMFADevice" xml:"CreateVirtualMFADeviceResult>VirtualMFADevice"` -} - -// DeactivateMFADeviceRequest is undocumented. -type DeactivateMFADeviceRequest struct { - SerialNumber aws.StringValue `query:"SerialNumber" xml:"SerialNumber"` - UserName aws.StringValue `query:"UserName" xml:"UserName"` -} - -// DeleteAccessKeyRequest is undocumented. -type DeleteAccessKeyRequest struct { - AccessKeyID aws.StringValue `query:"AccessKeyId" xml:"AccessKeyId"` - UserName aws.StringValue `query:"UserName" xml:"UserName"` -} - -// DeleteAccountAliasRequest is undocumented. -type DeleteAccountAliasRequest struct { - AccountAlias aws.StringValue `query:"AccountAlias" xml:"AccountAlias"` -} - -// DeleteGroupPolicyRequest is undocumented. -type DeleteGroupPolicyRequest struct { - GroupName aws.StringValue `query:"GroupName" xml:"GroupName"` - PolicyName aws.StringValue `query:"PolicyName" xml:"PolicyName"` -} - -// DeleteGroupRequest is undocumented. -type DeleteGroupRequest struct { - GroupName aws.StringValue `query:"GroupName" xml:"GroupName"` -} - -// DeleteInstanceProfileRequest is undocumented. -type DeleteInstanceProfileRequest struct { - InstanceProfileName aws.StringValue `query:"InstanceProfileName" xml:"InstanceProfileName"` -} - -// DeleteLoginProfileRequest is undocumented. -type DeleteLoginProfileRequest struct { - UserName aws.StringValue `query:"UserName" xml:"UserName"` -} - -// DeleteOpenIDConnectProviderRequest is undocumented. -type DeleteOpenIDConnectProviderRequest struct { - OpenIDConnectProviderARN aws.StringValue `query:"OpenIDConnectProviderArn" xml:"OpenIDConnectProviderArn"` -} - -// DeleteRolePolicyRequest is undocumented. -type DeleteRolePolicyRequest struct { - PolicyName aws.StringValue `query:"PolicyName" xml:"PolicyName"` - RoleName aws.StringValue `query:"RoleName" xml:"RoleName"` -} - -// DeleteRoleRequest is undocumented. -type DeleteRoleRequest struct { - RoleName aws.StringValue `query:"RoleName" xml:"RoleName"` -} - -// DeleteSAMLProviderRequest is undocumented. -type DeleteSAMLProviderRequest struct { - SAMLProviderARN aws.StringValue `query:"SAMLProviderArn" xml:"SAMLProviderArn"` -} - -// DeleteServerCertificateRequest is undocumented. -type DeleteServerCertificateRequest struct { - ServerCertificateName aws.StringValue `query:"ServerCertificateName" xml:"ServerCertificateName"` -} - -// DeleteSigningCertificateRequest is undocumented. -type DeleteSigningCertificateRequest struct { - CertificateID aws.StringValue `query:"CertificateId" xml:"CertificateId"` - UserName aws.StringValue `query:"UserName" xml:"UserName"` -} - -// DeleteUserPolicyRequest is undocumented. -type DeleteUserPolicyRequest struct { - PolicyName aws.StringValue `query:"PolicyName" xml:"PolicyName"` - UserName aws.StringValue `query:"UserName" xml:"UserName"` -} - -// DeleteUserRequest is undocumented. -type DeleteUserRequest struct { - UserName aws.StringValue `query:"UserName" xml:"UserName"` -} - -// DeleteVirtualMFADeviceRequest is undocumented. -type DeleteVirtualMFADeviceRequest struct { - SerialNumber aws.StringValue `query:"SerialNumber" xml:"SerialNumber"` -} - -// EnableMFADeviceRequest is undocumented. -type EnableMFADeviceRequest struct { - AuthenticationCode1 aws.StringValue `query:"AuthenticationCode1" xml:"AuthenticationCode1"` - AuthenticationCode2 aws.StringValue `query:"AuthenticationCode2" xml:"AuthenticationCode2"` - SerialNumber aws.StringValue `query:"SerialNumber" xml:"SerialNumber"` - UserName aws.StringValue `query:"UserName" xml:"UserName"` -} - -// Possible values for IAM. -const ( - EntityTypeGroup = "Group" - EntityTypeRole = "Role" - EntityTypeUser = "User" -) - -// GenerateCredentialReportResponse is undocumented. -type GenerateCredentialReportResponse struct { - Description aws.StringValue `query:"Description" xml:"GenerateCredentialReportResult>Description"` - State aws.StringValue `query:"State" xml:"GenerateCredentialReportResult>State"` -} - -// GetAccountAuthorizationDetailsRequest is undocumented. -type GetAccountAuthorizationDetailsRequest struct { - Filter []string `query:"Filter.member" xml:"Filter>member"` - Marker aws.StringValue `query:"Marker" xml:"Marker"` - MaxItems aws.IntegerValue `query:"MaxItems" xml:"MaxItems"` -} - -// GetAccountAuthorizationDetailsResponse is undocumented. -type GetAccountAuthorizationDetailsResponse struct { - GroupDetailList []GroupDetail `query:"GroupDetailList.member" xml:"GetAccountAuthorizationDetailsResult>GroupDetailList>member"` - IsTruncated aws.BooleanValue `query:"IsTruncated" xml:"GetAccountAuthorizationDetailsResult>IsTruncated"` - Marker aws.StringValue `query:"Marker" xml:"GetAccountAuthorizationDetailsResult>Marker"` - RoleDetailList []RoleDetail `query:"RoleDetailList.member" xml:"GetAccountAuthorizationDetailsResult>RoleDetailList>member"` - UserDetailList []UserDetail `query:"UserDetailList.member" xml:"GetAccountAuthorizationDetailsResult>UserDetailList>member"` -} - -// GetAccountPasswordPolicyResponse is undocumented. -type GetAccountPasswordPolicyResponse struct { - PasswordPolicy *PasswordPolicy `query:"PasswordPolicy" xml:"GetAccountPasswordPolicyResult>PasswordPolicy"` -} - -// GetAccountSummaryResponse is undocumented. -type GetAccountSummaryResponse struct { - SummaryMap SummaryMapType `query:"SummaryMap.entry" xml:"GetAccountSummaryResult>SummaryMap>entry"` -} - -// GetCredentialReportResponse is undocumented. -type GetCredentialReportResponse struct { - Content []byte `query:"Content" xml:"GetCredentialReportResult>Content"` - GeneratedTime time.Time `query:"GeneratedTime" xml:"GetCredentialReportResult>GeneratedTime"` - ReportFormat aws.StringValue `query:"ReportFormat" xml:"GetCredentialReportResult>ReportFormat"` -} - -// GetGroupPolicyRequest is undocumented. -type GetGroupPolicyRequest struct { - GroupName aws.StringValue `query:"GroupName" xml:"GroupName"` - PolicyName aws.StringValue `query:"PolicyName" xml:"PolicyName"` -} - -// GetGroupPolicyResponse is undocumented. -type GetGroupPolicyResponse struct { - GroupName aws.StringValue `query:"GroupName" xml:"GetGroupPolicyResult>GroupName"` - PolicyDocument aws.StringValue `query:"PolicyDocument" xml:"GetGroupPolicyResult>PolicyDocument"` - PolicyName aws.StringValue `query:"PolicyName" xml:"GetGroupPolicyResult>PolicyName"` -} - -// GetGroupRequest is undocumented. -type GetGroupRequest struct { - GroupName aws.StringValue `query:"GroupName" xml:"GroupName"` - Marker aws.StringValue `query:"Marker" xml:"Marker"` - MaxItems aws.IntegerValue `query:"MaxItems" xml:"MaxItems"` -} - -// GetGroupResponse is undocumented. -type GetGroupResponse struct { - Group *Group `query:"Group" xml:"GetGroupResult>Group"` - IsTruncated aws.BooleanValue `query:"IsTruncated" xml:"GetGroupResult>IsTruncated"` - Marker aws.StringValue `query:"Marker" xml:"GetGroupResult>Marker"` - Users []User `query:"Users.member" xml:"GetGroupResult>Users>member"` -} - -// GetInstanceProfileRequest is undocumented. -type GetInstanceProfileRequest struct { - InstanceProfileName aws.StringValue `query:"InstanceProfileName" xml:"InstanceProfileName"` -} - -// GetInstanceProfileResponse is undocumented. -type GetInstanceProfileResponse struct { - InstanceProfile *InstanceProfile `query:"InstanceProfile" xml:"GetInstanceProfileResult>InstanceProfile"` -} - -// GetLoginProfileRequest is undocumented. -type GetLoginProfileRequest struct { - UserName aws.StringValue `query:"UserName" xml:"UserName"` -} - -// GetLoginProfileResponse is undocumented. -type GetLoginProfileResponse struct { - LoginProfile *LoginProfile `query:"LoginProfile" xml:"GetLoginProfileResult>LoginProfile"` -} - -// GetOpenIDConnectProviderRequest is undocumented. -type GetOpenIDConnectProviderRequest struct { - OpenIDConnectProviderARN aws.StringValue `query:"OpenIDConnectProviderArn" xml:"OpenIDConnectProviderArn"` -} - -// GetOpenIDConnectProviderResponse is undocumented. -type GetOpenIDConnectProviderResponse struct { - ClientIDList []string `query:"ClientIDList.member" xml:"GetOpenIDConnectProviderResult>ClientIDList>member"` - CreateDate time.Time `query:"CreateDate" xml:"GetOpenIDConnectProviderResult>CreateDate"` - ThumbprintList []string `query:"ThumbprintList.member" xml:"GetOpenIDConnectProviderResult>ThumbprintList>member"` - URL aws.StringValue `query:"Url" xml:"GetOpenIDConnectProviderResult>Url"` -} - -// GetRolePolicyRequest is undocumented. -type GetRolePolicyRequest struct { - PolicyName aws.StringValue `query:"PolicyName" xml:"PolicyName"` - RoleName aws.StringValue `query:"RoleName" xml:"RoleName"` -} - -// GetRolePolicyResponse is undocumented. -type GetRolePolicyResponse struct { - PolicyDocument aws.StringValue `query:"PolicyDocument" xml:"GetRolePolicyResult>PolicyDocument"` - PolicyName aws.StringValue `query:"PolicyName" xml:"GetRolePolicyResult>PolicyName"` - RoleName aws.StringValue `query:"RoleName" xml:"GetRolePolicyResult>RoleName"` -} - -// GetRoleRequest is undocumented. -type GetRoleRequest struct { - RoleName aws.StringValue `query:"RoleName" xml:"RoleName"` -} - -// GetRoleResponse is undocumented. -type GetRoleResponse struct { - Role *Role `query:"Role" xml:"GetRoleResult>Role"` -} - -// GetSAMLProviderRequest is undocumented. -type GetSAMLProviderRequest struct { - SAMLProviderARN aws.StringValue `query:"SAMLProviderArn" xml:"SAMLProviderArn"` -} - -// GetSAMLProviderResponse is undocumented. -type GetSAMLProviderResponse struct { - CreateDate time.Time `query:"CreateDate" xml:"GetSAMLProviderResult>CreateDate"` - SAMLMetadataDocument aws.StringValue `query:"SAMLMetadataDocument" xml:"GetSAMLProviderResult>SAMLMetadataDocument"` - ValidUntil time.Time `query:"ValidUntil" xml:"GetSAMLProviderResult>ValidUntil"` -} - -// GetServerCertificateRequest is undocumented. -type GetServerCertificateRequest struct { - ServerCertificateName aws.StringValue `query:"ServerCertificateName" xml:"ServerCertificateName"` -} - -// GetServerCertificateResponse is undocumented. -type GetServerCertificateResponse struct { - ServerCertificate *ServerCertificate `query:"ServerCertificate" xml:"GetServerCertificateResult>ServerCertificate"` -} - -// GetUserPolicyRequest is undocumented. -type GetUserPolicyRequest struct { - PolicyName aws.StringValue `query:"PolicyName" xml:"PolicyName"` - UserName aws.StringValue `query:"UserName" xml:"UserName"` -} - -// GetUserPolicyResponse is undocumented. -type GetUserPolicyResponse struct { - PolicyDocument aws.StringValue `query:"PolicyDocument" xml:"GetUserPolicyResult>PolicyDocument"` - PolicyName aws.StringValue `query:"PolicyName" xml:"GetUserPolicyResult>PolicyName"` - UserName aws.StringValue `query:"UserName" xml:"GetUserPolicyResult>UserName"` -} - -// GetUserRequest is undocumented. -type GetUserRequest struct { - UserName aws.StringValue `query:"UserName" xml:"UserName"` -} - -// GetUserResponse is undocumented. -type GetUserResponse struct { - User *User `query:"User" xml:"GetUserResult>User"` -} - -// Group is undocumented. -type Group struct { - ARN aws.StringValue `query:"Arn" xml:"Arn"` - CreateDate time.Time `query:"CreateDate" xml:"CreateDate"` - GroupID aws.StringValue `query:"GroupId" xml:"GroupId"` - GroupName aws.StringValue `query:"GroupName" xml:"GroupName"` - Path aws.StringValue `query:"Path" xml:"Path"` -} - -// GroupDetail is undocumented. -type GroupDetail struct { - ARN aws.StringValue `query:"Arn" xml:"Arn"` - CreateDate time.Time `query:"CreateDate" xml:"CreateDate"` - GroupID aws.StringValue `query:"GroupId" xml:"GroupId"` - GroupName aws.StringValue `query:"GroupName" xml:"GroupName"` - GroupPolicyList []PolicyDetail `query:"GroupPolicyList.member" xml:"GroupPolicyList>member"` - Path aws.StringValue `query:"Path" xml:"Path"` -} - -// InstanceProfile is undocumented. -type InstanceProfile struct { - ARN aws.StringValue `query:"Arn" xml:"Arn"` - CreateDate time.Time `query:"CreateDate" xml:"CreateDate"` - InstanceProfileID aws.StringValue `query:"InstanceProfileId" xml:"InstanceProfileId"` - InstanceProfileName aws.StringValue `query:"InstanceProfileName" xml:"InstanceProfileName"` - Path aws.StringValue `query:"Path" xml:"Path"` - Roles []Role `query:"Roles.member" xml:"Roles>member"` -} - -// ListAccessKeysRequest is undocumented. -type ListAccessKeysRequest struct { - Marker aws.StringValue `query:"Marker" xml:"Marker"` - MaxItems aws.IntegerValue `query:"MaxItems" xml:"MaxItems"` - UserName aws.StringValue `query:"UserName" xml:"UserName"` -} - -// ListAccessKeysResponse is undocumented. -type ListAccessKeysResponse struct { - AccessKeyMetadata []AccessKeyMetadata `query:"AccessKeyMetadata.member" xml:"ListAccessKeysResult>AccessKeyMetadata>member"` - IsTruncated aws.BooleanValue `query:"IsTruncated" xml:"ListAccessKeysResult>IsTruncated"` - Marker aws.StringValue `query:"Marker" xml:"ListAccessKeysResult>Marker"` -} - -// ListAccountAliasesRequest is undocumented. -type ListAccountAliasesRequest struct { - Marker aws.StringValue `query:"Marker" xml:"Marker"` - MaxItems aws.IntegerValue `query:"MaxItems" xml:"MaxItems"` -} - -// ListAccountAliasesResponse is undocumented. -type ListAccountAliasesResponse struct { - AccountAliases []string `query:"AccountAliases.member" xml:"ListAccountAliasesResult>AccountAliases>member"` - IsTruncated aws.BooleanValue `query:"IsTruncated" xml:"ListAccountAliasesResult>IsTruncated"` - Marker aws.StringValue `query:"Marker" xml:"ListAccountAliasesResult>Marker"` -} - -// ListGroupPoliciesRequest is undocumented. -type ListGroupPoliciesRequest struct { - GroupName aws.StringValue `query:"GroupName" xml:"GroupName"` - Marker aws.StringValue `query:"Marker" xml:"Marker"` - MaxItems aws.IntegerValue `query:"MaxItems" xml:"MaxItems"` -} - -// ListGroupPoliciesResponse is undocumented. -type ListGroupPoliciesResponse struct { - IsTruncated aws.BooleanValue `query:"IsTruncated" xml:"ListGroupPoliciesResult>IsTruncated"` - Marker aws.StringValue `query:"Marker" xml:"ListGroupPoliciesResult>Marker"` - PolicyNames []string `query:"PolicyNames.member" xml:"ListGroupPoliciesResult>PolicyNames>member"` -} - -// ListGroupsForUserRequest is undocumented. -type ListGroupsForUserRequest struct { - Marker aws.StringValue `query:"Marker" xml:"Marker"` - MaxItems aws.IntegerValue `query:"MaxItems" xml:"MaxItems"` - UserName aws.StringValue `query:"UserName" xml:"UserName"` -} - -// ListGroupsForUserResponse is undocumented. -type ListGroupsForUserResponse struct { - Groups []Group `query:"Groups.member" xml:"ListGroupsForUserResult>Groups>member"` - IsTruncated aws.BooleanValue `query:"IsTruncated" xml:"ListGroupsForUserResult>IsTruncated"` - Marker aws.StringValue `query:"Marker" xml:"ListGroupsForUserResult>Marker"` -} - -// ListGroupsRequest is undocumented. -type ListGroupsRequest struct { - Marker aws.StringValue `query:"Marker" xml:"Marker"` - MaxItems aws.IntegerValue `query:"MaxItems" xml:"MaxItems"` - PathPrefix aws.StringValue `query:"PathPrefix" xml:"PathPrefix"` -} - -// ListGroupsResponse is undocumented. -type ListGroupsResponse struct { - Groups []Group `query:"Groups.member" xml:"ListGroupsResult>Groups>member"` - IsTruncated aws.BooleanValue `query:"IsTruncated" xml:"ListGroupsResult>IsTruncated"` - Marker aws.StringValue `query:"Marker" xml:"ListGroupsResult>Marker"` -} - -// ListInstanceProfilesForRoleRequest is undocumented. -type ListInstanceProfilesForRoleRequest struct { - Marker aws.StringValue `query:"Marker" xml:"Marker"` - MaxItems aws.IntegerValue `query:"MaxItems" xml:"MaxItems"` - RoleName aws.StringValue `query:"RoleName" xml:"RoleName"` -} - -// ListInstanceProfilesForRoleResponse is undocumented. -type ListInstanceProfilesForRoleResponse struct { - InstanceProfiles []InstanceProfile `query:"InstanceProfiles.member" xml:"ListInstanceProfilesForRoleResult>InstanceProfiles>member"` - IsTruncated aws.BooleanValue `query:"IsTruncated" xml:"ListInstanceProfilesForRoleResult>IsTruncated"` - Marker aws.StringValue `query:"Marker" xml:"ListInstanceProfilesForRoleResult>Marker"` -} - -// ListInstanceProfilesRequest is undocumented. -type ListInstanceProfilesRequest struct { - Marker aws.StringValue `query:"Marker" xml:"Marker"` - MaxItems aws.IntegerValue `query:"MaxItems" xml:"MaxItems"` - PathPrefix aws.StringValue `query:"PathPrefix" xml:"PathPrefix"` -} - -// ListInstanceProfilesResponse is undocumented. -type ListInstanceProfilesResponse struct { - InstanceProfiles []InstanceProfile `query:"InstanceProfiles.member" xml:"ListInstanceProfilesResult>InstanceProfiles>member"` - IsTruncated aws.BooleanValue `query:"IsTruncated" xml:"ListInstanceProfilesResult>IsTruncated"` - Marker aws.StringValue `query:"Marker" xml:"ListInstanceProfilesResult>Marker"` -} - -// ListMFADevicesRequest is undocumented. -type ListMFADevicesRequest struct { - Marker aws.StringValue `query:"Marker" xml:"Marker"` - MaxItems aws.IntegerValue `query:"MaxItems" xml:"MaxItems"` - UserName aws.StringValue `query:"UserName" xml:"UserName"` -} - -// ListMFADevicesResponse is undocumented. -type ListMFADevicesResponse struct { - IsTruncated aws.BooleanValue `query:"IsTruncated" xml:"ListMFADevicesResult>IsTruncated"` - MFADevices []MFADevice `query:"MFADevices.member" xml:"ListMFADevicesResult>MFADevices>member"` - Marker aws.StringValue `query:"Marker" xml:"ListMFADevicesResult>Marker"` -} - -// ListOpenIDConnectProvidersRequest is undocumented. -type ListOpenIDConnectProvidersRequest struct { -} - -// ListOpenIDConnectProvidersResponse is undocumented. -type ListOpenIDConnectProvidersResponse struct { - OpenIDConnectProviderList []OpenIDConnectProviderListEntry `query:"OpenIDConnectProviderList.member" xml:"ListOpenIDConnectProvidersResult>OpenIDConnectProviderList>member"` -} - -// ListRolePoliciesRequest is undocumented. -type ListRolePoliciesRequest struct { - Marker aws.StringValue `query:"Marker" xml:"Marker"` - MaxItems aws.IntegerValue `query:"MaxItems" xml:"MaxItems"` - RoleName aws.StringValue `query:"RoleName" xml:"RoleName"` -} - -// ListRolePoliciesResponse is undocumented. -type ListRolePoliciesResponse struct { - IsTruncated aws.BooleanValue `query:"IsTruncated" xml:"ListRolePoliciesResult>IsTruncated"` - Marker aws.StringValue `query:"Marker" xml:"ListRolePoliciesResult>Marker"` - PolicyNames []string `query:"PolicyNames.member" xml:"ListRolePoliciesResult>PolicyNames>member"` -} - -// ListRolesRequest is undocumented. -type ListRolesRequest struct { - Marker aws.StringValue `query:"Marker" xml:"Marker"` - MaxItems aws.IntegerValue `query:"MaxItems" xml:"MaxItems"` - PathPrefix aws.StringValue `query:"PathPrefix" xml:"PathPrefix"` -} - -// ListRolesResponse is undocumented. -type ListRolesResponse struct { - IsTruncated aws.BooleanValue `query:"IsTruncated" xml:"ListRolesResult>IsTruncated"` - Marker aws.StringValue `query:"Marker" xml:"ListRolesResult>Marker"` - Roles []Role `query:"Roles.member" xml:"ListRolesResult>Roles>member"` -} - -// ListSAMLProvidersRequest is undocumented. -type ListSAMLProvidersRequest struct { -} - -// ListSAMLProvidersResponse is undocumented. -type ListSAMLProvidersResponse struct { - SAMLProviderList []SAMLProviderListEntry `query:"SAMLProviderList.member" xml:"ListSAMLProvidersResult>SAMLProviderList>member"` -} - -// ListServerCertificatesRequest is undocumented. -type ListServerCertificatesRequest struct { - Marker aws.StringValue `query:"Marker" xml:"Marker"` - MaxItems aws.IntegerValue `query:"MaxItems" xml:"MaxItems"` - PathPrefix aws.StringValue `query:"PathPrefix" xml:"PathPrefix"` -} - -// ListServerCertificatesResponse is undocumented. -type ListServerCertificatesResponse struct { - IsTruncated aws.BooleanValue `query:"IsTruncated" xml:"ListServerCertificatesResult>IsTruncated"` - Marker aws.StringValue `query:"Marker" xml:"ListServerCertificatesResult>Marker"` - ServerCertificateMetadataList []ServerCertificateMetadata `query:"ServerCertificateMetadataList.member" xml:"ListServerCertificatesResult>ServerCertificateMetadataList>member"` -} - -// ListSigningCertificatesRequest is undocumented. -type ListSigningCertificatesRequest struct { - Marker aws.StringValue `query:"Marker" xml:"Marker"` - MaxItems aws.IntegerValue `query:"MaxItems" xml:"MaxItems"` - UserName aws.StringValue `query:"UserName" xml:"UserName"` -} - -// ListSigningCertificatesResponse is undocumented. -type ListSigningCertificatesResponse struct { - Certificates []SigningCertificate `query:"Certificates.member" xml:"ListSigningCertificatesResult>Certificates>member"` - IsTruncated aws.BooleanValue `query:"IsTruncated" xml:"ListSigningCertificatesResult>IsTruncated"` - Marker aws.StringValue `query:"Marker" xml:"ListSigningCertificatesResult>Marker"` -} - -// ListUserPoliciesRequest is undocumented. -type ListUserPoliciesRequest struct { - Marker aws.StringValue `query:"Marker" xml:"Marker"` - MaxItems aws.IntegerValue `query:"MaxItems" xml:"MaxItems"` - UserName aws.StringValue `query:"UserName" xml:"UserName"` -} - -// ListUserPoliciesResponse is undocumented. -type ListUserPoliciesResponse struct { - IsTruncated aws.BooleanValue `query:"IsTruncated" xml:"ListUserPoliciesResult>IsTruncated"` - Marker aws.StringValue `query:"Marker" xml:"ListUserPoliciesResult>Marker"` - PolicyNames []string `query:"PolicyNames.member" xml:"ListUserPoliciesResult>PolicyNames>member"` -} - -// ListUsersRequest is undocumented. -type ListUsersRequest struct { - Marker aws.StringValue `query:"Marker" xml:"Marker"` - MaxItems aws.IntegerValue `query:"MaxItems" xml:"MaxItems"` - PathPrefix aws.StringValue `query:"PathPrefix" xml:"PathPrefix"` -} - -// ListUsersResponse is undocumented. -type ListUsersResponse struct { - IsTruncated aws.BooleanValue `query:"IsTruncated" xml:"ListUsersResult>IsTruncated"` - Marker aws.StringValue `query:"Marker" xml:"ListUsersResult>Marker"` - Users []User `query:"Users.member" xml:"ListUsersResult>Users>member"` -} - -// ListVirtualMFADevicesRequest is undocumented. -type ListVirtualMFADevicesRequest struct { - AssignmentStatus aws.StringValue `query:"AssignmentStatus" xml:"AssignmentStatus"` - Marker aws.StringValue `query:"Marker" xml:"Marker"` - MaxItems aws.IntegerValue `query:"MaxItems" xml:"MaxItems"` -} - -// ListVirtualMFADevicesResponse is undocumented. -type ListVirtualMFADevicesResponse struct { - IsTruncated aws.BooleanValue `query:"IsTruncated" xml:"ListVirtualMFADevicesResult>IsTruncated"` - Marker aws.StringValue `query:"Marker" xml:"ListVirtualMFADevicesResult>Marker"` - VirtualMFADevices []VirtualMFADevice `query:"VirtualMFADevices.member" xml:"ListVirtualMFADevicesResult>VirtualMFADevices>member"` -} - -// LoginProfile is undocumented. -type LoginProfile struct { - CreateDate time.Time `query:"CreateDate" xml:"CreateDate"` - PasswordResetRequired aws.BooleanValue `query:"PasswordResetRequired" xml:"PasswordResetRequired"` - UserName aws.StringValue `query:"UserName" xml:"UserName"` -} - -// MFADevice is undocumented. -type MFADevice struct { - EnableDate time.Time `query:"EnableDate" xml:"EnableDate"` - SerialNumber aws.StringValue `query:"SerialNumber" xml:"SerialNumber"` - UserName aws.StringValue `query:"UserName" xml:"UserName"` -} - -// OpenIDConnectProviderListEntry is undocumented. -type OpenIDConnectProviderListEntry struct { - ARN aws.StringValue `query:"Arn" xml:"Arn"` -} - -// PasswordPolicy is undocumented. -type PasswordPolicy struct { - AllowUsersToChangePassword aws.BooleanValue `query:"AllowUsersToChangePassword" xml:"AllowUsersToChangePassword"` - ExpirePasswords aws.BooleanValue `query:"ExpirePasswords" xml:"ExpirePasswords"` - HardExpiry aws.BooleanValue `query:"HardExpiry" xml:"HardExpiry"` - MaxPasswordAge aws.IntegerValue `query:"MaxPasswordAge" xml:"MaxPasswordAge"` - MinimumPasswordLength aws.IntegerValue `query:"MinimumPasswordLength" xml:"MinimumPasswordLength"` - PasswordReusePrevention aws.IntegerValue `query:"PasswordReusePrevention" xml:"PasswordReusePrevention"` - RequireLowercaseCharacters aws.BooleanValue `query:"RequireLowercaseCharacters" xml:"RequireLowercaseCharacters"` - RequireNumbers aws.BooleanValue `query:"RequireNumbers" xml:"RequireNumbers"` - RequireSymbols aws.BooleanValue `query:"RequireSymbols" xml:"RequireSymbols"` - RequireUppercaseCharacters aws.BooleanValue `query:"RequireUppercaseCharacters" xml:"RequireUppercaseCharacters"` -} - -// PolicyDetail is undocumented. -type PolicyDetail struct { - PolicyDocument aws.StringValue `query:"PolicyDocument" xml:"PolicyDocument"` - PolicyName aws.StringValue `query:"PolicyName" xml:"PolicyName"` -} - -// PutGroupPolicyRequest is undocumented. -type PutGroupPolicyRequest struct { - GroupName aws.StringValue `query:"GroupName" xml:"GroupName"` - PolicyDocument aws.StringValue `query:"PolicyDocument" xml:"PolicyDocument"` - PolicyName aws.StringValue `query:"PolicyName" xml:"PolicyName"` -} - -// PutRolePolicyRequest is undocumented. -type PutRolePolicyRequest struct { - PolicyDocument aws.StringValue `query:"PolicyDocument" xml:"PolicyDocument"` - PolicyName aws.StringValue `query:"PolicyName" xml:"PolicyName"` - RoleName aws.StringValue `query:"RoleName" xml:"RoleName"` -} - -// PutUserPolicyRequest is undocumented. -type PutUserPolicyRequest struct { - PolicyDocument aws.StringValue `query:"PolicyDocument" xml:"PolicyDocument"` - PolicyName aws.StringValue `query:"PolicyName" xml:"PolicyName"` - UserName aws.StringValue `query:"UserName" xml:"UserName"` -} - -// RemoveClientIDFromOpenIDConnectProviderRequest is undocumented. -type RemoveClientIDFromOpenIDConnectProviderRequest struct { - ClientID aws.StringValue `query:"ClientID" xml:"ClientID"` - OpenIDConnectProviderARN aws.StringValue `query:"OpenIDConnectProviderArn" xml:"OpenIDConnectProviderArn"` -} - -// RemoveRoleFromInstanceProfileRequest is undocumented. -type RemoveRoleFromInstanceProfileRequest struct { - InstanceProfileName aws.StringValue `query:"InstanceProfileName" xml:"InstanceProfileName"` - RoleName aws.StringValue `query:"RoleName" xml:"RoleName"` -} - -// RemoveUserFromGroupRequest is undocumented. -type RemoveUserFromGroupRequest struct { - GroupName aws.StringValue `query:"GroupName" xml:"GroupName"` - UserName aws.StringValue `query:"UserName" xml:"UserName"` -} - -// Possible values for IAM. -const ( - ReportFormatTypeTextCSV = "text/csv" -) - -// Possible values for IAM. -const ( - ReportStateTypeComplete = "COMPLETE" - ReportStateTypeInprogress = "INPROGRESS" - ReportStateTypeStarted = "STARTED" -) - -// ResyncMFADeviceRequest is undocumented. -type ResyncMFADeviceRequest struct { - AuthenticationCode1 aws.StringValue `query:"AuthenticationCode1" xml:"AuthenticationCode1"` - AuthenticationCode2 aws.StringValue `query:"AuthenticationCode2" xml:"AuthenticationCode2"` - SerialNumber aws.StringValue `query:"SerialNumber" xml:"SerialNumber"` - UserName aws.StringValue `query:"UserName" xml:"UserName"` -} - -// Role is undocumented. -type Role struct { - ARN aws.StringValue `query:"Arn" xml:"Arn"` - AssumeRolePolicyDocument aws.StringValue `query:"AssumeRolePolicyDocument" xml:"AssumeRolePolicyDocument"` - CreateDate time.Time `query:"CreateDate" xml:"CreateDate"` - Path aws.StringValue `query:"Path" xml:"Path"` - RoleID aws.StringValue `query:"RoleId" xml:"RoleId"` - RoleName aws.StringValue `query:"RoleName" xml:"RoleName"` -} - -// RoleDetail is undocumented. -type RoleDetail struct { - ARN aws.StringValue `query:"Arn" xml:"Arn"` - AssumeRolePolicyDocument aws.StringValue `query:"AssumeRolePolicyDocument" xml:"AssumeRolePolicyDocument"` - CreateDate time.Time `query:"CreateDate" xml:"CreateDate"` - InstanceProfileList []InstanceProfile `query:"InstanceProfileList.member" xml:"InstanceProfileList>member"` - Path aws.StringValue `query:"Path" xml:"Path"` - RoleID aws.StringValue `query:"RoleId" xml:"RoleId"` - RoleName aws.StringValue `query:"RoleName" xml:"RoleName"` - RolePolicyList []PolicyDetail `query:"RolePolicyList.member" xml:"RolePolicyList>member"` -} - -// SAMLProviderListEntry is undocumented. -type SAMLProviderListEntry struct { - ARN aws.StringValue `query:"Arn" xml:"Arn"` - CreateDate time.Time `query:"CreateDate" xml:"CreateDate"` - ValidUntil time.Time `query:"ValidUntil" xml:"ValidUntil"` -} - -// ServerCertificate is undocumented. -type ServerCertificate struct { - CertificateBody aws.StringValue `query:"CertificateBody" xml:"CertificateBody"` - CertificateChain aws.StringValue `query:"CertificateChain" xml:"CertificateChain"` - ServerCertificateMetadata *ServerCertificateMetadata `query:"ServerCertificateMetadata" xml:"ServerCertificateMetadata"` -} - -// ServerCertificateMetadata is undocumented. -type ServerCertificateMetadata struct { - ARN aws.StringValue `query:"Arn" xml:"Arn"` - Expiration time.Time `query:"Expiration" xml:"Expiration"` - Path aws.StringValue `query:"Path" xml:"Path"` - ServerCertificateID aws.StringValue `query:"ServerCertificateId" xml:"ServerCertificateId"` - ServerCertificateName aws.StringValue `query:"ServerCertificateName" xml:"ServerCertificateName"` - UploadDate time.Time `query:"UploadDate" xml:"UploadDate"` -} - -// SigningCertificate is undocumented. -type SigningCertificate struct { - CertificateBody aws.StringValue `query:"CertificateBody" xml:"CertificateBody"` - CertificateID aws.StringValue `query:"CertificateId" xml:"CertificateId"` - Status aws.StringValue `query:"Status" xml:"Status"` - UploadDate time.Time `query:"UploadDate" xml:"UploadDate"` - UserName aws.StringValue `query:"UserName" xml:"UserName"` -} - -// UpdateAccessKeyRequest is undocumented. -type UpdateAccessKeyRequest struct { - AccessKeyID aws.StringValue `query:"AccessKeyId" xml:"AccessKeyId"` - Status aws.StringValue `query:"Status" xml:"Status"` - UserName aws.StringValue `query:"UserName" xml:"UserName"` -} - -// UpdateAccountPasswordPolicyRequest is undocumented. -type UpdateAccountPasswordPolicyRequest struct { - AllowUsersToChangePassword aws.BooleanValue `query:"AllowUsersToChangePassword" xml:"AllowUsersToChangePassword"` - HardExpiry aws.BooleanValue `query:"HardExpiry" xml:"HardExpiry"` - MaxPasswordAge aws.IntegerValue `query:"MaxPasswordAge" xml:"MaxPasswordAge"` - MinimumPasswordLength aws.IntegerValue `query:"MinimumPasswordLength" xml:"MinimumPasswordLength"` - PasswordReusePrevention aws.IntegerValue `query:"PasswordReusePrevention" xml:"PasswordReusePrevention"` - RequireLowercaseCharacters aws.BooleanValue `query:"RequireLowercaseCharacters" xml:"RequireLowercaseCharacters"` - RequireNumbers aws.BooleanValue `query:"RequireNumbers" xml:"RequireNumbers"` - RequireSymbols aws.BooleanValue `query:"RequireSymbols" xml:"RequireSymbols"` - RequireUppercaseCharacters aws.BooleanValue `query:"RequireUppercaseCharacters" xml:"RequireUppercaseCharacters"` -} - -// UpdateAssumeRolePolicyRequest is undocumented. -type UpdateAssumeRolePolicyRequest struct { - PolicyDocument aws.StringValue `query:"PolicyDocument" xml:"PolicyDocument"` - RoleName aws.StringValue `query:"RoleName" xml:"RoleName"` -} - -// UpdateGroupRequest is undocumented. -type UpdateGroupRequest struct { - GroupName aws.StringValue `query:"GroupName" xml:"GroupName"` - NewGroupName aws.StringValue `query:"NewGroupName" xml:"NewGroupName"` - NewPath aws.StringValue `query:"NewPath" xml:"NewPath"` -} - -// UpdateLoginProfileRequest is undocumented. -type UpdateLoginProfileRequest struct { - Password aws.StringValue `query:"Password" xml:"Password"` - PasswordResetRequired aws.BooleanValue `query:"PasswordResetRequired" xml:"PasswordResetRequired"` - UserName aws.StringValue `query:"UserName" xml:"UserName"` -} - -// UpdateOpenIDConnectProviderThumbprintRequest is undocumented. -type UpdateOpenIDConnectProviderThumbprintRequest struct { - OpenIDConnectProviderARN aws.StringValue `query:"OpenIDConnectProviderArn" xml:"OpenIDConnectProviderArn"` - ThumbprintList []string `query:"ThumbprintList.member" xml:"ThumbprintList>member"` -} - -// UpdateSAMLProviderRequest is undocumented. -type UpdateSAMLProviderRequest struct { - SAMLMetadataDocument aws.StringValue `query:"SAMLMetadataDocument" xml:"SAMLMetadataDocument"` - SAMLProviderARN aws.StringValue `query:"SAMLProviderArn" xml:"SAMLProviderArn"` -} - -// UpdateSAMLProviderResponse is undocumented. -type UpdateSAMLProviderResponse struct { - SAMLProviderARN aws.StringValue `query:"SAMLProviderArn" xml:"UpdateSAMLProviderResult>SAMLProviderArn"` -} - -// UpdateServerCertificateRequest is undocumented. -type UpdateServerCertificateRequest struct { - NewPath aws.StringValue `query:"NewPath" xml:"NewPath"` - NewServerCertificateName aws.StringValue `query:"NewServerCertificateName" xml:"NewServerCertificateName"` - ServerCertificateName aws.StringValue `query:"ServerCertificateName" xml:"ServerCertificateName"` -} - -// UpdateSigningCertificateRequest is undocumented. -type UpdateSigningCertificateRequest struct { - CertificateID aws.StringValue `query:"CertificateId" xml:"CertificateId"` - Status aws.StringValue `query:"Status" xml:"Status"` - UserName aws.StringValue `query:"UserName" xml:"UserName"` -} - -// UpdateUserRequest is undocumented. -type UpdateUserRequest struct { - NewPath aws.StringValue `query:"NewPath" xml:"NewPath"` - NewUserName aws.StringValue `query:"NewUserName" xml:"NewUserName"` - UserName aws.StringValue `query:"UserName" xml:"UserName"` -} - -// UploadServerCertificateRequest is undocumented. -type UploadServerCertificateRequest struct { - CertificateBody aws.StringValue `query:"CertificateBody" xml:"CertificateBody"` - CertificateChain aws.StringValue `query:"CertificateChain" xml:"CertificateChain"` - Path aws.StringValue `query:"Path" xml:"Path"` - PrivateKey aws.StringValue `query:"PrivateKey" xml:"PrivateKey"` - ServerCertificateName aws.StringValue `query:"ServerCertificateName" xml:"ServerCertificateName"` -} - -// UploadServerCertificateResponse is undocumented. -type UploadServerCertificateResponse struct { - ServerCertificateMetadata *ServerCertificateMetadata `query:"ServerCertificateMetadata" xml:"UploadServerCertificateResult>ServerCertificateMetadata"` -} - -// UploadSigningCertificateRequest is undocumented. -type UploadSigningCertificateRequest struct { - CertificateBody aws.StringValue `query:"CertificateBody" xml:"CertificateBody"` - UserName aws.StringValue `query:"UserName" xml:"UserName"` -} - -// UploadSigningCertificateResponse is undocumented. -type UploadSigningCertificateResponse struct { - Certificate *SigningCertificate `query:"Certificate" xml:"UploadSigningCertificateResult>Certificate"` -} - -// User is undocumented. -type User struct { - ARN aws.StringValue `query:"Arn" xml:"Arn"` - CreateDate time.Time `query:"CreateDate" xml:"CreateDate"` - PasswordLastUsed time.Time `query:"PasswordLastUsed" xml:"PasswordLastUsed"` - Path aws.StringValue `query:"Path" xml:"Path"` - UserID aws.StringValue `query:"UserId" xml:"UserId"` - UserName aws.StringValue `query:"UserName" xml:"UserName"` -} - -// UserDetail is undocumented. -type UserDetail struct { - ARN aws.StringValue `query:"Arn" xml:"Arn"` - CreateDate time.Time `query:"CreateDate" xml:"CreateDate"` - GroupList []string `query:"GroupList.member" xml:"GroupList>member"` - Path aws.StringValue `query:"Path" xml:"Path"` - UserID aws.StringValue `query:"UserId" xml:"UserId"` - UserName aws.StringValue `query:"UserName" xml:"UserName"` - UserPolicyList []PolicyDetail `query:"UserPolicyList.member" xml:"UserPolicyList>member"` -} - -// VirtualMFADevice is undocumented. -type VirtualMFADevice struct { - Base32StringSeed []byte `query:"Base32StringSeed" xml:"Base32StringSeed"` - EnableDate time.Time `query:"EnableDate" xml:"EnableDate"` - QRCodePNG []byte `query:"QRCodePNG" xml:"QRCodePNG"` - SerialNumber aws.StringValue `query:"SerialNumber" xml:"SerialNumber"` - User *User `query:"User" xml:"User"` -} - -// Possible values for IAM. -const ( - AssignmentStatusTypeAny = "Any" - AssignmentStatusTypeAssigned = "Assigned" - AssignmentStatusTypeUnassigned = "Unassigned" -) - -// Possible values for IAM. -const ( - StatusTypeActive = "Active" - StatusTypeInactive = "Inactive" -) - -// Possible values for IAM. -const ( - SummaryKeyTypeAccessKeysPerUserQuota = "AccessKeysPerUserQuota" - SummaryKeyTypeAccountMFAenabled = "AccountMFAEnabled" - SummaryKeyTypeGroupPolicySizeQuota = "GroupPolicySizeQuota" - SummaryKeyTypeGroups = "Groups" - SummaryKeyTypeGroupsPerUserQuota = "GroupsPerUserQuota" - SummaryKeyTypeGroupsQuota = "GroupsQuota" - SummaryKeyTypeMFAdevices = "MFADevices" - SummaryKeyTypeMFAdevicesInUse = "MFADevicesInUse" - SummaryKeyTypeServerCertificates = "ServerCertificates" - SummaryKeyTypeServerCertificatesQuota = "ServerCertificatesQuota" - SummaryKeyTypeSigningCertificatesPerUserQuota = "SigningCertificatesPerUserQuota" - SummaryKeyTypeUserPolicySizeQuota = "UserPolicySizeQuota" - SummaryKeyTypeUsers = "Users" - SummaryKeyTypeUsersQuota = "UsersQuota" -) - -type SummaryMapType map[string]int - -// UnmarshalXML implements xml.UnmarshalXML interface for map -func (m *SummaryMapType) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error { - if *m == nil { - (*m) = make(SummaryMapType) - } - for { - var e struct { - Key string `xml:"key"` - Value int `xml:"value"` - } - err := d.DecodeElement(&e, &start) - if err != nil && err != io.EOF { - return err - } - if err == io.EOF { - break - } - (*m)[e.Key] = e.Value - } - return nil -} - -// CreateAccessKeyResult is a wrapper for CreateAccessKeyResponse. -type CreateAccessKeyResult struct { - AccessKey *AccessKey `query:"AccessKey" xml:"CreateAccessKeyResult>AccessKey"` -} - -// CreateGroupResult is a wrapper for CreateGroupResponse. -type CreateGroupResult struct { - Group *Group `query:"Group" xml:"CreateGroupResult>Group"` -} - -// CreateInstanceProfileResult is a wrapper for CreateInstanceProfileResponse. -type CreateInstanceProfileResult struct { - InstanceProfile *InstanceProfile `query:"InstanceProfile" xml:"CreateInstanceProfileResult>InstanceProfile"` -} - -// CreateLoginProfileResult is a wrapper for CreateLoginProfileResponse. -type CreateLoginProfileResult struct { - LoginProfile *LoginProfile `query:"LoginProfile" xml:"CreateLoginProfileResult>LoginProfile"` -} - -// CreateOpenIDConnectProviderResult is a wrapper for CreateOpenIDConnectProviderResponse. -type CreateOpenIDConnectProviderResult struct { - OpenIDConnectProviderARN aws.StringValue `query:"OpenIDConnectProviderArn" xml:"CreateOpenIDConnectProviderResult>OpenIDConnectProviderArn"` -} - -// CreateRoleResult is a wrapper for CreateRoleResponse. -type CreateRoleResult struct { - Role *Role `query:"Role" xml:"CreateRoleResult>Role"` -} - -// CreateSAMLProviderResult is a wrapper for CreateSAMLProviderResponse. -type CreateSAMLProviderResult struct { - SAMLProviderARN aws.StringValue `query:"SAMLProviderArn" xml:"CreateSAMLProviderResult>SAMLProviderArn"` -} - -// CreateUserResult is a wrapper for CreateUserResponse. -type CreateUserResult struct { - User *User `query:"User" xml:"CreateUserResult>User"` -} - -// CreateVirtualMFADeviceResult is a wrapper for CreateVirtualMFADeviceResponse. -type CreateVirtualMFADeviceResult struct { - VirtualMFADevice *VirtualMFADevice `query:"VirtualMFADevice" xml:"CreateVirtualMFADeviceResult>VirtualMFADevice"` -} - -// GenerateCredentialReportResult is a wrapper for GenerateCredentialReportResponse. -type GenerateCredentialReportResult struct { - Description aws.StringValue `query:"Description" xml:"GenerateCredentialReportResult>Description"` - State aws.StringValue `query:"State" xml:"GenerateCredentialReportResult>State"` -} - -// GetAccountAuthorizationDetailsResult is a wrapper for GetAccountAuthorizationDetailsResponse. -type GetAccountAuthorizationDetailsResult struct { - GroupDetailList []GroupDetail `query:"GroupDetailList.member" xml:"GetAccountAuthorizationDetailsResult>GroupDetailList>member"` - IsTruncated aws.BooleanValue `query:"IsTruncated" xml:"GetAccountAuthorizationDetailsResult>IsTruncated"` - Marker aws.StringValue `query:"Marker" xml:"GetAccountAuthorizationDetailsResult>Marker"` - RoleDetailList []RoleDetail `query:"RoleDetailList.member" xml:"GetAccountAuthorizationDetailsResult>RoleDetailList>member"` - UserDetailList []UserDetail `query:"UserDetailList.member" xml:"GetAccountAuthorizationDetailsResult>UserDetailList>member"` -} - -// GetAccountPasswordPolicyResult is a wrapper for GetAccountPasswordPolicyResponse. -type GetAccountPasswordPolicyResult struct { - PasswordPolicy *PasswordPolicy `query:"PasswordPolicy" xml:"GetAccountPasswordPolicyResult>PasswordPolicy"` -} - -// GetAccountSummaryResult is a wrapper for GetAccountSummaryResponse. -type GetAccountSummaryResult struct { - SummaryMap SummaryMapType `query:"SummaryMap.entry" xml:"GetAccountSummaryResult>SummaryMap>entry"` -} - -// GetCredentialReportResult is a wrapper for GetCredentialReportResponse. -type GetCredentialReportResult struct { - Content []byte `query:"Content" xml:"GetCredentialReportResult>Content"` - GeneratedTime time.Time `query:"GeneratedTime" xml:"GetCredentialReportResult>GeneratedTime"` - ReportFormat aws.StringValue `query:"ReportFormat" xml:"GetCredentialReportResult>ReportFormat"` -} - -// GetGroupPolicyResult is a wrapper for GetGroupPolicyResponse. -type GetGroupPolicyResult struct { - GroupName aws.StringValue `query:"GroupName" xml:"GetGroupPolicyResult>GroupName"` - PolicyDocument aws.StringValue `query:"PolicyDocument" xml:"GetGroupPolicyResult>PolicyDocument"` - PolicyName aws.StringValue `query:"PolicyName" xml:"GetGroupPolicyResult>PolicyName"` -} - -// GetGroupResult is a wrapper for GetGroupResponse. -type GetGroupResult struct { - Group *Group `query:"Group" xml:"GetGroupResult>Group"` - IsTruncated aws.BooleanValue `query:"IsTruncated" xml:"GetGroupResult>IsTruncated"` - Marker aws.StringValue `query:"Marker" xml:"GetGroupResult>Marker"` - Users []User `query:"Users.member" xml:"GetGroupResult>Users>member"` -} - -// GetInstanceProfileResult is a wrapper for GetInstanceProfileResponse. -type GetInstanceProfileResult struct { - InstanceProfile *InstanceProfile `query:"InstanceProfile" xml:"GetInstanceProfileResult>InstanceProfile"` -} - -// GetLoginProfileResult is a wrapper for GetLoginProfileResponse. -type GetLoginProfileResult struct { - LoginProfile *LoginProfile `query:"LoginProfile" xml:"GetLoginProfileResult>LoginProfile"` -} - -// GetOpenIDConnectProviderResult is a wrapper for GetOpenIDConnectProviderResponse. -type GetOpenIDConnectProviderResult struct { - ClientIDList []string `query:"ClientIDList.member" xml:"GetOpenIDConnectProviderResult>ClientIDList>member"` - CreateDate time.Time `query:"CreateDate" xml:"GetOpenIDConnectProviderResult>CreateDate"` - ThumbprintList []string `query:"ThumbprintList.member" xml:"GetOpenIDConnectProviderResult>ThumbprintList>member"` - URL aws.StringValue `query:"Url" xml:"GetOpenIDConnectProviderResult>Url"` -} - -// GetRolePolicyResult is a wrapper for GetRolePolicyResponse. -type GetRolePolicyResult struct { - PolicyDocument aws.StringValue `query:"PolicyDocument" xml:"GetRolePolicyResult>PolicyDocument"` - PolicyName aws.StringValue `query:"PolicyName" xml:"GetRolePolicyResult>PolicyName"` - RoleName aws.StringValue `query:"RoleName" xml:"GetRolePolicyResult>RoleName"` -} - -// GetRoleResult is a wrapper for GetRoleResponse. -type GetRoleResult struct { - Role *Role `query:"Role" xml:"GetRoleResult>Role"` -} - -// GetSAMLProviderResult is a wrapper for GetSAMLProviderResponse. -type GetSAMLProviderResult struct { - CreateDate time.Time `query:"CreateDate" xml:"GetSAMLProviderResult>CreateDate"` - SAMLMetadataDocument aws.StringValue `query:"SAMLMetadataDocument" xml:"GetSAMLProviderResult>SAMLMetadataDocument"` - ValidUntil time.Time `query:"ValidUntil" xml:"GetSAMLProviderResult>ValidUntil"` -} - -// GetServerCertificateResult is a wrapper for GetServerCertificateResponse. -type GetServerCertificateResult struct { - ServerCertificate *ServerCertificate `query:"ServerCertificate" xml:"GetServerCertificateResult>ServerCertificate"` -} - -// GetUserPolicyResult is a wrapper for GetUserPolicyResponse. -type GetUserPolicyResult struct { - PolicyDocument aws.StringValue `query:"PolicyDocument" xml:"GetUserPolicyResult>PolicyDocument"` - PolicyName aws.StringValue `query:"PolicyName" xml:"GetUserPolicyResult>PolicyName"` - UserName aws.StringValue `query:"UserName" xml:"GetUserPolicyResult>UserName"` -} - -// GetUserResult is a wrapper for GetUserResponse. -type GetUserResult struct { - User *User `query:"User" xml:"GetUserResult>User"` -} - -// ListAccessKeysResult is a wrapper for ListAccessKeysResponse. -type ListAccessKeysResult struct { - AccessKeyMetadata []AccessKeyMetadata `query:"AccessKeyMetadata.member" xml:"ListAccessKeysResult>AccessKeyMetadata>member"` - IsTruncated aws.BooleanValue `query:"IsTruncated" xml:"ListAccessKeysResult>IsTruncated"` - Marker aws.StringValue `query:"Marker" xml:"ListAccessKeysResult>Marker"` -} - -// ListAccountAliasesResult is a wrapper for ListAccountAliasesResponse. -type ListAccountAliasesResult struct { - AccountAliases []string `query:"AccountAliases.member" xml:"ListAccountAliasesResult>AccountAliases>member"` - IsTruncated aws.BooleanValue `query:"IsTruncated" xml:"ListAccountAliasesResult>IsTruncated"` - Marker aws.StringValue `query:"Marker" xml:"ListAccountAliasesResult>Marker"` -} - -// ListGroupPoliciesResult is a wrapper for ListGroupPoliciesResponse. -type ListGroupPoliciesResult struct { - IsTruncated aws.BooleanValue `query:"IsTruncated" xml:"ListGroupPoliciesResult>IsTruncated"` - Marker aws.StringValue `query:"Marker" xml:"ListGroupPoliciesResult>Marker"` - PolicyNames []string `query:"PolicyNames.member" xml:"ListGroupPoliciesResult>PolicyNames>member"` -} - -// ListGroupsForUserResult is a wrapper for ListGroupsForUserResponse. -type ListGroupsForUserResult struct { - Groups []Group `query:"Groups.member" xml:"ListGroupsForUserResult>Groups>member"` - IsTruncated aws.BooleanValue `query:"IsTruncated" xml:"ListGroupsForUserResult>IsTruncated"` - Marker aws.StringValue `query:"Marker" xml:"ListGroupsForUserResult>Marker"` -} - -// ListGroupsResult is a wrapper for ListGroupsResponse. -type ListGroupsResult struct { - Groups []Group `query:"Groups.member" xml:"ListGroupsResult>Groups>member"` - IsTruncated aws.BooleanValue `query:"IsTruncated" xml:"ListGroupsResult>IsTruncated"` - Marker aws.StringValue `query:"Marker" xml:"ListGroupsResult>Marker"` -} - -// ListInstanceProfilesForRoleResult is a wrapper for ListInstanceProfilesForRoleResponse. -type ListInstanceProfilesForRoleResult struct { - InstanceProfiles []InstanceProfile `query:"InstanceProfiles.member" xml:"ListInstanceProfilesForRoleResult>InstanceProfiles>member"` - IsTruncated aws.BooleanValue `query:"IsTruncated" xml:"ListInstanceProfilesForRoleResult>IsTruncated"` - Marker aws.StringValue `query:"Marker" xml:"ListInstanceProfilesForRoleResult>Marker"` -} - -// ListInstanceProfilesResult is a wrapper for ListInstanceProfilesResponse. -type ListInstanceProfilesResult struct { - InstanceProfiles []InstanceProfile `query:"InstanceProfiles.member" xml:"ListInstanceProfilesResult>InstanceProfiles>member"` - IsTruncated aws.BooleanValue `query:"IsTruncated" xml:"ListInstanceProfilesResult>IsTruncated"` - Marker aws.StringValue `query:"Marker" xml:"ListInstanceProfilesResult>Marker"` -} - -// ListMFADevicesResult is a wrapper for ListMFADevicesResponse. -type ListMFADevicesResult struct { - IsTruncated aws.BooleanValue `query:"IsTruncated" xml:"ListMFADevicesResult>IsTruncated"` - MFADevices []MFADevice `query:"MFADevices.member" xml:"ListMFADevicesResult>MFADevices>member"` - Marker aws.StringValue `query:"Marker" xml:"ListMFADevicesResult>Marker"` -} - -// ListOpenIDConnectProvidersResult is a wrapper for ListOpenIDConnectProvidersResponse. -type ListOpenIDConnectProvidersResult struct { - OpenIDConnectProviderList []OpenIDConnectProviderListEntry `query:"OpenIDConnectProviderList.member" xml:"ListOpenIDConnectProvidersResult>OpenIDConnectProviderList>member"` -} - -// ListRolePoliciesResult is a wrapper for ListRolePoliciesResponse. -type ListRolePoliciesResult struct { - IsTruncated aws.BooleanValue `query:"IsTruncated" xml:"ListRolePoliciesResult>IsTruncated"` - Marker aws.StringValue `query:"Marker" xml:"ListRolePoliciesResult>Marker"` - PolicyNames []string `query:"PolicyNames.member" xml:"ListRolePoliciesResult>PolicyNames>member"` -} - -// ListRolesResult is a wrapper for ListRolesResponse. -type ListRolesResult struct { - IsTruncated aws.BooleanValue `query:"IsTruncated" xml:"ListRolesResult>IsTruncated"` - Marker aws.StringValue `query:"Marker" xml:"ListRolesResult>Marker"` - Roles []Role `query:"Roles.member" xml:"ListRolesResult>Roles>member"` -} - -// ListSAMLProvidersResult is a wrapper for ListSAMLProvidersResponse. -type ListSAMLProvidersResult struct { - SAMLProviderList []SAMLProviderListEntry `query:"SAMLProviderList.member" xml:"ListSAMLProvidersResult>SAMLProviderList>member"` -} - -// ListServerCertificatesResult is a wrapper for ListServerCertificatesResponse. -type ListServerCertificatesResult struct { - IsTruncated aws.BooleanValue `query:"IsTruncated" xml:"ListServerCertificatesResult>IsTruncated"` - Marker aws.StringValue `query:"Marker" xml:"ListServerCertificatesResult>Marker"` - ServerCertificateMetadataList []ServerCertificateMetadata `query:"ServerCertificateMetadataList.member" xml:"ListServerCertificatesResult>ServerCertificateMetadataList>member"` -} - -// ListSigningCertificatesResult is a wrapper for ListSigningCertificatesResponse. -type ListSigningCertificatesResult struct { - Certificates []SigningCertificate `query:"Certificates.member" xml:"ListSigningCertificatesResult>Certificates>member"` - IsTruncated aws.BooleanValue `query:"IsTruncated" xml:"ListSigningCertificatesResult>IsTruncated"` - Marker aws.StringValue `query:"Marker" xml:"ListSigningCertificatesResult>Marker"` -} - -// ListUserPoliciesResult is a wrapper for ListUserPoliciesResponse. -type ListUserPoliciesResult struct { - IsTruncated aws.BooleanValue `query:"IsTruncated" xml:"ListUserPoliciesResult>IsTruncated"` - Marker aws.StringValue `query:"Marker" xml:"ListUserPoliciesResult>Marker"` - PolicyNames []string `query:"PolicyNames.member" xml:"ListUserPoliciesResult>PolicyNames>member"` -} - -// ListUsersResult is a wrapper for ListUsersResponse. -type ListUsersResult struct { - IsTruncated aws.BooleanValue `query:"IsTruncated" xml:"ListUsersResult>IsTruncated"` - Marker aws.StringValue `query:"Marker" xml:"ListUsersResult>Marker"` - Users []User `query:"Users.member" xml:"ListUsersResult>Users>member"` -} - -// ListVirtualMFADevicesResult is a wrapper for ListVirtualMFADevicesResponse. -type ListVirtualMFADevicesResult struct { - IsTruncated aws.BooleanValue `query:"IsTruncated" xml:"ListVirtualMFADevicesResult>IsTruncated"` - Marker aws.StringValue `query:"Marker" xml:"ListVirtualMFADevicesResult>Marker"` - VirtualMFADevices []VirtualMFADevice `query:"VirtualMFADevices.member" xml:"ListVirtualMFADevicesResult>VirtualMFADevices>member"` -} - -// UpdateSAMLProviderResult is a wrapper for UpdateSAMLProviderResponse. -type UpdateSAMLProviderResult struct { - SAMLProviderARN aws.StringValue `query:"SAMLProviderArn" xml:"UpdateSAMLProviderResult>SAMLProviderArn"` -} - -// UploadServerCertificateResult is a wrapper for UploadServerCertificateResponse. -type UploadServerCertificateResult struct { - ServerCertificateMetadata *ServerCertificateMetadata `query:"ServerCertificateMetadata" xml:"UploadServerCertificateResult>ServerCertificateMetadata"` -} - -// UploadSigningCertificateResult is a wrapper for UploadSigningCertificateResponse. -type UploadSigningCertificateResult struct { - Certificate *SigningCertificate `query:"Certificate" xml:"UploadSigningCertificateResult>Certificate"` -} - -// avoid errors if the packages aren't referenced -var _ time.Time - -var _ xml.Decoder -var _ = io.EOF diff --git a/src/github.com/getlantern/aws-sdk-go/gen/importexport/importexport.go b/src/github.com/getlantern/aws-sdk-go/gen/importexport/importexport.go deleted file mode 100644 index 7af917007a..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/gen/importexport/importexport.go +++ /dev/null @@ -1,243 +0,0 @@ -// THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. - -// Package importexport provides a client for AWS Import/Export. -package importexport - -import ( - "net/http" - "time" - - "github.com/awslabs/aws-sdk-go/aws" - "github.com/awslabs/aws-sdk-go/gen/endpoints" -) - -import ( - "encoding/xml" - "io" -) - -// ImportExport is a client for AWS Import/Export. -type ImportExport struct { - client *aws.QueryClient -} - -// New returns a new ImportExport client. -func New(creds aws.CredentialsProvider, region string, client *http.Client) *ImportExport { - if client == nil { - client = http.DefaultClient - } - - endpoint, service, region := endpoints.Lookup("importexport", region) - - return &ImportExport{ - client: &aws.QueryClient{ - Context: aws.Context{ - Credentials: creds, - Service: service, - Region: region, - }, - Client: client, - Endpoint: endpoint, - APIVersion: "2010-06-01", - }, - } -} - -// CancelJob this operation cancels a specified job. Only the job owner can -// cancel it. The operation fails if the job has already started or is -// complete. -func (c *ImportExport) CancelJob(req *CancelJobInput) (resp *CancelJobResult, err error) { - resp = &CancelJobResult{} - err = c.client.Do("CancelJob", "POST", "/?Operation=CancelJob", req, resp) - return -} - -// CreateJob this operation initiates the process of scheduling an upload -// or download of your data. You include in the request a manifest that -// describes the data transfer specifics. The response to the request -// includes a job ID, which you can use in other operations, a signature -// that you use to identify your storage device, and the address where you -// should ship your storage device. -func (c *ImportExport) CreateJob(req *CreateJobInput) (resp *CreateJobResult, err error) { - resp = &CreateJobResult{} - err = c.client.Do("CreateJob", "POST", "/?Operation=CreateJob", req, resp) - return -} - -// GetStatus this operation returns information about a job, including -// where the job is in the processing pipeline, the status of the results, -// and the signature value associated with the job. You can only return -// information about jobs you own. -func (c *ImportExport) GetStatus(req *GetStatusInput) (resp *GetStatusResult, err error) { - resp = &GetStatusResult{} - err = c.client.Do("GetStatus", "POST", "/?Operation=GetStatus", req, resp) - return -} - -// ListJobs this operation returns the jobs associated with the requester. -// AWS Import/Export lists the jobs in reverse chronological order based on -// the date of creation. For example if Job Test1 was created 2009Dec30 and -// Test2 was created 2010Feb05, the ListJobs operation would return Test2 -// followed by Test1. -func (c *ImportExport) ListJobs(req *ListJobsInput) (resp *ListJobsResult, err error) { - resp = &ListJobsResult{} - err = c.client.Do("ListJobs", "POST", "/?Operation=ListJobs", req, resp) - return -} - -// UpdateJob you use this operation to change the parameters specified in -// the original manifest file by supplying a new manifest file. The -// manifest file attached to this request replaces the original manifest -// file. You can only use the operation after a CreateJob request but -// before the data transfer starts and you can only use it on jobs you own. -func (c *ImportExport) UpdateJob(req *UpdateJobInput) (resp *UpdateJobResult, err error) { - resp = &UpdateJobResult{} - err = c.client.Do("UpdateJob", "POST", "/?Operation=UpdateJob", req, resp) - return -} - -// CancelJobInput is undocumented. -type CancelJobInput struct { - JobID aws.StringValue `query:"JobId" xml:"JobId"` -} - -// CancelJobOutput is undocumented. -type CancelJobOutput struct { - Success aws.BooleanValue `query:"Success" xml:"CancelJobResult>Success"` -} - -// CreateJobInput is undocumented. -type CreateJobInput struct { - JobType aws.StringValue `query:"JobType" xml:"JobType"` - Manifest aws.StringValue `query:"Manifest" xml:"Manifest"` - ManifestAddendum aws.StringValue `query:"ManifestAddendum" xml:"ManifestAddendum"` - ValidateOnly aws.BooleanValue `query:"ValidateOnly" xml:"ValidateOnly"` -} - -// CreateJobOutput is undocumented. -type CreateJobOutput struct { - AWSShippingAddress aws.StringValue `query:"AwsShippingAddress" xml:"CreateJobResult>AwsShippingAddress"` - JobID aws.StringValue `query:"JobId" xml:"CreateJobResult>JobId"` - JobType aws.StringValue `query:"JobType" xml:"CreateJobResult>JobType"` - Signature aws.StringValue `query:"Signature" xml:"CreateJobResult>Signature"` - SignatureFileContents aws.StringValue `query:"SignatureFileContents" xml:"CreateJobResult>SignatureFileContents"` - WarningMessage aws.StringValue `query:"WarningMessage" xml:"CreateJobResult>WarningMessage"` -} - -// GetStatusInput is undocumented. -type GetStatusInput struct { - JobID aws.StringValue `query:"JobId" xml:"JobId"` -} - -// GetStatusOutput is undocumented. -type GetStatusOutput struct { - AWSShippingAddress aws.StringValue `query:"AwsShippingAddress" xml:"GetStatusResult>AwsShippingAddress"` - Carrier aws.StringValue `query:"Carrier" xml:"GetStatusResult>Carrier"` - CreationDate time.Time `query:"CreationDate" xml:"GetStatusResult>CreationDate"` - CurrentManifest aws.StringValue `query:"CurrentManifest" xml:"GetStatusResult>CurrentManifest"` - ErrorCount aws.IntegerValue `query:"ErrorCount" xml:"GetStatusResult>ErrorCount"` - JobID aws.StringValue `query:"JobId" xml:"GetStatusResult>JobId"` - JobType aws.StringValue `query:"JobType" xml:"GetStatusResult>JobType"` - LocationCode aws.StringValue `query:"LocationCode" xml:"GetStatusResult>LocationCode"` - LocationMessage aws.StringValue `query:"LocationMessage" xml:"GetStatusResult>LocationMessage"` - LogBucket aws.StringValue `query:"LogBucket" xml:"GetStatusResult>LogBucket"` - LogKey aws.StringValue `query:"LogKey" xml:"GetStatusResult>LogKey"` - ProgressCode aws.StringValue `query:"ProgressCode" xml:"GetStatusResult>ProgressCode"` - ProgressMessage aws.StringValue `query:"ProgressMessage" xml:"GetStatusResult>ProgressMessage"` - Signature aws.StringValue `query:"Signature" xml:"GetStatusResult>Signature"` - SignatureFileContents aws.StringValue `query:"SignatureFileContents" xml:"GetStatusResult>SignatureFileContents"` - TrackingNumber aws.StringValue `query:"TrackingNumber" xml:"GetStatusResult>TrackingNumber"` -} - -// Job is undocumented. -type Job struct { - CreationDate time.Time `query:"CreationDate" xml:"CreationDate"` - IsCanceled aws.BooleanValue `query:"IsCanceled" xml:"IsCanceled"` - JobID aws.StringValue `query:"JobId" xml:"JobId"` - JobType aws.StringValue `query:"JobType" xml:"JobType"` -} - -// Possible values for ImportExport. -const ( - JobTypeExport = "Export" - JobTypeImport = "Import" -) - -// ListJobsInput is undocumented. -type ListJobsInput struct { - Marker aws.StringValue `query:"Marker" xml:"Marker"` - MaxJobs aws.IntegerValue `query:"MaxJobs" xml:"MaxJobs"` -} - -// ListJobsOutput is undocumented. -type ListJobsOutput struct { - IsTruncated aws.BooleanValue `query:"IsTruncated" xml:"ListJobsResult>IsTruncated"` - Jobs []Job `query:"Jobs.member" xml:"ListJobsResult>Jobs>member"` -} - -// UpdateJobInput is undocumented. -type UpdateJobInput struct { - JobID aws.StringValue `query:"JobId" xml:"JobId"` - JobType aws.StringValue `query:"JobType" xml:"JobType"` - Manifest aws.StringValue `query:"Manifest" xml:"Manifest"` - ValidateOnly aws.BooleanValue `query:"ValidateOnly" xml:"ValidateOnly"` -} - -// UpdateJobOutput is undocumented. -type UpdateJobOutput struct { - Success aws.BooleanValue `query:"Success" xml:"UpdateJobResult>Success"` - WarningMessage aws.StringValue `query:"WarningMessage" xml:"UpdateJobResult>WarningMessage"` -} - -// CancelJobResult is a wrapper for CancelJobOutput. -type CancelJobResult struct { - Success aws.BooleanValue `query:"Success" xml:"CancelJobResult>Success"` -} - -// CreateJobResult is a wrapper for CreateJobOutput. -type CreateJobResult struct { - AWSShippingAddress aws.StringValue `query:"AwsShippingAddress" xml:"CreateJobResult>AwsShippingAddress"` - JobID aws.StringValue `query:"JobId" xml:"CreateJobResult>JobId"` - JobType aws.StringValue `query:"JobType" xml:"CreateJobResult>JobType"` - Signature aws.StringValue `query:"Signature" xml:"CreateJobResult>Signature"` - SignatureFileContents aws.StringValue `query:"SignatureFileContents" xml:"CreateJobResult>SignatureFileContents"` - WarningMessage aws.StringValue `query:"WarningMessage" xml:"CreateJobResult>WarningMessage"` -} - -// GetStatusResult is a wrapper for GetStatusOutput. -type GetStatusResult struct { - AWSShippingAddress aws.StringValue `query:"AwsShippingAddress" xml:"GetStatusResult>AwsShippingAddress"` - Carrier aws.StringValue `query:"Carrier" xml:"GetStatusResult>Carrier"` - CreationDate time.Time `query:"CreationDate" xml:"GetStatusResult>CreationDate"` - CurrentManifest aws.StringValue `query:"CurrentManifest" xml:"GetStatusResult>CurrentManifest"` - ErrorCount aws.IntegerValue `query:"ErrorCount" xml:"GetStatusResult>ErrorCount"` - JobID aws.StringValue `query:"JobId" xml:"GetStatusResult>JobId"` - JobType aws.StringValue `query:"JobType" xml:"GetStatusResult>JobType"` - LocationCode aws.StringValue `query:"LocationCode" xml:"GetStatusResult>LocationCode"` - LocationMessage aws.StringValue `query:"LocationMessage" xml:"GetStatusResult>LocationMessage"` - LogBucket aws.StringValue `query:"LogBucket" xml:"GetStatusResult>LogBucket"` - LogKey aws.StringValue `query:"LogKey" xml:"GetStatusResult>LogKey"` - ProgressCode aws.StringValue `query:"ProgressCode" xml:"GetStatusResult>ProgressCode"` - ProgressMessage aws.StringValue `query:"ProgressMessage" xml:"GetStatusResult>ProgressMessage"` - Signature aws.StringValue `query:"Signature" xml:"GetStatusResult>Signature"` - SignatureFileContents aws.StringValue `query:"SignatureFileContents" xml:"GetStatusResult>SignatureFileContents"` - TrackingNumber aws.StringValue `query:"TrackingNumber" xml:"GetStatusResult>TrackingNumber"` -} - -// ListJobsResult is a wrapper for ListJobsOutput. -type ListJobsResult struct { - IsTruncated aws.BooleanValue `query:"IsTruncated" xml:"ListJobsResult>IsTruncated"` - Jobs []Job `query:"Jobs.member" xml:"ListJobsResult>Jobs>member"` -} - -// UpdateJobResult is a wrapper for UpdateJobOutput. -type UpdateJobResult struct { - Success aws.BooleanValue `query:"Success" xml:"UpdateJobResult>Success"` - WarningMessage aws.StringValue `query:"WarningMessage" xml:"UpdateJobResult>WarningMessage"` -} - -// avoid errors if the packages aren't referenced -var _ time.Time - -var _ xml.Decoder -var _ = io.EOF diff --git a/src/github.com/getlantern/aws-sdk-go/gen/kinesis/kinesis.go b/src/github.com/getlantern/aws-sdk-go/gen/kinesis/kinesis.go deleted file mode 100644 index 0d1037f474..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/gen/kinesis/kinesis.go +++ /dev/null @@ -1,606 +0,0 @@ -// THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. - -// Package kinesis provides a client for Amazon Kinesis. -package kinesis - -import ( - "net/http" - "time" - - "github.com/awslabs/aws-sdk-go/aws" - "github.com/awslabs/aws-sdk-go/gen/endpoints" -) - -// Kinesis is a client for Amazon Kinesis. -type Kinesis struct { - client *aws.JSONClient -} - -// New returns a new Kinesis client. -func New(creds aws.CredentialsProvider, region string, client *http.Client) *Kinesis { - if client == nil { - client = http.DefaultClient - } - - endpoint, service, region := endpoints.Lookup("kinesis", region) - - return &Kinesis{ - client: &aws.JSONClient{ - Context: aws.Context{ - Credentials: creds, - Service: service, - Region: region, - }, Client: client, - Endpoint: endpoint, - JSONVersion: "1.1", - TargetPrefix: "Kinesis_20131202", - }, - } -} - -// AddTagsToStream adds or updates tags for the specified Amazon Kinesis -// stream. Each stream can have up to 10 tags. If tags have already been -// assigned to the stream, AddTagsToStream overwrites any existing tags -// that correspond to the specified tag keys. -func (c *Kinesis) AddTagsToStream(req *AddTagsToStreamInput) (err error) { - // NRE - err = c.client.Do("AddTagsToStream", "POST", "/", req, nil) - return -} - -// CreateStream creates a Amazon Kinesis stream. A stream captures and -// transports data records that are continuously emitted from different -// data sources or producers . Scale-out within an Amazon Kinesis stream is -// explicitly supported by means of shards, which are uniquely identified -// groups of data records in an Amazon Kinesis stream. You specify and -// control the number of shards that a stream is composed of. Each open -// shard can support up to 5 read transactions per second, up to a maximum -// total of 2 MB of data read per second. Each shard can support up to 1000 -// records written per second, up to a maximum total of 1 MB data written -// per second. You can add shards to a stream if the amount of data input -// increases and you can remove shards if the amount of data input -// decreases. The stream name identifies the stream. The name is scoped to -// the AWS account used by the application. It is also scoped by region. -// That is, two streams in two different accounts can have the same name, -// and two streams in the same account, but in two different regions, can -// have the same name. CreateStream is an asynchronous operation. Upon -// receiving a CreateStream request, Amazon Kinesis immediately returns and -// sets the stream status to . After the stream is created, Amazon Kinesis -// sets the stream status to . You should perform read and write operations -// only on an stream. You receive a LimitExceededException when making a -// CreateStream request if you try to do one of the following: Have more -// than five streams in the state at any point in time. Create more shards -// than are authorized for your account. The default limit for an AWS -// account is 10 shards per stream. If you need to create a stream with -// more than 10 shards, contact AWS Support to increase the limit on your -// account. You can use DescribeStream to check the stream status, which is -// returned in StreamStatus CreateStream has a limit of 5 transactions per -// second per account. -func (c *Kinesis) CreateStream(req *CreateStreamInput) (err error) { - // NRE - err = c.client.Do("CreateStream", "POST", "/", req, nil) - return -} - -// DeleteStream deletes a stream and all its shards and data. You must shut -// down any applications that are operating on the stream before you delete -// the stream. If an application attempts to operate on a deleted stream, -// it will receive the exception ResourceNotFoundException If the stream is -// in the state, you can delete it. After a DeleteStream request, the -// specified stream is in the state until Amazon Kinesis completes the -// deletion. Note: Amazon Kinesis might continue to accept data read and -// write operations, such as PutRecord , PutRecords , and GetRecords , on a -// stream in the state until the stream deletion is complete. When you -// delete a stream, any shards in that stream are also deleted, and any -// tags are dissociated from the stream. You can use the DescribeStream -// operation to check the state of the stream, which is returned in -// StreamStatus DeleteStream has a limit of 5 transactions per second per -// account. -func (c *Kinesis) DeleteStream(req *DeleteStreamInput) (err error) { - // NRE - err = c.client.Do("DeleteStream", "POST", "/", req, nil) - return -} - -// DescribeStream describes the specified stream. The information about the -// stream includes its current status, its Amazon Resource Name and an -// array of shard objects. For each shard object, there is information -// about the hash key and sequence number ranges that the shard spans, and -// the IDs of any earlier shards that played in a role in creating the -// shard. A sequence number is the identifier associated with every record -// ingested in the Amazon Kinesis stream. The sequence number is assigned -// when a record is put into the stream. You can limit the number of -// returned shards using the Limit parameter. The number of shards in a -// stream may be too large to return from a single call to DescribeStream . -// You can detect this by using the HasMoreShards flag in the returned -// output. HasMoreShards is set to true when there is more data available. -// DescribeStream is a paginated operation. If there are more shards -// available, you can request them using the shard ID of the last shard -// returned. Specify this ID in the ExclusiveStartShardId parameter in a -// subsequent request to DescribeStream . DescribeStream has a limit of 10 -// transactions per second per account. -func (c *Kinesis) DescribeStream(req *DescribeStreamInput) (resp *DescribeStreamOutput, err error) { - resp = &DescribeStreamOutput{} - err = c.client.Do("DescribeStream", "POST", "/", req, resp) - return -} - -// GetRecords gets data records from a shard. Specify a shard iterator -// using the ShardIterator parameter. The shard iterator specifies the -// position in the shard from which you want to start reading data records -// sequentially. If there are no records available in the portion of the -// shard that the iterator points to, GetRecords returns an empty list. -// Note that it might take multiple calls to get to a portion of the shard -// that contains records. You can scale by provisioning multiple shards. -// Your application should have one thread per shard, each reading -// continuously from its stream. To read from a stream continually, call -// GetRecords in a loop. Use GetShardIterator to get the shard iterator to -// specify in the first GetRecords call. GetRecords returns a new shard -// iterator in NextShardIterator . Specify the shard iterator returned in -// NextShardIterator in subsequent calls to GetRecords . Note that if the -// shard has been closed, the shard iterator can't return more data and -// GetRecords returns null in NextShardIterator . You can terminate the -// loop when the shard is closed, or when the shard iterator reaches the -// record with the sequence number or other attribute that marks it as the -// last record to process. Each data record can be up to 50 KB in size, and -// each shard can read up to 2 MB per second. You can ensure that your -// calls don't exceed the maximum supported size or throughput by using the -// Limit parameter to specify the maximum number of records that GetRecords -// can return. Consider your average record size when determining this -// limit. For example, if your average record size is 40 KB, you can limit -// the data returned to about 1 MB per call by specifying 25 as the limit. -// The size of the data returned by GetRecords will vary depending on the -// utilization of the shard. The maximum size of data that GetRecords can -// return is 10 MB. If a call returns 10 MB of data, subsequent calls made -// within the next 5 seconds throw ProvisionedThroughputExceededException . -// If there is insufficient provisioned throughput on the shard, subsequent -// calls made within the next 1 second throw -// ProvisionedThroughputExceededException . Note that GetRecords won't -// return any data when it throws an exception. For this reason, we -// recommend that you wait one second between calls to GetRecords ; -// however, it's possible that the application will get exceptions for -// longer than 1 second. To detect whether the application is falling -// behind in processing, add a timestamp to your records and note how long -// it takes to process them. You can also monitor how much data is in a -// stream using the CloudWatch metrics for write operations PutRecord and -// PutRecords ). For more information, see Monitoring Amazon Kinesis with -// Amazon CloudWatch in the Amazon Kinesis Developer Guide -func (c *Kinesis) GetRecords(req *GetRecordsInput) (resp *GetRecordsOutput, err error) { - resp = &GetRecordsOutput{} - err = c.client.Do("GetRecords", "POST", "/", req, resp) - return -} - -// GetShardIterator gets a shard iterator. A shard iterator expires five -// minutes after it is returned to the requester. A shard iterator -// specifies the position in the shard from which to start reading data -// records sequentially. A shard iterator specifies this position using the -// sequence number of a data record in a shard. A sequence number is the -// identifier associated with every record ingested in the Amazon Kinesis -// stream. The sequence number is assigned when a record is put into the -// stream. You must specify the shard iterator type. For example, you can -// set the ShardIteratorType parameter to read exactly from the position -// denoted by a specific sequence number by using the shard iterator type, -// or right after the sequence number by using the shard iterator type, -// using sequence numbers returned by earlier calls to PutRecord , -// PutRecords , GetRecords , or DescribeStream . You can specify the shard -// iterator type in the request to cause ShardIterator to point to the last -// untrimmed record in the shard in the system, which is the oldest data -// record in the shard. Or you can point to just after the most recent -// record in the shard, by using the shard iterator type , so that you -// always read the most recent data in the shard. When you repeatedly read -// from an Amazon Kinesis stream use a GetShardIterator request to get the -// first shard iterator to to use in your first GetRecords request and then -// use the shard iterator returned by the GetRecords request in -// NextShardIterator for subsequent reads. A new shard iterator is returned -// by every GetRecords request in NextShardIterator , which you use in the -// ShardIterator parameter of the next GetRecords request. If a -// GetShardIterator request is made too often, you receive a -// ProvisionedThroughputExceededException . For more information about -// throughput limits, see GetRecords If the shard is closed, the iterator -// can't return more data, and GetShardIterator returns null for its -// ShardIterator . A shard can be closed using SplitShard or MergeShards -// GetShardIterator has a limit of 5 transactions per second per account -// per open shard. -func (c *Kinesis) GetShardIterator(req *GetShardIteratorInput) (resp *GetShardIteratorOutput, err error) { - resp = &GetShardIteratorOutput{} - err = c.client.Do("GetShardIterator", "POST", "/", req, resp) - return -} - -// ListStreams lists your streams. The number of streams may be too large -// to return from a single call to ListStreams . You can limit the number -// of returned streams using the Limit parameter. If you do not specify a -// value for the Limit parameter, Amazon Kinesis uses the default limit, -// which is currently 10. You can detect if there are more streams -// available to list by using the HasMoreStreams flag from the returned -// output. If there are more streams available, you can request more -// streams by using the name of the last stream returned by the ListStreams -// request in the ExclusiveStartStreamName parameter in a subsequent -// request to ListStreams . The group of stream names returned by the -// subsequent request is then added to the list. You can continue this -// process until all the stream names have been collected in the list. -// ListStreams has a limit of 5 transactions per second per account. -func (c *Kinesis) ListStreams(req *ListStreamsInput) (resp *ListStreamsOutput, err error) { - resp = &ListStreamsOutput{} - err = c.client.Do("ListStreams", "POST", "/", req, resp) - return -} - -// ListTagsForStream lists the tags for the specified Amazon Kinesis -// stream. -func (c *Kinesis) ListTagsForStream(req *ListTagsForStreamInput) (resp *ListTagsForStreamOutput, err error) { - resp = &ListTagsForStreamOutput{} - err = c.client.Do("ListTagsForStream", "POST", "/", req, resp) - return -} - -// MergeShards merges two adjacent shards in a stream and combines them -// into a single shard to reduce the stream's capacity to ingest and -// transport data. Two shards are considered adjacent if the union of the -// hash key ranges for the two shards form a contiguous set with no gaps. -// For example, if you have two shards, one with a hash key range of -// 276...381 and the other with a hash key range of 382...454, then you -// could merge these two shards into a single shard that would have a hash -// key range of 276...454. After the merge, the single child shard receives -// data for all hash key values covered by the two parent shards. -// MergeShards is called when there is a need to reduce the overall -// capacity of a stream because of excess capacity that is not being used. -// You must specify the shard to be merged and the adjacent shard for a -// stream. For more information about merging shards, see Merge Two Shards -// in the Amazon Kinesis Developer Guide If the stream is in the state, you -// can call MergeShards . If a stream is in the , , or state, MergeShards -// returns a ResourceInUseException . If the specified stream does not -// exist, MergeShards returns a ResourceNotFoundException . You can use -// DescribeStream to check the state of the stream, which is returned in -// StreamStatus MergeShards is an asynchronous operation. Upon receiving a -// MergeShards request, Amazon Kinesis immediately returns a response and -// sets the StreamStatus to . After the operation is completed, Amazon -// Kinesis sets the StreamStatus to . Read and write operations continue to -// work while the stream is in the state. You use DescribeStream to -// determine the shard IDs that are specified in the MergeShards request. -// If you try to operate on too many streams in parallel using CreateStream -// , DeleteStream , MergeShards or SplitShard , you will receive a -// LimitExceededException . MergeShards has limit of 5 transactions per -// second per account. -func (c *Kinesis) MergeShards(req *MergeShardsInput) (err error) { - // NRE - err = c.client.Do("MergeShards", "POST", "/", req, nil) - return -} - -// PutRecord puts (writes) a single data record from a producer into an -// Amazon Kinesis stream. Call PutRecord to send data from the producer -// into the Amazon Kinesis stream for real-time ingestion and subsequent -// processing, one record at a time. Each shard can support up to 1000 -// records written per second, up to a maximum total of 1 MB data written -// per second. You must specify the name of the stream that captures, -// stores, and transports the data; a partition key; and the data blob -// itself. The data blob can be any type of data; for example, a segment -// from a log file, geographic/location data, website clickstream data, and -// so on. The partition key is used by Amazon Kinesis to distribute data -// across shards. Amazon Kinesis segregates the data records that belong to -// a data stream into multiple shards, using the partition key associated -// with each data record to determine which shard a given data record -// belongs to. Partition keys are Unicode strings, with a maximum length -// limit of 256 bytes. An MD5 hash function is used to map partition keys -// to 128-bit integer values and to map associated data records to shards -// using the hash key ranges of the shards. You can override hashing the -// partition key to determine the shard by explicitly specifying a hash -// value using the ExplicitHashKey parameter. For more information, see -// Partition Key in the Amazon Kinesis Developer Guide PutRecord returns -// the shard ID of where the data record was placed and the sequence number -// that was assigned to the data record. Sequence numbers generally -// increase over time. To guarantee strictly increasing ordering, use the -// SequenceNumberForOrdering parameter. For more information, see Sequence -// Number in the Amazon Kinesis Developer Guide If a PutRecord request -// cannot be processed because of insufficient provisioned throughput on -// the shard involved in the request, PutRecord throws -// ProvisionedThroughputExceededException . Data records are accessible for -// only 24 hours from the time that they are added to an Amazon Kinesis -// stream. -func (c *Kinesis) PutRecord(req *PutRecordInput) (resp *PutRecordOutput, err error) { - resp = &PutRecordOutput{} - err = c.client.Do("PutRecord", "POST", "/", req, resp) - return -} - -// PutRecords puts (writes) multiple data records from a producer into an -// Amazon Kinesis stream in a single call (also referred to as a PutRecords -// request). Use this operation to send data from a data producer into the -// Amazon Kinesis stream for real-time ingestion and processing. Each shard -// can support up to 1000 records written per second, up to a maximum total -// of 1 MB data written per second. You must specify the name of the stream -// that captures, stores, and transports the data; and an array of request -// Records , with each record in the array requiring a partition key and -// data blob. The data blob can be any type of data; for example, a segment -// from a log file, geographic/location data, website clickstream data, and -// so on. The partition key is used by Amazon Kinesis as input to a hash -// function that maps the partition key and associated data to a specific -// shard. An MD5 hash function is used to map partition keys to 128-bit -// integer values and to map associated data records to shards. As a result -// of this hashing mechanism, all data records with the same partition key -// map to the same shard within the stream. For more information, see -// Partition Key in the Amazon Kinesis Developer Guide Each record in the -// Records array may include an optional parameter, ExplicitHashKey , which -// overrides the partition key to shard mapping. This parameter allows a -// data producer to determine explicitly the shard where the record is -// stored. For more information, see Adding Multiple Records with -// PutRecords in the Amazon Kinesis Developer Guide The PutRecords response -// includes an array of response Records . Each record in the response -// array directly correlates with a record in the request array using -// natural ordering, from the top to the bottom of the request and -// response. The response Records array always includes the same number of -// records as the request array. The response Records array includes both -// successfully and unsuccessfully processed records. Amazon Kinesis -// attempts to process all records in each PutRecords request. A single -// record failure does not stop the processing of subsequent records. A -// successfully-processed record includes ShardId and SequenceNumber -// values. The ShardId parameter identifies the shard in the stream where -// the record is stored. The SequenceNumber parameter is an identifier -// assigned to the put record, unique to all records in the stream. An -// unsuccessfully-processed record includes ErrorCode and ErrorMessage -// values. ErrorCode reflects the type of error and can be one of the -// following values: ProvisionedThroughputExceededException or -// InternalFailure . ErrorMessage provides more detailed information about -// the ProvisionedThroughputExceededException exception including the -// account ID, stream name, and shard ID of the record that was throttled. -// Data records are accessible for only 24 hours from the time that they -// are added to an Amazon Kinesis stream. -func (c *Kinesis) PutRecords(req *PutRecordsInput) (resp *PutRecordsOutput, err error) { - resp = &PutRecordsOutput{} - err = c.client.Do("PutRecords", "POST", "/", req, resp) - return -} - -// RemoveTagsFromStream deletes tags from the specified Amazon Kinesis -// stream. If you specify a tag that does not exist, it is ignored. -func (c *Kinesis) RemoveTagsFromStream(req *RemoveTagsFromStreamInput) (err error) { - // NRE - err = c.client.Do("RemoveTagsFromStream", "POST", "/", req, nil) - return -} - -// SplitShard splits a shard into two new shards in the stream, to increase -// the stream's capacity to ingest and transport data. SplitShard is called -// when there is a need to increase the overall capacity of stream because -// of an expected increase in the volume of data records being ingested. -// You can also use SplitShard when a shard appears to be approaching its -// maximum utilization, for example, when the set of producers sending data -// into the specific shard are suddenly sending more than previously -// anticipated. You can also call SplitShard to increase stream capacity, -// so that more Amazon Kinesis applications can simultaneously read data -// from the stream for real-time processing. You must specify the shard to -// be split and the new hash key, which is the position in the shard where -// the shard gets split in two. In many cases, the new hash key might -// simply be the average of the beginning and ending hash key, but it can -// be any hash key value in the range being mapped into the shard. For more -// information about splitting shards, see Split a Shard in the Amazon -// Kinesis Developer Guide You can use DescribeStream to determine the -// shard ID and hash key values for the ShardToSplit and NewStartingHashKey -// parameters that are specified in the SplitShard request. SplitShard is -// an asynchronous operation. Upon receiving a SplitShard request, Amazon -// Kinesis immediately returns a response and sets the stream status to . -// After the operation is completed, Amazon Kinesis sets the stream status -// to . Read and write operations continue to work while the stream is in -// the state. You can use DescribeStream to check the status of the stream, -// which is returned in StreamStatus . If the stream is in the state, you -// can call SplitShard . If a stream is in or or states, DescribeStream -// returns a ResourceInUseException If the specified stream does not exist, -// DescribeStream returns a ResourceNotFoundException . If you try to -// create more shards than are authorized for your account, you receive a -// LimitExceededException . The default limit for an AWS account is 10 -// shards per stream. If you need to create a stream with more than 10 -// shards, contact AWS Support to increase the limit on your account. If -// you try to operate on too many streams in parallel using CreateStream , -// DeleteStream , MergeShards or SplitShard , you receive a -// LimitExceededException . SplitShard has limit of 5 transactions per -// second per account. -func (c *Kinesis) SplitShard(req *SplitShardInput) (err error) { - // NRE - err = c.client.Do("SplitShard", "POST", "/", req, nil) - return -} - -// AddTagsToStreamInput is undocumented. -type AddTagsToStreamInput struct { - StreamName aws.StringValue `json:"StreamName"` - Tags map[string]string `json:"Tags"` -} - -// CreateStreamInput is undocumented. -type CreateStreamInput struct { - ShardCount aws.IntegerValue `json:"ShardCount"` - StreamName aws.StringValue `json:"StreamName"` -} - -// DeleteStreamInput is undocumented. -type DeleteStreamInput struct { - StreamName aws.StringValue `json:"StreamName"` -} - -// DescribeStreamInput is undocumented. -type DescribeStreamInput struct { - ExclusiveStartShardID aws.StringValue `json:"ExclusiveStartShardId,omitempty"` - Limit aws.IntegerValue `json:"Limit,omitempty"` - StreamName aws.StringValue `json:"StreamName"` -} - -// DescribeStreamOutput is undocumented. -type DescribeStreamOutput struct { - StreamDescription *StreamDescription `json:"StreamDescription"` -} - -// GetRecordsInput is undocumented. -type GetRecordsInput struct { - Limit aws.IntegerValue `json:"Limit,omitempty"` - ShardIterator aws.StringValue `json:"ShardIterator"` -} - -// GetRecordsOutput is undocumented. -type GetRecordsOutput struct { - NextShardIterator aws.StringValue `json:"NextShardIterator,omitempty"` - Records []Record `json:"Records"` -} - -// GetShardIteratorInput is undocumented. -type GetShardIteratorInput struct { - ShardID aws.StringValue `json:"ShardId"` - ShardIteratorType aws.StringValue `json:"ShardIteratorType"` - StartingSequenceNumber aws.StringValue `json:"StartingSequenceNumber,omitempty"` - StreamName aws.StringValue `json:"StreamName"` -} - -// GetShardIteratorOutput is undocumented. -type GetShardIteratorOutput struct { - ShardIterator aws.StringValue `json:"ShardIterator,omitempty"` -} - -// HashKeyRange is undocumented. -type HashKeyRange struct { - EndingHashKey aws.StringValue `json:"EndingHashKey"` - StartingHashKey aws.StringValue `json:"StartingHashKey"` -} - -// ListStreamsInput is undocumented. -type ListStreamsInput struct { - ExclusiveStartStreamName aws.StringValue `json:"ExclusiveStartStreamName,omitempty"` - Limit aws.IntegerValue `json:"Limit,omitempty"` -} - -// ListStreamsOutput is undocumented. -type ListStreamsOutput struct { - HasMoreStreams aws.BooleanValue `json:"HasMoreStreams"` - StreamNames []string `json:"StreamNames"` -} - -// ListTagsForStreamInput is undocumented. -type ListTagsForStreamInput struct { - ExclusiveStartTagKey aws.StringValue `json:"ExclusiveStartTagKey,omitempty"` - Limit aws.IntegerValue `json:"Limit,omitempty"` - StreamName aws.StringValue `json:"StreamName"` -} - -// ListTagsForStreamOutput is undocumented. -type ListTagsForStreamOutput struct { - HasMoreTags aws.BooleanValue `json:"HasMoreTags"` - Tags []Tag `json:"Tags"` -} - -// MergeShardsInput is undocumented. -type MergeShardsInput struct { - AdjacentShardToMerge aws.StringValue `json:"AdjacentShardToMerge"` - ShardToMerge aws.StringValue `json:"ShardToMerge"` - StreamName aws.StringValue `json:"StreamName"` -} - -// PutRecordInput is undocumented. -type PutRecordInput struct { - Data []byte `json:"Data"` - ExplicitHashKey aws.StringValue `json:"ExplicitHashKey,omitempty"` - PartitionKey aws.StringValue `json:"PartitionKey"` - SequenceNumberForOrdering aws.StringValue `json:"SequenceNumberForOrdering,omitempty"` - StreamName aws.StringValue `json:"StreamName"` -} - -// PutRecordOutput is undocumented. -type PutRecordOutput struct { - SequenceNumber aws.StringValue `json:"SequenceNumber"` - ShardID aws.StringValue `json:"ShardId"` -} - -// PutRecordsInput is undocumented. -type PutRecordsInput struct { - Records []PutRecordsRequestEntry `json:"Records"` - StreamName aws.StringValue `json:"StreamName"` -} - -// PutRecordsOutput is undocumented. -type PutRecordsOutput struct { - FailedRecordCount aws.IntegerValue `json:"FailedRecordCount,omitempty"` - Records []PutRecordsResultEntry `json:"Records"` -} - -// PutRecordsRequestEntry is undocumented. -type PutRecordsRequestEntry struct { - Data []byte `json:"Data"` - ExplicitHashKey aws.StringValue `json:"ExplicitHashKey,omitempty"` - PartitionKey aws.StringValue `json:"PartitionKey"` -} - -// PutRecordsResultEntry is undocumented. -type PutRecordsResultEntry struct { - ErrorCode aws.StringValue `json:"ErrorCode,omitempty"` - ErrorMessage aws.StringValue `json:"ErrorMessage,omitempty"` - SequenceNumber aws.StringValue `json:"SequenceNumber,omitempty"` - ShardID aws.StringValue `json:"ShardId,omitempty"` -} - -// Record is undocumented. -type Record struct { - Data []byte `json:"Data"` - PartitionKey aws.StringValue `json:"PartitionKey"` - SequenceNumber aws.StringValue `json:"SequenceNumber"` -} - -// RemoveTagsFromStreamInput is undocumented. -type RemoveTagsFromStreamInput struct { - StreamName aws.StringValue `json:"StreamName"` - TagKeys []string `json:"TagKeys"` -} - -// SequenceNumberRange is undocumented. -type SequenceNumberRange struct { - EndingSequenceNumber aws.StringValue `json:"EndingSequenceNumber,omitempty"` - StartingSequenceNumber aws.StringValue `json:"StartingSequenceNumber"` -} - -// Shard is undocumented. -type Shard struct { - AdjacentParentShardID aws.StringValue `json:"AdjacentParentShardId,omitempty"` - HashKeyRange *HashKeyRange `json:"HashKeyRange"` - ParentShardID aws.StringValue `json:"ParentShardId,omitempty"` - SequenceNumberRange *SequenceNumberRange `json:"SequenceNumberRange"` - ShardID aws.StringValue `json:"ShardId"` -} - -// Possible values for Kinesis. -const ( - ShardIteratorTypeAfterSequenceNumber = "AFTER_SEQUENCE_NUMBER" - ShardIteratorTypeAtSequenceNumber = "AT_SEQUENCE_NUMBER" - ShardIteratorTypeLatest = "LATEST" - ShardIteratorTypeTrimHorizon = "TRIM_HORIZON" -) - -// SplitShardInput is undocumented. -type SplitShardInput struct { - NewStartingHashKey aws.StringValue `json:"NewStartingHashKey"` - ShardToSplit aws.StringValue `json:"ShardToSplit"` - StreamName aws.StringValue `json:"StreamName"` -} - -// StreamDescription is undocumented. -type StreamDescription struct { - HasMoreShards aws.BooleanValue `json:"HasMoreShards"` - Shards []Shard `json:"Shards"` - StreamARN aws.StringValue `json:"StreamARN"` - StreamName aws.StringValue `json:"StreamName"` - StreamStatus aws.StringValue `json:"StreamStatus"` -} - -// Possible values for Kinesis. -const ( - StreamStatusActive = "ACTIVE" - StreamStatusCreating = "CREATING" - StreamStatusDeleting = "DELETING" - StreamStatusUpdating = "UPDATING" -) - -// Tag is undocumented. -type Tag struct { - Key aws.StringValue `json:"Key"` - Value aws.StringValue `json:"Value,omitempty"` -} - -// avoid errors if the packages aren't referenced -var _ time.Time diff --git a/src/github.com/getlantern/aws-sdk-go/gen/kms/kms.go b/src/github.com/getlantern/aws-sdk-go/gen/kms/kms.go deleted file mode 100644 index cd12340928..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/gen/kms/kms.go +++ /dev/null @@ -1,563 +0,0 @@ -// THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. - -// Package kms provides a client for AWS Key Management Service. -package kms - -import ( - "net/http" - "time" - - "github.com/awslabs/aws-sdk-go/aws" - "github.com/awslabs/aws-sdk-go/gen/endpoints" -) - -// KMS is a client for AWS Key Management Service. -type KMS struct { - client *aws.JSONClient -} - -// New returns a new KMS client. -func New(creds aws.CredentialsProvider, region string, client *http.Client) *KMS { - if client == nil { - client = http.DefaultClient - } - - endpoint, service, region := endpoints.Lookup("kms", region) - - return &KMS{ - client: &aws.JSONClient{ - Context: aws.Context{ - Credentials: creds, - Service: service, - Region: region, - }, Client: client, - Endpoint: endpoint, - JSONVersion: "1.1", - TargetPrefix: "TrentService", - }, - } -} - -// CreateAlias creates a display name for a customer master key. An alias -// can be used to identify a key and should be unique. The console enforces -// a one-to-one mapping between the alias and a key. An alias name can -// contain only alphanumeric characters, forward slashes underscores and -// dashes An alias must start with the word "alias" followed by a forward -// slash (alias/). An alias that begins with "aws" after the forward slash -// (alias/aws...) is reserved by Amazon Web Services -func (c *KMS) CreateAlias(req *CreateAliasRequest) (err error) { - // NRE - err = c.client.Do("CreateAlias", "POST", "/", req, nil) - return -} - -// CreateGrant adds a grant to a key to specify who can access the key and -// under what conditions. Grants are alternate permission mechanisms to key -// policies. If absent, access to the key is evaluated based on IAM -// policies attached to the user. By default, grants do not expire. Grants -// can be listed, retired, or revoked as indicated by the following APIs. -// Typically, when you are finished using a grant, you retire it. When you -// want to end a grant immediately, revoke it. For more information about -// grants, see Grants . -func (c *KMS) CreateGrant(req *CreateGrantRequest) (resp *CreateGrantResponse, err error) { - resp = &CreateGrantResponse{} - err = c.client.Do("CreateGrant", "POST", "/", req, resp) - return -} - -// CreateKey creates a customer master key. Customer master keys can be -// used to encrypt small amounts of data (less than 4K) directly, but they -// are most commonly used to encrypt or envelope data keys that are then -// used to encrypt customer data. For more information about data keys, see -// GenerateDataKey and GenerateDataKeyWithoutPlaintext -func (c *KMS) CreateKey(req *CreateKeyRequest) (resp *CreateKeyResponse, err error) { - resp = &CreateKeyResponse{} - err = c.client.Do("CreateKey", "POST", "/", req, resp) - return -} - -// Decrypt decrypts ciphertext. Ciphertext is plaintext that has been -// previously encrypted by using the Encrypt function. -func (c *KMS) Decrypt(req *DecryptRequest) (resp *DecryptResponse, err error) { - resp = &DecryptResponse{} - err = c.client.Do("Decrypt", "POST", "/", req, resp) - return -} - -// DeleteAlias is undocumented. -func (c *KMS) DeleteAlias(req *DeleteAliasRequest) (err error) { - // NRE - err = c.client.Do("DeleteAlias", "POST", "/", req, nil) - return -} - -// DescribeKey provides detailed information about the specified customer -// master key. -func (c *KMS) DescribeKey(req *DescribeKeyRequest) (resp *DescribeKeyResponse, err error) { - resp = &DescribeKeyResponse{} - err = c.client.Do("DescribeKey", "POST", "/", req, resp) - return -} - -// DisableKey marks a key as disabled, thereby preventing its use. -func (c *KMS) DisableKey(req *DisableKeyRequest) (err error) { - // NRE - err = c.client.Do("DisableKey", "POST", "/", req, nil) - return -} - -// DisableKeyRotation is undocumented. -func (c *KMS) DisableKeyRotation(req *DisableKeyRotationRequest) (err error) { - // NRE - err = c.client.Do("DisableKeyRotation", "POST", "/", req, nil) - return -} - -// EnableKey marks a key as enabled, thereby permitting its use. You can -// have up to 25 enabled keys at one time. -func (c *KMS) EnableKey(req *EnableKeyRequest) (err error) { - // NRE - err = c.client.Do("EnableKey", "POST", "/", req, nil) - return -} - -// EnableKeyRotation enables rotation of the specified customer master key. -func (c *KMS) EnableKeyRotation(req *EnableKeyRotationRequest) (err error) { - // NRE - err = c.client.Do("EnableKeyRotation", "POST", "/", req, nil) - return -} - -// Encrypt encrypts plaintext into ciphertext by using a customer master -// key. -func (c *KMS) Encrypt(req *EncryptRequest) (resp *EncryptResponse, err error) { - resp = &EncryptResponse{} - err = c.client.Do("Encrypt", "POST", "/", req, resp) - return -} - -// GenerateDataKey generates a secure data key. Data keys are used to -// encrypt and decrypt data. They are wrapped by customer master keys. -func (c *KMS) GenerateDataKey(req *GenerateDataKeyRequest) (resp *GenerateDataKeyResponse, err error) { - resp = &GenerateDataKeyResponse{} - err = c.client.Do("GenerateDataKey", "POST", "/", req, resp) - return -} - -// GenerateDataKeyWithoutPlaintext returns a key wrapped by a customer -// master key without the plaintext copy of that key. To retrieve the -// plaintext, see GenerateDataKey . -func (c *KMS) GenerateDataKeyWithoutPlaintext(req *GenerateDataKeyWithoutPlaintextRequest) (resp *GenerateDataKeyWithoutPlaintextResponse, err error) { - resp = &GenerateDataKeyWithoutPlaintextResponse{} - err = c.client.Do("GenerateDataKeyWithoutPlaintext", "POST", "/", req, resp) - return -} - -// GenerateRandom is undocumented. -func (c *KMS) GenerateRandom(req *GenerateRandomRequest) (resp *GenerateRandomResponse, err error) { - resp = &GenerateRandomResponse{} - err = c.client.Do("GenerateRandom", "POST", "/", req, resp) - return -} - -// GetKeyPolicy is undocumented. -func (c *KMS) GetKeyPolicy(req *GetKeyPolicyRequest) (resp *GetKeyPolicyResponse, err error) { - resp = &GetKeyPolicyResponse{} - err = c.client.Do("GetKeyPolicy", "POST", "/", req, resp) - return -} - -// GetKeyRotationStatus retrieves a Boolean value that indicates whether -// key rotation is enabled for the specified key. -func (c *KMS) GetKeyRotationStatus(req *GetKeyRotationStatusRequest) (resp *GetKeyRotationStatusResponse, err error) { - resp = &GetKeyRotationStatusResponse{} - err = c.client.Do("GetKeyRotationStatus", "POST", "/", req, resp) - return -} - -// ListAliases is undocumented. -func (c *KMS) ListAliases(req *ListAliasesRequest) (resp *ListAliasesResponse, err error) { - resp = &ListAliasesResponse{} - err = c.client.Do("ListAliases", "POST", "/", req, resp) - return -} - -// ListGrants is undocumented. -func (c *KMS) ListGrants(req *ListGrantsRequest) (resp *ListGrantsResponse, err error) { - resp = &ListGrantsResponse{} - err = c.client.Do("ListGrants", "POST", "/", req, resp) - return -} - -// ListKeyPolicies is undocumented. -func (c *KMS) ListKeyPolicies(req *ListKeyPoliciesRequest) (resp *ListKeyPoliciesResponse, err error) { - resp = &ListKeyPoliciesResponse{} - err = c.client.Do("ListKeyPolicies", "POST", "/", req, resp) - return -} - -// ListKeys is undocumented. -func (c *KMS) ListKeys(req *ListKeysRequest) (resp *ListKeysResponse, err error) { - resp = &ListKeysResponse{} - err = c.client.Do("ListKeys", "POST", "/", req, resp) - return -} - -// PutKeyPolicy is undocumented. -func (c *KMS) PutKeyPolicy(req *PutKeyPolicyRequest) (err error) { - // NRE - err = c.client.Do("PutKeyPolicy", "POST", "/", req, nil) - return -} - -// ReEncrypt encrypts data on the server side with a new customer master -// key without exposing the plaintext of the data on the client side. The -// data is first decrypted and then encrypted. This operation can also be -// used to change the encryption context of a ciphertext. -func (c *KMS) ReEncrypt(req *ReEncryptRequest) (resp *ReEncryptResponse, err error) { - resp = &ReEncryptResponse{} - err = c.client.Do("ReEncrypt", "POST", "/", req, resp) - return -} - -// RetireGrant retires a grant. You can retire a grant when you're done -// using it to clean up. You should revoke a grant when you intend to -// actively deny operations that depend on it. -func (c *KMS) RetireGrant(req *RetireGrantRequest) (err error) { - // NRE - err = c.client.Do("RetireGrant", "POST", "/", req, nil) - return -} - -// RevokeGrant revokes a grant. You can revoke a grant to actively deny -// operations that depend on it. -func (c *KMS) RevokeGrant(req *RevokeGrantRequest) (err error) { - // NRE - err = c.client.Do("RevokeGrant", "POST", "/", req, nil) - return -} - -// UpdateKeyDescription -func (c *KMS) UpdateKeyDescription(req *UpdateKeyDescriptionRequest) (err error) { - // NRE - err = c.client.Do("UpdateKeyDescription", "POST", "/", req, nil) - return -} - -// AliasListEntry is undocumented. -type AliasListEntry struct { - AliasARN aws.StringValue `json:"AliasArn,omitempty"` - AliasName aws.StringValue `json:"AliasName,omitempty"` - TargetKeyID aws.StringValue `json:"TargetKeyId,omitempty"` -} - -// CreateAliasRequest is undocumented. -type CreateAliasRequest struct { - AliasName aws.StringValue `json:"AliasName"` - TargetKeyID aws.StringValue `json:"TargetKeyId"` -} - -// CreateGrantRequest is undocumented. -type CreateGrantRequest struct { - Constraints *GrantConstraints `json:"Constraints,omitempty"` - GrantTokens []string `json:"GrantTokens,omitempty"` - GranteePrincipal aws.StringValue `json:"GranteePrincipal"` - KeyID aws.StringValue `json:"KeyId"` - Operations []string `json:"Operations,omitempty"` - RetiringPrincipal aws.StringValue `json:"RetiringPrincipal,omitempty"` -} - -// CreateGrantResponse is undocumented. -type CreateGrantResponse struct { - GrantID aws.StringValue `json:"GrantId,omitempty"` - GrantToken aws.StringValue `json:"GrantToken,omitempty"` -} - -// CreateKeyRequest is undocumented. -type CreateKeyRequest struct { - Description aws.StringValue `json:"Description,omitempty"` - KeyUsage aws.StringValue `json:"KeyUsage,omitempty"` - Policy aws.StringValue `json:"Policy,omitempty"` -} - -// CreateKeyResponse is undocumented. -type CreateKeyResponse struct { - KeyMetadata *KeyMetadata `json:"KeyMetadata,omitempty"` -} - -// Possible values for KMS. -const ( - DataKeySpecAES128 = "AES_128" - DataKeySpecAES256 = "AES_256" -) - -// DecryptRequest is undocumented. -type DecryptRequest struct { - CiphertextBlob []byte `json:"CiphertextBlob"` - EncryptionContext map[string]string `json:"EncryptionContext,omitempty"` - GrantTokens []string `json:"GrantTokens,omitempty"` -} - -// DecryptResponse is undocumented. -type DecryptResponse struct { - KeyID aws.StringValue `json:"KeyId,omitempty"` - Plaintext []byte `json:"Plaintext,omitempty"` -} - -// DeleteAliasRequest is undocumented. -type DeleteAliasRequest struct { - AliasName aws.StringValue `json:"AliasName"` -} - -// DescribeKeyRequest is undocumented. -type DescribeKeyRequest struct { - KeyID aws.StringValue `json:"KeyId"` -} - -// DescribeKeyResponse is undocumented. -type DescribeKeyResponse struct { - KeyMetadata *KeyMetadata `json:"KeyMetadata,omitempty"` -} - -// DisableKeyRequest is undocumented. -type DisableKeyRequest struct { - KeyID aws.StringValue `json:"KeyId"` -} - -// DisableKeyRotationRequest is undocumented. -type DisableKeyRotationRequest struct { - KeyID aws.StringValue `json:"KeyId"` -} - -// EnableKeyRequest is undocumented. -type EnableKeyRequest struct { - KeyID aws.StringValue `json:"KeyId"` -} - -// EnableKeyRotationRequest is undocumented. -type EnableKeyRotationRequest struct { - KeyID aws.StringValue `json:"KeyId"` -} - -// EncryptRequest is undocumented. -type EncryptRequest struct { - EncryptionContext map[string]string `json:"EncryptionContext,omitempty"` - GrantTokens []string `json:"GrantTokens,omitempty"` - KeyID aws.StringValue `json:"KeyId"` - Plaintext []byte `json:"Plaintext"` -} - -// EncryptResponse is undocumented. -type EncryptResponse struct { - CiphertextBlob []byte `json:"CiphertextBlob,omitempty"` - KeyID aws.StringValue `json:"KeyId,omitempty"` -} - -// GenerateDataKeyRequest is undocumented. -type GenerateDataKeyRequest struct { - EncryptionContext map[string]string `json:"EncryptionContext,omitempty"` - GrantTokens []string `json:"GrantTokens,omitempty"` - KeyID aws.StringValue `json:"KeyId"` - KeySpec aws.StringValue `json:"KeySpec,omitempty"` - NumberOfBytes aws.IntegerValue `json:"NumberOfBytes,omitempty"` -} - -// GenerateDataKeyResponse is undocumented. -type GenerateDataKeyResponse struct { - CiphertextBlob []byte `json:"CiphertextBlob,omitempty"` - KeyID aws.StringValue `json:"KeyId,omitempty"` - Plaintext []byte `json:"Plaintext,omitempty"` -} - -// GenerateDataKeyWithoutPlaintextRequest is undocumented. -type GenerateDataKeyWithoutPlaintextRequest struct { - EncryptionContext map[string]string `json:"EncryptionContext,omitempty"` - GrantTokens []string `json:"GrantTokens,omitempty"` - KeyID aws.StringValue `json:"KeyId"` - KeySpec aws.StringValue `json:"KeySpec,omitempty"` - NumberOfBytes aws.IntegerValue `json:"NumberOfBytes,omitempty"` -} - -// GenerateDataKeyWithoutPlaintextResponse is undocumented. -type GenerateDataKeyWithoutPlaintextResponse struct { - CiphertextBlob []byte `json:"CiphertextBlob,omitempty"` - KeyID aws.StringValue `json:"KeyId,omitempty"` -} - -// GenerateRandomRequest is undocumented. -type GenerateRandomRequest struct { - NumberOfBytes aws.IntegerValue `json:"NumberOfBytes,omitempty"` -} - -// GenerateRandomResponse is undocumented. -type GenerateRandomResponse struct { - Plaintext []byte `json:"Plaintext,omitempty"` -} - -// GetKeyPolicyRequest is undocumented. -type GetKeyPolicyRequest struct { - KeyID aws.StringValue `json:"KeyId"` - PolicyName aws.StringValue `json:"PolicyName"` -} - -// GetKeyPolicyResponse is undocumented. -type GetKeyPolicyResponse struct { - Policy aws.StringValue `json:"Policy,omitempty"` -} - -// GetKeyRotationStatusRequest is undocumented. -type GetKeyRotationStatusRequest struct { - KeyID aws.StringValue `json:"KeyId"` -} - -// GetKeyRotationStatusResponse is undocumented. -type GetKeyRotationStatusResponse struct { - KeyRotationEnabled aws.BooleanValue `json:"KeyRotationEnabled,omitempty"` -} - -// GrantConstraints is undocumented. -type GrantConstraints struct { - EncryptionContextEquals map[string]string `json:"EncryptionContextEquals,omitempty"` - EncryptionContextSubset map[string]string `json:"EncryptionContextSubset,omitempty"` -} - -// GrantListEntry is undocumented. -type GrantListEntry struct { - Constraints *GrantConstraints `json:"Constraints,omitempty"` - GrantID aws.StringValue `json:"GrantId,omitempty"` - GranteePrincipal aws.StringValue `json:"GranteePrincipal,omitempty"` - IssuingAccount aws.StringValue `json:"IssuingAccount,omitempty"` - Operations []string `json:"Operations,omitempty"` - RetiringPrincipal aws.StringValue `json:"RetiringPrincipal,omitempty"` -} - -// Possible values for KMS. -const ( - GrantOperationCreateGrant = "CreateGrant" - GrantOperationDecrypt = "Decrypt" - GrantOperationEncrypt = "Encrypt" - GrantOperationGenerateDataKey = "GenerateDataKey" - GrantOperationGenerateDataKeyWithoutPlaintext = "GenerateDataKeyWithoutPlaintext" - GrantOperationReEncryptFrom = "ReEncryptFrom" - GrantOperationReEncryptTo = "ReEncryptTo" - GrantOperationRetireGrant = "RetireGrant" -) - -// KeyListEntry is undocumented. -type KeyListEntry struct { - KeyARN aws.StringValue `json:"KeyArn,omitempty"` - KeyID aws.StringValue `json:"KeyId,omitempty"` -} - -// KeyMetadata is undocumented. -type KeyMetadata struct { - AWSAccountID aws.StringValue `json:"AWSAccountId,omitempty"` - ARN aws.StringValue `json:"Arn,omitempty"` - CreationDate *aws.UnixTimestamp `json:"CreationDate,omitempty"` - Description aws.StringValue `json:"Description,omitempty"` - Enabled aws.BooleanValue `json:"Enabled,omitempty"` - KeyID aws.StringValue `json:"KeyId"` - KeyUsage aws.StringValue `json:"KeyUsage,omitempty"` -} - -// Possible values for KMS. -const ( - KeyUsageTypeEncryptDecrypt = "ENCRYPT_DECRYPT" -) - -// ListAliasesRequest is undocumented. -type ListAliasesRequest struct { - Limit aws.IntegerValue `json:"Limit,omitempty"` - Marker aws.StringValue `json:"Marker,omitempty"` -} - -// ListAliasesResponse is undocumented. -type ListAliasesResponse struct { - Aliases []AliasListEntry `json:"Aliases,omitempty"` - NextMarker aws.StringValue `json:"NextMarker,omitempty"` - Truncated aws.BooleanValue `json:"Truncated,omitempty"` -} - -// ListGrantsRequest is undocumented. -type ListGrantsRequest struct { - KeyID aws.StringValue `json:"KeyId"` - Limit aws.IntegerValue `json:"Limit,omitempty"` - Marker aws.StringValue `json:"Marker,omitempty"` -} - -// ListGrantsResponse is undocumented. -type ListGrantsResponse struct { - Grants []GrantListEntry `json:"Grants,omitempty"` - NextMarker aws.StringValue `json:"NextMarker,omitempty"` - Truncated aws.BooleanValue `json:"Truncated,omitempty"` -} - -// ListKeyPoliciesRequest is undocumented. -type ListKeyPoliciesRequest struct { - KeyID aws.StringValue `json:"KeyId"` - Limit aws.IntegerValue `json:"Limit,omitempty"` - Marker aws.StringValue `json:"Marker,omitempty"` -} - -// ListKeyPoliciesResponse is undocumented. -type ListKeyPoliciesResponse struct { - NextMarker aws.StringValue `json:"NextMarker,omitempty"` - PolicyNames []string `json:"PolicyNames,omitempty"` - Truncated aws.BooleanValue `json:"Truncated,omitempty"` -} - -// ListKeysRequest is undocumented. -type ListKeysRequest struct { - Limit aws.IntegerValue `json:"Limit,omitempty"` - Marker aws.StringValue `json:"Marker,omitempty"` -} - -// ListKeysResponse is undocumented. -type ListKeysResponse struct { - Keys []KeyListEntry `json:"Keys,omitempty"` - NextMarker aws.StringValue `json:"NextMarker,omitempty"` - Truncated aws.BooleanValue `json:"Truncated,omitempty"` -} - -// PutKeyPolicyRequest is undocumented. -type PutKeyPolicyRequest struct { - KeyID aws.StringValue `json:"KeyId"` - Policy aws.StringValue `json:"Policy"` - PolicyName aws.StringValue `json:"PolicyName"` -} - -// ReEncryptRequest is undocumented. -type ReEncryptRequest struct { - CiphertextBlob []byte `json:"CiphertextBlob"` - DestinationEncryptionContext map[string]string `json:"DestinationEncryptionContext,omitempty"` - DestinationKeyID aws.StringValue `json:"DestinationKeyId"` - GrantTokens []string `json:"GrantTokens,omitempty"` - SourceEncryptionContext map[string]string `json:"SourceEncryptionContext,omitempty"` -} - -// ReEncryptResponse is undocumented. -type ReEncryptResponse struct { - CiphertextBlob []byte `json:"CiphertextBlob,omitempty"` - KeyID aws.StringValue `json:"KeyId,omitempty"` - SourceKeyID aws.StringValue `json:"SourceKeyId,omitempty"` -} - -// RetireGrantRequest is undocumented. -type RetireGrantRequest struct { - GrantToken aws.StringValue `json:"GrantToken"` -} - -// RevokeGrantRequest is undocumented. -type RevokeGrantRequest struct { - GrantID aws.StringValue `json:"GrantId"` - KeyID aws.StringValue `json:"KeyId"` -} - -// UpdateKeyDescriptionRequest is undocumented. -type UpdateKeyDescriptionRequest struct { - Description aws.StringValue `json:"Description"` - KeyID aws.StringValue `json:"KeyId"` -} - -// avoid errors if the packages aren't referenced -var _ time.Time diff --git a/src/github.com/getlantern/aws-sdk-go/gen/lambda/lambda.go b/src/github.com/getlantern/aws-sdk-go/gen/lambda/lambda.go deleted file mode 100644 index e709926bb0..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/gen/lambda/lambda.go +++ /dev/null @@ -1,799 +0,0 @@ -// THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. - -// Package lambda provides a client for Amazon Lambda. -package lambda - -import ( - "net/http" - "time" - - "github.com/awslabs/aws-sdk-go/aws" - "github.com/awslabs/aws-sdk-go/gen/endpoints" -) - -import ( - "bytes" - "encoding/json" - "fmt" - "io" - "io/ioutil" - "net/url" - "strconv" - "strings" -) - -// Lambda is a client for Amazon Lambda. -type Lambda struct { - client *aws.RestClient -} - -// New returns a new Lambda client. -func New(creds aws.CredentialsProvider, region string, client *http.Client) *Lambda { - if client == nil { - client = http.DefaultClient - } - - endpoint, service, region := endpoints.Lookup("lambda", region) - - return &Lambda{ - client: &aws.RestClient{ - Context: aws.Context{ - Credentials: creds, - Service: service, - Region: region, - }, - Client: client, - Endpoint: endpoint, - APIVersion: "2014-11-11", - }, - } -} - -// AddEventSource identifies an Amazon Kinesis stream as the event source -// for an AWS Lambda function. AWS Lambda invokes the specified function -// when records are posted to the stream. This is the pull model, where AWS -// Lambda invokes the function. For more information, go to AWS LambdaL How -// it Works in the AWS Lambda Developer Guide. This association between an -// Amazon Kinesis stream and an AWS Lambda function is called the event -// source mapping. You provide the configuration information (for example, -// which stream to read from and which AWS Lambda function to invoke) for -// the event source mapping in the request body. This operation requires -// permission for the iam:PassRole action for the IAM role. It also -// requires permission for the lambda:AddEventSource action. -func (c *Lambda) AddEventSource(req *AddEventSourceRequest) (resp *EventSourceConfiguration, err error) { - resp = &EventSourceConfiguration{} - - var body io.Reader - var contentType string - - uri := c.client.Endpoint + "/2014-11-13/event-source-mappings/" - - q := url.Values{} - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("POST", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - - if e := json.NewDecoder(httpResp.Body).Decode(resp); e != nil && e != io.EOF { - err = e - return - } - - return -} - -// DeleteFunction deletes the specified Lambda function code and -// configuration. This operation requires permission for the -// lambda:DeleteFunction action. -func (c *Lambda) DeleteFunction(req *DeleteFunctionRequest) (err error) { - // NRE - - var body io.Reader - var contentType string - - uri := c.client.Endpoint + "/2014-11-13/functions/{FunctionName}" - - if req.FunctionName != nil { - uri = strings.Replace(uri, "{"+"FunctionName"+"}", aws.EscapePath(*req.FunctionName), -1) - uri = strings.Replace(uri, "{"+"FunctionName+"+"}", aws.EscapePath(*req.FunctionName), -1) - } - - q := url.Values{} - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("DELETE", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - - return -} - -// GetEventSource returns configuration information for the specified event -// source mapping (see AddEventSource This operation requires permission -// for the lambda:GetEventSource action. -func (c *Lambda) GetEventSource(req *GetEventSourceRequest) (resp *EventSourceConfiguration, err error) { - resp = &EventSourceConfiguration{} - - var body io.Reader - var contentType string - - uri := c.client.Endpoint + "/2014-11-13/event-source-mappings/{UUID}" - - if req.UUID != nil { - uri = strings.Replace(uri, "{"+"UUID"+"}", aws.EscapePath(*req.UUID), -1) - uri = strings.Replace(uri, "{"+"UUID+"+"}", aws.EscapePath(*req.UUID), -1) - } - - q := url.Values{} - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("GET", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - - if e := json.NewDecoder(httpResp.Body).Decode(resp); e != nil && e != io.EOF { - err = e - return - } - - return -} - -// GetFunction returns the configuration information of the Lambda function -// and a presigned URL link to the .zip file you uploaded with -// UploadFunction so you can download the .zip file. Note that the URL is -// valid for up to 10 minutes. The configuration information is the same -// information you provided as parameters when uploading the function. This -// operation requires permission for the lambda:GetFunction action. -func (c *Lambda) GetFunction(req *GetFunctionRequest) (resp *GetFunctionResponse, err error) { - resp = &GetFunctionResponse{} - - var body io.Reader - var contentType string - - uri := c.client.Endpoint + "/2014-11-13/functions/{FunctionName}" - - if req.FunctionName != nil { - uri = strings.Replace(uri, "{"+"FunctionName"+"}", aws.EscapePath(*req.FunctionName), -1) - uri = strings.Replace(uri, "{"+"FunctionName+"+"}", aws.EscapePath(*req.FunctionName), -1) - } - - q := url.Values{} - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("GET", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - - if e := json.NewDecoder(httpResp.Body).Decode(resp); e != nil && e != io.EOF { - err = e - return - } - - return -} - -// GetFunctionConfiguration returns the configuration information of the -// Lambda function. This the same information you provided as parameters -// when uploading the function by using UploadFunction This operation -// requires permission for the lambda:GetFunctionConfiguration operation. -func (c *Lambda) GetFunctionConfiguration(req *GetFunctionConfigurationRequest) (resp *FunctionConfiguration, err error) { - resp = &FunctionConfiguration{} - - var body io.Reader - var contentType string - - uri := c.client.Endpoint + "/2014-11-13/functions/{FunctionName}/configuration" - - if req.FunctionName != nil { - uri = strings.Replace(uri, "{"+"FunctionName"+"}", aws.EscapePath(*req.FunctionName), -1) - uri = strings.Replace(uri, "{"+"FunctionName+"+"}", aws.EscapePath(*req.FunctionName), -1) - } - - q := url.Values{} - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("GET", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - - if e := json.NewDecoder(httpResp.Body).Decode(resp); e != nil && e != io.EOF { - err = e - return - } - - return -} - -// InvokeAsync submits an invocation request to AWS Lambda. Upon receiving -// the request, Lambda executes the specified function asynchronously. To -// see the logs generated by the Lambda function execution, see the -// CloudWatch logs console. This operation requires permission for the -// lambda:InvokeAsync action. -func (c *Lambda) InvokeAsync(req *InvokeAsyncRequest) (resp *InvokeAsyncResponse, err error) { - resp = &InvokeAsyncResponse{} - - var body io.Reader - var contentType string - - contentType = "application/json" - b, err := json.Marshal(req.InvokeArgs) - if err != nil { - return - } - body = bytes.NewReader(b) - - uri := c.client.Endpoint + "/2014-11-13/functions/{FunctionName}/invoke-async/" - - if req.FunctionName != nil { - uri = strings.Replace(uri, "{"+"FunctionName"+"}", aws.EscapePath(*req.FunctionName), -1) - uri = strings.Replace(uri, "{"+"FunctionName+"+"}", aws.EscapePath(*req.FunctionName), -1) - } - - q := url.Values{} - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("POST", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - - if e := json.NewDecoder(httpResp.Body).Decode(resp); e != nil && e != io.EOF { - err = e - return - } - - resp.Status = aws.Integer(httpResp.StatusCode) - - return -} - -// ListEventSources returns a list of event source mappings. For each -// mapping, the API returns configuration information (see AddEventSource -// ). You can optionally specify filters to retrieve specific event source -// mappings. This operation requires permission for the -// lambda:ListEventSources action. -func (c *Lambda) ListEventSources(req *ListEventSourcesRequest) (resp *ListEventSourcesResponse, err error) { - resp = &ListEventSourcesResponse{} - - var body io.Reader - var contentType string - - uri := c.client.Endpoint + "/2014-11-13/event-source-mappings/" - - q := url.Values{} - - if req.EventSourceARN != nil { - q.Set("EventSource", *req.EventSourceARN) - } - - if req.FunctionName != nil { - q.Set("FunctionName", *req.FunctionName) - } - - if req.Marker != nil { - q.Set("Marker", *req.Marker) - } - - if req.MaxItems != nil { - q.Set("MaxItems", strconv.Itoa(*req.MaxItems)) - } - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("GET", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - - if e := json.NewDecoder(httpResp.Body).Decode(resp); e != nil && e != io.EOF { - err = e - return - } - - return -} - -// ListFunctions returns a list of your Lambda functions. For each -// function, the response includes the function configuration information. -// You must use GetFunction to retrieve the code for your function. This -// operation requires permission for the lambda:ListFunctions action. -func (c *Lambda) ListFunctions(req *ListFunctionsRequest) (resp *ListFunctionsResponse, err error) { - resp = &ListFunctionsResponse{} - - var body io.Reader - var contentType string - - uri := c.client.Endpoint + "/2014-11-13/functions/" - - q := url.Values{} - - if req.Marker != nil { - q.Set("Marker", *req.Marker) - } - - if req.MaxItems != nil { - q.Set("MaxItems", strconv.Itoa(*req.MaxItems)) - } - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("GET", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - - if e := json.NewDecoder(httpResp.Body).Decode(resp); e != nil && e != io.EOF { - err = e - return - } - - return -} - -// RemoveEventSource removes an event source mapping. This means AWS Lambda -// will no longer invoke the function for events in the associated source. -// This operation requires permission for the lambda:RemoveEventSource -// action. -func (c *Lambda) RemoveEventSource(req *RemoveEventSourceRequest) (err error) { - // NRE - - var body io.Reader - var contentType string - - uri := c.client.Endpoint + "/2014-11-13/event-source-mappings/{UUID}" - - if req.UUID != nil { - uri = strings.Replace(uri, "{"+"UUID"+"}", aws.EscapePath(*req.UUID), -1) - uri = strings.Replace(uri, "{"+"UUID+"+"}", aws.EscapePath(*req.UUID), -1) - } - - q := url.Values{} - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("DELETE", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - - return -} - -// UpdateFunctionConfiguration updates the configuration parameters for the -// specified Lambda function by using the values provided in the request. -// You provide only the parameters you want to change. This operation must -// only be used on an existing Lambda function and cannot be used to update -// the function's code. This operation requires permission for the -// lambda:UpdateFunctionConfiguration action. -func (c *Lambda) UpdateFunctionConfiguration(req *UpdateFunctionConfigurationRequest) (resp *FunctionConfiguration, err error) { - resp = &FunctionConfiguration{} - - var body io.Reader - var contentType string - - uri := c.client.Endpoint + "/2014-11-13/functions/{FunctionName}/configuration" - - if req.FunctionName != nil { - uri = strings.Replace(uri, "{"+"FunctionName"+"}", aws.EscapePath(*req.FunctionName), -1) - uri = strings.Replace(uri, "{"+"FunctionName+"+"}", aws.EscapePath(*req.FunctionName), -1) - } - - q := url.Values{} - - if req.Description != nil { - q.Set("Description", *req.Description) - } - - if req.Handler != nil { - q.Set("Handler", *req.Handler) - } - - if req.MemorySize != nil { - q.Set("MemorySize", strconv.Itoa(*req.MemorySize)) - } - - if req.Role != nil { - q.Set("Role", *req.Role) - } - - if req.Timeout != nil { - q.Set("Timeout", strconv.Itoa(*req.Timeout)) - } - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("PUT", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - - if e := json.NewDecoder(httpResp.Body).Decode(resp); e != nil && e != io.EOF { - err = e - return - } - - return -} - -// UploadFunction creates a new Lambda function or updates an existing -// function. The function metadata is created from the request parameters, -// and the code for the function is provided by a .zip file in the request -// body. If the function name already exists, the existing Lambda function -// is updated with the new code and metadata. This operation requires -// permission for the lambda:UploadFunction action. -func (c *Lambda) UploadFunction(req *UploadFunctionRequest) (resp *FunctionConfiguration, err error) { - resp = &FunctionConfiguration{} - - var body io.Reader - var contentType string - - contentType = "application/json" - b, err := json.Marshal(req.FunctionZip) - if err != nil { - return - } - body = bytes.NewReader(b) - - uri := c.client.Endpoint + "/2014-11-13/functions/{FunctionName}" - - if req.FunctionName != nil { - uri = strings.Replace(uri, "{"+"FunctionName"+"}", aws.EscapePath(*req.FunctionName), -1) - uri = strings.Replace(uri, "{"+"FunctionName+"+"}", aws.EscapePath(*req.FunctionName), -1) - } - - q := url.Values{} - - if req.Description != nil { - q.Set("Description", *req.Description) - } - - if req.Handler != nil { - q.Set("Handler", *req.Handler) - } - - if req.MemorySize != nil { - q.Set("MemorySize", strconv.Itoa(*req.MemorySize)) - } - - if req.Mode != nil { - q.Set("Mode", *req.Mode) - } - - if req.Role != nil { - q.Set("Role", *req.Role) - } - - if req.Runtime != nil { - q.Set("Runtime", *req.Runtime) - } - - if req.Timeout != nil { - q.Set("Timeout", strconv.Itoa(*req.Timeout)) - } - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("PUT", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - - if e := json.NewDecoder(httpResp.Body).Decode(resp); e != nil && e != io.EOF { - err = e - return - } - - return -} - -// AddEventSourceRequest is undocumented. -type AddEventSourceRequest struct { - BatchSize aws.IntegerValue `json:"BatchSize,omitempty"` - EventSource aws.StringValue `json:"EventSource"` - FunctionName aws.StringValue `json:"FunctionName"` - Parameters map[string]string `json:"Parameters,omitempty"` - Role aws.StringValue `json:"Role"` -} - -// DeleteFunctionRequest is undocumented. -type DeleteFunctionRequest struct { - FunctionName aws.StringValue `json:"-"` -} - -// EventSourceConfiguration is undocumented. -type EventSourceConfiguration struct { - BatchSize aws.IntegerValue `json:"BatchSize,omitempty"` - EventSource aws.StringValue `json:"EventSource,omitempty"` - FunctionName aws.StringValue `json:"FunctionName,omitempty"` - IsActive aws.BooleanValue `json:"IsActive,omitempty"` - LastModified time.Time `json:"LastModified,omitempty"` - Parameters map[string]string `json:"Parameters,omitempty"` - Role aws.StringValue `json:"Role,omitempty"` - Status aws.StringValue `json:"Status,omitempty"` - UUID aws.StringValue `json:"UUID,omitempty"` -} - -// FunctionCodeLocation is undocumented. -type FunctionCodeLocation struct { - Location aws.StringValue `json:"Location,omitempty"` - RepositoryType aws.StringValue `json:"RepositoryType,omitempty"` -} - -// FunctionConfiguration is undocumented. -type FunctionConfiguration struct { - CodeSize aws.LongValue `json:"CodeSize,omitempty"` - ConfigurationID aws.StringValue `json:"ConfigurationId,omitempty"` - Description aws.StringValue `json:"Description,omitempty"` - FunctionARN aws.StringValue `json:"FunctionARN,omitempty"` - FunctionName aws.StringValue `json:"FunctionName,omitempty"` - Handler aws.StringValue `json:"Handler,omitempty"` - LastModified time.Time `json:"LastModified,omitempty"` - MemorySize aws.IntegerValue `json:"MemorySize,omitempty"` - Mode aws.StringValue `json:"Mode,omitempty"` - Role aws.StringValue `json:"Role,omitempty"` - Runtime aws.StringValue `json:"Runtime,omitempty"` - Timeout aws.IntegerValue `json:"Timeout,omitempty"` -} - -// GetEventSourceRequest is undocumented. -type GetEventSourceRequest struct { - UUID aws.StringValue `json:"-"` -} - -// GetFunctionConfigurationRequest is undocumented. -type GetFunctionConfigurationRequest struct { - FunctionName aws.StringValue `json:"-"` -} - -// GetFunctionRequest is undocumented. -type GetFunctionRequest struct { - FunctionName aws.StringValue `json:"-"` -} - -// GetFunctionResponse is undocumented. -type GetFunctionResponse struct { - Code *FunctionCodeLocation `json:"Code,omitempty"` - Configuration *FunctionConfiguration `json:"Configuration,omitempty"` -} - -// InvokeAsyncRequest is undocumented. -type InvokeAsyncRequest struct { - FunctionName aws.StringValue `json:"-"` - InvokeArgs []byte `json:"InvokeArgs"` -} - -// InvokeAsyncResponse is undocumented. -type InvokeAsyncResponse struct { - Status aws.IntegerValue `json:"-"` -} - -// ListEventSourcesRequest is undocumented. -type ListEventSourcesRequest struct { - EventSourceARN aws.StringValue `json:"-"` - FunctionName aws.StringValue `json:"-"` - Marker aws.StringValue `json:"-"` - MaxItems aws.IntegerValue `json:"-"` -} - -// ListEventSourcesResponse is undocumented. -type ListEventSourcesResponse struct { - EventSources []EventSourceConfiguration `json:"EventSources,omitempty"` - NextMarker aws.StringValue `json:"NextMarker,omitempty"` -} - -// ListFunctionsRequest is undocumented. -type ListFunctionsRequest struct { - Marker aws.StringValue `json:"-"` - MaxItems aws.IntegerValue `json:"-"` -} - -// ListFunctionsResponse is undocumented. -type ListFunctionsResponse struct { - Functions []FunctionConfiguration `json:"Functions,omitempty"` - NextMarker aws.StringValue `json:"NextMarker,omitempty"` -} - -// Possible values for Lambda. -const ( - ModeEvent = "event" -) - -// RemoveEventSourceRequest is undocumented. -type RemoveEventSourceRequest struct { - UUID aws.StringValue `json:"-"` -} - -// Possible values for Lambda. -const ( - RuntimeNodejs = "nodejs" -) - -// UpdateFunctionConfigurationRequest is undocumented. -type UpdateFunctionConfigurationRequest struct { - Description aws.StringValue `json:"-"` - FunctionName aws.StringValue `json:"-"` - Handler aws.StringValue `json:"-"` - MemorySize aws.IntegerValue `json:"-"` - Role aws.StringValue `json:"-"` - Timeout aws.IntegerValue `json:"-"` -} - -// UploadFunctionRequest is undocumented. -type UploadFunctionRequest struct { - Description aws.StringValue `json:"-"` - FunctionName aws.StringValue `json:"-"` - FunctionZip []byte `json:"FunctionZip"` - Handler aws.StringValue `json:"-"` - MemorySize aws.IntegerValue `json:"-"` - Mode aws.StringValue `json:"-"` - Role aws.StringValue `json:"-"` - Runtime aws.StringValue `json:"-"` - Timeout aws.IntegerValue `json:"-"` -} - -// avoid errors if the packages aren't referenced -var _ time.Time - -var _ bytes.Reader -var _ url.URL -var _ fmt.Stringer -var _ strings.Reader -var _ strconv.NumError -var _ = ioutil.Discard -var _ json.RawMessage diff --git a/src/github.com/getlantern/aws-sdk-go/gen/logs/logs.go b/src/github.com/getlantern/aws-sdk-go/gen/logs/logs.go deleted file mode 100644 index 871dfde5ab..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/gen/logs/logs.go +++ /dev/null @@ -1,385 +0,0 @@ -// THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. - -// Package logs provides a client for Amazon CloudWatch Logs. -package logs - -import ( - "net/http" - "time" - - "github.com/awslabs/aws-sdk-go/aws" - "github.com/awslabs/aws-sdk-go/gen/endpoints" -) - -// Logs is a client for Amazon CloudWatch Logs. -type Logs struct { - client *aws.JSONClient -} - -// New returns a new Logs client. -func New(creds aws.CredentialsProvider, region string, client *http.Client) *Logs { - if client == nil { - client = http.DefaultClient - } - - endpoint, service, region := endpoints.Lookup("logs", region) - - return &Logs{ - client: &aws.JSONClient{ - Context: aws.Context{ - Credentials: creds, - Service: service, - Region: region, - }, Client: client, - Endpoint: endpoint, - JSONVersion: "1.1", - TargetPrefix: "Logs_20140328", - }, - } -} - -// CreateLogGroup creates a new log group with the specified name. The name -// of the log group must be unique within a region for an AWS account. You -// can create up to 500 log groups per account. You must use the following -// guidelines when naming a log group: Log group names can be between 1 and -// 512 characters long. Allowed characters are a-z, 0-9, '_' (underscore), -// '-' (hyphen), '/' (forward slash), and '.' (period). -func (c *Logs) CreateLogGroup(req *CreateLogGroupRequest) (err error) { - // NRE - err = c.client.Do("CreateLogGroup", "POST", "/", req, nil) - return -} - -// CreateLogStream creates a new log stream in the specified log group. The -// name of the log stream must be unique within the log group. There is no -// limit on the number of log streams that can exist in a log group. You -// must use the following guidelines when naming a log stream: Log stream -// names can be between 1 and 512 characters long. The ':' colon character -// is not allowed. -func (c *Logs) CreateLogStream(req *CreateLogStreamRequest) (err error) { - // NRE - err = c.client.Do("CreateLogStream", "POST", "/", req, nil) - return -} - -// DeleteLogGroup deletes the log group with the specified name and -// permanently deletes all the archived log events associated with it. -func (c *Logs) DeleteLogGroup(req *DeleteLogGroupRequest) (err error) { - // NRE - err = c.client.Do("DeleteLogGroup", "POST", "/", req, nil) - return -} - -// DeleteLogStream deletes a log stream and permanently deletes all the -// archived log events associated with it. -func (c *Logs) DeleteLogStream(req *DeleteLogStreamRequest) (err error) { - // NRE - err = c.client.Do("DeleteLogStream", "POST", "/", req, nil) - return -} - -// DeleteMetricFilter deletes a metric filter associated with the specified -// log group. -func (c *Logs) DeleteMetricFilter(req *DeleteMetricFilterRequest) (err error) { - // NRE - err = c.client.Do("DeleteMetricFilter", "POST", "/", req, nil) - return -} - -// DeleteRetentionPolicy deletes the retention policy of the specified log -// group. Log events would not expire if they belong to log groups without -// a retention policy. -func (c *Logs) DeleteRetentionPolicy(req *DeleteRetentionPolicyRequest) (err error) { - // NRE - err = c.client.Do("DeleteRetentionPolicy", "POST", "/", req, nil) - return -} - -// DescribeLogGroups returns all the log groups that are associated with -// the AWS account making the request. The list returned in the response is -// ASCII-sorted by log group name. By default, this operation returns up to -// 50 log groups. If there are more log groups to list, the response would -// contain a nextToken value in the response body. You can also limit the -// number of log groups returned in the response by specifying the limit -// parameter in the request. -func (c *Logs) DescribeLogGroups(req *DescribeLogGroupsRequest) (resp *DescribeLogGroupsResponse, err error) { - resp = &DescribeLogGroupsResponse{} - err = c.client.Do("DescribeLogGroups", "POST", "/", req, resp) - return -} - -// DescribeLogStreams returns all the log streams that are associated with -// the specified log group. The list returned in the response is -// ASCII-sorted by log stream name. By default, this operation returns up -// to 50 log streams. If there are more log streams to list, the response -// would contain a nextToken value in the response body. You can also limit -// the number of log streams returned in the response by specifying the -// limit parameter in the request. -func (c *Logs) DescribeLogStreams(req *DescribeLogStreamsRequest) (resp *DescribeLogStreamsResponse, err error) { - resp = &DescribeLogStreamsResponse{} - err = c.client.Do("DescribeLogStreams", "POST", "/", req, resp) - return -} - -// DescribeMetricFilters returns all the metrics filters associated with -// the specified log group. The list returned in the response is -// ASCII-sorted by filter name. By default, this operation returns up to 50 -// metric filters. If there are more metric filters to list, the response -// would contain a nextToken value in the response body. You can also limit -// the number of metric filters returned in the response by specifying the -// limit parameter in the request. -func (c *Logs) DescribeMetricFilters(req *DescribeMetricFiltersRequest) (resp *DescribeMetricFiltersResponse, err error) { - resp = &DescribeMetricFiltersResponse{} - err = c.client.Do("DescribeMetricFilters", "POST", "/", req, resp) - return -} - -// GetLogEvents retrieves log events from the specified log stream. You can -// provide an optional time range to filter the results on the event -// timestamp . By default, this operation returns as much log events as can -// fit in a response size of 1MB, up to 10,000 log events. The response -// will always include a nextForwardToken and a nextBackwardToken in the -// response body. You can use any of these tokens in subsequent -// GetLogEvents requests to paginate through events in either forward or -// backward direction. You can also limit the number of log events returned -// in the response by specifying the limit parameter in the request. -func (c *Logs) GetLogEvents(req *GetLogEventsRequest) (resp *GetLogEventsResponse, err error) { - resp = &GetLogEventsResponse{} - err = c.client.Do("GetLogEvents", "POST", "/", req, resp) - return -} - -// PutLogEvents uploads a batch of log events to the specified log stream. -// Every PutLogEvents request must include the sequenceToken obtained from -// the response of the previous request. An upload in a newly created log -// stream does not require a sequenceToken . The batch of events must -// satisfy the following constraints: The maximum batch size is 32,768 -// bytes, and this size is calculated as the sum of all event messages in -// UTF-8, plus 26 bytes for each log event. None of the log events in the -// batch can be more than 2 hours in the future. None of the log events in -// the batch can be older than 14 days or the retention period of the log -// group. The log events in the batch must be in chronological ordered by -// their timestamp The maximum number of log events in a batch is 1,000. -func (c *Logs) PutLogEvents(req *PutLogEventsRequest) (resp *PutLogEventsResponse, err error) { - resp = &PutLogEventsResponse{} - err = c.client.Do("PutLogEvents", "POST", "/", req, resp) - return -} - -// PutMetricFilter creates or updates a metric filter and associates it -// with the specified log group. Metric filters allow you to configure -// rules to extract metric data from log events ingested through -// PutLogEvents requests. -func (c *Logs) PutMetricFilter(req *PutMetricFilterRequest) (err error) { - // NRE - err = c.client.Do("PutMetricFilter", "POST", "/", req, nil) - return -} - -// PutRetentionPolicy sets the retention of the specified log group. A -// retention policy allows you to configure the number of days you want to -// retain log events in the specified log group. -func (c *Logs) PutRetentionPolicy(req *PutRetentionPolicyRequest) (err error) { - // NRE - err = c.client.Do("PutRetentionPolicy", "POST", "/", req, nil) - return -} - -// TestMetricFilter tests the filter pattern of a metric filter against a -// sample of log event messages. You can use this operation to validate the -// correctness of a metric filter pattern. -func (c *Logs) TestMetricFilter(req *TestMetricFilterRequest) (resp *TestMetricFilterResponse, err error) { - resp = &TestMetricFilterResponse{} - err = c.client.Do("TestMetricFilter", "POST", "/", req, resp) - return -} - -// CreateLogGroupRequest is undocumented. -type CreateLogGroupRequest struct { - LogGroupName aws.StringValue `json:"logGroupName"` -} - -// CreateLogStreamRequest is undocumented. -type CreateLogStreamRequest struct { - LogGroupName aws.StringValue `json:"logGroupName"` - LogStreamName aws.StringValue `json:"logStreamName"` -} - -// DeleteLogGroupRequest is undocumented. -type DeleteLogGroupRequest struct { - LogGroupName aws.StringValue `json:"logGroupName"` -} - -// DeleteLogStreamRequest is undocumented. -type DeleteLogStreamRequest struct { - LogGroupName aws.StringValue `json:"logGroupName"` - LogStreamName aws.StringValue `json:"logStreamName"` -} - -// DeleteMetricFilterRequest is undocumented. -type DeleteMetricFilterRequest struct { - FilterName aws.StringValue `json:"filterName"` - LogGroupName aws.StringValue `json:"logGroupName"` -} - -// DeleteRetentionPolicyRequest is undocumented. -type DeleteRetentionPolicyRequest struct { - LogGroupName aws.StringValue `json:"logGroupName"` -} - -// DescribeLogGroupsRequest is undocumented. -type DescribeLogGroupsRequest struct { - Limit aws.IntegerValue `json:"limit,omitempty"` - LogGroupNamePrefix aws.StringValue `json:"logGroupNamePrefix,omitempty"` - NextToken aws.StringValue `json:"nextToken,omitempty"` -} - -// DescribeLogGroupsResponse is undocumented. -type DescribeLogGroupsResponse struct { - LogGroups []LogGroup `json:"logGroups,omitempty"` - NextToken aws.StringValue `json:"nextToken,omitempty"` -} - -// DescribeLogStreamsRequest is undocumented. -type DescribeLogStreamsRequest struct { - Limit aws.IntegerValue `json:"limit,omitempty"` - LogGroupName aws.StringValue `json:"logGroupName"` - LogStreamNamePrefix aws.StringValue `json:"logStreamNamePrefix,omitempty"` - NextToken aws.StringValue `json:"nextToken,omitempty"` -} - -// DescribeLogStreamsResponse is undocumented. -type DescribeLogStreamsResponse struct { - LogStreams []LogStream `json:"logStreams,omitempty"` - NextToken aws.StringValue `json:"nextToken,omitempty"` -} - -// DescribeMetricFiltersRequest is undocumented. -type DescribeMetricFiltersRequest struct { - FilterNamePrefix aws.StringValue `json:"filterNamePrefix,omitempty"` - Limit aws.IntegerValue `json:"limit,omitempty"` - LogGroupName aws.StringValue `json:"logGroupName"` - NextToken aws.StringValue `json:"nextToken,omitempty"` -} - -// DescribeMetricFiltersResponse is undocumented. -type DescribeMetricFiltersResponse struct { - MetricFilters []MetricFilter `json:"metricFilters,omitempty"` - NextToken aws.StringValue `json:"nextToken,omitempty"` -} - -// GetLogEventsRequest is undocumented. -type GetLogEventsRequest struct { - EndTime aws.LongValue `json:"endTime,omitempty"` - Limit aws.IntegerValue `json:"limit,omitempty"` - LogGroupName aws.StringValue `json:"logGroupName"` - LogStreamName aws.StringValue `json:"logStreamName"` - NextToken aws.StringValue `json:"nextToken,omitempty"` - StartFromHead aws.BooleanValue `json:"startFromHead,omitempty"` - StartTime aws.LongValue `json:"startTime,omitempty"` -} - -// GetLogEventsResponse is undocumented. -type GetLogEventsResponse struct { - Events []OutputLogEvent `json:"events,omitempty"` - NextBackwardToken aws.StringValue `json:"nextBackwardToken,omitempty"` - NextForwardToken aws.StringValue `json:"nextForwardToken,omitempty"` -} - -// InputLogEvent is undocumented. -type InputLogEvent struct { - Message aws.StringValue `json:"message"` - Timestamp aws.LongValue `json:"timestamp"` -} - -// LogGroup is undocumented. -type LogGroup struct { - ARN aws.StringValue `json:"arn,omitempty"` - CreationTime aws.LongValue `json:"creationTime,omitempty"` - LogGroupName aws.StringValue `json:"logGroupName,omitempty"` - MetricFilterCount aws.IntegerValue `json:"metricFilterCount,omitempty"` - RetentionInDays aws.IntegerValue `json:"retentionInDays,omitempty"` - StoredBytes aws.LongValue `json:"storedBytes,omitempty"` -} - -// LogStream is undocumented. -type LogStream struct { - ARN aws.StringValue `json:"arn,omitempty"` - CreationTime aws.LongValue `json:"creationTime,omitempty"` - FirstEventTimestamp aws.LongValue `json:"firstEventTimestamp,omitempty"` - LastEventTimestamp aws.LongValue `json:"lastEventTimestamp,omitempty"` - LastIngestionTime aws.LongValue `json:"lastIngestionTime,omitempty"` - LogStreamName aws.StringValue `json:"logStreamName,omitempty"` - StoredBytes aws.LongValue `json:"storedBytes,omitempty"` - UploadSequenceToken aws.StringValue `json:"uploadSequenceToken,omitempty"` -} - -// MetricFilter is undocumented. -type MetricFilter struct { - CreationTime aws.LongValue `json:"creationTime,omitempty"` - FilterName aws.StringValue `json:"filterName,omitempty"` - FilterPattern aws.StringValue `json:"filterPattern,omitempty"` - MetricTransformations []MetricTransformation `json:"metricTransformations,omitempty"` -} - -// MetricFilterMatchRecord is undocumented. -type MetricFilterMatchRecord struct { - EventMessage aws.StringValue `json:"eventMessage,omitempty"` - EventNumber aws.LongValue `json:"eventNumber,omitempty"` - ExtractedValues map[string]string `json:"extractedValues,omitempty"` -} - -// MetricTransformation is undocumented. -type MetricTransformation struct { - MetricName aws.StringValue `json:"metricName"` - MetricNamespace aws.StringValue `json:"metricNamespace"` - MetricValue aws.StringValue `json:"metricValue"` -} - -// OutputLogEvent is undocumented. -type OutputLogEvent struct { - IngestionTime aws.LongValue `json:"ingestionTime,omitempty"` - Message aws.StringValue `json:"message,omitempty"` - Timestamp aws.LongValue `json:"timestamp,omitempty"` -} - -// PutLogEventsRequest is undocumented. -type PutLogEventsRequest struct { - LogEvents []InputLogEvent `json:"logEvents"` - LogGroupName aws.StringValue `json:"logGroupName"` - LogStreamName aws.StringValue `json:"logStreamName"` - SequenceToken aws.StringValue `json:"sequenceToken,omitempty"` -} - -// PutLogEventsResponse is undocumented. -type PutLogEventsResponse struct { - NextSequenceToken aws.StringValue `json:"nextSequenceToken,omitempty"` -} - -// PutMetricFilterRequest is undocumented. -type PutMetricFilterRequest struct { - FilterName aws.StringValue `json:"filterName"` - FilterPattern aws.StringValue `json:"filterPattern"` - LogGroupName aws.StringValue `json:"logGroupName"` - MetricTransformations []MetricTransformation `json:"metricTransformations"` -} - -// PutRetentionPolicyRequest is undocumented. -type PutRetentionPolicyRequest struct { - LogGroupName aws.StringValue `json:"logGroupName"` - RetentionInDays aws.IntegerValue `json:"retentionInDays"` -} - -// TestMetricFilterRequest is undocumented. -type TestMetricFilterRequest struct { - FilterPattern aws.StringValue `json:"filterPattern"` - LogEventMessages []string `json:"logEventMessages"` -} - -// TestMetricFilterResponse is undocumented. -type TestMetricFilterResponse struct { - Matches []MetricFilterMatchRecord `json:"matches,omitempty"` -} - -// avoid errors if the packages aren't referenced -var _ time.Time diff --git a/src/github.com/getlantern/aws-sdk-go/gen/opsworks/opsworks.go b/src/github.com/getlantern/aws-sdk-go/gen/opsworks/opsworks.go deleted file mode 100644 index 3767b4063a..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/gen/opsworks/opsworks.go +++ /dev/null @@ -1,1965 +0,0 @@ -// THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. - -// Package opsworks provides a client for AWS OpsWorks. -package opsworks - -import ( - "net/http" - "time" - - "github.com/awslabs/aws-sdk-go/aws" - "github.com/awslabs/aws-sdk-go/gen/endpoints" -) - -// OpsWorks is a client for AWS OpsWorks. -type OpsWorks struct { - client *aws.JSONClient -} - -// New returns a new OpsWorks client. -func New(creds aws.CredentialsProvider, region string, client *http.Client) *OpsWorks { - if client == nil { - client = http.DefaultClient - } - - endpoint, service, region := endpoints.Lookup("opsworks", region) - - return &OpsWorks{ - client: &aws.JSONClient{ - Context: aws.Context{ - Credentials: creds, - Service: service, - Region: region, - }, Client: client, - Endpoint: endpoint, - JSONVersion: "1.1", - TargetPrefix: "OpsWorks_20130218", - }, - } -} - -// AssignInstance assign a registered instance to a custom layer. You -// cannot use this action with instances that were created with AWS -// OpsWorks. Required Permissions : To use this action, an IAM user must -// have a Manage permissions level for the stack or an attached policy that -// explicitly grants permissions. For more information on user permissions, -// see Managing User Permissions -func (c *OpsWorks) AssignInstance(req *AssignInstanceRequest) (err error) { - // NRE - err = c.client.Do("AssignInstance", "POST", "/", req, nil) - return -} - -// AssignVolume assigns one of the stack's registered Amazon EBS volumes to -// a specified instance. The volume must first be registered with the stack -// by calling RegisterVolume . For more information, see Resource -// Management Required Permissions : To use this action, an IAM user must -// have a Manage permissions level for the stack, or an attached policy -// that explicitly grants permissions. For more information on user -// permissions, see Managing User Permissions -func (c *OpsWorks) AssignVolume(req *AssignVolumeRequest) (err error) { - // NRE - err = c.client.Do("AssignVolume", "POST", "/", req, nil) - return -} - -// AssociateElasticIP associates one of the stack's registered Elastic IP -// addresses with a specified instance. The address must first be -// registered with the stack by calling RegisterElasticIp . For more -// information, see Resource Management Required Permissions : To use this -// action, an IAM user must have a Manage permissions level for the stack, -// or an attached policy that explicitly grants permissions. For more -// information on user permissions, see Managing User Permissions -func (c *OpsWorks) AssociateElasticIP(req *AssociateElasticIPRequest) (err error) { - // NRE - err = c.client.Do("AssociateElasticIp", "POST", "/", req, nil) - return -} - -// AttachElasticLoadBalancer attaches an Elastic Load Balancing load -// balancer to a specified layer. For more information, see Elastic Load -// Balancing You must create the Elastic Load Balancing instance -// separately, by using the Elastic Load Balancing console, or For more -// information, see Elastic Load Balancing Developer Guide Required -// Permissions : To use this action, an IAM user must have a Manage -// permissions level for the stack, or an attached policy that explicitly -// grants permissions. For more information on user permissions, see -// Managing User Permissions -func (c *OpsWorks) AttachElasticLoadBalancer(req *AttachElasticLoadBalancerRequest) (err error) { - // NRE - err = c.client.Do("AttachElasticLoadBalancer", "POST", "/", req, nil) - return -} - -// CloneStack creates a clone of a specified stack. For more information, -// see Clone a Stack Required Permissions : To use this action, an IAM user -// must have an attached policy that explicitly grants permissions. For -// more information on user permissions, see Managing User Permissions -func (c *OpsWorks) CloneStack(req *CloneStackRequest) (resp *CloneStackResult, err error) { - resp = &CloneStackResult{} - err = c.client.Do("CloneStack", "POST", "/", req, resp) - return -} - -// CreateApp creates an app for a specified stack. For more information, -// see Creating Apps Required Permissions : To use this action, an IAM user -// must have a Manage permissions level for the stack, or an attached -// policy that explicitly grants permissions. For more information on user -// permissions, see Managing User Permissions -func (c *OpsWorks) CreateApp(req *CreateAppRequest) (resp *CreateAppResult, err error) { - resp = &CreateAppResult{} - err = c.client.Do("CreateApp", "POST", "/", req, resp) - return -} - -// CreateDeployment runs deployment or stack commands. For more -// information, see Deploying Apps and Run Stack Commands Required -// Permissions : To use this action, an IAM user must have a Deploy or -// Manage permissions level for the stack, or an attached policy that -// explicitly grants permissions. For more information on user permissions, -// see Managing User Permissions -func (c *OpsWorks) CreateDeployment(req *CreateDeploymentRequest) (resp *CreateDeploymentResult, err error) { - resp = &CreateDeploymentResult{} - err = c.client.Do("CreateDeployment", "POST", "/", req, resp) - return -} - -// CreateInstance creates an instance in a specified stack. For more -// information, see Adding an Instance to a Layer Required Permissions : To -// use this action, an IAM user must have a Manage permissions level for -// the stack, or an attached policy that explicitly grants permissions. For -// more information on user permissions, see Managing User Permissions -func (c *OpsWorks) CreateInstance(req *CreateInstanceRequest) (resp *CreateInstanceResult, err error) { - resp = &CreateInstanceResult{} - err = c.client.Do("CreateInstance", "POST", "/", req, resp) - return -} - -// CreateLayer creates a layer. For more information, see How to Create a -// Layer You should use CreateLayer for noncustom layer types such as PHP -// App Server only if the stack does not have an existing layer of that -// type. A stack can have at most one instance of each noncustom layer; if -// you attempt to create a second instance, CreateLayer fails. A stack can -// have an arbitrary number of custom layers, so you can call CreateLayer -// as many times as you like for that layer type. Required Permissions : To -// use this action, an IAM user must have a Manage permissions level for -// the stack, or an attached policy that explicitly grants permissions. For -// more information on user permissions, see Managing User Permissions -func (c *OpsWorks) CreateLayer(req *CreateLayerRequest) (resp *CreateLayerResult, err error) { - resp = &CreateLayerResult{} - err = c.client.Do("CreateLayer", "POST", "/", req, resp) - return -} - -// CreateStack creates a new stack. For more information, see Create a New -// Stack Required Permissions : To use this action, an IAM user must have -// an attached policy that explicitly grants permissions. For more -// information on user permissions, see Managing User Permissions -func (c *OpsWorks) CreateStack(req *CreateStackRequest) (resp *CreateStackResult, err error) { - resp = &CreateStackResult{} - err = c.client.Do("CreateStack", "POST", "/", req, resp) - return -} - -// CreateUserProfile creates a new user profile. Required Permissions : To -// use this action, an IAM user must have an attached policy that -// explicitly grants permissions. For more information on user permissions, -// see Managing User Permissions -func (c *OpsWorks) CreateUserProfile(req *CreateUserProfileRequest) (resp *CreateUserProfileResult, err error) { - resp = &CreateUserProfileResult{} - err = c.client.Do("CreateUserProfile", "POST", "/", req, resp) - return -} - -// DeleteApp deletes a specified app. Required Permissions : To use this -// action, an IAM user must have a Manage permissions level for the stack, -// or an attached policy that explicitly grants permissions. For more -// information on user permissions, see Managing User Permissions -func (c *OpsWorks) DeleteApp(req *DeleteAppRequest) (err error) { - // NRE - err = c.client.Do("DeleteApp", "POST", "/", req, nil) - return -} - -// DeleteInstance deletes a specified instance, which terminates the -// associated Amazon EC2 instance. You must stop an instance before you can -// delete it. For more information, see Deleting Instances Required -// Permissions : To use this action, an IAM user must have a Manage -// permissions level for the stack, or an attached policy that explicitly -// grants permissions. For more information on user permissions, see -// Managing User Permissions -func (c *OpsWorks) DeleteInstance(req *DeleteInstanceRequest) (err error) { - // NRE - err = c.client.Do("DeleteInstance", "POST", "/", req, nil) - return -} - -// DeleteLayer deletes a specified layer. You must first stop and then -// delete all associated instances or unassign registered instances. For -// more information, see How to Delete a Layer Required Permissions : To -// use this action, an IAM user must have a Manage permissions level for -// the stack, or an attached policy that explicitly grants permissions. For -// more information on user permissions, see Managing User Permissions -func (c *OpsWorks) DeleteLayer(req *DeleteLayerRequest) (err error) { - // NRE - err = c.client.Do("DeleteLayer", "POST", "/", req, nil) - return -} - -// DeleteStack deletes a specified stack. You must first delete all -// instances, layers, and apps or deregister registered instances. For more -// information, see Shut Down a Stack Required Permissions : To use this -// action, an IAM user must have a Manage permissions level for the stack, -// or an attached policy that explicitly grants permissions. For more -// information on user permissions, see Managing User Permissions -func (c *OpsWorks) DeleteStack(req *DeleteStackRequest) (err error) { - // NRE - err = c.client.Do("DeleteStack", "POST", "/", req, nil) - return -} - -// DeleteUserProfile deletes a user profile. Required Permissions : To use -// this action, an IAM user must have an attached policy that explicitly -// grants permissions. For more information on user permissions, see -// Managing User Permissions -func (c *OpsWorks) DeleteUserProfile(req *DeleteUserProfileRequest) (err error) { - // NRE - err = c.client.Do("DeleteUserProfile", "POST", "/", req, nil) - return -} - -// DeregisterElasticIP deregisters a specified Elastic IP address. The -// address can then be registered by another stack. For more information, -// see Resource Management Required Permissions : To use this action, an -// IAM user must have a Manage permissions level for the stack, or an -// attached policy that explicitly grants permissions. For more information -// on user permissions, see Managing User Permissions -func (c *OpsWorks) DeregisterElasticIP(req *DeregisterElasticIPRequest) (err error) { - // NRE - err = c.client.Do("DeregisterElasticIp", "POST", "/", req, nil) - return -} - -// DeregisterInstance deregister a registered Amazon EC2 or on-premises -// instance. This action removes the instance from the stack and returns it -// to your control. This action can not be used with instances that were -// created with AWS OpsWorks. Required Permissions : To use this action, an -// IAM user must have a Manage permissions level for the stack or an -// attached policy that explicitly grants permissions. For more information -// on user permissions, see Managing User Permissions -func (c *OpsWorks) DeregisterInstance(req *DeregisterInstanceRequest) (err error) { - // NRE - err = c.client.Do("DeregisterInstance", "POST", "/", req, nil) - return -} - -// DeregisterRDSDBInstance deregisters an Amazon RDS instance. Required -// Permissions : To use this action, an IAM user must have a Manage -// permissions level for the stack, or an attached policy that explicitly -// grants permissions. For more information on user permissions, see -// Managing User Permissions -func (c *OpsWorks) DeregisterRDSDBInstance(req *DeregisterRDSDBInstanceRequest) (err error) { - // NRE - err = c.client.Do("DeregisterRdsDbInstance", "POST", "/", req, nil) - return -} - -// DeregisterVolume deregisters an Amazon EBS volume. The volume can then -// be registered by another stack. For more information, see Resource -// Management Required Permissions : To use this action, an IAM user must -// have a Manage permissions level for the stack, or an attached policy -// that explicitly grants permissions. For more information on user -// permissions, see Managing User Permissions -func (c *OpsWorks) DeregisterVolume(req *DeregisterVolumeRequest) (err error) { - // NRE - err = c.client.Do("DeregisterVolume", "POST", "/", req, nil) - return -} - -// DescribeApps you must specify at least one of the parameters. Required -// Permissions : To use this action, an IAM user must have a Show, Deploy, -// or Manage permissions level for the stack, or an attached policy that -// explicitly grants permissions. For more information on user permissions, -// see Managing User Permissions -func (c *OpsWorks) DescribeApps(req *DescribeAppsRequest) (resp *DescribeAppsResult, err error) { - resp = &DescribeAppsResult{} - err = c.client.Do("DescribeApps", "POST", "/", req, resp) - return -} - -// DescribeCommands you must specify at least one of the parameters. -// Required Permissions : To use this action, an IAM user must have a Show, -// Deploy, or Manage permissions level for the stack, or an attached policy -// that explicitly grants permissions. For more information on user -// permissions, see Managing User Permissions -func (c *OpsWorks) DescribeCommands(req *DescribeCommandsRequest) (resp *DescribeCommandsResult, err error) { - resp = &DescribeCommandsResult{} - err = c.client.Do("DescribeCommands", "POST", "/", req, resp) - return -} - -// DescribeDeployments requests a description of a specified set of -// deployments. You must specify at least one of the parameters. Required -// Permissions : To use this action, an IAM user must have a Show, Deploy, -// or Manage permissions level for the stack, or an attached policy that -// explicitly grants permissions. For more information on user permissions, -// see Managing User Permissions -func (c *OpsWorks) DescribeDeployments(req *DescribeDeploymentsRequest) (resp *DescribeDeploymentsResult, err error) { - resp = &DescribeDeploymentsResult{} - err = c.client.Do("DescribeDeployments", "POST", "/", req, resp) - return -} - -// DescribeElasticIPs you must specify at least one of the parameters. -// Required Permissions : To use this action, an IAM user must have a Show, -// Deploy, or Manage permissions level for the stack, or an attached policy -// that explicitly grants permissions. For more information on user -// permissions, see Managing User Permissions -func (c *OpsWorks) DescribeElasticIPs(req *DescribeElasticIPsRequest) (resp *DescribeElasticIPsResult, err error) { - resp = &DescribeElasticIPsResult{} - err = c.client.Do("DescribeElasticIps", "POST", "/", req, resp) - return -} - -// DescribeElasticLoadBalancers describes a stack's Elastic Load Balancing -// instances. You must specify at least one of the parameters. Required -// Permissions : To use this action, an IAM user must have a Show, Deploy, -// or Manage permissions level for the stack, or an attached policy that -// explicitly grants permissions. For more information on user permissions, -// see Managing User Permissions -func (c *OpsWorks) DescribeElasticLoadBalancers(req *DescribeElasticLoadBalancersRequest) (resp *DescribeElasticLoadBalancersResult, err error) { - resp = &DescribeElasticLoadBalancersResult{} - err = c.client.Do("DescribeElasticLoadBalancers", "POST", "/", req, resp) - return -} - -// DescribeInstances you must specify at least one of the parameters. -// Required Permissions : To use this action, an IAM user must have a Show, -// Deploy, or Manage permissions level for the stack, or an attached policy -// that explicitly grants permissions. For more information on user -// permissions, see Managing User Permissions -func (c *OpsWorks) DescribeInstances(req *DescribeInstancesRequest) (resp *DescribeInstancesResult, err error) { - resp = &DescribeInstancesResult{} - err = c.client.Do("DescribeInstances", "POST", "/", req, resp) - return -} - -// DescribeLayers requests a description of one or more layers in a -// specified stack. You must specify at least one of the parameters. -// Required Permissions : To use this action, an IAM user must have a Show, -// Deploy, or Manage permissions level for the stack, or an attached policy -// that explicitly grants permissions. For more information on user -// permissions, see Managing User Permissions -func (c *OpsWorks) DescribeLayers(req *DescribeLayersRequest) (resp *DescribeLayersResult, err error) { - resp = &DescribeLayersResult{} - err = c.client.Do("DescribeLayers", "POST", "/", req, resp) - return -} - -// DescribeLoadBasedAutoScaling describes load-based auto scaling -// configurations for specified layers. You must specify at least one of -// the parameters. Required Permissions : To use this action, an IAM user -// must have a Show, Deploy, or Manage permissions level for the stack, or -// an attached policy that explicitly grants permissions. For more -// information on user permissions, see Managing User Permissions -func (c *OpsWorks) DescribeLoadBasedAutoScaling(req *DescribeLoadBasedAutoScalingRequest) (resp *DescribeLoadBasedAutoScalingResult, err error) { - resp = &DescribeLoadBasedAutoScalingResult{} - err = c.client.Do("DescribeLoadBasedAutoScaling", "POST", "/", req, resp) - return -} - -// DescribeMyUserProfile describes a user's SSH information. Required -// Permissions : To use this action, an IAM user must have self-management -// enabled or an attached policy that explicitly grants permissions. For -// more information on user permissions, see Managing User Permissions -func (c *OpsWorks) DescribeMyUserProfile() (resp *DescribeMyUserProfileResult, err error) { - resp = &DescribeMyUserProfileResult{} - err = c.client.Do("DescribeMyUserProfile", "POST", "/", nil, resp) - return -} - -// DescribePermissions describes the permissions for a specified stack. -// Required Permissions : To use this action, an IAM user must have a -// Manage permissions level for the stack, or an attached policy that -// explicitly grants permissions. For more information on user permissions, -// see Managing User Permissions -func (c *OpsWorks) DescribePermissions(req *DescribePermissionsRequest) (resp *DescribePermissionsResult, err error) { - resp = &DescribePermissionsResult{} - err = c.client.Do("DescribePermissions", "POST", "/", req, resp) - return -} - -// DescribeRAIDArrays you must specify at least one of the parameters. -// Required Permissions : To use this action, an IAM user must have a Show, -// Deploy, or Manage permissions level for the stack, or an attached policy -// that explicitly grants permissions. For more information on user -// permissions, see Managing User Permissions -func (c *OpsWorks) DescribeRAIDArrays(req *DescribeRAIDArraysRequest) (resp *DescribeRAIDArraysResult, err error) { - resp = &DescribeRAIDArraysResult{} - err = c.client.Do("DescribeRaidArrays", "POST", "/", req, resp) - return -} - -// DescribeRDSDBInstances describes Amazon RDS instances. Required -// Permissions : To use this action, an IAM user must have a Show, Deploy, -// or Manage permissions level for the stack, or an attached policy that -// explicitly grants permissions. For more information on user permissions, -// see Managing User Permissions -func (c *OpsWorks) DescribeRDSDBInstances(req *DescribeRDSDBInstancesRequest) (resp *DescribeRDSDBInstancesResult, err error) { - resp = &DescribeRDSDBInstancesResult{} - err = c.client.Do("DescribeRdsDbInstances", "POST", "/", req, resp) - return -} - -// DescribeServiceErrors describes AWS OpsWorks service errors. Required -// Permissions : To use this action, an IAM user must have a Show, Deploy, -// or Manage permissions level for the stack, or an attached policy that -// explicitly grants permissions. For more information on user permissions, -// see Managing User Permissions -func (c *OpsWorks) DescribeServiceErrors(req *DescribeServiceErrorsRequest) (resp *DescribeServiceErrorsResult, err error) { - resp = &DescribeServiceErrorsResult{} - err = c.client.Do("DescribeServiceErrors", "POST", "/", req, resp) - return -} - -// DescribeStackProvisioningParameters requests a description of a stack's -// provisioning parameters. Required Permissions : To use this action, an -// IAM user must have a Show, Deploy, or Manage permissions level for the -// stack or an attached policy that explicitly grants permissions. For more -// information on user permissions, see Managing User Permissions -func (c *OpsWorks) DescribeStackProvisioningParameters(req *DescribeStackProvisioningParametersRequest) (resp *DescribeStackProvisioningParametersResult, err error) { - resp = &DescribeStackProvisioningParametersResult{} - err = c.client.Do("DescribeStackProvisioningParameters", "POST", "/", req, resp) - return -} - -// DescribeStackSummary describes the number of layers and apps in a -// specified stack, and the number of instances in each state, such as -// running_setup or online Required Permissions : To use this action, an -// IAM user must have a Show, Deploy, or Manage permissions level for the -// stack, or an attached policy that explicitly grants permissions. For -// more information on user permissions, see Managing User Permissions -func (c *OpsWorks) DescribeStackSummary(req *DescribeStackSummaryRequest) (resp *DescribeStackSummaryResult, err error) { - resp = &DescribeStackSummaryResult{} - err = c.client.Do("DescribeStackSummary", "POST", "/", req, resp) - return -} - -// DescribeStacks requests a description of one or more stacks. Required -// Permissions : To use this action, an IAM user must have a Show, Deploy, -// or Manage permissions level for the stack, or an attached policy that -// explicitly grants permissions. For more information on user permissions, -// see Managing User Permissions -func (c *OpsWorks) DescribeStacks(req *DescribeStacksRequest) (resp *DescribeStacksResult, err error) { - resp = &DescribeStacksResult{} - err = c.client.Do("DescribeStacks", "POST", "/", req, resp) - return -} - -// DescribeTimeBasedAutoScaling describes time-based auto scaling -// configurations for specified instances. You must specify at least one of -// the parameters. Required Permissions : To use this action, an IAM user -// must have a Show, Deploy, or Manage permissions level for the stack, or -// an attached policy that explicitly grants permissions. For more -// information on user permissions, see Managing User Permissions -func (c *OpsWorks) DescribeTimeBasedAutoScaling(req *DescribeTimeBasedAutoScalingRequest) (resp *DescribeTimeBasedAutoScalingResult, err error) { - resp = &DescribeTimeBasedAutoScalingResult{} - err = c.client.Do("DescribeTimeBasedAutoScaling", "POST", "/", req, resp) - return -} - -// DescribeUserProfiles describe specified users. Required Permissions : To -// use this action, an IAM user must have an attached policy that -// explicitly grants permissions. For more information on user permissions, -// see Managing User Permissions -func (c *OpsWorks) DescribeUserProfiles(req *DescribeUserProfilesRequest) (resp *DescribeUserProfilesResult, err error) { - resp = &DescribeUserProfilesResult{} - err = c.client.Do("DescribeUserProfiles", "POST", "/", req, resp) - return -} - -// DescribeVolumes you must specify at least one of the parameters. -// Required Permissions : To use this action, an IAM user must have a Show, -// Deploy, or Manage permissions level for the stack, or an attached policy -// that explicitly grants permissions. For more information on user -// permissions, see Managing User Permissions -func (c *OpsWorks) DescribeVolumes(req *DescribeVolumesRequest) (resp *DescribeVolumesResult, err error) { - resp = &DescribeVolumesResult{} - err = c.client.Do("DescribeVolumes", "POST", "/", req, resp) - return -} - -// DetachElasticLoadBalancer detaches a specified Elastic Load Balancing -// instance from its layer. Required Permissions : To use this action, an -// IAM user must have a Manage permissions level for the stack, or an -// attached policy that explicitly grants permissions. For more information -// on user permissions, see Managing User Permissions -func (c *OpsWorks) DetachElasticLoadBalancer(req *DetachElasticLoadBalancerRequest) (err error) { - // NRE - err = c.client.Do("DetachElasticLoadBalancer", "POST", "/", req, nil) - return -} - -// DisassociateElasticIP disassociates an Elastic IP address from its -// instance. The address remains registered with the stack. For more -// information, see Resource Management Required Permissions : To use this -// action, an IAM user must have a Manage permissions level for the stack, -// or an attached policy that explicitly grants permissions. For more -// information on user permissions, see Managing User Permissions -func (c *OpsWorks) DisassociateElasticIP(req *DisassociateElasticIPRequest) (err error) { - // NRE - err = c.client.Do("DisassociateElasticIp", "POST", "/", req, nil) - return -} - -// GetHostnameSuggestion gets a generated host name for the specified -// layer, based on the current host name theme. Required Permissions : To -// use this action, an IAM user must have a Manage permissions level for -// the stack, or an attached policy that explicitly grants permissions. For -// more information on user permissions, see Managing User Permissions -func (c *OpsWorks) GetHostnameSuggestion(req *GetHostnameSuggestionRequest) (resp *GetHostnameSuggestionResult, err error) { - resp = &GetHostnameSuggestionResult{} - err = c.client.Do("GetHostnameSuggestion", "POST", "/", req, resp) - return -} - -// RebootInstance reboots a specified instance. For more information, see -// Starting, Stopping, and Rebooting Instances Required Permissions : To -// use this action, an IAM user must have a Manage permissions level for -// the stack, or an attached policy that explicitly grants permissions. For -// more information on user permissions, see Managing User Permissions -func (c *OpsWorks) RebootInstance(req *RebootInstanceRequest) (err error) { - // NRE - err = c.client.Do("RebootInstance", "POST", "/", req, nil) - return -} - -// RegisterElasticIP registers an Elastic IP address with a specified -// stack. An address can be registered with only one stack at a time. If -// the address is already registered, you must first deregister it by -// calling DeregisterElasticIp . For more information, see Resource -// Management Required Permissions : To use this action, an IAM user must -// have a Manage permissions level for the stack, or an attached policy -// that explicitly grants permissions. For more information on user -// permissions, see Managing User Permissions -func (c *OpsWorks) RegisterElasticIP(req *RegisterElasticIPRequest) (resp *RegisterElasticIPResult, err error) { - resp = &RegisterElasticIPResult{} - err = c.client.Do("RegisterElasticIp", "POST", "/", req, resp) - return -} - -// RegisterInstance registers instances with a specified stack that were -// created outside of AWS OpsWorks. We do not recommend using this action -// to register instances. The complete registration operation has two -// primary steps, installing the AWS OpsWorks agent on the instance and -// registering the instance with the stack. RegisterInstance handles only -// the second step. You should instead use the AWS CLI register command, -// which performs the entire registration operation. Required Permissions : -// To use this action, an IAM user must have a Manage permissions level for -// the stack or an attached policy that explicitly grants permissions. For -// more information on user permissions, see Managing User Permissions -func (c *OpsWorks) RegisterInstance(req *RegisterInstanceRequest) (resp *RegisterInstanceResult, err error) { - resp = &RegisterInstanceResult{} - err = c.client.Do("RegisterInstance", "POST", "/", req, resp) - return -} - -// RegisterRDSDBInstance registers an Amazon RDS instance with a stack. -// Required Permissions : To use this action, an IAM user must have a -// Manage permissions level for the stack, or an attached policy that -// explicitly grants permissions. For more information on user permissions, -// see Managing User Permissions -func (c *OpsWorks) RegisterRDSDBInstance(req *RegisterRDSDBInstanceRequest) (err error) { - // NRE - err = c.client.Do("RegisterRdsDbInstance", "POST", "/", req, nil) - return -} - -// RegisterVolume registers an Amazon EBS volume with a specified stack. A -// volume can be registered with only one stack at a time. If the volume is -// already registered, you must first deregister it by calling -// DeregisterVolume . For more information, see Resource Management -// Required Permissions : To use this action, an IAM user must have a -// Manage permissions level for the stack, or an attached policy that -// explicitly grants permissions. For more information on user permissions, -// see Managing User Permissions -func (c *OpsWorks) RegisterVolume(req *RegisterVolumeRequest) (resp *RegisterVolumeResult, err error) { - resp = &RegisterVolumeResult{} - err = c.client.Do("RegisterVolume", "POST", "/", req, resp) - return -} - -// SetLoadBasedAutoScaling specify the load-based auto scaling -// configuration for a specified layer. For more information, see Managing -// Load with Time-based and Load-based Instances To use load-based auto -// scaling, you must create a set of load-based auto scaling instances. -// Load-based auto scaling operates only on the instances from that set, so -// you must ensure that you have created enough instances to handle the -// maximum anticipated load. Required Permissions : To use this action, an -// IAM user must have a Manage permissions level for the stack, or an -// attached policy that explicitly grants permissions. For more information -// on user permissions, see Managing User Permissions -func (c *OpsWorks) SetLoadBasedAutoScaling(req *SetLoadBasedAutoScalingRequest) (err error) { - // NRE - err = c.client.Do("SetLoadBasedAutoScaling", "POST", "/", req, nil) - return -} - -// SetPermission specifies a user's permissions. For more information, see -// Security and Permissions Required Permissions : To use this action, an -// IAM user must have a Manage permissions level for the stack, or an -// attached policy that explicitly grants permissions. For more information -// on user permissions, see Managing User Permissions -func (c *OpsWorks) SetPermission(req *SetPermissionRequest) (err error) { - // NRE - err = c.client.Do("SetPermission", "POST", "/", req, nil) - return -} - -// SetTimeBasedAutoScaling specify the time-based auto scaling -// configuration for a specified instance. For more information, see -// Managing Load with Time-based and Load-based Instances Required -// Permissions : To use this action, an IAM user must have a Manage -// permissions level for the stack, or an attached policy that explicitly -// grants permissions. For more information on user permissions, see -// Managing User Permissions -func (c *OpsWorks) SetTimeBasedAutoScaling(req *SetTimeBasedAutoScalingRequest) (err error) { - // NRE - err = c.client.Do("SetTimeBasedAutoScaling", "POST", "/", req, nil) - return -} - -// StartInstance starts a specified instance. For more information, see -// Starting, Stopping, and Rebooting Instances Required Permissions : To -// use this action, an IAM user must have a Manage permissions level for -// the stack, or an attached policy that explicitly grants permissions. For -// more information on user permissions, see Managing User Permissions -func (c *OpsWorks) StartInstance(req *StartInstanceRequest) (err error) { - // NRE - err = c.client.Do("StartInstance", "POST", "/", req, nil) - return -} - -// StartStack starts a stack's instances. Required Permissions : To use -// this action, an IAM user must have a Manage permissions level for the -// stack, or an attached policy that explicitly grants permissions. For -// more information on user permissions, see Managing User Permissions -func (c *OpsWorks) StartStack(req *StartStackRequest) (err error) { - // NRE - err = c.client.Do("StartStack", "POST", "/", req, nil) - return -} - -// StopInstance stops a specified instance. When you stop a standard -// instance, the data disappears and must be reinstalled when you restart -// the instance. You can stop an Amazon EBS-backed instance without losing -// data. For more information, see Starting, Stopping, and Rebooting -// Instances Required Permissions : To use this action, an IAM user must -// have a Manage permissions level for the stack, or an attached policy -// that explicitly grants permissions. For more information on user -// permissions, see Managing User Permissions -func (c *OpsWorks) StopInstance(req *StopInstanceRequest) (err error) { - // NRE - err = c.client.Do("StopInstance", "POST", "/", req, nil) - return -} - -// StopStack stops a specified stack. Required Permissions : To use this -// action, an IAM user must have a Manage permissions level for the stack, -// or an attached policy that explicitly grants permissions. For more -// information on user permissions, see Managing User Permissions -func (c *OpsWorks) StopStack(req *StopStackRequest) (err error) { - // NRE - err = c.client.Do("StopStack", "POST", "/", req, nil) - return -} - -// UnassignInstance unassigns a registered instance from all of it's -// layers. The instance remains in the stack as an unassigned instance and -// can be assigned to another layer, as needed. You cannot use this action -// with instances that were created with AWS OpsWorks. Required Permissions -// : To use this action, an IAM user must have a Manage permissions level -// for the stack or an attached policy that explicitly grants permissions. -// For more information on user permissions, see Managing User Permissions -func (c *OpsWorks) UnassignInstance(req *UnassignInstanceRequest) (err error) { - // NRE - err = c.client.Do("UnassignInstance", "POST", "/", req, nil) - return -} - -// UnassignVolume unassigns an assigned Amazon EBS volume. The volume -// remains registered with the stack. For more information, see Resource -// Management Required Permissions : To use this action, an IAM user must -// have a Manage permissions level for the stack, or an attached policy -// that explicitly grants permissions. For more information on user -// permissions, see Managing User Permissions -func (c *OpsWorks) UnassignVolume(req *UnassignVolumeRequest) (err error) { - // NRE - err = c.client.Do("UnassignVolume", "POST", "/", req, nil) - return -} - -// UpdateApp updates a specified app. Required Permissions : To use this -// action, an IAM user must have a Deploy or Manage permissions level for -// the stack, or an attached policy that explicitly grants permissions. For -// more information on user permissions, see Managing User Permissions -func (c *OpsWorks) UpdateApp(req *UpdateAppRequest) (err error) { - // NRE - err = c.client.Do("UpdateApp", "POST", "/", req, nil) - return -} - -// UpdateElasticIP updates a registered Elastic IP address's name. For more -// information, see Resource Management Required Permissions : To use this -// action, an IAM user must have a Manage permissions level for the stack, -// or an attached policy that explicitly grants permissions. For more -// information on user permissions, see Managing User Permissions -func (c *OpsWorks) UpdateElasticIP(req *UpdateElasticIPRequest) (err error) { - // NRE - err = c.client.Do("UpdateElasticIp", "POST", "/", req, nil) - return -} - -// UpdateInstance updates a specified instance. Required Permissions : To -// use this action, an IAM user must have a Manage permissions level for -// the stack, or an attached policy that explicitly grants permissions. For -// more information on user permissions, see Managing User Permissions -func (c *OpsWorks) UpdateInstance(req *UpdateInstanceRequest) (err error) { - // NRE - err = c.client.Do("UpdateInstance", "POST", "/", req, nil) - return -} - -// UpdateLayer updates a specified layer. Required Permissions : To use -// this action, an IAM user must have a Manage permissions level for the -// stack, or an attached policy that explicitly grants permissions. For -// more information on user permissions, see Managing User Permissions -func (c *OpsWorks) UpdateLayer(req *UpdateLayerRequest) (err error) { - // NRE - err = c.client.Do("UpdateLayer", "POST", "/", req, nil) - return -} - -// UpdateMyUserProfile updates a user's SSH public key. Required -// Permissions : To use this action, an IAM user must have self-management -// enabled or an attached policy that explicitly grants permissions. For -// more information on user permissions, see Managing User Permissions -func (c *OpsWorks) UpdateMyUserProfile(req *UpdateMyUserProfileRequest) (err error) { - // NRE - err = c.client.Do("UpdateMyUserProfile", "POST", "/", req, nil) - return -} - -// UpdateRDSDBInstance updates an Amazon RDS instance. Required Permissions -// : To use this action, an IAM user must have a Manage permissions level -// for the stack, or an attached policy that explicitly grants permissions. -// For more information on user permissions, see Managing User Permissions -func (c *OpsWorks) UpdateRDSDBInstance(req *UpdateRDSDBInstanceRequest) (err error) { - // NRE - err = c.client.Do("UpdateRdsDbInstance", "POST", "/", req, nil) - return -} - -// UpdateStack updates a specified stack. Required Permissions : To use -// this action, an IAM user must have a Manage permissions level for the -// stack, or an attached policy that explicitly grants permissions. For -// more information on user permissions, see Managing User Permissions -func (c *OpsWorks) UpdateStack(req *UpdateStackRequest) (err error) { - // NRE - err = c.client.Do("UpdateStack", "POST", "/", req, nil) - return -} - -// UpdateUserProfile updates a specified user profile. Required Permissions -// : To use this action, an IAM user must have an attached policy that -// explicitly grants permissions. For more information on user permissions, -// see Managing User Permissions -func (c *OpsWorks) UpdateUserProfile(req *UpdateUserProfileRequest) (err error) { - // NRE - err = c.client.Do("UpdateUserProfile", "POST", "/", req, nil) - return -} - -// UpdateVolume updates an Amazon EBS volume's name or mount point. For -// more information, see Resource Management Required Permissions : To use -// this action, an IAM user must have a Manage permissions level for the -// stack, or an attached policy that explicitly grants permissions. For -// more information on user permissions, see Managing User Permissions -func (c *OpsWorks) UpdateVolume(req *UpdateVolumeRequest) (err error) { - // NRE - err = c.client.Do("UpdateVolume", "POST", "/", req, nil) - return -} - -// App is undocumented. -type App struct { - AppID aws.StringValue `json:"AppId,omitempty"` - AppSource *Source `json:"AppSource,omitempty"` - Attributes map[string]string `json:"Attributes,omitempty"` - CreatedAt aws.StringValue `json:"CreatedAt,omitempty"` - DataSources []DataSource `json:"DataSources,omitempty"` - Description aws.StringValue `json:"Description,omitempty"` - Domains []string `json:"Domains,omitempty"` - EnableSSL aws.BooleanValue `json:"EnableSsl,omitempty"` - Environment []EnvironmentVariable `json:"Environment,omitempty"` - Name aws.StringValue `json:"Name,omitempty"` - Shortname aws.StringValue `json:"Shortname,omitempty"` - SSLConfiguration *SSLConfiguration `json:"SslConfiguration,omitempty"` - StackID aws.StringValue `json:"StackId,omitempty"` - Type aws.StringValue `json:"Type,omitempty"` -} - -// Possible values for OpsWorks. -const ( - AppAttributesKeysAutoBundleOnDeploy = "AutoBundleOnDeploy" - AppAttributesKeysDocumentRoot = "DocumentRoot" - AppAttributesKeysRailsEnv = "RailsEnv" -) - -// Possible values for OpsWorks. -const ( - AppTypeJava = "java" - AppTypeNodejs = "nodejs" - AppTypeOther = "other" - AppTypePHP = "php" - AppTypeRails = "rails" - AppTypeStatic = "static" -) - -// Possible values for OpsWorks. -const ( - ArchitectureI386 = "i386" - ArchitectureX8664 = "x86_64" -) - -// AssignInstanceRequest is undocumented. -type AssignInstanceRequest struct { - InstanceID aws.StringValue `json:"InstanceId"` - LayerIDs []string `json:"LayerIds"` -} - -// AssignVolumeRequest is undocumented. -type AssignVolumeRequest struct { - InstanceID aws.StringValue `json:"InstanceId,omitempty"` - VolumeID aws.StringValue `json:"VolumeId"` -} - -// AssociateElasticIPRequest is undocumented. -type AssociateElasticIPRequest struct { - ElasticIP aws.StringValue `json:"ElasticIp"` - InstanceID aws.StringValue `json:"InstanceId,omitempty"` -} - -// AttachElasticLoadBalancerRequest is undocumented. -type AttachElasticLoadBalancerRequest struct { - ElasticLoadBalancerName aws.StringValue `json:"ElasticLoadBalancerName"` - LayerID aws.StringValue `json:"LayerId"` -} - -// AutoScalingThresholds is undocumented. -type AutoScalingThresholds struct { - CPUThreshold aws.DoubleValue `json:"CpuThreshold,omitempty"` - IgnoreMetricsTime aws.IntegerValue `json:"IgnoreMetricsTime,omitempty"` - InstanceCount aws.IntegerValue `json:"InstanceCount,omitempty"` - LoadThreshold aws.DoubleValue `json:"LoadThreshold,omitempty"` - MemoryThreshold aws.DoubleValue `json:"MemoryThreshold,omitempty"` - ThresholdsWaitTime aws.IntegerValue `json:"ThresholdsWaitTime,omitempty"` -} - -// Possible values for OpsWorks. -const ( - AutoScalingTypeLoad = "load" - AutoScalingTypeTimer = "timer" -) - -// ChefConfiguration is undocumented. -type ChefConfiguration struct { - BerkshelfVersion aws.StringValue `json:"BerkshelfVersion,omitempty"` - ManageBerkshelf aws.BooleanValue `json:"ManageBerkshelf,omitempty"` -} - -// CloneStackRequest is undocumented. -type CloneStackRequest struct { - Attributes map[string]string `json:"Attributes,omitempty"` - ChefConfiguration *ChefConfiguration `json:"ChefConfiguration,omitempty"` - CloneAppIDs []string `json:"CloneAppIds,omitempty"` - ClonePermissions aws.BooleanValue `json:"ClonePermissions,omitempty"` - ConfigurationManager *StackConfigurationManager `json:"ConfigurationManager,omitempty"` - CustomCookbooksSource *Source `json:"CustomCookbooksSource,omitempty"` - CustomJSON aws.StringValue `json:"CustomJson,omitempty"` - DefaultAvailabilityZone aws.StringValue `json:"DefaultAvailabilityZone,omitempty"` - DefaultInstanceProfileARN aws.StringValue `json:"DefaultInstanceProfileArn,omitempty"` - DefaultOS aws.StringValue `json:"DefaultOs,omitempty"` - DefaultRootDeviceType aws.StringValue `json:"DefaultRootDeviceType,omitempty"` - DefaultSSHKeyName aws.StringValue `json:"DefaultSshKeyName,omitempty"` - DefaultSubnetID aws.StringValue `json:"DefaultSubnetId,omitempty"` - HostnameTheme aws.StringValue `json:"HostnameTheme,omitempty"` - Name aws.StringValue `json:"Name,omitempty"` - Region aws.StringValue `json:"Region,omitempty"` - ServiceRoleARN aws.StringValue `json:"ServiceRoleArn"` - SourceStackID aws.StringValue `json:"SourceStackId"` - UseCustomCookbooks aws.BooleanValue `json:"UseCustomCookbooks,omitempty"` - UseOpsworksSecurityGroups aws.BooleanValue `json:"UseOpsworksSecurityGroups,omitempty"` - VPCID aws.StringValue `json:"VpcId,omitempty"` -} - -// CloneStackResult is undocumented. -type CloneStackResult struct { - StackID aws.StringValue `json:"StackId,omitempty"` -} - -// Command is undocumented. -type Command struct { - AcknowledgedAt aws.StringValue `json:"AcknowledgedAt,omitempty"` - CommandID aws.StringValue `json:"CommandId,omitempty"` - CompletedAt aws.StringValue `json:"CompletedAt,omitempty"` - CreatedAt aws.StringValue `json:"CreatedAt,omitempty"` - DeploymentID aws.StringValue `json:"DeploymentId,omitempty"` - ExitCode aws.IntegerValue `json:"ExitCode,omitempty"` - InstanceID aws.StringValue `json:"InstanceId,omitempty"` - LogURL aws.StringValue `json:"LogUrl,omitempty"` - Status aws.StringValue `json:"Status,omitempty"` - Type aws.StringValue `json:"Type,omitempty"` -} - -// CreateAppRequest is undocumented. -type CreateAppRequest struct { - AppSource *Source `json:"AppSource,omitempty"` - Attributes map[string]string `json:"Attributes,omitempty"` - DataSources []DataSource `json:"DataSources,omitempty"` - Description aws.StringValue `json:"Description,omitempty"` - Domains []string `json:"Domains,omitempty"` - EnableSSL aws.BooleanValue `json:"EnableSsl,omitempty"` - Environment []EnvironmentVariable `json:"Environment,omitempty"` - Name aws.StringValue `json:"Name"` - Shortname aws.StringValue `json:"Shortname,omitempty"` - SSLConfiguration *SSLConfiguration `json:"SslConfiguration,omitempty"` - StackID aws.StringValue `json:"StackId"` - Type aws.StringValue `json:"Type"` -} - -// CreateAppResult is undocumented. -type CreateAppResult struct { - AppID aws.StringValue `json:"AppId,omitempty"` -} - -// CreateDeploymentRequest is undocumented. -type CreateDeploymentRequest struct { - AppID aws.StringValue `json:"AppId,omitempty"` - Command *DeploymentCommand `json:"Command"` - Comment aws.StringValue `json:"Comment,omitempty"` - CustomJSON aws.StringValue `json:"CustomJson,omitempty"` - InstanceIDs []string `json:"InstanceIds,omitempty"` - StackID aws.StringValue `json:"StackId"` -} - -// CreateDeploymentResult is undocumented. -type CreateDeploymentResult struct { - DeploymentID aws.StringValue `json:"DeploymentId,omitempty"` -} - -// CreateInstanceRequest is undocumented. -type CreateInstanceRequest struct { - AMIID aws.StringValue `json:"AmiId,omitempty"` - Architecture aws.StringValue `json:"Architecture,omitempty"` - AutoScalingType aws.StringValue `json:"AutoScalingType,omitempty"` - AvailabilityZone aws.StringValue `json:"AvailabilityZone,omitempty"` - EBSOptimized aws.BooleanValue `json:"EbsOptimized,omitempty"` - Hostname aws.StringValue `json:"Hostname,omitempty"` - InstallUpdatesOnBoot aws.BooleanValue `json:"InstallUpdatesOnBoot,omitempty"` - InstanceType aws.StringValue `json:"InstanceType"` - LayerIDs []string `json:"LayerIds"` - OS aws.StringValue `json:"Os,omitempty"` - RootDeviceType aws.StringValue `json:"RootDeviceType,omitempty"` - SSHKeyName aws.StringValue `json:"SshKeyName,omitempty"` - StackID aws.StringValue `json:"StackId"` - SubnetID aws.StringValue `json:"SubnetId,omitempty"` - VirtualizationType aws.StringValue `json:"VirtualizationType,omitempty"` -} - -// CreateInstanceResult is undocumented. -type CreateInstanceResult struct { - InstanceID aws.StringValue `json:"InstanceId,omitempty"` -} - -// CreateLayerRequest is undocumented. -type CreateLayerRequest struct { - Attributes map[string]string `json:"Attributes,omitempty"` - AutoAssignElasticIPs aws.BooleanValue `json:"AutoAssignElasticIps,omitempty"` - AutoAssignPublicIPs aws.BooleanValue `json:"AutoAssignPublicIps,omitempty"` - CustomInstanceProfileARN aws.StringValue `json:"CustomInstanceProfileArn,omitempty"` - CustomRecipes *Recipes `json:"CustomRecipes,omitempty"` - CustomSecurityGroupIDs []string `json:"CustomSecurityGroupIds,omitempty"` - EnableAutoHealing aws.BooleanValue `json:"EnableAutoHealing,omitempty"` - InstallUpdatesOnBoot aws.BooleanValue `json:"InstallUpdatesOnBoot,omitempty"` - LifecycleEventConfiguration *LifecycleEventConfiguration `json:"LifecycleEventConfiguration,omitempty"` - Name aws.StringValue `json:"Name"` - Packages []string `json:"Packages,omitempty"` - Shortname aws.StringValue `json:"Shortname"` - StackID aws.StringValue `json:"StackId"` - Type aws.StringValue `json:"Type"` - UseEBSOptimizedInstances aws.BooleanValue `json:"UseEbsOptimizedInstances,omitempty"` - VolumeConfigurations []VolumeConfiguration `json:"VolumeConfigurations,omitempty"` -} - -// CreateLayerResult is undocumented. -type CreateLayerResult struct { - LayerID aws.StringValue `json:"LayerId,omitempty"` -} - -// CreateStackRequest is undocumented. -type CreateStackRequest struct { - Attributes map[string]string `json:"Attributes,omitempty"` - ChefConfiguration *ChefConfiguration `json:"ChefConfiguration,omitempty"` - ConfigurationManager *StackConfigurationManager `json:"ConfigurationManager,omitempty"` - CustomCookbooksSource *Source `json:"CustomCookbooksSource,omitempty"` - CustomJSON aws.StringValue `json:"CustomJson,omitempty"` - DefaultAvailabilityZone aws.StringValue `json:"DefaultAvailabilityZone,omitempty"` - DefaultInstanceProfileARN aws.StringValue `json:"DefaultInstanceProfileArn"` - DefaultOS aws.StringValue `json:"DefaultOs,omitempty"` - DefaultRootDeviceType aws.StringValue `json:"DefaultRootDeviceType,omitempty"` - DefaultSSHKeyName aws.StringValue `json:"DefaultSshKeyName,omitempty"` - DefaultSubnetID aws.StringValue `json:"DefaultSubnetId,omitempty"` - HostnameTheme aws.StringValue `json:"HostnameTheme,omitempty"` - Name aws.StringValue `json:"Name"` - Region aws.StringValue `json:"Region"` - ServiceRoleARN aws.StringValue `json:"ServiceRoleArn"` - UseCustomCookbooks aws.BooleanValue `json:"UseCustomCookbooks,omitempty"` - UseOpsworksSecurityGroups aws.BooleanValue `json:"UseOpsworksSecurityGroups,omitempty"` - VPCID aws.StringValue `json:"VpcId,omitempty"` -} - -// CreateStackResult is undocumented. -type CreateStackResult struct { - StackID aws.StringValue `json:"StackId,omitempty"` -} - -// CreateUserProfileRequest is undocumented. -type CreateUserProfileRequest struct { - AllowSelfManagement aws.BooleanValue `json:"AllowSelfManagement,omitempty"` - IAMUserARN aws.StringValue `json:"IamUserArn"` - SSHPublicKey aws.StringValue `json:"SshPublicKey,omitempty"` - SSHUsername aws.StringValue `json:"SshUsername,omitempty"` -} - -// CreateUserProfileResult is undocumented. -type CreateUserProfileResult struct { - IAMUserARN aws.StringValue `json:"IamUserArn,omitempty"` -} - -// DataSource is undocumented. -type DataSource struct { - ARN aws.StringValue `json:"Arn,omitempty"` - DatabaseName aws.StringValue `json:"DatabaseName,omitempty"` - Type aws.StringValue `json:"Type,omitempty"` -} - -// DeleteAppRequest is undocumented. -type DeleteAppRequest struct { - AppID aws.StringValue `json:"AppId"` -} - -// DeleteInstanceRequest is undocumented. -type DeleteInstanceRequest struct { - DeleteElasticIP aws.BooleanValue `json:"DeleteElasticIp,omitempty"` - DeleteVolumes aws.BooleanValue `json:"DeleteVolumes,omitempty"` - InstanceID aws.StringValue `json:"InstanceId"` -} - -// DeleteLayerRequest is undocumented. -type DeleteLayerRequest struct { - LayerID aws.StringValue `json:"LayerId"` -} - -// DeleteStackRequest is undocumented. -type DeleteStackRequest struct { - StackID aws.StringValue `json:"StackId"` -} - -// DeleteUserProfileRequest is undocumented. -type DeleteUserProfileRequest struct { - IAMUserARN aws.StringValue `json:"IamUserArn"` -} - -// Deployment is undocumented. -type Deployment struct { - AppID aws.StringValue `json:"AppId,omitempty"` - Command *DeploymentCommand `json:"Command,omitempty"` - Comment aws.StringValue `json:"Comment,omitempty"` - CompletedAt aws.StringValue `json:"CompletedAt,omitempty"` - CreatedAt aws.StringValue `json:"CreatedAt,omitempty"` - CustomJSON aws.StringValue `json:"CustomJson,omitempty"` - DeploymentID aws.StringValue `json:"DeploymentId,omitempty"` - Duration aws.IntegerValue `json:"Duration,omitempty"` - IAMUserARN aws.StringValue `json:"IamUserArn,omitempty"` - InstanceIDs []string `json:"InstanceIds,omitempty"` - StackID aws.StringValue `json:"StackId,omitempty"` - Status aws.StringValue `json:"Status,omitempty"` -} - -// DeploymentCommand is undocumented. -type DeploymentCommand struct { - Args map[string][]string `json:"Args,omitempty"` - Name aws.StringValue `json:"Name"` -} - -// Possible values for OpsWorks. -const ( - DeploymentCommandNameDeploy = "deploy" - DeploymentCommandNameExecuteRecipes = "execute_recipes" - DeploymentCommandNameInstallDependencies = "install_dependencies" - DeploymentCommandNameRestart = "restart" - DeploymentCommandNameRollback = "rollback" - DeploymentCommandNameStart = "start" - DeploymentCommandNameStop = "stop" - DeploymentCommandNameUndeploy = "undeploy" - DeploymentCommandNameUpdateCustomCookbooks = "update_custom_cookbooks" - DeploymentCommandNameUpdateDependencies = "update_dependencies" -) - -// DeregisterElasticIPRequest is undocumented. -type DeregisterElasticIPRequest struct { - ElasticIP aws.StringValue `json:"ElasticIp"` -} - -// DeregisterInstanceRequest is undocumented. -type DeregisterInstanceRequest struct { - InstanceID aws.StringValue `json:"InstanceId"` -} - -// DeregisterRDSDBInstanceRequest is undocumented. -type DeregisterRDSDBInstanceRequest struct { - RDSDBInstanceARN aws.StringValue `json:"RdsDbInstanceArn"` -} - -// DeregisterVolumeRequest is undocumented. -type DeregisterVolumeRequest struct { - VolumeID aws.StringValue `json:"VolumeId"` -} - -// DescribeAppsRequest is undocumented. -type DescribeAppsRequest struct { - AppIDs []string `json:"AppIds,omitempty"` - StackID aws.StringValue `json:"StackId,omitempty"` -} - -// DescribeAppsResult is undocumented. -type DescribeAppsResult struct { - Apps []App `json:"Apps,omitempty"` -} - -// DescribeCommandsRequest is undocumented. -type DescribeCommandsRequest struct { - CommandIDs []string `json:"CommandIds,omitempty"` - DeploymentID aws.StringValue `json:"DeploymentId,omitempty"` - InstanceID aws.StringValue `json:"InstanceId,omitempty"` -} - -// DescribeCommandsResult is undocumented. -type DescribeCommandsResult struct { - Commands []Command `json:"Commands,omitempty"` -} - -// DescribeDeploymentsRequest is undocumented. -type DescribeDeploymentsRequest struct { - AppID aws.StringValue `json:"AppId,omitempty"` - DeploymentIDs []string `json:"DeploymentIds,omitempty"` - StackID aws.StringValue `json:"StackId,omitempty"` -} - -// DescribeDeploymentsResult is undocumented. -type DescribeDeploymentsResult struct { - Deployments []Deployment `json:"Deployments,omitempty"` -} - -// DescribeElasticIPsRequest is undocumented. -type DescribeElasticIPsRequest struct { - InstanceID aws.StringValue `json:"InstanceId,omitempty"` - IPs []string `json:"Ips,omitempty"` - StackID aws.StringValue `json:"StackId,omitempty"` -} - -// DescribeElasticIPsResult is undocumented. -type DescribeElasticIPsResult struct { - ElasticIPs []ElasticIP `json:"ElasticIps,omitempty"` -} - -// DescribeElasticLoadBalancersRequest is undocumented. -type DescribeElasticLoadBalancersRequest struct { - LayerIDs []string `json:"LayerIds,omitempty"` - StackID aws.StringValue `json:"StackId,omitempty"` -} - -// DescribeElasticLoadBalancersResult is undocumented. -type DescribeElasticLoadBalancersResult struct { - ElasticLoadBalancers []ElasticLoadBalancer `json:"ElasticLoadBalancers,omitempty"` -} - -// DescribeInstancesRequest is undocumented. -type DescribeInstancesRequest struct { - InstanceIDs []string `json:"InstanceIds,omitempty"` - LayerID aws.StringValue `json:"LayerId,omitempty"` - StackID aws.StringValue `json:"StackId,omitempty"` -} - -// DescribeInstancesResult is undocumented. -type DescribeInstancesResult struct { - Instances []Instance `json:"Instances,omitempty"` -} - -// DescribeLayersRequest is undocumented. -type DescribeLayersRequest struct { - LayerIDs []string `json:"LayerIds,omitempty"` - StackID aws.StringValue `json:"StackId,omitempty"` -} - -// DescribeLayersResult is undocumented. -type DescribeLayersResult struct { - Layers []Layer `json:"Layers,omitempty"` -} - -// DescribeLoadBasedAutoScalingRequest is undocumented. -type DescribeLoadBasedAutoScalingRequest struct { - LayerIDs []string `json:"LayerIds"` -} - -// DescribeLoadBasedAutoScalingResult is undocumented. -type DescribeLoadBasedAutoScalingResult struct { - LoadBasedAutoScalingConfigurations []LoadBasedAutoScalingConfiguration `json:"LoadBasedAutoScalingConfigurations,omitempty"` -} - -// DescribeMyUserProfileResult is undocumented. -type DescribeMyUserProfileResult struct { - UserProfile *SelfUserProfile `json:"UserProfile,omitempty"` -} - -// DescribePermissionsRequest is undocumented. -type DescribePermissionsRequest struct { - IAMUserARN aws.StringValue `json:"IamUserArn,omitempty"` - StackID aws.StringValue `json:"StackId,omitempty"` -} - -// DescribePermissionsResult is undocumented. -type DescribePermissionsResult struct { - Permissions []Permission `json:"Permissions,omitempty"` -} - -// DescribeRAIDArraysRequest is undocumented. -type DescribeRAIDArraysRequest struct { - InstanceID aws.StringValue `json:"InstanceId,omitempty"` - RAIDArrayIDs []string `json:"RaidArrayIds,omitempty"` - StackID aws.StringValue `json:"StackId,omitempty"` -} - -// DescribeRAIDArraysResult is undocumented. -type DescribeRAIDArraysResult struct { - RAIDArrays []RAIDArray `json:"RaidArrays,omitempty"` -} - -// DescribeRDSDBInstancesRequest is undocumented. -type DescribeRDSDBInstancesRequest struct { - RDSDBInstanceARNs []string `json:"RdsDbInstanceArns,omitempty"` - StackID aws.StringValue `json:"StackId"` -} - -// DescribeRDSDBInstancesResult is undocumented. -type DescribeRDSDBInstancesResult struct { - RDSDBInstances []RDSDBInstance `json:"RdsDbInstances,omitempty"` -} - -// DescribeServiceErrorsRequest is undocumented. -type DescribeServiceErrorsRequest struct { - InstanceID aws.StringValue `json:"InstanceId,omitempty"` - ServiceErrorIDs []string `json:"ServiceErrorIds,omitempty"` - StackID aws.StringValue `json:"StackId,omitempty"` -} - -// DescribeServiceErrorsResult is undocumented. -type DescribeServiceErrorsResult struct { - ServiceErrors []ServiceError `json:"ServiceErrors,omitempty"` -} - -// DescribeStackProvisioningParametersRequest is undocumented. -type DescribeStackProvisioningParametersRequest struct { - StackID aws.StringValue `json:"StackId"` -} - -// DescribeStackProvisioningParametersResult is undocumented. -type DescribeStackProvisioningParametersResult struct { - AgentInstallerURL aws.StringValue `json:"AgentInstallerUrl,omitempty"` - Parameters map[string]string `json:"Parameters,omitempty"` -} - -// DescribeStackSummaryRequest is undocumented. -type DescribeStackSummaryRequest struct { - StackID aws.StringValue `json:"StackId"` -} - -// DescribeStackSummaryResult is undocumented. -type DescribeStackSummaryResult struct { - StackSummary *StackSummary `json:"StackSummary,omitempty"` -} - -// DescribeStacksRequest is undocumented. -type DescribeStacksRequest struct { - StackIDs []string `json:"StackIds,omitempty"` -} - -// DescribeStacksResult is undocumented. -type DescribeStacksResult struct { - Stacks []Stack `json:"Stacks,omitempty"` -} - -// DescribeTimeBasedAutoScalingRequest is undocumented. -type DescribeTimeBasedAutoScalingRequest struct { - InstanceIDs []string `json:"InstanceIds"` -} - -// DescribeTimeBasedAutoScalingResult is undocumented. -type DescribeTimeBasedAutoScalingResult struct { - TimeBasedAutoScalingConfigurations []TimeBasedAutoScalingConfiguration `json:"TimeBasedAutoScalingConfigurations,omitempty"` -} - -// DescribeUserProfilesRequest is undocumented. -type DescribeUserProfilesRequest struct { - IAMUserARNs []string `json:"IamUserArns,omitempty"` -} - -// DescribeUserProfilesResult is undocumented. -type DescribeUserProfilesResult struct { - UserProfiles []UserProfile `json:"UserProfiles,omitempty"` -} - -// DescribeVolumesRequest is undocumented. -type DescribeVolumesRequest struct { - InstanceID aws.StringValue `json:"InstanceId,omitempty"` - RAIDArrayID aws.StringValue `json:"RaidArrayId,omitempty"` - StackID aws.StringValue `json:"StackId,omitempty"` - VolumeIDs []string `json:"VolumeIds,omitempty"` -} - -// DescribeVolumesResult is undocumented. -type DescribeVolumesResult struct { - Volumes []Volume `json:"Volumes,omitempty"` -} - -// DetachElasticLoadBalancerRequest is undocumented. -type DetachElasticLoadBalancerRequest struct { - ElasticLoadBalancerName aws.StringValue `json:"ElasticLoadBalancerName"` - LayerID aws.StringValue `json:"LayerId"` -} - -// DisassociateElasticIPRequest is undocumented. -type DisassociateElasticIPRequest struct { - ElasticIP aws.StringValue `json:"ElasticIp"` -} - -// ElasticIP is undocumented. -type ElasticIP struct { - Domain aws.StringValue `json:"Domain,omitempty"` - InstanceID aws.StringValue `json:"InstanceId,omitempty"` - IP aws.StringValue `json:"Ip,omitempty"` - Name aws.StringValue `json:"Name,omitempty"` - Region aws.StringValue `json:"Region,omitempty"` -} - -// ElasticLoadBalancer is undocumented. -type ElasticLoadBalancer struct { - AvailabilityZones []string `json:"AvailabilityZones,omitempty"` - DNSName aws.StringValue `json:"DnsName,omitempty"` - EC2InstanceIDs []string `json:"Ec2InstanceIds,omitempty"` - ElasticLoadBalancerName aws.StringValue `json:"ElasticLoadBalancerName,omitempty"` - LayerID aws.StringValue `json:"LayerId,omitempty"` - Region aws.StringValue `json:"Region,omitempty"` - StackID aws.StringValue `json:"StackId,omitempty"` - SubnetIDs []string `json:"SubnetIds,omitempty"` - VPCID aws.StringValue `json:"VpcId,omitempty"` -} - -// EnvironmentVariable is undocumented. -type EnvironmentVariable struct { - Key aws.StringValue `json:"Key"` - Secure aws.BooleanValue `json:"Secure,omitempty"` - Value aws.StringValue `json:"Value"` -} - -// GetHostnameSuggestionRequest is undocumented. -type GetHostnameSuggestionRequest struct { - LayerID aws.StringValue `json:"LayerId"` -} - -// GetHostnameSuggestionResult is undocumented. -type GetHostnameSuggestionResult struct { - Hostname aws.StringValue `json:"Hostname,omitempty"` - LayerID aws.StringValue `json:"LayerId,omitempty"` -} - -// Instance is undocumented. -type Instance struct { - AMIID aws.StringValue `json:"AmiId,omitempty"` - Architecture aws.StringValue `json:"Architecture,omitempty"` - AutoScalingType aws.StringValue `json:"AutoScalingType,omitempty"` - AvailabilityZone aws.StringValue `json:"AvailabilityZone,omitempty"` - CreatedAt aws.StringValue `json:"CreatedAt,omitempty"` - EBSOptimized aws.BooleanValue `json:"EbsOptimized,omitempty"` - EC2InstanceID aws.StringValue `json:"Ec2InstanceId,omitempty"` - ElasticIP aws.StringValue `json:"ElasticIp,omitempty"` - Hostname aws.StringValue `json:"Hostname,omitempty"` - InfrastructureClass aws.StringValue `json:"InfrastructureClass,omitempty"` - InstallUpdatesOnBoot aws.BooleanValue `json:"InstallUpdatesOnBoot,omitempty"` - InstanceID aws.StringValue `json:"InstanceId,omitempty"` - InstanceProfileARN aws.StringValue `json:"InstanceProfileArn,omitempty"` - InstanceType aws.StringValue `json:"InstanceType,omitempty"` - LastServiceErrorID aws.StringValue `json:"LastServiceErrorId,omitempty"` - LayerIDs []string `json:"LayerIds,omitempty"` - OS aws.StringValue `json:"Os,omitempty"` - PrivateDNS aws.StringValue `json:"PrivateDns,omitempty"` - PrivateIP aws.StringValue `json:"PrivateIp,omitempty"` - PublicDNS aws.StringValue `json:"PublicDns,omitempty"` - PublicIP aws.StringValue `json:"PublicIp,omitempty"` - RegisteredBy aws.StringValue `json:"RegisteredBy,omitempty"` - ReportedOS *ReportedOS `json:"ReportedOs,omitempty"` - RootDeviceType aws.StringValue `json:"RootDeviceType,omitempty"` - RootDeviceVolumeID aws.StringValue `json:"RootDeviceVolumeId,omitempty"` - SecurityGroupIDs []string `json:"SecurityGroupIds,omitempty"` - SSHHostDsaKeyFingerprint aws.StringValue `json:"SshHostDsaKeyFingerprint,omitempty"` - SSHHostRsaKeyFingerprint aws.StringValue `json:"SshHostRsaKeyFingerprint,omitempty"` - SSHKeyName aws.StringValue `json:"SshKeyName,omitempty"` - StackID aws.StringValue `json:"StackId,omitempty"` - Status aws.StringValue `json:"Status,omitempty"` - SubnetID aws.StringValue `json:"SubnetId,omitempty"` - VirtualizationType aws.StringValue `json:"VirtualizationType,omitempty"` -} - -// InstanceIdentity is undocumented. -type InstanceIdentity struct { - Document aws.StringValue `json:"Document,omitempty"` - Signature aws.StringValue `json:"Signature,omitempty"` -} - -// InstancesCount is undocumented. -type InstancesCount struct { - Assigning aws.IntegerValue `json:"Assigning,omitempty"` - Booting aws.IntegerValue `json:"Booting,omitempty"` - ConnectionLost aws.IntegerValue `json:"ConnectionLost,omitempty"` - Deregistering aws.IntegerValue `json:"Deregistering,omitempty"` - Online aws.IntegerValue `json:"Online,omitempty"` - Pending aws.IntegerValue `json:"Pending,omitempty"` - Rebooting aws.IntegerValue `json:"Rebooting,omitempty"` - Registered aws.IntegerValue `json:"Registered,omitempty"` - Registering aws.IntegerValue `json:"Registering,omitempty"` - Requested aws.IntegerValue `json:"Requested,omitempty"` - RunningSetup aws.IntegerValue `json:"RunningSetup,omitempty"` - SetupFailed aws.IntegerValue `json:"SetupFailed,omitempty"` - ShuttingDown aws.IntegerValue `json:"ShuttingDown,omitempty"` - StartFailed aws.IntegerValue `json:"StartFailed,omitempty"` - Stopped aws.IntegerValue `json:"Stopped,omitempty"` - Stopping aws.IntegerValue `json:"Stopping,omitempty"` - Terminated aws.IntegerValue `json:"Terminated,omitempty"` - Terminating aws.IntegerValue `json:"Terminating,omitempty"` - Unassigning aws.IntegerValue `json:"Unassigning,omitempty"` -} - -// Layer is undocumented. -type Layer struct { - Attributes map[string]string `json:"Attributes,omitempty"` - AutoAssignElasticIPs aws.BooleanValue `json:"AutoAssignElasticIps,omitempty"` - AutoAssignPublicIPs aws.BooleanValue `json:"AutoAssignPublicIps,omitempty"` - CreatedAt aws.StringValue `json:"CreatedAt,omitempty"` - CustomInstanceProfileARN aws.StringValue `json:"CustomInstanceProfileArn,omitempty"` - CustomRecipes *Recipes `json:"CustomRecipes,omitempty"` - CustomSecurityGroupIDs []string `json:"CustomSecurityGroupIds,omitempty"` - DefaultRecipes *Recipes `json:"DefaultRecipes,omitempty"` - DefaultSecurityGroupNames []string `json:"DefaultSecurityGroupNames,omitempty"` - EnableAutoHealing aws.BooleanValue `json:"EnableAutoHealing,omitempty"` - InstallUpdatesOnBoot aws.BooleanValue `json:"InstallUpdatesOnBoot,omitempty"` - LayerID aws.StringValue `json:"LayerId,omitempty"` - LifecycleEventConfiguration *LifecycleEventConfiguration `json:"LifecycleEventConfiguration,omitempty"` - Name aws.StringValue `json:"Name,omitempty"` - Packages []string `json:"Packages,omitempty"` - Shortname aws.StringValue `json:"Shortname,omitempty"` - StackID aws.StringValue `json:"StackId,omitempty"` - Type aws.StringValue `json:"Type,omitempty"` - UseEBSOptimizedInstances aws.BooleanValue `json:"UseEbsOptimizedInstances,omitempty"` - VolumeConfigurations []VolumeConfiguration `json:"VolumeConfigurations,omitempty"` -} - -// Possible values for OpsWorks. -const ( - LayerAttributesKeysBundlerVersion = "BundlerVersion" - LayerAttributesKeysEnableHaproxyStats = "EnableHaproxyStats" - LayerAttributesKeysGangliaPassword = "GangliaPassword" - LayerAttributesKeysGangliaURL = "GangliaUrl" - LayerAttributesKeysGangliaUser = "GangliaUser" - LayerAttributesKeysHaproxyHealthCheckMethod = "HaproxyHealthCheckMethod" - LayerAttributesKeysHaproxyHealthCheckURL = "HaproxyHealthCheckUrl" - LayerAttributesKeysHaproxyStatsPassword = "HaproxyStatsPassword" - LayerAttributesKeysHaproxyStatsURL = "HaproxyStatsUrl" - LayerAttributesKeysHaproxyStatsUser = "HaproxyStatsUser" - LayerAttributesKeysJVM = "Jvm" - LayerAttributesKeysJVMOptions = "JvmOptions" - LayerAttributesKeysJVMVersion = "JvmVersion" - LayerAttributesKeysJavaAppServer = "JavaAppServer" - LayerAttributesKeysJavaAppServerVersion = "JavaAppServerVersion" - LayerAttributesKeysManageBundler = "ManageBundler" - LayerAttributesKeysMemcachedMemory = "MemcachedMemory" - LayerAttributesKeysMysqlRootPassword = "MysqlRootPassword" - LayerAttributesKeysMysqlRootPasswordUbiquitous = "MysqlRootPasswordUbiquitous" - LayerAttributesKeysNodejsVersion = "NodejsVersion" - LayerAttributesKeysPassengerVersion = "PassengerVersion" - LayerAttributesKeysRailsStack = "RailsStack" - LayerAttributesKeysRubyVersion = "RubyVersion" - LayerAttributesKeysRubygemsVersion = "RubygemsVersion" -) - -// Possible values for OpsWorks. -const ( - LayerTypeCustom = "custom" - LayerTypeDBMaster = "db-master" - LayerTypeJavaApp = "java-app" - LayerTypeLb = "lb" - LayerTypeMemcached = "memcached" - LayerTypeMonitoringMaster = "monitoring-master" - LayerTypeNodejsApp = "nodejs-app" - LayerTypePHPApp = "php-app" - LayerTypeRailsApp = "rails-app" - LayerTypeWeb = "web" -) - -// LifecycleEventConfiguration is undocumented. -type LifecycleEventConfiguration struct { - Shutdown *ShutdownEventConfiguration `json:"Shutdown,omitempty"` -} - -// LoadBasedAutoScalingConfiguration is undocumented. -type LoadBasedAutoScalingConfiguration struct { - DownScaling *AutoScalingThresholds `json:"DownScaling,omitempty"` - Enable aws.BooleanValue `json:"Enable,omitempty"` - LayerID aws.StringValue `json:"LayerId,omitempty"` - UpScaling *AutoScalingThresholds `json:"UpScaling,omitempty"` -} - -// Permission is undocumented. -type Permission struct { - AllowSSH aws.BooleanValue `json:"AllowSsh,omitempty"` - AllowSudo aws.BooleanValue `json:"AllowSudo,omitempty"` - IAMUserARN aws.StringValue `json:"IamUserArn,omitempty"` - Level aws.StringValue `json:"Level,omitempty"` - StackID aws.StringValue `json:"StackId,omitempty"` -} - -// RAIDArray is undocumented. -type RAIDArray struct { - AvailabilityZone aws.StringValue `json:"AvailabilityZone,omitempty"` - CreatedAt aws.StringValue `json:"CreatedAt,omitempty"` - Device aws.StringValue `json:"Device,omitempty"` - InstanceID aws.StringValue `json:"InstanceId,omitempty"` - IOPS aws.IntegerValue `json:"Iops,omitempty"` - MountPoint aws.StringValue `json:"MountPoint,omitempty"` - Name aws.StringValue `json:"Name,omitempty"` - NumberOfDisks aws.IntegerValue `json:"NumberOfDisks,omitempty"` - RAIDArrayID aws.StringValue `json:"RaidArrayId,omitempty"` - RAIDLevel aws.IntegerValue `json:"RaidLevel,omitempty"` - Size aws.IntegerValue `json:"Size,omitempty"` - StackID aws.StringValue `json:"StackId,omitempty"` - VolumeType aws.StringValue `json:"VolumeType,omitempty"` -} - -// RDSDBInstance is undocumented. -type RDSDBInstance struct { - Address aws.StringValue `json:"Address,omitempty"` - DBInstanceIdentifier aws.StringValue `json:"DbInstanceIdentifier,omitempty"` - DBPassword aws.StringValue `json:"DbPassword,omitempty"` - DBUser aws.StringValue `json:"DbUser,omitempty"` - Engine aws.StringValue `json:"Engine,omitempty"` - MissingOnRDS aws.BooleanValue `json:"MissingOnRds,omitempty"` - RDSDBInstanceARN aws.StringValue `json:"RdsDbInstanceArn,omitempty"` - Region aws.StringValue `json:"Region,omitempty"` - StackID aws.StringValue `json:"StackId,omitempty"` -} - -// RebootInstanceRequest is undocumented. -type RebootInstanceRequest struct { - InstanceID aws.StringValue `json:"InstanceId"` -} - -// Recipes is undocumented. -type Recipes struct { - Configure []string `json:"Configure,omitempty"` - Deploy []string `json:"Deploy,omitempty"` - Setup []string `json:"Setup,omitempty"` - Shutdown []string `json:"Shutdown,omitempty"` - Undeploy []string `json:"Undeploy,omitempty"` -} - -// RegisterElasticIPRequest is undocumented. -type RegisterElasticIPRequest struct { - ElasticIP aws.StringValue `json:"ElasticIp"` - StackID aws.StringValue `json:"StackId"` -} - -// RegisterElasticIPResult is undocumented. -type RegisterElasticIPResult struct { - ElasticIP aws.StringValue `json:"ElasticIp,omitempty"` -} - -// RegisterInstanceRequest is undocumented. -type RegisterInstanceRequest struct { - Hostname aws.StringValue `json:"Hostname,omitempty"` - InstanceIdentity *InstanceIdentity `json:"InstanceIdentity,omitempty"` - PrivateIP aws.StringValue `json:"PrivateIp,omitempty"` - PublicIP aws.StringValue `json:"PublicIp,omitempty"` - RsaPublicKey aws.StringValue `json:"RsaPublicKey,omitempty"` - RsaPublicKeyFingerprint aws.StringValue `json:"RsaPublicKeyFingerprint,omitempty"` - StackID aws.StringValue `json:"StackId"` -} - -// RegisterInstanceResult is undocumented. -type RegisterInstanceResult struct { - InstanceID aws.StringValue `json:"InstanceId,omitempty"` -} - -// RegisterRDSDBInstanceRequest is undocumented. -type RegisterRDSDBInstanceRequest struct { - DBPassword aws.StringValue `json:"DbPassword"` - DBUser aws.StringValue `json:"DbUser"` - RDSDBInstanceARN aws.StringValue `json:"RdsDbInstanceArn"` - StackID aws.StringValue `json:"StackId"` -} - -// RegisterVolumeRequest is undocumented. -type RegisterVolumeRequest struct { - EC2VolumeID aws.StringValue `json:"Ec2VolumeId,omitempty"` - StackID aws.StringValue `json:"StackId"` -} - -// RegisterVolumeResult is undocumented. -type RegisterVolumeResult struct { - VolumeID aws.StringValue `json:"VolumeId,omitempty"` -} - -// ReportedOS is undocumented. -type ReportedOS struct { - Family aws.StringValue `json:"Family,omitempty"` - Name aws.StringValue `json:"Name,omitempty"` - Version aws.StringValue `json:"Version,omitempty"` -} - -// Possible values for OpsWorks. -const ( - RootDeviceTypeEBS = "ebs" - RootDeviceTypeInstanceStore = "instance-store" -) - -// SelfUserProfile is undocumented. -type SelfUserProfile struct { - IAMUserARN aws.StringValue `json:"IamUserArn,omitempty"` - Name aws.StringValue `json:"Name,omitempty"` - SSHPublicKey aws.StringValue `json:"SshPublicKey,omitempty"` - SSHUsername aws.StringValue `json:"SshUsername,omitempty"` -} - -// ServiceError is undocumented. -type ServiceError struct { - CreatedAt aws.StringValue `json:"CreatedAt,omitempty"` - InstanceID aws.StringValue `json:"InstanceId,omitempty"` - Message aws.StringValue `json:"Message,omitempty"` - ServiceErrorID aws.StringValue `json:"ServiceErrorId,omitempty"` - StackID aws.StringValue `json:"StackId,omitempty"` - Type aws.StringValue `json:"Type,omitempty"` -} - -// SetLoadBasedAutoScalingRequest is undocumented. -type SetLoadBasedAutoScalingRequest struct { - DownScaling *AutoScalingThresholds `json:"DownScaling,omitempty"` - Enable aws.BooleanValue `json:"Enable,omitempty"` - LayerID aws.StringValue `json:"LayerId"` - UpScaling *AutoScalingThresholds `json:"UpScaling,omitempty"` -} - -// SetPermissionRequest is undocumented. -type SetPermissionRequest struct { - AllowSSH aws.BooleanValue `json:"AllowSsh,omitempty"` - AllowSudo aws.BooleanValue `json:"AllowSudo,omitempty"` - IAMUserARN aws.StringValue `json:"IamUserArn"` - Level aws.StringValue `json:"Level,omitempty"` - StackID aws.StringValue `json:"StackId"` -} - -// SetTimeBasedAutoScalingRequest is undocumented. -type SetTimeBasedAutoScalingRequest struct { - AutoScalingSchedule *WeeklyAutoScalingSchedule `json:"AutoScalingSchedule,omitempty"` - InstanceID aws.StringValue `json:"InstanceId"` -} - -// ShutdownEventConfiguration is undocumented. -type ShutdownEventConfiguration struct { - DelayUntilElbConnectionsDrained aws.BooleanValue `json:"DelayUntilElbConnectionsDrained,omitempty"` - ExecutionTimeout aws.IntegerValue `json:"ExecutionTimeout,omitempty"` -} - -// Source is undocumented. -type Source struct { - Password aws.StringValue `json:"Password,omitempty"` - Revision aws.StringValue `json:"Revision,omitempty"` - SSHKey aws.StringValue `json:"SshKey,omitempty"` - Type aws.StringValue `json:"Type,omitempty"` - URL aws.StringValue `json:"Url,omitempty"` - Username aws.StringValue `json:"Username,omitempty"` -} - -// Possible values for OpsWorks. -const ( - SourceTypeArchive = "archive" - SourceTypeGit = "git" - SourceTypeS3 = "s3" - SourceTypeSVN = "svn" -) - -// SSLConfiguration is undocumented. -type SSLConfiguration struct { - Certificate aws.StringValue `json:"Certificate"` - Chain aws.StringValue `json:"Chain,omitempty"` - PrivateKey aws.StringValue `json:"PrivateKey"` -} - -// Stack is undocumented. -type Stack struct { - ARN aws.StringValue `json:"Arn,omitempty"` - Attributes map[string]string `json:"Attributes,omitempty"` - ChefConfiguration *ChefConfiguration `json:"ChefConfiguration,omitempty"` - ConfigurationManager *StackConfigurationManager `json:"ConfigurationManager,omitempty"` - CreatedAt aws.StringValue `json:"CreatedAt,omitempty"` - CustomCookbooksSource *Source `json:"CustomCookbooksSource,omitempty"` - CustomJSON aws.StringValue `json:"CustomJson,omitempty"` - DefaultAvailabilityZone aws.StringValue `json:"DefaultAvailabilityZone,omitempty"` - DefaultInstanceProfileARN aws.StringValue `json:"DefaultInstanceProfileArn,omitempty"` - DefaultOS aws.StringValue `json:"DefaultOs,omitempty"` - DefaultRootDeviceType aws.StringValue `json:"DefaultRootDeviceType,omitempty"` - DefaultSSHKeyName aws.StringValue `json:"DefaultSshKeyName,omitempty"` - DefaultSubnetID aws.StringValue `json:"DefaultSubnetId,omitempty"` - HostnameTheme aws.StringValue `json:"HostnameTheme,omitempty"` - Name aws.StringValue `json:"Name,omitempty"` - Region aws.StringValue `json:"Region,omitempty"` - ServiceRoleARN aws.StringValue `json:"ServiceRoleArn,omitempty"` - StackID aws.StringValue `json:"StackId,omitempty"` - UseCustomCookbooks aws.BooleanValue `json:"UseCustomCookbooks,omitempty"` - UseOpsworksSecurityGroups aws.BooleanValue `json:"UseOpsworksSecurityGroups,omitempty"` - VPCID aws.StringValue `json:"VpcId,omitempty"` -} - -// Possible values for OpsWorks. -const ( - StackAttributesKeysColor = "Color" -) - -// StackConfigurationManager is undocumented. -type StackConfigurationManager struct { - Name aws.StringValue `json:"Name,omitempty"` - Version aws.StringValue `json:"Version,omitempty"` -} - -// StackSummary is undocumented. -type StackSummary struct { - AppsCount aws.IntegerValue `json:"AppsCount,omitempty"` - ARN aws.StringValue `json:"Arn,omitempty"` - InstancesCount *InstancesCount `json:"InstancesCount,omitempty"` - LayersCount aws.IntegerValue `json:"LayersCount,omitempty"` - Name aws.StringValue `json:"Name,omitempty"` - StackID aws.StringValue `json:"StackId,omitempty"` -} - -// StartInstanceRequest is undocumented. -type StartInstanceRequest struct { - InstanceID aws.StringValue `json:"InstanceId"` -} - -// StartStackRequest is undocumented. -type StartStackRequest struct { - StackID aws.StringValue `json:"StackId"` -} - -// StopInstanceRequest is undocumented. -type StopInstanceRequest struct { - InstanceID aws.StringValue `json:"InstanceId"` -} - -// StopStackRequest is undocumented. -type StopStackRequest struct { - StackID aws.StringValue `json:"StackId"` -} - -// TimeBasedAutoScalingConfiguration is undocumented. -type TimeBasedAutoScalingConfiguration struct { - AutoScalingSchedule *WeeklyAutoScalingSchedule `json:"AutoScalingSchedule,omitempty"` - InstanceID aws.StringValue `json:"InstanceId,omitempty"` -} - -// UnassignInstanceRequest is undocumented. -type UnassignInstanceRequest struct { - InstanceID aws.StringValue `json:"InstanceId"` -} - -// UnassignVolumeRequest is undocumented. -type UnassignVolumeRequest struct { - VolumeID aws.StringValue `json:"VolumeId"` -} - -// UpdateAppRequest is undocumented. -type UpdateAppRequest struct { - AppID aws.StringValue `json:"AppId"` - AppSource *Source `json:"AppSource,omitempty"` - Attributes map[string]string `json:"Attributes,omitempty"` - DataSources []DataSource `json:"DataSources,omitempty"` - Description aws.StringValue `json:"Description,omitempty"` - Domains []string `json:"Domains,omitempty"` - EnableSSL aws.BooleanValue `json:"EnableSsl,omitempty"` - Environment []EnvironmentVariable `json:"Environment,omitempty"` - Name aws.StringValue `json:"Name,omitempty"` - SSLConfiguration *SSLConfiguration `json:"SslConfiguration,omitempty"` - Type aws.StringValue `json:"Type,omitempty"` -} - -// UpdateElasticIPRequest is undocumented. -type UpdateElasticIPRequest struct { - ElasticIP aws.StringValue `json:"ElasticIp"` - Name aws.StringValue `json:"Name,omitempty"` -} - -// UpdateInstanceRequest is undocumented. -type UpdateInstanceRequest struct { - AMIID aws.StringValue `json:"AmiId,omitempty"` - Architecture aws.StringValue `json:"Architecture,omitempty"` - AutoScalingType aws.StringValue `json:"AutoScalingType,omitempty"` - EBSOptimized aws.BooleanValue `json:"EbsOptimized,omitempty"` - Hostname aws.StringValue `json:"Hostname,omitempty"` - InstallUpdatesOnBoot aws.BooleanValue `json:"InstallUpdatesOnBoot,omitempty"` - InstanceID aws.StringValue `json:"InstanceId"` - InstanceType aws.StringValue `json:"InstanceType,omitempty"` - LayerIDs []string `json:"LayerIds,omitempty"` - OS aws.StringValue `json:"Os,omitempty"` - SSHKeyName aws.StringValue `json:"SshKeyName,omitempty"` -} - -// UpdateLayerRequest is undocumented. -type UpdateLayerRequest struct { - Attributes map[string]string `json:"Attributes,omitempty"` - AutoAssignElasticIPs aws.BooleanValue `json:"AutoAssignElasticIps,omitempty"` - AutoAssignPublicIPs aws.BooleanValue `json:"AutoAssignPublicIps,omitempty"` - CustomInstanceProfileARN aws.StringValue `json:"CustomInstanceProfileArn,omitempty"` - CustomRecipes *Recipes `json:"CustomRecipes,omitempty"` - CustomSecurityGroupIDs []string `json:"CustomSecurityGroupIds,omitempty"` - EnableAutoHealing aws.BooleanValue `json:"EnableAutoHealing,omitempty"` - InstallUpdatesOnBoot aws.BooleanValue `json:"InstallUpdatesOnBoot,omitempty"` - LayerID aws.StringValue `json:"LayerId"` - LifecycleEventConfiguration *LifecycleEventConfiguration `json:"LifecycleEventConfiguration,omitempty"` - Name aws.StringValue `json:"Name,omitempty"` - Packages []string `json:"Packages,omitempty"` - Shortname aws.StringValue `json:"Shortname,omitempty"` - UseEBSOptimizedInstances aws.BooleanValue `json:"UseEbsOptimizedInstances,omitempty"` - VolumeConfigurations []VolumeConfiguration `json:"VolumeConfigurations,omitempty"` -} - -// UpdateMyUserProfileRequest is undocumented. -type UpdateMyUserProfileRequest struct { - SSHPublicKey aws.StringValue `json:"SshPublicKey,omitempty"` -} - -// UpdateRDSDBInstanceRequest is undocumented. -type UpdateRDSDBInstanceRequest struct { - DBPassword aws.StringValue `json:"DbPassword,omitempty"` - DBUser aws.StringValue `json:"DbUser,omitempty"` - RDSDBInstanceARN aws.StringValue `json:"RdsDbInstanceArn"` -} - -// UpdateStackRequest is undocumented. -type UpdateStackRequest struct { - Attributes map[string]string `json:"Attributes,omitempty"` - ChefConfiguration *ChefConfiguration `json:"ChefConfiguration,omitempty"` - ConfigurationManager *StackConfigurationManager `json:"ConfigurationManager,omitempty"` - CustomCookbooksSource *Source `json:"CustomCookbooksSource,omitempty"` - CustomJSON aws.StringValue `json:"CustomJson,omitempty"` - DefaultAvailabilityZone aws.StringValue `json:"DefaultAvailabilityZone,omitempty"` - DefaultInstanceProfileARN aws.StringValue `json:"DefaultInstanceProfileArn,omitempty"` - DefaultOS aws.StringValue `json:"DefaultOs,omitempty"` - DefaultRootDeviceType aws.StringValue `json:"DefaultRootDeviceType,omitempty"` - DefaultSSHKeyName aws.StringValue `json:"DefaultSshKeyName,omitempty"` - DefaultSubnetID aws.StringValue `json:"DefaultSubnetId,omitempty"` - HostnameTheme aws.StringValue `json:"HostnameTheme,omitempty"` - Name aws.StringValue `json:"Name,omitempty"` - ServiceRoleARN aws.StringValue `json:"ServiceRoleArn,omitempty"` - StackID aws.StringValue `json:"StackId"` - UseCustomCookbooks aws.BooleanValue `json:"UseCustomCookbooks,omitempty"` - UseOpsworksSecurityGroups aws.BooleanValue `json:"UseOpsworksSecurityGroups,omitempty"` -} - -// UpdateUserProfileRequest is undocumented. -type UpdateUserProfileRequest struct { - AllowSelfManagement aws.BooleanValue `json:"AllowSelfManagement,omitempty"` - IAMUserARN aws.StringValue `json:"IamUserArn"` - SSHPublicKey aws.StringValue `json:"SshPublicKey,omitempty"` - SSHUsername aws.StringValue `json:"SshUsername,omitempty"` -} - -// UpdateVolumeRequest is undocumented. -type UpdateVolumeRequest struct { - MountPoint aws.StringValue `json:"MountPoint,omitempty"` - Name aws.StringValue `json:"Name,omitempty"` - VolumeID aws.StringValue `json:"VolumeId"` -} - -// UserProfile is undocumented. -type UserProfile struct { - AllowSelfManagement aws.BooleanValue `json:"AllowSelfManagement,omitempty"` - IAMUserARN aws.StringValue `json:"IamUserArn,omitempty"` - Name aws.StringValue `json:"Name,omitempty"` - SSHPublicKey aws.StringValue `json:"SshPublicKey,omitempty"` - SSHUsername aws.StringValue `json:"SshUsername,omitempty"` -} - -// Possible values for OpsWorks. -const ( - VirtualizationTypeHVM = "hvm" - VirtualizationTypeParavirtual = "paravirtual" -) - -// Volume is undocumented. -type Volume struct { - AvailabilityZone aws.StringValue `json:"AvailabilityZone,omitempty"` - Device aws.StringValue `json:"Device,omitempty"` - EC2VolumeID aws.StringValue `json:"Ec2VolumeId,omitempty"` - InstanceID aws.StringValue `json:"InstanceId,omitempty"` - IOPS aws.IntegerValue `json:"Iops,omitempty"` - MountPoint aws.StringValue `json:"MountPoint,omitempty"` - Name aws.StringValue `json:"Name,omitempty"` - RAIDArrayID aws.StringValue `json:"RaidArrayId,omitempty"` - Region aws.StringValue `json:"Region,omitempty"` - Size aws.IntegerValue `json:"Size,omitempty"` - Status aws.StringValue `json:"Status,omitempty"` - VolumeID aws.StringValue `json:"VolumeId,omitempty"` - VolumeType aws.StringValue `json:"VolumeType,omitempty"` -} - -// VolumeConfiguration is undocumented. -type VolumeConfiguration struct { - IOPS aws.IntegerValue `json:"Iops,omitempty"` - MountPoint aws.StringValue `json:"MountPoint"` - NumberOfDisks aws.IntegerValue `json:"NumberOfDisks"` - RAIDLevel aws.IntegerValue `json:"RaidLevel,omitempty"` - Size aws.IntegerValue `json:"Size"` - VolumeType aws.StringValue `json:"VolumeType,omitempty"` -} - -// WeeklyAutoScalingSchedule is undocumented. -type WeeklyAutoScalingSchedule struct { - Friday map[string]string `json:"Friday,omitempty"` - Monday map[string]string `json:"Monday,omitempty"` - Saturday map[string]string `json:"Saturday,omitempty"` - Sunday map[string]string `json:"Sunday,omitempty"` - Thursday map[string]string `json:"Thursday,omitempty"` - Tuesday map[string]string `json:"Tuesday,omitempty"` - Wednesday map[string]string `json:"Wednesday,omitempty"` -} - -// avoid errors if the packages aren't referenced -var _ time.Time diff --git a/src/github.com/getlantern/aws-sdk-go/gen/rds/rds.go b/src/github.com/getlantern/aws-sdk-go/gen/rds/rds.go deleted file mode 100644 index 127792696f..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/gen/rds/rds.go +++ /dev/null @@ -1,1944 +0,0 @@ -// THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. - -// Package rds provides a client for Amazon Relational Database Service. -package rds - -import ( - "net/http" - "time" - - "github.com/awslabs/aws-sdk-go/aws" - "github.com/awslabs/aws-sdk-go/gen/endpoints" -) - -import ( - "encoding/xml" - "io" -) - -// RDS is a client for Amazon Relational Database Service. -type RDS struct { - client *aws.QueryClient -} - -// New returns a new RDS client. -func New(creds aws.CredentialsProvider, region string, client *http.Client) *RDS { - if client == nil { - client = http.DefaultClient - } - - endpoint, service, region := endpoints.Lookup("rds", region) - - return &RDS{ - client: &aws.QueryClient{ - Context: aws.Context{ - Credentials: creds, - Service: service, - Region: region, - }, - Client: client, - Endpoint: endpoint, - APIVersion: "2014-10-31", - }, - } -} - -// AddSourceIdentifierToSubscription adds a source identifier to an -// existing RDS event notification subscription. -func (c *RDS) AddSourceIdentifierToSubscription(req *AddSourceIdentifierToSubscriptionMessage) (resp *AddSourceIdentifierToSubscriptionResult, err error) { - resp = &AddSourceIdentifierToSubscriptionResult{} - err = c.client.Do("AddSourceIdentifierToSubscription", "POST", "/", req, resp) - return -} - -// AddTagsToResource adds metadata tags to an Amazon RDS resource. These -// tags can also be used with cost allocation reporting to track cost -// associated with Amazon RDS resources, or used in Condition statement in -// IAM policy for Amazon For an overview on tagging Amazon RDS resources, -// see Tagging Amazon RDS Resources -func (c *RDS) AddTagsToResource(req *AddTagsToResourceMessage) (err error) { - // NRE - err = c.client.Do("AddTagsToResource", "POST", "/", req, nil) - return -} - -// ApplyPendingMaintenanceAction applies a pending maintenance action to a -// resource. -func (c *RDS) ApplyPendingMaintenanceAction(req *ApplyPendingMaintenanceActionMessage) (resp *ApplyPendingMaintenanceActionResult, err error) { - resp = &ApplyPendingMaintenanceActionResult{} - err = c.client.Do("ApplyPendingMaintenanceAction", "POST", "/", req, resp) - return -} - -// AuthorizeDBSecurityGroupIngress enables ingress to a DBSecurityGroup -// using one of two forms of authorization. First, EC2 or VPC security -// groups can be added to the DBSecurityGroup if the application using the -// database is running on EC2 or VPC instances. Second, IP ranges are -// available if the application accessing your database is running on the -// Internet. Required parameters for this API are one of range, -// EC2SecurityGroupId for or (EC2SecurityGroupOwnerId and either -// EC2SecurityGroupName or EC2SecurityGroupId for non-VPC). You cannot -// authorize ingress from an EC2 security group in one Region to an Amazon -// RDS DB instance in another. You cannot authorize ingress from a VPC -// security group in one VPC to an Amazon RDS DB instance in another. For -// an overview of ranges, go to the Wikipedia Tutorial . -func (c *RDS) AuthorizeDBSecurityGroupIngress(req *AuthorizeDBSecurityGroupIngressMessage) (resp *AuthorizeDBSecurityGroupIngressResult, err error) { - resp = &AuthorizeDBSecurityGroupIngressResult{} - err = c.client.Do("AuthorizeDBSecurityGroupIngress", "POST", "/", req, resp) - return -} - -// CopyDBParameterGroup is undocumented. -func (c *RDS) CopyDBParameterGroup(req *CopyDBParameterGroupMessage) (resp *CopyDBParameterGroupResult, err error) { - resp = &CopyDBParameterGroupResult{} - err = c.client.Do("CopyDBParameterGroup", "POST", "/", req, resp) - return -} - -// CopyDBSnapshot copies the specified DBSnapshot. The source DBSnapshot -// must be in the "available" state. -func (c *RDS) CopyDBSnapshot(req *CopyDBSnapshotMessage) (resp *CopyDBSnapshotResult, err error) { - resp = &CopyDBSnapshotResult{} - err = c.client.Do("CopyDBSnapshot", "POST", "/", req, resp) - return -} - -// CopyOptionGroup is undocumented. -func (c *RDS) CopyOptionGroup(req *CopyOptionGroupMessage) (resp *CopyOptionGroupResult, err error) { - resp = &CopyOptionGroupResult{} - err = c.client.Do("CopyOptionGroup", "POST", "/", req, resp) - return -} - -// CreateDBInstance is undocumented. -func (c *RDS) CreateDBInstance(req *CreateDBInstanceMessage) (resp *CreateDBInstanceResult, err error) { - resp = &CreateDBInstanceResult{} - err = c.client.Do("CreateDBInstance", "POST", "/", req, resp) - return -} - -// CreateDBInstanceReadReplica creates a DB instance that acts as a Read -// Replica of a source DB instance. All Read Replica DB instances are -// created as Single-AZ deployments with backups disabled. All other DB -// instance attributes (including DB security groups and DB parameter -// groups) are inherited from the source DB instance, except as specified -// below. The source DB instance must have backup retention enabled. -func (c *RDS) CreateDBInstanceReadReplica(req *CreateDBInstanceReadReplicaMessage) (resp *CreateDBInstanceReadReplicaResult, err error) { - resp = &CreateDBInstanceReadReplicaResult{} - err = c.client.Do("CreateDBInstanceReadReplica", "POST", "/", req, resp) - return -} - -// CreateDBParameterGroup creates a new DB parameter group. A DB parameter -// group is initially created with the default parameters for the database -// engine used by the DB instance. To provide custom values for any of the -// parameters, you must modify the group after creating it using -// ModifyDBParameterGroup . Once you've created a DB parameter group, you -// need to associate it with your DB instance using ModifyDBInstance . When -// you associate a new DB parameter group with a running DB instance, you -// need to reboot the DB instance without failover for the new DB parameter -// group and associated settings to take effect. After you create a DB -// parameter group, you should wait at least 5 minutes before creating your -// first DB instance that uses that DB parameter group as the default -// parameter group. This allows Amazon RDS to fully complete the create -// action before the parameter group is used as the default for a new DB -// instance. This is especially important for parameters that are critical -// when creating the default database for a DB instance, such as the -// character set for the default database defined by the -// character_set_database parameter. You can use the Parameter Groups -// option of the Amazon RDS console or the DescribeDBParameters command to -// verify that your DB parameter group has been created or modified. -func (c *RDS) CreateDBParameterGroup(req *CreateDBParameterGroupMessage) (resp *CreateDBParameterGroupResult, err error) { - resp = &CreateDBParameterGroupResult{} - err = c.client.Do("CreateDBParameterGroup", "POST", "/", req, resp) - return -} - -// CreateDBSecurityGroup creates a new DB security group. DB security -// groups control access to a DB instance. -func (c *RDS) CreateDBSecurityGroup(req *CreateDBSecurityGroupMessage) (resp *CreateDBSecurityGroupResult, err error) { - resp = &CreateDBSecurityGroupResult{} - err = c.client.Do("CreateDBSecurityGroup", "POST", "/", req, resp) - return -} - -// CreateDBSnapshot creates a DBSnapshot. The source DBInstance must be in -// "available" state. -func (c *RDS) CreateDBSnapshot(req *CreateDBSnapshotMessage) (resp *CreateDBSnapshotResult, err error) { - resp = &CreateDBSnapshotResult{} - err = c.client.Do("CreateDBSnapshot", "POST", "/", req, resp) - return -} - -// CreateDBSubnetGroup creates a new DB subnet group. DB subnet groups must -// contain at least one subnet in at least two AZs in the region. -func (c *RDS) CreateDBSubnetGroup(req *CreateDBSubnetGroupMessage) (resp *CreateDBSubnetGroupResult, err error) { - resp = &CreateDBSubnetGroupResult{} - err = c.client.Do("CreateDBSubnetGroup", "POST", "/", req, resp) - return -} - -// CreateEventSubscription creates an RDS event notification subscription. -// This action requires a topic ARN (Amazon Resource Name) created by -// either the RDS console, the SNS console, or the SNS To obtain an ARN -// with you must create a topic in Amazon SNS and subscribe to the topic. -// The ARN is displayed in the SNS console. You can specify the type of -// source (SourceType) you want to be notified of, provide a list of RDS -// sources (SourceIds) that triggers the events, and provide a list of -// event categories (EventCategories) for events you want to be notified -// of. For example, you can specify SourceType = db-instance, SourceIds = -// mydbinstance1, mydbinstance2 and EventCategories = Availability, Backup. -// If you specify both the SourceType and SourceIds, such as SourceType = -// db-instance and SourceIdentifier = myDBInstance1, you will be notified -// of all the db-instance events for the specified source. If you specify a -// SourceType but do not specify a SourceIdentifier, you will receive -// notice of the events for that source type for all your RDS sources. If -// you do not specify either the SourceType nor the SourceIdentifier, you -// will be notified of events generated from all RDS sources belonging to -// your customer account. -func (c *RDS) CreateEventSubscription(req *CreateEventSubscriptionMessage) (resp *CreateEventSubscriptionResult, err error) { - resp = &CreateEventSubscriptionResult{} - err = c.client.Do("CreateEventSubscription", "POST", "/", req, resp) - return -} - -// CreateOptionGroup creates a new option group. You can create up to 20 -// option groups. -func (c *RDS) CreateOptionGroup(req *CreateOptionGroupMessage) (resp *CreateOptionGroupResult, err error) { - resp = &CreateOptionGroupResult{} - err = c.client.Do("CreateOptionGroup", "POST", "/", req, resp) - return -} - -// DeleteDBInstance the DeleteDBInstance action deletes a previously -// provisioned DB instance. A successful response from the web service -// indicates the request was received correctly. When you delete a DB -// instance, all automated backups for that instance are deleted and cannot -// be recovered. Manual DB snapshots of the DB instance to be deleted are -// not deleted. If a final DB snapshot is requested the status of the RDS -// instance will be "deleting" until the DB snapshot is created. The API -// action DescribeDBInstance is used to monitor the status of this -// operation. The action cannot be canceled or reverted once submitted. -func (c *RDS) DeleteDBInstance(req *DeleteDBInstanceMessage) (resp *DeleteDBInstanceResult, err error) { - resp = &DeleteDBInstanceResult{} - err = c.client.Do("DeleteDBInstance", "POST", "/", req, resp) - return -} - -// DeleteDBParameterGroup deletes a specified DBParameterGroup. The -// DBParameterGroup to be deleted cannot be associated with any DB -// instances. The specified DB parameter group cannot be associated with -// any DB instances. -func (c *RDS) DeleteDBParameterGroup(req *DeleteDBParameterGroupMessage) (err error) { - // NRE - err = c.client.Do("DeleteDBParameterGroup", "POST", "/", req, nil) - return -} - -// DeleteDBSecurityGroup deletes a DB security group. The specified DB -// security group must not be associated with any DB instances. -func (c *RDS) DeleteDBSecurityGroup(req *DeleteDBSecurityGroupMessage) (err error) { - // NRE - err = c.client.Do("DeleteDBSecurityGroup", "POST", "/", req, nil) - return -} - -// DeleteDBSnapshot deletes a DBSnapshot. If the snapshot is being copied, -// the copy operation is terminated. The DBSnapshot must be in the -// available state to be deleted. -func (c *RDS) DeleteDBSnapshot(req *DeleteDBSnapshotMessage) (resp *DeleteDBSnapshotResult, err error) { - resp = &DeleteDBSnapshotResult{} - err = c.client.Do("DeleteDBSnapshot", "POST", "/", req, resp) - return -} - -// DeleteDBSubnetGroup deletes a DB subnet group. The specified database -// subnet group must not be associated with any DB instances. -func (c *RDS) DeleteDBSubnetGroup(req *DeleteDBSubnetGroupMessage) (err error) { - // NRE - err = c.client.Do("DeleteDBSubnetGroup", "POST", "/", req, nil) - return -} - -// DeleteEventSubscription is undocumented. -func (c *RDS) DeleteEventSubscription(req *DeleteEventSubscriptionMessage) (resp *DeleteEventSubscriptionResult, err error) { - resp = &DeleteEventSubscriptionResult{} - err = c.client.Do("DeleteEventSubscription", "POST", "/", req, resp) - return -} - -// DeleteOptionGroup is undocumented. -func (c *RDS) DeleteOptionGroup(req *DeleteOptionGroupMessage) (err error) { - // NRE - err = c.client.Do("DeleteOptionGroup", "POST", "/", req, nil) - return -} - -// DescribeDBEngineVersions is undocumented. -func (c *RDS) DescribeDBEngineVersions(req *DescribeDBEngineVersionsMessage) (resp *DescribeDBEngineVersionsResult, err error) { - resp = &DescribeDBEngineVersionsResult{} - err = c.client.Do("DescribeDBEngineVersions", "POST", "/", req, resp) - return -} - -// DescribeDBInstances returns information about provisioned RDS instances. -// This API supports pagination. -func (c *RDS) DescribeDBInstances(req *DescribeDBInstancesMessage) (resp *DescribeDBInstancesResult, err error) { - resp = &DescribeDBInstancesResult{} - err = c.client.Do("DescribeDBInstances", "POST", "/", req, resp) - return -} - -// DescribeDBLogFiles returns a list of DB log files for the DB instance. -func (c *RDS) DescribeDBLogFiles(req *DescribeDBLogFilesMessage) (resp *DescribeDBLogFilesResult, err error) { - resp = &DescribeDBLogFilesResult{} - err = c.client.Do("DescribeDBLogFiles", "POST", "/", req, resp) - return -} - -// DescribeDBParameterGroups returns a list of DBParameterGroup -// descriptions. If a DBParameterGroupName is specified, the list will -// contain only the description of the specified DB parameter group. -func (c *RDS) DescribeDBParameterGroups(req *DescribeDBParameterGroupsMessage) (resp *DescribeDBParameterGroupsResult, err error) { - resp = &DescribeDBParameterGroupsResult{} - err = c.client.Do("DescribeDBParameterGroups", "POST", "/", req, resp) - return -} - -// DescribeDBParameters returns the detailed parameter list for a -// particular DB parameter group. -func (c *RDS) DescribeDBParameters(req *DescribeDBParametersMessage) (resp *DescribeDBParametersResult, err error) { - resp = &DescribeDBParametersResult{} - err = c.client.Do("DescribeDBParameters", "POST", "/", req, resp) - return -} - -// DescribeDBSecurityGroups returns a list of DBSecurityGroup descriptions. -// If a DBSecurityGroupName is specified, the list will contain only the -// descriptions of the specified DB security group. -func (c *RDS) DescribeDBSecurityGroups(req *DescribeDBSecurityGroupsMessage) (resp *DescribeDBSecurityGroupsResult, err error) { - resp = &DescribeDBSecurityGroupsResult{} - err = c.client.Do("DescribeDBSecurityGroups", "POST", "/", req, resp) - return -} - -// DescribeDBSnapshots returns information about DB snapshots. This API -// supports pagination. -func (c *RDS) DescribeDBSnapshots(req *DescribeDBSnapshotsMessage) (resp *DescribeDBSnapshotsResult, err error) { - resp = &DescribeDBSnapshotsResult{} - err = c.client.Do("DescribeDBSnapshots", "POST", "/", req, resp) - return -} - -// DescribeDBSubnetGroups returns a list of DBSubnetGroup descriptions. If -// a DBSubnetGroupName is specified, the list will contain only the -// descriptions of the specified DBSubnetGroup. For an overview of ranges, -// go to the Wikipedia Tutorial . -func (c *RDS) DescribeDBSubnetGroups(req *DescribeDBSubnetGroupsMessage) (resp *DescribeDBSubnetGroupsResult, err error) { - resp = &DescribeDBSubnetGroupsResult{} - err = c.client.Do("DescribeDBSubnetGroups", "POST", "/", req, resp) - return -} - -// DescribeEngineDefaultParameters returns the default engine and system -// parameter information for the specified database engine. -func (c *RDS) DescribeEngineDefaultParameters(req *DescribeEngineDefaultParametersMessage) (resp *DescribeEngineDefaultParametersResult, err error) { - resp = &DescribeEngineDefaultParametersResult{} - err = c.client.Do("DescribeEngineDefaultParameters", "POST", "/", req, resp) - return -} - -// DescribeEventCategories displays a list of categories for all event -// source types, or, if specified, for a specified source type. You can see -// a list of the event categories and source types in the Events topic in -// the Amazon RDS User Guide. -func (c *RDS) DescribeEventCategories(req *DescribeEventCategoriesMessage) (resp *DescribeEventCategoriesResult, err error) { - resp = &DescribeEventCategoriesResult{} - err = c.client.Do("DescribeEventCategories", "POST", "/", req, resp) - return -} - -// DescribeEventSubscriptions lists all the subscription descriptions for a -// customer account. The description for a subscription includes -// SubscriptionName, SNSTopicARN, CustomerID, SourceType, SourceID, -// CreationTime, and Status. If you specify a SubscriptionName, lists the -// description for that subscription. -func (c *RDS) DescribeEventSubscriptions(req *DescribeEventSubscriptionsMessage) (resp *DescribeEventSubscriptionsResult, err error) { - resp = &DescribeEventSubscriptionsResult{} - err = c.client.Do("DescribeEventSubscriptions", "POST", "/", req, resp) - return -} - -// DescribeEvents returns events related to DB instances, DB security -// groups, DB snapshots, and DB parameter groups for the past 14 days. -// Events specific to a particular DB instance, DB security group, database -// snapshot, or DB parameter group can be obtained by providing the name as -// a parameter. By default, the past hour of events are returned. -func (c *RDS) DescribeEvents(req *DescribeEventsMessage) (resp *DescribeEventsResult, err error) { - resp = &DescribeEventsResult{} - err = c.client.Do("DescribeEvents", "POST", "/", req, resp) - return -} - -// DescribeOptionGroupOptions is undocumented. -func (c *RDS) DescribeOptionGroupOptions(req *DescribeOptionGroupOptionsMessage) (resp *DescribeOptionGroupOptionsResult, err error) { - resp = &DescribeOptionGroupOptionsResult{} - err = c.client.Do("DescribeOptionGroupOptions", "POST", "/", req, resp) - return -} - -// DescribeOptionGroups is undocumented. -func (c *RDS) DescribeOptionGroups(req *DescribeOptionGroupsMessage) (resp *DescribeOptionGroupsResult, err error) { - resp = &DescribeOptionGroupsResult{} - err = c.client.Do("DescribeOptionGroups", "POST", "/", req, resp) - return -} - -// DescribeOrderableDBInstanceOptions returns a list of orderable DB -// instance options for the specified engine. -func (c *RDS) DescribeOrderableDBInstanceOptions(req *DescribeOrderableDBInstanceOptionsMessage) (resp *DescribeOrderableDBInstanceOptionsResult, err error) { - resp = &DescribeOrderableDBInstanceOptionsResult{} - err = c.client.Do("DescribeOrderableDBInstanceOptions", "POST", "/", req, resp) - return -} - -// DescribePendingMaintenanceActions returns a list of resources (for -// example, DB Instances) that have at least one pending maintenance -// action. -func (c *RDS) DescribePendingMaintenanceActions(req *DescribePendingMaintenanceActionsMessage) (resp *DescribePendingMaintenanceActionsResult, err error) { - resp = &DescribePendingMaintenanceActionsResult{} - err = c.client.Do("DescribePendingMaintenanceActions", "POST", "/", req, resp) - return -} - -// DescribeReservedDBInstances returns information about reserved DB -// instances for this account, or about a specified reserved DB instance. -func (c *RDS) DescribeReservedDBInstances(req *DescribeReservedDBInstancesMessage) (resp *DescribeReservedDBInstancesResult, err error) { - resp = &DescribeReservedDBInstancesResult{} - err = c.client.Do("DescribeReservedDBInstances", "POST", "/", req, resp) - return -} - -// DescribeReservedDBInstancesOfferings is undocumented. -func (c *RDS) DescribeReservedDBInstancesOfferings(req *DescribeReservedDBInstancesOfferingsMessage) (resp *DescribeReservedDBInstancesOfferingsResult, err error) { - resp = &DescribeReservedDBInstancesOfferingsResult{} - err = c.client.Do("DescribeReservedDBInstancesOfferings", "POST", "/", req, resp) - return -} - -// DownloadDBLogFilePortion downloads all or a portion of the specified log -// file. -func (c *RDS) DownloadDBLogFilePortion(req *DownloadDBLogFilePortionMessage) (resp *DownloadDBLogFilePortionResult, err error) { - resp = &DownloadDBLogFilePortionResult{} - err = c.client.Do("DownloadDBLogFilePortion", "POST", "/", req, resp) - return -} - -// ListTagsForResource lists all tags on an Amazon RDS resource. For an -// overview on tagging an Amazon RDS resource, see Tagging Amazon RDS -// Resources -func (c *RDS) ListTagsForResource(req *ListTagsForResourceMessage) (resp *ListTagsForResourceResult, err error) { - resp = &ListTagsForResourceResult{} - err = c.client.Do("ListTagsForResource", "POST", "/", req, resp) - return -} - -// ModifyDBInstance modify settings for a DB instance. You can change one -// or more database configuration parameters by specifying these parameters -// and the new values in the request. -func (c *RDS) ModifyDBInstance(req *ModifyDBInstanceMessage) (resp *ModifyDBInstanceResult, err error) { - resp = &ModifyDBInstanceResult{} - err = c.client.Do("ModifyDBInstance", "POST", "/", req, resp) - return -} - -// ModifyDBParameterGroup modifies the parameters of a DB parameter group. -// To modify more than one parameter, submit a list of the following: -// ParameterName , ParameterValue , and ApplyMethod . A maximum of 20 -// parameters can be modified in a single request. Changes to dynamic -// parameters are applied immediately. Changes to static parameters require -// a reboot without failover to the DB instance associated with the -// parameter group before the change can take effect. After you modify a DB -// parameter group, you should wait at least 5 minutes before creating your -// first DB instance that uses that DB parameter group as the default -// parameter group. This allows Amazon RDS to fully complete the modify -// action before the parameter group is used as the default for a new DB -// instance. This is especially important for parameters that are critical -// when creating the default database for a DB instance, such as the -// character set for the default database defined by the -// character_set_database parameter. You can use the Parameter Groups -// option of the Amazon RDS console or the DescribeDBParameters command to -// verify that your DB parameter group has been created or modified. -func (c *RDS) ModifyDBParameterGroup(req *ModifyDBParameterGroupMessage) (resp *ModifyDBParameterGroupResult, err error) { - resp = &ModifyDBParameterGroupResult{} - err = c.client.Do("ModifyDBParameterGroup", "POST", "/", req, resp) - return -} - -// ModifyDBSubnetGroup modifies an existing DB subnet group. DB subnet -// groups must contain at least one subnet in at least two AZs in the -// region. -func (c *RDS) ModifyDBSubnetGroup(req *ModifyDBSubnetGroupMessage) (resp *ModifyDBSubnetGroupResult, err error) { - resp = &ModifyDBSubnetGroupResult{} - err = c.client.Do("ModifyDBSubnetGroup", "POST", "/", req, resp) - return -} - -// ModifyEventSubscription modifies an existing RDS event notification -// subscription. Note that you cannot modify the source identifiers using -// this call; to change source identifiers for a subscription, use the -// AddSourceIdentifierToSubscription and -// RemoveSourceIdentifierFromSubscription calls. You can see a list of the -// event categories for a given SourceType in the Events topic in the -// Amazon RDS User Guide or by using the DescribeEventCategories action. -func (c *RDS) ModifyEventSubscription(req *ModifyEventSubscriptionMessage) (resp *ModifyEventSubscriptionResult, err error) { - resp = &ModifyEventSubscriptionResult{} - err = c.client.Do("ModifyEventSubscription", "POST", "/", req, resp) - return -} - -// ModifyOptionGroup is undocumented. -func (c *RDS) ModifyOptionGroup(req *ModifyOptionGroupMessage) (resp *ModifyOptionGroupResult, err error) { - resp = &ModifyOptionGroupResult{} - err = c.client.Do("ModifyOptionGroup", "POST", "/", req, resp) - return -} - -// PromoteReadReplica promotes a Read Replica DB instance to a standalone -// DB instance. We recommend that you enable automated backups on your Read -// Replica before promoting the Read Replica. This ensures that no backup -// is taken during the promotion process. Once the instance is promoted to -// a primary instance, backups are taken based on your backup settings. -func (c *RDS) PromoteReadReplica(req *PromoteReadReplicaMessage) (resp *PromoteReadReplicaResult, err error) { - resp = &PromoteReadReplicaResult{} - err = c.client.Do("PromoteReadReplica", "POST", "/", req, resp) - return -} - -// PurchaseReservedDBInstancesOffering is undocumented. -func (c *RDS) PurchaseReservedDBInstancesOffering(req *PurchaseReservedDBInstancesOfferingMessage) (resp *PurchaseReservedDBInstancesOfferingResult, err error) { - resp = &PurchaseReservedDBInstancesOfferingResult{} - err = c.client.Do("PurchaseReservedDBInstancesOffering", "POST", "/", req, resp) - return -} - -// RebootDBInstance rebooting a DB instance restarts the database engine -// service. A reboot also applies to the DB instance any modifications to -// the associated DB parameter group that were pending. Rebooting a DB -// instance results in a momentary outage of the instance, during which the -// DB instance status is set to rebooting. If the RDS instance is -// configured for MultiAZ, it is possible that the reboot will be conducted -// through a failover. An Amazon RDS event is created when the reboot is -// completed. If your DB instance is deployed in multiple Availability -// Zones, you can force a failover from one AZ to the other during the -// reboot. You might force a failover to test the availability of your DB -// instance deployment or to restore operations to the original AZ after a -// failover occurs. The time required to reboot is a function of the -// specific database engine's crash recovery process. To improve the reboot -// time, we recommend that you reduce database activities as much as -// possible during the reboot process to reduce rollback activity for -// in-transit transactions. -func (c *RDS) RebootDBInstance(req *RebootDBInstanceMessage) (resp *RebootDBInstanceResult, err error) { - resp = &RebootDBInstanceResult{} - err = c.client.Do("RebootDBInstance", "POST", "/", req, resp) - return -} - -// RemoveSourceIdentifierFromSubscription removes a source identifier from -// an existing RDS event notification subscription. -func (c *RDS) RemoveSourceIdentifierFromSubscription(req *RemoveSourceIdentifierFromSubscriptionMessage) (resp *RemoveSourceIdentifierFromSubscriptionResult, err error) { - resp = &RemoveSourceIdentifierFromSubscriptionResult{} - err = c.client.Do("RemoveSourceIdentifierFromSubscription", "POST", "/", req, resp) - return -} - -// RemoveTagsFromResource removes metadata tags from an Amazon RDS -// resource. For an overview on tagging an Amazon RDS resource, see Tagging -// Amazon RDS Resources -func (c *RDS) RemoveTagsFromResource(req *RemoveTagsFromResourceMessage) (err error) { - // NRE - err = c.client.Do("RemoveTagsFromResource", "POST", "/", req, nil) - return -} - -// ResetDBParameterGroup modifies the parameters of a DB parameter group to -// the engine/system default value. To reset specific parameters submit a -// list of the following: ParameterName and ApplyMethod . To reset the -// entire DB parameter group, specify the DBParameterGroup name and -// ResetAllParameters parameters. When resetting the entire group, dynamic -// parameters are updated immediately and static parameters are set to -// pending-reboot to take effect on the next DB instance restart or -// RebootDBInstance request. -func (c *RDS) ResetDBParameterGroup(req *ResetDBParameterGroupMessage) (resp *ResetDBParameterGroupResult, err error) { - resp = &ResetDBParameterGroupResult{} - err = c.client.Do("ResetDBParameterGroup", "POST", "/", req, resp) - return -} - -// RestoreDBInstanceFromDBSnapshot creates a new DB instance from a DB -// snapshot. The target database is created from the source database -// restore point with the same configuration as the original source -// database, except that the new RDS instance is created with the default -// security group. If your intent is to replace your original DB instance -// with the new, restored DB instance, then rename your original DB -// instance before you call the RestoreDBInstanceFromDBSnapshot action. RDS -// does not allow two DB instances with the same name. Once you have -// renamed your original DB instance with a different identifier, then you -// can pass the original name of the DB instance as the -// DBInstanceIdentifier in the call to the RestoreDBInstanceFromDBSnapshot -// action. The result is that you will replace the original DB instance -// with the DB instance created from the snapshot. -func (c *RDS) RestoreDBInstanceFromDBSnapshot(req *RestoreDBInstanceFromDBSnapshotMessage) (resp *RestoreDBInstanceFromDBSnapshotResult, err error) { - resp = &RestoreDBInstanceFromDBSnapshotResult{} - err = c.client.Do("RestoreDBInstanceFromDBSnapshot", "POST", "/", req, resp) - return -} - -// RestoreDBInstanceToPointInTime restores a DB instance to an arbitrary -// point-in-time. Users can restore to any point in time before the -// LatestRestorableTime for up to BackupRetentionPeriod days. The target -// database is created from the source database with the same configuration -// as the original database except that the DB instance is created with the -// default DB security group. -func (c *RDS) RestoreDBInstanceToPointInTime(req *RestoreDBInstanceToPointInTimeMessage) (resp *RestoreDBInstanceToPointInTimeResult, err error) { - resp = &RestoreDBInstanceToPointInTimeResult{} - err = c.client.Do("RestoreDBInstanceToPointInTime", "POST", "/", req, resp) - return -} - -// RevokeDBSecurityGroupIngress revokes ingress from a DBSecurityGroup for -// previously authorized IP ranges or EC2 or VPC Security Groups. Required -// parameters for this API are one of EC2SecurityGroupId for or -// (EC2SecurityGroupOwnerId and either EC2SecurityGroupName or -// EC2SecurityGroupId). -func (c *RDS) RevokeDBSecurityGroupIngress(req *RevokeDBSecurityGroupIngressMessage) (resp *RevokeDBSecurityGroupIngressResult, err error) { - resp = &RevokeDBSecurityGroupIngressResult{} - err = c.client.Do("RevokeDBSecurityGroupIngress", "POST", "/", req, resp) - return -} - -// AddSourceIdentifierToSubscriptionMessage is undocumented. -type AddSourceIdentifierToSubscriptionMessage struct { - SourceIdentifier aws.StringValue `query:"SourceIdentifier" xml:"SourceIdentifier"` - SubscriptionName aws.StringValue `query:"SubscriptionName" xml:"SubscriptionName"` -} - -// AddSourceIdentifierToSubscriptionResult is undocumented. -type AddSourceIdentifierToSubscriptionResult struct { - EventSubscription *EventSubscription `query:"EventSubscription" xml:"AddSourceIdentifierToSubscriptionResult>EventSubscription"` -} - -// AddTagsToResourceMessage is undocumented. -type AddTagsToResourceMessage struct { - ResourceName aws.StringValue `query:"ResourceName" xml:"ResourceName"` - Tags []Tag `query:"Tags.member" xml:"Tags>Tag"` -} - -// Possible values for RDS. -const ( - ApplyMethodImmediate = "immediate" - ApplyMethodPendingReboot = "pending-reboot" -) - -// ApplyPendingMaintenanceActionMessage is undocumented. -type ApplyPendingMaintenanceActionMessage struct { - ApplyAction aws.StringValue `query:"ApplyAction" xml:"ApplyAction"` - OptInType aws.StringValue `query:"OptInType" xml:"OptInType"` - ResourceIdentifier aws.StringValue `query:"ResourceIdentifier" xml:"ResourceIdentifier"` -} - -// ApplyPendingMaintenanceActionResult is undocumented. -type ApplyPendingMaintenanceActionResult struct { - ResourcePendingMaintenanceActions *ResourcePendingMaintenanceActions `query:"ResourcePendingMaintenanceActions" xml:"ApplyPendingMaintenanceActionResult>ResourcePendingMaintenanceActions"` -} - -// AuthorizeDBSecurityGroupIngressMessage is undocumented. -type AuthorizeDBSecurityGroupIngressMessage struct { - CIDRIP aws.StringValue `query:"CIDRIP" xml:"CIDRIP"` - DBSecurityGroupName aws.StringValue `query:"DBSecurityGroupName" xml:"DBSecurityGroupName"` - EC2SecurityGroupID aws.StringValue `query:"EC2SecurityGroupId" xml:"EC2SecurityGroupId"` - EC2SecurityGroupName aws.StringValue `query:"EC2SecurityGroupName" xml:"EC2SecurityGroupName"` - EC2SecurityGroupOwnerID aws.StringValue `query:"EC2SecurityGroupOwnerId" xml:"EC2SecurityGroupOwnerId"` -} - -// AuthorizeDBSecurityGroupIngressResult is undocumented. -type AuthorizeDBSecurityGroupIngressResult struct { - DBSecurityGroup *DBSecurityGroup `query:"DBSecurityGroup" xml:"AuthorizeDBSecurityGroupIngressResult>DBSecurityGroup"` -} - -// AvailabilityZone is undocumented. -type AvailabilityZone struct { - Name aws.StringValue `query:"Name" xml:"Name"` -} - -// CharacterSet is undocumented. -type CharacterSet struct { - CharacterSetDescription aws.StringValue `query:"CharacterSetDescription" xml:"CharacterSetDescription"` - CharacterSetName aws.StringValue `query:"CharacterSetName" xml:"CharacterSetName"` -} - -// CopyDBParameterGroupMessage is undocumented. -type CopyDBParameterGroupMessage struct { - SourceDBParameterGroupIdentifier aws.StringValue `query:"SourceDBParameterGroupIdentifier" xml:"SourceDBParameterGroupIdentifier"` - Tags []Tag `query:"Tags.member" xml:"Tags>Tag"` - TargetDBParameterGroupDescription aws.StringValue `query:"TargetDBParameterGroupDescription" xml:"TargetDBParameterGroupDescription"` - TargetDBParameterGroupIdentifier aws.StringValue `query:"TargetDBParameterGroupIdentifier" xml:"TargetDBParameterGroupIdentifier"` -} - -// CopyDBParameterGroupResult is undocumented. -type CopyDBParameterGroupResult struct { - DBParameterGroup *DBParameterGroup `query:"DBParameterGroup" xml:"CopyDBParameterGroupResult>DBParameterGroup"` -} - -// CopyDBSnapshotMessage is undocumented. -type CopyDBSnapshotMessage struct { - SourceDBSnapshotIdentifier aws.StringValue `query:"SourceDBSnapshotIdentifier" xml:"SourceDBSnapshotIdentifier"` - Tags []Tag `query:"Tags.member" xml:"Tags>Tag"` - TargetDBSnapshotIdentifier aws.StringValue `query:"TargetDBSnapshotIdentifier" xml:"TargetDBSnapshotIdentifier"` -} - -// CopyDBSnapshotResult is undocumented. -type CopyDBSnapshotResult struct { - DBSnapshot *DBSnapshot `query:"DBSnapshot" xml:"CopyDBSnapshotResult>DBSnapshot"` -} - -// CopyOptionGroupMessage is undocumented. -type CopyOptionGroupMessage struct { - SourceOptionGroupIdentifier aws.StringValue `query:"SourceOptionGroupIdentifier" xml:"SourceOptionGroupIdentifier"` - Tags []Tag `query:"Tags.member" xml:"Tags>Tag"` - TargetOptionGroupDescription aws.StringValue `query:"TargetOptionGroupDescription" xml:"TargetOptionGroupDescription"` - TargetOptionGroupIdentifier aws.StringValue `query:"TargetOptionGroupIdentifier" xml:"TargetOptionGroupIdentifier"` -} - -// CopyOptionGroupResult is undocumented. -type CopyOptionGroupResult struct { - OptionGroup *OptionGroup `query:"OptionGroup" xml:"CopyOptionGroupResult>OptionGroup"` -} - -// CreateDBInstanceMessage is undocumented. -type CreateDBInstanceMessage struct { - AllocatedStorage aws.IntegerValue `query:"AllocatedStorage" xml:"AllocatedStorage"` - AutoMinorVersionUpgrade aws.BooleanValue `query:"AutoMinorVersionUpgrade" xml:"AutoMinorVersionUpgrade"` - AvailabilityZone aws.StringValue `query:"AvailabilityZone" xml:"AvailabilityZone"` - BackupRetentionPeriod aws.IntegerValue `query:"BackupRetentionPeriod" xml:"BackupRetentionPeriod"` - CharacterSetName aws.StringValue `query:"CharacterSetName" xml:"CharacterSetName"` - DBInstanceClass aws.StringValue `query:"DBInstanceClass" xml:"DBInstanceClass"` - DBInstanceIdentifier aws.StringValue `query:"DBInstanceIdentifier" xml:"DBInstanceIdentifier"` - DBName aws.StringValue `query:"DBName" xml:"DBName"` - DBParameterGroupName aws.StringValue `query:"DBParameterGroupName" xml:"DBParameterGroupName"` - DBSecurityGroups []string `query:"DBSecurityGroups.member" xml:"DBSecurityGroups>DBSecurityGroupName"` - DBSubnetGroupName aws.StringValue `query:"DBSubnetGroupName" xml:"DBSubnetGroupName"` - Engine aws.StringValue `query:"Engine" xml:"Engine"` - EngineVersion aws.StringValue `query:"EngineVersion" xml:"EngineVersion"` - IOPS aws.IntegerValue `query:"Iops" xml:"Iops"` - KMSKeyID aws.StringValue `query:"KmsKeyId" xml:"KmsKeyId"` - LicenseModel aws.StringValue `query:"LicenseModel" xml:"LicenseModel"` - MasterUserPassword aws.StringValue `query:"MasterUserPassword" xml:"MasterUserPassword"` - MasterUsername aws.StringValue `query:"MasterUsername" xml:"MasterUsername"` - MultiAZ aws.BooleanValue `query:"MultiAZ" xml:"MultiAZ"` - OptionGroupName aws.StringValue `query:"OptionGroupName" xml:"OptionGroupName"` - Port aws.IntegerValue `query:"Port" xml:"Port"` - PreferredBackupWindow aws.StringValue `query:"PreferredBackupWindow" xml:"PreferredBackupWindow"` - PreferredMaintenanceWindow aws.StringValue `query:"PreferredMaintenanceWindow" xml:"PreferredMaintenanceWindow"` - PubliclyAccessible aws.BooleanValue `query:"PubliclyAccessible" xml:"PubliclyAccessible"` - StorageEncrypted aws.BooleanValue `query:"StorageEncrypted" xml:"StorageEncrypted"` - StorageType aws.StringValue `query:"StorageType" xml:"StorageType"` - Tags []Tag `query:"Tags.member" xml:"Tags>Tag"` - TDECredentialARN aws.StringValue `query:"TdeCredentialArn" xml:"TdeCredentialArn"` - TDECredentialPassword aws.StringValue `query:"TdeCredentialPassword" xml:"TdeCredentialPassword"` - VPCSecurityGroupIDs []string `query:"VpcSecurityGroupIds.member" xml:"VpcSecurityGroupIds>VpcSecurityGroupId"` -} - -// CreateDBInstanceReadReplicaMessage is undocumented. -type CreateDBInstanceReadReplicaMessage struct { - AutoMinorVersionUpgrade aws.BooleanValue `query:"AutoMinorVersionUpgrade" xml:"AutoMinorVersionUpgrade"` - AvailabilityZone aws.StringValue `query:"AvailabilityZone" xml:"AvailabilityZone"` - DBInstanceClass aws.StringValue `query:"DBInstanceClass" xml:"DBInstanceClass"` - DBInstanceIdentifier aws.StringValue `query:"DBInstanceIdentifier" xml:"DBInstanceIdentifier"` - DBSubnetGroupName aws.StringValue `query:"DBSubnetGroupName" xml:"DBSubnetGroupName"` - IOPS aws.IntegerValue `query:"Iops" xml:"Iops"` - OptionGroupName aws.StringValue `query:"OptionGroupName" xml:"OptionGroupName"` - Port aws.IntegerValue `query:"Port" xml:"Port"` - PubliclyAccessible aws.BooleanValue `query:"PubliclyAccessible" xml:"PubliclyAccessible"` - SourceDBInstanceIdentifier aws.StringValue `query:"SourceDBInstanceIdentifier" xml:"SourceDBInstanceIdentifier"` - StorageType aws.StringValue `query:"StorageType" xml:"StorageType"` - Tags []Tag `query:"Tags.member" xml:"Tags>Tag"` -} - -// CreateDBInstanceReadReplicaResult is undocumented. -type CreateDBInstanceReadReplicaResult struct { - DBInstance *DBInstance `query:"DBInstance" xml:"CreateDBInstanceReadReplicaResult>DBInstance"` -} - -// CreateDBInstanceResult is undocumented. -type CreateDBInstanceResult struct { - DBInstance *DBInstance `query:"DBInstance" xml:"CreateDBInstanceResult>DBInstance"` -} - -// CreateDBParameterGroupMessage is undocumented. -type CreateDBParameterGroupMessage struct { - DBParameterGroupFamily aws.StringValue `query:"DBParameterGroupFamily" xml:"DBParameterGroupFamily"` - DBParameterGroupName aws.StringValue `query:"DBParameterGroupName" xml:"DBParameterGroupName"` - Description aws.StringValue `query:"Description" xml:"Description"` - Tags []Tag `query:"Tags.member" xml:"Tags>Tag"` -} - -// CreateDBParameterGroupResult is undocumented. -type CreateDBParameterGroupResult struct { - DBParameterGroup *DBParameterGroup `query:"DBParameterGroup" xml:"CreateDBParameterGroupResult>DBParameterGroup"` -} - -// CreateDBSecurityGroupMessage is undocumented. -type CreateDBSecurityGroupMessage struct { - DBSecurityGroupDescription aws.StringValue `query:"DBSecurityGroupDescription" xml:"DBSecurityGroupDescription"` - DBSecurityGroupName aws.StringValue `query:"DBSecurityGroupName" xml:"DBSecurityGroupName"` - Tags []Tag `query:"Tags.member" xml:"Tags>Tag"` -} - -// CreateDBSecurityGroupResult is undocumented. -type CreateDBSecurityGroupResult struct { - DBSecurityGroup *DBSecurityGroup `query:"DBSecurityGroup" xml:"CreateDBSecurityGroupResult>DBSecurityGroup"` -} - -// CreateDBSnapshotMessage is undocumented. -type CreateDBSnapshotMessage struct { - DBInstanceIdentifier aws.StringValue `query:"DBInstanceIdentifier" xml:"DBInstanceIdentifier"` - DBSnapshotIdentifier aws.StringValue `query:"DBSnapshotIdentifier" xml:"DBSnapshotIdentifier"` - Tags []Tag `query:"Tags.member" xml:"Tags>Tag"` -} - -// CreateDBSnapshotResult is undocumented. -type CreateDBSnapshotResult struct { - DBSnapshot *DBSnapshot `query:"DBSnapshot" xml:"CreateDBSnapshotResult>DBSnapshot"` -} - -// CreateDBSubnetGroupMessage is undocumented. -type CreateDBSubnetGroupMessage struct { - DBSubnetGroupDescription aws.StringValue `query:"DBSubnetGroupDescription" xml:"DBSubnetGroupDescription"` - DBSubnetGroupName aws.StringValue `query:"DBSubnetGroupName" xml:"DBSubnetGroupName"` - SubnetIDs []string `query:"SubnetIds.member" xml:"SubnetIds>SubnetIdentifier"` - Tags []Tag `query:"Tags.member" xml:"Tags>Tag"` -} - -// CreateDBSubnetGroupResult is undocumented. -type CreateDBSubnetGroupResult struct { - DBSubnetGroup *DBSubnetGroup `query:"DBSubnetGroup" xml:"CreateDBSubnetGroupResult>DBSubnetGroup"` -} - -// CreateEventSubscriptionMessage is undocumented. -type CreateEventSubscriptionMessage struct { - Enabled aws.BooleanValue `query:"Enabled" xml:"Enabled"` - EventCategories []string `query:"EventCategories.member" xml:"EventCategories>EventCategory"` - SNSTopicARN aws.StringValue `query:"SnsTopicArn" xml:"SnsTopicArn"` - SourceIDs []string `query:"SourceIds.member" xml:"SourceIds>SourceId"` - SourceType aws.StringValue `query:"SourceType" xml:"SourceType"` - SubscriptionName aws.StringValue `query:"SubscriptionName" xml:"SubscriptionName"` - Tags []Tag `query:"Tags.member" xml:"Tags>Tag"` -} - -// CreateEventSubscriptionResult is undocumented. -type CreateEventSubscriptionResult struct { - EventSubscription *EventSubscription `query:"EventSubscription" xml:"CreateEventSubscriptionResult>EventSubscription"` -} - -// CreateOptionGroupMessage is undocumented. -type CreateOptionGroupMessage struct { - EngineName aws.StringValue `query:"EngineName" xml:"EngineName"` - MajorEngineVersion aws.StringValue `query:"MajorEngineVersion" xml:"MajorEngineVersion"` - OptionGroupDescription aws.StringValue `query:"OptionGroupDescription" xml:"OptionGroupDescription"` - OptionGroupName aws.StringValue `query:"OptionGroupName" xml:"OptionGroupName"` - Tags []Tag `query:"Tags.member" xml:"Tags>Tag"` -} - -// CreateOptionGroupResult is undocumented. -type CreateOptionGroupResult struct { - OptionGroup *OptionGroup `query:"OptionGroup" xml:"CreateOptionGroupResult>OptionGroup"` -} - -// DBEngineVersion is undocumented. -type DBEngineVersion struct { - DBEngineDescription aws.StringValue `query:"DBEngineDescription" xml:"DBEngineDescription"` - DBEngineVersionDescription aws.StringValue `query:"DBEngineVersionDescription" xml:"DBEngineVersionDescription"` - DBParameterGroupFamily aws.StringValue `query:"DBParameterGroupFamily" xml:"DBParameterGroupFamily"` - DefaultCharacterSet *CharacterSet `query:"DefaultCharacterSet" xml:"DefaultCharacterSet"` - Engine aws.StringValue `query:"Engine" xml:"Engine"` - EngineVersion aws.StringValue `query:"EngineVersion" xml:"EngineVersion"` - SupportedCharacterSets []CharacterSet `query:"SupportedCharacterSets.member" xml:"SupportedCharacterSets>CharacterSet"` -} - -// DBEngineVersionMessage is undocumented. -type DBEngineVersionMessage struct { - DBEngineVersions []DBEngineVersion `query:"DBEngineVersions.member" xml:"DescribeDBEngineVersionsResult>DBEngineVersions>DBEngineVersion"` - Marker aws.StringValue `query:"Marker" xml:"DescribeDBEngineVersionsResult>Marker"` -} - -// DBInstance is undocumented. -type DBInstance struct { - AllocatedStorage aws.IntegerValue `query:"AllocatedStorage" xml:"AllocatedStorage"` - AutoMinorVersionUpgrade aws.BooleanValue `query:"AutoMinorVersionUpgrade" xml:"AutoMinorVersionUpgrade"` - AvailabilityZone aws.StringValue `query:"AvailabilityZone" xml:"AvailabilityZone"` - BackupRetentionPeriod aws.IntegerValue `query:"BackupRetentionPeriod" xml:"BackupRetentionPeriod"` - CharacterSetName aws.StringValue `query:"CharacterSetName" xml:"CharacterSetName"` - DBInstanceClass aws.StringValue `query:"DBInstanceClass" xml:"DBInstanceClass"` - DBInstanceIdentifier aws.StringValue `query:"DBInstanceIdentifier" xml:"DBInstanceIdentifier"` - DBInstanceStatus aws.StringValue `query:"DBInstanceStatus" xml:"DBInstanceStatus"` - DBName aws.StringValue `query:"DBName" xml:"DBName"` - DBParameterGroups []DBParameterGroupStatus `query:"DBParameterGroups.member" xml:"DBParameterGroups>DBParameterGroup"` - DBSecurityGroups []DBSecurityGroupMembership `query:"DBSecurityGroups.member" xml:"DBSecurityGroups>DBSecurityGroup"` - DBSubnetGroup *DBSubnetGroup `query:"DBSubnetGroup" xml:"DBSubnetGroup"` - DBiResourceID aws.StringValue `query:"DbiResourceId" xml:"DbiResourceId"` - Endpoint *Endpoint `query:"Endpoint" xml:"Endpoint"` - Engine aws.StringValue `query:"Engine" xml:"Engine"` - EngineVersion aws.StringValue `query:"EngineVersion" xml:"EngineVersion"` - InstanceCreateTime time.Time `query:"InstanceCreateTime" xml:"InstanceCreateTime"` - IOPS aws.IntegerValue `query:"Iops" xml:"Iops"` - KMSKeyID aws.StringValue `query:"KmsKeyId" xml:"KmsKeyId"` - LatestRestorableTime time.Time `query:"LatestRestorableTime" xml:"LatestRestorableTime"` - LicenseModel aws.StringValue `query:"LicenseModel" xml:"LicenseModel"` - MasterUsername aws.StringValue `query:"MasterUsername" xml:"MasterUsername"` - MultiAZ aws.BooleanValue `query:"MultiAZ" xml:"MultiAZ"` - OptionGroupMemberships []OptionGroupMembership `query:"OptionGroupMemberships.member" xml:"OptionGroupMemberships>OptionGroupMembership"` - PendingModifiedValues *PendingModifiedValues `query:"PendingModifiedValues" xml:"PendingModifiedValues"` - PreferredBackupWindow aws.StringValue `query:"PreferredBackupWindow" xml:"PreferredBackupWindow"` - PreferredMaintenanceWindow aws.StringValue `query:"PreferredMaintenanceWindow" xml:"PreferredMaintenanceWindow"` - PubliclyAccessible aws.BooleanValue `query:"PubliclyAccessible" xml:"PubliclyAccessible"` - ReadReplicaDBInstanceIdentifiers []string `query:"ReadReplicaDBInstanceIdentifiers.member" xml:"ReadReplicaDBInstanceIdentifiers>ReadReplicaDBInstanceIdentifier"` - ReadReplicaSourceDBInstanceIdentifier aws.StringValue `query:"ReadReplicaSourceDBInstanceIdentifier" xml:"ReadReplicaSourceDBInstanceIdentifier"` - SecondaryAvailabilityZone aws.StringValue `query:"SecondaryAvailabilityZone" xml:"SecondaryAvailabilityZone"` - StatusInfos []DBInstanceStatusInfo `query:"StatusInfos.member" xml:"StatusInfos>DBInstanceStatusInfo"` - StorageEncrypted aws.BooleanValue `query:"StorageEncrypted" xml:"StorageEncrypted"` - StorageType aws.StringValue `query:"StorageType" xml:"StorageType"` - TDECredentialARN aws.StringValue `query:"TdeCredentialArn" xml:"TdeCredentialArn"` - VPCSecurityGroups []VPCSecurityGroupMembership `query:"VpcSecurityGroups.member" xml:"VpcSecurityGroups>VpcSecurityGroupMembership"` -} - -// DBInstanceMessage is undocumented. -type DBInstanceMessage struct { - DBInstances []DBInstance `query:"DBInstances.member" xml:"DescribeDBInstancesResult>DBInstances>DBInstance"` - Marker aws.StringValue `query:"Marker" xml:"DescribeDBInstancesResult>Marker"` -} - -// DBInstanceStatusInfo is undocumented. -type DBInstanceStatusInfo struct { - Message aws.StringValue `query:"Message" xml:"Message"` - Normal aws.BooleanValue `query:"Normal" xml:"Normal"` - Status aws.StringValue `query:"Status" xml:"Status"` - StatusType aws.StringValue `query:"StatusType" xml:"StatusType"` -} - -// DBParameterGroup is undocumented. -type DBParameterGroup struct { - DBParameterGroupFamily aws.StringValue `query:"DBParameterGroupFamily" xml:"DBParameterGroupFamily"` - DBParameterGroupName aws.StringValue `query:"DBParameterGroupName" xml:"DBParameterGroupName"` - Description aws.StringValue `query:"Description" xml:"Description"` -} - -// DBParameterGroupDetails is undocumented. -type DBParameterGroupDetails struct { - Marker aws.StringValue `query:"Marker" xml:"DescribeDBParametersResult>Marker"` - Parameters []Parameter `query:"Parameters.member" xml:"DescribeDBParametersResult>Parameters>Parameter"` -} - -// DBParameterGroupNameMessage is undocumented. -type DBParameterGroupNameMessage struct { - DBParameterGroupName aws.StringValue `query:"DBParameterGroupName" xml:"DBParameterGroupName"` -} - -// DBParameterGroupStatus is undocumented. -type DBParameterGroupStatus struct { - DBParameterGroupName aws.StringValue `query:"DBParameterGroupName" xml:"DBParameterGroupName"` - ParameterApplyStatus aws.StringValue `query:"ParameterApplyStatus" xml:"ParameterApplyStatus"` -} - -// DBParameterGroupsMessage is undocumented. -type DBParameterGroupsMessage struct { - DBParameterGroups []DBParameterGroup `query:"DBParameterGroups.member" xml:"DescribeDBParameterGroupsResult>DBParameterGroups>DBParameterGroup"` - Marker aws.StringValue `query:"Marker" xml:"DescribeDBParameterGroupsResult>Marker"` -} - -// DBSecurityGroup is undocumented. -type DBSecurityGroup struct { - DBSecurityGroupDescription aws.StringValue `query:"DBSecurityGroupDescription" xml:"DBSecurityGroupDescription"` - DBSecurityGroupName aws.StringValue `query:"DBSecurityGroupName" xml:"DBSecurityGroupName"` - EC2SecurityGroups []EC2SecurityGroup `query:"EC2SecurityGroups.member" xml:"EC2SecurityGroups>EC2SecurityGroup"` - IPRanges []IPRange `query:"IPRanges.member" xml:"IPRanges>IPRange"` - OwnerID aws.StringValue `query:"OwnerId" xml:"OwnerId"` - VPCID aws.StringValue `query:"VpcId" xml:"VpcId"` -} - -// DBSecurityGroupMembership is undocumented. -type DBSecurityGroupMembership struct { - DBSecurityGroupName aws.StringValue `query:"DBSecurityGroupName" xml:"DBSecurityGroupName"` - Status aws.StringValue `query:"Status" xml:"Status"` -} - -// DBSecurityGroupMessage is undocumented. -type DBSecurityGroupMessage struct { - DBSecurityGroups []DBSecurityGroup `query:"DBSecurityGroups.member" xml:"DescribeDBSecurityGroupsResult>DBSecurityGroups>DBSecurityGroup"` - Marker aws.StringValue `query:"Marker" xml:"DescribeDBSecurityGroupsResult>Marker"` -} - -// DBSnapshot is undocumented. -type DBSnapshot struct { - AllocatedStorage aws.IntegerValue `query:"AllocatedStorage" xml:"AllocatedStorage"` - AvailabilityZone aws.StringValue `query:"AvailabilityZone" xml:"AvailabilityZone"` - DBInstanceIdentifier aws.StringValue `query:"DBInstanceIdentifier" xml:"DBInstanceIdentifier"` - DBSnapshotIdentifier aws.StringValue `query:"DBSnapshotIdentifier" xml:"DBSnapshotIdentifier"` - Encrypted aws.BooleanValue `query:"Encrypted" xml:"Encrypted"` - Engine aws.StringValue `query:"Engine" xml:"Engine"` - EngineVersion aws.StringValue `query:"EngineVersion" xml:"EngineVersion"` - InstanceCreateTime time.Time `query:"InstanceCreateTime" xml:"InstanceCreateTime"` - IOPS aws.IntegerValue `query:"Iops" xml:"Iops"` - KMSKeyID aws.StringValue `query:"KmsKeyId" xml:"KmsKeyId"` - LicenseModel aws.StringValue `query:"LicenseModel" xml:"LicenseModel"` - MasterUsername aws.StringValue `query:"MasterUsername" xml:"MasterUsername"` - OptionGroupName aws.StringValue `query:"OptionGroupName" xml:"OptionGroupName"` - PercentProgress aws.IntegerValue `query:"PercentProgress" xml:"PercentProgress"` - Port aws.IntegerValue `query:"Port" xml:"Port"` - SnapshotCreateTime time.Time `query:"SnapshotCreateTime" xml:"SnapshotCreateTime"` - SnapshotType aws.StringValue `query:"SnapshotType" xml:"SnapshotType"` - SourceRegion aws.StringValue `query:"SourceRegion" xml:"SourceRegion"` - Status aws.StringValue `query:"Status" xml:"Status"` - StorageType aws.StringValue `query:"StorageType" xml:"StorageType"` - TDECredentialARN aws.StringValue `query:"TdeCredentialArn" xml:"TdeCredentialArn"` - VPCID aws.StringValue `query:"VpcId" xml:"VpcId"` -} - -// DBSnapshotMessage is undocumented. -type DBSnapshotMessage struct { - DBSnapshots []DBSnapshot `query:"DBSnapshots.member" xml:"DescribeDBSnapshotsResult>DBSnapshots>DBSnapshot"` - Marker aws.StringValue `query:"Marker" xml:"DescribeDBSnapshotsResult>Marker"` -} - -// DBSubnetGroup is undocumented. -type DBSubnetGroup struct { - DBSubnetGroupDescription aws.StringValue `query:"DBSubnetGroupDescription" xml:"DBSubnetGroupDescription"` - DBSubnetGroupName aws.StringValue `query:"DBSubnetGroupName" xml:"DBSubnetGroupName"` - SubnetGroupStatus aws.StringValue `query:"SubnetGroupStatus" xml:"SubnetGroupStatus"` - Subnets []Subnet `query:"Subnets.member" xml:"Subnets>Subnet"` - VPCID aws.StringValue `query:"VpcId" xml:"VpcId"` -} - -// DBSubnetGroupMessage is undocumented. -type DBSubnetGroupMessage struct { - DBSubnetGroups []DBSubnetGroup `query:"DBSubnetGroups.member" xml:"DescribeDBSubnetGroupsResult>DBSubnetGroups>DBSubnetGroup"` - Marker aws.StringValue `query:"Marker" xml:"DescribeDBSubnetGroupsResult>Marker"` -} - -// DeleteDBInstanceMessage is undocumented. -type DeleteDBInstanceMessage struct { - DBInstanceIdentifier aws.StringValue `query:"DBInstanceIdentifier" xml:"DBInstanceIdentifier"` - FinalDBSnapshotIdentifier aws.StringValue `query:"FinalDBSnapshotIdentifier" xml:"FinalDBSnapshotIdentifier"` - SkipFinalSnapshot aws.BooleanValue `query:"SkipFinalSnapshot" xml:"SkipFinalSnapshot"` -} - -// DeleteDBInstanceResult is undocumented. -type DeleteDBInstanceResult struct { - DBInstance *DBInstance `query:"DBInstance" xml:"DeleteDBInstanceResult>DBInstance"` -} - -// DeleteDBParameterGroupMessage is undocumented. -type DeleteDBParameterGroupMessage struct { - DBParameterGroupName aws.StringValue `query:"DBParameterGroupName" xml:"DBParameterGroupName"` -} - -// DeleteDBSecurityGroupMessage is undocumented. -type DeleteDBSecurityGroupMessage struct { - DBSecurityGroupName aws.StringValue `query:"DBSecurityGroupName" xml:"DBSecurityGroupName"` -} - -// DeleteDBSnapshotMessage is undocumented. -type DeleteDBSnapshotMessage struct { - DBSnapshotIdentifier aws.StringValue `query:"DBSnapshotIdentifier" xml:"DBSnapshotIdentifier"` -} - -// DeleteDBSnapshotResult is undocumented. -type DeleteDBSnapshotResult struct { - DBSnapshot *DBSnapshot `query:"DBSnapshot" xml:"DeleteDBSnapshotResult>DBSnapshot"` -} - -// DeleteDBSubnetGroupMessage is undocumented. -type DeleteDBSubnetGroupMessage struct { - DBSubnetGroupName aws.StringValue `query:"DBSubnetGroupName" xml:"DBSubnetGroupName"` -} - -// DeleteEventSubscriptionMessage is undocumented. -type DeleteEventSubscriptionMessage struct { - SubscriptionName aws.StringValue `query:"SubscriptionName" xml:"SubscriptionName"` -} - -// DeleteEventSubscriptionResult is undocumented. -type DeleteEventSubscriptionResult struct { - EventSubscription *EventSubscription `query:"EventSubscription" xml:"DeleteEventSubscriptionResult>EventSubscription"` -} - -// DeleteOptionGroupMessage is undocumented. -type DeleteOptionGroupMessage struct { - OptionGroupName aws.StringValue `query:"OptionGroupName" xml:"OptionGroupName"` -} - -// DescribeDBEngineVersionsMessage is undocumented. -type DescribeDBEngineVersionsMessage struct { - DBParameterGroupFamily aws.StringValue `query:"DBParameterGroupFamily" xml:"DBParameterGroupFamily"` - DefaultOnly aws.BooleanValue `query:"DefaultOnly" xml:"DefaultOnly"` - Engine aws.StringValue `query:"Engine" xml:"Engine"` - EngineVersion aws.StringValue `query:"EngineVersion" xml:"EngineVersion"` - Filters []Filter `query:"Filters.member" xml:"Filters>Filter"` - ListSupportedCharacterSets aws.BooleanValue `query:"ListSupportedCharacterSets" xml:"ListSupportedCharacterSets"` - Marker aws.StringValue `query:"Marker" xml:"Marker"` - MaxRecords aws.IntegerValue `query:"MaxRecords" xml:"MaxRecords"` -} - -// DescribeDBInstancesMessage is undocumented. -type DescribeDBInstancesMessage struct { - DBInstanceIdentifier aws.StringValue `query:"DBInstanceIdentifier" xml:"DBInstanceIdentifier"` - Filters []Filter `query:"Filters.member" xml:"Filters>Filter"` - Marker aws.StringValue `query:"Marker" xml:"Marker"` - MaxRecords aws.IntegerValue `query:"MaxRecords" xml:"MaxRecords"` -} - -// DescribeDBLogFilesDetails is undocumented. -type DescribeDBLogFilesDetails struct { - LastWritten aws.LongValue `query:"LastWritten" xml:"LastWritten"` - LogFileName aws.StringValue `query:"LogFileName" xml:"LogFileName"` - Size aws.LongValue `query:"Size" xml:"Size"` -} - -// DescribeDBLogFilesMessage is undocumented. -type DescribeDBLogFilesMessage struct { - DBInstanceIdentifier aws.StringValue `query:"DBInstanceIdentifier" xml:"DBInstanceIdentifier"` - FileLastWritten aws.LongValue `query:"FileLastWritten" xml:"FileLastWritten"` - FileSize aws.LongValue `query:"FileSize" xml:"FileSize"` - FilenameContains aws.StringValue `query:"FilenameContains" xml:"FilenameContains"` - Filters []Filter `query:"Filters.member" xml:"Filters>Filter"` - Marker aws.StringValue `query:"Marker" xml:"Marker"` - MaxRecords aws.IntegerValue `query:"MaxRecords" xml:"MaxRecords"` -} - -// DescribeDBLogFilesResponse is undocumented. -type DescribeDBLogFilesResponse struct { - DescribeDBLogFiles []DescribeDBLogFilesDetails `query:"DescribeDBLogFiles.member" xml:"DescribeDBLogFilesResult>DescribeDBLogFiles>DescribeDBLogFilesDetails"` - Marker aws.StringValue `query:"Marker" xml:"DescribeDBLogFilesResult>Marker"` -} - -// DescribeDBParameterGroupsMessage is undocumented. -type DescribeDBParameterGroupsMessage struct { - DBParameterGroupName aws.StringValue `query:"DBParameterGroupName" xml:"DBParameterGroupName"` - Filters []Filter `query:"Filters.member" xml:"Filters>Filter"` - Marker aws.StringValue `query:"Marker" xml:"Marker"` - MaxRecords aws.IntegerValue `query:"MaxRecords" xml:"MaxRecords"` -} - -// DescribeDBParametersMessage is undocumented. -type DescribeDBParametersMessage struct { - DBParameterGroupName aws.StringValue `query:"DBParameterGroupName" xml:"DBParameterGroupName"` - Filters []Filter `query:"Filters.member" xml:"Filters>Filter"` - Marker aws.StringValue `query:"Marker" xml:"Marker"` - MaxRecords aws.IntegerValue `query:"MaxRecords" xml:"MaxRecords"` - Source aws.StringValue `query:"Source" xml:"Source"` -} - -// DescribeDBSecurityGroupsMessage is undocumented. -type DescribeDBSecurityGroupsMessage struct { - DBSecurityGroupName aws.StringValue `query:"DBSecurityGroupName" xml:"DBSecurityGroupName"` - Filters []Filter `query:"Filters.member" xml:"Filters>Filter"` - Marker aws.StringValue `query:"Marker" xml:"Marker"` - MaxRecords aws.IntegerValue `query:"MaxRecords" xml:"MaxRecords"` -} - -// DescribeDBSnapshotsMessage is undocumented. -type DescribeDBSnapshotsMessage struct { - DBInstanceIdentifier aws.StringValue `query:"DBInstanceIdentifier" xml:"DBInstanceIdentifier"` - DBSnapshotIdentifier aws.StringValue `query:"DBSnapshotIdentifier" xml:"DBSnapshotIdentifier"` - Filters []Filter `query:"Filters.member" xml:"Filters>Filter"` - Marker aws.StringValue `query:"Marker" xml:"Marker"` - MaxRecords aws.IntegerValue `query:"MaxRecords" xml:"MaxRecords"` - SnapshotType aws.StringValue `query:"SnapshotType" xml:"SnapshotType"` -} - -// DescribeDBSubnetGroupsMessage is undocumented. -type DescribeDBSubnetGroupsMessage struct { - DBSubnetGroupName aws.StringValue `query:"DBSubnetGroupName" xml:"DBSubnetGroupName"` - Filters []Filter `query:"Filters.member" xml:"Filters>Filter"` - Marker aws.StringValue `query:"Marker" xml:"Marker"` - MaxRecords aws.IntegerValue `query:"MaxRecords" xml:"MaxRecords"` -} - -// DescribeEngineDefaultParametersMessage is undocumented. -type DescribeEngineDefaultParametersMessage struct { - DBParameterGroupFamily aws.StringValue `query:"DBParameterGroupFamily" xml:"DBParameterGroupFamily"` - Filters []Filter `query:"Filters.member" xml:"Filters>Filter"` - Marker aws.StringValue `query:"Marker" xml:"Marker"` - MaxRecords aws.IntegerValue `query:"MaxRecords" xml:"MaxRecords"` -} - -// DescribeEngineDefaultParametersResult is undocumented. -type DescribeEngineDefaultParametersResult struct { - EngineDefaults *EngineDefaults `query:"EngineDefaults" xml:"DescribeEngineDefaultParametersResult>EngineDefaults"` -} - -// DescribeEventCategoriesMessage is undocumented. -type DescribeEventCategoriesMessage struct { - Filters []Filter `query:"Filters.member" xml:"Filters>Filter"` - SourceType aws.StringValue `query:"SourceType" xml:"SourceType"` -} - -// DescribeEventSubscriptionsMessage is undocumented. -type DescribeEventSubscriptionsMessage struct { - Filters []Filter `query:"Filters.member" xml:"Filters>Filter"` - Marker aws.StringValue `query:"Marker" xml:"Marker"` - MaxRecords aws.IntegerValue `query:"MaxRecords" xml:"MaxRecords"` - SubscriptionName aws.StringValue `query:"SubscriptionName" xml:"SubscriptionName"` -} - -// DescribeEventsMessage is undocumented. -type DescribeEventsMessage struct { - Duration aws.IntegerValue `query:"Duration" xml:"Duration"` - EndTime time.Time `query:"EndTime" xml:"EndTime"` - EventCategories []string `query:"EventCategories.member" xml:"EventCategories>EventCategory"` - Filters []Filter `query:"Filters.member" xml:"Filters>Filter"` - Marker aws.StringValue `query:"Marker" xml:"Marker"` - MaxRecords aws.IntegerValue `query:"MaxRecords" xml:"MaxRecords"` - SourceIdentifier aws.StringValue `query:"SourceIdentifier" xml:"SourceIdentifier"` - SourceType aws.StringValue `query:"SourceType" xml:"SourceType"` - StartTime time.Time `query:"StartTime" xml:"StartTime"` -} - -// DescribeOptionGroupOptionsMessage is undocumented. -type DescribeOptionGroupOptionsMessage struct { - EngineName aws.StringValue `query:"EngineName" xml:"EngineName"` - Filters []Filter `query:"Filters.member" xml:"Filters>Filter"` - MajorEngineVersion aws.StringValue `query:"MajorEngineVersion" xml:"MajorEngineVersion"` - Marker aws.StringValue `query:"Marker" xml:"Marker"` - MaxRecords aws.IntegerValue `query:"MaxRecords" xml:"MaxRecords"` -} - -// DescribeOptionGroupsMessage is undocumented. -type DescribeOptionGroupsMessage struct { - EngineName aws.StringValue `query:"EngineName" xml:"EngineName"` - Filters []Filter `query:"Filters.member" xml:"Filters>Filter"` - MajorEngineVersion aws.StringValue `query:"MajorEngineVersion" xml:"MajorEngineVersion"` - Marker aws.StringValue `query:"Marker" xml:"Marker"` - MaxRecords aws.IntegerValue `query:"MaxRecords" xml:"MaxRecords"` - OptionGroupName aws.StringValue `query:"OptionGroupName" xml:"OptionGroupName"` -} - -// DescribeOrderableDBInstanceOptionsMessage is undocumented. -type DescribeOrderableDBInstanceOptionsMessage struct { - DBInstanceClass aws.StringValue `query:"DBInstanceClass" xml:"DBInstanceClass"` - Engine aws.StringValue `query:"Engine" xml:"Engine"` - EngineVersion aws.StringValue `query:"EngineVersion" xml:"EngineVersion"` - Filters []Filter `query:"Filters.member" xml:"Filters>Filter"` - LicenseModel aws.StringValue `query:"LicenseModel" xml:"LicenseModel"` - Marker aws.StringValue `query:"Marker" xml:"Marker"` - MaxRecords aws.IntegerValue `query:"MaxRecords" xml:"MaxRecords"` - VPC aws.BooleanValue `query:"Vpc" xml:"Vpc"` -} - -// DescribePendingMaintenanceActionsMessage is undocumented. -type DescribePendingMaintenanceActionsMessage struct { - Filters []Filter `query:"Filters.member" xml:"Filters>Filter"` - Marker aws.StringValue `query:"Marker" xml:"Marker"` - MaxRecords aws.IntegerValue `query:"MaxRecords" xml:"MaxRecords"` - ResourceIdentifier aws.StringValue `query:"ResourceIdentifier" xml:"ResourceIdentifier"` -} - -// DescribeReservedDBInstancesMessage is undocumented. -type DescribeReservedDBInstancesMessage struct { - DBInstanceClass aws.StringValue `query:"DBInstanceClass" xml:"DBInstanceClass"` - Duration aws.StringValue `query:"Duration" xml:"Duration"` - Filters []Filter `query:"Filters.member" xml:"Filters>Filter"` - Marker aws.StringValue `query:"Marker" xml:"Marker"` - MaxRecords aws.IntegerValue `query:"MaxRecords" xml:"MaxRecords"` - MultiAZ aws.BooleanValue `query:"MultiAZ" xml:"MultiAZ"` - OfferingType aws.StringValue `query:"OfferingType" xml:"OfferingType"` - ProductDescription aws.StringValue `query:"ProductDescription" xml:"ProductDescription"` - ReservedDBInstanceID aws.StringValue `query:"ReservedDBInstanceId" xml:"ReservedDBInstanceId"` - ReservedDBInstancesOfferingID aws.StringValue `query:"ReservedDBInstancesOfferingId" xml:"ReservedDBInstancesOfferingId"` -} - -// DescribeReservedDBInstancesOfferingsMessage is undocumented. -type DescribeReservedDBInstancesOfferingsMessage struct { - DBInstanceClass aws.StringValue `query:"DBInstanceClass" xml:"DBInstanceClass"` - Duration aws.StringValue `query:"Duration" xml:"Duration"` - Filters []Filter `query:"Filters.member" xml:"Filters>Filter"` - Marker aws.StringValue `query:"Marker" xml:"Marker"` - MaxRecords aws.IntegerValue `query:"MaxRecords" xml:"MaxRecords"` - MultiAZ aws.BooleanValue `query:"MultiAZ" xml:"MultiAZ"` - OfferingType aws.StringValue `query:"OfferingType" xml:"OfferingType"` - ProductDescription aws.StringValue `query:"ProductDescription" xml:"ProductDescription"` - ReservedDBInstancesOfferingID aws.StringValue `query:"ReservedDBInstancesOfferingId" xml:"ReservedDBInstancesOfferingId"` -} - -// DownloadDBLogFilePortionDetails is undocumented. -type DownloadDBLogFilePortionDetails struct { - AdditionalDataPending aws.BooleanValue `query:"AdditionalDataPending" xml:"DownloadDBLogFilePortionResult>AdditionalDataPending"` - LogFileData aws.StringValue `query:"LogFileData" xml:"DownloadDBLogFilePortionResult>LogFileData"` - Marker aws.StringValue `query:"Marker" xml:"DownloadDBLogFilePortionResult>Marker"` -} - -// DownloadDBLogFilePortionMessage is undocumented. -type DownloadDBLogFilePortionMessage struct { - DBInstanceIdentifier aws.StringValue `query:"DBInstanceIdentifier" xml:"DBInstanceIdentifier"` - LogFileName aws.StringValue `query:"LogFileName" xml:"LogFileName"` - Marker aws.StringValue `query:"Marker" xml:"Marker"` - NumberOfLines aws.IntegerValue `query:"NumberOfLines" xml:"NumberOfLines"` -} - -// EC2SecurityGroup is undocumented. -type EC2SecurityGroup struct { - EC2SecurityGroupID aws.StringValue `query:"EC2SecurityGroupId" xml:"EC2SecurityGroupId"` - EC2SecurityGroupName aws.StringValue `query:"EC2SecurityGroupName" xml:"EC2SecurityGroupName"` - EC2SecurityGroupOwnerID aws.StringValue `query:"EC2SecurityGroupOwnerId" xml:"EC2SecurityGroupOwnerId"` - Status aws.StringValue `query:"Status" xml:"Status"` -} - -// Endpoint is undocumented. -type Endpoint struct { - Address aws.StringValue `query:"Address" xml:"Address"` - Port aws.IntegerValue `query:"Port" xml:"Port"` -} - -// EngineDefaults is undocumented. -type EngineDefaults struct { - DBParameterGroupFamily aws.StringValue `query:"DBParameterGroupFamily" xml:"DBParameterGroupFamily"` - Marker aws.StringValue `query:"Marker" xml:"Marker"` - Parameters []Parameter `query:"Parameters.member" xml:"Parameters>Parameter"` -} - -// Event is undocumented. -type Event struct { - Date time.Time `query:"Date" xml:"Date"` - EventCategories []string `query:"EventCategories.member" xml:"EventCategories>EventCategory"` - Message aws.StringValue `query:"Message" xml:"Message"` - SourceIdentifier aws.StringValue `query:"SourceIdentifier" xml:"SourceIdentifier"` - SourceType aws.StringValue `query:"SourceType" xml:"SourceType"` -} - -// EventCategoriesMap is undocumented. -type EventCategoriesMap struct { - EventCategories []string `query:"EventCategories.member" xml:"EventCategories>EventCategory"` - SourceType aws.StringValue `query:"SourceType" xml:"SourceType"` -} - -// EventCategoriesMessage is undocumented. -type EventCategoriesMessage struct { - EventCategoriesMapList []EventCategoriesMap `query:"EventCategoriesMapList.member" xml:"DescribeEventCategoriesResult>EventCategoriesMapList>EventCategoriesMap"` -} - -// EventSubscription is undocumented. -type EventSubscription struct { - CustSubscriptionID aws.StringValue `query:"CustSubscriptionId" xml:"CustSubscriptionId"` - CustomerAWSID aws.StringValue `query:"CustomerAwsId" xml:"CustomerAwsId"` - Enabled aws.BooleanValue `query:"Enabled" xml:"Enabled"` - EventCategoriesList []string `query:"EventCategoriesList.member" xml:"EventCategoriesList>EventCategory"` - SNSTopicARN aws.StringValue `query:"SnsTopicArn" xml:"SnsTopicArn"` - SourceIDsList []string `query:"SourceIdsList.member" xml:"SourceIdsList>SourceId"` - SourceType aws.StringValue `query:"SourceType" xml:"SourceType"` - Status aws.StringValue `query:"Status" xml:"Status"` - SubscriptionCreationTime aws.StringValue `query:"SubscriptionCreationTime" xml:"SubscriptionCreationTime"` -} - -// EventSubscriptionsMessage is undocumented. -type EventSubscriptionsMessage struct { - EventSubscriptionsList []EventSubscription `query:"EventSubscriptionsList.member" xml:"DescribeEventSubscriptionsResult>EventSubscriptionsList>EventSubscription"` - Marker aws.StringValue `query:"Marker" xml:"DescribeEventSubscriptionsResult>Marker"` -} - -// EventsMessage is undocumented. -type EventsMessage struct { - Events []Event `query:"Events.member" xml:"DescribeEventsResult>Events>Event"` - Marker aws.StringValue `query:"Marker" xml:"DescribeEventsResult>Marker"` -} - -// Filter is undocumented. -type Filter struct { - Name aws.StringValue `query:"Name" xml:"Name"` - Values []string `query:"Values.member" xml:"Values>Value"` -} - -// IPRange is undocumented. -type IPRange struct { - CIDRIP aws.StringValue `query:"CIDRIP" xml:"CIDRIP"` - Status aws.StringValue `query:"Status" xml:"Status"` -} - -// ListTagsForResourceMessage is undocumented. -type ListTagsForResourceMessage struct { - Filters []Filter `query:"Filters.member" xml:"Filters>Filter"` - ResourceName aws.StringValue `query:"ResourceName" xml:"ResourceName"` -} - -// ModifyDBInstanceMessage is undocumented. -type ModifyDBInstanceMessage struct { - AllocatedStorage aws.IntegerValue `query:"AllocatedStorage" xml:"AllocatedStorage"` - AllowMajorVersionUpgrade aws.BooleanValue `query:"AllowMajorVersionUpgrade" xml:"AllowMajorVersionUpgrade"` - ApplyImmediately aws.BooleanValue `query:"ApplyImmediately" xml:"ApplyImmediately"` - AutoMinorVersionUpgrade aws.BooleanValue `query:"AutoMinorVersionUpgrade" xml:"AutoMinorVersionUpgrade"` - BackupRetentionPeriod aws.IntegerValue `query:"BackupRetentionPeriod" xml:"BackupRetentionPeriod"` - DBInstanceClass aws.StringValue `query:"DBInstanceClass" xml:"DBInstanceClass"` - DBInstanceIdentifier aws.StringValue `query:"DBInstanceIdentifier" xml:"DBInstanceIdentifier"` - DBParameterGroupName aws.StringValue `query:"DBParameterGroupName" xml:"DBParameterGroupName"` - DBSecurityGroups []string `query:"DBSecurityGroups.member" xml:"DBSecurityGroups>DBSecurityGroupName"` - EngineVersion aws.StringValue `query:"EngineVersion" xml:"EngineVersion"` - IOPS aws.IntegerValue `query:"Iops" xml:"Iops"` - MasterUserPassword aws.StringValue `query:"MasterUserPassword" xml:"MasterUserPassword"` - MultiAZ aws.BooleanValue `query:"MultiAZ" xml:"MultiAZ"` - NewDBInstanceIdentifier aws.StringValue `query:"NewDBInstanceIdentifier" xml:"NewDBInstanceIdentifier"` - OptionGroupName aws.StringValue `query:"OptionGroupName" xml:"OptionGroupName"` - PreferredBackupWindow aws.StringValue `query:"PreferredBackupWindow" xml:"PreferredBackupWindow"` - PreferredMaintenanceWindow aws.StringValue `query:"PreferredMaintenanceWindow" xml:"PreferredMaintenanceWindow"` - StorageType aws.StringValue `query:"StorageType" xml:"StorageType"` - TDECredentialARN aws.StringValue `query:"TdeCredentialArn" xml:"TdeCredentialArn"` - TDECredentialPassword aws.StringValue `query:"TdeCredentialPassword" xml:"TdeCredentialPassword"` - VPCSecurityGroupIDs []string `query:"VpcSecurityGroupIds.member" xml:"VpcSecurityGroupIds>VpcSecurityGroupId"` -} - -// ModifyDBInstanceResult is undocumented. -type ModifyDBInstanceResult struct { - DBInstance *DBInstance `query:"DBInstance" xml:"ModifyDBInstanceResult>DBInstance"` -} - -// ModifyDBParameterGroupMessage is undocumented. -type ModifyDBParameterGroupMessage struct { - DBParameterGroupName aws.StringValue `query:"DBParameterGroupName" xml:"DBParameterGroupName"` - Parameters []Parameter `query:"Parameters.member" xml:"Parameters>Parameter"` -} - -// ModifyDBSubnetGroupMessage is undocumented. -type ModifyDBSubnetGroupMessage struct { - DBSubnetGroupDescription aws.StringValue `query:"DBSubnetGroupDescription" xml:"DBSubnetGroupDescription"` - DBSubnetGroupName aws.StringValue `query:"DBSubnetGroupName" xml:"DBSubnetGroupName"` - SubnetIDs []string `query:"SubnetIds.member" xml:"SubnetIds>SubnetIdentifier"` -} - -// ModifyDBSubnetGroupResult is undocumented. -type ModifyDBSubnetGroupResult struct { - DBSubnetGroup *DBSubnetGroup `query:"DBSubnetGroup" xml:"ModifyDBSubnetGroupResult>DBSubnetGroup"` -} - -// ModifyEventSubscriptionMessage is undocumented. -type ModifyEventSubscriptionMessage struct { - Enabled aws.BooleanValue `query:"Enabled" xml:"Enabled"` - EventCategories []string `query:"EventCategories.member" xml:"EventCategories>EventCategory"` - SNSTopicARN aws.StringValue `query:"SnsTopicArn" xml:"SnsTopicArn"` - SourceType aws.StringValue `query:"SourceType" xml:"SourceType"` - SubscriptionName aws.StringValue `query:"SubscriptionName" xml:"SubscriptionName"` -} - -// ModifyEventSubscriptionResult is undocumented. -type ModifyEventSubscriptionResult struct { - EventSubscription *EventSubscription `query:"EventSubscription" xml:"ModifyEventSubscriptionResult>EventSubscription"` -} - -// ModifyOptionGroupMessage is undocumented. -type ModifyOptionGroupMessage struct { - ApplyImmediately aws.BooleanValue `query:"ApplyImmediately" xml:"ApplyImmediately"` - OptionGroupName aws.StringValue `query:"OptionGroupName" xml:"OptionGroupName"` - OptionsToInclude []OptionConfiguration `query:"OptionsToInclude.member" xml:"OptionsToInclude>OptionConfiguration"` - OptionsToRemove []string `query:"OptionsToRemove.member" xml:"OptionsToRemove>member"` -} - -// ModifyOptionGroupResult is undocumented. -type ModifyOptionGroupResult struct { - OptionGroup *OptionGroup `query:"OptionGroup" xml:"ModifyOptionGroupResult>OptionGroup"` -} - -// Option is undocumented. -type Option struct { - DBSecurityGroupMemberships []DBSecurityGroupMembership `query:"DBSecurityGroupMemberships.member" xml:"DBSecurityGroupMemberships>DBSecurityGroup"` - OptionDescription aws.StringValue `query:"OptionDescription" xml:"OptionDescription"` - OptionName aws.StringValue `query:"OptionName" xml:"OptionName"` - OptionSettings []OptionSetting `query:"OptionSettings.member" xml:"OptionSettings>OptionSetting"` - Permanent aws.BooleanValue `query:"Permanent" xml:"Permanent"` - Persistent aws.BooleanValue `query:"Persistent" xml:"Persistent"` - Port aws.IntegerValue `query:"Port" xml:"Port"` - VPCSecurityGroupMemberships []VPCSecurityGroupMembership `query:"VpcSecurityGroupMemberships.member" xml:"VpcSecurityGroupMemberships>VpcSecurityGroupMembership"` -} - -// OptionConfiguration is undocumented. -type OptionConfiguration struct { - DBSecurityGroupMemberships []string `query:"DBSecurityGroupMemberships.member" xml:"DBSecurityGroupMemberships>DBSecurityGroupName"` - OptionName aws.StringValue `query:"OptionName" xml:"OptionName"` - OptionSettings []OptionSetting `query:"OptionSettings.member" xml:"OptionSettings>OptionSetting"` - Port aws.IntegerValue `query:"Port" xml:"Port"` - VPCSecurityGroupMemberships []string `query:"VpcSecurityGroupMemberships.member" xml:"VpcSecurityGroupMemberships>VpcSecurityGroupId"` -} - -// OptionGroup is undocumented. -type OptionGroup struct { - AllowsVPCAndNonVPCInstanceMemberships aws.BooleanValue `query:"AllowsVpcAndNonVpcInstanceMemberships" xml:"AllowsVpcAndNonVpcInstanceMemberships"` - EngineName aws.StringValue `query:"EngineName" xml:"EngineName"` - MajorEngineVersion aws.StringValue `query:"MajorEngineVersion" xml:"MajorEngineVersion"` - OptionGroupDescription aws.StringValue `query:"OptionGroupDescription" xml:"OptionGroupDescription"` - OptionGroupName aws.StringValue `query:"OptionGroupName" xml:"OptionGroupName"` - Options []Option `query:"Options.member" xml:"Options>Option"` - VPCID aws.StringValue `query:"VpcId" xml:"VpcId"` -} - -// OptionGroupMembership is undocumented. -type OptionGroupMembership struct { - OptionGroupName aws.StringValue `query:"OptionGroupName" xml:"OptionGroupName"` - Status aws.StringValue `query:"Status" xml:"Status"` -} - -// OptionGroupOption is undocumented. -type OptionGroupOption struct { - DefaultPort aws.IntegerValue `query:"DefaultPort" xml:"DefaultPort"` - Description aws.StringValue `query:"Description" xml:"Description"` - EngineName aws.StringValue `query:"EngineName" xml:"EngineName"` - MajorEngineVersion aws.StringValue `query:"MajorEngineVersion" xml:"MajorEngineVersion"` - MinimumRequiredMinorEngineVersion aws.StringValue `query:"MinimumRequiredMinorEngineVersion" xml:"MinimumRequiredMinorEngineVersion"` - Name aws.StringValue `query:"Name" xml:"Name"` - OptionGroupOptionSettings []OptionGroupOptionSetting `query:"OptionGroupOptionSettings.member" xml:"OptionGroupOptionSettings>OptionGroupOptionSetting"` - OptionsDependedOn []string `query:"OptionsDependedOn.member" xml:"OptionsDependedOn>OptionName"` - Permanent aws.BooleanValue `query:"Permanent" xml:"Permanent"` - Persistent aws.BooleanValue `query:"Persistent" xml:"Persistent"` - PortRequired aws.BooleanValue `query:"PortRequired" xml:"PortRequired"` -} - -// OptionGroupOptionSetting is undocumented. -type OptionGroupOptionSetting struct { - AllowedValues aws.StringValue `query:"AllowedValues" xml:"AllowedValues"` - ApplyType aws.StringValue `query:"ApplyType" xml:"ApplyType"` - DefaultValue aws.StringValue `query:"DefaultValue" xml:"DefaultValue"` - IsModifiable aws.BooleanValue `query:"IsModifiable" xml:"IsModifiable"` - SettingDescription aws.StringValue `query:"SettingDescription" xml:"SettingDescription"` - SettingName aws.StringValue `query:"SettingName" xml:"SettingName"` -} - -// OptionGroupOptionsMessage is undocumented. -type OptionGroupOptionsMessage struct { - Marker aws.StringValue `query:"Marker" xml:"DescribeOptionGroupOptionsResult>Marker"` - OptionGroupOptions []OptionGroupOption `query:"OptionGroupOptions.member" xml:"DescribeOptionGroupOptionsResult>OptionGroupOptions>OptionGroupOption"` -} - -// OptionGroups is undocumented. -type OptionGroups struct { - Marker aws.StringValue `query:"Marker" xml:"DescribeOptionGroupsResult>Marker"` - OptionGroupsList []OptionGroup `query:"OptionGroupsList.member" xml:"DescribeOptionGroupsResult>OptionGroupsList>OptionGroup"` -} - -// OptionSetting is undocumented. -type OptionSetting struct { - AllowedValues aws.StringValue `query:"AllowedValues" xml:"AllowedValues"` - ApplyType aws.StringValue `query:"ApplyType" xml:"ApplyType"` - DataType aws.StringValue `query:"DataType" xml:"DataType"` - DefaultValue aws.StringValue `query:"DefaultValue" xml:"DefaultValue"` - Description aws.StringValue `query:"Description" xml:"Description"` - IsCollection aws.BooleanValue `query:"IsCollection" xml:"IsCollection"` - IsModifiable aws.BooleanValue `query:"IsModifiable" xml:"IsModifiable"` - Name aws.StringValue `query:"Name" xml:"Name"` - Value aws.StringValue `query:"Value" xml:"Value"` -} - -// OrderableDBInstanceOption is undocumented. -type OrderableDBInstanceOption struct { - AvailabilityZones []AvailabilityZone `query:"AvailabilityZones.member" xml:"AvailabilityZones>AvailabilityZone"` - DBInstanceClass aws.StringValue `query:"DBInstanceClass" xml:"DBInstanceClass"` - Engine aws.StringValue `query:"Engine" xml:"Engine"` - EngineVersion aws.StringValue `query:"EngineVersion" xml:"EngineVersion"` - LicenseModel aws.StringValue `query:"LicenseModel" xml:"LicenseModel"` - MultiAZCapable aws.BooleanValue `query:"MultiAZCapable" xml:"MultiAZCapable"` - ReadReplicaCapable aws.BooleanValue `query:"ReadReplicaCapable" xml:"ReadReplicaCapable"` - StorageType aws.StringValue `query:"StorageType" xml:"StorageType"` - SupportsIOPS aws.BooleanValue `query:"SupportsIops" xml:"SupportsIops"` - SupportsStorageEncryption aws.BooleanValue `query:"SupportsStorageEncryption" xml:"SupportsStorageEncryption"` - VPC aws.BooleanValue `query:"Vpc" xml:"Vpc"` -} - -// OrderableDBInstanceOptionsMessage is undocumented. -type OrderableDBInstanceOptionsMessage struct { - Marker aws.StringValue `query:"Marker" xml:"DescribeOrderableDBInstanceOptionsResult>Marker"` - OrderableDBInstanceOptions []OrderableDBInstanceOption `query:"OrderableDBInstanceOptions.member" xml:"DescribeOrderableDBInstanceOptionsResult>OrderableDBInstanceOptions>OrderableDBInstanceOption"` -} - -// Parameter is undocumented. -type Parameter struct { - AllowedValues aws.StringValue `query:"AllowedValues" xml:"AllowedValues"` - ApplyMethod aws.StringValue `query:"ApplyMethod" xml:"ApplyMethod"` - ApplyType aws.StringValue `query:"ApplyType" xml:"ApplyType"` - DataType aws.StringValue `query:"DataType" xml:"DataType"` - Description aws.StringValue `query:"Description" xml:"Description"` - IsModifiable aws.BooleanValue `query:"IsModifiable" xml:"IsModifiable"` - MinimumEngineVersion aws.StringValue `query:"MinimumEngineVersion" xml:"MinimumEngineVersion"` - ParameterName aws.StringValue `query:"ParameterName" xml:"ParameterName"` - ParameterValue aws.StringValue `query:"ParameterValue" xml:"ParameterValue"` - Source aws.StringValue `query:"Source" xml:"Source"` -} - -// PendingMaintenanceAction is undocumented. -type PendingMaintenanceAction struct { - Action aws.StringValue `query:"Action" xml:"Action"` - AutoAppliedAfterDate time.Time `query:"AutoAppliedAfterDate" xml:"AutoAppliedAfterDate"` - CurrentApplyDate time.Time `query:"CurrentApplyDate" xml:"CurrentApplyDate"` - ForcedApplyDate time.Time `query:"ForcedApplyDate" xml:"ForcedApplyDate"` - OptInStatus aws.StringValue `query:"OptInStatus" xml:"OptInStatus"` -} - -// PendingMaintenanceActionsMessage is undocumented. -type PendingMaintenanceActionsMessage struct { - Marker aws.StringValue `query:"Marker" xml:"DescribePendingMaintenanceActionsResult>Marker"` - PendingMaintenanceActions []ResourcePendingMaintenanceActions `query:"PendingMaintenanceActions.member" xml:"DescribePendingMaintenanceActionsResult>PendingMaintenanceActions>ResourcePendingMaintenanceActions"` -} - -// PendingModifiedValues is undocumented. -type PendingModifiedValues struct { - AllocatedStorage aws.IntegerValue `query:"AllocatedStorage" xml:"AllocatedStorage"` - BackupRetentionPeriod aws.IntegerValue `query:"BackupRetentionPeriod" xml:"BackupRetentionPeriod"` - DBInstanceClass aws.StringValue `query:"DBInstanceClass" xml:"DBInstanceClass"` - DBInstanceIdentifier aws.StringValue `query:"DBInstanceIdentifier" xml:"DBInstanceIdentifier"` - EngineVersion aws.StringValue `query:"EngineVersion" xml:"EngineVersion"` - IOPS aws.IntegerValue `query:"Iops" xml:"Iops"` - MasterUserPassword aws.StringValue `query:"MasterUserPassword" xml:"MasterUserPassword"` - MultiAZ aws.BooleanValue `query:"MultiAZ" xml:"MultiAZ"` - Port aws.IntegerValue `query:"Port" xml:"Port"` - StorageType aws.StringValue `query:"StorageType" xml:"StorageType"` -} - -// PromoteReadReplicaMessage is undocumented. -type PromoteReadReplicaMessage struct { - BackupRetentionPeriod aws.IntegerValue `query:"BackupRetentionPeriod" xml:"BackupRetentionPeriod"` - DBInstanceIdentifier aws.StringValue `query:"DBInstanceIdentifier" xml:"DBInstanceIdentifier"` - PreferredBackupWindow aws.StringValue `query:"PreferredBackupWindow" xml:"PreferredBackupWindow"` -} - -// PromoteReadReplicaResult is undocumented. -type PromoteReadReplicaResult struct { - DBInstance *DBInstance `query:"DBInstance" xml:"PromoteReadReplicaResult>DBInstance"` -} - -// PurchaseReservedDBInstancesOfferingMessage is undocumented. -type PurchaseReservedDBInstancesOfferingMessage struct { - DBInstanceCount aws.IntegerValue `query:"DBInstanceCount" xml:"DBInstanceCount"` - ReservedDBInstanceID aws.StringValue `query:"ReservedDBInstanceId" xml:"ReservedDBInstanceId"` - ReservedDBInstancesOfferingID aws.StringValue `query:"ReservedDBInstancesOfferingId" xml:"ReservedDBInstancesOfferingId"` - Tags []Tag `query:"Tags.member" xml:"Tags>Tag"` -} - -// PurchaseReservedDBInstancesOfferingResult is undocumented. -type PurchaseReservedDBInstancesOfferingResult struct { - ReservedDBInstance *ReservedDBInstance `query:"ReservedDBInstance" xml:"PurchaseReservedDBInstancesOfferingResult>ReservedDBInstance"` -} - -// RebootDBInstanceMessage is undocumented. -type RebootDBInstanceMessage struct { - DBInstanceIdentifier aws.StringValue `query:"DBInstanceIdentifier" xml:"DBInstanceIdentifier"` - ForceFailover aws.BooleanValue `query:"ForceFailover" xml:"ForceFailover"` -} - -// RebootDBInstanceResult is undocumented. -type RebootDBInstanceResult struct { - DBInstance *DBInstance `query:"DBInstance" xml:"RebootDBInstanceResult>DBInstance"` -} - -// RecurringCharge is undocumented. -type RecurringCharge struct { - RecurringChargeAmount aws.DoubleValue `query:"RecurringChargeAmount" xml:"RecurringChargeAmount"` - RecurringChargeFrequency aws.StringValue `query:"RecurringChargeFrequency" xml:"RecurringChargeFrequency"` -} - -// RemoveSourceIdentifierFromSubscriptionMessage is undocumented. -type RemoveSourceIdentifierFromSubscriptionMessage struct { - SourceIdentifier aws.StringValue `query:"SourceIdentifier" xml:"SourceIdentifier"` - SubscriptionName aws.StringValue `query:"SubscriptionName" xml:"SubscriptionName"` -} - -// RemoveSourceIdentifierFromSubscriptionResult is undocumented. -type RemoveSourceIdentifierFromSubscriptionResult struct { - EventSubscription *EventSubscription `query:"EventSubscription" xml:"RemoveSourceIdentifierFromSubscriptionResult>EventSubscription"` -} - -// RemoveTagsFromResourceMessage is undocumented. -type RemoveTagsFromResourceMessage struct { - ResourceName aws.StringValue `query:"ResourceName" xml:"ResourceName"` - TagKeys []string `query:"TagKeys.member" xml:"TagKeys>member"` -} - -// ReservedDBInstance is undocumented. -type ReservedDBInstance struct { - CurrencyCode aws.StringValue `query:"CurrencyCode" xml:"CurrencyCode"` - DBInstanceClass aws.StringValue `query:"DBInstanceClass" xml:"DBInstanceClass"` - DBInstanceCount aws.IntegerValue `query:"DBInstanceCount" xml:"DBInstanceCount"` - Duration aws.IntegerValue `query:"Duration" xml:"Duration"` - FixedPrice aws.DoubleValue `query:"FixedPrice" xml:"FixedPrice"` - MultiAZ aws.BooleanValue `query:"MultiAZ" xml:"MultiAZ"` - OfferingType aws.StringValue `query:"OfferingType" xml:"OfferingType"` - ProductDescription aws.StringValue `query:"ProductDescription" xml:"ProductDescription"` - RecurringCharges []RecurringCharge `query:"RecurringCharges.member" xml:"RecurringCharges>RecurringCharge"` - ReservedDBInstanceID aws.StringValue `query:"ReservedDBInstanceId" xml:"ReservedDBInstanceId"` - ReservedDBInstancesOfferingID aws.StringValue `query:"ReservedDBInstancesOfferingId" xml:"ReservedDBInstancesOfferingId"` - StartTime time.Time `query:"StartTime" xml:"StartTime"` - State aws.StringValue `query:"State" xml:"State"` - UsagePrice aws.DoubleValue `query:"UsagePrice" xml:"UsagePrice"` -} - -// ReservedDBInstanceMessage is undocumented. -type ReservedDBInstanceMessage struct { - Marker aws.StringValue `query:"Marker" xml:"DescribeReservedDBInstancesResult>Marker"` - ReservedDBInstances []ReservedDBInstance `query:"ReservedDBInstances.member" xml:"DescribeReservedDBInstancesResult>ReservedDBInstances>ReservedDBInstance"` -} - -// ReservedDBInstancesOffering is undocumented. -type ReservedDBInstancesOffering struct { - CurrencyCode aws.StringValue `query:"CurrencyCode" xml:"CurrencyCode"` - DBInstanceClass aws.StringValue `query:"DBInstanceClass" xml:"DBInstanceClass"` - Duration aws.IntegerValue `query:"Duration" xml:"Duration"` - FixedPrice aws.DoubleValue `query:"FixedPrice" xml:"FixedPrice"` - MultiAZ aws.BooleanValue `query:"MultiAZ" xml:"MultiAZ"` - OfferingType aws.StringValue `query:"OfferingType" xml:"OfferingType"` - ProductDescription aws.StringValue `query:"ProductDescription" xml:"ProductDescription"` - RecurringCharges []RecurringCharge `query:"RecurringCharges.member" xml:"RecurringCharges>RecurringCharge"` - ReservedDBInstancesOfferingID aws.StringValue `query:"ReservedDBInstancesOfferingId" xml:"ReservedDBInstancesOfferingId"` - UsagePrice aws.DoubleValue `query:"UsagePrice" xml:"UsagePrice"` -} - -// ReservedDBInstancesOfferingMessage is undocumented. -type ReservedDBInstancesOfferingMessage struct { - Marker aws.StringValue `query:"Marker" xml:"DescribeReservedDBInstancesOfferingsResult>Marker"` - ReservedDBInstancesOfferings []ReservedDBInstancesOffering `query:"ReservedDBInstancesOfferings.member" xml:"DescribeReservedDBInstancesOfferingsResult>ReservedDBInstancesOfferings>ReservedDBInstancesOffering"` -} - -// ResetDBParameterGroupMessage is undocumented. -type ResetDBParameterGroupMessage struct { - DBParameterGroupName aws.StringValue `query:"DBParameterGroupName" xml:"DBParameterGroupName"` - Parameters []Parameter `query:"Parameters.member" xml:"Parameters>Parameter"` - ResetAllParameters aws.BooleanValue `query:"ResetAllParameters" xml:"ResetAllParameters"` -} - -// ResourcePendingMaintenanceActions is undocumented. -type ResourcePendingMaintenanceActions struct { - PendingMaintenanceActionDetails []PendingMaintenanceAction `query:"PendingMaintenanceActionDetails.member" xml:"PendingMaintenanceActionDetails>PendingMaintenanceAction"` - ResourceIdentifier aws.StringValue `query:"ResourceIdentifier" xml:"ResourceIdentifier"` -} - -// RestoreDBInstanceFromDBSnapshotMessage is undocumented. -type RestoreDBInstanceFromDBSnapshotMessage struct { - AutoMinorVersionUpgrade aws.BooleanValue `query:"AutoMinorVersionUpgrade" xml:"AutoMinorVersionUpgrade"` - AvailabilityZone aws.StringValue `query:"AvailabilityZone" xml:"AvailabilityZone"` - DBInstanceClass aws.StringValue `query:"DBInstanceClass" xml:"DBInstanceClass"` - DBInstanceIdentifier aws.StringValue `query:"DBInstanceIdentifier" xml:"DBInstanceIdentifier"` - DBName aws.StringValue `query:"DBName" xml:"DBName"` - DBSnapshotIdentifier aws.StringValue `query:"DBSnapshotIdentifier" xml:"DBSnapshotIdentifier"` - DBSubnetGroupName aws.StringValue `query:"DBSubnetGroupName" xml:"DBSubnetGroupName"` - Engine aws.StringValue `query:"Engine" xml:"Engine"` - IOPS aws.IntegerValue `query:"Iops" xml:"Iops"` - LicenseModel aws.StringValue `query:"LicenseModel" xml:"LicenseModel"` - MultiAZ aws.BooleanValue `query:"MultiAZ" xml:"MultiAZ"` - OptionGroupName aws.StringValue `query:"OptionGroupName" xml:"OptionGroupName"` - Port aws.IntegerValue `query:"Port" xml:"Port"` - PubliclyAccessible aws.BooleanValue `query:"PubliclyAccessible" xml:"PubliclyAccessible"` - StorageType aws.StringValue `query:"StorageType" xml:"StorageType"` - Tags []Tag `query:"Tags.member" xml:"Tags>Tag"` - TDECredentialARN aws.StringValue `query:"TdeCredentialArn" xml:"TdeCredentialArn"` - TDECredentialPassword aws.StringValue `query:"TdeCredentialPassword" xml:"TdeCredentialPassword"` -} - -// RestoreDBInstanceFromDBSnapshotResult is undocumented. -type RestoreDBInstanceFromDBSnapshotResult struct { - DBInstance *DBInstance `query:"DBInstance" xml:"RestoreDBInstanceFromDBSnapshotResult>DBInstance"` -} - -// RestoreDBInstanceToPointInTimeMessage is undocumented. -type RestoreDBInstanceToPointInTimeMessage struct { - AutoMinorVersionUpgrade aws.BooleanValue `query:"AutoMinorVersionUpgrade" xml:"AutoMinorVersionUpgrade"` - AvailabilityZone aws.StringValue `query:"AvailabilityZone" xml:"AvailabilityZone"` - DBInstanceClass aws.StringValue `query:"DBInstanceClass" xml:"DBInstanceClass"` - DBName aws.StringValue `query:"DBName" xml:"DBName"` - DBSubnetGroupName aws.StringValue `query:"DBSubnetGroupName" xml:"DBSubnetGroupName"` - Engine aws.StringValue `query:"Engine" xml:"Engine"` - IOPS aws.IntegerValue `query:"Iops" xml:"Iops"` - LicenseModel aws.StringValue `query:"LicenseModel" xml:"LicenseModel"` - MultiAZ aws.BooleanValue `query:"MultiAZ" xml:"MultiAZ"` - OptionGroupName aws.StringValue `query:"OptionGroupName" xml:"OptionGroupName"` - Port aws.IntegerValue `query:"Port" xml:"Port"` - PubliclyAccessible aws.BooleanValue `query:"PubliclyAccessible" xml:"PubliclyAccessible"` - RestoreTime time.Time `query:"RestoreTime" xml:"RestoreTime"` - SourceDBInstanceIdentifier aws.StringValue `query:"SourceDBInstanceIdentifier" xml:"SourceDBInstanceIdentifier"` - StorageType aws.StringValue `query:"StorageType" xml:"StorageType"` - Tags []Tag `query:"Tags.member" xml:"Tags>Tag"` - TargetDBInstanceIdentifier aws.StringValue `query:"TargetDBInstanceIdentifier" xml:"TargetDBInstanceIdentifier"` - TDECredentialARN aws.StringValue `query:"TdeCredentialArn" xml:"TdeCredentialArn"` - TDECredentialPassword aws.StringValue `query:"TdeCredentialPassword" xml:"TdeCredentialPassword"` - UseLatestRestorableTime aws.BooleanValue `query:"UseLatestRestorableTime" xml:"UseLatestRestorableTime"` -} - -// RestoreDBInstanceToPointInTimeResult is undocumented. -type RestoreDBInstanceToPointInTimeResult struct { - DBInstance *DBInstance `query:"DBInstance" xml:"RestoreDBInstanceToPointInTimeResult>DBInstance"` -} - -// RevokeDBSecurityGroupIngressMessage is undocumented. -type RevokeDBSecurityGroupIngressMessage struct { - CIDRIP aws.StringValue `query:"CIDRIP" xml:"CIDRIP"` - DBSecurityGroupName aws.StringValue `query:"DBSecurityGroupName" xml:"DBSecurityGroupName"` - EC2SecurityGroupID aws.StringValue `query:"EC2SecurityGroupId" xml:"EC2SecurityGroupId"` - EC2SecurityGroupName aws.StringValue `query:"EC2SecurityGroupName" xml:"EC2SecurityGroupName"` - EC2SecurityGroupOwnerID aws.StringValue `query:"EC2SecurityGroupOwnerId" xml:"EC2SecurityGroupOwnerId"` -} - -// RevokeDBSecurityGroupIngressResult is undocumented. -type RevokeDBSecurityGroupIngressResult struct { - DBSecurityGroup *DBSecurityGroup `query:"DBSecurityGroup" xml:"RevokeDBSecurityGroupIngressResult>DBSecurityGroup"` -} - -// Possible values for RDS. -const ( - SourceTypeDBInstance = "db-instance" - SourceTypeDBParameterGroup = "db-parameter-group" - SourceTypeDBSecurityGroup = "db-security-group" - SourceTypeDBSnapshot = "db-snapshot" -) - -// Subnet is undocumented. -type Subnet struct { - SubnetAvailabilityZone *AvailabilityZone `query:"SubnetAvailabilityZone" xml:"SubnetAvailabilityZone"` - SubnetIdentifier aws.StringValue `query:"SubnetIdentifier" xml:"SubnetIdentifier"` - SubnetStatus aws.StringValue `query:"SubnetStatus" xml:"SubnetStatus"` -} - -// Tag is undocumented. -type Tag struct { - Key aws.StringValue `query:"Key" xml:"Key"` - Value aws.StringValue `query:"Value" xml:"Value"` -} - -// TagListMessage is undocumented. -type TagListMessage struct { - TagList []Tag `query:"TagList.member" xml:"ListTagsForResourceResult>TagList>Tag"` -} - -// VPCSecurityGroupMembership is undocumented. -type VPCSecurityGroupMembership struct { - Status aws.StringValue `query:"Status" xml:"Status"` - VPCSecurityGroupID aws.StringValue `query:"VpcSecurityGroupId" xml:"VpcSecurityGroupId"` -} - -// DescribeDBEngineVersionsResult is a wrapper for DBEngineVersionMessage. -type DescribeDBEngineVersionsResult struct { - DBEngineVersions []DBEngineVersion `query:"DBEngineVersions.member" xml:"DescribeDBEngineVersionsResult>DBEngineVersions>DBEngineVersion"` - Marker aws.StringValue `query:"Marker" xml:"DescribeDBEngineVersionsResult>Marker"` -} - -// DescribeDBInstancesResult is a wrapper for DBInstanceMessage. -type DescribeDBInstancesResult struct { - DBInstances []DBInstance `query:"DBInstances.member" xml:"DescribeDBInstancesResult>DBInstances>DBInstance"` - Marker aws.StringValue `query:"Marker" xml:"DescribeDBInstancesResult>Marker"` -} - -// DescribeDBLogFilesResult is a wrapper for DescribeDBLogFilesResponse. -type DescribeDBLogFilesResult struct { - DescribeDBLogFiles []DescribeDBLogFilesDetails `query:"DescribeDBLogFiles.member" xml:"DescribeDBLogFilesResult>DescribeDBLogFiles>DescribeDBLogFilesDetails"` - Marker aws.StringValue `query:"Marker" xml:"DescribeDBLogFilesResult>Marker"` -} - -// DescribeDBParameterGroupsResult is a wrapper for DBParameterGroupsMessage. -type DescribeDBParameterGroupsResult struct { - DBParameterGroups []DBParameterGroup `query:"DBParameterGroups.member" xml:"DescribeDBParameterGroupsResult>DBParameterGroups>DBParameterGroup"` - Marker aws.StringValue `query:"Marker" xml:"DescribeDBParameterGroupsResult>Marker"` -} - -// DescribeDBParametersResult is a wrapper for DBParameterGroupDetails. -type DescribeDBParametersResult struct { - Marker aws.StringValue `query:"Marker" xml:"DescribeDBParametersResult>Marker"` - Parameters []Parameter `query:"Parameters.member" xml:"DescribeDBParametersResult>Parameters>Parameter"` -} - -// DescribeDBSecurityGroupsResult is a wrapper for DBSecurityGroupMessage. -type DescribeDBSecurityGroupsResult struct { - DBSecurityGroups []DBSecurityGroup `query:"DBSecurityGroups.member" xml:"DescribeDBSecurityGroupsResult>DBSecurityGroups>DBSecurityGroup"` - Marker aws.StringValue `query:"Marker" xml:"DescribeDBSecurityGroupsResult>Marker"` -} - -// DescribeDBSnapshotsResult is a wrapper for DBSnapshotMessage. -type DescribeDBSnapshotsResult struct { - DBSnapshots []DBSnapshot `query:"DBSnapshots.member" xml:"DescribeDBSnapshotsResult>DBSnapshots>DBSnapshot"` - Marker aws.StringValue `query:"Marker" xml:"DescribeDBSnapshotsResult>Marker"` -} - -// DescribeDBSubnetGroupsResult is a wrapper for DBSubnetGroupMessage. -type DescribeDBSubnetGroupsResult struct { - DBSubnetGroups []DBSubnetGroup `query:"DBSubnetGroups.member" xml:"DescribeDBSubnetGroupsResult>DBSubnetGroups>DBSubnetGroup"` - Marker aws.StringValue `query:"Marker" xml:"DescribeDBSubnetGroupsResult>Marker"` -} - -// DescribeEventCategoriesResult is a wrapper for EventCategoriesMessage. -type DescribeEventCategoriesResult struct { - EventCategoriesMapList []EventCategoriesMap `query:"EventCategoriesMapList.member" xml:"DescribeEventCategoriesResult>EventCategoriesMapList>EventCategoriesMap"` -} - -// DescribeEventSubscriptionsResult is a wrapper for EventSubscriptionsMessage. -type DescribeEventSubscriptionsResult struct { - EventSubscriptionsList []EventSubscription `query:"EventSubscriptionsList.member" xml:"DescribeEventSubscriptionsResult>EventSubscriptionsList>EventSubscription"` - Marker aws.StringValue `query:"Marker" xml:"DescribeEventSubscriptionsResult>Marker"` -} - -// DescribeEventsResult is a wrapper for EventsMessage. -type DescribeEventsResult struct { - Events []Event `query:"Events.member" xml:"DescribeEventsResult>Events>Event"` - Marker aws.StringValue `query:"Marker" xml:"DescribeEventsResult>Marker"` -} - -// DescribeOptionGroupOptionsResult is a wrapper for OptionGroupOptionsMessage. -type DescribeOptionGroupOptionsResult struct { - Marker aws.StringValue `query:"Marker" xml:"DescribeOptionGroupOptionsResult>Marker"` - OptionGroupOptions []OptionGroupOption `query:"OptionGroupOptions.member" xml:"DescribeOptionGroupOptionsResult>OptionGroupOptions>OptionGroupOption"` -} - -// DescribeOptionGroupsResult is a wrapper for OptionGroups. -type DescribeOptionGroupsResult struct { - Marker aws.StringValue `query:"Marker" xml:"DescribeOptionGroupsResult>Marker"` - OptionGroupsList []OptionGroup `query:"OptionGroupsList.member" xml:"DescribeOptionGroupsResult>OptionGroupsList>OptionGroup"` -} - -// DescribeOrderableDBInstanceOptionsResult is a wrapper for OrderableDBInstanceOptionsMessage. -type DescribeOrderableDBInstanceOptionsResult struct { - Marker aws.StringValue `query:"Marker" xml:"DescribeOrderableDBInstanceOptionsResult>Marker"` - OrderableDBInstanceOptions []OrderableDBInstanceOption `query:"OrderableDBInstanceOptions.member" xml:"DescribeOrderableDBInstanceOptionsResult>OrderableDBInstanceOptions>OrderableDBInstanceOption"` -} - -// DescribePendingMaintenanceActionsResult is a wrapper for PendingMaintenanceActionsMessage. -type DescribePendingMaintenanceActionsResult struct { - Marker aws.StringValue `query:"Marker" xml:"DescribePendingMaintenanceActionsResult>Marker"` - PendingMaintenanceActions []ResourcePendingMaintenanceActions `query:"PendingMaintenanceActions.member" xml:"DescribePendingMaintenanceActionsResult>PendingMaintenanceActions>ResourcePendingMaintenanceActions"` -} - -// DescribeReservedDBInstancesOfferingsResult is a wrapper for ReservedDBInstancesOfferingMessage. -type DescribeReservedDBInstancesOfferingsResult struct { - Marker aws.StringValue `query:"Marker" xml:"DescribeReservedDBInstancesOfferingsResult>Marker"` - ReservedDBInstancesOfferings []ReservedDBInstancesOffering `query:"ReservedDBInstancesOfferings.member" xml:"DescribeReservedDBInstancesOfferingsResult>ReservedDBInstancesOfferings>ReservedDBInstancesOffering"` -} - -// DescribeReservedDBInstancesResult is a wrapper for ReservedDBInstanceMessage. -type DescribeReservedDBInstancesResult struct { - Marker aws.StringValue `query:"Marker" xml:"DescribeReservedDBInstancesResult>Marker"` - ReservedDBInstances []ReservedDBInstance `query:"ReservedDBInstances.member" xml:"DescribeReservedDBInstancesResult>ReservedDBInstances>ReservedDBInstance"` -} - -// DownloadDBLogFilePortionResult is a wrapper for DownloadDBLogFilePortionDetails. -type DownloadDBLogFilePortionResult struct { - AdditionalDataPending aws.BooleanValue `query:"AdditionalDataPending" xml:"DownloadDBLogFilePortionResult>AdditionalDataPending"` - LogFileData aws.StringValue `query:"LogFileData" xml:"DownloadDBLogFilePortionResult>LogFileData"` - Marker aws.StringValue `query:"Marker" xml:"DownloadDBLogFilePortionResult>Marker"` -} - -// ListTagsForResourceResult is a wrapper for TagListMessage. -type ListTagsForResourceResult struct { - TagList []Tag `query:"TagList.member" xml:"ListTagsForResourceResult>TagList>Tag"` -} - -// ModifyDBParameterGroupResult is a wrapper for DBParameterGroupNameMessage. -type ModifyDBParameterGroupResult struct { - DBParameterGroupName aws.StringValue `query:"DBParameterGroupName" xml:"ModifyDBParameterGroupResult>DBParameterGroupName"` -} - -// ResetDBParameterGroupResult is a wrapper for DBParameterGroupNameMessage. -type ResetDBParameterGroupResult struct { - DBParameterGroupName aws.StringValue `query:"DBParameterGroupName" xml:"ResetDBParameterGroupResult>DBParameterGroupName"` -} - -// avoid errors if the packages aren't referenced -var _ time.Time - -var _ xml.Decoder -var _ = io.EOF diff --git a/src/github.com/getlantern/aws-sdk-go/gen/redshift/redshift.go b/src/github.com/getlantern/aws-sdk-go/gen/redshift/redshift.go deleted file mode 100644 index df61e049c7..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/gen/redshift/redshift.go +++ /dev/null @@ -1,1964 +0,0 @@ -// THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. - -// Package redshift provides a client for Amazon Redshift. -package redshift - -import ( - "net/http" - "time" - - "github.com/awslabs/aws-sdk-go/aws" - "github.com/awslabs/aws-sdk-go/gen/endpoints" -) - -import ( - "encoding/xml" - "io" -) - -// RedShift is a client for Amazon Redshift. -type RedShift struct { - client *aws.QueryClient -} - -// New returns a new RedShift client. -func New(creds aws.CredentialsProvider, region string, client *http.Client) *RedShift { - if client == nil { - client = http.DefaultClient - } - - endpoint, service, region := endpoints.Lookup("redshift", region) - - return &RedShift{ - client: &aws.QueryClient{ - Context: aws.Context{ - Credentials: creds, - Service: service, - Region: region, - }, - Client: client, - Endpoint: endpoint, - APIVersion: "2012-12-01", - }, - } -} - -// AuthorizeClusterSecurityGroupIngress adds an inbound (ingress) rule to -// an Amazon Redshift security group. Depending on whether the application -// accessing your cluster is running on the Internet or an EC2 instance, -// you can authorize inbound access to either a Classless Interdomain -// Routing IP address range or an EC2 security group. You can add as many -// as 20 ingress rules to an Amazon Redshift security group. The EC2 -// security group must be defined in the AWS region where the cluster -// resides. For an overview of blocks, see the Wikipedia article on -// Classless Inter-Domain Routing . You must also associate the security -// group with a cluster so that clients running on these IP addresses or -// the EC2 instance are authorized to connect to the cluster. For -// information about managing security groups, go to Working with Security -// Groups in the Amazon Redshift Cluster Management Guide -func (c *RedShift) AuthorizeClusterSecurityGroupIngress(req *AuthorizeClusterSecurityGroupIngressMessage) (resp *AuthorizeClusterSecurityGroupIngressResult, err error) { - resp = &AuthorizeClusterSecurityGroupIngressResult{} - err = c.client.Do("AuthorizeClusterSecurityGroupIngress", "POST", "/", req, resp) - return -} - -// AuthorizeSnapshotAccess authorizes the specified AWS customer account to -// restore the specified snapshot. For more information about working with -// snapshots, go to Amazon Redshift Snapshots in the Amazon Redshift -// Cluster Management Guide . -func (c *RedShift) AuthorizeSnapshotAccess(req *AuthorizeSnapshotAccessMessage) (resp *AuthorizeSnapshotAccessResult, err error) { - resp = &AuthorizeSnapshotAccessResult{} - err = c.client.Do("AuthorizeSnapshotAccess", "POST", "/", req, resp) - return -} - -// CopyClusterSnapshot copies the specified automated cluster snapshot to a -// new manual cluster snapshot. The source must be an automated snapshot -// and it must be in the available state. When you delete a cluster, Amazon -// Redshift deletes any automated snapshots of the cluster. Also, when the -// retention period of the snapshot expires, Amazon Redshift automatically -// deletes it. If you want to keep an automated snapshot for a longer -// period, you can make a manual copy of the snapshot. Manual snapshots are -// retained until you delete them. For more information about working with -// snapshots, go to Amazon Redshift Snapshots in the Amazon Redshift -// Cluster Management Guide . -func (c *RedShift) CopyClusterSnapshot(req *CopyClusterSnapshotMessage) (resp *CopyClusterSnapshotResult, err error) { - resp = &CopyClusterSnapshotResult{} - err = c.client.Do("CopyClusterSnapshot", "POST", "/", req, resp) - return -} - -// CreateCluster creates a new cluster. To create the cluster in virtual -// private cloud you must provide cluster subnet group name. If you don't -// provide a cluster subnet group name or the cluster security group -// parameter, Amazon Redshift creates a non-VPC cluster, it associates the -// default cluster security group with the cluster. For more information -// about managing clusters, go to Amazon Redshift Clusters in the Amazon -// Redshift Cluster Management Guide . -func (c *RedShift) CreateCluster(req *CreateClusterMessage) (resp *CreateClusterResult, err error) { - resp = &CreateClusterResult{} - err = c.client.Do("CreateCluster", "POST", "/", req, resp) - return -} - -// CreateClusterParameterGroup creates an Amazon Redshift parameter group. -// Creating parameter groups is independent of creating clusters. You can -// associate a cluster with a parameter group when you create the cluster. -// You can also associate an existing cluster with a parameter group after -// the cluster is created by using ModifyCluster . Parameters in the -// parameter group define specific behavior that applies to the databases -// you create on the cluster. For more information about managing parameter -// groups, go to Amazon Redshift Parameter Groups in the Amazon Redshift -// Cluster Management Guide . -func (c *RedShift) CreateClusterParameterGroup(req *CreateClusterParameterGroupMessage) (resp *CreateClusterParameterGroupResult, err error) { - resp = &CreateClusterParameterGroupResult{} - err = c.client.Do("CreateClusterParameterGroup", "POST", "/", req, resp) - return -} - -// CreateClusterSecurityGroup creates a new Amazon Redshift security group. -// You use security groups to control access to non-VPC clusters. For -// information about managing security groups, go to Amazon Redshift -// Cluster Security Groups in the Amazon Redshift Cluster Management Guide -// . -func (c *RedShift) CreateClusterSecurityGroup(req *CreateClusterSecurityGroupMessage) (resp *CreateClusterSecurityGroupResult, err error) { - resp = &CreateClusterSecurityGroupResult{} - err = c.client.Do("CreateClusterSecurityGroup", "POST", "/", req, resp) - return -} - -// CreateClusterSnapshot creates a manual snapshot of the specified -// cluster. The cluster must be in the available state. For more -// information about working with snapshots, go to Amazon Redshift -// Snapshots in the Amazon Redshift Cluster Management Guide . -func (c *RedShift) CreateClusterSnapshot(req *CreateClusterSnapshotMessage) (resp *CreateClusterSnapshotResult, err error) { - resp = &CreateClusterSnapshotResult{} - err = c.client.Do("CreateClusterSnapshot", "POST", "/", req, resp) - return -} - -// CreateClusterSubnetGroup creates a new Amazon Redshift subnet group. You -// must provide a list of one or more subnets in your existing Amazon -// Virtual Private Cloud (Amazon when creating Amazon Redshift subnet -// group. For information about subnet groups, go to Amazon Redshift -// Cluster Subnet Groups in the Amazon Redshift Cluster Management Guide . -func (c *RedShift) CreateClusterSubnetGroup(req *CreateClusterSubnetGroupMessage) (resp *CreateClusterSubnetGroupResult, err error) { - resp = &CreateClusterSubnetGroupResult{} - err = c.client.Do("CreateClusterSubnetGroup", "POST", "/", req, resp) - return -} - -// CreateEventSubscription creates an Amazon Redshift event notification -// subscription. This action requires an ARN (Amazon Resource Name) of an -// Amazon SNS topic created by either the Amazon Redshift console, the -// Amazon SNS console, or the Amazon SNS To obtain an ARN with Amazon you -// must create a topic in Amazon SNS and subscribe to the topic. The ARN is -// displayed in the SNS console. You can specify the source type, and lists -// of Amazon Redshift source IDs, event categories, and event severities. -// Notifications will be sent for all events you want that match those -// criteria. For example, you can specify source type = cluster, source ID -// = my-cluster-1 and mycluster2, event categories = Availability, Backup, -// and severity = The subscription will only send notifications for those -// events in the Availability and Backup categories for the specified -// clusters. If you specify both the source type and source IDs, such as -// source type = cluster and source identifier = my-cluster-1, -// notifications will be sent for all the cluster events for my-cluster-1. -// If you specify a source type but do not specify a source identifier, you -// will receive notice of the events for the objects of that type in your -// AWS account. If you do not specify either the SourceType nor the -// SourceIdentifier, you will be notified of events generated from all -// Amazon Redshift sources belonging to your AWS account. You must specify -// a source type if you specify a source ID. -func (c *RedShift) CreateEventSubscription(req *CreateEventSubscriptionMessage) (resp *CreateEventSubscriptionResult, err error) { - resp = &CreateEventSubscriptionResult{} - err = c.client.Do("CreateEventSubscription", "POST", "/", req, resp) - return -} - -// CreateHSMClientCertificate creates an HSM client certificate that an -// Amazon Redshift cluster will use to connect to the client's HSM in order -// to store and retrieve the keys used to encrypt the cluster databases. -// The command returns a public key, which you must store in the In -// addition to creating the HSM certificate, you must create an Amazon -// Redshift HSM configuration that provides a cluster the information -// needed to store and use encryption keys in the For more information, go -// to Hardware Security Modules in the Amazon Redshift Cluster Management -// Guide. -func (c *RedShift) CreateHSMClientCertificate(req *CreateHSMClientCertificateMessage) (resp *CreateHSMClientCertificateResult, err error) { - resp = &CreateHSMClientCertificateResult{} - err = c.client.Do("CreateHsmClientCertificate", "POST", "/", req, resp) - return -} - -// CreateHSMConfiguration creates an HSM configuration that contains the -// information required by an Amazon Redshift cluster to store and use -// database encryption keys in a Hardware Security Module After creating -// the HSM configuration, you can specify it as a parameter when creating a -// cluster. The cluster will then store its encryption keys in the In -// addition to creating an HSM configuration, you must also create an HSM -// client certificate. For more information, go to Hardware Security -// Modules in the Amazon Redshift Cluster Management Guide. -func (c *RedShift) CreateHSMConfiguration(req *CreateHSMConfigurationMessage) (resp *CreateHSMConfigurationResult, err error) { - resp = &CreateHSMConfigurationResult{} - err = c.client.Do("CreateHsmConfiguration", "POST", "/", req, resp) - return -} - -// CreateTags adds one or more tags to a specified resource. A resource can -// have up to 10 tags. If you try to create more than 10 tags for a -// resource, you will receive an error and the attempt will fail. If you -// specify a key that already exists for the resource, the value for that -// key will be updated with the new value. -func (c *RedShift) CreateTags(req *CreateTagsMessage) (err error) { - // NRE - err = c.client.Do("CreateTags", "POST", "/", req, nil) - return -} - -// DeleteCluster deletes a previously provisioned cluster. A successful -// response from the web service indicates that the request was received -// correctly. Use DescribeClusters to monitor the status of the deletion. -// The delete operation cannot be canceled or reverted once submitted. For -// more information about managing clusters, go to Amazon Redshift Clusters -// in the Amazon Redshift Cluster Management Guide . If you want to shut -// down the cluster and retain it for future use, set -// SkipFinalClusterSnapshot to false and specify a name for -// FinalClusterSnapshotIdentifier . You can later restore this snapshot to -// resume using the cluster. If a final cluster snapshot is requested, the -// status of the cluster will be "final-snapshot" while the snapshot is -// being taken, then it's "deleting" once Amazon Redshift begins deleting -// the cluster. For more information about managing clusters, go to Amazon -// Redshift Clusters in the Amazon Redshift Cluster Management Guide . -func (c *RedShift) DeleteCluster(req *DeleteClusterMessage) (resp *DeleteClusterResult, err error) { - resp = &DeleteClusterResult{} - err = c.client.Do("DeleteCluster", "POST", "/", req, resp) - return -} - -// DeleteClusterParameterGroup deletes a specified Amazon Redshift -// parameter group. You cannot delete a parameter group if it is associated -// with a cluster. -func (c *RedShift) DeleteClusterParameterGroup(req *DeleteClusterParameterGroupMessage) (err error) { - // NRE - err = c.client.Do("DeleteClusterParameterGroup", "POST", "/", req, nil) - return -} - -// DeleteClusterSecurityGroup deletes an Amazon Redshift security group. -// You cannot delete a security group that is associated with any clusters. -// You cannot delete the default security group. For information about -// managing security groups, go to Amazon Redshift Cluster Security Groups -// in the Amazon Redshift Cluster Management Guide . -func (c *RedShift) DeleteClusterSecurityGroup(req *DeleteClusterSecurityGroupMessage) (err error) { - // NRE - err = c.client.Do("DeleteClusterSecurityGroup", "POST", "/", req, nil) - return -} - -// DeleteClusterSnapshot deletes the specified manual snapshot. The -// snapshot must be in the available state, with no other users authorized -// to access the snapshot. Unlike automated snapshots, manual snapshots are -// retained even after you delete your cluster. Amazon Redshift does not -// delete your manual snapshots. You must delete manual snapshot explicitly -// to avoid getting charged. If other accounts are authorized to access the -// snapshot, you must revoke all of the authorizations before you can -// delete the snapshot. -func (c *RedShift) DeleteClusterSnapshot(req *DeleteClusterSnapshotMessage) (resp *DeleteClusterSnapshotResult, err error) { - resp = &DeleteClusterSnapshotResult{} - err = c.client.Do("DeleteClusterSnapshot", "POST", "/", req, resp) - return -} - -// DeleteClusterSubnetGroup is undocumented. -func (c *RedShift) DeleteClusterSubnetGroup(req *DeleteClusterSubnetGroupMessage) (err error) { - // NRE - err = c.client.Do("DeleteClusterSubnetGroup", "POST", "/", req, nil) - return -} - -// DeleteEventSubscription deletes an Amazon Redshift event notification -// subscription. -func (c *RedShift) DeleteEventSubscription(req *DeleteEventSubscriptionMessage) (err error) { - // NRE - err = c.client.Do("DeleteEventSubscription", "POST", "/", req, nil) - return -} - -// DeleteHSMClientCertificate is undocumented. -func (c *RedShift) DeleteHSMClientCertificate(req *DeleteHSMClientCertificateMessage) (err error) { - // NRE - err = c.client.Do("DeleteHsmClientCertificate", "POST", "/", req, nil) - return -} - -// DeleteHSMConfiguration deletes the specified Amazon Redshift HSM -// configuration. -func (c *RedShift) DeleteHSMConfiguration(req *DeleteHSMConfigurationMessage) (err error) { - // NRE - err = c.client.Do("DeleteHsmConfiguration", "POST", "/", req, nil) - return -} - -// DeleteTags deletes a tag or tags from a resource. You must provide the -// ARN of the resource from which you want to delete the tag or tags. -func (c *RedShift) DeleteTags(req *DeleteTagsMessage) (err error) { - // NRE - err = c.client.Do("DeleteTags", "POST", "/", req, nil) - return -} - -// DescribeClusterParameterGroups returns a list of Amazon Redshift -// parameter groups, including parameter groups you created and the default -// parameter group. For each parameter group, the response includes the -// parameter group name, description, and parameter group family name. You -// can optionally specify a name to retrieve the description of a specific -// parameter group. For more information about managing parameter groups, -// go to Amazon Redshift Parameter Groups in the Amazon Redshift Cluster -// Management Guide . If you specify both tag keys and tag values in the -// same request, Amazon Redshift returns all parameter groups that match -// any combination of the specified keys and values. For example, if you -// have owner and environment for tag keys, and admin and test for tag -// values, all parameter groups that have any combination of those values -// are returned. If both tag keys and values are omitted from the request, -// parameter groups are returned regardless of whether they have tag keys -// or values associated with them. -func (c *RedShift) DescribeClusterParameterGroups(req *DescribeClusterParameterGroupsMessage) (resp *DescribeClusterParameterGroupsResult, err error) { - resp = &DescribeClusterParameterGroupsResult{} - err = c.client.Do("DescribeClusterParameterGroups", "POST", "/", req, resp) - return -} - -// DescribeClusterParameters returns a detailed list of parameters -// contained within the specified Amazon Redshift parameter group. For each -// parameter the response includes information such as parameter name, -// description, data type, value, whether the parameter value is -// modifiable, and so on. You can specify source filter to retrieve -// parameters of only specific type. For example, to retrieve parameters -// that were modified by a user action such as from -// ModifyClusterParameterGroup , you can specify source equal to user For -// more information about managing parameter groups, go to Amazon Redshift -// Parameter Groups in the Amazon Redshift Cluster Management Guide . -func (c *RedShift) DescribeClusterParameters(req *DescribeClusterParametersMessage) (resp *DescribeClusterParametersResult, err error) { - resp = &DescribeClusterParametersResult{} - err = c.client.Do("DescribeClusterParameters", "POST", "/", req, resp) - return -} - -// DescribeClusterSecurityGroups returns information about Amazon Redshift -// security groups. If the name of a security group is specified, the -// response will contain only information about only that security group. -// For information about managing security groups, go to Amazon Redshift -// Cluster Security Groups in the Amazon Redshift Cluster Management Guide -// . If you specify both tag keys and tag values in the same request, -// Amazon Redshift returns all security groups that match any combination -// of the specified keys and values. For example, if you have owner and -// environment for tag keys, and admin and test for tag values, all -// security groups that have any combination of those values are returned. -// If both tag keys and values are omitted from the request, security -// groups are returned regardless of whether they have tag keys or values -// associated with them. -func (c *RedShift) DescribeClusterSecurityGroups(req *DescribeClusterSecurityGroupsMessage) (resp *DescribeClusterSecurityGroupsResult, err error) { - resp = &DescribeClusterSecurityGroupsResult{} - err = c.client.Do("DescribeClusterSecurityGroups", "POST", "/", req, resp) - return -} - -// DescribeClusterSnapshots returns one or more snapshot objects, which -// contain metadata about your cluster snapshots. By default, this -// operation returns information about all snapshots of all clusters that -// are owned by you AWS customer account. No information is returned for -// snapshots owned by inactive AWS customer accounts. If you specify both -// tag keys and tag values in the same request, Amazon Redshift returns all -// snapshots that match any combination of the specified keys and values. -// For example, if you have owner and environment for tag keys, and admin -// and test for tag values, all snapshots that have any combination of -// those values are returned. Only snapshots that you own are returned in -// the response; shared snapshots are not returned with the tag key and tag -// value request parameters. If both tag keys and values are omitted from -// the request, snapshots are returned regardless of whether they have tag -// keys or values associated with them. -func (c *RedShift) DescribeClusterSnapshots(req *DescribeClusterSnapshotsMessage) (resp *DescribeClusterSnapshotsResult, err error) { - resp = &DescribeClusterSnapshotsResult{} - err = c.client.Do("DescribeClusterSnapshots", "POST", "/", req, resp) - return -} - -// DescribeClusterSubnetGroups returns one or more cluster subnet group -// objects, which contain metadata about your cluster subnet groups. By -// default, this operation returns information about all cluster subnet -// groups that are defined in you AWS account. If you specify both tag keys -// and tag values in the same request, Amazon Redshift returns all subnet -// groups that match any combination of the specified keys and values. For -// example, if you have owner and environment for tag keys, and admin and -// test for tag values, all subnet groups that have any combination of -// those values are returned. If both tag keys and values are omitted from -// the request, subnet groups are returned regardless of whether they have -// tag keys or values associated with them. -func (c *RedShift) DescribeClusterSubnetGroups(req *DescribeClusterSubnetGroupsMessage) (resp *DescribeClusterSubnetGroupsResult, err error) { - resp = &DescribeClusterSubnetGroupsResult{} - err = c.client.Do("DescribeClusterSubnetGroups", "POST", "/", req, resp) - return -} - -// DescribeClusterVersions returns descriptions of the available Amazon -// Redshift cluster versions. You can call this operation even before -// creating any clusters to learn more about the Amazon Redshift versions. -// For more information about managing clusters, go to Amazon Redshift -// Clusters in the Amazon Redshift Cluster Management Guide -func (c *RedShift) DescribeClusterVersions(req *DescribeClusterVersionsMessage) (resp *DescribeClusterVersionsResult, err error) { - resp = &DescribeClusterVersionsResult{} - err = c.client.Do("DescribeClusterVersions", "POST", "/", req, resp) - return -} - -// DescribeClusters returns properties of provisioned clusters including -// general cluster properties, cluster database properties, maintenance and -// backup properties, and security and access properties. This operation -// supports pagination. For more information about managing clusters, go to -// Amazon Redshift Clusters in the Amazon Redshift Cluster Management Guide -// . If you specify both tag keys and tag values in the same request, -// Amazon Redshift returns all clusters that match any combination of the -// specified keys and values. For example, if you have owner and -// environment for tag keys, and admin and test for tag values, all -// clusters that have any combination of those values are returned. If both -// tag keys and values are omitted from the request, clusters are returned -// regardless of whether they have tag keys or values associated with them. -func (c *RedShift) DescribeClusters(req *DescribeClustersMessage) (resp *DescribeClustersResult, err error) { - resp = &DescribeClustersResult{} - err = c.client.Do("DescribeClusters", "POST", "/", req, resp) - return -} - -// DescribeDefaultClusterParameters returns a list of parameter settings -// for the specified parameter group family. For more information about -// managing parameter groups, go to Amazon Redshift Parameter Groups in the -// Amazon Redshift Cluster Management Guide . -func (c *RedShift) DescribeDefaultClusterParameters(req *DescribeDefaultClusterParametersMessage) (resp *DescribeDefaultClusterParametersResult, err error) { - resp = &DescribeDefaultClusterParametersResult{} - err = c.client.Do("DescribeDefaultClusterParameters", "POST", "/", req, resp) - return -} - -// DescribeEventCategories displays a list of event categories for all -// event source types, or for a specified source type. For a list of the -// event categories and source types, go to Amazon Redshift Event -// Notifications -func (c *RedShift) DescribeEventCategories(req *DescribeEventCategoriesMessage) (resp *DescribeEventCategoriesResult, err error) { - resp = &DescribeEventCategoriesResult{} - err = c.client.Do("DescribeEventCategories", "POST", "/", req, resp) - return -} - -// DescribeEventSubscriptions lists descriptions of all the Amazon Redshift -// event notifications subscription for a customer account. If you specify -// a subscription name, lists the description for that subscription. -func (c *RedShift) DescribeEventSubscriptions(req *DescribeEventSubscriptionsMessage) (resp *DescribeEventSubscriptionsResult, err error) { - resp = &DescribeEventSubscriptionsResult{} - err = c.client.Do("DescribeEventSubscriptions", "POST", "/", req, resp) - return -} - -// DescribeEvents returns events related to clusters, security groups, -// snapshots, and parameter groups for the past 14 days. Events specific to -// a particular cluster, security group, snapshot or parameter group can be -// obtained by providing the name as a parameter. By default, the past hour -// of events are returned. -func (c *RedShift) DescribeEvents(req *DescribeEventsMessage) (resp *DescribeEventsResult, err error) { - resp = &DescribeEventsResult{} - err = c.client.Do("DescribeEvents", "POST", "/", req, resp) - return -} - -// DescribeHSMClientCertificates returns information about the specified -// HSM client certificate. If no certificate ID is specified, returns -// information about all the HSM certificates owned by your AWS customer -// account. If you specify both tag keys and tag values in the same -// request, Amazon Redshift returns all HSM client certificates that match -// any combination of the specified keys and values. For example, if you -// have owner and environment for tag keys, and admin and test for tag -// values, all HSM client certificates that have any combination of those -// values are returned. If both tag keys and values are omitted from the -// request, HSM client certificates are returned regardless of whether they -// have tag keys or values associated with them. -func (c *RedShift) DescribeHSMClientCertificates(req *DescribeHSMClientCertificatesMessage) (resp *DescribeHSMClientCertificatesResult, err error) { - resp = &DescribeHSMClientCertificatesResult{} - err = c.client.Do("DescribeHsmClientCertificates", "POST", "/", req, resp) - return -} - -// DescribeHSMConfigurations returns information about the specified Amazon -// Redshift HSM configuration. If no configuration ID is specified, returns -// information about all the HSM configurations owned by your AWS customer -// account. If you specify both tag keys and tag values in the same -// request, Amazon Redshift returns all HSM connections that match any -// combination of the specified keys and values. For example, if you have -// owner and environment for tag keys, and admin and test for tag values, -// all HSM connections that have any combination of those values are -// returned. If both tag keys and values are omitted from the request, HSM -// connections are returned regardless of whether they have tag keys or -// values associated with them. -func (c *RedShift) DescribeHSMConfigurations(req *DescribeHSMConfigurationsMessage) (resp *DescribeHSMConfigurationsResult, err error) { - resp = &DescribeHSMConfigurationsResult{} - err = c.client.Do("DescribeHsmConfigurations", "POST", "/", req, resp) - return -} - -// DescribeLoggingStatus describes whether information, such as queries and -// connection attempts, is being logged for the specified Amazon Redshift -// cluster. -func (c *RedShift) DescribeLoggingStatus(req *DescribeLoggingStatusMessage) (resp *DescribeLoggingStatusResult, err error) { - resp = &DescribeLoggingStatusResult{} - err = c.client.Do("DescribeLoggingStatus", "POST", "/", req, resp) - return -} - -// DescribeOrderableClusterOptions returns a list of orderable cluster -// options. Before you create a new cluster you can use this operation to -// find what options are available, such as the EC2 Availability Zones in -// the specific AWS region that you can specify, and the node types you can -// request. The node types differ by available storage, memory, CPU and -// price. With the cost involved you might want to obtain a list of cluster -// options in the specific region and specify values when creating a -// cluster. For more information about managing clusters, go to Amazon -// Redshift Clusters in the Amazon Redshift Cluster Management Guide -func (c *RedShift) DescribeOrderableClusterOptions(req *DescribeOrderableClusterOptionsMessage) (resp *DescribeOrderableClusterOptionsResult, err error) { - resp = &DescribeOrderableClusterOptionsResult{} - err = c.client.Do("DescribeOrderableClusterOptions", "POST", "/", req, resp) - return -} - -// DescribeReservedNodeOfferings returns a list of the available reserved -// node offerings by Amazon Redshift with their descriptions including the -// node type, the fixed and recurring costs of reserving the node and -// duration the node will be reserved for you. These descriptions help you -// determine which reserve node offering you want to purchase. You then use -// the unique offering ID in you call to PurchaseReservedNodeOffering to -// reserve one or more nodes for your Amazon Redshift cluster. For more -// information about managing parameter groups, go to Purchasing Reserved -// Nodes in the Amazon Redshift Cluster Management Guide . -func (c *RedShift) DescribeReservedNodeOfferings(req *DescribeReservedNodeOfferingsMessage) (resp *DescribeReservedNodeOfferingsResult, err error) { - resp = &DescribeReservedNodeOfferingsResult{} - err = c.client.Do("DescribeReservedNodeOfferings", "POST", "/", req, resp) - return -} - -// DescribeReservedNodes is undocumented. -func (c *RedShift) DescribeReservedNodes(req *DescribeReservedNodesMessage) (resp *DescribeReservedNodesResult, err error) { - resp = &DescribeReservedNodesResult{} - err = c.client.Do("DescribeReservedNodes", "POST", "/", req, resp) - return -} - -// DescribeResize returns information about the last resize operation for -// the specified cluster. If no resize operation has ever been initiated -// for the specified cluster, a 404 error is returned. If a resize -// operation was initiated and completed, the status of the resize remains -// as until the next resize. A resize operation can be requested using -// ModifyCluster and specifying a different number or type of nodes for the -// cluster. -func (c *RedShift) DescribeResize(req *DescribeResizeMessage) (resp *DescribeResizeResult, err error) { - resp = &DescribeResizeResult{} - err = c.client.Do("DescribeResize", "POST", "/", req, resp) - return -} - -// DescribeTags returns a list of tags. You can return tags from a specific -// resource by specifying an or you can return all tags for a given type of -// resource, such as clusters, snapshots, and so on. The following are -// limitations for DescribeTags : You cannot specify an ARN and a -// resource-type value together in the same request. You cannot use the -// MaxRecords and Marker parameters together with the ARN parameter. The -// MaxRecords parameter can be a range from 10 to 50 results to return in a -// request. If you specify both tag keys and tag values in the same -// request, Amazon Redshift returns all resources that match any -// combination of the specified keys and values. For example, if you have -// owner and environment for tag keys, and admin and test for tag values, -// all resources that have any combination of those values are returned. If -// both tag keys and values are omitted from the request, resources are -// returned regardless of whether they have tag keys or values associated -// with them. -func (c *RedShift) DescribeTags(req *DescribeTagsMessage) (resp *DescribeTagsResult, err error) { - resp = &DescribeTagsResult{} - err = c.client.Do("DescribeTags", "POST", "/", req, resp) - return -} - -// DisableLogging stops logging information, such as queries and connection -// attempts, for the specified Amazon Redshift cluster. -func (c *RedShift) DisableLogging(req *DisableLoggingMessage) (resp *DisableLoggingResult, err error) { - resp = &DisableLoggingResult{} - err = c.client.Do("DisableLogging", "POST", "/", req, resp) - return -} - -// DisableSnapshotCopy disables the automatic copying of snapshots from one -// region to another region for a specified cluster. -func (c *RedShift) DisableSnapshotCopy(req *DisableSnapshotCopyMessage) (resp *DisableSnapshotCopyResult, err error) { - resp = &DisableSnapshotCopyResult{} - err = c.client.Do("DisableSnapshotCopy", "POST", "/", req, resp) - return -} - -// EnableLogging starts logging information, such as queries and connection -// attempts, for the specified Amazon Redshift cluster. -func (c *RedShift) EnableLogging(req *EnableLoggingMessage) (resp *EnableLoggingResult, err error) { - resp = &EnableLoggingResult{} - err = c.client.Do("EnableLogging", "POST", "/", req, resp) - return -} - -// EnableSnapshotCopy enables the automatic copy of snapshots from one -// region to another region for a specified cluster. -func (c *RedShift) EnableSnapshotCopy(req *EnableSnapshotCopyMessage) (resp *EnableSnapshotCopyResult, err error) { - resp = &EnableSnapshotCopyResult{} - err = c.client.Do("EnableSnapshotCopy", "POST", "/", req, resp) - return -} - -// ModifyCluster modifies the settings for a cluster. For example, you can -// add another security or parameter group, update the preferred -// maintenance window, or change the master user password. Resetting a -// cluster password or modifying the security groups associated with a -// cluster do not need a reboot. However, modifying a parameter group -// requires a reboot for parameters to take effect. For more information -// about managing clusters, go to Amazon Redshift Clusters in the Amazon -// Redshift Cluster Management Guide . You can also change node type and -// the number of nodes to scale up or down the cluster. When resizing a -// cluster, you must specify both the number of nodes and the node type -// even if one of the parameters does not change. -func (c *RedShift) ModifyCluster(req *ModifyClusterMessage) (resp *ModifyClusterResult, err error) { - resp = &ModifyClusterResult{} - err = c.client.Do("ModifyCluster", "POST", "/", req, resp) - return -} - -// ModifyClusterParameterGroup modifies the parameters of a parameter -// group. For more information about managing parameter groups, go to -// Amazon Redshift Parameter Groups in the Amazon Redshift Cluster -// Management Guide . -func (c *RedShift) ModifyClusterParameterGroup(req *ModifyClusterParameterGroupMessage) (resp *ModifyClusterParameterGroupResult, err error) { - resp = &ModifyClusterParameterGroupResult{} - err = c.client.Do("ModifyClusterParameterGroup", "POST", "/", req, resp) - return -} - -// ModifyClusterSubnetGroup modifies a cluster subnet group to include the -// specified list of VPC subnets. The operation replaces the existing list -// of subnets with the new list of subnets. -func (c *RedShift) ModifyClusterSubnetGroup(req *ModifyClusterSubnetGroupMessage) (resp *ModifyClusterSubnetGroupResult, err error) { - resp = &ModifyClusterSubnetGroupResult{} - err = c.client.Do("ModifyClusterSubnetGroup", "POST", "/", req, resp) - return -} - -// ModifyEventSubscription modifies an existing Amazon Redshift event -// notification subscription. -func (c *RedShift) ModifyEventSubscription(req *ModifyEventSubscriptionMessage) (resp *ModifyEventSubscriptionResult, err error) { - resp = &ModifyEventSubscriptionResult{} - err = c.client.Do("ModifyEventSubscription", "POST", "/", req, resp) - return -} - -// ModifySnapshotCopyRetentionPeriod modifies the number of days to retain -// automated snapshots in the destination region after they are copied from -// the source region. -func (c *RedShift) ModifySnapshotCopyRetentionPeriod(req *ModifySnapshotCopyRetentionPeriodMessage) (resp *ModifySnapshotCopyRetentionPeriodResult, err error) { - resp = &ModifySnapshotCopyRetentionPeriodResult{} - err = c.client.Do("ModifySnapshotCopyRetentionPeriod", "POST", "/", req, resp) - return -} - -// PurchaseReservedNodeOffering allows you to purchase reserved nodes. -// Amazon Redshift offers a predefined set of reserved node offerings. You -// can purchase one of the offerings. You can call the -// DescribeReservedNodeOfferings API to obtain the available reserved node -// offerings. You can call this API by providing a specific reserved node -// offering and the number of nodes you want to reserve. For more -// information about managing parameter groups, go to Purchasing Reserved -// Nodes in the Amazon Redshift Cluster Management Guide . -func (c *RedShift) PurchaseReservedNodeOffering(req *PurchaseReservedNodeOfferingMessage) (resp *PurchaseReservedNodeOfferingResult, err error) { - resp = &PurchaseReservedNodeOfferingResult{} - err = c.client.Do("PurchaseReservedNodeOffering", "POST", "/", req, resp) - return -} - -// RebootCluster reboots a cluster. This action is taken as soon as -// possible. It results in a momentary outage to the cluster, during which -// the cluster status is set to rebooting . A cluster event is created when -// the reboot is completed. Any pending cluster modifications (see -// ModifyCluster ) are applied at this reboot. For more information about -// managing clusters, go to Amazon Redshift Clusters in the Amazon Redshift -// Cluster Management Guide -func (c *RedShift) RebootCluster(req *RebootClusterMessage) (resp *RebootClusterResult, err error) { - resp = &RebootClusterResult{} - err = c.client.Do("RebootCluster", "POST", "/", req, resp) - return -} - -// ResetClusterParameterGroup sets one or more parameters of the specified -// parameter group to their default values and sets the source values of -// the parameters to "engine-default". To reset the entire parameter group -// specify the ResetAllParameters parameter. For parameter changes to take -// effect you must reboot any associated clusters. -func (c *RedShift) ResetClusterParameterGroup(req *ResetClusterParameterGroupMessage) (resp *ResetClusterParameterGroupResult, err error) { - resp = &ResetClusterParameterGroupResult{} - err = c.client.Do("ResetClusterParameterGroup", "POST", "/", req, resp) - return -} - -// RestoreFromClusterSnapshot creates a new cluster from a snapshot. Amazon -// Redshift creates the resulting cluster with the same configuration as -// the original cluster from which the snapshot was created, except that -// the new cluster is created with the default cluster security and -// parameter group. After Amazon Redshift creates the cluster you can use -// the ModifyCluster API to associate a different security group and -// different parameter group with the restored cluster. If you restore a -// cluster into a you must provide a cluster subnet group where you want -// the cluster restored. For more information about working with snapshots, -// go to Amazon Redshift Snapshots in the Amazon Redshift Cluster -// Management Guide . -func (c *RedShift) RestoreFromClusterSnapshot(req *RestoreFromClusterSnapshotMessage) (resp *RestoreFromClusterSnapshotResult, err error) { - resp = &RestoreFromClusterSnapshotResult{} - err = c.client.Do("RestoreFromClusterSnapshot", "POST", "/", req, resp) - return -} - -// RevokeClusterSecurityGroupIngress revokes an ingress rule in an Amazon -// Redshift security group for a previously authorized IP range or Amazon -// EC2 security group. To add an ingress rule, see -// AuthorizeClusterSecurityGroupIngress . For information about managing -// security groups, go to Amazon Redshift Cluster Security Groups in the -// Amazon Redshift Cluster Management Guide . -func (c *RedShift) RevokeClusterSecurityGroupIngress(req *RevokeClusterSecurityGroupIngressMessage) (resp *RevokeClusterSecurityGroupIngressResult, err error) { - resp = &RevokeClusterSecurityGroupIngressResult{} - err = c.client.Do("RevokeClusterSecurityGroupIngress", "POST", "/", req, resp) - return -} - -// RevokeSnapshotAccess removes the ability of the specified AWS customer -// account to restore the specified snapshot. If the account is currently -// restoring the snapshot, the restore will run to completion. For more -// information about working with snapshots, go to Amazon Redshift -// Snapshots in the Amazon Redshift Cluster Management Guide . -func (c *RedShift) RevokeSnapshotAccess(req *RevokeSnapshotAccessMessage) (resp *RevokeSnapshotAccessResult, err error) { - resp = &RevokeSnapshotAccessResult{} - err = c.client.Do("RevokeSnapshotAccess", "POST", "/", req, resp) - return -} - -// RotateEncryptionKey is undocumented. -func (c *RedShift) RotateEncryptionKey(req *RotateEncryptionKeyMessage) (resp *RotateEncryptionKeyResult, err error) { - resp = &RotateEncryptionKeyResult{} - err = c.client.Do("RotateEncryptionKey", "POST", "/", req, resp) - return -} - -// AccountWithRestoreAccess is undocumented. -type AccountWithRestoreAccess struct { - AccountID aws.StringValue `query:"AccountId" xml:"AccountId"` -} - -// AuthorizeClusterSecurityGroupIngressMessage is undocumented. -type AuthorizeClusterSecurityGroupIngressMessage struct { - CIDRIP aws.StringValue `query:"CIDRIP" xml:"CIDRIP"` - ClusterSecurityGroupName aws.StringValue `query:"ClusterSecurityGroupName" xml:"ClusterSecurityGroupName"` - EC2SecurityGroupName aws.StringValue `query:"EC2SecurityGroupName" xml:"EC2SecurityGroupName"` - EC2SecurityGroupOwnerID aws.StringValue `query:"EC2SecurityGroupOwnerId" xml:"EC2SecurityGroupOwnerId"` -} - -// AuthorizeClusterSecurityGroupIngressResult is undocumented. -type AuthorizeClusterSecurityGroupIngressResult struct { - ClusterSecurityGroup *ClusterSecurityGroup `query:"ClusterSecurityGroup" xml:"AuthorizeClusterSecurityGroupIngressResult>ClusterSecurityGroup"` -} - -// AuthorizeSnapshotAccessMessage is undocumented. -type AuthorizeSnapshotAccessMessage struct { - AccountWithRestoreAccess aws.StringValue `query:"AccountWithRestoreAccess" xml:"AccountWithRestoreAccess"` - SnapshotClusterIdentifier aws.StringValue `query:"SnapshotClusterIdentifier" xml:"SnapshotClusterIdentifier"` - SnapshotIdentifier aws.StringValue `query:"SnapshotIdentifier" xml:"SnapshotIdentifier"` -} - -// AuthorizeSnapshotAccessResult is undocumented. -type AuthorizeSnapshotAccessResult struct { - Snapshot *Snapshot `query:"Snapshot" xml:"AuthorizeSnapshotAccessResult>Snapshot"` -} - -// AvailabilityZone is undocumented. -type AvailabilityZone struct { - Name aws.StringValue `query:"Name" xml:"Name"` -} - -// Cluster is undocumented. -type Cluster struct { - AllowVersionUpgrade aws.BooleanValue `query:"AllowVersionUpgrade" xml:"AllowVersionUpgrade"` - AutomatedSnapshotRetentionPeriod aws.IntegerValue `query:"AutomatedSnapshotRetentionPeriod" xml:"AutomatedSnapshotRetentionPeriod"` - AvailabilityZone aws.StringValue `query:"AvailabilityZone" xml:"AvailabilityZone"` - ClusterCreateTime time.Time `query:"ClusterCreateTime" xml:"ClusterCreateTime"` - ClusterIdentifier aws.StringValue `query:"ClusterIdentifier" xml:"ClusterIdentifier"` - ClusterNodes []ClusterNode `query:"ClusterNodes.member" xml:"ClusterNodes>member"` - ClusterParameterGroups []ClusterParameterGroupStatus `query:"ClusterParameterGroups.member" xml:"ClusterParameterGroups>ClusterParameterGroup"` - ClusterPublicKey aws.StringValue `query:"ClusterPublicKey" xml:"ClusterPublicKey"` - ClusterRevisionNumber aws.StringValue `query:"ClusterRevisionNumber" xml:"ClusterRevisionNumber"` - ClusterSecurityGroups []ClusterSecurityGroupMembership `query:"ClusterSecurityGroups.member" xml:"ClusterSecurityGroups>ClusterSecurityGroup"` - ClusterSnapshotCopyStatus *ClusterSnapshotCopyStatus `query:"ClusterSnapshotCopyStatus" xml:"ClusterSnapshotCopyStatus"` - ClusterStatus aws.StringValue `query:"ClusterStatus" xml:"ClusterStatus"` - ClusterSubnetGroupName aws.StringValue `query:"ClusterSubnetGroupName" xml:"ClusterSubnetGroupName"` - ClusterVersion aws.StringValue `query:"ClusterVersion" xml:"ClusterVersion"` - DBName aws.StringValue `query:"DBName" xml:"DBName"` - ElasticIPStatus *ElasticIPStatus `query:"ElasticIpStatus" xml:"ElasticIpStatus"` - Encrypted aws.BooleanValue `query:"Encrypted" xml:"Encrypted"` - Endpoint *Endpoint `query:"Endpoint" xml:"Endpoint"` - HSMStatus *HSMStatus `query:"HsmStatus" xml:"HsmStatus"` - KMSKeyID aws.StringValue `query:"KmsKeyId" xml:"KmsKeyId"` - MasterUsername aws.StringValue `query:"MasterUsername" xml:"MasterUsername"` - ModifyStatus aws.StringValue `query:"ModifyStatus" xml:"ModifyStatus"` - NodeType aws.StringValue `query:"NodeType" xml:"NodeType"` - NumberOfNodes aws.IntegerValue `query:"NumberOfNodes" xml:"NumberOfNodes"` - PendingModifiedValues *PendingModifiedValues `query:"PendingModifiedValues" xml:"PendingModifiedValues"` - PreferredMaintenanceWindow aws.StringValue `query:"PreferredMaintenanceWindow" xml:"PreferredMaintenanceWindow"` - PubliclyAccessible aws.BooleanValue `query:"PubliclyAccessible" xml:"PubliclyAccessible"` - RestoreStatus *RestoreStatus `query:"RestoreStatus" xml:"RestoreStatus"` - Tags []Tag `query:"Tags.member" xml:"Tags>Tag"` - VPCID aws.StringValue `query:"VpcId" xml:"VpcId"` - VPCSecurityGroups []VPCSecurityGroupMembership `query:"VpcSecurityGroups.member" xml:"VpcSecurityGroups>VpcSecurityGroup"` -} - -// ClusterNode is undocumented. -type ClusterNode struct { - NodeRole aws.StringValue `query:"NodeRole" xml:"NodeRole"` - PrivateIPAddress aws.StringValue `query:"PrivateIPAddress" xml:"PrivateIPAddress"` - PublicIPAddress aws.StringValue `query:"PublicIPAddress" xml:"PublicIPAddress"` -} - -// ClusterParameterGroup is undocumented. -type ClusterParameterGroup struct { - Description aws.StringValue `query:"Description" xml:"Description"` - ParameterGroupFamily aws.StringValue `query:"ParameterGroupFamily" xml:"ParameterGroupFamily"` - ParameterGroupName aws.StringValue `query:"ParameterGroupName" xml:"ParameterGroupName"` - Tags []Tag `query:"Tags.member" xml:"Tags>Tag"` -} - -// ClusterParameterGroupDetails is undocumented. -type ClusterParameterGroupDetails struct { - Marker aws.StringValue `query:"Marker" xml:"DescribeClusterParametersResult>Marker"` - Parameters []Parameter `query:"Parameters.member" xml:"DescribeClusterParametersResult>Parameters>Parameter"` -} - -// ClusterParameterGroupNameMessage is undocumented. -type ClusterParameterGroupNameMessage struct { - ParameterGroupName aws.StringValue `query:"ParameterGroupName" xml:"ParameterGroupName"` - ParameterGroupStatus aws.StringValue `query:"ParameterGroupStatus" xml:"ParameterGroupStatus"` -} - -// ClusterParameterGroupStatus is undocumented. -type ClusterParameterGroupStatus struct { - ParameterApplyStatus aws.StringValue `query:"ParameterApplyStatus" xml:"ParameterApplyStatus"` - ParameterGroupName aws.StringValue `query:"ParameterGroupName" xml:"ParameterGroupName"` -} - -// ClusterParameterGroupsMessage is undocumented. -type ClusterParameterGroupsMessage struct { - Marker aws.StringValue `query:"Marker" xml:"DescribeClusterParameterGroupsResult>Marker"` - ParameterGroups []ClusterParameterGroup `query:"ParameterGroups.member" xml:"DescribeClusterParameterGroupsResult>ParameterGroups>ClusterParameterGroup"` -} - -// ClusterSecurityGroup is undocumented. -type ClusterSecurityGroup struct { - ClusterSecurityGroupName aws.StringValue `query:"ClusterSecurityGroupName" xml:"ClusterSecurityGroupName"` - Description aws.StringValue `query:"Description" xml:"Description"` - EC2SecurityGroups []EC2SecurityGroup `query:"EC2SecurityGroups.member" xml:"EC2SecurityGroups>EC2SecurityGroup"` - IPRanges []IPRange `query:"IPRanges.member" xml:"IPRanges>IPRange"` - Tags []Tag `query:"Tags.member" xml:"Tags>Tag"` -} - -// ClusterSecurityGroupMembership is undocumented. -type ClusterSecurityGroupMembership struct { - ClusterSecurityGroupName aws.StringValue `query:"ClusterSecurityGroupName" xml:"ClusterSecurityGroupName"` - Status aws.StringValue `query:"Status" xml:"Status"` -} - -// ClusterSecurityGroupMessage is undocumented. -type ClusterSecurityGroupMessage struct { - ClusterSecurityGroups []ClusterSecurityGroup `query:"ClusterSecurityGroups.member" xml:"DescribeClusterSecurityGroupsResult>ClusterSecurityGroups>ClusterSecurityGroup"` - Marker aws.StringValue `query:"Marker" xml:"DescribeClusterSecurityGroupsResult>Marker"` -} - -// ClusterSnapshotCopyStatus is undocumented. -type ClusterSnapshotCopyStatus struct { - DestinationRegion aws.StringValue `query:"DestinationRegion" xml:"DestinationRegion"` - RetentionPeriod aws.LongValue `query:"RetentionPeriod" xml:"RetentionPeriod"` -} - -// ClusterSubnetGroup is undocumented. -type ClusterSubnetGroup struct { - ClusterSubnetGroupName aws.StringValue `query:"ClusterSubnetGroupName" xml:"ClusterSubnetGroupName"` - Description aws.StringValue `query:"Description" xml:"Description"` - SubnetGroupStatus aws.StringValue `query:"SubnetGroupStatus" xml:"SubnetGroupStatus"` - Subnets []Subnet `query:"Subnets.member" xml:"Subnets>Subnet"` - Tags []Tag `query:"Tags.member" xml:"Tags>Tag"` - VPCID aws.StringValue `query:"VpcId" xml:"VpcId"` -} - -// ClusterSubnetGroupMessage is undocumented. -type ClusterSubnetGroupMessage struct { - ClusterSubnetGroups []ClusterSubnetGroup `query:"ClusterSubnetGroups.member" xml:"DescribeClusterSubnetGroupsResult>ClusterSubnetGroups>ClusterSubnetGroup"` - Marker aws.StringValue `query:"Marker" xml:"DescribeClusterSubnetGroupsResult>Marker"` -} - -// ClusterVersion is undocumented. -type ClusterVersion struct { - ClusterParameterGroupFamily aws.StringValue `query:"ClusterParameterGroupFamily" xml:"ClusterParameterGroupFamily"` - ClusterVersion aws.StringValue `query:"ClusterVersion" xml:"ClusterVersion"` - Description aws.StringValue `query:"Description" xml:"Description"` -} - -// ClusterVersionsMessage is undocumented. -type ClusterVersionsMessage struct { - ClusterVersions []ClusterVersion `query:"ClusterVersions.member" xml:"DescribeClusterVersionsResult>ClusterVersions>ClusterVersion"` - Marker aws.StringValue `query:"Marker" xml:"DescribeClusterVersionsResult>Marker"` -} - -// ClustersMessage is undocumented. -type ClustersMessage struct { - Clusters []Cluster `query:"Clusters.member" xml:"DescribeClustersResult>Clusters>Cluster"` - Marker aws.StringValue `query:"Marker" xml:"DescribeClustersResult>Marker"` -} - -// CopyClusterSnapshotMessage is undocumented. -type CopyClusterSnapshotMessage struct { - SourceSnapshotClusterIdentifier aws.StringValue `query:"SourceSnapshotClusterIdentifier" xml:"SourceSnapshotClusterIdentifier"` - SourceSnapshotIdentifier aws.StringValue `query:"SourceSnapshotIdentifier" xml:"SourceSnapshotIdentifier"` - TargetSnapshotIdentifier aws.StringValue `query:"TargetSnapshotIdentifier" xml:"TargetSnapshotIdentifier"` -} - -// CopyClusterSnapshotResult is undocumented. -type CopyClusterSnapshotResult struct { - Snapshot *Snapshot `query:"Snapshot" xml:"CopyClusterSnapshotResult>Snapshot"` -} - -// CreateClusterMessage is undocumented. -type CreateClusterMessage struct { - AllowVersionUpgrade aws.BooleanValue `query:"AllowVersionUpgrade" xml:"AllowVersionUpgrade"` - AutomatedSnapshotRetentionPeriod aws.IntegerValue `query:"AutomatedSnapshotRetentionPeriod" xml:"AutomatedSnapshotRetentionPeriod"` - AvailabilityZone aws.StringValue `query:"AvailabilityZone" xml:"AvailabilityZone"` - ClusterIdentifier aws.StringValue `query:"ClusterIdentifier" xml:"ClusterIdentifier"` - ClusterParameterGroupName aws.StringValue `query:"ClusterParameterGroupName" xml:"ClusterParameterGroupName"` - ClusterSecurityGroups []string `query:"ClusterSecurityGroups.member" xml:"ClusterSecurityGroups>ClusterSecurityGroupName"` - ClusterSubnetGroupName aws.StringValue `query:"ClusterSubnetGroupName" xml:"ClusterSubnetGroupName"` - ClusterType aws.StringValue `query:"ClusterType" xml:"ClusterType"` - ClusterVersion aws.StringValue `query:"ClusterVersion" xml:"ClusterVersion"` - DBName aws.StringValue `query:"DBName" xml:"DBName"` - ElasticIP aws.StringValue `query:"ElasticIp" xml:"ElasticIp"` - Encrypted aws.BooleanValue `query:"Encrypted" xml:"Encrypted"` - HSMClientCertificateIdentifier aws.StringValue `query:"HsmClientCertificateIdentifier" xml:"HsmClientCertificateIdentifier"` - HSMConfigurationIdentifier aws.StringValue `query:"HsmConfigurationIdentifier" xml:"HsmConfigurationIdentifier"` - KMSKeyID aws.StringValue `query:"KmsKeyId" xml:"KmsKeyId"` - MasterUserPassword aws.StringValue `query:"MasterUserPassword" xml:"MasterUserPassword"` - MasterUsername aws.StringValue `query:"MasterUsername" xml:"MasterUsername"` - NodeType aws.StringValue `query:"NodeType" xml:"NodeType"` - NumberOfNodes aws.IntegerValue `query:"NumberOfNodes" xml:"NumberOfNodes"` - Port aws.IntegerValue `query:"Port" xml:"Port"` - PreferredMaintenanceWindow aws.StringValue `query:"PreferredMaintenanceWindow" xml:"PreferredMaintenanceWindow"` - PubliclyAccessible aws.BooleanValue `query:"PubliclyAccessible" xml:"PubliclyAccessible"` - Tags []Tag `query:"Tags.member" xml:"Tags>Tag"` - VPCSecurityGroupIDs []string `query:"VpcSecurityGroupIds.member" xml:"VpcSecurityGroupIds>VpcSecurityGroupId"` -} - -// CreateClusterParameterGroupMessage is undocumented. -type CreateClusterParameterGroupMessage struct { - Description aws.StringValue `query:"Description" xml:"Description"` - ParameterGroupFamily aws.StringValue `query:"ParameterGroupFamily" xml:"ParameterGroupFamily"` - ParameterGroupName aws.StringValue `query:"ParameterGroupName" xml:"ParameterGroupName"` - Tags []Tag `query:"Tags.member" xml:"Tags>Tag"` -} - -// CreateClusterParameterGroupResult is undocumented. -type CreateClusterParameterGroupResult struct { - ClusterParameterGroup *ClusterParameterGroup `query:"ClusterParameterGroup" xml:"CreateClusterParameterGroupResult>ClusterParameterGroup"` -} - -// CreateClusterResult is undocumented. -type CreateClusterResult struct { - Cluster *Cluster `query:"Cluster" xml:"CreateClusterResult>Cluster"` -} - -// CreateClusterSecurityGroupMessage is undocumented. -type CreateClusterSecurityGroupMessage struct { - ClusterSecurityGroupName aws.StringValue `query:"ClusterSecurityGroupName" xml:"ClusterSecurityGroupName"` - Description aws.StringValue `query:"Description" xml:"Description"` - Tags []Tag `query:"Tags.member" xml:"Tags>Tag"` -} - -// CreateClusterSecurityGroupResult is undocumented. -type CreateClusterSecurityGroupResult struct { - ClusterSecurityGroup *ClusterSecurityGroup `query:"ClusterSecurityGroup" xml:"CreateClusterSecurityGroupResult>ClusterSecurityGroup"` -} - -// CreateClusterSnapshotMessage is undocumented. -type CreateClusterSnapshotMessage struct { - ClusterIdentifier aws.StringValue `query:"ClusterIdentifier" xml:"ClusterIdentifier"` - SnapshotIdentifier aws.StringValue `query:"SnapshotIdentifier" xml:"SnapshotIdentifier"` - Tags []Tag `query:"Tags.member" xml:"Tags>Tag"` -} - -// CreateClusterSnapshotResult is undocumented. -type CreateClusterSnapshotResult struct { - Snapshot *Snapshot `query:"Snapshot" xml:"CreateClusterSnapshotResult>Snapshot"` -} - -// CreateClusterSubnetGroupMessage is undocumented. -type CreateClusterSubnetGroupMessage struct { - ClusterSubnetGroupName aws.StringValue `query:"ClusterSubnetGroupName" xml:"ClusterSubnetGroupName"` - Description aws.StringValue `query:"Description" xml:"Description"` - SubnetIDs []string `query:"SubnetIds.member" xml:"SubnetIds>SubnetIdentifier"` - Tags []Tag `query:"Tags.member" xml:"Tags>Tag"` -} - -// CreateClusterSubnetGroupResult is undocumented. -type CreateClusterSubnetGroupResult struct { - ClusterSubnetGroup *ClusterSubnetGroup `query:"ClusterSubnetGroup" xml:"CreateClusterSubnetGroupResult>ClusterSubnetGroup"` -} - -// CreateEventSubscriptionMessage is undocumented. -type CreateEventSubscriptionMessage struct { - Enabled aws.BooleanValue `query:"Enabled" xml:"Enabled"` - EventCategories []string `query:"EventCategories.member" xml:"EventCategories>EventCategory"` - Severity aws.StringValue `query:"Severity" xml:"Severity"` - SNSTopicARN aws.StringValue `query:"SnsTopicArn" xml:"SnsTopicArn"` - SourceIDs []string `query:"SourceIds.member" xml:"SourceIds>SourceId"` - SourceType aws.StringValue `query:"SourceType" xml:"SourceType"` - SubscriptionName aws.StringValue `query:"SubscriptionName" xml:"SubscriptionName"` - Tags []Tag `query:"Tags.member" xml:"Tags>Tag"` -} - -// CreateEventSubscriptionResult is undocumented. -type CreateEventSubscriptionResult struct { - EventSubscription *EventSubscription `query:"EventSubscription" xml:"CreateEventSubscriptionResult>EventSubscription"` -} - -// CreateHSMClientCertificateMessage is undocumented. -type CreateHSMClientCertificateMessage struct { - HSMClientCertificateIdentifier aws.StringValue `query:"HsmClientCertificateIdentifier" xml:"HsmClientCertificateIdentifier"` - Tags []Tag `query:"Tags.member" xml:"Tags>Tag"` -} - -// CreateHSMClientCertificateResult is undocumented. -type CreateHSMClientCertificateResult struct { - HSMClientCertificate *HSMClientCertificate `query:"HsmClientCertificate" xml:"CreateHsmClientCertificateResult>HsmClientCertificate"` -} - -// CreateHSMConfigurationMessage is undocumented. -type CreateHSMConfigurationMessage struct { - Description aws.StringValue `query:"Description" xml:"Description"` - HSMConfigurationIdentifier aws.StringValue `query:"HsmConfigurationIdentifier" xml:"HsmConfigurationIdentifier"` - HSMIPAddress aws.StringValue `query:"HsmIpAddress" xml:"HsmIpAddress"` - HSMPartitionName aws.StringValue `query:"HsmPartitionName" xml:"HsmPartitionName"` - HSMPartitionPassword aws.StringValue `query:"HsmPartitionPassword" xml:"HsmPartitionPassword"` - HSMServerPublicCertificate aws.StringValue `query:"HsmServerPublicCertificate" xml:"HsmServerPublicCertificate"` - Tags []Tag `query:"Tags.member" xml:"Tags>Tag"` -} - -// CreateHSMConfigurationResult is undocumented. -type CreateHSMConfigurationResult struct { - HSMConfiguration *HSMConfiguration `query:"HsmConfiguration" xml:"CreateHsmConfigurationResult>HsmConfiguration"` -} - -// CreateTagsMessage is undocumented. -type CreateTagsMessage struct { - ResourceName aws.StringValue `query:"ResourceName" xml:"ResourceName"` - Tags []Tag `query:"Tags.member" xml:"Tags>Tag"` -} - -// DefaultClusterParameters is undocumented. -type DefaultClusterParameters struct { - Marker aws.StringValue `query:"Marker" xml:"Marker"` - ParameterGroupFamily aws.StringValue `query:"ParameterGroupFamily" xml:"ParameterGroupFamily"` - Parameters []Parameter `query:"Parameters.member" xml:"Parameters>Parameter"` -} - -// DeleteClusterMessage is undocumented. -type DeleteClusterMessage struct { - ClusterIdentifier aws.StringValue `query:"ClusterIdentifier" xml:"ClusterIdentifier"` - FinalClusterSnapshotIdentifier aws.StringValue `query:"FinalClusterSnapshotIdentifier" xml:"FinalClusterSnapshotIdentifier"` - SkipFinalClusterSnapshot aws.BooleanValue `query:"SkipFinalClusterSnapshot" xml:"SkipFinalClusterSnapshot"` -} - -// DeleteClusterParameterGroupMessage is undocumented. -type DeleteClusterParameterGroupMessage struct { - ParameterGroupName aws.StringValue `query:"ParameterGroupName" xml:"ParameterGroupName"` -} - -// DeleteClusterResult is undocumented. -type DeleteClusterResult struct { - Cluster *Cluster `query:"Cluster" xml:"DeleteClusterResult>Cluster"` -} - -// DeleteClusterSecurityGroupMessage is undocumented. -type DeleteClusterSecurityGroupMessage struct { - ClusterSecurityGroupName aws.StringValue `query:"ClusterSecurityGroupName" xml:"ClusterSecurityGroupName"` -} - -// DeleteClusterSnapshotMessage is undocumented. -type DeleteClusterSnapshotMessage struct { - SnapshotClusterIdentifier aws.StringValue `query:"SnapshotClusterIdentifier" xml:"SnapshotClusterIdentifier"` - SnapshotIdentifier aws.StringValue `query:"SnapshotIdentifier" xml:"SnapshotIdentifier"` -} - -// DeleteClusterSnapshotResult is undocumented. -type DeleteClusterSnapshotResult struct { - Snapshot *Snapshot `query:"Snapshot" xml:"DeleteClusterSnapshotResult>Snapshot"` -} - -// DeleteClusterSubnetGroupMessage is undocumented. -type DeleteClusterSubnetGroupMessage struct { - ClusterSubnetGroupName aws.StringValue `query:"ClusterSubnetGroupName" xml:"ClusterSubnetGroupName"` -} - -// DeleteEventSubscriptionMessage is undocumented. -type DeleteEventSubscriptionMessage struct { - SubscriptionName aws.StringValue `query:"SubscriptionName" xml:"SubscriptionName"` -} - -// DeleteHSMClientCertificateMessage is undocumented. -type DeleteHSMClientCertificateMessage struct { - HSMClientCertificateIdentifier aws.StringValue `query:"HsmClientCertificateIdentifier" xml:"HsmClientCertificateIdentifier"` -} - -// DeleteHSMConfigurationMessage is undocumented. -type DeleteHSMConfigurationMessage struct { - HSMConfigurationIdentifier aws.StringValue `query:"HsmConfigurationIdentifier" xml:"HsmConfigurationIdentifier"` -} - -// DeleteTagsMessage is undocumented. -type DeleteTagsMessage struct { - ResourceName aws.StringValue `query:"ResourceName" xml:"ResourceName"` - TagKeys []string `query:"TagKeys.member" xml:"TagKeys>TagKey"` -} - -// DescribeClusterParameterGroupsMessage is undocumented. -type DescribeClusterParameterGroupsMessage struct { - Marker aws.StringValue `query:"Marker" xml:"Marker"` - MaxRecords aws.IntegerValue `query:"MaxRecords" xml:"MaxRecords"` - ParameterGroupName aws.StringValue `query:"ParameterGroupName" xml:"ParameterGroupName"` - TagKeys []string `query:"TagKeys.member" xml:"TagKeys>TagKey"` - TagValues []string `query:"TagValues.member" xml:"TagValues>TagValue"` -} - -// DescribeClusterParametersMessage is undocumented. -type DescribeClusterParametersMessage struct { - Marker aws.StringValue `query:"Marker" xml:"Marker"` - MaxRecords aws.IntegerValue `query:"MaxRecords" xml:"MaxRecords"` - ParameterGroupName aws.StringValue `query:"ParameterGroupName" xml:"ParameterGroupName"` - Source aws.StringValue `query:"Source" xml:"Source"` -} - -// DescribeClusterSecurityGroupsMessage is undocumented. -type DescribeClusterSecurityGroupsMessage struct { - ClusterSecurityGroupName aws.StringValue `query:"ClusterSecurityGroupName" xml:"ClusterSecurityGroupName"` - Marker aws.StringValue `query:"Marker" xml:"Marker"` - MaxRecords aws.IntegerValue `query:"MaxRecords" xml:"MaxRecords"` - TagKeys []string `query:"TagKeys.member" xml:"TagKeys>TagKey"` - TagValues []string `query:"TagValues.member" xml:"TagValues>TagValue"` -} - -// DescribeClusterSnapshotsMessage is undocumented. -type DescribeClusterSnapshotsMessage struct { - ClusterIdentifier aws.StringValue `query:"ClusterIdentifier" xml:"ClusterIdentifier"` - EndTime time.Time `query:"EndTime" xml:"EndTime"` - Marker aws.StringValue `query:"Marker" xml:"Marker"` - MaxRecords aws.IntegerValue `query:"MaxRecords" xml:"MaxRecords"` - OwnerAccount aws.StringValue `query:"OwnerAccount" xml:"OwnerAccount"` - SnapshotIdentifier aws.StringValue `query:"SnapshotIdentifier" xml:"SnapshotIdentifier"` - SnapshotType aws.StringValue `query:"SnapshotType" xml:"SnapshotType"` - StartTime time.Time `query:"StartTime" xml:"StartTime"` - TagKeys []string `query:"TagKeys.member" xml:"TagKeys>TagKey"` - TagValues []string `query:"TagValues.member" xml:"TagValues>TagValue"` -} - -// DescribeClusterSubnetGroupsMessage is undocumented. -type DescribeClusterSubnetGroupsMessage struct { - ClusterSubnetGroupName aws.StringValue `query:"ClusterSubnetGroupName" xml:"ClusterSubnetGroupName"` - Marker aws.StringValue `query:"Marker" xml:"Marker"` - MaxRecords aws.IntegerValue `query:"MaxRecords" xml:"MaxRecords"` - TagKeys []string `query:"TagKeys.member" xml:"TagKeys>TagKey"` - TagValues []string `query:"TagValues.member" xml:"TagValues>TagValue"` -} - -// DescribeClusterVersionsMessage is undocumented. -type DescribeClusterVersionsMessage struct { - ClusterParameterGroupFamily aws.StringValue `query:"ClusterParameterGroupFamily" xml:"ClusterParameterGroupFamily"` - ClusterVersion aws.StringValue `query:"ClusterVersion" xml:"ClusterVersion"` - Marker aws.StringValue `query:"Marker" xml:"Marker"` - MaxRecords aws.IntegerValue `query:"MaxRecords" xml:"MaxRecords"` -} - -// DescribeClustersMessage is undocumented. -type DescribeClustersMessage struct { - ClusterIdentifier aws.StringValue `query:"ClusterIdentifier" xml:"ClusterIdentifier"` - Marker aws.StringValue `query:"Marker" xml:"Marker"` - MaxRecords aws.IntegerValue `query:"MaxRecords" xml:"MaxRecords"` - TagKeys []string `query:"TagKeys.member" xml:"TagKeys>TagKey"` - TagValues []string `query:"TagValues.member" xml:"TagValues>TagValue"` -} - -// DescribeDefaultClusterParametersMessage is undocumented. -type DescribeDefaultClusterParametersMessage struct { - Marker aws.StringValue `query:"Marker" xml:"Marker"` - MaxRecords aws.IntegerValue `query:"MaxRecords" xml:"MaxRecords"` - ParameterGroupFamily aws.StringValue `query:"ParameterGroupFamily" xml:"ParameterGroupFamily"` -} - -// DescribeDefaultClusterParametersResult is undocumented. -type DescribeDefaultClusterParametersResult struct { - DefaultClusterParameters *DefaultClusterParameters `query:"DefaultClusterParameters" xml:"DescribeDefaultClusterParametersResult>DefaultClusterParameters"` -} - -// DescribeEventCategoriesMessage is undocumented. -type DescribeEventCategoriesMessage struct { - SourceType aws.StringValue `query:"SourceType" xml:"SourceType"` -} - -// DescribeEventSubscriptionsMessage is undocumented. -type DescribeEventSubscriptionsMessage struct { - Marker aws.StringValue `query:"Marker" xml:"Marker"` - MaxRecords aws.IntegerValue `query:"MaxRecords" xml:"MaxRecords"` - SubscriptionName aws.StringValue `query:"SubscriptionName" xml:"SubscriptionName"` -} - -// DescribeEventsMessage is undocumented. -type DescribeEventsMessage struct { - Duration aws.IntegerValue `query:"Duration" xml:"Duration"` - EndTime time.Time `query:"EndTime" xml:"EndTime"` - Marker aws.StringValue `query:"Marker" xml:"Marker"` - MaxRecords aws.IntegerValue `query:"MaxRecords" xml:"MaxRecords"` - SourceIdentifier aws.StringValue `query:"SourceIdentifier" xml:"SourceIdentifier"` - SourceType aws.StringValue `query:"SourceType" xml:"SourceType"` - StartTime time.Time `query:"StartTime" xml:"StartTime"` -} - -// DescribeHSMClientCertificatesMessage is undocumented. -type DescribeHSMClientCertificatesMessage struct { - HSMClientCertificateIdentifier aws.StringValue `query:"HsmClientCertificateIdentifier" xml:"HsmClientCertificateIdentifier"` - Marker aws.StringValue `query:"Marker" xml:"Marker"` - MaxRecords aws.IntegerValue `query:"MaxRecords" xml:"MaxRecords"` - TagKeys []string `query:"TagKeys.member" xml:"TagKeys>TagKey"` - TagValues []string `query:"TagValues.member" xml:"TagValues>TagValue"` -} - -// DescribeHSMConfigurationsMessage is undocumented. -type DescribeHSMConfigurationsMessage struct { - HSMConfigurationIdentifier aws.StringValue `query:"HsmConfigurationIdentifier" xml:"HsmConfigurationIdentifier"` - Marker aws.StringValue `query:"Marker" xml:"Marker"` - MaxRecords aws.IntegerValue `query:"MaxRecords" xml:"MaxRecords"` - TagKeys []string `query:"TagKeys.member" xml:"TagKeys>TagKey"` - TagValues []string `query:"TagValues.member" xml:"TagValues>TagValue"` -} - -// DescribeLoggingStatusMessage is undocumented. -type DescribeLoggingStatusMessage struct { - ClusterIdentifier aws.StringValue `query:"ClusterIdentifier" xml:"ClusterIdentifier"` -} - -// DescribeOrderableClusterOptionsMessage is undocumented. -type DescribeOrderableClusterOptionsMessage struct { - ClusterVersion aws.StringValue `query:"ClusterVersion" xml:"ClusterVersion"` - Marker aws.StringValue `query:"Marker" xml:"Marker"` - MaxRecords aws.IntegerValue `query:"MaxRecords" xml:"MaxRecords"` - NodeType aws.StringValue `query:"NodeType" xml:"NodeType"` -} - -// DescribeReservedNodeOfferingsMessage is undocumented. -type DescribeReservedNodeOfferingsMessage struct { - Marker aws.StringValue `query:"Marker" xml:"Marker"` - MaxRecords aws.IntegerValue `query:"MaxRecords" xml:"MaxRecords"` - ReservedNodeOfferingID aws.StringValue `query:"ReservedNodeOfferingId" xml:"ReservedNodeOfferingId"` -} - -// DescribeReservedNodesMessage is undocumented. -type DescribeReservedNodesMessage struct { - Marker aws.StringValue `query:"Marker" xml:"Marker"` - MaxRecords aws.IntegerValue `query:"MaxRecords" xml:"MaxRecords"` - ReservedNodeID aws.StringValue `query:"ReservedNodeId" xml:"ReservedNodeId"` -} - -// DescribeResizeMessage is undocumented. -type DescribeResizeMessage struct { - ClusterIdentifier aws.StringValue `query:"ClusterIdentifier" xml:"ClusterIdentifier"` -} - -// DescribeTagsMessage is undocumented. -type DescribeTagsMessage struct { - Marker aws.StringValue `query:"Marker" xml:"Marker"` - MaxRecords aws.IntegerValue `query:"MaxRecords" xml:"MaxRecords"` - ResourceName aws.StringValue `query:"ResourceName" xml:"ResourceName"` - ResourceType aws.StringValue `query:"ResourceType" xml:"ResourceType"` - TagKeys []string `query:"TagKeys.member" xml:"TagKeys>TagKey"` - TagValues []string `query:"TagValues.member" xml:"TagValues>TagValue"` -} - -// DisableLoggingMessage is undocumented. -type DisableLoggingMessage struct { - ClusterIdentifier aws.StringValue `query:"ClusterIdentifier" xml:"ClusterIdentifier"` -} - -// DisableSnapshotCopyMessage is undocumented. -type DisableSnapshotCopyMessage struct { - ClusterIdentifier aws.StringValue `query:"ClusterIdentifier" xml:"ClusterIdentifier"` -} - -// DisableSnapshotCopyResult is undocumented. -type DisableSnapshotCopyResult struct { - Cluster *Cluster `query:"Cluster" xml:"DisableSnapshotCopyResult>Cluster"` -} - -// EC2SecurityGroup is undocumented. -type EC2SecurityGroup struct { - EC2SecurityGroupName aws.StringValue `query:"EC2SecurityGroupName" xml:"EC2SecurityGroupName"` - EC2SecurityGroupOwnerID aws.StringValue `query:"EC2SecurityGroupOwnerId" xml:"EC2SecurityGroupOwnerId"` - Status aws.StringValue `query:"Status" xml:"Status"` - Tags []Tag `query:"Tags.member" xml:"Tags>Tag"` -} - -// ElasticIPStatus is undocumented. -type ElasticIPStatus struct { - ElasticIP aws.StringValue `query:"ElasticIp" xml:"ElasticIp"` - Status aws.StringValue `query:"Status" xml:"Status"` -} - -// EnableLoggingMessage is undocumented. -type EnableLoggingMessage struct { - BucketName aws.StringValue `query:"BucketName" xml:"BucketName"` - ClusterIdentifier aws.StringValue `query:"ClusterIdentifier" xml:"ClusterIdentifier"` - S3KeyPrefix aws.StringValue `query:"S3KeyPrefix" xml:"S3KeyPrefix"` -} - -// EnableSnapshotCopyMessage is undocumented. -type EnableSnapshotCopyMessage struct { - ClusterIdentifier aws.StringValue `query:"ClusterIdentifier" xml:"ClusterIdentifier"` - DestinationRegion aws.StringValue `query:"DestinationRegion" xml:"DestinationRegion"` - RetentionPeriod aws.IntegerValue `query:"RetentionPeriod" xml:"RetentionPeriod"` -} - -// EnableSnapshotCopyResult is undocumented. -type EnableSnapshotCopyResult struct { - Cluster *Cluster `query:"Cluster" xml:"EnableSnapshotCopyResult>Cluster"` -} - -// Endpoint is undocumented. -type Endpoint struct { - Address aws.StringValue `query:"Address" xml:"Address"` - Port aws.IntegerValue `query:"Port" xml:"Port"` -} - -// Event is undocumented. -type Event struct { - Date time.Time `query:"Date" xml:"Date"` - EventCategories []string `query:"EventCategories.member" xml:"EventCategories>EventCategory"` - EventID aws.StringValue `query:"EventId" xml:"EventId"` - Message aws.StringValue `query:"Message" xml:"Message"` - Severity aws.StringValue `query:"Severity" xml:"Severity"` - SourceIdentifier aws.StringValue `query:"SourceIdentifier" xml:"SourceIdentifier"` - SourceType aws.StringValue `query:"SourceType" xml:"SourceType"` -} - -// EventCategoriesMap is undocumented. -type EventCategoriesMap struct { - Events []EventInfoMap `query:"Events.member" xml:"Events>EventInfoMap"` - SourceType aws.StringValue `query:"SourceType" xml:"SourceType"` -} - -// EventCategoriesMessage is undocumented. -type EventCategoriesMessage struct { - EventCategoriesMapList []EventCategoriesMap `query:"EventCategoriesMapList.member" xml:"DescribeEventCategoriesResult>EventCategoriesMapList>EventCategoriesMap"` -} - -// EventInfoMap is undocumented. -type EventInfoMap struct { - EventCategories []string `query:"EventCategories.member" xml:"EventCategories>EventCategory"` - EventDescription aws.StringValue `query:"EventDescription" xml:"EventDescription"` - EventID aws.StringValue `query:"EventId" xml:"EventId"` - Severity aws.StringValue `query:"Severity" xml:"Severity"` -} - -// EventSubscription is undocumented. -type EventSubscription struct { - CustSubscriptionID aws.StringValue `query:"CustSubscriptionId" xml:"CustSubscriptionId"` - CustomerAWSID aws.StringValue `query:"CustomerAwsId" xml:"CustomerAwsId"` - Enabled aws.BooleanValue `query:"Enabled" xml:"Enabled"` - EventCategoriesList []string `query:"EventCategoriesList.member" xml:"EventCategoriesList>EventCategory"` - Severity aws.StringValue `query:"Severity" xml:"Severity"` - SNSTopicARN aws.StringValue `query:"SnsTopicArn" xml:"SnsTopicArn"` - SourceIDsList []string `query:"SourceIdsList.member" xml:"SourceIdsList>SourceId"` - SourceType aws.StringValue `query:"SourceType" xml:"SourceType"` - Status aws.StringValue `query:"Status" xml:"Status"` - SubscriptionCreationTime time.Time `query:"SubscriptionCreationTime" xml:"SubscriptionCreationTime"` - Tags []Tag `query:"Tags.member" xml:"Tags>Tag"` -} - -// EventSubscriptionsMessage is undocumented. -type EventSubscriptionsMessage struct { - EventSubscriptionsList []EventSubscription `query:"EventSubscriptionsList.member" xml:"DescribeEventSubscriptionsResult>EventSubscriptionsList>EventSubscription"` - Marker aws.StringValue `query:"Marker" xml:"DescribeEventSubscriptionsResult>Marker"` -} - -// EventsMessage is undocumented. -type EventsMessage struct { - Events []Event `query:"Events.member" xml:"DescribeEventsResult>Events>Event"` - Marker aws.StringValue `query:"Marker" xml:"DescribeEventsResult>Marker"` -} - -// HSMClientCertificate is undocumented. -type HSMClientCertificate struct { - HSMClientCertificateIdentifier aws.StringValue `query:"HsmClientCertificateIdentifier" xml:"HsmClientCertificateIdentifier"` - HSMClientCertificatePublicKey aws.StringValue `query:"HsmClientCertificatePublicKey" xml:"HsmClientCertificatePublicKey"` - Tags []Tag `query:"Tags.member" xml:"Tags>Tag"` -} - -// HSMClientCertificateMessage is undocumented. -type HSMClientCertificateMessage struct { - HSMClientCertificates []HSMClientCertificate `query:"HsmClientCertificates.member" xml:"DescribeHsmClientCertificatesResult>HsmClientCertificates>HsmClientCertificate"` - Marker aws.StringValue `query:"Marker" xml:"DescribeHsmClientCertificatesResult>Marker"` -} - -// HSMConfiguration is undocumented. -type HSMConfiguration struct { - Description aws.StringValue `query:"Description" xml:"Description"` - HSMConfigurationIdentifier aws.StringValue `query:"HsmConfigurationIdentifier" xml:"HsmConfigurationIdentifier"` - HSMIPAddress aws.StringValue `query:"HsmIpAddress" xml:"HsmIpAddress"` - HSMPartitionName aws.StringValue `query:"HsmPartitionName" xml:"HsmPartitionName"` - Tags []Tag `query:"Tags.member" xml:"Tags>Tag"` -} - -// HSMConfigurationMessage is undocumented. -type HSMConfigurationMessage struct { - HSMConfigurations []HSMConfiguration `query:"HsmConfigurations.member" xml:"DescribeHsmConfigurationsResult>HsmConfigurations>HsmConfiguration"` - Marker aws.StringValue `query:"Marker" xml:"DescribeHsmConfigurationsResult>Marker"` -} - -// HSMStatus is undocumented. -type HSMStatus struct { - HSMClientCertificateIdentifier aws.StringValue `query:"HsmClientCertificateIdentifier" xml:"HsmClientCertificateIdentifier"` - HSMConfigurationIdentifier aws.StringValue `query:"HsmConfigurationIdentifier" xml:"HsmConfigurationIdentifier"` - Status aws.StringValue `query:"Status" xml:"Status"` -} - -// IPRange is undocumented. -type IPRange struct { - CIDRIP aws.StringValue `query:"CIDRIP" xml:"CIDRIP"` - Status aws.StringValue `query:"Status" xml:"Status"` - Tags []Tag `query:"Tags.member" xml:"Tags>Tag"` -} - -// LoggingStatus is undocumented. -type LoggingStatus struct { - BucketName aws.StringValue `query:"BucketName" xml:"BucketName"` - LastFailureMessage aws.StringValue `query:"LastFailureMessage" xml:"LastFailureMessage"` - LastFailureTime time.Time `query:"LastFailureTime" xml:"LastFailureTime"` - LastSuccessfulDeliveryTime time.Time `query:"LastSuccessfulDeliveryTime" xml:"LastSuccessfulDeliveryTime"` - LoggingEnabled aws.BooleanValue `query:"LoggingEnabled" xml:"LoggingEnabled"` - S3KeyPrefix aws.StringValue `query:"S3KeyPrefix" xml:"S3KeyPrefix"` -} - -// ModifyClusterMessage is undocumented. -type ModifyClusterMessage struct { - AllowVersionUpgrade aws.BooleanValue `query:"AllowVersionUpgrade" xml:"AllowVersionUpgrade"` - AutomatedSnapshotRetentionPeriod aws.IntegerValue `query:"AutomatedSnapshotRetentionPeriod" xml:"AutomatedSnapshotRetentionPeriod"` - ClusterIdentifier aws.StringValue `query:"ClusterIdentifier" xml:"ClusterIdentifier"` - ClusterParameterGroupName aws.StringValue `query:"ClusterParameterGroupName" xml:"ClusterParameterGroupName"` - ClusterSecurityGroups []string `query:"ClusterSecurityGroups.member" xml:"ClusterSecurityGroups>ClusterSecurityGroupName"` - ClusterType aws.StringValue `query:"ClusterType" xml:"ClusterType"` - ClusterVersion aws.StringValue `query:"ClusterVersion" xml:"ClusterVersion"` - HSMClientCertificateIdentifier aws.StringValue `query:"HsmClientCertificateIdentifier" xml:"HsmClientCertificateIdentifier"` - HSMConfigurationIdentifier aws.StringValue `query:"HsmConfigurationIdentifier" xml:"HsmConfigurationIdentifier"` - MasterUserPassword aws.StringValue `query:"MasterUserPassword" xml:"MasterUserPassword"` - NewClusterIdentifier aws.StringValue `query:"NewClusterIdentifier" xml:"NewClusterIdentifier"` - NodeType aws.StringValue `query:"NodeType" xml:"NodeType"` - NumberOfNodes aws.IntegerValue `query:"NumberOfNodes" xml:"NumberOfNodes"` - PreferredMaintenanceWindow aws.StringValue `query:"PreferredMaintenanceWindow" xml:"PreferredMaintenanceWindow"` - VPCSecurityGroupIDs []string `query:"VpcSecurityGroupIds.member" xml:"VpcSecurityGroupIds>VpcSecurityGroupId"` -} - -// ModifyClusterParameterGroupMessage is undocumented. -type ModifyClusterParameterGroupMessage struct { - ParameterGroupName aws.StringValue `query:"ParameterGroupName" xml:"ParameterGroupName"` - Parameters []Parameter `query:"Parameters.member" xml:"Parameters>Parameter"` -} - -// ModifyClusterResult is undocumented. -type ModifyClusterResult struct { - Cluster *Cluster `query:"Cluster" xml:"ModifyClusterResult>Cluster"` -} - -// ModifyClusterSubnetGroupMessage is undocumented. -type ModifyClusterSubnetGroupMessage struct { - ClusterSubnetGroupName aws.StringValue `query:"ClusterSubnetGroupName" xml:"ClusterSubnetGroupName"` - Description aws.StringValue `query:"Description" xml:"Description"` - SubnetIDs []string `query:"SubnetIds.member" xml:"SubnetIds>SubnetIdentifier"` -} - -// ModifyClusterSubnetGroupResult is undocumented. -type ModifyClusterSubnetGroupResult struct { - ClusterSubnetGroup *ClusterSubnetGroup `query:"ClusterSubnetGroup" xml:"ModifyClusterSubnetGroupResult>ClusterSubnetGroup"` -} - -// ModifyEventSubscriptionMessage is undocumented. -type ModifyEventSubscriptionMessage struct { - Enabled aws.BooleanValue `query:"Enabled" xml:"Enabled"` - EventCategories []string `query:"EventCategories.member" xml:"EventCategories>EventCategory"` - Severity aws.StringValue `query:"Severity" xml:"Severity"` - SNSTopicARN aws.StringValue `query:"SnsTopicArn" xml:"SnsTopicArn"` - SourceIDs []string `query:"SourceIds.member" xml:"SourceIds>SourceId"` - SourceType aws.StringValue `query:"SourceType" xml:"SourceType"` - SubscriptionName aws.StringValue `query:"SubscriptionName" xml:"SubscriptionName"` -} - -// ModifyEventSubscriptionResult is undocumented. -type ModifyEventSubscriptionResult struct { - EventSubscription *EventSubscription `query:"EventSubscription" xml:"ModifyEventSubscriptionResult>EventSubscription"` -} - -// ModifySnapshotCopyRetentionPeriodMessage is undocumented. -type ModifySnapshotCopyRetentionPeriodMessage struct { - ClusterIdentifier aws.StringValue `query:"ClusterIdentifier" xml:"ClusterIdentifier"` - RetentionPeriod aws.IntegerValue `query:"RetentionPeriod" xml:"RetentionPeriod"` -} - -// ModifySnapshotCopyRetentionPeriodResult is undocumented. -type ModifySnapshotCopyRetentionPeriodResult struct { - Cluster *Cluster `query:"Cluster" xml:"ModifySnapshotCopyRetentionPeriodResult>Cluster"` -} - -// OrderableClusterOption is undocumented. -type OrderableClusterOption struct { - AvailabilityZones []AvailabilityZone `query:"AvailabilityZones.member" xml:"AvailabilityZones>AvailabilityZone"` - ClusterType aws.StringValue `query:"ClusterType" xml:"ClusterType"` - ClusterVersion aws.StringValue `query:"ClusterVersion" xml:"ClusterVersion"` - NodeType aws.StringValue `query:"NodeType" xml:"NodeType"` -} - -// OrderableClusterOptionsMessage is undocumented. -type OrderableClusterOptionsMessage struct { - Marker aws.StringValue `query:"Marker" xml:"DescribeOrderableClusterOptionsResult>Marker"` - OrderableClusterOptions []OrderableClusterOption `query:"OrderableClusterOptions.member" xml:"DescribeOrderableClusterOptionsResult>OrderableClusterOptions>OrderableClusterOption"` -} - -// Parameter is undocumented. -type Parameter struct { - AllowedValues aws.StringValue `query:"AllowedValues" xml:"AllowedValues"` - DataType aws.StringValue `query:"DataType" xml:"DataType"` - Description aws.StringValue `query:"Description" xml:"Description"` - IsModifiable aws.BooleanValue `query:"IsModifiable" xml:"IsModifiable"` - MinimumEngineVersion aws.StringValue `query:"MinimumEngineVersion" xml:"MinimumEngineVersion"` - ParameterName aws.StringValue `query:"ParameterName" xml:"ParameterName"` - ParameterValue aws.StringValue `query:"ParameterValue" xml:"ParameterValue"` - Source aws.StringValue `query:"Source" xml:"Source"` -} - -// PendingModifiedValues is undocumented. -type PendingModifiedValues struct { - AutomatedSnapshotRetentionPeriod aws.IntegerValue `query:"AutomatedSnapshotRetentionPeriod" xml:"AutomatedSnapshotRetentionPeriod"` - ClusterIdentifier aws.StringValue `query:"ClusterIdentifier" xml:"ClusterIdentifier"` - ClusterType aws.StringValue `query:"ClusterType" xml:"ClusterType"` - ClusterVersion aws.StringValue `query:"ClusterVersion" xml:"ClusterVersion"` - MasterUserPassword aws.StringValue `query:"MasterUserPassword" xml:"MasterUserPassword"` - NodeType aws.StringValue `query:"NodeType" xml:"NodeType"` - NumberOfNodes aws.IntegerValue `query:"NumberOfNodes" xml:"NumberOfNodes"` -} - -// PurchaseReservedNodeOfferingMessage is undocumented. -type PurchaseReservedNodeOfferingMessage struct { - NodeCount aws.IntegerValue `query:"NodeCount" xml:"NodeCount"` - ReservedNodeOfferingID aws.StringValue `query:"ReservedNodeOfferingId" xml:"ReservedNodeOfferingId"` -} - -// PurchaseReservedNodeOfferingResult is undocumented. -type PurchaseReservedNodeOfferingResult struct { - ReservedNode *ReservedNode `query:"ReservedNode" xml:"PurchaseReservedNodeOfferingResult>ReservedNode"` -} - -// RebootClusterMessage is undocumented. -type RebootClusterMessage struct { - ClusterIdentifier aws.StringValue `query:"ClusterIdentifier" xml:"ClusterIdentifier"` -} - -// RebootClusterResult is undocumented. -type RebootClusterResult struct { - Cluster *Cluster `query:"Cluster" xml:"RebootClusterResult>Cluster"` -} - -// RecurringCharge is undocumented. -type RecurringCharge struct { - RecurringChargeAmount aws.DoubleValue `query:"RecurringChargeAmount" xml:"RecurringChargeAmount"` - RecurringChargeFrequency aws.StringValue `query:"RecurringChargeFrequency" xml:"RecurringChargeFrequency"` -} - -// ReservedNode is undocumented. -type ReservedNode struct { - CurrencyCode aws.StringValue `query:"CurrencyCode" xml:"CurrencyCode"` - Duration aws.IntegerValue `query:"Duration" xml:"Duration"` - FixedPrice aws.DoubleValue `query:"FixedPrice" xml:"FixedPrice"` - NodeCount aws.IntegerValue `query:"NodeCount" xml:"NodeCount"` - NodeType aws.StringValue `query:"NodeType" xml:"NodeType"` - OfferingType aws.StringValue `query:"OfferingType" xml:"OfferingType"` - RecurringCharges []RecurringCharge `query:"RecurringCharges.member" xml:"RecurringCharges>RecurringCharge"` - ReservedNodeID aws.StringValue `query:"ReservedNodeId" xml:"ReservedNodeId"` - ReservedNodeOfferingID aws.StringValue `query:"ReservedNodeOfferingId" xml:"ReservedNodeOfferingId"` - StartTime time.Time `query:"StartTime" xml:"StartTime"` - State aws.StringValue `query:"State" xml:"State"` - UsagePrice aws.DoubleValue `query:"UsagePrice" xml:"UsagePrice"` -} - -// ReservedNodeOffering is undocumented. -type ReservedNodeOffering struct { - CurrencyCode aws.StringValue `query:"CurrencyCode" xml:"CurrencyCode"` - Duration aws.IntegerValue `query:"Duration" xml:"Duration"` - FixedPrice aws.DoubleValue `query:"FixedPrice" xml:"FixedPrice"` - NodeType aws.StringValue `query:"NodeType" xml:"NodeType"` - OfferingType aws.StringValue `query:"OfferingType" xml:"OfferingType"` - RecurringCharges []RecurringCharge `query:"RecurringCharges.member" xml:"RecurringCharges>RecurringCharge"` - ReservedNodeOfferingID aws.StringValue `query:"ReservedNodeOfferingId" xml:"ReservedNodeOfferingId"` - UsagePrice aws.DoubleValue `query:"UsagePrice" xml:"UsagePrice"` -} - -// ReservedNodeOfferingsMessage is undocumented. -type ReservedNodeOfferingsMessage struct { - Marker aws.StringValue `query:"Marker" xml:"DescribeReservedNodeOfferingsResult>Marker"` - ReservedNodeOfferings []ReservedNodeOffering `query:"ReservedNodeOfferings.member" xml:"DescribeReservedNodeOfferingsResult>ReservedNodeOfferings>ReservedNodeOffering"` -} - -// ReservedNodesMessage is undocumented. -type ReservedNodesMessage struct { - Marker aws.StringValue `query:"Marker" xml:"DescribeReservedNodesResult>Marker"` - ReservedNodes []ReservedNode `query:"ReservedNodes.member" xml:"DescribeReservedNodesResult>ReservedNodes>ReservedNode"` -} - -// ResetClusterParameterGroupMessage is undocumented. -type ResetClusterParameterGroupMessage struct { - ParameterGroupName aws.StringValue `query:"ParameterGroupName" xml:"ParameterGroupName"` - Parameters []Parameter `query:"Parameters.member" xml:"Parameters>Parameter"` - ResetAllParameters aws.BooleanValue `query:"ResetAllParameters" xml:"ResetAllParameters"` -} - -// ResizeProgressMessage is undocumented. -type ResizeProgressMessage struct { - AvgResizeRateInMegaBytesPerSecond aws.DoubleValue `query:"AvgResizeRateInMegaBytesPerSecond" xml:"DescribeResizeResult>AvgResizeRateInMegaBytesPerSecond"` - ElapsedTimeInSeconds aws.LongValue `query:"ElapsedTimeInSeconds" xml:"DescribeResizeResult>ElapsedTimeInSeconds"` - EstimatedTimeToCompletionInSeconds aws.LongValue `query:"EstimatedTimeToCompletionInSeconds" xml:"DescribeResizeResult>EstimatedTimeToCompletionInSeconds"` - ImportTablesCompleted []string `query:"ImportTablesCompleted.member" xml:"DescribeResizeResult>ImportTablesCompleted>member"` - ImportTablesInProgress []string `query:"ImportTablesInProgress.member" xml:"DescribeResizeResult>ImportTablesInProgress>member"` - ImportTablesNotStarted []string `query:"ImportTablesNotStarted.member" xml:"DescribeResizeResult>ImportTablesNotStarted>member"` - ProgressInMegaBytes aws.LongValue `query:"ProgressInMegaBytes" xml:"DescribeResizeResult>ProgressInMegaBytes"` - Status aws.StringValue `query:"Status" xml:"DescribeResizeResult>Status"` - TargetClusterType aws.StringValue `query:"TargetClusterType" xml:"DescribeResizeResult>TargetClusterType"` - TargetNodeType aws.StringValue `query:"TargetNodeType" xml:"DescribeResizeResult>TargetNodeType"` - TargetNumberOfNodes aws.IntegerValue `query:"TargetNumberOfNodes" xml:"DescribeResizeResult>TargetNumberOfNodes"` - TotalResizeDataInMegaBytes aws.LongValue `query:"TotalResizeDataInMegaBytes" xml:"DescribeResizeResult>TotalResizeDataInMegaBytes"` -} - -// RestoreFromClusterSnapshotMessage is undocumented. -type RestoreFromClusterSnapshotMessage struct { - AllowVersionUpgrade aws.BooleanValue `query:"AllowVersionUpgrade" xml:"AllowVersionUpgrade"` - AutomatedSnapshotRetentionPeriod aws.IntegerValue `query:"AutomatedSnapshotRetentionPeriod" xml:"AutomatedSnapshotRetentionPeriod"` - AvailabilityZone aws.StringValue `query:"AvailabilityZone" xml:"AvailabilityZone"` - ClusterIdentifier aws.StringValue `query:"ClusterIdentifier" xml:"ClusterIdentifier"` - ClusterParameterGroupName aws.StringValue `query:"ClusterParameterGroupName" xml:"ClusterParameterGroupName"` - ClusterSecurityGroups []string `query:"ClusterSecurityGroups.member" xml:"ClusterSecurityGroups>ClusterSecurityGroupName"` - ClusterSubnetGroupName aws.StringValue `query:"ClusterSubnetGroupName" xml:"ClusterSubnetGroupName"` - ElasticIP aws.StringValue `query:"ElasticIp" xml:"ElasticIp"` - HSMClientCertificateIdentifier aws.StringValue `query:"HsmClientCertificateIdentifier" xml:"HsmClientCertificateIdentifier"` - HSMConfigurationIdentifier aws.StringValue `query:"HsmConfigurationIdentifier" xml:"HsmConfigurationIdentifier"` - KMSKeyID aws.StringValue `query:"KmsKeyId" xml:"KmsKeyId"` - OwnerAccount aws.StringValue `query:"OwnerAccount" xml:"OwnerAccount"` - Port aws.IntegerValue `query:"Port" xml:"Port"` - PreferredMaintenanceWindow aws.StringValue `query:"PreferredMaintenanceWindow" xml:"PreferredMaintenanceWindow"` - PubliclyAccessible aws.BooleanValue `query:"PubliclyAccessible" xml:"PubliclyAccessible"` - SnapshotClusterIdentifier aws.StringValue `query:"SnapshotClusterIdentifier" xml:"SnapshotClusterIdentifier"` - SnapshotIdentifier aws.StringValue `query:"SnapshotIdentifier" xml:"SnapshotIdentifier"` - VPCSecurityGroupIDs []string `query:"VpcSecurityGroupIds.member" xml:"VpcSecurityGroupIds>VpcSecurityGroupId"` -} - -// RestoreFromClusterSnapshotResult is undocumented. -type RestoreFromClusterSnapshotResult struct { - Cluster *Cluster `query:"Cluster" xml:"RestoreFromClusterSnapshotResult>Cluster"` -} - -// RestoreStatus is undocumented. -type RestoreStatus struct { - CurrentRestoreRateInMegaBytesPerSecond aws.DoubleValue `query:"CurrentRestoreRateInMegaBytesPerSecond" xml:"CurrentRestoreRateInMegaBytesPerSecond"` - ElapsedTimeInSeconds aws.LongValue `query:"ElapsedTimeInSeconds" xml:"ElapsedTimeInSeconds"` - EstimatedTimeToCompletionInSeconds aws.LongValue `query:"EstimatedTimeToCompletionInSeconds" xml:"EstimatedTimeToCompletionInSeconds"` - ProgressInMegaBytes aws.LongValue `query:"ProgressInMegaBytes" xml:"ProgressInMegaBytes"` - SnapshotSizeInMegaBytes aws.LongValue `query:"SnapshotSizeInMegaBytes" xml:"SnapshotSizeInMegaBytes"` - Status aws.StringValue `query:"Status" xml:"Status"` -} - -// RevokeClusterSecurityGroupIngressMessage is undocumented. -type RevokeClusterSecurityGroupIngressMessage struct { - CIDRIP aws.StringValue `query:"CIDRIP" xml:"CIDRIP"` - ClusterSecurityGroupName aws.StringValue `query:"ClusterSecurityGroupName" xml:"ClusterSecurityGroupName"` - EC2SecurityGroupName aws.StringValue `query:"EC2SecurityGroupName" xml:"EC2SecurityGroupName"` - EC2SecurityGroupOwnerID aws.StringValue `query:"EC2SecurityGroupOwnerId" xml:"EC2SecurityGroupOwnerId"` -} - -// RevokeClusterSecurityGroupIngressResult is undocumented. -type RevokeClusterSecurityGroupIngressResult struct { - ClusterSecurityGroup *ClusterSecurityGroup `query:"ClusterSecurityGroup" xml:"RevokeClusterSecurityGroupIngressResult>ClusterSecurityGroup"` -} - -// RevokeSnapshotAccessMessage is undocumented. -type RevokeSnapshotAccessMessage struct { - AccountWithRestoreAccess aws.StringValue `query:"AccountWithRestoreAccess" xml:"AccountWithRestoreAccess"` - SnapshotClusterIdentifier aws.StringValue `query:"SnapshotClusterIdentifier" xml:"SnapshotClusterIdentifier"` - SnapshotIdentifier aws.StringValue `query:"SnapshotIdentifier" xml:"SnapshotIdentifier"` -} - -// RevokeSnapshotAccessResult is undocumented. -type RevokeSnapshotAccessResult struct { - Snapshot *Snapshot `query:"Snapshot" xml:"RevokeSnapshotAccessResult>Snapshot"` -} - -// RotateEncryptionKeyMessage is undocumented. -type RotateEncryptionKeyMessage struct { - ClusterIdentifier aws.StringValue `query:"ClusterIdentifier" xml:"ClusterIdentifier"` -} - -// RotateEncryptionKeyResult is undocumented. -type RotateEncryptionKeyResult struct { - Cluster *Cluster `query:"Cluster" xml:"RotateEncryptionKeyResult>Cluster"` -} - -// Snapshot is undocumented. -type Snapshot struct { - AccountsWithRestoreAccess []AccountWithRestoreAccess `query:"AccountsWithRestoreAccess.member" xml:"AccountsWithRestoreAccess>AccountWithRestoreAccess"` - ActualIncrementalBackupSizeInMegaBytes aws.DoubleValue `query:"ActualIncrementalBackupSizeInMegaBytes" xml:"ActualIncrementalBackupSizeInMegaBytes"` - AvailabilityZone aws.StringValue `query:"AvailabilityZone" xml:"AvailabilityZone"` - BackupProgressInMegaBytes aws.DoubleValue `query:"BackupProgressInMegaBytes" xml:"BackupProgressInMegaBytes"` - ClusterCreateTime time.Time `query:"ClusterCreateTime" xml:"ClusterCreateTime"` - ClusterIdentifier aws.StringValue `query:"ClusterIdentifier" xml:"ClusterIdentifier"` - ClusterVersion aws.StringValue `query:"ClusterVersion" xml:"ClusterVersion"` - CurrentBackupRateInMegaBytesPerSecond aws.DoubleValue `query:"CurrentBackupRateInMegaBytesPerSecond" xml:"CurrentBackupRateInMegaBytesPerSecond"` - DBName aws.StringValue `query:"DBName" xml:"DBName"` - ElapsedTimeInSeconds aws.LongValue `query:"ElapsedTimeInSeconds" xml:"ElapsedTimeInSeconds"` - Encrypted aws.BooleanValue `query:"Encrypted" xml:"Encrypted"` - EncryptedWithHSM aws.BooleanValue `query:"EncryptedWithHSM" xml:"EncryptedWithHSM"` - EstimatedSecondsToCompletion aws.LongValue `query:"EstimatedSecondsToCompletion" xml:"EstimatedSecondsToCompletion"` - KMSKeyID aws.StringValue `query:"KmsKeyId" xml:"KmsKeyId"` - MasterUsername aws.StringValue `query:"MasterUsername" xml:"MasterUsername"` - NodeType aws.StringValue `query:"NodeType" xml:"NodeType"` - NumberOfNodes aws.IntegerValue `query:"NumberOfNodes" xml:"NumberOfNodes"` - OwnerAccount aws.StringValue `query:"OwnerAccount" xml:"OwnerAccount"` - Port aws.IntegerValue `query:"Port" xml:"Port"` - SnapshotCreateTime time.Time `query:"SnapshotCreateTime" xml:"SnapshotCreateTime"` - SnapshotIdentifier aws.StringValue `query:"SnapshotIdentifier" xml:"SnapshotIdentifier"` - SnapshotType aws.StringValue `query:"SnapshotType" xml:"SnapshotType"` - SourceRegion aws.StringValue `query:"SourceRegion" xml:"SourceRegion"` - Status aws.StringValue `query:"Status" xml:"Status"` - Tags []Tag `query:"Tags.member" xml:"Tags>Tag"` - TotalBackupSizeInMegaBytes aws.DoubleValue `query:"TotalBackupSizeInMegaBytes" xml:"TotalBackupSizeInMegaBytes"` - VPCID aws.StringValue `query:"VpcId" xml:"VpcId"` -} - -// SnapshotMessage is undocumented. -type SnapshotMessage struct { - Marker aws.StringValue `query:"Marker" xml:"DescribeClusterSnapshotsResult>Marker"` - Snapshots []Snapshot `query:"Snapshots.member" xml:"DescribeClusterSnapshotsResult>Snapshots>Snapshot"` -} - -// Possible values for RedShift. -const ( - SourceTypeCluster = "cluster" - SourceTypeClusterParameterGroup = "cluster-parameter-group" - SourceTypeClusterSecurityGroup = "cluster-security-group" - SourceTypeClusterSnapshot = "cluster-snapshot" -) - -// Subnet is undocumented. -type Subnet struct { - SubnetAvailabilityZone *AvailabilityZone `query:"SubnetAvailabilityZone" xml:"SubnetAvailabilityZone"` - SubnetIdentifier aws.StringValue `query:"SubnetIdentifier" xml:"SubnetIdentifier"` - SubnetStatus aws.StringValue `query:"SubnetStatus" xml:"SubnetStatus"` -} - -// Tag is undocumented. -type Tag struct { - Key aws.StringValue `query:"Key" xml:"Key"` - Value aws.StringValue `query:"Value" xml:"Value"` -} - -// TaggedResource is undocumented. -type TaggedResource struct { - ResourceName aws.StringValue `query:"ResourceName" xml:"ResourceName"` - ResourceType aws.StringValue `query:"ResourceType" xml:"ResourceType"` - Tag *Tag `query:"Tag" xml:"Tag"` -} - -// TaggedResourceListMessage is undocumented. -type TaggedResourceListMessage struct { - Marker aws.StringValue `query:"Marker" xml:"DescribeTagsResult>Marker"` - TaggedResources []TaggedResource `query:"TaggedResources.member" xml:"DescribeTagsResult>TaggedResources>TaggedResource"` -} - -// VPCSecurityGroupMembership is undocumented. -type VPCSecurityGroupMembership struct { - Status aws.StringValue `query:"Status" xml:"Status"` - VPCSecurityGroupID aws.StringValue `query:"VpcSecurityGroupId" xml:"VpcSecurityGroupId"` -} - -// DescribeClusterParameterGroupsResult is a wrapper for ClusterParameterGroupsMessage. -type DescribeClusterParameterGroupsResult struct { - Marker aws.StringValue `query:"Marker" xml:"DescribeClusterParameterGroupsResult>Marker"` - ParameterGroups []ClusterParameterGroup `query:"ParameterGroups.member" xml:"DescribeClusterParameterGroupsResult>ParameterGroups>ClusterParameterGroup"` -} - -// DescribeClusterParametersResult is a wrapper for ClusterParameterGroupDetails. -type DescribeClusterParametersResult struct { - Marker aws.StringValue `query:"Marker" xml:"DescribeClusterParametersResult>Marker"` - Parameters []Parameter `query:"Parameters.member" xml:"DescribeClusterParametersResult>Parameters>Parameter"` -} - -// DescribeClusterSecurityGroupsResult is a wrapper for ClusterSecurityGroupMessage. -type DescribeClusterSecurityGroupsResult struct { - ClusterSecurityGroups []ClusterSecurityGroup `query:"ClusterSecurityGroups.member" xml:"DescribeClusterSecurityGroupsResult>ClusterSecurityGroups>ClusterSecurityGroup"` - Marker aws.StringValue `query:"Marker" xml:"DescribeClusterSecurityGroupsResult>Marker"` -} - -// DescribeClusterSnapshotsResult is a wrapper for SnapshotMessage. -type DescribeClusterSnapshotsResult struct { - Marker aws.StringValue `query:"Marker" xml:"DescribeClusterSnapshotsResult>Marker"` - Snapshots []Snapshot `query:"Snapshots.member" xml:"DescribeClusterSnapshotsResult>Snapshots>Snapshot"` -} - -// DescribeClusterSubnetGroupsResult is a wrapper for ClusterSubnetGroupMessage. -type DescribeClusterSubnetGroupsResult struct { - ClusterSubnetGroups []ClusterSubnetGroup `query:"ClusterSubnetGroups.member" xml:"DescribeClusterSubnetGroupsResult>ClusterSubnetGroups>ClusterSubnetGroup"` - Marker aws.StringValue `query:"Marker" xml:"DescribeClusterSubnetGroupsResult>Marker"` -} - -// DescribeClusterVersionsResult is a wrapper for ClusterVersionsMessage. -type DescribeClusterVersionsResult struct { - ClusterVersions []ClusterVersion `query:"ClusterVersions.member" xml:"DescribeClusterVersionsResult>ClusterVersions>ClusterVersion"` - Marker aws.StringValue `query:"Marker" xml:"DescribeClusterVersionsResult>Marker"` -} - -// DescribeClustersResult is a wrapper for ClustersMessage. -type DescribeClustersResult struct { - Clusters []Cluster `query:"Clusters.member" xml:"DescribeClustersResult>Clusters>Cluster"` - Marker aws.StringValue `query:"Marker" xml:"DescribeClustersResult>Marker"` -} - -// DescribeEventCategoriesResult is a wrapper for EventCategoriesMessage. -type DescribeEventCategoriesResult struct { - EventCategoriesMapList []EventCategoriesMap `query:"EventCategoriesMapList.member" xml:"DescribeEventCategoriesResult>EventCategoriesMapList>EventCategoriesMap"` -} - -// DescribeEventSubscriptionsResult is a wrapper for EventSubscriptionsMessage. -type DescribeEventSubscriptionsResult struct { - EventSubscriptionsList []EventSubscription `query:"EventSubscriptionsList.member" xml:"DescribeEventSubscriptionsResult>EventSubscriptionsList>EventSubscription"` - Marker aws.StringValue `query:"Marker" xml:"DescribeEventSubscriptionsResult>Marker"` -} - -// DescribeEventsResult is a wrapper for EventsMessage. -type DescribeEventsResult struct { - Events []Event `query:"Events.member" xml:"DescribeEventsResult>Events>Event"` - Marker aws.StringValue `query:"Marker" xml:"DescribeEventsResult>Marker"` -} - -// DescribeHSMClientCertificatesResult is a wrapper for HsmClientCertificateMessage. -type DescribeHSMClientCertificatesResult struct { - HSMClientCertificates []HSMClientCertificate `query:"HsmClientCertificates.member" xml:"DescribeHsmClientCertificatesResult>HsmClientCertificates>HsmClientCertificate"` - Marker aws.StringValue `query:"Marker" xml:"DescribeHsmClientCertificatesResult>Marker"` -} - -// DescribeHSMConfigurationsResult is a wrapper for HsmConfigurationMessage. -type DescribeHSMConfigurationsResult struct { - HSMConfigurations []HSMConfiguration `query:"HsmConfigurations.member" xml:"DescribeHsmConfigurationsResult>HsmConfigurations>HsmConfiguration"` - Marker aws.StringValue `query:"Marker" xml:"DescribeHsmConfigurationsResult>Marker"` -} - -// DescribeLoggingStatusResult is a wrapper for LoggingStatus. -type DescribeLoggingStatusResult struct { - BucketName aws.StringValue `query:"BucketName" xml:"DescribeLoggingStatusResult>BucketName"` - LastFailureMessage aws.StringValue `query:"LastFailureMessage" xml:"DescribeLoggingStatusResult>LastFailureMessage"` - LastFailureTime time.Time `query:"LastFailureTime" xml:"DescribeLoggingStatusResult>LastFailureTime"` - LastSuccessfulDeliveryTime time.Time `query:"LastSuccessfulDeliveryTime" xml:"DescribeLoggingStatusResult>LastSuccessfulDeliveryTime"` - LoggingEnabled aws.BooleanValue `query:"LoggingEnabled" xml:"DescribeLoggingStatusResult>LoggingEnabled"` - S3KeyPrefix aws.StringValue `query:"S3KeyPrefix" xml:"DescribeLoggingStatusResult>S3KeyPrefix"` -} - -// DescribeOrderableClusterOptionsResult is a wrapper for OrderableClusterOptionsMessage. -type DescribeOrderableClusterOptionsResult struct { - Marker aws.StringValue `query:"Marker" xml:"DescribeOrderableClusterOptionsResult>Marker"` - OrderableClusterOptions []OrderableClusterOption `query:"OrderableClusterOptions.member" xml:"DescribeOrderableClusterOptionsResult>OrderableClusterOptions>OrderableClusterOption"` -} - -// DescribeReservedNodeOfferingsResult is a wrapper for ReservedNodeOfferingsMessage. -type DescribeReservedNodeOfferingsResult struct { - Marker aws.StringValue `query:"Marker" xml:"DescribeReservedNodeOfferingsResult>Marker"` - ReservedNodeOfferings []ReservedNodeOffering `query:"ReservedNodeOfferings.member" xml:"DescribeReservedNodeOfferingsResult>ReservedNodeOfferings>ReservedNodeOffering"` -} - -// DescribeReservedNodesResult is a wrapper for ReservedNodesMessage. -type DescribeReservedNodesResult struct { - Marker aws.StringValue `query:"Marker" xml:"DescribeReservedNodesResult>Marker"` - ReservedNodes []ReservedNode `query:"ReservedNodes.member" xml:"DescribeReservedNodesResult>ReservedNodes>ReservedNode"` -} - -// DescribeResizeResult is a wrapper for ResizeProgressMessage. -type DescribeResizeResult struct { - AvgResizeRateInMegaBytesPerSecond aws.DoubleValue `query:"AvgResizeRateInMegaBytesPerSecond" xml:"DescribeResizeResult>AvgResizeRateInMegaBytesPerSecond"` - ElapsedTimeInSeconds aws.LongValue `query:"ElapsedTimeInSeconds" xml:"DescribeResizeResult>ElapsedTimeInSeconds"` - EstimatedTimeToCompletionInSeconds aws.LongValue `query:"EstimatedTimeToCompletionInSeconds" xml:"DescribeResizeResult>EstimatedTimeToCompletionInSeconds"` - ImportTablesCompleted []string `query:"ImportTablesCompleted.member" xml:"DescribeResizeResult>ImportTablesCompleted>member"` - ImportTablesInProgress []string `query:"ImportTablesInProgress.member" xml:"DescribeResizeResult>ImportTablesInProgress>member"` - ImportTablesNotStarted []string `query:"ImportTablesNotStarted.member" xml:"DescribeResizeResult>ImportTablesNotStarted>member"` - ProgressInMegaBytes aws.LongValue `query:"ProgressInMegaBytes" xml:"DescribeResizeResult>ProgressInMegaBytes"` - Status aws.StringValue `query:"Status" xml:"DescribeResizeResult>Status"` - TargetClusterType aws.StringValue `query:"TargetClusterType" xml:"DescribeResizeResult>TargetClusterType"` - TargetNodeType aws.StringValue `query:"TargetNodeType" xml:"DescribeResizeResult>TargetNodeType"` - TargetNumberOfNodes aws.IntegerValue `query:"TargetNumberOfNodes" xml:"DescribeResizeResult>TargetNumberOfNodes"` - TotalResizeDataInMegaBytes aws.LongValue `query:"TotalResizeDataInMegaBytes" xml:"DescribeResizeResult>TotalResizeDataInMegaBytes"` -} - -// DescribeTagsResult is a wrapper for TaggedResourceListMessage. -type DescribeTagsResult struct { - Marker aws.StringValue `query:"Marker" xml:"DescribeTagsResult>Marker"` - TaggedResources []TaggedResource `query:"TaggedResources.member" xml:"DescribeTagsResult>TaggedResources>TaggedResource"` -} - -// DisableLoggingResult is a wrapper for LoggingStatus. -type DisableLoggingResult struct { - BucketName aws.StringValue `query:"BucketName" xml:"DisableLoggingResult>BucketName"` - LastFailureMessage aws.StringValue `query:"LastFailureMessage" xml:"DisableLoggingResult>LastFailureMessage"` - LastFailureTime time.Time `query:"LastFailureTime" xml:"DisableLoggingResult>LastFailureTime"` - LastSuccessfulDeliveryTime time.Time `query:"LastSuccessfulDeliveryTime" xml:"DisableLoggingResult>LastSuccessfulDeliveryTime"` - LoggingEnabled aws.BooleanValue `query:"LoggingEnabled" xml:"DisableLoggingResult>LoggingEnabled"` - S3KeyPrefix aws.StringValue `query:"S3KeyPrefix" xml:"DisableLoggingResult>S3KeyPrefix"` -} - -// EnableLoggingResult is a wrapper for LoggingStatus. -type EnableLoggingResult struct { - BucketName aws.StringValue `query:"BucketName" xml:"EnableLoggingResult>BucketName"` - LastFailureMessage aws.StringValue `query:"LastFailureMessage" xml:"EnableLoggingResult>LastFailureMessage"` - LastFailureTime time.Time `query:"LastFailureTime" xml:"EnableLoggingResult>LastFailureTime"` - LastSuccessfulDeliveryTime time.Time `query:"LastSuccessfulDeliveryTime" xml:"EnableLoggingResult>LastSuccessfulDeliveryTime"` - LoggingEnabled aws.BooleanValue `query:"LoggingEnabled" xml:"EnableLoggingResult>LoggingEnabled"` - S3KeyPrefix aws.StringValue `query:"S3KeyPrefix" xml:"EnableLoggingResult>S3KeyPrefix"` -} - -// ModifyClusterParameterGroupResult is a wrapper for ClusterParameterGroupNameMessage. -type ModifyClusterParameterGroupResult struct { - ParameterGroupName aws.StringValue `query:"ParameterGroupName" xml:"ModifyClusterParameterGroupResult>ParameterGroupName"` - ParameterGroupStatus aws.StringValue `query:"ParameterGroupStatus" xml:"ModifyClusterParameterGroupResult>ParameterGroupStatus"` -} - -// ResetClusterParameterGroupResult is a wrapper for ClusterParameterGroupNameMessage. -type ResetClusterParameterGroupResult struct { - ParameterGroupName aws.StringValue `query:"ParameterGroupName" xml:"ResetClusterParameterGroupResult>ParameterGroupName"` - ParameterGroupStatus aws.StringValue `query:"ParameterGroupStatus" xml:"ResetClusterParameterGroupResult>ParameterGroupStatus"` -} - -// avoid errors if the packages aren't referenced -var _ time.Time - -var _ xml.Decoder -var _ = io.EOF diff --git a/src/github.com/getlantern/aws-sdk-go/gen/route53/route53.go b/src/github.com/getlantern/aws-sdk-go/gen/route53/route53.go deleted file mode 100644 index 707094da97..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/gen/route53/route53.go +++ /dev/null @@ -1,2606 +0,0 @@ -// THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. - -// Package route53 provides a client for Amazon Route 53. -package route53 - -import ( - "net/http" - "time" - - "github.com/awslabs/aws-sdk-go/aws" - "github.com/awslabs/aws-sdk-go/gen/endpoints" -) - -import ( - "bytes" - "encoding/xml" - "fmt" - "io" - "io/ioutil" - "net/url" - "strconv" - "strings" -) - -// Route53 is a client for Amazon Route 53. -type Route53 struct { - client *aws.RestClient -} - -// New returns a new Route53 client. -func New(creds aws.CredentialsProvider, region string, client *http.Client) *Route53 { - if client == nil { - client = http.DefaultClient - } - - endpoint, service, region := endpoints.Lookup("route53", region) - - return &Route53{ - client: &aws.RestClient{ - Context: aws.Context{ - Credentials: creds, - Service: service, - Region: region, - }, - Client: client, - Endpoint: endpoint, - APIVersion: "2013-04-01", - }, - } -} - -// AssociateVPCWithHostedZone this action associates a VPC with an hosted -// zone. To associate a VPC with an hosted zone, send a request to the -// 2013-04-01/hostedzone/ hosted zone /associatevpc resource. The request -// body must include an XML document with a -// AssociateVPCWithHostedZoneRequest element. The response returns the -// AssociateVPCWithHostedZoneResponse element that contains ChangeInfo for -// you to track the progress of the AssociateVPCWithHostedZoneRequest you -// made. See GetChange operation for how to track the progress of your -// change. -func (c *Route53) AssociateVPCWithHostedZone(req *AssociateVPCWithHostedZoneRequest) (resp *AssociateVPCWithHostedZoneResponse, err error) { - resp = &AssociateVPCWithHostedZoneResponse{} - - var body io.Reader - var contentType string - - contentType = "application/xml" - req.XMLName = xml.Name{ - Space: "https://route53.amazonaws.com/doc/2013-04-01/", - Local: "AssociateVPCWithHostedZoneRequest", - } - b, err := xml.Marshal(req) - if err != nil { - return - } - body = bytes.NewReader(b) - - uri := c.client.Endpoint + "/2013-04-01/hostedzone/{Id}/associatevpc" - - if req.HostedZoneID != nil { - uri = strings.Replace(uri, "{"+"Id"+"}", aws.EscapePath(*req.HostedZoneID), -1) - uri = strings.Replace(uri, "{"+"Id+"+"}", aws.EscapePath(*req.HostedZoneID), -1) - } - - q := url.Values{} - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("POST", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - if e := xml.NewDecoder(httpResp.Body).Decode(resp); e != nil && e != io.EOF { - err = e - return - } - - return -} - -// ChangeResourceRecordSets use this action to create or change your -// authoritative DNS information. To use this action, send a request to the -// 2013-04-01/hostedzone/ hosted Zone /rrset resource. The request body -// must include an XML document with a ChangeResourceRecordSetsRequest -// element. Changes are a list of change items and are considered -// transactional. For more information on transactional changes, also known -// as change batches, see Creating, Changing, and Deleting Resource Record -// Sets Using the Route 53 in the Amazon Route 53 Developer Guide Due to -// the nature of transactional changes, you cannot delete the same resource -// record set more than once in a single change batch. If you attempt to -// delete the same change batch more than once, Route 53 returns an -// InvalidChangeBatch error. In response to a ChangeResourceRecordSets -// request, your DNS data is changed on all Route 53 DNS servers. -// Initially, the status of a change is . This means the change has not yet -// propagated to all the authoritative Route 53 DNS servers. When the -// change is propagated to all hosts, the change returns a status of Note -// the following limitations on a ChangeResourceRecordSets request: - A -// request cannot contain more than 100 Change elements. - A request cannot -// contain more than 1000 ResourceRecord elements. The sum of the number of -// characters (including spaces) in all Value elements in a request cannot -// exceed 32,000 characters. -func (c *Route53) ChangeResourceRecordSets(req *ChangeResourceRecordSetsRequest) (resp *ChangeResourceRecordSetsResponse, err error) { - resp = &ChangeResourceRecordSetsResponse{} - - var body io.Reader - var contentType string - - contentType = "application/xml" - req.XMLName = xml.Name{ - Space: "https://route53.amazonaws.com/doc/2013-04-01/", - Local: "ChangeResourceRecordSetsRequest", - } - b, err := xml.Marshal(req) - if err != nil { - return - } - body = bytes.NewReader(b) - - uri := c.client.Endpoint + "/2013-04-01/hostedzone/{Id}/rrset/" - - if req.HostedZoneID != nil { - uri = strings.Replace(uri, "{"+"Id"+"}", aws.EscapePath(*req.HostedZoneID), -1) - uri = strings.Replace(uri, "{"+"Id+"+"}", aws.EscapePath(*req.HostedZoneID), -1) - } - - q := url.Values{} - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("POST", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - if e := xml.NewDecoder(httpResp.Body).Decode(resp); e != nil && e != io.EOF { - err = e - return - } - - return -} - -// ChangeTagsForResource -func (c *Route53) ChangeTagsForResource(req *ChangeTagsForResourceRequest) (resp *ChangeTagsForResourceResponse, err error) { - resp = &ChangeTagsForResourceResponse{} - - var body io.Reader - var contentType string - - contentType = "application/xml" - req.XMLName = xml.Name{ - Space: "https://route53.amazonaws.com/doc/2013-04-01/", - Local: "ChangeTagsForResourceRequest", - } - b, err := xml.Marshal(req) - if err != nil { - return - } - body = bytes.NewReader(b) - - uri := c.client.Endpoint + "/2013-04-01/tags/{ResourceType}/{ResourceId}" - - if req.ResourceID != nil { - uri = strings.Replace(uri, "{"+"ResourceId"+"}", aws.EscapePath(*req.ResourceID), -1) - uri = strings.Replace(uri, "{"+"ResourceId+"+"}", aws.EscapePath(*req.ResourceID), -1) - } - - if req.ResourceType != nil { - uri = strings.Replace(uri, "{"+"ResourceType"+"}", aws.EscapePath(*req.ResourceType), -1) - uri = strings.Replace(uri, "{"+"ResourceType+"+"}", aws.EscapePath(*req.ResourceType), -1) - } - - q := url.Values{} - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("POST", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - if e := xml.NewDecoder(httpResp.Body).Decode(resp); e != nil && e != io.EOF { - err = e - return - } - - return -} - -// CreateHealthCheck this action creates a new health check. To create a -// new health check, send a request to the 2013-04-01/healthcheck resource. -// The request body must include an XML document with a -// CreateHealthCheckRequest element. The response returns the -// CreateHealthCheckResponse element that contains metadata about the -// health check. -func (c *Route53) CreateHealthCheck(req *CreateHealthCheckRequest) (resp *CreateHealthCheckResponse, err error) { - resp = &CreateHealthCheckResponse{} - - var body io.Reader - var contentType string - - contentType = "application/xml" - req.XMLName = xml.Name{ - Space: "https://route53.amazonaws.com/doc/2013-04-01/", - Local: "CreateHealthCheckRequest", - } - b, err := xml.Marshal(req) - if err != nil { - return - } - body = bytes.NewReader(b) - - uri := c.client.Endpoint + "/2013-04-01/healthcheck" - - q := url.Values{} - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("POST", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - if e := xml.NewDecoder(httpResp.Body).Decode(resp); e != nil && e != io.EOF { - err = e - return - } - - if s := httpResp.Header.Get("Location"); s != "" { - - resp.Location = &s - - } - - return -} - -// CreateHostedZone this action creates a new hosted zone. To create a new -// hosted zone, send a request to the 2013-04-01/hostedzone resource. The -// request body must include an XML document with a CreateHostedZoneRequest -// element. The response returns the CreateHostedZoneResponse element that -// contains metadata about the hosted zone. Route 53 automatically creates -// a default SOA record and four NS records for the zone. The NS records in -// the hosted zone are the name servers you give your registrar to delegate -// your domain to. For more information about SOA and NS records, see NS -// and SOA Records that Route 53 Creates for a Hosted Zone in the Amazon -// Route 53 Developer Guide When you create a zone, its initial status is . -// This means that it is not yet available on all DNS servers. The status -// of the zone changes to when the NS and SOA records are available on all -// Route 53 DNS servers. When trying to create a hosted zone using a -// reusable delegation set, you could specify an optional DelegationSetId, -// and Route53 would assign those 4 NS records for the zone, instead of -// alloting a new one. -func (c *Route53) CreateHostedZone(req *CreateHostedZoneRequest) (resp *CreateHostedZoneResponse, err error) { - resp = &CreateHostedZoneResponse{} - - var body io.Reader - var contentType string - - contentType = "application/xml" - req.XMLName = xml.Name{ - Space: "https://route53.amazonaws.com/doc/2013-04-01/", - Local: "CreateHostedZoneRequest", - } - b, err := xml.Marshal(req) - if err != nil { - return - } - body = bytes.NewReader(b) - - uri := c.client.Endpoint + "/2013-04-01/hostedzone" - - q := url.Values{} - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("POST", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - if e := xml.NewDecoder(httpResp.Body).Decode(resp); e != nil && e != io.EOF { - err = e - return - } - - if s := httpResp.Header.Get("Location"); s != "" { - - resp.Location = &s - - } - - return -} - -// CreateReusableDelegationSet this action creates a reusable -// delegationSet. To create a new reusable delegationSet, send a request to -// the 2013-04-01/delegationset resource. The request body must include an -// XML document with a CreateReusableDelegationSetRequest element. The -// response returns the CreateReusableDelegationSetResponse element that -// contains metadata about the delegationSet. If the optional parameter -// HostedZoneId is specified, it marks the delegationSet associated with -// that particular hosted zone as reusable. -func (c *Route53) CreateReusableDelegationSet(req *CreateReusableDelegationSetRequest) (resp *CreateReusableDelegationSetResponse, err error) { - resp = &CreateReusableDelegationSetResponse{} - - var body io.Reader - var contentType string - - contentType = "application/xml" - req.XMLName = xml.Name{ - Space: "https://route53.amazonaws.com/doc/2013-04-01/", - Local: "CreateReusableDelegationSetRequest", - } - b, err := xml.Marshal(req) - if err != nil { - return - } - body = bytes.NewReader(b) - - uri := c.client.Endpoint + "/2013-04-01/delegationset" - - q := url.Values{} - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("POST", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - if e := xml.NewDecoder(httpResp.Body).Decode(resp); e != nil && e != io.EOF { - err = e - return - } - - if s := httpResp.Header.Get("Location"); s != "" { - - resp.Location = &s - - } - - return -} - -// DeleteHealthCheck this action deletes a health check. To delete a health -// check, send a request to the 2013-04-01/healthcheck/ health check -// resource. You can delete a health check only if there are no resource -// record sets associated with this health check. If resource record sets -// are associated with this health check, you must disassociate them before -// you can delete your health check. If you try to delete a health check -// that is associated with resource record sets, Route 53 will deny your -// request with a HealthCheckInUse error. For information about -// disassociating the records from your health check, see -// ChangeResourceRecordSets -func (c *Route53) DeleteHealthCheck(req *DeleteHealthCheckRequest) (resp *DeleteHealthCheckResponse, err error) { - resp = &DeleteHealthCheckResponse{} - - var body io.Reader - var contentType string - - uri := c.client.Endpoint + "/2013-04-01/healthcheck/{HealthCheckId}" - - if req.HealthCheckID != nil { - uri = strings.Replace(uri, "{"+"HealthCheckId"+"}", aws.EscapePath(*req.HealthCheckID), -1) - uri = strings.Replace(uri, "{"+"HealthCheckId+"+"}", aws.EscapePath(*req.HealthCheckID), -1) - } - - q := url.Values{} - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("DELETE", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - if e := xml.NewDecoder(httpResp.Body).Decode(resp); e != nil && e != io.EOF { - err = e - return - } - - return -} - -// DeleteHostedZone this action deletes a hosted zone. To delete a hosted -// zone, send a request to the 2013-04-01/hostedzone/ hosted zone resource. -// For more information about deleting a hosted zone, see Deleting a Hosted -// Zone in the Amazon Route 53 Developer Guide You can delete a hosted zone -// only if there are no resource record sets other than the default SOA -// record and NS resource record sets. If your hosted zone contains other -// resource record sets, you must delete them before you can delete your -// hosted zone. If you try to delete a hosted zone that contains other -// resource record sets, Route 53 will deny your request with a -// HostedZoneNotEmpty error. For information about deleting records from -// your hosted zone, see ChangeResourceRecordSets -func (c *Route53) DeleteHostedZone(req *DeleteHostedZoneRequest) (resp *DeleteHostedZoneResponse, err error) { - resp = &DeleteHostedZoneResponse{} - - var body io.Reader - var contentType string - - uri := c.client.Endpoint + "/2013-04-01/hostedzone/{Id}" - - if req.ID != nil { - uri = strings.Replace(uri, "{"+"Id"+"}", aws.EscapePath(*req.ID), -1) - uri = strings.Replace(uri, "{"+"Id+"+"}", aws.EscapePath(*req.ID), -1) - } - - q := url.Values{} - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("DELETE", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - if e := xml.NewDecoder(httpResp.Body).Decode(resp); e != nil && e != io.EOF { - err = e - return - } - - return -} - -// DeleteReusableDelegationSet this action deletes a reusable delegation -// set. To delete a reusable delegation set, send a request to the -// 2013-04-01/delegationset/ delegation set resource. You can delete a -// reusable delegation set only if there are no associated hosted zones. If -// your reusable delegation set contains associated hosted zones, you must -// delete them before you can delete your reusable delegation set. If you -// try to delete a reusable delegation set that contains associated hosted -// zones, Route 53 will deny your request with a DelegationSetInUse error. -func (c *Route53) DeleteReusableDelegationSet(req *DeleteReusableDelegationSetRequest) (resp *DeleteReusableDelegationSetResponse, err error) { - resp = &DeleteReusableDelegationSetResponse{} - - var body io.Reader - var contentType string - - uri := c.client.Endpoint + "/2013-04-01/delegationset/{Id}" - - if req.ID != nil { - uri = strings.Replace(uri, "{"+"Id"+"}", aws.EscapePath(*req.ID), -1) - uri = strings.Replace(uri, "{"+"Id+"+"}", aws.EscapePath(*req.ID), -1) - } - - q := url.Values{} - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("DELETE", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - if e := xml.NewDecoder(httpResp.Body).Decode(resp); e != nil && e != io.EOF { - err = e - return - } - - return -} - -// DisassociateVPCFromHostedZone this action disassociates a VPC from an -// hosted zone. To disassociate a VPC to a hosted zone, send a request to -// the 2013-04-01/hostedzone/ hosted zone /disassociatevpc resource. The -// request body must include an XML document with a -// DisassociateVPCFromHostedZoneRequest element. The response returns the -// DisassociateVPCFromHostedZoneResponse element that contains ChangeInfo -// for you to track the progress of the -// DisassociateVPCFromHostedZoneRequest you made. See GetChange operation -// for how to track the progress of your change. -func (c *Route53) DisassociateVPCFromHostedZone(req *DisassociateVPCFromHostedZoneRequest) (resp *DisassociateVPCFromHostedZoneResponse, err error) { - resp = &DisassociateVPCFromHostedZoneResponse{} - - var body io.Reader - var contentType string - - contentType = "application/xml" - req.XMLName = xml.Name{ - Space: "https://route53.amazonaws.com/doc/2013-04-01/", - Local: "DisassociateVPCFromHostedZoneRequest", - } - b, err := xml.Marshal(req) - if err != nil { - return - } - body = bytes.NewReader(b) - - uri := c.client.Endpoint + "/2013-04-01/hostedzone/{Id}/disassociatevpc" - - if req.HostedZoneID != nil { - uri = strings.Replace(uri, "{"+"Id"+"}", aws.EscapePath(*req.HostedZoneID), -1) - uri = strings.Replace(uri, "{"+"Id+"+"}", aws.EscapePath(*req.HostedZoneID), -1) - } - - q := url.Values{} - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("POST", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - if e := xml.NewDecoder(httpResp.Body).Decode(resp); e != nil && e != io.EOF { - err = e - return - } - - return -} - -// GetChange this action returns the current status of a change batch -// request. The status is one of the following values: - indicates that the -// changes in this request have not replicated to all Route 53 DNS servers. -// This is the initial status of all change batch requests. - indicates -// that the changes have replicated to all Amazon Route 53 DNS servers. -func (c *Route53) GetChange(req *GetChangeRequest) (resp *GetChangeResponse, err error) { - resp = &GetChangeResponse{} - - var body io.Reader - var contentType string - - uri := c.client.Endpoint + "/2013-04-01/change/{Id}" - - if req.ID != nil { - uri = strings.Replace(uri, "{"+"Id"+"}", aws.EscapePath(*req.ID), -1) - uri = strings.Replace(uri, "{"+"Id+"+"}", aws.EscapePath(*req.ID), -1) - } - - q := url.Values{} - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("GET", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - if e := xml.NewDecoder(httpResp.Body).Decode(resp); e != nil && e != io.EOF { - err = e - return - } - - return -} - -// GetCheckerIPRanges to retrieve a list of the IP ranges used by Amazon -// Route 53 health checkers to check the health of your resources, send a -// request to the 2013-04-01/checkeripranges resource. You can use these IP -// addresses to configure router and firewall rules to allow health -// checkers to check the health of your resources. -func (c *Route53) GetCheckerIPRanges(req *GetCheckerIPRangesRequest) (resp *GetCheckerIPRangesResponse, err error) { - resp = &GetCheckerIPRangesResponse{} - - var body io.Reader - var contentType string - - uri := c.client.Endpoint + "/2013-04-01/checkeripranges" - - q := url.Values{} - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("GET", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - if e := xml.NewDecoder(httpResp.Body).Decode(resp); e != nil && e != io.EOF { - err = e - return - } - - return -} - -// GetGeoLocation to retrieve a single geo location, send a request to the -// 2013-04-01/geolocation resource with one of these options: continentcode -// | countrycode | countrycode and subdivisioncode. -func (c *Route53) GetGeoLocation(req *GetGeoLocationRequest) (resp *GetGeoLocationResponse, err error) { - resp = &GetGeoLocationResponse{} - - var body io.Reader - var contentType string - - uri := c.client.Endpoint + "/2013-04-01/geolocation" - - q := url.Values{} - - if req.ContinentCode != nil { - q.Set("continentcode", *req.ContinentCode) - } - - if req.CountryCode != nil { - q.Set("countrycode", *req.CountryCode) - } - - if req.SubdivisionCode != nil { - q.Set("subdivisioncode", *req.SubdivisionCode) - } - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("GET", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - if e := xml.NewDecoder(httpResp.Body).Decode(resp); e != nil && e != io.EOF { - err = e - return - } - - return -} - -// GetHealthCheck to retrieve the health check, send a request to the -// 2013-04-01/healthcheck/ health check resource. -func (c *Route53) GetHealthCheck(req *GetHealthCheckRequest) (resp *GetHealthCheckResponse, err error) { - resp = &GetHealthCheckResponse{} - - var body io.Reader - var contentType string - - uri := c.client.Endpoint + "/2013-04-01/healthcheck/{HealthCheckId}" - - if req.HealthCheckID != nil { - uri = strings.Replace(uri, "{"+"HealthCheckId"+"}", aws.EscapePath(*req.HealthCheckID), -1) - uri = strings.Replace(uri, "{"+"HealthCheckId+"+"}", aws.EscapePath(*req.HealthCheckID), -1) - } - - q := url.Values{} - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("GET", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - if e := xml.NewDecoder(httpResp.Body).Decode(resp); e != nil && e != io.EOF { - err = e - return - } - - return -} - -// GetHealthCheckCount to retrieve a count of all your health checks, send -// a request to the 2013-04-01/healthcheckcount resource. -func (c *Route53) GetHealthCheckCount(req *GetHealthCheckCountRequest) (resp *GetHealthCheckCountResponse, err error) { - resp = &GetHealthCheckCountResponse{} - - var body io.Reader - var contentType string - - uri := c.client.Endpoint + "/2013-04-01/healthcheckcount" - - q := url.Values{} - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("GET", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - if e := xml.NewDecoder(httpResp.Body).Decode(resp); e != nil && e != io.EOF { - err = e - return - } - - return -} - -// GetHealthCheckLastFailureReason if you want to learn why a health check -// is currently failing or why it failed most recently (if at all), you can -// get the failure reason for the most recent failure. Send a request to -// the 2013-04-01/healthcheck/ health check /lastfailurereason resource. -func (c *Route53) GetHealthCheckLastFailureReason(req *GetHealthCheckLastFailureReasonRequest) (resp *GetHealthCheckLastFailureReasonResponse, err error) { - resp = &GetHealthCheckLastFailureReasonResponse{} - - var body io.Reader - var contentType string - - uri := c.client.Endpoint + "/2013-04-01/healthcheck/{HealthCheckId}/lastfailurereason" - - if req.HealthCheckID != nil { - uri = strings.Replace(uri, "{"+"HealthCheckId"+"}", aws.EscapePath(*req.HealthCheckID), -1) - uri = strings.Replace(uri, "{"+"HealthCheckId+"+"}", aws.EscapePath(*req.HealthCheckID), -1) - } - - q := url.Values{} - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("GET", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - if e := xml.NewDecoder(httpResp.Body).Decode(resp); e != nil && e != io.EOF { - err = e - return - } - - return -} - -// GetHealthCheckStatus to retrieve the health check status, send a request -// to the 2013-04-01/healthcheck/ health check /status resource. You can -// use this call to get a health check's current status. -func (c *Route53) GetHealthCheckStatus(req *GetHealthCheckStatusRequest) (resp *GetHealthCheckStatusResponse, err error) { - resp = &GetHealthCheckStatusResponse{} - - var body io.Reader - var contentType string - - uri := c.client.Endpoint + "/2013-04-01/healthcheck/{HealthCheckId}/status" - - if req.HealthCheckID != nil { - uri = strings.Replace(uri, "{"+"HealthCheckId"+"}", aws.EscapePath(*req.HealthCheckID), -1) - uri = strings.Replace(uri, "{"+"HealthCheckId+"+"}", aws.EscapePath(*req.HealthCheckID), -1) - } - - q := url.Values{} - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("GET", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - if e := xml.NewDecoder(httpResp.Body).Decode(resp); e != nil && e != io.EOF { - err = e - return - } - - return -} - -// GetHostedZone to retrieve the delegation set for a hosted zone, send a -// request to the 2013-04-01/hostedzone/ hosted zone resource. The -// delegation set is the four Route 53 name servers that were assigned to -// the hosted zone when you created it. -func (c *Route53) GetHostedZone(req *GetHostedZoneRequest) (resp *GetHostedZoneResponse, err error) { - resp = &GetHostedZoneResponse{} - - var body io.Reader - var contentType string - - uri := c.client.Endpoint + "/2013-04-01/hostedzone/{Id}" - - if req.ID != nil { - uri = strings.Replace(uri, "{"+"Id"+"}", aws.EscapePath(*req.ID), -1) - uri = strings.Replace(uri, "{"+"Id+"+"}", aws.EscapePath(*req.ID), -1) - } - - q := url.Values{} - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("GET", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - if e := xml.NewDecoder(httpResp.Body).Decode(resp); e != nil && e != io.EOF { - err = e - return - } - - return -} - -// GetReusableDelegationSet to retrieve the reusable delegation set, send a -// request to the 2013-04-01/delegationset/ delegation set resource. -func (c *Route53) GetReusableDelegationSet(req *GetReusableDelegationSetRequest) (resp *GetReusableDelegationSetResponse, err error) { - resp = &GetReusableDelegationSetResponse{} - - var body io.Reader - var contentType string - - uri := c.client.Endpoint + "/2013-04-01/delegationset/{Id}" - - if req.ID != nil { - uri = strings.Replace(uri, "{"+"Id"+"}", aws.EscapePath(*req.ID), -1) - uri = strings.Replace(uri, "{"+"Id+"+"}", aws.EscapePath(*req.ID), -1) - } - - q := url.Values{} - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("GET", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - if e := xml.NewDecoder(httpResp.Body).Decode(resp); e != nil && e != io.EOF { - err = e - return - } - - return -} - -// ListGeoLocations to retrieve a list of supported geo locations, send a -// request to the 2013-04-01/geolocations resource. The response to this -// request includes a GeoLocationDetailsList element with zero, one, or -// multiple GeoLocationDetails child elements. The list is sorted by -// country code, and then subdivision code, followed by continents at the -// end of the list. By default, the list of geo locations is displayed on a -// single page. You can control the length of the page that is displayed by -// using the MaxItems parameter. If the list is truncated, IsTruncated will -// be set to true and a combination of NextContinentCode, NextCountryCode, -// NextSubdivisionCode will be populated. You can pass these as parameters -// to StartContinentCode, StartCountryCode, StartSubdivisionCode to control -// the geo location that the list begins with. -func (c *Route53) ListGeoLocations(req *ListGeoLocationsRequest) (resp *ListGeoLocationsResponse, err error) { - resp = &ListGeoLocationsResponse{} - - var body io.Reader - var contentType string - - uri := c.client.Endpoint + "/2013-04-01/geolocations" - - q := url.Values{} - - if req.MaxItems != nil { - q.Set("maxitems", *req.MaxItems) - } - - if req.StartContinentCode != nil { - q.Set("startcontinentcode", *req.StartContinentCode) - } - - if req.StartCountryCode != nil { - q.Set("startcountrycode", *req.StartCountryCode) - } - - if req.StartSubdivisionCode != nil { - q.Set("startsubdivisioncode", *req.StartSubdivisionCode) - } - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("GET", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - if e := xml.NewDecoder(httpResp.Body).Decode(resp); e != nil && e != io.EOF { - err = e - return - } - - return -} - -// ListHealthChecks to retrieve a list of your health checks, send a -// request to the 2013-04-01/healthcheck resource. The response to this -// request includes a HealthChecks element with zero, one, or multiple -// HealthCheck child elements. By default, the list of health checks is -// displayed on a single page. You can control the length of the page that -// is displayed by using the MaxItems parameter. You can use the Marker -// parameter to control the health check that the list begins with. Amazon -// Route 53 returns a maximum of 100 items. If you set MaxItems to a value -// greater than 100, Amazon Route 53 returns only the first 100. -func (c *Route53) ListHealthChecks(req *ListHealthChecksRequest) (resp *ListHealthChecksResponse, err error) { - resp = &ListHealthChecksResponse{} - - var body io.Reader - var contentType string - - uri := c.client.Endpoint + "/2013-04-01/healthcheck" - - q := url.Values{} - - if req.Marker != nil { - q.Set("marker", *req.Marker) - } - - if req.MaxItems != nil { - q.Set("maxitems", *req.MaxItems) - } - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("GET", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - if e := xml.NewDecoder(httpResp.Body).Decode(resp); e != nil && e != io.EOF { - err = e - return - } - - return -} - -// ListHostedZones to retrieve a list of your hosted zones, send a request -// to the 2013-04-01/hostedzone resource. The response to this request -// includes a HostedZones element with zero, one, or multiple HostedZone -// child elements. By default, the list of hosted zones is displayed on a -// single page. You can control the length of the page that is displayed by -// using the MaxItems parameter. You can use the Marker parameter to -// control the hosted zone that the list begins with. Amazon Route 53 -// returns a maximum of 100 items. If you set MaxItems to a value greater -// than 100, Amazon Route 53 returns only the first 100. -func (c *Route53) ListHostedZones(req *ListHostedZonesRequest) (resp *ListHostedZonesResponse, err error) { - resp = &ListHostedZonesResponse{} - - var body io.Reader - var contentType string - - uri := c.client.Endpoint + "/2013-04-01/hostedzone" - - q := url.Values{} - - if req.DelegationSetID != nil { - q.Set("delegationsetid", *req.DelegationSetID) - } - - if req.Marker != nil { - q.Set("marker", *req.Marker) - } - - if req.MaxItems != nil { - q.Set("maxitems", *req.MaxItems) - } - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("GET", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - if e := xml.NewDecoder(httpResp.Body).Decode(resp); e != nil && e != io.EOF { - err = e - return - } - - return -} - -// ListResourceRecordSets imagine all the resource record sets in a zone -// listed out in front of you. Imagine them sorted lexicographically first -// by DNS name (with the labels reversed, like "com.amazon.www" for -// example), and secondarily, lexicographically by record type. This -// operation retrieves at most MaxItems resource record sets from this -// list, in order, starting at a position specified by the Name and Type -// arguments: If both Name and Type are omitted, this means start the -// results at the first in the HostedZone. If Name is specified but Type is -// omitted, this means start the results at the first in the list whose -// name is greater than or equal to Name. If both Name and Type are -// specified, this means start the results at the first in the list whose -// name is greater than or equal to Name and whose type is greater than or -// equal to Type. It is an error to specify the Type but not the Name. Use -// ListResourceRecordSets to retrieve a single known record set by -// specifying the record set's name and type, and setting MaxItems = 1 To -// retrieve all the records in a HostedZone, first pause any processes -// making calls to ChangeResourceRecordSets. Initially call -// ListResourceRecordSets without a Name and Type to get the first page of -// record sets. For subsequent calls, set Name and Type to the NextName and -// NextType values returned by the previous response. In the presence of -// concurrent ChangeResourceRecordSets calls, there is no consistency of -// results across calls to ListResourceRecordSets. The only way to get a -// consistent multi-page snapshot of all RRSETs in a zone is to stop making -// changes while pagination is in progress. However, the results from -// ListResourceRecordSets are consistent within a page. If MakeChange calls -// are taking place concurrently, the result of each one will either be -// completely visible in your results or not at all. You will not see -// partial changes, or changes that do not ultimately succeed. (This -// follows from the fact that MakeChange is atomic) The results from -// ListResourceRecordSets are strongly consistent with -// ChangeResourceRecordSets. To be precise, if a single process makes a -// call to ChangeResourceRecordSets and receives a successful response, the -// effects of that change will be visible in a subsequent call to -// ListResourceRecordSets by that process. -func (c *Route53) ListResourceRecordSets(req *ListResourceRecordSetsRequest) (resp *ListResourceRecordSetsResponse, err error) { - resp = &ListResourceRecordSetsResponse{} - - var body io.Reader - var contentType string - - uri := c.client.Endpoint + "/2013-04-01/hostedzone/{Id}/rrset" - - if req.HostedZoneID != nil { - uri = strings.Replace(uri, "{"+"Id"+"}", aws.EscapePath(*req.HostedZoneID), -1) - uri = strings.Replace(uri, "{"+"Id+"+"}", aws.EscapePath(*req.HostedZoneID), -1) - } - - q := url.Values{} - - if req.MaxItems != nil { - q.Set("maxitems", *req.MaxItems) - } - - if req.StartRecordIdentifier != nil { - q.Set("identifier", *req.StartRecordIdentifier) - } - - if req.StartRecordName != nil { - q.Set("name", *req.StartRecordName) - } - - if req.StartRecordType != nil { - q.Set("type", *req.StartRecordType) - } - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("GET", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - if e := xml.NewDecoder(httpResp.Body).Decode(resp); e != nil && e != io.EOF { - err = e - return - } - - return -} - -// ListReusableDelegationSets to retrieve a list of your reusable -// delegation sets, send a request to the 2013-04-01/delegationset -// resource. The response to this request includes a DelegationSets element -// with zero, one, or multiple DelegationSet child elements. By default, -// the list of delegation sets is displayed on a single page. You can -// control the length of the page that is displayed by using the MaxItems -// parameter. You can use the Marker parameter to control the delegation -// set that the list begins with. Amazon Route 53 returns a maximum of 100 -// items. If you set MaxItems to a value greater than 100, Amazon Route 53 -// returns only the first 100. -func (c *Route53) ListReusableDelegationSets(req *ListReusableDelegationSetsRequest) (resp *ListReusableDelegationSetsResponse, err error) { - resp = &ListReusableDelegationSetsResponse{} - - var body io.Reader - var contentType string - - uri := c.client.Endpoint + "/2013-04-01/delegationset" - - q := url.Values{} - - if req.Marker != nil { - q.Set("marker", *req.Marker) - } - - if req.MaxItems != nil { - q.Set("maxitems", *req.MaxItems) - } - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("GET", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - if e := xml.NewDecoder(httpResp.Body).Decode(resp); e != nil && e != io.EOF { - err = e - return - } - - return -} - -// ListTagsForResource -func (c *Route53) ListTagsForResource(req *ListTagsForResourceRequest) (resp *ListTagsForResourceResponse, err error) { - resp = &ListTagsForResourceResponse{} - - var body io.Reader - var contentType string - - uri := c.client.Endpoint + "/2013-04-01/tags/{ResourceType}/{ResourceId}" - - if req.ResourceID != nil { - uri = strings.Replace(uri, "{"+"ResourceId"+"}", aws.EscapePath(*req.ResourceID), -1) - uri = strings.Replace(uri, "{"+"ResourceId+"+"}", aws.EscapePath(*req.ResourceID), -1) - } - - if req.ResourceType != nil { - uri = strings.Replace(uri, "{"+"ResourceType"+"}", aws.EscapePath(*req.ResourceType), -1) - uri = strings.Replace(uri, "{"+"ResourceType+"+"}", aws.EscapePath(*req.ResourceType), -1) - } - - q := url.Values{} - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("GET", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - if e := xml.NewDecoder(httpResp.Body).Decode(resp); e != nil && e != io.EOF { - err = e - return - } - - return -} - -// ListTagsForResources -func (c *Route53) ListTagsForResources(req *ListTagsForResourcesRequest) (resp *ListTagsForResourcesResponse, err error) { - resp = &ListTagsForResourcesResponse{} - - var body io.Reader - var contentType string - - contentType = "application/xml" - req.XMLName = xml.Name{ - Space: "https://route53.amazonaws.com/doc/2013-04-01/", - Local: "ListTagsForResourcesRequest", - } - b, err := xml.Marshal(req) - if err != nil { - return - } - body = bytes.NewReader(b) - - uri := c.client.Endpoint + "/2013-04-01/tags/{ResourceType}" - - if req.ResourceType != nil { - uri = strings.Replace(uri, "{"+"ResourceType"+"}", aws.EscapePath(*req.ResourceType), -1) - uri = strings.Replace(uri, "{"+"ResourceType+"+"}", aws.EscapePath(*req.ResourceType), -1) - } - - q := url.Values{} - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("POST", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - if e := xml.NewDecoder(httpResp.Body).Decode(resp); e != nil && e != io.EOF { - err = e - return - } - - return -} - -// UpdateHealthCheck this action updates an existing health check. To -// update a health check, send a request to the 2013-04-01/healthcheck/ -// health check resource. The request body must include an XML document -// with an UpdateHealthCheckRequest element. The response returns an -// UpdateHealthCheckResponse element, which contains metadata about the -// health check. -func (c *Route53) UpdateHealthCheck(req *UpdateHealthCheckRequest) (resp *UpdateHealthCheckResponse, err error) { - resp = &UpdateHealthCheckResponse{} - - var body io.Reader - var contentType string - - contentType = "application/xml" - req.XMLName = xml.Name{ - Space: "https://route53.amazonaws.com/doc/2013-04-01/", - Local: "UpdateHealthCheckRequest", - } - b, err := xml.Marshal(req) - if err != nil { - return - } - body = bytes.NewReader(b) - - uri := c.client.Endpoint + "/2013-04-01/healthcheck/{HealthCheckId}" - - if req.HealthCheckID != nil { - uri = strings.Replace(uri, "{"+"HealthCheckId"+"}", aws.EscapePath(*req.HealthCheckID), -1) - uri = strings.Replace(uri, "{"+"HealthCheckId+"+"}", aws.EscapePath(*req.HealthCheckID), -1) - } - - q := url.Values{} - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("POST", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - if e := xml.NewDecoder(httpResp.Body).Decode(resp); e != nil && e != io.EOF { - err = e - return - } - - return -} - -// UpdateHostedZoneComment to update the hosted zone comment, send a -// request to the 2013-04-01/hostedzone/ hosted zone resource. The request -// body must include an XML document with a UpdateHostedZoneCommentRequest -// element. The response to this request includes the modified HostedZone -// element. The comment can have a maximum length of 256 characters. -func (c *Route53) UpdateHostedZoneComment(req *UpdateHostedZoneCommentRequest) (resp *UpdateHostedZoneCommentResponse, err error) { - resp = &UpdateHostedZoneCommentResponse{} - - var body io.Reader - var contentType string - - contentType = "application/xml" - req.XMLName = xml.Name{ - Space: "https://route53.amazonaws.com/doc/2013-04-01/", - Local: "UpdateHostedZoneCommentRequest", - } - b, err := xml.Marshal(req) - if err != nil { - return - } - body = bytes.NewReader(b) - - uri := c.client.Endpoint + "/2013-04-01/hostedzone/{Id}" - - if req.ID != nil { - uri = strings.Replace(uri, "{"+"Id"+"}", aws.EscapePath(*req.ID), -1) - uri = strings.Replace(uri, "{"+"Id+"+"}", aws.EscapePath(*req.ID), -1) - } - - q := url.Values{} - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("POST", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - if e := xml.NewDecoder(httpResp.Body).Decode(resp); e != nil && e != io.EOF { - err = e - return - } - - return -} - -// AliasTarget is undocumented. -type AliasTarget struct { - XMLName xml.Name - - DNSName aws.StringValue `xml:"DNSName"` - EvaluateTargetHealth aws.BooleanValue `xml:"EvaluateTargetHealth"` - HostedZoneID aws.StringValue `xml:"HostedZoneId"` -} - -func (v *AliasTarget) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// AssociateVPCWithHostedZoneRequest is undocumented. -type AssociateVPCWithHostedZoneRequest struct { - XMLName xml.Name - - Comment aws.StringValue `xml:"Comment"` - HostedZoneID aws.StringValue `xml:"-"` - VPC *VPC `xml:"VPC,omitempty"` -} - -func (v *AssociateVPCWithHostedZoneRequest) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// AssociateVPCWithHostedZoneResponse is undocumented. -type AssociateVPCWithHostedZoneResponse struct { - XMLName xml.Name - - ChangeInfo *ChangeInfo `xml:"ChangeInfo,omitempty"` -} - -func (v *AssociateVPCWithHostedZoneResponse) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// Change is undocumented. -type Change struct { - XMLName xml.Name - - Action aws.StringValue `xml:"Action"` - ResourceRecordSet *ResourceRecordSet `xml:"ResourceRecordSet,omitempty"` -} - -func (v *Change) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// Possible values for Route53. -const ( - ChangeActionCreate = "CREATE" - ChangeActionDelete = "DELETE" - ChangeActionUpsert = "UPSERT" -) - -// ChangeBatch is undocumented. -type ChangeBatch struct { - XMLName xml.Name - - Changes []Change `xml:"Changes>Change,omitempty"` - Comment aws.StringValue `xml:"Comment"` -} - -func (v *ChangeBatch) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// ChangeInfo is undocumented. -type ChangeInfo struct { - XMLName xml.Name - - Comment aws.StringValue `xml:"Comment"` - ID aws.StringValue `xml:"Id"` - Status aws.StringValue `xml:"Status"` - SubmittedAt time.Time `xml:"SubmittedAt"` -} - -func (v *ChangeInfo) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// ChangeResourceRecordSetsRequest is undocumented. -type ChangeResourceRecordSetsRequest struct { - XMLName xml.Name - - ChangeBatch *ChangeBatch `xml:"ChangeBatch,omitempty"` - HostedZoneID aws.StringValue `xml:"-"` -} - -func (v *ChangeResourceRecordSetsRequest) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// ChangeResourceRecordSetsResponse is undocumented. -type ChangeResourceRecordSetsResponse struct { - XMLName xml.Name - - ChangeInfo *ChangeInfo `xml:"ChangeInfo,omitempty"` -} - -func (v *ChangeResourceRecordSetsResponse) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// Possible values for Route53. -const ( - ChangeStatusInsync = "INSYNC" - ChangeStatusPending = "PENDING" -) - -// ChangeTagsForResourceRequest is undocumented. -type ChangeTagsForResourceRequest struct { - XMLName xml.Name - - AddTags []Tag `xml:"AddTags>Tag,omitempty"` - RemoveTagKeys []string `xml:"RemoveTagKeys>Key,omitempty"` - ResourceID aws.StringValue `xml:"-"` - ResourceType aws.StringValue `xml:"-"` -} - -func (v *ChangeTagsForResourceRequest) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// ChangeTagsForResourceResponse is undocumented. -type ChangeTagsForResourceResponse struct { - XMLName xml.Name -} - -func (v *ChangeTagsForResourceResponse) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// CreateHealthCheckRequest is undocumented. -type CreateHealthCheckRequest struct { - XMLName xml.Name - - CallerReference aws.StringValue `xml:"CallerReference"` - HealthCheckConfig *HealthCheckConfig `xml:"HealthCheckConfig,omitempty"` -} - -func (v *CreateHealthCheckRequest) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// CreateHealthCheckResponse is undocumented. -type CreateHealthCheckResponse struct { - XMLName xml.Name - - HealthCheck *HealthCheck `xml:"HealthCheck,omitempty"` - Location aws.StringValue `xml:"-"` -} - -func (v *CreateHealthCheckResponse) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// CreateHostedZoneRequest is undocumented. -type CreateHostedZoneRequest struct { - XMLName xml.Name - - CallerReference aws.StringValue `xml:"CallerReference"` - DelegationSetID aws.StringValue `xml:"DelegationSetId"` - HostedZoneConfig *HostedZoneConfig `xml:"HostedZoneConfig,omitempty"` - Name aws.StringValue `xml:"Name"` - VPC *VPC `xml:"VPC,omitempty"` -} - -func (v *CreateHostedZoneRequest) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// CreateHostedZoneResponse is undocumented. -type CreateHostedZoneResponse struct { - XMLName xml.Name - - ChangeInfo *ChangeInfo `xml:"ChangeInfo,omitempty"` - DelegationSet *DelegationSet `xml:"DelegationSet,omitempty"` - HostedZone *HostedZone `xml:"HostedZone,omitempty"` - Location aws.StringValue `xml:"-"` - VPC *VPC `xml:"VPC,omitempty"` -} - -func (v *CreateHostedZoneResponse) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// CreateReusableDelegationSetRequest is undocumented. -type CreateReusableDelegationSetRequest struct { - XMLName xml.Name - - CallerReference aws.StringValue `xml:"CallerReference"` - HostedZoneID aws.StringValue `xml:"HostedZoneId"` -} - -func (v *CreateReusableDelegationSetRequest) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// CreateReusableDelegationSetResponse is undocumented. -type CreateReusableDelegationSetResponse struct { - XMLName xml.Name - - DelegationSet *DelegationSet `xml:"DelegationSet,omitempty"` - Location aws.StringValue `xml:"-"` -} - -func (v *CreateReusableDelegationSetResponse) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// DelegationSet is undocumented. -type DelegationSet struct { - XMLName xml.Name - - CallerReference aws.StringValue `xml:"CallerReference"` - ID aws.StringValue `xml:"Id"` - NameServers []string `xml:"NameServers>NameServer,omitempty"` -} - -func (v *DelegationSet) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// DeleteHealthCheckRequest is undocumented. -type DeleteHealthCheckRequest struct { - XMLName xml.Name - - HealthCheckID aws.StringValue `xml:"-"` -} - -func (v *DeleteHealthCheckRequest) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// DeleteHealthCheckResponse is undocumented. -type DeleteHealthCheckResponse struct { - XMLName xml.Name -} - -func (v *DeleteHealthCheckResponse) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// DeleteHostedZoneRequest is undocumented. -type DeleteHostedZoneRequest struct { - XMLName xml.Name - - ID aws.StringValue `xml:"-"` -} - -func (v *DeleteHostedZoneRequest) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// DeleteHostedZoneResponse is undocumented. -type DeleteHostedZoneResponse struct { - XMLName xml.Name - - ChangeInfo *ChangeInfo `xml:"ChangeInfo,omitempty"` -} - -func (v *DeleteHostedZoneResponse) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// DeleteReusableDelegationSetRequest is undocumented. -type DeleteReusableDelegationSetRequest struct { - XMLName xml.Name - - ID aws.StringValue `xml:"-"` -} - -func (v *DeleteReusableDelegationSetRequest) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// DeleteReusableDelegationSetResponse is undocumented. -type DeleteReusableDelegationSetResponse struct { - XMLName xml.Name -} - -func (v *DeleteReusableDelegationSetResponse) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// DisassociateVPCFromHostedZoneRequest is undocumented. -type DisassociateVPCFromHostedZoneRequest struct { - XMLName xml.Name - - Comment aws.StringValue `xml:"Comment"` - HostedZoneID aws.StringValue `xml:"-"` - VPC *VPC `xml:"VPC,omitempty"` -} - -func (v *DisassociateVPCFromHostedZoneRequest) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// DisassociateVPCFromHostedZoneResponse is undocumented. -type DisassociateVPCFromHostedZoneResponse struct { - XMLName xml.Name - - ChangeInfo *ChangeInfo `xml:"ChangeInfo,omitempty"` -} - -func (v *DisassociateVPCFromHostedZoneResponse) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// GeoLocation is undocumented. -type GeoLocation struct { - XMLName xml.Name - - ContinentCode aws.StringValue `xml:"ContinentCode"` - CountryCode aws.StringValue `xml:"CountryCode"` - SubdivisionCode aws.StringValue `xml:"SubdivisionCode"` -} - -func (v *GeoLocation) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// GeoLocationDetails is undocumented. -type GeoLocationDetails struct { - XMLName xml.Name - - ContinentCode aws.StringValue `xml:"ContinentCode"` - ContinentName aws.StringValue `xml:"ContinentName"` - CountryCode aws.StringValue `xml:"CountryCode"` - CountryName aws.StringValue `xml:"CountryName"` - SubdivisionCode aws.StringValue `xml:"SubdivisionCode"` - SubdivisionName aws.StringValue `xml:"SubdivisionName"` -} - -func (v *GeoLocationDetails) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// GetChangeRequest is undocumented. -type GetChangeRequest struct { - XMLName xml.Name - - ID aws.StringValue `xml:"-"` -} - -func (v *GetChangeRequest) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// GetChangeResponse is undocumented. -type GetChangeResponse struct { - XMLName xml.Name - - ChangeInfo *ChangeInfo `xml:"ChangeInfo,omitempty"` -} - -func (v *GetChangeResponse) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// GetCheckerIPRangesRequest is undocumented. -type GetCheckerIPRangesRequest struct { - XMLName xml.Name -} - -func (v *GetCheckerIPRangesRequest) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// GetCheckerIPRangesResponse is undocumented. -type GetCheckerIPRangesResponse struct { - XMLName xml.Name - - CheckerIPRanges []string `xml:"CheckerIpRanges,omitempty"` -} - -func (v *GetCheckerIPRangesResponse) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// GetGeoLocationRequest is undocumented. -type GetGeoLocationRequest struct { - XMLName xml.Name - - ContinentCode aws.StringValue `xml:"-"` - CountryCode aws.StringValue `xml:"-"` - SubdivisionCode aws.StringValue `xml:"-"` -} - -func (v *GetGeoLocationRequest) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// GetGeoLocationResponse is undocumented. -type GetGeoLocationResponse struct { - XMLName xml.Name - - GeoLocationDetails *GeoLocationDetails `xml:"GeoLocationDetails,omitempty"` -} - -func (v *GetGeoLocationResponse) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// GetHealthCheckCountRequest is undocumented. -type GetHealthCheckCountRequest struct { - XMLName xml.Name -} - -func (v *GetHealthCheckCountRequest) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// GetHealthCheckCountResponse is undocumented. -type GetHealthCheckCountResponse struct { - XMLName xml.Name - - HealthCheckCount aws.LongValue `xml:"HealthCheckCount"` -} - -func (v *GetHealthCheckCountResponse) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// GetHealthCheckLastFailureReasonRequest is undocumented. -type GetHealthCheckLastFailureReasonRequest struct { - XMLName xml.Name - - HealthCheckID aws.StringValue `xml:"-"` -} - -func (v *GetHealthCheckLastFailureReasonRequest) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// GetHealthCheckLastFailureReasonResponse is undocumented. -type GetHealthCheckLastFailureReasonResponse struct { - XMLName xml.Name - - HealthCheckObservations []HealthCheckObservation `xml:"HealthCheckObservations>HealthCheckObservation,omitempty"` -} - -func (v *GetHealthCheckLastFailureReasonResponse) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// GetHealthCheckRequest is undocumented. -type GetHealthCheckRequest struct { - XMLName xml.Name - - HealthCheckID aws.StringValue `xml:"-"` -} - -func (v *GetHealthCheckRequest) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// GetHealthCheckResponse is undocumented. -type GetHealthCheckResponse struct { - XMLName xml.Name - - HealthCheck *HealthCheck `xml:"HealthCheck,omitempty"` -} - -func (v *GetHealthCheckResponse) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// GetHealthCheckStatusRequest is undocumented. -type GetHealthCheckStatusRequest struct { - XMLName xml.Name - - HealthCheckID aws.StringValue `xml:"-"` -} - -func (v *GetHealthCheckStatusRequest) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// GetHealthCheckStatusResponse is undocumented. -type GetHealthCheckStatusResponse struct { - XMLName xml.Name - - HealthCheckObservations []HealthCheckObservation `xml:"HealthCheckObservations>HealthCheckObservation,omitempty"` -} - -func (v *GetHealthCheckStatusResponse) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// GetHostedZoneRequest is undocumented. -type GetHostedZoneRequest struct { - XMLName xml.Name - - ID aws.StringValue `xml:"-"` -} - -func (v *GetHostedZoneRequest) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// GetHostedZoneResponse is undocumented. -type GetHostedZoneResponse struct { - XMLName xml.Name - - DelegationSet *DelegationSet `xml:"DelegationSet,omitempty"` - HostedZone *HostedZone `xml:"HostedZone,omitempty"` - VPCs []VPC `xml:"VPCs>VPC,omitempty"` -} - -func (v *GetHostedZoneResponse) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// GetReusableDelegationSetRequest is undocumented. -type GetReusableDelegationSetRequest struct { - XMLName xml.Name - - ID aws.StringValue `xml:"-"` -} - -func (v *GetReusableDelegationSetRequest) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// GetReusableDelegationSetResponse is undocumented. -type GetReusableDelegationSetResponse struct { - XMLName xml.Name - - DelegationSet *DelegationSet `xml:"DelegationSet,omitempty"` -} - -func (v *GetReusableDelegationSetResponse) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// HealthCheck is undocumented. -type HealthCheck struct { - XMLName xml.Name - - CallerReference aws.StringValue `xml:"CallerReference"` - HealthCheckConfig *HealthCheckConfig `xml:"HealthCheckConfig,omitempty"` - HealthCheckVersion aws.LongValue `xml:"HealthCheckVersion"` - ID aws.StringValue `xml:"Id"` -} - -func (v *HealthCheck) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// HealthCheckConfig is undocumented. -type HealthCheckConfig struct { - XMLName xml.Name - - FailureThreshold aws.IntegerValue `xml:"FailureThreshold"` - FullyQualifiedDomainName aws.StringValue `xml:"FullyQualifiedDomainName"` - IPAddress aws.StringValue `xml:"IPAddress"` - Port aws.IntegerValue `xml:"Port"` - RequestInterval aws.IntegerValue `xml:"RequestInterval"` - ResourcePath aws.StringValue `xml:"ResourcePath"` - SearchString aws.StringValue `xml:"SearchString"` - Type aws.StringValue `xml:"Type"` -} - -func (v *HealthCheckConfig) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// HealthCheckObservation is undocumented. -type HealthCheckObservation struct { - XMLName xml.Name - - IPAddress aws.StringValue `xml:"IPAddress"` - StatusReport *StatusReport `xml:"StatusReport,omitempty"` -} - -func (v *HealthCheckObservation) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// Possible values for Route53. -const ( - HealthCheckTypeHTTP = "HTTP" - HealthCheckTypeHTTPS = "HTTPS" - HealthCheckTypeHTTPSStrMatch = "HTTPS_STR_MATCH" - HealthCheckTypeHTTPStrMatch = "HTTP_STR_MATCH" - HealthCheckTypeTCP = "TCP" -) - -// HostedZone is undocumented. -type HostedZone struct { - XMLName xml.Name - - CallerReference aws.StringValue `xml:"CallerReference"` - Config *HostedZoneConfig `xml:"Config,omitempty"` - ID aws.StringValue `xml:"Id"` - Name aws.StringValue `xml:"Name"` - ResourceRecordSetCount aws.LongValue `xml:"ResourceRecordSetCount"` -} - -func (v *HostedZone) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// HostedZoneConfig is undocumented. -type HostedZoneConfig struct { - XMLName xml.Name - - Comment aws.StringValue `xml:"Comment"` - PrivateZone aws.BooleanValue `xml:"PrivateZone"` -} - -func (v *HostedZoneConfig) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// ListGeoLocationsRequest is undocumented. -type ListGeoLocationsRequest struct { - XMLName xml.Name - - MaxItems aws.StringValue `xml:"-"` - StartContinentCode aws.StringValue `xml:"-"` - StartCountryCode aws.StringValue `xml:"-"` - StartSubdivisionCode aws.StringValue `xml:"-"` -} - -func (v *ListGeoLocationsRequest) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// ListGeoLocationsResponse is undocumented. -type ListGeoLocationsResponse struct { - XMLName xml.Name - - GeoLocationDetailsList []GeoLocationDetails `xml:"GeoLocationDetailsList>GeoLocationDetails,omitempty"` - IsTruncated aws.BooleanValue `xml:"IsTruncated"` - MaxItems aws.StringValue `xml:"MaxItems"` - NextContinentCode aws.StringValue `xml:"NextContinentCode"` - NextCountryCode aws.StringValue `xml:"NextCountryCode"` - NextSubdivisionCode aws.StringValue `xml:"NextSubdivisionCode"` -} - -func (v *ListGeoLocationsResponse) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// ListHealthChecksRequest is undocumented. -type ListHealthChecksRequest struct { - XMLName xml.Name - - Marker aws.StringValue `xml:"-"` - MaxItems aws.StringValue `xml:"-"` -} - -func (v *ListHealthChecksRequest) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// ListHealthChecksResponse is undocumented. -type ListHealthChecksResponse struct { - XMLName xml.Name - - HealthChecks []HealthCheck `xml:"HealthChecks>HealthCheck,omitempty"` - IsTruncated aws.BooleanValue `xml:"IsTruncated"` - Marker aws.StringValue `xml:"Marker"` - MaxItems aws.StringValue `xml:"MaxItems"` - NextMarker aws.StringValue `xml:"NextMarker"` -} - -func (v *ListHealthChecksResponse) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// ListHostedZonesRequest is undocumented. -type ListHostedZonesRequest struct { - XMLName xml.Name - - DelegationSetID aws.StringValue `xml:"-"` - Marker aws.StringValue `xml:"-"` - MaxItems aws.StringValue `xml:"-"` -} - -func (v *ListHostedZonesRequest) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// ListHostedZonesResponse is undocumented. -type ListHostedZonesResponse struct { - XMLName xml.Name - - HostedZones []HostedZone `xml:"HostedZones>HostedZone,omitempty"` - IsTruncated aws.BooleanValue `xml:"IsTruncated"` - Marker aws.StringValue `xml:"Marker"` - MaxItems aws.StringValue `xml:"MaxItems"` - NextMarker aws.StringValue `xml:"NextMarker"` -} - -func (v *ListHostedZonesResponse) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// ListResourceRecordSetsRequest is undocumented. -type ListResourceRecordSetsRequest struct { - XMLName xml.Name - - HostedZoneID aws.StringValue `xml:"-"` - MaxItems aws.StringValue `xml:"-"` - StartRecordIdentifier aws.StringValue `xml:"-"` - StartRecordName aws.StringValue `xml:"-"` - StartRecordType aws.StringValue `xml:"-"` -} - -func (v *ListResourceRecordSetsRequest) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// ListResourceRecordSetsResponse is undocumented. -type ListResourceRecordSetsResponse struct { - XMLName xml.Name - - IsTruncated aws.BooleanValue `xml:"IsTruncated"` - MaxItems aws.StringValue `xml:"MaxItems"` - NextRecordIdentifier aws.StringValue `xml:"NextRecordIdentifier"` - NextRecordName aws.StringValue `xml:"NextRecordName"` - NextRecordType aws.StringValue `xml:"NextRecordType"` - ResourceRecordSets []ResourceRecordSet `xml:"ResourceRecordSets>ResourceRecordSet,omitempty"` -} - -func (v *ListResourceRecordSetsResponse) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// ListReusableDelegationSetsRequest is undocumented. -type ListReusableDelegationSetsRequest struct { - XMLName xml.Name - - Marker aws.StringValue `xml:"-"` - MaxItems aws.StringValue `xml:"-"` -} - -func (v *ListReusableDelegationSetsRequest) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// ListReusableDelegationSetsResponse is undocumented. -type ListReusableDelegationSetsResponse struct { - XMLName xml.Name - - DelegationSets []DelegationSet `xml:"DelegationSets>DelegationSet,omitempty"` - IsTruncated aws.BooleanValue `xml:"IsTruncated"` - Marker aws.StringValue `xml:"Marker"` - MaxItems aws.StringValue `xml:"MaxItems"` - NextMarker aws.StringValue `xml:"NextMarker"` -} - -func (v *ListReusableDelegationSetsResponse) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// ListTagsForResourceRequest is undocumented. -type ListTagsForResourceRequest struct { - XMLName xml.Name - - ResourceID aws.StringValue `xml:"-"` - ResourceType aws.StringValue `xml:"-"` -} - -func (v *ListTagsForResourceRequest) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// ListTagsForResourceResponse is undocumented. -type ListTagsForResourceResponse struct { - XMLName xml.Name - - ResourceTagSet *ResourceTagSet `xml:"ResourceTagSet,omitempty"` -} - -func (v *ListTagsForResourceResponse) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// ListTagsForResourcesRequest is undocumented. -type ListTagsForResourcesRequest struct { - XMLName xml.Name - - ResourceIDs []string `xml:"ResourceIds>ResourceId,omitempty"` - ResourceType aws.StringValue `xml:"-"` -} - -func (v *ListTagsForResourcesRequest) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// ListTagsForResourcesResponse is undocumented. -type ListTagsForResourcesResponse struct { - XMLName xml.Name - - ResourceTagSets []ResourceTagSet `xml:"ResourceTagSets>ResourceTagSet,omitempty"` -} - -func (v *ListTagsForResourcesResponse) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// Possible values for Route53. -const ( - RRTypeA = "A" - RRTypeAaaa = "AAAA" - RRTypeCname = "CNAME" - RRTypeMx = "MX" - RRTypeNs = "NS" - RRTypePtr = "PTR" - RRTypeSoa = "SOA" - RRTypeSpf = "SPF" - RRTypeSrv = "SRV" - RRTypeTxt = "TXT" -) - -// ResourceRecord is undocumented. -type ResourceRecord struct { - XMLName xml.Name - - Value aws.StringValue `xml:"Value"` -} - -func (v *ResourceRecord) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// ResourceRecordSet is undocumented. -type ResourceRecordSet struct { - XMLName xml.Name - - AliasTarget *AliasTarget `xml:"AliasTarget,omitempty"` - Failover aws.StringValue `xml:"Failover"` - GeoLocation *GeoLocation `xml:"GeoLocation,omitempty"` - HealthCheckID aws.StringValue `xml:"HealthCheckId"` - Name aws.StringValue `xml:"Name"` - Region aws.StringValue `xml:"Region"` - ResourceRecords []ResourceRecord `xml:"ResourceRecords>ResourceRecord,omitempty"` - SetIdentifier aws.StringValue `xml:"SetIdentifier"` - TTL aws.LongValue `xml:"TTL"` - Type aws.StringValue `xml:"Type"` - Weight aws.LongValue `xml:"Weight"` -} - -func (v *ResourceRecordSet) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// Possible values for Route53. -const ( - ResourceRecordSetFailoverPrimary = "PRIMARY" - ResourceRecordSetFailoverSecondary = "SECONDARY" -) - -// Possible values for Route53. -const ( - ResourceRecordSetRegionApNortheast1 = "ap-northeast-1" - ResourceRecordSetRegionApSoutheast1 = "ap-southeast-1" - ResourceRecordSetRegionApSoutheast2 = "ap-southeast-2" - ResourceRecordSetRegionCnNorth1 = "cn-north-1" - ResourceRecordSetRegionEuCentral1 = "eu-central-1" - ResourceRecordSetRegionEuWest1 = "eu-west-1" - ResourceRecordSetRegionSaEast1 = "sa-east-1" - ResourceRecordSetRegionUsEast1 = "us-east-1" - ResourceRecordSetRegionUsWest1 = "us-west-1" - ResourceRecordSetRegionUsWest2 = "us-west-2" -) - -// ResourceTagSet is undocumented. -type ResourceTagSet struct { - XMLName xml.Name - - ResourceID aws.StringValue `xml:"ResourceId"` - ResourceType aws.StringValue `xml:"ResourceType"` - Tags []Tag `xml:"Tags>Tag,omitempty"` -} - -func (v *ResourceTagSet) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// StatusReport is undocumented. -type StatusReport struct { - XMLName xml.Name - - CheckedTime time.Time `xml:"CheckedTime"` - Status aws.StringValue `xml:"Status"` -} - -func (v *StatusReport) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// Tag is undocumented. -type Tag struct { - XMLName xml.Name - - Key aws.StringValue `xml:"Key"` - Value aws.StringValue `xml:"Value"` -} - -func (v *Tag) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// Possible values for Route53. -const ( - TagResourceTypeHealthcheck = "healthcheck" - TagResourceTypeHostedzone = "hostedzone" -) - -// UpdateHealthCheckRequest is undocumented. -type UpdateHealthCheckRequest struct { - XMLName xml.Name - - FailureThreshold aws.IntegerValue `xml:"FailureThreshold"` - FullyQualifiedDomainName aws.StringValue `xml:"FullyQualifiedDomainName"` - HealthCheckID aws.StringValue `xml:"-"` - HealthCheckVersion aws.LongValue `xml:"HealthCheckVersion"` - IPAddress aws.StringValue `xml:"IPAddress"` - Port aws.IntegerValue `xml:"Port"` - ResourcePath aws.StringValue `xml:"ResourcePath"` - SearchString aws.StringValue `xml:"SearchString"` -} - -func (v *UpdateHealthCheckRequest) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// UpdateHealthCheckResponse is undocumented. -type UpdateHealthCheckResponse struct { - XMLName xml.Name - - HealthCheck *HealthCheck `xml:"HealthCheck,omitempty"` -} - -func (v *UpdateHealthCheckResponse) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// UpdateHostedZoneCommentRequest is undocumented. -type UpdateHostedZoneCommentRequest struct { - XMLName xml.Name - - Comment aws.StringValue `xml:"Comment"` - ID aws.StringValue `xml:"-"` -} - -func (v *UpdateHostedZoneCommentRequest) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// UpdateHostedZoneCommentResponse is undocumented. -type UpdateHostedZoneCommentResponse struct { - XMLName xml.Name - - HostedZone *HostedZone `xml:"HostedZone,omitempty"` -} - -func (v *UpdateHostedZoneCommentResponse) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// VPC is undocumented. -type VPC struct { - XMLName xml.Name - - VPCID aws.StringValue `xml:"VPCId"` - VPCRegion aws.StringValue `xml:"VPCRegion"` -} - -func (v *VPC) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// Possible values for Route53. -const ( - VPCRegionApNortheast1 = "ap-northeast-1" - VPCRegionApSoutheast1 = "ap-southeast-1" - VPCRegionApSoutheast2 = "ap-southeast-2" - VPCRegionCnNorth1 = "cn-north-1" - VPCRegionEuCentral1 = "eu-central-1" - VPCRegionEuWest1 = "eu-west-1" - VPCRegionSaEast1 = "sa-east-1" - VPCRegionUsEast1 = "us-east-1" - VPCRegionUsWest1 = "us-west-1" - VPCRegionUsWest2 = "us-west-2" -) - -// avoid errors if the packages aren't referenced -var _ time.Time - -var _ bytes.Reader -var _ url.URL -var _ fmt.Stringer -var _ strings.Reader -var _ strconv.NumError -var _ = ioutil.Discard diff --git a/src/github.com/getlantern/aws-sdk-go/gen/route53domains/route53domains.go b/src/github.com/getlantern/aws-sdk-go/gen/route53domains/route53domains.go deleted file mode 100644 index 3478c6b8e1..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/gen/route53domains/route53domains.go +++ /dev/null @@ -1,775 +0,0 @@ -// THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. - -// Package route53domains provides a client for Amazon Route 53 Domains. -package route53domains - -import ( - "net/http" - "time" - - "github.com/awslabs/aws-sdk-go/aws" - "github.com/awslabs/aws-sdk-go/gen/endpoints" -) - -// Route53Domains is a client for Amazon Route 53 Domains. -type Route53Domains struct { - client *aws.JSONClient -} - -// New returns a new Route53Domains client. -func New(creds aws.CredentialsProvider, region string, client *http.Client) *Route53Domains { - if client == nil { - client = http.DefaultClient - } - - endpoint, service, region := endpoints.Lookup("route53domains", region) - - return &Route53Domains{ - client: &aws.JSONClient{ - Context: aws.Context{ - Credentials: creds, - Service: service, - Region: region, - }, Client: client, - Endpoint: endpoint, - JSONVersion: "1.1", - TargetPrefix: "Route53Domains_v20140515", - }, - } -} - -// CheckDomainAvailability this operation checks the availability of one -// domain name. You can access this API without authenticating. Note that -// if the availability status of a domain is pending, you must submit -// another request to determine the availability of the domain name. -func (c *Route53Domains) CheckDomainAvailability(req *CheckDomainAvailabilityRequest) (resp *CheckDomainAvailabilityResponse, err error) { - resp = &CheckDomainAvailabilityResponse{} - err = c.client.Do("CheckDomainAvailability", "POST", "/", req, resp) - return -} - -// DisableDomainAutoRenew this operation disables automatic renewal of -// domain registration for the specified domain. -func (c *Route53Domains) DisableDomainAutoRenew(req *DisableDomainAutoRenewRequest) (resp *DisableDomainAutoRenewResponse, err error) { - resp = &DisableDomainAutoRenewResponse{} - err = c.client.Do("DisableDomainAutoRenew", "POST", "/", req, resp) - return -} - -// DisableDomainTransferLock this operation removes the transfer lock on -// the domain (specifically the clientTransferProhibited status) to allow -// domain transfers. We recommend you refrain from performing this action -// unless you intend to transfer the domain to a different registrar. -// Successful submission returns an operation ID that you can use to track -// the progress and completion of the action. If the request is not -// completed successfully, the domain registrant will be notified by email. -func (c *Route53Domains) DisableDomainTransferLock(req *DisableDomainTransferLockRequest) (resp *DisableDomainTransferLockResponse, err error) { - resp = &DisableDomainTransferLockResponse{} - err = c.client.Do("DisableDomainTransferLock", "POST", "/", req, resp) - return -} - -// EnableDomainAutoRenew this operation configures Amazon Route 53 to -// automatically renew the specified domain before the domain registration -// expires. The cost of renewing your domain registration is billed to your -// AWS account. The period during which you can renew a domain name varies -// by For a list of TLDs and their renewal policies, see "Renewal, -// restoration, and deletion times" -// (http://wiki.gandi.net/en/domains/renew#renewal_restoration_and_deletion_times) -// on the website for our registrar partner, Gandi. Route 53 requires that -// you renew before the end of the renewal period that is listed on the -// Gandi website so we can complete processing before the deadline. -func (c *Route53Domains) EnableDomainAutoRenew(req *EnableDomainAutoRenewRequest) (resp *EnableDomainAutoRenewResponse, err error) { - resp = &EnableDomainAutoRenewResponse{} - err = c.client.Do("EnableDomainAutoRenew", "POST", "/", req, resp) - return -} - -// EnableDomainTransferLock this operation sets the transfer lock on the -// domain (specifically the clientTransferProhibited status) to prevent -// domain transfers. Successful submission returns an operation ID that you -// can use to track the progress and completion of the action. If the -// request is not completed successfully, the domain registrant will be -// notified by email. -func (c *Route53Domains) EnableDomainTransferLock(req *EnableDomainTransferLockRequest) (resp *EnableDomainTransferLockResponse, err error) { - resp = &EnableDomainTransferLockResponse{} - err = c.client.Do("EnableDomainTransferLock", "POST", "/", req, resp) - return -} - -// GetDomainDetail this operation returns detailed information about the -// domain. The domain's contact information is also returned as part of the -// output. -func (c *Route53Domains) GetDomainDetail(req *GetDomainDetailRequest) (resp *GetDomainDetailResponse, err error) { - resp = &GetDomainDetailResponse{} - err = c.client.Do("GetDomainDetail", "POST", "/", req, resp) - return -} - -// GetOperationDetail this operation returns the current status of an -// operation that is not completed. -func (c *Route53Domains) GetOperationDetail(req *GetOperationDetailRequest) (resp *GetOperationDetailResponse, err error) { - resp = &GetOperationDetailResponse{} - err = c.client.Do("GetOperationDetail", "POST", "/", req, resp) - return -} - -// ListDomains this operation returns all the domain names registered with -// Amazon Route 53 for the current AWS account. -func (c *Route53Domains) ListDomains(req *ListDomainsRequest) (resp *ListDomainsResponse, err error) { - resp = &ListDomainsResponse{} - err = c.client.Do("ListDomains", "POST", "/", req, resp) - return -} - -// ListOperations this operation returns the operation IDs of operations -// that are not yet complete. -func (c *Route53Domains) ListOperations(req *ListOperationsRequest) (resp *ListOperationsResponse, err error) { - resp = &ListOperationsResponse{} - err = c.client.Do("ListOperations", "POST", "/", req, resp) - return -} - -// RegisterDomain this operation registers a domain. Domains are registered -// by the AWS registrar partner, Gandi. For some top-level domains (TLDs), -// this operation requires extra parameters. When you register a domain, -// Amazon Route 53 does the following: Creates a Amazon Route 53 hosted -// zone that has the same name as the domain. Amazon Route 53 assigns four -// name servers to your hosted zone and automatically updates your domain -// registration with the names of these name servers. Enables autorenew, so -// your domain registration will renew automatically each year. We'll -// notify you in advance of the renewal date so you can choose whether to -// renew the registration. Optionally enables privacy protection, so -// queries return contact information for our registrar partner, Gandi, -// instead of the information you entered for registrant, admin, and tech -// contacts. If registration is successful, returns an operation ID that -// you can use to track the progress and completion of the action. If the -// request is not completed successfully, the domain registrant is notified -// by email. Charges your AWS account an amount based on the top-level -// domain. For more information, see Amazon Route 53 Pricing -func (c *Route53Domains) RegisterDomain(req *RegisterDomainRequest) (resp *RegisterDomainResponse, err error) { - resp = &RegisterDomainResponse{} - err = c.client.Do("RegisterDomain", "POST", "/", req, resp) - return -} - -// RetrieveDomainAuthCode this operation returns the AuthCode for the -// domain. To transfer a domain to another registrar, you provide this -// value to the new registrar. -func (c *Route53Domains) RetrieveDomainAuthCode(req *RetrieveDomainAuthCodeRequest) (resp *RetrieveDomainAuthCodeResponse, err error) { - resp = &RetrieveDomainAuthCodeResponse{} - err = c.client.Do("RetrieveDomainAuthCode", "POST", "/", req, resp) - return -} - -// TransferDomain this operation transfers a domain from another registrar -// to Amazon Route 53. Domains are registered by the AWS registrar, Gandi -// upon transfer. To transfer a domain, you need to meet all the domain -// transfer criteria, including the following: You must supply nameservers -// to transfer a domain. You must disable the domain transfer lock (if any) -// before transferring the domain. A minimum of 60 days must have elapsed -// since the domain's registration or last transfer. We recommend you use -// the Amazon Route 53 as the DNS service for your domain. You can create a -// hosted zone in Amazon Route 53 for your current domain before -// transferring your domain. Note that upon transfer, the domain duration -// is extended for a year if not otherwise specified. Autorenew is enabled -// by default. If the transfer is successful, this method returns an -// operation ID that you can use to track the progress and completion of -// the action. If the request is not completed successfully, the domain -// registrant will be notified by email. Transferring domains charges your -// AWS account an amount based on the top-level domain. For more -// information, see Amazon Route 53 Pricing . -func (c *Route53Domains) TransferDomain(req *TransferDomainRequest) (resp *TransferDomainResponse, err error) { - resp = &TransferDomainResponse{} - err = c.client.Do("TransferDomain", "POST", "/", req, resp) - return -} - -// UpdateDomainContact this operation updates the contact information for a -// particular domain. Information for at least one contact (registrant, -// administrator, or technical) must be supplied for update. If the update -// is successful, this method returns an operation ID that you can use to -// track the progress and completion of the action. If the request is not -// completed successfully, the domain registrant will be notified by email. -func (c *Route53Domains) UpdateDomainContact(req *UpdateDomainContactRequest) (resp *UpdateDomainContactResponse, err error) { - resp = &UpdateDomainContactResponse{} - err = c.client.Do("UpdateDomainContact", "POST", "/", req, resp) - return -} - -// UpdateDomainContactPrivacy this operation updates the specified domain -// contact's privacy setting. When the privacy option is enabled, personal -// information such as postal or email address is hidden from the results -// of a public query. The privacy services are provided by the AWS -// registrar, Gandi. For more information, see the Gandi privacy features -// This operation only affects the privacy of the specified contact type -// (registrant, administrator, or tech). Successful acceptance returns an -// operation ID that you can use with GetOperationDetail to track the -// progress and completion of the action. If the request is not completed -// successfully, the domain registrant will be notified by email. -func (c *Route53Domains) UpdateDomainContactPrivacy(req *UpdateDomainContactPrivacyRequest) (resp *UpdateDomainContactPrivacyResponse, err error) { - resp = &UpdateDomainContactPrivacyResponse{} - err = c.client.Do("UpdateDomainContactPrivacy", "POST", "/", req, resp) - return -} - -// UpdateDomainNameservers this operation replaces the current set of name -// servers for the domain with the specified set of name servers. If you -// use Amazon Route 53 as your DNS service, specify the four name servers -// in the delegation set for the hosted zone for the domain. If successful, -// this operation returns an operation ID that you can use to track the -// progress and completion of the action. If the request is not completed -// successfully, the domain registrant will be notified by email. -func (c *Route53Domains) UpdateDomainNameservers(req *UpdateDomainNameserversRequest) (resp *UpdateDomainNameserversResponse, err error) { - resp = &UpdateDomainNameserversResponse{} - err = c.client.Do("UpdateDomainNameservers", "POST", "/", req, resp) - return -} - -// CheckDomainAvailabilityRequest is undocumented. -type CheckDomainAvailabilityRequest struct { - DomainName aws.StringValue `json:"DomainName"` - IDNLangCode aws.StringValue `json:"IdnLangCode,omitempty"` -} - -// CheckDomainAvailabilityResponse is undocumented. -type CheckDomainAvailabilityResponse struct { - Availability aws.StringValue `json:"Availability"` -} - -// ContactDetail is undocumented. -type ContactDetail struct { - AddressLine1 aws.StringValue `json:"AddressLine1,omitempty"` - AddressLine2 aws.StringValue `json:"AddressLine2,omitempty"` - City aws.StringValue `json:"City,omitempty"` - ContactType aws.StringValue `json:"ContactType,omitempty"` - CountryCode aws.StringValue `json:"CountryCode,omitempty"` - Email aws.StringValue `json:"Email,omitempty"` - ExtraParams []ExtraParam `json:"ExtraParams,omitempty"` - Fax aws.StringValue `json:"Fax,omitempty"` - FirstName aws.StringValue `json:"FirstName,omitempty"` - LastName aws.StringValue `json:"LastName,omitempty"` - OrganizationName aws.StringValue `json:"OrganizationName,omitempty"` - PhoneNumber aws.StringValue `json:"PhoneNumber,omitempty"` - State aws.StringValue `json:"State,omitempty"` - ZipCode aws.StringValue `json:"ZipCode,omitempty"` -} - -// Possible values for Route53Domains. -const ( - ContactTypeAssociation = "ASSOCIATION" - ContactTypeCompany = "COMPANY" - ContactTypePerson = "PERSON" - ContactTypePublicBody = "PUBLIC_BODY" - ContactTypeReseller = "RESELLER" -) - -// Possible values for Route53Domains. -const ( - CountryCodeAd = "AD" - CountryCodeAe = "AE" - CountryCodeAf = "AF" - CountryCodeAg = "AG" - CountryCodeAi = "AI" - CountryCodeAl = "AL" - CountryCodeAm = "AM" - CountryCodeAn = "AN" - CountryCodeAo = "AO" - CountryCodeAq = "AQ" - CountryCodeAr = "AR" - CountryCodeAs = "AS" - CountryCodeAt = "AT" - CountryCodeAu = "AU" - CountryCodeAw = "AW" - CountryCodeAz = "AZ" - CountryCodeBa = "BA" - CountryCodeBb = "BB" - CountryCodeBd = "BD" - CountryCodeBe = "BE" - CountryCodeBf = "BF" - CountryCodeBg = "BG" - CountryCodeBh = "BH" - CountryCodeBi = "BI" - CountryCodeBj = "BJ" - CountryCodeBl = "BL" - CountryCodeBm = "BM" - CountryCodeBn = "BN" - CountryCodeBo = "BO" - CountryCodeBr = "BR" - CountryCodeBs = "BS" - CountryCodeBt = "BT" - CountryCodeBw = "BW" - CountryCodeBy = "BY" - CountryCodeBz = "BZ" - CountryCodeCa = "CA" - CountryCodeCc = "CC" - CountryCodeCd = "CD" - CountryCodeCf = "CF" - CountryCodeCg = "CG" - CountryCodeCh = "CH" - CountryCodeCi = "CI" - CountryCodeCk = "CK" - CountryCodeCl = "CL" - CountryCodeCm = "CM" - CountryCodeCn = "CN" - CountryCodeCo = "CO" - CountryCodeCr = "CR" - CountryCodeCu = "CU" - CountryCodeCv = "CV" - CountryCodeCx = "CX" - CountryCodeCy = "CY" - CountryCodeCz = "CZ" - CountryCodeDe = "DE" - CountryCodeDj = "DJ" - CountryCodeDk = "DK" - CountryCodeDm = "DM" - CountryCodeDo = "DO" - CountryCodeDz = "DZ" - CountryCodeEc = "EC" - CountryCodeEe = "EE" - CountryCodeEg = "EG" - CountryCodeEr = "ER" - CountryCodeEs = "ES" - CountryCodeEt = "ET" - CountryCodeFi = "FI" - CountryCodeFj = "FJ" - CountryCodeFk = "FK" - CountryCodeFm = "FM" - CountryCodeFo = "FO" - CountryCodeFr = "FR" - CountryCodeGa = "GA" - CountryCodeGb = "GB" - CountryCodeGd = "GD" - CountryCodeGe = "GE" - CountryCodeGh = "GH" - CountryCodeGi = "GI" - CountryCodeGl = "GL" - CountryCodeGm = "GM" - CountryCodeGn = "GN" - CountryCodeGq = "GQ" - CountryCodeGr = "GR" - CountryCodeGt = "GT" - CountryCodeGu = "GU" - CountryCodeGw = "GW" - CountryCodeGy = "GY" - CountryCodeHk = "HK" - CountryCodeHn = "HN" - CountryCodeHr = "HR" - CountryCodeHt = "HT" - CountryCodeHu = "HU" - CountryCodeID = "ID" - CountryCodeIe = "IE" - CountryCodeIl = "IL" - CountryCodeIm = "IM" - CountryCodeIn = "IN" - CountryCodeIq = "IQ" - CountryCodeIr = "IR" - CountryCodeIs = "IS" - CountryCodeIt = "IT" - CountryCodeJm = "JM" - CountryCodeJo = "JO" - CountryCodeJp = "JP" - CountryCodeKe = "KE" - CountryCodeKg = "KG" - CountryCodeKh = "KH" - CountryCodeKi = "KI" - CountryCodeKm = "KM" - CountryCodeKn = "KN" - CountryCodeKp = "KP" - CountryCodeKr = "KR" - CountryCodeKw = "KW" - CountryCodeKy = "KY" - CountryCodeKz = "KZ" - CountryCodeLa = "LA" - CountryCodeLb = "LB" - CountryCodeLc = "LC" - CountryCodeLi = "LI" - CountryCodeLk = "LK" - CountryCodeLr = "LR" - CountryCodeLs = "LS" - CountryCodeLt = "LT" - CountryCodeLu = "LU" - CountryCodeLv = "LV" - CountryCodeLy = "LY" - CountryCodeMa = "MA" - CountryCodeMc = "MC" - CountryCodeMd = "MD" - CountryCodeMe = "ME" - CountryCodeMf = "MF" - CountryCodeMg = "MG" - CountryCodeMh = "MH" - CountryCodeMk = "MK" - CountryCodeMl = "ML" - CountryCodeMm = "MM" - CountryCodeMn = "MN" - CountryCodeMo = "MO" - CountryCodeMp = "MP" - CountryCodeMr = "MR" - CountryCodeMs = "MS" - CountryCodeMt = "MT" - CountryCodeMu = "MU" - CountryCodeMv = "MV" - CountryCodeMw = "MW" - CountryCodeMx = "MX" - CountryCodeMy = "MY" - CountryCodeMz = "MZ" - CountryCodeNa = "NA" - CountryCodeNc = "NC" - CountryCodeNe = "NE" - CountryCodeNg = "NG" - CountryCodeNi = "NI" - CountryCodeNl = "NL" - CountryCodeNo = "NO" - CountryCodeNp = "NP" - CountryCodeNr = "NR" - CountryCodeNu = "NU" - CountryCodeNz = "NZ" - CountryCodeOm = "OM" - CountryCodePa = "PA" - CountryCodePe = "PE" - CountryCodePf = "PF" - CountryCodePg = "PG" - CountryCodePh = "PH" - CountryCodePk = "PK" - CountryCodePl = "PL" - CountryCodePm = "PM" - CountryCodePn = "PN" - CountryCodePr = "PR" - CountryCodePt = "PT" - CountryCodePw = "PW" - CountryCodePy = "PY" - CountryCodeQa = "QA" - CountryCodeRo = "RO" - CountryCodeRs = "RS" - CountryCodeRu = "RU" - CountryCodeRw = "RW" - CountryCodeSa = "SA" - CountryCodeSb = "SB" - CountryCodeSc = "SC" - CountryCodeSd = "SD" - CountryCodeSe = "SE" - CountryCodeSg = "SG" - CountryCodeSh = "SH" - CountryCodeSi = "SI" - CountryCodeSk = "SK" - CountryCodeSl = "SL" - CountryCodeSm = "SM" - CountryCodeSn = "SN" - CountryCodeSo = "SO" - CountryCodeSr = "SR" - CountryCodeSt = "ST" - CountryCodeSv = "SV" - CountryCodeSy = "SY" - CountryCodeSz = "SZ" - CountryCodeTc = "TC" - CountryCodeTd = "TD" - CountryCodeTg = "TG" - CountryCodeTh = "TH" - CountryCodeTj = "TJ" - CountryCodeTk = "TK" - CountryCodeTl = "TL" - CountryCodeTm = "TM" - CountryCodeTn = "TN" - CountryCodeTo = "TO" - CountryCodeTr = "TR" - CountryCodeTt = "TT" - CountryCodeTv = "TV" - CountryCodeTw = "TW" - CountryCodeTz = "TZ" - CountryCodeUa = "UA" - CountryCodeUg = "UG" - CountryCodeUs = "US" - CountryCodeUy = "UY" - CountryCodeUz = "UZ" - CountryCodeVa = "VA" - CountryCodeVc = "VC" - CountryCodeVe = "VE" - CountryCodeVg = "VG" - CountryCodeVi = "VI" - CountryCodeVn = "VN" - CountryCodeVu = "VU" - CountryCodeWf = "WF" - CountryCodeWs = "WS" - CountryCodeYe = "YE" - CountryCodeYt = "YT" - CountryCodeZa = "ZA" - CountryCodeZm = "ZM" - CountryCodeZw = "ZW" -) - -// DisableDomainAutoRenewRequest is undocumented. -type DisableDomainAutoRenewRequest struct { - DomainName aws.StringValue `json:"DomainName"` -} - -// DisableDomainAutoRenewResponse is undocumented. -type DisableDomainAutoRenewResponse struct { -} - -// DisableDomainTransferLockRequest is undocumented. -type DisableDomainTransferLockRequest struct { - DomainName aws.StringValue `json:"DomainName"` -} - -// DisableDomainTransferLockResponse is undocumented. -type DisableDomainTransferLockResponse struct { - OperationID aws.StringValue `json:"OperationId"` -} - -// Possible values for Route53Domains. -const ( - DomainAvailabilityAvailable = "AVAILABLE" - DomainAvailabilityAvailablePreorder = "AVAILABLE_PREORDER" - DomainAvailabilityAvailableReserved = "AVAILABLE_RESERVED" - DomainAvailabilityReserved = "RESERVED" - DomainAvailabilityUnavailable = "UNAVAILABLE" - DomainAvailabilityUnavailablePremium = "UNAVAILABLE_PREMIUM" - DomainAvailabilityUnavailableRestricted = "UNAVAILABLE_RESTRICTED" -) - -// DomainSummary is undocumented. -type DomainSummary struct { - AutoRenew aws.BooleanValue `json:"AutoRenew,omitempty"` - DomainName aws.StringValue `json:"DomainName"` - Expiry *aws.UnixTimestamp `json:"Expiry,omitempty"` - TransferLock aws.BooleanValue `json:"TransferLock,omitempty"` -} - -// EnableDomainAutoRenewRequest is undocumented. -type EnableDomainAutoRenewRequest struct { - DomainName aws.StringValue `json:"DomainName"` -} - -// EnableDomainAutoRenewResponse is undocumented. -type EnableDomainAutoRenewResponse struct { -} - -// EnableDomainTransferLockRequest is undocumented. -type EnableDomainTransferLockRequest struct { - DomainName aws.StringValue `json:"DomainName"` -} - -// EnableDomainTransferLockResponse is undocumented. -type EnableDomainTransferLockResponse struct { - OperationID aws.StringValue `json:"OperationId"` -} - -// ExtraParam is undocumented. -type ExtraParam struct { - Name aws.StringValue `json:"Name"` - Value aws.StringValue `json:"Value"` -} - -// Possible values for Route53Domains. -const ( - ExtraParamNameAuIDNumber = "AU_ID_NUMBER" - ExtraParamNameAuIDType = "AU_ID_TYPE" - ExtraParamNameBirthCity = "BIRTH_CITY" - ExtraParamNameBirthCountry = "BIRTH_COUNTRY" - ExtraParamNameBirthDateInYyyyMmDd = "BIRTH_DATE_IN_YYYY_MM_DD" - ExtraParamNameBirthDepartment = "BIRTH_DEPARTMENT" - ExtraParamNameBrandNumber = "BRAND_NUMBER" - ExtraParamNameCaLegalType = "CA_LEGAL_TYPE" - ExtraParamNameDocumentNumber = "DOCUMENT_NUMBER" - ExtraParamNameDunsNumber = "DUNS_NUMBER" - ExtraParamNameFiBusinessNumber = "FI_BUSINESS_NUMBER" - ExtraParamNameFiIDNumber = "FI_ID_NUMBER" - ExtraParamNameItPin = "IT_PIN" - ExtraParamNameRuPassportData = "RU_PASSPORT_DATA" - ExtraParamNameSeIDNumber = "SE_ID_NUMBER" - ExtraParamNameSgIDNumber = "SG_ID_NUMBER" - ExtraParamNameVatNumber = "VAT_NUMBER" -) - -// GetDomainDetailRequest is undocumented. -type GetDomainDetailRequest struct { - DomainName aws.StringValue `json:"DomainName"` -} - -// GetDomainDetailResponse is undocumented. -type GetDomainDetailResponse struct { - AbuseContactEmail aws.StringValue `json:"AbuseContactEmail,omitempty"` - AbuseContactPhone aws.StringValue `json:"AbuseContactPhone,omitempty"` - AdminContact *ContactDetail `json:"AdminContact"` - AdminPrivacy aws.BooleanValue `json:"AdminPrivacy,omitempty"` - AutoRenew aws.BooleanValue `json:"AutoRenew,omitempty"` - CreationDate *aws.UnixTimestamp `json:"CreationDate,omitempty"` - DNSSec aws.StringValue `json:"DnsSec,omitempty"` - DomainName aws.StringValue `json:"DomainName"` - ExpirationDate *aws.UnixTimestamp `json:"ExpirationDate,omitempty"` - Nameservers []Nameserver `json:"Nameservers"` - RegistrantContact *ContactDetail `json:"RegistrantContact"` - RegistrantPrivacy aws.BooleanValue `json:"RegistrantPrivacy,omitempty"` - RegistrarName aws.StringValue `json:"RegistrarName,omitempty"` - RegistrarURL aws.StringValue `json:"RegistrarUrl,omitempty"` - RegistryDomainID aws.StringValue `json:"RegistryDomainId,omitempty"` - Reseller aws.StringValue `json:"Reseller,omitempty"` - StatusList []string `json:"StatusList,omitempty"` - TechContact *ContactDetail `json:"TechContact"` - TechPrivacy aws.BooleanValue `json:"TechPrivacy,omitempty"` - UpdatedDate *aws.UnixTimestamp `json:"UpdatedDate,omitempty"` - WhoIsServer aws.StringValue `json:"WhoIsServer,omitempty"` -} - -// GetOperationDetailRequest is undocumented. -type GetOperationDetailRequest struct { - OperationID aws.StringValue `json:"OperationId"` -} - -// GetOperationDetailResponse is undocumented. -type GetOperationDetailResponse struct { - DomainName aws.StringValue `json:"DomainName,omitempty"` - Message aws.StringValue `json:"Message,omitempty"` - OperationID aws.StringValue `json:"OperationId,omitempty"` - Status aws.StringValue `json:"Status,omitempty"` - SubmittedDate *aws.UnixTimestamp `json:"SubmittedDate,omitempty"` - Type aws.StringValue `json:"Type,omitempty"` -} - -// ListDomainsRequest is undocumented. -type ListDomainsRequest struct { - Marker aws.StringValue `json:"Marker,omitempty"` - MaxItems aws.IntegerValue `json:"MaxItems,omitempty"` -} - -// ListDomainsResponse is undocumented. -type ListDomainsResponse struct { - Domains []DomainSummary `json:"Domains"` - NextPageMarker aws.StringValue `json:"NextPageMarker,omitempty"` -} - -// ListOperationsRequest is undocumented. -type ListOperationsRequest struct { - Marker aws.StringValue `json:"Marker,omitempty"` - MaxItems aws.IntegerValue `json:"MaxItems,omitempty"` -} - -// ListOperationsResponse is undocumented. -type ListOperationsResponse struct { - NextPageMarker aws.StringValue `json:"NextPageMarker,omitempty"` - Operations []OperationSummary `json:"Operations"` -} - -// Nameserver is undocumented. -type Nameserver struct { - GlueIPs []string `json:"GlueIps,omitempty"` - Name aws.StringValue `json:"Name"` -} - -// Possible values for Route53Domains. -const ( - OperationStatusError = "ERROR" - OperationStatusFailed = "FAILED" - OperationStatusInProgress = "IN_PROGRESS" - OperationStatusSubmitted = "SUBMITTED" - OperationStatusSuccessful = "SUCCESSFUL" -) - -// OperationSummary is undocumented. -type OperationSummary struct { - OperationID aws.StringValue `json:"OperationId"` - Status aws.StringValue `json:"Status"` - SubmittedDate *aws.UnixTimestamp `json:"SubmittedDate"` - Type aws.StringValue `json:"Type"` -} - -// Possible values for Route53Domains. -const ( - OperationTypeChangePrivacyProtection = "CHANGE_PRIVACY_PROTECTION" - OperationTypeDeleteDomain = "DELETE_DOMAIN" - OperationTypeDomainLock = "DOMAIN_LOCK" - OperationTypeRegisterDomain = "REGISTER_DOMAIN" - OperationTypeTransferInDomain = "TRANSFER_IN_DOMAIN" - OperationTypeUpdateDomainContact = "UPDATE_DOMAIN_CONTACT" - OperationTypeUpdateNameserver = "UPDATE_NAMESERVER" -) - -// RegisterDomainRequest is undocumented. -type RegisterDomainRequest struct { - AdminContact *ContactDetail `json:"AdminContact"` - AutoRenew aws.BooleanValue `json:"AutoRenew,omitempty"` - DomainName aws.StringValue `json:"DomainName"` - DurationInYears aws.IntegerValue `json:"DurationInYears"` - IDNLangCode aws.StringValue `json:"IdnLangCode,omitempty"` - PrivacyProtectAdminContact aws.BooleanValue `json:"PrivacyProtectAdminContact,omitempty"` - PrivacyProtectRegistrantContact aws.BooleanValue `json:"PrivacyProtectRegistrantContact,omitempty"` - PrivacyProtectTechContact aws.BooleanValue `json:"PrivacyProtectTechContact,omitempty"` - RegistrantContact *ContactDetail `json:"RegistrantContact"` - TechContact *ContactDetail `json:"TechContact"` -} - -// RegisterDomainResponse is undocumented. -type RegisterDomainResponse struct { - OperationID aws.StringValue `json:"OperationId"` -} - -// RetrieveDomainAuthCodeRequest is undocumented. -type RetrieveDomainAuthCodeRequest struct { - DomainName aws.StringValue `json:"DomainName"` -} - -// RetrieveDomainAuthCodeResponse is undocumented. -type RetrieveDomainAuthCodeResponse struct { - AuthCode aws.StringValue `json:"AuthCode"` -} - -// TransferDomainRequest is undocumented. -type TransferDomainRequest struct { - AdminContact *ContactDetail `json:"AdminContact"` - AuthCode aws.StringValue `json:"AuthCode,omitempty"` - AutoRenew aws.BooleanValue `json:"AutoRenew,omitempty"` - DomainName aws.StringValue `json:"DomainName"` - DurationInYears aws.IntegerValue `json:"DurationInYears"` - IDNLangCode aws.StringValue `json:"IdnLangCode,omitempty"` - Nameservers []Nameserver `json:"Nameservers"` - PrivacyProtectAdminContact aws.BooleanValue `json:"PrivacyProtectAdminContact,omitempty"` - PrivacyProtectRegistrantContact aws.BooleanValue `json:"PrivacyProtectRegistrantContact,omitempty"` - PrivacyProtectTechContact aws.BooleanValue `json:"PrivacyProtectTechContact,omitempty"` - RegistrantContact *ContactDetail `json:"RegistrantContact"` - TechContact *ContactDetail `json:"TechContact"` -} - -// TransferDomainResponse is undocumented. -type TransferDomainResponse struct { - OperationID aws.StringValue `json:"OperationId"` -} - -// UpdateDomainContactPrivacyRequest is undocumented. -type UpdateDomainContactPrivacyRequest struct { - AdminPrivacy aws.BooleanValue `json:"AdminPrivacy,omitempty"` - DomainName aws.StringValue `json:"DomainName"` - RegistrantPrivacy aws.BooleanValue `json:"RegistrantPrivacy,omitempty"` - TechPrivacy aws.BooleanValue `json:"TechPrivacy,omitempty"` -} - -// UpdateDomainContactPrivacyResponse is undocumented. -type UpdateDomainContactPrivacyResponse struct { - OperationID aws.StringValue `json:"OperationId"` -} - -// UpdateDomainContactRequest is undocumented. -type UpdateDomainContactRequest struct { - AdminContact *ContactDetail `json:"AdminContact,omitempty"` - DomainName aws.StringValue `json:"DomainName"` - RegistrantContact *ContactDetail `json:"RegistrantContact,omitempty"` - TechContact *ContactDetail `json:"TechContact,omitempty"` -} - -// UpdateDomainContactResponse is undocumented. -type UpdateDomainContactResponse struct { - OperationID aws.StringValue `json:"OperationId"` -} - -// UpdateDomainNameserversRequest is undocumented. -type UpdateDomainNameserversRequest struct { - DomainName aws.StringValue `json:"DomainName"` - Nameservers []Nameserver `json:"Nameservers"` -} - -// UpdateDomainNameserversResponse is undocumented. -type UpdateDomainNameserversResponse struct { - OperationID aws.StringValue `json:"OperationId"` -} - -// avoid errors if the packages aren't referenced -var _ time.Time diff --git a/src/github.com/getlantern/aws-sdk-go/gen/s3/s3.go b/src/github.com/getlantern/aws-sdk-go/gen/s3/s3.go deleted file mode 100644 index 06e19a7d7d..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/gen/s3/s3.go +++ /dev/null @@ -1,5544 +0,0 @@ -// THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. - -// Package s3 provides a client for Amazon Simple Storage Service. -package s3 - -import ( - "net/http" - "time" - - "github.com/awslabs/aws-sdk-go/aws" - "github.com/awslabs/aws-sdk-go/gen/endpoints" -) - -import ( - "bytes" - "encoding/xml" - "fmt" - "io" - "io/ioutil" - "net/url" - "strconv" - "strings" -) - -// S3 is a client for Amazon Simple Storage Service. -type S3 struct { - client *aws.RestClient -} - -// New returns a new S3 client. -func New(creds aws.CredentialsProvider, region string, client *http.Client) *S3 { - if client == nil { - client = http.DefaultClient - } - - endpoint, service, region := endpoints.Lookup("s3", region) - - return &S3{ - client: &aws.RestClient{ - Context: aws.Context{ - Credentials: creds, - Service: service, - Region: region, - }, - Client: client, - Endpoint: endpoint, - APIVersion: "2006-03-01", - }, - } -} - -// AbortMultipartUpload aborts a multipart upload. To verify that all parts -// have been removed, so you don't get charged for the part storage, you -// should call the List Parts operation and ensure the parts list is empty. -func (c *S3) AbortMultipartUpload(req *AbortMultipartUploadRequest) (err error) { - // NRE - - var body io.Reader - var contentType string - - uri := c.client.Endpoint + "/{Bucket}/{Key+}" - - if req.Bucket != nil { - uri = strings.Replace(uri, "{"+"Bucket"+"}", aws.EscapePath(*req.Bucket), -1) - uri = strings.Replace(uri, "{"+"Bucket+"+"}", aws.EscapePath(*req.Bucket), -1) - } - - if req.Key != nil { - uri = strings.Replace(uri, "{"+"Key"+"}", aws.EscapePath(*req.Key), -1) - uri = strings.Replace(uri, "{"+"Key+"+"}", aws.EscapePath(*req.Key), -1) - } - - q := url.Values{} - - if req.UploadID != nil { - q.Set("uploadId", *req.UploadID) - } - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("DELETE", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - - return -} - -// CompleteMultipartUpload completes a multipart upload by assembling -// previously uploaded parts. -func (c *S3) CompleteMultipartUpload(req *CompleteMultipartUploadRequest) (resp *CompleteMultipartUploadOutput, err error) { - resp = &CompleteMultipartUploadOutput{} - - var body io.Reader - var contentType string - - contentType = "application/xml" - - if req.MultipartUpload != nil { - req.MultipartUpload.XMLName = xml.Name{ - Space: "http://s3.amazonaws.com/doc/2006-03-01/", - Local: "CompleteMultipartUpload", - } - } - - b, err := xml.Marshal(req.MultipartUpload) - if err != nil { - return - } - body = bytes.NewReader(b) - - uri := c.client.Endpoint + "/{Bucket}/{Key+}" - - if req.Bucket != nil { - uri = strings.Replace(uri, "{"+"Bucket"+"}", aws.EscapePath(*req.Bucket), -1) - uri = strings.Replace(uri, "{"+"Bucket+"+"}", aws.EscapePath(*req.Bucket), -1) - } - - if req.Key != nil { - uri = strings.Replace(uri, "{"+"Key"+"}", aws.EscapePath(*req.Key), -1) - uri = strings.Replace(uri, "{"+"Key+"+"}", aws.EscapePath(*req.Key), -1) - } - - q := url.Values{} - - if req.UploadID != nil { - q.Set("uploadId", *req.UploadID) - } - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("POST", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - if e := xml.NewDecoder(httpResp.Body).Decode(resp); e != nil && e != io.EOF { - err = e - return - } - - if s := httpResp.Header.Get("x-amz-expiration"); s != "" { - - resp.Expiration = &s - - } - - if s := httpResp.Header.Get("x-amz-server-side-encryption-aws-kms-key-id"); s != "" { - - resp.SSEKMSKeyID = &s - - } - - if s := httpResp.Header.Get("x-amz-server-side-encryption"); s != "" { - - resp.ServerSideEncryption = &s - - } - - if s := httpResp.Header.Get("x-amz-version-id"); s != "" { - - resp.VersionID = &s - - } - - return -} - -// CopyObject creates a copy of an object that is already stored in Amazon -// S3. -func (c *S3) CopyObject(req *CopyObjectRequest) (resp *CopyObjectOutput, err error) { - resp = &CopyObjectOutput{} - - var body io.Reader - var contentType string - - uri := c.client.Endpoint + "/{Bucket}/{Key+}" - - if req.Bucket != nil { - uri = strings.Replace(uri, "{"+"Bucket"+"}", aws.EscapePath(*req.Bucket), -1) - uri = strings.Replace(uri, "{"+"Bucket+"+"}", aws.EscapePath(*req.Bucket), -1) - } - - if req.Key != nil { - uri = strings.Replace(uri, "{"+"Key"+"}", aws.EscapePath(*req.Key), -1) - uri = strings.Replace(uri, "{"+"Key+"+"}", aws.EscapePath(*req.Key), -1) - } - - q := url.Values{} - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("PUT", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - if req.ACL != nil { - httpReq.Header.Set("x-amz-acl", *req.ACL) - } - - if req.CacheControl != nil { - httpReq.Header.Set("Cache-Control", *req.CacheControl) - } - - if req.ContentDisposition != nil { - httpReq.Header.Set("Content-Disposition", *req.ContentDisposition) - } - - if req.ContentEncoding != nil { - httpReq.Header.Set("Content-Encoding", *req.ContentEncoding) - } - - if req.ContentLanguage != nil { - httpReq.Header.Set("Content-Language", *req.ContentLanguage) - } - - if req.ContentType != nil { - httpReq.Header.Set("Content-Type", *req.ContentType) - } - - if req.CopySource != nil { - httpReq.Header.Set("x-amz-copy-source", *req.CopySource) - } - - if req.CopySourceIfMatch != nil { - httpReq.Header.Set("x-amz-copy-source-if-match", *req.CopySourceIfMatch) - } - - if req.CopySourceIfModifiedSince != (time.Time{}) { - httpReq.Header.Set("x-amz-copy-source-if-modified-since", req.CopySourceIfModifiedSince.Format(time.RFC822)) - } - - if req.CopySourceIfNoneMatch != nil { - httpReq.Header.Set("x-amz-copy-source-if-none-match", *req.CopySourceIfNoneMatch) - } - - if req.CopySourceIfUnmodifiedSince != (time.Time{}) { - httpReq.Header.Set("x-amz-copy-source-if-unmodified-since", req.CopySourceIfUnmodifiedSince.Format(time.RFC822)) - } - - if req.CopySourceSSECustomerAlgorithm != nil { - httpReq.Header.Set("x-amz-copy-source-server-side-encryption-customer-algorithm", *req.CopySourceSSECustomerAlgorithm) - } - - if req.CopySourceSSECustomerKey != nil { - httpReq.Header.Set("x-amz-copy-source-server-side-encryption-customer-key", *req.CopySourceSSECustomerKey) - } - - if req.CopySourceSSECustomerKeyMD5 != nil { - httpReq.Header.Set("x-amz-copy-source-server-side-encryption-customer-key-MD5", *req.CopySourceSSECustomerKeyMD5) - } - - if req.Expires != (time.Time{}) { - httpReq.Header.Set("Expires", req.Expires.Format(time.RFC822)) - } - - if req.GrantFullControl != nil { - httpReq.Header.Set("x-amz-grant-full-control", *req.GrantFullControl) - } - - if req.GrantRead != nil { - httpReq.Header.Set("x-amz-grant-read", *req.GrantRead) - } - - if req.GrantReadACP != nil { - httpReq.Header.Set("x-amz-grant-read-acp", *req.GrantReadACP) - } - - if req.GrantWriteACP != nil { - httpReq.Header.Set("x-amz-grant-write-acp", *req.GrantWriteACP) - } - - for name, value := range req.Metadata { - httpReq.Header.Set(name, value) - } - - if req.MetadataDirective != nil { - httpReq.Header.Set("x-amz-metadata-directive", *req.MetadataDirective) - } - - if req.SSECustomerAlgorithm != nil { - httpReq.Header.Set("x-amz-server-side-encryption-customer-algorithm", *req.SSECustomerAlgorithm) - } - - if req.SSECustomerKey != nil { - httpReq.Header.Set("x-amz-server-side-encryption-customer-key", *req.SSECustomerKey) - } - - if req.SSECustomerKeyMD5 != nil { - httpReq.Header.Set("x-amz-server-side-encryption-customer-key-MD5", *req.SSECustomerKeyMD5) - } - - if req.SSEKMSKeyID != nil { - httpReq.Header.Set("x-amz-server-side-encryption-aws-kms-key-id", *req.SSEKMSKeyID) - } - - if req.ServerSideEncryption != nil { - httpReq.Header.Set("x-amz-server-side-encryption", *req.ServerSideEncryption) - } - - if req.StorageClass != nil { - httpReq.Header.Set("x-amz-storage-class", *req.StorageClass) - } - - if req.WebsiteRedirectLocation != nil { - httpReq.Header.Set("x-amz-website-redirect-location", *req.WebsiteRedirectLocation) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - if e := xml.NewDecoder(httpResp.Body).Decode(resp); e != nil && e != io.EOF { - err = e - return - } - - if s := httpResp.Header.Get("x-amz-copy-source-version-id"); s != "" { - - resp.CopySourceVersionID = &s - - } - - if s := httpResp.Header.Get("x-amz-expiration"); s != "" { - - resp.Expiration = &s - - } - - if s := httpResp.Header.Get("x-amz-server-side-encryption-customer-algorithm"); s != "" { - - resp.SSECustomerAlgorithm = &s - - } - - if s := httpResp.Header.Get("x-amz-server-side-encryption-customer-key-MD5"); s != "" { - - resp.SSECustomerKeyMD5 = &s - - } - - if s := httpResp.Header.Get("x-amz-server-side-encryption-aws-kms-key-id"); s != "" { - - resp.SSEKMSKeyID = &s - - } - - if s := httpResp.Header.Get("x-amz-server-side-encryption"); s != "" { - - resp.ServerSideEncryption = &s - - } - - return -} - -// CreateBucket is undocumented. -func (c *S3) CreateBucket(req *CreateBucketRequest) (resp *CreateBucketOutput, err error) { - resp = &CreateBucketOutput{} - - var body io.Reader - var contentType string - - contentType = "application/xml" - - if req.CreateBucketConfiguration != nil { - req.CreateBucketConfiguration.XMLName = xml.Name{ - Space: "http://s3.amazonaws.com/doc/2006-03-01/", - Local: "CreateBucketConfiguration", - } - } - - b, err := xml.Marshal(req.CreateBucketConfiguration) - if err != nil { - return - } - body = bytes.NewReader(b) - - uri := c.client.Endpoint + "/{Bucket}" - - if req.Bucket != nil { - uri = strings.Replace(uri, "{"+"Bucket"+"}", aws.EscapePath(*req.Bucket), -1) - uri = strings.Replace(uri, "{"+"Bucket+"+"}", aws.EscapePath(*req.Bucket), -1) - } - - q := url.Values{} - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("PUT", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - if req.ACL != nil { - httpReq.Header.Set("x-amz-acl", *req.ACL) - } - - if req.GrantFullControl != nil { - httpReq.Header.Set("x-amz-grant-full-control", *req.GrantFullControl) - } - - if req.GrantRead != nil { - httpReq.Header.Set("x-amz-grant-read", *req.GrantRead) - } - - if req.GrantReadACP != nil { - httpReq.Header.Set("x-amz-grant-read-acp", *req.GrantReadACP) - } - - if req.GrantWrite != nil { - httpReq.Header.Set("x-amz-grant-write", *req.GrantWrite) - } - - if req.GrantWriteACP != nil { - httpReq.Header.Set("x-amz-grant-write-acp", *req.GrantWriteACP) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - if e := xml.NewDecoder(httpResp.Body).Decode(resp); e != nil && e != io.EOF { - err = e - return - } - - if s := httpResp.Header.Get("Location"); s != "" { - - resp.Location = &s - - } - - return -} - -// CreateMultipartUpload initiates a multipart upload and returns an upload -// Note: After you initiate multipart upload and upload one or more parts, -// you must either complete or abort multipart upload in order to stop -// getting charged for storage of the uploaded parts. Only after you either -// complete or abort multipart upload, Amazon S3 frees up the parts storage -// and stops charging you for the parts storage. -func (c *S3) CreateMultipartUpload(req *CreateMultipartUploadRequest) (resp *CreateMultipartUploadOutput, err error) { - resp = &CreateMultipartUploadOutput{} - - var body io.Reader - var contentType string - - uri := c.client.Endpoint + "/{Bucket}/{Key+}?uploads" - - if req.Bucket != nil { - uri = strings.Replace(uri, "{"+"Bucket"+"}", aws.EscapePath(*req.Bucket), -1) - uri = strings.Replace(uri, "{"+"Bucket+"+"}", aws.EscapePath(*req.Bucket), -1) - } - - if req.Key != nil { - uri = strings.Replace(uri, "{"+"Key"+"}", aws.EscapePath(*req.Key), -1) - uri = strings.Replace(uri, "{"+"Key+"+"}", aws.EscapePath(*req.Key), -1) - } - - q := url.Values{} - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("POST", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - if req.ACL != nil { - httpReq.Header.Set("x-amz-acl", *req.ACL) - } - - if req.CacheControl != nil { - httpReq.Header.Set("Cache-Control", *req.CacheControl) - } - - if req.ContentDisposition != nil { - httpReq.Header.Set("Content-Disposition", *req.ContentDisposition) - } - - if req.ContentEncoding != nil { - httpReq.Header.Set("Content-Encoding", *req.ContentEncoding) - } - - if req.ContentLanguage != nil { - httpReq.Header.Set("Content-Language", *req.ContentLanguage) - } - - if req.ContentType != nil { - httpReq.Header.Set("Content-Type", *req.ContentType) - } - - if req.Expires != (time.Time{}) { - httpReq.Header.Set("Expires", req.Expires.Format(time.RFC822)) - } - - if req.GrantFullControl != nil { - httpReq.Header.Set("x-amz-grant-full-control", *req.GrantFullControl) - } - - if req.GrantRead != nil { - httpReq.Header.Set("x-amz-grant-read", *req.GrantRead) - } - - if req.GrantReadACP != nil { - httpReq.Header.Set("x-amz-grant-read-acp", *req.GrantReadACP) - } - - if req.GrantWriteACP != nil { - httpReq.Header.Set("x-amz-grant-write-acp", *req.GrantWriteACP) - } - - for name, value := range req.Metadata { - httpReq.Header.Set(name, value) - } - - if req.SSECustomerAlgorithm != nil { - httpReq.Header.Set("x-amz-server-side-encryption-customer-algorithm", *req.SSECustomerAlgorithm) - } - - if req.SSECustomerKey != nil { - httpReq.Header.Set("x-amz-server-side-encryption-customer-key", *req.SSECustomerKey) - } - - if req.SSECustomerKeyMD5 != nil { - httpReq.Header.Set("x-amz-server-side-encryption-customer-key-MD5", *req.SSECustomerKeyMD5) - } - - if req.SSEKMSKeyID != nil { - httpReq.Header.Set("x-amz-server-side-encryption-aws-kms-key-id", *req.SSEKMSKeyID) - } - - if req.ServerSideEncryption != nil { - httpReq.Header.Set("x-amz-server-side-encryption", *req.ServerSideEncryption) - } - - if req.StorageClass != nil { - httpReq.Header.Set("x-amz-storage-class", *req.StorageClass) - } - - if req.WebsiteRedirectLocation != nil { - httpReq.Header.Set("x-amz-website-redirect-location", *req.WebsiteRedirectLocation) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - if e := xml.NewDecoder(httpResp.Body).Decode(resp); e != nil && e != io.EOF { - err = e - return - } - - if s := httpResp.Header.Get("x-amz-server-side-encryption-customer-algorithm"); s != "" { - - resp.SSECustomerAlgorithm = &s - - } - - if s := httpResp.Header.Get("x-amz-server-side-encryption-customer-key-MD5"); s != "" { - - resp.SSECustomerKeyMD5 = &s - - } - - if s := httpResp.Header.Get("x-amz-server-side-encryption-aws-kms-key-id"); s != "" { - - resp.SSEKMSKeyID = &s - - } - - if s := httpResp.Header.Get("x-amz-server-side-encryption"); s != "" { - - resp.ServerSideEncryption = &s - - } - - return -} - -// DeleteBucket deletes the bucket. All objects (including all object -// versions and Delete Markers) in the bucket must be deleted before the -// bucket itself can be deleted. -func (c *S3) DeleteBucket(req *DeleteBucketRequest) (err error) { - // NRE - - var body io.Reader - var contentType string - - uri := c.client.Endpoint + "/{Bucket}" - - if req.Bucket != nil { - uri = strings.Replace(uri, "{"+"Bucket"+"}", aws.EscapePath(*req.Bucket), -1) - uri = strings.Replace(uri, "{"+"Bucket+"+"}", aws.EscapePath(*req.Bucket), -1) - } - - q := url.Values{} - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("DELETE", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - - return -} - -// DeleteBucketCORS deletes the cors configuration information set for the -// bucket. -func (c *S3) DeleteBucketCORS(req *DeleteBucketCORSRequest) (err error) { - // NRE - - var body io.Reader - var contentType string - - uri := c.client.Endpoint + "/{Bucket}?cors" - - if req.Bucket != nil { - uri = strings.Replace(uri, "{"+"Bucket"+"}", aws.EscapePath(*req.Bucket), -1) - uri = strings.Replace(uri, "{"+"Bucket+"+"}", aws.EscapePath(*req.Bucket), -1) - } - - q := url.Values{} - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("DELETE", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - - return -} - -// DeleteBucketLifecycle deletes the lifecycle configuration from the -// bucket. -func (c *S3) DeleteBucketLifecycle(req *DeleteBucketLifecycleRequest) (err error) { - // NRE - - var body io.Reader - var contentType string - - uri := c.client.Endpoint + "/{Bucket}?lifecycle" - - if req.Bucket != nil { - uri = strings.Replace(uri, "{"+"Bucket"+"}", aws.EscapePath(*req.Bucket), -1) - uri = strings.Replace(uri, "{"+"Bucket+"+"}", aws.EscapePath(*req.Bucket), -1) - } - - q := url.Values{} - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("DELETE", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - - return -} - -// DeleteBucketPolicy is undocumented. -func (c *S3) DeleteBucketPolicy(req *DeleteBucketPolicyRequest) (err error) { - // NRE - - var body io.Reader - var contentType string - - uri := c.client.Endpoint + "/{Bucket}?policy" - - if req.Bucket != nil { - uri = strings.Replace(uri, "{"+"Bucket"+"}", aws.EscapePath(*req.Bucket), -1) - uri = strings.Replace(uri, "{"+"Bucket+"+"}", aws.EscapePath(*req.Bucket), -1) - } - - q := url.Values{} - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("DELETE", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - - return -} - -// DeleteBucketTagging is undocumented. -func (c *S3) DeleteBucketTagging(req *DeleteBucketTaggingRequest) (err error) { - // NRE - - var body io.Reader - var contentType string - - uri := c.client.Endpoint + "/{Bucket}?tagging" - - if req.Bucket != nil { - uri = strings.Replace(uri, "{"+"Bucket"+"}", aws.EscapePath(*req.Bucket), -1) - uri = strings.Replace(uri, "{"+"Bucket+"+"}", aws.EscapePath(*req.Bucket), -1) - } - - q := url.Values{} - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("DELETE", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - - return -} - -// DeleteBucketWebsite this operation removes the website configuration -// from the bucket. -func (c *S3) DeleteBucketWebsite(req *DeleteBucketWebsiteRequest) (err error) { - // NRE - - var body io.Reader - var contentType string - - uri := c.client.Endpoint + "/{Bucket}?website" - - if req.Bucket != nil { - uri = strings.Replace(uri, "{"+"Bucket"+"}", aws.EscapePath(*req.Bucket), -1) - uri = strings.Replace(uri, "{"+"Bucket+"+"}", aws.EscapePath(*req.Bucket), -1) - } - - q := url.Values{} - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("DELETE", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - - return -} - -// DeleteObject removes the null version (if there is one) of an object and -// inserts a delete marker, which becomes the latest version of the object. -// If there isn't a null version, Amazon S3 does not remove any objects. -func (c *S3) DeleteObject(req *DeleteObjectRequest) (resp *DeleteObjectOutput, err error) { - resp = &DeleteObjectOutput{} - - var body io.Reader - var contentType string - - uri := c.client.Endpoint + "/{Bucket}/{Key+}" - - if req.Bucket != nil { - uri = strings.Replace(uri, "{"+"Bucket"+"}", aws.EscapePath(*req.Bucket), -1) - uri = strings.Replace(uri, "{"+"Bucket+"+"}", aws.EscapePath(*req.Bucket), -1) - } - - if req.Key != nil { - uri = strings.Replace(uri, "{"+"Key"+"}", aws.EscapePath(*req.Key), -1) - uri = strings.Replace(uri, "{"+"Key+"+"}", aws.EscapePath(*req.Key), -1) - } - - q := url.Values{} - - if req.VersionID != nil { - q.Set("versionId", *req.VersionID) - } - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("DELETE", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - if req.MFA != nil { - httpReq.Header.Set("x-amz-mfa", *req.MFA) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - if e := xml.NewDecoder(httpResp.Body).Decode(resp); e != nil && e != io.EOF { - err = e - return - } - - if s := httpResp.Header.Get("x-amz-delete-marker"); s != "" { - - var v bool - v, err = strconv.ParseBool(s) - if err != nil { - return - } - resp.DeleteMarker = &v - - } - - if s := httpResp.Header.Get("x-amz-version-id"); s != "" { - - resp.VersionID = &s - - } - - return -} - -// DeleteObjects this operation enables you to delete multiple objects from -// a bucket using a single request. You may specify up to 1000 keys. -func (c *S3) DeleteObjects(req *DeleteObjectsRequest) (resp *DeleteObjectsOutput, err error) { - resp = &DeleteObjectsOutput{} - - var body io.Reader - var contentType string - - contentType = "application/xml" - - if req.Delete != nil { - req.Delete.XMLName = xml.Name{ - Space: "http://s3.amazonaws.com/doc/2006-03-01/", - Local: "Delete", - } - } - - b, err := xml.Marshal(req.Delete) - if err != nil { - return - } - body = bytes.NewReader(b) - - uri := c.client.Endpoint + "/{Bucket}?delete" - - if req.Bucket != nil { - uri = strings.Replace(uri, "{"+"Bucket"+"}", aws.EscapePath(*req.Bucket), -1) - uri = strings.Replace(uri, "{"+"Bucket+"+"}", aws.EscapePath(*req.Bucket), -1) - } - - q := url.Values{} - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("POST", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - if req.MFA != nil { - httpReq.Header.Set("x-amz-mfa", *req.MFA) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - if e := xml.NewDecoder(httpResp.Body).Decode(resp); e != nil && e != io.EOF { - err = e - return - } - - return -} - -// GetBucketACL is undocumented. -func (c *S3) GetBucketACL(req *GetBucketACLRequest) (resp *GetBucketACLOutput, err error) { - resp = &GetBucketACLOutput{} - - var body io.Reader - var contentType string - - uri := c.client.Endpoint + "/{Bucket}?acl" - - if req.Bucket != nil { - uri = strings.Replace(uri, "{"+"Bucket"+"}", aws.EscapePath(*req.Bucket), -1) - uri = strings.Replace(uri, "{"+"Bucket+"+"}", aws.EscapePath(*req.Bucket), -1) - } - - q := url.Values{} - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("GET", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - if e := xml.NewDecoder(httpResp.Body).Decode(resp); e != nil && e != io.EOF { - err = e - return - } - - return -} - -// GetBucketCORS is undocumented. -func (c *S3) GetBucketCORS(req *GetBucketCORSRequest) (resp *GetBucketCORSOutput, err error) { - resp = &GetBucketCORSOutput{} - - var body io.Reader - var contentType string - - uri := c.client.Endpoint + "/{Bucket}?cors" - - if req.Bucket != nil { - uri = strings.Replace(uri, "{"+"Bucket"+"}", aws.EscapePath(*req.Bucket), -1) - uri = strings.Replace(uri, "{"+"Bucket+"+"}", aws.EscapePath(*req.Bucket), -1) - } - - q := url.Values{} - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("GET", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - if e := xml.NewDecoder(httpResp.Body).Decode(resp); e != nil && e != io.EOF { - err = e - return - } - - return -} - -// GetBucketLifecycle returns the lifecycle configuration information set -// on the bucket. -func (c *S3) GetBucketLifecycle(req *GetBucketLifecycleRequest) (resp *GetBucketLifecycleOutput, err error) { - resp = &GetBucketLifecycleOutput{} - - var body io.Reader - var contentType string - - uri := c.client.Endpoint + "/{Bucket}?lifecycle" - - if req.Bucket != nil { - uri = strings.Replace(uri, "{"+"Bucket"+"}", aws.EscapePath(*req.Bucket), -1) - uri = strings.Replace(uri, "{"+"Bucket+"+"}", aws.EscapePath(*req.Bucket), -1) - } - - q := url.Values{} - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("GET", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - if e := xml.NewDecoder(httpResp.Body).Decode(resp); e != nil && e != io.EOF { - err = e - return - } - - return -} - -// GetBucketLocation is undocumented. -func (c *S3) GetBucketLocation(req *GetBucketLocationRequest) (resp *GetBucketLocationOutput, err error) { - resp = &GetBucketLocationOutput{} - - var body io.Reader - var contentType string - - uri := c.client.Endpoint + "/{Bucket}?location" - - if req.Bucket != nil { - uri = strings.Replace(uri, "{"+"Bucket"+"}", aws.EscapePath(*req.Bucket), -1) - uri = strings.Replace(uri, "{"+"Bucket+"+"}", aws.EscapePath(*req.Bucket), -1) - } - - q := url.Values{} - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("GET", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - if e := xml.NewDecoder(httpResp.Body).Decode(resp); e != nil && e != io.EOF { - err = e - return - } - - return -} - -// GetBucketLogging returns the logging status of a bucket and the -// permissions users have to view and modify that status. To use you must -// be the bucket owner. -func (c *S3) GetBucketLogging(req *GetBucketLoggingRequest) (resp *GetBucketLoggingOutput, err error) { - resp = &GetBucketLoggingOutput{} - - var body io.Reader - var contentType string - - uri := c.client.Endpoint + "/{Bucket}?logging" - - if req.Bucket != nil { - uri = strings.Replace(uri, "{"+"Bucket"+"}", aws.EscapePath(*req.Bucket), -1) - uri = strings.Replace(uri, "{"+"Bucket+"+"}", aws.EscapePath(*req.Bucket), -1) - } - - q := url.Values{} - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("GET", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - if e := xml.NewDecoder(httpResp.Body).Decode(resp); e != nil && e != io.EOF { - err = e - return - } - - return -} - -// GetBucketNotification is undocumented. -func (c *S3) GetBucketNotification(req *GetBucketNotificationRequest) (resp *GetBucketNotificationOutput, err error) { - resp = &GetBucketNotificationOutput{} - - var body io.Reader - var contentType string - - uri := c.client.Endpoint + "/{Bucket}?notification" - - if req.Bucket != nil { - uri = strings.Replace(uri, "{"+"Bucket"+"}", aws.EscapePath(*req.Bucket), -1) - uri = strings.Replace(uri, "{"+"Bucket+"+"}", aws.EscapePath(*req.Bucket), -1) - } - - q := url.Values{} - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("GET", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - if e := xml.NewDecoder(httpResp.Body).Decode(resp); e != nil && e != io.EOF { - err = e - return - } - - return -} - -// GetBucketPolicy is undocumented. -func (c *S3) GetBucketPolicy(req *GetBucketPolicyRequest) (resp *GetBucketPolicyOutput, err error) { - resp = &GetBucketPolicyOutput{} - - var body io.Reader - var contentType string - - uri := c.client.Endpoint + "/{Bucket}?policy" - - if req.Bucket != nil { - uri = strings.Replace(uri, "{"+"Bucket"+"}", aws.EscapePath(*req.Bucket), -1) - uri = strings.Replace(uri, "{"+"Bucket+"+"}", aws.EscapePath(*req.Bucket), -1) - } - - q := url.Values{} - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("GET", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - if e := xml.NewDecoder(httpResp.Body).Decode(resp); e != nil && e != io.EOF { - err = e - return - } - - return -} - -// GetBucketRequestPayment returns the request payment configuration of a -// bucket. -func (c *S3) GetBucketRequestPayment(req *GetBucketRequestPaymentRequest) (resp *GetBucketRequestPaymentOutput, err error) { - resp = &GetBucketRequestPaymentOutput{} - - var body io.Reader - var contentType string - - uri := c.client.Endpoint + "/{Bucket}?requestPayment" - - if req.Bucket != nil { - uri = strings.Replace(uri, "{"+"Bucket"+"}", aws.EscapePath(*req.Bucket), -1) - uri = strings.Replace(uri, "{"+"Bucket+"+"}", aws.EscapePath(*req.Bucket), -1) - } - - q := url.Values{} - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("GET", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - if e := xml.NewDecoder(httpResp.Body).Decode(resp); e != nil && e != io.EOF { - err = e - return - } - - return -} - -// GetBucketTagging is undocumented. -func (c *S3) GetBucketTagging(req *GetBucketTaggingRequest) (resp *GetBucketTaggingOutput, err error) { - resp = &GetBucketTaggingOutput{} - - var body io.Reader - var contentType string - - uri := c.client.Endpoint + "/{Bucket}?tagging" - - if req.Bucket != nil { - uri = strings.Replace(uri, "{"+"Bucket"+"}", aws.EscapePath(*req.Bucket), -1) - uri = strings.Replace(uri, "{"+"Bucket+"+"}", aws.EscapePath(*req.Bucket), -1) - } - - q := url.Values{} - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("GET", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - if e := xml.NewDecoder(httpResp.Body).Decode(resp); e != nil && e != io.EOF { - err = e - return - } - - return -} - -// GetBucketVersioning is undocumented. -func (c *S3) GetBucketVersioning(req *GetBucketVersioningRequest) (resp *GetBucketVersioningOutput, err error) { - resp = &GetBucketVersioningOutput{} - - var body io.Reader - var contentType string - - uri := c.client.Endpoint + "/{Bucket}?versioning" - - if req.Bucket != nil { - uri = strings.Replace(uri, "{"+"Bucket"+"}", aws.EscapePath(*req.Bucket), -1) - uri = strings.Replace(uri, "{"+"Bucket+"+"}", aws.EscapePath(*req.Bucket), -1) - } - - q := url.Values{} - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("GET", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - if e := xml.NewDecoder(httpResp.Body).Decode(resp); e != nil && e != io.EOF { - err = e - return - } - - return -} - -// GetBucketWebsite is undocumented. -func (c *S3) GetBucketWebsite(req *GetBucketWebsiteRequest) (resp *GetBucketWebsiteOutput, err error) { - resp = &GetBucketWebsiteOutput{} - - var body io.Reader - var contentType string - - uri := c.client.Endpoint + "/{Bucket}?website" - - if req.Bucket != nil { - uri = strings.Replace(uri, "{"+"Bucket"+"}", aws.EscapePath(*req.Bucket), -1) - uri = strings.Replace(uri, "{"+"Bucket+"+"}", aws.EscapePath(*req.Bucket), -1) - } - - q := url.Values{} - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("GET", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - if e := xml.NewDecoder(httpResp.Body).Decode(resp); e != nil && e != io.EOF { - err = e - return - } - - return -} - -// GetObject is undocumented. -func (c *S3) GetObject(req *GetObjectRequest) (resp *GetObjectOutput, err error) { - resp = &GetObjectOutput{} - - var body io.Reader - var contentType string - - uri := c.client.Endpoint + "/{Bucket}/{Key+}" - - if req.Bucket != nil { - uri = strings.Replace(uri, "{"+"Bucket"+"}", aws.EscapePath(*req.Bucket), -1) - uri = strings.Replace(uri, "{"+"Bucket+"+"}", aws.EscapePath(*req.Bucket), -1) - } - - if req.Key != nil { - uri = strings.Replace(uri, "{"+"Key"+"}", aws.EscapePath(*req.Key), -1) - uri = strings.Replace(uri, "{"+"Key+"+"}", aws.EscapePath(*req.Key), -1) - } - - q := url.Values{} - - if req.ResponseCacheControl != nil { - q.Set("response-cache-control", *req.ResponseCacheControl) - } - - if req.ResponseContentDisposition != nil { - q.Set("response-content-disposition", *req.ResponseContentDisposition) - } - - if req.ResponseContentEncoding != nil { - q.Set("response-content-encoding", *req.ResponseContentEncoding) - } - - if req.ResponseContentLanguage != nil { - q.Set("response-content-language", *req.ResponseContentLanguage) - } - - if req.ResponseContentType != nil { - q.Set("response-content-type", *req.ResponseContentType) - } - - if req.ResponseExpires != (time.Time{}) { - q.Set("response-expires", req.ResponseExpires.Format(time.RFC822)) - } - - if req.VersionID != nil { - q.Set("versionId", *req.VersionID) - } - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("GET", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - if req.IfMatch != nil { - httpReq.Header.Set("If-Match", *req.IfMatch) - } - - if req.IfModifiedSince != (time.Time{}) { - httpReq.Header.Set("If-Modified-Since", req.IfModifiedSince.Format(time.RFC822)) - } - - if req.IfNoneMatch != nil { - httpReq.Header.Set("If-None-Match", *req.IfNoneMatch) - } - - if req.IfUnmodifiedSince != (time.Time{}) { - httpReq.Header.Set("If-Unmodified-Since", req.IfUnmodifiedSince.Format(time.RFC822)) - } - - if req.Range != nil { - httpReq.Header.Set("Range", *req.Range) - } - - if req.SSECustomerAlgorithm != nil { - httpReq.Header.Set("x-amz-server-side-encryption-customer-algorithm", *req.SSECustomerAlgorithm) - } - - if req.SSECustomerKey != nil { - httpReq.Header.Set("x-amz-server-side-encryption-customer-key", *req.SSECustomerKey) - } - - if req.SSECustomerKeyMD5 != nil { - httpReq.Header.Set("x-amz-server-side-encryption-customer-key-MD5", *req.SSECustomerKeyMD5) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - resp.Body = httpResp.Body - - if s := httpResp.Header.Get("accept-ranges"); s != "" { - - resp.AcceptRanges = &s - - } - - if s := httpResp.Header.Get("Cache-Control"); s != "" { - - resp.CacheControl = &s - - } - - if s := httpResp.Header.Get("Content-Disposition"); s != "" { - - resp.ContentDisposition = &s - - } - - if s := httpResp.Header.Get("Content-Encoding"); s != "" { - - resp.ContentEncoding = &s - - } - - if s := httpResp.Header.Get("Content-Language"); s != "" { - - resp.ContentLanguage = &s - - } - - if s := httpResp.Header.Get("Content-Length"); s != "" { - - var n int64 - n, err = strconv.ParseInt(s, 10, 64) - - if err != nil { - return - } - resp.ContentLength = &n - - } - - if s := httpResp.Header.Get("Content-Type"); s != "" { - - resp.ContentType = &s - - } - - if s := httpResp.Header.Get("x-amz-delete-marker"); s != "" { - - var v bool - v, err = strconv.ParseBool(s) - if err != nil { - return - } - resp.DeleteMarker = &v - - } - - if s := httpResp.Header.Get("ETag"); s != "" { - - resp.ETag = &s - - } - - if s := httpResp.Header.Get("x-amz-expiration"); s != "" { - - resp.Expiration = &s - - } - - if s := httpResp.Header.Get("Expires"); s != "" { - - var t time.Time - t, err = time.Parse(time.RFC1123, s) - if err != nil { - return - } - resp.Expires = t - - } - - if s := httpResp.Header.Get("Last-Modified"); s != "" { - - var t time.Time - t, err = time.Parse(time.RFC1123, s) - if err != nil { - return - } - resp.LastModified = t - - } - - resp.Metadata = map[string]string{} - for name := range httpResp.Header { - if strings.HasPrefix(name, "X-Amz-Meta-") { - resp.Metadata[name] = httpResp.Header.Get(name) - } - } - - if s := httpResp.Header.Get("x-amz-missing-meta"); s != "" { - - var n int - n, err = strconv.Atoi(s) - - if err != nil { - return - } - resp.MissingMeta = &n - - } - - if s := httpResp.Header.Get("x-amz-restore"); s != "" { - - resp.Restore = &s - - } - - if s := httpResp.Header.Get("x-amz-server-side-encryption-customer-algorithm"); s != "" { - - resp.SSECustomerAlgorithm = &s - - } - - if s := httpResp.Header.Get("x-amz-server-side-encryption-customer-key-MD5"); s != "" { - - resp.SSECustomerKeyMD5 = &s - - } - - if s := httpResp.Header.Get("x-amz-server-side-encryption-aws-kms-key-id"); s != "" { - - resp.SSEKMSKeyID = &s - - } - - if s := httpResp.Header.Get("x-amz-server-side-encryption"); s != "" { - - resp.ServerSideEncryption = &s - - } - - if s := httpResp.Header.Get("x-amz-version-id"); s != "" { - - resp.VersionID = &s - - } - - if s := httpResp.Header.Get("x-amz-website-redirect-location"); s != "" { - - resp.WebsiteRedirectLocation = &s - - } - - return -} - -// GetObjectACL is undocumented. -func (c *S3) GetObjectACL(req *GetObjectACLRequest) (resp *GetObjectACLOutput, err error) { - resp = &GetObjectACLOutput{} - - var body io.Reader - var contentType string - - uri := c.client.Endpoint + "/{Bucket}/{Key+}?acl" - - if req.Bucket != nil { - uri = strings.Replace(uri, "{"+"Bucket"+"}", aws.EscapePath(*req.Bucket), -1) - uri = strings.Replace(uri, "{"+"Bucket+"+"}", aws.EscapePath(*req.Bucket), -1) - } - - if req.Key != nil { - uri = strings.Replace(uri, "{"+"Key"+"}", aws.EscapePath(*req.Key), -1) - uri = strings.Replace(uri, "{"+"Key+"+"}", aws.EscapePath(*req.Key), -1) - } - - q := url.Values{} - - if req.VersionID != nil { - q.Set("versionId", *req.VersionID) - } - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("GET", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - if e := xml.NewDecoder(httpResp.Body).Decode(resp); e != nil && e != io.EOF { - err = e - return - } - - return -} - -// GetObjectTorrent is undocumented. -func (c *S3) GetObjectTorrent(req *GetObjectTorrentRequest) (resp *GetObjectTorrentOutput, err error) { - resp = &GetObjectTorrentOutput{} - - var body io.Reader - var contentType string - - uri := c.client.Endpoint + "/{Bucket}/{Key+}?torrent" - - if req.Bucket != nil { - uri = strings.Replace(uri, "{"+"Bucket"+"}", aws.EscapePath(*req.Bucket), -1) - uri = strings.Replace(uri, "{"+"Bucket+"+"}", aws.EscapePath(*req.Bucket), -1) - } - - if req.Key != nil { - uri = strings.Replace(uri, "{"+"Key"+"}", aws.EscapePath(*req.Key), -1) - uri = strings.Replace(uri, "{"+"Key+"+"}", aws.EscapePath(*req.Key), -1) - } - - q := url.Values{} - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("GET", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - resp.Body = httpResp.Body - - return -} - -// HeadBucket this operation is useful to determine if a bucket exists and -// you have permission to access it. -func (c *S3) HeadBucket(req *HeadBucketRequest) (err error) { - // NRE - - var body io.Reader - var contentType string - - uri := c.client.Endpoint + "/{Bucket}" - - if req.Bucket != nil { - uri = strings.Replace(uri, "{"+"Bucket"+"}", aws.EscapePath(*req.Bucket), -1) - uri = strings.Replace(uri, "{"+"Bucket+"+"}", aws.EscapePath(*req.Bucket), -1) - } - - q := url.Values{} - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("HEAD", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - - return -} - -// HeadObject the operation retrieves metadata from an object without -// returning the object itself. This operation is useful if you're only -// interested in an object's metadata. To use you must have access to the -// object. -func (c *S3) HeadObject(req *HeadObjectRequest) (resp *HeadObjectOutput, err error) { - resp = &HeadObjectOutput{} - - var body io.Reader - var contentType string - - uri := c.client.Endpoint + "/{Bucket}/{Key+}" - - if req.Bucket != nil { - uri = strings.Replace(uri, "{"+"Bucket"+"}", aws.EscapePath(*req.Bucket), -1) - uri = strings.Replace(uri, "{"+"Bucket+"+"}", aws.EscapePath(*req.Bucket), -1) - } - - if req.Key != nil { - uri = strings.Replace(uri, "{"+"Key"+"}", aws.EscapePath(*req.Key), -1) - uri = strings.Replace(uri, "{"+"Key+"+"}", aws.EscapePath(*req.Key), -1) - } - - q := url.Values{} - - if req.VersionID != nil { - q.Set("versionId", *req.VersionID) - } - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("HEAD", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - if req.IfMatch != nil { - httpReq.Header.Set("If-Match", *req.IfMatch) - } - - if req.IfModifiedSince != (time.Time{}) { - httpReq.Header.Set("If-Modified-Since", req.IfModifiedSince.Format(time.RFC822)) - } - - if req.IfNoneMatch != nil { - httpReq.Header.Set("If-None-Match", *req.IfNoneMatch) - } - - if req.IfUnmodifiedSince != (time.Time{}) { - httpReq.Header.Set("If-Unmodified-Since", req.IfUnmodifiedSince.Format(time.RFC822)) - } - - if req.Range != nil { - httpReq.Header.Set("Range", *req.Range) - } - - if req.SSECustomerAlgorithm != nil { - httpReq.Header.Set("x-amz-server-side-encryption-customer-algorithm", *req.SSECustomerAlgorithm) - } - - if req.SSECustomerKey != nil { - httpReq.Header.Set("x-amz-server-side-encryption-customer-key", *req.SSECustomerKey) - } - - if req.SSECustomerKeyMD5 != nil { - httpReq.Header.Set("x-amz-server-side-encryption-customer-key-MD5", *req.SSECustomerKeyMD5) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - if e := xml.NewDecoder(httpResp.Body).Decode(resp); e != nil && e != io.EOF { - err = e - return - } - - if s := httpResp.Header.Get("accept-ranges"); s != "" { - - resp.AcceptRanges = &s - - } - - if s := httpResp.Header.Get("Cache-Control"); s != "" { - - resp.CacheControl = &s - - } - - if s := httpResp.Header.Get("Content-Disposition"); s != "" { - - resp.ContentDisposition = &s - - } - - if s := httpResp.Header.Get("Content-Encoding"); s != "" { - - resp.ContentEncoding = &s - - } - - if s := httpResp.Header.Get("Content-Language"); s != "" { - - resp.ContentLanguage = &s - - } - - if s := httpResp.Header.Get("Content-Length"); s != "" { - - var n int64 - n, err = strconv.ParseInt(s, 10, 64) - - if err != nil { - return - } - resp.ContentLength = &n - - } - - if s := httpResp.Header.Get("Content-Type"); s != "" { - - resp.ContentType = &s - - } - - if s := httpResp.Header.Get("x-amz-delete-marker"); s != "" { - - var v bool - v, err = strconv.ParseBool(s) - if err != nil { - return - } - resp.DeleteMarker = &v - - } - - if s := httpResp.Header.Get("ETag"); s != "" { - - resp.ETag = &s - - } - - if s := httpResp.Header.Get("x-amz-expiration"); s != "" { - - resp.Expiration = &s - - } - - if s := httpResp.Header.Get("Expires"); s != "" { - - var t time.Time - t, err = time.Parse(time.RFC1123, s) - if err != nil { - return - } - resp.Expires = t - - } - - if s := httpResp.Header.Get("Last-Modified"); s != "" { - - var t time.Time - t, err = time.Parse(time.RFC1123, s) - if err != nil { - return - } - resp.LastModified = t - - } - - resp.Metadata = map[string]string{} - for name := range httpResp.Header { - if strings.HasPrefix(name, "X-Amz-Meta-") { - resp.Metadata[name] = httpResp.Header.Get(name) - } - } - - if s := httpResp.Header.Get("x-amz-missing-meta"); s != "" { - - var n int - n, err = strconv.Atoi(s) - - if err != nil { - return - } - resp.MissingMeta = &n - - } - - if s := httpResp.Header.Get("x-amz-restore"); s != "" { - - resp.Restore = &s - - } - - if s := httpResp.Header.Get("x-amz-server-side-encryption-customer-algorithm"); s != "" { - - resp.SSECustomerAlgorithm = &s - - } - - if s := httpResp.Header.Get("x-amz-server-side-encryption-customer-key-MD5"); s != "" { - - resp.SSECustomerKeyMD5 = &s - - } - - if s := httpResp.Header.Get("x-amz-server-side-encryption-aws-kms-key-id"); s != "" { - - resp.SSEKMSKeyID = &s - - } - - if s := httpResp.Header.Get("x-amz-server-side-encryption"); s != "" { - - resp.ServerSideEncryption = &s - - } - - if s := httpResp.Header.Get("x-amz-version-id"); s != "" { - - resp.VersionID = &s - - } - - if s := httpResp.Header.Get("x-amz-website-redirect-location"); s != "" { - - resp.WebsiteRedirectLocation = &s - - } - - return -} - -// ListBuckets returns a list of all buckets owned by the authenticated -// sender of the request. -func (c *S3) ListBuckets() (resp *ListBucketsOutput, err error) { - resp = &ListBucketsOutput{} - - var body io.Reader - var contentType string - - uri := c.client.Endpoint + "/" - - q := url.Values{} - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("GET", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - if e := xml.NewDecoder(httpResp.Body).Decode(resp); e != nil && e != io.EOF { - err = e - return - } - - return -} - -// ListMultipartUploads this operation lists in-progress multipart uploads. -func (c *S3) ListMultipartUploads(req *ListMultipartUploadsRequest) (resp *ListMultipartUploadsOutput, err error) { - resp = &ListMultipartUploadsOutput{} - - var body io.Reader - var contentType string - - uri := c.client.Endpoint + "/{Bucket}?uploads" - - if req.Bucket != nil { - uri = strings.Replace(uri, "{"+"Bucket"+"}", aws.EscapePath(*req.Bucket), -1) - uri = strings.Replace(uri, "{"+"Bucket+"+"}", aws.EscapePath(*req.Bucket), -1) - } - - q := url.Values{} - - if req.Delimiter != nil { - q.Set("delimiter", *req.Delimiter) - } - - if req.EncodingType != nil { - q.Set("encoding-type", *req.EncodingType) - } - - if req.KeyMarker != nil { - q.Set("key-marker", *req.KeyMarker) - } - - if req.MaxUploads != nil { - q.Set("max-uploads", strconv.Itoa(*req.MaxUploads)) - } - - if req.Prefix != nil { - q.Set("prefix", *req.Prefix) - } - - if req.UploadIDMarker != nil { - q.Set("upload-id-marker", *req.UploadIDMarker) - } - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("GET", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - if e := xml.NewDecoder(httpResp.Body).Decode(resp); e != nil && e != io.EOF { - err = e - return - } - - return -} - -// ListObjectVersions returns metadata about all of the versions of objects -// in a bucket. -func (c *S3) ListObjectVersions(req *ListObjectVersionsRequest) (resp *ListObjectVersionsOutput, err error) { - resp = &ListObjectVersionsOutput{} - - var body io.Reader - var contentType string - - uri := c.client.Endpoint + "/{Bucket}?versions" - - if req.Bucket != nil { - uri = strings.Replace(uri, "{"+"Bucket"+"}", aws.EscapePath(*req.Bucket), -1) - uri = strings.Replace(uri, "{"+"Bucket+"+"}", aws.EscapePath(*req.Bucket), -1) - } - - q := url.Values{} - - if req.Delimiter != nil { - q.Set("delimiter", *req.Delimiter) - } - - if req.EncodingType != nil { - q.Set("encoding-type", *req.EncodingType) - } - - if req.KeyMarker != nil { - q.Set("key-marker", *req.KeyMarker) - } - - if req.MaxKeys != nil { - q.Set("max-keys", strconv.Itoa(*req.MaxKeys)) - } - - if req.Prefix != nil { - q.Set("prefix", *req.Prefix) - } - - if req.VersionIDMarker != nil { - q.Set("version-id-marker", *req.VersionIDMarker) - } - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("GET", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - if e := xml.NewDecoder(httpResp.Body).Decode(resp); e != nil && e != io.EOF { - err = e - return - } - - return -} - -// ListObjects returns some or all (up to 1000) of the objects in a bucket. -// You can use the request parameters as selection criteria to return a -// subset of the objects in a bucket. -func (c *S3) ListObjects(req *ListObjectsRequest) (resp *ListObjectsOutput, err error) { - resp = &ListObjectsOutput{} - - var body io.Reader - var contentType string - - uri := c.client.Endpoint + "/{Bucket}" - - if req.Bucket != nil { - uri = strings.Replace(uri, "{"+"Bucket"+"}", aws.EscapePath(*req.Bucket), -1) - uri = strings.Replace(uri, "{"+"Bucket+"+"}", aws.EscapePath(*req.Bucket), -1) - } - - q := url.Values{} - - if req.Delimiter != nil { - q.Set("delimiter", *req.Delimiter) - } - - if req.EncodingType != nil { - q.Set("encoding-type", *req.EncodingType) - } - - if req.Marker != nil { - q.Set("marker", *req.Marker) - } - - if req.MaxKeys != nil { - q.Set("max-keys", strconv.Itoa(*req.MaxKeys)) - } - - if req.Prefix != nil { - q.Set("prefix", *req.Prefix) - } - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("GET", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - if e := xml.NewDecoder(httpResp.Body).Decode(resp); e != nil && e != io.EOF { - err = e - return - } - - return -} - -// ListParts lists the parts that have been uploaded for a specific -// multipart upload. -func (c *S3) ListParts(req *ListPartsRequest) (resp *ListPartsOutput, err error) { - resp = &ListPartsOutput{} - - var body io.Reader - var contentType string - - uri := c.client.Endpoint + "/{Bucket}/{Key+}" - - if req.Bucket != nil { - uri = strings.Replace(uri, "{"+"Bucket"+"}", aws.EscapePath(*req.Bucket), -1) - uri = strings.Replace(uri, "{"+"Bucket+"+"}", aws.EscapePath(*req.Bucket), -1) - } - - if req.Key != nil { - uri = strings.Replace(uri, "{"+"Key"+"}", aws.EscapePath(*req.Key), -1) - uri = strings.Replace(uri, "{"+"Key+"+"}", aws.EscapePath(*req.Key), -1) - } - - q := url.Values{} - - if req.MaxParts != nil { - q.Set("max-parts", strconv.Itoa(*req.MaxParts)) - } - - if req.PartNumberMarker != nil { - q.Set("part-number-marker", strconv.Itoa(*req.PartNumberMarker)) - } - - if req.UploadID != nil { - q.Set("uploadId", *req.UploadID) - } - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("GET", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - if e := xml.NewDecoder(httpResp.Body).Decode(resp); e != nil && e != io.EOF { - err = e - return - } - - return -} - -// PutBucketACL sets the permissions on a bucket using access control lists -func (c *S3) PutBucketACL(req *PutBucketACLRequest) (err error) { - // NRE - - var body io.Reader - var contentType string - - contentType = "application/xml" - - if req.AccessControlPolicy != nil { - req.AccessControlPolicy.XMLName = xml.Name{ - Space: "http://s3.amazonaws.com/doc/2006-03-01/", - Local: "AccessControlPolicy", - } - } - - b, err := xml.Marshal(req.AccessControlPolicy) - if err != nil { - return - } - body = bytes.NewReader(b) - - uri := c.client.Endpoint + "/{Bucket}?acl" - - if req.Bucket != nil { - uri = strings.Replace(uri, "{"+"Bucket"+"}", aws.EscapePath(*req.Bucket), -1) - uri = strings.Replace(uri, "{"+"Bucket+"+"}", aws.EscapePath(*req.Bucket), -1) - } - - q := url.Values{} - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("PUT", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - if req.ACL != nil { - httpReq.Header.Set("x-amz-acl", *req.ACL) - } - - if req.ContentMD5 != nil { - httpReq.Header.Set("Content-MD5", *req.ContentMD5) - } - - if req.GrantFullControl != nil { - httpReq.Header.Set("x-amz-grant-full-control", *req.GrantFullControl) - } - - if req.GrantRead != nil { - httpReq.Header.Set("x-amz-grant-read", *req.GrantRead) - } - - if req.GrantReadACP != nil { - httpReq.Header.Set("x-amz-grant-read-acp", *req.GrantReadACP) - } - - if req.GrantWrite != nil { - httpReq.Header.Set("x-amz-grant-write", *req.GrantWrite) - } - - if req.GrantWriteACP != nil { - httpReq.Header.Set("x-amz-grant-write-acp", *req.GrantWriteACP) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - - return -} - -// PutBucketCORS is undocumented. -func (c *S3) PutBucketCORS(req *PutBucketCORSRequest) (err error) { - // NRE - - var body io.Reader - var contentType string - - contentType = "application/xml" - - if req.CORSConfiguration != nil { - req.CORSConfiguration.XMLName = xml.Name{ - Space: "http://s3.amazonaws.com/doc/2006-03-01/", - Local: "CORSConfiguration", - } - } - - b, err := xml.Marshal(req.CORSConfiguration) - if err != nil { - return - } - body = bytes.NewReader(b) - - uri := c.client.Endpoint + "/{Bucket}?cors" - - if req.Bucket != nil { - uri = strings.Replace(uri, "{"+"Bucket"+"}", aws.EscapePath(*req.Bucket), -1) - uri = strings.Replace(uri, "{"+"Bucket+"+"}", aws.EscapePath(*req.Bucket), -1) - } - - q := url.Values{} - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("PUT", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - if req.ContentMD5 != nil { - httpReq.Header.Set("Content-MD5", *req.ContentMD5) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - - return -} - -// PutBucketLifecycle sets lifecycle configuration for your bucket. If a -// lifecycle configuration exists, it replaces it. -func (c *S3) PutBucketLifecycle(req *PutBucketLifecycleRequest) (err error) { - // NRE - - var body io.Reader - var contentType string - - contentType = "application/xml" - - if req.LifecycleConfiguration != nil { - req.LifecycleConfiguration.XMLName = xml.Name{ - Space: "http://s3.amazonaws.com/doc/2006-03-01/", - Local: "LifecycleConfiguration", - } - } - - b, err := xml.Marshal(req.LifecycleConfiguration) - if err != nil { - return - } - body = bytes.NewReader(b) - - uri := c.client.Endpoint + "/{Bucket}?lifecycle" - - if req.Bucket != nil { - uri = strings.Replace(uri, "{"+"Bucket"+"}", aws.EscapePath(*req.Bucket), -1) - uri = strings.Replace(uri, "{"+"Bucket+"+"}", aws.EscapePath(*req.Bucket), -1) - } - - q := url.Values{} - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("PUT", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - if req.ContentMD5 != nil { - httpReq.Header.Set("Content-MD5", *req.ContentMD5) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - - return -} - -// PutBucketLogging set the logging parameters for a bucket and to specify -// permissions for who can view and modify the logging parameters. To set -// the logging status of a bucket, you must be the bucket owner. -func (c *S3) PutBucketLogging(req *PutBucketLoggingRequest) (err error) { - // NRE - - var body io.Reader - var contentType string - - contentType = "application/xml" - - if req.BucketLoggingStatus != nil { - req.BucketLoggingStatus.XMLName = xml.Name{ - Space: "http://s3.amazonaws.com/doc/2006-03-01/", - Local: "BucketLoggingStatus", - } - } - - b, err := xml.Marshal(req.BucketLoggingStatus) - if err != nil { - return - } - body = bytes.NewReader(b) - - uri := c.client.Endpoint + "/{Bucket}?logging" - - if req.Bucket != nil { - uri = strings.Replace(uri, "{"+"Bucket"+"}", aws.EscapePath(*req.Bucket), -1) - uri = strings.Replace(uri, "{"+"Bucket+"+"}", aws.EscapePath(*req.Bucket), -1) - } - - q := url.Values{} - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("PUT", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - if req.ContentMD5 != nil { - httpReq.Header.Set("Content-MD5", *req.ContentMD5) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - - return -} - -// PutBucketNotification enables notifications of specified events for a -// bucket. -func (c *S3) PutBucketNotification(req *PutBucketNotificationRequest) (err error) { - // NRE - - var body io.Reader - var contentType string - - contentType = "application/xml" - - if req.NotificationConfiguration != nil { - req.NotificationConfiguration.XMLName = xml.Name{ - Space: "http://s3.amazonaws.com/doc/2006-03-01/", - Local: "NotificationConfiguration", - } - } - - b, err := xml.Marshal(req.NotificationConfiguration) - if err != nil { - return - } - body = bytes.NewReader(b) - - uri := c.client.Endpoint + "/{Bucket}?notification" - - if req.Bucket != nil { - uri = strings.Replace(uri, "{"+"Bucket"+"}", aws.EscapePath(*req.Bucket), -1) - uri = strings.Replace(uri, "{"+"Bucket+"+"}", aws.EscapePath(*req.Bucket), -1) - } - - q := url.Values{} - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("PUT", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - if req.ContentMD5 != nil { - httpReq.Header.Set("Content-MD5", *req.ContentMD5) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - - return -} - -// PutBucketPolicy replaces a policy on a bucket. If the bucket already has -// a policy, the one in this request completely replaces it. -func (c *S3) PutBucketPolicy(req *PutBucketPolicyRequest) (err error) { - // NRE - - var body io.Reader - var contentType string - - contentType = "application/xml" - - b, err := xml.Marshal(req.Policy) - if err != nil { - return - } - body = bytes.NewReader(b) - - uri := c.client.Endpoint + "/{Bucket}?policy" - - if req.Bucket != nil { - uri = strings.Replace(uri, "{"+"Bucket"+"}", aws.EscapePath(*req.Bucket), -1) - uri = strings.Replace(uri, "{"+"Bucket+"+"}", aws.EscapePath(*req.Bucket), -1) - } - - q := url.Values{} - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("PUT", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - if req.ContentMD5 != nil { - httpReq.Header.Set("Content-MD5", *req.ContentMD5) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - - return -} - -// PutBucketRequestPayment sets the request payment configuration for a -// bucket. By default, the bucket owner pays for downloads from the bucket. -// This configuration parameter enables the bucket owner (only) to specify -// that the person requesting the download will be charged for the -// download. -func (c *S3) PutBucketRequestPayment(req *PutBucketRequestPaymentRequest) (err error) { - // NRE - - var body io.Reader - var contentType string - - contentType = "application/xml" - - if req.RequestPaymentConfiguration != nil { - req.RequestPaymentConfiguration.XMLName = xml.Name{ - Space: "http://s3.amazonaws.com/doc/2006-03-01/", - Local: "RequestPaymentConfiguration", - } - } - - b, err := xml.Marshal(req.RequestPaymentConfiguration) - if err != nil { - return - } - body = bytes.NewReader(b) - - uri := c.client.Endpoint + "/{Bucket}?requestPayment" - - if req.Bucket != nil { - uri = strings.Replace(uri, "{"+"Bucket"+"}", aws.EscapePath(*req.Bucket), -1) - uri = strings.Replace(uri, "{"+"Bucket+"+"}", aws.EscapePath(*req.Bucket), -1) - } - - q := url.Values{} - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("PUT", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - if req.ContentMD5 != nil { - httpReq.Header.Set("Content-MD5", *req.ContentMD5) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - - return -} - -// PutBucketTagging is undocumented. -func (c *S3) PutBucketTagging(req *PutBucketTaggingRequest) (err error) { - // NRE - - var body io.Reader - var contentType string - - contentType = "application/xml" - - if req.Tagging != nil { - req.Tagging.XMLName = xml.Name{ - Space: "http://s3.amazonaws.com/doc/2006-03-01/", - Local: "Tagging", - } - } - - b, err := xml.Marshal(req.Tagging) - if err != nil { - return - } - body = bytes.NewReader(b) - - uri := c.client.Endpoint + "/{Bucket}?tagging" - - if req.Bucket != nil { - uri = strings.Replace(uri, "{"+"Bucket"+"}", aws.EscapePath(*req.Bucket), -1) - uri = strings.Replace(uri, "{"+"Bucket+"+"}", aws.EscapePath(*req.Bucket), -1) - } - - q := url.Values{} - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("PUT", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - if req.ContentMD5 != nil { - httpReq.Header.Set("Content-MD5", *req.ContentMD5) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - - return -} - -// PutBucketVersioning sets the versioning state of an existing bucket. To -// set the versioning state, you must be the bucket owner. -func (c *S3) PutBucketVersioning(req *PutBucketVersioningRequest) (err error) { - // NRE - - var body io.Reader - var contentType string - - contentType = "application/xml" - - if req.VersioningConfiguration != nil { - req.VersioningConfiguration.XMLName = xml.Name{ - Space: "http://s3.amazonaws.com/doc/2006-03-01/", - Local: "VersioningConfiguration", - } - } - - b, err := xml.Marshal(req.VersioningConfiguration) - if err != nil { - return - } - body = bytes.NewReader(b) - - uri := c.client.Endpoint + "/{Bucket}?versioning" - - if req.Bucket != nil { - uri = strings.Replace(uri, "{"+"Bucket"+"}", aws.EscapePath(*req.Bucket), -1) - uri = strings.Replace(uri, "{"+"Bucket+"+"}", aws.EscapePath(*req.Bucket), -1) - } - - q := url.Values{} - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("PUT", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - if req.ContentMD5 != nil { - httpReq.Header.Set("Content-MD5", *req.ContentMD5) - } - - if req.MFA != nil { - httpReq.Header.Set("x-amz-mfa", *req.MFA) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - - return -} - -// PutBucketWebsite is undocumented. -func (c *S3) PutBucketWebsite(req *PutBucketWebsiteRequest) (err error) { - // NRE - - var body io.Reader - var contentType string - - contentType = "application/xml" - - if req.WebsiteConfiguration != nil { - req.WebsiteConfiguration.XMLName = xml.Name{ - Space: "http://s3.amazonaws.com/doc/2006-03-01/", - Local: "WebsiteConfiguration", - } - } - - b, err := xml.Marshal(req.WebsiteConfiguration) - if err != nil { - return - } - body = bytes.NewReader(b) - - uri := c.client.Endpoint + "/{Bucket}?website" - - if req.Bucket != nil { - uri = strings.Replace(uri, "{"+"Bucket"+"}", aws.EscapePath(*req.Bucket), -1) - uri = strings.Replace(uri, "{"+"Bucket+"+"}", aws.EscapePath(*req.Bucket), -1) - } - - q := url.Values{} - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("PUT", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - if req.ContentMD5 != nil { - httpReq.Header.Set("Content-MD5", *req.ContentMD5) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - - return -} - -// PutObject is undocumented. -func (c *S3) PutObject(req *PutObjectRequest) (resp *PutObjectOutput, err error) { - resp = &PutObjectOutput{} - - var body io.Reader - var contentType string - - body = req.Body - - uri := c.client.Endpoint + "/{Bucket}/{Key+}" - - if req.Bucket != nil { - uri = strings.Replace(uri, "{"+"Bucket"+"}", aws.EscapePath(*req.Bucket), -1) - uri = strings.Replace(uri, "{"+"Bucket+"+"}", aws.EscapePath(*req.Bucket), -1) - } - - if req.Key != nil { - uri = strings.Replace(uri, "{"+"Key"+"}", aws.EscapePath(*req.Key), -1) - uri = strings.Replace(uri, "{"+"Key+"+"}", aws.EscapePath(*req.Key), -1) - } - - q := url.Values{} - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("PUT", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - if req.ACL != nil { - httpReq.Header.Set("x-amz-acl", *req.ACL) - } - - if req.CacheControl != nil { - httpReq.Header.Set("Cache-Control", *req.CacheControl) - } - - if req.ContentDisposition != nil { - httpReq.Header.Set("Content-Disposition", *req.ContentDisposition) - } - - if req.ContentEncoding != nil { - httpReq.Header.Set("Content-Encoding", *req.ContentEncoding) - } - - if req.ContentLanguage != nil { - httpReq.Header.Set("Content-Language", *req.ContentLanguage) - } - - if req.ContentLength != nil { - httpReq.ContentLength = *req.ContentLength - } - - if req.ContentMD5 != nil { - httpReq.Header.Set("Content-MD5", *req.ContentMD5) - } - - if req.ContentType != nil { - httpReq.Header.Set("Content-Type", *req.ContentType) - } - - if req.Expires != (time.Time{}) { - httpReq.Header.Set("Expires", req.Expires.Format(time.RFC822)) - } - - if req.GrantFullControl != nil { - httpReq.Header.Set("x-amz-grant-full-control", *req.GrantFullControl) - } - - if req.GrantRead != nil { - httpReq.Header.Set("x-amz-grant-read", *req.GrantRead) - } - - if req.GrantReadACP != nil { - httpReq.Header.Set("x-amz-grant-read-acp", *req.GrantReadACP) - } - - if req.GrantWriteACP != nil { - httpReq.Header.Set("x-amz-grant-write-acp", *req.GrantWriteACP) - } - - for name, value := range req.Metadata { - httpReq.Header.Set(name, value) - } - - if req.SSECustomerAlgorithm != nil { - httpReq.Header.Set("x-amz-server-side-encryption-customer-algorithm", *req.SSECustomerAlgorithm) - } - - if req.SSECustomerKey != nil { - httpReq.Header.Set("x-amz-server-side-encryption-customer-key", *req.SSECustomerKey) - } - - if req.SSECustomerKeyMD5 != nil { - httpReq.Header.Set("x-amz-server-side-encryption-customer-key-MD5", *req.SSECustomerKeyMD5) - } - - if req.SSEKMSKeyID != nil { - httpReq.Header.Set("x-amz-server-side-encryption-aws-kms-key-id", *req.SSEKMSKeyID) - } - - if req.ServerSideEncryption != nil { - httpReq.Header.Set("x-amz-server-side-encryption", *req.ServerSideEncryption) - } - - if req.StorageClass != nil { - httpReq.Header.Set("x-amz-storage-class", *req.StorageClass) - } - - if req.WebsiteRedirectLocation != nil { - httpReq.Header.Set("x-amz-website-redirect-location", *req.WebsiteRedirectLocation) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - if e := xml.NewDecoder(httpResp.Body).Decode(resp); e != nil && e != io.EOF { - err = e - return - } - - if s := httpResp.Header.Get("ETag"); s != "" { - - resp.ETag = &s - - } - - if s := httpResp.Header.Get("x-amz-expiration"); s != "" { - - resp.Expiration = &s - - } - - if s := httpResp.Header.Get("x-amz-server-side-encryption-customer-algorithm"); s != "" { - - resp.SSECustomerAlgorithm = &s - - } - - if s := httpResp.Header.Get("x-amz-server-side-encryption-customer-key-MD5"); s != "" { - - resp.SSECustomerKeyMD5 = &s - - } - - if s := httpResp.Header.Get("x-amz-server-side-encryption-aws-kms-key-id"); s != "" { - - resp.SSEKMSKeyID = &s - - } - - if s := httpResp.Header.Get("x-amz-server-side-encryption"); s != "" { - - resp.ServerSideEncryption = &s - - } - - if s := httpResp.Header.Get("x-amz-version-id"); s != "" { - - resp.VersionID = &s - - } - - return -} - -// PutObjectACL uses the acl subresource to set the access control list -// permissions for an object that already exists in a bucket -func (c *S3) PutObjectACL(req *PutObjectACLRequest) (err error) { - // NRE - - var body io.Reader - var contentType string - - contentType = "application/xml" - - if req.AccessControlPolicy != nil { - req.AccessControlPolicy.XMLName = xml.Name{ - Space: "http://s3.amazonaws.com/doc/2006-03-01/", - Local: "AccessControlPolicy", - } - } - - b, err := xml.Marshal(req.AccessControlPolicy) - if err != nil { - return - } - body = bytes.NewReader(b) - - uri := c.client.Endpoint + "/{Bucket}/{Key+}?acl" - - if req.Bucket != nil { - uri = strings.Replace(uri, "{"+"Bucket"+"}", aws.EscapePath(*req.Bucket), -1) - uri = strings.Replace(uri, "{"+"Bucket+"+"}", aws.EscapePath(*req.Bucket), -1) - } - - if req.Key != nil { - uri = strings.Replace(uri, "{"+"Key"+"}", aws.EscapePath(*req.Key), -1) - uri = strings.Replace(uri, "{"+"Key+"+"}", aws.EscapePath(*req.Key), -1) - } - - q := url.Values{} - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("PUT", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - if req.ACL != nil { - httpReq.Header.Set("x-amz-acl", *req.ACL) - } - - if req.ContentMD5 != nil { - httpReq.Header.Set("Content-MD5", *req.ContentMD5) - } - - if req.GrantFullControl != nil { - httpReq.Header.Set("x-amz-grant-full-control", *req.GrantFullControl) - } - - if req.GrantRead != nil { - httpReq.Header.Set("x-amz-grant-read", *req.GrantRead) - } - - if req.GrantReadACP != nil { - httpReq.Header.Set("x-amz-grant-read-acp", *req.GrantReadACP) - } - - if req.GrantWrite != nil { - httpReq.Header.Set("x-amz-grant-write", *req.GrantWrite) - } - - if req.GrantWriteACP != nil { - httpReq.Header.Set("x-amz-grant-write-acp", *req.GrantWriteACP) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - - return -} - -// RestoreObject restores an archived copy of an object back into Amazon S3 -func (c *S3) RestoreObject(req *RestoreObjectRequest) (err error) { - // NRE - - var body io.Reader - var contentType string - - contentType = "application/xml" - - if req.RestoreRequest != nil { - req.RestoreRequest.XMLName = xml.Name{ - Space: "http://s3.amazonaws.com/doc/2006-03-01/", - Local: "RestoreRequest", - } - } - - b, err := xml.Marshal(req.RestoreRequest) - if err != nil { - return - } - body = bytes.NewReader(b) - - uri := c.client.Endpoint + "/{Bucket}/{Key+}?restore" - - if req.Bucket != nil { - uri = strings.Replace(uri, "{"+"Bucket"+"}", aws.EscapePath(*req.Bucket), -1) - uri = strings.Replace(uri, "{"+"Bucket+"+"}", aws.EscapePath(*req.Bucket), -1) - } - - if req.Key != nil { - uri = strings.Replace(uri, "{"+"Key"+"}", aws.EscapePath(*req.Key), -1) - uri = strings.Replace(uri, "{"+"Key+"+"}", aws.EscapePath(*req.Key), -1) - } - - q := url.Values{} - - if req.VersionID != nil { - q.Set("versionId", *req.VersionID) - } - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("POST", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - - return -} - -// UploadPart uploads a part in a multipart upload. Note: After you -// initiate multipart upload and upload one or more parts, you must either -// complete or abort multipart upload in order to stop getting charged for -// storage of the uploaded parts. Only after you either complete or abort -// multipart upload, Amazon S3 frees up the parts storage and stops -// charging you for the parts storage. -func (c *S3) UploadPart(req *UploadPartRequest) (resp *UploadPartOutput, err error) { - resp = &UploadPartOutput{} - - var body io.Reader - var contentType string - - body = req.Body - - uri := c.client.Endpoint + "/{Bucket}/{Key+}" - - if req.Bucket != nil { - uri = strings.Replace(uri, "{"+"Bucket"+"}", aws.EscapePath(*req.Bucket), -1) - uri = strings.Replace(uri, "{"+"Bucket+"+"}", aws.EscapePath(*req.Bucket), -1) - } - - if req.Key != nil { - uri = strings.Replace(uri, "{"+"Key"+"}", aws.EscapePath(*req.Key), -1) - uri = strings.Replace(uri, "{"+"Key+"+"}", aws.EscapePath(*req.Key), -1) - } - - q := url.Values{} - - if req.PartNumber != nil { - q.Set("partNumber", strconv.Itoa(*req.PartNumber)) - } - - if req.UploadID != nil { - q.Set("uploadId", *req.UploadID) - } - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("PUT", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - if req.ContentLength != nil { - httpReq.ContentLength = *req.ContentLength - } - - if req.ContentMD5 != nil { - httpReq.Header.Set("Content-MD5", *req.ContentMD5) - } - - if req.SSECustomerAlgorithm != nil { - httpReq.Header.Set("x-amz-server-side-encryption-customer-algorithm", *req.SSECustomerAlgorithm) - } - - if req.SSECustomerKey != nil { - httpReq.Header.Set("x-amz-server-side-encryption-customer-key", *req.SSECustomerKey) - } - - if req.SSECustomerKeyMD5 != nil { - httpReq.Header.Set("x-amz-server-side-encryption-customer-key-MD5", *req.SSECustomerKeyMD5) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - if e := xml.NewDecoder(httpResp.Body).Decode(resp); e != nil && e != io.EOF { - err = e - return - } - - if s := httpResp.Header.Get("ETag"); s != "" { - - resp.ETag = &s - - } - - if s := httpResp.Header.Get("x-amz-server-side-encryption-customer-algorithm"); s != "" { - - resp.SSECustomerAlgorithm = &s - - } - - if s := httpResp.Header.Get("x-amz-server-side-encryption-customer-key-MD5"); s != "" { - - resp.SSECustomerKeyMD5 = &s - - } - - if s := httpResp.Header.Get("x-amz-server-side-encryption-aws-kms-key-id"); s != "" { - - resp.SSEKMSKeyID = &s - - } - - if s := httpResp.Header.Get("x-amz-server-side-encryption"); s != "" { - - resp.ServerSideEncryption = &s - - } - - return -} - -// UploadPartCopy uploads a part by copying data from an existing object as -// data source. -func (c *S3) UploadPartCopy(req *UploadPartCopyRequest) (resp *UploadPartCopyOutput, err error) { - resp = &UploadPartCopyOutput{} - - var body io.Reader - var contentType string - - uri := c.client.Endpoint + "/{Bucket}/{Key+}" - - if req.Bucket != nil { - uri = strings.Replace(uri, "{"+"Bucket"+"}", aws.EscapePath(*req.Bucket), -1) - uri = strings.Replace(uri, "{"+"Bucket+"+"}", aws.EscapePath(*req.Bucket), -1) - } - - if req.Key != nil { - uri = strings.Replace(uri, "{"+"Key"+"}", aws.EscapePath(*req.Key), -1) - uri = strings.Replace(uri, "{"+"Key+"+"}", aws.EscapePath(*req.Key), -1) - } - - q := url.Values{} - - if req.PartNumber != nil { - q.Set("partNumber", strconv.Itoa(*req.PartNumber)) - } - - if req.UploadID != nil { - q.Set("uploadId", *req.UploadID) - } - - if len(q) > 0 { - uri += "?" + q.Encode() - } - - httpReq, err := http.NewRequest("PUT", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - if req.CopySource != nil { - httpReq.Header.Set("x-amz-copy-source", *req.CopySource) - } - - if req.CopySourceIfMatch != nil { - httpReq.Header.Set("x-amz-copy-source-if-match", *req.CopySourceIfMatch) - } - - if req.CopySourceIfModifiedSince != (time.Time{}) { - httpReq.Header.Set("x-amz-copy-source-if-modified-since", req.CopySourceIfModifiedSince.Format(time.RFC822)) - } - - if req.CopySourceIfNoneMatch != nil { - httpReq.Header.Set("x-amz-copy-source-if-none-match", *req.CopySourceIfNoneMatch) - } - - if req.CopySourceIfUnmodifiedSince != (time.Time{}) { - httpReq.Header.Set("x-amz-copy-source-if-unmodified-since", req.CopySourceIfUnmodifiedSince.Format(time.RFC822)) - } - - if req.CopySourceRange != nil { - httpReq.Header.Set("x-amz-copy-source-range", *req.CopySourceRange) - } - - if req.CopySourceSSECustomerAlgorithm != nil { - httpReq.Header.Set("x-amz-copy-source-server-side-encryption-customer-algorithm", *req.CopySourceSSECustomerAlgorithm) - } - - if req.CopySourceSSECustomerKey != nil { - httpReq.Header.Set("x-amz-copy-source-server-side-encryption-customer-key", *req.CopySourceSSECustomerKey) - } - - if req.CopySourceSSECustomerKeyMD5 != nil { - httpReq.Header.Set("x-amz-copy-source-server-side-encryption-customer-key-MD5", *req.CopySourceSSECustomerKeyMD5) - } - - if req.SSECustomerAlgorithm != nil { - httpReq.Header.Set("x-amz-server-side-encryption-customer-algorithm", *req.SSECustomerAlgorithm) - } - - if req.SSECustomerKey != nil { - httpReq.Header.Set("x-amz-server-side-encryption-customer-key", *req.SSECustomerKey) - } - - if req.SSECustomerKeyMD5 != nil { - httpReq.Header.Set("x-amz-server-side-encryption-customer-key-MD5", *req.SSECustomerKeyMD5) - } - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - defer httpResp.Body.Close() - if e := xml.NewDecoder(httpResp.Body).Decode(resp); e != nil && e != io.EOF { - err = e - return - } - - if s := httpResp.Header.Get("x-amz-copy-source-version-id"); s != "" { - - resp.CopySourceVersionID = &s - - } - - if s := httpResp.Header.Get("x-amz-server-side-encryption-customer-algorithm"); s != "" { - - resp.SSECustomerAlgorithm = &s - - } - - if s := httpResp.Header.Get("x-amz-server-side-encryption-customer-key-MD5"); s != "" { - - resp.SSECustomerKeyMD5 = &s - - } - - if s := httpResp.Header.Get("x-amz-server-side-encryption-aws-kms-key-id"); s != "" { - - resp.SSEKMSKeyID = &s - - } - - if s := httpResp.Header.Get("x-amz-server-side-encryption"); s != "" { - - resp.ServerSideEncryption = &s - - } - - return -} - -// AbortMultipartUploadRequest is undocumented. -type AbortMultipartUploadRequest struct { - XMLName xml.Name - - Bucket aws.StringValue `xml:"-"` - Key aws.StringValue `xml:"-"` - UploadID aws.StringValue `xml:"-"` -} - -func (v *AbortMultipartUploadRequest) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// AccessControlPolicy is undocumented. -type AccessControlPolicy struct { - XMLName xml.Name - - Grants []Grant `xml:"AccessControlList>Grant,omitempty"` - Owner *Owner `xml:"Owner,omitempty"` -} - -func (v *AccessControlPolicy) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// Bucket is undocumented. -type Bucket struct { - XMLName xml.Name - - CreationDate time.Time `xml:"CreationDate"` - Name aws.StringValue `xml:"Name"` -} - -func (v *Bucket) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// Possible values for S3. -const ( - BucketCannedACLAuthenticatedRead = "authenticated-read" - BucketCannedACLPrivate = "private" - BucketCannedACLPublicRead = "public-read" - BucketCannedACLPublicReadWrite = "public-read-write" -) - -// Possible values for S3. -const ( - BucketLocationConstraintApNortheast1 = "ap-northeast-1" - BucketLocationConstraintApSoutheast1 = "ap-southeast-1" - BucketLocationConstraintApSoutheast2 = "ap-southeast-2" - BucketLocationConstraintCnNorth1 = "cn-north-1" - BucketLocationConstraintEu = "EU" - BucketLocationConstraintEuCentral1 = "eu-central-1" - BucketLocationConstraintEuWest1 = "eu-west-1" - BucketLocationConstraintSaEast1 = "sa-east-1" - BucketLocationConstraintUsWest1 = "us-west-1" - BucketLocationConstraintUsWest2 = "us-west-2" -) - -// BucketLoggingStatus is undocumented. -type BucketLoggingStatus struct { - XMLName xml.Name - - LoggingEnabled *LoggingEnabled `xml:"LoggingEnabled,omitempty"` -} - -func (v *BucketLoggingStatus) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// Possible values for S3. -const ( - BucketLogsPermissionFullControl = "FULL_CONTROL" - BucketLogsPermissionRead = "READ" - BucketLogsPermissionWrite = "WRITE" -) - -// Possible values for S3. -const ( - BucketVersioningStatusEnabled = "Enabled" - BucketVersioningStatusSuspended = "Suspended" -) - -// CORSConfiguration is undocumented. -type CORSConfiguration struct { - XMLName xml.Name - - CORSRules []CORSRule `xml:"CORSRule,omitempty"` -} - -func (v *CORSConfiguration) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// CORSRule is undocumented. -type CORSRule struct { - XMLName xml.Name - - AllowedHeaders []string `xml:"AllowedHeader,omitempty"` - AllowedMethods []string `xml:"AllowedMethod,omitempty"` - AllowedOrigins []string `xml:"AllowedOrigin,omitempty"` - ExposeHeaders []string `xml:"ExposeHeader,omitempty"` - MaxAgeSeconds aws.IntegerValue `xml:"MaxAgeSeconds"` -} - -func (v *CORSRule) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// CloudFunctionConfiguration is undocumented. -type CloudFunctionConfiguration struct { - XMLName xml.Name - - CloudFunction aws.StringValue `xml:"CloudFunction"` - Event aws.StringValue `xml:"Event"` - Events []string `xml:"Event,omitempty"` - ID aws.StringValue `xml:"Id"` - InvocationRole aws.StringValue `xml:"InvocationRole"` -} - -func (v *CloudFunctionConfiguration) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// CommonPrefix is undocumented. -type CommonPrefix struct { - XMLName xml.Name - - Prefix aws.StringValue `xml:"Prefix"` -} - -func (v *CommonPrefix) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// CompleteMultipartUploadOutput is undocumented. -type CompleteMultipartUploadOutput struct { - XMLName xml.Name - - Bucket aws.StringValue `xml:"Bucket"` - ETag aws.StringValue `xml:"ETag"` - Expiration aws.StringValue `xml:"-"` - Key aws.StringValue `xml:"Key"` - Location aws.StringValue `xml:"Location"` - SSEKMSKeyID aws.StringValue `xml:"-"` - ServerSideEncryption aws.StringValue `xml:"-"` - VersionID aws.StringValue `xml:"-"` -} - -func (v *CompleteMultipartUploadOutput) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// CompleteMultipartUploadRequest is undocumented. -type CompleteMultipartUploadRequest struct { - XMLName xml.Name - - Bucket aws.StringValue `xml:"-"` - Key aws.StringValue `xml:"-"` - MultipartUpload *CompletedMultipartUpload `xml:"CompleteMultipartUpload,omitempty"` - UploadID aws.StringValue `xml:"-"` -} - -func (v *CompleteMultipartUploadRequest) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// CompletedMultipartUpload is undocumented. -type CompletedMultipartUpload struct { - XMLName xml.Name - - Parts []CompletedPart `xml:"Part,omitempty"` -} - -func (v *CompletedMultipartUpload) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// CompletedPart is undocumented. -type CompletedPart struct { - XMLName xml.Name - - ETag aws.StringValue `xml:"ETag"` - PartNumber aws.IntegerValue `xml:"PartNumber"` -} - -func (v *CompletedPart) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// Condition is undocumented. -type Condition struct { - XMLName xml.Name - - HTTPErrorCodeReturnedEquals aws.StringValue `xml:"HttpErrorCodeReturnedEquals"` - KeyPrefixEquals aws.StringValue `xml:"KeyPrefixEquals"` -} - -func (v *Condition) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// CopyObjectOutput is undocumented. -type CopyObjectOutput struct { - XMLName xml.Name - - CopyObjectResult *CopyObjectResult `xml:"CopyObjectResult,omitempty"` - CopySourceVersionID aws.StringValue `xml:"-"` - Expiration aws.StringValue `xml:"-"` - SSECustomerAlgorithm aws.StringValue `xml:"-"` - SSECustomerKeyMD5 aws.StringValue `xml:"-"` - SSEKMSKeyID aws.StringValue `xml:"-"` - ServerSideEncryption aws.StringValue `xml:"-"` -} - -func (v *CopyObjectOutput) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// CopyObjectRequest is undocumented. -type CopyObjectRequest struct { - XMLName xml.Name - - ACL aws.StringValue `xml:"-"` - Bucket aws.StringValue `xml:"-"` - CacheControl aws.StringValue `xml:"-"` - ContentDisposition aws.StringValue `xml:"-"` - ContentEncoding aws.StringValue `xml:"-"` - ContentLanguage aws.StringValue `xml:"-"` - ContentType aws.StringValue `xml:"-"` - CopySource aws.StringValue `xml:"-"` - CopySourceIfMatch aws.StringValue `xml:"-"` - CopySourceIfModifiedSince time.Time `xml:"-"` - CopySourceIfNoneMatch aws.StringValue `xml:"-"` - CopySourceIfUnmodifiedSince time.Time `xml:"-"` - CopySourceSSECustomerAlgorithm aws.StringValue `xml:"-"` - CopySourceSSECustomerKey aws.StringValue `xml:"-"` - CopySourceSSECustomerKeyMD5 aws.StringValue `xml:"-"` - Expires time.Time `xml:"-"` - GrantFullControl aws.StringValue `xml:"-"` - GrantRead aws.StringValue `xml:"-"` - GrantReadACP aws.StringValue `xml:"-"` - GrantWriteACP aws.StringValue `xml:"-"` - Key aws.StringValue `xml:"-"` - Metadata map[string]string `xml:"-"` - MetadataDirective aws.StringValue `xml:"-"` - SSECustomerAlgorithm aws.StringValue `xml:"-"` - SSECustomerKey aws.StringValue `xml:"-"` - SSECustomerKeyMD5 aws.StringValue `xml:"-"` - SSEKMSKeyID aws.StringValue `xml:"-"` - ServerSideEncryption aws.StringValue `xml:"-"` - StorageClass aws.StringValue `xml:"-"` - WebsiteRedirectLocation aws.StringValue `xml:"-"` -} - -func (v *CopyObjectRequest) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// CopyObjectResult is undocumented. -type CopyObjectResult struct { - XMLName xml.Name - - ETag aws.StringValue `xml:"ETag"` - LastModified time.Time `xml:"LastModified"` -} - -func (v *CopyObjectResult) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// CopyPartResult is undocumented. -type CopyPartResult struct { - XMLName xml.Name - - ETag aws.StringValue `xml:"ETag"` - LastModified time.Time `xml:"LastModified"` -} - -func (v *CopyPartResult) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// CreateBucketConfiguration is undocumented. -type CreateBucketConfiguration struct { - XMLName xml.Name - - LocationConstraint aws.StringValue `xml:"LocationConstraint"` -} - -func (v *CreateBucketConfiguration) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// CreateBucketOutput is undocumented. -type CreateBucketOutput struct { - XMLName xml.Name - - Location aws.StringValue `xml:"-"` -} - -func (v *CreateBucketOutput) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// CreateBucketRequest is undocumented. -type CreateBucketRequest struct { - XMLName xml.Name - - ACL aws.StringValue `xml:"-"` - Bucket aws.StringValue `xml:"-"` - CreateBucketConfiguration *CreateBucketConfiguration `xml:"CreateBucketConfiguration,omitempty"` - GrantFullControl aws.StringValue `xml:"-"` - GrantRead aws.StringValue `xml:"-"` - GrantReadACP aws.StringValue `xml:"-"` - GrantWrite aws.StringValue `xml:"-"` - GrantWriteACP aws.StringValue `xml:"-"` -} - -func (v *CreateBucketRequest) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// CreateMultipartUploadOutput is undocumented. -type CreateMultipartUploadOutput struct { - XMLName xml.Name - - Bucket aws.StringValue `xml:"Bucket"` - Key aws.StringValue `xml:"Key"` - SSECustomerAlgorithm aws.StringValue `xml:"-"` - SSECustomerKeyMD5 aws.StringValue `xml:"-"` - SSEKMSKeyID aws.StringValue `xml:"-"` - ServerSideEncryption aws.StringValue `xml:"-"` - UploadID aws.StringValue `xml:"UploadId"` -} - -func (v *CreateMultipartUploadOutput) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// CreateMultipartUploadRequest is undocumented. -type CreateMultipartUploadRequest struct { - XMLName xml.Name - - ACL aws.StringValue `xml:"-"` - Bucket aws.StringValue `xml:"-"` - CacheControl aws.StringValue `xml:"-"` - ContentDisposition aws.StringValue `xml:"-"` - ContentEncoding aws.StringValue `xml:"-"` - ContentLanguage aws.StringValue `xml:"-"` - ContentType aws.StringValue `xml:"-"` - Expires time.Time `xml:"-"` - GrantFullControl aws.StringValue `xml:"-"` - GrantRead aws.StringValue `xml:"-"` - GrantReadACP aws.StringValue `xml:"-"` - GrantWriteACP aws.StringValue `xml:"-"` - Key aws.StringValue `xml:"-"` - Metadata map[string]string `xml:"-"` - SSECustomerAlgorithm aws.StringValue `xml:"-"` - SSECustomerKey aws.StringValue `xml:"-"` - SSECustomerKeyMD5 aws.StringValue `xml:"-"` - SSEKMSKeyID aws.StringValue `xml:"-"` - ServerSideEncryption aws.StringValue `xml:"-"` - StorageClass aws.StringValue `xml:"-"` - WebsiteRedirectLocation aws.StringValue `xml:"-"` -} - -func (v *CreateMultipartUploadRequest) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// Delete is undocumented. -type Delete struct { - XMLName xml.Name - - Objects []ObjectIdentifier `xml:"Object,omitempty"` - Quiet aws.BooleanValue `xml:"Quiet"` -} - -func (v *Delete) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// DeleteBucketCORSRequest is undocumented. -type DeleteBucketCORSRequest struct { - XMLName xml.Name - - Bucket aws.StringValue `xml:"-"` -} - -func (v *DeleteBucketCORSRequest) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// DeleteBucketLifecycleRequest is undocumented. -type DeleteBucketLifecycleRequest struct { - XMLName xml.Name - - Bucket aws.StringValue `xml:"-"` -} - -func (v *DeleteBucketLifecycleRequest) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// DeleteBucketPolicyRequest is undocumented. -type DeleteBucketPolicyRequest struct { - XMLName xml.Name - - Bucket aws.StringValue `xml:"-"` -} - -func (v *DeleteBucketPolicyRequest) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// DeleteBucketRequest is undocumented. -type DeleteBucketRequest struct { - XMLName xml.Name - - Bucket aws.StringValue `xml:"-"` -} - -func (v *DeleteBucketRequest) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// DeleteBucketTaggingRequest is undocumented. -type DeleteBucketTaggingRequest struct { - XMLName xml.Name - - Bucket aws.StringValue `xml:"-"` -} - -func (v *DeleteBucketTaggingRequest) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// DeleteBucketWebsiteRequest is undocumented. -type DeleteBucketWebsiteRequest struct { - XMLName xml.Name - - Bucket aws.StringValue `xml:"-"` -} - -func (v *DeleteBucketWebsiteRequest) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// DeleteMarkerEntry is undocumented. -type DeleteMarkerEntry struct { - XMLName xml.Name - - IsLatest aws.BooleanValue `xml:"IsLatest"` - Key aws.StringValue `xml:"Key"` - LastModified time.Time `xml:"LastModified"` - Owner *Owner `xml:"Owner,omitempty"` - VersionID aws.StringValue `xml:"VersionId"` -} - -func (v *DeleteMarkerEntry) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// DeleteObjectOutput is undocumented. -type DeleteObjectOutput struct { - XMLName xml.Name - - DeleteMarker aws.BooleanValue `xml:"-"` - VersionID aws.StringValue `xml:"-"` -} - -func (v *DeleteObjectOutput) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// DeleteObjectRequest is undocumented. -type DeleteObjectRequest struct { - XMLName xml.Name - - Bucket aws.StringValue `xml:"-"` - Key aws.StringValue `xml:"-"` - MFA aws.StringValue `xml:"-"` - VersionID aws.StringValue `xml:"-"` -} - -func (v *DeleteObjectRequest) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// DeleteObjectsOutput is undocumented. -type DeleteObjectsOutput struct { - XMLName xml.Name - - Deleted []DeletedObject `xml:"Deleted,omitempty"` - Errors []Error `xml:"Error,omitempty"` -} - -func (v *DeleteObjectsOutput) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// DeleteObjectsRequest is undocumented. -type DeleteObjectsRequest struct { - XMLName xml.Name - - Bucket aws.StringValue `xml:"-"` - Delete *Delete `xml:"Delete,omitempty"` - MFA aws.StringValue `xml:"-"` -} - -func (v *DeleteObjectsRequest) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// DeletedObject is undocumented. -type DeletedObject struct { - XMLName xml.Name - - DeleteMarker aws.BooleanValue `xml:"DeleteMarker"` - DeleteMarkerVersionID aws.StringValue `xml:"DeleteMarkerVersionId"` - Key aws.StringValue `xml:"Key"` - VersionID aws.StringValue `xml:"VersionId"` -} - -func (v *DeletedObject) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// Possible values for S3. -const ( - EncodingTypeURL = "url" -) - -// Error is undocumented. -type Error struct { - XMLName xml.Name - - Code aws.StringValue `xml:"Code"` - Key aws.StringValue `xml:"Key"` - Message aws.StringValue `xml:"Message"` - VersionID aws.StringValue `xml:"VersionId"` -} - -func (v *Error) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// ErrorDocument is undocumented. -type ErrorDocument struct { - XMLName xml.Name - - Key aws.StringValue `xml:"Key"` -} - -func (v *ErrorDocument) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// Possible values for S3. -const ( - EventS3ObjectCreatedCompleteMultipartUpload = "s3:ObjectCreated:CompleteMultipartUpload" - EventS3ObjectCreatedCopy = "s3:ObjectCreated:Copy" - EventS3ObjectCreatedPost = "s3:ObjectCreated:Post" - EventS3ObjectCreatedPut = "s3:ObjectCreated:Put" - EventS3ReducedRedundancyLostObject = "s3:ReducedRedundancyLostObject" -) - -// Possible values for S3. -const ( - ExpirationStatusDisabled = "Disabled" - ExpirationStatusEnabled = "Enabled" -) - -// GetBucketACLOutput is undocumented. -type GetBucketACLOutput struct { - XMLName xml.Name - - Grants []Grant `xml:"AccessControlList>Grant,omitempty"` - Owner *Owner `xml:"Owner,omitempty"` -} - -func (v *GetBucketACLOutput) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// GetBucketACLRequest is undocumented. -type GetBucketACLRequest struct { - XMLName xml.Name - - Bucket aws.StringValue `xml:"-"` -} - -func (v *GetBucketACLRequest) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// GetBucketCORSOutput is undocumented. -type GetBucketCORSOutput struct { - XMLName xml.Name - - CORSRules []CORSRule `xml:"CORSRule,omitempty"` -} - -func (v *GetBucketCORSOutput) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// GetBucketCORSRequest is undocumented. -type GetBucketCORSRequest struct { - XMLName xml.Name - - Bucket aws.StringValue `xml:"-"` -} - -func (v *GetBucketCORSRequest) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// GetBucketLifecycleOutput is undocumented. -type GetBucketLifecycleOutput struct { - XMLName xml.Name - - Rules []Rule `xml:"Rule,omitempty"` -} - -func (v *GetBucketLifecycleOutput) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// GetBucketLifecycleRequest is undocumented. -type GetBucketLifecycleRequest struct { - XMLName xml.Name - - Bucket aws.StringValue `xml:"-"` -} - -func (v *GetBucketLifecycleRequest) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// GetBucketLocationOutput is undocumented. -type GetBucketLocationOutput struct { - XMLName xml.Name - - LocationConstraint aws.StringValue `xml:"LocationConstraint"` -} - -func (v *GetBucketLocationOutput) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// GetBucketLocationRequest is undocumented. -type GetBucketLocationRequest struct { - XMLName xml.Name - - Bucket aws.StringValue `xml:"-"` -} - -func (v *GetBucketLocationRequest) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// GetBucketLoggingOutput is undocumented. -type GetBucketLoggingOutput struct { - XMLName xml.Name - - LoggingEnabled *LoggingEnabled `xml:"LoggingEnabled,omitempty"` -} - -func (v *GetBucketLoggingOutput) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// GetBucketLoggingRequest is undocumented. -type GetBucketLoggingRequest struct { - XMLName xml.Name - - Bucket aws.StringValue `xml:"-"` -} - -func (v *GetBucketLoggingRequest) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// GetBucketNotificationOutput is undocumented. -type GetBucketNotificationOutput struct { - XMLName xml.Name - - CloudFunctionConfiguration *CloudFunctionConfiguration `xml:"CloudFunctionConfiguration,omitempty"` - QueueConfiguration *QueueConfiguration `xml:"QueueConfiguration,omitempty"` - TopicConfiguration *TopicConfiguration `xml:"TopicConfiguration,omitempty"` -} - -func (v *GetBucketNotificationOutput) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// GetBucketNotificationRequest is undocumented. -type GetBucketNotificationRequest struct { - XMLName xml.Name - - Bucket aws.StringValue `xml:"-"` -} - -func (v *GetBucketNotificationRequest) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// GetBucketPolicyOutput is undocumented. -type GetBucketPolicyOutput struct { - XMLName xml.Name - - Policy aws.StringValue `xml:"Policy"` -} - -func (v *GetBucketPolicyOutput) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// GetBucketPolicyRequest is undocumented. -type GetBucketPolicyRequest struct { - XMLName xml.Name - - Bucket aws.StringValue `xml:"-"` -} - -func (v *GetBucketPolicyRequest) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// GetBucketRequestPaymentOutput is undocumented. -type GetBucketRequestPaymentOutput struct { - XMLName xml.Name - - Payer aws.StringValue `xml:"Payer"` -} - -func (v *GetBucketRequestPaymentOutput) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// GetBucketRequestPaymentRequest is undocumented. -type GetBucketRequestPaymentRequest struct { - XMLName xml.Name - - Bucket aws.StringValue `xml:"-"` -} - -func (v *GetBucketRequestPaymentRequest) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// GetBucketTaggingOutput is undocumented. -type GetBucketTaggingOutput struct { - XMLName xml.Name - - TagSet []Tag `xml:"TagSet>Tag,omitempty"` -} - -func (v *GetBucketTaggingOutput) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// GetBucketTaggingRequest is undocumented. -type GetBucketTaggingRequest struct { - XMLName xml.Name - - Bucket aws.StringValue `xml:"-"` -} - -func (v *GetBucketTaggingRequest) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// GetBucketVersioningOutput is undocumented. -type GetBucketVersioningOutput struct { - XMLName xml.Name - - MFADelete aws.StringValue `xml:"MfaDelete"` - Status aws.StringValue `xml:"Status"` -} - -func (v *GetBucketVersioningOutput) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// GetBucketVersioningRequest is undocumented. -type GetBucketVersioningRequest struct { - XMLName xml.Name - - Bucket aws.StringValue `xml:"-"` -} - -func (v *GetBucketVersioningRequest) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// GetBucketWebsiteOutput is undocumented. -type GetBucketWebsiteOutput struct { - XMLName xml.Name - - ErrorDocument *ErrorDocument `xml:"ErrorDocument,omitempty"` - IndexDocument *IndexDocument `xml:"IndexDocument,omitempty"` - RedirectAllRequestsTo *RedirectAllRequestsTo `xml:"RedirectAllRequestsTo,omitempty"` - RoutingRules []RoutingRule `xml:"RoutingRules>RoutingRule,omitempty"` -} - -func (v *GetBucketWebsiteOutput) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// GetBucketWebsiteRequest is undocumented. -type GetBucketWebsiteRequest struct { - XMLName xml.Name - - Bucket aws.StringValue `xml:"-"` -} - -func (v *GetBucketWebsiteRequest) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// GetObjectACLOutput is undocumented. -type GetObjectACLOutput struct { - XMLName xml.Name - - Grants []Grant `xml:"AccessControlList>Grant,omitempty"` - Owner *Owner `xml:"Owner,omitempty"` -} - -func (v *GetObjectACLOutput) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// GetObjectACLRequest is undocumented. -type GetObjectACLRequest struct { - XMLName xml.Name - - Bucket aws.StringValue `xml:"-"` - Key aws.StringValue `xml:"-"` - VersionID aws.StringValue `xml:"-"` -} - -func (v *GetObjectACLRequest) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// GetObjectOutput is undocumented. -type GetObjectOutput struct { - XMLName xml.Name - - AcceptRanges aws.StringValue `xml:"-"` - Body io.ReadCloser `xml:"-"` - CacheControl aws.StringValue `xml:"-"` - ContentDisposition aws.StringValue `xml:"-"` - ContentEncoding aws.StringValue `xml:"-"` - ContentLanguage aws.StringValue `xml:"-"` - ContentLength aws.LongValue `xml:"-"` - ContentType aws.StringValue `xml:"-"` - DeleteMarker aws.BooleanValue `xml:"-"` - ETag aws.StringValue `xml:"-"` - Expiration aws.StringValue `xml:"-"` - Expires time.Time `xml:"-"` - LastModified time.Time `xml:"-"` - Metadata map[string]string `xml:"-"` - MissingMeta aws.IntegerValue `xml:"-"` - Restore aws.StringValue `xml:"-"` - SSECustomerAlgorithm aws.StringValue `xml:"-"` - SSECustomerKeyMD5 aws.StringValue `xml:"-"` - SSEKMSKeyID aws.StringValue `xml:"-"` - ServerSideEncryption aws.StringValue `xml:"-"` - VersionID aws.StringValue `xml:"-"` - WebsiteRedirectLocation aws.StringValue `xml:"-"` -} - -func (v *GetObjectOutput) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// GetObjectRequest is undocumented. -type GetObjectRequest struct { - XMLName xml.Name - - Bucket aws.StringValue `xml:"-"` - IfMatch aws.StringValue `xml:"-"` - IfModifiedSince time.Time `xml:"-"` - IfNoneMatch aws.StringValue `xml:"-"` - IfUnmodifiedSince time.Time `xml:"-"` - Key aws.StringValue `xml:"-"` - Range aws.StringValue `xml:"-"` - ResponseCacheControl aws.StringValue `xml:"-"` - ResponseContentDisposition aws.StringValue `xml:"-"` - ResponseContentEncoding aws.StringValue `xml:"-"` - ResponseContentLanguage aws.StringValue `xml:"-"` - ResponseContentType aws.StringValue `xml:"-"` - ResponseExpires time.Time `xml:"-"` - SSECustomerAlgorithm aws.StringValue `xml:"-"` - SSECustomerKey aws.StringValue `xml:"-"` - SSECustomerKeyMD5 aws.StringValue `xml:"-"` - VersionID aws.StringValue `xml:"-"` -} - -func (v *GetObjectRequest) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// GetObjectTorrentOutput is undocumented. -type GetObjectTorrentOutput struct { - XMLName xml.Name - - Body io.ReadCloser `xml:"-"` -} - -func (v *GetObjectTorrentOutput) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// GetObjectTorrentRequest is undocumented. -type GetObjectTorrentRequest struct { - XMLName xml.Name - - Bucket aws.StringValue `xml:"-"` - Key aws.StringValue `xml:"-"` -} - -func (v *GetObjectTorrentRequest) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// Grant is undocumented. -type Grant struct { - XMLName xml.Name - - Grantee *Grantee `xml:"Grantee,omitempty"` - Permission aws.StringValue `xml:"Permission"` -} - -func (v *Grant) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// Grantee is undocumented. -type Grantee struct { - XMLName xml.Name - - DisplayName aws.StringValue `xml:"DisplayName"` - EmailAddress aws.StringValue `xml:"EmailAddress"` - ID aws.StringValue `xml:"ID"` - Type aws.StringValue `xml:"Type"` - URI aws.StringValue `xml:"URI"` -} - -func (v *Grantee) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// HeadBucketRequest is undocumented. -type HeadBucketRequest struct { - XMLName xml.Name - - Bucket aws.StringValue `xml:"-"` -} - -func (v *HeadBucketRequest) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// HeadObjectOutput is undocumented. -type HeadObjectOutput struct { - XMLName xml.Name - - AcceptRanges aws.StringValue `xml:"-"` - CacheControl aws.StringValue `xml:"-"` - ContentDisposition aws.StringValue `xml:"-"` - ContentEncoding aws.StringValue `xml:"-"` - ContentLanguage aws.StringValue `xml:"-"` - ContentLength aws.LongValue `xml:"-"` - ContentType aws.StringValue `xml:"-"` - DeleteMarker aws.BooleanValue `xml:"-"` - ETag aws.StringValue `xml:"-"` - Expiration aws.StringValue `xml:"-"` - Expires time.Time `xml:"-"` - LastModified time.Time `xml:"-"` - Metadata map[string]string `xml:"-"` - MissingMeta aws.IntegerValue `xml:"-"` - Restore aws.StringValue `xml:"-"` - SSECustomerAlgorithm aws.StringValue `xml:"-"` - SSECustomerKeyMD5 aws.StringValue `xml:"-"` - SSEKMSKeyID aws.StringValue `xml:"-"` - ServerSideEncryption aws.StringValue `xml:"-"` - VersionID aws.StringValue `xml:"-"` - WebsiteRedirectLocation aws.StringValue `xml:"-"` -} - -func (v *HeadObjectOutput) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// HeadObjectRequest is undocumented. -type HeadObjectRequest struct { - XMLName xml.Name - - Bucket aws.StringValue `xml:"-"` - IfMatch aws.StringValue `xml:"-"` - IfModifiedSince time.Time `xml:"-"` - IfNoneMatch aws.StringValue `xml:"-"` - IfUnmodifiedSince time.Time `xml:"-"` - Key aws.StringValue `xml:"-"` - Range aws.StringValue `xml:"-"` - SSECustomerAlgorithm aws.StringValue `xml:"-"` - SSECustomerKey aws.StringValue `xml:"-"` - SSECustomerKeyMD5 aws.StringValue `xml:"-"` - VersionID aws.StringValue `xml:"-"` -} - -func (v *HeadObjectRequest) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// IndexDocument is undocumented. -type IndexDocument struct { - XMLName xml.Name - - Suffix aws.StringValue `xml:"Suffix"` -} - -func (v *IndexDocument) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// Initiator is undocumented. -type Initiator struct { - XMLName xml.Name - - DisplayName aws.StringValue `xml:"DisplayName"` - ID aws.StringValue `xml:"ID"` -} - -func (v *Initiator) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// LifecycleConfiguration is undocumented. -type LifecycleConfiguration struct { - XMLName xml.Name - - Rules []Rule `xml:"Rule,omitempty"` -} - -func (v *LifecycleConfiguration) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// LifecycleExpiration is undocumented. -type LifecycleExpiration struct { - XMLName xml.Name - - Date time.Time `xml:"Date"` - Days aws.IntegerValue `xml:"Days"` -} - -func (v *LifecycleExpiration) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// ListBucketsOutput is undocumented. -type ListBucketsOutput struct { - XMLName xml.Name - - Buckets []Bucket `xml:"Buckets>Bucket,omitempty"` - Owner *Owner `xml:"Owner,omitempty"` -} - -func (v *ListBucketsOutput) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// ListMultipartUploadsOutput is undocumented. -type ListMultipartUploadsOutput struct { - XMLName xml.Name - - Bucket aws.StringValue `xml:"Bucket"` - CommonPrefixes []CommonPrefix `xml:"CommonPrefixes,omitempty"` - Delimiter aws.StringValue `xml:"Delimiter"` - EncodingType aws.StringValue `xml:"EncodingType"` - IsTruncated aws.BooleanValue `xml:"IsTruncated"` - KeyMarker aws.StringValue `xml:"KeyMarker"` - MaxUploads aws.IntegerValue `xml:"MaxUploads"` - NextKeyMarker aws.StringValue `xml:"NextKeyMarker"` - NextUploadIDMarker aws.StringValue `xml:"NextUploadIdMarker"` - Prefix aws.StringValue `xml:"Prefix"` - UploadIDMarker aws.StringValue `xml:"UploadIdMarker"` - Uploads []MultipartUpload `xml:"Upload,omitempty"` -} - -func (v *ListMultipartUploadsOutput) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// ListMultipartUploadsRequest is undocumented. -type ListMultipartUploadsRequest struct { - XMLName xml.Name - - Bucket aws.StringValue `xml:"-"` - Delimiter aws.StringValue `xml:"-"` - EncodingType aws.StringValue `xml:"-"` - KeyMarker aws.StringValue `xml:"-"` - MaxUploads aws.IntegerValue `xml:"-"` - Prefix aws.StringValue `xml:"-"` - UploadIDMarker aws.StringValue `xml:"-"` -} - -func (v *ListMultipartUploadsRequest) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// ListObjectVersionsOutput is undocumented. -type ListObjectVersionsOutput struct { - XMLName xml.Name - - CommonPrefixes []CommonPrefix `xml:"CommonPrefixes,omitempty"` - DeleteMarkers []DeleteMarkerEntry `xml:"DeleteMarker,omitempty"` - Delimiter aws.StringValue `xml:"Delimiter"` - EncodingType aws.StringValue `xml:"EncodingType"` - IsTruncated aws.BooleanValue `xml:"IsTruncated"` - KeyMarker aws.StringValue `xml:"KeyMarker"` - MaxKeys aws.IntegerValue `xml:"MaxKeys"` - Name aws.StringValue `xml:"Name"` - NextKeyMarker aws.StringValue `xml:"NextKeyMarker"` - NextVersionIDMarker aws.StringValue `xml:"NextVersionIdMarker"` - Prefix aws.StringValue `xml:"Prefix"` - VersionIDMarker aws.StringValue `xml:"VersionIdMarker"` - Versions []ObjectVersion `xml:"Version,omitempty"` -} - -func (v *ListObjectVersionsOutput) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// ListObjectVersionsRequest is undocumented. -type ListObjectVersionsRequest struct { - XMLName xml.Name - - Bucket aws.StringValue `xml:"-"` - Delimiter aws.StringValue `xml:"-"` - EncodingType aws.StringValue `xml:"-"` - KeyMarker aws.StringValue `xml:"-"` - MaxKeys aws.IntegerValue `xml:"-"` - Prefix aws.StringValue `xml:"-"` - VersionIDMarker aws.StringValue `xml:"-"` -} - -func (v *ListObjectVersionsRequest) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// ListObjectsOutput is undocumented. -type ListObjectsOutput struct { - XMLName xml.Name - - CommonPrefixes []CommonPrefix `xml:"CommonPrefixes,omitempty"` - Contents []Object `xml:"Contents,omitempty"` - Delimiter aws.StringValue `xml:"Delimiter"` - EncodingType aws.StringValue `xml:"EncodingType"` - IsTruncated aws.BooleanValue `xml:"IsTruncated"` - Marker aws.StringValue `xml:"Marker"` - MaxKeys aws.IntegerValue `xml:"MaxKeys"` - Name aws.StringValue `xml:"Name"` - NextMarker aws.StringValue `xml:"NextMarker"` - Prefix aws.StringValue `xml:"Prefix"` -} - -func (v *ListObjectsOutput) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// ListObjectsRequest is undocumented. -type ListObjectsRequest struct { - XMLName xml.Name - - Bucket aws.StringValue `xml:"-"` - Delimiter aws.StringValue `xml:"-"` - EncodingType aws.StringValue `xml:"-"` - Marker aws.StringValue `xml:"-"` - MaxKeys aws.IntegerValue `xml:"-"` - Prefix aws.StringValue `xml:"-"` -} - -func (v *ListObjectsRequest) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// ListPartsOutput is undocumented. -type ListPartsOutput struct { - XMLName xml.Name - - Bucket aws.StringValue `xml:"Bucket"` - Initiator *Initiator `xml:"Initiator,omitempty"` - IsTruncated aws.BooleanValue `xml:"IsTruncated"` - Key aws.StringValue `xml:"Key"` - MaxParts aws.IntegerValue `xml:"MaxParts"` - NextPartNumberMarker aws.IntegerValue `xml:"NextPartNumberMarker"` - Owner *Owner `xml:"Owner,omitempty"` - PartNumberMarker aws.IntegerValue `xml:"PartNumberMarker"` - Parts []Part `xml:"Part,omitempty"` - StorageClass aws.StringValue `xml:"StorageClass"` - UploadID aws.StringValue `xml:"UploadId"` -} - -func (v *ListPartsOutput) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// ListPartsRequest is undocumented. -type ListPartsRequest struct { - XMLName xml.Name - - Bucket aws.StringValue `xml:"-"` - Key aws.StringValue `xml:"-"` - MaxParts aws.IntegerValue `xml:"-"` - PartNumberMarker aws.IntegerValue `xml:"-"` - UploadID aws.StringValue `xml:"-"` -} - -func (v *ListPartsRequest) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// LoggingEnabled is undocumented. -type LoggingEnabled struct { - XMLName xml.Name - - TargetBucket aws.StringValue `xml:"TargetBucket"` - TargetGrants []TargetGrant `xml:"TargetGrants>Grant,omitempty"` - TargetPrefix aws.StringValue `xml:"TargetPrefix"` -} - -func (v *LoggingEnabled) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// Possible values for S3. -const ( - MFADeleteDisabled = "Disabled" - MFADeleteEnabled = "Enabled" -) - -// Possible values for S3. -const ( - MFADeleteStatusDisabled = "Disabled" - MFADeleteStatusEnabled = "Enabled" -) - -// Possible values for S3. -const ( - MetadataDirectiveCopy = "COPY" - MetadataDirectiveReplace = "REPLACE" -) - -// MultipartUpload is undocumented. -type MultipartUpload struct { - XMLName xml.Name - - Initiated time.Time `xml:"Initiated"` - Initiator *Initiator `xml:"Initiator,omitempty"` - Key aws.StringValue `xml:"Key"` - Owner *Owner `xml:"Owner,omitempty"` - StorageClass aws.StringValue `xml:"StorageClass"` - UploadID aws.StringValue `xml:"UploadId"` -} - -func (v *MultipartUpload) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// NoncurrentVersionExpiration is undocumented. -type NoncurrentVersionExpiration struct { - XMLName xml.Name - - NoncurrentDays aws.IntegerValue `xml:"NoncurrentDays"` -} - -func (v *NoncurrentVersionExpiration) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// NoncurrentVersionTransition is undocumented. -type NoncurrentVersionTransition struct { - XMLName xml.Name - - NoncurrentDays aws.IntegerValue `xml:"NoncurrentDays"` - StorageClass aws.StringValue `xml:"StorageClass"` -} - -func (v *NoncurrentVersionTransition) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// NotificationConfiguration is undocumented. -type NotificationConfiguration struct { - XMLName xml.Name - - CloudFunctionConfiguration *CloudFunctionConfiguration `xml:"CloudFunctionConfiguration,omitempty"` - QueueConfiguration *QueueConfiguration `xml:"QueueConfiguration,omitempty"` - TopicConfiguration *TopicConfiguration `xml:"TopicConfiguration,omitempty"` -} - -func (v *NotificationConfiguration) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// Object is undocumented. -type Object struct { - XMLName xml.Name - - ETag aws.StringValue `xml:"ETag"` - Key aws.StringValue `xml:"Key"` - LastModified time.Time `xml:"LastModified"` - Owner *Owner `xml:"Owner,omitempty"` - Size aws.LongValue `xml:"Size"` - StorageClass aws.StringValue `xml:"StorageClass"` -} - -func (v *Object) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// Possible values for S3. -const ( - ObjectCannedACLAuthenticatedRead = "authenticated-read" - ObjectCannedACLBucketOwnerFullControl = "bucket-owner-full-control" - ObjectCannedACLBucketOwnerRead = "bucket-owner-read" - ObjectCannedACLPrivate = "private" - ObjectCannedACLPublicRead = "public-read" - ObjectCannedACLPublicReadWrite = "public-read-write" -) - -// ObjectIdentifier is undocumented. -type ObjectIdentifier struct { - XMLName xml.Name - - Key aws.StringValue `xml:"Key"` - VersionID aws.StringValue `xml:"VersionId"` -} - -func (v *ObjectIdentifier) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// Possible values for S3. -const ( - ObjectStorageClassGlacier = "GLACIER" - ObjectStorageClassReducedRedundancy = "REDUCED_REDUNDANCY" - ObjectStorageClassStandard = "STANDARD" -) - -// ObjectVersion is undocumented. -type ObjectVersion struct { - XMLName xml.Name - - ETag aws.StringValue `xml:"ETag"` - IsLatest aws.BooleanValue `xml:"IsLatest"` - Key aws.StringValue `xml:"Key"` - LastModified time.Time `xml:"LastModified"` - Owner *Owner `xml:"Owner,omitempty"` - Size aws.LongValue `xml:"Size"` - StorageClass aws.StringValue `xml:"StorageClass"` - VersionID aws.StringValue `xml:"VersionId"` -} - -func (v *ObjectVersion) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// Possible values for S3. -const ( - ObjectVersionStorageClassStandard = "STANDARD" -) - -// Owner is undocumented. -type Owner struct { - XMLName xml.Name - - DisplayName aws.StringValue `xml:"DisplayName"` - ID aws.StringValue `xml:"ID"` -} - -func (v *Owner) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// Part is undocumented. -type Part struct { - XMLName xml.Name - - ETag aws.StringValue `xml:"ETag"` - LastModified time.Time `xml:"LastModified"` - PartNumber aws.IntegerValue `xml:"PartNumber"` - Size aws.LongValue `xml:"Size"` -} - -func (v *Part) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// Possible values for S3. -const ( - PayerBucketOwner = "BucketOwner" - PayerRequester = "Requester" -) - -// Possible values for S3. -const ( - PermissionFullControl = "FULL_CONTROL" - PermissionRead = "READ" - PermissionReadAcp = "READ_ACP" - PermissionWrite = "WRITE" - PermissionWriteAcp = "WRITE_ACP" -) - -// Possible values for S3. -const ( - ProtocolHTTP = "http" - ProtocolHTTPS = "https" -) - -// PutBucketACLRequest is undocumented. -type PutBucketACLRequest struct { - XMLName xml.Name - - ACL aws.StringValue `xml:"-"` - AccessControlPolicy *AccessControlPolicy `xml:"AccessControlPolicy,omitempty"` - Bucket aws.StringValue `xml:"-"` - ContentMD5 aws.StringValue `xml:"-"` - GrantFullControl aws.StringValue `xml:"-"` - GrantRead aws.StringValue `xml:"-"` - GrantReadACP aws.StringValue `xml:"-"` - GrantWrite aws.StringValue `xml:"-"` - GrantWriteACP aws.StringValue `xml:"-"` -} - -func (v *PutBucketACLRequest) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// PutBucketCORSRequest is undocumented. -type PutBucketCORSRequest struct { - XMLName xml.Name - - Bucket aws.StringValue `xml:"-"` - CORSConfiguration *CORSConfiguration `xml:"CORSConfiguration,omitempty"` - ContentMD5 aws.StringValue `xml:"-"` -} - -func (v *PutBucketCORSRequest) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// PutBucketLifecycleRequest is undocumented. -type PutBucketLifecycleRequest struct { - XMLName xml.Name - - Bucket aws.StringValue `xml:"-"` - ContentMD5 aws.StringValue `xml:"-"` - LifecycleConfiguration *LifecycleConfiguration `xml:"LifecycleConfiguration,omitempty"` -} - -func (v *PutBucketLifecycleRequest) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// PutBucketLoggingRequest is undocumented. -type PutBucketLoggingRequest struct { - XMLName xml.Name - - Bucket aws.StringValue `xml:"-"` - BucketLoggingStatus *BucketLoggingStatus `xml:"BucketLoggingStatus,omitempty"` - ContentMD5 aws.StringValue `xml:"-"` -} - -func (v *PutBucketLoggingRequest) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// PutBucketNotificationRequest is undocumented. -type PutBucketNotificationRequest struct { - XMLName xml.Name - - Bucket aws.StringValue `xml:"-"` - ContentMD5 aws.StringValue `xml:"-"` - NotificationConfiguration *NotificationConfiguration `xml:"NotificationConfiguration,omitempty"` -} - -func (v *PutBucketNotificationRequest) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// PutBucketPolicyRequest is undocumented. -type PutBucketPolicyRequest struct { - XMLName xml.Name - - Bucket aws.StringValue `xml:"-"` - ContentMD5 aws.StringValue `xml:"-"` - Policy aws.StringValue `xml:"Policy"` -} - -func (v *PutBucketPolicyRequest) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// PutBucketRequestPaymentRequest is undocumented. -type PutBucketRequestPaymentRequest struct { - XMLName xml.Name - - Bucket aws.StringValue `xml:"-"` - ContentMD5 aws.StringValue `xml:"-"` - RequestPaymentConfiguration *RequestPaymentConfiguration `xml:"RequestPaymentConfiguration,omitempty"` -} - -func (v *PutBucketRequestPaymentRequest) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// PutBucketTaggingRequest is undocumented. -type PutBucketTaggingRequest struct { - XMLName xml.Name - - Bucket aws.StringValue `xml:"-"` - ContentMD5 aws.StringValue `xml:"-"` - Tagging *Tagging `xml:"Tagging,omitempty"` -} - -func (v *PutBucketTaggingRequest) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// PutBucketVersioningRequest is undocumented. -type PutBucketVersioningRequest struct { - XMLName xml.Name - - Bucket aws.StringValue `xml:"-"` - ContentMD5 aws.StringValue `xml:"-"` - MFA aws.StringValue `xml:"-"` - VersioningConfiguration *VersioningConfiguration `xml:"VersioningConfiguration,omitempty"` -} - -func (v *PutBucketVersioningRequest) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// PutBucketWebsiteRequest is undocumented. -type PutBucketWebsiteRequest struct { - XMLName xml.Name - - Bucket aws.StringValue `xml:"-"` - ContentMD5 aws.StringValue `xml:"-"` - WebsiteConfiguration *WebsiteConfiguration `xml:"WebsiteConfiguration,omitempty"` -} - -func (v *PutBucketWebsiteRequest) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// PutObjectACLRequest is undocumented. -type PutObjectACLRequest struct { - XMLName xml.Name - - ACL aws.StringValue `xml:"-"` - AccessControlPolicy *AccessControlPolicy `xml:"AccessControlPolicy,omitempty"` - Bucket aws.StringValue `xml:"-"` - ContentMD5 aws.StringValue `xml:"-"` - GrantFullControl aws.StringValue `xml:"-"` - GrantRead aws.StringValue `xml:"-"` - GrantReadACP aws.StringValue `xml:"-"` - GrantWrite aws.StringValue `xml:"-"` - GrantWriteACP aws.StringValue `xml:"-"` - Key aws.StringValue `xml:"-"` -} - -func (v *PutObjectACLRequest) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// PutObjectOutput is undocumented. -type PutObjectOutput struct { - XMLName xml.Name - - ETag aws.StringValue `xml:"-"` - Expiration aws.StringValue `xml:"-"` - SSECustomerAlgorithm aws.StringValue `xml:"-"` - SSECustomerKeyMD5 aws.StringValue `xml:"-"` - SSEKMSKeyID aws.StringValue `xml:"-"` - ServerSideEncryption aws.StringValue `xml:"-"` - VersionID aws.StringValue `xml:"-"` -} - -func (v *PutObjectOutput) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// PutObjectRequest is undocumented. -type PutObjectRequest struct { - XMLName xml.Name - - ACL aws.StringValue `xml:"-"` - Body io.ReadCloser `xml:"-"` - Bucket aws.StringValue `xml:"-"` - CacheControl aws.StringValue `xml:"-"` - ContentDisposition aws.StringValue `xml:"-"` - ContentEncoding aws.StringValue `xml:"-"` - ContentLanguage aws.StringValue `xml:"-"` - ContentLength aws.LongValue `xml:"-"` - ContentMD5 aws.StringValue `xml:"-"` - ContentType aws.StringValue `xml:"-"` - Expires time.Time `xml:"-"` - GrantFullControl aws.StringValue `xml:"-"` - GrantRead aws.StringValue `xml:"-"` - GrantReadACP aws.StringValue `xml:"-"` - GrantWriteACP aws.StringValue `xml:"-"` - Key aws.StringValue `xml:"-"` - Metadata map[string]string `xml:"-"` - SSECustomerAlgorithm aws.StringValue `xml:"-"` - SSECustomerKey aws.StringValue `xml:"-"` - SSECustomerKeyMD5 aws.StringValue `xml:"-"` - SSEKMSKeyID aws.StringValue `xml:"-"` - ServerSideEncryption aws.StringValue `xml:"-"` - StorageClass aws.StringValue `xml:"-"` - WebsiteRedirectLocation aws.StringValue `xml:"-"` -} - -func (v *PutObjectRequest) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// QueueConfiguration is undocumented. -type QueueConfiguration struct { - XMLName xml.Name - - Event aws.StringValue `xml:"Event"` - Events []string `xml:"Event,omitempty"` - ID aws.StringValue `xml:"Id"` - Queue aws.StringValue `xml:"Queue"` -} - -func (v *QueueConfiguration) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// Redirect is undocumented. -type Redirect struct { - XMLName xml.Name - - HostName aws.StringValue `xml:"HostName"` - HTTPRedirectCode aws.StringValue `xml:"HttpRedirectCode"` - Protocol aws.StringValue `xml:"Protocol"` - ReplaceKeyPrefixWith aws.StringValue `xml:"ReplaceKeyPrefixWith"` - ReplaceKeyWith aws.StringValue `xml:"ReplaceKeyWith"` -} - -func (v *Redirect) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// RedirectAllRequestsTo is undocumented. -type RedirectAllRequestsTo struct { - XMLName xml.Name - - HostName aws.StringValue `xml:"HostName"` - Protocol aws.StringValue `xml:"Protocol"` -} - -func (v *RedirectAllRequestsTo) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// RequestPaymentConfiguration is undocumented. -type RequestPaymentConfiguration struct { - XMLName xml.Name - - Payer aws.StringValue `xml:"Payer"` -} - -func (v *RequestPaymentConfiguration) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// RestoreObjectRequest is undocumented. -type RestoreObjectRequest struct { - XMLName xml.Name - - Bucket aws.StringValue `xml:"-"` - Key aws.StringValue `xml:"-"` - RestoreRequest *RestoreRequest `xml:"RestoreRequest,omitempty"` - VersionID aws.StringValue `xml:"-"` -} - -func (v *RestoreObjectRequest) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// RestoreRequest is undocumented. -type RestoreRequest struct { - XMLName xml.Name - - Days aws.IntegerValue `xml:"Days"` -} - -func (v *RestoreRequest) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// RoutingRule is undocumented. -type RoutingRule struct { - XMLName xml.Name - - Condition *Condition `xml:"Condition,omitempty"` - Redirect *Redirect `xml:"Redirect,omitempty"` -} - -func (v *RoutingRule) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// Rule is undocumented. -type Rule struct { - XMLName xml.Name - - Expiration *LifecycleExpiration `xml:"Expiration,omitempty"` - ID aws.StringValue `xml:"ID"` - NoncurrentVersionExpiration *NoncurrentVersionExpiration `xml:"NoncurrentVersionExpiration,omitempty"` - NoncurrentVersionTransition *NoncurrentVersionTransition `xml:"NoncurrentVersionTransition,omitempty"` - Prefix aws.StringValue `xml:"Prefix"` - Status aws.StringValue `xml:"Status"` - Transition *Transition `xml:"Transition,omitempty"` -} - -func (v *Rule) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// Possible values for S3. -const ( - ServerSideEncryptionAES256 = "AES256" -) - -// Possible values for S3. -const ( - StorageClassReducedRedundancy = "REDUCED_REDUNDANCY" - StorageClassStandard = "STANDARD" -) - -// Tag is undocumented. -type Tag struct { - XMLName xml.Name - - Key aws.StringValue `xml:"Key"` - Value aws.StringValue `xml:"Value"` -} - -func (v *Tag) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// Tagging is undocumented. -type Tagging struct { - XMLName xml.Name - - TagSet []Tag `xml:"TagSet>Tag,omitempty"` -} - -func (v *Tagging) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// TargetGrant is undocumented. -type TargetGrant struct { - XMLName xml.Name - - Grantee *Grantee `xml:"Grantee,omitempty"` - Permission aws.StringValue `xml:"Permission"` -} - -func (v *TargetGrant) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// TopicConfiguration is undocumented. -type TopicConfiguration struct { - XMLName xml.Name - - Event aws.StringValue `xml:"Event"` - Events []string `xml:"Event,omitempty"` - ID aws.StringValue `xml:"Id"` - Topic aws.StringValue `xml:"Topic"` -} - -func (v *TopicConfiguration) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// Transition is undocumented. -type Transition struct { - XMLName xml.Name - - Date time.Time `xml:"Date"` - Days aws.IntegerValue `xml:"Days"` - StorageClass aws.StringValue `xml:"StorageClass"` -} - -func (v *Transition) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// Possible values for S3. -const ( - TransitionStorageClassGlacier = "GLACIER" -) - -// Possible values for S3. -const ( - TypeAmazonCustomerByEmail = "AmazonCustomerByEmail" - TypeCanonicalUser = "CanonicalUser" - TypeGroup = "Group" -) - -// UploadPartCopyOutput is undocumented. -type UploadPartCopyOutput struct { - XMLName xml.Name - - CopyPartResult *CopyPartResult `xml:"CopyPartResult,omitempty"` - CopySourceVersionID aws.StringValue `xml:"-"` - SSECustomerAlgorithm aws.StringValue `xml:"-"` - SSECustomerKeyMD5 aws.StringValue `xml:"-"` - SSEKMSKeyID aws.StringValue `xml:"-"` - ServerSideEncryption aws.StringValue `xml:"-"` -} - -func (v *UploadPartCopyOutput) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// UploadPartCopyRequest is undocumented. -type UploadPartCopyRequest struct { - XMLName xml.Name - - Bucket aws.StringValue `xml:"-"` - CopySource aws.StringValue `xml:"-"` - CopySourceIfMatch aws.StringValue `xml:"-"` - CopySourceIfModifiedSince time.Time `xml:"-"` - CopySourceIfNoneMatch aws.StringValue `xml:"-"` - CopySourceIfUnmodifiedSince time.Time `xml:"-"` - CopySourceRange aws.StringValue `xml:"-"` - CopySourceSSECustomerAlgorithm aws.StringValue `xml:"-"` - CopySourceSSECustomerKey aws.StringValue `xml:"-"` - CopySourceSSECustomerKeyMD5 aws.StringValue `xml:"-"` - Key aws.StringValue `xml:"-"` - PartNumber aws.IntegerValue `xml:"-"` - SSECustomerAlgorithm aws.StringValue `xml:"-"` - SSECustomerKey aws.StringValue `xml:"-"` - SSECustomerKeyMD5 aws.StringValue `xml:"-"` - UploadID aws.StringValue `xml:"-"` -} - -func (v *UploadPartCopyRequest) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// UploadPartOutput is undocumented. -type UploadPartOutput struct { - XMLName xml.Name - - ETag aws.StringValue `xml:"-"` - SSECustomerAlgorithm aws.StringValue `xml:"-"` - SSECustomerKeyMD5 aws.StringValue `xml:"-"` - SSEKMSKeyID aws.StringValue `xml:"-"` - ServerSideEncryption aws.StringValue `xml:"-"` -} - -func (v *UploadPartOutput) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// UploadPartRequest is undocumented. -type UploadPartRequest struct { - XMLName xml.Name - - Body io.ReadCloser `xml:"-"` - Bucket aws.StringValue `xml:"-"` - ContentLength aws.LongValue `xml:"-"` - ContentMD5 aws.StringValue `xml:"-"` - Key aws.StringValue `xml:"-"` - PartNumber aws.IntegerValue `xml:"-"` - SSECustomerAlgorithm aws.StringValue `xml:"-"` - SSECustomerKey aws.StringValue `xml:"-"` - SSECustomerKeyMD5 aws.StringValue `xml:"-"` - UploadID aws.StringValue `xml:"-"` -} - -func (v *UploadPartRequest) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// VersioningConfiguration is undocumented. -type VersioningConfiguration struct { - XMLName xml.Name - - MFADelete aws.StringValue `xml:"MfaDelete"` - Status aws.StringValue `xml:"Status"` -} - -func (v *VersioningConfiguration) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// WebsiteConfiguration is undocumented. -type WebsiteConfiguration struct { - XMLName xml.Name - - ErrorDocument *ErrorDocument `xml:"ErrorDocument,omitempty"` - IndexDocument *IndexDocument `xml:"IndexDocument,omitempty"` - RedirectAllRequestsTo *RedirectAllRequestsTo `xml:"RedirectAllRequestsTo,omitempty"` - RoutingRules []RoutingRule `xml:"RoutingRules>RoutingRule,omitempty"` -} - -func (v *WebsiteConfiguration) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -// avoid errors if the packages aren't referenced -var _ time.Time - -var _ bytes.Reader -var _ url.URL -var _ fmt.Stringer -var _ strings.Reader -var _ strconv.NumError -var _ = ioutil.Discard diff --git a/src/github.com/getlantern/aws-sdk-go/gen/sdb/sdb.go b/src/github.com/getlantern/aws-sdk-go/gen/sdb/sdb.go deleted file mode 100644 index 3bf663bd16..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/gen/sdb/sdb.go +++ /dev/null @@ -1,347 +0,0 @@ -// THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. - -// Package sdb provides a client for Amazon SimpleDB. -package sdb - -import ( - "net/http" - "time" - - "github.com/awslabs/aws-sdk-go/aws" - "github.com/awslabs/aws-sdk-go/gen/endpoints" -) - -import ( - "encoding/xml" - "io" -) - -// SDB is a client for Amazon SimpleDB. -type SDB struct { - client *aws.QueryClient -} - -// New returns a new SDB client. -func New(creds aws.CredentialsProvider, region string, client *http.Client) *SDB { - if client == nil { - client = http.DefaultClient - } - - endpoint, service, region := endpoints.Lookup("sdb", region) - - return &SDB{ - client: &aws.QueryClient{ - Context: aws.Context{ - Credentials: creds, - Service: service, - Region: region, - }, - Client: client, - Endpoint: endpoint, - APIVersion: "2009-04-15", - }, - } -} - -// BatchDeleteAttributes performs multiple DeleteAttributes operations in a -// single call, which reduces round trips and latencies. This enables -// Amazon SimpleDB to optimize requests, which generally yields better -// throughput. The following limitations are enforced for this operation: 1 -// MB request size -func (c *SDB) BatchDeleteAttributes(req *BatchDeleteAttributesRequest) (err error) { - // NRE - err = c.client.Do("BatchDeleteAttributes", "POST", "/", req, nil) - return -} - -// BatchPutAttributes the BatchPutAttributes operation creates or replaces -// attributes within one or more items. By using this operation, the client -// can perform multiple PutAttribute operation with a single call. This -// helps yield savings in round trips and latencies, enabling Amazon -// SimpleDB to optimize requests and generally produce better throughput. -// The client may specify the item name with the Item.X.ItemName parameter. -// The client may specify new attributes using a combination of the -// Item.X.Attribute.Y.Name and Item.X.Attribute.Y.Value parameters. The -// client may specify the first attribute for the first item using the -// parameters Item.0.Attribute.0.Name and Item.0.Attribute.0.Value , and -// for the second attribute for the first item by the parameters -// Item.0.Attribute.1.Name and Item.0.Attribute.1.Value , and so on. -// Attributes are uniquely identified within an item by their name/value -// combination. For example, a single item can have the attributes { -// "first_name", "first_value" and { "first_name", "second_value" . -// However, it cannot have two attribute instances where both the -// Item.X.Attribute.Y.Name and Item.X.Attribute.Y.Value are the same. -// Optionally, the requester can supply the Replace parameter for each -// individual value. Setting this value to true will cause the new -// attribute values to replace the existing attribute values. For example, -// if an item has the attributes { 'a', '1' }, { 'b', '2'} and { 'b', '3' -// and the requester does a BatchPutAttributes of 'b', '4' with the Replace -// parameter set to true, the final attributes of the item will be { 'a', -// '1' and { 'b', '4' , replacing the previous values of the 'b' attribute -// with the new value. This operation is vulnerable to exceeding the -// maximum URL size when making a request using the GET method. This -// operation does not support conditions using Expected.X.Name , -// Expected.X.Value , or Expected.X.Exists . You can execute multiple -// BatchPutAttributes operations and other operations in parallel. However, -// large numbers of concurrent BatchPutAttributes calls can result in -// Service Unavailable (503) responses. The following limitations are -// enforced for this operation: 256 attribute name-value pairs per item -func (c *SDB) BatchPutAttributes(req *BatchPutAttributesRequest) (err error) { - // NRE - err = c.client.Do("BatchPutAttributes", "POST", "/", req, nil) - return -} - -// CreateDomain the CreateDomain operation creates a new domain. The domain -// name should be unique among the domains associated with the Access Key -// ID provided in the request. The CreateDomain operation may take 10 or -// more seconds to complete. The client can create up to 100 domains per -// account. If the client requires additional domains, go to -// http://aws.amazon.com/contact-us/simpledb-limit-request/ . -func (c *SDB) CreateDomain(req *CreateDomainRequest) (err error) { - // NRE - err = c.client.Do("CreateDomain", "POST", "/", req, nil) - return -} - -// DeleteAttributes deletes one or more attributes associated with an item. -// If all attributes of the item are deleted, the item is deleted. -// DeleteAttributes is an idempotent operation; running it multiple times -// on the same item or attribute does not result in an error response. -// Because Amazon SimpleDB makes multiple copies of item data and uses an -// eventual consistency update model, performing a GetAttributes or Select -// operation (read) immediately after a DeleteAttributes or PutAttributes -// operation (write) might not return updated item data. -func (c *SDB) DeleteAttributes(req *DeleteAttributesRequest) (err error) { - // NRE - err = c.client.Do("DeleteAttributes", "POST", "/", req, nil) - return -} - -// DeleteDomain the DeleteDomain operation deletes a domain. Any items (and -// their attributes) in the domain are deleted as well. The DeleteDomain -// operation might take 10 or more seconds to complete. -func (c *SDB) DeleteDomain(req *DeleteDomainRequest) (err error) { - // NRE - err = c.client.Do("DeleteDomain", "POST", "/", req, nil) - return -} - -// DomainMetadata returns information about the domain, including when the -// domain was created, the number of items and attributes in the domain, -// and the size of the attribute names and values. -func (c *SDB) DomainMetadata(req *DomainMetadataRequest) (resp *DomainMetadataResult, err error) { - resp = &DomainMetadataResult{} - err = c.client.Do("DomainMetadata", "POST", "/", req, resp) - return -} - -// GetAttributes returns all of the attributes associated with the -// specified item. Optionally, the attributes returned can be limited to -// one or more attributes by specifying an attribute name parameter. If the -// item does not exist on the replica that was accessed for this operation, -// an empty set is returned. The system does not return an error as it -// cannot guarantee the item does not exist on other replicas. -func (c *SDB) GetAttributes(req *GetAttributesRequest) (resp *GetAttributesResult, err error) { - resp = &GetAttributesResult{} - err = c.client.Do("GetAttributes", "POST", "/", req, resp) - return -} - -// ListDomains the ListDomains operation lists all domains associated with -// the Access Key ID. It returns domain names up to the limit set by -// MaxNumberOfDomains . A NextToken is returned if there are more than -// MaxNumberOfDomains domains. Calling ListDomains successive times with -// the NextToken provided by the operation returns up to MaxNumberOfDomains -// more domain names with each successive operation call. -func (c *SDB) ListDomains(req *ListDomainsRequest) (resp *ListDomainsResult, err error) { - resp = &ListDomainsResult{} - err = c.client.Do("ListDomains", "POST", "/", req, resp) - return -} - -// PutAttributes the PutAttributes operation creates or replaces attributes -// in an item. The client may specify new attributes using a combination of -// the Attribute.X.Name and Attribute.X.Value parameters. The client -// specifies the first attribute by the parameters Attribute.0.Name and -// Attribute.0.Value , the second attribute by the parameters -// Attribute.1.Name and Attribute.1.Value , and so on. Attributes are -// uniquely identified in an item by their name/value combination. For -// example, a single item can have the attributes { "first_name", -// "first_value" and { "first_name", second_value" . However, it cannot -// have two attribute instances where both the Attribute.X.Name and -// Attribute.X.Value are the same. Optionally, the requestor can supply the -// Replace parameter for each individual attribute. Setting this value to -// true causes the new attribute value to replace the existing attribute -// value(s). For example, if an item has the attributes { 'a', '1' , { 'b', -// '2'} and { 'b', '3' and the requestor calls PutAttributes using the -// attributes { 'b', '4' with the Replace parameter set to true, the final -// attributes of the item are changed to { 'a', '1' and { 'b', '4' , which -// replaces the previous values of the 'b' attribute with the new value. -// You cannot specify an empty string as an attribute name. Because Amazon -// SimpleDB makes multiple copies of client data and uses an eventual -// consistency update model, an immediate GetAttributes or Select operation -// (read) immediately after a PutAttributes or DeleteAttributes operation -// (write) might not return the updated data. The following limitations are -// enforced for this operation: 256 total attribute name-value pairs per -// item -func (c *SDB) PutAttributes(req *PutAttributesRequest) (err error) { - // NRE - err = c.client.Do("PutAttributes", "POST", "/", req, nil) - return -} - -// Select the Select operation returns a set of attributes for ItemNames -// that match the select expression. Select is similar to the standard SQL -// statement. The total size of the response cannot exceed 1 MB in total -// size. Amazon SimpleDB automatically adjusts the number of items returned -// per page to enforce this limit. For example, if the client asks to -// retrieve 2500 items, but each individual item is 10 kB in size, the -// system returns 100 items and an appropriate NextToken so the client can -// access the next page of results. For information on how to construct -// select expressions, see Using Select to Create Amazon SimpleDB Queries -// in the Developer Guide. -func (c *SDB) Select(req *SelectRequest) (resp *SelectResult, err error) { - resp = &SelectResult{} - err = c.client.Do("Select", "POST", "/", req, resp) - return -} - -// Attribute is undocumented. -type Attribute struct { - AlternateNameEncoding aws.StringValue `query:"AlternateNameEncoding" xml:"AlternateNameEncoding"` - AlternateValueEncoding aws.StringValue `query:"AlternateValueEncoding" xml:"AlternateValueEncoding"` - Name aws.StringValue `query:"Name" xml:"Name"` - Value aws.StringValue `query:"Value" xml:"Value"` -} - -// BatchDeleteAttributesRequest is undocumented. -type BatchDeleteAttributesRequest struct { - DomainName aws.StringValue `query:"DomainName" xml:"DomainName"` - Items []DeletableItem `query:"Item" xml:"Item"` -} - -// BatchPutAttributesRequest is undocumented. -type BatchPutAttributesRequest struct { - DomainName aws.StringValue `query:"DomainName" xml:"DomainName"` - Items []ReplaceableItem `query:"Item" xml:"Item"` -} - -// CreateDomainRequest is undocumented. -type CreateDomainRequest struct { - DomainName aws.StringValue `query:"DomainName" xml:"DomainName"` -} - -// DeletableItem is undocumented. -type DeletableItem struct { - Attributes []Attribute `query:"Attribute" xml:"Attribute"` - Name aws.StringValue `query:"ItemName" xml:"ItemName"` -} - -// DeleteAttributesRequest is undocumented. -type DeleteAttributesRequest struct { - Attributes []Attribute `query:"Attribute" xml:"Attribute"` - DomainName aws.StringValue `query:"DomainName" xml:"DomainName"` - Expected *UpdateCondition `query:"Expected" xml:"Expected"` - ItemName aws.StringValue `query:"ItemName" xml:"ItemName"` -} - -// DeleteDomainRequest is undocumented. -type DeleteDomainRequest struct { - DomainName aws.StringValue `query:"DomainName" xml:"DomainName"` -} - -// DomainMetadataRequest is undocumented. -type DomainMetadataRequest struct { - DomainName aws.StringValue `query:"DomainName" xml:"DomainName"` -} - -// DomainMetadataResult is undocumented. -type DomainMetadataResult struct { - AttributeNameCount aws.IntegerValue `query:"AttributeNameCount" xml:"DomainMetadataResult>AttributeNameCount"` - AttributeNamesSizeBytes aws.LongValue `query:"AttributeNamesSizeBytes" xml:"DomainMetadataResult>AttributeNamesSizeBytes"` - AttributeValueCount aws.IntegerValue `query:"AttributeValueCount" xml:"DomainMetadataResult>AttributeValueCount"` - AttributeValuesSizeBytes aws.LongValue `query:"AttributeValuesSizeBytes" xml:"DomainMetadataResult>AttributeValuesSizeBytes"` - ItemCount aws.IntegerValue `query:"ItemCount" xml:"DomainMetadataResult>ItemCount"` - ItemNamesSizeBytes aws.LongValue `query:"ItemNamesSizeBytes" xml:"DomainMetadataResult>ItemNamesSizeBytes"` - Timestamp aws.IntegerValue `query:"Timestamp" xml:"DomainMetadataResult>Timestamp"` -} - -// GetAttributesRequest is undocumented. -type GetAttributesRequest struct { - AttributeNames []string `query:"AttributeName" xml:"AttributeName"` - ConsistentRead aws.BooleanValue `query:"ConsistentRead" xml:"ConsistentRead"` - DomainName aws.StringValue `query:"DomainName" xml:"DomainName"` - ItemName aws.StringValue `query:"ItemName" xml:"ItemName"` -} - -// GetAttributesResult is undocumented. -type GetAttributesResult struct { - Attributes []Attribute `query:"Attribute" xml:"GetAttributesResult>Attribute"` -} - -// Item is undocumented. -type Item struct { - AlternateNameEncoding aws.StringValue `query:"AlternateNameEncoding" xml:"AlternateNameEncoding"` - Attributes []Attribute `query:"Attribute" xml:"Attribute"` - Name aws.StringValue `query:"Name" xml:"Name"` -} - -// ListDomainsRequest is undocumented. -type ListDomainsRequest struct { - MaxNumberOfDomains aws.IntegerValue `query:"MaxNumberOfDomains" xml:"MaxNumberOfDomains"` - NextToken aws.StringValue `query:"NextToken" xml:"NextToken"` -} - -// ListDomainsResult is undocumented. -type ListDomainsResult struct { - DomainNames []string `query:"DomainName" xml:"ListDomainsResult>DomainName"` - NextToken aws.StringValue `query:"NextToken" xml:"ListDomainsResult>NextToken"` -} - -// PutAttributesRequest is undocumented. -type PutAttributesRequest struct { - Attributes []ReplaceableAttribute `query:"Attribute" xml:"Attribute"` - DomainName aws.StringValue `query:"DomainName" xml:"DomainName"` - Expected *UpdateCondition `query:"Expected" xml:"Expected"` - ItemName aws.StringValue `query:"ItemName" xml:"ItemName"` -} - -// ReplaceableAttribute is undocumented. -type ReplaceableAttribute struct { - Name aws.StringValue `query:"Name" xml:"Name"` - Replace aws.BooleanValue `query:"Replace" xml:"Replace"` - Value aws.StringValue `query:"Value" xml:"Value"` -} - -// ReplaceableItem is undocumented. -type ReplaceableItem struct { - Attributes []ReplaceableAttribute `query:"Attribute" xml:"Attribute"` - Name aws.StringValue `query:"ItemName" xml:"ItemName"` -} - -// SelectRequest is undocumented. -type SelectRequest struct { - ConsistentRead aws.BooleanValue `query:"ConsistentRead" xml:"ConsistentRead"` - NextToken aws.StringValue `query:"NextToken" xml:"NextToken"` - SelectExpression aws.StringValue `query:"SelectExpression" xml:"SelectExpression"` -} - -// SelectResult is undocumented. -type SelectResult struct { - Items []Item `query:"Item" xml:"SelectResult>Item"` - NextToken aws.StringValue `query:"NextToken" xml:"SelectResult>NextToken"` -} - -// UpdateCondition is undocumented. -type UpdateCondition struct { - Exists aws.BooleanValue `query:"Exists" xml:"Exists"` - Name aws.StringValue `query:"Name" xml:"Name"` - Value aws.StringValue `query:"Value" xml:"Value"` -} - -// avoid errors if the packages aren't referenced -var _ time.Time - -var _ xml.Decoder -var _ = io.EOF diff --git a/src/github.com/getlantern/aws-sdk-go/gen/ses/ses.go b/src/github.com/getlantern/aws-sdk-go/gen/ses/ses.go deleted file mode 100644 index 62795a246f..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/gen/ses/ses.go +++ /dev/null @@ -1,680 +0,0 @@ -// THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. - -// Package ses provides a client for Amazon Simple Email Service. -package ses - -import ( - "net/http" - "time" - - "github.com/awslabs/aws-sdk-go/aws" - "github.com/awslabs/aws-sdk-go/gen/endpoints" -) - -import ( - "encoding/xml" - "io" -) - -// SES is a client for Amazon Simple Email Service. -type SES struct { - client *aws.QueryClient -} - -// New returns a new SES client. -func New(creds aws.CredentialsProvider, region string, client *http.Client) *SES { - if client == nil { - client = http.DefaultClient - } - - endpoint, service, region := endpoints.Lookup("email", region) - - return &SES{ - client: &aws.QueryClient{ - Context: aws.Context{ - Credentials: creds, - Service: service, - Region: region, - }, - Client: client, - Endpoint: endpoint, - APIVersion: "2010-12-01", - }, - } -} - -// DeleteIdentity deletes the specified identity (email address or domain) -// from the list of verified identities. This action is throttled at one -// request per second. -func (c *SES) DeleteIdentity(req *DeleteIdentityRequest) (resp *DeleteIdentityResult, err error) { - resp = &DeleteIdentityResult{} - err = c.client.Do("DeleteIdentity", "POST", "/", req, resp) - return -} - -// DeleteVerifiedEmailAddress deletes the specified email address from the -// list of verified addresses. The DeleteVerifiedEmailAddress action is -// deprecated as of the May 15, 2012 release of Domain Verification. The -// DeleteIdentity action is now preferred. This action is throttled at one -// request per second. -func (c *SES) DeleteVerifiedEmailAddress(req *DeleteVerifiedEmailAddressRequest) (err error) { - // NRE - err = c.client.Do("DeleteVerifiedEmailAddress", "POST", "/", req, nil) - return -} - -// GetIdentityDkimAttributes returns the current status of Easy signing for -// an entity. For domain name identities, this action also returns the -// tokens that are required for Easy signing, and whether Amazon SES has -// successfully verified that these tokens have been published. This action -// takes a list of identities as input and returns the following -// information for each: Whether Easy signing is enabled or disabled. A set -// of tokens that represent the identity. If the identity is an email -// address, the tokens represent the domain of that address. Whether Amazon -// SES has successfully verified the tokens published in the domain's This -// information is only returned for domain name identities, not for email -// addresses. This action is throttled at one request per second. For more -// information about creating DNS records using tokens, go to the Amazon -// SES Developer Guide -func (c *SES) GetIdentityDkimAttributes(req *GetIdentityDkimAttributesRequest) (resp *GetIdentityDkimAttributesResult, err error) { - resp = &GetIdentityDkimAttributesResult{} - err = c.client.Do("GetIdentityDkimAttributes", "POST", "/", req, resp) - return -} - -// GetIdentityNotificationAttributes given a list of verified identities -// (email addresses and/or domains), returns a structure describing -// identity notification attributes. This action is throttled at one -// request per second. For more information about using notifications with -// Amazon see the Amazon SES Developer Guide -func (c *SES) GetIdentityNotificationAttributes(req *GetIdentityNotificationAttributesRequest) (resp *GetIdentityNotificationAttributesResult, err error) { - resp = &GetIdentityNotificationAttributesResult{} - err = c.client.Do("GetIdentityNotificationAttributes", "POST", "/", req, resp) - return -} - -// GetIdentityVerificationAttributes given a list of identities (email -// addresses and/or domains), returns the verification status and (for -// domain identities) the verification token for each identity. This action -// is throttled at one request per second. -func (c *SES) GetIdentityVerificationAttributes(req *GetIdentityVerificationAttributesRequest) (resp *GetIdentityVerificationAttributesResult, err error) { - resp = &GetIdentityVerificationAttributesResult{} - err = c.client.Do("GetIdentityVerificationAttributes", "POST", "/", req, resp) - return -} - -// GetSendQuota returns the user's current sending limits. This action is -// throttled at one request per second. -func (c *SES) GetSendQuota() (resp *GetSendQuotaResult, err error) { - resp = &GetSendQuotaResult{} - err = c.client.Do("GetSendQuota", "POST", "/", nil, resp) - return -} - -// GetSendStatistics returns the user's sending statistics. The result is a -// list of data points, representing the last two weeks of sending -// activity. Each data point in the list contains statistics for a -// 15-minute interval. This action is throttled at one request per second. -func (c *SES) GetSendStatistics() (resp *GetSendStatisticsResult, err error) { - resp = &GetSendStatisticsResult{} - err = c.client.Do("GetSendStatistics", "POST", "/", nil, resp) - return -} - -// ListIdentities returns a list containing all of the identities (email -// addresses and domains) for a specific AWS Account, regardless of -// verification status. This action is throttled at one request per second. -func (c *SES) ListIdentities(req *ListIdentitiesRequest) (resp *ListIdentitiesResult, err error) { - resp = &ListIdentitiesResult{} - err = c.client.Do("ListIdentities", "POST", "/", req, resp) - return -} - -// ListVerifiedEmailAddresses returns a list containing all of the email -// addresses that have been verified. The ListVerifiedEmailAddresses action -// is deprecated as of the May 15, 2012 release of Domain Verification. The -// ListIdentities action is now preferred. This action is throttled at one -// request per second. -func (c *SES) ListVerifiedEmailAddresses() (resp *ListVerifiedEmailAddressesResult, err error) { - resp = &ListVerifiedEmailAddressesResult{} - err = c.client.Do("ListVerifiedEmailAddresses", "POST", "/", nil, resp) - return -} - -// SendEmail composes an email message based on input data, and then -// immediately queues the message for sending. You can only send email from -// verified email addresses and domains. If you have not requested -// production access to Amazon you must also verify every recipient email -// address except for the recipients provided by the Amazon SES mailbox -// simulator. For more information, go to the Amazon SES Developer Guide . -// The total size of the message cannot exceed 10 Amazon SES has a limit on -// the total number of recipients per message: The combined number of To:, -// CC: and email addresses cannot exceed 50. If you need to send an email -// message to a larger audience, you can divide your recipient list into -// groups of 50 or fewer, and then call Amazon SES repeatedly to send the -// message to each group. For every message that you send, the total number -// of recipients (To:, CC: and is counted against your sending quota - the -// maximum number of emails you can send in a 24-hour period. For -// information about your sending quota, go to the Amazon SES Developer -// Guide . -func (c *SES) SendEmail(req *SendEmailRequest) (resp *SendEmailResult, err error) { - resp = &SendEmailResult{} - err = c.client.Do("SendEmail", "POST", "/", req, resp) - return -} - -// SendRawEmail sends an email message, with header and content specified -// by the client. The SendRawEmail action is useful for sending multipart -// emails. The raw text of the message must comply with Internet email -// standards; otherwise, the message cannot be sent. You can only send -// email from verified email addresses and domains. If you have not -// requested production access to Amazon you must also verify every -// recipient email address except for the recipients provided by the Amazon -// SES mailbox simulator. For more information, go to the Amazon SES -// Developer Guide . The total size of the message cannot exceed 10 MB. -// This includes any attachments that are part of the message. Amazon SES -// has a limit on the total number of recipients per message: The combined -// number of To:, CC: and email addresses cannot exceed 50. If you need to -// send an email message to a larger audience, you can divide your -// recipient list into groups of 50 or fewer, and then call Amazon SES -// repeatedly to send the message to each group. The To:, and headers in -// the raw message can contain a group list. Note that each recipient in a -// group list counts towards the 50-recipient limit. For every message that -// you send, the total number of recipients (To:, CC: and is counted -// against your sending quota - the maximum number of emails you can send -// in a 24-hour period. For information about your sending quota, go to the -// Amazon SES Developer Guide . -func (c *SES) SendRawEmail(req *SendRawEmailRequest) (resp *SendRawEmailResult, err error) { - resp = &SendRawEmailResult{} - err = c.client.Do("SendRawEmail", "POST", "/", req, resp) - return -} - -// SetIdentityDkimEnabled enables or disables Easy signing of email sent -// from an identity: If Easy signing is enabled for a domain name identity -// (e.g., example.com ), then Amazon SES will DKIM-sign all email sent by -// addresses under that domain name (e.g., user@example.com If Easy signing -// is enabled for an email address, then Amazon SES will DKIM-sign all -// email sent by that email address. For email addresses (e.g., -// user@example.com ), you can only enable Easy signing if the -// corresponding domain (e.g., example.com ) has been set up for Easy using -// the AWS Console or the VerifyDomainDkim action. This action is throttled -// at one request per second. For more information about Easy signing, go -// to the Amazon SES Developer Guide -func (c *SES) SetIdentityDkimEnabled(req *SetIdentityDkimEnabledRequest) (resp *SetIdentityDkimEnabledResult, err error) { - resp = &SetIdentityDkimEnabledResult{} - err = c.client.Do("SetIdentityDkimEnabled", "POST", "/", req, resp) - return -} - -// SetIdentityFeedbackForwardingEnabled given an identity (email address or -// domain), enables or disables whether Amazon SES forwards bounce and -// complaint notifications as email. Feedback forwarding can only be -// disabled when Amazon Simple Notification Service (Amazon topics are -// specified for both bounces and complaints. This action is throttled at -// one request per second. For more information about using notifications -// with Amazon see the Amazon SES Developer Guide -func (c *SES) SetIdentityFeedbackForwardingEnabled(req *SetIdentityFeedbackForwardingEnabledRequest) (resp *SetIdentityFeedbackForwardingEnabledResult, err error) { - resp = &SetIdentityFeedbackForwardingEnabledResult{} - err = c.client.Do("SetIdentityFeedbackForwardingEnabled", "POST", "/", req, resp) - return -} - -// SetIdentityNotificationTopic given an identity (email address or -// domain), sets the Amazon Simple Notification Service (Amazon topic to -// which Amazon SES will publish bounce, complaint, and/or delivery -// notifications for emails sent with that identity as the Source This -// action is throttled at one request per second. For more information -// about feedback notification, see the Amazon SES Developer Guide -func (c *SES) SetIdentityNotificationTopic(req *SetIdentityNotificationTopicRequest) (resp *SetIdentityNotificationTopicResult, err error) { - resp = &SetIdentityNotificationTopicResult{} - err = c.client.Do("SetIdentityNotificationTopic", "POST", "/", req, resp) - return -} - -// VerifyDomainDkim returns a set of tokens for a domain. tokens are -// character strings that represent your domain's identity. Using these -// tokens, you will need to create DNS records that point to public keys -// hosted by Amazon Amazon Web Services will eventually detect that you -// have updated your DNS records; this detection process may take up to 72 -// hours. Upon successful detection, Amazon SES will be able to DKIM-sign -// email originating from that domain. This action is throttled at one -// request per second. To enable or disable Easy signing for a domain, use -// the SetIdentityDkimEnabled action. For more information about creating -// DNS records using tokens, go to the Amazon SES Developer Guide -func (c *SES) VerifyDomainDkim(req *VerifyDomainDkimRequest) (resp *VerifyDomainDkimResult, err error) { - resp = &VerifyDomainDkimResult{} - err = c.client.Do("VerifyDomainDkim", "POST", "/", req, resp) - return -} - -// VerifyDomainIdentity verifies a domain. This action is throttled at one -// request per second. -func (c *SES) VerifyDomainIdentity(req *VerifyDomainIdentityRequest) (resp *VerifyDomainIdentityResult, err error) { - resp = &VerifyDomainIdentityResult{} - err = c.client.Do("VerifyDomainIdentity", "POST", "/", req, resp) - return -} - -// VerifyEmailAddress verifies an email address. This action causes a -// confirmation email message to be sent to the specified address. The -// VerifyEmailAddress action is deprecated as of the May 15, 2012 release -// of Domain Verification. The VerifyEmailIdentity action is now preferred. -// This action is throttled at one request per second. -func (c *SES) VerifyEmailAddress(req *VerifyEmailAddressRequest) (err error) { - // NRE - err = c.client.Do("VerifyEmailAddress", "POST", "/", req, nil) - return -} - -// VerifyEmailIdentity verifies an email address. This action causes a -// confirmation email message to be sent to the specified address. This -// action is throttled at one request per second. -func (c *SES) VerifyEmailIdentity(req *VerifyEmailIdentityRequest) (resp *VerifyEmailIdentityResult, err error) { - resp = &VerifyEmailIdentityResult{} - err = c.client.Do("VerifyEmailIdentity", "POST", "/", req, resp) - return -} - -// Body is undocumented. -type Body struct { - HTML *Content `query:"Html" xml:"Html"` - Text *Content `query:"Text" xml:"Text"` -} - -// Content is undocumented. -type Content struct { - Charset aws.StringValue `query:"Charset" xml:"Charset"` - Data aws.StringValue `query:"Data" xml:"Data"` -} - -// DeleteIdentityRequest is undocumented. -type DeleteIdentityRequest struct { - Identity aws.StringValue `query:"Identity" xml:"Identity"` -} - -// DeleteIdentityResponse is undocumented. -type DeleteIdentityResponse struct { -} - -// DeleteVerifiedEmailAddressRequest is undocumented. -type DeleteVerifiedEmailAddressRequest struct { - EmailAddress aws.StringValue `query:"EmailAddress" xml:"EmailAddress"` -} - -// Destination is undocumented. -type Destination struct { - BCCAddresses []string `query:"BccAddresses.member" xml:"BccAddresses>member"` - CCAddresses []string `query:"CcAddresses.member" xml:"CcAddresses>member"` - ToAddresses []string `query:"ToAddresses.member" xml:"ToAddresses>member"` -} - -type DkimAttributes map[string]IdentityDkimAttributes - -// UnmarshalXML implements xml.UnmarshalXML interface for map -func (m *DkimAttributes) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error { - if *m == nil { - (*m) = make(DkimAttributes) - } - for { - var e struct { - Key string `xml:"key"` - Value IdentityDkimAttributes `xml:"value"` - } - err := d.DecodeElement(&e, &start) - if err != nil && err != io.EOF { - return err - } - if err == io.EOF { - break - } - (*m)[e.Key] = e.Value - } - return nil -} - -// GetIdentityDkimAttributesRequest is undocumented. -type GetIdentityDkimAttributesRequest struct { - Identities []string `query:"Identities.member" xml:"Identities>member"` -} - -// GetIdentityDkimAttributesResponse is undocumented. -type GetIdentityDkimAttributesResponse struct { - DkimAttributes DkimAttributes `query:"DkimAttributes.entry" xml:"GetIdentityDkimAttributesResult>DkimAttributes>entry"` -} - -// GetIdentityNotificationAttributesRequest is undocumented. -type GetIdentityNotificationAttributesRequest struct { - Identities []string `query:"Identities.member" xml:"Identities>member"` -} - -// GetIdentityNotificationAttributesResponse is undocumented. -type GetIdentityNotificationAttributesResponse struct { - NotificationAttributes NotificationAttributes `query:"NotificationAttributes.entry" xml:"GetIdentityNotificationAttributesResult>NotificationAttributes>entry"` -} - -// GetIdentityVerificationAttributesRequest is undocumented. -type GetIdentityVerificationAttributesRequest struct { - Identities []string `query:"Identities.member" xml:"Identities>member"` -} - -// GetIdentityVerificationAttributesResponse is undocumented. -type GetIdentityVerificationAttributesResponse struct { - VerificationAttributes VerificationAttributes `query:"VerificationAttributes.entry" xml:"GetIdentityVerificationAttributesResult>VerificationAttributes>entry"` -} - -// GetSendQuotaResponse is undocumented. -type GetSendQuotaResponse struct { - Max24HourSend aws.DoubleValue `query:"Max24HourSend" xml:"GetSendQuotaResult>Max24HourSend"` - MaxSendRate aws.DoubleValue `query:"MaxSendRate" xml:"GetSendQuotaResult>MaxSendRate"` - SentLast24Hours aws.DoubleValue `query:"SentLast24Hours" xml:"GetSendQuotaResult>SentLast24Hours"` -} - -// GetSendStatisticsResponse is undocumented. -type GetSendStatisticsResponse struct { - SendDataPoints []SendDataPoint `query:"SendDataPoints.member" xml:"GetSendStatisticsResult>SendDataPoints>member"` -} - -// IdentityDkimAttributes is undocumented. -type IdentityDkimAttributes struct { - DkimEnabled aws.BooleanValue `query:"DkimEnabled" xml:"DkimEnabled"` - DkimTokens []string `query:"DkimTokens.member" xml:"DkimTokens>member"` - DkimVerificationStatus aws.StringValue `query:"DkimVerificationStatus" xml:"DkimVerificationStatus"` -} - -// IdentityNotificationAttributes is undocumented. -type IdentityNotificationAttributes struct { - BounceTopic aws.StringValue `query:"BounceTopic" xml:"BounceTopic"` - ComplaintTopic aws.StringValue `query:"ComplaintTopic" xml:"ComplaintTopic"` - DeliveryTopic aws.StringValue `query:"DeliveryTopic" xml:"DeliveryTopic"` - ForwardingEnabled aws.BooleanValue `query:"ForwardingEnabled" xml:"ForwardingEnabled"` -} - -// Possible values for SES. -const ( - IdentityTypeDomain = "Domain" - IdentityTypeEmailAddress = "EmailAddress" -) - -// IdentityVerificationAttributes is undocumented. -type IdentityVerificationAttributes struct { - VerificationStatus aws.StringValue `query:"VerificationStatus" xml:"VerificationStatus"` - VerificationToken aws.StringValue `query:"VerificationToken" xml:"VerificationToken"` -} - -// ListIdentitiesRequest is undocumented. -type ListIdentitiesRequest struct { - IdentityType aws.StringValue `query:"IdentityType" xml:"IdentityType"` - MaxItems aws.IntegerValue `query:"MaxItems" xml:"MaxItems"` - NextToken aws.StringValue `query:"NextToken" xml:"NextToken"` -} - -// ListIdentitiesResponse is undocumented. -type ListIdentitiesResponse struct { - Identities []string `query:"Identities.member" xml:"ListIdentitiesResult>Identities>member"` - NextToken aws.StringValue `query:"NextToken" xml:"ListIdentitiesResult>NextToken"` -} - -// ListVerifiedEmailAddressesResponse is undocumented. -type ListVerifiedEmailAddressesResponse struct { - VerifiedEmailAddresses []string `query:"VerifiedEmailAddresses.member" xml:"ListVerifiedEmailAddressesResult>VerifiedEmailAddresses>member"` -} - -// Message is undocumented. -type Message struct { - Body *Body `query:"Body" xml:"Body"` - Subject *Content `query:"Subject" xml:"Subject"` -} - -type NotificationAttributes map[string]IdentityNotificationAttributes - -// UnmarshalXML implements xml.UnmarshalXML interface for map -func (m *NotificationAttributes) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error { - if *m == nil { - (*m) = make(NotificationAttributes) - } - for { - var e struct { - Key string `xml:"key"` - Value IdentityNotificationAttributes `xml:"value"` - } - err := d.DecodeElement(&e, &start) - if err != nil && err != io.EOF { - return err - } - if err == io.EOF { - break - } - (*m)[e.Key] = e.Value - } - return nil -} - -// Possible values for SES. -const ( - NotificationTypeBounce = "Bounce" - NotificationTypeComplaint = "Complaint" - NotificationTypeDelivery = "Delivery" -) - -// RawMessage is undocumented. -type RawMessage struct { - Data []byte `query:"Data" xml:"Data"` -} - -// SendDataPoint is undocumented. -type SendDataPoint struct { - Bounces aws.LongValue `query:"Bounces" xml:"Bounces"` - Complaints aws.LongValue `query:"Complaints" xml:"Complaints"` - DeliveryAttempts aws.LongValue `query:"DeliveryAttempts" xml:"DeliveryAttempts"` - Rejects aws.LongValue `query:"Rejects" xml:"Rejects"` - Timestamp time.Time `query:"Timestamp" xml:"Timestamp"` -} - -// SendEmailRequest is undocumented. -type SendEmailRequest struct { - Destination *Destination `query:"Destination" xml:"Destination"` - Message *Message `query:"Message" xml:"Message"` - ReplyToAddresses []string `query:"ReplyToAddresses.member" xml:"ReplyToAddresses>member"` - ReturnPath aws.StringValue `query:"ReturnPath" xml:"ReturnPath"` - Source aws.StringValue `query:"Source" xml:"Source"` -} - -// SendEmailResponse is undocumented. -type SendEmailResponse struct { - MessageID aws.StringValue `query:"MessageId" xml:"SendEmailResult>MessageId"` -} - -// SendRawEmailRequest is undocumented. -type SendRawEmailRequest struct { - Destinations []string `query:"Destinations.member" xml:"Destinations>member"` - RawMessage *RawMessage `query:"RawMessage" xml:"RawMessage"` - Source aws.StringValue `query:"Source" xml:"Source"` -} - -// SendRawEmailResponse is undocumented. -type SendRawEmailResponse struct { - MessageID aws.StringValue `query:"MessageId" xml:"SendRawEmailResult>MessageId"` -} - -// SetIdentityDkimEnabledRequest is undocumented. -type SetIdentityDkimEnabledRequest struct { - DkimEnabled aws.BooleanValue `query:"DkimEnabled" xml:"DkimEnabled"` - Identity aws.StringValue `query:"Identity" xml:"Identity"` -} - -// SetIdentityDkimEnabledResponse is undocumented. -type SetIdentityDkimEnabledResponse struct { -} - -// SetIdentityFeedbackForwardingEnabledRequest is undocumented. -type SetIdentityFeedbackForwardingEnabledRequest struct { - ForwardingEnabled aws.BooleanValue `query:"ForwardingEnabled" xml:"ForwardingEnabled"` - Identity aws.StringValue `query:"Identity" xml:"Identity"` -} - -// SetIdentityFeedbackForwardingEnabledResponse is undocumented. -type SetIdentityFeedbackForwardingEnabledResponse struct { -} - -// SetIdentityNotificationTopicRequest is undocumented. -type SetIdentityNotificationTopicRequest struct { - Identity aws.StringValue `query:"Identity" xml:"Identity"` - NotificationType aws.StringValue `query:"NotificationType" xml:"NotificationType"` - SNSTopic aws.StringValue `query:"SnsTopic" xml:"SnsTopic"` -} - -// SetIdentityNotificationTopicResponse is undocumented. -type SetIdentityNotificationTopicResponse struct { -} - -type VerificationAttributes map[string]IdentityVerificationAttributes - -// UnmarshalXML implements xml.UnmarshalXML interface for map -func (m *VerificationAttributes) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error { - if *m == nil { - (*m) = make(VerificationAttributes) - } - for { - var e struct { - Key string `xml:"key"` - Value IdentityVerificationAttributes `xml:"value"` - } - err := d.DecodeElement(&e, &start) - if err != nil && err != io.EOF { - return err - } - if err == io.EOF { - break - } - (*m)[e.Key] = e.Value - } - return nil -} - -// Possible values for SES. -const ( - VerificationStatusFailed = "Failed" - VerificationStatusNotStarted = "NotStarted" - VerificationStatusPending = "Pending" - VerificationStatusSuccess = "Success" - VerificationStatusTemporaryFailure = "TemporaryFailure" -) - -// VerifyDomainDkimRequest is undocumented. -type VerifyDomainDkimRequest struct { - Domain aws.StringValue `query:"Domain" xml:"Domain"` -} - -// VerifyDomainDkimResponse is undocumented. -type VerifyDomainDkimResponse struct { - DkimTokens []string `query:"DkimTokens.member" xml:"VerifyDomainDkimResult>DkimTokens>member"` -} - -// VerifyDomainIdentityRequest is undocumented. -type VerifyDomainIdentityRequest struct { - Domain aws.StringValue `query:"Domain" xml:"Domain"` -} - -// VerifyDomainIdentityResponse is undocumented. -type VerifyDomainIdentityResponse struct { - VerificationToken aws.StringValue `query:"VerificationToken" xml:"VerifyDomainIdentityResult>VerificationToken"` -} - -// VerifyEmailAddressRequest is undocumented. -type VerifyEmailAddressRequest struct { - EmailAddress aws.StringValue `query:"EmailAddress" xml:"EmailAddress"` -} - -// VerifyEmailIdentityRequest is undocumented. -type VerifyEmailIdentityRequest struct { - EmailAddress aws.StringValue `query:"EmailAddress" xml:"EmailAddress"` -} - -// VerifyEmailIdentityResponse is undocumented. -type VerifyEmailIdentityResponse struct { -} - -// DeleteIdentityResult is a wrapper for DeleteIdentityResponse. -type DeleteIdentityResult struct { -} - -// GetIdentityDkimAttributesResult is a wrapper for GetIdentityDkimAttributesResponse. -type GetIdentityDkimAttributesResult struct { - DkimAttributes DkimAttributes `query:"DkimAttributes.entry" xml:"GetIdentityDkimAttributesResult>DkimAttributes>entry"` -} - -// GetIdentityNotificationAttributesResult is a wrapper for GetIdentityNotificationAttributesResponse. -type GetIdentityNotificationAttributesResult struct { - NotificationAttributes NotificationAttributes `query:"NotificationAttributes.entry" xml:"GetIdentityNotificationAttributesResult>NotificationAttributes>entry"` -} - -// GetIdentityVerificationAttributesResult is a wrapper for GetIdentityVerificationAttributesResponse. -type GetIdentityVerificationAttributesResult struct { - VerificationAttributes VerificationAttributes `query:"VerificationAttributes.entry" xml:"GetIdentityVerificationAttributesResult>VerificationAttributes>entry"` -} - -// GetSendQuotaResult is a wrapper for GetSendQuotaResponse. -type GetSendQuotaResult struct { - Max24HourSend aws.DoubleValue `query:"Max24HourSend" xml:"GetSendQuotaResult>Max24HourSend"` - MaxSendRate aws.DoubleValue `query:"MaxSendRate" xml:"GetSendQuotaResult>MaxSendRate"` - SentLast24Hours aws.DoubleValue `query:"SentLast24Hours" xml:"GetSendQuotaResult>SentLast24Hours"` -} - -// GetSendStatisticsResult is a wrapper for GetSendStatisticsResponse. -type GetSendStatisticsResult struct { - SendDataPoints []SendDataPoint `query:"SendDataPoints.member" xml:"GetSendStatisticsResult>SendDataPoints>member"` -} - -// ListIdentitiesResult is a wrapper for ListIdentitiesResponse. -type ListIdentitiesResult struct { - Identities []string `query:"Identities.member" xml:"ListIdentitiesResult>Identities>member"` - NextToken aws.StringValue `query:"NextToken" xml:"ListIdentitiesResult>NextToken"` -} - -// ListVerifiedEmailAddressesResult is a wrapper for ListVerifiedEmailAddressesResponse. -type ListVerifiedEmailAddressesResult struct { - VerifiedEmailAddresses []string `query:"VerifiedEmailAddresses.member" xml:"ListVerifiedEmailAddressesResult>VerifiedEmailAddresses>member"` -} - -// SendEmailResult is a wrapper for SendEmailResponse. -type SendEmailResult struct { - MessageID aws.StringValue `query:"MessageId" xml:"SendEmailResult>MessageId"` -} - -// SendRawEmailResult is a wrapper for SendRawEmailResponse. -type SendRawEmailResult struct { - MessageID aws.StringValue `query:"MessageId" xml:"SendRawEmailResult>MessageId"` -} - -// SetIdentityDkimEnabledResult is a wrapper for SetIdentityDkimEnabledResponse. -type SetIdentityDkimEnabledResult struct { -} - -// SetIdentityFeedbackForwardingEnabledResult is a wrapper for SetIdentityFeedbackForwardingEnabledResponse. -type SetIdentityFeedbackForwardingEnabledResult struct { -} - -// SetIdentityNotificationTopicResult is a wrapper for SetIdentityNotificationTopicResponse. -type SetIdentityNotificationTopicResult struct { -} - -// VerifyDomainDkimResult is a wrapper for VerifyDomainDkimResponse. -type VerifyDomainDkimResult struct { - DkimTokens []string `query:"DkimTokens.member" xml:"VerifyDomainDkimResult>DkimTokens>member"` -} - -// VerifyDomainIdentityResult is a wrapper for VerifyDomainIdentityResponse. -type VerifyDomainIdentityResult struct { - VerificationToken aws.StringValue `query:"VerificationToken" xml:"VerifyDomainIdentityResult>VerificationToken"` -} - -// VerifyEmailIdentityResult is a wrapper for VerifyEmailIdentityResponse. -type VerifyEmailIdentityResult struct { -} - -// avoid errors if the packages aren't referenced -var _ time.Time - -var _ xml.Decoder -var _ = io.EOF diff --git a/src/github.com/getlantern/aws-sdk-go/gen/sns/sns.go b/src/github.com/getlantern/aws-sdk-go/gen/sns/sns.go deleted file mode 100644 index 2054b194d0..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/gen/sns/sns.go +++ /dev/null @@ -1,767 +0,0 @@ -// THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. - -// Package sns provides a client for Amazon Simple Notification Service. -package sns - -import ( - "net/http" - "time" - - "github.com/awslabs/aws-sdk-go/aws" - "github.com/awslabs/aws-sdk-go/gen/endpoints" -) - -import ( - "encoding/xml" - "io" -) - -// SNS is a client for Amazon Simple Notification Service. -type SNS struct { - client *aws.QueryClient -} - -// New returns a new SNS client. -func New(creds aws.CredentialsProvider, region string, client *http.Client) *SNS { - if client == nil { - client = http.DefaultClient - } - - endpoint, service, region := endpoints.Lookup("sns", region) - - return &SNS{ - client: &aws.QueryClient{ - Context: aws.Context{ - Credentials: creds, - Service: service, - Region: region, - }, - Client: client, - Endpoint: endpoint, - APIVersion: "2010-03-31", - }, - } -} - -// AddPermission adds a statement to a topic's access control policy, -// granting access for the specified AWS accounts to the specified actions. -func (c *SNS) AddPermission(req *AddPermissionInput) (err error) { - // NRE - err = c.client.Do("AddPermission", "POST", "/", req, nil) - return -} - -// ConfirmSubscription verifies an endpoint owner's intent to receive -// messages by validating the token sent to the endpoint by an earlier -// Subscribe action. If the token is valid, the action creates a new -// subscription and returns its Amazon Resource Name This call requires an -// AWS signature only when the AuthenticateOnUnsubscribe flag is set to -// "true". -func (c *SNS) ConfirmSubscription(req *ConfirmSubscriptionInput) (resp *ConfirmSubscriptionResult, err error) { - resp = &ConfirmSubscriptionResult{} - err = c.client.Do("ConfirmSubscription", "POST", "/", req, resp) - return -} - -// CreatePlatformApplication creates a platform application object for one -// of the supported push notification services, such as and to which -// devices and mobile apps may register. You must specify PlatformPrincipal -// and PlatformCredential attributes when using the -// CreatePlatformApplication action. The PlatformPrincipal is received from -// the notification service. For PlatformPrincipal is certificate". For -// PlatformPrincipal is not applicable. For PlatformPrincipal is "client -// id". The PlatformCredential is also received from the notification -// service. For PlatformCredential is "private key". For PlatformCredential -// is key". For PlatformCredential is "client secret". The -// PlatformApplicationArn that is returned when using -// CreatePlatformApplication is then used as an attribute for the -// CreatePlatformEndpoint action. For more information, see Using Amazon -// SNS Mobile Push Notifications . -func (c *SNS) CreatePlatformApplication(req *CreatePlatformApplicationInput) (resp *CreatePlatformApplicationResult, err error) { - resp = &CreatePlatformApplicationResult{} - err = c.client.Do("CreatePlatformApplication", "POST", "/", req, resp) - return -} - -// CreatePlatformEndpoint creates an endpoint for a device and mobile app -// on one of the supported push notification services, such as GCM and -// CreatePlatformEndpoint requires the PlatformApplicationArn that is -// returned from CreatePlatformApplication . The EndpointArn that is -// returned when using CreatePlatformEndpoint can then be used by the -// Publish action to send a message to a mobile app or by the Subscribe -// action for subscription to a topic. The CreatePlatformEndpoint action is -// idempotent, so if the requester already owns an endpoint with the same -// device token and attributes, that endpoint's ARN is returned without -// creating a new endpoint. For more information, see Using Amazon SNS -// Mobile Push Notifications . When using CreatePlatformEndpoint with -// Baidu, two attributes must be provided: ChannelId and UserId. The token -// field must also contain the ChannelId. For more information, see -// Creating an Amazon SNS Endpoint for Baidu . -func (c *SNS) CreatePlatformEndpoint(req *CreatePlatformEndpointInput) (resp *CreatePlatformEndpointResult, err error) { - resp = &CreatePlatformEndpointResult{} - err = c.client.Do("CreatePlatformEndpoint", "POST", "/", req, resp) - return -} - -// CreateTopic creates a topic to which notifications can be published. -// Users can create at most 3000 topics. For more information, see -// http://aws.amazon.com/sns . This action is idempotent, so if the -// requester already owns a topic with the specified name, that topic's ARN -// is returned without creating a new topic. -func (c *SNS) CreateTopic(req *CreateTopicInput) (resp *CreateTopicResult, err error) { - resp = &CreateTopicResult{} - err = c.client.Do("CreateTopic", "POST", "/", req, resp) - return -} - -// DeleteEndpoint deletes the endpoint from Amazon This action is -// idempotent. For more information, see Using Amazon SNS Mobile Push -// Notifications . -func (c *SNS) DeleteEndpoint(req *DeleteEndpointInput) (err error) { - // NRE - err = c.client.Do("DeleteEndpoint", "POST", "/", req, nil) - return -} - -// DeletePlatformApplication deletes a platform application object for one -// of the supported push notification services, such as and For more -// information, see Using Amazon SNS Mobile Push Notifications . -func (c *SNS) DeletePlatformApplication(req *DeletePlatformApplicationInput) (err error) { - // NRE - err = c.client.Do("DeletePlatformApplication", "POST", "/", req, nil) - return -} - -// DeleteTopic deletes a topic and all its subscriptions. Deleting a topic -// might prevent some messages previously sent to the topic from being -// delivered to subscribers. This action is idempotent, so deleting a topic -// that does not exist does not result in an error. -func (c *SNS) DeleteTopic(req *DeleteTopicInput) (err error) { - // NRE - err = c.client.Do("DeleteTopic", "POST", "/", req, nil) - return -} - -// GetEndpointAttributes retrieves the endpoint attributes for a device on -// one of the supported push notification services, such as GCM and For -// more information, see Using Amazon SNS Mobile Push Notifications . -func (c *SNS) GetEndpointAttributes(req *GetEndpointAttributesInput) (resp *GetEndpointAttributesResult, err error) { - resp = &GetEndpointAttributesResult{} - err = c.client.Do("GetEndpointAttributes", "POST", "/", req, resp) - return -} - -// GetPlatformApplicationAttributes retrieves the attributes of the -// platform application object for the supported push notification -// services, such as and For more information, see Using Amazon SNS Mobile -// Push Notifications . -func (c *SNS) GetPlatformApplicationAttributes(req *GetPlatformApplicationAttributesInput) (resp *GetPlatformApplicationAttributesResult, err error) { - resp = &GetPlatformApplicationAttributesResult{} - err = c.client.Do("GetPlatformApplicationAttributes", "POST", "/", req, resp) - return -} - -// GetSubscriptionAttributes is undocumented. -func (c *SNS) GetSubscriptionAttributes(req *GetSubscriptionAttributesInput) (resp *GetSubscriptionAttributesResult, err error) { - resp = &GetSubscriptionAttributesResult{} - err = c.client.Do("GetSubscriptionAttributes", "POST", "/", req, resp) - return -} - -// GetTopicAttributes returns all of the properties of a topic. Topic -// properties returned might differ based on the authorization of the user. -func (c *SNS) GetTopicAttributes(req *GetTopicAttributesInput) (resp *GetTopicAttributesResult, err error) { - resp = &GetTopicAttributesResult{} - err = c.client.Do("GetTopicAttributes", "POST", "/", req, resp) - return -} - -// ListEndpointsByPlatformApplication lists the endpoints and endpoint -// attributes for devices in a supported push notification service, such as -// GCM and The results for ListEndpointsByPlatformApplication are paginated -// and return a limited list of endpoints, up to 100. If additional records -// are available after the first page results, then a NextToken string will -// be returned. To receive the next page, you call -// ListEndpointsByPlatformApplication again using the NextToken string -// received from the previous call. When there are no more records to -// return, NextToken will be null. For more information, see Using Amazon -// SNS Mobile Push Notifications . -func (c *SNS) ListEndpointsByPlatformApplication(req *ListEndpointsByPlatformApplicationInput) (resp *ListEndpointsByPlatformApplicationResult, err error) { - resp = &ListEndpointsByPlatformApplicationResult{} - err = c.client.Do("ListEndpointsByPlatformApplication", "POST", "/", req, resp) - return -} - -// ListPlatformApplications lists the platform application objects for the -// supported push notification services, such as and The results for -// ListPlatformApplications are paginated and return a limited list of -// applications, up to 100. If additional records are available after the -// first page results, then a NextToken string will be returned. To receive -// the next page, you call ListPlatformApplications using the NextToken -// string received from the previous call. When there are no more records -// to return, NextToken will be null. For more information, see Using -// Amazon SNS Mobile Push Notifications . -func (c *SNS) ListPlatformApplications(req *ListPlatformApplicationsInput) (resp *ListPlatformApplicationsResult, err error) { - resp = &ListPlatformApplicationsResult{} - err = c.client.Do("ListPlatformApplications", "POST", "/", req, resp) - return -} - -// ListSubscriptions returns a list of the requester's subscriptions. Each -// call returns a limited list of subscriptions, up to 100. If there are -// more subscriptions, a NextToken is also returned. Use the NextToken -// parameter in a new ListSubscriptions call to get further results. -func (c *SNS) ListSubscriptions(req *ListSubscriptionsInput) (resp *ListSubscriptionsResult, err error) { - resp = &ListSubscriptionsResult{} - err = c.client.Do("ListSubscriptions", "POST", "/", req, resp) - return -} - -// ListSubscriptionsByTopic returns a list of the subscriptions to a -// specific topic. Each call returns a limited list of subscriptions, up to -// 100. If there are more subscriptions, a NextToken is also returned. Use -// the NextToken parameter in a new ListSubscriptionsByTopic call to get -// further results. -func (c *SNS) ListSubscriptionsByTopic(req *ListSubscriptionsByTopicInput) (resp *ListSubscriptionsByTopicResult, err error) { - resp = &ListSubscriptionsByTopicResult{} - err = c.client.Do("ListSubscriptionsByTopic", "POST", "/", req, resp) - return -} - -// ListTopics returns a list of the requester's topics. Each call returns a -// limited list of topics, up to 100. If there are more topics, a NextToken -// is also returned. Use the NextToken parameter in a new ListTopics call -// to get further results. -func (c *SNS) ListTopics(req *ListTopicsInput) (resp *ListTopicsResult, err error) { - resp = &ListTopicsResult{} - err = c.client.Do("ListTopics", "POST", "/", req, resp) - return -} - -// Publish sends a message to all of a topic's subscribed endpoints. When a -// messageId is returned, the message has been saved and Amazon SNS will -// attempt to deliver it to the topic's subscribers shortly. The format of -// the outgoing message to each subscribed endpoint depends on the -// notification protocol selected. To use the Publish action for sending a -// message to a mobile endpoint, such as an app on a Kindle device or -// mobile phone, you must specify the EndpointArn. The EndpointArn is -// returned when making a call with the CreatePlatformEndpoint action. The -// second example below shows a request and response for publishing to a -// mobile endpoint. -func (c *SNS) Publish(req *PublishInput) (resp *PublishResult, err error) { - resp = &PublishResult{} - err = c.client.Do("Publish", "POST", "/", req, resp) - return -} - -// RemovePermission removes a statement from a topic's access control -// policy. -func (c *SNS) RemovePermission(req *RemovePermissionInput) (err error) { - // NRE - err = c.client.Do("RemovePermission", "POST", "/", req, nil) - return -} - -// SetEndpointAttributes sets the attributes for an endpoint for a device -// on one of the supported push notification services, such as GCM and For -// more information, see Using Amazon SNS Mobile Push Notifications . -func (c *SNS) SetEndpointAttributes(req *SetEndpointAttributesInput) (err error) { - // NRE - err = c.client.Do("SetEndpointAttributes", "POST", "/", req, nil) - return -} - -// SetPlatformApplicationAttributes sets the attributes of the platform -// application object for the supported push notification services, such as -// and For more information, see Using Amazon SNS Mobile Push Notifications -// . -func (c *SNS) SetPlatformApplicationAttributes(req *SetPlatformApplicationAttributesInput) (err error) { - // NRE - err = c.client.Do("SetPlatformApplicationAttributes", "POST", "/", req, nil) - return -} - -// SetSubscriptionAttributes allows a subscription owner to set an -// attribute of the topic to a new value. -func (c *SNS) SetSubscriptionAttributes(req *SetSubscriptionAttributesInput) (err error) { - // NRE - err = c.client.Do("SetSubscriptionAttributes", "POST", "/", req, nil) - return -} - -// SetTopicAttributes allows a topic owner to set an attribute of the topic -// to a new value. -func (c *SNS) SetTopicAttributes(req *SetTopicAttributesInput) (err error) { - // NRE - err = c.client.Do("SetTopicAttributes", "POST", "/", req, nil) - return -} - -// Subscribe prepares to subscribe an endpoint by sending the endpoint a -// confirmation message. To actually create a subscription, the endpoint -// owner must call the ConfirmSubscription action with the token from the -// confirmation message. Confirmation tokens are valid for three days. -func (c *SNS) Subscribe(req *SubscribeInput) (resp *SubscribeResult, err error) { - resp = &SubscribeResult{} - err = c.client.Do("Subscribe", "POST", "/", req, resp) - return -} - -// Unsubscribe deletes a subscription. If the subscription requires -// authentication for deletion, only the owner of the subscription or the -// topic's owner can unsubscribe, and an AWS signature is required. If the -// Unsubscribe call does not require authentication and the requester is -// not the subscription owner, a final cancellation message is delivered to -// the endpoint, so that the endpoint owner can easily resubscribe to the -// topic if the Unsubscribe request was unintended. -func (c *SNS) Unsubscribe(req *UnsubscribeInput) (err error) { - // NRE - err = c.client.Do("Unsubscribe", "POST", "/", req, nil) - return -} - -// AddPermissionInput is undocumented. -type AddPermissionInput struct { - AWSAccountID []string `query:"AWSAccountId.member" xml:"AWSAccountId>member"` - ActionName []string `query:"ActionName.member" xml:"ActionName>member"` - Label aws.StringValue `query:"Label" xml:"Label"` - TopicARN aws.StringValue `query:"TopicArn" xml:"TopicArn"` -} - -// ConfirmSubscriptionInput is undocumented. -type ConfirmSubscriptionInput struct { - AuthenticateOnUnsubscribe aws.StringValue `query:"AuthenticateOnUnsubscribe" xml:"AuthenticateOnUnsubscribe"` - Token aws.StringValue `query:"Token" xml:"Token"` - TopicARN aws.StringValue `query:"TopicArn" xml:"TopicArn"` -} - -// ConfirmSubscriptionResponse is undocumented. -type ConfirmSubscriptionResponse struct { - SubscriptionARN aws.StringValue `query:"SubscriptionArn" xml:"ConfirmSubscriptionResult>SubscriptionArn"` -} - -// CreateEndpointResponse is undocumented. -type CreateEndpointResponse struct { - EndpointARN aws.StringValue `query:"EndpointArn" xml:"CreatePlatformEndpointResult>EndpointArn"` -} - -// CreatePlatformApplicationInput is undocumented. -type CreatePlatformApplicationInput struct { - Attributes MapStringToString `query:"Attributes.entry" xml:"Attributes>entry"` - Name aws.StringValue `query:"Name" xml:"Name"` - Platform aws.StringValue `query:"Platform" xml:"Platform"` -} - -// CreatePlatformApplicationResponse is undocumented. -type CreatePlatformApplicationResponse struct { - PlatformApplicationARN aws.StringValue `query:"PlatformApplicationArn" xml:"CreatePlatformApplicationResult>PlatformApplicationArn"` -} - -// CreatePlatformEndpointInput is undocumented. -type CreatePlatformEndpointInput struct { - Attributes MapStringToString `query:"Attributes.entry" xml:"Attributes>entry"` - CustomUserData aws.StringValue `query:"CustomUserData" xml:"CustomUserData"` - PlatformApplicationARN aws.StringValue `query:"PlatformApplicationArn" xml:"PlatformApplicationArn"` - Token aws.StringValue `query:"Token" xml:"Token"` -} - -// CreateTopicInput is undocumented. -type CreateTopicInput struct { - Name aws.StringValue `query:"Name" xml:"Name"` -} - -// CreateTopicResponse is undocumented. -type CreateTopicResponse struct { - TopicARN aws.StringValue `query:"TopicArn" xml:"CreateTopicResult>TopicArn"` -} - -// DeleteEndpointInput is undocumented. -type DeleteEndpointInput struct { - EndpointARN aws.StringValue `query:"EndpointArn" xml:"EndpointArn"` -} - -// DeletePlatformApplicationInput is undocumented. -type DeletePlatformApplicationInput struct { - PlatformApplicationARN aws.StringValue `query:"PlatformApplicationArn" xml:"PlatformApplicationArn"` -} - -// DeleteTopicInput is undocumented. -type DeleteTopicInput struct { - TopicARN aws.StringValue `query:"TopicArn" xml:"TopicArn"` -} - -// Endpoint is undocumented. -type Endpoint struct { - Attributes MapStringToString `query:"Attributes.entry" xml:"Attributes>entry"` - EndpointARN aws.StringValue `query:"EndpointArn" xml:"EndpointArn"` -} - -// GetEndpointAttributesInput is undocumented. -type GetEndpointAttributesInput struct { - EndpointARN aws.StringValue `query:"EndpointArn" xml:"EndpointArn"` -} - -// GetEndpointAttributesResponse is undocumented. -type GetEndpointAttributesResponse struct { - Attributes MapStringToString `query:"Attributes.entry" xml:"GetEndpointAttributesResult>Attributes>entry"` -} - -// GetPlatformApplicationAttributesInput is undocumented. -type GetPlatformApplicationAttributesInput struct { - PlatformApplicationARN aws.StringValue `query:"PlatformApplicationArn" xml:"PlatformApplicationArn"` -} - -// GetPlatformApplicationAttributesResponse is undocumented. -type GetPlatformApplicationAttributesResponse struct { - Attributes MapStringToString `query:"Attributes.entry" xml:"GetPlatformApplicationAttributesResult>Attributes>entry"` -} - -// GetSubscriptionAttributesInput is undocumented. -type GetSubscriptionAttributesInput struct { - SubscriptionARN aws.StringValue `query:"SubscriptionArn" xml:"SubscriptionArn"` -} - -// GetSubscriptionAttributesResponse is undocumented. -type GetSubscriptionAttributesResponse struct { - Attributes SubscriptionAttributesMap `query:"Attributes.entry" xml:"GetSubscriptionAttributesResult>Attributes>entry"` -} - -// GetTopicAttributesInput is undocumented. -type GetTopicAttributesInput struct { - TopicARN aws.StringValue `query:"TopicArn" xml:"TopicArn"` -} - -// GetTopicAttributesResponse is undocumented. -type GetTopicAttributesResponse struct { - Attributes TopicAttributesMap `query:"Attributes.entry" xml:"GetTopicAttributesResult>Attributes>entry"` -} - -// ListEndpointsByPlatformApplicationInput is undocumented. -type ListEndpointsByPlatformApplicationInput struct { - NextToken aws.StringValue `query:"NextToken" xml:"NextToken"` - PlatformApplicationARN aws.StringValue `query:"PlatformApplicationArn" xml:"PlatformApplicationArn"` -} - -// ListEndpointsByPlatformApplicationResponse is undocumented. -type ListEndpointsByPlatformApplicationResponse struct { - Endpoints []Endpoint `query:"Endpoints.member" xml:"ListEndpointsByPlatformApplicationResult>Endpoints>member"` - NextToken aws.StringValue `query:"NextToken" xml:"ListEndpointsByPlatformApplicationResult>NextToken"` -} - -// ListPlatformApplicationsInput is undocumented. -type ListPlatformApplicationsInput struct { - NextToken aws.StringValue `query:"NextToken" xml:"NextToken"` -} - -// ListPlatformApplicationsResponse is undocumented. -type ListPlatformApplicationsResponse struct { - NextToken aws.StringValue `query:"NextToken" xml:"ListPlatformApplicationsResult>NextToken"` - PlatformApplications []PlatformApplication `query:"PlatformApplications.member" xml:"ListPlatformApplicationsResult>PlatformApplications>member"` -} - -// ListSubscriptionsByTopicInput is undocumented. -type ListSubscriptionsByTopicInput struct { - NextToken aws.StringValue `query:"NextToken" xml:"NextToken"` - TopicARN aws.StringValue `query:"TopicArn" xml:"TopicArn"` -} - -// ListSubscriptionsByTopicResponse is undocumented. -type ListSubscriptionsByTopicResponse struct { - NextToken aws.StringValue `query:"NextToken" xml:"ListSubscriptionsByTopicResult>NextToken"` - Subscriptions []Subscription `query:"Subscriptions.member" xml:"ListSubscriptionsByTopicResult>Subscriptions>member"` -} - -// ListSubscriptionsInput is undocumented. -type ListSubscriptionsInput struct { - NextToken aws.StringValue `query:"NextToken" xml:"NextToken"` -} - -// ListSubscriptionsResponse is undocumented. -type ListSubscriptionsResponse struct { - NextToken aws.StringValue `query:"NextToken" xml:"ListSubscriptionsResult>NextToken"` - Subscriptions []Subscription `query:"Subscriptions.member" xml:"ListSubscriptionsResult>Subscriptions>member"` -} - -// ListTopicsInput is undocumented. -type ListTopicsInput struct { - NextToken aws.StringValue `query:"NextToken" xml:"NextToken"` -} - -// ListTopicsResponse is undocumented. -type ListTopicsResponse struct { - NextToken aws.StringValue `query:"NextToken" xml:"ListTopicsResult>NextToken"` - Topics []Topic `query:"Topics.member" xml:"ListTopicsResult>Topics>member"` -} - -type MapStringToString map[string]string - -// UnmarshalXML implements xml.UnmarshalXML interface for map -func (m *MapStringToString) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error { - if *m == nil { - (*m) = make(MapStringToString) - } - for { - var e struct { - Key string `xml:"key"` - Value string `xml:"value"` - } - err := d.DecodeElement(&e, &start) - if err != nil && err != io.EOF { - return err - } - if err == io.EOF { - break - } - (*m)[e.Key] = e.Value - } - return nil -} - -type MessageAttributeMap map[string]MessageAttributeValue - -// UnmarshalXML implements xml.UnmarshalXML interface for map -func (m *MessageAttributeMap) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error { - if *m == nil { - (*m) = make(MessageAttributeMap) - } - for { - var e struct { - Name string `xml:"Name"` - Value MessageAttributeValue `xml:"Value"` - } - err := d.DecodeElement(&e, &start) - if err != nil && err != io.EOF { - return err - } - if err == io.EOF { - break - } - (*m)[e.Name] = e.Value - } - return nil -} - -// MessageAttributeValue is undocumented. -type MessageAttributeValue struct { - BinaryValue []byte `query:"BinaryValue" xml:"BinaryValue"` - DataType aws.StringValue `query:"DataType" xml:"DataType"` - StringValue aws.StringValue `query:"StringValue" xml:"StringValue"` -} - -// PlatformApplication is undocumented. -type PlatformApplication struct { - Attributes MapStringToString `query:"Attributes.entry" xml:"Attributes>entry"` - PlatformApplicationARN aws.StringValue `query:"PlatformApplicationArn" xml:"PlatformApplicationArn"` -} - -// PublishInput is undocumented. -type PublishInput struct { - Message aws.StringValue `query:"Message" xml:"Message"` - MessageAttributes MessageAttributeMap `query:"MessageAttributes.entry" xml:"MessageAttributes>entry"` - MessageStructure aws.StringValue `query:"MessageStructure" xml:"MessageStructure"` - Subject aws.StringValue `query:"Subject" xml:"Subject"` - TargetARN aws.StringValue `query:"TargetArn" xml:"TargetArn"` - TopicARN aws.StringValue `query:"TopicArn" xml:"TopicArn"` -} - -// PublishResponse is undocumented. -type PublishResponse struct { - MessageID aws.StringValue `query:"MessageId" xml:"PublishResult>MessageId"` -} - -// RemovePermissionInput is undocumented. -type RemovePermissionInput struct { - Label aws.StringValue `query:"Label" xml:"Label"` - TopicARN aws.StringValue `query:"TopicArn" xml:"TopicArn"` -} - -// SetEndpointAttributesInput is undocumented. -type SetEndpointAttributesInput struct { - Attributes MapStringToString `query:"Attributes.entry" xml:"Attributes>entry"` - EndpointARN aws.StringValue `query:"EndpointArn" xml:"EndpointArn"` -} - -// SetPlatformApplicationAttributesInput is undocumented. -type SetPlatformApplicationAttributesInput struct { - Attributes MapStringToString `query:"Attributes.entry" xml:"Attributes>entry"` - PlatformApplicationARN aws.StringValue `query:"PlatformApplicationArn" xml:"PlatformApplicationArn"` -} - -// SetSubscriptionAttributesInput is undocumented. -type SetSubscriptionAttributesInput struct { - AttributeName aws.StringValue `query:"AttributeName" xml:"AttributeName"` - AttributeValue aws.StringValue `query:"AttributeValue" xml:"AttributeValue"` - SubscriptionARN aws.StringValue `query:"SubscriptionArn" xml:"SubscriptionArn"` -} - -// SetTopicAttributesInput is undocumented. -type SetTopicAttributesInput struct { - AttributeName aws.StringValue `query:"AttributeName" xml:"AttributeName"` - AttributeValue aws.StringValue `query:"AttributeValue" xml:"AttributeValue"` - TopicARN aws.StringValue `query:"TopicArn" xml:"TopicArn"` -} - -// SubscribeInput is undocumented. -type SubscribeInput struct { - Endpoint aws.StringValue `query:"Endpoint" xml:"Endpoint"` - Protocol aws.StringValue `query:"Protocol" xml:"Protocol"` - TopicARN aws.StringValue `query:"TopicArn" xml:"TopicArn"` -} - -// SubscribeResponse is undocumented. -type SubscribeResponse struct { - SubscriptionARN aws.StringValue `query:"SubscriptionArn" xml:"SubscribeResult>SubscriptionArn"` -} - -// Subscription is undocumented. -type Subscription struct { - Endpoint aws.StringValue `query:"Endpoint" xml:"Endpoint"` - Owner aws.StringValue `query:"Owner" xml:"Owner"` - Protocol aws.StringValue `query:"Protocol" xml:"Protocol"` - SubscriptionARN aws.StringValue `query:"SubscriptionArn" xml:"SubscriptionArn"` - TopicARN aws.StringValue `query:"TopicArn" xml:"TopicArn"` -} - -type SubscriptionAttributesMap map[string]string - -// UnmarshalXML implements xml.UnmarshalXML interface for map -func (m *SubscriptionAttributesMap) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error { - if *m == nil { - (*m) = make(SubscriptionAttributesMap) - } - for { - var e struct { - Key string `xml:"key"` - Value string `xml:"value"` - } - err := d.DecodeElement(&e, &start) - if err != nil && err != io.EOF { - return err - } - if err == io.EOF { - break - } - (*m)[e.Key] = e.Value - } - return nil -} - -// Topic is undocumented. -type Topic struct { - TopicARN aws.StringValue `query:"TopicArn" xml:"TopicArn"` -} - -type TopicAttributesMap map[string]string - -// UnmarshalXML implements xml.UnmarshalXML interface for map -func (m *TopicAttributesMap) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error { - if *m == nil { - (*m) = make(TopicAttributesMap) - } - for { - var e struct { - Key string `xml:"key"` - Value string `xml:"value"` - } - err := d.DecodeElement(&e, &start) - if err != nil && err != io.EOF { - return err - } - if err == io.EOF { - break - } - (*m)[e.Key] = e.Value - } - return nil -} - -// UnsubscribeInput is undocumented. -type UnsubscribeInput struct { - SubscriptionARN aws.StringValue `query:"SubscriptionArn" xml:"SubscriptionArn"` -} - -// ConfirmSubscriptionResult is a wrapper for ConfirmSubscriptionResponse. -type ConfirmSubscriptionResult struct { - SubscriptionARN aws.StringValue `query:"SubscriptionArn" xml:"ConfirmSubscriptionResult>SubscriptionArn"` -} - -// CreatePlatformApplicationResult is a wrapper for CreatePlatformApplicationResponse. -type CreatePlatformApplicationResult struct { - PlatformApplicationARN aws.StringValue `query:"PlatformApplicationArn" xml:"CreatePlatformApplicationResult>PlatformApplicationArn"` -} - -// CreatePlatformEndpointResult is a wrapper for CreateEndpointResponse. -type CreatePlatformEndpointResult struct { - EndpointARN aws.StringValue `query:"EndpointArn" xml:"CreatePlatformEndpointResult>EndpointArn"` -} - -// CreateTopicResult is a wrapper for CreateTopicResponse. -type CreateTopicResult struct { - TopicARN aws.StringValue `query:"TopicArn" xml:"CreateTopicResult>TopicArn"` -} - -// GetEndpointAttributesResult is a wrapper for GetEndpointAttributesResponse. -type GetEndpointAttributesResult struct { - Attributes MapStringToString `query:"Attributes.entry" xml:"GetEndpointAttributesResult>Attributes>entry"` -} - -// GetPlatformApplicationAttributesResult is a wrapper for GetPlatformApplicationAttributesResponse. -type GetPlatformApplicationAttributesResult struct { - Attributes MapStringToString `query:"Attributes.entry" xml:"GetPlatformApplicationAttributesResult>Attributes>entry"` -} - -// GetSubscriptionAttributesResult is a wrapper for GetSubscriptionAttributesResponse. -type GetSubscriptionAttributesResult struct { - Attributes SubscriptionAttributesMap `query:"Attributes.entry" xml:"GetSubscriptionAttributesResult>Attributes>entry"` -} - -// GetTopicAttributesResult is a wrapper for GetTopicAttributesResponse. -type GetTopicAttributesResult struct { - Attributes TopicAttributesMap `query:"Attributes.entry" xml:"GetTopicAttributesResult>Attributes>entry"` -} - -// ListEndpointsByPlatformApplicationResult is a wrapper for ListEndpointsByPlatformApplicationResponse. -type ListEndpointsByPlatformApplicationResult struct { - Endpoints []Endpoint `query:"Endpoints.member" xml:"ListEndpointsByPlatformApplicationResult>Endpoints>member"` - NextToken aws.StringValue `query:"NextToken" xml:"ListEndpointsByPlatformApplicationResult>NextToken"` -} - -// ListPlatformApplicationsResult is a wrapper for ListPlatformApplicationsResponse. -type ListPlatformApplicationsResult struct { - NextToken aws.StringValue `query:"NextToken" xml:"ListPlatformApplicationsResult>NextToken"` - PlatformApplications []PlatformApplication `query:"PlatformApplications.member" xml:"ListPlatformApplicationsResult>PlatformApplications>member"` -} - -// ListSubscriptionsByTopicResult is a wrapper for ListSubscriptionsByTopicResponse. -type ListSubscriptionsByTopicResult struct { - NextToken aws.StringValue `query:"NextToken" xml:"ListSubscriptionsByTopicResult>NextToken"` - Subscriptions []Subscription `query:"Subscriptions.member" xml:"ListSubscriptionsByTopicResult>Subscriptions>member"` -} - -// ListSubscriptionsResult is a wrapper for ListSubscriptionsResponse. -type ListSubscriptionsResult struct { - NextToken aws.StringValue `query:"NextToken" xml:"ListSubscriptionsResult>NextToken"` - Subscriptions []Subscription `query:"Subscriptions.member" xml:"ListSubscriptionsResult>Subscriptions>member"` -} - -// ListTopicsResult is a wrapper for ListTopicsResponse. -type ListTopicsResult struct { - NextToken aws.StringValue `query:"NextToken" xml:"ListTopicsResult>NextToken"` - Topics []Topic `query:"Topics.member" xml:"ListTopicsResult>Topics>member"` -} - -// PublishResult is a wrapper for PublishResponse. -type PublishResult struct { - MessageID aws.StringValue `query:"MessageId" xml:"PublishResult>MessageId"` -} - -// SubscribeResult is a wrapper for SubscribeResponse. -type SubscribeResult struct { - SubscriptionARN aws.StringValue `query:"SubscriptionArn" xml:"SubscribeResult>SubscriptionArn"` -} - -// avoid errors if the packages aren't referenced -var _ time.Time - -var _ xml.Decoder -var _ = io.EOF diff --git a/src/github.com/getlantern/aws-sdk-go/gen/sqs/sqs.go b/src/github.com/getlantern/aws-sdk-go/gen/sqs/sqs.go deleted file mode 100644 index 2cf68e9b8b..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/gen/sqs/sqs.go +++ /dev/null @@ -1,672 +0,0 @@ -// THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. - -// Package sqs provides a client for Amazon Simple Queue Service. -package sqs - -import ( - "net/http" - "time" - - "github.com/awslabs/aws-sdk-go/aws" - "github.com/awslabs/aws-sdk-go/gen/endpoints" -) - -import ( - "encoding/xml" - "io" -) - -// SQS is a client for Amazon Simple Queue Service. -type SQS struct { - client *aws.QueryClient -} - -// New returns a new SQS client. -func New(creds aws.CredentialsProvider, region string, client *http.Client) *SQS { - if client == nil { - client = http.DefaultClient - } - - endpoint, service, region := endpoints.Lookup("sqs", region) - - return &SQS{ - client: &aws.QueryClient{ - Context: aws.Context{ - Credentials: creds, - Service: service, - Region: region, - }, - Client: client, - Endpoint: endpoint, - APIVersion: "2012-11-05", - }, - } -} - -// AddPermission adds a permission to a queue for a specific principal . -// This allows for sharing access to the queue. When you create a queue, -// you have full control access rights for the queue. Only you (as owner of -// the queue) can grant or deny permissions to the queue. For more -// information about these permissions, see Shared Queues in the Amazon SQS -// Developer Guide AddPermission writes an Amazon SQS-generated policy. If -// you want to write your own policy, use SetQueueAttributes to upload your -// policy. For more information about writing your own policy, see Using -// The Access Policy Language in the Amazon SQS Developer Guide Some API -// actions take lists of parameters. These lists are specified using the -// param.n notation. Values of n are integers starting from 1. For example, -// a parameter list with two elements looks like this: -func (c *SQS) AddPermission(req *AddPermissionRequest) (err error) { - // NRE - err = c.client.Do("AddPermission", "POST", "/", req, nil) - return -} - -// ChangeMessageVisibility changes the visibility timeout of a specified -// message in a queue to a new value. The maximum allowed timeout value you -// can set the value to is 12 hours. This means you can't extend the -// timeout of a message in an existing queue to more than a total -// visibility timeout of 12 hours. (For more information visibility -// timeout, see Visibility Timeout in the Amazon SQS Developer Guide For -// example, let's say you have a message and its default message visibility -// timeout is 30 minutes. You could call ChangeMessageVisiblity with a -// value of two hours and the effective timeout would be two hours and 30 -// minutes. When that time comes near you could again extend the time out -// by calling ChangeMessageVisiblity, but this time the maximum allowed -// timeout would be 9 hours and 30 minutes. There is a 120,000 limit for -// the number of inflight messages per queue. Messages are inflight after -// they have been received from the queue by a consuming component, but -// have not yet been deleted from the queue. If you reach the 120,000 -// limit, you will receive an OverLimit error message from Amazon To help -// avoid reaching the limit, you should delete the messages from the queue -// after they have been processed. You can also increase the number of -// queues you use to process the messages. If you attempt to set the -// VisibilityTimeout to an amount more than the maximum time left, Amazon -// SQS returns an error. It will not automatically recalculate and increase -// the timeout to the maximum time remaining. Unlike with a queue, when you -// change the visibility timeout for a specific message, that timeout value -// is applied immediately but is not saved in memory for that message. If -// you don't delete a message after it is received, the visibility timeout -// for the message the next time it is received reverts to the original -// timeout value, not the value you set with the ChangeMessageVisibility -// action. -func (c *SQS) ChangeMessageVisibility(req *ChangeMessageVisibilityRequest) (err error) { - // NRE - err = c.client.Do("ChangeMessageVisibility", "POST", "/", req, nil) - return -} - -// ChangeMessageVisibilityBatch changes the visibility timeout of multiple -// messages. This is a batch version of ChangeMessageVisibility . The -// result of the action on each message is reported individually in the -// response. You can send up to 10 ChangeMessageVisibility requests with -// each ChangeMessageVisibilityBatch action. Because the batch request can -// result in a combination of successful and unsuccessful actions, you -// should check for batch errors even when the call returns an status code -// of 200. Some API actions take lists of parameters. These lists are -// specified using the param.n notation. Values of n are integers starting -// from 1. For example, a parameter list with two elements looks like this: -func (c *SQS) ChangeMessageVisibilityBatch(req *ChangeMessageVisibilityBatchRequest) (resp *ChangeMessageVisibilityBatchResult, err error) { - resp = &ChangeMessageVisibilityBatchResult{} - err = c.client.Do("ChangeMessageVisibilityBatch", "POST", "/", req, resp) - return -} - -// CreateQueue creates a new queue, or returns the URL of an existing one. -// When you request CreateQueue , you provide a name for the queue. To -// successfully create a new queue, you must provide a name that is unique -// within the scope of your own queues. If you delete a queue, you must -// wait at least 60 seconds before creating a queue with the same name. You -// may pass one or more attributes in the request. If you do not provide a -// value for any attribute, the queue will have the default value for that -// attribute. Permitted attributes are the same that can be set using -// SetQueueAttributes Use GetQueueUrl to get a queue's GetQueueUrl requires -// only the QueueName parameter. If you provide the name of an existing -// queue, along with the exact names and values of all the queue's -// attributes, CreateQueue returns the queue URL for the existing queue. If -// the queue name, attribute names, or attribute values do not match an -// existing queue, CreateQueue returns an error. Some API actions take -// lists of parameters. These lists are specified using the param.n -// notation. Values of n are integers starting from 1. For example, a -// parameter list with two elements looks like this: -func (c *SQS) CreateQueue(req *CreateQueueRequest) (resp *CreateQueueResult, err error) { - resp = &CreateQueueResult{} - err = c.client.Do("CreateQueue", "POST", "/", req, resp) - return -} - -// DeleteMessage deletes the specified message from the specified queue. -// You specify the message by using the message's receipt handle and not -// the message you received when you sent the message. Even if the message -// is locked by another reader due to the visibility timeout setting, it is -// still deleted from the queue. If you leave a message in the queue for -// longer than the queue's configured retention period, Amazon SQS -// automatically deletes it. The receipt handle is associated with a -// specific instance of receiving the message. If you receive a message -// more than once, the receipt handle you get each time you receive the -// message is different. When you request DeleteMessage , if you don't -// provide the most recently received receipt handle for the message, the -// request will still succeed, but the message might not be deleted. It is -// possible you will receive a message even after you have deleted it. This -// might happen on rare occasions if one of the servers storing a copy of -// the message is unavailable when you request to delete the message. The -// copy remains on the server and might be returned to you again on a -// subsequent receive request. You should create your system to be -// idempotent so that receiving a particular message more than once is not -// a problem. -func (c *SQS) DeleteMessage(req *DeleteMessageRequest) (err error) { - // NRE - err = c.client.Do("DeleteMessage", "POST", "/", req, nil) - return -} - -// DeleteMessageBatch deletes up to ten messages from the specified queue. -// This is a batch version of DeleteMessage . The result of the delete -// action on each message is reported individually in the response. Because -// the batch request can result in a combination of successful and -// unsuccessful actions, you should check for batch errors even when the -// call returns an status code of 200. Some API actions take lists of -// parameters. These lists are specified using the param.n notation. Values -// of n are integers starting from 1. For example, a parameter list with -// two elements looks like this: -func (c *SQS) DeleteMessageBatch(req *DeleteMessageBatchRequest) (resp *DeleteMessageBatchResult, err error) { - resp = &DeleteMessageBatchResult{} - err = c.client.Do("DeleteMessageBatch", "POST", "/", req, resp) - return -} - -// DeleteQueue deletes the queue specified by the queue , regardless of -// whether the queue is empty. If the specified queue does not exist, -// Amazon SQS returns a successful response. Use DeleteQueue with care; -// once you delete your queue, any messages in the queue are no longer -// available. When you delete a queue, the deletion process takes up to 60 -// seconds. Requests you send involving that queue during the 60 seconds -// might succeed. For example, a SendMessage request might succeed, but -// after the 60 seconds, the queue and that message you sent no longer -// exist. Also, when you delete a queue, you must wait at least 60 seconds -// before creating a queue with the same name. We reserve the right to -// delete queues that have had no activity for more than 30 days. For more -// information, see How Amazon SQS Queues Work in the Amazon SQS Developer -// Guide . -func (c *SQS) DeleteQueue(req *DeleteQueueRequest) (err error) { - // NRE - err = c.client.Do("DeleteQueue", "POST", "/", req, nil) - return -} - -// GetQueueAttributes gets attributes for the specified queue. The -// following attributes are supported: All - returns all values. -// ApproximateNumberOfMessages - returns the approximate number of visible -// messages in a queue. For more information, see Resources Required to -// Process Messages in the Amazon SQS Developer Guide -// ApproximateNumberOfMessagesNotVisible - returns the approximate number -// of messages that are not timed-out and not deleted. For more -// information, see Resources Required to Process Messages in the Amazon -// SQS Developer Guide VisibilityTimeout - returns the visibility timeout -// for the queue. For more information about visibility timeout, see -// Visibility Timeout in the Amazon SQS Developer Guide CreatedTimestamp - -// returns the time when the queue was created (epoch time in seconds). -// LastModifiedTimestamp - returns the time when the queue was last changed -// (epoch time in seconds). Policy - returns the queue's policy. -// MaximumMessageSize - returns the limit of how many bytes a message can -// contain before Amazon SQS rejects it. MessageRetentionPeriod - returns -// the number of seconds Amazon SQS retains a message. QueueArn - returns -// the queue's Amazon resource name ApproximateNumberOfMessagesDelayed - -// returns the approximate number of messages that are pending to be added -// to the queue. DelaySeconds - returns the default delay on the queue in -// seconds. ReceiveMessageWaitTimeSeconds - returns the time for which a -// ReceiveMessage call will wait for a message to arrive. RedrivePolicy - -// returns the parameters for dead letter queue functionality of the source -// queue. For more information about RedrivePolicy and dead letter queues, -// see Using Amazon SQS Dead Letter Queues in the Amazon SQS Developer -// Guide Going forward, new attributes might be added. If you are writing -// code that calls this action, we recommend that you structure your code -// so that it can handle new attributes gracefully. Some API actions take -// lists of parameters. These lists are specified using the param.n -// notation. Values of n are integers starting from 1. For example, a -// parameter list with two elements looks like this: -func (c *SQS) GetQueueAttributes(req *GetQueueAttributesRequest) (resp *GetQueueAttributesResult, err error) { - resp = &GetQueueAttributesResult{} - err = c.client.Do("GetQueueAttributes", "POST", "/", req, resp) - return -} - -// GetQueueURL returns the URL of an existing queue. This action provides a -// simple way to retrieve the URL of an Amazon SQS queue. To access a queue -// that belongs to another AWS account, use the QueueOwnerAWSAccountId -// parameter to specify the account ID of the queue's owner. The queue's -// owner must grant you permission to access the queue. For more -// information about shared queue access, see AddPermission or go to Shared -// Queues in the Amazon SQS Developer Guide . -func (c *SQS) GetQueueURL(req *GetQueueURLRequest) (resp *GetQueueURLResult, err error) { - resp = &GetQueueURLResult{} - err = c.client.Do("GetQueueUrl", "POST", "/", req, resp) - return -} - -// ListDeadLetterSourceQueues returns a list of your queues that have the -// RedrivePolicy queue attribute configured with a dead letter queue. For -// more information about using dead letter queues, see Using Amazon SQS -// Dead Letter Queues -func (c *SQS) ListDeadLetterSourceQueues(req *ListDeadLetterSourceQueuesRequest) (resp *ListDeadLetterSourceQueuesResult, err error) { - resp = &ListDeadLetterSourceQueuesResult{} - err = c.client.Do("ListDeadLetterSourceQueues", "POST", "/", req, resp) - return -} - -// ListQueues returns a list of your queues. The maximum number of queues -// that can be returned is 1000. If you specify a value for the optional -// QueueNamePrefix parameter, only queues with a name beginning with the -// specified value are returned. -func (c *SQS) ListQueues(req *ListQueuesRequest) (resp *ListQueuesResult, err error) { - resp = &ListQueuesResult{} - err = c.client.Do("ListQueues", "POST", "/", req, resp) - return -} - -// PurgeQueue deletes the messages in a queue specified by the queue When -// you use the PurgeQueue the deleted messages in the queue cannot be -// retrieved. When you purge a queue, the message deletion process takes up -// to 60 seconds. All messages sent to the queue before calling PurgeQueue -// will be deleted; messages sent to the queue while it is being purged may -// be deleted. While the queue is being purged, messages sent to the queue -// before PurgeQueue was called may be received, but will be deleted within -// the next minute. -func (c *SQS) PurgeQueue(req *PurgeQueueRequest) (err error) { - // NRE - err = c.client.Do("PurgeQueue", "POST", "/", req, nil) - return -} - -// ReceiveMessage retrieves one or more messages, with a maximum limit of -// 10 messages, from the specified queue. Long poll support is enabled by -// using the WaitTimeSeconds parameter. For more information, see Amazon -// SQS Long Poll in the Amazon SQS Developer Guide . Short poll is the -// default behavior where a weighted random set of machines is sampled on a -// ReceiveMessage call. This means only the messages on the sampled -// machines are returned. If the number of messages in the queue is small -// (less than 1000), it is likely you will get fewer messages than you -// requested per ReceiveMessage call. If the number of messages in the -// queue is extremely small, you might not receive any messages in a -// particular ReceiveMessage response; in which case you should repeat the -// request. For each message returned, the response includes the following: -// MD5 digest of the message body. For information about MD5, go to -// http://www.faqs.org/rfcs/rfc1321.html . Message ID you received when you -// sent the message to the queue. Receipt handle. MD5 digest of the message -// attributes. The receipt handle is the identifier you must provide when -// deleting the message. For more information, see Queue and Message -// Identifiers in the Amazon SQS Developer Guide . You can provide the -// VisibilityTimeout parameter in your request, which will be applied to -// the messages that Amazon SQS returns in the response. If you do not -// include the parameter, the overall visibility timeout for the queue is -// used for the returned messages. For more information, see Visibility -// Timeout in the Amazon SQS Developer Guide . Going forward, new -// attributes might be added. If you are writing code that calls this -// action, we recommend that you structure your code so that it can handle -// new attributes gracefully. -func (c *SQS) ReceiveMessage(req *ReceiveMessageRequest) (resp *ReceiveMessageResult, err error) { - resp = &ReceiveMessageResult{} - err = c.client.Do("ReceiveMessage", "POST", "/", req, resp) - return -} - -// RemovePermission revokes any permissions in the queue policy that -// matches the specified Label parameter. Only the owner of the queue can -// remove permissions. -func (c *SQS) RemovePermission(req *RemovePermissionRequest) (err error) { - // NRE - err = c.client.Do("RemovePermission", "POST", "/", req, nil) - return -} - -// SendMessage delivers a message to the specified queue. With Amazon you -// now have the ability to send large payload messages that are up to 256KB -// (262,144 bytes) in size. To send large payloads, you must use an AWS SDK -// that supports SigV4 signing. To verify whether SigV4 is supported for an -// AWS check the SDK release notes. The following list shows the characters -// (in Unicode) allowed in your message, according to the W3C XML -// specification. For more information, go to -// http://www.w3.org/TR/REC-xml/#charsets If you send any characters not -// included in the list, your request will be rejected. #x9 | #xA | #xD | -// [#x20 to #xD7FF] | [#xE000 to #xFFFD] | [#x10000 to #x10FFFF] -func (c *SQS) SendMessage(req *SendMessageRequest) (resp *SendMessageResult, err error) { - resp = &SendMessageResult{} - err = c.client.Do("SendMessage", "POST", "/", req, resp) - return -} - -// SendMessageBatch delivers up to ten messages to the specified queue. -// This is a batch version of SendMessage . The result of the send action -// on each message is reported individually in the response. The maximum -// allowed individual message size is 256 KB (262,144 bytes). The maximum -// total payload size (i.e., the sum of all a batch's individual message -// lengths) is also 256 KB (262,144 bytes). If the DelaySeconds parameter -// is not specified for an entry, the default for the queue is used. The -// following list shows the characters (in Unicode) that are allowed in -// your message, according to the W3C XML specification. For more -// information, go to http://www.faqs.org/rfcs/rfc1321.html . If you send -// any characters that are not included in the list, your request will be -// rejected. #x9 | #xA | #xD | [#x20 to #xD7FF] | [#xE000 to #xFFFD] | -// [#x10000 to #x10FFFF] Because the batch request can result in a -// combination of successful and unsuccessful actions, you should check for -// batch errors even when the call returns an status code of 200. Some API -// actions take lists of parameters. These lists are specified using the -// param.n notation. Values of n are integers starting from 1. For example, -// a parameter list with two elements looks like this: -func (c *SQS) SendMessageBatch(req *SendMessageBatchRequest) (resp *SendMessageBatchResult, err error) { - resp = &SendMessageBatchResult{} - err = c.client.Do("SendMessageBatch", "POST", "/", req, resp) - return -} - -// SetQueueAttributes sets the value of one or more queue attributes. When -// you change a queue's attributes, the change can take up to 60 seconds -// for most of the attributes to propagate throughout the SQS system. -// Changes made to the MessageRetentionPeriod attribute can take up to 15 -// minutes. Going forward, new attributes might be added. If you are -// writing code that calls this action, we recommend that you structure -// your code so that it can handle new attributes gracefully. -func (c *SQS) SetQueueAttributes(req *SetQueueAttributesRequest) (err error) { - // NRE - err = c.client.Do("SetQueueAttributes", "POST", "/", req, nil) - return -} - -// AddPermissionRequest is undocumented. -type AddPermissionRequest struct { - AWSAccountIDs []string `query:"AWSAccountId" xml:"AWSAccountId"` - Actions []string `query:"ActionName" xml:"ActionName"` - Label aws.StringValue `query:"Label" xml:"Label"` - QueueURL aws.StringValue `query:"QueueUrl" xml:"QueueUrl"` -} - -type AttributeMap map[string]string - -// UnmarshalXML implements xml.UnmarshalXML interface for map -func (m *AttributeMap) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error { - if *m == nil { - (*m) = make(AttributeMap) - } - for { - var e struct { - Name string `xml:"Name"` - Value string `xml:"Value"` - } - err := d.DecodeElement(&e, &start) - if err != nil && err != io.EOF { - return err - } - if err == io.EOF { - break - } - (*m)[e.Name] = e.Value - } - return nil -} - -// BatchResultErrorEntry is undocumented. -type BatchResultErrorEntry struct { - Code aws.StringValue `query:"Code" xml:"Code"` - ID aws.StringValue `query:"Id" xml:"Id"` - Message aws.StringValue `query:"Message" xml:"Message"` - SenderFault aws.BooleanValue `query:"SenderFault" xml:"SenderFault"` -} - -// ChangeMessageVisibilityBatchRequest is undocumented. -type ChangeMessageVisibilityBatchRequest struct { - Entries []ChangeMessageVisibilityBatchRequestEntry `query:"ChangeMessageVisibilityBatchRequestEntry" xml:"ChangeMessageVisibilityBatchRequestEntry"` - QueueURL aws.StringValue `query:"QueueUrl" xml:"QueueUrl"` -} - -// ChangeMessageVisibilityBatchRequestEntry is undocumented. -type ChangeMessageVisibilityBatchRequestEntry struct { - ID aws.StringValue `query:"Id" xml:"Id"` - ReceiptHandle aws.StringValue `query:"ReceiptHandle" xml:"ReceiptHandle"` - VisibilityTimeout aws.IntegerValue `query:"VisibilityTimeout" xml:"VisibilityTimeout"` -} - -// ChangeMessageVisibilityBatchResult is undocumented. -type ChangeMessageVisibilityBatchResult struct { - Failed []BatchResultErrorEntry `query:"BatchResultErrorEntry" xml:"ChangeMessageVisibilityBatchResult>BatchResultErrorEntry"` - Successful []ChangeMessageVisibilityBatchResultEntry `query:"ChangeMessageVisibilityBatchResultEntry" xml:"ChangeMessageVisibilityBatchResult>ChangeMessageVisibilityBatchResultEntry"` -} - -// ChangeMessageVisibilityBatchResultEntry is undocumented. -type ChangeMessageVisibilityBatchResultEntry struct { - ID aws.StringValue `query:"Id" xml:"Id"` -} - -// ChangeMessageVisibilityRequest is undocumented. -type ChangeMessageVisibilityRequest struct { - QueueURL aws.StringValue `query:"QueueUrl" xml:"QueueUrl"` - ReceiptHandle aws.StringValue `query:"ReceiptHandle" xml:"ReceiptHandle"` - VisibilityTimeout aws.IntegerValue `query:"VisibilityTimeout" xml:"VisibilityTimeout"` -} - -// CreateQueueRequest is undocumented. -type CreateQueueRequest struct { - Attributes AttributeMap `query:"Attribute" xml:"Attribute"` - QueueName aws.StringValue `query:"QueueName" xml:"QueueName"` -} - -// CreateQueueResult is undocumented. -type CreateQueueResult struct { - QueueURL aws.StringValue `query:"QueueUrl" xml:"CreateQueueResult>QueueUrl"` -} - -// DeleteMessageBatchRequest is undocumented. -type DeleteMessageBatchRequest struct { - Entries []DeleteMessageBatchRequestEntry `query:"DeleteMessageBatchRequestEntry" xml:"DeleteMessageBatchRequestEntry"` - QueueURL aws.StringValue `query:"QueueUrl" xml:"QueueUrl"` -} - -// DeleteMessageBatchRequestEntry is undocumented. -type DeleteMessageBatchRequestEntry struct { - ID aws.StringValue `query:"Id" xml:"Id"` - ReceiptHandle aws.StringValue `query:"ReceiptHandle" xml:"ReceiptHandle"` -} - -// DeleteMessageBatchResult is undocumented. -type DeleteMessageBatchResult struct { - Failed []BatchResultErrorEntry `query:"BatchResultErrorEntry" xml:"DeleteMessageBatchResult>BatchResultErrorEntry"` - Successful []DeleteMessageBatchResultEntry `query:"DeleteMessageBatchResultEntry" xml:"DeleteMessageBatchResult>DeleteMessageBatchResultEntry"` -} - -// DeleteMessageBatchResultEntry is undocumented. -type DeleteMessageBatchResultEntry struct { - ID aws.StringValue `query:"Id" xml:"Id"` -} - -// DeleteMessageRequest is undocumented. -type DeleteMessageRequest struct { - QueueURL aws.StringValue `query:"QueueUrl" xml:"QueueUrl"` - ReceiptHandle aws.StringValue `query:"ReceiptHandle" xml:"ReceiptHandle"` -} - -// DeleteQueueRequest is undocumented. -type DeleteQueueRequest struct { - QueueURL aws.StringValue `query:"QueueUrl" xml:"QueueUrl"` -} - -// GetQueueAttributesRequest is undocumented. -type GetQueueAttributesRequest struct { - AttributeNames []string `query:"AttributeName" xml:"AttributeName"` - QueueURL aws.StringValue `query:"QueueUrl" xml:"QueueUrl"` -} - -// GetQueueAttributesResult is undocumented. -type GetQueueAttributesResult struct { - Attributes AttributeMap `query:"Attribute" xml:"GetQueueAttributesResult>Attribute"` -} - -// GetQueueURLRequest is undocumented. -type GetQueueURLRequest struct { - QueueName aws.StringValue `query:"QueueName" xml:"QueueName"` - QueueOwnerAWSAccountID aws.StringValue `query:"QueueOwnerAWSAccountId" xml:"QueueOwnerAWSAccountId"` -} - -// GetQueueURLResult is undocumented. -type GetQueueURLResult struct { - QueueURL aws.StringValue `query:"QueueUrl" xml:"GetQueueUrlResult>QueueUrl"` -} - -// ListDeadLetterSourceQueuesRequest is undocumented. -type ListDeadLetterSourceQueuesRequest struct { - QueueURL aws.StringValue `query:"QueueUrl" xml:"QueueUrl"` -} - -// ListDeadLetterSourceQueuesResult is undocumented. -type ListDeadLetterSourceQueuesResult struct { - QueueURLs []string `query:"QueueUrl" xml:"ListDeadLetterSourceQueuesResult>QueueUrl"` -} - -// ListQueuesRequest is undocumented. -type ListQueuesRequest struct { - QueueNamePrefix aws.StringValue `query:"QueueNamePrefix" xml:"QueueNamePrefix"` -} - -// ListQueuesResult is undocumented. -type ListQueuesResult struct { - QueueURLs []string `query:"QueueUrl" xml:"ListQueuesResult>QueueUrl"` -} - -// Message is undocumented. -type Message struct { - Attributes AttributeMap `query:"Attribute" xml:"Attribute"` - Body aws.StringValue `query:"Body" xml:"Body"` - MD5OfBody aws.StringValue `query:"MD5OfBody" xml:"MD5OfBody"` - MD5OfMessageAttributes aws.StringValue `query:"MD5OfMessageAttributes" xml:"MD5OfMessageAttributes"` - MessageAttributes MessageAttributeMap `query:"MessageAttribute" xml:"MessageAttribute"` - MessageID aws.StringValue `query:"MessageId" xml:"MessageId"` - ReceiptHandle aws.StringValue `query:"ReceiptHandle" xml:"ReceiptHandle"` -} - -type MessageAttributeMap map[string]MessageAttributeValue - -// UnmarshalXML implements xml.UnmarshalXML interface for map -func (m *MessageAttributeMap) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error { - if *m == nil { - (*m) = make(MessageAttributeMap) - } - for { - var e struct { - Name string `xml:"Name"` - Value MessageAttributeValue `xml:"Value"` - } - err := d.DecodeElement(&e, &start) - if err != nil && err != io.EOF { - return err - } - if err == io.EOF { - break - } - (*m)[e.Name] = e.Value - } - return nil -} - -// MessageAttributeValue is undocumented. -type MessageAttributeValue struct { - BinaryListValues [][]byte `query:"BinaryListValue.member" xml:"BinaryListValue>BinaryListValue"` - BinaryValue []byte `query:"BinaryValue" xml:"BinaryValue"` - DataType aws.StringValue `query:"DataType" xml:"DataType"` - StringListValues []string `query:"StringListValue.member" xml:"StringListValue>StringListValue"` - StringValue aws.StringValue `query:"StringValue" xml:"StringValue"` -} - -// PurgeQueueRequest is undocumented. -type PurgeQueueRequest struct { - QueueURL aws.StringValue `query:"QueueUrl" xml:"QueueUrl"` -} - -// Possible values for SQS. -const ( - QueueAttributeNameApproximateNumberOfMessages = "ApproximateNumberOfMessages" - QueueAttributeNameApproximateNumberOfMessagesDelayed = "ApproximateNumberOfMessagesDelayed" - QueueAttributeNameApproximateNumberOfMessagesNotVisible = "ApproximateNumberOfMessagesNotVisible" - QueueAttributeNameCreatedTimestamp = "CreatedTimestamp" - QueueAttributeNameDelaySeconds = "DelaySeconds" - QueueAttributeNameLastModifiedTimestamp = "LastModifiedTimestamp" - QueueAttributeNameMaximumMessageSize = "MaximumMessageSize" - QueueAttributeNameMessageRetentionPeriod = "MessageRetentionPeriod" - QueueAttributeNamePolicy = "Policy" - QueueAttributeNameQueueARN = "QueueArn" - QueueAttributeNameReceiveMessageWaitTimeSeconds = "ReceiveMessageWaitTimeSeconds" - QueueAttributeNameRedrivePolicy = "RedrivePolicy" - QueueAttributeNameVisibilityTimeout = "VisibilityTimeout" -) - -// ReceiveMessageRequest is undocumented. -type ReceiveMessageRequest struct { - AttributeNames []string `query:"AttributeName" xml:"AttributeName"` - MaxNumberOfMessages aws.IntegerValue `query:"MaxNumberOfMessages" xml:"MaxNumberOfMessages"` - MessageAttributeNames []string `query:"MessageAttributeName" xml:"MessageAttributeName"` - QueueURL aws.StringValue `query:"QueueUrl" xml:"QueueUrl"` - VisibilityTimeout aws.IntegerValue `query:"VisibilityTimeout" xml:"VisibilityTimeout"` - WaitTimeSeconds aws.IntegerValue `query:"WaitTimeSeconds" xml:"WaitTimeSeconds"` -} - -// ReceiveMessageResult is undocumented. -type ReceiveMessageResult struct { - Messages []Message `query:"Message" xml:"ReceiveMessageResult>Message"` -} - -// RemovePermissionRequest is undocumented. -type RemovePermissionRequest struct { - Label aws.StringValue `query:"Label" xml:"Label"` - QueueURL aws.StringValue `query:"QueueUrl" xml:"QueueUrl"` -} - -// SendMessageBatchRequest is undocumented. -type SendMessageBatchRequest struct { - Entries []SendMessageBatchRequestEntry `query:"SendMessageBatchRequestEntry" xml:"SendMessageBatchRequestEntry"` - QueueURL aws.StringValue `query:"QueueUrl" xml:"QueueUrl"` -} - -// SendMessageBatchRequestEntry is undocumented. -type SendMessageBatchRequestEntry struct { - DelaySeconds aws.IntegerValue `query:"DelaySeconds" xml:"DelaySeconds"` - ID aws.StringValue `query:"Id" xml:"Id"` - MessageAttributes MessageAttributeMap `query:"MessageAttribute" xml:"MessageAttribute"` - MessageBody aws.StringValue `query:"MessageBody" xml:"MessageBody"` -} - -// SendMessageBatchResult is undocumented. -type SendMessageBatchResult struct { - Failed []BatchResultErrorEntry `query:"BatchResultErrorEntry" xml:"SendMessageBatchResult>BatchResultErrorEntry"` - Successful []SendMessageBatchResultEntry `query:"SendMessageBatchResultEntry" xml:"SendMessageBatchResult>SendMessageBatchResultEntry"` -} - -// SendMessageBatchResultEntry is undocumented. -type SendMessageBatchResultEntry struct { - ID aws.StringValue `query:"Id" xml:"Id"` - MD5OfMessageAttributes aws.StringValue `query:"MD5OfMessageAttributes" xml:"MD5OfMessageAttributes"` - MD5OfMessageBody aws.StringValue `query:"MD5OfMessageBody" xml:"MD5OfMessageBody"` - MessageID aws.StringValue `query:"MessageId" xml:"MessageId"` -} - -// SendMessageRequest is undocumented. -type SendMessageRequest struct { - DelaySeconds aws.IntegerValue `query:"DelaySeconds" xml:"DelaySeconds"` - MessageAttributes MessageAttributeMap `query:"MessageAttribute" xml:"MessageAttribute"` - MessageBody aws.StringValue `query:"MessageBody" xml:"MessageBody"` - QueueURL aws.StringValue `query:"QueueUrl" xml:"QueueUrl"` -} - -// SendMessageResult is undocumented. -type SendMessageResult struct { - MD5OfMessageAttributes aws.StringValue `query:"MD5OfMessageAttributes" xml:"SendMessageResult>MD5OfMessageAttributes"` - MD5OfMessageBody aws.StringValue `query:"MD5OfMessageBody" xml:"SendMessageResult>MD5OfMessageBody"` - MessageID aws.StringValue `query:"MessageId" xml:"SendMessageResult>MessageId"` -} - -// SetQueueAttributesRequest is undocumented. -type SetQueueAttributesRequest struct { - Attributes AttributeMap `query:"Attribute" xml:"Attribute"` - QueueURL aws.StringValue `query:"QueueUrl" xml:"QueueUrl"` -} - -// avoid errors if the packages aren't referenced -var _ time.Time - -var _ xml.Decoder -var _ = io.EOF diff --git a/src/github.com/getlantern/aws-sdk-go/gen/storagegateway/storagegateway.go b/src/github.com/getlantern/aws-sdk-go/gen/storagegateway/storagegateway.go deleted file mode 100644 index dbd093aad5..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/gen/storagegateway/storagegateway.go +++ /dev/null @@ -1,1465 +0,0 @@ -// THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. - -// Package storagegateway provides a client for AWS Storage Gateway. -package storagegateway - -import ( - "net/http" - "time" - - "github.com/awslabs/aws-sdk-go/aws" - "github.com/awslabs/aws-sdk-go/gen/endpoints" -) - -// StorageGateway is a client for AWS Storage Gateway. -type StorageGateway struct { - client *aws.JSONClient -} - -// New returns a new StorageGateway client. -func New(creds aws.CredentialsProvider, region string, client *http.Client) *StorageGateway { - if client == nil { - client = http.DefaultClient - } - - endpoint, service, region := endpoints.Lookup("storagegateway", region) - - return &StorageGateway{ - client: &aws.JSONClient{ - Context: aws.Context{ - Credentials: creds, - Service: service, - Region: region, - }, Client: client, - Endpoint: endpoint, - JSONVersion: "1.1", - TargetPrefix: "StorageGateway_20130630", - }, - } -} - -// ActivateGateway this operation activates the gateway you previously -// deployed on your host. For more information, see Activate the AWS -// Storage Gateway . In the activation process, you specify information -// such as the region you want to use for storing snapshots, the time zone -// for scheduled snapshots the gateway snapshot schedule window, an -// activation key, and a name for your gateway. The activation process also -// associates your gateway with your account; for more information, see -// UpdateGatewayInformation You must turn on the gateway VM before you can -// activate your gateway. -func (c *StorageGateway) ActivateGateway(req *ActivateGatewayInput) (resp *ActivateGatewayOutput, err error) { - resp = &ActivateGatewayOutput{} - err = c.client.Do("ActivateGateway", "POST", "/", req, resp) - return -} - -// AddCache this operation configures one or more gateway local disks as -// cache for a cached-volume gateway. This operation is supported only for -// the gateway-cached volume architecture (see Storage Gateway Concepts In -// the request, you specify the gateway Amazon Resource Name to which you -// want to add cache, and one or more disk IDs that you want to configure -// as cache. -func (c *StorageGateway) AddCache(req *AddCacheInput) (resp *AddCacheOutput, err error) { - resp = &AddCacheOutput{} - err = c.client.Do("AddCache", "POST", "/", req, resp) - return -} - -// AddUploadBuffer this operation configures one or more gateway local -// disks as upload buffer for a specified gateway. This operation is -// supported for both the gateway-stored and gateway-cached volume -// architectures. In the request, you specify the gateway Amazon Resource -// Name to which you want to add upload buffer, and one or more disk IDs -// that you want to configure as upload buffer. -func (c *StorageGateway) AddUploadBuffer(req *AddUploadBufferInput) (resp *AddUploadBufferOutput, err error) { - resp = &AddUploadBufferOutput{} - err = c.client.Do("AddUploadBuffer", "POST", "/", req, resp) - return -} - -// AddWorkingStorage this operation configures one or more gateway local -// disks as working storage for a gateway. This operation is supported only -// for the gateway-stored volume architecture. This operation is deprecated -// method in cached-volumes API version (20120630). Use AddUploadBuffer -// instead. Working storage is also referred to as upload buffer. You can -// also use the AddUploadBuffer operation to add upload buffer to a -// stored-volume gateway. In the request, you specify the gateway Amazon -// Resource Name to which you want to add working storage, and one or more -// disk IDs that you want to configure as working storage. -func (c *StorageGateway) AddWorkingStorage(req *AddWorkingStorageInput) (resp *AddWorkingStorageOutput, err error) { - resp = &AddWorkingStorageOutput{} - err = c.client.Do("AddWorkingStorage", "POST", "/", req, resp) - return -} - -// CancelArchival cancels archiving of a virtual tape to the virtual tape -// shelf after the archiving process is initiated. -func (c *StorageGateway) CancelArchival(req *CancelArchivalInput) (resp *CancelArchivalOutput, err error) { - resp = &CancelArchivalOutput{} - err = c.client.Do("CancelArchival", "POST", "/", req, resp) - return -} - -// CancelRetrieval cancels retrieval of a virtual tape from the virtual -// tape shelf to a gateway after the retrieval process is initiated. The -// virtual tape is returned to the -func (c *StorageGateway) CancelRetrieval(req *CancelRetrievalInput) (resp *CancelRetrievalOutput, err error) { - resp = &CancelRetrievalOutput{} - err = c.client.Do("CancelRetrieval", "POST", "/", req, resp) - return -} - -// CreateCachediSCSIVolume this operation creates a cached volume on a -// specified cached gateway. This operation is supported only for the -// gateway-cached volume architecture. Cache storage must be allocated to -// the gateway before you can create a cached volume. Use the AddCache -// operation to add cache storage to a gateway. In the request, you must -// specify the gateway, size of the volume in bytes, the iSCSI target name, -// an IP address on which to expose the target, and a unique client token. -// In response, AWS Storage Gateway creates the volume and returns -// information about it such as the volume Amazon Resource Name its size, -// and the iSCSI target ARN that initiators can use to connect to the -// volume target. -func (c *StorageGateway) CreateCachediSCSIVolume(req *CreateCachediSCSIVolumeInput) (resp *CreateCachediSCSIVolumeOutput, err error) { - resp = &CreateCachediSCSIVolumeOutput{} - err = c.client.Do("CreateCachediSCSIVolume", "POST", "/", req, resp) - return -} - -// CreateSnapshot this operation initiates a snapshot of a volume. AWS -// Storage Gateway provides the ability to back up point-in-time snapshots -// of your data to Amazon Simple Storage (S3) for durable off-site -// recovery, as well as import the data to an Amazon Elastic Block Store -// volume in Amazon Elastic Compute Cloud (EC2). You can take snapshots of -// your gateway volume on a scheduled or ad-hoc basis. This API enables you -// to take ad-hoc snapshot. For more information, see Working With -// Snapshots in the AWS Storage Gateway Console In the CreateSnapshot -// request you identify the volume by providing its Amazon Resource Name -// You must also provide description for the snapshot. When AWS Storage -// Gateway takes the snapshot of specified volume, the snapshot and -// description appears in the AWS Storage Gateway Console. In response, AWS -// Storage Gateway returns you a snapshot ID. You can use this snapshot ID -// to check the snapshot progress or later use it when you want to create a -// volume from a snapshot. To list or delete a snapshot, you must use the -// Amazon EC2 For more information, -func (c *StorageGateway) CreateSnapshot(req *CreateSnapshotInput) (resp *CreateSnapshotOutput, err error) { - resp = &CreateSnapshotOutput{} - err = c.client.Do("CreateSnapshot", "POST", "/", req, resp) - return -} - -// CreateSnapshotFromVolumeRecoveryPoint this operation initiates a -// snapshot of a gateway from a volume recovery point. This operation is -// supported only for the gateway-cached volume architecture (see A volume -// recovery point is a point in time at which all data of the volume is -// consistent and from which you can create a snapshot. To get a list of -// volume recovery point for gateway-cached volumes, use -// ListVolumeRecoveryPoints In the CreateSnapshotFromVolumeRecoveryPoint -// request, you identify the volume by providing its Amazon Resource Name -// You must also provide a description for the snapshot. When AWS Storage -// Gateway takes a snapshot of the specified volume, the snapshot and its -// description appear in the AWS Storage Gateway console. In response, AWS -// Storage Gateway returns you a snapshot ID. You can use this snapshot ID -// to check the snapshot progress or later use it when you want to create a -// volume from a snapshot. To list or delete a snapshot, you must use the -// Amazon EC2 For more information, in Amazon Elastic Compute Cloud API -// Reference -func (c *StorageGateway) CreateSnapshotFromVolumeRecoveryPoint(req *CreateSnapshotFromVolumeRecoveryPointInput) (resp *CreateSnapshotFromVolumeRecoveryPointOutput, err error) { - resp = &CreateSnapshotFromVolumeRecoveryPointOutput{} - err = c.client.Do("CreateSnapshotFromVolumeRecoveryPoint", "POST", "/", req, resp) - return -} - -// CreateStorediSCSIVolume this operation creates a volume on a specified -// gateway. This operation is supported only for the gateway-stored volume -// architecture. The size of the volume to create is inferred from the disk -// size. You can choose to preserve existing data on the disk, create -// volume from an existing snapshot, or create an empty volume. If you -// choose to create an empty gateway volume, then any existing data on the -// disk is erased. In the request you must specify the gateway and the disk -// information on which you are creating the volume. In response, AWS -// Storage Gateway creates the volume and returns volume information such -// as the volume Amazon Resource Name its size, and the iSCSI target ARN -// that initiators can use to connect to the volume target. -func (c *StorageGateway) CreateStorediSCSIVolume(req *CreateStorediSCSIVolumeInput) (resp *CreateStorediSCSIVolumeOutput, err error) { - resp = &CreateStorediSCSIVolumeOutput{} - err = c.client.Do("CreateStorediSCSIVolume", "POST", "/", req, resp) - return -} - -// CreateTapes creates one or more virtual tapes. You write data to the -// virtual tapes and then archive the tapes. Cache storage must be -// allocated to the gateway before you can create virtual tapes. Use the -// AddCache operation to add cache storage to a gateway. -func (c *StorageGateway) CreateTapes(req *CreateTapesInput) (resp *CreateTapesOutput, err error) { - resp = &CreateTapesOutput{} - err = c.client.Do("CreateTapes", "POST", "/", req, resp) - return -} - -// DeleteBandwidthRateLimit this operation deletes the bandwidth rate -// limits of a gateway. You can delete either the upload and download -// bandwidth rate limit, or you can delete both. If you delete only one of -// the limits, the other limit remains unchanged. To specify which gateway -// to work with, use the Amazon Resource Name of the gateway in your -// request. -func (c *StorageGateway) DeleteBandwidthRateLimit(req *DeleteBandwidthRateLimitInput) (resp *DeleteBandwidthRateLimitOutput, err error) { - resp = &DeleteBandwidthRateLimitOutput{} - err = c.client.Do("DeleteBandwidthRateLimit", "POST", "/", req, resp) - return -} - -// DeleteChapCredentials this operation deletes Challenge-Handshake -// Authentication Protocol credentials for a specified iSCSI target and -// initiator pair. -func (c *StorageGateway) DeleteChapCredentials(req *DeleteChapCredentialsInput) (resp *DeleteChapCredentialsOutput, err error) { - resp = &DeleteChapCredentialsOutput{} - err = c.client.Do("DeleteChapCredentials", "POST", "/", req, resp) - return -} - -// DeleteGateway this operation deletes a gateway. To specify which gateway -// to delete, use the Amazon Resource Name of the gateway in your request. -// The operation deletes the gateway; however, it does not delete the -// gateway virtual machine from your host computer. After you delete a -// gateway, you cannot reactivate it. Completed snapshots of the gateway -// volumes are not deleted upon deleting the gateway, however, pending -// snapshots will not complete. After you delete a gateway, your next step -// is to remove it from your environment. You no longer pay software -// charges after the gateway is deleted; however, your existing Amazon EBS -// snapshots persist and you will continue to be billed for these -// snapshots. You can choose to remove all remaining Amazon EBS snapshots -// by canceling your Amazon EC2 subscription. If you prefer not to cancel -// your Amazon EC2 subscription, you can delete your snapshots using the -// Amazon EC2 console. For more information, see the AWS Storage Gateway -// Detail Page . -func (c *StorageGateway) DeleteGateway(req *DeleteGatewayInput) (resp *DeleteGatewayOutput, err error) { - resp = &DeleteGatewayOutput{} - err = c.client.Do("DeleteGateway", "POST", "/", req, resp) - return -} - -// DeleteSnapshotSchedule this operation deletes a snapshot of a volume. -// You can take snapshots of your gateway volumes on a scheduled or ad-hoc -// basis. This API enables you to delete a snapshot schedule for a volume. -// For more information, see Working with Snapshots . In the -// DeleteSnapshotSchedule request, you identify the volume by providing its -// Amazon Resource Name To list or delete a snapshot, you must use the -// Amazon EC2 in Amazon Elastic Compute Cloud API Reference -func (c *StorageGateway) DeleteSnapshotSchedule(req *DeleteSnapshotScheduleInput) (resp *DeleteSnapshotScheduleOutput, err error) { - resp = &DeleteSnapshotScheduleOutput{} - err = c.client.Do("DeleteSnapshotSchedule", "POST", "/", req, resp) - return -} - -// DeleteTape is undocumented. -func (c *StorageGateway) DeleteTape(req *DeleteTapeInput) (resp *DeleteTapeOutput, err error) { - resp = &DeleteTapeOutput{} - err = c.client.Do("DeleteTape", "POST", "/", req, resp) - return -} - -// DeleteTapeArchive deletes the specified virtual tape from the virtual -// tape shelf -func (c *StorageGateway) DeleteTapeArchive(req *DeleteTapeArchiveInput) (resp *DeleteTapeArchiveOutput, err error) { - resp = &DeleteTapeArchiveOutput{} - err = c.client.Do("DeleteTapeArchive", "POST", "/", req, resp) - return -} - -// DeleteVolume this operation delete the specified gateway volume that you -// previously created using the CreateStorediSCSIVolume For gateway-stored -// volumes, the local disk that was configured as the storage volume is not -// deleted. You can reuse the local disk to create another storage volume. -// Before you delete a gateway volume, make sure there are no iSCSI -// connections to the volume you are deleting. You should also make sure -// there is no snapshot in progress. You can use the Amazon Elastic Compute -// Cloud (Amazon EC2) API to query snapshots on the volume you are deleting -// and check the snapshot status. For more information, go to -// DescribeSnapshots in the Amazon Elastic Compute Cloud API Reference In -// the request, you must provide the Amazon Resource Name of the storage -// volume you want to delete. -func (c *StorageGateway) DeleteVolume(req *DeleteVolumeInput) (resp *DeleteVolumeOutput, err error) { - resp = &DeleteVolumeOutput{} - err = c.client.Do("DeleteVolume", "POST", "/", req, resp) - return -} - -// DescribeBandwidthRateLimit this operation returns the bandwidth rate -// limits of a gateway. By default, these limits are not set, which means -// no bandwidth rate limiting is in effect. This operation only returns a -// value for a bandwidth rate limit only if the limit is set. If no limits -// are set for the gateway, then this operation returns only the gateway -// ARN in the response body. To specify which gateway to describe, use the -// Amazon Resource Name of the gateway in your request. -func (c *StorageGateway) DescribeBandwidthRateLimit(req *DescribeBandwidthRateLimitInput) (resp *DescribeBandwidthRateLimitOutput, err error) { - resp = &DescribeBandwidthRateLimitOutput{} - err = c.client.Do("DescribeBandwidthRateLimit", "POST", "/", req, resp) - return -} - -// DescribeCache this operation returns information about the cache of a -// gateway. This operation is supported only for the gateway-cached volume -// architecture. The response includes disk IDs that are configured as -// cache, and it includes the amount of cache allocated and used. -func (c *StorageGateway) DescribeCache(req *DescribeCacheInput) (resp *DescribeCacheOutput, err error) { - resp = &DescribeCacheOutput{} - err = c.client.Do("DescribeCache", "POST", "/", req, resp) - return -} - -// DescribeCachediSCSIVolumes this operation returns a description of the -// gateway volumes specified in the request. This operation is supported -// only for the gateway-cached volume architecture. The list of gateway -// volumes in the request must be from one gateway. In the response Amazon -// Storage Gateway returns volume information sorted by volume Amazon -// Resource Name -func (c *StorageGateway) DescribeCachediSCSIVolumes(req *DescribeCachediSCSIVolumesInput) (resp *DescribeCachediSCSIVolumesOutput, err error) { - resp = &DescribeCachediSCSIVolumesOutput{} - err = c.client.Do("DescribeCachediSCSIVolumes", "POST", "/", req, resp) - return -} - -// DescribeChapCredentials this operation returns an array of -// Challenge-Handshake Authentication Protocol credentials information for -// a specified iSCSI target, one for each target-initiator pair. -func (c *StorageGateway) DescribeChapCredentials(req *DescribeChapCredentialsInput) (resp *DescribeChapCredentialsOutput, err error) { - resp = &DescribeChapCredentialsOutput{} - err = c.client.Do("DescribeChapCredentials", "POST", "/", req, resp) - return -} - -// DescribeGatewayInformation this operation returns metadata about a -// gateway such as its name, network interfaces, configured time zone, and -// the state (whether the gateway is running or not). To specify which -// gateway to describe, use the Amazon Resource Name of the gateway in your -// request. -func (c *StorageGateway) DescribeGatewayInformation(req *DescribeGatewayInformationInput) (resp *DescribeGatewayInformationOutput, err error) { - resp = &DescribeGatewayInformationOutput{} - err = c.client.Do("DescribeGatewayInformation", "POST", "/", req, resp) - return -} - -// DescribeMaintenanceStartTime this operation returns your gateway's -// weekly maintenance start time including the day and time of the week. -// Note that values are in terms of the gateway's time zone. -func (c *StorageGateway) DescribeMaintenanceStartTime(req *DescribeMaintenanceStartTimeInput) (resp *DescribeMaintenanceStartTimeOutput, err error) { - resp = &DescribeMaintenanceStartTimeOutput{} - err = c.client.Do("DescribeMaintenanceStartTime", "POST", "/", req, resp) - return -} - -// DescribeSnapshotSchedule this operation describes the snapshot schedule -// for the specified gateway volume. The snapshot schedule information -// includes intervals at which snapshots are automatically initiated on the -// volume. -func (c *StorageGateway) DescribeSnapshotSchedule(req *DescribeSnapshotScheduleInput) (resp *DescribeSnapshotScheduleOutput, err error) { - resp = &DescribeSnapshotScheduleOutput{} - err = c.client.Do("DescribeSnapshotSchedule", "POST", "/", req, resp) - return -} - -// DescribeStorediSCSIVolumes this operation returns description of the -// gateway volumes specified in the request. The list of gateway volumes in -// the request must be from one gateway. In the response Amazon Storage -// Gateway returns volume information sorted by volume ARNs. -func (c *StorageGateway) DescribeStorediSCSIVolumes(req *DescribeStorediSCSIVolumesInput) (resp *DescribeStorediSCSIVolumesOutput, err error) { - resp = &DescribeStorediSCSIVolumesOutput{} - err = c.client.Do("DescribeStorediSCSIVolumes", "POST", "/", req, resp) - return -} - -// DescribeTapeArchives returns a description of specified virtual tapes in -// the virtual tape shelf If a specific TapeARN is not specified, AWS -// Storage Gateway returns a description of all virtual tapes found in the -// VTS associated with your account. -func (c *StorageGateway) DescribeTapeArchives(req *DescribeTapeArchivesInput) (resp *DescribeTapeArchivesOutput, err error) { - resp = &DescribeTapeArchivesOutput{} - err = c.client.Do("DescribeTapeArchives", "POST", "/", req, resp) - return -} - -// DescribeTapeRecoveryPoints returns a list of virtual tape recovery -// points that are available for the specified gateway-VTL. A recovery -// point is a point in time view of a virtual tape at which all the data on -// the virtual tape is consistent. If your gateway crashes, virtual tapes -// that have recovery points can be recovered to a new gateway. -func (c *StorageGateway) DescribeTapeRecoveryPoints(req *DescribeTapeRecoveryPointsInput) (resp *DescribeTapeRecoveryPointsOutput, err error) { - resp = &DescribeTapeRecoveryPointsOutput{} - err = c.client.Do("DescribeTapeRecoveryPoints", "POST", "/", req, resp) - return -} - -// DescribeTapes returns a description of the specified Amazon Resource -// Name of virtual tapes. If a TapeARN is not specified, returns a -// description of all virtual tapes associated with the specified gateway. -func (c *StorageGateway) DescribeTapes(req *DescribeTapesInput) (resp *DescribeTapesOutput, err error) { - resp = &DescribeTapesOutput{} - err = c.client.Do("DescribeTapes", "POST", "/", req, resp) - return -} - -// DescribeUploadBuffer this operation returns information about the upload -// buffer of a gateway. This operation is supported for both the -// gateway-stored and gateway-cached volume architectures. The response -// includes disk IDs that are configured as upload buffer space, and it -// includes the amount of upload buffer space allocated and used. -func (c *StorageGateway) DescribeUploadBuffer(req *DescribeUploadBufferInput) (resp *DescribeUploadBufferOutput, err error) { - resp = &DescribeUploadBufferOutput{} - err = c.client.Do("DescribeUploadBuffer", "POST", "/", req, resp) - return -} - -// DescribeVTLDevices returns a description of virtual tape library devices -// for the specified gateway. In the response, AWS Storage Gateway returns -// VTL device information. The list of VTL devices must be from one -// gateway. -func (c *StorageGateway) DescribeVTLDevices(req *DescribeVTLDevicesInput) (resp *DescribeVTLDevicesOutput, err error) { - resp = &DescribeVTLDevicesOutput{} - err = c.client.Do("DescribeVTLDevices", "POST", "/", req, resp) - return -} - -// DescribeWorkingStorage this operation returns information about the -// working storage of a gateway. This operation is supported only for the -// gateway-stored volume architecture. This operation is deprecated in -// cached-volumes API version (20120630). Use DescribeUploadBuffer instead. -// Working storage is also referred to as upload buffer. You can also use -// the DescribeUploadBuffer operation to add upload buffer to a -// stored-volume gateway. The response includes disk IDs that are -// configured as working storage, and it includes the amount of working -// storage allocated and used. -func (c *StorageGateway) DescribeWorkingStorage(req *DescribeWorkingStorageInput) (resp *DescribeWorkingStorageOutput, err error) { - resp = &DescribeWorkingStorageOutput{} - err = c.client.Do("DescribeWorkingStorage", "POST", "/", req, resp) - return -} - -// DisableGateway disables a gateway when the gateway is no longer -// functioning. For example, if your gateway VM is damaged, you can disable -// the gateway so you can recover virtual tapes. Use this operation for a -// gateway-VTL that is not reachable or not functioning. Once a gateway is -// disabled it cannot be enabled. -func (c *StorageGateway) DisableGateway(req *DisableGatewayInput) (resp *DisableGatewayOutput, err error) { - resp = &DisableGatewayOutput{} - err = c.client.Do("DisableGateway", "POST", "/", req, resp) - return -} - -// ListGateways this operation lists gateways owned by an AWS account in a -// region specified in the request. The returned list is ordered by gateway -// Amazon Resource Name By default, the operation returns a maximum of 100 -// gateways. This operation supports pagination that allows you to -// optionally reduce the number of gateways returned in a response. If you -// have more gateways than are returned in a response-that is, the response -// returns only a truncated list of your gateways-the response contains a -// marker that you can specify in your next request to fetch the next page -// of gateways. -func (c *StorageGateway) ListGateways(req *ListGatewaysInput) (resp *ListGatewaysOutput, err error) { - resp = &ListGatewaysOutput{} - err = c.client.Do("ListGateways", "POST", "/", req, resp) - return -} - -// ListLocalDisks this operation returns a list of the gateway's local -// disks. To specify which gateway to describe, you use the Amazon Resource -// Name of the gateway in the body of the request. The request returns a -// list of all disks, specifying which are configured as working storage, -// cache storage, or stored volume or not configured at all. The response -// includes a DiskStatus field. This field can have a value of present (the -// disk is availble to use), missing (the disk is no longer connected to -// the gateway), or mismatch (the disk node is occupied by a disk that has -// incorrect metadata or the disk content is corrupted). -func (c *StorageGateway) ListLocalDisks(req *ListLocalDisksInput) (resp *ListLocalDisksOutput, err error) { - resp = &ListLocalDisksOutput{} - err = c.client.Do("ListLocalDisks", "POST", "/", req, resp) - return -} - -// ListVolumeRecoveryPoints this operation lists the recovery points for a -// specified gateway. This operation is supported only for the -// gateway-cached volume architecture. Each gateway-cached volume has one -// recovery point. A volume recovery point is a point in time at which all -// data of the volume is consistent and from which you can create a -// snapshot. To create a snapshot from a volume recovery point use the -// CreateSnapshotFromVolumeRecoveryPoint operation. -func (c *StorageGateway) ListVolumeRecoveryPoints(req *ListVolumeRecoveryPointsInput) (resp *ListVolumeRecoveryPointsOutput, err error) { - resp = &ListVolumeRecoveryPointsOutput{} - err = c.client.Do("ListVolumeRecoveryPoints", "POST", "/", req, resp) - return -} - -// ListVolumes this operation lists the iSCSI stored volumes of a gateway. -// Results are sorted by volume The response includes only the volume ARNs. -// If you want additional volume information, use the -// DescribeStorediSCSIVolumes The operation supports pagination. By -// default, the operation returns a maximum of up to 100 volumes. You can -// optionally specify the Limit field in the body to limit the number of -// volumes in the response. If the number of volumes returned in the -// response is truncated, the response includes a Marker field. You can use -// this Marker value in your subsequent request to retrieve the next set of -// volumes. -func (c *StorageGateway) ListVolumes(req *ListVolumesInput) (resp *ListVolumesOutput, err error) { - resp = &ListVolumesOutput{} - err = c.client.Do("ListVolumes", "POST", "/", req, resp) - return -} - -// ResetCache this operation resets all cache disks and makes the disks -// available for reconfiguration as cache storage. When a cache is reset, -// the gateway loses its cache storage. At this point you can reconfigure -// the disks as cache disks. -func (c *StorageGateway) ResetCache(req *ResetCacheInput) (resp *ResetCacheOutput, err error) { - resp = &ResetCacheOutput{} - err = c.client.Do("ResetCache", "POST", "/", req, resp) - return -} - -// RetrieveTapeArchive retrieves an archived virtual tape from the virtual -// tape shelf to a gateway-VTL. Virtual tapes archived in the VTS are not -// associated with any gateway. However after a tape is retrieved, it is -// associated with a gateway, even though it is also listed in the Once a -// tape is successfully retrieved to a gateway, it cannot be retrieved -// again to another gateway. You must archive the tape again before you can -// retrieve it to another gateway. -func (c *StorageGateway) RetrieveTapeArchive(req *RetrieveTapeArchiveInput) (resp *RetrieveTapeArchiveOutput, err error) { - resp = &RetrieveTapeArchiveOutput{} - err = c.client.Do("RetrieveTapeArchive", "POST", "/", req, resp) - return -} - -// RetrieveTapeRecoveryPoint retrieves the recovery point for the specified -// virtual tape. A recovery point is a point in time view of a virtual tape -// at which all the data on the tape is consistent. If your gateway -// crashes, virtual tapes that have recovery points can be recovered to a -// new gateway. The virtual tape can be retrieved to only one gateway. The -// retrieved tape is read-only. The virtual tape can be retrieved to only a -// gateway-VTL. There is no charge for retrieving recovery points. -func (c *StorageGateway) RetrieveTapeRecoveryPoint(req *RetrieveTapeRecoveryPointInput) (resp *RetrieveTapeRecoveryPointOutput, err error) { - resp = &RetrieveTapeRecoveryPointOutput{} - err = c.client.Do("RetrieveTapeRecoveryPoint", "POST", "/", req, resp) - return -} - -// ShutdownGateway this operation shuts down a gateway. To specify which -// gateway to shut down, use the Amazon Resource Name of the gateway in the -// body of your request. The operation shuts down the gateway service -// component running in the storage gateway's virtual machine and not the -// If you want to shut down the VM, it is recommended that you first shut -// down the gateway component in the VM to avoid unpredictable conditions. -// After the gateway is shutdown, you cannot call any other API except -// StartGateway , DescribeGatewayInformation , and ListGateways . For more -// information, see ActivateGateway . Your applications cannot read from or -// write to the gateway's storage volumes, and there are no snapshots -// taken. When you make a shutdown request, you will get a 200 success -// response immediately. However, it might take some time for the gateway -// to shut down. You can call the DescribeGatewayInformation API to check -// the status. For more information, see ActivateGateway If do not intend -// to use the gateway again, you must delete the gateway (using -// DeleteGateway ) to no longer pay software charges associated with the -// gateway. -func (c *StorageGateway) ShutdownGateway(req *ShutdownGatewayInput) (resp *ShutdownGatewayOutput, err error) { - resp = &ShutdownGatewayOutput{} - err = c.client.Do("ShutdownGateway", "POST", "/", req, resp) - return -} - -// StartGateway this operation starts a gateway that you previously shut -// down (see ShutdownGateway ). After the gateway starts, you can then make -// other API calls, your applications can read from or write to the -// gateway's storage volumes and you will be able to take snapshot backups. -// When you make a request, you will get a 200 OK success response -// immediately. However, it might take some time for the gateway to be -// ready. You should call DescribeGatewayInformation and check the status -// before making any additional API calls. For more information, see -// ActivateGateway To specify which gateway to start, use the Amazon -// Resource Name of the gateway in your request. -func (c *StorageGateway) StartGateway(req *StartGatewayInput) (resp *StartGatewayOutput, err error) { - resp = &StartGatewayOutput{} - err = c.client.Do("StartGateway", "POST", "/", req, resp) - return -} - -// UpdateBandwidthRateLimit this operation updates the bandwidth rate -// limits of a gateway. You can update both the upload and download -// bandwidth rate limit or specify only one of the two. If you don't set a -// bandwidth rate limit, the existing rate limit remains. By default, a -// gateway's bandwidth rate limits are not set. If you don't set any limit, -// the gateway does not have any limitations on its bandwidth usage and -// could potentially use the maximum available bandwidth. To specify which -// gateway to update, use the Amazon Resource Name of the gateway in your -// request. -func (c *StorageGateway) UpdateBandwidthRateLimit(req *UpdateBandwidthRateLimitInput) (resp *UpdateBandwidthRateLimitOutput, err error) { - resp = &UpdateBandwidthRateLimitOutput{} - err = c.client.Do("UpdateBandwidthRateLimit", "POST", "/", req, resp) - return -} - -// UpdateChapCredentials this operation updates the Challenge-Handshake -// Authentication Protocol credentials for a specified iSCSI target. By -// default, a gateway does not have enabled; however, for added security, -// you might use it. When you update credentials, all existing connections -// on the target are closed and initiators must reconnect with the new -// credentials. -func (c *StorageGateway) UpdateChapCredentials(req *UpdateChapCredentialsInput) (resp *UpdateChapCredentialsOutput, err error) { - resp = &UpdateChapCredentialsOutput{} - err = c.client.Do("UpdateChapCredentials", "POST", "/", req, resp) - return -} - -// UpdateGatewayInformation this operation updates a gateway's metadata, -// which includes the gateway's name and time zone. To specify which -// gateway to update, use the Amazon Resource Name of the gateway in your -// request. -func (c *StorageGateway) UpdateGatewayInformation(req *UpdateGatewayInformationInput) (resp *UpdateGatewayInformationOutput, err error) { - resp = &UpdateGatewayInformationOutput{} - err = c.client.Do("UpdateGatewayInformation", "POST", "/", req, resp) - return -} - -// UpdateGatewaySoftwareNow this operation updates the gateway virtual -// machine software. The request immediately triggers the software update. -// When you make this request, you get a 200 success response immediately. -// However, it might take some time for the update to complete. You can -// call DescribeGatewayInformation to verify the gateway is in the state. A -// software update forces a system restart of your gateway. You can -// minimize the chance of any disruption to your applications by increasing -// your iSCSI Initiators' timeouts. For more information about increasing -// iSCSI Initiator timeouts for Windows and Linux, see Customizing Your -// Windows iSCSI Settings and Customizing Your Linux iSCSI Settings , -// respectively. -func (c *StorageGateway) UpdateGatewaySoftwareNow(req *UpdateGatewaySoftwareNowInput) (resp *UpdateGatewaySoftwareNowOutput, err error) { - resp = &UpdateGatewaySoftwareNowOutput{} - err = c.client.Do("UpdateGatewaySoftwareNow", "POST", "/", req, resp) - return -} - -// UpdateMaintenanceStartTime this operation updates a gateway's weekly -// maintenance start time information, including day and time of the week. -// The maintenance time is the time in your gateway's time zone. -func (c *StorageGateway) UpdateMaintenanceStartTime(req *UpdateMaintenanceStartTimeInput) (resp *UpdateMaintenanceStartTimeOutput, err error) { - resp = &UpdateMaintenanceStartTimeOutput{} - err = c.client.Do("UpdateMaintenanceStartTime", "POST", "/", req, resp) - return -} - -// UpdateSnapshotSchedule this operation updates a snapshot schedule -// configured for a gateway volume. The default snapshot schedule for -// volume is once every 24 hours, starting at the creation time of the -// volume. You can use this API to change the snapshot schedule configured -// for the volume. In the request you must identify the gateway volume -// whose snapshot schedule you want to update, and the schedule -// information, including when you want the snapshot to begin on a day and -// the frequency (in hours) of snapshots. -func (c *StorageGateway) UpdateSnapshotSchedule(req *UpdateSnapshotScheduleInput) (resp *UpdateSnapshotScheduleOutput, err error) { - resp = &UpdateSnapshotScheduleOutput{} - err = c.client.Do("UpdateSnapshotSchedule", "POST", "/", req, resp) - return -} - -// UpdateVTLDeviceType this operation updates the type of medium changer in -// a gateway-VTL. When you activate a gateway-VTL, you select a medium -// changer type for the gateway-VTL. This operation enables you to select a -// different type of medium changer after a gateway-VTL is activated. -func (c *StorageGateway) UpdateVTLDeviceType(req *UpdateVTLDeviceTypeInput) (resp *UpdateVTLDeviceTypeOutput, err error) { - resp = &UpdateVTLDeviceTypeOutput{} - err = c.client.Do("UpdateVTLDeviceType", "POST", "/", req, resp) - return -} - -// ActivateGatewayInput is undocumented. -type ActivateGatewayInput struct { - ActivationKey aws.StringValue `json:"ActivationKey"` - GatewayName aws.StringValue `json:"GatewayName"` - GatewayRegion aws.StringValue `json:"GatewayRegion"` - GatewayTimezone aws.StringValue `json:"GatewayTimezone"` - GatewayType aws.StringValue `json:"GatewayType,omitempty"` - MediumChangerType aws.StringValue `json:"MediumChangerType,omitempty"` - TapeDriveType aws.StringValue `json:"TapeDriveType,omitempty"` -} - -// ActivateGatewayOutput is undocumented. -type ActivateGatewayOutput struct { - GatewayARN aws.StringValue `json:"GatewayARN,omitempty"` -} - -// AddCacheInput is undocumented. -type AddCacheInput struct { - DiskIDs []string `json:"DiskIds"` - GatewayARN aws.StringValue `json:"GatewayARN"` -} - -// AddCacheOutput is undocumented. -type AddCacheOutput struct { - GatewayARN aws.StringValue `json:"GatewayARN,omitempty"` -} - -// AddUploadBufferInput is undocumented. -type AddUploadBufferInput struct { - DiskIDs []string `json:"DiskIds"` - GatewayARN aws.StringValue `json:"GatewayARN"` -} - -// AddUploadBufferOutput is undocumented. -type AddUploadBufferOutput struct { - GatewayARN aws.StringValue `json:"GatewayARN,omitempty"` -} - -// AddWorkingStorageInput is undocumented. -type AddWorkingStorageInput struct { - DiskIDs []string `json:"DiskIds"` - GatewayARN aws.StringValue `json:"GatewayARN"` -} - -// AddWorkingStorageOutput is undocumented. -type AddWorkingStorageOutput struct { - GatewayARN aws.StringValue `json:"GatewayARN,omitempty"` -} - -// CachediSCSIVolume is undocumented. -type CachediSCSIVolume struct { - SourceSnapshotID aws.StringValue `json:"SourceSnapshotId,omitempty"` - VolumeARN aws.StringValue `json:"VolumeARN,omitempty"` - VolumeID aws.StringValue `json:"VolumeId,omitempty"` - VolumeProgress aws.DoubleValue `json:"VolumeProgress,omitempty"` - VolumeSizeInBytes aws.LongValue `json:"VolumeSizeInBytes,omitempty"` - VolumeStatus aws.StringValue `json:"VolumeStatus,omitempty"` - VolumeType aws.StringValue `json:"VolumeType,omitempty"` - VolumeiSCSIAttributes *VolumeiSCSIAttributes `json:"VolumeiSCSIAttributes,omitempty"` -} - -// CancelArchivalInput is undocumented. -type CancelArchivalInput struct { - GatewayARN aws.StringValue `json:"GatewayARN"` - TapeARN aws.StringValue `json:"TapeARN"` -} - -// CancelArchivalOutput is undocumented. -type CancelArchivalOutput struct { - TapeARN aws.StringValue `json:"TapeARN,omitempty"` -} - -// CancelRetrievalInput is undocumented. -type CancelRetrievalInput struct { - GatewayARN aws.StringValue `json:"GatewayARN"` - TapeARN aws.StringValue `json:"TapeARN"` -} - -// CancelRetrievalOutput is undocumented. -type CancelRetrievalOutput struct { - TapeARN aws.StringValue `json:"TapeARN,omitempty"` -} - -// ChapInfo is undocumented. -type ChapInfo struct { - InitiatorName aws.StringValue `json:"InitiatorName,omitempty"` - SecretToAuthenticateInitiator aws.StringValue `json:"SecretToAuthenticateInitiator,omitempty"` - SecretToAuthenticateTarget aws.StringValue `json:"SecretToAuthenticateTarget,omitempty"` - TargetARN aws.StringValue `json:"TargetARN,omitempty"` -} - -// CreateCachediSCSIVolumeInput is undocumented. -type CreateCachediSCSIVolumeInput struct { - ClientToken aws.StringValue `json:"ClientToken"` - GatewayARN aws.StringValue `json:"GatewayARN"` - NetworkInterfaceID aws.StringValue `json:"NetworkInterfaceId"` - SnapshotID aws.StringValue `json:"SnapshotId,omitempty"` - TargetName aws.StringValue `json:"TargetName"` - VolumeSizeInBytes aws.LongValue `json:"VolumeSizeInBytes"` -} - -// CreateCachediSCSIVolumeOutput is undocumented. -type CreateCachediSCSIVolumeOutput struct { - TargetARN aws.StringValue `json:"TargetARN,omitempty"` - VolumeARN aws.StringValue `json:"VolumeARN,omitempty"` -} - -// CreateSnapshotFromVolumeRecoveryPointInput is undocumented. -type CreateSnapshotFromVolumeRecoveryPointInput struct { - SnapshotDescription aws.StringValue `json:"SnapshotDescription"` - VolumeARN aws.StringValue `json:"VolumeARN"` -} - -// CreateSnapshotFromVolumeRecoveryPointOutput is undocumented. -type CreateSnapshotFromVolumeRecoveryPointOutput struct { - SnapshotID aws.StringValue `json:"SnapshotId,omitempty"` - VolumeARN aws.StringValue `json:"VolumeARN,omitempty"` - VolumeRecoveryPointTime aws.StringValue `json:"VolumeRecoveryPointTime,omitempty"` -} - -// CreateSnapshotInput is undocumented. -type CreateSnapshotInput struct { - SnapshotDescription aws.StringValue `json:"SnapshotDescription"` - VolumeARN aws.StringValue `json:"VolumeARN"` -} - -// CreateSnapshotOutput is undocumented. -type CreateSnapshotOutput struct { - SnapshotID aws.StringValue `json:"SnapshotId,omitempty"` - VolumeARN aws.StringValue `json:"VolumeARN,omitempty"` -} - -// CreateStorediSCSIVolumeInput is undocumented. -type CreateStorediSCSIVolumeInput struct { - DiskID aws.StringValue `json:"DiskId"` - GatewayARN aws.StringValue `json:"GatewayARN"` - NetworkInterfaceID aws.StringValue `json:"NetworkInterfaceId"` - PreserveExistingData aws.BooleanValue `json:"PreserveExistingData"` - SnapshotID aws.StringValue `json:"SnapshotId,omitempty"` - TargetName aws.StringValue `json:"TargetName"` -} - -// CreateStorediSCSIVolumeOutput is undocumented. -type CreateStorediSCSIVolumeOutput struct { - TargetARN aws.StringValue `json:"TargetARN,omitempty"` - VolumeARN aws.StringValue `json:"VolumeARN,omitempty"` - VolumeSizeInBytes aws.LongValue `json:"VolumeSizeInBytes,omitempty"` -} - -// CreateTapesInput is undocumented. -type CreateTapesInput struct { - ClientToken aws.StringValue `json:"ClientToken"` - GatewayARN aws.StringValue `json:"GatewayARN"` - NumTapesToCreate aws.IntegerValue `json:"NumTapesToCreate"` - TapeBarcodePrefix aws.StringValue `json:"TapeBarcodePrefix"` - TapeSizeInBytes aws.LongValue `json:"TapeSizeInBytes"` -} - -// CreateTapesOutput is undocumented. -type CreateTapesOutput struct { - TapeARNs []string `json:"TapeARNs,omitempty"` -} - -// DeleteBandwidthRateLimitInput is undocumented. -type DeleteBandwidthRateLimitInput struct { - BandwidthType aws.StringValue `json:"BandwidthType"` - GatewayARN aws.StringValue `json:"GatewayARN"` -} - -// DeleteBandwidthRateLimitOutput is undocumented. -type DeleteBandwidthRateLimitOutput struct { - GatewayARN aws.StringValue `json:"GatewayARN,omitempty"` -} - -// DeleteChapCredentialsInput is undocumented. -type DeleteChapCredentialsInput struct { - InitiatorName aws.StringValue `json:"InitiatorName"` - TargetARN aws.StringValue `json:"TargetARN"` -} - -// DeleteChapCredentialsOutput is undocumented. -type DeleteChapCredentialsOutput struct { - InitiatorName aws.StringValue `json:"InitiatorName,omitempty"` - TargetARN aws.StringValue `json:"TargetARN,omitempty"` -} - -// DeleteGatewayInput is undocumented. -type DeleteGatewayInput struct { - GatewayARN aws.StringValue `json:"GatewayARN"` -} - -// DeleteGatewayOutput is undocumented. -type DeleteGatewayOutput struct { - GatewayARN aws.StringValue `json:"GatewayARN,omitempty"` -} - -// DeleteSnapshotScheduleInput is undocumented. -type DeleteSnapshotScheduleInput struct { - VolumeARN aws.StringValue `json:"VolumeARN"` -} - -// DeleteSnapshotScheduleOutput is undocumented. -type DeleteSnapshotScheduleOutput struct { - VolumeARN aws.StringValue `json:"VolumeARN,omitempty"` -} - -// DeleteTapeArchiveInput is undocumented. -type DeleteTapeArchiveInput struct { - TapeARN aws.StringValue `json:"TapeARN"` -} - -// DeleteTapeArchiveOutput is undocumented. -type DeleteTapeArchiveOutput struct { - TapeARN aws.StringValue `json:"TapeARN,omitempty"` -} - -// DeleteTapeInput is undocumented. -type DeleteTapeInput struct { - GatewayARN aws.StringValue `json:"GatewayARN"` - TapeARN aws.StringValue `json:"TapeARN"` -} - -// DeleteTapeOutput is undocumented. -type DeleteTapeOutput struct { - TapeARN aws.StringValue `json:"TapeARN,omitempty"` -} - -// DeleteVolumeInput is undocumented. -type DeleteVolumeInput struct { - VolumeARN aws.StringValue `json:"VolumeARN"` -} - -// DeleteVolumeOutput is undocumented. -type DeleteVolumeOutput struct { - VolumeARN aws.StringValue `json:"VolumeARN,omitempty"` -} - -// DescribeBandwidthRateLimitInput is undocumented. -type DescribeBandwidthRateLimitInput struct { - GatewayARN aws.StringValue `json:"GatewayARN"` -} - -// DescribeBandwidthRateLimitOutput is undocumented. -type DescribeBandwidthRateLimitOutput struct { - AverageDownloadRateLimitInBitsPerSec aws.LongValue `json:"AverageDownloadRateLimitInBitsPerSec,omitempty"` - AverageUploadRateLimitInBitsPerSec aws.LongValue `json:"AverageUploadRateLimitInBitsPerSec,omitempty"` - GatewayARN aws.StringValue `json:"GatewayARN,omitempty"` -} - -// DescribeCacheInput is undocumented. -type DescribeCacheInput struct { - GatewayARN aws.StringValue `json:"GatewayARN"` -} - -// DescribeCacheOutput is undocumented. -type DescribeCacheOutput struct { - CacheAllocatedInBytes aws.LongValue `json:"CacheAllocatedInBytes,omitempty"` - CacheDirtyPercentage aws.DoubleValue `json:"CacheDirtyPercentage,omitempty"` - CacheHitPercentage aws.DoubleValue `json:"CacheHitPercentage,omitempty"` - CacheMissPercentage aws.DoubleValue `json:"CacheMissPercentage,omitempty"` - CacheUsedPercentage aws.DoubleValue `json:"CacheUsedPercentage,omitempty"` - DiskIDs []string `json:"DiskIds,omitempty"` - GatewayARN aws.StringValue `json:"GatewayARN,omitempty"` -} - -// DescribeCachediSCSIVolumesInput is undocumented. -type DescribeCachediSCSIVolumesInput struct { - VolumeARNs []string `json:"VolumeARNs"` -} - -// DescribeCachediSCSIVolumesOutput is undocumented. -type DescribeCachediSCSIVolumesOutput struct { - CachediSCSIVolumes []CachediSCSIVolume `json:"CachediSCSIVolumes,omitempty"` -} - -// DescribeChapCredentialsInput is undocumented. -type DescribeChapCredentialsInput struct { - TargetARN aws.StringValue `json:"TargetARN"` -} - -// DescribeChapCredentialsOutput is undocumented. -type DescribeChapCredentialsOutput struct { - ChapCredentials []ChapInfo `json:"ChapCredentials,omitempty"` -} - -// DescribeGatewayInformationInput is undocumented. -type DescribeGatewayInformationInput struct { - GatewayARN aws.StringValue `json:"GatewayARN"` -} - -// DescribeGatewayInformationOutput is undocumented. -type DescribeGatewayInformationOutput struct { - GatewayARN aws.StringValue `json:"GatewayARN,omitempty"` - GatewayID aws.StringValue `json:"GatewayId,omitempty"` - GatewayNetworkInterfaces []NetworkInterface `json:"GatewayNetworkInterfaces,omitempty"` - GatewayState aws.StringValue `json:"GatewayState,omitempty"` - GatewayTimezone aws.StringValue `json:"GatewayTimezone,omitempty"` - GatewayType aws.StringValue `json:"GatewayType,omitempty"` - NextUpdateAvailabilityDate aws.StringValue `json:"NextUpdateAvailabilityDate,omitempty"` -} - -// DescribeMaintenanceStartTimeInput is undocumented. -type DescribeMaintenanceStartTimeInput struct { - GatewayARN aws.StringValue `json:"GatewayARN"` -} - -// DescribeMaintenanceStartTimeOutput is undocumented. -type DescribeMaintenanceStartTimeOutput struct { - DayOfWeek aws.IntegerValue `json:"DayOfWeek,omitempty"` - GatewayARN aws.StringValue `json:"GatewayARN,omitempty"` - HourOfDay aws.IntegerValue `json:"HourOfDay,omitempty"` - MinuteOfHour aws.IntegerValue `json:"MinuteOfHour,omitempty"` - Timezone aws.StringValue `json:"Timezone,omitempty"` -} - -// DescribeSnapshotScheduleInput is undocumented. -type DescribeSnapshotScheduleInput struct { - VolumeARN aws.StringValue `json:"VolumeARN"` -} - -// DescribeSnapshotScheduleOutput is undocumented. -type DescribeSnapshotScheduleOutput struct { - Description aws.StringValue `json:"Description,omitempty"` - RecurrenceInHours aws.IntegerValue `json:"RecurrenceInHours,omitempty"` - StartAt aws.IntegerValue `json:"StartAt,omitempty"` - Timezone aws.StringValue `json:"Timezone,omitempty"` - VolumeARN aws.StringValue `json:"VolumeARN,omitempty"` -} - -// DescribeStorediSCSIVolumesInput is undocumented. -type DescribeStorediSCSIVolumesInput struct { - VolumeARNs []string `json:"VolumeARNs"` -} - -// DescribeStorediSCSIVolumesOutput is undocumented. -type DescribeStorediSCSIVolumesOutput struct { - StorediSCSIVolumes []StorediSCSIVolume `json:"StorediSCSIVolumes,omitempty"` -} - -// DescribeTapeArchivesInput is undocumented. -type DescribeTapeArchivesInput struct { - Limit aws.IntegerValue `json:"Limit,omitempty"` - Marker aws.StringValue `json:"Marker,omitempty"` - TapeARNs []string `json:"TapeARNs,omitempty"` -} - -// DescribeTapeArchivesOutput is undocumented. -type DescribeTapeArchivesOutput struct { - Marker aws.StringValue `json:"Marker,omitempty"` - TapeArchives []TapeArchive `json:"TapeArchives,omitempty"` -} - -// DescribeTapeRecoveryPointsInput is undocumented. -type DescribeTapeRecoveryPointsInput struct { - GatewayARN aws.StringValue `json:"GatewayARN"` - Limit aws.IntegerValue `json:"Limit,omitempty"` - Marker aws.StringValue `json:"Marker,omitempty"` -} - -// DescribeTapeRecoveryPointsOutput is undocumented. -type DescribeTapeRecoveryPointsOutput struct { - GatewayARN aws.StringValue `json:"GatewayARN,omitempty"` - Marker aws.StringValue `json:"Marker,omitempty"` - TapeRecoveryPointInfos []TapeRecoveryPointInfo `json:"TapeRecoveryPointInfos,omitempty"` -} - -// DescribeTapesInput is undocumented. -type DescribeTapesInput struct { - GatewayARN aws.StringValue `json:"GatewayARN"` - Limit aws.IntegerValue `json:"Limit,omitempty"` - Marker aws.StringValue `json:"Marker,omitempty"` - TapeARNs []string `json:"TapeARNs,omitempty"` -} - -// DescribeTapesOutput is undocumented. -type DescribeTapesOutput struct { - Marker aws.StringValue `json:"Marker,omitempty"` - Tapes []Tape `json:"Tapes,omitempty"` -} - -// DescribeUploadBufferInput is undocumented. -type DescribeUploadBufferInput struct { - GatewayARN aws.StringValue `json:"GatewayARN"` -} - -// DescribeUploadBufferOutput is undocumented. -type DescribeUploadBufferOutput struct { - DiskIDs []string `json:"DiskIds,omitempty"` - GatewayARN aws.StringValue `json:"GatewayARN,omitempty"` - UploadBufferAllocatedInBytes aws.LongValue `json:"UploadBufferAllocatedInBytes,omitempty"` - UploadBufferUsedInBytes aws.LongValue `json:"UploadBufferUsedInBytes,omitempty"` -} - -// DescribeVTLDevicesInput is undocumented. -type DescribeVTLDevicesInput struct { - GatewayARN aws.StringValue `json:"GatewayARN"` - Limit aws.IntegerValue `json:"Limit,omitempty"` - Marker aws.StringValue `json:"Marker,omitempty"` - VTLDeviceARNs []string `json:"VTLDeviceARNs,omitempty"` -} - -// DescribeVTLDevicesOutput is undocumented. -type DescribeVTLDevicesOutput struct { - GatewayARN aws.StringValue `json:"GatewayARN,omitempty"` - Marker aws.StringValue `json:"Marker,omitempty"` - VTLDevices []VTLDevice `json:"VTLDevices,omitempty"` -} - -// DescribeWorkingStorageInput is undocumented. -type DescribeWorkingStorageInput struct { - GatewayARN aws.StringValue `json:"GatewayARN"` -} - -// DescribeWorkingStorageOutput is undocumented. -type DescribeWorkingStorageOutput struct { - DiskIDs []string `json:"DiskIds,omitempty"` - GatewayARN aws.StringValue `json:"GatewayARN,omitempty"` - WorkingStorageAllocatedInBytes aws.LongValue `json:"WorkingStorageAllocatedInBytes,omitempty"` - WorkingStorageUsedInBytes aws.LongValue `json:"WorkingStorageUsedInBytes,omitempty"` -} - -// DeviceiSCSIAttributes is undocumented. -type DeviceiSCSIAttributes struct { - ChapEnabled aws.BooleanValue `json:"ChapEnabled,omitempty"` - NetworkInterfaceID aws.StringValue `json:"NetworkInterfaceId,omitempty"` - NetworkInterfacePort aws.IntegerValue `json:"NetworkInterfacePort,omitempty"` - TargetARN aws.StringValue `json:"TargetARN,omitempty"` -} - -// DisableGatewayInput is undocumented. -type DisableGatewayInput struct { - GatewayARN aws.StringValue `json:"GatewayARN"` -} - -// DisableGatewayOutput is undocumented. -type DisableGatewayOutput struct { - GatewayARN aws.StringValue `json:"GatewayARN,omitempty"` -} - -// Disk is undocumented. -type Disk struct { - DiskAllocationResource aws.StringValue `json:"DiskAllocationResource,omitempty"` - DiskAllocationType aws.StringValue `json:"DiskAllocationType,omitempty"` - DiskID aws.StringValue `json:"DiskId,omitempty"` - DiskNode aws.StringValue `json:"DiskNode,omitempty"` - DiskPath aws.StringValue `json:"DiskPath,omitempty"` - DiskSizeInBytes aws.LongValue `json:"DiskSizeInBytes,omitempty"` - DiskStatus aws.StringValue `json:"DiskStatus,omitempty"` -} - -// Possible values for StorageGateway. -const ( - ErrorCodeActivationKeyExpired = "ActivationKeyExpired" - ErrorCodeActivationKeyInvalid = "ActivationKeyInvalid" - ErrorCodeActivationKeyNotFound = "ActivationKeyNotFound" - ErrorCodeAuthenticationFailure = "AuthenticationFailure" - ErrorCodeBandwidthThrottleScheduleNotFound = "BandwidthThrottleScheduleNotFound" - ErrorCodeBlocked = "Blocked" - ErrorCodeCannotExportSnapshot = "CannotExportSnapshot" - ErrorCodeChapCredentialNotFound = "ChapCredentialNotFound" - ErrorCodeDiskAlreadyAllocated = "DiskAlreadyAllocated" - ErrorCodeDiskDoesNotExist = "DiskDoesNotExist" - ErrorCodeDiskSizeGreaterThanVolumeMaxSize = "DiskSizeGreaterThanVolumeMaxSize" - ErrorCodeDiskSizeLessThanVolumeSize = "DiskSizeLessThanVolumeSize" - ErrorCodeDiskSizeNotGigAligned = "DiskSizeNotGigAligned" - ErrorCodeDuplicateCertificateInfo = "DuplicateCertificateInfo" - ErrorCodeDuplicateSchedule = "DuplicateSchedule" - ErrorCodeEndpointNotFound = "EndpointNotFound" - ErrorCodeGatewayInternalError = "GatewayInternalError" - ErrorCodeGatewayNotConnected = "GatewayNotConnected" - ErrorCodeGatewayNotFound = "GatewayNotFound" - ErrorCodeGatewayProxyNetworkConnectionBusy = "GatewayProxyNetworkConnectionBusy" - ErrorCodeIAMnotSupported = "IAMNotSupported" - ErrorCodeInitiatorInvalid = "InitiatorInvalid" - ErrorCodeInitiatorNotFound = "InitiatorNotFound" - ErrorCodeInternalError = "InternalError" - ErrorCodeInvalidEndpoint = "InvalidEndpoint" - ErrorCodeInvalidGateway = "InvalidGateway" - ErrorCodeInvalidParameters = "InvalidParameters" - ErrorCodeInvalidSchedule = "InvalidSchedule" - ErrorCodeLocalStorageLimitExceeded = "LocalStorageLimitExceeded" - ErrorCodeLunAlreadyAllocated = "LunAlreadyAllocated " - ErrorCodeLunInvalid = "LunInvalid" - ErrorCodeMaximumContentLengthExceeded = "MaximumContentLengthExceeded" - ErrorCodeMaximumTapeCartridgeCountExceeded = "MaximumTapeCartridgeCountExceeded" - ErrorCodeMaximumVolumeCountExceeded = "MaximumVolumeCountExceeded" - ErrorCodeNetworkConfigurationChanged = "NetworkConfigurationChanged" - ErrorCodeNoDisksAvailable = "NoDisksAvailable" - ErrorCodeNotImplemented = "NotImplemented" - ErrorCodeNotSupported = "NotSupported" - ErrorCodeOperationAborted = "OperationAborted" - ErrorCodeOutdatedGateway = "OutdatedGateway" - ErrorCodeParametersNotImplemented = "ParametersNotImplemented" - ErrorCodeRegionInvalid = "RegionInvalid" - ErrorCodeRequestTimeout = "RequestTimeout" - ErrorCodeServiceUnavailable = "ServiceUnavailable" - ErrorCodeSnapshotDeleted = "SnapshotDeleted" - ErrorCodeSnapshotIDInvalid = "SnapshotIdInvalid" - ErrorCodeSnapshotInProgress = "SnapshotInProgress" - ErrorCodeSnapshotNotFound = "SnapshotNotFound" - ErrorCodeSnapshotScheduleNotFound = "SnapshotScheduleNotFound" - ErrorCodeStagingAreaFull = "StagingAreaFull" - ErrorCodeStorageFailure = "StorageFailure" - ErrorCodeTapeCartridgeNotFound = "TapeCartridgeNotFound" - ErrorCodeTargetAlreadyExists = "TargetAlreadyExists" - ErrorCodeTargetInvalid = "TargetInvalid" - ErrorCodeTargetNotFound = "TargetNotFound" - ErrorCodeUnauthorizedOperation = "UnauthorizedOperation" - ErrorCodeVolumeAlreadyExists = "VolumeAlreadyExists" - ErrorCodeVolumeIDInvalid = "VolumeIdInvalid" - ErrorCodeVolumeInUse = "VolumeInUse" - ErrorCodeVolumeNotFound = "VolumeNotFound" - ErrorCodeVolumeNotReady = "VolumeNotReady" -) - -// GatewayInfo is undocumented. -type GatewayInfo struct { - GatewayARN aws.StringValue `json:"GatewayARN,omitempty"` - GatewayOperationalState aws.StringValue `json:"GatewayOperationalState,omitempty"` - GatewayType aws.StringValue `json:"GatewayType,omitempty"` -} - -// ListGatewaysInput is undocumented. -type ListGatewaysInput struct { - Limit aws.IntegerValue `json:"Limit,omitempty"` - Marker aws.StringValue `json:"Marker,omitempty"` -} - -// ListGatewaysOutput is undocumented. -type ListGatewaysOutput struct { - Gateways []GatewayInfo `json:"Gateways,omitempty"` - Marker aws.StringValue `json:"Marker,omitempty"` -} - -// ListLocalDisksInput is undocumented. -type ListLocalDisksInput struct { - GatewayARN aws.StringValue `json:"GatewayARN"` -} - -// ListLocalDisksOutput is undocumented. -type ListLocalDisksOutput struct { - Disks []Disk `json:"Disks,omitempty"` - GatewayARN aws.StringValue `json:"GatewayARN,omitempty"` -} - -// ListVolumeRecoveryPointsInput is undocumented. -type ListVolumeRecoveryPointsInput struct { - GatewayARN aws.StringValue `json:"GatewayARN"` -} - -// ListVolumeRecoveryPointsOutput is undocumented. -type ListVolumeRecoveryPointsOutput struct { - GatewayARN aws.StringValue `json:"GatewayARN,omitempty"` - VolumeRecoveryPointInfos []VolumeRecoveryPointInfo `json:"VolumeRecoveryPointInfos,omitempty"` -} - -// ListVolumesInput is undocumented. -type ListVolumesInput struct { - GatewayARN aws.StringValue `json:"GatewayARN"` - Limit aws.IntegerValue `json:"Limit,omitempty"` - Marker aws.StringValue `json:"Marker,omitempty"` -} - -// ListVolumesOutput is undocumented. -type ListVolumesOutput struct { - GatewayARN aws.StringValue `json:"GatewayARN,omitempty"` - Marker aws.StringValue `json:"Marker,omitempty"` - VolumeInfos []VolumeInfo `json:"VolumeInfos,omitempty"` -} - -// NetworkInterface is undocumented. -type NetworkInterface struct { - IPv4Address aws.StringValue `json:"Ipv4Address,omitempty"` - IPv6Address aws.StringValue `json:"Ipv6Address,omitempty"` - MACAddress aws.StringValue `json:"MacAddress,omitempty"` -} - -// ResetCacheInput is undocumented. -type ResetCacheInput struct { - GatewayARN aws.StringValue `json:"GatewayARN"` -} - -// ResetCacheOutput is undocumented. -type ResetCacheOutput struct { - GatewayARN aws.StringValue `json:"GatewayARN,omitempty"` -} - -// RetrieveTapeArchiveInput is undocumented. -type RetrieveTapeArchiveInput struct { - GatewayARN aws.StringValue `json:"GatewayARN"` - TapeARN aws.StringValue `json:"TapeARN"` -} - -// RetrieveTapeArchiveOutput is undocumented. -type RetrieveTapeArchiveOutput struct { - TapeARN aws.StringValue `json:"TapeARN,omitempty"` -} - -// RetrieveTapeRecoveryPointInput is undocumented. -type RetrieveTapeRecoveryPointInput struct { - GatewayARN aws.StringValue `json:"GatewayARN"` - TapeARN aws.StringValue `json:"TapeARN"` -} - -// RetrieveTapeRecoveryPointOutput is undocumented. -type RetrieveTapeRecoveryPointOutput struct { - TapeARN aws.StringValue `json:"TapeARN,omitempty"` -} - -// ShutdownGatewayInput is undocumented. -type ShutdownGatewayInput struct { - GatewayARN aws.StringValue `json:"GatewayARN"` -} - -// ShutdownGatewayOutput is undocumented. -type ShutdownGatewayOutput struct { - GatewayARN aws.StringValue `json:"GatewayARN,omitempty"` -} - -// StartGatewayInput is undocumented. -type StartGatewayInput struct { - GatewayARN aws.StringValue `json:"GatewayARN"` -} - -// StartGatewayOutput is undocumented. -type StartGatewayOutput struct { - GatewayARN aws.StringValue `json:"GatewayARN,omitempty"` -} - -// StorageGatewayError is undocumented. -type StorageGatewayError struct { - ErrorCode aws.StringValue `json:"errorCode,omitempty"` - ErrorDetails map[string]string `json:"errorDetails,omitempty"` -} - -// StorediSCSIVolume is undocumented. -type StorediSCSIVolume struct { - PreservedExistingData aws.BooleanValue `json:"PreservedExistingData,omitempty"` - SourceSnapshotID aws.StringValue `json:"SourceSnapshotId,omitempty"` - VolumeARN aws.StringValue `json:"VolumeARN,omitempty"` - VolumeDiskID aws.StringValue `json:"VolumeDiskId,omitempty"` - VolumeID aws.StringValue `json:"VolumeId,omitempty"` - VolumeProgress aws.DoubleValue `json:"VolumeProgress,omitempty"` - VolumeSizeInBytes aws.LongValue `json:"VolumeSizeInBytes,omitempty"` - VolumeStatus aws.StringValue `json:"VolumeStatus,omitempty"` - VolumeType aws.StringValue `json:"VolumeType,omitempty"` - VolumeiSCSIAttributes *VolumeiSCSIAttributes `json:"VolumeiSCSIAttributes,omitempty"` -} - -// Tape is undocumented. -type Tape struct { - Progress aws.DoubleValue `json:"Progress,omitempty"` - TapeARN aws.StringValue `json:"TapeARN,omitempty"` - TapeBarcode aws.StringValue `json:"TapeBarcode,omitempty"` - TapeSizeInBytes aws.LongValue `json:"TapeSizeInBytes,omitempty"` - TapeStatus aws.StringValue `json:"TapeStatus,omitempty"` - VTLDevice aws.StringValue `json:"VTLDevice,omitempty"` -} - -// TapeArchive is undocumented. -type TapeArchive struct { - CompletionTime *aws.UnixTimestamp `json:"CompletionTime,omitempty"` - RetrievedTo aws.StringValue `json:"RetrievedTo,omitempty"` - TapeARN aws.StringValue `json:"TapeARN,omitempty"` - TapeBarcode aws.StringValue `json:"TapeBarcode,omitempty"` - TapeSizeInBytes aws.LongValue `json:"TapeSizeInBytes,omitempty"` - TapeStatus aws.StringValue `json:"TapeStatus,omitempty"` -} - -// TapeRecoveryPointInfo is undocumented. -type TapeRecoveryPointInfo struct { - TapeARN aws.StringValue `json:"TapeARN,omitempty"` - TapeRecoveryPointTime *aws.UnixTimestamp `json:"TapeRecoveryPointTime,omitempty"` - TapeSizeInBytes aws.LongValue `json:"TapeSizeInBytes,omitempty"` - TapeStatus aws.StringValue `json:"TapeStatus,omitempty"` -} - -// UpdateBandwidthRateLimitInput is undocumented. -type UpdateBandwidthRateLimitInput struct { - AverageDownloadRateLimitInBitsPerSec aws.LongValue `json:"AverageDownloadRateLimitInBitsPerSec,omitempty"` - AverageUploadRateLimitInBitsPerSec aws.LongValue `json:"AverageUploadRateLimitInBitsPerSec,omitempty"` - GatewayARN aws.StringValue `json:"GatewayARN"` -} - -// UpdateBandwidthRateLimitOutput is undocumented. -type UpdateBandwidthRateLimitOutput struct { - GatewayARN aws.StringValue `json:"GatewayARN,omitempty"` -} - -// UpdateChapCredentialsInput is undocumented. -type UpdateChapCredentialsInput struct { - InitiatorName aws.StringValue `json:"InitiatorName"` - SecretToAuthenticateInitiator aws.StringValue `json:"SecretToAuthenticateInitiator"` - SecretToAuthenticateTarget aws.StringValue `json:"SecretToAuthenticateTarget,omitempty"` - TargetARN aws.StringValue `json:"TargetARN"` -} - -// UpdateChapCredentialsOutput is undocumented. -type UpdateChapCredentialsOutput struct { - InitiatorName aws.StringValue `json:"InitiatorName,omitempty"` - TargetARN aws.StringValue `json:"TargetARN,omitempty"` -} - -// UpdateGatewayInformationInput is undocumented. -type UpdateGatewayInformationInput struct { - GatewayARN aws.StringValue `json:"GatewayARN"` - GatewayName aws.StringValue `json:"GatewayName,omitempty"` - GatewayTimezone aws.StringValue `json:"GatewayTimezone,omitempty"` -} - -// UpdateGatewayInformationOutput is undocumented. -type UpdateGatewayInformationOutput struct { - GatewayARN aws.StringValue `json:"GatewayARN,omitempty"` -} - -// UpdateGatewaySoftwareNowInput is undocumented. -type UpdateGatewaySoftwareNowInput struct { - GatewayARN aws.StringValue `json:"GatewayARN"` -} - -// UpdateGatewaySoftwareNowOutput is undocumented. -type UpdateGatewaySoftwareNowOutput struct { - GatewayARN aws.StringValue `json:"GatewayARN,omitempty"` -} - -// UpdateMaintenanceStartTimeInput is undocumented. -type UpdateMaintenanceStartTimeInput struct { - DayOfWeek aws.IntegerValue `json:"DayOfWeek"` - GatewayARN aws.StringValue `json:"GatewayARN"` - HourOfDay aws.IntegerValue `json:"HourOfDay"` - MinuteOfHour aws.IntegerValue `json:"MinuteOfHour"` -} - -// UpdateMaintenanceStartTimeOutput is undocumented. -type UpdateMaintenanceStartTimeOutput struct { - GatewayARN aws.StringValue `json:"GatewayARN,omitempty"` -} - -// UpdateSnapshotScheduleInput is undocumented. -type UpdateSnapshotScheduleInput struct { - Description aws.StringValue `json:"Description,omitempty"` - RecurrenceInHours aws.IntegerValue `json:"RecurrenceInHours"` - StartAt aws.IntegerValue `json:"StartAt"` - VolumeARN aws.StringValue `json:"VolumeARN"` -} - -// UpdateSnapshotScheduleOutput is undocumented. -type UpdateSnapshotScheduleOutput struct { - VolumeARN aws.StringValue `json:"VolumeARN,omitempty"` -} - -// UpdateVTLDeviceTypeInput is undocumented. -type UpdateVTLDeviceTypeInput struct { - DeviceType aws.StringValue `json:"DeviceType"` - VTLDeviceARN aws.StringValue `json:"VTLDeviceARN"` -} - -// UpdateVTLDeviceTypeOutput is undocumented. -type UpdateVTLDeviceTypeOutput struct { - VTLDeviceARN aws.StringValue `json:"VTLDeviceARN,omitempty"` -} - -// VTLDevice is undocumented. -type VTLDevice struct { - DeviceiSCSIAttributes *DeviceiSCSIAttributes `json:"DeviceiSCSIAttributes,omitempty"` - VTLDeviceARN aws.StringValue `json:"VTLDeviceARN,omitempty"` - VTLDeviceProductIdentifier aws.StringValue `json:"VTLDeviceProductIdentifier,omitempty"` - VTLDeviceType aws.StringValue `json:"VTLDeviceType,omitempty"` - VTLDeviceVendor aws.StringValue `json:"VTLDeviceVendor,omitempty"` -} - -// VolumeInfo is undocumented. -type VolumeInfo struct { - VolumeARN aws.StringValue `json:"VolumeARN,omitempty"` - VolumeType aws.StringValue `json:"VolumeType,omitempty"` -} - -// VolumeRecoveryPointInfo is undocumented. -type VolumeRecoveryPointInfo struct { - VolumeARN aws.StringValue `json:"VolumeARN,omitempty"` - VolumeRecoveryPointTime aws.StringValue `json:"VolumeRecoveryPointTime,omitempty"` - VolumeSizeInBytes aws.LongValue `json:"VolumeSizeInBytes,omitempty"` - VolumeUsageInBytes aws.LongValue `json:"VolumeUsageInBytes,omitempty"` -} - -// VolumeiSCSIAttributes is undocumented. -type VolumeiSCSIAttributes struct { - ChapEnabled aws.BooleanValue `json:"ChapEnabled,omitempty"` - LunNumber aws.IntegerValue `json:"LunNumber,omitempty"` - NetworkInterfaceID aws.StringValue `json:"NetworkInterfaceId,omitempty"` - NetworkInterfacePort aws.IntegerValue `json:"NetworkInterfacePort,omitempty"` - TargetARN aws.StringValue `json:"TargetARN,omitempty"` -} - -// avoid errors if the packages aren't referenced -var _ time.Time diff --git a/src/github.com/getlantern/aws-sdk-go/gen/sts/sts.go b/src/github.com/getlantern/aws-sdk-go/gen/sts/sts.go deleted file mode 100644 index 10fdbb94c7..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/gen/sts/sts.go +++ /dev/null @@ -1,480 +0,0 @@ -// THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. - -// Package sts provides a client for AWS Security Token Service. -package sts - -import ( - "net/http" - "time" - - "github.com/awslabs/aws-sdk-go/aws" - "github.com/awslabs/aws-sdk-go/gen/endpoints" -) - -import ( - "encoding/xml" - "io" -) - -// STS is a client for AWS Security Token Service. -type STS struct { - client *aws.QueryClient -} - -// New returns a new STS client. -func New(creds aws.CredentialsProvider, region string, client *http.Client) *STS { - if client == nil { - client = http.DefaultClient - } - - endpoint, service, region := endpoints.Lookup("sts", region) - - return &STS{ - client: &aws.QueryClient{ - Context: aws.Context{ - Credentials: creds, - Service: service, - Region: region, - }, - Client: client, - Endpoint: endpoint, - APIVersion: "2011-06-15", - }, - } -} - -// AssumeRole returns a set of temporary security credentials (consisting -// of an access key ID, a secret access key, and a security token) that you -// can use to access AWS resources that you might not normally have access -// to. Typically, you use AssumeRole for cross-account access or -// federation. Important: You cannot call AssumeRole by using AWS account -// credentials; access will be denied. You must use IAM user credentials or -// temporary security credentials to call AssumeRole . For cross-account -// access, imagine that you own multiple accounts and need to access -// resources in each account. You could create long-term credentials in -// each account to access those resources. However, managing all those -// credentials and remembering which one can access which account can be -// time consuming. Instead, you can create one set of long-term credentials -// in one account and then use temporary security credentials to access all -// the other accounts by assuming roles in those accounts. For more -// information about roles, see Roles in Using . For federation, you can, -// for example, grant single sign-on access to the AWS Management Console. -// If you already have an identity and authentication system in your -// corporate network, you don't have to recreate user identities in AWS in -// order to grant those user identities access to Instead, after a user has -// been authenticated, you call AssumeRole (and specify the role with the -// appropriate permissions) to get temporary security credentials for that -// user. With those temporary security credentials, you construct a sign-in -// URL that users can use to access the console. For more information, see -// Scenarios for Granting Temporary Access in Using Temporary Security -// Credentials . The temporary security credentials are valid for the -// duration that you specified when calling AssumeRole , which can be from -// 900 seconds (15 minutes) to 3600 seconds (1 hour). The default is 1 -// hour. Optionally, you can pass an IAM access policy to this operation. -// If you choose not to pass a policy, the temporary security credentials -// that are returned by the operation have the permissions that are defined -// in the access policy of the role that is being assumed. If you pass a -// policy to this operation, the temporary security credentials that are -// returned by the operation have the permissions that are allowed by both -// the access policy of the role that is being assumed, and the policy that -// you pass. This gives you a way to further restrict the permissions for -// the resulting temporary security credentials. You cannot use the passed -// policy to grant permissions that are in excess of those allowed by the -// access policy of the role that is being assumed. For more information, -// see Permissions for AssumeRole in Using Temporary Security Credentials -// To assume a role, your AWS account must be trusted by the role. The -// trust relationship is defined in the role's trust policy when the role -// is created. You must also have a policy that allows you to call -// sts:AssumeRole . Using MFA with AssumeRole You can optionally include -// multi-factor authentication information when you call AssumeRole . This -// is useful for cross-account scenarios in which you want to make sure -// that the user who is assuming the role has been authenticated using an -// AWS MFA device. In that scenario, the trust policy of the role being -// assumed includes a condition that tests for MFA authentication; if the -// caller does not include valid MFA information, the request to assume the -// role is denied. The condition in a trust policy that tests for MFA -// authentication might look like the following example. "Condition": -// {"Null": {"aws:MultiFactorAuthAge": false}} For more information, see -// Configuring MFA-Protected API Access in the Using guide. To use MFA with -// AssumeRole , you pass values for the SerialNumber and TokenCode -// parameters. The SerialNumber value identifies the user's hardware or -// virtual MFA device. The TokenCode is the time-based one-time password -// that the MFA devices produces. -func (c *STS) AssumeRole(req *AssumeRoleRequest) (resp *AssumeRoleResult, err error) { - resp = &AssumeRoleResult{} - err = c.client.Do("AssumeRole", "POST", "/", req, resp) - return -} - -// AssumeRoleWithSAML returns a set of temporary security credentials for -// users who have been authenticated via a authentication response. This -// operation provides a mechanism for tying an enterprise identity store or -// directory to role-based AWS access without user-specific credentials or -// configuration. The temporary security credentials returned by this -// operation consist of an access key ID, a secret access key, and a -// security token. Applications can use these temporary security -// credentials to sign calls to AWS services. The credentials are valid for -// the duration that you specified when calling AssumeRoleWithSAML , which -// can be up to 3600 seconds (1 hour) or until the time specified in the -// authentication response's NotOnOrAfter value, whichever is shorter. -// Optionally, you can pass an IAM access policy to this operation. If you -// choose not to pass a policy, the temporary security credentials that are -// returned by the operation have the permissions that are defined in the -// access policy of the role that is being assumed. If you pass a policy to -// this operation, the temporary security credentials that are returned by -// the operation have the permissions that are allowed by both the access -// policy of the role that is being assumed, and the policy that you pass. -// This gives you a way to further restrict the permissions for the -// resulting temporary security credentials. You cannot use the passed -// policy to grant permissions that are in excess of those allowed by the -// access policy of the role that is being assumed. For more information, -// see Permissions for AssumeRoleWithSAML in Using Temporary Security -// Credentials Before your application can call AssumeRoleWithSAML , you -// must configure your identity provider (IdP) to issue the claims required -// by Additionally, you must use AWS Identity and Access Management to -// create a provider entity in your AWS account that represents your -// identity provider, and create an IAM role that specifies this provider -// in its trust policy. Calling AssumeRoleWithSAML does not require the use -// of AWS security credentials. The identity of the caller is validated by -// using keys in the metadata document that is uploaded for the provider -// entity for your identity provider. For more information, see the -// following resources: Creating Temporary Security Credentials for -// Federation in Using Temporary Security Credentials . Providers in Using -// . -func (c *STS) AssumeRoleWithSAML(req *AssumeRoleWithSAMLRequest) (resp *AssumeRoleWithSAMLResult, err error) { - resp = &AssumeRoleWithSAMLResult{} - err = c.client.Do("AssumeRoleWithSAML", "POST", "/", req, resp) - return -} - -// AssumeRoleWithWebIdentity returns a set of temporary security -// credentials for users who have been authenticated in a mobile or web -// application with a web identity provider, such as Login with Amazon, -// Amazon Cognito, Facebook, or Google. Calling AssumeRoleWithWebIdentity -// does not require the use of AWS security credentials. Therefore, you can -// distribute an application (for example, on mobile devices) that requests -// temporary security credentials without including long-term AWS -// credentials in the application, and without deploying server-based proxy -// services that use long-term AWS credentials. Instead, the identity of -// the caller is validated by using a token from the web identity provider. -// The temporary security credentials returned by this API consist of an -// access key ID, a secret access key, and a security token. Applications -// can use these temporary security credentials to sign calls to AWS -// service APIs. The credentials are valid for the duration that you -// specified when calling AssumeRoleWithWebIdentity , which can be from 900 -// seconds (15 minutes) to 3600 seconds (1 hour). By default, the temporary -// security credentials are valid for 1 hour. Optionally, you can pass an -// IAM access policy to this operation. If you choose not to pass a policy, -// the temporary security credentials that are returned by the operation -// have the permissions that are defined in the access policy of the role -// that is being assumed. If you pass a policy to this operation, the -// temporary security credentials that are returned by the operation have -// the permissions that are allowed by both the access policy of the role -// that is being assumed, and the policy that you pass. This gives you a -// way to further restrict the permissions for the resulting temporary -// security credentials. You cannot use the passed policy to grant -// permissions that are in excess of those allowed by the access policy of -// the role that is being assumed. For more information, see Permissions -// for AssumeRoleWithWebIdentity in Using Temporary Security Credentials -// Before your application can call AssumeRoleWithWebIdentity , you must -// have an identity token from a supported identity provider and create a -// role that the application can assume. The role that your application -// assumes must trust the identity provider that is associated with the -// identity token. In other words, the identity provider must be specified -// in the role's trust policy. For more information about how to use web -// identity federation and the AssumeRoleWithWebIdentity , see the -// following resources: Web Identity Federation Playground . This -// interactive website lets you walk through the process of authenticating -// via Login with Amazon, Facebook, or Google, getting temporary security -// credentials, and then using those credentials to make a request to AWS -// SDK for iOS and AWS SDK for Android . These toolkits contain sample apps -// that show how to invoke the identity providers, and then how to use the -// information from these providers to get and use temporary security -// credentials. Web Identity Federation with Mobile Applications . This -// article discusses web identity federation and shows an example of how to -// use web identity federation to get access to content in Amazon S3. -func (c *STS) AssumeRoleWithWebIdentity(req *AssumeRoleWithWebIdentityRequest) (resp *AssumeRoleWithWebIdentityResult, err error) { - resp = &AssumeRoleWithWebIdentityResult{} - err = c.client.Do("AssumeRoleWithWebIdentity", "POST", "/", req, resp) - return -} - -// DecodeAuthorizationMessage decodes additional information about the -// authorization status of a request from an encoded message returned in -// response to an AWS request. For example, if a user is not authorized to -// perform an action that he or she has requested, the request returns a -// Client.UnauthorizedOperation response (an 403 response). Some AWS -// actions additionally return an encoded message that can provide details -// about this authorization failure. The message is encoded because the -// details of the authorization status can constitute privileged -// information that the user who requested the action should not see. To -// decode an authorization status message, a user must be granted -// permissions via an IAM policy to request the DecodeAuthorizationMessage -// sts:DecodeAuthorizationMessage ) action. The decoded message includes -// the following type of information: Whether the request was denied due to -// an explicit deny or due to the absence of an explicit allow. For more -// information, see Determining Whether a Request is Allowed or Denied in -// Using . The principal who made the request. The requested resource. The -// values of condition keys in the context of the user's request. -func (c *STS) DecodeAuthorizationMessage(req *DecodeAuthorizationMessageRequest) (resp *DecodeAuthorizationMessageResult, err error) { - resp = &DecodeAuthorizationMessageResult{} - err = c.client.Do("DecodeAuthorizationMessage", "POST", "/", req, resp) - return -} - -// GetFederationToken returns a set of temporary security credentials -// (consisting of an access key ID, a secret access key, and a security -// token) for a federated user. A typical use is in a proxy application -// that gets temporary security credentials on behalf of distributed -// applications inside a corporate network. Because you must call the -// GetFederationToken action using the long-term security credentials of an -// IAM user, this call is appropriate in contexts where those credentials -// can be safely stored, usually in a server-based application. Note: Do -// not use this call in mobile applications or client-based web -// applications that directly get temporary security credentials. For those -// types of applications, use AssumeRoleWithWebIdentity The -// GetFederationToken action must be called by using the long-term AWS -// security credentials of an IAM user. You can also call -// GetFederationToken using the security credentials of an AWS account -// (root), but this is not recommended. Instead, we recommend that you -// create an IAM user for the purpose of the proxy application and then -// attach a policy to the IAM user that limits federated users to only the -// actions and resources they need access to. For more information, see IAM -// Best Practices in Using . The temporary security credentials that are -// obtained by using the long-term credentials of an IAM user are valid for -// the specified duration, between 900 seconds (15 minutes) and 129600 -// seconds (36 hours). Temporary credentials that are obtained by using AWS -// account (root) credentials have a maximum duration of 3600 seconds (1 -// hour) The permissions for the temporary security credentials returned by -// GetFederationToken are determined by a combination of the following: The -// policy or policies that are attached to the IAM user whose credentials -// are used to call GetFederationToken The policy that is passed as a -// parameter in the call. The passed policy is attached to the temporary -// security credentials that result from the GetFederationToken API -// call--that is, to the federated user . When the federated user makes an -// AWS request, AWS evaluates the policy attached to the federated user in -// combination with the policy or policies attached to the IAM user whose -// credentials were used to call GetFederationToken . AWS allows the -// federated user's request only when both the federated user and the IAM -// user are explicitly allowed to perform the requested action. The passed -// policy cannot grant more permissions than those that are defined in the -// IAM user policy. A typical use case is that the permissions of the IAM -// user whose credentials are used to call GetFederationToken are designed -// to allow access to all the actions and resources that any federated user -// will need. Then, for individual users, you pass a policy to the -// operation that scopes down the permissions to a level that's appropriate -// to that individual user, using a policy that allows only a subset of -// permissions that are granted to the IAM user. If you do not pass a -// policy, the resulting temporary security credentials have no effective -// permissions. The only exception is when the temporary security -// credentials are used to access a resource that has a resource-based -// policy that specifically allows the federated user to access the -// resource. For more information about how permissions work, see -// Permissions for GetFederationToken in Using Temporary Security -// Credentials . For information about using GetFederationToken to create -// temporary security credentials, see Creating Temporary Credentials to -// Enable Access for Federated Users in Using Temporary Security -// Credentials . -func (c *STS) GetFederationToken(req *GetFederationTokenRequest) (resp *GetFederationTokenResult, err error) { - resp = &GetFederationTokenResult{} - err = c.client.Do("GetFederationToken", "POST", "/", req, resp) - return -} - -// GetSessionToken returns a set of temporary credentials for an AWS -// account or IAM user. The credentials consist of an access key ID, a -// secret access key, and a security token. Typically, you use -// GetSessionToken if you want to use MFA to protect programmatic calls to -// specific AWS APIs like Amazon EC2 StopInstances . MFA-enabled IAM users -// would need to call GetSessionToken and submit an MFA code that is -// associated with their MFA device. Using the temporary security -// credentials that are returned from the call, IAM users can then make -// programmatic calls to APIs that require MFA authentication. The -// GetSessionToken action must be called by using the long-term AWS -// security credentials of the AWS account or an IAM user. Credentials that -// are created by IAM users are valid for the duration that you specify, -// between 900 seconds (15 minutes) and 129600 seconds (36 hours); -// credentials that are created by using account credentials have a maximum -// duration of 3600 seconds (1 hour). The permissions associated with the -// temporary security credentials returned by GetSessionToken are based on -// the permissions associated with account or IAM user whose credentials -// are used to call the action. If GetSessionToken is called using root -// account credentials, the temporary credentials have root account -// permissions. Similarly, if GetSessionToken is called using the -// credentials of an IAM user, the temporary credentials have the same -// permissions as the IAM user. For more information about using -// GetSessionToken to create temporary credentials, go to Creating -// Temporary Credentials to Enable Access for IAM Users in Using Temporary -// Security Credentials . -func (c *STS) GetSessionToken(req *GetSessionTokenRequest) (resp *GetSessionTokenResult, err error) { - resp = &GetSessionTokenResult{} - err = c.client.Do("GetSessionToken", "POST", "/", req, resp) - return -} - -// AssumeRoleRequest is undocumented. -type AssumeRoleRequest struct { - DurationSeconds aws.IntegerValue `query:"DurationSeconds" xml:"DurationSeconds"` - ExternalID aws.StringValue `query:"ExternalId" xml:"ExternalId"` - Policy aws.StringValue `query:"Policy" xml:"Policy"` - RoleARN aws.StringValue `query:"RoleArn" xml:"RoleArn"` - RoleSessionName aws.StringValue `query:"RoleSessionName" xml:"RoleSessionName"` - SerialNumber aws.StringValue `query:"SerialNumber" xml:"SerialNumber"` - TokenCode aws.StringValue `query:"TokenCode" xml:"TokenCode"` -} - -// AssumeRoleResponse is undocumented. -type AssumeRoleResponse struct { - AssumedRoleUser *AssumedRoleUser `query:"AssumedRoleUser" xml:"AssumeRoleResult>AssumedRoleUser"` - Credentials *Credentials `query:"Credentials" xml:"AssumeRoleResult>Credentials"` - PackedPolicySize aws.IntegerValue `query:"PackedPolicySize" xml:"AssumeRoleResult>PackedPolicySize"` -} - -// AssumeRoleWithSAMLRequest is undocumented. -type AssumeRoleWithSAMLRequest struct { - DurationSeconds aws.IntegerValue `query:"DurationSeconds" xml:"DurationSeconds"` - Policy aws.StringValue `query:"Policy" xml:"Policy"` - PrincipalARN aws.StringValue `query:"PrincipalArn" xml:"PrincipalArn"` - RoleARN aws.StringValue `query:"RoleArn" xml:"RoleArn"` - SAMLAssertion aws.StringValue `query:"SAMLAssertion" xml:"SAMLAssertion"` -} - -// AssumeRoleWithSAMLResponse is undocumented. -type AssumeRoleWithSAMLResponse struct { - AssumedRoleUser *AssumedRoleUser `query:"AssumedRoleUser" xml:"AssumeRoleWithSAMLResult>AssumedRoleUser"` - Audience aws.StringValue `query:"Audience" xml:"AssumeRoleWithSAMLResult>Audience"` - Credentials *Credentials `query:"Credentials" xml:"AssumeRoleWithSAMLResult>Credentials"` - Issuer aws.StringValue `query:"Issuer" xml:"AssumeRoleWithSAMLResult>Issuer"` - NameQualifier aws.StringValue `query:"NameQualifier" xml:"AssumeRoleWithSAMLResult>NameQualifier"` - PackedPolicySize aws.IntegerValue `query:"PackedPolicySize" xml:"AssumeRoleWithSAMLResult>PackedPolicySize"` - Subject aws.StringValue `query:"Subject" xml:"AssumeRoleWithSAMLResult>Subject"` - SubjectType aws.StringValue `query:"SubjectType" xml:"AssumeRoleWithSAMLResult>SubjectType"` -} - -// AssumeRoleWithWebIdentityRequest is undocumented. -type AssumeRoleWithWebIdentityRequest struct { - DurationSeconds aws.IntegerValue `query:"DurationSeconds" xml:"DurationSeconds"` - Policy aws.StringValue `query:"Policy" xml:"Policy"` - ProviderID aws.StringValue `query:"ProviderId" xml:"ProviderId"` - RoleARN aws.StringValue `query:"RoleArn" xml:"RoleArn"` - RoleSessionName aws.StringValue `query:"RoleSessionName" xml:"RoleSessionName"` - WebIdentityToken aws.StringValue `query:"WebIdentityToken" xml:"WebIdentityToken"` -} - -// AssumeRoleWithWebIdentityResponse is undocumented. -type AssumeRoleWithWebIdentityResponse struct { - AssumedRoleUser *AssumedRoleUser `query:"AssumedRoleUser" xml:"AssumeRoleWithWebIdentityResult>AssumedRoleUser"` - Audience aws.StringValue `query:"Audience" xml:"AssumeRoleWithWebIdentityResult>Audience"` - Credentials *Credentials `query:"Credentials" xml:"AssumeRoleWithWebIdentityResult>Credentials"` - PackedPolicySize aws.IntegerValue `query:"PackedPolicySize" xml:"AssumeRoleWithWebIdentityResult>PackedPolicySize"` - Provider aws.StringValue `query:"Provider" xml:"AssumeRoleWithWebIdentityResult>Provider"` - SubjectFromWebIdentityToken aws.StringValue `query:"SubjectFromWebIdentityToken" xml:"AssumeRoleWithWebIdentityResult>SubjectFromWebIdentityToken"` -} - -// AssumedRoleUser is undocumented. -type AssumedRoleUser struct { - ARN aws.StringValue `query:"Arn" xml:"Arn"` - AssumedRoleID aws.StringValue `query:"AssumedRoleId" xml:"AssumedRoleId"` -} - -// Credentials is undocumented. -type Credentials struct { - AccessKeyID aws.StringValue `query:"AccessKeyId" xml:"AccessKeyId"` - Expiration time.Time `query:"Expiration" xml:"Expiration"` - SecretAccessKey aws.StringValue `query:"SecretAccessKey" xml:"SecretAccessKey"` - SessionToken aws.StringValue `query:"SessionToken" xml:"SessionToken"` -} - -// DecodeAuthorizationMessageRequest is undocumented. -type DecodeAuthorizationMessageRequest struct { - EncodedMessage aws.StringValue `query:"EncodedMessage" xml:"EncodedMessage"` -} - -// DecodeAuthorizationMessageResponse is undocumented. -type DecodeAuthorizationMessageResponse struct { - DecodedMessage aws.StringValue `query:"DecodedMessage" xml:"DecodeAuthorizationMessageResult>DecodedMessage"` -} - -// FederatedUser is undocumented. -type FederatedUser struct { - ARN aws.StringValue `query:"Arn" xml:"Arn"` - FederatedUserID aws.StringValue `query:"FederatedUserId" xml:"FederatedUserId"` -} - -// GetFederationTokenRequest is undocumented. -type GetFederationTokenRequest struct { - DurationSeconds aws.IntegerValue `query:"DurationSeconds" xml:"DurationSeconds"` - Name aws.StringValue `query:"Name" xml:"Name"` - Policy aws.StringValue `query:"Policy" xml:"Policy"` -} - -// GetFederationTokenResponse is undocumented. -type GetFederationTokenResponse struct { - Credentials *Credentials `query:"Credentials" xml:"GetFederationTokenResult>Credentials"` - FederatedUser *FederatedUser `query:"FederatedUser" xml:"GetFederationTokenResult>FederatedUser"` - PackedPolicySize aws.IntegerValue `query:"PackedPolicySize" xml:"GetFederationTokenResult>PackedPolicySize"` -} - -// GetSessionTokenRequest is undocumented. -type GetSessionTokenRequest struct { - DurationSeconds aws.IntegerValue `query:"DurationSeconds" xml:"DurationSeconds"` - SerialNumber aws.StringValue `query:"SerialNumber" xml:"SerialNumber"` - TokenCode aws.StringValue `query:"TokenCode" xml:"TokenCode"` -} - -// GetSessionTokenResponse is undocumented. -type GetSessionTokenResponse struct { - Credentials *Credentials `query:"Credentials" xml:"GetSessionTokenResult>Credentials"` -} - -// AssumeRoleResult is a wrapper for AssumeRoleResponse. -type AssumeRoleResult struct { - AssumedRoleUser *AssumedRoleUser `query:"AssumedRoleUser" xml:"AssumeRoleResult>AssumedRoleUser"` - Credentials *Credentials `query:"Credentials" xml:"AssumeRoleResult>Credentials"` - PackedPolicySize aws.IntegerValue `query:"PackedPolicySize" xml:"AssumeRoleResult>PackedPolicySize"` -} - -// AssumeRoleWithSAMLResult is a wrapper for AssumeRoleWithSAMLResponse. -type AssumeRoleWithSAMLResult struct { - AssumedRoleUser *AssumedRoleUser `query:"AssumedRoleUser" xml:"AssumeRoleWithSAMLResult>AssumedRoleUser"` - Audience aws.StringValue `query:"Audience" xml:"AssumeRoleWithSAMLResult>Audience"` - Credentials *Credentials `query:"Credentials" xml:"AssumeRoleWithSAMLResult>Credentials"` - Issuer aws.StringValue `query:"Issuer" xml:"AssumeRoleWithSAMLResult>Issuer"` - NameQualifier aws.StringValue `query:"NameQualifier" xml:"AssumeRoleWithSAMLResult>NameQualifier"` - PackedPolicySize aws.IntegerValue `query:"PackedPolicySize" xml:"AssumeRoleWithSAMLResult>PackedPolicySize"` - Subject aws.StringValue `query:"Subject" xml:"AssumeRoleWithSAMLResult>Subject"` - SubjectType aws.StringValue `query:"SubjectType" xml:"AssumeRoleWithSAMLResult>SubjectType"` -} - -// AssumeRoleWithWebIdentityResult is a wrapper for AssumeRoleWithWebIdentityResponse. -type AssumeRoleWithWebIdentityResult struct { - AssumedRoleUser *AssumedRoleUser `query:"AssumedRoleUser" xml:"AssumeRoleWithWebIdentityResult>AssumedRoleUser"` - Audience aws.StringValue `query:"Audience" xml:"AssumeRoleWithWebIdentityResult>Audience"` - Credentials *Credentials `query:"Credentials" xml:"AssumeRoleWithWebIdentityResult>Credentials"` - PackedPolicySize aws.IntegerValue `query:"PackedPolicySize" xml:"AssumeRoleWithWebIdentityResult>PackedPolicySize"` - Provider aws.StringValue `query:"Provider" xml:"AssumeRoleWithWebIdentityResult>Provider"` - SubjectFromWebIdentityToken aws.StringValue `query:"SubjectFromWebIdentityToken" xml:"AssumeRoleWithWebIdentityResult>SubjectFromWebIdentityToken"` -} - -// DecodeAuthorizationMessageResult is a wrapper for DecodeAuthorizationMessageResponse. -type DecodeAuthorizationMessageResult struct { - DecodedMessage aws.StringValue `query:"DecodedMessage" xml:"DecodeAuthorizationMessageResult>DecodedMessage"` -} - -// GetFederationTokenResult is a wrapper for GetFederationTokenResponse. -type GetFederationTokenResult struct { - Credentials *Credentials `query:"Credentials" xml:"GetFederationTokenResult>Credentials"` - FederatedUser *FederatedUser `query:"FederatedUser" xml:"GetFederationTokenResult>FederatedUser"` - PackedPolicySize aws.IntegerValue `query:"PackedPolicySize" xml:"GetFederationTokenResult>PackedPolicySize"` -} - -// GetSessionTokenResult is a wrapper for GetSessionTokenResponse. -type GetSessionTokenResult struct { - Credentials *Credentials `query:"Credentials" xml:"GetSessionTokenResult>Credentials"` -} - -// avoid errors if the packages aren't referenced -var _ time.Time - -var _ xml.Decoder -var _ = io.EOF diff --git a/src/github.com/getlantern/aws-sdk-go/gen/support/support.go b/src/github.com/getlantern/aws-sdk-go/gen/support/support.go deleted file mode 100644 index fec799e57d..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/gen/support/support.go +++ /dev/null @@ -1,535 +0,0 @@ -// THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. - -// Package support provides a client for AWS Support. -package support - -import ( - "net/http" - "time" - - "github.com/awslabs/aws-sdk-go/aws" - "github.com/awslabs/aws-sdk-go/gen/endpoints" -) - -// Support is a client for AWS Support. -type Support struct { - client *aws.JSONClient -} - -// New returns a new Support client. -func New(creds aws.CredentialsProvider, region string, client *http.Client) *Support { - if client == nil { - client = http.DefaultClient - } - - endpoint, service, region := endpoints.Lookup("support", region) - - return &Support{ - client: &aws.JSONClient{ - Context: aws.Context{ - Credentials: creds, - Service: service, - Region: region, - }, Client: client, - Endpoint: endpoint, - JSONVersion: "1.1", - TargetPrefix: "AWSSupport_20130415", - }, - } -} - -// AddAttachmentsToSet adds one or more attachments to an attachment set. -// If an AttachmentSetId is not specified, a new attachment set is created, -// and the ID of the set is returned in the response. If an AttachmentSetId -// is specified, the attachments are added to the specified set, if it -// exists. An attachment set is a temporary container for attachments that -// are to be added to a case or case communication. The set is available -// for one hour after it is created; the ExpiryTime returned in the -// response indicates when the set expires. The maximum number of -// attachments in a set is 3, and the maximum size of any attachment in the -// set is 5 -func (c *Support) AddAttachmentsToSet(req *AddAttachmentsToSetRequest) (resp *AddAttachmentsToSetResponse, err error) { - resp = &AddAttachmentsToSetResponse{} - err = c.client.Do("AddAttachmentsToSet", "POST", "/", req, resp) - return -} - -// AddCommunicationToCase adds additional customer communication to an AWS -// Support case. You use the CaseId value to identify the case to add -// communication to. You can list a set of email addresses to copy on the -// communication using the CcEmailAddresses value. The CommunicationBody -// value contains the text of the communication. The response indicates the -// success or failure of the request. This operation implements a subset of -// the features of the AWS Support Center. -func (c *Support) AddCommunicationToCase(req *AddCommunicationToCaseRequest) (resp *AddCommunicationToCaseResponse, err error) { - resp = &AddCommunicationToCaseResponse{} - err = c.client.Do("AddCommunicationToCase", "POST", "/", req, resp) - return -} - -// CreateCase creates a new case in the AWS Support Center. This operation -// is modeled on the behavior of the AWS Support Center Create Case page. -// Its parameters require you to specify the following information: -// IssueType. The type of issue for the case. You can specify either -// "customer-service" or "technical." If you do not indicate a value, the -// default is "technical." ServiceCode. The code for an AWS service. You -// obtain the ServiceCode by calling DescribeServices . CategoryCode. The -// category for the service defined for the ServiceCode value. You also -// obtain the category code for a service by calling DescribeServices . -// Each AWS service defines its own set of category codes. SeverityCode. A -// value that indicates the urgency of the case, which in turn determines -// the response time according to your service level agreement with AWS -// Support. You obtain the SeverityCode by calling DescribeSeverityLevels -// Subject. The Subject field on the AWS Support Center Create Case page. -// CommunicationBody. The Description field on the AWS Support Center -// Create Case page. AttachmentSetId. The ID of a set of attachments that -// has been created by using AddAttachmentsToSet Language. The human -// language in which AWS Support handles the case. English and Japanese are -// currently supported. CcEmailAddresses. The AWS Support Center field on -// the Create Case page. You can list email addresses to be copied on any -// correspondence about the case. The account that opens the case is -// already identified by passing the AWS Credentials in the method or in a -// method or function call from one of the programming languages supported -// by an AWS . To add additional communication or attachments to an -// existing case, use AddCommunicationToCase A successful CreateCase -// request returns an AWS Support case number. Case numbers are used by the -// DescribeCases operation to retrieve existing AWS Support cases. -func (c *Support) CreateCase(req *CreateCaseRequest) (resp *CreateCaseResponse, err error) { - resp = &CreateCaseResponse{} - err = c.client.Do("CreateCase", "POST", "/", req, resp) - return -} - -// DescribeAttachment returns the attachment that has the specified ID. -// Attachment IDs are generated by the case management system when you add -// an attachment to a case or case communication. Attachment IDs are -// returned in the AttachmentDetails objects that are returned by the -// DescribeCommunications operation. -func (c *Support) DescribeAttachment(req *DescribeAttachmentRequest) (resp *DescribeAttachmentResponse, err error) { - resp = &DescribeAttachmentResponse{} - err = c.client.Do("DescribeAttachment", "POST", "/", req, resp) - return -} - -// DescribeCases returns a list of cases that you specify by passing one or -// more case IDs. In addition, you can filter the cases by date by setting -// values for the AfterTime and BeforeTime request parameters. You can set -// values for the IncludeResolvedCases and IncludeCommunications request -// parameters to control how much information is returned. Case data is -// available for 12 months after creation. If a case was created more than -// 12 months ago, a request for data might cause an error. The response -// returns the following in format: One or more CaseDetails data types. One -// or more NextToken values, which specify where to paginate the returned -// records represented by the CaseDetails objects. -func (c *Support) DescribeCases(req *DescribeCasesRequest) (resp *DescribeCasesResponse, err error) { - resp = &DescribeCasesResponse{} - err = c.client.Do("DescribeCases", "POST", "/", req, resp) - return -} - -// DescribeCommunications returns communications (and attachments) for one -// or more support cases. You can use the AfterTime and BeforeTime -// parameters to filter by date. You can use the CaseId parameter to -// restrict the results to a particular case. Case data is available for 12 -// months after creation. If a case was created more than 12 months ago, a -// request for data might cause an error. You can use the MaxResults and -// NextToken parameters to control the pagination of the result set. Set -// MaxResults to the number of cases you want displayed on each page, and -// use NextToken to specify the resumption of pagination. -func (c *Support) DescribeCommunications(req *DescribeCommunicationsRequest) (resp *DescribeCommunicationsResponse, err error) { - resp = &DescribeCommunicationsResponse{} - err = c.client.Do("DescribeCommunications", "POST", "/", req, resp) - return -} - -// DescribeServices returns the current list of AWS services and a list of -// service categories that applies to each one. You then use service names -// and categories in your CreateCase requests. Each AWS service has its own -// set of categories. The service codes and category codes correspond to -// the values that are displayed in the Service and Category drop-down -// lists on the AWS Support Center Create Case page. The values in those -// fields, however, do not necessarily match the service codes and -// categories returned by the DescribeServices request. Always use the -// service codes and categories obtained programmatically. This practice -// ensures that you always have the most recent set of service and category -// codes. -func (c *Support) DescribeServices(req *DescribeServicesRequest) (resp *DescribeServicesResponse, err error) { - resp = &DescribeServicesResponse{} - err = c.client.Do("DescribeServices", "POST", "/", req, resp) - return -} - -// DescribeSeverityLevels returns the list of severity levels that you can -// assign to an AWS Support case. The severity level for a case is also a -// field in the CaseDetails data type included in any CreateCase request. -func (c *Support) DescribeSeverityLevels(req *DescribeSeverityLevelsRequest) (resp *DescribeSeverityLevelsResponse, err error) { - resp = &DescribeSeverityLevelsResponse{} - err = c.client.Do("DescribeSeverityLevels", "POST", "/", req, resp) - return -} - -// DescribeTrustedAdvisorCheckRefreshStatuses returns the refresh status of -// the Trusted Advisor checks that have the specified check IDs. Check IDs -// can be obtained by calling DescribeTrustedAdvisorChecks -func (c *Support) DescribeTrustedAdvisorCheckRefreshStatuses(req *DescribeTrustedAdvisorCheckRefreshStatusesRequest) (resp *DescribeTrustedAdvisorCheckRefreshStatusesResponse, err error) { - resp = &DescribeTrustedAdvisorCheckRefreshStatusesResponse{} - err = c.client.Do("DescribeTrustedAdvisorCheckRefreshStatuses", "POST", "/", req, resp) - return -} - -// DescribeTrustedAdvisorCheckResult returns the results of the Trusted -// Advisor check that has the specified check ID. Check IDs can be obtained -// by calling DescribeTrustedAdvisorChecks The response contains a -// TrustedAdvisorCheckResult object, which contains these three objects: In -// addition, the response contains these fields: Status. The alert status -// of the check: "ok" (green), "warning" (yellow), "error" (red), or -// "not_available". Timestamp. The time of the last refresh of the check. -// CheckId. The unique identifier for the check. -func (c *Support) DescribeTrustedAdvisorCheckResult(req *DescribeTrustedAdvisorCheckResultRequest) (resp *DescribeTrustedAdvisorCheckResultResponse, err error) { - resp = &DescribeTrustedAdvisorCheckResultResponse{} - err = c.client.Do("DescribeTrustedAdvisorCheckResult", "POST", "/", req, resp) - return -} - -// DescribeTrustedAdvisorCheckSummaries returns the summaries of the -// results of the Trusted Advisor checks that have the specified check IDs. -// Check IDs can be obtained by calling DescribeTrustedAdvisorChecks The -// response contains an array of TrustedAdvisorCheckSummary objects. -func (c *Support) DescribeTrustedAdvisorCheckSummaries(req *DescribeTrustedAdvisorCheckSummariesRequest) (resp *DescribeTrustedAdvisorCheckSummariesResponse, err error) { - resp = &DescribeTrustedAdvisorCheckSummariesResponse{} - err = c.client.Do("DescribeTrustedAdvisorCheckSummaries", "POST", "/", req, resp) - return -} - -// DescribeTrustedAdvisorChecks returns information about all available -// Trusted Advisor checks, including name, ID, category, description, and -// metadata. You must specify a language code; English ("en") and Japanese -// ("ja") are currently supported. The response contains a -// TrustedAdvisorCheckDescription for each check. -func (c *Support) DescribeTrustedAdvisorChecks(req *DescribeTrustedAdvisorChecksRequest) (resp *DescribeTrustedAdvisorChecksResponse, err error) { - resp = &DescribeTrustedAdvisorChecksResponse{} - err = c.client.Do("DescribeTrustedAdvisorChecks", "POST", "/", req, resp) - return -} - -// RefreshTrustedAdvisorCheck requests a refresh of the Trusted Advisor -// check that has the specified check ID. Check IDs can be obtained by -// calling DescribeTrustedAdvisorChecks The response contains a -// TrustedAdvisorCheckRefreshStatus object, which contains these fields: -// Status. The refresh status of the check: "none", "enqueued", -// "processing", "success", or "abandoned". MillisUntilNextRefreshable. The -// amount of time, in milliseconds, until the check is eligible for -// refresh. CheckId. The unique identifier for the check. -func (c *Support) RefreshTrustedAdvisorCheck(req *RefreshTrustedAdvisorCheckRequest) (resp *RefreshTrustedAdvisorCheckResponse, err error) { - resp = &RefreshTrustedAdvisorCheckResponse{} - err = c.client.Do("RefreshTrustedAdvisorCheck", "POST", "/", req, resp) - return -} - -// ResolveCase takes a CaseId and returns the initial state of the case -// along with the state of the case after the call to ResolveCase -// completed. -func (c *Support) ResolveCase(req *ResolveCaseRequest) (resp *ResolveCaseResponse, err error) { - resp = &ResolveCaseResponse{} - err = c.client.Do("ResolveCase", "POST", "/", req, resp) - return -} - -// AddAttachmentsToSetRequest is undocumented. -type AddAttachmentsToSetRequest struct { - AttachmentSetID aws.StringValue `json:"attachmentSetId,omitempty"` - Attachments []Attachment `json:"attachments"` -} - -// AddAttachmentsToSetResponse is undocumented. -type AddAttachmentsToSetResponse struct { - AttachmentSetID aws.StringValue `json:"attachmentSetId,omitempty"` - ExpiryTime aws.StringValue `json:"expiryTime,omitempty"` -} - -// AddCommunicationToCaseRequest is undocumented. -type AddCommunicationToCaseRequest struct { - AttachmentSetID aws.StringValue `json:"attachmentSetId,omitempty"` - CaseID aws.StringValue `json:"caseId,omitempty"` - CCEmailAddresses []string `json:"ccEmailAddresses,omitempty"` - CommunicationBody aws.StringValue `json:"communicationBody"` -} - -// AddCommunicationToCaseResponse is undocumented. -type AddCommunicationToCaseResponse struct { - Result aws.BooleanValue `json:"result,omitempty"` -} - -// Attachment is undocumented. -type Attachment struct { - Data []byte `json:"data,omitempty"` - FileName aws.StringValue `json:"fileName,omitempty"` -} - -// AttachmentDetails is undocumented. -type AttachmentDetails struct { - AttachmentID aws.StringValue `json:"attachmentId,omitempty"` - FileName aws.StringValue `json:"fileName,omitempty"` -} - -// CaseDetails is undocumented. -type CaseDetails struct { - CaseID aws.StringValue `json:"caseId,omitempty"` - CategoryCode aws.StringValue `json:"categoryCode,omitempty"` - CCEmailAddresses []string `json:"ccEmailAddresses,omitempty"` - DisplayID aws.StringValue `json:"displayId,omitempty"` - Language aws.StringValue `json:"language,omitempty"` - RecentCommunications *RecentCaseCommunications `json:"recentCommunications,omitempty"` - ServiceCode aws.StringValue `json:"serviceCode,omitempty"` - SeverityCode aws.StringValue `json:"severityCode,omitempty"` - Status aws.StringValue `json:"status,omitempty"` - Subject aws.StringValue `json:"subject,omitempty"` - SubmittedBy aws.StringValue `json:"submittedBy,omitempty"` - TimeCreated aws.StringValue `json:"timeCreated,omitempty"` -} - -// Category is undocumented. -type Category struct { - Code aws.StringValue `json:"code,omitempty"` - Name aws.StringValue `json:"name,omitempty"` -} - -// Communication is undocumented. -type Communication struct { - AttachmentSet []AttachmentDetails `json:"attachmentSet,omitempty"` - Body aws.StringValue `json:"body,omitempty"` - CaseID aws.StringValue `json:"caseId,omitempty"` - SubmittedBy aws.StringValue `json:"submittedBy,omitempty"` - TimeCreated aws.StringValue `json:"timeCreated,omitempty"` -} - -// CreateCaseRequest is undocumented. -type CreateCaseRequest struct { - AttachmentSetID aws.StringValue `json:"attachmentSetId,omitempty"` - CategoryCode aws.StringValue `json:"categoryCode,omitempty"` - CCEmailAddresses []string `json:"ccEmailAddresses,omitempty"` - CommunicationBody aws.StringValue `json:"communicationBody"` - IssueType aws.StringValue `json:"issueType,omitempty"` - Language aws.StringValue `json:"language,omitempty"` - ServiceCode aws.StringValue `json:"serviceCode,omitempty"` - SeverityCode aws.StringValue `json:"severityCode,omitempty"` - Subject aws.StringValue `json:"subject"` -} - -// CreateCaseResponse is undocumented. -type CreateCaseResponse struct { - CaseID aws.StringValue `json:"caseId,omitempty"` -} - -// DescribeAttachmentRequest is undocumented. -type DescribeAttachmentRequest struct { - AttachmentID aws.StringValue `json:"attachmentId"` -} - -// DescribeAttachmentResponse is undocumented. -type DescribeAttachmentResponse struct { - Attachment *Attachment `json:"attachment,omitempty"` -} - -// DescribeCasesRequest is undocumented. -type DescribeCasesRequest struct { - AfterTime aws.StringValue `json:"afterTime,omitempty"` - BeforeTime aws.StringValue `json:"beforeTime,omitempty"` - CaseIDList []string `json:"caseIdList,omitempty"` - DisplayID aws.StringValue `json:"displayId,omitempty"` - IncludeCommunications aws.BooleanValue `json:"includeCommunications,omitempty"` - IncludeResolvedCases aws.BooleanValue `json:"includeResolvedCases,omitempty"` - Language aws.StringValue `json:"language,omitempty"` - MaxResults aws.IntegerValue `json:"maxResults,omitempty"` - NextToken aws.StringValue `json:"nextToken,omitempty"` -} - -// DescribeCasesResponse is undocumented. -type DescribeCasesResponse struct { - Cases []CaseDetails `json:"cases,omitempty"` - NextToken aws.StringValue `json:"nextToken,omitempty"` -} - -// DescribeCommunicationsRequest is undocumented. -type DescribeCommunicationsRequest struct { - AfterTime aws.StringValue `json:"afterTime,omitempty"` - BeforeTime aws.StringValue `json:"beforeTime,omitempty"` - CaseID aws.StringValue `json:"caseId"` - MaxResults aws.IntegerValue `json:"maxResults,omitempty"` - NextToken aws.StringValue `json:"nextToken,omitempty"` -} - -// DescribeCommunicationsResponse is undocumented. -type DescribeCommunicationsResponse struct { - Communications []Communication `json:"communications,omitempty"` - NextToken aws.StringValue `json:"nextToken,omitempty"` -} - -// DescribeServicesRequest is undocumented. -type DescribeServicesRequest struct { - Language aws.StringValue `json:"language,omitempty"` - ServiceCodeList []string `json:"serviceCodeList,omitempty"` -} - -// DescribeServicesResponse is undocumented. -type DescribeServicesResponse struct { - Services []Service `json:"services,omitempty"` -} - -// DescribeSeverityLevelsRequest is undocumented. -type DescribeSeverityLevelsRequest struct { - Language aws.StringValue `json:"language,omitempty"` -} - -// DescribeSeverityLevelsResponse is undocumented. -type DescribeSeverityLevelsResponse struct { - SeverityLevels []SeverityLevel `json:"severityLevels,omitempty"` -} - -// DescribeTrustedAdvisorCheckRefreshStatusesRequest is undocumented. -type DescribeTrustedAdvisorCheckRefreshStatusesRequest struct { - CheckIDs []string `json:"checkIds"` -} - -// DescribeTrustedAdvisorCheckRefreshStatusesResponse is undocumented. -type DescribeTrustedAdvisorCheckRefreshStatusesResponse struct { - Statuses []TrustedAdvisorCheckRefreshStatus `json:"statuses"` -} - -// DescribeTrustedAdvisorCheckResultRequest is undocumented. -type DescribeTrustedAdvisorCheckResultRequest struct { - CheckID aws.StringValue `json:"checkId"` - Language aws.StringValue `json:"language,omitempty"` -} - -// DescribeTrustedAdvisorCheckResultResponse is undocumented. -type DescribeTrustedAdvisorCheckResultResponse struct { - Result *TrustedAdvisorCheckResult `json:"result,omitempty"` -} - -// DescribeTrustedAdvisorCheckSummariesRequest is undocumented. -type DescribeTrustedAdvisorCheckSummariesRequest struct { - CheckIDs []string `json:"checkIds"` -} - -// DescribeTrustedAdvisorCheckSummariesResponse is undocumented. -type DescribeTrustedAdvisorCheckSummariesResponse struct { - Summaries []TrustedAdvisorCheckSummary `json:"summaries"` -} - -// DescribeTrustedAdvisorChecksRequest is undocumented. -type DescribeTrustedAdvisorChecksRequest struct { - Language aws.StringValue `json:"language"` -} - -// DescribeTrustedAdvisorChecksResponse is undocumented. -type DescribeTrustedAdvisorChecksResponse struct { - Checks []TrustedAdvisorCheckDescription `json:"checks"` -} - -// RecentCaseCommunications is undocumented. -type RecentCaseCommunications struct { - Communications []Communication `json:"communications,omitempty"` - NextToken aws.StringValue `json:"nextToken,omitempty"` -} - -// RefreshTrustedAdvisorCheckRequest is undocumented. -type RefreshTrustedAdvisorCheckRequest struct { - CheckID aws.StringValue `json:"checkId"` -} - -// RefreshTrustedAdvisorCheckResponse is undocumented. -type RefreshTrustedAdvisorCheckResponse struct { - Status *TrustedAdvisorCheckRefreshStatus `json:"status"` -} - -// ResolveCaseRequest is undocumented. -type ResolveCaseRequest struct { - CaseID aws.StringValue `json:"caseId,omitempty"` -} - -// ResolveCaseResponse is undocumented. -type ResolveCaseResponse struct { - FinalCaseStatus aws.StringValue `json:"finalCaseStatus,omitempty"` - InitialCaseStatus aws.StringValue `json:"initialCaseStatus,omitempty"` -} - -// Service is undocumented. -type Service struct { - Categories []Category `json:"categories,omitempty"` - Code aws.StringValue `json:"code,omitempty"` - Name aws.StringValue `json:"name,omitempty"` -} - -// SeverityLevel is undocumented. -type SeverityLevel struct { - Code aws.StringValue `json:"code,omitempty"` - Name aws.StringValue `json:"name,omitempty"` -} - -// TrustedAdvisorCategorySpecificSummary is undocumented. -type TrustedAdvisorCategorySpecificSummary struct { - CostOptimizing *TrustedAdvisorCostOptimizingSummary `json:"costOptimizing,omitempty"` -} - -// TrustedAdvisorCheckDescription is undocumented. -type TrustedAdvisorCheckDescription struct { - Category aws.StringValue `json:"category"` - Description aws.StringValue `json:"description"` - ID aws.StringValue `json:"id"` - Metadata []string `json:"metadata"` - Name aws.StringValue `json:"name"` -} - -// TrustedAdvisorCheckRefreshStatus is undocumented. -type TrustedAdvisorCheckRefreshStatus struct { - CheckID aws.StringValue `json:"checkId"` - MillisUntilNextRefreshable aws.LongValue `json:"millisUntilNextRefreshable"` - Status aws.StringValue `json:"status"` -} - -// TrustedAdvisorCheckResult is undocumented. -type TrustedAdvisorCheckResult struct { - CategorySpecificSummary *TrustedAdvisorCategorySpecificSummary `json:"categorySpecificSummary"` - CheckID aws.StringValue `json:"checkId"` - FlaggedResources []TrustedAdvisorResourceDetail `json:"flaggedResources"` - ResourcesSummary *TrustedAdvisorResourcesSummary `json:"resourcesSummary"` - Status aws.StringValue `json:"status"` - Timestamp aws.StringValue `json:"timestamp"` -} - -// TrustedAdvisorCheckSummary is undocumented. -type TrustedAdvisorCheckSummary struct { - CategorySpecificSummary *TrustedAdvisorCategorySpecificSummary `json:"categorySpecificSummary"` - CheckID aws.StringValue `json:"checkId"` - HasFlaggedResources aws.BooleanValue `json:"hasFlaggedResources,omitempty"` - ResourcesSummary *TrustedAdvisorResourcesSummary `json:"resourcesSummary"` - Status aws.StringValue `json:"status"` - Timestamp aws.StringValue `json:"timestamp"` -} - -// TrustedAdvisorCostOptimizingSummary is undocumented. -type TrustedAdvisorCostOptimizingSummary struct { - EstimatedMonthlySavings aws.DoubleValue `json:"estimatedMonthlySavings"` - EstimatedPercentMonthlySavings aws.DoubleValue `json:"estimatedPercentMonthlySavings"` -} - -// TrustedAdvisorResourceDetail is undocumented. -type TrustedAdvisorResourceDetail struct { - IsSuppressed aws.BooleanValue `json:"isSuppressed,omitempty"` - Metadata []string `json:"metadata"` - Region aws.StringValue `json:"region"` - ResourceID aws.StringValue `json:"resourceId"` - Status aws.StringValue `json:"status"` -} - -// TrustedAdvisorResourcesSummary is undocumented. -type TrustedAdvisorResourcesSummary struct { - ResourcesFlagged aws.LongValue `json:"resourcesFlagged"` - ResourcesIgnored aws.LongValue `json:"resourcesIgnored"` - ResourcesProcessed aws.LongValue `json:"resourcesProcessed"` - ResourcesSuppressed aws.LongValue `json:"resourcesSuppressed"` -} - -// avoid errors if the packages aren't referenced -var _ time.Time diff --git a/src/github.com/getlantern/aws-sdk-go/gen/swf/swf.go b/src/github.com/getlantern/aws-sdk-go/gen/swf/swf.go deleted file mode 100644 index b50e8b9337..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/gen/swf/swf.go +++ /dev/null @@ -1,2028 +0,0 @@ -// THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. - -// Package swf provides a client for Amazon Simple Workflow Service. -package swf - -import ( - "net/http" - "time" - - "github.com/awslabs/aws-sdk-go/aws" - "github.com/awslabs/aws-sdk-go/gen/endpoints" -) - -// SWF is a client for Amazon Simple Workflow Service. -type SWF struct { - client *aws.JSONClient -} - -// New returns a new SWF client. -func New(creds aws.CredentialsProvider, region string, client *http.Client) *SWF { - if client == nil { - client = http.DefaultClient - } - - endpoint, service, region := endpoints.Lookup("swf", region) - - return &SWF{ - client: &aws.JSONClient{ - Context: aws.Context{ - Credentials: creds, - Service: service, - Region: region, - }, Client: client, - Endpoint: endpoint, - JSONVersion: "1.0", - TargetPrefix: "SimpleWorkflowService", - }, - } -} - -// CountClosedWorkflowExecutions returns the number of closed workflow -// executions within the given domain that meet the specified filtering -// criteria. This operation is eventually consistent. The results are best -// effort and may not exactly reflect recent updates and changes. You can -// use IAM policies to control this action's access to Amazon SWF resources -// as follows: Use a Resource element with the domain name to limit the -// action to only specified domains. Use an Action element to allow or deny -// permission to call this action. Constrain the following parameters by -// using a Condition element with the appropriate keys. tagFilter.tag : -// String constraint. The key is swf:tagFilter.tag typeFilter.name : String -// constraint. The key is swf:typeFilter.name typeFilter.version : String -// constraint. The key is swf:typeFilter.version If the caller does not -// have sufficient permissions to invoke the action, or the parameter -// values fall outside the specified constraints, the action fails. The -// associated event attribute's cause parameter will be set to For details -// and example IAM policies, see Using IAM to Manage Access to Amazon SWF -// Workflows -func (c *SWF) CountClosedWorkflowExecutions(req *CountClosedWorkflowExecutionsInput) (resp *WorkflowExecutionCount, err error) { - resp = &WorkflowExecutionCount{} - err = c.client.Do("CountClosedWorkflowExecutions", "POST", "/", req, resp) - return -} - -// CountOpenWorkflowExecutions returns the number of open workflow -// executions within the given domain that meet the specified filtering -// criteria. This operation is eventually consistent. The results are best -// effort and may not exactly reflect recent updates and changes. You can -// use IAM policies to control this action's access to Amazon SWF resources -// as follows: Use a Resource element with the domain name to limit the -// action to only specified domains. Use an Action element to allow or deny -// permission to call this action. Constrain the following parameters by -// using a Condition element with the appropriate keys. tagFilter.tag : -// String constraint. The key is swf:tagFilter.tag typeFilter.name : String -// constraint. The key is swf:typeFilter.name typeFilter.version : String -// constraint. The key is swf:typeFilter.version If the caller does not -// have sufficient permissions to invoke the action, or the parameter -// values fall outside the specified constraints, the action fails. The -// associated event attribute's cause parameter will be set to For details -// and example IAM policies, see Using IAM to Manage Access to Amazon SWF -// Workflows -func (c *SWF) CountOpenWorkflowExecutions(req *CountOpenWorkflowExecutionsInput) (resp *WorkflowExecutionCount, err error) { - resp = &WorkflowExecutionCount{} - err = c.client.Do("CountOpenWorkflowExecutions", "POST", "/", req, resp) - return -} - -// CountPendingActivityTasks returns the estimated number of activity tasks -// in the specified task list. The count returned is an approximation and -// is not guaranteed to be exact. If you specify a task list that no -// activity task was ever scheduled in then 0 will be returned. You can use -// IAM policies to control this action's access to Amazon SWF resources as -// follows: Use a Resource element with the domain name to limit the action -// to only specified domains. Use an Action element to allow or deny -// permission to call this action. Constrain the taskList.name parameter by -// using a Condition element with the swf:taskList.name key to allow the -// action to access only certain task lists. If the caller does not have -// sufficient permissions to invoke the action, or the parameter values -// fall outside the specified constraints, the action fails. The associated -// event attribute's cause parameter will be set to For details and example -// IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows -func (c *SWF) CountPendingActivityTasks(req *CountPendingActivityTasksInput) (resp *PendingTaskCount, err error) { - resp = &PendingTaskCount{} - err = c.client.Do("CountPendingActivityTasks", "POST", "/", req, resp) - return -} - -// CountPendingDecisionTasks returns the estimated number of decision tasks -// in the specified task list. The count returned is an approximation and -// is not guaranteed to be exact. If you specify a task list that no -// decision task was ever scheduled in then 0 will be returned. You can use -// IAM policies to control this action's access to Amazon SWF resources as -// follows: Use a Resource element with the domain name to limit the action -// to only specified domains. Use an Action element to allow or deny -// permission to call this action. Constrain the taskList.name parameter by -// using a Condition element with the swf:taskList.name key to allow the -// action to access only certain task lists. If the caller does not have -// sufficient permissions to invoke the action, or the parameter values -// fall outside the specified constraints, the action fails. The associated -// event attribute's cause parameter will be set to For details and example -// IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows -func (c *SWF) CountPendingDecisionTasks(req *CountPendingDecisionTasksInput) (resp *PendingTaskCount, err error) { - resp = &PendingTaskCount{} - err = c.client.Do("CountPendingDecisionTasks", "POST", "/", req, resp) - return -} - -// DeprecateActivityType deprecates the specified activity type . After an -// activity type has been deprecated, you cannot create new tasks of that -// activity type. Tasks of this type that were scheduled before the type -// was deprecated will continue to run. This operation is eventually -// consistent. The results are best effort and may not exactly reflect -// recent updates and changes. You can use IAM policies to control this -// action's access to Amazon SWF resources as follows: Use a Resource -// element with the domain name to limit the action to only specified -// domains. Use an Action element to allow or deny permission to call this -// action. Constrain the following parameters by using a Condition element -// with the appropriate keys. activityType.name : String constraint. The -// key is swf:activityType.name activityType.version : String constraint. -// The key is swf:activityType.version If the caller does not have -// sufficient permissions to invoke the action, or the parameter values -// fall outside the specified constraints, the action fails. The associated -// event attribute's cause parameter will be set to For details and example -// IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows -func (c *SWF) DeprecateActivityType(req *DeprecateActivityTypeInput) (err error) { - // NRE - err = c.client.Do("DeprecateActivityType", "POST", "/", req, nil) - return -} - -// DeprecateDomain deprecates the specified domain. After a domain has been -// deprecated it cannot be used to create new workflow executions or -// register new types. However, you can still use visibility actions on -// this domain. Deprecating a domain also deprecates all activity and -// workflow types registered in the domain. Executions that were started -// before the domain was deprecated will continue to run. This operation is -// eventually consistent. The results are best effort and may not exactly -// reflect recent updates and changes. You can use IAM policies to control -// this action's access to Amazon SWF resources as follows: Use a Resource -// element with the domain name to limit the action to only specified -// domains. Use an Action element to allow or deny permission to call this -// action. You cannot use an IAM policy to constrain this action's -// parameters. If the caller does not have sufficient permissions to invoke -// the action, or the parameter values fall outside the specified -// constraints, the action fails. The associated event attribute's cause -// parameter will be set to For details and example IAM policies, see Using -// IAM to Manage Access to Amazon SWF Workflows -func (c *SWF) DeprecateDomain(req *DeprecateDomainInput) (err error) { - // NRE - err = c.client.Do("DeprecateDomain", "POST", "/", req, nil) - return -} - -// DeprecateWorkflowType deprecates the specified workflow type . After a -// workflow type has been deprecated, you cannot create new executions of -// that type. Executions that were started before the type was deprecated -// will continue to run. A deprecated workflow type may still be used when -// calling visibility actions. This operation is eventually consistent. The -// results are best effort and may not exactly reflect recent updates and -// changes. You can use IAM policies to control this action's access to -// Amazon SWF resources as follows: Use a Resource element with the domain -// name to limit the action to only specified domains. Use an Action -// element to allow or deny permission to call this action. Constrain the -// following parameters by using a Condition element with the appropriate -// keys. workflowType.name : String constraint. The key is -// swf:workflowType.name workflowType.version : String constraint. The key -// is swf:workflowType.version If the caller does not have sufficient -// permissions to invoke the action, or the parameter values fall outside -// the specified constraints, the action fails. The associated event -// attribute's cause parameter will be set to For details and example IAM -// policies, see Using IAM to Manage Access to Amazon SWF Workflows -func (c *SWF) DeprecateWorkflowType(req *DeprecateWorkflowTypeInput) (err error) { - // NRE - err = c.client.Do("DeprecateWorkflowType", "POST", "/", req, nil) - return -} - -// DescribeActivityType returns information about the specified activity -// type. This includes configuration settings provided when the type was -// registered and other general information about the type. You can use IAM -// policies to control this action's access to Amazon SWF resources as -// follows: Use a Resource element with the domain name to limit the action -// to only specified domains. Use an Action element to allow or deny -// permission to call this action. Constrain the following parameters by -// using a Condition element with the appropriate keys. activityType.name : -// String constraint. The key is swf:activityType.name activityType.version -// : String constraint. The key is swf:activityType.version If the caller -// does not have sufficient permissions to invoke the action, or the -// parameter values fall outside the specified constraints, the action -// fails. The associated event attribute's cause parameter will be set to -// For details and example IAM policies, see Using IAM to Manage Access to -// Amazon SWF Workflows -func (c *SWF) DescribeActivityType(req *DescribeActivityTypeInput) (resp *ActivityTypeDetail, err error) { - resp = &ActivityTypeDetail{} - err = c.client.Do("DescribeActivityType", "POST", "/", req, resp) - return -} - -// DescribeDomain returns information about the specified domain, including -// description and status. You can use IAM policies to control this -// action's access to Amazon SWF resources as follows: Use a Resource -// element with the domain name to limit the action to only specified -// domains. Use an Action element to allow or deny permission to call this -// action. You cannot use an IAM policy to constrain this action's -// parameters. If the caller does not have sufficient permissions to invoke -// the action, or the parameter values fall outside the specified -// constraints, the action fails. The associated event attribute's cause -// parameter will be set to For details and example IAM policies, see Using -// IAM to Manage Access to Amazon SWF Workflows -func (c *SWF) DescribeDomain(req *DescribeDomainInput) (resp *DomainDetail, err error) { - resp = &DomainDetail{} - err = c.client.Do("DescribeDomain", "POST", "/", req, resp) - return -} - -// DescribeWorkflowExecution returns information about the specified -// workflow execution including its type and some statistics. This -// operation is eventually consistent. The results are best effort and may -// not exactly reflect recent updates and changes. You can use IAM policies -// to control this action's access to Amazon SWF resources as follows: Use -// a Resource element with the domain name to limit the action to only -// specified domains. Use an Action element to allow or deny permission to -// call this action. You cannot use an IAM policy to constrain this -// action's parameters. If the caller does not have sufficient permissions -// to invoke the action, or the parameter values fall outside the specified -// constraints, the action fails. The associated event attribute's cause -// parameter will be set to For details and example IAM policies, see Using -// IAM to Manage Access to Amazon SWF Workflows -func (c *SWF) DescribeWorkflowExecution(req *DescribeWorkflowExecutionInput) (resp *WorkflowExecutionDetail, err error) { - resp = &WorkflowExecutionDetail{} - err = c.client.Do("DescribeWorkflowExecution", "POST", "/", req, resp) - return -} - -// DescribeWorkflowType returns information about the specified workflow -// type . This includes configuration settings specified when the type was -// registered and other information such as creation date, current status, -// etc. You can use IAM policies to control this action's access to Amazon -// SWF resources as follows: Use a Resource element with the domain name to -// limit the action to only specified domains. Use an Action element to -// allow or deny permission to call this action. Constrain the following -// parameters by using a Condition element with the appropriate keys. -// workflowType.name : String constraint. The key is swf:workflowType.name -// workflowType.version : String constraint. The key is -// swf:workflowType.version If the caller does not have sufficient -// permissions to invoke the action, or the parameter values fall outside -// the specified constraints, the action fails. The associated event -// attribute's cause parameter will be set to For details and example IAM -// policies, see Using IAM to Manage Access to Amazon SWF Workflows -func (c *SWF) DescribeWorkflowType(req *DescribeWorkflowTypeInput) (resp *WorkflowTypeDetail, err error) { - resp = &WorkflowTypeDetail{} - err = c.client.Do("DescribeWorkflowType", "POST", "/", req, resp) - return -} - -// GetWorkflowExecutionHistory returns the history of the specified -// workflow execution. The results may be split into multiple pages. To -// retrieve subsequent pages, make the call again using the nextPageToken -// returned by the initial call. This operation is eventually consistent. -// The results are best effort and may not exactly reflect recent updates -// and changes. You can use IAM policies to control this action's access to -// Amazon SWF resources as follows: Use a Resource element with the domain -// name to limit the action to only specified domains. Use an Action -// element to allow or deny permission to call this action. You cannot use -// an IAM policy to constrain this action's parameters. If the caller does -// not have sufficient permissions to invoke the action, or the parameter -// values fall outside the specified constraints, the action fails. The -// associated event attribute's cause parameter will be set to For details -// and example IAM policies, see Using IAM to Manage Access to Amazon SWF -// Workflows -func (c *SWF) GetWorkflowExecutionHistory(req *GetWorkflowExecutionHistoryInput) (resp *History, err error) { - resp = &History{} - err = c.client.Do("GetWorkflowExecutionHistory", "POST", "/", req, resp) - return -} - -// ListActivityTypes returns information about all activities registered in -// the specified domain that match the specified name and registration -// status. The result includes information like creation date, current -// status of the activity, etc. The results may be split into multiple -// pages. To retrieve subsequent pages, make the call again using the -// nextPageToken returned by the initial call. You can use IAM policies to -// control this action's access to Amazon SWF resources as follows: Use a -// Resource element with the domain name to limit the action to only -// specified domains. Use an Action element to allow or deny permission to -// call this action. You cannot use an IAM policy to constrain this -// action's parameters. If the caller does not have sufficient permissions -// to invoke the action, or the parameter values fall outside the specified -// constraints, the action fails. The associated event attribute's cause -// parameter will be set to For details and example IAM policies, see Using -// IAM to Manage Access to Amazon SWF Workflows -func (c *SWF) ListActivityTypes(req *ListActivityTypesInput) (resp *ActivityTypeInfos, err error) { - resp = &ActivityTypeInfos{} - err = c.client.Do("ListActivityTypes", "POST", "/", req, resp) - return -} - -// ListClosedWorkflowExecutions returns a list of closed workflow -// executions in the specified domain that meet the filtering criteria. The -// results may be split into multiple pages. To retrieve subsequent pages, -// make the call again using the nextPageToken returned by the initial -// call. This operation is eventually consistent. The results are best -// effort and may not exactly reflect recent updates and changes. You can -// use IAM policies to control this action's access to Amazon SWF resources -// as follows: Use a Resource element with the domain name to limit the -// action to only specified domains. Use an Action element to allow or deny -// permission to call this action. Constrain the following parameters by -// using a Condition element with the appropriate keys. tagFilter.tag : -// String constraint. The key is swf:tagFilter.tag typeFilter.name : String -// constraint. The key is swf:typeFilter.name typeFilter.version : String -// constraint. The key is swf:typeFilter.version If the caller does not -// have sufficient permissions to invoke the action, or the parameter -// values fall outside the specified constraints, the action fails. The -// associated event attribute's cause parameter will be set to For details -// and example IAM policies, see Using IAM to Manage Access to Amazon SWF -// Workflows -func (c *SWF) ListClosedWorkflowExecutions(req *ListClosedWorkflowExecutionsInput) (resp *WorkflowExecutionInfos, err error) { - resp = &WorkflowExecutionInfos{} - err = c.client.Do("ListClosedWorkflowExecutions", "POST", "/", req, resp) - return -} - -// ListDomains returns the list of domains registered in the account. The -// results may be split into multiple pages. To retrieve subsequent pages, -// make the call again using the nextPageToken returned by the initial -// call. This operation is eventually consistent. The results are best -// effort and may not exactly reflect recent updates and changes. You can -// use IAM policies to control this action's access to Amazon SWF resources -// as follows: Use a Resource element with the domain name to limit the -// action to only specified domains. The element must be set to -// arn:aws:swf::AccountID:domain/* , where AccountID is the account ID, -// with no dashes. Use an Action element to allow or deny permission to -// call this action. You cannot use an IAM policy to constrain this -// action's parameters. If the caller does not have sufficient permissions -// to invoke the action, or the parameter values fall outside the specified -// constraints, the action fails. The associated event attribute's cause -// parameter will be set to For details and example IAM policies, see Using -// IAM to Manage Access to Amazon SWF Workflows -func (c *SWF) ListDomains(req *ListDomainsInput) (resp *DomainInfos, err error) { - resp = &DomainInfos{} - err = c.client.Do("ListDomains", "POST", "/", req, resp) - return -} - -// ListOpenWorkflowExecutions returns a list of open workflow executions in -// the specified domain that meet the filtering criteria. The results may -// be split into multiple pages. To retrieve subsequent pages, make the -// call again using the nextPageToken returned by the initial call. This -// operation is eventually consistent. The results are best effort and may -// not exactly reflect recent updates and changes. You can use IAM policies -// to control this action's access to Amazon SWF resources as follows: Use -// a Resource element with the domain name to limit the action to only -// specified domains. Use an Action element to allow or deny permission to -// call this action. Constrain the following parameters by using a -// Condition element with the appropriate keys. tagFilter.tag : String -// constraint. The key is swf:tagFilter.tag typeFilter.name : String -// constraint. The key is swf:typeFilter.name typeFilter.version : String -// constraint. The key is swf:typeFilter.version If the caller does not -// have sufficient permissions to invoke the action, or the parameter -// values fall outside the specified constraints, the action fails. The -// associated event attribute's cause parameter will be set to For details -// and example IAM policies, see Using IAM to Manage Access to Amazon SWF -// Workflows -func (c *SWF) ListOpenWorkflowExecutions(req *ListOpenWorkflowExecutionsInput) (resp *WorkflowExecutionInfos, err error) { - resp = &WorkflowExecutionInfos{} - err = c.client.Do("ListOpenWorkflowExecutions", "POST", "/", req, resp) - return -} - -// ListWorkflowTypes returns information about workflow types in the -// specified domain. The results may be split into multiple pages that can -// be retrieved by making the call repeatedly. You can use IAM policies to -// control this action's access to Amazon SWF resources as follows: Use a -// Resource element with the domain name to limit the action to only -// specified domains. Use an Action element to allow or deny permission to -// call this action. You cannot use an IAM policy to constrain this -// action's parameters. If the caller does not have sufficient permissions -// to invoke the action, or the parameter values fall outside the specified -// constraints, the action fails. The associated event attribute's cause -// parameter will be set to For details and example IAM policies, see Using -// IAM to Manage Access to Amazon SWF Workflows -func (c *SWF) ListWorkflowTypes(req *ListWorkflowTypesInput) (resp *WorkflowTypeInfos, err error) { - resp = &WorkflowTypeInfos{} - err = c.client.Do("ListWorkflowTypes", "POST", "/", req, resp) - return -} - -// PollForActivityTask used by workers to get an ActivityTask from the -// specified activity taskList . This initiates a long poll, where the -// service holds the connection open and responds as soon as a task becomes -// available. The maximum time the service holds on to the request before -// responding is 60 seconds. If no task is available within 60 seconds, the -// poll will return an empty result. An empty result, in this context, -// means that an ActivityTask is returned, but that the value of taskToken -// is an empty string. If a task is returned, the worker should use its -// type to identify and process it correctly. Workers should set their -// client side socket timeout to at least 70 seconds (10 seconds higher -// than the maximum time service may hold the poll request). You can use -// IAM policies to control this action's access to Amazon SWF resources as -// follows: Use a Resource element with the domain name to limit the action -// to only specified domains. Use an Action element to allow or deny -// permission to call this action. Constrain the taskList.name parameter by -// using a Condition element with the swf:taskList.name key to allow the -// action to access only certain task lists. If the caller does not have -// sufficient permissions to invoke the action, or the parameter values -// fall outside the specified constraints, the action fails. The associated -// event attribute's cause parameter will be set to For details and example -// IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows -func (c *SWF) PollForActivityTask(req *PollForActivityTaskInput) (resp *ActivityTask, err error) { - resp = &ActivityTask{} - err = c.client.Do("PollForActivityTask", "POST", "/", req, resp) - return -} - -// PollForDecisionTask used by deciders to get a DecisionTask from the -// specified decision taskList . A decision task may be returned for any -// open workflow execution that is using the specified task list. The task -// includes a paginated view of the history of the workflow execution. The -// decider should use the workflow type and the history to determine how to -// properly handle the task. This action initiates a long poll, where the -// service holds the connection open and responds as soon a task becomes -// available. If no decision task is available in the specified task list -// before the timeout of 60 seconds expires, an empty result is returned. -// An empty result, in this context, means that a DecisionTask is returned, -// but that the value of taskToken is an empty string. Deciders should set -// their client side socket timeout to at least 70 seconds (10 seconds -// higher than the timeout). Because the number of workflow history events -// for a single workflow execution might be very large, the result returned -// might be split up across a number of pages. To retrieve subsequent -// pages, make additional calls to PollForDecisionTask using the -// nextPageToken returned by the initial call. Note that you do not call -// GetWorkflowExecutionHistory with this nextPageToken . Instead, call -// PollForDecisionTask again. You can use IAM policies to control this -// action's access to Amazon SWF resources as follows: Use a Resource -// element with the domain name to limit the action to only specified -// domains. Use an Action element to allow or deny permission to call this -// action. Constrain the taskList.name parameter by using a Condition -// element with the swf:taskList.name key to allow the action to access -// only certain task lists. If the caller does not have sufficient -// permissions to invoke the action, or the parameter values fall outside -// the specified constraints, the action fails. The associated event -// attribute's cause parameter will be set to For details and example IAM -// policies, see Using IAM to Manage Access to Amazon SWF Workflows -func (c *SWF) PollForDecisionTask(req *PollForDecisionTaskInput) (resp *DecisionTask, err error) { - resp = &DecisionTask{} - err = c.client.Do("PollForDecisionTask", "POST", "/", req, resp) - return -} - -// RecordActivityTaskHeartbeat used by activity workers to report to the -// service that the ActivityTask represented by the specified taskToken is -// still making progress. The worker can also (optionally) specify details -// of the progress, for example percent complete, using the details -// parameter. This action can also be used by the worker as a mechanism to -// check if cancellation is being requested for the activity task. If a -// cancellation is being attempted for the specified task, then the boolean -// cancelRequested flag returned by the service is set to true This action -// resets the taskHeartbeatTimeout clock. The taskHeartbeatTimeout is -// specified in RegisterActivityType This action does not in itself create -// an event in the workflow execution history. However, if the task times -// out, the workflow execution history will contain a ActivityTaskTimedOut -// event that contains the information from the last heartbeat generated by -// the activity worker. The taskStartToCloseTimeout of an activity type is -// the maximum duration of an activity task, regardless of the number of -// RecordActivityTaskHeartbeat requests received. The -// taskStartToCloseTimeout is also specified in RegisterActivityType This -// operation is only useful for long-lived activities to report liveliness -// of the task and to determine if a cancellation is being attempted. If -// the cancelRequested flag returns true , a cancellation is being -// attempted. If the worker can cancel the activity, it should respond with -// RespondActivityTaskCanceled . Otherwise, it should ignore the -// cancellation request. You can use IAM policies to control this action's -// access to Amazon SWF resources as follows: Use a Resource element with -// the domain name to limit the action to only specified domains. Use an -// Action element to allow or deny permission to call this action. You -// cannot use an IAM policy to constrain this action's parameters. If the -// caller does not have sufficient permissions to invoke the action, or the -// parameter values fall outside the specified constraints, the action -// fails. The associated event attribute's cause parameter will be set to -// For details and example IAM policies, see Using IAM to Manage Access to -// Amazon SWF Workflows -func (c *SWF) RecordActivityTaskHeartbeat(req *RecordActivityTaskHeartbeatInput) (resp *ActivityTaskStatus, err error) { - resp = &ActivityTaskStatus{} - err = c.client.Do("RecordActivityTaskHeartbeat", "POST", "/", req, resp) - return -} - -// RegisterActivityType registers a new activity type along with its -// configuration settings in the specified domain. A TypeAlreadyExists -// fault is returned if the type already exists in the domain. You cannot -// change any configuration settings of the type after its registration, -// and it must be registered as a new version. You can use IAM policies to -// control this action's access to Amazon SWF resources as follows: Use a -// Resource element with the domain name to limit the action to only -// specified domains. Use an Action element to allow or deny permission to -// call this action. Constrain the following parameters by using a -// Condition element with the appropriate keys. defaultTaskList.name : -// String constraint. The key is swf:defaultTaskList.name name : String -// constraint. The key is swf:name version : String constraint. The key is -// swf:version If the caller does not have sufficient permissions to invoke -// the action, or the parameter values fall outside the specified -// constraints, the action fails. The associated event attribute's cause -// parameter will be set to For details and example IAM policies, see Using -// IAM to Manage Access to Amazon SWF Workflows -func (c *SWF) RegisterActivityType(req *RegisterActivityTypeInput) (err error) { - // NRE - err = c.client.Do("RegisterActivityType", "POST", "/", req, nil) - return -} - -// RegisterDomain you can use IAM policies to control this action's access -// to Amazon SWF resources as follows: You cannot use an IAM policy to -// control domain access for this action. The name of the domain being -// registered is available as the resource of this action. Use an Action -// element to allow or deny permission to call this action. You cannot use -// an IAM policy to constrain this action's parameters. If the caller does -// not have sufficient permissions to invoke the action, or the parameter -// values fall outside the specified constraints, the action fails. The -// associated event attribute's cause parameter will be set to For details -// and example IAM policies, see Using IAM to Manage Access to Amazon SWF -// Workflows -func (c *SWF) RegisterDomain(req *RegisterDomainInput) (err error) { - // NRE - err = c.client.Do("RegisterDomain", "POST", "/", req, nil) - return -} - -// RegisterWorkflowType registers a new workflow type and its configuration -// settings in the specified domain. The retention period for the workflow -// history is set by the RegisterDomain action. If the type already exists, -// then a TypeAlreadyExists fault is returned. You cannot change the -// configuration settings of a workflow type once it is registered and it -// must be registered as a new version. You can use IAM policies to control -// this action's access to Amazon SWF resources as follows: Use a Resource -// element with the domain name to limit the action to only specified -// domains. Use an Action element to allow or deny permission to call this -// action. Constrain the following parameters by using a Condition element -// with the appropriate keys. defaultTaskList.name : String constraint. The -// key is swf:defaultTaskList.name name : String constraint. The key is -// swf:name version : String constraint. The key is swf:version If the -// caller does not have sufficient permissions to invoke the action, or the -// parameter values fall outside the specified constraints, the action -// fails. The associated event attribute's cause parameter will be set to -// For details and example IAM policies, see Using IAM to Manage Access to -// Amazon SWF Workflows -func (c *SWF) RegisterWorkflowType(req *RegisterWorkflowTypeInput) (err error) { - // NRE - err = c.client.Do("RegisterWorkflowType", "POST", "/", req, nil) - return -} - -// RequestCancelWorkflowExecution records a -// WorkflowExecutionCancelRequested event in the currently running workflow -// execution identified by the given domain, workflowId, and runId. This -// logically requests the cancellation of the workflow execution as a -// whole. It is up to the decider to take appropriate actions when it -// receives an execution history with this event. If the runId is not -// specified, the WorkflowExecutionCancelRequested event is recorded in the -// history of the current open workflow execution with the specified -// workflowId in the domain. Because this action allows the workflow to -// properly clean up and gracefully close, it should be used instead of -// TerminateWorkflowExecution when possible. You can use IAM policies to -// control this action's access to Amazon SWF resources as follows: Use a -// Resource element with the domain name to limit the action to only -// specified domains. Use an Action element to allow or deny permission to -// call this action. You cannot use an IAM policy to constrain this -// action's parameters. If the caller does not have sufficient permissions -// to invoke the action, or the parameter values fall outside the specified -// constraints, the action fails. The associated event attribute's cause -// parameter will be set to For details and example IAM policies, see Using -// IAM to Manage Access to Amazon SWF Workflows -func (c *SWF) RequestCancelWorkflowExecution(req *RequestCancelWorkflowExecutionInput) (err error) { - // NRE - err = c.client.Do("RequestCancelWorkflowExecution", "POST", "/", req, nil) - return -} - -// RespondActivityTaskCanceled used by workers to tell the service that the -// ActivityTask identified by the taskToken was successfully canceled. -// Additional details can be optionally provided using the details -// argument. These details (if provided) appear in the ActivityTaskCanceled -// event added to the workflow history. Only use this operation if the -// canceled flag of a RecordActivityTaskHeartbeat request returns true and -// if the activity can be safely undone or abandoned. A task is considered -// open from the time that it is scheduled until it is closed. Therefore a -// task is reported as open while a worker is processing it. A task is -// closed after it has been specified in a call to -// RespondActivityTaskCompleted , RespondActivityTaskCanceled, -// RespondActivityTaskFailed , or the task has timed out You can use IAM -// policies to control this action's access to Amazon SWF resources as -// follows: Use a Resource element with the domain name to limit the action -// to only specified domains. Use an Action element to allow or deny -// permission to call this action. You cannot use an IAM policy to -// constrain this action's parameters. If the caller does not have -// sufficient permissions to invoke the action, or the parameter values -// fall outside the specified constraints, the action fails. The associated -// event attribute's cause parameter will be set to For details and example -// IAM policies, see Using IAM to Manage Access to Amazon SWF Workflows -func (c *SWF) RespondActivityTaskCanceled(req *RespondActivityTaskCanceledInput) (err error) { - // NRE - err = c.client.Do("RespondActivityTaskCanceled", "POST", "/", req, nil) - return -} - -// RespondActivityTaskCompleted used by workers to tell the service that -// the ActivityTask identified by the taskToken completed successfully with -// a result (if provided). The result appears in the ActivityTaskCompleted -// event in the workflow history. If the requested task does not complete -// successfully, use RespondActivityTaskFailed instead. If the worker finds -// that the task is canceled through the canceled flag returned by -// RecordActivityTaskHeartbeat , it should cancel the task, clean up and -// then call RespondActivityTaskCanceled A task is considered open from the -// time that it is scheduled until it is closed. Therefore a task is -// reported as open while a worker is processing it. A task is closed after -// it has been specified in a call to RespondActivityTaskCompleted, -// RespondActivityTaskCanceled , RespondActivityTaskFailed , or the task -// has timed out You can use IAM policies to control this action's access -// to Amazon SWF resources as follows: Use a Resource element with the -// domain name to limit the action to only specified domains. Use an Action -// element to allow or deny permission to call this action. You cannot use -// an IAM policy to constrain this action's parameters. If the caller does -// not have sufficient permissions to invoke the action, or the parameter -// values fall outside the specified constraints, the action fails. The -// associated event attribute's cause parameter will be set to For details -// and example IAM policies, see Using IAM to Manage Access to Amazon SWF -// Workflows -func (c *SWF) RespondActivityTaskCompleted(req *RespondActivityTaskCompletedInput) (err error) { - // NRE - err = c.client.Do("RespondActivityTaskCompleted", "POST", "/", req, nil) - return -} - -// RespondActivityTaskFailed used by workers to tell the service that the -// ActivityTask identified by the taskToken has failed with reason (if -// specified). The reason and details appear in the ActivityTaskFailed -// event added to the workflow history. A task is considered open from the -// time that it is scheduled until it is closed. Therefore a task is -// reported as open while a worker is processing it. A task is closed after -// it has been specified in a call to RespondActivityTaskCompleted , -// RespondActivityTaskCanceled , RespondActivityTaskFailed, or the task has -// timed out You can use IAM policies to control this action's access to -// Amazon SWF resources as follows: Use a Resource element with the domain -// name to limit the action to only specified domains. Use an Action -// element to allow or deny permission to call this action. You cannot use -// an IAM policy to constrain this action's parameters. If the caller does -// not have sufficient permissions to invoke the action, or the parameter -// values fall outside the specified constraints, the action fails. The -// associated event attribute's cause parameter will be set to For details -// and example IAM policies, see Using IAM to Manage Access to Amazon SWF -// Workflows -func (c *SWF) RespondActivityTaskFailed(req *RespondActivityTaskFailedInput) (err error) { - // NRE - err = c.client.Do("RespondActivityTaskFailed", "POST", "/", req, nil) - return -} - -// RespondDecisionTaskCompleted used by deciders to tell the service that -// the DecisionTask identified by the taskToken has successfully completed. -// The decisions argument specifies the list of decisions made while -// processing the task. A DecisionTaskCompleted event is added to the -// workflow history. The executionContext specified is attached to the -// event in the workflow execution history. If an IAM policy grants -// permission to use RespondDecisionTaskCompleted , it can express -// permissions for the list of decisions in the decisions parameter. Each -// of the decisions has one or more parameters, much like a regular API -// call. To allow for policies to be as readable as possible, you can -// express permissions on decisions as if they were actual API calls, -// including applying conditions to some parameters. For more information, -// see Using IAM to Manage Access to Amazon SWF Workflows -func (c *SWF) RespondDecisionTaskCompleted(req *RespondDecisionTaskCompletedInput) (err error) { - // NRE - err = c.client.Do("RespondDecisionTaskCompleted", "POST", "/", req, nil) - return -} - -// SignalWorkflowExecution records a WorkflowExecutionSignaled event in the -// workflow execution history and creates a decision task for the workflow -// execution identified by the given domain, workflowId and runId. The -// event is recorded with the specified user defined signalName and input -// (if provided). If a runId is not specified, then the -// WorkflowExecutionSignaled event is recorded in the history of the -// current open workflow with the matching workflowId in the domain. If the -// specified workflow execution is not open, this method fails with -// UnknownResource You can use IAM policies to control this action's access -// to Amazon SWF resources as follows: Use a Resource element with the -// domain name to limit the action to only specified domains. Use an Action -// element to allow or deny permission to call this action. You cannot use -// an IAM policy to constrain this action's parameters. If the caller does -// not have sufficient permissions to invoke the action, or the parameter -// values fall outside the specified constraints, the action fails. The -// associated event attribute's cause parameter will be set to For details -// and example IAM policies, see Using IAM to Manage Access to Amazon SWF -// Workflows -func (c *SWF) SignalWorkflowExecution(req *SignalWorkflowExecutionInput) (err error) { - // NRE - err = c.client.Do("SignalWorkflowExecution", "POST", "/", req, nil) - return -} - -// StartWorkflowExecution starts an execution of the workflow type in the -// specified domain using the provided workflowId and input data. This -// action returns the newly started workflow execution. You can use IAM -// policies to control this action's access to Amazon SWF resources as -// follows: Use a Resource element with the domain name to limit the action -// to only specified domains. Use an Action element to allow or deny -// permission to call this action. Constrain the following parameters by -// using a Condition element with the appropriate keys. tagList.member.0 : -// The key is swf:tagList.member.0 tagList.member.1 : The key is -// swf:tagList.member.1 tagList.member.2 : The key is swf:tagList.member.2 -// tagList.member.3 : The key is swf:tagList.member.3 tagList.member.4 : -// The key is swf:tagList.member.4 taskList : String constraint. The key is -// swf:taskList.name workflowType.name : String constraint. The key is -// swf:workflowType.name workflowType.version : String constraint. The key -// is swf:workflowType.version If the caller does not have sufficient -// permissions to invoke the action, or the parameter values fall outside -// the specified constraints, the action fails. The associated event -// attribute's cause parameter will be set to For details and example IAM -// policies, see Using IAM to Manage Access to Amazon SWF Workflows -func (c *SWF) StartWorkflowExecution(req *StartWorkflowExecutionInput) (resp *Run, err error) { - resp = &Run{} - err = c.client.Do("StartWorkflowExecution", "POST", "/", req, resp) - return -} - -// TerminateWorkflowExecution records a WorkflowExecutionTerminated event -// and forces closure of the workflow execution identified by the given -// domain, runId, and workflowId. The child policy, registered with the -// workflow type or specified when starting this execution, is applied to -// any open child workflow executions of this workflow execution. If the -// identified workflow execution was in progress, it is terminated -// immediately. If a runId is not specified, then the -// WorkflowExecutionTerminated event is recorded in the history of the -// current open workflow with the matching workflowId in the domain. You -// should consider using RequestCancelWorkflowExecution action instead -// because it allows the workflow to gracefully close while -// TerminateWorkflowExecution does not. You can use IAM policies to control -// this action's access to Amazon SWF resources as follows: Use a Resource -// element with the domain name to limit the action to only specified -// domains. Use an Action element to allow or deny permission to call this -// action. You cannot use an IAM policy to constrain this action's -// parameters. If the caller does not have sufficient permissions to invoke -// the action, or the parameter values fall outside the specified -// constraints, the action fails. The associated event attribute's cause -// parameter will be set to For details and example IAM policies, see Using -// IAM to Manage Access to Amazon SWF Workflows -func (c *SWF) TerminateWorkflowExecution(req *TerminateWorkflowExecutionInput) (err error) { - // NRE - err = c.client.Do("TerminateWorkflowExecution", "POST", "/", req, nil) - return -} - -// ActivityTask is undocumented. -type ActivityTask struct { - ActivityID aws.StringValue `json:"activityId"` - ActivityType *ActivityType `json:"activityType"` - Input aws.StringValue `json:"input,omitempty"` - StartedEventID aws.LongValue `json:"startedEventId"` - TaskToken aws.StringValue `json:"taskToken"` - WorkflowExecution *WorkflowExecution `json:"workflowExecution"` -} - -// ActivityTaskCancelRequestedEventAttributes is undocumented. -type ActivityTaskCancelRequestedEventAttributes struct { - ActivityID aws.StringValue `json:"activityId"` - DecisionTaskCompletedEventID aws.LongValue `json:"decisionTaskCompletedEventId"` -} - -// ActivityTaskCanceledEventAttributes is undocumented. -type ActivityTaskCanceledEventAttributes struct { - Details aws.StringValue `json:"details,omitempty"` - LatestCancelRequestedEventID aws.LongValue `json:"latestCancelRequestedEventId,omitempty"` - ScheduledEventID aws.LongValue `json:"scheduledEventId"` - StartedEventID aws.LongValue `json:"startedEventId"` -} - -// ActivityTaskCompletedEventAttributes is undocumented. -type ActivityTaskCompletedEventAttributes struct { - Result aws.StringValue `json:"result,omitempty"` - ScheduledEventID aws.LongValue `json:"scheduledEventId"` - StartedEventID aws.LongValue `json:"startedEventId"` -} - -// ActivityTaskFailedEventAttributes is undocumented. -type ActivityTaskFailedEventAttributes struct { - Details aws.StringValue `json:"details,omitempty"` - Reason aws.StringValue `json:"reason,omitempty"` - ScheduledEventID aws.LongValue `json:"scheduledEventId"` - StartedEventID aws.LongValue `json:"startedEventId"` -} - -// ActivityTaskScheduledEventAttributes is undocumented. -type ActivityTaskScheduledEventAttributes struct { - ActivityID aws.StringValue `json:"activityId"` - ActivityType *ActivityType `json:"activityType"` - Control aws.StringValue `json:"control,omitempty"` - DecisionTaskCompletedEventID aws.LongValue `json:"decisionTaskCompletedEventId"` - HeartbeatTimeout aws.StringValue `json:"heartbeatTimeout,omitempty"` - Input aws.StringValue `json:"input,omitempty"` - ScheduleToCloseTimeout aws.StringValue `json:"scheduleToCloseTimeout,omitempty"` - ScheduleToStartTimeout aws.StringValue `json:"scheduleToStartTimeout,omitempty"` - StartToCloseTimeout aws.StringValue `json:"startToCloseTimeout,omitempty"` - TaskList *TaskList `json:"taskList"` - TaskPriority aws.StringValue `json:"taskPriority,omitempty"` -} - -// ActivityTaskStartedEventAttributes is undocumented. -type ActivityTaskStartedEventAttributes struct { - Identity aws.StringValue `json:"identity,omitempty"` - ScheduledEventID aws.LongValue `json:"scheduledEventId"` -} - -// ActivityTaskStatus is undocumented. -type ActivityTaskStatus struct { - CancelRequested aws.BooleanValue `json:"cancelRequested"` -} - -// ActivityTaskTimedOutEventAttributes is undocumented. -type ActivityTaskTimedOutEventAttributes struct { - Details aws.StringValue `json:"details,omitempty"` - ScheduledEventID aws.LongValue `json:"scheduledEventId"` - StartedEventID aws.LongValue `json:"startedEventId"` - TimeoutType aws.StringValue `json:"timeoutType"` -} - -// Possible values for SWF. -const ( - ActivityTaskTimeoutTypeHeartbeat = "HEARTBEAT" - ActivityTaskTimeoutTypeScheduleToClose = "SCHEDULE_TO_CLOSE" - ActivityTaskTimeoutTypeScheduleToStart = "SCHEDULE_TO_START" - ActivityTaskTimeoutTypeStartToClose = "START_TO_CLOSE" -) - -// ActivityType is undocumented. -type ActivityType struct { - Name aws.StringValue `json:"name"` - Version aws.StringValue `json:"version"` -} - -// ActivityTypeConfiguration is undocumented. -type ActivityTypeConfiguration struct { - DefaultTaskHeartbeatTimeout aws.StringValue `json:"defaultTaskHeartbeatTimeout,omitempty"` - DefaultTaskList *TaskList `json:"defaultTaskList,omitempty"` - DefaultTaskPriority aws.StringValue `json:"defaultTaskPriority,omitempty"` - DefaultTaskScheduleToCloseTimeout aws.StringValue `json:"defaultTaskScheduleToCloseTimeout,omitempty"` - DefaultTaskScheduleToStartTimeout aws.StringValue `json:"defaultTaskScheduleToStartTimeout,omitempty"` - DefaultTaskStartToCloseTimeout aws.StringValue `json:"defaultTaskStartToCloseTimeout,omitempty"` -} - -// ActivityTypeDetail is undocumented. -type ActivityTypeDetail struct { - Configuration *ActivityTypeConfiguration `json:"configuration"` - TypeInfo *ActivityTypeInfo `json:"typeInfo"` -} - -// ActivityTypeInfo is undocumented. -type ActivityTypeInfo struct { - ActivityType *ActivityType `json:"activityType"` - CreationDate *aws.UnixTimestamp `json:"creationDate"` - DeprecationDate *aws.UnixTimestamp `json:"deprecationDate,omitempty"` - Description aws.StringValue `json:"description,omitempty"` - Status aws.StringValue `json:"status"` -} - -// ActivityTypeInfos is undocumented. -type ActivityTypeInfos struct { - NextPageToken aws.StringValue `json:"nextPageToken,omitempty"` - TypeInfos []ActivityTypeInfo `json:"typeInfos"` -} - -// CancelTimerDecisionAttributes is undocumented. -type CancelTimerDecisionAttributes struct { - TimerID aws.StringValue `json:"timerId"` -} - -// Possible values for SWF. -const ( - CancelTimerFailedCauseOperationNotPermitted = "OPERATION_NOT_PERMITTED" - CancelTimerFailedCauseTimerIDUnknown = "TIMER_ID_UNKNOWN" -) - -// CancelTimerFailedEventAttributes is undocumented. -type CancelTimerFailedEventAttributes struct { - Cause aws.StringValue `json:"cause"` - DecisionTaskCompletedEventID aws.LongValue `json:"decisionTaskCompletedEventId"` - TimerID aws.StringValue `json:"timerId"` -} - -// CancelWorkflowExecutionDecisionAttributes is undocumented. -type CancelWorkflowExecutionDecisionAttributes struct { - Details aws.StringValue `json:"details,omitempty"` -} - -// Possible values for SWF. -const ( - CancelWorkflowExecutionFailedCauseOperationNotPermitted = "OPERATION_NOT_PERMITTED" - CancelWorkflowExecutionFailedCauseUnhandledDecision = "UNHANDLED_DECISION" -) - -// CancelWorkflowExecutionFailedEventAttributes is undocumented. -type CancelWorkflowExecutionFailedEventAttributes struct { - Cause aws.StringValue `json:"cause"` - DecisionTaskCompletedEventID aws.LongValue `json:"decisionTaskCompletedEventId"` -} - -// Possible values for SWF. -const ( - ChildPolicyAbandon = "ABANDON" - ChildPolicyRequestCancel = "REQUEST_CANCEL" - ChildPolicyTerminate = "TERMINATE" -) - -// ChildWorkflowExecutionCanceledEventAttributes is undocumented. -type ChildWorkflowExecutionCanceledEventAttributes struct { - Details aws.StringValue `json:"details,omitempty"` - InitiatedEventID aws.LongValue `json:"initiatedEventId"` - StartedEventID aws.LongValue `json:"startedEventId"` - WorkflowExecution *WorkflowExecution `json:"workflowExecution"` - WorkflowType *WorkflowType `json:"workflowType"` -} - -// ChildWorkflowExecutionCompletedEventAttributes is undocumented. -type ChildWorkflowExecutionCompletedEventAttributes struct { - InitiatedEventID aws.LongValue `json:"initiatedEventId"` - Result aws.StringValue `json:"result,omitempty"` - StartedEventID aws.LongValue `json:"startedEventId"` - WorkflowExecution *WorkflowExecution `json:"workflowExecution"` - WorkflowType *WorkflowType `json:"workflowType"` -} - -// ChildWorkflowExecutionFailedEventAttributes is undocumented. -type ChildWorkflowExecutionFailedEventAttributes struct { - Details aws.StringValue `json:"details,omitempty"` - InitiatedEventID aws.LongValue `json:"initiatedEventId"` - Reason aws.StringValue `json:"reason,omitempty"` - StartedEventID aws.LongValue `json:"startedEventId"` - WorkflowExecution *WorkflowExecution `json:"workflowExecution"` - WorkflowType *WorkflowType `json:"workflowType"` -} - -// ChildWorkflowExecutionStartedEventAttributes is undocumented. -type ChildWorkflowExecutionStartedEventAttributes struct { - InitiatedEventID aws.LongValue `json:"initiatedEventId"` - WorkflowExecution *WorkflowExecution `json:"workflowExecution"` - WorkflowType *WorkflowType `json:"workflowType"` -} - -// ChildWorkflowExecutionTerminatedEventAttributes is undocumented. -type ChildWorkflowExecutionTerminatedEventAttributes struct { - InitiatedEventID aws.LongValue `json:"initiatedEventId"` - StartedEventID aws.LongValue `json:"startedEventId"` - WorkflowExecution *WorkflowExecution `json:"workflowExecution"` - WorkflowType *WorkflowType `json:"workflowType"` -} - -// ChildWorkflowExecutionTimedOutEventAttributes is undocumented. -type ChildWorkflowExecutionTimedOutEventAttributes struct { - InitiatedEventID aws.LongValue `json:"initiatedEventId"` - StartedEventID aws.LongValue `json:"startedEventId"` - TimeoutType aws.StringValue `json:"timeoutType"` - WorkflowExecution *WorkflowExecution `json:"workflowExecution"` - WorkflowType *WorkflowType `json:"workflowType"` -} - -// Possible values for SWF. -const ( - CloseStatusCanceled = "CANCELED" - CloseStatusCompleted = "COMPLETED" - CloseStatusContinuedAsNew = "CONTINUED_AS_NEW" - CloseStatusFailed = "FAILED" - CloseStatusTerminated = "TERMINATED" - CloseStatusTimedOut = "TIMED_OUT" -) - -// CloseStatusFilter is undocumented. -type CloseStatusFilter struct { - Status aws.StringValue `json:"status"` -} - -// CompleteWorkflowExecutionDecisionAttributes is undocumented. -type CompleteWorkflowExecutionDecisionAttributes struct { - Result aws.StringValue `json:"result,omitempty"` -} - -// Possible values for SWF. -const ( - CompleteWorkflowExecutionFailedCauseOperationNotPermitted = "OPERATION_NOT_PERMITTED" - CompleteWorkflowExecutionFailedCauseUnhandledDecision = "UNHANDLED_DECISION" -) - -// CompleteWorkflowExecutionFailedEventAttributes is undocumented. -type CompleteWorkflowExecutionFailedEventAttributes struct { - Cause aws.StringValue `json:"cause"` - DecisionTaskCompletedEventID aws.LongValue `json:"decisionTaskCompletedEventId"` -} - -// ContinueAsNewWorkflowExecutionDecisionAttributes is undocumented. -type ContinueAsNewWorkflowExecutionDecisionAttributes struct { - ChildPolicy aws.StringValue `json:"childPolicy,omitempty"` - ExecutionStartToCloseTimeout aws.StringValue `json:"executionStartToCloseTimeout,omitempty"` - Input aws.StringValue `json:"input,omitempty"` - TagList []string `json:"tagList,omitempty"` - TaskList *TaskList `json:"taskList,omitempty"` - TaskPriority aws.StringValue `json:"taskPriority,omitempty"` - TaskStartToCloseTimeout aws.StringValue `json:"taskStartToCloseTimeout,omitempty"` - WorkflowTypeVersion aws.StringValue `json:"workflowTypeVersion,omitempty"` -} - -// Possible values for SWF. -const ( - ContinueAsNewWorkflowExecutionFailedCauseContinueAsNewWorkflowExecutionRateExceeded = "CONTINUE_AS_NEW_WORKFLOW_EXECUTION_RATE_EXCEEDED" - ContinueAsNewWorkflowExecutionFailedCauseDefaultChildPolicyUndefined = "DEFAULT_CHILD_POLICY_UNDEFINED" - ContinueAsNewWorkflowExecutionFailedCauseDefaultExecutionStartToCloseTimeoutUndefined = "DEFAULT_EXECUTION_START_TO_CLOSE_TIMEOUT_UNDEFINED" - ContinueAsNewWorkflowExecutionFailedCauseDefaultTaskListUndefined = "DEFAULT_TASK_LIST_UNDEFINED" - ContinueAsNewWorkflowExecutionFailedCauseDefaultTaskStartToCloseTimeoutUndefined = "DEFAULT_TASK_START_TO_CLOSE_TIMEOUT_UNDEFINED" - ContinueAsNewWorkflowExecutionFailedCauseOperationNotPermitted = "OPERATION_NOT_PERMITTED" - ContinueAsNewWorkflowExecutionFailedCauseUnhandledDecision = "UNHANDLED_DECISION" - ContinueAsNewWorkflowExecutionFailedCauseWorkflowTypeDeprecated = "WORKFLOW_TYPE_DEPRECATED" - ContinueAsNewWorkflowExecutionFailedCauseWorkflowTypeDoesNotExist = "WORKFLOW_TYPE_DOES_NOT_EXIST" -) - -// ContinueAsNewWorkflowExecutionFailedEventAttributes is undocumented. -type ContinueAsNewWorkflowExecutionFailedEventAttributes struct { - Cause aws.StringValue `json:"cause"` - DecisionTaskCompletedEventID aws.LongValue `json:"decisionTaskCompletedEventId"` -} - -// CountClosedWorkflowExecutionsInput is undocumented. -type CountClosedWorkflowExecutionsInput struct { - CloseStatusFilter *CloseStatusFilter `json:"closeStatusFilter,omitempty"` - CloseTimeFilter *ExecutionTimeFilter `json:"closeTimeFilter,omitempty"` - Domain aws.StringValue `json:"domain"` - ExecutionFilter *WorkflowExecutionFilter `json:"executionFilter,omitempty"` - StartTimeFilter *ExecutionTimeFilter `json:"startTimeFilter,omitempty"` - TagFilter *TagFilter `json:"tagFilter,omitempty"` - TypeFilter *WorkflowTypeFilter `json:"typeFilter,omitempty"` -} - -// CountOpenWorkflowExecutionsInput is undocumented. -type CountOpenWorkflowExecutionsInput struct { - Domain aws.StringValue `json:"domain"` - ExecutionFilter *WorkflowExecutionFilter `json:"executionFilter,omitempty"` - StartTimeFilter *ExecutionTimeFilter `json:"startTimeFilter"` - TagFilter *TagFilter `json:"tagFilter,omitempty"` - TypeFilter *WorkflowTypeFilter `json:"typeFilter,omitempty"` -} - -// CountPendingActivityTasksInput is undocumented. -type CountPendingActivityTasksInput struct { - Domain aws.StringValue `json:"domain"` - TaskList *TaskList `json:"taskList"` -} - -// CountPendingDecisionTasksInput is undocumented. -type CountPendingDecisionTasksInput struct { - Domain aws.StringValue `json:"domain"` - TaskList *TaskList `json:"taskList"` -} - -// Decision is undocumented. -type Decision struct { - CancelTimerDecisionAttributes *CancelTimerDecisionAttributes `json:"cancelTimerDecisionAttributes,omitempty"` - CancelWorkflowExecutionDecisionAttributes *CancelWorkflowExecutionDecisionAttributes `json:"cancelWorkflowExecutionDecisionAttributes,omitempty"` - CompleteWorkflowExecutionDecisionAttributes *CompleteWorkflowExecutionDecisionAttributes `json:"completeWorkflowExecutionDecisionAttributes,omitempty"` - ContinueAsNewWorkflowExecutionDecisionAttributes *ContinueAsNewWorkflowExecutionDecisionAttributes `json:"continueAsNewWorkflowExecutionDecisionAttributes,omitempty"` - DecisionType aws.StringValue `json:"decisionType"` - FailWorkflowExecutionDecisionAttributes *FailWorkflowExecutionDecisionAttributes `json:"failWorkflowExecutionDecisionAttributes,omitempty"` - RecordMarkerDecisionAttributes *RecordMarkerDecisionAttributes `json:"recordMarkerDecisionAttributes,omitempty"` - RequestCancelActivityTaskDecisionAttributes *RequestCancelActivityTaskDecisionAttributes `json:"requestCancelActivityTaskDecisionAttributes,omitempty"` - RequestCancelExternalWorkflowExecutionDecisionAttributes *RequestCancelExternalWorkflowExecutionDecisionAttributes `json:"requestCancelExternalWorkflowExecutionDecisionAttributes,omitempty"` - ScheduleActivityTaskDecisionAttributes *ScheduleActivityTaskDecisionAttributes `json:"scheduleActivityTaskDecisionAttributes,omitempty"` - SignalExternalWorkflowExecutionDecisionAttributes *SignalExternalWorkflowExecutionDecisionAttributes `json:"signalExternalWorkflowExecutionDecisionAttributes,omitempty"` - StartChildWorkflowExecutionDecisionAttributes *StartChildWorkflowExecutionDecisionAttributes `json:"startChildWorkflowExecutionDecisionAttributes,omitempty"` - StartTimerDecisionAttributes *StartTimerDecisionAttributes `json:"startTimerDecisionAttributes,omitempty"` -} - -// DecisionTask is undocumented. -type DecisionTask struct { - Events []HistoryEvent `json:"events"` - NextPageToken aws.StringValue `json:"nextPageToken,omitempty"` - PreviousStartedEventID aws.LongValue `json:"previousStartedEventId,omitempty"` - StartedEventID aws.LongValue `json:"startedEventId"` - TaskToken aws.StringValue `json:"taskToken"` - WorkflowExecution *WorkflowExecution `json:"workflowExecution"` - WorkflowType *WorkflowType `json:"workflowType"` -} - -// DecisionTaskCompletedEventAttributes is undocumented. -type DecisionTaskCompletedEventAttributes struct { - ExecutionContext aws.StringValue `json:"executionContext,omitempty"` - ScheduledEventID aws.LongValue `json:"scheduledEventId"` - StartedEventID aws.LongValue `json:"startedEventId"` -} - -// DecisionTaskScheduledEventAttributes is undocumented. -type DecisionTaskScheduledEventAttributes struct { - StartToCloseTimeout aws.StringValue `json:"startToCloseTimeout,omitempty"` - TaskList *TaskList `json:"taskList"` - TaskPriority aws.StringValue `json:"taskPriority,omitempty"` -} - -// DecisionTaskStartedEventAttributes is undocumented. -type DecisionTaskStartedEventAttributes struct { - Identity aws.StringValue `json:"identity,omitempty"` - ScheduledEventID aws.LongValue `json:"scheduledEventId"` -} - -// DecisionTaskTimedOutEventAttributes is undocumented. -type DecisionTaskTimedOutEventAttributes struct { - ScheduledEventID aws.LongValue `json:"scheduledEventId"` - StartedEventID aws.LongValue `json:"startedEventId"` - TimeoutType aws.StringValue `json:"timeoutType"` -} - -// Possible values for SWF. -const ( - DecisionTaskTimeoutTypeStartToClose = "START_TO_CLOSE" -) - -// Possible values for SWF. -const ( - DecisionTypeCancelTimer = "CancelTimer" - DecisionTypeCancelWorkflowExecution = "CancelWorkflowExecution" - DecisionTypeCompleteWorkflowExecution = "CompleteWorkflowExecution" - DecisionTypeContinueAsNewWorkflowExecution = "ContinueAsNewWorkflowExecution" - DecisionTypeFailWorkflowExecution = "FailWorkflowExecution" - DecisionTypeRecordMarker = "RecordMarker" - DecisionTypeRequestCancelActivityTask = "RequestCancelActivityTask" - DecisionTypeRequestCancelExternalWorkflowExecution = "RequestCancelExternalWorkflowExecution" - DecisionTypeScheduleActivityTask = "ScheduleActivityTask" - DecisionTypeSignalExternalWorkflowExecution = "SignalExternalWorkflowExecution" - DecisionTypeStartChildWorkflowExecution = "StartChildWorkflowExecution" - DecisionTypeStartTimer = "StartTimer" -) - -// DeprecateActivityTypeInput is undocumented. -type DeprecateActivityTypeInput struct { - ActivityType *ActivityType `json:"activityType"` - Domain aws.StringValue `json:"domain"` -} - -// DeprecateDomainInput is undocumented. -type DeprecateDomainInput struct { - Name aws.StringValue `json:"name"` -} - -// DeprecateWorkflowTypeInput is undocumented. -type DeprecateWorkflowTypeInput struct { - Domain aws.StringValue `json:"domain"` - WorkflowType *WorkflowType `json:"workflowType"` -} - -// DescribeActivityTypeInput is undocumented. -type DescribeActivityTypeInput struct { - ActivityType *ActivityType `json:"activityType"` - Domain aws.StringValue `json:"domain"` -} - -// DescribeDomainInput is undocumented. -type DescribeDomainInput struct { - Name aws.StringValue `json:"name"` -} - -// DescribeWorkflowExecutionInput is undocumented. -type DescribeWorkflowExecutionInput struct { - Domain aws.StringValue `json:"domain"` - Execution *WorkflowExecution `json:"execution"` -} - -// DescribeWorkflowTypeInput is undocumented. -type DescribeWorkflowTypeInput struct { - Domain aws.StringValue `json:"domain"` - WorkflowType *WorkflowType `json:"workflowType"` -} - -// DomainConfiguration is undocumented. -type DomainConfiguration struct { - WorkflowExecutionRetentionPeriodInDays aws.StringValue `json:"workflowExecutionRetentionPeriodInDays"` -} - -// DomainDetail is undocumented. -type DomainDetail struct { - Configuration *DomainConfiguration `json:"configuration"` - DomainInfo *DomainInfo `json:"domainInfo"` -} - -// DomainInfo is undocumented. -type DomainInfo struct { - Description aws.StringValue `json:"description,omitempty"` - Name aws.StringValue `json:"name"` - Status aws.StringValue `json:"status"` -} - -// DomainInfos is undocumented. -type DomainInfos struct { - DomainInfos []DomainInfo `json:"domainInfos"` - NextPageToken aws.StringValue `json:"nextPageToken,omitempty"` -} - -// Possible values for SWF. -const ( - EventTypeActivityTaskCancelRequested = "ActivityTaskCancelRequested" - EventTypeActivityTaskCanceled = "ActivityTaskCanceled" - EventTypeActivityTaskCompleted = "ActivityTaskCompleted" - EventTypeActivityTaskFailed = "ActivityTaskFailed" - EventTypeActivityTaskScheduled = "ActivityTaskScheduled" - EventTypeActivityTaskStarted = "ActivityTaskStarted" - EventTypeActivityTaskTimedOut = "ActivityTaskTimedOut" - EventTypeCancelTimerFailed = "CancelTimerFailed" - EventTypeCancelWorkflowExecutionFailed = "CancelWorkflowExecutionFailed" - EventTypeChildWorkflowExecutionCanceled = "ChildWorkflowExecutionCanceled" - EventTypeChildWorkflowExecutionCompleted = "ChildWorkflowExecutionCompleted" - EventTypeChildWorkflowExecutionFailed = "ChildWorkflowExecutionFailed" - EventTypeChildWorkflowExecutionStarted = "ChildWorkflowExecutionStarted" - EventTypeChildWorkflowExecutionTerminated = "ChildWorkflowExecutionTerminated" - EventTypeChildWorkflowExecutionTimedOut = "ChildWorkflowExecutionTimedOut" - EventTypeCompleteWorkflowExecutionFailed = "CompleteWorkflowExecutionFailed" - EventTypeContinueAsNewWorkflowExecutionFailed = "ContinueAsNewWorkflowExecutionFailed" - EventTypeDecisionTaskCompleted = "DecisionTaskCompleted" - EventTypeDecisionTaskScheduled = "DecisionTaskScheduled" - EventTypeDecisionTaskStarted = "DecisionTaskStarted" - EventTypeDecisionTaskTimedOut = "DecisionTaskTimedOut" - EventTypeExternalWorkflowExecutionCancelRequested = "ExternalWorkflowExecutionCancelRequested" - EventTypeExternalWorkflowExecutionSignaled = "ExternalWorkflowExecutionSignaled" - EventTypeFailWorkflowExecutionFailed = "FailWorkflowExecutionFailed" - EventTypeMarkerRecorded = "MarkerRecorded" - EventTypeRecordMarkerFailed = "RecordMarkerFailed" - EventTypeRequestCancelActivityTaskFailed = "RequestCancelActivityTaskFailed" - EventTypeRequestCancelExternalWorkflowExecutionFailed = "RequestCancelExternalWorkflowExecutionFailed" - EventTypeRequestCancelExternalWorkflowExecutionInitiated = "RequestCancelExternalWorkflowExecutionInitiated" - EventTypeScheduleActivityTaskFailed = "ScheduleActivityTaskFailed" - EventTypeSignalExternalWorkflowExecutionFailed = "SignalExternalWorkflowExecutionFailed" - EventTypeSignalExternalWorkflowExecutionInitiated = "SignalExternalWorkflowExecutionInitiated" - EventTypeStartChildWorkflowExecutionFailed = "StartChildWorkflowExecutionFailed" - EventTypeStartChildWorkflowExecutionInitiated = "StartChildWorkflowExecutionInitiated" - EventTypeStartTimerFailed = "StartTimerFailed" - EventTypeTimerCanceled = "TimerCanceled" - EventTypeTimerFired = "TimerFired" - EventTypeTimerStarted = "TimerStarted" - EventTypeWorkflowExecutionCancelRequested = "WorkflowExecutionCancelRequested" - EventTypeWorkflowExecutionCanceled = "WorkflowExecutionCanceled" - EventTypeWorkflowExecutionCompleted = "WorkflowExecutionCompleted" - EventTypeWorkflowExecutionContinuedAsNew = "WorkflowExecutionContinuedAsNew" - EventTypeWorkflowExecutionFailed = "WorkflowExecutionFailed" - EventTypeWorkflowExecutionSignaled = "WorkflowExecutionSignaled" - EventTypeWorkflowExecutionStarted = "WorkflowExecutionStarted" - EventTypeWorkflowExecutionTerminated = "WorkflowExecutionTerminated" - EventTypeWorkflowExecutionTimedOut = "WorkflowExecutionTimedOut" -) - -// Possible values for SWF. -const ( - ExecutionStatusClosed = "CLOSED" - ExecutionStatusOpen = "OPEN" -) - -// ExecutionTimeFilter is undocumented. -type ExecutionTimeFilter struct { - LatestDate *aws.UnixTimestamp `json:"latestDate,omitempty"` - OldestDate *aws.UnixTimestamp `json:"oldestDate"` -} - -// ExternalWorkflowExecutionCancelRequestedEventAttributes is undocumented. -type ExternalWorkflowExecutionCancelRequestedEventAttributes struct { - InitiatedEventID aws.LongValue `json:"initiatedEventId"` - WorkflowExecution *WorkflowExecution `json:"workflowExecution"` -} - -// ExternalWorkflowExecutionSignaledEventAttributes is undocumented. -type ExternalWorkflowExecutionSignaledEventAttributes struct { - InitiatedEventID aws.LongValue `json:"initiatedEventId"` - WorkflowExecution *WorkflowExecution `json:"workflowExecution"` -} - -// FailWorkflowExecutionDecisionAttributes is undocumented. -type FailWorkflowExecutionDecisionAttributes struct { - Details aws.StringValue `json:"details,omitempty"` - Reason aws.StringValue `json:"reason,omitempty"` -} - -// Possible values for SWF. -const ( - FailWorkflowExecutionFailedCauseOperationNotPermitted = "OPERATION_NOT_PERMITTED" - FailWorkflowExecutionFailedCauseUnhandledDecision = "UNHANDLED_DECISION" -) - -// FailWorkflowExecutionFailedEventAttributes is undocumented. -type FailWorkflowExecutionFailedEventAttributes struct { - Cause aws.StringValue `json:"cause"` - DecisionTaskCompletedEventID aws.LongValue `json:"decisionTaskCompletedEventId"` -} - -// GetWorkflowExecutionHistoryInput is undocumented. -type GetWorkflowExecutionHistoryInput struct { - Domain aws.StringValue `json:"domain"` - Execution *WorkflowExecution `json:"execution"` - MaximumPageSize aws.IntegerValue `json:"maximumPageSize,omitempty"` - NextPageToken aws.StringValue `json:"nextPageToken,omitempty"` - ReverseOrder aws.BooleanValue `json:"reverseOrder,omitempty"` -} - -// History is undocumented. -type History struct { - Events []HistoryEvent `json:"events"` - NextPageToken aws.StringValue `json:"nextPageToken,omitempty"` -} - -// HistoryEvent is undocumented. -type HistoryEvent struct { - ActivityTaskCancelRequestedEventAttributes *ActivityTaskCancelRequestedEventAttributes `json:"activityTaskCancelRequestedEventAttributes,omitempty"` - ActivityTaskCanceledEventAttributes *ActivityTaskCanceledEventAttributes `json:"activityTaskCanceledEventAttributes,omitempty"` - ActivityTaskCompletedEventAttributes *ActivityTaskCompletedEventAttributes `json:"activityTaskCompletedEventAttributes,omitempty"` - ActivityTaskFailedEventAttributes *ActivityTaskFailedEventAttributes `json:"activityTaskFailedEventAttributes,omitempty"` - ActivityTaskScheduledEventAttributes *ActivityTaskScheduledEventAttributes `json:"activityTaskScheduledEventAttributes,omitempty"` - ActivityTaskStartedEventAttributes *ActivityTaskStartedEventAttributes `json:"activityTaskStartedEventAttributes,omitempty"` - ActivityTaskTimedOutEventAttributes *ActivityTaskTimedOutEventAttributes `json:"activityTaskTimedOutEventAttributes,omitempty"` - CancelTimerFailedEventAttributes *CancelTimerFailedEventAttributes `json:"cancelTimerFailedEventAttributes,omitempty"` - CancelWorkflowExecutionFailedEventAttributes *CancelWorkflowExecutionFailedEventAttributes `json:"cancelWorkflowExecutionFailedEventAttributes,omitempty"` - ChildWorkflowExecutionCanceledEventAttributes *ChildWorkflowExecutionCanceledEventAttributes `json:"childWorkflowExecutionCanceledEventAttributes,omitempty"` - ChildWorkflowExecutionCompletedEventAttributes *ChildWorkflowExecutionCompletedEventAttributes `json:"childWorkflowExecutionCompletedEventAttributes,omitempty"` - ChildWorkflowExecutionFailedEventAttributes *ChildWorkflowExecutionFailedEventAttributes `json:"childWorkflowExecutionFailedEventAttributes,omitempty"` - ChildWorkflowExecutionStartedEventAttributes *ChildWorkflowExecutionStartedEventAttributes `json:"childWorkflowExecutionStartedEventAttributes,omitempty"` - ChildWorkflowExecutionTerminatedEventAttributes *ChildWorkflowExecutionTerminatedEventAttributes `json:"childWorkflowExecutionTerminatedEventAttributes,omitempty"` - ChildWorkflowExecutionTimedOutEventAttributes *ChildWorkflowExecutionTimedOutEventAttributes `json:"childWorkflowExecutionTimedOutEventAttributes,omitempty"` - CompleteWorkflowExecutionFailedEventAttributes *CompleteWorkflowExecutionFailedEventAttributes `json:"completeWorkflowExecutionFailedEventAttributes,omitempty"` - ContinueAsNewWorkflowExecutionFailedEventAttributes *ContinueAsNewWorkflowExecutionFailedEventAttributes `json:"continueAsNewWorkflowExecutionFailedEventAttributes,omitempty"` - DecisionTaskCompletedEventAttributes *DecisionTaskCompletedEventAttributes `json:"decisionTaskCompletedEventAttributes,omitempty"` - DecisionTaskScheduledEventAttributes *DecisionTaskScheduledEventAttributes `json:"decisionTaskScheduledEventAttributes,omitempty"` - DecisionTaskStartedEventAttributes *DecisionTaskStartedEventAttributes `json:"decisionTaskStartedEventAttributes,omitempty"` - DecisionTaskTimedOutEventAttributes *DecisionTaskTimedOutEventAttributes `json:"decisionTaskTimedOutEventAttributes,omitempty"` - EventID aws.LongValue `json:"eventId"` - EventTimestamp *aws.UnixTimestamp `json:"eventTimestamp"` - EventType aws.StringValue `json:"eventType"` - ExternalWorkflowExecutionCancelRequestedEventAttributes *ExternalWorkflowExecutionCancelRequestedEventAttributes `json:"externalWorkflowExecutionCancelRequestedEventAttributes,omitempty"` - ExternalWorkflowExecutionSignaledEventAttributes *ExternalWorkflowExecutionSignaledEventAttributes `json:"externalWorkflowExecutionSignaledEventAttributes,omitempty"` - FailWorkflowExecutionFailedEventAttributes *FailWorkflowExecutionFailedEventAttributes `json:"failWorkflowExecutionFailedEventAttributes,omitempty"` - MarkerRecordedEventAttributes *MarkerRecordedEventAttributes `json:"markerRecordedEventAttributes,omitempty"` - RecordMarkerFailedEventAttributes *RecordMarkerFailedEventAttributes `json:"recordMarkerFailedEventAttributes,omitempty"` - RequestCancelActivityTaskFailedEventAttributes *RequestCancelActivityTaskFailedEventAttributes `json:"requestCancelActivityTaskFailedEventAttributes,omitempty"` - RequestCancelExternalWorkflowExecutionFailedEventAttributes *RequestCancelExternalWorkflowExecutionFailedEventAttributes `json:"requestCancelExternalWorkflowExecutionFailedEventAttributes,omitempty"` - RequestCancelExternalWorkflowExecutionInitiatedEventAttributes *RequestCancelExternalWorkflowExecutionInitiatedEventAttributes `json:"requestCancelExternalWorkflowExecutionInitiatedEventAttributes,omitempty"` - ScheduleActivityTaskFailedEventAttributes *ScheduleActivityTaskFailedEventAttributes `json:"scheduleActivityTaskFailedEventAttributes,omitempty"` - SignalExternalWorkflowExecutionFailedEventAttributes *SignalExternalWorkflowExecutionFailedEventAttributes `json:"signalExternalWorkflowExecutionFailedEventAttributes,omitempty"` - SignalExternalWorkflowExecutionInitiatedEventAttributes *SignalExternalWorkflowExecutionInitiatedEventAttributes `json:"signalExternalWorkflowExecutionInitiatedEventAttributes,omitempty"` - StartChildWorkflowExecutionFailedEventAttributes *StartChildWorkflowExecutionFailedEventAttributes `json:"startChildWorkflowExecutionFailedEventAttributes,omitempty"` - StartChildWorkflowExecutionInitiatedEventAttributes *StartChildWorkflowExecutionInitiatedEventAttributes `json:"startChildWorkflowExecutionInitiatedEventAttributes,omitempty"` - StartTimerFailedEventAttributes *StartTimerFailedEventAttributes `json:"startTimerFailedEventAttributes,omitempty"` - TimerCanceledEventAttributes *TimerCanceledEventAttributes `json:"timerCanceledEventAttributes,omitempty"` - TimerFiredEventAttributes *TimerFiredEventAttributes `json:"timerFiredEventAttributes,omitempty"` - TimerStartedEventAttributes *TimerStartedEventAttributes `json:"timerStartedEventAttributes,omitempty"` - WorkflowExecutionCancelRequestedEventAttributes *WorkflowExecutionCancelRequestedEventAttributes `json:"workflowExecutionCancelRequestedEventAttributes,omitempty"` - WorkflowExecutionCanceledEventAttributes *WorkflowExecutionCanceledEventAttributes `json:"workflowExecutionCanceledEventAttributes,omitempty"` - WorkflowExecutionCompletedEventAttributes *WorkflowExecutionCompletedEventAttributes `json:"workflowExecutionCompletedEventAttributes,omitempty"` - WorkflowExecutionContinuedAsNewEventAttributes *WorkflowExecutionContinuedAsNewEventAttributes `json:"workflowExecutionContinuedAsNewEventAttributes,omitempty"` - WorkflowExecutionFailedEventAttributes *WorkflowExecutionFailedEventAttributes `json:"workflowExecutionFailedEventAttributes,omitempty"` - WorkflowExecutionSignaledEventAttributes *WorkflowExecutionSignaledEventAttributes `json:"workflowExecutionSignaledEventAttributes,omitempty"` - WorkflowExecutionStartedEventAttributes *WorkflowExecutionStartedEventAttributes `json:"workflowExecutionStartedEventAttributes,omitempty"` - WorkflowExecutionTerminatedEventAttributes *WorkflowExecutionTerminatedEventAttributes `json:"workflowExecutionTerminatedEventAttributes,omitempty"` - WorkflowExecutionTimedOutEventAttributes *WorkflowExecutionTimedOutEventAttributes `json:"workflowExecutionTimedOutEventAttributes,omitempty"` -} - -// ListActivityTypesInput is undocumented. -type ListActivityTypesInput struct { - Domain aws.StringValue `json:"domain"` - MaximumPageSize aws.IntegerValue `json:"maximumPageSize,omitempty"` - Name aws.StringValue `json:"name,omitempty"` - NextPageToken aws.StringValue `json:"nextPageToken,omitempty"` - RegistrationStatus aws.StringValue `json:"registrationStatus"` - ReverseOrder aws.BooleanValue `json:"reverseOrder,omitempty"` -} - -// ListClosedWorkflowExecutionsInput is undocumented. -type ListClosedWorkflowExecutionsInput struct { - CloseStatusFilter *CloseStatusFilter `json:"closeStatusFilter,omitempty"` - CloseTimeFilter *ExecutionTimeFilter `json:"closeTimeFilter,omitempty"` - Domain aws.StringValue `json:"domain"` - ExecutionFilter *WorkflowExecutionFilter `json:"executionFilter,omitempty"` - MaximumPageSize aws.IntegerValue `json:"maximumPageSize,omitempty"` - NextPageToken aws.StringValue `json:"nextPageToken,omitempty"` - ReverseOrder aws.BooleanValue `json:"reverseOrder,omitempty"` - StartTimeFilter *ExecutionTimeFilter `json:"startTimeFilter,omitempty"` - TagFilter *TagFilter `json:"tagFilter,omitempty"` - TypeFilter *WorkflowTypeFilter `json:"typeFilter,omitempty"` -} - -// ListDomainsInput is undocumented. -type ListDomainsInput struct { - MaximumPageSize aws.IntegerValue `json:"maximumPageSize,omitempty"` - NextPageToken aws.StringValue `json:"nextPageToken,omitempty"` - RegistrationStatus aws.StringValue `json:"registrationStatus"` - ReverseOrder aws.BooleanValue `json:"reverseOrder,omitempty"` -} - -// ListOpenWorkflowExecutionsInput is undocumented. -type ListOpenWorkflowExecutionsInput struct { - Domain aws.StringValue `json:"domain"` - ExecutionFilter *WorkflowExecutionFilter `json:"executionFilter,omitempty"` - MaximumPageSize aws.IntegerValue `json:"maximumPageSize,omitempty"` - NextPageToken aws.StringValue `json:"nextPageToken,omitempty"` - ReverseOrder aws.BooleanValue `json:"reverseOrder,omitempty"` - StartTimeFilter *ExecutionTimeFilter `json:"startTimeFilter"` - TagFilter *TagFilter `json:"tagFilter,omitempty"` - TypeFilter *WorkflowTypeFilter `json:"typeFilter,omitempty"` -} - -// ListWorkflowTypesInput is undocumented. -type ListWorkflowTypesInput struct { - Domain aws.StringValue `json:"domain"` - MaximumPageSize aws.IntegerValue `json:"maximumPageSize,omitempty"` - Name aws.StringValue `json:"name,omitempty"` - NextPageToken aws.StringValue `json:"nextPageToken,omitempty"` - RegistrationStatus aws.StringValue `json:"registrationStatus"` - ReverseOrder aws.BooleanValue `json:"reverseOrder,omitempty"` -} - -// MarkerRecordedEventAttributes is undocumented. -type MarkerRecordedEventAttributes struct { - DecisionTaskCompletedEventID aws.LongValue `json:"decisionTaskCompletedEventId"` - Details aws.StringValue `json:"details,omitempty"` - MarkerName aws.StringValue `json:"markerName"` -} - -// PendingTaskCount is undocumented. -type PendingTaskCount struct { - Count aws.IntegerValue `json:"count"` - Truncated aws.BooleanValue `json:"truncated,omitempty"` -} - -// PollForActivityTaskInput is undocumented. -type PollForActivityTaskInput struct { - Domain aws.StringValue `json:"domain"` - Identity aws.StringValue `json:"identity,omitempty"` - TaskList *TaskList `json:"taskList"` -} - -// PollForDecisionTaskInput is undocumented. -type PollForDecisionTaskInput struct { - Domain aws.StringValue `json:"domain"` - Identity aws.StringValue `json:"identity,omitempty"` - MaximumPageSize aws.IntegerValue `json:"maximumPageSize,omitempty"` - NextPageToken aws.StringValue `json:"nextPageToken,omitempty"` - ReverseOrder aws.BooleanValue `json:"reverseOrder,omitempty"` - TaskList *TaskList `json:"taskList"` -} - -// RecordActivityTaskHeartbeatInput is undocumented. -type RecordActivityTaskHeartbeatInput struct { - Details aws.StringValue `json:"details,omitempty"` - TaskToken aws.StringValue `json:"taskToken"` -} - -// RecordMarkerDecisionAttributes is undocumented. -type RecordMarkerDecisionAttributes struct { - Details aws.StringValue `json:"details,omitempty"` - MarkerName aws.StringValue `json:"markerName"` -} - -// Possible values for SWF. -const ( - RecordMarkerFailedCauseOperationNotPermitted = "OPERATION_NOT_PERMITTED" -) - -// RecordMarkerFailedEventAttributes is undocumented. -type RecordMarkerFailedEventAttributes struct { - Cause aws.StringValue `json:"cause"` - DecisionTaskCompletedEventID aws.LongValue `json:"decisionTaskCompletedEventId"` - MarkerName aws.StringValue `json:"markerName"` -} - -// RegisterActivityTypeInput is undocumented. -type RegisterActivityTypeInput struct { - DefaultTaskHeartbeatTimeout aws.StringValue `json:"defaultTaskHeartbeatTimeout,omitempty"` - DefaultTaskList *TaskList `json:"defaultTaskList,omitempty"` - DefaultTaskPriority aws.StringValue `json:"defaultTaskPriority,omitempty"` - DefaultTaskScheduleToCloseTimeout aws.StringValue `json:"defaultTaskScheduleToCloseTimeout,omitempty"` - DefaultTaskScheduleToStartTimeout aws.StringValue `json:"defaultTaskScheduleToStartTimeout,omitempty"` - DefaultTaskStartToCloseTimeout aws.StringValue `json:"defaultTaskStartToCloseTimeout,omitempty"` - Description aws.StringValue `json:"description,omitempty"` - Domain aws.StringValue `json:"domain"` - Name aws.StringValue `json:"name"` - Version aws.StringValue `json:"version"` -} - -// RegisterDomainInput is undocumented. -type RegisterDomainInput struct { - Description aws.StringValue `json:"description,omitempty"` - Name aws.StringValue `json:"name"` - WorkflowExecutionRetentionPeriodInDays aws.StringValue `json:"workflowExecutionRetentionPeriodInDays"` -} - -// RegisterWorkflowTypeInput is undocumented. -type RegisterWorkflowTypeInput struct { - DefaultChildPolicy aws.StringValue `json:"defaultChildPolicy,omitempty"` - DefaultExecutionStartToCloseTimeout aws.StringValue `json:"defaultExecutionStartToCloseTimeout,omitempty"` - DefaultTaskList *TaskList `json:"defaultTaskList,omitempty"` - DefaultTaskPriority aws.StringValue `json:"defaultTaskPriority,omitempty"` - DefaultTaskStartToCloseTimeout aws.StringValue `json:"defaultTaskStartToCloseTimeout,omitempty"` - Description aws.StringValue `json:"description,omitempty"` - Domain aws.StringValue `json:"domain"` - Name aws.StringValue `json:"name"` - Version aws.StringValue `json:"version"` -} - -// Possible values for SWF. -const ( - RegistrationStatusDeprecated = "DEPRECATED" - RegistrationStatusRegistered = "REGISTERED" -) - -// RequestCancelActivityTaskDecisionAttributes is undocumented. -type RequestCancelActivityTaskDecisionAttributes struct { - ActivityID aws.StringValue `json:"activityId"` -} - -// Possible values for SWF. -const ( - RequestCancelActivityTaskFailedCauseActivityIDUnknown = "ACTIVITY_ID_UNKNOWN" - RequestCancelActivityTaskFailedCauseOperationNotPermitted = "OPERATION_NOT_PERMITTED" -) - -// RequestCancelActivityTaskFailedEventAttributes is undocumented. -type RequestCancelActivityTaskFailedEventAttributes struct { - ActivityID aws.StringValue `json:"activityId"` - Cause aws.StringValue `json:"cause"` - DecisionTaskCompletedEventID aws.LongValue `json:"decisionTaskCompletedEventId"` -} - -// RequestCancelExternalWorkflowExecutionDecisionAttributes is undocumented. -type RequestCancelExternalWorkflowExecutionDecisionAttributes struct { - Control aws.StringValue `json:"control,omitempty"` - RunID aws.StringValue `json:"runId,omitempty"` - WorkflowID aws.StringValue `json:"workflowId"` -} - -// Possible values for SWF. -const ( - RequestCancelExternalWorkflowExecutionFailedCauseOperationNotPermitted = "OPERATION_NOT_PERMITTED" - RequestCancelExternalWorkflowExecutionFailedCauseRequestCancelExternalWorkflowExecutionRateExceeded = "REQUEST_CANCEL_EXTERNAL_WORKFLOW_EXECUTION_RATE_EXCEEDED" - RequestCancelExternalWorkflowExecutionFailedCauseUnknownExternalWorkflowExecution = "UNKNOWN_EXTERNAL_WORKFLOW_EXECUTION" -) - -// RequestCancelExternalWorkflowExecutionFailedEventAttributes is undocumented. -type RequestCancelExternalWorkflowExecutionFailedEventAttributes struct { - Cause aws.StringValue `json:"cause"` - Control aws.StringValue `json:"control,omitempty"` - DecisionTaskCompletedEventID aws.LongValue `json:"decisionTaskCompletedEventId"` - InitiatedEventID aws.LongValue `json:"initiatedEventId"` - RunID aws.StringValue `json:"runId,omitempty"` - WorkflowID aws.StringValue `json:"workflowId"` -} - -// RequestCancelExternalWorkflowExecutionInitiatedEventAttributes is undocumented. -type RequestCancelExternalWorkflowExecutionInitiatedEventAttributes struct { - Control aws.StringValue `json:"control,omitempty"` - DecisionTaskCompletedEventID aws.LongValue `json:"decisionTaskCompletedEventId"` - RunID aws.StringValue `json:"runId,omitempty"` - WorkflowID aws.StringValue `json:"workflowId"` -} - -// RequestCancelWorkflowExecutionInput is undocumented. -type RequestCancelWorkflowExecutionInput struct { - Domain aws.StringValue `json:"domain"` - RunID aws.StringValue `json:"runId,omitempty"` - WorkflowID aws.StringValue `json:"workflowId"` -} - -// RespondActivityTaskCanceledInput is undocumented. -type RespondActivityTaskCanceledInput struct { - Details aws.StringValue `json:"details,omitempty"` - TaskToken aws.StringValue `json:"taskToken"` -} - -// RespondActivityTaskCompletedInput is undocumented. -type RespondActivityTaskCompletedInput struct { - Result aws.StringValue `json:"result,omitempty"` - TaskToken aws.StringValue `json:"taskToken"` -} - -// RespondActivityTaskFailedInput is undocumented. -type RespondActivityTaskFailedInput struct { - Details aws.StringValue `json:"details,omitempty"` - Reason aws.StringValue `json:"reason,omitempty"` - TaskToken aws.StringValue `json:"taskToken"` -} - -// RespondDecisionTaskCompletedInput is undocumented. -type RespondDecisionTaskCompletedInput struct { - Decisions []Decision `json:"decisions,omitempty"` - ExecutionContext aws.StringValue `json:"executionContext,omitempty"` - TaskToken aws.StringValue `json:"taskToken"` -} - -// Run is undocumented. -type Run struct { - RunID aws.StringValue `json:"runId,omitempty"` -} - -// ScheduleActivityTaskDecisionAttributes is undocumented. -type ScheduleActivityTaskDecisionAttributes struct { - ActivityID aws.StringValue `json:"activityId"` - ActivityType *ActivityType `json:"activityType"` - Control aws.StringValue `json:"control,omitempty"` - HeartbeatTimeout aws.StringValue `json:"heartbeatTimeout,omitempty"` - Input aws.StringValue `json:"input,omitempty"` - ScheduleToCloseTimeout aws.StringValue `json:"scheduleToCloseTimeout,omitempty"` - ScheduleToStartTimeout aws.StringValue `json:"scheduleToStartTimeout,omitempty"` - StartToCloseTimeout aws.StringValue `json:"startToCloseTimeout,omitempty"` - TaskList *TaskList `json:"taskList,omitempty"` - TaskPriority aws.StringValue `json:"taskPriority,omitempty"` -} - -// Possible values for SWF. -const ( - ScheduleActivityTaskFailedCauseActivityCreationRateExceeded = "ACTIVITY_CREATION_RATE_EXCEEDED" - ScheduleActivityTaskFailedCauseActivityIDAlreadyInUse = "ACTIVITY_ID_ALREADY_IN_USE" - ScheduleActivityTaskFailedCauseActivityTypeDeprecated = "ACTIVITY_TYPE_DEPRECATED" - ScheduleActivityTaskFailedCauseActivityTypeDoesNotExist = "ACTIVITY_TYPE_DOES_NOT_EXIST" - ScheduleActivityTaskFailedCauseDefaultHeartbeatTimeoutUndefined = "DEFAULT_HEARTBEAT_TIMEOUT_UNDEFINED" - ScheduleActivityTaskFailedCauseDefaultScheduleToCloseTimeoutUndefined = "DEFAULT_SCHEDULE_TO_CLOSE_TIMEOUT_UNDEFINED" - ScheduleActivityTaskFailedCauseDefaultScheduleToStartTimeoutUndefined = "DEFAULT_SCHEDULE_TO_START_TIMEOUT_UNDEFINED" - ScheduleActivityTaskFailedCauseDefaultStartToCloseTimeoutUndefined = "DEFAULT_START_TO_CLOSE_TIMEOUT_UNDEFINED" - ScheduleActivityTaskFailedCauseDefaultTaskListUndefined = "DEFAULT_TASK_LIST_UNDEFINED" - ScheduleActivityTaskFailedCauseOpenActivitiesLimitExceeded = "OPEN_ACTIVITIES_LIMIT_EXCEEDED" - ScheduleActivityTaskFailedCauseOperationNotPermitted = "OPERATION_NOT_PERMITTED" -) - -// ScheduleActivityTaskFailedEventAttributes is undocumented. -type ScheduleActivityTaskFailedEventAttributes struct { - ActivityID aws.StringValue `json:"activityId"` - ActivityType *ActivityType `json:"activityType"` - Cause aws.StringValue `json:"cause"` - DecisionTaskCompletedEventID aws.LongValue `json:"decisionTaskCompletedEventId"` -} - -// SignalExternalWorkflowExecutionDecisionAttributes is undocumented. -type SignalExternalWorkflowExecutionDecisionAttributes struct { - Control aws.StringValue `json:"control,omitempty"` - Input aws.StringValue `json:"input,omitempty"` - RunID aws.StringValue `json:"runId,omitempty"` - SignalName aws.StringValue `json:"signalName"` - WorkflowID aws.StringValue `json:"workflowId"` -} - -// Possible values for SWF. -const ( - SignalExternalWorkflowExecutionFailedCauseOperationNotPermitted = "OPERATION_NOT_PERMITTED" - SignalExternalWorkflowExecutionFailedCauseSignalExternalWorkflowExecutionRateExceeded = "SIGNAL_EXTERNAL_WORKFLOW_EXECUTION_RATE_EXCEEDED" - SignalExternalWorkflowExecutionFailedCauseUnknownExternalWorkflowExecution = "UNKNOWN_EXTERNAL_WORKFLOW_EXECUTION" -) - -// SignalExternalWorkflowExecutionFailedEventAttributes is undocumented. -type SignalExternalWorkflowExecutionFailedEventAttributes struct { - Cause aws.StringValue `json:"cause"` - Control aws.StringValue `json:"control,omitempty"` - DecisionTaskCompletedEventID aws.LongValue `json:"decisionTaskCompletedEventId"` - InitiatedEventID aws.LongValue `json:"initiatedEventId"` - RunID aws.StringValue `json:"runId,omitempty"` - WorkflowID aws.StringValue `json:"workflowId"` -} - -// SignalExternalWorkflowExecutionInitiatedEventAttributes is undocumented. -type SignalExternalWorkflowExecutionInitiatedEventAttributes struct { - Control aws.StringValue `json:"control,omitempty"` - DecisionTaskCompletedEventID aws.LongValue `json:"decisionTaskCompletedEventId"` - Input aws.StringValue `json:"input,omitempty"` - RunID aws.StringValue `json:"runId,omitempty"` - SignalName aws.StringValue `json:"signalName"` - WorkflowID aws.StringValue `json:"workflowId"` -} - -// SignalWorkflowExecutionInput is undocumented. -type SignalWorkflowExecutionInput struct { - Domain aws.StringValue `json:"domain"` - Input aws.StringValue `json:"input,omitempty"` - RunID aws.StringValue `json:"runId,omitempty"` - SignalName aws.StringValue `json:"signalName"` - WorkflowID aws.StringValue `json:"workflowId"` -} - -// StartChildWorkflowExecutionDecisionAttributes is undocumented. -type StartChildWorkflowExecutionDecisionAttributes struct { - ChildPolicy aws.StringValue `json:"childPolicy,omitempty"` - Control aws.StringValue `json:"control,omitempty"` - ExecutionStartToCloseTimeout aws.StringValue `json:"executionStartToCloseTimeout,omitempty"` - Input aws.StringValue `json:"input,omitempty"` - TagList []string `json:"tagList,omitempty"` - TaskList *TaskList `json:"taskList,omitempty"` - TaskPriority aws.StringValue `json:"taskPriority,omitempty"` - TaskStartToCloseTimeout aws.StringValue `json:"taskStartToCloseTimeout,omitempty"` - WorkflowID aws.StringValue `json:"workflowId"` - WorkflowType *WorkflowType `json:"workflowType"` -} - -// Possible values for SWF. -const ( - StartChildWorkflowExecutionFailedCauseChildCreationRateExceeded = "CHILD_CREATION_RATE_EXCEEDED" - StartChildWorkflowExecutionFailedCauseDefaultChildPolicyUndefined = "DEFAULT_CHILD_POLICY_UNDEFINED" - StartChildWorkflowExecutionFailedCauseDefaultExecutionStartToCloseTimeoutUndefined = "DEFAULT_EXECUTION_START_TO_CLOSE_TIMEOUT_UNDEFINED" - StartChildWorkflowExecutionFailedCauseDefaultTaskListUndefined = "DEFAULT_TASK_LIST_UNDEFINED" - StartChildWorkflowExecutionFailedCauseDefaultTaskStartToCloseTimeoutUndefined = "DEFAULT_TASK_START_TO_CLOSE_TIMEOUT_UNDEFINED" - StartChildWorkflowExecutionFailedCauseOpenChildrenLimitExceeded = "OPEN_CHILDREN_LIMIT_EXCEEDED" - StartChildWorkflowExecutionFailedCauseOpenWorkflowsLimitExceeded = "OPEN_WORKFLOWS_LIMIT_EXCEEDED" - StartChildWorkflowExecutionFailedCauseOperationNotPermitted = "OPERATION_NOT_PERMITTED" - StartChildWorkflowExecutionFailedCauseWorkflowAlreadyRunning = "WORKFLOW_ALREADY_RUNNING" - StartChildWorkflowExecutionFailedCauseWorkflowTypeDeprecated = "WORKFLOW_TYPE_DEPRECATED" - StartChildWorkflowExecutionFailedCauseWorkflowTypeDoesNotExist = "WORKFLOW_TYPE_DOES_NOT_EXIST" -) - -// StartChildWorkflowExecutionFailedEventAttributes is undocumented. -type StartChildWorkflowExecutionFailedEventAttributes struct { - Cause aws.StringValue `json:"cause"` - Control aws.StringValue `json:"control,omitempty"` - DecisionTaskCompletedEventID aws.LongValue `json:"decisionTaskCompletedEventId"` - InitiatedEventID aws.LongValue `json:"initiatedEventId"` - WorkflowID aws.StringValue `json:"workflowId"` - WorkflowType *WorkflowType `json:"workflowType"` -} - -// StartChildWorkflowExecutionInitiatedEventAttributes is undocumented. -type StartChildWorkflowExecutionInitiatedEventAttributes struct { - ChildPolicy aws.StringValue `json:"childPolicy"` - Control aws.StringValue `json:"control,omitempty"` - DecisionTaskCompletedEventID aws.LongValue `json:"decisionTaskCompletedEventId"` - ExecutionStartToCloseTimeout aws.StringValue `json:"executionStartToCloseTimeout,omitempty"` - Input aws.StringValue `json:"input,omitempty"` - TagList []string `json:"tagList,omitempty"` - TaskList *TaskList `json:"taskList"` - TaskPriority aws.StringValue `json:"taskPriority,omitempty"` - TaskStartToCloseTimeout aws.StringValue `json:"taskStartToCloseTimeout,omitempty"` - WorkflowID aws.StringValue `json:"workflowId"` - WorkflowType *WorkflowType `json:"workflowType"` -} - -// StartTimerDecisionAttributes is undocumented. -type StartTimerDecisionAttributes struct { - Control aws.StringValue `json:"control,omitempty"` - StartToFireTimeout aws.StringValue `json:"startToFireTimeout"` - TimerID aws.StringValue `json:"timerId"` -} - -// Possible values for SWF. -const ( - StartTimerFailedCauseOpenTimersLimitExceeded = "OPEN_TIMERS_LIMIT_EXCEEDED" - StartTimerFailedCauseOperationNotPermitted = "OPERATION_NOT_PERMITTED" - StartTimerFailedCauseTimerCreationRateExceeded = "TIMER_CREATION_RATE_EXCEEDED" - StartTimerFailedCauseTimerIDAlreadyInUse = "TIMER_ID_ALREADY_IN_USE" -) - -// StartTimerFailedEventAttributes is undocumented. -type StartTimerFailedEventAttributes struct { - Cause aws.StringValue `json:"cause"` - DecisionTaskCompletedEventID aws.LongValue `json:"decisionTaskCompletedEventId"` - TimerID aws.StringValue `json:"timerId"` -} - -// StartWorkflowExecutionInput is undocumented. -type StartWorkflowExecutionInput struct { - ChildPolicy aws.StringValue `json:"childPolicy,omitempty"` - Domain aws.StringValue `json:"domain"` - ExecutionStartToCloseTimeout aws.StringValue `json:"executionStartToCloseTimeout,omitempty"` - Input aws.StringValue `json:"input,omitempty"` - TagList []string `json:"tagList,omitempty"` - TaskList *TaskList `json:"taskList,omitempty"` - TaskPriority aws.StringValue `json:"taskPriority,omitempty"` - TaskStartToCloseTimeout aws.StringValue `json:"taskStartToCloseTimeout,omitempty"` - WorkflowID aws.StringValue `json:"workflowId"` - WorkflowType *WorkflowType `json:"workflowType"` -} - -// TagFilter is undocumented. -type TagFilter struct { - Tag aws.StringValue `json:"tag"` -} - -// TaskList is undocumented. -type TaskList struct { - Name aws.StringValue `json:"name"` -} - -// TerminateWorkflowExecutionInput is undocumented. -type TerminateWorkflowExecutionInput struct { - ChildPolicy aws.StringValue `json:"childPolicy,omitempty"` - Details aws.StringValue `json:"details,omitempty"` - Domain aws.StringValue `json:"domain"` - Reason aws.StringValue `json:"reason,omitempty"` - RunID aws.StringValue `json:"runId,omitempty"` - WorkflowID aws.StringValue `json:"workflowId"` -} - -// TimerCanceledEventAttributes is undocumented. -type TimerCanceledEventAttributes struct { - DecisionTaskCompletedEventID aws.LongValue `json:"decisionTaskCompletedEventId"` - StartedEventID aws.LongValue `json:"startedEventId"` - TimerID aws.StringValue `json:"timerId"` -} - -// TimerFiredEventAttributes is undocumented. -type TimerFiredEventAttributes struct { - StartedEventID aws.LongValue `json:"startedEventId"` - TimerID aws.StringValue `json:"timerId"` -} - -// TimerStartedEventAttributes is undocumented. -type TimerStartedEventAttributes struct { - Control aws.StringValue `json:"control,omitempty"` - DecisionTaskCompletedEventID aws.LongValue `json:"decisionTaskCompletedEventId"` - StartToFireTimeout aws.StringValue `json:"startToFireTimeout"` - TimerID aws.StringValue `json:"timerId"` -} - -// WorkflowExecution is undocumented. -type WorkflowExecution struct { - RunID aws.StringValue `json:"runId"` - WorkflowID aws.StringValue `json:"workflowId"` -} - -// Possible values for SWF. -const ( - WorkflowExecutionCancelRequestedCauseChildPolicyApplied = "CHILD_POLICY_APPLIED" -) - -// WorkflowExecutionCancelRequestedEventAttributes is undocumented. -type WorkflowExecutionCancelRequestedEventAttributes struct { - Cause aws.StringValue `json:"cause,omitempty"` - ExternalInitiatedEventID aws.LongValue `json:"externalInitiatedEventId,omitempty"` - ExternalWorkflowExecution *WorkflowExecution `json:"externalWorkflowExecution,omitempty"` -} - -// WorkflowExecutionCanceledEventAttributes is undocumented. -type WorkflowExecutionCanceledEventAttributes struct { - DecisionTaskCompletedEventID aws.LongValue `json:"decisionTaskCompletedEventId"` - Details aws.StringValue `json:"details,omitempty"` -} - -// WorkflowExecutionCompletedEventAttributes is undocumented. -type WorkflowExecutionCompletedEventAttributes struct { - DecisionTaskCompletedEventID aws.LongValue `json:"decisionTaskCompletedEventId"` - Result aws.StringValue `json:"result,omitempty"` -} - -// WorkflowExecutionConfiguration is undocumented. -type WorkflowExecutionConfiguration struct { - ChildPolicy aws.StringValue `json:"childPolicy"` - ExecutionStartToCloseTimeout aws.StringValue `json:"executionStartToCloseTimeout"` - TaskList *TaskList `json:"taskList"` - TaskPriority aws.StringValue `json:"taskPriority,omitempty"` - TaskStartToCloseTimeout aws.StringValue `json:"taskStartToCloseTimeout"` -} - -// WorkflowExecutionContinuedAsNewEventAttributes is undocumented. -type WorkflowExecutionContinuedAsNewEventAttributes struct { - ChildPolicy aws.StringValue `json:"childPolicy"` - DecisionTaskCompletedEventID aws.LongValue `json:"decisionTaskCompletedEventId"` - ExecutionStartToCloseTimeout aws.StringValue `json:"executionStartToCloseTimeout,omitempty"` - Input aws.StringValue `json:"input,omitempty"` - NewExecutionRunID aws.StringValue `json:"newExecutionRunId"` - TagList []string `json:"tagList,omitempty"` - TaskList *TaskList `json:"taskList"` - TaskPriority aws.StringValue `json:"taskPriority,omitempty"` - TaskStartToCloseTimeout aws.StringValue `json:"taskStartToCloseTimeout,omitempty"` - WorkflowType *WorkflowType `json:"workflowType"` -} - -// WorkflowExecutionCount is undocumented. -type WorkflowExecutionCount struct { - Count aws.IntegerValue `json:"count"` - Truncated aws.BooleanValue `json:"truncated,omitempty"` -} - -// WorkflowExecutionDetail is undocumented. -type WorkflowExecutionDetail struct { - ExecutionConfiguration *WorkflowExecutionConfiguration `json:"executionConfiguration"` - ExecutionInfo *WorkflowExecutionInfo `json:"executionInfo"` - LatestActivityTaskTimestamp *aws.UnixTimestamp `json:"latestActivityTaskTimestamp,omitempty"` - LatestExecutionContext aws.StringValue `json:"latestExecutionContext,omitempty"` - OpenCounts *WorkflowExecutionOpenCounts `json:"openCounts"` -} - -// WorkflowExecutionFailedEventAttributes is undocumented. -type WorkflowExecutionFailedEventAttributes struct { - DecisionTaskCompletedEventID aws.LongValue `json:"decisionTaskCompletedEventId"` - Details aws.StringValue `json:"details,omitempty"` - Reason aws.StringValue `json:"reason,omitempty"` -} - -// WorkflowExecutionFilter is undocumented. -type WorkflowExecutionFilter struct { - WorkflowID aws.StringValue `json:"workflowId"` -} - -// WorkflowExecutionInfo is undocumented. -type WorkflowExecutionInfo struct { - CancelRequested aws.BooleanValue `json:"cancelRequested,omitempty"` - CloseStatus aws.StringValue `json:"closeStatus,omitempty"` - CloseTimestamp *aws.UnixTimestamp `json:"closeTimestamp,omitempty"` - Execution *WorkflowExecution `json:"execution"` - ExecutionStatus aws.StringValue `json:"executionStatus"` - Parent *WorkflowExecution `json:"parent,omitempty"` - StartTimestamp *aws.UnixTimestamp `json:"startTimestamp"` - TagList []string `json:"tagList,omitempty"` - WorkflowType *WorkflowType `json:"workflowType"` -} - -// WorkflowExecutionInfos is undocumented. -type WorkflowExecutionInfos struct { - ExecutionInfos []WorkflowExecutionInfo `json:"executionInfos"` - NextPageToken aws.StringValue `json:"nextPageToken,omitempty"` -} - -// WorkflowExecutionOpenCounts is undocumented. -type WorkflowExecutionOpenCounts struct { - OpenActivityTasks aws.IntegerValue `json:"openActivityTasks"` - OpenChildWorkflowExecutions aws.IntegerValue `json:"openChildWorkflowExecutions"` - OpenDecisionTasks aws.IntegerValue `json:"openDecisionTasks"` - OpenTimers aws.IntegerValue `json:"openTimers"` -} - -// WorkflowExecutionSignaledEventAttributes is undocumented. -type WorkflowExecutionSignaledEventAttributes struct { - ExternalInitiatedEventID aws.LongValue `json:"externalInitiatedEventId,omitempty"` - ExternalWorkflowExecution *WorkflowExecution `json:"externalWorkflowExecution,omitempty"` - Input aws.StringValue `json:"input,omitempty"` - SignalName aws.StringValue `json:"signalName"` -} - -// WorkflowExecutionStartedEventAttributes is undocumented. -type WorkflowExecutionStartedEventAttributes struct { - ChildPolicy aws.StringValue `json:"childPolicy"` - ContinuedExecutionRunID aws.StringValue `json:"continuedExecutionRunId,omitempty"` - ExecutionStartToCloseTimeout aws.StringValue `json:"executionStartToCloseTimeout,omitempty"` - Input aws.StringValue `json:"input,omitempty"` - ParentInitiatedEventID aws.LongValue `json:"parentInitiatedEventId,omitempty"` - ParentWorkflowExecution *WorkflowExecution `json:"parentWorkflowExecution,omitempty"` - TagList []string `json:"tagList,omitempty"` - TaskList *TaskList `json:"taskList"` - TaskPriority aws.StringValue `json:"taskPriority,omitempty"` - TaskStartToCloseTimeout aws.StringValue `json:"taskStartToCloseTimeout,omitempty"` - WorkflowType *WorkflowType `json:"workflowType"` -} - -// Possible values for SWF. -const ( - WorkflowExecutionTerminatedCauseChildPolicyApplied = "CHILD_POLICY_APPLIED" - WorkflowExecutionTerminatedCauseEventLimitExceeded = "EVENT_LIMIT_EXCEEDED" - WorkflowExecutionTerminatedCauseOperatorInitiated = "OPERATOR_INITIATED" -) - -// WorkflowExecutionTerminatedEventAttributes is undocumented. -type WorkflowExecutionTerminatedEventAttributes struct { - Cause aws.StringValue `json:"cause,omitempty"` - ChildPolicy aws.StringValue `json:"childPolicy"` - Details aws.StringValue `json:"details,omitempty"` - Reason aws.StringValue `json:"reason,omitempty"` -} - -// WorkflowExecutionTimedOutEventAttributes is undocumented. -type WorkflowExecutionTimedOutEventAttributes struct { - ChildPolicy aws.StringValue `json:"childPolicy"` - TimeoutType aws.StringValue `json:"timeoutType"` -} - -// Possible values for SWF. -const ( - WorkflowExecutionTimeoutTypeStartToClose = "START_TO_CLOSE" -) - -// WorkflowType is undocumented. -type WorkflowType struct { - Name aws.StringValue `json:"name"` - Version aws.StringValue `json:"version"` -} - -// WorkflowTypeConfiguration is undocumented. -type WorkflowTypeConfiguration struct { - DefaultChildPolicy aws.StringValue `json:"defaultChildPolicy,omitempty"` - DefaultExecutionStartToCloseTimeout aws.StringValue `json:"defaultExecutionStartToCloseTimeout,omitempty"` - DefaultTaskList *TaskList `json:"defaultTaskList,omitempty"` - DefaultTaskPriority aws.StringValue `json:"defaultTaskPriority,omitempty"` - DefaultTaskStartToCloseTimeout aws.StringValue `json:"defaultTaskStartToCloseTimeout,omitempty"` -} - -// WorkflowTypeDetail is undocumented. -type WorkflowTypeDetail struct { - Configuration *WorkflowTypeConfiguration `json:"configuration"` - TypeInfo *WorkflowTypeInfo `json:"typeInfo"` -} - -// WorkflowTypeFilter is undocumented. -type WorkflowTypeFilter struct { - Name aws.StringValue `json:"name"` - Version aws.StringValue `json:"version,omitempty"` -} - -// WorkflowTypeInfo is undocumented. -type WorkflowTypeInfo struct { - CreationDate *aws.UnixTimestamp `json:"creationDate"` - DeprecationDate *aws.UnixTimestamp `json:"deprecationDate,omitempty"` - Description aws.StringValue `json:"description,omitempty"` - Status aws.StringValue `json:"status"` - WorkflowType *WorkflowType `json:"workflowType"` -} - -// WorkflowTypeInfos is undocumented. -type WorkflowTypeInfos struct { - NextPageToken aws.StringValue `json:"nextPageToken,omitempty"` - TypeInfos []WorkflowTypeInfo `json:"typeInfos"` -} - -// avoid errors if the packages aren't referenced -var _ time.Time diff --git a/src/github.com/getlantern/aws-sdk-go/internal/internal.go b/src/github.com/getlantern/aws-sdk-go/internal/internal.go deleted file mode 100644 index 5bf0569ce8..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/internal/internal.go +++ /dev/null @@ -1 +0,0 @@ -package internal diff --git a/src/github.com/getlantern/aws-sdk-go/internal/route53_serialization_test.go b/src/github.com/getlantern/aws-sdk-go/internal/route53_serialization_test.go deleted file mode 100644 index f177e28182..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/internal/route53_serialization_test.go +++ /dev/null @@ -1,82 +0,0 @@ -package internal_test - -import ( - "encoding/xml" - "testing" - - "github.com/awslabs/aws-sdk-go/aws" - "github.com/awslabs/aws-sdk-go/gen/route53" -) - -func TestRoute53RequestSerialization(t *testing.T) { - r := &route53.ChangeResourceRecordSetsRequest{ - HostedZoneID: aws.String("never see me"), - ChangeBatch: &route53.ChangeBatch{ - Comment: aws.String("hello"), - Changes: []route53.Change{ - route53.Change{ - Action: aws.String("dance"), - ResourceRecordSet: &route53.ResourceRecordSet{ - AliasTarget: &route53.AliasTarget{ - EvaluateTargetHealth: aws.False(), - }, - }, - }, - }, - }, - } - - out, err := xml.MarshalIndent(r, "", " ") - if err != nil { - t.Fatal(err) - } - - expected := ` - - - - dance - - - false - - - - - hello - -` - - if v, want := string(out), expected; v != want { - t.Errorf("Was \n%s\n but expected \n%s", v, want) - } - - // Supply a value to XMLName to override the default marshaler tag behavior - r.XMLName = xml.Name{ - Local: "ChangeResourceRecordSetsRequest", - Space: "https://route53.amazonaws.com/doc/2013-04-01/", - } - out, err = xml.MarshalIndent(r, "", " ") - if err != nil { - t.Fatal(err) - } - expected = ` - - - - dance - - - false - - - - - hello - -` - - if v, want := string(out), expected; v != want { - t.Errorf("Was \n%s\n but expected \n%s", v, want) - } -} diff --git a/src/github.com/getlantern/aws-sdk-go/internal/unmarshal_xml_test.go b/src/github.com/getlantern/aws-sdk-go/internal/unmarshal_xml_test.go deleted file mode 100644 index c4334ca648..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/internal/unmarshal_xml_test.go +++ /dev/null @@ -1,168 +0,0 @@ -package internal - -import ( - "encoding/xml" - "reflect" - "testing" - - "github.com/awslabs/aws-sdk-go/aws" - "github.com/awslabs/aws-sdk-go/gen/iam" - "github.com/awslabs/aws-sdk-go/gen/sqs" -) - -func Test_SQSUnmarshalXML(t *testing.T) { - var actualXML = []byte(` - - - - - body1 - snip - snip - - SenderId - snip - - - ApproximateFirstReceiveTimestamp - 1420089460638 - - - ATTR1 - - String - STRING!! - - - - ATTR2 - - Number - 12345 - - - snip - snip - - - body2 - snip - snip - - SenderId - snip - - - ApproximateFirstReceiveTimestamp - 1420089460638 - - - ATTR1 - - String - STRING!! - - - - ATTR2 - - Number - 12345 - - - snip - snip - - - - snip - -`) - - expectedMessageAttributes := sqs.MessageAttributeMap{ - "ATTR1": sqs.MessageAttributeValue{ - DataType: aws.String("String"), - StringValue: aws.String("STRING!!"), - }, - "ATTR2": sqs.MessageAttributeValue{ - DataType: aws.String("Number"), - StringValue: aws.String("12345"), - }, - } - - expectedAttributes := sqs.AttributeMap{ - "SenderId": "snip", - "ApproximateFirstReceiveTimestamp": "1420089460638", - } - - expectedString := aws.String("snip") - - expected := &sqs.ReceiveMessageResult{ - Messages: []sqs.Message{ - sqs.Message{ - Attributes: expectedAttributes, - Body: aws.String("body1"), - MD5OfBody: expectedString, - MD5OfMessageAttributes: expectedString, - MessageAttributes: expectedMessageAttributes, - MessageID: expectedString, - ReceiptHandle: expectedString, - }, - sqs.Message{ - Attributes: expectedAttributes, - Body: aws.String("body2"), - MD5OfBody: expectedString, - MD5OfMessageAttributes: expectedString, - MessageAttributes: expectedMessageAttributes, - MessageID: expectedString, - ReceiptHandle: expectedString, - }, - }, - } - - actual := &sqs.ReceiveMessageResult{} - if err := xml.Unmarshal(actualXML, actual); err != nil { - t.Fatal(err) - } - - if !reflect.DeepEqual(actual, expected) { - t.Errorf("Got \n%v\n but expected \n%v", actual, expected) - } -} - -func Test_IAMUnmarshal(t *testing.T) { - actualXML := []byte(` - - - - - Groups - 31 - - - GroupsQuota - 50 - - - - - f1e38443-f1ad-11df-b1ef-a9265EXAMPLE - -`) - - expected := &iam.GetAccountSummaryResponse{ - SummaryMap: iam.SummaryMapType{ - "Groups": 31, - "GroupsQuota": 50, - }, - } - - actual := &iam.GetAccountSummaryResponse{} - if err := xml.Unmarshal(actualXML, actual); err != nil { - t.Fatal(err) - } - - if !reflect.DeepEqual(actual, expected) { - t.Errorf("Got \n%v\n but expected \n%v", actual, expected) - } -} diff --git a/src/github.com/getlantern/aws-sdk-go/model/endpoints.go b/src/github.com/getlantern/aws-sdk-go/model/endpoints.go deleted file mode 100644 index ed6f1bee46..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/model/endpoints.go +++ /dev/null @@ -1,203 +0,0 @@ -package model - -import ( - "bytes" - "encoding/json" - "fmt" - "go/format" - "io" - "strings" - "text/template" -) - -// A Constraint is a set of constraints on input types. -type Constraint []interface{} - -// Condition returns a Go fragment which matches the constraint. -func (c Constraint) Condition() string { - str := func(i interface{}) string { - if i == nil { - return "" - } - return i.(string) - } - - switch c[1] { - case "startsWith": - return fmt.Sprintf("strings.HasPrefix(%s, %q)", str(c[0]), str(c[2])) - case "notStartsWith": - return fmt.Sprintf("!strings.HasPrefix(%s, %q)", str(c[0]), str(c[2])) - case "equals": - return fmt.Sprintf("%s == %q", str(c[0]), str(c[2])) - case "notEquals": - return fmt.Sprintf("%s != %q", str(c[0]), str(c[2])) - case "oneOf": - var values []string - for _, v := range c[2].([]interface{}) { - values = append(values, str(v)) - } - - var conditions []string - for _, v := range values { - conditions = append(conditions, fmt.Sprintf("%s == %q", str(c[0]), v)) - } - - return strings.Join(conditions, " || ") - default: - panic(fmt.Sprintf("unknown operator: %v", c[1])) - } -} - -// CredentialScope is a set of overrides for the service region and name. -type CredentialScope struct { - Region string - Service string -} - -// Properties is a set of properties associated with an Endpoint. -type Properties struct { - CredentialScope CredentialScope -} - -// An Endpoint is an URL where a service is available. -type Endpoint struct { - Name string - URI string - Properties Properties - Constraints []Constraint -} - -// Service returns the Go literal or variable for the service. -func (e Endpoint) Service() string { - if e.Properties.CredentialScope.Service != "" { - return fmt.Sprintf("%q", e.Properties.CredentialScope.Service) - } - return "service" -} - -// Region returns the Go literal or variable for the region. -func (e Endpoint) Region() string { - if e.Properties.CredentialScope.Region != "" { - return fmt.Sprintf("%q", e.Properties.CredentialScope.Region) - } - return "region" -} - -// Conditions returns the conjunction of the conditions for the endpoint. -func (e Endpoint) Conditions() string { - var conds []string - for _, c := range e.Constraints { - conds = append(conds, "("+c.Condition()+")") - } - return strings.Join(conds, " && ") -} - -// Endpoints are a set of named endpoints. -type Endpoints map[string][]Endpoint - -// Parse parses the JSON description of the endpoints. -func (e *Endpoints) Parse(r io.Reader) error { - return json.NewDecoder(r).Decode(e) -} - -// Generate writes a Go file to the given writer. -func (e Endpoints) Generate(w io.Writer) error { - tmpl, err := template.New("endpoints").Parse(t) - if err != nil { - return err - } - - out := bytes.NewBuffer(nil) - if err := tmpl.Execute(out, e); err != nil { - return err - } - - b, err := format.Source(bytes.TrimSpace(out.Bytes())) - if err != nil { - return err - } - - _, err = io.Copy(w, bytes.NewReader(b)) - return err -} - -const t = ` -// THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. - -// Package endpoints provides lookups for all AWS service endpoints. -package endpoints - -import ( - "strings" -) - -// Lookup returns the endpoint for the given service in the given region plus -// any overrides for the service name and region. -func Lookup(service, region string) (uri, newService, newRegion string) { - if override := findOverride(service, region); override != nil { - return override.uri, override.service, override.region - } - - switch service { - {{ range $name, $endpoints := . }} - {{ if ne $name "_default" }} - case "{{ $name}}" : - {{ range $endpoints }} - {{ if .Constraints }}if {{ .Conditions }} { {{ end }} - return format("{{ .URI }}", service, region), {{ .Service }}, {{ .Region }} - {{ if .Constraints }} } {{ end }} - {{ end }} - {{ end }} - {{ end }} - } - - {{ with $endpoints := index . "_default" }} - {{ range $endpoints }} - {{ if .Constraints }}if {{ .Conditions }} { {{ end }} - return format("{{ .URI }}", service, region), {{ .Service }}, {{ .Region }} - {{ if .Constraints }} } {{ end }} - {{ end }} - {{ end }} - - panic("unknown endpoint for " + service + " in " + region) -} - - -// AddOverride overrides the endpoint for a specific service, using either an -// existing region name or a fake one (e.g. "test-1"). -// -// This allows developers to use local mock AWS services when they're -// writing tests for their Go code that uses aws-go: -// -// endpoints.AddOverride("EC2", "test-1", "http://localhost:3000") -// // This EC2 client uses the override as service endpoint. -// cli := ec2.New(credentials, "test-1", nil) -func AddOverride(service, region, uri string) { - overrides = append(overrides, override{service, region, uri}) -} - -func format(uri, service, region string) string { - uri = strings.Replace(uri, "{scheme}", "https", -1) - uri = strings.Replace(uri, "{service}", service, -1) - uri = strings.Replace(uri, "{region}", region, -1) - return uri -} - -func findOverride(service, region string) *override { - for _, override := range overrides { - if strings.ToUpper(override.service) == strings.ToUpper(service) && - override.region == region { - return &override - } - } - return nil -} - -type override struct { - service string - region string - uri string -} - -var overrides []override -` diff --git a/src/github.com/getlantern/aws-sdk-go/model/helpers.go b/src/github.com/getlantern/aws-sdk-go/model/helpers.go deleted file mode 100644 index d9c6f6605d..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/model/helpers.go +++ /dev/null @@ -1,124 +0,0 @@ -package model - -import ( - "bytes" - "go/doc" - "regexp" - "strings" - - "golang.org/x/net/html" - "github.com/aarzilli/sandblast" -) - -func godoc(member, content string) string { - undocumented := "// " + exportable(member) + " is undocumented.\n" - - node, err := html.Parse(strings.NewReader(content)) - if err != nil { - return undocumented - } - - _, v, err := sandblast.Extract(node) - if err != nil { - return undocumented - } - - v = strings.TrimSpace(v) - if v == "" { - return undocumented - } - - if member != "" { - v = exportable(member) + " " + strings.ToLower(v[0:1]) + v[1:] - } - - out := bytes.NewBuffer(nil) - doc.ToText(out, v, "// ", "", 72) - return out.String() -} - -func exportable(name string) string { - // make sure the symbol is exportable - name = strings.ToUpper(name[0:1]) + name[1:] - - // fix common AWS<->Go bugaboos - for regexp, repl := range replacements { - name = regexp.ReplaceAllString(name, repl) - } - return name -} - -var replacements = map[*regexp.Regexp]string{ - regexp.MustCompile(`Acl`): "ACL", - regexp.MustCompile(`Adm([^i]|$)`): "ADM$1", - regexp.MustCompile(`Aes`): "AES", - regexp.MustCompile(`Api`): "API", - regexp.MustCompile(`Ami`): "AMI", - regexp.MustCompile(`Apns`): "APNS", - regexp.MustCompile(`Arn`): "ARN", - regexp.MustCompile(`Asn`): "ASN", - regexp.MustCompile(`Aws`): "AWS", - regexp.MustCompile(`Bcc([A-Z])`): "BCC$1", - regexp.MustCompile(`Bgp`): "BGP", - regexp.MustCompile(`Cc([A-Z])`): "CC$1", - regexp.MustCompile(`Cidr`): "CIDR", - regexp.MustCompile(`Cors`): "CORS", - regexp.MustCompile(`Csv`): "CSV", - regexp.MustCompile(`Cpu`): "CPU", - regexp.MustCompile(`Db`): "DB", - regexp.MustCompile(`Dhcp`): "DHCP", - regexp.MustCompile(`Dns`): "DNS", - regexp.MustCompile(`Ebs`): "EBS", - regexp.MustCompile(`Ec2`): "EC2", - regexp.MustCompile(`Eip`): "EIP", - regexp.MustCompile(`Gcm`): "GCM", - regexp.MustCompile(`Html`): "HTML", - regexp.MustCompile(`Https`): "HTTPS", - regexp.MustCompile(`Http([^s]|$)`): "HTTP$1", - regexp.MustCompile(`Hsm`): "HSM", - regexp.MustCompile(`Hvm`): "HVM", - regexp.MustCompile(`Iam`): "IAM", - regexp.MustCompile(`Icmp`): "ICMP", - regexp.MustCompile(`Id$`): "ID", - regexp.MustCompile(`Id([A-Z])`): "ID$1", - regexp.MustCompile(`Idn`): "IDN", - regexp.MustCompile(`Ids$`): "IDs", - regexp.MustCompile(`Ids([A-Z])`): "IDs$1", - regexp.MustCompile(`Iops`): "IOPS", - regexp.MustCompile(`Ip`): "IP", - regexp.MustCompile(`Jar`): "JAR", - regexp.MustCompile(`Json`): "JSON", - regexp.MustCompile(`Jvm`): "JVM", - regexp.MustCompile(`Kms`): "KMS", - regexp.MustCompile(`Mac([^h]|$)`): "MAC$1", - regexp.MustCompile(`Md5`): "MD5", - regexp.MustCompile(`Mfa`): "MFA", - regexp.MustCompile(`Ok`): "OK", - regexp.MustCompile(`Os`): "OS", - regexp.MustCompile(`Php`): "PHP", - regexp.MustCompile(`Raid`): "RAID", - regexp.MustCompile(`Ramdisk`): "RAMDisk", - regexp.MustCompile(`Rds`): "RDS", - regexp.MustCompile(`Sni`): "SNI", - regexp.MustCompile(`Sns`): "SNS", - regexp.MustCompile(`Sriov`): "SRIOV", - regexp.MustCompile(`Ssh`): "SSH", - regexp.MustCompile(`Ssl`): "SSL", - regexp.MustCompile(`Svn`): "SVN", - regexp.MustCompile(`Tar([^g]|$)`): "TAR$1", - regexp.MustCompile(`Tde`): "TDE", - regexp.MustCompile(`Tcp`): "TCP", - regexp.MustCompile(`Tgz`): "TGZ", - regexp.MustCompile(`Tls`): "TLS", - regexp.MustCompile(`Uri`): "URI", - regexp.MustCompile(`Url`): "URL", - regexp.MustCompile(`Vgw`): "VGW", - regexp.MustCompile(`Vhd`): "VHD", - regexp.MustCompile(`Vip`): "VIP", - regexp.MustCompile(`Vlan`): "VLAN", - regexp.MustCompile(`Vm([^d]|$)`): "VM$1", - regexp.MustCompile(`Vmdk`): "VMDK", - regexp.MustCompile(`Vpc`): "VPC", - regexp.MustCompile(`Vpn`): "VPN", - regexp.MustCompile(`Xml`): "XML", -} diff --git a/src/github.com/getlantern/aws-sdk-go/model/model.go b/src/github.com/getlantern/aws-sdk-go/model/model.go deleted file mode 100644 index 58ef8e71b7..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/model/model.go +++ /dev/null @@ -1,528 +0,0 @@ -// Package model contains functionality to generate clients for AWS APIs. -package model - -import ( - "encoding/json" - "fmt" - "io" - "regexp" - "strings" -) - -// Metadata contains various bits of metadata associated with an API. -type Metadata struct { - APIVersion string - EndpointPrefix string - JSONVersion string - ServiceAbbreviation string - ServiceFullName string - SignatureVersion string - TargetPrefix string - Protocol string - ChecksumFormat string - GlobalEndpoint string - TimestampFormat string -} - -// HTTPOptions contains the HTTP-specific options for an Operation. -type HTTPOptions struct { - Method string - RequestURI string -} - -// Operation is an API operation. -type Operation struct { - Name string - Documentation string - HTTP HTTPOptions - InputRef *ShapeRef `json:"Input"` - OutputRef *ShapeRef `json:"Output"` -} - -// Input returns the shape of the input parameter, if any. -func (o Operation) Input() *Shape { - return o.InputRef.Shape() -} - -// Output returns the shape of the output parameter, if any. -func (o Operation) Output() *Shape { - return o.OutputRef.Shape() -} - -// Error is an error returned by the API. -type Error struct { - Code string - HTTPStatusCode int - SenderFault bool -} - -// ShapeRef is a reference to a Shape. -type ShapeRef struct { - ShapeName string `json:"Shape"` - Documentation string - Location string - LocationName string - Wrapper bool - ResultWrapper string - Streaming bool - XMLNamespace XMLNamespace -} - -// WrappedType returns the Go type of the reference shape, wrapped if a result -// wrapper was specified. -func (ref *ShapeRef) WrappedType() string { - if ref.ResultWrapper != "" { - return "*" + exportable(ref.ResultWrapper) - } - return ref.Shape().Type() -} - -// WrappedLiteral returns an empty Go literal of the reference shape, wrapped if -// a result wrapper was specified. -func (ref *ShapeRef) WrappedLiteral() string { - if ref.ResultWrapper != "" { - return "&" + exportable(ref.ResultWrapper) + "{}" - } - return ref.Shape().Literal() -} - -// Shape returns the wrapped shape. -func (ref *ShapeRef) Shape() *Shape { - if ref == nil { - return nil - } - return service.Shapes[ref.ShapeName] -} - -// Member is a member of a shape. -type Member struct { - ShapeRef - Name string - Required bool -} - -// JSONTag returns the field tag for JSON protocol members. -func (m Member) JSONTag() string { - if m.ShapeRef.Location != "" || m.Name == "Body" { - return "`json:\"-\"`" - } - if !m.Required { - return fmt.Sprintf("`json:\"%s,omitempty\"`", m.Name) - } - return fmt.Sprintf("`json:\"%s\"`", m.Name) -} - -// XMLTag returns the field tag for XML protocol members. -func (m Member) XMLTag(wrapper string) string { - if m.ShapeRef.Location != "" || m.Name == "Body" { - return "`xml:\"-\"`" - } - - var path []string - if wrapper != "" { - path = append(path, wrapper) - } - - if m.LocationName != "" { - path = append(path, m.LocationName) - } else { - path = append(path, m.Name) - } - - if m.Shape().ShapeType == "list" { - loc := m.Shape().MemberRef.LocationName - if loc != "" { - path = append(path, loc) - } - } - - // We can't omit all empty values, because encoding/xml makes it impossible - // to marshal pointers to empty values. - // https://github.com/golang/go/issues/5452 - if m.Shape().ShapeType == "list" || m.Shape().ShapeType == "structure" { - return fmt.Sprintf("`xml:%q`", strings.Join(path, ">")+",omitempty") - } - - return fmt.Sprintf("`xml:%q`", strings.Join(path, ">")) -} - -// QueryTag returns the field tag for Query protocol members. -func (m Member) QueryTag(wrapper string) string { - var path, prefix []string - if wrapper != "" { - path = append(path, wrapper) - } - - if !m.Shape().Flattened { - if m.LocationName != "" { - prefix = append(prefix, m.LocationName) - path = append(path, m.LocationName) - } else { - prefix = append(prefix, m.Name) - path = append(path, m.Name) - } - } - - if m.Shape().ShapeType == "list" || m.Shape().ShapeType == "map" { - locPrefix := "member" - if m.Shape().ShapeType == "map" { - locPrefix = "entry" - } - - if !m.Shape().Flattened { - prefix = append(prefix, locPrefix) - } else { - if ref := m.Shape().MemberRef; ref != nil { - prefix = append(prefix, ref.LocationName) - } else { - prefix = append(prefix, m.LocationName) - } - } - - var loc string - if ref := m.Shape().MemberRef; ref != nil { - loc = ref.LocationName - } else { - loc = m.LocationName - } - if loc == "" { - loc = locPrefix - } - path = append(path, loc) - } - - return fmt.Sprintf( - "`query:%q xml:%q`", - strings.Join(prefix, "."), - strings.Join(path, ">"), - ) -} - -// EC2Tag returns the field tag for EC2 protocol members. -func (m Member) EC2Tag() string { - var path []string - if m.LocationName != "" { - path = append(path, m.LocationName) - } else { - path = append(path, m.Name) - } - - if m.Shape().ShapeType == "list" { - loc := m.Shape().MemberRef.LocationName - if loc == "" { - loc = "member" - } - path = append(path, loc) - } - - // Literally no idea how to distinguish between a location name that's - // required (e.g. DescribeImagesRequest#Filters) and one that's weirdly - // misleading (e.g. ModifyInstanceAttributeRequest#InstanceId) besides this. - - // Use the locationName unless it's missing or unless it starts with a - // lowercase letter. Not even making this up. - var name = m.LocationName - if name == "" || strings.ToLower(name[0:1]) == name[0:1] { - name = m.Name - } - - return fmt.Sprintf("`ec2:%q xml:%q`", name, strings.Join(path, ">")) -} - -// Shape returns the member's shape. -func (m Member) Shape() *Shape { - return m.ShapeRef.Shape() -} - -// Type returns the member's Go type. -func (m Member) Type() string { - if m.Streaming { - return "io.ReadCloser" // this allows us to pass the S3 body directly - } - return m.Shape().Type() -} - -// An XMLNamespace is an XML namespace. *shrug* -type XMLNamespace struct { - URI string -} - -// Shape is a type used in an API. -type Shape struct { - Box bool - Documentation string - Enum []string - Error Error - Exception bool - Fault bool - Flattened bool - KeyRef *ShapeRef `json:"Key"` - LocationName string - Max int - MemberRef *ShapeRef `json:"Member"` - MemberRefs map[string]ShapeRef `json:"Members"` - Min int - Name string - Pattern string - Payload string - Required []string - Sensitive bool - Streaming bool - TimestampFormat string - ShapeType string `json:"Type"` - ValueRef *ShapeRef `json:"Value"` - Wrapper bool - XMLAttribute bool - XMLNamespace XMLNamespace - XMLOrder []string -} - -var enumStrip = regexp.MustCompile(`[()\s]`) -var enumDelims = regexp.MustCompile(`[-_:\./]+`) -var enumCamelCase = regexp.MustCompile(`([a-z])([A-Z])`) - -// Enums returns a map of enum constant names to their values. -func (s *Shape) Enums() map[string]string { - if s.Enum == nil { - return nil - } - - fix := func(s string) string { - s = enumStrip.ReplaceAllLiteralString(s, "") - s = enumCamelCase.ReplaceAllString(s, "$1-$2") - parts := enumDelims.Split(s, -1) - for i, v := range parts { - v = strings.ToLower(v) - parts[i] = exportable(v) - } - return strings.Join(parts, "") - } - - enums := map[string]string{} - name := exportable(s.Name) - for _, e := range s.Enum { - if e != "" { - enums[name+fix(e)] = fmt.Sprintf("%q", e) - } - } - - return enums -} - -// Key returns the shape's key shape, if any. -func (s *Shape) Key() *Shape { - return s.KeyRef.Shape() -} - -// KeyXMLTag returns the field tag for key. -func (s *Shape) KeyXMLTag() string { - if s.ShapeType != "map" || s.KeyRef == nil { - return "" - } - - if s.KeyRef.LocationName == "" { - return "`xml:\"key\"`" - } - return fmt.Sprintf("`xml:\"%s\"`", s.KeyRef.LocationName) -} - -// ValueXMLTag returns the field tag for value. -func (s *Shape) ValueXMLTag() string { - if s.ShapeType != "map" || s.ValueRef == nil { - return "" - } - - if s.ValueRef.LocationName == "" { - return "`xml:\"value\"`" - } - return fmt.Sprintf("`xml:\"%s\"`", s.ValueRef.LocationName) -} - -// Value returns the shape's value shape, if any. -func (s *Shape) Value() *Shape { - return s.ValueRef.Shape() -} - -// Member returns the shape's member shape, if any. -func (s *Shape) Member() *Shape { - return s.MemberRef.Shape() -} - -// Members returns the shape's members. -func (s *Shape) Members() map[string]Member { - required := func(v string) bool { - for _, s := range s.Required { - if s == v { - return true - } - } - return false - } - - members := map[string]Member{} - for name, ref := range s.MemberRefs { - members[name] = Member{ - Name: name, - Required: required(name), - ShapeRef: ref, - } - } - return members -} - -// ResultWrapper returns the shape's result wrapper, if and only if a single, -// unambiguous wrapper can be found in the API's operation outputs. -func (s *Shape) ResultWrapper() string { - var wrappers []string - - for _, op := range service.Operations { - if op.OutputRef != nil && op.OutputRef.ShapeName == s.Name { - wrappers = append(wrappers, op.OutputRef.ResultWrapper) - } - } - - if len(wrappers) == 1 { - return wrappers[0] - } - - return "" -} - -// Literal returns a Go literal of the given shape. -func (s *Shape) Literal() string { - if s.ShapeType == "structure" { - return "&" + s.Type()[1:] + "{}" - } - panic("trying to make a literal non-structure for " + s.Name) -} - -// ElementType returns the Go type of the shape as an element of another shape -// (i.e., list or map). -func (s *Shape) ElementType() string { - switch s.ShapeType { - case "structure": - return exportable(s.Name) - case "integer": - return "int" - case "long": - return "int64" - case "float": - return "float32" - case "double": - return "float64" - case "string": - return "string" - case "map": - if service.Metadata.Protocol == "query" { - return exportable(s.Name) - } - return "map[" + s.Key().ElementType() + "]" + s.Value().ElementType() - case "list": - return "[]" + s.Member().ElementType() - case "boolean": - return "bool" - case "blob": - return "[]byte" - case "timestamp": - return "time.Time" - } - - panic(fmt.Errorf("type %q (%q) not found", s.Name, s.ShapeType)) -} - -// Type returns the shape's Go type. -func (s *Shape) Type() string { - switch s.ShapeType { - case "structure": - return "*" + exportable(s.Name) - case "integer": - if s.Name == "ContentLength" || s.Name == "Size" { - return "aws.LongValue" - } - return "aws.IntegerValue" - case "long": - return "aws.LongValue" - case "float": - return "aws.FloatValue" - case "double": - return "aws.DoubleValue" - case "string": - return "aws.StringValue" - case "map": - if service.Metadata.Protocol == "query" { - return exportable(s.Name) - } - return "map[" + s.Key().ElementType() + "]" + s.Value().ElementType() - case "list": - return "[]" + s.Member().ElementType() - case "boolean": - return "aws.BooleanValue" - case "blob": - return "[]byte" - case "timestamp": - // JSON protocol APIs use Unix timestamps - if service.Metadata.Protocol == "json" { - return "*aws.UnixTimestamp" - } - return "time.Time" - } - - panic(fmt.Errorf("type %q (%q) not found", s.Name, s.ShapeType)) -} - -// A Service is an AWS service. -type Service struct { - Name string - FullName string - PackageName string - Metadata Metadata - Documentation string - Operations map[string]Operation - Shapes map[string]*Shape -} - -// Wrappers returns the service's wrapper shapes. -func (s Service) Wrappers() map[string]*Shape { - wrappers := map[string]*Shape{} - - // collect all wrapper types - for _, op := range s.Operations { - if op.InputRef != nil && op.InputRef.ResultWrapper != "" { - wrappers[op.InputRef.ResultWrapper] = op.Input() - } - - if op.OutputRef != nil && op.OutputRef.ResultWrapper != "" { - wrappers[op.OutputRef.ResultWrapper] = op.Output() - } - } - - // remove all existing types? - for name := range wrappers { - if _, ok := s.Shapes[name]; ok { - delete(wrappers, name) - } - } - - return wrappers -} - -var service Service - -// Load parses the given JSON input and loads it into the singleton instance of -// the package. -func Load(name string, r io.Reader) error { - service = Service{} - if err := json.NewDecoder(r).Decode(&service); err != nil { - return err - } - - for name, shape := range service.Shapes { - shape.Name = name - } - - service.FullName = service.Metadata.ServiceFullName - service.PackageName = strings.ToLower(name) - service.Name = name - - return nil -} diff --git a/src/github.com/getlantern/aws-sdk-go/model/templates.go b/src/github.com/getlantern/aws-sdk-go/model/templates.go deleted file mode 100644 index b93d23358d..0000000000 --- a/src/github.com/getlantern/aws-sdk-go/model/templates.go +++ /dev/null @@ -1,827 +0,0 @@ -package model - -import ( - "bytes" - "go/format" - "io" - "text/template" -) - -// Generate writes a Go file with a client for using the parsed service. -func Generate(w io.Writer) error { - t := template.New("root").Funcs(template.FuncMap{ - "godoc": godoc, - "exportable": exportable, - }) - template.Must(common(t)) - template.Must(jsonClient(t)) - template.Must(queryClient(t)) - template.Must(ec2Client(t)) - template.Must(restCommon(t)) - template.Must(restXMLClient(t)) - template.Must(restJSONClient(t)) - - out := new(bytes.Buffer) - if err := t.ExecuteTemplate(out, service.Metadata.Protocol, service); err != nil { - return err - } - - b, err := format.Source(out.Bytes()) - if err != nil { - _, _ = w.Write(out.Bytes()) - return err - } - - _, err = w.Write(b) - return err -} - -func common(t *template.Template) (*template.Template, error) { - return t.Parse(` -{{ define "header" }} -// THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. - -// Package {{ .PackageName }} provides a client for {{ .FullName }}. -package {{ .PackageName }} - -import ( - "net/http" - "time" - - "github.com/awslabs/aws-sdk-go/aws" - "github.com/awslabs/aws-sdk-go/gen/endpoints" -) - -{{ end }} - -{{ define "footer" }} -// avoid errors if the packages aren't referenced -var _ time.Time -{{ end }} - -`) -} - -func jsonClient(t *template.Template) (*template.Template, error) { - return t.Parse(` -{{ define "json" }} -{{ template "header" $ }} - -// {{ .Name }} is a client for {{ .FullName }}. -type {{ .Name }} struct { - client *aws.JSONClient -} - -// New returns a new {{ .Name }} client. -func New(creds aws.CredentialsProvider, region string, client *http.Client) *{{ .Name }} { - if client == nil { - client = http.DefaultClient - } - - endpoint, service, region := endpoints.Lookup("{{ .Metadata.EndpointPrefix }}", region) - - return &{{ .Name }}{ - client: &aws.JSONClient{ - Context: aws.Context{ - Credentials: creds, - Service: service, - Region: region, - }, Client: client, - Endpoint: endpoint, - JSONVersion: "{{ .Metadata.JSONVersion }}", - TargetPrefix: "{{ .Metadata.TargetPrefix }}", - }, - } -} - -{{ range $name, $op := .Operations }} - -{{ godoc $name $op.Documentation }} func (c *{{ $.Name }}) {{ exportable $name }}({{ if $op.Input }}req {{ $op.Input.Type }}{{ end }}) ({{ if $op.Output }}resp {{ $op.Output.Type }},{{ end }} err error) { - {{ if $op.Output }}resp = {{ $op.Output.Literal }}{{ else }}// NRE{{ end }} - err = c.client.Do("{{ $name }}", "{{ $op.HTTP.Method }}", "{{ $op.HTTP.RequestURI }}", {{ if $op.Input }} req {{ else }} nil {{ end }}, {{ if $op.Output }} resp {{ else }} nil {{ end }}) - return -} - -{{ end }} - -{{ range $name, $s := .Shapes }} -{{ if eq $s.ShapeType "structure" }} -{{ if not $s.Exception }} - -// {{ exportable $name }} is undocumented. -type {{ exportable $name }} struct { -{{ range $name, $m := $s.Members }} -{{ exportable $name }} {{ $m.Type }} {{ $m.JSONTag }} {{ end }} -} - -{{ end }} -{{ else if $s.Enum }} -// Possible values for {{ $.Name }}. -const ( -{{ range $name, $value := $s.Enums }} -{{ $name }} = {{ $value }}{{ end }} -) -{{ end }} -{{ end }} - -{{ template "footer" }} -{{ end }} - -`) -} - -func queryClient(t *template.Template) (*template.Template, error) { - return t.Parse(` -{{ define "query" }} -{{ template "header" $ }} - -import ( - "io" - "encoding/xml" -) - -// {{ .Name }} is a client for {{ .FullName }}. -type {{ .Name }} struct { - client *aws.QueryClient -} - -// New returns a new {{ .Name }} client. -func New(creds aws.CredentialsProvider, region string, client *http.Client) *{{ .Name }} { - if client == nil { - client = http.DefaultClient - } - - endpoint, service, region := endpoints.Lookup("{{ .Metadata.EndpointPrefix }}", region) - - return &{{ .Name }}{ - client: &aws.QueryClient{ - Context: aws.Context{ - Credentials: creds, - Service: service, - Region: region, - }, - Client: client, - Endpoint: endpoint, - APIVersion: "{{ .Metadata.APIVersion }}", - }, - } -} - -{{ range $name, $op := .Operations }} - -{{ godoc $name $op.Documentation }} func (c *{{ $.Name }}) {{ exportable $name }}({{ if $op.InputRef }}req {{ $op.InputRef.WrappedType }}{{ end }}) ({{ if $op.OutputRef }}resp {{ $op.OutputRef.WrappedType }},{{ end }} err error) { - {{ if $op.Output }}resp = {{ $op.OutputRef.WrappedLiteral }}{{ else }}// NRE{{ end }} - err = c.client.Do("{{ $name }}", "{{ $op.HTTP.Method }}", "{{ $op.HTTP.RequestURI }}", {{ if $op.Input }} req {{ else }} nil {{ end }}, {{ if $op.Output }} resp {{ else }} nil {{ end }}) - return -} - -{{ end }} - -{{ range $name, $s := .Shapes }} -{{ if eq $s.ShapeType "map" }} - -type {{ exportable $name }} map[{{ $s.Key.ElementType }}]{{ $s.Value.ElementType }} - -// UnmarshalXML implements xml.UnmarshalXML interface for map -func (m *{{ exportable $name }}) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error { - if *m == nil { - (*m) = make({{ exportable $name }}) - } - for { - var e struct { - {{ or $s.KeyRef.LocationName "Key" }} {{ $s.Key.ElementType }} {{ $s.KeyXMLTag }} - {{ or $s.ValueRef.LocationName "Value" }} {{ $s.Value.ElementType }} {{ $s.ValueXMLTag }} - } - err := d.DecodeElement(&e, &start) - if err != nil && err != io.EOF { - return err - } - if err == io.EOF { - break - } - (*m)[e.{{ or $s.KeyRef.LocationName "Key" }}] = e.{{ or $s.ValueRef.LocationName "Value" }} - } - return nil -} -{{ end }} - -{{ if eq $s.ShapeType "structure" }} -{{ if not $s.Exception }} - -// {{ exportable $name }} is undocumented. -type {{ exportable $name }} struct { -{{ range $name, $m := $s.Members }} -{{ exportable $name }} {{ $m.Type }} {{ $m.QueryTag $s.ResultWrapper }} {{ end }} -} - -{{ end }} -{{ else if $s.Enum }} -// Possible values for {{ $.Name }}. -const ( -{{ range $name, $value := $s.Enums }} -{{ $name }} = {{ $value }}{{ end }} -) -{{ end }} -{{ end }} - -{{ range $wname, $s := .Wrappers }} - -// {{ exportable $wname }} is a wrapper for {{ $s.Name }}. -type {{ exportable $wname }} struct { -{{ range $name, $m := $s.Members }} -{{ exportable $name }} {{ $m.Type }} {{ $m.QueryTag $wname }} {{ end }} -} - -{{ end }} - -{{ template "footer" }} -var _ xml.Decoder -var _ = io.EOF -{{ end }} - -`) -} - -func ec2Client(t *template.Template) (*template.Template, error) { - return t.Parse(` -{{ define "ec2" }} -{{ template "header" $ }} - -// {{ .Name }} is a client for {{ .FullName }}. -type {{ .Name }} struct { - client *aws.EC2Client -} - -// New returns a new {{ .Name }} client. -func New(creds aws.CredentialsProvider, region string, client *http.Client) *{{ .Name }} { - if client == nil { - client = http.DefaultClient - } - - endpoint, service, region := endpoints.Lookup("{{ .Metadata.EndpointPrefix }}", region) - - return &{{ .Name }}{ - client: &aws.EC2Client{ - Context: aws.Context{ - Credentials: creds, - Service: service, - Region: region, - }, - Client: client, - Endpoint: endpoint, - APIVersion: "{{ .Metadata.APIVersion }}", - }, - } -} - -{{ range $name, $op := .Operations }} - -{{ godoc $name $op.Documentation }} func (c *{{ $.Name }}) {{ exportable $name }}({{ if $op.InputRef }}req {{ $op.InputRef.WrappedType }}{{ end }}) ({{ if $op.OutputRef }}resp {{ $op.OutputRef.WrappedType }},{{ end }} err error) { - {{ if $op.Output }}resp = {{ $op.OutputRef.WrappedLiteral }}{{ else }}// NRE{{ end }} - err = c.client.Do("{{ $name }}", "{{ $op.HTTP.Method }}", "{{ $op.HTTP.RequestURI }}", {{ if $op.Input }} req {{ else }} nil {{ end }}, {{ if $op.Output }} resp {{ else }} nil {{ end }}) - return -} - -{{ end }} - -{{ range $name, $s := .Shapes }} -{{ if eq $s.ShapeType "structure" }} -{{ if not $s.Exception }} - -// {{ exportable $name }} is undocumented. -type {{ exportable $name }} struct { -{{ range $name, $m := $s.Members }} -{{ exportable $name }} {{ $m.Type }} {{ $m.EC2Tag }} {{ end }} -} - -{{ end }} -{{ else if $s.Enum }} -// Possible values for {{ $.Name }}. -const ( -{{ range $name, $value := $s.Enums }} -{{ $name }} = {{ $value }}{{ end }} -) -{{ end }} -{{ end }} - -{{ range $wname, $s := .Wrappers }} - -// {{ exportable $wname }} is a wrapper for {{ $s.Name }}. -type {{ exportable $wname }} struct { -{{ range $name, $m := $s.Members }} -{{ exportable $name }} {{ $m.Type }} {{ $m.EC2Tag }} {{ end }} -} - -{{ end }} - -{{ template "footer" }} -{{ end }} - -`) -} - -func restCommon(t *template.Template) (*template.Template, error) { - return t.Parse(` -{{ define "rest-uri" }} - {{ if .Input }} - {{ range $name, $m := .Input.Members }} - {{ if eq $m.Location "uri" }} - - if req.{{ exportable $name }} != nil { - uri = strings.Replace(uri, "{"+"{{ $m.LocationName }}"+"}", aws.EscapePath(*req.{{ exportable $name }}), -1) - uri = strings.Replace(uri, "{"+"{{ $m.LocationName }}+"+"}", aws.EscapePath(*req.{{ exportable $name }}), -1) - } - - {{ end }} - {{ end }} - {{ end }} - -{{ end }} - - -{{ define "rest-querystring" }} - q := url.Values{} - - {{ if .Input }} - {{ range $name, $m := .Input.Members }} - {{ if eq $m.Location "querystring" }} - - - {{ if eq $m.Shape.ShapeType "string" }} - - if req.{{ exportable $name }} != nil { - q.Set("{{ $m.LocationName }}", *req.{{ exportable $name }}) - } - - {{ else if eq $m.Shape.ShapeType "timestamp" }} - - if req.{{ exportable $name }} != (time.Time{}) { - q.Set("{{ $m.LocationName }}", req.{{ exportable $name }}.Format(time.RFC822)) - } - - {{ else if eq $m.Shape.ShapeType "integer" }} - - if req.{{ exportable $name }} != nil { - q.Set("{{ $m.LocationName }}", strconv.Itoa(*req.{{ exportable $name }})) - } - - {{ else }} - - if req.{{ exportable $name }} != nil { - q.Set("{{ $m.LocationName }}", fmt.Sprintf("%v", req.{{ exportable $name }})) - } - - {{ end }} - - {{ end }} - {{ end }} - {{ end }} - - if len(q) > 0 { - uri += "?" + q.Encode() - } -{{ end }} - -{{ define "rest-reqheaders" }} - {{ if .Input }} - {{ range $name, $m := .Input.Members }} - {{ if eq $m.Location "header" }} - - {{ if eq $m.Shape.ShapeType "string" }} - - if req.{{ exportable $name }} != nil { - httpReq.Header.Set("{{ $m.LocationName }}", *req.{{ exportable $name }}) - } - - {{ else if eq $m.Shape.ShapeType "timestamp" }} - - if req.{{ exportable $name }} != (time.Time{}) { - httpReq.Header.Set("{{ $m.LocationName }}", req.{{ exportable $name }}.Format(time.RFC822)) - } - - {{ else if eq $m.Shape.ShapeType "integer" }} - - {{ if eq $m.LocationName "Content-Length" }} - - if req.{{ exportable $name }} != nil { - httpReq.ContentLength = *req.{{ exportable $name }} - } - - {{ else }} - - if req.{{ exportable $name }} != nil { - httpReq.Header.Set("{{ $m.LocationName }}", strconv.Itoa(*req.{{ exportable $name }})) - } - - {{ end }} - - {{ else }} - - if req.{{ exportable $name }} != nil { - httpReq.Header.Set("{{ $m.LocationName }}", fmt.Sprintf("%v", req.{{ exportable $name }})) - } - - {{ end }} - - {{ else if eq $m.Location "headers" }} - - for name, value := range req.{{ exportable $name }} { - httpReq.Header.Set(name, value) - } - - {{ end }} - {{ end }} - {{ end }} -{{ end }} - -{{ define "rest-respheaders" }} - {{ range $name, $m := .Output.Members }} - {{ if ne $name "Body" }} - {{ if eq $m.Location "header" }} - if s := httpResp.Header.Get("{{ $m.LocationName }}"); s != "" { - {{ if eq $m.Shape.ShapeType "string" }} - resp.{{ exportable $name }} = &s - {{ else if eq $m.Shape.ShapeType "timestamp" }} - var t time.Time - t, err = time.Parse(time.RFC1123, s) - if err != nil { - return - } - resp.{{ exportable $name }} = t - {{ else if eq $m.Shape.ShapeType "integer" }} - {{ if eq $m.Shape.Name "ContentLength" }} - var n int64 - n, err = strconv.ParseInt(s, 10, 64) - {{ else }} - var n int - n, err = strconv.Atoi(s) - {{ end }} - if err != nil { - return - } - resp.{{ exportable $name }} = &n - {{ else if eq $m.Shape.ShapeType "boolean" }} - var v bool - v, err = strconv.ParseBool(s) - if err != nil { - return - } - resp.{{ exportable $name }} = &v - {{ else }} - // TODO: add support for {{ $m.Shape.ShapeType }} headers - {{ end }} - } - {{ else if eq $m.Location "headers" }} - resp.{{ exportable $name }} = {{ $m.Shape.Type }}{} - for name := range httpResp.Header { - if strings.HasPrefix(name, "X-Amz-Meta-") { - resp.{{ exportable $name }}[name] = httpResp.Header.Get(name) - } - } - {{ else if eq $m.Location "statusCode" }} - resp.{{ exportable $name }} = aws.Integer(httpResp.StatusCode) - {{ else if ne $m.Location "" }} - // TODO: add support for extracting output members from {{ $m.Location }} to support {{ exportable $name }} - {{ end }} - - {{ end }} - {{ end }} -{{ end }} -`) -} - -func restXMLClient(t *template.Template) (*template.Template, error) { - return t.Parse(` -{{ define "rest-xml" }} -{{ template "header" $ }} - -import ( - "bytes" - "encoding/xml" - "fmt" - "io" - "io/ioutil" - "net/url" - "strconv" - "strings" -) - -// {{ .Name }} is a client for {{ .FullName }}. -type {{ .Name }} struct { - client *aws.RestClient -} - -// New returns a new {{ .Name }} client. -func New(creds aws.CredentialsProvider, region string, client *http.Client) *{{ .Name }} { - if client == nil { - client = http.DefaultClient - } - - endpoint, service, region := endpoints.Lookup("{{ .Metadata.EndpointPrefix }}", region) - - return &{{ .Name }}{ - client: &aws.RestClient{ - Context: aws.Context{ - Credentials: creds, - Service: service, - Region: region, - }, - Client: client, - Endpoint: endpoint, - APIVersion: "{{ .Metadata.APIVersion }}", - }, - } -} - -{{ range $name, $op := .Operations }} - -{{ godoc $name $op.Documentation }} func (c *{{ $.Name }}) {{ exportable $name }}({{ if $op.Input }}req {{ $op.Input.Type }}{{ end }}) ({{ if $op.Output }}resp {{ $op.Output.Type }},{{ end }} err error) { - {{ if $op.Output }}resp = {{ $op.Output.Literal }}{{ else }}// NRE{{ end }} - - var body io.Reader - var contentType string - {{ if $op.Input }} - - {{ if $op.Input.Payload }} - {{ with $m := index $op.Input.Members $op.Input.Payload }} - {{ if $m.Streaming }} - body = req.{{ exportable $m.Name }} - {{ else }} - contentType = "application/xml" - {{ if ne $m.LocationName ""}} - if req.{{ exportable $m.Name }} != nil { - req.{{ exportable $m.Name }}.XMLName = xml.Name{ - Space: "{{ $m.XMLNamespace.URI }}", - Local: "{{ $m.LocationName }}", - } - } - {{ end }} - b, err := xml.Marshal(req.{{ exportable $m.Name }}) - if err != nil { - return - } - body = bytes.NewReader(b) - {{ end }} - {{ end }} - {{ else if $op.InputRef.LocationName }} - contentType = "application/xml" - req.XMLName = xml.Name{ - Space: "{{ $op.InputRef.XMLNamespace.URI }}", - Local: "{{ $op.InputRef.LocationName }}", - } - b, err := xml.Marshal(req) - if err != nil { - return - } - body = bytes.NewReader(b) - {{ end }} - {{ end }} - - - uri := c.client.Endpoint + "{{ $op.HTTP.RequestURI }}" - {{ template "rest-uri" $op }} - - - {{ template "rest-querystring" $op }} - - httpReq, err := http.NewRequest("{{ $op.HTTP.Method }}", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - {{ template "rest-reqheaders" $op }} - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - {{ if $op.Output }} - {{ with $name := "Body" }} - {{ with $m := index $op.Output.Members $name }} - {{ if $m }} - - {{ if $m.Streaming }} - resp.Body = httpResp.Body - {{ else }} - defer httpResp.Body.Close() - if e := xml.NewDecoder(httpResp.Body).Decode(&resp.{{ $op.Output.Payload }}); e != nil && e != io.EOF { - err = e - return - } - {{ end }} - - - {{ else }} - defer httpResp.Body.Close() - {{ end }} - {{ end }} - - {{ template "rest-respheaders" $op }} - {{ end }} - {{ else }} - defer httpResp.Body.Close() - {{ end }} - - - return -} - -{{ end }} - -{{ range $name, $s := .Shapes }} -{{ if eq $s.ShapeType "structure" }} -{{ if not $s.Exception }} - -// {{ exportable $name }} is undocumented. -type {{ exportable $name }} struct { - XMLName xml.Name -{{ range $name, $m := $s.Members }} -{{ exportable $name }} {{ $m.Type }} {{ $m.XMLTag $s.ResultWrapper }} {{ end }} -} - -func (v *{{ exportable $name }}) MarshalXML(e *xml.Encoder, start xml.StartElement) error { - return aws.MarshalXML(v, e, start) -} - -{{ end }} -{{ else if $s.Enum }} -// Possible values for {{ $.Name }}. -const ( -{{ range $name, $value := $s.Enums }} -{{ $name }} = {{ $value }}{{ end }} -) -{{ end }} -{{ end }} - -{{ template "footer" }} -var _ bytes.Reader -var _ url.URL -var _ fmt.Stringer -var _ strings.Reader -var _ strconv.NumError -var _ = ioutil.Discard -{{ end }} - -`) -} - -func restJSONClient(t *template.Template) (*template.Template, error) { - return t.Parse(` -{{ define "rest-json" }} -{{ template "header" $ }} - -import ( - "bytes" - "encoding/json" - "fmt" - "io" - "io/ioutil" - "net/url" - "strconv" - "strings" -) - -// {{ .Name }} is a client for {{ .FullName }}. -type {{ .Name }} struct { - client *aws.RestClient -} - -// New returns a new {{ .Name }} client. -func New(creds aws.CredentialsProvider, region string, client *http.Client) *{{ .Name }} { - if client == nil { - client = http.DefaultClient - } - - endpoint, service, region := endpoints.Lookup("{{ .Metadata.EndpointPrefix }}", region) - - return &{{ .Name }}{ - client: &aws.RestClient{ - Context: aws.Context{ - Credentials: creds, - Service: service, - Region: region, - }, - Client: client, - Endpoint: endpoint, - APIVersion: "{{ .Metadata.APIVersion }}", - }, - } -} - -{{ range $name, $op := .Operations }} - -{{ godoc $name $op.Documentation }} func (c *{{ $.Name }}) {{ exportable $name }}({{ if $op.Input }}req {{ $op.Input.Type }}{{ end }}) ({{ if $op.Output }}resp {{ $op.Output.Type }},{{ end }} err error) { - {{ if $op.Output }}resp = {{ $op.Output.Literal }}{{ else }}// NRE{{ end }} - - var body io.Reader - var contentType string - {{ if $op.Input }} - {{ if $op.Input.Payload }} - {{ with $m := index $op.Input.Members $op.Input.Payload }} - {{ if $m.Streaming }} - body = req.{{ exportable $m.Name }} - {{ else }} - contentType = "application/json" - b, err := json.Marshal(req.{{ exportable $m.Name }}) - if err != nil { - return - } - body = bytes.NewReader(b) - {{ end }} - {{ end }} - {{ end }} - {{ end }} - - - uri := c.client.Endpoint + "{{ $op.HTTP.RequestURI }}" - {{ template "rest-uri" $op }} - - {{ template "rest-querystring" $op }} - - httpReq, err := http.NewRequest("{{ $op.HTTP.Method }}", uri, body) - if err != nil { - return - } - - if contentType != "" { - httpReq.Header.Set("Content-Type", contentType) - } - - {{ template "rest-reqheaders" $op }} - - httpResp, err := c.client.Do(httpReq) - if err != nil { - return - } - - {{ if $op.Output }} - {{ with $name := "Body" }} - {{ with $m := index $op.Output.Members $name }} - {{ if $m }} - - {{ if $m.Streaming }} - resp.Body = httpResp.Body - {{ else }} - defer httpResp.Body.Close() - - if e := json.NewDecoder(httpResp.Body).Decode(resp); e != nil && e != io.EOF { - err = e - return - } - - {{ end }} - - - {{ else }} - defer httpResp.Body.Close() - {{ end }} - {{ end }} - - {{ template "rest-respheaders" $op }} - {{ end }} - {{ else }} - defer httpResp.Body.Close() - {{ end }} - - - return -} - -{{ end }} - -{{ range $name, $s := .Shapes }} -{{ if eq $s.ShapeType "structure" }} -{{ if not $s.Exception }} - -// {{ exportable $name }} is undocumented. -type {{ exportable $name }} struct { -{{ range $name, $m := $s.Members }} -{{ exportable $name }} {{ $m.Type }} {{ $m.JSONTag }} {{ end }} -} - -{{ end }} -{{ else if $s.Enum }} -// Possible values for {{ $.Name }}. -const ( -{{ range $name, $value := $s.Enums }} -{{ $name }} = {{ $value }}{{ end }} -) -{{ end }} -{{ end }} - -{{ template "footer" }} -var _ bytes.Reader -var _ url.URL -var _ fmt.Stringer -var _ strings.Reader -var _ strconv.NumError -var _ = ioutil.Discard -var _ json.RawMessage -{{ end }} -`) -} diff --git a/src/github.com/getlantern/enproxy/.gitignore b/src/github.com/getlantern/enproxy/.gitignore deleted file mode 100644 index 783cd5baaf..0000000000 --- a/src/github.com/getlantern/enproxy/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -*.swp - diff --git a/src/github.com/getlantern/enproxy/.travis.yml b/src/github.com/getlantern/enproxy/.travis.yml deleted file mode 100644 index c12a10f117..0000000000 --- a/src/github.com/getlantern/enproxy/.travis.yml +++ /dev/null @@ -1,14 +0,0 @@ -language: go - -go: - - 1.4.1 - -install: - - go get -d -t -v ./... - - go build -v ./... - - go get golang.org/x/tools/cmd/cover - - go get -v github.com/axw/gocov/gocov - - go get -v github.com/mattn/goveralls - -script: - - $HOME/gopath/bin/goveralls -v -service travis-ci github.com/getlantern/enproxy diff --git a/src/github.com/getlantern/enproxy/LICENSE b/src/github.com/getlantern/enproxy/LICENSE deleted file mode 100644 index 3ee01626e1..0000000000 --- a/src/github.com/getlantern/enproxy/LICENSE +++ /dev/null @@ -1,202 +0,0 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright 2014 Brave New Software Project, Inc. - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/src/github.com/getlantern/enproxy/README.md b/src/github.com/getlantern/enproxy/README.md deleted file mode 100644 index 95d9da54a0..0000000000 --- a/src/github.com/getlantern/enproxy/README.md +++ /dev/null @@ -1,76 +0,0 @@ -enproxy [![Travis CI Status](https://travis-ci.org/getlantern/enproxy.svg?branch=master)](https://travis-ci.org/getlantern/enproxy) [![Coverage Status](https://coveralls.io/repos/getlantern/enproxy/badge.png)](https://coveralls.io/r/getlantern/enproxy) [![GoDoc](https://godoc.org/github.com/getlantern/enproxy?status.png)](http://godoc.org/github.com/getlantern/enproxy) -========== - -enproxy provides an implementation of net.Conn that sends and receives data to/ -from a proxy using HTTP request/response pairs that encapsulate the data. This -is useful when you need to tunnel arbitrary protocols over an HTTP proxy that -doesn't support HTTP CONNECT. Content distribution networks are one example of -such a proxy. - -To open such a connection: - -```go -conn := &enproxy.Conn{ - Addr: addr, - Config: &enproxy.Config{ - DialProxy: func(addr string) (net.Conn, error) { - // This opens a TCP connection to the proxy - return net.Dial("tcp", proxyAddress) - }, - NewRequest: func(method string, body io.Reader) (req *http.Request, err error) { - // This is called for every request from enproxy.Conn to the proxy - return http.NewRequest(method, "http://"+proxyAddress+"/", body) - }, - }, -} -err := conn.Connect() -if err == nil { - // start using conn as any other net.Conn -} -``` - -To start the corresponding proxy server: - -```go -proxy := &enproxy.Proxy{} -err := proxy.ListenAndServe(proxyAddress) -if err != nil { - log.Fatalf("Unable to listen and serve: %s", err) -} -``` - -## Debugging - -enproxy allows tracing various global metrics about connections, which can be -useful when debugging issues like file descriptor leaks. To enable this tracing, -just set the environment variable `TRACE_CONN_STATE=true`. This will cause the -program to output information like the below every 5 seconds: - -``` ----- Enproxy Connections---- -Open: 34 -Closing: 0 -Blocked on Closing: 0 -Blocked on Read: 33 -Reading: 33 -Reading Finishing: 0 -Blocked on Write: 0 -Writing: 33 - Selecting: 33 - Writing: 0 - Write Pipe Open: 0 - Request Pending: 0 - Submitting Req.: 0 - Processing Req.: 1 - Posting Req. Fin: 0 - Posting Resp: 0 - Dialing First: 0 - Redialing: 0 - Doing Write: 0 - Posting Response: 0 - Writing Empty: 0 - Finishing Body: 0 - Finishing: 0 -Requesting: 33 -Requesting Finishing: 0 -``` \ No newline at end of file diff --git a/src/github.com/getlantern/enproxy/conn_impl.go b/src/github.com/getlantern/enproxy/conn_impl.go deleted file mode 100644 index 75e3c17b35..0000000000 --- a/src/github.com/getlantern/enproxy/conn_impl.go +++ /dev/null @@ -1,197 +0,0 @@ -package enproxy - -import ( - "bufio" - "fmt" - "io" - "net" - "net/http" - "net/http/httputil" - - "code.google.com/p/go-uuid/uuid" - "github.com/getlantern/idletiming" -) - -// Dial creates a Conn, opens a connection to the proxy and starts processing -// writes and reads on the Conn. -// -// addr: the host:port of the destination server that we're trying to reach -// -// config: configuration for this Conn -func Dial(addr string, config *Config) (net.Conn, error) { - c := &conn{ - id: uuid.NewRandom().String(), - addr: addr, - config: config, - } - - c.initDefaults() - c.makeChannels() - c.initRequestStrategy() - - // Dial proxy - proxyConn, err := c.dialProxy() - if err != nil { - return nil, fmt.Errorf("Unable to dial proxy to %s: %s", addr, err) - } - - go c.processWrites() - go c.processReads() - go c.processRequests(proxyConn) - - increment(&open) - - return idletiming.Conn(c, c.config.IdleTimeout, func() { - log.Debugf("Proxy connection to %s via %s idle for %v, closing", addr, proxyConn.conn.RemoteAddr(), c.config.IdleTimeout) - if err := c.Close(); err != nil { - log.Debugf("Unable to close connection: %v", err) - } - // Close the initial proxyConn just in case - if err := proxyConn.conn.Close(); err != nil { - log.Debugf("Unable to close proxy connection: %v", err) - } - }), nil -} - -func (c *conn) initDefaults() { - if c.config.FlushTimeout == 0 { - c.config.FlushTimeout = defaultWriteFlushTimeout - } - if c.config.IdleTimeout == 0 { - c.config.IdleTimeout = defaultIdleTimeoutClient - } -} - -func (c *conn) makeChannels() { - // All channels are buffered to prevent deadlocks - c.initialResponseCh = make(chan hostWithResponse, 1) - c.writeRequestsCh = make(chan []byte, 1) - c.writeResponsesCh = make(chan rwResponse, 1) - c.readRequestsCh = make(chan []byte, 1) - c.readResponsesCh = make(chan rwResponse, 1) - c.requestOutCh = make(chan *request, 1) - c.requestFinishedCh = make(chan error, 1) - - // Buffered to depth 2 because we report async errors to the reading and - // writing goroutines. - c.asyncErrCh = make(chan error, 2) - - // Buffered so that even if conn.Close() hasn't been called, we can report - // finished. - c.doneWritingCh = make(chan bool, 1) - c.doneReadingCh = make(chan bool, 1) - c.doneRequestingCh = make(chan bool, 1) -} - -func (c *conn) initRequestStrategy() { - if c.config.BufferRequests { - c.rs = &bufferingRequestStrategy{ - c: c, - } - } else { - c.rs = &streamingRequestStrategy{ - c: c, - } - } -} - -func (c *conn) dialProxy() (*connInfo, error) { - conn, err := c.config.DialProxy(c.addr) - if err != nil { - msg := fmt.Errorf("Unable to dial proxy to %s: %s", c.addr, err) - log.Debug(msg) - return nil, msg - } - proxyConn := &connInfo{ - bufReader: bufio.NewReader(conn), - } - proxyConn.conn = idletiming.Conn(conn, c.config.IdleTimeout, func() { - // When the underlying connection times out, mark the connInfo closed - proxyConn.closedMutex.Lock() - defer proxyConn.closedMutex.Unlock() - proxyConn.closed = true - }) - return proxyConn, nil -} - -func (c *conn) redialProxyIfNecessary(proxyConn *connInfo) (*connInfo, error) { - proxyConn.closedMutex.Lock() - defer proxyConn.closedMutex.Unlock() - if proxyConn.closed || proxyConn.conn.TimesOutIn() < oneSecond { - if err := proxyConn.conn.Close(); err != nil { - log.Debugf("Unable to close proxy connection: %v", err) - } - return c.dialProxy() - } else { - return proxyConn, nil - } -} - -func (c *conn) doRequest(proxyConn *connInfo, host string, op string, request *request) (resp *http.Response, err error) { - var body io.Reader - if request != nil { - body = request.body - } - path := c.id + "/" + c.addr + "/" + op - req, err := c.config.NewRequest(host, path, "POST", body) - if err != nil { - err = fmt.Errorf("Unable to construct request to %s via proxy %s: %s", c.addr, host, err) - return - } - //req.Header.Set(X_ENPROXY_OP, op) - // Always send our connection id - //req.Header.Set(X_ENPROXY_ID, c.id) - // Always send the address that we're trying to reach - //req.Header.Set(X_ENPROXY_DEST_ADDR, c.addr) - req.Header.Set("Content-type", "application/octet-stream") - if request != nil && request.length > 0 { - // Force identity encoding to appeas CDNs like Fastly that can't - // handle chunked encoding on requests - req.TransferEncoding = []string{"identity"} - req.ContentLength = int64(request.length) - } else { - req.ContentLength = 0 - } - - err = req.Write(proxyConn.conn) - if err != nil { - err = fmt.Errorf("Error sending request to %s via proxy %s: %s", c.addr, host, err) - return - } - - resp, err = http.ReadResponse(proxyConn.bufReader, req) - if err != nil { - err = fmt.Errorf("Error reading response from proxy: %s", err) - return - } - - // Check response status - responseOK := resp.StatusCode >= 200 && resp.StatusCode < 300 - if !responseOK { - // This means we're getting something other than an OK response from the fronting provider - // itself, which is odd. Try to log the entire response for easier debugging. - full, er := httputil.DumpResponse(resp, true) - if er == nil { - err = fmt.Errorf("Bad response status for read from fronting provider: %s", string(full)) - } else { - log.Errorf("Could not dump response: %v", er) - err = fmt.Errorf("Bad response status for read from fronting provider: %s", resp.Status) - } - if err := resp.Body.Close(); err != nil { - log.Debugf("Unable to close response body: %v", err) - } - resp = nil - } else { - log.Debugf("Got OK from fronting provider") - } - - return -} - -type closer struct { - io.Reader -} - -func (r *closer) Close() error { - return nil -} diff --git a/src/github.com/getlantern/enproxy/conn_impl_reads.go b/src/github.com/getlantern/enproxy/conn_impl_reads.go deleted file mode 100644 index 9bdcca4bc7..0000000000 --- a/src/github.com/getlantern/enproxy/conn_impl_reads.go +++ /dev/null @@ -1,114 +0,0 @@ -package enproxy - -import ( - "fmt" - "io" - "net/http" -) - -// processReads processes read requests by polling the proxy with GET requests -// and reading the data from the resulting response body -func (c *conn) processReads() { - increment(&reading) - - var resp *http.Response - var proxyConn *connInfo - var err error - - defer func() { - increment(&readingFinishing) - // be sure to close connection before close response body, - // or it will continuously receives data until hit EOF, - // which is a waste of bandwidth. - if proxyConn != nil { - if err := proxyConn.conn.Close(); err != nil { - log.Debugf("Unable to close proxy connection: %v", err) - } - } - if resp != nil { - if err := resp.Body.Close(); err != nil { - log.Debugf("Unable to close response body: %v", err) - } - } - c.doneReadingCh <- true - decrement(&readingFinishing) - decrement(&reading) - }() - - // Wait for connection and response from first write request so that we know - // where to send read requests. - initialResponse, more := <-c.initialResponseCh - if !more { - return - } - - proxyHost := initialResponse.proxyHost - proxyConn = initialResponse.proxyConn - resp = initialResponse.resp - - mkerror := func(text string, err error) error { - return fmt.Errorf("Dest: %s ProxyHost: %s %s: %s", c.addr, proxyHost, text, err) - } - - for b := range c.readRequestsCh { - if resp == nil { - // Old response finished - proxyConn, err = c.redialProxyIfNecessary(proxyConn) - if err != nil { - c.readResponsesCh <- rwResponse{0, mkerror("Unable to redial proxy", err)} - return - } - - resp, err = c.doRequest(proxyConn, proxyHost, OP_READ, nil) - if err != nil { - err = mkerror("Unable to issue read request", err) - log.Error(err) - c.readResponsesCh <- rwResponse{0, err} - return - } - } - - n, err := resp.Body.Read(b) - - hitEOFUpstream := resp.Header.Get(X_ENPROXY_EOF) == "true" - errToClient := err - if err == io.EOF && !hitEOFUpstream { - // The current response hit EOF, but we haven't hit EOF upstream - // so suppress EOF to reader - errToClient = nil - } - c.readResponsesCh <- rwResponse{n, errToClient} - - if err != nil { - if err == io.EOF { - // Current response is done - if err := resp.Body.Close(); err != nil { - log.Debugf("Unable to close response body: %v", err) - } - resp = nil - if hitEOFUpstream { - // True EOF, stop reading - return - } - continue - } else { - log.Errorf("Error reading: %s", err) - return - } - } - } -} - -// submitRead submits a read to the processReads goroutine, returning true if -// the read was accepted or false if reads are no longer being accepted -func (c *conn) submitRead(b []byte) bool { - c.closingMutex.RLock() - defer c.closingMutex.RUnlock() - if c.closing { - return false - } else { - increment(&blockedOnRead) - c.readRequestsCh <- b - return true - } -} diff --git a/src/github.com/getlantern/enproxy/conn_impl_requests.go b/src/github.com/getlantern/enproxy/conn_impl_requests.go deleted file mode 100644 index cb803888a1..0000000000 --- a/src/github.com/getlantern/enproxy/conn_impl_requests.go +++ /dev/null @@ -1,133 +0,0 @@ -package enproxy - -import ( - "fmt" - "net/http" -) - -// processRequests handles writing outbound requests to the proxy. Note - this -// is not pipelined, because we cannot be sure that intervening proxies will -// deliver requests to the enproxy server in order. In-order delivery is -// required because we are encapsulating a stream of data inside the bodies of -// successive requests. -func (c *conn) processRequests(proxyConn *connInfo) { - increment(&requesting) - - var resp *http.Response - - first := true - defer c.finishRequesting(resp, first) - - defer func() { - // If there's a proxyConn at the time that processRequests() exits, - // close it. - if !first && proxyConn != nil { - if err := proxyConn.conn.Close(); err != nil { - log.Debugf("Unable to close proxy connection: %v", err) - } - } - }() - - var err error - var proxyHost string - - mkerror := func(text string, err error) error { - return fmt.Errorf("Dest: %s ProxyHost: %s %s: %s", c.addr, proxyHost, text, err) - } - - for request := range c.requestOutCh { - decrement(&writingRequestPending) - increment(&writingProcessingRequestRedialing) - proxyConn, err = c.redialProxyIfNecessary(proxyConn) - decrement(&writingProcessingRequestRedialing) - if err != nil { - c.fail(mkerror("Unable to redial proxy", err)) - return - } - - // Then issue new request - increment(&writingProcessingRequest) - resp, err = c.doRequest(proxyConn, proxyHost, OP_WRITE, request) - decrement(&writingProcessingRequest) - log.Debugf("Issued write request with result: %v", err) - increment(&writingProcessingRequestPostingRequestFinished) - c.requestFinishedCh <- err - decrement(&writingProcessingRequestPostingRequestFinished) - if err != nil { - c.fail(mkerror("Unable to issue write request", err)) - return - } - - if !first { - if err := resp.Body.Close(); err != nil { - log.Debugf("Unable to close response body: %v", err) - } - } else { - // On our first request, find out what host we're actually - // talking to and remember that for future requests. - proxyHost = resp.Header.Get(X_ENPROXY_PROXY_HOST) - if c.config.OnFirstResponse != nil { - c.config.OnFirstResponse(resp) - } - - // Also post it to initialResponseCh so that the processReads() - // routine knows which proxyHost to use and gets the initial - // response data - increment(&writingProcessingRequestPostingResponse) - c.initialResponseCh <- hostWithResponse{ - proxyHost: proxyHost, - proxyConn: proxyConn, - resp: resp, - } - decrement(&writingProcessingRequestPostingResponse) - - first = false - - // Dial again because our old proxyConn is now being used by the - // reader goroutine - increment(&writingProcessingRequestDialingFirst) - proxyConn, err = c.dialProxy() - decrement(&writingProcessingRequestDialingFirst) - if err != nil { - c.fail(mkerror("Unable to dial proxy for 2nd request", err)) - return - } - } - } -} - -// submitRequest submits a request to the processRequests goroutine, returning -// true if the request was accepted or false if requests are no longer being -// accepted -func (c *conn) submitRequest(request *request) bool { - c.closingMutex.RLock() - defer c.closingMutex.RUnlock() - if c.closing { - return false - } else { - increment(&writingRequestPending) - c.requestOutCh <- request - return true - } -} - -func (c *conn) finishRequesting(resp *http.Response, first bool) { - increment(&requestingFinishing) - close(c.initialResponseCh) - if !first && resp != nil { - if err := resp.Body.Close(); err != nil { - log.Debugf("Unable to close response body: %v", err) - } - } - // Drain requestsOutCh - for req := range c.requestOutCh { - decrement(&writingRequestPending) - if err := req.body.Close(); err != nil { - log.Debugf("Unable to close request body: %v", err) - } - } - c.doneRequestingCh <- true - decrement(&requestingFinishing) - decrement(&requesting) - return -} diff --git a/src/github.com/getlantern/enproxy/conn_impl_writes.go b/src/github.com/getlantern/enproxy/conn_impl_writes.go deleted file mode 100644 index 0436cddcae..0000000000 --- a/src/github.com/getlantern/enproxy/conn_impl_writes.go +++ /dev/null @@ -1,110 +0,0 @@ -package enproxy - -import ( - "time" -) - -var ( - emptyBytes = []byte{} -) - -// processWrites processes write requests by writing them to the body of a POST -// request. Note - processWrites doesn't actually send the POST requests, -// that's handled by the processRequests goroutine. The reason that we do this -// on a separate goroutine is that the call to Request.Write() blocks until the -// body has finished, and of course the body is written to as a result of -// processing writes, so we need 2 goroutines to allow us to continue to -// accept writes and pipe these to the request body while actually sending that -// request body to the server. -func (c *conn) processWrites() { - increment(&writing) - - defer c.finishWriting() - - firstRequest := true - hasWritten := false - - for { - increment(&writingSelecting) - select { - case b, more := <-c.writeRequestsCh: - decrement(&writingSelecting) - - if !more { - return - } - hasWritten = true - if !c.processWrite(b) { - // There was a problem processing a write, stop - return - } - case <-time.After(c.config.FlushTimeout): - // We waited more than FlushTimeout for a write, finish our request - decrement(&writingSelecting) - - if firstRequest && !hasWritten { - // Write empty data just so that we can get a response and get - // on with reading. - // TODO: it might be more efficient to instead start by reading, - // but that's a fairly big structural change on client and - // server. - increment(&writingWritingEmpty) - if _, err := c.rs.write(emptyBytes); err != nil { - log.Debugf("Unable to write to connection: %v", err) - } - decrement(&writingWritingEmpty) - } - - increment(&writingFinishingBody) - if err := c.rs.finishBody(); err != nil { - log.Debugf("Unable to write connection finishing body: %v", err) - } - decrement(&writingFinishingBody) - - firstRequest = false - } - } -} - -// processWrite processes a single write request, encapsulated in the body of a -// POST request to the proxy. It uses the configured requestStrategy to process -// the request. It returns true if the write was successful. -func (c *conn) processWrite(b []byte) bool { - increment(&writingWriting) - n, err := c.rs.write(b) - decrement(&writingWriting) - - increment(&writingPostingResponse) - c.writeResponsesCh <- rwResponse{n, err} - decrement(&writingPostingResponse) - - return err == nil -} - -// submitWrite submits a write to the processWrites goroutine, returning true if -// the write was accepted or false if writes are no longer being accepted -func (c *conn) submitWrite(b []byte) bool { - c.closingMutex.RLock() - defer c.closingMutex.RUnlock() - if c.closing { - return false - } else { - increment(&blockedOnWrite) - c.writeRequestsCh <- b - return true - } -} - -func (c *conn) finishWriting() { - increment(&writingFinishing) - if c.rs != nil { - if err := c.rs.finishBody(); err != nil { - log.Debugf("Unable to write connection finishing body: %v", err) - } - } - close(c.requestOutCh) - c.doneWritingCh <- true - decrement(&writingFinishing) - decrement(&writing) - return -} diff --git a/src/github.com/getlantern/enproxy/conn_intf.go b/src/github.com/getlantern/enproxy/conn_intf.go deleted file mode 100644 index fee8f8d4c4..0000000000 --- a/src/github.com/getlantern/enproxy/conn_intf.go +++ /dev/null @@ -1,317 +0,0 @@ -package enproxy - -import ( - "bufio" - "io" - "net" - "net/http" - "sync" - "time" - - "github.com/getlantern/golog" - "github.com/getlantern/idletiming" -) - -const ( - X_ENPROXY_ID = "X-Enproxy-Id" - X_ENPROXY_DEST_ADDR = "X-Enproxy-Dest-Addr" - X_ENPROXY_EOF = "X-Enproxy-EOF" - X_ENPROXY_PROXY_HOST = "X-Enproxy-Proxy-Host" - X_ENPROXY_OP = "X-Enproxy-Op" - - OP_WRITE = "write" - OP_READ = "read" -) - -var ( - log = golog.LoggerFor("enproxy") -) - -var ( - defaultWriteFlushTimeout = 35 * time.Millisecond - defaultReadFlushTimeout = 35 * time.Millisecond - defaultIdleTimeoutClient = 30 * time.Second - defaultIdleTimeoutServer = 70 * time.Second - - // closeChannelDepth: controls depth of channels used for close processing. - // Doesn't need to be particularly big, as it's just used to prevent - // deadlocks on multiple calls to Close(). - closeChannelDepth = 20 - - bodySize = 65536 // size of buffer used for request bodies - - oneSecond = 1 * time.Second -) - -// Conn is a net.Conn that tunnels its data via an httpconn.Proxy using HTTP -// requests and responses. It assumes that streaming requests are not supported -// by the underlying servers/proxies, and so uses a polling technique similar to -// the one used by meek, but different in that data is not encoded as JSON. -// https://trac.torproject.org/projects/tor/wiki/doc/AChildsGardenOfPluggableTransports#Undertheencryption. -// -// enproxy uses two parallel channels to send and receive data. One channel -// handles writing data out by making sequential POST requests to the server -// which encapsulate the outbound data in their request bodies, while the other -// channel handles reading data by making GET requests and grabbing the data -// encapsulated in the response bodies. -// -// Write Channel: -// -// 1. Accept writes, piping these to the proxy as the body of an http POST -// 2. Continue to pipe the writes until the pause between consecutive writes -// exceeds the IdleInterval, at which point we finish the request body. We -// do this because it is assumed that intervening proxies (e.g. CloudFlare -// CDN) do not allow streaming requests, so it is necessary to finish the -// request for data to get flushed to the destination server. -// 3. After receiving a response to the POST request, return to step 1 -// -// Read Channel: -// -// 1. Accept reads, issuing a new GET request if one is not already ongoing -// 2. Process read by grabbing data from the response to the GET request -// 3. Continue to accept reads, grabbing these from the response of the -// existing GET request -// 4. Once the response to the GET request reaches EOF, return to step 1. This -// will happen because the proxy periodically closes responses to make sure -// intervening proxies don't time out. -// 5. If a response is received with a special header indicating a true EOF -// from the destination server, return EOF to the reader -// -type conn struct { - // addr: the host:port of the destination server that we're trying to reach - addr string - - // config: configuration of this Conn - config *Config - - // initialResponseCh: Self-reported FQDN of the proxy serving this connection - // plus initial response from proxy. - // - // This allows us to guarantee we reach the same server in subsequent - // requests, even if it was initially reached through a FQDN that may - // resolve to different IPs in different DNS lookups (e.g. as in DNS round - // robin). - initialResponseCh chan hostWithResponse - - // id: unique identifier for this connection. This is used by the Proxy to - // associate requests from this connection to the corresponding outbound - // connection on the Proxy side. It is populated using a type 4 UUID. - id string - - /* Write processing */ - writeRequestsCh chan []byte // requests to write - writeResponsesCh chan rwResponse // responses for writes - doneWritingCh chan bool - rs requestStrategy - - /* Request processing (for writes) */ - requestOutCh chan *request // channel for next outgoing request body - requestFinishedCh chan error - doneRequestingCh chan bool - - /* Read processing */ - readRequestsCh chan []byte // requests to read - readResponsesCh chan rwResponse // responses for reads - doneReadingCh chan bool - - /* Fields for tracking error and closed status */ - asyncErr error // error that occurred during asynchronous processing - asyncErrMutex sync.RWMutex // mutex guarding asyncErr - asyncErrCh chan error // channel used to interrupted any waiting reads/writes with an async error - closing bool // whether or not this Conn is closing - closingMutex sync.RWMutex // mutex controlling access to the closing flag - - /* Track current response */ - resp *http.Response // the current response being used to read data -} - -// Config configures a Conn -type Config struct { - // DialProxy: function to open a connection to the proxy - DialProxy dialFunc - - // NewRequest: function to create a new request to the proxy - NewRequest newRequestFunc - - // OnFirstResponse: optional callback that gets called on the first response - // from the proxy. - OnFirstResponse func(resp *http.Response) - - // FlushTimeout: how long to let writes idle before writing out a - // request to the proxy. Defaults to 15 milliseconds. - FlushTimeout time.Duration - - // IdleTimeout: how long to wait before closing an idle connection, defaults - // to 30 seconds on the client and 70 seconds on the server proxy. - // - // For clients, the value should be set lower than the proxy's idle timeout - // so that enproxy redials before the active connection is closed. The value - // should be set higher than the maximum possible time between the proxy - // receiving the last data from a request and the proxy returning the first - // data of the response, otherwise the connection will be closed in the - // middle of processing a request. - IdleTimeout time.Duration - - // BufferRequests: if true, requests to the proxy will be buffered and sent - // with identity encoding. If false, they'll be streamed with chunked - // encoding. - BufferRequests bool -} - -// dialFunc is a function that dials an address (e.g. the upstream proxy) -type dialFunc func(addr string) (net.Conn, error) - -// newRequestFunc is a function that builds a new request to the upstream proxy -type newRequestFunc func(host, path, method string, body io.Reader) (*http.Request, error) - -// rwResponse is a response to a read or write -type rwResponse struct { - n int - err error -} - -type connInfo struct { - conn *idletiming.IdleTimingConn - bufReader *bufio.Reader - closed bool - closedMutex sync.Mutex -} - -type hostWithResponse struct { - proxyHost string - proxyConn *connInfo - resp *http.Response -} - -// Write() implements the function from net.Conn -func (c *conn) Write(b []byte) (n int, err error) { - err = c.getAsyncErr() - if err != nil { - return - } - - if c.submitWrite(b) { - defer decrement(&blockedOnWrite) - - select { - case res, ok := <-c.writeResponsesCh: - if !ok { - return 0, io.EOF - } else { - return res.n, res.err - } - case err := <-c.asyncErrCh: - return 0, err - } - } else { - return 0, io.EOF - } -} - -// Read() implements the function from net.Conn -func (c *conn) Read(b []byte) (n int, err error) { - err = c.getAsyncErr() - if err != nil { - return - } - - if c.submitRead(b) { - defer decrement(&blockedOnRead) - - select { - case res, ok := <-c.readResponsesCh: - if !ok { - return 0, io.EOF - } else { - return res.n, res.err - } - case err := <-c.asyncErrCh: - return 0, err - } - } else { - return 0, io.EOF - } -} - -func (c *conn) fail(err error) { - log.Debugf("Failing on %v", err) - - c.asyncErrMutex.Lock() - if c.asyncErr != nil { - c.asyncErr = err - } - c.asyncErrMutex.Unlock() - - // Let any waiting readers or writers know about the error - for i := 0; i < 2; i++ { - select { - case c.asyncErrCh <- err: - // submitted okay - default: - // channel full, continue - } - } - - go func() { - if err := c.Close(); err != nil { - log.Debugf("Unable to close connection: %v", err) - } - }() -} - -func (c *conn) getAsyncErr() error { - c.asyncErrMutex.RLock() - err := c.asyncErr - c.asyncErrMutex.RUnlock() - return err -} - -// Close() implements the function from net.Conn -func (c *conn) Close() error { - increment(&closing) - defer decrement(&closing) - - c.closingMutex.Lock() - wasClosing := c.closing - c.closing = true - c.closingMutex.Unlock() - if !wasClosing { - increment(&blockedOnClosing) - close(c.writeRequestsCh) - close(c.readRequestsCh) - <-c.doneReadingCh - <-c.doneWritingCh - <-c.doneRequestingCh - decrement(&blockedOnClosing) - decrement(&open) - } - return nil -} - -// LocalAddr() is not implemented -func (c *conn) LocalAddr() net.Addr { - panic("LocalAddr() not implemented") -} - -// RemoteAddr() is not implemented -func (c *conn) RemoteAddr() net.Addr { - panic("RemoteAddr() not implemented") -} - -// SetDeadline() is currently unimplemented. -func (c *conn) SetDeadline(t time.Time) error { - log.Tracef("SetDeadline not implemented") - return nil -} - -// SetReadDeadline() is currently unimplemented. -func (c *conn) SetReadDeadline(t time.Time) error { - log.Tracef("SetReadDeadline not implemented") - return nil -} - -// SetWriteDeadline() is currently unimplemented. -func (c *conn) SetWriteDeadline(t time.Time) error { - log.Tracef("SetWriteDeadline not implemented") - return nil -} diff --git a/src/github.com/getlantern/enproxy/conn_test.go b/src/github.com/getlantern/enproxy/conn_test.go deleted file mode 100644 index deb29ba94a..0000000000 --- a/src/github.com/getlantern/enproxy/conn_test.go +++ /dev/null @@ -1,419 +0,0 @@ -package enproxy - -import ( - "bufio" - "bytes" - "crypto/tls" - "io" - "net" - "net/http" - "sync" - "testing" - "time" - - "github.com/getlantern/fdcount" - "github.com/getlantern/keyman" - "github.com/stretchr/testify/assert" - . "github.com/getlantern/waitforserver" -) - -const ( - TEXT = "Hello byte counting world" - HR = "----------------------------" -) - -var ( - pk *keyman.PrivateKey - cert *keyman.Certificate - - proxyAddr = "" - httpAddr = "" - httpsAddr = "" - bytesReceived = int64(0) - bytesSent = int64(0) - destsReceived = make(map[string]bool) - destsSent = make(map[string]bool) - statMutex sync.Mutex -) - -func TestPlainTextStreamingNoHostFn(t *testing.T) { - doTestPlainText(false, false, t) -} - -func TestPlainTextBufferedNoHostFn(t *testing.T) { - doTestPlainText(true, false, t) -} - -func TestPlainTextStreamingHostFn(t *testing.T) { - doTestPlainText(false, true, t) -} - -func TestPlainTextBufferedHostFn(t *testing.T) { - doTestPlainText(true, true, t) -} - -func TestTLSStreaming(t *testing.T) { - doTestTLS(false, t) -} - -func TestTLSBuffered(t *testing.T) { - doTestTLS(true, t) -} - -func TestBadStreaming(t *testing.T) { - doTestBad(false, t) -} - -func TestBadBuffered(t *testing.T) { - doTestBad(true, t) -} - -func TestIdle(t *testing.T) { - idleTimeout := 100 * time.Millisecond - - _, counter, err := fdcount.Matching("TCP") - if err != nil { - t.Fatalf("Unable to get fdcount: %v", err) - } - - _, err = Dial(httpAddr, &Config{ - DialProxy: func(addr string) (net.Conn, error) { - return net.Dial("tcp", proxyAddr) - }, - NewRequest: newRequest, - IdleTimeout: idleTimeout, - }) - if assert.NoError(t, err, "Dialing should have succeeded") { - time.Sleep(idleTimeout * 2) - assert.NoError(t, counter.AssertDelta(2), "All file descriptors except the connection from proxy to destination site should have been closed") - } -} - -// This test stimulates a connection leak as seen in -// https://github.com/getlantern/lantern/issues/2174. -func TestHTTPRedirect(t *testing.T) { - startProxy(t, false) - - client := &http.Client{ - Transport: &http.Transport{ - Dial: func(network, addr string) (net.Conn, error) { - return Dial(addr, &Config{ - DialProxy: func(addr string) (net.Conn, error) { - return net.Dial("tcp", proxyAddr) - }, - NewRequest: newRequest, - }) - }, - DisableKeepAlives: true, - }, - } - - _, counter, err := fdcount.Matching("TCP") - if err != nil { - t.Fatalf("Unable to get fdcount: %v", err) - } - - resp, err := client.Head("http://www.facebook.com") - if assert.NoError(t, err, "Head request to facebook should have succeeded") { - if err := resp.Body.Close(); err != nil { - log.Debugf("Unable to close response body: %v", err) - } - } - - assert.NoError(t, counter.AssertDelta(2), "All file descriptors except the connection from proxy to destination site should have been closed") -} - -func doTestPlainText(buffered bool, useHostFn bool, t *testing.T) { - var counter *fdcount.Counter - var err error - - startServers(t, useHostFn) - - err = fdcount.WaitUntilNoneMatch("CLOSE_WAIT", 5*time.Second) - if err != nil { - t.Fatalf("Unable to wait until no more connections are in CLOSE_WAIT: %v", err) - } - - _, counter, err = fdcount.Matching("TCP") - if err != nil { - t.Fatalf("Unable to get fdcount: %v", err) - } - - var reportedHost string - var reportedHostMutex sync.Mutex - onResponse := func(resp *http.Response) { - reportedHostMutex.Lock() - reportedHost = resp.Header.Get(X_ENPROXY_PROXY_HOST) - reportedHostMutex.Unlock() - } - - conn, err := prepareConn(httpAddr, buffered, false, t, onResponse) - if err != nil { - t.Fatalf("Unable to prepareConn: %s", err) - } - defer func() { - err := conn.Close() - assert.Nil(t, err, "Closing conn should succeed") - if !assert.NoError(t, counter.AssertDelta(2), "All file descriptors except the connection from proxy to destination site should have been closed") { - DumpConnTrace() - } - }() - - doRequests(conn, t) - - assert.Equal(t, 208, bytesReceived, "Wrong number of bytes received") - assert.Equal(t, 284, bytesSent, "Wrong number of bytes sent") - assert.True(t, destsSent[httpAddr], "http address wasn't recorded as sent destination") - assert.True(t, destsReceived[httpAddr], "http address wasn't recorded as received destination") - - reportedHostMutex.Lock() - rh := reportedHost - reportedHostMutex.Unlock() - assert.Equal(t, "localhost", rh, "Didn't get correct reported host") -} - -func doTestTLS(buffered bool, t *testing.T) { - startServers(t, false) - - _, counter, err := fdcount.Matching("TCP") - if err != nil { - t.Fatalf("Unable to get fdcount: %v", err) - } - - conn, err := prepareConn(httpsAddr, buffered, false, t, nil) - if err != nil { - t.Fatalf("Unable to prepareConn: %s", err) - } - - tlsConn := tls.Client(conn, &tls.Config{ - ServerName: "localhost", - RootCAs: cert.PoolContainingCert(), - }) - defer func() { - err := conn.Close() - assert.Nil(t, err, "Closing conn should succeed") - if !assert.NoError(t, counter.AssertDelta(2), "All file descriptors except the connection from proxy to destination site should have been closed") { - DumpConnTrace() - } - }() - - err = tlsConn.Handshake() - if err != nil { - t.Fatalf("Unable to handshake: %s", err) - } - - doRequests(tlsConn, t) - - assert.True(t, destsSent[httpsAddr], "https address wasn't recorded as sent destination") - assert.True(t, destsReceived[httpsAddr], "https address wasn't recorded as received destination") -} - -func doTestBad(buffered bool, t *testing.T) { - startServers(t, false) - - conn, err := prepareConn(httpAddr, buffered, true, t, nil) - if err == nil { - defer func() { - if err := conn.Close(); err != nil { - log.Debugf("Unable to close connection: %v", err) - } - }() - t.Error("Bad conn should have returned error on Connect()") - } -} - -func prepareConn(addr string, buffered bool, fail bool, t *testing.T, onResponse func(resp *http.Response)) (conn net.Conn, err error) { - return Dial(addr, - &Config{ - DialProxy: func(addr string) (net.Conn, error) { - proto := "tcp" - if fail { - proto = "fakebad" - } - return net.Dial(proto, proxyAddr) - }, - NewRequest: newRequest, - BufferRequests: buffered, - OnFirstResponse: onResponse, - }) -} - -func newRequest(host, path, method string, body io.Reader) (req *http.Request, err error) { - return http.NewRequest(method, "http://"+proxyAddr+"/"+path+"/", body) -} - -func doRequests(conn net.Conn, t *testing.T) { - // Single request/response pair - req := makeRequest(conn, t) - readResponse(conn, req, t) - - // Consecutive request/response pairs - req = makeRequest(conn, t) - readResponse(conn, req, t) -} - -func makeRequest(conn net.Conn, t *testing.T) *http.Request { - req, err := http.NewRequest("GET", "http://www.google.com/humans.txt", nil) - req.Header.Add("Testcdn", "Of course!") - if err != nil { - t.Fatalf("Unable to create request: %s", err) - } - - go func() { - err = req.Write(conn) - if err != nil { - t.Fatalf("Unable to write request: %s", err) - } - }() - - return req -} - -func readResponse(conn net.Conn, req *http.Request, t *testing.T) { - buffIn := bufio.NewReader(conn) - resp, err := http.ReadResponse(buffIn, req) - if err != nil { - t.Fatalf("Unable to read response: %s", err) - } - - buff := bytes.NewBuffer(nil) - _, err = io.Copy(buff, resp.Body) - if err != nil { - t.Fatalf("Unable to read response body: %s", err) - } - text := string(buff.Bytes()) - assert.Contains(t, text, TEXT, "Wrong text returned from server") -} - -func startServers(t *testing.T, useHostFn bool) { - startHttpServer(t) - startHttpsServer(t) - startProxy(t, useHostFn) -} - -func startProxy(t *testing.T, useHostFn bool) { - if proxyAddr != "" { - statMutex.Lock() - bytesReceived = 0 - bytesSent = 0 - destsReceived = make(map[string]bool) - destsReceived = make(map[string]bool) - statMutex.Unlock() - return - } - - l, err := net.Listen("tcp", "localhost:0") - if err != nil { - t.Fatalf("Proxy unable to listen: %v", err) - } - proxyAddr = l.Addr().String() - - var host string - var hostFn func(*http.Request) string - - if useHostFn { - hostFn = func(req *http.Request) string { - if _, found := req.Header["Testcdn"]; found { - return "localhost" - } else { - return "" - } - } - } else { - host = "localhost" - } - go func() { - proxy := &Proxy{ - OnBytesReceived: func(clientIp string, destAddr string, req *http.Request, bytes int64) { - statMutex.Lock() - bytesReceived += bytes - destsReceived[destAddr] = true - statMutex.Unlock() - }, - OnBytesSent: func(clientIp string, destAddr string, req *http.Request, bytes int64) { - statMutex.Lock() - bytesSent += bytes - destsSent[destAddr] = true - statMutex.Unlock() - }, - Host: host, - HostFn: hostFn, - } - err := proxy.Serve(l) - if err != nil { - t.Fatalf("Proxy unable to serve: %s", err) - } - }() - - if err := WaitForServer("tcp", proxyAddr, 1*time.Second); err != nil { - t.Fatal(err) - } -} - -func startHttpServer(t *testing.T) { - if httpAddr != "" { - return - } - - l, err := net.Listen("tcp", "localhost:0") - if err != nil { - t.Fatalf("HTTP unable to listen: %v", err) - } - httpAddr = l.Addr().String() - - doStartServer(t, l) -} - -func startHttpsServer(t *testing.T) { - if httpsAddr != "" { - return - } - - var err error - - pk, err = keyman.GeneratePK(2048) - if err != nil { - t.Fatalf("Unable to generate key: %s", err) - } - - // Generate self-signed certificate - cert, err = pk.TLSCertificateFor("tlsdialer", "localhost", time.Now().Add(1*time.Hour), true, nil) - if err != nil { - t.Fatalf("Unable to generate cert: %s", err) - } - - keypair, err := tls.X509KeyPair(cert.PEMEncoded(), pk.PEMEncoded()) - if err != nil { - t.Fatalf("Unable to generate x509 key pair: %s", err) - } - - l, err := tls.Listen("tcp", "localhost:0", &tls.Config{ - Certificates: []tls.Certificate{keypair}, - }) - if err != nil { - t.Fatalf("HTTP unable to listen: %v", err) - } - httpsAddr = l.Addr().String() - - doStartServer(t, l) -} - -func doStartServer(t *testing.T, l net.Listener) { - go func() { - httpServer := &http.Server{ - Handler: http.HandlerFunc(func(resp http.ResponseWriter, req *http.Request) { - if _, err := resp.Write([]byte(TEXT)); err != nil { - log.Debugf("Unable to write response: %v", err) - } - }), - } - err := httpServer.Serve(l) - if err != nil { - t.Fatalf("Unable to start http server: %s", err) - } - }() - - if err := WaitForServer("tcp", l.Addr().String(), 1*time.Second); err != nil { - t.Fatal(err) - } -} diff --git a/src/github.com/getlantern/enproxy/lazyconn.go b/src/github.com/getlantern/enproxy/lazyconn.go deleted file mode 100644 index d630165b64..0000000000 --- a/src/github.com/getlantern/enproxy/lazyconn.go +++ /dev/null @@ -1,59 +0,0 @@ -package enproxy - -import ( - "fmt" - "net" - "sync" - - "github.com/getlantern/idletiming" -) - -// lazyConn is a lazily initializing conn that makes sure it is only initialized -// once. Using these allows us to ensure that we only create one connection per -// connection id, but to still support doing the Dial calls concurrently. -type lazyConn struct { - p *Proxy - id string - addr string - hitEOF bool - connOut net.Conn - err error - mutex sync.Mutex -} - -func (p *Proxy) newLazyConn(id string, addr string) *lazyConn { - return &lazyConn{ - p: p, - id: id, - addr: addr, - } -} - -func (l *lazyConn) get() (conn net.Conn, err error) { - l.mutex.Lock() - defer l.mutex.Unlock() - if l.err != nil { - // If dial already resulted in an error, return that - return nil, err - } - if l.connOut == nil { - // Lazily dial out - conn, err := l.p.Dial(l.addr) - if err != nil { - l.err = fmt.Errorf("Unable to dial out to %s: %s", l.addr, err) - return nil, l.err - } - - // Wrap the connection in an idle timing one - l.connOut = idletiming.Conn(conn, l.p.IdleTimeout, func() { - l.p.connMapMutex.Lock() - defer l.p.connMapMutex.Unlock() - delete(l.p.connMap, l.id) - if err := conn.Close(); err != nil { - log.Debugf("Unable to close connection: %v", err) - } - }) - } - - return l.connOut, l.err -} diff --git a/src/github.com/getlantern/enproxy/metrics.go b/src/github.com/getlantern/enproxy/metrics.go deleted file mode 100644 index 198cbc8b69..0000000000 --- a/src/github.com/getlantern/enproxy/metrics.go +++ /dev/null @@ -1,119 +0,0 @@ -package enproxy - -import ( - "os" - "strconv" - "sync/atomic" - "time" -) - -var ( - // Connection metrics - open = int32(0) - reading = int32(0) - readingFinishing = int32(0) - blockedOnRead = int32(0) - writing = int32(0) - writingSelecting = int32(0) - writingWriting = int32(0) - writePipeOpen = int32(0) - writingRequestPending = int32(0) - writingSubmittingRequest = int32(0) - writingProcessingRequest = int32(0) - writingProcessingRequestPostingRequestFinished = int32(0) - writingProcessingRequestPostingResponse = int32(0) - writingProcessingRequestDialingFirst = int32(0) - writingProcessingRequestRedialing = int32(0) - writingDoingWrite = int32(0) - writingWritingEmpty = int32(0) - writingFinishingBody = int32(0) - writingPostingResponse = int32(0) - writingFinishing = int32(0) - blockedOnWrite = int32(0) - requesting = int32(0) - requestingFinishing = int32(0) - closing = int32(0) - blockedOnClosing = int32(0) -) - -func init() { - traceOn, _ := strconv.ParseBool(os.Getenv("TRACE_CONN_STATE")) - if !traceOn { - return - } - - go func() { - for { - time.Sleep(5 * time.Second) - DumpConnTrace() - } - }() -} - -// DumpConnTrace dumps connection tracing information to the debug log. -func DumpConnTrace() { - log.Debugf( - ` ----- Enproxy Connections---- -Open: %4d -Closing: %4d -Blocked on Closing: %4d -Blocked on Read: %4d -Reading: %4d -Reading Finishing: %4d -Blocked on Write: %4d -Writing: %4d - Selecting: %4d - Writing: %4d - Write Pipe Open: %4d - Request Pending: %4d - Submitting Req.: %4d - Processing Req.: %4d - Posting Req. Fin: %4d - Posting Resp: %4d - Dialing First: %4d - Redialing: %4d - Doing Write: %4d - Posting Response: %4d - Writing Empty: %4d - Finishing Body: %4d - Finishing: %4d -Requesting: %4d -Requesting Finishing: %4d -`, atomic.LoadInt32(&open), - atomic.LoadInt32(&closing), - atomic.LoadInt32(&blockedOnClosing), - atomic.LoadInt32(&blockedOnRead), - atomic.LoadInt32(&reading), - atomic.LoadInt32(&readingFinishing), - atomic.LoadInt32(&blockedOnWrite), - atomic.LoadInt32(&writing), - atomic.LoadInt32(&writingSelecting), - atomic.LoadInt32(&writingWriting), - atomic.LoadInt32(&writePipeOpen), - atomic.LoadInt32(&writingRequestPending), - atomic.LoadInt32(&writingSubmittingRequest), - atomic.LoadInt32(&writingProcessingRequest), - atomic.LoadInt32(&writingProcessingRequestPostingRequestFinished), - atomic.LoadInt32(&writingProcessingRequestPostingResponse), - atomic.LoadInt32(&writingProcessingRequestDialingFirst), - atomic.LoadInt32(&writingProcessingRequestRedialing), - atomic.LoadInt32(&writingDoingWrite), - atomic.LoadInt32(&writingPostingResponse), - atomic.LoadInt32(&writingWritingEmpty), - atomic.LoadInt32(&writingFinishingBody), - atomic.LoadInt32(&writingFinishing), - atomic.LoadInt32(&requesting), - atomic.LoadInt32(&requestingFinishing), - ) -} - -// Increment a metric -func increment(val *int32) { - atomic.AddInt32(val, 1) -} - -// Decrement a metric -func decrement(val *int32) { - atomic.AddInt32(val, -1) -} diff --git a/src/github.com/getlantern/enproxy/proxy.go b/src/github.com/getlantern/enproxy/proxy.go deleted file mode 100644 index 1267299e03..0000000000 --- a/src/github.com/getlantern/enproxy/proxy.go +++ /dev/null @@ -1,399 +0,0 @@ -package enproxy - -import ( - "fmt" - "io" - "net" - "net/http" - "regexp" - "strings" - "sync" - "time" -) - -const ( - DEFAULT_BYTES_BEFORE_FLUSH = 1024768 - DEFAULT_READ_BUFFER_SIZE = 65536 -) - -var ( - r = regexp.MustCompile("/(.*)/(.*)/(.*)/") -) - -// Proxy is the server side to an enproxy.Client. Proxy implements the -// http.Handler interface for plugging into an HTTP server, and it also -// provides a convenience ListenAndServe() function for quickly starting up -// a dedicated HTTP server using this Proxy as its handler. -type Proxy struct { - // Dial: function used to dial the destination server. If nil, a default - // TCP dialer is used. - Dial dialFunc - - // Host: (Deprecated; use HostFn instead) FQDN of this particular proxy. - // Either this or HostFn is required if this server was originally reached - // by DNS round robin. - Host string - - // HostFn: given a http.Request, return the FQDN of this particular proxy, - // hopefully through the same front. This is used to support multiple - // domain fronts. Either this or Host is required if this server was - // originally reached by DNS round robin. - HostFn func(*http.Request) string - - // FlushTimeout: how long to let reads idle before writing out a - // response to the client. Defaults to 35 milliseconds. - FlushTimeout time.Duration - - // BytesBeforeFlush: how many bytes to read before flushing response to - // client. Periodically flushing the response keeps the response buffer - // from getting too big when processing big downloads. - BytesBeforeFlush int - - // IdleTimeout: how long to wait before closing an idle connection, defaults - // to 70 seconds - IdleTimeout time.Duration - - // ReadBufferSize: size of read buffer in bytes - ReadBufferSize int - - // OnBytesReceived is an optional callback for learning about bytes received - // from a client - OnBytesReceived statCallback - - // OnBytesSent is an optional callback for learning about bytes sent to a - // client - OnBytesSent statCallback - - // Allow: Optional function that checks whether the given request to the - // given destAddr is allowed. If it is not allowed, this function should - // return the HTTP error code and an error. - Allow func(req *http.Request, destAddr string) (int, error) - - // connMap: map of outbound connections by their id - connMap map[string]*lazyConn - - // connMapMutex: synchronizes access to connMap - connMapMutex sync.RWMutex -} - -// statCallback is a function for receiving stat information. -// -// clientIp: ip address of client -// destAddr: the destination address to which we're proxying -// req: the http.Request that's being served -// countryCode: the country-code of the client (only available when using CloudFlare) -// bytes: the number of bytes sent/received -type statCallback func( - clientIp string, - destAddr string, - req *http.Request, - bytes int64) - -// Start() starts this proxy -func (p *Proxy) Start() { - if p.Dial == nil { - p.Dial = func(addr string) (net.Conn, error) { - return net.Dial("tcp", addr) - } - } - if p.FlushTimeout == 0 { - p.FlushTimeout = defaultReadFlushTimeout - } - if p.IdleTimeout == 0 { - p.IdleTimeout = defaultIdleTimeoutServer - } - if p.ReadBufferSize == 0 { - p.ReadBufferSize = DEFAULT_READ_BUFFER_SIZE - } - if p.BytesBeforeFlush == 0 { - p.BytesBeforeFlush = DEFAULT_BYTES_BEFORE_FLUSH - } - p.connMap = make(map[string]*lazyConn) -} - -// ListenAndServe: convenience function for quickly starting up a dedicated HTTP -// server using this Proxy as its handler -func (p *Proxy) ListenAndServe(addr string) error { - l, err := net.Listen("tcp", addr) - if err != nil { - return fmt.Errorf("Unable to listen at %v: %v", addr, err) - } - return p.Serve(l) -} - -// Serve: convenience function for quickly starting up a dedicated HTTP server -// using this Proxy as its handler -func (p *Proxy) Serve(l net.Listener) error { - p.Start() - httpServer := &http.Server{ - Handler: p, - ReadTimeout: 10 * time.Second, - WriteTimeout: 10 * time.Second, - } - return httpServer.Serve(l) -} - -func (p *Proxy) parseRequestPath(path string) (string, string, string, error) { - log.Debugf("Path is %v", path) - strs := r.FindStringSubmatch(path) - if len(strs) < 4 { - return "", "", "", fmt.Errorf("Unexpected request path: %v", path) - } - return strs[1], strs[2], strs[3], nil -} - -func (p *Proxy) parseRequestProps(req *http.Request) (string, string, string, error) { - // If it's a reasonably long path, it likely follows our new request URI format: - // /X-Enproxy-Id/X-Enproxy-Dest-Addr/X-Enproxy-Op - if len(req.URL.Path) > 5 { - return p.parseRequestPath(req.URL.Path) - } - - id := req.Header.Get(X_ENPROXY_ID) - if id == "" { - return "", "", "", fmt.Errorf("No id found in header %s", X_ENPROXY_ID) - } - - addr := req.Header.Get(X_ENPROXY_DEST_ADDR) - if addr == "" { - return "", "", "", fmt.Errorf("No address found in header %s", X_ENPROXY_DEST_ADDR) - } - - op := req.Header.Get(X_ENPROXY_OP) - return id, addr, op, nil -} - -// ServeHTTP: implements the http.Handler interface -func (p *Proxy) ServeHTTP(resp http.ResponseWriter, req *http.Request) { - resp.Header().Set("Lantern-IP", req.Header.Get("X-Forwarded-For")) - resp.Header().Set("Lantern-Country", req.Header.Get("Cf-Ipcountry")) - - if req.Method == "HEAD" { - // Just respond OK to HEAD requests (used for health checks) - resp.WriteHeader(200) - return - } - - id, addr, op, er := p.parseRequestProps(req) - if er != nil { - respond(http.StatusBadRequest, resp, er.Error()) - log.Errorf("Could not parse enproxy data: %v", er) - return - } - log.Debugf("Parsed enproxy data id: %v, addr: %v, op: %v", id, addr, op) - - lc, isNew, err := p.getLazyConn(id, addr, req, resp) - if err != nil { - // Close the connection? - return - } - connOut, err := lc.get() - if err != nil { - respond(http.StatusInternalServerError, resp, fmt.Sprintf("Unable to get outoing connection to destination server: %v", err)) - return - } - - if op == OP_WRITE { - p.handleWrite(resp, req, lc, connOut, isNew) - } else if op == OP_READ { - p.handleRead(resp, req, lc, connOut, true) - } else { - respond(http.StatusInternalServerError, resp, fmt.Sprintf("Operation not supported: %v", op)) - } -} - -// handleWrite forwards the data from a POST to the outbound connection -func (p *Proxy) handleWrite(resp http.ResponseWriter, req *http.Request, lc *lazyConn, connOut net.Conn, first bool) { - // Pipe request - n, err := io.Copy(connOut, req.Body) - if p.OnBytesReceived != nil && n > 0 { - clientIp := clientIpFor(req) - if clientIp != "" { - p.OnBytesReceived(clientIp, lc.addr, req, n) - } - } - if err != nil && err != io.EOF { - respond(http.StatusInternalServerError, resp, fmt.Sprintf("Unable to write to connOut: %s", err)) - return - } - host := "" - if p.HostFn != nil { - host = p.HostFn(req) - } - // Falling back on deprecated mechanism for backwards compatibility - if host == "" { - host = p.Host - } - if host != "" { - // Enable sticky routing (see the comment on HostFn above). - resp.Header().Set(X_ENPROXY_PROXY_HOST, host) - } - if first { - // On first write, immediately do some reading - p.handleRead(resp, req, lc, connOut, false) - } else { - resp.WriteHeader(200) - } -} - -// handleRead streams the data from the outbound connection to the client as -// a response body. If no data is read for more than FlushTimeout, then the -// response is finished and client needs to make a new GET request. -func (p *Proxy) handleRead(resp http.ResponseWriter, req *http.Request, lc *lazyConn, connOut net.Conn, waitForData bool) { - if lc.hitEOF { - // We hit EOF on the server while processing a previous request, - // immediately return EOF to the client - resp.Header().Set(X_ENPROXY_EOF, "true") - // Echo back connection id (for debugging purposes) - resp.Header().Set(X_ENPROXY_ID, lc.id) - resp.WriteHeader(200) - return - } - - // Get clientIp for reporting stats - clientIp := clientIpFor(req) - - b := make([]byte, p.ReadBufferSize) - first := true - haveRead := false - bytesInBatch := 0 - lastReadTime := time.Now() - for { - readDeadline := time.Now().Add(p.FlushTimeout) - if err := connOut.SetReadDeadline(readDeadline); err != nil { - log.Debugf("Unable to set read deadline: %v", err) - } - - // Read - n, readErr := connOut.Read(b) - if first { - if readErr == io.EOF { - // Reached EOF, tell client using a special header - resp.Header().Set(X_ENPROXY_EOF, "true") - } - // Echo back connection id (for debugging purposes) - resp.Header().Set(X_ENPROXY_ID, lc.id) - // Always respond 200 OK - resp.WriteHeader(200) - first = false - } - - // Write if necessary - if n > 0 { - if clientIp != "" && p.OnBytesSent != nil && n > 0 { - p.OnBytesSent(clientIp, lc.addr, req, int64(n)) - } - - haveRead = true - lastReadTime = time.Now() - bytesInBatch = bytesInBatch + n - _, writeErr := resp.Write(b[:n]) - if writeErr != nil { - log.Errorf("Error writing to response: %s", writeErr) - if err := connOut.Close(); err != nil { - log.Debugf("Unable to close out connection: %v", err) - } - return - } - } - - // Inspect readErr to decide whether or not to continue reading - if readErr != nil { - switch e := readErr.(type) { - case net.Error: - if e.Timeout() { - if n == 0 { - // We didn't read anything, might be time to return to - // client - if !waitForData { - // We're not supposed to wait for data, so just - // return right away - return - } - if haveRead { - // We've read some data, so return right away so - // that client doesn't have to wait - return - } - } - } else { - return - } - default: - if readErr == io.EOF { - lc.hitEOF = true - } else { - log.Errorf("Unexpected error reading from upstream: %s", readErr) - // TODO: probably want to close connOut right away - } - return - } - } - - if time.Now().Sub(lastReadTime) > 10*time.Second { - // We've spent more than 10 seconds without reading, return so that - // CloudFlare doesn't time us out - // TODO: Fastly has much more configurable timeouts, might be able to bump this up - return - } - - if bytesInBatch > p.BytesBeforeFlush { - // We've read a good chunk, flush the response to keep its buffer - // from getting too big. - resp.(http.Flusher).Flush() - bytesInBatch = 0 - } - } -} - -// getLazyConn gets the lazyConn corresponding to the given id and addr, or -// creates a new one and saves it to connMap. -func (p *Proxy) getLazyConn(id string, addr string, req *http.Request, resp http.ResponseWriter) (l *lazyConn, isNew bool, err error) { - p.connMapMutex.RLock() - l = p.connMap[id] - p.connMapMutex.RUnlock() - if l != nil { - return l, false, nil - } - return p.newOutgoingConn(id, addr, req, resp) -} - -// newOutgoingConn creates a new outoing connection and stores it in the connection cache. -func (p *Proxy) newOutgoingConn(id string, addr string, req *http.Request, resp http.ResponseWriter) (l *lazyConn, isNew bool, err error) { - if p.Allow != nil { - log.Trace("Checking if connection is allowed") - code, err := p.Allow(req, addr) - if err != nil { - respond(code, resp, err.Error()) - return nil, false, fmt.Errorf("Not allowed: %v", err) - } - } - l = p.newLazyConn(id, addr) - p.connMapMutex.Lock() - p.connMap[id] = l - p.connMapMutex.Unlock() - return l, true, nil -} - -func clientIpFor(req *http.Request) string { - clientIp := req.Header.Get("X-Forwarded-For") - if clientIp == "" { - clientIp, _, err := net.SplitHostPort(req.RemoteAddr) - if err != nil { - log.Debugf("Unable to split RemoteAddr %v: %v", err) - return "" - } - return clientIp - } - // clientIp may contain multiple ips, use the first - ips := strings.Split(clientIp, ",") - return strings.TrimSpace(ips[0]) -} - -func respond(status int, resp http.ResponseWriter, msg string) { - log.Errorf(msg) - resp.WriteHeader(status) - if _, err := resp.Write([]byte(msg)); err != nil { - log.Debugf("Unable to write response: %v", err) - } -} diff --git a/src/github.com/getlantern/enproxy/proxy_test.go b/src/github.com/getlantern/enproxy/proxy_test.go deleted file mode 100644 index 5cd1966dde..0000000000 --- a/src/github.com/getlantern/enproxy/proxy_test.go +++ /dev/null @@ -1,39 +0,0 @@ -package enproxy - -import ( - "net/http" - "net/http/httptest" - "testing" -) - -func TestCustomHeaders(t *testing.T) { - - proxy := &Proxy{} - - w := httptest.NewRecorder() - - req, err := http.NewRequest("GET", "http://example.com/foo", nil) - if err != nil { - t.Fatal(err) - } - - xff := "7.7.7.7" - req.Header.Set("X-Forwarded-For", xff) - - ipc := "US" - req.Header.Set("Cf-Ipcountry", ipc) - - proxy.ServeHTTP(w, req) - - ip := w.Header().Get("Lantern-IP") - country := w.Header().Get("Lantern-Country") - - log.Debugf("Testing IP: %v", ip) - log.Debugf("Testing country: %v", country) - if ip != xff { - t.Fatalf("Unexpected ip: %v", ip) - } - if country != ipc { - t.Fatalf("Unexpected country: %v", country) - } -} diff --git a/src/github.com/getlantern/enproxy/request_strategy.go b/src/github.com/getlantern/enproxy/request_strategy.go deleted file mode 100644 index 82580584f3..0000000000 --- a/src/github.com/getlantern/enproxy/request_strategy.go +++ /dev/null @@ -1,169 +0,0 @@ -package enproxy - -import ( - "bytes" - "io" -) - -// request is an outgoing request to the upstream proxy -type request struct { - body io.ReadCloser - length int -} - -// requestStrategy encapsulates a strategy for making requests upstream (either -// buffered or streaming) -type requestStrategy interface { - write(b []byte) (int, error) - - finishBody() error -} - -// bufferingRequestStrategy is an implementation of requestStrategy that buffers -// requests upstream. -type bufferingRequestStrategy struct { - c *conn - currentBody []byte - currentBytesWritten int -} - -// streamingRequestStrategy is an implementation of requestStrategy that streams -// requests upstream. -type streamingRequestStrategy struct { - c *conn - writer *io.PipeWriter -} - -// Writes the given buffer to the upstream proxy encapsulated in an HTTP -// request. If b is bigger than bodySize (65K), then this will result in -// multiple POST requests. -func (brs *bufferingRequestStrategy) write(b []byte) (int, error) { - // Consume writes as long as they keep coming in - bytesWritten := 0 - - // Copy from b into outbound body - for { - bytesRemaining := bodySize - brs.currentBytesWritten - bytesToCopy := len(b) - if bytesToCopy == 0 { - break - } else { - if brs.currentBody == nil { - brs.initBody() - } - dst := brs.currentBody[brs.currentBytesWritten:] - if bytesToCopy <= bytesRemaining { - // Copy the entire buffer to the destination - copy(dst, b) - brs.currentBytesWritten = brs.currentBytesWritten + bytesToCopy - bytesWritten = bytesWritten + bytesToCopy - break - } else { - // Copy as much as we can from the buffer to the destination - copy(dst, b[:bytesRemaining]) - // Set buffer to remaining bytes - b = b[bytesRemaining:] - brs.currentBytesWritten = brs.currentBytesWritten + bytesRemaining - bytesWritten = bytesWritten + bytesRemaining - // Write the body - err := brs.finishBody() - if err != nil { - return 0, err - } - } - } - } - - if bodySize == brs.currentBytesWritten { - // We've filled the body, write it - err := brs.finishBody() - if err != nil { - return 0, err - } - } - - return bytesWritten, nil -} - -// Writes the given buffer to the upstream proxy encapsulated in an HTTP -// request. -func (srs *streamingRequestStrategy) write(b []byte) (int, error) { - if srs.writer == nil { - // Lazily initialize our next request to the proxy - // Construct a pipe for piping data to proxy - reader, writer := io.Pipe() - increment(&writePipeOpen) - srs.writer = writer - request := &request{ - body: reader, - length: 0, // forces chunked encoding - } - increment(&writingSubmittingRequest) - if !srs.c.submitRequest(request) { - decrement(&writingSubmittingRequest) - return 0, io.EOF - } - decrement(&writingSubmittingRequest) - go func() { - // Drain the requestFinishedCh - err := <-srs.c.requestFinishedCh - if err := writer.Close(); err != nil { - log.Debugf("Unable to close writer: %v", err) - } - if err != nil && err != io.EOF { - srs.c.fail(err) - } - }() - } - - increment(&writingDoingWrite) - defer decrement(&writingDoingWrite) - return srs.writer.Write(b) -} - -func (brs *bufferingRequestStrategy) initBody() { - brs.currentBody = make([]byte, bodySize) - brs.currentBytesWritten = 0 -} - -func (brs *bufferingRequestStrategy) finishBody() error { - if brs.currentBody == nil { - return nil - } - - body := brs.currentBody - if brs.currentBytesWritten < len(brs.currentBody) { - body = brs.currentBody[:brs.currentBytesWritten] - } - success := brs.c.submitRequest(&request{ - body: &closer{bytes.NewReader(body)}, - length: brs.currentBytesWritten, // forces identity encoding - }) - if success { - err := <-brs.c.requestFinishedCh - if err != nil { - return err - } - } - brs.currentBody = nil - brs.currentBytesWritten = 0 - if !success { - return io.EOF - } - - return nil -} - -func (srs *streamingRequestStrategy) finishBody() error { - if srs.writer == nil { - return nil - } - - if err := srs.writer.Close(); err != nil { - log.Debugf("Unable to close writer: %v", err) - } - srs.writer = nil - decrement(&writePipeOpen) - - return nil -} diff --git a/src/github.com/getlantern/enproxy/test/client/client.go b/src/github.com/getlantern/enproxy/test/client/client.go deleted file mode 100644 index 05a829577f..0000000000 --- a/src/github.com/getlantern/enproxy/test/client/client.go +++ /dev/null @@ -1,64 +0,0 @@ -package main - -import ( - "io" - "log" - "net" - "net/http" - "net/http/httputil" - "os" - - "github.com/getlantern/enproxy" -) - -func main() { - if len(os.Args) < 2 { - log.Fatal("Usage: client ") - } - enproxyConfig := &enproxy.Config{ - DialProxy: func(addr string) (net.Conn, error) { - return net.Dial("tcp", os.Args[2]) - }, - NewRequest: func(host string, method string, body io.Reader) (req *http.Request, err error) { - if host == "" { - host = os.Args[2] - } - return http.NewRequest(method, "http://"+host+"/", body) - }, - } - httpServer := &http.Server{ - Addr: os.Args[1], - Handler: &ClientHandler{ - ProxyAddr: os.Args[2], - Config: enproxyConfig, - ReverseProxy: &httputil.ReverseProxy{ - Director: func(req *http.Request) { - // do nothing - }, - Transport: &http.Transport{ - Dial: func(network string, addr string) (net.Conn, error) { - return enproxy.Dial(addr, enproxyConfig) - }, - }, - }, - }, - } - err := httpServer.ListenAndServe() - if err != nil { - log.Fatal(err) - } -} - -type ClientHandler struct { - ProxyAddr string - Config *enproxy.Config - ReverseProxy *httputil.ReverseProxy -} - -func (c *ClientHandler) ServeHTTP(resp http.ResponseWriter, req *http.Request) { - if req.Method == "CONNECT" { - c.Intercept(resp, req) - } else { - c.ReverseProxy.ServeHTTP(resp, req) - } -} diff --git a/src/github.com/getlantern/enproxy/test/client/conn_http.go b/src/github.com/getlantern/enproxy/test/client/conn_http.go deleted file mode 100644 index 7ca6e8141e..0000000000 --- a/src/github.com/getlantern/enproxy/test/client/conn_http.go +++ /dev/null @@ -1,81 +0,0 @@ -package main - -import ( - "fmt" - "io" - "net" - "net/http" - "strconv" - - "github.com/getlantern/enproxy" -) - -// Intercept intercepts a CONNECT request, hijacks the underlying client -// connetion and starts piping the data over a new enproxy.Conn configured using -// this Config. -func (c *ClientHandler) Intercept(resp http.ResponseWriter, req *http.Request) { - if req.Method != "CONNECT" { - panic("Intercept used for non-CONNECT request!") - } - - // Hijack underlying connection - clientConn, _, err := resp.(http.Hijacker).Hijack() - if err != nil { - resp.WriteHeader(502) - fmt.Fprintf(resp, "Unable to hijack connection: %s", err) - return - } - defer clientConn.Close() - - addr := hostIncludingPort(req, 443) - - // Establish outbound connection - connOut, err := enproxy.Dial(addr, c.Config) - if err != nil { - resp.WriteHeader(502) - fmt.Fprintf(resp, "Unable to open enproxy connection: %s", err) - return - } - defer connOut.Close() - - // Pipe data - pipeData(clientConn, connOut, req) -} - -// pipeData pipes data between the client and proxy connections. It's also -// responsible for responding to the initial CONNECT request with a 200 OK. -func pipeData(clientConn net.Conn, connOut net.Conn, req *http.Request) { - // Start piping to proxy - go io.Copy(connOut, clientConn) - - // Respond OK - err := respondOK(clientConn, req) - if err != nil { - fmt.Printf("Unable to respond OK: %s", err) - return - } - - // Then start coyping from out to writer - io.Copy(clientConn, connOut) -} - -func respondOK(writer io.Writer, req *http.Request) error { - defer req.Body.Close() - resp := &http.Response{ - StatusCode: 200, - ProtoMajor: 1, - ProtoMinor: 1, - } - return resp.Write(writer) -} - -// hostIncludingPort extracts the host:port from a request. It fills in a -// a default port if none was found in the request. -func hostIncludingPort(req *http.Request, defaultPort int) string { - _, port, err := net.SplitHostPort(req.Host) - if port == "" || err != nil { - return req.Host + ":" + strconv.Itoa(defaultPort) - } else { - return req.Host - } -} diff --git a/src/github.com/getlantern/enproxy/test/server/server.go b/src/github.com/getlantern/enproxy/test/server/server.go deleted file mode 100644 index d4b9bc67b1..0000000000 --- a/src/github.com/getlantern/enproxy/test/server/server.go +++ /dev/null @@ -1,19 +0,0 @@ -package main - -import ( - "log" - "os" - - "github.com/getlantern/enproxy" -) - -func main() { - if len(os.Args) < 2 { - log.Fatal("Usage: server ") - } - proxy := &enproxy.Proxy{} - err := proxy.ListenAndServe(os.Args[1]) - if err != nil { - log.Fatalf("Unable to listen and serve: %s", err) - } -} diff --git a/src/github.com/getlantern/flashlight/app/app.go b/src/github.com/getlantern/flashlight/app/app.go new file mode 100644 index 0000000000..66c30159a6 --- /dev/null +++ b/src/github.com/getlantern/flashlight/app/app.go @@ -0,0 +1,242 @@ +// package app implements the desktop application functionality of flashlight +package app + +import ( + "fmt" + "math/rand" + "net/http" + _ "net/http/pprof" + "time" + + "github.com/getlantern/eventual" + "github.com/getlantern/flashlight" + "github.com/getlantern/golog" + "github.com/getlantern/profiling" + + "github.com/getlantern/flashlight/analytics" + "github.com/getlantern/flashlight/autoupdate" + "github.com/getlantern/flashlight/client" + "github.com/getlantern/flashlight/config" + "github.com/getlantern/flashlight/logging" + "github.com/getlantern/flashlight/proxiedsites" + "github.com/getlantern/flashlight/ui" +) + +var ( + log = golog.LoggerFor("flashlight") +) + +func init() { + // Passing public key and version to the autoupdate service. + autoupdate.PublicKey = []byte(packagePublicKey) + autoupdate.Version = flashlight.PackageVersion + + rand.Seed(time.Now().UnixNano()) + + settings = LoadSettings(flashlight.Version, flashlight.RevisionDate, flashlight.BuildDate) +} + +type App struct { + ShowUI bool + Flags map[string]interface{} + exitCh chan error + chExitFuncs chan func() +} + +func (app *App) Init() { + app.exitCh = make(chan error, 1) + // use buffered channel to avoid blocking the caller of 'AddExitFunc' + // the number 10 is arbitrary + app.chExitFuncs = make(chan func(), 10) +} + +func (app *App) LogPanicAndExit(msg string) { + cfg, err := config.Init(settings, + flashlight.PackageVersion, + app.Flags["configdir"].(string), + app.Flags["stickyconfig"].(bool), + app.Flags, + ) + if err != nil { + panic("Error initializing config") + } + if err := logging.EnableFileLogging(); err != nil { + panic("Error initializing logging") + } + + <-logging.Configure(eventual.DefaultGetter(""), "", cfg.Client.DeviceID, flashlight.Version, flashlight.RevisionDate) + + log.Error(msg) + + logging.Flush() + _ = logging.Close() + + app.Exit(nil) +} + +func (app *App) Run() error { + // Run below in separate goroutine as config.Init() can potentially block when Lantern runs + // for the first time. User can still quit Lantern through systray menu when it happens. + go func() { + log.Debug(app.Flags) + if app.Flags["proxyall"].(bool) { + // If proxyall flag was supplied, force proxying of all + settings.SetProxyAll(true) + } + + listenAddr := app.Flags["addr"].(string) + if listenAddr == "" { + listenAddr = "127.0.0.1:8787" + } + + err := flashlight.Run( + listenAddr, + "127.0.0.1:8788", + app.Flags["configdir"].(string), + app.Flags["stickyconfig"].(bool), + settings.GetProxyAll, + app.Flags, + app.beforeStart, + app.afterStart, + app.onConfigUpdate, + settings, + app.Exit) + if err != nil { + app.Exit(err) + return + } + }() + + return app.waitForExit() +} + +func (app *App) beforeStart(cfg *config.Config) bool { + log.Debug("Got first config") + + if cfg.CpuProfile != "" || cfg.MemProfile != "" { + log.Debugf("Start profiling with cpu file %s and mem file %s", cfg.CpuProfile, cfg.MemProfile) + finishProfiling := profiling.Start(cfg.CpuProfile, cfg.MemProfile) + app.AddExitFunc(finishProfiling) + } + + if err := setUpPacTool(); err != nil { + app.Exit(err) + } + + if app.Flags["clear-proxy-settings"].(bool) { + // This is a workaround that attempts to fix a Windows-only problem where + // Lantern was unable to clean the system's proxy settings before logging + // off. + // + // See: https://github.com/getlantern/lantern/issues/2776 + log.Debug("Clearing proxy settings") + doPACOff(fmt.Sprintf("http://%s/proxy_on.pac", app.Flags["uiaddr"].(string))) + app.Exit(nil) + } + + bootstrap, err := config.ReadBootstrapSettings() + var startupURL string + if err != nil { + log.Errorf("Could not read settings? %v", err) + startupURL = "" + } else { + startupURL = bootstrap.StartupUrl + } + + log.Debugf("Starting client UI at %v", app.Flags["uiaddr"].(string)) + actualUIAddr, err := ui.Start(app.Flags["uiaddr"].(string), !app.ShowUI, startupURL) + if err != nil { + // This very likely means Lantern is already running on our port. Tell + // it to open a browser. This is useful, for example, when the user + // clicks the Lantern desktop shortcut when Lantern is already running. + err2 := app.showExistingUI(app.Flags["uiaddr"].(string)) + if err2 != nil { + app.Exit(fmt.Errorf("Unable to start UI: %s", err)) + } else { + log.Debug("Lantern already running, showing existing UI") + app.Exit(nil) + } + return false + } + client.UIAddr = actualUIAddr + + // Only run analytics once on startup. + if settings.IsAutoReport() { + stopAnalytics := analytics.Start(cfg, flashlight.Version) + app.AddExitFunc(stopAnalytics) + } + watchDirectAddrs() + + return true +} + +func (app *App) afterStart(cfg *config.Config) { + app.onConfigUpdate(cfg) + ServePACFile() + if settings.GetSystemProxy() { + pacOn() + } + + app.AddExitFunc(pacOff) + if app.ShowUI && !app.Flags["startup"].(bool) { + // Launch a browser window with Lantern but only after the pac + // URL and the proxy server are all up and running to avoid + // race conditions where we change the proxy setup while the + // UI server and proxy server are still coming up. + ui.Show() + } else { + log.Debugf("Not opening browser. Startup is: %v", app.Flags["startup"]) + } +} + +func (app *App) onConfigUpdate(cfg *config.Config) { + proxiedsites.Configure(cfg.ProxiedSites) + autoupdate.Configure(cfg) +} + +// showExistingUi triggers an existing Lantern running on the same system to +// open a browser to the Lantern start page. +func (app *App) showExistingUI(addr string) error { + url := "http://" + addr + "/startup" + log.Debugf("Hitting local URL: %v", url) + resp, err := http.Get(url) + if err != nil { + log.Debugf("Could not hit local lantern") + if resp.Body != nil { + if err = resp.Body.Close(); err != nil { + log.Debugf("Error closing body! %s", err) + } + } + return err + } else if resp.StatusCode != http.StatusOK { + return fmt.Errorf("Unexpected response from existing Lantern: %d", resp.StatusCode) + } else { + return nil + } +} + +// AddExitFunc adds a function to be called before the application exits. +func (app *App) AddExitFunc(exitFunc func()) { + app.chExitFuncs <- exitFunc +} + +// exit tells the application to exit, optionally supplying an error that caused +// the exit. +func (app *App) Exit(err error) { + defer func() { app.exitCh <- err }() + for { + select { + case f := <-app.chExitFuncs: + log.Debugf("Calling exit func") + f() + default: + log.Debugf("No exit func remaining, exit now") + return + } + } +} + +// WaitForExit waits for a request to exit the application. +func (app *App) waitForExit() error { + return <-app.exitCh +} diff --git a/src/github.com/getlantern/flashlight/main/autoupdate.go b/src/github.com/getlantern/flashlight/app/autoupdate.go similarity index 97% rename from src/github.com/getlantern/flashlight/main/autoupdate.go rename to src/github.com/getlantern/flashlight/app/autoupdate.go index fddb22932d..f3954c831e 100644 --- a/src/github.com/getlantern/flashlight/main/autoupdate.go +++ b/src/github.com/getlantern/flashlight/app/autoupdate.go @@ -1,4 +1,4 @@ -package main +package app // This is the public key of the BNS cert. Incoming updates will be signed to // prevent MITM attacks. diff --git a/src/github.com/getlantern/flashlight/app/config-template.yaml b/src/github.com/getlantern/flashlight/app/config-template.yaml new file mode 100644 index 0000000000..6344ddb883 --- /dev/null +++ b/src/github.com/getlantern/flashlight/app/config-template.yaml @@ -0,0 +1,10226 @@ +version: 11 +cloudconfig: http://config.getiantem.org/cloud.yaml.gz +cloudconfigca: "" +frontedcloudconfig: "" +cpuprofile: "" +memprofile: "" +updateserverurl: https://update.getlantern.org +client: + minqos: 0 + deviceid: hDg1WzFA + proxiedconnectports: + - 80 + - 443 + - 8080 + - 8443 + - 5222 + - 5223 + - 5224 + - 5228 + - 5229 + - 7300 + - 19305 + - 19306 + - 19307 + - 19308 + - 19309 + dumpheaders: false + chainedservers: + fallback-template: + addr: + pipelined: false + cert: "" + authtoken: + weight: 1000000 + qos: 10 + trusted: true + masqueradesets: + cloudflare: [] + cloudfront: + - domain: cloudfront.net + ipaddress: 52.84.0.140 + - domain: cloudfront.net + ipaddress: 52.84.0.31 + - domain: cloudfront.net + ipaddress: 52.84.0.73 + - domain: cloudfront.net + ipaddress: 52.84.0.111 + - domain: cloudfront.net + ipaddress: 52.84.0.110 + - domain: cloudfront.net + ipaddress: 52.84.0.143 + - domain: cloudfront.net + ipaddress: 52.84.0.116 + - domain: cloudfront.net + ipaddress: 52.84.0.8 + - domain: cloudfront.net + ipaddress: 52.84.0.104 + - domain: cloudfront.net + ipaddress: 52.84.0.146 + - domain: cloudfront.net + ipaddress: 52.84.0.145 + - domain: cloudfront.net + ipaddress: 52.84.0.151 + - domain: cloudfront.net + ipaddress: 52.84.0.15 + - domain: cloudfront.net + ipaddress: 52.84.0.42 + - domain: cloudfront.net + ipaddress: 52.84.0.133 + - domain: cloudfront.net + ipaddress: 52.84.0.134 + - domain: cloudfront.net + ipaddress: 52.84.0.118 + - domain: cloudfront.net + ipaddress: 52.84.0.98 + - domain: cloudfront.net + ipaddress: 52.84.0.109 + - domain: cloudfront.net + ipaddress: 52.84.0.150 + - domain: cloudfront.net + ipaddress: 52.84.0.115 + - domain: cloudfront.net + ipaddress: 52.84.0.139 + - domain: cloudfront.net + ipaddress: 52.84.0.76 + - domain: cloudfront.net + ipaddress: 52.84.0.131 + - domain: cloudfront.net + ipaddress: 52.84.0.126 + - domain: cloudfront.net + ipaddress: 52.84.0.4 + - domain: cloudfront.net + ipaddress: 52.84.0.130 + - domain: cloudfront.net + ipaddress: 52.84.0.117 + - domain: cloudfront.net + ipaddress: 52.84.0.107 + - domain: cloudfront.net + ipaddress: 52.84.0.95 + - domain: cloudfront.net + ipaddress: 52.84.0.35 + - domain: cloudfront.net + ipaddress: 52.84.0.119 + - domain: cloudfront.net + ipaddress: 52.84.0.12 + - domain: cloudfront.net + ipaddress: 52.84.0.113 + - domain: cloudfront.net + ipaddress: 52.84.0.94 + - domain: cloudfront.net + ipaddress: 52.84.0.129 + - domain: cloudfront.net + ipaddress: 52.84.0.21 + - domain: cloudfront.net + ipaddress: 52.84.0.123 + - domain: cloudfront.net + ipaddress: 52.84.0.16 + - domain: cloudfront.net + ipaddress: 52.84.0.120 + - domain: cloudfront.net + ipaddress: 52.84.0.132 + - domain: cloudfront.net + ipaddress: 52.84.0.36 + - domain: cloudfront.net + ipaddress: 52.84.0.41 + - domain: cloudfront.net + ipaddress: 52.84.0.24 + - domain: cloudfront.net + ipaddress: 52.84.0.22 + - domain: cloudfront.net + ipaddress: 52.84.0.14 + - domain: cloudfront.net + ipaddress: 52.84.0.72 + - domain: cloudfront.net + ipaddress: 52.84.0.10 + - domain: cloudfront.net + ipaddress: 52.84.0.26 + - domain: cloudfront.net + ipaddress: 52.84.0.13 + - domain: cloudfront.net + ipaddress: 52.84.0.32 + - domain: cloudfront.net + ipaddress: 52.84.0.23 + - domain: cloudfront.net + ipaddress: 52.84.0.28 + - domain: cloudfront.net + ipaddress: 52.84.0.60 + - domain: cloudfront.net + ipaddress: 52.84.0.54 + - domain: cloudfront.net + ipaddress: 52.84.0.38 + - domain: cloudfront.net + ipaddress: 52.84.0.50 + - domain: cloudfront.net + ipaddress: 52.84.0.18 + - domain: cloudfront.net + ipaddress: 52.84.0.46 + - domain: cloudfront.net + ipaddress: 52.84.0.58 + - domain: cloudfront.net + ipaddress: 52.84.0.75 + - domain: cloudfront.net + ipaddress: 52.84.0.64 + - domain: cloudfront.net + ipaddress: 52.84.0.48 + - domain: cloudfront.net + ipaddress: 52.84.0.37 + - domain: cloudfront.net + ipaddress: 52.84.0.97 + - domain: cloudfront.net + ipaddress: 52.84.0.63 + - domain: cloudfront.net + ipaddress: 52.84.0.39 + - domain: cloudfront.net + ipaddress: 52.84.0.180 + - domain: cloudfront.net + ipaddress: 52.84.0.183 + - domain: cloudfront.net + ipaddress: 52.84.0.80 + - domain: cloudfront.net + ipaddress: 52.84.0.65 + - domain: cloudfront.net + ipaddress: 52.84.0.84 + - domain: cloudfront.net + ipaddress: 52.84.0.79 + - domain: cloudfront.net + ipaddress: 52.84.0.74 + - domain: cloudfront.net + ipaddress: 52.84.0.92 + - domain: cloudfront.net + ipaddress: 52.84.0.44 + - domain: cloudfront.net + ipaddress: 52.84.0.101 + - domain: cloudfront.net + ipaddress: 52.84.0.17 + - domain: cloudfront.net + ipaddress: 52.84.0.61 + - domain: cloudfront.net + ipaddress: 52.84.0.57 + - domain: cloudfront.net + ipaddress: 52.84.0.66 + - domain: cloudfront.net + ipaddress: 52.84.0.7 + - domain: cloudfront.net + ipaddress: 52.84.0.5 + - domain: cloudfront.net + ipaddress: 52.84.0.55 + - domain: cloudfront.net + ipaddress: 52.84.0.105 + - domain: cloudfront.net + ipaddress: 52.84.0.83 + - domain: cloudfront.net + ipaddress: 52.84.0.49 + - domain: cloudfront.net + ipaddress: 52.84.0.102 + - domain: cloudfront.net + ipaddress: 52.84.0.106 + - domain: cloudfront.net + ipaddress: 52.84.0.85 + - domain: cloudfront.net + ipaddress: 52.84.0.27 + - domain: cloudfront.net + ipaddress: 52.84.0.19 + - domain: cloudfront.net + ipaddress: 52.84.0.148 + - domain: cloudfront.net + ipaddress: 52.84.0.82 + - domain: cloudfront.net + ipaddress: 52.84.0.87 + - domain: cloudfront.net + ipaddress: 52.84.0.96 + - domain: cloudfront.net + ipaddress: 52.84.0.90 + - domain: cloudfront.net + ipaddress: 52.84.0.43 + - domain: cloudfront.net + ipaddress: 52.84.0.34 + - domain: cloudfront.net + ipaddress: 52.84.0.125 + - domain: cloudfront.net + ipaddress: 52.84.0.121 + - domain: cloudfront.net + ipaddress: 52.84.0.91 + - domain: cloudfront.net + ipaddress: 52.84.0.112 + - domain: cloudfront.net + ipaddress: 52.84.0.108 + - domain: cloudfront.net + ipaddress: 52.84.0.68 + - domain: cloudfront.net + ipaddress: 52.84.0.77 + - domain: cloudfront.net + ipaddress: 52.84.0.89 + - domain: cloudfront.net + ipaddress: 52.84.0.184 + - domain: cloudfront.net + ipaddress: 52.84.0.70 + - domain: cloudfront.net + ipaddress: 52.84.0.99 + - domain: cloudfront.net + ipaddress: 52.84.0.88 + - domain: cloudfront.net + ipaddress: 52.84.0.172 + - domain: cloudfront.net + ipaddress: 52.84.0.100 + - domain: cloudfront.net + ipaddress: 52.84.0.154 + - domain: cloudfront.net + ipaddress: 52.84.0.155 + - domain: cloudfront.net + ipaddress: 52.84.0.136 + - domain: cloudfront.net + ipaddress: 52.84.0.165 + - domain: cloudfront.net + ipaddress: 52.84.0.124 + - domain: cloudfront.net + ipaddress: 52.84.0.137 + - domain: cloudfront.net + ipaddress: 52.84.0.144 + - domain: cloudfront.net + ipaddress: 52.84.0.147 + - domain: cloudfront.net + ipaddress: 52.84.0.142 + - domain: cloudfront.net + ipaddress: 52.84.0.162 + - domain: cloudfront.net + ipaddress: 52.84.0.161 + - domain: cloudfront.net + ipaddress: 52.84.0.153 + - domain: cloudfront.net + ipaddress: 52.84.0.122 + - domain: cloudfront.net + ipaddress: 52.84.0.163 + - domain: cloudfront.net + ipaddress: 52.84.0.158 + - domain: cloudfront.net + ipaddress: 52.84.0.176 + - domain: cloudfront.net + ipaddress: 54.239.192.5 + - domain: cloudfront.net + ipaddress: 54.239.192.6 + - domain: cloudfront.net + ipaddress: 54.239.192.4 + - domain: cloudfront.net + ipaddress: 54.239.192.7 + - domain: cloudfront.net + ipaddress: 54.239.192.8 + - domain: cloudfront.net + ipaddress: 52.84.0.182 + - domain: cloudfront.net + ipaddress: 52.84.0.168 + - domain: cloudfront.net + ipaddress: 52.84.0.157 + - domain: cloudfront.net + ipaddress: 52.84.0.174 + - domain: cloudfront.net + ipaddress: 52.84.0.169 + - domain: cloudfront.net + ipaddress: 52.84.0.170 + - domain: cloudfront.net + ipaddress: 52.84.0.175 + - domain: cloudfront.net + ipaddress: 52.84.0.179 + - domain: cloudfront.net + ipaddress: 52.84.0.156 + - domain: cloudfront.net + ipaddress: 52.84.0.159 + - domain: cloudfront.net + ipaddress: 52.84.0.177 + - domain: cloudfront.net + ipaddress: 52.84.0.171 + - domain: cloudfront.net + ipaddress: 52.84.0.178 + - domain: cloudfront.net + ipaddress: 52.84.0.166 + - domain: cloudfront.net + ipaddress: 52.84.0.141 + - domain: cloudfront.net + ipaddress: 52.84.0.138 + - domain: cloudfront.net + ipaddress: 52.84.0.93 + - domain: cloudfront.net + ipaddress: 52.84.0.40 + - domain: cloudfront.net + ipaddress: 52.84.0.81 + - domain: cloudfront.net + ipaddress: 52.84.0.56 + - domain: cloudfront.net + ipaddress: 52.84.0.47 + - domain: cloudfront.net + ipaddress: 52.84.0.62 + - domain: cloudfront.net + ipaddress: 52.84.0.173 + - domain: cloudfront.net + ipaddress: 52.84.0.45 + - domain: cloudfront.net + ipaddress: 52.84.0.51 + - domain: cloudfront.net + ipaddress: 52.84.0.78 + - domain: cloudfront.net + ipaddress: 52.84.0.149 + - domain: cloudfront.net + ipaddress: 52.84.0.59 + - domain: cloudfront.net + ipaddress: 52.84.0.185 + - domain: cloudfront.net + ipaddress: 52.84.0.53 + - domain: cloudfront.net + ipaddress: 52.84.0.189 + - domain: cloudfront.net + ipaddress: 52.84.0.187 + - domain: cloudfront.net + ipaddress: 52.84.0.190 + - domain: cloudfront.net + ipaddress: 52.84.0.188 + - domain: cloudfront.net + ipaddress: 52.84.0.186 + - domain: cloudfront.net + ipaddress: 54.239.192.9 + - domain: cloudfront.net + ipaddress: 52.84.0.191 + - domain: cloudfront.net + ipaddress: 54.239.192.10 + - domain: cloudfront.net + ipaddress: 54.239.192.11 + - domain: cloudfront.net + ipaddress: 54.239.192.12 + - domain: cloudfront.net + ipaddress: 54.239.192.13 + - domain: cloudfront.net + ipaddress: 54.239.192.14 + - domain: cloudfront.net + ipaddress: 54.239.192.15 + - domain: cloudfront.net + ipaddress: 54.239.192.16 + - domain: cloudfront.net + ipaddress: 54.239.192.18 + - domain: cloudfront.net + ipaddress: 54.239.192.19 + - domain: cloudfront.net + ipaddress: 54.239.192.20 + - domain: cloudfront.net + ipaddress: 52.84.0.192 + - domain: cloudfront.net + ipaddress: 54.239.192.21 + - domain: cloudfront.net + ipaddress: 54.239.192.22 + - domain: cloudfront.net + ipaddress: 52.84.0.193 + - domain: cloudfront.net + ipaddress: 54.239.192.23 + - domain: cloudfront.net + ipaddress: 52.84.0.194 + - domain: cloudfront.net + ipaddress: 54.239.192.24 + - domain: cloudfront.net + ipaddress: 52.84.0.196 + - domain: cloudfront.net + ipaddress: 54.239.192.25 + - domain: cloudfront.net + ipaddress: 52.84.0.197 + - domain: cloudfront.net + ipaddress: 52.84.0.198 + - domain: cloudfront.net + ipaddress: 54.239.192.26 + - domain: cloudfront.net + ipaddress: 52.84.0.199 + - domain: cloudfront.net + ipaddress: 54.240.131.251 + - domain: cloudfront.net + ipaddress: 54.240.131.252 + - domain: cloudfront.net + ipaddress: 54.240.131.253 + - domain: cloudfront.net + ipaddress: 54.240.131.254 + - domain: cloudfront.net + ipaddress: 54.239.192.28 + - domain: cloudfront.net + ipaddress: 52.84.0.200 + - domain: cloudfront.net + ipaddress: 54.239.192.29 + - domain: cloudfront.net + ipaddress: 52.84.0.201 + - domain: cloudfront.net + ipaddress: 52.84.0.204 + - domain: cloudfront.net + ipaddress: 52.84.0.205 + - domain: cloudfront.net + ipaddress: 52.84.0.206 + - domain: cloudfront.net + ipaddress: 54.239.192.30 + - domain: cloudfront.net + ipaddress: 52.84.0.207 + - domain: cloudfront.net + ipaddress: 54.239.192.31 + - domain: cloudfront.net + ipaddress: 52.84.0.208 + - domain: cloudfront.net + ipaddress: 54.239.192.32 + - domain: cloudfront.net + ipaddress: 52.84.0.210 + - domain: cloudfront.net + ipaddress: 52.84.0.209 + - domain: cloudfront.net + ipaddress: 52.84.0.211 + - domain: cloudfront.net + ipaddress: 52.84.0.212 + - domain: cloudfront.net + ipaddress: 54.239.192.33 + - domain: cloudfront.net + ipaddress: 52.84.0.213 + - domain: cloudfront.net + ipaddress: 54.239.192.34 + - domain: cloudfront.net + ipaddress: 54.239.192.35 + - domain: cloudfront.net + ipaddress: 52.84.0.214 + - domain: cloudfront.net + ipaddress: 54.239.192.36 + - domain: cloudfront.net + ipaddress: 54.239.192.37 + - domain: cloudfront.net + ipaddress: 54.239.192.38 + - domain: cloudfront.net + ipaddress: 54.239.192.39 + - domain: cloudfront.net + ipaddress: 54.239.192.40 + - domain: cloudfront.net + ipaddress: 54.239.192.41 + - domain: cloudfront.net + ipaddress: 54.239.192.42 + - domain: cloudfront.net + ipaddress: 54.239.192.43 + - domain: cloudfront.net + ipaddress: 52.84.0.216 + - domain: cloudfront.net + ipaddress: 54.239.192.44 + - domain: cloudfront.net + ipaddress: 54.239.192.45 + - domain: cloudfront.net + ipaddress: 54.239.192.46 + - domain: cloudfront.net + ipaddress: 52.84.0.217 + - domain: cloudfront.net + ipaddress: 52.84.0.218 + - domain: cloudfront.net + ipaddress: 54.239.192.47 + - domain: cloudfront.net + ipaddress: 52.84.0.220 + - domain: cloudfront.net + ipaddress: 54.239.192.48 + - domain: cloudfront.net + ipaddress: 52.84.0.222 + - domain: cloudfront.net + ipaddress: 52.84.0.223 + - domain: cloudfront.net + ipaddress: 54.239.192.49 + - domain: cloudfront.net + ipaddress: 52.84.0.224 + - domain: cloudfront.net + ipaddress: 52.84.0.225 + - domain: cloudfront.net + ipaddress: 54.239.192.50 + - domain: cloudfront.net + ipaddress: 52.84.0.226 + - domain: cloudfront.net + ipaddress: 52.84.0.227 + - domain: cloudfront.net + ipaddress: 54.239.192.51 + - domain: cloudfront.net + ipaddress: 52.84.0.228 + - domain: cloudfront.net + ipaddress: 52.84.0.229 + - domain: cloudfront.net + ipaddress: 54.239.192.52 + - domain: cloudfront.net + ipaddress: 54.239.192.53 + - domain: cloudfront.net + ipaddress: 52.84.0.230 + - domain: cloudfront.net + ipaddress: 54.239.192.54 + - domain: cloudfront.net + ipaddress: 54.239.192.55 + - domain: cloudfront.net + ipaddress: 52.84.0.231 + - domain: cloudfront.net + ipaddress: 54.239.192.56 + - domain: cloudfront.net + ipaddress: 52.84.0.232 + - domain: cloudfront.net + ipaddress: 54.239.192.57 + - domain: cloudfront.net + ipaddress: 52.84.0.233 + - domain: cloudfront.net + ipaddress: 54.239.192.58 + - domain: cloudfront.net + ipaddress: 54.239.192.59 + - domain: cloudfront.net + ipaddress: 52.84.0.234 + - domain: cloudfront.net + ipaddress: 54.239.192.60 + - domain: cloudfront.net + ipaddress: 52.84.0.235 + - domain: cloudfront.net + ipaddress: 54.239.192.61 + - domain: cloudfront.net + ipaddress: 54.239.192.62 + - domain: cloudfront.net + ipaddress: 54.239.192.63 + - domain: cloudfront.net + ipaddress: 52.84.0.236 + - domain: cloudfront.net + ipaddress: 52.84.0.237 + - domain: cloudfront.net + ipaddress: 52.84.0.238 + - domain: cloudfront.net + ipaddress: 54.239.192.64 + - domain: cloudfront.net + ipaddress: 52.84.0.239 + - domain: cloudfront.net + ipaddress: 52.84.0.240 + - domain: cloudfront.net + ipaddress: 54.239.192.66 + - domain: cloudfront.net + ipaddress: 52.84.0.241 + - domain: cloudfront.net + ipaddress: 54.239.192.67 + - domain: cloudfront.net + ipaddress: 54.239.192.68 + - domain: cloudfront.net + ipaddress: 52.84.0.243 + - domain: cloudfront.net + ipaddress: 52.84.0.244 + - domain: cloudfront.net + ipaddress: 54.239.192.69 + - domain: cloudfront.net + ipaddress: 52.84.0.245 + - domain: cloudfront.net + ipaddress: 52.84.0.246 + - domain: cloudfront.net + ipaddress: 54.239.192.70 + - domain: cloudfront.net + ipaddress: 52.84.0.247 + - domain: cloudfront.net + ipaddress: 54.239.192.71 + - domain: cloudfront.net + ipaddress: 54.239.192.72 + - domain: cloudfront.net + ipaddress: 54.239.192.73 + - domain: cloudfront.net + ipaddress: 52.84.0.249 + - domain: cloudfront.net + ipaddress: 52.84.0.250 + - domain: cloudfront.net + ipaddress: 54.239.192.74 + - domain: cloudfront.net + ipaddress: 52.84.0.251 + - domain: cloudfront.net + ipaddress: 54.239.192.75 + - domain: cloudfront.net + ipaddress: 54.239.192.76 + - domain: cloudfront.net + ipaddress: 52.84.0.252 + - domain: cloudfront.net + ipaddress: 54.239.192.77 + - domain: cloudfront.net + ipaddress: 54.239.192.78 + - domain: cloudfront.net + ipaddress: 54.239.192.79 + - domain: cloudfront.net + ipaddress: 52.84.0.253 + - domain: cloudfront.net + ipaddress: 54.239.192.80 + - domain: cloudfront.net + ipaddress: 54.239.192.81 + - domain: cloudfront.net + ipaddress: 54.239.192.82 + - domain: cloudfront.net + ipaddress: 52.84.0.254 + - domain: cloudfront.net + ipaddress: 54.239.192.83 + - domain: cloudfront.net + ipaddress: 54.239.192.84 + - domain: cloudfront.net + ipaddress: 54.239.192.85 + - domain: cloudfront.net + ipaddress: 54.239.192.86 + - domain: cloudfront.net + ipaddress: 54.239.192.88 + - domain: cloudfront.net + ipaddress: 54.239.192.89 + - domain: cloudfront.net + ipaddress: 54.239.192.90 + - domain: cloudfront.net + ipaddress: 54.239.192.91 + - domain: cloudfront.net + ipaddress: 54.239.192.92 + - domain: cloudfront.net + ipaddress: 54.239.192.93 + - domain: cloudfront.net + ipaddress: 54.239.192.94 + - domain: cloudfront.net + ipaddress: 54.239.192.95 + - domain: cloudfront.net + ipaddress: 54.239.192.96 + - domain: cloudfront.net + ipaddress: 54.239.192.97 + - domain: cloudfront.net + ipaddress: 54.239.192.98 + - domain: cloudfront.net + ipaddress: 54.239.192.99 + - domain: cloudfront.net + ipaddress: 54.239.192.100 + - domain: cloudfront.net + ipaddress: 54.239.192.101 + - domain: cloudfront.net + ipaddress: 54.239.192.102 + - domain: cloudfront.net + ipaddress: 54.239.192.103 + - domain: cloudfront.net + ipaddress: 54.239.192.104 + - domain: cloudfront.net + ipaddress: 54.239.192.105 + - domain: cloudfront.net + ipaddress: 54.239.192.106 + - domain: cloudfront.net + ipaddress: 54.239.192.107 + - domain: cloudfront.net + ipaddress: 54.239.192.108 + - domain: cloudfront.net + ipaddress: 54.239.192.110 + - domain: cloudfront.net + ipaddress: 54.239.192.111 + - domain: cloudfront.net + ipaddress: 54.239.192.112 + - domain: cloudfront.net + ipaddress: 54.239.192.113 + - domain: cloudfront.net + ipaddress: 54.239.192.114 + - domain: cloudfront.net + ipaddress: 54.239.192.115 + - domain: cloudfront.net + ipaddress: 54.239.192.116 + - domain: cloudfront.net + ipaddress: 54.239.192.117 + - domain: cloudfront.net + ipaddress: 54.239.192.118 + - domain: cloudfront.net + ipaddress: 54.239.192.119 + - domain: cloudfront.net + ipaddress: 54.239.192.120 + - domain: cloudfront.net + ipaddress: 54.239.192.121 + - domain: cloudfront.net + ipaddress: 54.239.192.122 + - domain: cloudfront.net + ipaddress: 54.239.192.123 + - domain: cloudfront.net + ipaddress: 54.239.192.124 + - domain: cloudfront.net + ipaddress: 54.239.192.125 + - domain: cloudfront.net + ipaddress: 54.239.192.126 + - domain: cloudfront.net + ipaddress: 54.239.192.127 + - domain: cloudfront.net + ipaddress: 54.239.192.128 + - domain: cloudfront.net + ipaddress: 54.239.192.129 + - domain: cloudfront.net + ipaddress: 54.239.192.130 + - domain: cloudfront.net + ipaddress: 54.239.192.131 + - domain: cloudfront.net + ipaddress: 54.239.192.132 + - domain: cloudfront.net + ipaddress: 54.239.192.133 + - domain: cloudfront.net + ipaddress: 54.239.192.134 + - domain: cloudfront.net + ipaddress: 54.239.192.136 + - domain: cloudfront.net + ipaddress: 54.239.192.137 + - domain: cloudfront.net + ipaddress: 54.239.192.139 + - domain: cloudfront.net + ipaddress: 54.239.192.140 + - domain: cloudfront.net + ipaddress: 54.239.192.141 + - domain: cloudfront.net + ipaddress: 54.239.192.142 + - domain: cloudfront.net + ipaddress: 54.239.192.143 + - domain: cloudfront.net + ipaddress: 54.239.192.144 + - domain: cloudfront.net + ipaddress: 54.239.192.145 + - domain: cloudfront.net + ipaddress: 54.239.192.146 + - domain: cloudfront.net + ipaddress: 54.239.192.147 + - domain: cloudfront.net + ipaddress: 54.239.192.148 + - domain: cloudfront.net + ipaddress: 54.239.192.149 + - domain: cloudfront.net + ipaddress: 54.239.192.150 + - domain: cloudfront.net + ipaddress: 54.239.192.151 + - domain: cloudfront.net + ipaddress: 54.239.192.152 + - domain: cloudfront.net + ipaddress: 54.239.192.153 + - domain: cloudfront.net + ipaddress: 54.239.192.154 + - domain: cloudfront.net + ipaddress: 54.239.192.155 + - domain: cloudfront.net + ipaddress: 54.239.192.156 + - domain: cloudfront.net + ipaddress: 54.239.192.157 + - domain: cloudfront.net + ipaddress: 54.239.192.158 + - domain: cloudfront.net + ipaddress: 54.239.192.159 + - domain: cloudfront.net + ipaddress: 54.239.192.160 + - domain: cloudfront.net + ipaddress: 54.239.192.162 + - domain: cloudfront.net + ipaddress: 54.239.192.163 + - domain: cloudfront.net + ipaddress: 54.239.192.164 + - domain: cloudfront.net + ipaddress: 54.239.192.165 + - domain: cloudfront.net + ipaddress: 54.239.192.166 + - domain: cloudfront.net + ipaddress: 54.239.192.167 + - domain: cloudfront.net + ipaddress: 54.239.192.168 + - domain: cloudfront.net + ipaddress: 54.239.192.169 + - domain: cloudfront.net + ipaddress: 54.239.192.170 + - domain: cloudfront.net + ipaddress: 54.239.192.171 + - domain: cloudfront.net + ipaddress: 54.239.192.172 + - domain: cloudfront.net + ipaddress: 54.239.192.173 + - domain: cloudfront.net + ipaddress: 54.239.192.174 + - domain: cloudfront.net + ipaddress: 54.239.192.175 + - domain: cloudfront.net + ipaddress: 54.239.192.176 + - domain: cloudfront.net + ipaddress: 54.239.192.177 + - domain: cloudfront.net + ipaddress: 54.239.192.178 + - domain: cloudfront.net + ipaddress: 54.239.192.179 + - domain: cloudfront.net + ipaddress: 54.239.192.180 + - domain: cloudfront.net + ipaddress: 54.239.192.181 + - domain: cloudfront.net + ipaddress: 54.239.192.182 + - domain: cloudfront.net + ipaddress: 54.239.192.183 + - domain: cloudfront.net + ipaddress: 54.239.192.184 + - domain: cloudfront.net + ipaddress: 54.239.192.185 + - domain: cloudfront.net + ipaddress: 54.239.192.186 + - domain: cloudfront.net + ipaddress: 54.239.192.187 + - domain: cloudfront.net + ipaddress: 54.239.192.188 + - domain: cloudfront.net + ipaddress: 54.239.192.189 + - domain: cloudfront.net + ipaddress: 54.239.192.190 + - domain: cloudfront.net + ipaddress: 54.239.192.191 + - domain: cloudfront.net + ipaddress: 54.239.192.192 + - domain: cloudfront.net + ipaddress: 54.239.192.193 + - domain: cloudfront.net + ipaddress: 54.239.192.194 + - domain: cloudfront.net + ipaddress: 54.239.192.195 + - domain: cloudfront.net + ipaddress: 54.239.192.196 + - domain: cloudfront.net + ipaddress: 54.239.192.197 + - domain: cloudfront.net + ipaddress: 54.239.192.200 + - domain: cloudfront.net + ipaddress: 54.239.192.201 + - domain: cloudfront.net + ipaddress: 54.239.192.202 + - domain: cloudfront.net + ipaddress: 54.239.192.203 + - domain: cloudfront.net + ipaddress: 54.239.192.204 + - domain: cloudfront.net + ipaddress: 54.239.192.205 + - domain: cloudfront.net + ipaddress: 54.239.192.206 + - domain: cloudfront.net + ipaddress: 54.239.192.207 + - domain: cloudfront.net + ipaddress: 54.239.192.208 + - domain: cloudfront.net + ipaddress: 54.239.192.209 + - domain: cloudfront.net + ipaddress: 54.239.192.210 + - domain: cloudfront.net + ipaddress: 54.239.192.211 + - domain: cloudfront.net + ipaddress: 54.239.192.212 + - domain: cloudfront.net + ipaddress: 54.239.192.213 + - domain: cloudfront.net + ipaddress: 54.239.192.214 + - domain: cloudfront.net + ipaddress: 54.239.192.215 + - domain: cloudfront.net + ipaddress: 54.239.192.216 + - domain: cloudfront.net + ipaddress: 54.239.192.217 + - domain: cloudfront.net + ipaddress: 54.239.192.218 + - domain: cloudfront.net + ipaddress: 54.239.192.219 + - domain: cloudfront.net + ipaddress: 54.239.192.220 + - domain: cloudfront.net + ipaddress: 54.239.192.221 + - domain: cloudfront.net + ipaddress: 54.239.192.222 + - domain: cloudfront.net + ipaddress: 54.239.192.223 + - domain: cloudfront.net + ipaddress: 54.239.192.224 + - domain: cloudfront.net + ipaddress: 54.239.192.225 + - domain: cloudfront.net + ipaddress: 54.239.192.226 + - domain: cloudfront.net + ipaddress: 54.239.192.227 + - domain: cloudfront.net + ipaddress: 54.239.192.228 + - domain: cloudfront.net + ipaddress: 54.239.192.229 + - domain: cloudfront.net + ipaddress: 54.239.192.230 + - domain: cloudfront.net + ipaddress: 54.239.192.232 + - domain: cloudfront.net + ipaddress: 54.239.192.233 + - domain: cloudfront.net + ipaddress: 54.239.192.234 + - domain: cloudfront.net + ipaddress: 54.239.192.235 + - domain: cloudfront.net + ipaddress: 54.239.192.236 + - domain: cloudfront.net + ipaddress: 54.239.192.237 + - domain: cloudfront.net + ipaddress: 54.239.192.238 + - domain: cloudfront.net + ipaddress: 54.239.192.239 + - domain: cloudfront.net + ipaddress: 54.239.192.240 + - domain: cloudfront.net + ipaddress: 54.239.192.241 + - domain: cloudfront.net + ipaddress: 54.239.192.242 + - domain: cloudfront.net + ipaddress: 54.239.192.243 + - domain: cloudfront.net + ipaddress: 54.239.192.244 + - domain: cloudfront.net + ipaddress: 54.239.192.245 + - domain: cloudfront.net + ipaddress: 54.239.192.246 + - domain: cloudfront.net + ipaddress: 54.239.192.247 + - domain: cloudfront.net + ipaddress: 54.239.192.248 + - domain: cloudfront.net + ipaddress: 54.239.192.249 + - domain: cloudfront.net + ipaddress: 54.239.192.250 + - domain: cloudfront.net + ipaddress: 54.239.192.251 + - domain: cloudfront.net + ipaddress: 54.239.192.252 + - domain: cloudfront.net + ipaddress: 54.239.192.253 + - domain: cloudfront.net + ipaddress: 54.239.192.254 + - domain: cloudfront.net + ipaddress: 54.240.129.2 + - domain: cloudfront.net + ipaddress: 54.240.129.3 + - domain: cloudfront.net + ipaddress: 54.240.129.4 + - domain: cloudfront.net + ipaddress: 54.240.129.5 + - domain: cloudfront.net + ipaddress: 54.240.129.6 + - domain: cloudfront.net + ipaddress: 54.240.129.7 + - domain: cloudfront.net + ipaddress: 54.240.129.8 + - domain: cloudfront.net + ipaddress: 54.240.129.9 + - domain: cloudfront.net + ipaddress: 54.240.129.10 + - domain: cloudfront.net + ipaddress: 54.240.129.11 + - domain: cloudfront.net + ipaddress: 54.240.129.12 + - domain: cloudfront.net + ipaddress: 54.240.129.13 + - domain: cloudfront.net + ipaddress: 54.240.129.14 + - domain: cloudfront.net + ipaddress: 54.240.129.15 + - domain: cloudfront.net + ipaddress: 54.240.129.16 + - domain: cloudfront.net + ipaddress: 54.240.129.17 + - domain: cloudfront.net + ipaddress: 54.240.129.18 + - domain: cloudfront.net + ipaddress: 54.240.129.19 + - domain: cloudfront.net + ipaddress: 54.240.129.20 + - domain: cloudfront.net + ipaddress: 54.240.129.21 + - domain: cloudfront.net + ipaddress: 54.240.129.22 + - domain: cloudfront.net + ipaddress: 54.240.129.23 + - domain: cloudfront.net + ipaddress: 54.240.129.24 + - domain: cloudfront.net + ipaddress: 54.240.129.25 + - domain: cloudfront.net + ipaddress: 54.240.129.26 + - domain: cloudfront.net + ipaddress: 54.240.129.27 + - domain: cloudfront.net + ipaddress: 54.240.129.28 + - domain: cloudfront.net + ipaddress: 54.240.129.29 + - domain: cloudfront.net + ipaddress: 54.240.129.30 + - domain: cloudfront.net + ipaddress: 54.240.129.31 + - domain: cloudfront.net + ipaddress: 54.240.129.32 + - domain: cloudfront.net + ipaddress: 54.240.129.33 + - domain: cloudfront.net + ipaddress: 54.240.129.34 + - domain: cloudfront.net + ipaddress: 54.240.129.35 + - domain: cloudfront.net + ipaddress: 54.240.129.36 + - domain: cloudfront.net + ipaddress: 54.240.129.37 + - domain: cloudfront.net + ipaddress: 54.240.129.38 + - domain: cloudfront.net + ipaddress: 54.240.129.39 + - domain: cloudfront.net + ipaddress: 54.240.129.40 + - domain: cloudfront.net + ipaddress: 54.240.129.41 + - domain: cloudfront.net + ipaddress: 54.240.129.42 + - domain: cloudfront.net + ipaddress: 54.240.129.43 + - domain: cloudfront.net + ipaddress: 54.240.129.44 + - domain: cloudfront.net + ipaddress: 54.240.129.45 + - domain: cloudfront.net + ipaddress: 54.240.129.46 + - domain: cloudfront.net + ipaddress: 54.240.129.47 + - domain: cloudfront.net + ipaddress: 54.240.129.48 + - domain: cloudfront.net + ipaddress: 54.240.129.49 + - domain: cloudfront.net + ipaddress: 54.240.129.50 + - domain: cloudfront.net + ipaddress: 54.240.129.51 + - domain: cloudfront.net + ipaddress: 54.240.129.52 + - domain: cloudfront.net + ipaddress: 54.240.129.53 + - domain: cloudfront.net + ipaddress: 54.240.129.54 + - domain: cloudfront.net + ipaddress: 54.240.129.55 + - domain: cloudfront.net + ipaddress: 54.240.129.56 + - domain: cloudfront.net + ipaddress: 54.240.129.57 + - domain: cloudfront.net + ipaddress: 54.240.129.58 + - domain: cloudfront.net + ipaddress: 54.240.129.59 + - domain: cloudfront.net + ipaddress: 54.240.129.60 + - domain: cloudfront.net + ipaddress: 54.240.129.61 + - domain: cloudfront.net + ipaddress: 54.240.129.62 + - domain: cloudfront.net + ipaddress: 54.240.129.63 + - domain: cloudfront.net + ipaddress: 54.240.129.64 + - domain: cloudfront.net + ipaddress: 54.240.129.65 + - domain: cloudfront.net + ipaddress: 54.240.129.66 + - domain: cloudfront.net + ipaddress: 54.240.129.67 + - domain: cloudfront.net + ipaddress: 54.240.129.68 + - domain: cloudfront.net + ipaddress: 54.240.129.69 + - domain: cloudfront.net + ipaddress: 54.240.129.70 + - domain: cloudfront.net + ipaddress: 54.240.129.71 + - domain: cloudfront.net + ipaddress: 54.240.129.72 + - domain: cloudfront.net + ipaddress: 54.240.129.73 + - domain: cloudfront.net + ipaddress: 54.240.129.74 + - domain: cloudfront.net + ipaddress: 54.240.129.75 + - domain: cloudfront.net + ipaddress: 54.240.129.76 + - domain: cloudfront.net + ipaddress: 54.240.129.77 + - domain: cloudfront.net + ipaddress: 54.240.129.78 + - domain: cloudfront.net + ipaddress: 54.240.129.79 + - domain: cloudfront.net + ipaddress: 54.240.129.80 + - domain: cloudfront.net + ipaddress: 54.240.129.81 + - domain: cloudfront.net + ipaddress: 54.240.129.82 + - domain: cloudfront.net + ipaddress: 54.240.129.83 + - domain: cloudfront.net + ipaddress: 54.240.129.84 + - domain: cloudfront.net + ipaddress: 54.240.129.85 + - domain: cloudfront.net + ipaddress: 54.240.129.86 + - domain: cloudfront.net + ipaddress: 54.240.129.87 + - domain: cloudfront.net + ipaddress: 54.240.129.88 + - domain: cloudfront.net + ipaddress: 54.240.129.89 + - domain: cloudfront.net + ipaddress: 54.240.129.90 + - domain: cloudfront.net + ipaddress: 54.240.129.91 + - domain: cloudfront.net + ipaddress: 54.240.129.92 + - domain: cloudfront.net + ipaddress: 54.240.129.93 + - domain: cloudfront.net + ipaddress: 54.240.129.94 + - domain: cloudfront.net + ipaddress: 54.240.129.95 + - domain: cloudfront.net + ipaddress: 54.240.129.96 + - domain: cloudfront.net + ipaddress: 54.240.129.97 + - domain: cloudfront.net + ipaddress: 54.240.129.98 + - domain: cloudfront.net + ipaddress: 54.240.129.99 + - domain: cloudfront.net + ipaddress: 54.240.129.100 + - domain: cloudfront.net + ipaddress: 54.240.129.101 + - domain: cloudfront.net + ipaddress: 54.240.129.102 + - domain: cloudfront.net + ipaddress: 54.240.129.103 + - domain: cloudfront.net + ipaddress: 54.240.129.104 + - domain: cloudfront.net + ipaddress: 54.240.129.105 + - domain: cloudfront.net + ipaddress: 54.240.129.106 + - domain: cloudfront.net + ipaddress: 54.240.129.107 + - domain: cloudfront.net + ipaddress: 54.240.129.108 + - domain: cloudfront.net + ipaddress: 54.240.129.109 + - domain: cloudfront.net + ipaddress: 54.240.129.110 + - domain: cloudfront.net + ipaddress: 54.240.129.111 + - domain: cloudfront.net + ipaddress: 54.240.129.112 + - domain: cloudfront.net + ipaddress: 54.240.129.113 + - domain: cloudfront.net + ipaddress: 54.240.129.114 + - domain: cloudfront.net + ipaddress: 54.240.129.115 + - domain: cloudfront.net + ipaddress: 54.240.129.116 + - domain: cloudfront.net + ipaddress: 54.240.129.117 + - domain: cloudfront.net + ipaddress: 54.240.129.118 + - domain: cloudfront.net + ipaddress: 54.240.129.119 + - domain: cloudfront.net + ipaddress: 54.240.129.120 + - domain: cloudfront.net + ipaddress: 54.240.129.121 + - domain: cloudfront.net + ipaddress: 54.240.129.122 + - domain: cloudfront.net + ipaddress: 54.240.129.123 + - domain: cloudfront.net + ipaddress: 54.240.129.124 + - domain: cloudfront.net + ipaddress: 54.240.129.125 + - domain: cloudfront.net + ipaddress: 54.240.129.126 + - domain: cloudfront.net + ipaddress: 54.240.129.127 + - domain: cloudfront.net + ipaddress: 54.240.129.128 + - domain: cloudfront.net + ipaddress: 54.240.129.129 + - domain: cloudfront.net + ipaddress: 54.240.129.130 + - domain: cloudfront.net + ipaddress: 54.240.129.133 + - domain: cloudfront.net + ipaddress: 54.240.129.134 + - domain: cloudfront.net + ipaddress: 54.240.129.135 + - domain: cloudfront.net + ipaddress: 54.240.129.136 + - domain: cloudfront.net + ipaddress: 54.240.129.137 + - domain: cloudfront.net + ipaddress: 54.240.129.138 + - domain: cloudfront.net + ipaddress: 54.240.129.139 + - domain: cloudfront.net + ipaddress: 54.240.129.140 + - domain: cloudfront.net + ipaddress: 54.240.129.141 + - domain: cloudfront.net + ipaddress: 54.240.129.142 + - domain: cloudfront.net + ipaddress: 54.240.129.143 + - domain: cloudfront.net + ipaddress: 54.240.129.144 + - domain: cloudfront.net + ipaddress: 54.240.129.145 + - domain: cloudfront.net + ipaddress: 54.240.129.146 + - domain: cloudfront.net + ipaddress: 54.240.129.147 + - domain: cloudfront.net + ipaddress: 54.240.129.148 + - domain: cloudfront.net + ipaddress: 54.240.129.149 + - domain: cloudfront.net + ipaddress: 54.240.129.150 + - domain: cloudfront.net + ipaddress: 54.240.129.151 + - domain: cloudfront.net + ipaddress: 54.240.129.152 + - domain: cloudfront.net + ipaddress: 54.240.129.153 + - domain: cloudfront.net + ipaddress: 54.240.129.154 + - domain: cloudfront.net + ipaddress: 54.240.129.155 + - domain: cloudfront.net + ipaddress: 54.240.129.156 + - domain: cloudfront.net + ipaddress: 54.240.129.157 + - domain: cloudfront.net + ipaddress: 54.240.129.158 + - domain: cloudfront.net + ipaddress: 54.240.129.159 + - domain: cloudfront.net + ipaddress: 54.240.129.160 + - domain: cloudfront.net + ipaddress: 54.240.129.161 + - domain: cloudfront.net + ipaddress: 54.240.129.162 + - domain: cloudfront.net + ipaddress: 54.240.129.163 + - domain: cloudfront.net + ipaddress: 54.240.129.164 + - domain: cloudfront.net + ipaddress: 54.240.129.165 + - domain: cloudfront.net + ipaddress: 54.240.129.166 + - domain: cloudfront.net + ipaddress: 54.240.129.167 + - domain: cloudfront.net + ipaddress: 54.240.129.168 + - domain: cloudfront.net + ipaddress: 54.240.129.169 + - domain: cloudfront.net + ipaddress: 54.240.129.170 + - domain: cloudfront.net + ipaddress: 54.240.129.171 + - domain: cloudfront.net + ipaddress: 54.240.129.172 + - domain: cloudfront.net + ipaddress: 54.240.129.173 + - domain: cloudfront.net + ipaddress: 54.240.129.174 + - domain: cloudfront.net + ipaddress: 54.240.129.175 + - domain: cloudfront.net + ipaddress: 54.240.129.176 + - domain: cloudfront.net + ipaddress: 54.240.129.177 + - domain: cloudfront.net + ipaddress: 54.240.129.178 + - domain: cloudfront.net + ipaddress: 54.240.129.179 + - domain: cloudfront.net + ipaddress: 54.240.129.180 + - domain: cloudfront.net + ipaddress: 54.240.129.181 + - domain: cloudfront.net + ipaddress: 54.240.129.182 + - domain: cloudfront.net + ipaddress: 54.240.129.183 + - domain: cloudfront.net + ipaddress: 54.240.129.184 + - domain: cloudfront.net + ipaddress: 54.240.129.185 + - domain: cloudfront.net + ipaddress: 54.240.129.186 + - domain: cloudfront.net + ipaddress: 54.240.129.187 + - domain: cloudfront.net + ipaddress: 54.240.129.188 + - domain: cloudfront.net + ipaddress: 54.240.129.189 + - domain: cloudfront.net + ipaddress: 54.240.129.190 + - domain: cloudfront.net + ipaddress: 54.240.129.191 + - domain: cloudfront.net + ipaddress: 54.240.129.192 + - domain: cloudfront.net + ipaddress: 54.240.129.193 + - domain: cloudfront.net + ipaddress: 54.240.129.194 + - domain: cloudfront.net + ipaddress: 54.240.129.195 + - domain: cloudfront.net + ipaddress: 54.240.129.196 + - domain: cloudfront.net + ipaddress: 54.240.129.197 + - domain: cloudfront.net + ipaddress: 54.240.129.198 + - domain: cloudfront.net + ipaddress: 54.240.129.199 + - domain: cloudfront.net + ipaddress: 54.240.129.200 + - domain: cloudfront.net + ipaddress: 54.240.129.201 + - domain: cloudfront.net + ipaddress: 54.240.129.202 + - domain: cloudfront.net + ipaddress: 54.240.129.203 + - domain: cloudfront.net + ipaddress: 54.240.129.204 + - domain: cloudfront.net + ipaddress: 54.240.129.205 + - domain: cloudfront.net + ipaddress: 54.240.129.206 + - domain: cloudfront.net + ipaddress: 54.240.129.207 + - domain: cloudfront.net + ipaddress: 54.240.129.208 + - domain: cloudfront.net + ipaddress: 54.240.129.209 + - domain: cloudfront.net + ipaddress: 54.240.129.210 + - domain: cloudfront.net + ipaddress: 54.240.129.211 + - domain: cloudfront.net + ipaddress: 54.240.129.212 + - domain: cloudfront.net + ipaddress: 54.240.129.213 + - domain: cloudfront.net + ipaddress: 54.240.129.214 + - domain: cloudfront.net + ipaddress: 54.240.129.215 + - domain: cloudfront.net + ipaddress: 54.240.129.216 + - domain: cloudfront.net + ipaddress: 54.240.129.217 + - domain: cloudfront.net + ipaddress: 54.240.129.218 + - domain: cloudfront.net + ipaddress: 54.240.129.219 + - domain: cloudfront.net + ipaddress: 54.240.129.220 + - domain: cloudfront.net + ipaddress: 54.240.129.221 + - domain: cloudfront.net + ipaddress: 54.240.129.222 + - domain: cloudfront.net + ipaddress: 54.240.129.223 + - domain: cloudfront.net + ipaddress: 54.240.129.224 + - domain: cloudfront.net + ipaddress: 54.240.129.225 + - domain: cloudfront.net + ipaddress: 54.240.129.226 + - domain: cloudfront.net + ipaddress: 54.240.129.227 + - domain: cloudfront.net + ipaddress: 54.240.129.228 + - domain: cloudfront.net + ipaddress: 54.240.129.229 + - domain: cloudfront.net + ipaddress: 54.240.129.230 + - domain: cloudfront.net + ipaddress: 54.240.129.231 + - domain: cloudfront.net + ipaddress: 54.240.129.232 + - domain: cloudfront.net + ipaddress: 54.240.129.233 + - domain: cloudfront.net + ipaddress: 54.240.129.234 + - domain: cloudfront.net + ipaddress: 54.240.129.235 + - domain: cloudfront.net + ipaddress: 54.240.129.236 + - domain: cloudfront.net + ipaddress: 54.240.129.237 + - domain: cloudfront.net + ipaddress: 54.240.129.238 + - domain: cloudfront.net + ipaddress: 54.240.129.239 + - domain: cloudfront.net + ipaddress: 54.240.129.240 + - domain: cloudfront.net + ipaddress: 54.240.129.242 + - domain: cloudfront.net + ipaddress: 54.240.129.241 + - domain: cloudfront.net + ipaddress: 54.240.129.243 + - domain: cloudfront.net + ipaddress: 54.240.129.244 + - domain: cloudfront.net + ipaddress: 54.240.129.245 + - domain: cloudfront.net + ipaddress: 54.240.129.246 + - domain: cloudfront.net + ipaddress: 54.240.129.247 + - domain: cloudfront.net + ipaddress: 54.240.129.248 + - domain: cloudfront.net + ipaddress: 54.240.129.249 + - domain: cloudfront.net + ipaddress: 54.240.129.250 + - domain: cloudfront.net + ipaddress: 54.240.129.251 + - domain: cloudfront.net + ipaddress: 54.240.129.252 + - domain: cloudfront.net + ipaddress: 54.240.129.253 + - domain: cloudfront.net + ipaddress: 54.240.129.254 + - domain: cloudfront.net + ipaddress: 54.240.130.2 + - domain: cloudfront.net + ipaddress: 54.240.130.3 + - domain: cloudfront.net + ipaddress: 54.240.130.4 + - domain: cloudfront.net + ipaddress: 54.240.130.5 + - domain: cloudfront.net + ipaddress: 54.240.130.6 + - domain: cloudfront.net + ipaddress: 54.240.130.7 + - domain: cloudfront.net + ipaddress: 54.240.130.8 + - domain: cloudfront.net + ipaddress: 54.240.130.9 + - domain: cloudfront.net + ipaddress: 54.240.130.10 + - domain: cloudfront.net + ipaddress: 54.240.130.11 + - domain: cloudfront.net + ipaddress: 54.240.130.12 + - domain: cloudfront.net + ipaddress: 54.240.130.13 + - domain: cloudfront.net + ipaddress: 54.240.130.14 + - domain: cloudfront.net + ipaddress: 54.240.130.15 + - domain: cloudfront.net + ipaddress: 54.240.130.16 + - domain: cloudfront.net + ipaddress: 54.240.130.17 + - domain: cloudfront.net + ipaddress: 54.240.130.18 + - domain: cloudfront.net + ipaddress: 54.240.130.19 + - domain: cloudfront.net + ipaddress: 54.240.130.20 + - domain: cloudfront.net + ipaddress: 54.240.130.21 + - domain: cloudfront.net + ipaddress: 54.240.130.22 + - domain: cloudfront.net + ipaddress: 54.240.130.23 + - domain: cloudfront.net + ipaddress: 54.240.130.24 + - domain: cloudfront.net + ipaddress: 54.240.130.25 + - domain: cloudfront.net + ipaddress: 54.240.130.26 + - domain: cloudfront.net + ipaddress: 54.240.130.27 + - domain: cloudfront.net + ipaddress: 54.240.130.28 + - domain: cloudfront.net + ipaddress: 54.240.130.29 + - domain: cloudfront.net + ipaddress: 54.240.130.30 + - domain: cloudfront.net + ipaddress: 54.240.130.31 + - domain: cloudfront.net + ipaddress: 54.240.130.32 + - domain: cloudfront.net + ipaddress: 54.240.130.33 + - domain: cloudfront.net + ipaddress: 54.240.130.34 + - domain: cloudfront.net + ipaddress: 54.240.130.35 + - domain: cloudfront.net + ipaddress: 54.240.130.36 + - domain: cloudfront.net + ipaddress: 54.240.130.37 + - domain: cloudfront.net + ipaddress: 54.240.130.38 + - domain: cloudfront.net + ipaddress: 54.240.130.39 + - domain: cloudfront.net + ipaddress: 54.240.130.40 + - domain: cloudfront.net + ipaddress: 54.240.130.41 + - domain: cloudfront.net + ipaddress: 54.240.130.42 + - domain: cloudfront.net + ipaddress: 54.240.130.43 + - domain: cloudfront.net + ipaddress: 54.240.130.44 + - domain: cloudfront.net + ipaddress: 54.240.130.45 + - domain: cloudfront.net + ipaddress: 54.240.130.46 + - domain: cloudfront.net + ipaddress: 54.240.130.47 + - domain: cloudfront.net + ipaddress: 54.240.130.48 + - domain: cloudfront.net + ipaddress: 54.240.130.49 + - domain: cloudfront.net + ipaddress: 54.240.130.50 + - domain: cloudfront.net + ipaddress: 54.240.130.51 + - domain: cloudfront.net + ipaddress: 54.240.130.52 + - domain: cloudfront.net + ipaddress: 54.240.130.53 + - domain: cloudfront.net + ipaddress: 54.240.130.54 + - domain: cloudfront.net + ipaddress: 54.240.130.55 + - domain: cloudfront.net + ipaddress: 54.240.130.56 + - domain: cloudfront.net + ipaddress: 54.240.130.57 + - domain: cloudfront.net + ipaddress: 54.240.130.58 + - domain: cloudfront.net + ipaddress: 54.240.130.59 + - domain: cloudfront.net + ipaddress: 54.240.130.60 + - domain: cloudfront.net + ipaddress: 54.240.130.61 + - domain: cloudfront.net + ipaddress: 54.240.130.62 + - domain: cloudfront.net + ipaddress: 54.240.130.63 + - domain: cloudfront.net + ipaddress: 54.240.130.64 + - domain: cloudfront.net + ipaddress: 54.240.130.65 + - domain: cloudfront.net + ipaddress: 54.240.130.66 + - domain: cloudfront.net + ipaddress: 54.240.130.67 + - domain: cloudfront.net + ipaddress: 54.240.130.68 + - domain: cloudfront.net + ipaddress: 54.240.130.69 + - domain: cloudfront.net + ipaddress: 54.240.130.70 + - domain: cloudfront.net + ipaddress: 54.240.130.71 + - domain: cloudfront.net + ipaddress: 54.240.130.72 + - domain: cloudfront.net + ipaddress: 54.240.130.73 + - domain: cloudfront.net + ipaddress: 54.240.130.74 + - domain: cloudfront.net + ipaddress: 54.240.130.75 + - domain: cloudfront.net + ipaddress: 54.240.130.76 + - domain: cloudfront.net + ipaddress: 54.240.130.77 + - domain: cloudfront.net + ipaddress: 54.240.130.78 + - domain: cloudfront.net + ipaddress: 54.240.130.79 + - domain: cloudfront.net + ipaddress: 54.240.130.80 + - domain: cloudfront.net + ipaddress: 54.240.130.81 + - domain: cloudfront.net + ipaddress: 54.240.130.82 + - domain: cloudfront.net + ipaddress: 54.240.130.83 + - domain: cloudfront.net + ipaddress: 54.240.130.84 + - domain: cloudfront.net + ipaddress: 54.240.130.85 + - domain: cloudfront.net + ipaddress: 54.240.130.86 + - domain: cloudfront.net + ipaddress: 54.240.130.87 + - domain: cloudfront.net + ipaddress: 54.240.130.88 + - domain: cloudfront.net + ipaddress: 54.240.130.89 + - domain: cloudfront.net + ipaddress: 54.240.130.90 + - domain: cloudfront.net + ipaddress: 54.240.130.91 + - domain: cloudfront.net + ipaddress: 54.240.130.92 + - domain: cloudfront.net + ipaddress: 54.240.130.93 + - domain: cloudfront.net + ipaddress: 54.240.130.94 + - domain: cloudfront.net + ipaddress: 54.240.130.95 + - domain: cloudfront.net + ipaddress: 54.240.130.96 + - domain: cloudfront.net + ipaddress: 54.240.130.97 + - domain: cloudfront.net + ipaddress: 54.240.130.98 + - domain: cloudfront.net + ipaddress: 54.240.130.99 + - domain: cloudfront.net + ipaddress: 54.240.130.100 + - domain: cloudfront.net + ipaddress: 54.240.130.101 + - domain: cloudfront.net + ipaddress: 54.240.130.102 + - domain: cloudfront.net + ipaddress: 54.240.130.103 + - domain: cloudfront.net + ipaddress: 54.240.130.104 + - domain: cloudfront.net + ipaddress: 54.240.130.105 + - domain: cloudfront.net + ipaddress: 54.240.130.106 + - domain: cloudfront.net + ipaddress: 54.240.130.107 + - domain: cloudfront.net + ipaddress: 54.240.130.108 + - domain: cloudfront.net + ipaddress: 54.240.130.109 + - domain: cloudfront.net + ipaddress: 54.240.130.110 + - domain: cloudfront.net + ipaddress: 54.240.130.111 + - domain: cloudfront.net + ipaddress: 54.240.130.112 + - domain: cloudfront.net + ipaddress: 54.240.130.113 + - domain: cloudfront.net + ipaddress: 54.240.130.114 + - domain: cloudfront.net + ipaddress: 54.240.130.115 + - domain: cloudfront.net + ipaddress: 54.240.130.116 + - domain: cloudfront.net + ipaddress: 54.240.130.117 + - domain: cloudfront.net + ipaddress: 54.240.130.118 + - domain: cloudfront.net + ipaddress: 54.240.130.119 + - domain: cloudfront.net + ipaddress: 54.240.130.120 + - domain: cloudfront.net + ipaddress: 54.240.130.121 + - domain: cloudfront.net + ipaddress: 54.240.130.122 + - domain: cloudfront.net + ipaddress: 54.240.130.123 + - domain: cloudfront.net + ipaddress: 54.240.130.125 + - domain: cloudfront.net + ipaddress: 54.240.130.124 + - domain: cloudfront.net + ipaddress: 54.240.130.126 + - domain: cloudfront.net + ipaddress: 54.240.130.127 + - domain: cloudfront.net + ipaddress: 54.240.130.128 + - domain: cloudfront.net + ipaddress: 54.240.130.129 + - domain: cloudfront.net + ipaddress: 54.240.130.130 + - domain: cloudfront.net + ipaddress: 54.240.130.132 + - domain: cloudfront.net + ipaddress: 54.240.130.133 + - domain: cloudfront.net + ipaddress: 54.240.130.135 + - domain: cloudfront.net + ipaddress: 54.240.130.136 + - domain: cloudfront.net + ipaddress: 54.240.130.137 + - domain: cloudfront.net + ipaddress: 54.240.130.138 + - domain: cloudfront.net + ipaddress: 54.240.130.139 + - domain: cloudfront.net + ipaddress: 54.240.130.140 + - domain: cloudfront.net + ipaddress: 54.240.130.141 + - domain: cloudfront.net + ipaddress: 54.240.130.142 + - domain: cloudfront.net + ipaddress: 54.240.130.143 + - domain: cloudfront.net + ipaddress: 54.240.130.144 + - domain: cloudfront.net + ipaddress: 54.240.130.145 + - domain: cloudfront.net + ipaddress: 54.240.130.146 + - domain: cloudfront.net + ipaddress: 54.240.130.147 + - domain: cloudfront.net + ipaddress: 54.240.130.148 + - domain: cloudfront.net + ipaddress: 54.240.130.149 + - domain: cloudfront.net + ipaddress: 54.240.130.150 + - domain: cloudfront.net + ipaddress: 54.240.130.151 + - domain: cloudfront.net + ipaddress: 54.240.130.152 + - domain: cloudfront.net + ipaddress: 54.240.130.153 + - domain: cloudfront.net + ipaddress: 54.240.130.154 + - domain: cloudfront.net + ipaddress: 54.240.130.155 + - domain: cloudfront.net + ipaddress: 54.240.130.156 + - domain: cloudfront.net + ipaddress: 54.240.130.157 + - domain: cloudfront.net + ipaddress: 54.240.130.158 + - domain: cloudfront.net + ipaddress: 54.240.130.159 + - domain: cloudfront.net + ipaddress: 54.240.130.160 + - domain: cloudfront.net + ipaddress: 54.240.130.161 + - domain: cloudfront.net + ipaddress: 54.240.130.162 + - domain: cloudfront.net + ipaddress: 54.240.130.163 + - domain: cloudfront.net + ipaddress: 54.240.130.164 + - domain: cloudfront.net + ipaddress: 54.240.130.165 + - domain: cloudfront.net + ipaddress: 54.240.130.166 + - domain: cloudfront.net + ipaddress: 54.240.130.167 + - domain: cloudfront.net + ipaddress: 54.240.130.168 + - domain: cloudfront.net + ipaddress: 54.240.130.169 + - domain: cloudfront.net + ipaddress: 54.240.130.170 + - domain: cloudfront.net + ipaddress: 54.240.130.171 + - domain: cloudfront.net + ipaddress: 54.240.130.172 + - domain: cloudfront.net + ipaddress: 54.240.130.173 + - domain: cloudfront.net + ipaddress: 54.240.130.174 + - domain: cloudfront.net + ipaddress: 54.240.130.175 + - domain: cloudfront.net + ipaddress: 54.240.130.176 + - domain: cloudfront.net + ipaddress: 54.240.130.177 + - domain: cloudfront.net + ipaddress: 54.240.130.178 + - domain: cloudfront.net + ipaddress: 54.240.130.179 + - domain: cloudfront.net + ipaddress: 54.240.130.180 + - domain: cloudfront.net + ipaddress: 54.240.130.181 + - domain: cloudfront.net + ipaddress: 54.240.130.182 + - domain: cloudfront.net + ipaddress: 54.240.130.183 + - domain: cloudfront.net + ipaddress: 54.240.130.184 + - domain: cloudfront.net + ipaddress: 54.240.130.185 + - domain: cloudfront.net + ipaddress: 54.240.130.186 + - domain: cloudfront.net + ipaddress: 54.240.130.187 + - domain: cloudfront.net + ipaddress: 54.240.130.188 + - domain: cloudfront.net + ipaddress: 54.240.130.189 + - domain: cloudfront.net + ipaddress: 54.240.130.190 + - domain: cloudfront.net + ipaddress: 54.240.130.191 + - domain: cloudfront.net + ipaddress: 54.240.130.192 + - domain: cloudfront.net + ipaddress: 54.240.130.193 + - domain: cloudfront.net + ipaddress: 54.240.130.194 + - domain: cloudfront.net + ipaddress: 54.240.130.195 + - domain: cloudfront.net + ipaddress: 54.240.130.196 + - domain: cloudfront.net + ipaddress: 54.240.130.197 + - domain: cloudfront.net + ipaddress: 54.240.130.198 + - domain: cloudfront.net + ipaddress: 54.240.130.199 + - domain: cloudfront.net + ipaddress: 54.240.130.200 + - domain: cloudfront.net + ipaddress: 54.240.130.201 + - domain: cloudfront.net + ipaddress: 54.240.130.202 + - domain: cloudfront.net + ipaddress: 54.240.130.203 + - domain: cloudfront.net + ipaddress: 54.240.130.204 + - domain: cloudfront.net + ipaddress: 54.240.130.205 + - domain: cloudfront.net + ipaddress: 54.240.130.206 + - domain: cloudfront.net + ipaddress: 54.240.130.207 + - domain: cloudfront.net + ipaddress: 54.240.130.208 + - domain: cloudfront.net + ipaddress: 54.240.130.209 + - domain: cloudfront.net + ipaddress: 54.240.130.210 + - domain: cloudfront.net + ipaddress: 54.240.130.211 + - domain: cloudfront.net + ipaddress: 54.240.130.212 + - domain: cloudfront.net + ipaddress: 54.240.130.213 + - domain: cloudfront.net + ipaddress: 54.240.130.214 + - domain: cloudfront.net + ipaddress: 54.240.130.215 + - domain: cloudfront.net + ipaddress: 54.240.130.216 + - domain: cloudfront.net + ipaddress: 54.240.130.217 + - domain: cloudfront.net + ipaddress: 54.240.130.218 + - domain: cloudfront.net + ipaddress: 54.240.130.219 + - domain: cloudfront.net + ipaddress: 54.240.130.220 + - domain: cloudfront.net + ipaddress: 54.240.130.221 + - domain: cloudfront.net + ipaddress: 54.240.130.222 + - domain: cloudfront.net + ipaddress: 54.240.130.223 + - domain: cloudfront.net + ipaddress: 54.240.130.224 + - domain: cloudfront.net + ipaddress: 54.240.130.225 + - domain: cloudfront.net + ipaddress: 54.240.130.226 + - domain: cloudfront.net + ipaddress: 54.240.130.227 + - domain: cloudfront.net + ipaddress: 54.240.130.228 + - domain: cloudfront.net + ipaddress: 54.240.130.229 + - domain: cloudfront.net + ipaddress: 54.240.130.230 + - domain: cloudfront.net + ipaddress: 54.240.130.231 + - domain: cloudfront.net + ipaddress: 54.240.130.232 + - domain: cloudfront.net + ipaddress: 54.240.130.233 + - domain: cloudfront.net + ipaddress: 54.240.130.234 + - domain: cloudfront.net + ipaddress: 54.240.130.235 + - domain: cloudfront.net + ipaddress: 54.240.130.236 + - domain: cloudfront.net + ipaddress: 54.240.130.237 + - domain: cloudfront.net + ipaddress: 54.240.130.238 + - domain: cloudfront.net + ipaddress: 54.240.130.239 + - domain: cloudfront.net + ipaddress: 54.240.130.240 + - domain: cloudfront.net + ipaddress: 54.240.130.241 + - domain: cloudfront.net + ipaddress: 54.240.130.242 + - domain: cloudfront.net + ipaddress: 54.240.130.243 + - domain: cloudfront.net + ipaddress: 54.240.130.244 + - domain: cloudfront.net + ipaddress: 54.240.130.245 + - domain: cloudfront.net + ipaddress: 54.240.130.246 + - domain: cloudfront.net + ipaddress: 54.240.130.247 + - domain: cloudfront.net + ipaddress: 54.192.3.4 + - domain: cloudfront.net + ipaddress: 54.240.130.248 + - domain: cloudfront.net + ipaddress: 54.240.130.249 + - domain: cloudfront.net + ipaddress: 54.192.3.5 + - domain: cloudfront.net + ipaddress: 54.192.3.6 + - domain: cloudfront.net + ipaddress: 54.192.3.7 + - domain: cloudfront.net + ipaddress: 54.192.3.8 + - domain: cloudfront.net + ipaddress: 54.240.130.250 + - domain: cloudfront.net + ipaddress: 54.192.3.9 + - domain: cloudfront.net + ipaddress: 54.240.130.251 + - domain: cloudfront.net + ipaddress: 54.192.3.10 + - domain: cloudfront.net + ipaddress: 54.240.130.252 + - domain: cloudfront.net + ipaddress: 54.192.3.11 + - domain: cloudfront.net + ipaddress: 54.240.130.253 + - domain: cloudfront.net + ipaddress: 54.192.3.12 + - domain: cloudfront.net + ipaddress: 54.240.130.254 + - domain: cloudfront.net + ipaddress: 54.192.3.13 + - domain: cloudfront.net + ipaddress: 54.192.3.14 + - domain: cloudfront.net + ipaddress: 54.192.3.15 + - domain: cloudfront.net + ipaddress: 54.192.3.16 + - domain: cloudfront.net + ipaddress: 54.192.3.17 + - domain: cloudfront.net + ipaddress: 54.192.3.18 + - domain: cloudfront.net + ipaddress: 54.240.131.2 + - domain: cloudfront.net + ipaddress: 54.240.131.3 + - domain: cloudfront.net + ipaddress: 54.192.3.19 + - domain: cloudfront.net + ipaddress: 54.240.131.4 + - domain: cloudfront.net + ipaddress: 54.240.131.5 + - domain: cloudfront.net + ipaddress: 54.192.3.20 + - domain: cloudfront.net + ipaddress: 54.240.131.6 + - domain: cloudfront.net + ipaddress: 54.192.3.21 + - domain: cloudfront.net + ipaddress: 54.240.131.7 + - domain: cloudfront.net + ipaddress: 54.192.3.23 + - domain: cloudfront.net + ipaddress: 54.240.131.8 + - domain: cloudfront.net + ipaddress: 54.240.131.9 + - domain: cloudfront.net + ipaddress: 54.192.3.25 + - domain: cloudfront.net + ipaddress: 54.240.131.10 + - domain: cloudfront.net + ipaddress: 54.192.3.26 + - domain: cloudfront.net + ipaddress: 54.240.131.11 + - domain: cloudfront.net + ipaddress: 54.240.131.12 + - domain: cloudfront.net + ipaddress: 54.192.3.27 + - domain: cloudfront.net + ipaddress: 54.192.3.28 + - domain: cloudfront.net + ipaddress: 54.240.131.13 + - domain: cloudfront.net + ipaddress: 54.192.3.29 + - domain: cloudfront.net + ipaddress: 54.192.3.22 + - domain: cloudfront.net + ipaddress: 54.192.3.30 + - domain: cloudfront.net + ipaddress: 54.192.3.31 + - domain: cloudfront.net + ipaddress: 54.240.131.14 + - domain: cloudfront.net + ipaddress: 54.240.131.15 + - domain: cloudfront.net + ipaddress: 54.240.131.16 + - domain: cloudfront.net + ipaddress: 54.192.3.34 + - domain: cloudfront.net + ipaddress: 54.192.3.35 + - domain: cloudfront.net + ipaddress: 54.240.131.17 + - domain: cloudfront.net + ipaddress: 54.192.3.36 + - domain: cloudfront.net + ipaddress: 54.240.131.18 + - domain: cloudfront.net + ipaddress: 54.240.131.19 + - domain: cloudfront.net + ipaddress: 54.240.131.20 + - domain: cloudfront.net + ipaddress: 54.192.3.37 + - domain: cloudfront.net + ipaddress: 54.192.3.38 + - domain: cloudfront.net + ipaddress: 54.240.131.21 + - domain: cloudfront.net + ipaddress: 54.240.131.22 + - domain: cloudfront.net + ipaddress: 54.192.3.39 + - domain: cloudfront.net + ipaddress: 54.240.131.23 + - domain: cloudfront.net + ipaddress: 54.240.131.24 + - domain: cloudfront.net + ipaddress: 54.192.3.40 + - domain: cloudfront.net + ipaddress: 54.192.3.41 + - domain: cloudfront.net + ipaddress: 54.240.131.25 + - domain: cloudfront.net + ipaddress: 54.240.131.26 + - domain: cloudfront.net + ipaddress: 54.240.131.27 + - domain: cloudfront.net + ipaddress: 54.192.3.43 + - domain: cloudfront.net + ipaddress: 54.192.3.44 + - domain: cloudfront.net + ipaddress: 54.192.3.45 + - domain: cloudfront.net + ipaddress: 54.240.131.28 + - domain: cloudfront.net + ipaddress: 54.240.131.29 + - domain: cloudfront.net + ipaddress: 54.192.3.46 + - domain: cloudfront.net + ipaddress: 54.192.3.47 + - domain: cloudfront.net + ipaddress: 54.240.131.30 + - domain: cloudfront.net + ipaddress: 54.240.131.31 + - domain: cloudfront.net + ipaddress: 54.240.131.32 + - domain: cloudfront.net + ipaddress: 54.240.131.33 + - domain: cloudfront.net + ipaddress: 54.192.3.49 + - domain: cloudfront.net + ipaddress: 54.240.131.34 + - domain: cloudfront.net + ipaddress: 54.192.3.50 + - domain: cloudfront.net + ipaddress: 54.192.3.51 + - domain: cloudfront.net + ipaddress: 54.240.131.35 + - domain: cloudfront.net + ipaddress: 54.192.3.52 + - domain: cloudfront.net + ipaddress: 54.240.131.36 + - domain: cloudfront.net + ipaddress: 54.192.3.53 + - domain: cloudfront.net + ipaddress: 54.240.131.37 + - domain: cloudfront.net + ipaddress: 54.192.3.54 + - domain: cloudfront.net + ipaddress: 54.240.131.38 + - domain: cloudfront.net + ipaddress: 54.240.131.39 + - domain: cloudfront.net + ipaddress: 54.192.3.56 + - domain: cloudfront.net + ipaddress: 54.192.3.57 + - domain: cloudfront.net + ipaddress: 54.240.131.40 + - domain: cloudfront.net + ipaddress: 54.240.131.41 + - domain: cloudfront.net + ipaddress: 54.192.3.58 + - domain: cloudfront.net + ipaddress: 54.240.131.42 + - domain: cloudfront.net + ipaddress: 54.192.3.59 + - domain: cloudfront.net + ipaddress: 54.240.131.43 + - domain: cloudfront.net + ipaddress: 54.192.3.60 + - domain: cloudfront.net + ipaddress: 54.192.3.61 + - domain: cloudfront.net + ipaddress: 54.240.131.44 + - domain: cloudfront.net + ipaddress: 54.192.3.62 + - domain: cloudfront.net + ipaddress: 54.240.131.45 + - domain: cloudfront.net + ipaddress: 54.192.3.63 + - domain: cloudfront.net + ipaddress: 54.192.3.64 + - domain: cloudfront.net + ipaddress: 54.240.131.46 + - domain: cloudfront.net + ipaddress: 54.192.3.65 + - domain: cloudfront.net + ipaddress: 54.240.131.47 + - domain: cloudfront.net + ipaddress: 54.240.131.48 + - domain: cloudfront.net + ipaddress: 54.192.3.66 + - domain: cloudfront.net + ipaddress: 54.240.131.49 + - domain: cloudfront.net + ipaddress: 54.192.3.67 + - domain: cloudfront.net + ipaddress: 54.192.3.68 + - domain: cloudfront.net + ipaddress: 54.240.131.50 + - domain: cloudfront.net + ipaddress: 54.240.131.51 + - domain: cloudfront.net + ipaddress: 54.192.3.69 + - domain: cloudfront.net + ipaddress: 54.240.131.52 + - domain: cloudfront.net + ipaddress: 54.192.3.70 + - domain: cloudfront.net + ipaddress: 54.240.131.53 + - domain: cloudfront.net + ipaddress: 54.240.131.54 + - domain: cloudfront.net + ipaddress: 54.192.3.71 + - domain: cloudfront.net + ipaddress: 54.192.3.72 + - domain: cloudfront.net + ipaddress: 54.192.3.73 + - domain: cloudfront.net + ipaddress: 54.240.131.56 + - domain: cloudfront.net + ipaddress: 54.192.3.74 + - domain: cloudfront.net + ipaddress: 54.240.131.55 + - domain: cloudfront.net + ipaddress: 54.192.3.75 + - domain: cloudfront.net + ipaddress: 54.240.131.57 + - domain: cloudfront.net + ipaddress: 54.192.3.76 + - domain: cloudfront.net + ipaddress: 54.192.3.77 + - domain: cloudfront.net + ipaddress: 54.240.131.58 + - domain: cloudfront.net + ipaddress: 54.192.3.78 + - domain: cloudfront.net + ipaddress: 54.240.131.59 + - domain: cloudfront.net + ipaddress: 54.240.131.60 + - domain: cloudfront.net + ipaddress: 54.192.3.80 + - domain: cloudfront.net + ipaddress: 54.240.131.61 + - domain: cloudfront.net + ipaddress: 54.192.3.79 + - domain: cloudfront.net + ipaddress: 54.192.3.81 + - domain: cloudfront.net + ipaddress: 54.240.131.62 + - domain: cloudfront.net + ipaddress: 54.240.131.63 + - domain: cloudfront.net + ipaddress: 54.192.3.82 + - domain: cloudfront.net + ipaddress: 54.192.3.83 + - domain: cloudfront.net + ipaddress: 54.240.131.64 + - domain: cloudfront.net + ipaddress: 54.240.131.65 + - domain: cloudfront.net + ipaddress: 54.192.3.84 + - domain: cloudfront.net + ipaddress: 54.240.131.66 + - domain: cloudfront.net + ipaddress: 54.192.3.85 + - domain: cloudfront.net + ipaddress: 54.192.3.86 + - domain: cloudfront.net + ipaddress: 54.240.131.67 + - domain: cloudfront.net + ipaddress: 54.192.3.87 + - domain: cloudfront.net + ipaddress: 54.240.131.68 + - domain: cloudfront.net + ipaddress: 54.240.131.70 + - domain: cloudfront.net + ipaddress: 54.240.131.69 + - domain: cloudfront.net + ipaddress: 54.240.131.71 + - domain: cloudfront.net + ipaddress: 54.240.131.72 + - domain: cloudfront.net + ipaddress: 54.192.3.88 + - domain: cloudfront.net + ipaddress: 54.192.3.89 + - domain: cloudfront.net + ipaddress: 54.240.131.73 + - domain: cloudfront.net + ipaddress: 54.192.3.90 + - domain: cloudfront.net + ipaddress: 54.240.131.74 + - domain: cloudfront.net + ipaddress: 54.192.3.91 + - domain: cloudfront.net + ipaddress: 54.192.3.92 + - domain: cloudfront.net + ipaddress: 54.240.131.75 + - domain: cloudfront.net + ipaddress: 54.240.131.76 + - domain: cloudfront.net + ipaddress: 54.192.3.93 + - domain: cloudfront.net + ipaddress: 54.192.3.94 + - domain: cloudfront.net + ipaddress: 54.240.131.77 + - domain: cloudfront.net + ipaddress: 54.192.3.95 + - domain: cloudfront.net + ipaddress: 54.240.131.78 + - domain: cloudfront.net + ipaddress: 54.192.3.97 + - domain: cloudfront.net + ipaddress: 54.240.131.79 + - domain: cloudfront.net + ipaddress: 54.240.131.80 + - domain: cloudfront.net + ipaddress: 54.240.131.81 + - domain: cloudfront.net + ipaddress: 54.192.3.98 + - domain: cloudfront.net + ipaddress: 54.192.3.99 + - domain: cloudfront.net + ipaddress: 54.240.131.82 + - domain: cloudfront.net + ipaddress: 54.192.3.100 + - domain: cloudfront.net + ipaddress: 54.240.131.83 + - domain: cloudfront.net + ipaddress: 54.192.3.101 + - domain: cloudfront.net + ipaddress: 54.240.131.84 + - domain: cloudfront.net + ipaddress: 54.192.3.102 + - domain: cloudfront.net + ipaddress: 54.240.131.85 + - domain: cloudfront.net + ipaddress: 54.192.3.103 + - domain: cloudfront.net + ipaddress: 54.240.131.86 + - domain: cloudfront.net + ipaddress: 54.240.131.87 + - domain: cloudfront.net + ipaddress: 54.192.3.104 + - domain: cloudfront.net + ipaddress: 54.240.131.88 + - domain: cloudfront.net + ipaddress: 54.192.3.105 + - domain: cloudfront.net + ipaddress: 54.192.3.106 + - domain: cloudfront.net + ipaddress: 54.240.131.89 + - domain: cloudfront.net + ipaddress: 54.192.3.107 + - domain: cloudfront.net + ipaddress: 54.240.131.90 + - domain: cloudfront.net + ipaddress: 54.192.3.108 + - domain: cloudfront.net + ipaddress: 54.240.131.91 + - domain: cloudfront.net + ipaddress: 54.240.131.92 + - domain: cloudfront.net + ipaddress: 54.240.131.93 + - domain: cloudfront.net + ipaddress: 54.192.3.110 + - domain: cloudfront.net + ipaddress: 54.240.131.94 + - domain: cloudfront.net + ipaddress: 54.192.3.111 + - domain: cloudfront.net + ipaddress: 54.240.131.95 + - domain: cloudfront.net + ipaddress: 54.240.131.96 + - domain: cloudfront.net + ipaddress: 54.192.3.112 + - domain: cloudfront.net + ipaddress: 54.240.131.97 + - domain: cloudfront.net + ipaddress: 54.192.3.113 + - domain: cloudfront.net + ipaddress: 54.240.131.98 + - domain: cloudfront.net + ipaddress: 54.192.3.114 + - domain: cloudfront.net + ipaddress: 54.240.131.99 + - domain: cloudfront.net + ipaddress: 54.240.131.100 + - domain: cloudfront.net + ipaddress: 54.192.3.116 + - domain: cloudfront.net + ipaddress: 54.240.131.101 + - domain: cloudfront.net + ipaddress: 54.192.3.117 + - domain: cloudfront.net + ipaddress: 54.240.131.102 + - domain: cloudfront.net + ipaddress: 54.240.131.103 + - domain: cloudfront.net + ipaddress: 54.192.3.119 + - domain: cloudfront.net + ipaddress: 54.240.131.104 + - domain: cloudfront.net + ipaddress: 54.240.131.105 + - domain: cloudfront.net + ipaddress: 54.192.3.121 + - domain: cloudfront.net + ipaddress: 54.192.3.123 + - domain: cloudfront.net + ipaddress: 54.240.131.106 + - domain: cloudfront.net + ipaddress: 54.240.131.107 + - domain: cloudfront.net + ipaddress: 54.240.131.108 + - domain: cloudfront.net + ipaddress: 54.192.3.126 + - domain: cloudfront.net + ipaddress: 54.240.131.109 + - domain: cloudfront.net + ipaddress: 54.192.3.127 + - domain: cloudfront.net + ipaddress: 54.240.131.110 + - domain: cloudfront.net + ipaddress: 54.192.3.128 + - domain: cloudfront.net + ipaddress: 54.240.131.111 + - domain: cloudfront.net + ipaddress: 54.192.3.129 + - domain: cloudfront.net + ipaddress: 54.240.131.112 + - domain: cloudfront.net + ipaddress: 54.192.3.130 + - domain: cloudfront.net + ipaddress: 54.240.131.113 + - domain: cloudfront.net + ipaddress: 54.192.3.131 + - domain: cloudfront.net + ipaddress: 54.240.131.114 + - domain: cloudfront.net + ipaddress: 54.192.3.132 + - domain: cloudfront.net + ipaddress: 54.192.3.133 + - domain: cloudfront.net + ipaddress: 54.240.131.115 + - domain: cloudfront.net + ipaddress: 54.240.131.116 + - domain: cloudfront.net + ipaddress: 54.240.131.117 + - domain: cloudfront.net + ipaddress: 54.192.3.135 + - domain: cloudfront.net + ipaddress: 54.240.131.118 + - domain: cloudfront.net + ipaddress: 54.192.3.136 + - domain: cloudfront.net + ipaddress: 54.240.131.119 + - domain: cloudfront.net + ipaddress: 54.192.3.137 + - domain: cloudfront.net + ipaddress: 54.240.131.120 + - domain: cloudfront.net + ipaddress: 54.192.3.138 + - domain: cloudfront.net + ipaddress: 54.240.131.121 + - domain: cloudfront.net + ipaddress: 54.192.3.139 + - domain: cloudfront.net + ipaddress: 54.240.131.122 + - domain: cloudfront.net + ipaddress: 54.240.131.123 + - domain: cloudfront.net + ipaddress: 54.192.3.140 + - domain: cloudfront.net + ipaddress: 54.192.3.141 + - domain: cloudfront.net + ipaddress: 54.240.131.124 + - domain: cloudfront.net + ipaddress: 54.192.3.142 + - domain: cloudfront.net + ipaddress: 54.240.131.125 + - domain: cloudfront.net + ipaddress: 54.192.3.143 + - domain: cloudfront.net + ipaddress: 54.240.131.126 + - domain: cloudfront.net + ipaddress: 54.192.3.144 + - domain: cloudfront.net + ipaddress: 54.240.131.127 + - domain: cloudfront.net + ipaddress: 54.192.3.145 + - domain: cloudfront.net + ipaddress: 54.192.3.146 + - domain: cloudfront.net + ipaddress: 54.240.131.129 + - domain: cloudfront.net + ipaddress: 54.240.131.128 + - domain: cloudfront.net + ipaddress: 54.240.131.130 + - domain: cloudfront.net + ipaddress: 54.192.3.148 + - domain: cloudfront.net + ipaddress: 54.240.131.132 + - domain: cloudfront.net + ipaddress: 54.192.3.149 + - domain: cloudfront.net + ipaddress: 54.240.131.133 + - domain: cloudfront.net + ipaddress: 54.192.3.150 + - domain: cloudfront.net + ipaddress: 54.240.131.134 + - domain: cloudfront.net + ipaddress: 54.192.3.151 + - domain: cloudfront.net + ipaddress: 54.240.131.135 + - domain: cloudfront.net + ipaddress: 54.192.3.152 + - domain: cloudfront.net + ipaddress: 54.240.131.136 + - domain: cloudfront.net + ipaddress: 54.192.3.153 + - domain: cloudfront.net + ipaddress: 54.192.3.154 + - domain: cloudfront.net + ipaddress: 54.192.3.155 + - domain: cloudfront.net + ipaddress: 54.240.131.137 + - domain: cloudfront.net + ipaddress: 54.240.131.138 + - domain: cloudfront.net + ipaddress: 54.240.131.139 + - domain: cloudfront.net + ipaddress: 54.192.3.156 + - domain: cloudfront.net + ipaddress: 54.192.3.157 + - domain: cloudfront.net + ipaddress: 54.240.131.140 + - domain: cloudfront.net + ipaddress: 54.240.131.141 + - domain: cloudfront.net + ipaddress: 54.240.131.142 + - domain: cloudfront.net + ipaddress: 54.192.3.158 + - domain: cloudfront.net + ipaddress: 54.240.131.143 + - domain: cloudfront.net + ipaddress: 54.240.131.144 + - domain: cloudfront.net + ipaddress: 54.192.3.160 + - domain: cloudfront.net + ipaddress: 54.192.3.161 + - domain: cloudfront.net + ipaddress: 54.240.131.145 + - domain: cloudfront.net + ipaddress: 54.240.131.146 + - domain: cloudfront.net + ipaddress: 54.240.131.147 + - domain: cloudfront.net + ipaddress: 54.240.131.148 + - domain: cloudfront.net + ipaddress: 54.240.131.149 + - domain: cloudfront.net + ipaddress: 54.192.3.165 + - domain: cloudfront.net + ipaddress: 54.240.131.150 + - domain: cloudfront.net + ipaddress: 54.192.3.166 + - domain: cloudfront.net + ipaddress: 54.240.131.151 + - domain: cloudfront.net + ipaddress: 54.240.131.152 + - domain: cloudfront.net + ipaddress: 54.192.3.167 + - domain: cloudfront.net + ipaddress: 54.240.131.153 + - domain: cloudfront.net + ipaddress: 54.192.3.168 + - domain: cloudfront.net + ipaddress: 54.192.3.169 + - domain: cloudfront.net + ipaddress: 54.240.131.155 + - domain: cloudfront.net + ipaddress: 54.240.131.154 + - domain: cloudfront.net + ipaddress: 54.192.3.170 + - domain: cloudfront.net + ipaddress: 54.240.131.156 + - domain: cloudfront.net + ipaddress: 54.192.3.171 + - domain: cloudfront.net + ipaddress: 54.240.131.157 + - domain: cloudfront.net + ipaddress: 54.192.3.172 + - domain: cloudfront.net + ipaddress: 54.240.131.158 + - domain: cloudfront.net + ipaddress: 54.192.3.173 + - domain: cloudfront.net + ipaddress: 54.240.131.159 + - domain: cloudfront.net + ipaddress: 54.240.131.160 + - domain: cloudfront.net + ipaddress: 54.192.3.174 + - domain: cloudfront.net + ipaddress: 54.240.131.161 + - domain: cloudfront.net + ipaddress: 54.192.3.175 + - domain: cloudfront.net + ipaddress: 54.192.3.176 + - domain: cloudfront.net + ipaddress: 54.240.131.162 + - domain: cloudfront.net + ipaddress: 54.240.131.163 + - domain: cloudfront.net + ipaddress: 54.192.3.177 + - domain: cloudfront.net + ipaddress: 54.192.3.178 + - domain: cloudfront.net + ipaddress: 54.240.131.164 + - domain: cloudfront.net + ipaddress: 54.192.3.179 + - domain: cloudfront.net + ipaddress: 54.240.131.165 + - domain: cloudfront.net + ipaddress: 54.240.131.166 + - domain: cloudfront.net + ipaddress: 54.192.3.180 + - domain: cloudfront.net + ipaddress: 54.192.3.181 + - domain: cloudfront.net + ipaddress: 54.240.131.167 + - domain: cloudfront.net + ipaddress: 54.240.131.168 + - domain: cloudfront.net + ipaddress: 54.192.3.182 + - domain: cloudfront.net + ipaddress: 54.240.131.169 + - domain: cloudfront.net + ipaddress: 54.192.3.183 + - domain: cloudfront.net + ipaddress: 54.192.3.184 + - domain: cloudfront.net + ipaddress: 54.240.131.170 + - domain: cloudfront.net + ipaddress: 54.240.131.171 + - domain: cloudfront.net + ipaddress: 54.192.3.185 + - domain: cloudfront.net + ipaddress: 54.240.131.172 + - domain: cloudfront.net + ipaddress: 54.192.3.186 + - domain: cloudfront.net + ipaddress: 54.192.3.187 + - domain: cloudfront.net + ipaddress: 54.192.3.188 + - domain: cloudfront.net + ipaddress: 54.240.131.173 + - domain: cloudfront.net + ipaddress: 54.192.3.189 + - domain: cloudfront.net + ipaddress: 54.240.131.174 + - domain: cloudfront.net + ipaddress: 54.192.3.190 + - domain: cloudfront.net + ipaddress: 54.240.131.175 + - domain: cloudfront.net + ipaddress: 54.240.131.176 + - domain: cloudfront.net + ipaddress: 54.192.3.191 + - domain: cloudfront.net + ipaddress: 54.192.3.192 + - domain: cloudfront.net + ipaddress: 54.240.131.177 + - domain: cloudfront.net + ipaddress: 54.192.3.193 + - domain: cloudfront.net + ipaddress: 54.240.131.178 + - domain: cloudfront.net + ipaddress: 54.192.3.194 + - domain: cloudfront.net + ipaddress: 54.240.131.179 + - domain: cloudfront.net + ipaddress: 54.240.131.180 + - domain: cloudfront.net + ipaddress: 54.192.3.195 + - domain: cloudfront.net + ipaddress: 54.192.3.196 + - domain: cloudfront.net + ipaddress: 54.240.131.181 + - domain: cloudfront.net + ipaddress: 54.192.3.197 + - domain: cloudfront.net + ipaddress: 54.240.131.182 + - domain: cloudfront.net + ipaddress: 54.192.3.198 + - domain: cloudfront.net + ipaddress: 54.240.131.183 + - domain: cloudfront.net + ipaddress: 54.240.131.184 + - domain: cloudfront.net + ipaddress: 54.192.3.199 + - domain: cloudfront.net + ipaddress: 54.240.131.185 + - domain: cloudfront.net + ipaddress: 54.192.3.200 + - domain: cloudfront.net + ipaddress: 54.240.131.186 + - domain: cloudfront.net + ipaddress: 54.192.3.202 + - domain: cloudfront.net + ipaddress: 54.240.131.187 + - domain: cloudfront.net + ipaddress: 54.240.131.188 + - domain: cloudfront.net + ipaddress: 54.240.131.189 + - domain: cloudfront.net + ipaddress: 54.192.3.203 + - domain: cloudfront.net + ipaddress: 54.192.3.204 + - domain: cloudfront.net + ipaddress: 54.192.3.205 + - domain: cloudfront.net + ipaddress: 54.240.131.190 + - domain: cloudfront.net + ipaddress: 54.240.131.191 + - domain: cloudfront.net + ipaddress: 54.240.131.192 + - domain: cloudfront.net + ipaddress: 54.192.3.206 + - domain: cloudfront.net + ipaddress: 54.192.3.207 + - domain: cloudfront.net + ipaddress: 54.240.131.193 + - domain: cloudfront.net + ipaddress: 54.192.3.208 + - domain: cloudfront.net + ipaddress: 54.240.131.194 + - domain: cloudfront.net + ipaddress: 54.192.3.209 + - domain: cloudfront.net + ipaddress: 54.240.131.195 + - domain: cloudfront.net + ipaddress: 54.192.3.210 + - domain: cloudfront.net + ipaddress: 54.192.3.211 + - domain: cloudfront.net + ipaddress: 54.240.131.196 + - domain: cloudfront.net + ipaddress: 54.240.131.197 + - domain: cloudfront.net + ipaddress: 54.192.3.212 + - domain: cloudfront.net + ipaddress: 54.240.131.198 + - domain: cloudfront.net + ipaddress: 54.192.3.213 + - domain: cloudfront.net + ipaddress: 54.192.3.214 + - domain: cloudfront.net + ipaddress: 54.240.131.199 + - domain: cloudfront.net + ipaddress: 54.192.3.215 + - domain: cloudfront.net + ipaddress: 54.240.131.200 + - domain: cloudfront.net + ipaddress: 54.192.3.216 + - domain: cloudfront.net + ipaddress: 54.240.131.201 + - domain: cloudfront.net + ipaddress: 54.192.3.217 + - domain: cloudfront.net + ipaddress: 54.240.131.202 + - domain: cloudfront.net + ipaddress: 54.192.3.219 + - domain: cloudfront.net + ipaddress: 54.240.131.203 + - domain: cloudfront.net + ipaddress: 54.192.3.220 + - domain: cloudfront.net + ipaddress: 54.192.3.221 + - domain: cloudfront.net + ipaddress: 54.240.131.204 + - domain: cloudfront.net + ipaddress: 54.240.131.205 + - domain: cloudfront.net + ipaddress: 54.192.3.222 + - domain: cloudfront.net + ipaddress: 54.240.131.206 + - domain: cloudfront.net + ipaddress: 54.192.3.223 + - domain: cloudfront.net + ipaddress: 54.240.131.207 + - domain: cloudfront.net + ipaddress: 54.240.131.208 + - domain: cloudfront.net + ipaddress: 54.240.131.209 + - domain: cloudfront.net + ipaddress: 54.192.3.224 + - domain: cloudfront.net + ipaddress: 54.240.131.210 + - domain: cloudfront.net + ipaddress: 54.192.3.226 + - domain: cloudfront.net + ipaddress: 54.240.131.211 + - domain: cloudfront.net + ipaddress: 54.240.131.212 + - domain: cloudfront.net + ipaddress: 54.192.3.227 + - domain: cloudfront.net + ipaddress: 54.240.131.213 + - domain: cloudfront.net + ipaddress: 54.192.3.228 + - domain: cloudfront.net + ipaddress: 54.240.131.214 + - domain: cloudfront.net + ipaddress: 54.192.3.229 + - domain: cloudfront.net + ipaddress: 54.240.131.215 + - domain: cloudfront.net + ipaddress: 54.192.3.231 + - domain: cloudfront.net + ipaddress: 54.240.131.217 + - domain: cloudfront.net + ipaddress: 54.192.3.230 + - domain: cloudfront.net + ipaddress: 54.240.131.218 + - domain: cloudfront.net + ipaddress: 54.192.3.232 + - domain: cloudfront.net + ipaddress: 54.192.3.233 + - domain: cloudfront.net + ipaddress: 54.240.131.219 + - domain: cloudfront.net + ipaddress: 54.192.3.234 + - domain: cloudfront.net + ipaddress: 54.240.131.220 + - domain: cloudfront.net + ipaddress: 54.192.3.235 + - domain: cloudfront.net + ipaddress: 54.192.3.236 + - domain: cloudfront.net + ipaddress: 54.240.131.221 + - domain: cloudfront.net + ipaddress: 54.240.131.222 + - domain: cloudfront.net + ipaddress: 54.192.3.237 + - domain: cloudfront.net + ipaddress: 54.192.3.238 + - domain: cloudfront.net + ipaddress: 54.240.131.223 + - domain: cloudfront.net + ipaddress: 54.240.131.224 + - domain: cloudfront.net + ipaddress: 54.192.3.239 + - domain: cloudfront.net + ipaddress: 54.192.3.240 + - domain: cloudfront.net + ipaddress: 54.240.131.225 + - domain: cloudfront.net + ipaddress: 54.240.131.226 + - domain: cloudfront.net + ipaddress: 54.192.3.241 + - domain: cloudfront.net + ipaddress: 54.192.3.242 + - domain: cloudfront.net + ipaddress: 54.240.131.227 + - domain: cloudfront.net + ipaddress: 54.192.3.243 + - domain: cloudfront.net + ipaddress: 54.240.131.228 + - domain: cloudfront.net + ipaddress: 54.192.3.244 + - domain: cloudfront.net + ipaddress: 54.192.3.245 + - domain: cloudfront.net + ipaddress: 54.240.131.229 + - domain: cloudfront.net + ipaddress: 54.192.3.246 + - domain: cloudfront.net + ipaddress: 54.240.131.231 + - domain: cloudfront.net + ipaddress: 54.240.131.230 + - domain: cloudfront.net + ipaddress: 54.192.3.247 + - domain: cloudfront.net + ipaddress: 54.192.3.248 + - domain: cloudfront.net + ipaddress: 54.240.131.232 + - domain: cloudfront.net + ipaddress: 54.240.131.233 + - domain: cloudfront.net + ipaddress: 54.192.3.249 + - domain: cloudfront.net + ipaddress: 54.240.131.234 + - domain: cloudfront.net + ipaddress: 54.192.3.250 + - domain: cloudfront.net + ipaddress: 54.192.3.251 + - domain: cloudfront.net + ipaddress: 54.192.3.252 + - domain: cloudfront.net + ipaddress: 54.240.131.235 + - domain: cloudfront.net + ipaddress: 54.240.131.236 + - domain: cloudfront.net + ipaddress: 54.240.131.237 + - domain: cloudfront.net + ipaddress: 54.192.3.253 + - domain: cloudfront.net + ipaddress: 54.240.131.238 + - domain: cloudfront.net + ipaddress: 54.192.3.254 + - domain: cloudfront.net + ipaddress: 54.240.131.239 + - domain: cloudfront.net + ipaddress: 54.240.131.240 + - domain: cloudfront.net + ipaddress: 54.240.131.241 + - domain: cloudfront.net + ipaddress: 54.240.131.242 + - domain: cloudfront.net + ipaddress: 54.240.131.243 + - domain: cloudfront.net + ipaddress: 54.240.131.244 + - domain: cloudfront.net + ipaddress: 54.240.131.245 + - domain: cloudfront.net + ipaddress: 54.240.131.246 + - domain: cloudfront.net + ipaddress: 54.240.131.247 + - domain: cloudfront.net + ipaddress: 54.240.131.248 + - domain: cloudfront.net + ipaddress: 54.240.131.249 + - domain: cloudfront.net + ipaddress: 54.240.131.250 + - domain: custom-origin.cloudfront-test.net + ipaddress: 54.240.131.216 + - domain: custom-origin.cloudfront-test.net + ipaddress: 54.240.130.134 + - domain: custom-origin.cloudfront-test.net + ipaddress: 54.240.129.131 + - domain: d1vipartqpsj5t.cloudfront.net + ipaddress: 54.192.0.29 +proxiedsites: + delta: + additions: [] + deletions: [] + cloud: + - 0000a-fast-proxy.de + - 000dy.com + - 000proxy.info + - 00271.com + - 007sn.com + - 010ly.com + - 0111.com.au + - 0126wyt.com + - 020usa.com + - 033b.com + - 063g.com + - 0666.info + - 0668.cc + - 073.cc + - 0737weal.com + - 08099.com + - 09cao.com + - 0day.kiev.ua + - 0rz.tw + - 1-apple.com.tw + - 1000.tv + - 1000860006.com + - 1000giri.net + - 1000ideasdenegocios.com + - 1000kan.com + - 100p-douga.com + - 10240.com.ar + - 1024go.info + - 1030ok.com + - 10movs.com + - 10renti.com + - 10times.com + - 10xjw.com + - 10youtube.com + - 110se.com + - 111.com + - 111.com.cn + - 111111.com.tw + - 1111tp.com + - 111gx.com + - 116139.com + - 11688.net + - 11ffbb.com + - 11foxy.com + - 11hkhk.com + - 11pk.net + - 1234.com + - 12345proxy.co + - 12345proxy.info + - 12345proxy.net + - 12345proxy.org + - 123bomb.com + - 123rf.com + - 12bet.com + - 12secondcommute.com + - 12vpn.com + - 12vpn.net + - 13237.com + - 139gan.com + - 13deals.com + - 140dev.com + - 1414.de + - 141tube.com + - 147rr.com + - 155game.com + - 15cao.com + - 161sex.com + - 1688.com.au + - 16maple.com + - 173ng.com + - 177wyt.com + - 17t17p.com + - 17wtlbb.com + - 18-21-teens.com + - 18-schoolgirlz.com + - 18-sex.us + - 1800flowers.com + - 180wan.com + - 18avok.us + - 18dao.com + - 18jack.com + - 18onlygirls.com + - 18pussyclub.com + - 18virginsex.com + - 18xgroup.com + - 1984bbs.org + - 1bao.org + - 1c.ru + - 1dpw.com + - 1eew.com + - 1fichier.com + - 1huisuo.net + - 1kan.com + - 1proxy.de + - 1st-game.net + - 1stopcn.com + - 1stwebgame.com + - 2-hand.info + - 2-porn.com + - 2000bo.com + - 2000fun.com + - 2000mov.com + - 2008.ws + - 2008xianzhang.info + - 2012se.info + - 2012tt.com + - 2014nnn.com + - 20jack.com + - 20minutos.tv + - 20yotube.com + - 2112112.net + - 211zy.com + - 213yy.com + - 21sextury.com + - 21wife.com + - 222mimi.net + - 22nf.info + - 22tracks.com + - 234mr.com + - 235job.com + - 23dy.info + - 23video.com + - 247workinghost.com + - 248cc.com + - 249ss.com + - 24hourprint.com + - 24open.ru + - 24proxy.com + - 24smile.org + - 24topproxy.com + - 24traffic.info + - 24tunnel.com + - 27144.com + - 27hhh.com + - 28tlbb.com + - 2adultflashgames.com + - 2anonymousproxy.com + - 2die4fam.com + - 2g34.com + - 2kanpian.com + - 2kk.cc + - 2lipstube.com + - 2m52.com + - 2p.net + - 2proxy.de + - 2shared.com + - 2tips.com + - 2unblockyoutube.com + - 2y8888.com + - 300avi.com + - 30boxes.com + - 30mail.net + - 3100book.com + - 3144.net + - 315lz.com + - 317bo.com + - 319papago.idv.tw + - 31bb.com + - 321soso.com + - 321youtube.com + - 32red.com + - 3333cn.com + - 333gx.com + - 33av.com + - 33md.net + - 33sqdy.info + - 33youtube.com + - 343dy.net + - 345.idv.tw + - 345mm.com + - 365sb.com + - 365singles.com.ar + - 38522.com + - 38ab.com + - 38lunli.info + - 38rv.com + - 39cao.com + - 3a6aayer.com + - 3animalsex.com + - 3animalsextube.com + - 3arabtv.com + - 3boys2girls.com + - 3dayblinds.com + - 3dsexvilla.com + - 3fm.nl + - 3i8i.net + - 3kiu.info + - 3kiu.net + - 3l87.com + - 3orod.com + - 3p-link.com + - 3proxy.de + - 3rd-party.org.uk + - 3ren.ca + - 3sat.de + - 3ssee.com + - 3ssnn.com + - 3suisses.fr + - 3wisp.com + - 400ai.com + - 432ppp.com + - 441mi.com + - 441mi.net + - 4444kk.com + - 444xg.com + - 445252.com + - 4466k.com + - 44qs.com + - 45bytes.info + - 45woool.com + - 460dvd.com + - 47ai.info + - 49.idv.tw + - 4everproxy.biz + - 4everproxy.com + - 4everproxy.de + - 4everproxy.org + - 4freeproxy.com + - 4ik.ru + - 4jj4jj.com + - 4kkbb.com + - 4musclemen.com + - 4newtube.com + - 4pda.to + - 4proxy.de + - 4shared.com + - 4ssnn.com + - 4tube.com + - 500px.org + - 50webs.com + - 514.cn + - 51eo.com + - 51luoben.com + - 51sole.com + - 51waku.com + - 5200dd.com + - 52682.com + - 5278.cc + - 52jav.com + - 52tlbb.com + - 52wpe.com + - 52yinyin.info + - 52youji.org + - 53yinyin.info + - 54271.com + - 543wyt.com + - 54dy.net + - 54xue.com + - 55399.com + - 555atv.com + - 573.jp + - 579uu.com + - 5927.cc + - 5d7y.net + - 5he5.com + - 5i01.com + - 5ik.tv + - 5isotoi5.org + - 5maodang.com + - 5proxy.com + - 5qulu.com + - 5udanhao.com + - 5xxn.com + - 5ye8.com + - 6299.net + - 63577.com + - 6363win.com + - 63jjj.com + - 64tianwang.com + - 66.ca + - 666814.com + - 666kb.com + - 666mimi.com + - 666nf.com + - 66green3.com + - 66peers.info + - 67160.com + - 678he.com + - 678kj.com + - 69696699.org + - 69goods.com + - 69jiaoyou.com + - 69kiss.net + - 69tubesex.com + - 6aaoo.com + - 6jsq.net + - 6k.com.tw + - 6law.idv.tw + - 6likosy.com + - 6park.com + - 6proxy.pw + - 6v6dota.com + - 7060.com + - 70chun.com + - 710knus.com + - 7111hh.com + - 712100.com + - 71ab.com + - 720dvd.com + - 7222hh.com + - 72sao.com + - 738877.com + - 74xy.com + - 753nn.com + - 7666hh.com + - 7744d.com + - 777daili.com + - 777pd.com + - 777rmb.com + - 777rv.com + - 77phone.com + - 77youtube.com + - 789ssss.com + - 7999hh.com + - 7cow.com + - 7daydaily.com + - 7dog.com + - 7msport.com + - 7net.com.tw + - 7sdy.com + - 7spins.com + - 7tvb.com + - 7xx8.com + - 7y7y.com + - 8-d.com + - 800086.com + - 800qsw.com + - 808080.biz + - 8090kk.com + - 8090xingnan.net + - 80smp4.com + - 851facebook.com + - 85cao.com + - 85cc.net + - 85gao.com + - 85st.com + - 87book.com + - 8811d.com + - 881903.com + - 888.com + - 88806.com + - 88chinatown.com + - 88luse.com + - 88sqdy.com + - 88wins.com + - 88xf.info + - 88xoxo.com + - 88xpxp.com + - 8ai.info + - 8ssee.com + - 9001700.com + - 909zy.net + - 90he.com + - 90kxw.com + - 90min.com + - 91530.com + - 91porn.com + - 91porn.me + - 92ccav.com + - 93tvb.net + - 94958.com + - 949wyt.com + - 95wen.com + - 970097.com + - 977ai.com + - 978z.com + - 97ai.com + - 97lm.com + - 97sequ.com + - 990578.com + - 991.com + - 9999cn.org + - 99bbs.org + - 99proxy.com + - 99u.com + - 99ubb.com + - 9b9b9b.com + - 9blow.com + - 9haow.cn + - 9irenti.com + - 9jng.com + - 9ofa.com + - 9svip.com + - 9tvb.com + - 9w9.org + - 9xyoutube.com + - a-fei.idv.tw + - a5.com.ru + - a688.info + - a88.us + - a888b.com + - a99.info + - aaak1.com + - aaak3.com + - aajjj.com + - aamacau.com + - aaproxy.pw + - abc.com + - abc.com.lb + - abc.com.pl + - abc.com.py + - abc.pp.ru + - ablwang.com + - abnandhrajyothy.com + - aboluowang.com + - abondance.com + - aboutgfw.com + - aboutsexxx.com + - abplive.in + - abs.edu.kw + - absoku072.com + - abuseat.org + - ac-rennes.fr + - ac-versailles.fr + - academyart.edu + - accessmeproxy.com + - accexam.com + - aceros-de-hispania.com + - acessototal.net + - acevpn.com + - achatdesign.com + - achi.idv.tw + - actimes.com.au + - actionnetwork.org + - activeproxies.org + - ad-tech.com + - adb.org + - additudemag.com + - addmefast.com + - adeex.in + - adj.idv.tw + - adobewwfotraining.com + - adoos.com + - adoptapet.com + - adscale.de + - adthrive.com + - adultcomicsclub.com + - adultcybersites.com + - adultfriendfinder.com + - adultgaga.com + - adultmegaporn.com + - adultporntoday.com + - adulttop50.nl + - adulttube.info + - advancedfileoptimizer.com + - advar-news.biz + - adxhosting.net + - ae5000.ru + - aeiou.pt + - aessuccess.org + - affa.az + - affaritaliani.it + - aflamhq.com + - afranet.com + - afrik.com + - aggressivebabes.com + - agrannyporn.com + - agridry.com + - ahbimi.com + - ahlalhdeeth.com + - ahmilf.com + - ahrchk.net + - ahrq.gov + - ailan.idv.tw + - aimizi.com + - aimorridesungabranca.com + - aion8.org + - aioproxy.com + - aip.idv.tw + - airasiago.com.my + - airbnb.co.in + - airbnb.com + - airbnb.it + - airtickets.gr + - airvpn.org + - aisex.com + - ait.org.tw + - aiweiwei.com + - aiweiweiblog.com + - aiyellow.com + - ajankamil.com + - ajansspor.com + - ajaxload.info + - ajsands.com + - ak-facebook.com + - akademikperspektif.com + - akahoshitakuya.com + - akamaihd.net + - akinator.com + - akradyo.net + - aktifhaber.com + - al-fadjr.com + - al-sharq.com + - al-watan.com + - al3aby8.com + - alaan.cc + - alaan.tv + - alabout.com + - alakhbaar.org + - alexa100.com + - alexandrebuisse.org + - alexdong.com + - alibabagroup.com + - alice.it + - alittlebitcheeky.com + - aliveproxy.com + - allabout.co.jp + - allasians.com + - allbankingsolutions.com + - allboner.com + - allcar.idv.tw + - alldrawnsex.com + - allfacebook.com + - allhardsextube.com + - alliance.org.hk + - allinfa.com + - allinmail.com.br + - allinvancouver.com + - alljackpotscasino.com + - allmovie.com + - allposters.com + - allproducts.com.tw + - allproxysites.com + - allrecipes.com.mx + - allrusamateurs.com + - alphaporno.com + - alsbbora.com + - alternativeincomeng.com + - alwadifa-maroc.com + - alwaysdata.com + - alwehda.gov.sy + - alyaoum24.com + - am730.com.hk + - amakings.com + - amarujala.com + - amarylliss.idv.tw + - amateurcommunity.de + - amateurgalls.com + - amateurhomevids.com + - amateurity.com + - amateursexy.net + - amazingsuperpowers.com + - amazonaws.com + - amazonsupply.com + - ameblo.jp + - ameli.fr + - amentotaxus.idv.tw + - america-proxy.com + - americanexpressonline.com.br + - americanmuscle.com + - americorps.gov + - amerikaninsesi.com + - amiami.jp + - aminsabeti.net + - amnesty.ca + - amnesty.ch + - amnesty.ie + - amnesty.org + - amnesty.org.au + - amnesty.org.gr + - amnesty.org.hk + - amnesty.org.in + - amnesty.org.nz + - amnesty.org.ru + - amnesty.org.tr + - amnesty.org.ua + - amnesty.org.uk + - amnestyusa.org + - amoiist.com + - amourangels.pw + - amz.tw + - ana-white.com + - anadoluhaberim.com + - analitikbakis.com + - analysiswebsites.com + - anchorfree.net + - andcycle.idv.tw + - andhrajyothy.com + - andhranews.net + - androidpit.com.br + - androidpub.com + - angele-proxy.info + - angrybirds.com + - anikore.jp + - animalhost.com + - anime-dojin.com + - anime-erodouga.com + - anime-media.com + - animecrazy.net + - animeshippuuden.com + - animespirit.ru + - aniscartujo.com + - annonce.cz + - anntw.com + - annunci.net + - anoniemsurfen.eu + - anonpass.com + - anonproxy.eu + - anonserver.se + - anonymityproxy.com + - anonymizer.com + - anonymous-proxy.com.de + - anonymous-surfing.eu + - anonymous24.pl + - anonymouse.me + - anonymouse.org + - anonymoussurf.us + - anonymouswebproxy.us + - anonymz.com + - anonysurf.com + - anpopo.com + - anquye.com + - ansar-alhaqq.net + - answering-islam.org + - anti-block.com + - antiwave.net + - antpoker.com + - anuntiomatic.com + - anuntul.ro + - anyporn.com + - anyporn.info + - anysex.com + - anyu.org + - aoaolu.cc + - aoaolu.com + - aoaolu.net + - aoaovod.com + - aobo.com.au + - aol.ca + - aol.co.uk + - aol.com + - aolnews.com + - aomiwang.com + - ap.org + - apartmentguide.com + - apastyle.org + - apetube.com + - apigee.com + - apontador.com.br + - aport.ru + - appedu.com.tw + - appleballa.com + - appledaily.com.hk + - appledaily.com.tw + - appleinsider.com + - appletube.ru + - appsfuture.info + - appspot.com + - appvuifacebook.com + - appy-geek.com + - apreslachat.com + - aq.com + - ar15.com + - arabo.com + - arabs-youtube.com + - arashzad.net + - arbitragetop.com + - archiproducts.com + - archive.is + - archive.org + - archive.today + - arctosia.com + - ard.de + - ardrone-forum.com + - argenprop.com + - argenta.be + - argentinabay.info + - arionmovies.com + - armadaboard.com + - armaniexchange.com + - armenpress.am + - arrow.com + - arsenal.com + - artcomix.com + - articlesphere.com + - artlebedev.ru + - arvixecloud.com + - asahichinese.com + - asg.to + - asgharagha.com + - ashburniceangels.org + - ashleyrnadison.com + - asiae.co.kr + - asiaharvest.org + - asian-boy-models.com + - asian-dolls.net + - asian-slave-boy.com + - asianbeautytube.com + - asianews.it + - asianxhamster.com + - asiasexvideos.com + - asiatgp.com + - askfrank.net + - askynz.net + - aspdotnet-suresh.com + - asredas.com + - asrekhodro.com + - assembla.com + - assemblee-nationale.fr + - astromendabarand.com + - asurekazani.com + - atavi.com + - atch.me + - atchinese.com + - atebits.com + - atgfw.org + - athensbars.gr + - atj.org.tw + - atlaspost.com + - atnext.com + - atresplayer.com + - attunlocker.us + - au123.com + - aucfan.com + - audible.co.uk + - aufflick.com + - augsburger-allgemeine.de + - aunblock.com + - aunblock.pk + - auoda.com + - ausnz.net + - aussieadultfriendfinder.com + - aussieproxy.info + - australia-proxy.com + - autoguide.com + - autohideip.com + - autopostfacebook.com + - autoposttofacebook.com + - autosottocosto.com + - autotun.net + - av-adult.com + - av-ok.com + - av100fun.com + - av101.net + - av1069.com + - av181.net + - av591.com + - av777.com + - av9.cc + - avaaz.org + - avatrade.com + - avaxhm.com + - avbaby.info + - avbdshop.com + - avcity.tv + - avcome.tw + - avcoy.com + - avdb.in + - avdd.net + - avdish.com + - avdvd.net + - avenue.com + - avenuesupply.ca + - avery.co.uk + - avery.com.mx + - avfacebook.com + - avhigh.net + - avhome.tv + - avisosdeocasion.com + - avlang.com + - avlang22.com + - avnoma.com + - avone.tv + - avsex8.com + - avsp2p.com + - avt111.com + - avtt.net + - avtt3.net + - avtt3.org + - avtube.tv + - avulu.com + - awebproxy.com + - awflasher.com + - axe-net.fr + - aybilgi.net + - azerbaycan.tv + - azerimix.com + - azerty123.com + - azoh.info + - azproxies.com + - b117f8da23446a91387efea0e428392a.pl + - b1secure.com + - ba-bamail.com + - bab-ul-islam.net + - babakdad.blogspot.fr + - babelio.com + - babesandstars.com + - baby-kingdom.com + - babynet.com.hk + - backchina.com + - backpackers.com.tw + - backyardchickens.com + - badjojo.com + - baguete.com.br + - bahianoticias.com.br + - baid.us + - baigevpn.com + - baise666.com + - bajarfacebook.com + - bajarmp3.net + - bajaryoutube.com + - balatarin.com + - ballpure.com + - bancamarche.it + - bancopostaclick.it + - bandicam.com + - bangbros1.com + - bankersadda.com + - bankexamstoday.com + - bankhapoalim.co.il + - banknetpower.net + - bankpasargad.com + - bannedbook.org + - bannedfuckers.com + - bao.li + - baozhi.ru + - barenakedislam.com + - barnabu.co.uk + - barracuda.com + - base99.com + - basil.idv.tw + - basware.com + - batiactu.com + - bayproxy.org + - bayvoice.net + - baywords.com + - bb66cc.org + - bbav360.com + - bbc.co.uk + - bbc.com + - bbc.org.cn + - bbcchinese.com + - bbci.co.uk + - bbcimg.co.uk + - bbg.gov + - bbgyy.net + - bbh.com + - bbproxy.pw + - bbs-tw.com + - bbs8888.net + - bbs97.com + - bbsindex.com + - bbsland.com + - bbtoystore.com + - bbwpornotubes.com + - bbwtubeporn.xxx + - bbwvideostube.com + - bbyy.name + - bc.vc + - bcc.com.tw + - bcchinese.net + - bdgest.com + - bdmote.net + - bdsm.com + - bdsm.com.tw + - bdsmbang.com + - bdsmforall.com + - bdsmvideos.net + - beatfiltering.com + - beauty88.com.tw + - beautygirl-story.com + - bebo.com + - becuonlinebanking.org + - befuck.com + - begeek.fr + - behindkink.com + - beijingspring.com + - belajariklandifacebook.com + - belastingdienst.nl + - belove.jp + - belta.by + - bemidjipioneer.com + - berlintwitterwall.com + - berm.co.nz + - best-handjob.com + - best-proxy.com.de + - best-videos-youtube.com + - bestandfree.com + - bestforchina.org + - bestfreevpn.com + - bestinstagram.com.br + - bestiz.net + - bestofyoutube.com + - bestporn.com + - bestpornstardb.com + - bestprox.com + - bestproxysites.net + - bestreams.net + - bestsecuritytips.com + - bestspy.net + - bestsurfing.info + - bestukvpn.com + - bestvideoonyoutube.com + - bestvideosonyoutube.com + - bestvintagetube.com + - bestvpn.com + - bestvpnservice.com + - bestvpnusa.com + - bestxxxlist.com + - besty.pl + - bestyoutubeproxy.info + - bet365.com + - bet365.com.au + - betbase1.info + - betcloud.com + - betfair.com + - betfair.com.au + - bettween.com + - betus.com.pa + - bewww.net + - beyondfirewall.com + - bfmtv.com + - bg67.com + - bgeneral.com + - bgf57.com + - bgproxy.org + - bgtorrents.info + - bharatstudent.com + - bhldn.com + - bia2.com + - biausa.org + - bibika.ru + - biblesforamerica.org + - biglobe.ne.jp + - bignews.org + - bigonyoutube.com + - bigpara.com + - bigsound.org + - bigtitmommy.com + - bigtits.com + - bigtitstokyo.com + - bih.nic.in + - bikei-newhalf.com + - binarymonster.net + - bind2.com + - bingplaces.com + - bingushop.com + - bioware.com + - bipic.net + - birdhouseapp.com + - biselahore.com + - bit.do + - bit.ly + - bitcointalk.org + - bithumen.be + - bitly.com + - bitshare.com + - bittorrent.com + - bizhat.com + - bizman.com.tw + - bizpowa.com + - bjnewlife.org + - bjzc.org + - blackdiamond-ai.com + - blacklogic.com + - blacksexsite.net + - blacktowhite.net + - blackvidtube.com + - blackvpn.com + - blancheporte.fr + - blanco.com + - blboystube.com + - blewpass.com + - bligoo.com + - blingblingsquad.net + - blinkx.com + - blip.tv + - blockcn.com + - blockedsiteaccess.com + - blog.com + - blog.idv.tw + - blogcatalog.com + - blogger.bj + - blogger.com + - blogger.com.br + - blogger3cero.com + - blogimg.jp + - bloglines.com + - bloglovin.com + - blogmarks.net + - blogmetrics.org + - blognevesht.com + - blogphongthuy.com + - blogs.com + - blogspot.ae + - blogspot.be + - blogspot.ca + - blogspot.ch + - blogspot.co.il + - blogspot.co.nz + - blogspot.co.uk + - blogspot.com + - blogspot.com.ar + - blogspot.com.au + - blogspot.com.br + - blogspot.com.es + - blogspot.com.tr + - blogspot.cz + - blogspot.de + - blogspot.dk + - blogspot.fi + - blogspot.fr + - blogspot.gr + - blogspot.hk + - blogspot.hu + - blogspot.ie + - blogspot.in + - blogspot.it + - blogspot.jp + - blogspot.mx + - blogspot.nl + - blogspot.no + - blogspot.pt + - blogspot.re + - blogspot.ro + - blogspot.ru + - blogspot.se + - blogspot.sg + - blogspot.sk + - blogspot.tw + - blogtd.org + - bloomberg.cn + - bloomberg.com + - bloomberg.com.br + - bloomberg.com.mx + - blowjobcollection.com + - bluesystem.ru + - bluexhamster.com + - blurry-eyes.info + - blurtit.com + - bnb89.com + - boardreader.com + - bodog168.com + - bodog88.com + - bofang.la + - boggleup.com + - bohemiancoding.com + - bolehvpn.net + - bollymeaning.com + - bollywood-mp3.com + - bom.gov.au + - bonbonme.com + - bonbonyou.com + - bondageco.com + - bondageposition.com + - bondagescape.com + - bondedomain.com + - bonny.idv.tw + - bonporn.com + - bonusvid.com + - book4u.com.tw + - bookbrowse.com + - bookfinder.com + - bookingbuddy.com + - bookmarkinghost.com + - books.com.tw + - booksforeveryone.org + - boolberry.blue + - boomplayer.com + - boomproxy.com + - boomtunnel.com + - boooobs.org + - boostwitter.com + - bootstrapvalidator.com + - borda.ru + - boredombash.com + - borsagundem.com + - bot.nu + - botanikreyon.org + - botanwang.com + - botid.org + - bouyguestelecom.com + - bowenpress.com + - bower.io + - box.com + - box.net + - boxcar.io + - boxcn.net + - boxofficemojo.com + - boxpn.com + - boxuesky.com + - boxun.com + - boxun.tv + - boyfriendtv.com + - boygloryhole.com + - boysfood.com + - bpergroup.net + - bps1025.com + - br-olshop.com + - braingle.com + - brainjuicer.com + - brainpop.fr + - bramka-proxy.pl + - bramkaproxy.net.pl + - brandibelle.com + - brassring.com + - bravejournal.com + - bravica.tv + - bravoerotica.com + - bravoteens.com + - bravotube.com + - bravotube.net + - brazilproxy.com + - brb.to + - break.com + - breakingtweets.com + - briefdream.com + - brino.info + - bristolpost.co.uk + - britishmuseum.org + - broadcastyoutube.com + - brokebackasians.com + - brownsugar.idv.tw + - browsec.com + - brsbox.com + - brt.it + - brutaltgp.com + - bsnl.co.in + - bt.com + - btcchina.com + - btdigg.org + - btkitty.com + - btolat.com + - btsmth.com + - btunnel.com + - bubukua.com + - buda.idv.tw + - budaedu.org + - budaedu.org.tw + - buddhanet.idv.tw + - buddhistchannel.tv + - budterence.tk + - bullog.org + - bullogger.com + - bunnylust.com + - buraydahcity.net + - buro247.ru + - busayari.com + - buscape.com.br + - business-gazeta.ru + - business.gov.au + - businessballa.com + - businessofcinema.com + - businessspectator.com.au + - businesstimes.com.cn + - businessweek.com + - bustycats.com + - busybits.com + - busytrade.com + - butterfunk.com + - buttfuckingbunch.com + - buxdot.com + - buy-instagram.com + - buyingiq.com + - buzzfeed.com + - buzzmag.jp + - buzzproxy.com + - buzztter.com + - bxdlw.com + - bxwx.net + - bxwx.org + - bycontext.com + - byethost8.com + - bypass-block.com + - bypass123.com + - bypassable.com + - bypassschoolfilter.com + - bypasssite.com + - bypassthat.com + - bypassthe.net + - bypassy.com + - byproxyserver.com + - bytbil.com + - c-spanvideo.org + - c009.net + - c2bsa.com + - cacaoweb.org + - cacnw.com + - cactusvpn.com + - caddy.idv.tw + - cadena100.es + - cadena3.com + - cafeblog.hu + - cafepress.com + - cafepress.com.au + - cahal-mania.com + - calameo.com + - calciatoribrutti.com + - calgarychinese.com + - calgarynewlife.com + - caloo.jp + - cam4.co.uk + - cam4.com + - cam4.com.au + - cam4.com.br + - cam4.com.cy + - cam4.com.tr + - cam4.jp + - cam4.nl + - camdough.com + - cameleo.ru + - cameracaptures.com + - camfrog.com + - campaignlive.co.uk + - campbellskitchen.com + - cams.com + - cams.com.au + - canada.com + - canadameet.me + - canalplus.fr + - canliskor.com + - canliyayin.org + - canoe.ca + - canonical.com + - cantv.net + - canyu.org + - cao.im + - cao31.com + - cao64.com + - cao89.com + - caobian.info + - caochangqing.com + - caoliushequ520.info + - caoporn.com + - capadefacebook.com + - captainsquarters.com + - captionsforyoutube.com + - car.com + - carabinasypistolas.com + - caradisiac.com + - carandclassic.co.uk + - careerlauncher.com + - cari.com.my + - carmotorshow.com + - cartoonanimefans.com + - cartoonmovement.com + - cartoonnetworkshop.com + - cartoonsexx.net + - cartoonsqueen.com + - carzone.ie + - casatibet.org.mx + - cashadproxy.info + - cashforsextape.com + - casinobellini.com + - casinoeuro.com + - casinolasvegas.com + - casinoriva.com + - castanet.net + - cat-world.com.au + - cathnews.com + - catholic.org.hk + - catholic.org.tw + - cathvoice.org.tw + - cbc.ca + - cbsnews.com + - cbzs887.cn + - cc-anime.com + - ccdaili.com + - ccdtr.org + - ccim.org + - ccproxy.pw + - ccthere.com + - cctongbao.com + - cctv5zb.com + - ccue.ca + - ccue.com + - ccyoutube.com + - cdiscount.com.co + - cdnet.tv + - cdnews.com.tw + - cdns.com.tw + - cdo23.idv.tw + - cdsmvod.com + - ce.gov.br + - ce4arab.com + - cecc.gov + - cegalapitasirorszagban.info + - cel.ro + - celebritymovieblog.com + - cellphoneshop.net + - centanet.com + - centerbbs.com + - centerblog.net + - centrometeoitaliano.it + - centurychina.com + - centurys.net + - cerdas.com + - cesumar.br + - cfish.idv.tw + - chabad.org + - chandan.org + - change.org + - change521.com + - changetheip.com + - changp.com + - channyein.org + - chapm25.com + - charonboat.com + - chaturbate.com + - chatzy.com + - chayici.info + - cheaperseeker.com + - cheapyoutube.com + - checkedproxylists.com + - checkmymilf.com + - checkthis.com + - cheeky.com.ar + - chengmingmag.com + - chengrenbar.com + - chenguangcheng.com + - chessbomb.com + - chezasite.com + - chicagonow.com + - chicasfacebook.com + - chiefsun.org.tw + - china-labour.org.hk + - china-proxy.org + - china-week.com + - china101.com + - china5000.us + - chinacity.be + - chinacityinfo.be + - chinadialogue.net + - chinadigitaltimes.net + - chinaelections.org + - chinaeweekly.com + - chinagfw.org + - chinagreenparty.org + - chinagrows.com + - chinahush.com + - chinainperspective.com + - chinainperspective.org + - chinalaborwatch.org + - chinamule.com + - chinapress.com.my + - chinaproxy.me + - chinareaction.com + - chinarightsia.org + - chinasmile.net + - chinatopix.com + - chinatown.com.au + - chinatungsten.com + - chinaworker.info + - chinayouth.org.hk + - chinese-hermit.net + - chinese.net.au + - chinesedaily.com + - chineseinla.com + - chineselovelinks.com + - chinesen.de + - chinesepen.org + - chinesepornweb.com + - chinesetalks.net + - chingcheong.com + - chinhphu.vn + - chodientu.vn + - choister.ru + - chosun.com + - christabelle.idv.tw + - christianmatchmaker.com + - christianstudy.com + - christiantimes.org.hk + - chrlawyers.hk + - chrome.com + - chubbyparade.com + - chubbyporn.xxx + - chubun.com + - chunshuitang.com.tw + - cieny.com + - cincodias.com + - cinematicket.org + - cinesport.com + - ciproxy.de + - circleofmoms.com + - circoviral.com + - citi.com + - citibank.co.jp + - citizenlab.org + - city365.ca + - city9x.com + - cityclubcasino.com + - cityvibe.com + - civicparty.hk + - civilmedia.tw + - civisec.org + - cixproxy.com + - ck101.com + - ckdvd.com + - ckf580.com + - classicalite.com + - classifieds4me.com + - classifiedsforfree.com + - claymont.com + - clb.org.hk + - cleanadulthost.com + - cleanfreeporn.com + - clearclips.com + - clearharmony.net + - clearhide.com + - clearpx.info + - clearwisdom.net + - cleoboobs.com + - clicic.com + - clickprotects.com + - clickxti.com + - clinica-tibet.ru + - clip.dj + - clipartpanda.com + - clipfish.de + - cliphunter.com + - cliponyu.com + - clipsonyoutube.com + - cliptoday.vn + - clipxoom.com + - clipyoutube.com + - clitgames.com + - cloaked.eu + - cloob.com + - cloudforce.com + - cloudvpn.biz + - clt20.com + - club-e.net + - clubedinheironofacebook.com + - clubthaichix.com + - cmstrader.com + - cmule.com + - cmule.net + - cn6.eu + - cna.com + - cna.com.br + - cna.com.tw + - cnabc.com + - cnavista.com.tw + - cnd.org + - cnitter.com + - cnn.com + - cnproxy.com + - cntraveller.com + - cnyes.com + - cnzz.cc + - co.tv + - cochlear.com + - code-club.idv.tw + - code1984.com + - codeasite.com + - codigoespagueti.com + - coenraets.org + - cofoo.com + - coinwarz.com + - colaclassic.co.uk + - colevalleychristian.org + - colfinancial.com + - collegeboard.com + - colormyfacebook.com + - com.uk + - comcast.com + - comdotgame.com + - comefromchina.com + - comicbook.com + - comlu.com + - commandarms.com + - companycheck.co.uk + - compareraja.in + - compass-style.org + - completelounge.com + - comprarseguidoresinstagram.com + - compressnow.com + - computervalley.it + - compython.net + - conexaokinghost.com.br + - configurarequipos.com + - connect.facebook.net + - consumer.es + - contactmusic.com + - contoerotico.com + - conversionhero.com.br + - convertisseur-youtube.com + - convertonlinefree.com + - convertyoutube.com + - coobai.com + - coobay.com + - cookieparts.com + - cookinglight.com + - coolaler.com + - coolbits.org + - coolloud.org.tw + - coolncute.com + - coolspotters.com + - coolsun.idv.tw + - copertinafacebook.com + - corchodelpais.com + - corpbank.com + - correct-install.com + - correio24horas.com.br + - correiobraziliense.com.br + - cortera.com + - cosmohispano.com + - cotweet.com + - cougarporn.com + - countryvpn.com + - couverturefacebook.com + - coveredca.com + - covertbrowsing.com + - cowcotland.com + - cpj.org + - cproxy.com + - cproxyer.com + - cpuid.com + - cqent.net + - cracked.com + - crackle.com + - crackle.com.ar + - crackle.com.br + - crackle.com.do + - crackle.com.mx + - crackle.com.pa + - crackle.com.ve + - crazys.cc + - crazyshirts.com + - creaders.net + - crearlistaconyoutube.com + - creartiendaenfacebook.com + - createit.pl + - creativebloq.com + - criarinstagram.com + - criarinstagram.com.br + - crmls.org + - crocoguide.com + - crocotube.com + - cronica.com.ar + - crossthewall.net + - crossvpn.org + - crownproxy.com + - crownroyal.com + - cruisecritic.com + - cshabc.com + - css-validator.org + - csuchico.edu + - ctfriend.net + - ctitv.com.tw + - cts.com.tw + - cttsrv.com + - ctunnel.com + - cu.edu.eg + - cubacontemporanea.com + - cuhkacs.org + - cuihua.org + - cuiweiping.net + - cultdeadcow.com + - culture.tw + - cum-in-air.com + - cumpool.com + - cumporntube.com + - cuponomia.com.br + - curejoy.com + - curezone.org + - curp.gob.mx + - currys.co.uk + - curtindoimagensnofacebook.com + - cute82.com + - cutedeadguys.net + - cvs.com + - cw.com.tw + - cwahi.net + - cwb.gov.tw + - cyber-ninja.jp + - cyberctm.com + - cyberghostvpn.com + - cybertranslator.idv.tw + - cycleworld.com + - cylex.com.au + - cytu.be + - cz.cc + - d-064.com + - d-agency.net + - d0z.net + - d100.net + - d1g.com + - d2jsp.org + - d3js.org + - d8.tv + - d9cn.com + - d9vod.com + - dabr.co.uk + - dadazim.com + - dadeschools.net + - dadi360.com + - daepiso.com + - dafahao.com + - daidostup.ru + - dailian.co.kr + - dailidaili.com + - dailila.net + - daily.mk + - dailydot.com + - dailyfx.com.hk + - dailyme.com + - dailymotion.com + - dailynews.com + - dailynorseman.com + - dailystrength.org + - dailytech.com + - dairymary.com + - daiwa21.com + - dajiyuan.com + - dajiyuan.eu + - dakdown.net + - dalailama-hamburg.de + - dalailama.com + - dalailamacenter.org + - dalailamaworld.com + - daliulian.com + - damimi.us + - dancingbear.com + - danfoss.com + - dangerproxy.com + - danjur.com + - danke4china.net + - dantenw.com + - danwei.org + - daolan.net + - dapetduitdaritwitter.com + - darmowe-proxy.pl + - dateformore.de + - davidguo.idv.tw + - davidnews.com + - davidziegler.net + - dawhois.com + - dayabook.com + - daylife.com + - dayoneapp.com + - dbs.com + - dcmilitary.com + - dd-peliculas.com + - dd858.com + - ddc.com.tw + - ddfnetwork.com + - ddhw.com + - ddlvalley.rocks + - ddns.me + - ddns.me.uk + - ddokbaro.com + - ddoo.cc + - ddsongyy.com + - de-sci.org + - dealam.com + - dearhoney.idv.tw + - dearmoney.idv.tw + - debian.org + - decathlon.com.br + - decathlon.in + - dedudu.com + - default-search.net + - defilter.us + - definebabe.com + - dekho.in + - deletefacebook.com + - delfield.com + - delhi.gov.in + - delshekaste.com + - demandware.net + - democrats.org + - demotivation.me + - denmarkbay.info + - denofgeek.us + - denysofyan.web.id + - depo.ua + - depqc.com + - derekhsu.homeip.net + - descargarinstagram.com + - descargarvideosfacebook.com + - descargaryoutube.com + - deskapplic.com + - destinychat.com + - destroymilf.com + - dewaweb.com + - deziyou.in + - df.gob.mx + - dglobe.com + - dgsnjs.com + - dhads.com + - dhl.com + - dhl.it + - diageo-careers.com + - diageo.com + - diaoyuislands.org + - diariodecuba.com + - diariodecuyo.com.ar + - diariodenavarra.es + - diariolasamericas.com + - diariovasco.com + - diary.ru + - dicasinstagram.com + - digisocial.com + - digitalcameraworld.com + - digitaljournal.com + - digitalkamera.de + - digitallink.info + - digitalroom.com + - digitalspy.co.uk + - digitaltrends.com + - diigo.com + - dilbert.com + - dimensiondata.com + - dinamina.lk + - dindo.com.co + - dinodirect.com + - dio.idv.tw + - dipity.com + - diply.com + - diputados.gob.mx + - discuss.com.hk + - discuss4u.com + - disise.com + - disney.es + - disney.pl + - disneyjunior.com + - disp.cc + - disput.az + - dit-inc.us + - ditenok.com + - diveintohtml5.info + - divxdl.info + - diwuji.cc + - diyidm.net + - dizhidizhi.com + - dizigold.com + - diziwu.com + - djazairess.com + - djjsq.com + - djorz.com + - djtechtools.com + - dkproxy.com + - dl-online.com + - dlink.com + - dm5.com + - dmm18.net + - dmnews.com + - dnb.com + - dns2go.com + - dnscrypt.org + - dnstube.tk + - do3n.com + - docbao.vn + - docstoc.com + - doctorproxy.com + - doctorvoice.org + - dogbreedinfo.com + - dogecoin.com + - dogideasite.com + - dogxxxtube.com + - dojin.com + - dok-forum.net + - dolc.de + - domai.nr + - domain.club.tw + - domain4ik.ru + - domik.ua + - dongfangshoulie.com + - dongle.cc + - dongtaiwang.com + - dongtaiwang.net + - dongyangjing.com + - donkparty.com + - dontfilter.us + - doo.idv.tw + - doobit.info + - dopr.net + - dorjeshugden.com + - dossierfamilial.com + - dotplane.com + - dotsub.com + - dotup.org + - dotvpn.com + - doubleclick.com + - douphine.com + - dousyoko.net + - douyutv.com + - downav.com + - downfacebook.com + - download-now-for-pc.net + - download.com + - download.com.vn + - doyouthinkimproxy.info + - dpp.org.tw + - dragonbyte-tech.com + - dragtimes.com + - draugas.lt + - dreammovies.com + - dreamnet.com + - dreamyoutube.com + - dribbble.com + - droidvpn.com + - dropbox.com + - dropbox.com.br + - dropboxproxy.com + - droptask.com + - drtuber.com + - drunkenteenorgies.com + - dsparking.com + - dtunnel.com + - dtz-ugl.com + - du.ac.in + - duantian.com + - dubinterviewer.com + - duck.hk + - duckduckgo.com + - duckload.com + - duga.jp + - duihua.org + - dunyabulteni.net + - dunyanews.tv + - duoweitimes.com + - duping.net + - dushi.ca + - dust-514.org + - dutchproxy.nl + - dvd-50.com + - dvdvideosoft.com + - dw-world.com + - dw-world.de + - dw.de + - dwheeler.com + - dwnews.com + - dxiong.com + - dy1.cc + - dy2018.com + - dy7788.com + - dy91.com + - dyhlw.com + - dylianmeng.com + - dynamo.kiev.ua + - dyndns.org + - dzemploi.org + - dzze.com + - e-dasher.com + - e-familynet.com + - e-gold.com + - e-info.org.tw + - e-kogal.com + - e-shop.gr + - e-spacy.com + - e-traderland.net + - e-travel.com + - e1.ru + - e123.hk + - e2020.co.nz + - e96.ru + - eagleproxy.com + - earthlinktele.com + - eastcoastmama.com + - eastgame.org + - easy-hideip.com + - easy604.com + - easyage.org + - easybranches.com + - easyca.ca + - easyfinance.ru + - easypic.com + - easyspace.com + - easyvpnservice.com + - easyweb.hk + - eazon.com + - ebaycommercenetwork.com + - ebony-beauty.com + - ebonytubetv.com + - ebookbrowse.com + - ebudka.com + - ebuyclub.com + - ecenter.idv.tw + - echo.msk.ru + - echoecho.com + - echofon.com + - ecommate.info + - ecommercebrasil.com.br + - economy.gov.az + - ecstart.com + - ecumenicalnews.com + - ecured.cu + - ecxs.asia + - edebiyatdefteri.com + - edgecastcdn.net + - edicypages.com + - edilly.com + - edmontonchina.com + - edomex.gob.mx + - edoors.com + - edp24.co.uk + - edtguide.com + - edubridge.com + - efcc.org.hk + - efe.com + - eff.org + - efpfanfic.net + - efukt.com + - efytimes.com + - egitimyuvasi.com + - egyig.com + - ehandel.se + - ej.ru + - ek.ua + - el-annuaire.com + - el-mexicano.com.mx + - elartedesabervivir.com + - elcolombiano.com + - eldiariomontanes.es + - eldiariony.com + - electronicsclub.info + - elefant.ro + - elephantjournal.com + - elevior.com + - elheraldo.co + - eliascleaners.co.uk + - elisabettabertolini.com + - eliteprospects.com + - elizabethavenuewest.com + - ellentv.com + - elleuk.com + - elmeme.me + - elmercurio.com + - elmundo.com.ve + - elnorte.com + - elon.edu + - elpais.com + - elpais.com.co + - elpais.com.do + - elpais.com.uy + - elsahfy.com + - elsalvadortv.org + - elseptimoarte.net + - eltondisney.com + - elwatan.com + - embedinstagram.com + - emedemujer.com + - emediate.eu + - emforce.co.kr + - emgog.com + - emilys-closet.com + - emojistwitter.com + - emory.edu + - emoticon-facebook.com + - empireonline.com + - employmentlawalliance.com + - empornium.me + - emptymirrorbooks.com + - emule-ed2k.com + - emvideira.com.br + - enbank.net + - encabezadostwitter.com + - encar.com + - encyclo.nl + - endeavor.org.br + - enel.com + - energy.gov + - enfal.de + - engadget.com + - enghelabe-eslami.com + - englishforeveryone.org + - englishfromengland.co.uk + - englishpen.org + - englishteastore.com + - enjoyfreeware.org + - enjoyproxy.com + - enjuice.com + - enladisco.com + - enstarz.com + - entel.cl + - entertainmentwise.com + - entirelypets.com + - entnt.com + - eogli.org + - eoidc.net + - eonline.com + - epfindia.com + - ephotozine.com + - epicporntube.com + - episcopalchurch.org + - epochhk.com + - epochtimes-bg.com + - epochtimes-romania.com + - epochtimes.co.il + - epochtimes.co.kr + - epochtimes.com + - epochtimes.com.br + - epochtimes.com.hk + - epochtimes.com.tw + - epochtimes.com.ua + - epochtimes.de + - epochtimes.fr + - epochtimes.ie + - epochtimes.it + - epochtimes.jp + - epochtimes.ru + - epochtimeschicago.com + - epochweekly.com + - epsport.idv.tw + - equinenow.com + - erabaru.net + - eremnews.com + - erepublik.com + - ergebnisselive.com + - ernstings-family.de + - eroharuhi.net + - eroilog.com + - erojump.net + - eroshinbo.com + - eroticsaloon.net + - erslist.com + - esecure.com.tw + - eshakti.com + - esp2505.info + - espreso.tv + - esquire.es + - estekhtam.com + - estwitter.com + - etadult.com + - etaiwannews.com + - etymonline.com + - eucasino.com + - eugendorf.net + - eulam.com + - euro2day.gr + - euromilhoes.com + - europages.com.ru + - europages.pl + - europalace.com + - europeanchessclubcup2014.com + - europroxy.eu + - eurotravel.idv.tw + - eurowon.com + - eva.vn + - eventure.com + - evestherenyoutube.com + - evite.com + - evous.fr + - exblog.co.jp + - excelsior.com.mx + - excite.es + - excnn.com + - exgfsheaven.com + - expat-dakar.com + - expatproxy.com + - expedia.ca + - expedia.co.kr + - expedia.com + - expedia.com.sg + - expedia.de + - expedia.fr + - expekt.com + - experts-univers.com + - exploader.net + - expofutures.com + - express-vpn.com + - express.be + - expressvpn.com + - expressvpn.org + - extmatrix.com + - extole.com + - extraproxy.com + - extravid.com + - extremeextremeextreme.com + - extremeftvgirls.com + - extremefuse.com + - extremetube.com + - exvagos.com + - exwolf.com + - eyny.com + - ezbox.idv.tw + - ezcommerce.com.br + - ezpc.tk + - ezpeer.com + - f4h.com + - faboroxy.com + - fabulousfoods.com + - facebook.com + - facebook.com.br + - facebook.com.pk + - facebook.com.vn + - facebook.net + - facehidden.com + - faceless.me + - factmonster.com + - factslides.com + - fail.hk + - failzoom.com + - fakku.net + - fakty.ua + - falsefire.com + - falundafa.org + - familjeliv.se + - familyfed.org + - familyfriendpoems.com + - fan-qiang.com + - fandejuegos.com + - fanfiction.net + - fangbinxing.com + - fanpagekarma.com + - fanqianghou.com + - fans4proxy.com + - fantasy-handjob.com + - fanyaylc.com + - fanyue.info + - fapdu.com + - fapvid.com + - farstwitter.com + - farwestchina.com + - fashionhotbox.com + - fashionnstyle.com + - fashionpulis.com + - fashionsnap.com + - fast-proxy.com.de + - fastest-proxy.com.de + - fastfreeproxy.info + - fastfreeproxy.org + - fastfresh.info + - fastpriv.com + - fastproxyfree.info + - fastproxynetwork.com + - fastusaproxy.com + - fat-ass-tube.com + - fatbrownguy.com + - fatest.ga + - fatgirlsex.net + - fatporn.xxx + - fatproxy.com + - favotter.net + - favstar.fm + - fawanghuihui.org + - fbcdn.com + - fbcdn.net + - fbunblocker.net + - fc2.com + - fc2blog.net + - fc2china.com + - fccash.com + - fcdallas.com + - fdbox.com + - fdc89.jp + - feathersite.com + - feber.se + - fednetbank.com + - feedburner.com + - fengfire.info + - fengzhenghu.com + - ferrariworld.com + - fescomail.net + - fetishbox.com + - fetishpornfilms.com + - feuvert.fr + - fffff.at + - ffproxy.pw + - ffsurf.net + - fgmtv.org + - fhn.gov.az + - fi5.us + - fiat.it + - fibhaber.com + - figaret.com + - fightnews.com + - file.sh + - filefactory.com + - filefap.com + - fileflyer.com + - filegir.com + - files2me.com + - filesdownloader.com + - fileserve.com + - film4ik.ru + - filmaffinity.com + - filmesdoyoutube.com + - filmfare.com + - filmuletul-zilei.ro + - filmux.net + - filterbypass.me + - filthdump.com + - finalfantasyxiv.com + - financetwitter.com + - finanzaspersonales.com.co + - finanzfrage.net + - finanznachrichten.de + - finchvpn.com + - findamo.com + - findit.fi + - findmespot.com + - fineproxy.org + - finevids.com + - finlandbay.info + - finmarket.ru + - fireofliberty.org + - fireplacecountry.com + - firetweet.io + - firstanalquest.com + - firstmerchants.com + - firstrowproxy.org + - firstrowpt.eu + - firsttoknow.com + - fit4life.ru + - fitnessfirst.co.th + - fitnessfirst.co.uk + - fitnessfirst.com.au + - fitpregnancy.com + - fixproxy.com + - fizzik.com + - flagma.ru + - flagsonline.it + - flamefans.com + - flashpoint-intel.com + - flashpornmovs.com + - flashscore.ro + - flatuicolors.com + - flickr.com + - flipit.com + - flipora.com + - flitto.com + - flnet.org + - fluege.de + - fluentu.com + - fly4ever.me + - flymeow.idv.tw + - flypgs.com + - flyproxy.com + - flyvpn.com + - flyvpn.net + - fm949sd.com + - focusvpn.com + - folkfacebook.com + - follow-instagram.com + - followersinstagram.com + - fontriver.com + - foodandwine.com + - foodbloggerpro.com + - foofind.com + - foolsmountain.com + - fooooo.com + - footeo.com + - footwearetc.com + - force.com + - forcedflix.com + - forfreesurfing.net + - foroiphone.com + - forrent.jp + - forum4hk.com + - forums-free.com + - forumx.com.br + - foto-girl.com + - fotosparatwitter.com + - fovanesa.com + - foxbusiness.com + - fpmt.org + - fpsc.gov.pk + - fpsexgals.com + - fqrouter.com + - fr.cr + - france24.com + - france99.com + - francebleu.fr + - franceinfo.fr + - franceinter.fr + - franceproxy.net + - franceproxy.org + - frasefacebook.com + - frasescelebres.net + - frat-party-sluts.com + - frazpc.pl + - frcnb.com + - freakonomics.com + - freakshare.com + - fredasvoice.com + - free--proxy.net + - free-ebooks.net + - free-hideip.com + - free-mp3-download.org + - free-onlineproxy.com + - free-proxy-online.com + - free-proxy.com.de + - free-proxyserver.com + - free-proxysite.com + - free-sexvideosfc2.com + - free-ssh.com + - free-teen-pussy.com + - free-unblock.com + - free-web-proxy.de + - free-webproxy.com + - free-xxx-porn.org + - free.fr + - free18.net + - free4proxy.tv + - free4u.com.ar + - free8.com + - freeanimalsextube.net + - freeanimesonline.com + - freebase.com + - freebearblog.org + - freebie-ac.com + - freebypass.com + - freebypassproxy.com + - freecanadavpn.com + - freechal.com + - freedom-ip.com + - freedomhouse.org + - freefc2.com + - freegao.com + - freehentaimanga.net + - freehostia.com + - freekatlitter.com + - freelibs.org + - freelotto.com + - freemp3in.com + - freemp3video.net + - freemp3x.org + - freenet-china.org + - freenetproject.org + - freeninjaproxy.com + - freeninjaproxy.info + - freeoda.com + - freeopenproxy.com + - freeopenvpn.com + - freeoz.org + - freepen.gr + - freepeople.com + - freephotoseries.com + - freeporn.to + - freepornofreeporn.com + - freepptpvpn.net + - freeproxy-server.net + - freeproxy.io + - freeproxy.net + - freeproxy.ro + - freeproxy4you.com + - freeproxylists.com + - freeproxyserver.ca + - freeproxyserver.net + - freeproxyserver.uk + - freeproxytochangeip.com + - freeproxyweblist.com + - freesafeip.com + - freeserve.co.uk + - freesex8.com + - freesextube.com + - freesoft.ru + - freespeechdebate.com + - freesstpvpn.com + - freetibet.org + - freevideoproxy.com + - freeviewmovies.com + - freevpn.cc + - freevpnsakura.com + - freevpnspot.com + - freevpnssh.com + - freevpnssh.org + - freevpnworld.com + - freewebproxy.asia + - freewebproxy.com + - freewebproxy.in + - freewebproxy.info + - freewebproxy.us + - freewebs.com + - freewebtemplates.com + - freeweibo.com + - freewsodownloads.net + - freexhamster.com + - freexinwen.com + - freeyellow.com + - freeyoutubeproxy.org + - frenchweb.fr + - fresh-proxies.net + - freshasianthumbs.com + - freshdesk.com + - freshersvoice.com + - freshmail.pl + - freshproxy.nu + - freshproxylist.com + - freshteenz.net + - freshxxxtube.com + - friendfeed.com + - fring.com + - frombar.com + - fromplay.com + - frontlinedefenders.org + - frootvpn.com + - fsurf.com + - ftah.idv.tw + - fucd.com + - fuckcnnic.net + - fucked-tube.com + - fuckenbored.com + - fuckenbored.net + - fuckmyrealwife.com + - fucknvideos.com + - fuimpostingit.com + - fulikong.com + - fullcelulares.com + - fulldls.com + - fullmovieyoutube.com + - fulltiltpoker.com + - fulltubemovies.com + - fullxhamster.com + - fullyporn.com + - funcionpublica.gob.mx + - funf.tw + - funp.com + - funp.com.tw + - funproxy.net + - furfur.me + - futebolaovivo.net + - futfanatics.com.br + - futube.net + - futurechinaforum.org + - futureproxy.com + - fuugle.net + - fuuzoku.info + - fux.com + - fvpn.com + - fxgm.com + - fxxgw.com + - fydownload.com + - fzlm.com + - g-cash.biz + - gaeproxy.com + - gaforum.org + - gagamatch.com + - gaggedtop.com + - gagreport.com + - galya.ru + - gamcore.com + - gamebase.com.tw + - gamecopyworld.com + - gamejolt.com + - gamer.com.tw + - games.gr + - gamesofdesire.com + - gamestlbb.com + - gamez.com.tw + - gamousa.com + - gangbang-arena.com + - ganges.com + - ganhareuromilhoes.com + - gao01.com + - gao41.com + - gaochunv.com + - gaoming.net + - gaopi.net + - gaoyangsl.com + - gap.co.uk + - gap.eu + - garancedore.fr + - gastronom.ru + - gatguns.com + - gather.com + - gatherproxy.com + - gati.org.tw + - gawkerassets.com + - gay-youtube.com + - gaybeef.com + - gaycockporn.com + - gaym.jp + - gaypornpicpost.com + - gazeta.pl + - gazeta.ru + - gazetadita.al + - gazetaesportiva.net + - gazete2023.com + - gazeteler.com + - gazo-ch.net + - gazotube.com + - gazzettadiparma.it + - gblocker.info + - gcll.info + - gcpnews.com + - gdbt.net + - gdkexercisetherapy.com + - gebnegozionline.com + - geekmade.co.uk + - geeksaresexy.net + - geeksnude.com + - gegasurf.ga + - gemscool.com + - gen.xyz + - general-ebooks.com + - general-porn.com + - gengfu.net + - genymotion.com + - geocities.co.jp + - geocities.com + - geomedian.com + - georgia.gov + - german-proxy.com.de + - german-proxy.de + - german-webproxy.de + - germany-proxy.com.de + - germanybay.info + - gesundheitsfrage.net + - getchu.com + - getcloak.com + - getdogsex.com + - getfoxyproxy.org + - getfreedur.com + - getiantem.org + - getit.in + - getiton.com + - getjetso.com + - getlantern.org + - getmema.com + - getsocialscope.com + - getusvpn.com + - getyouram.com + - gfacebook.com + - gfbv.de + - gfsale.com + - gfsoso.com + - gfw.org.ua + - gfwhiking.org + - ggdaohang.com + - ggpht.com + - ggproxy.pw + - ggssl.com + - ghostery.com + - gi55.com + - gian.idv.tw + - gianttiger.ca + - giddens.idv.tw + - gift001.com + - gifyoutube.com + - gigabyte.com + - gigantits.com + - gigantti.fi + - gigporno.ru + - gigsandfestivals.co.uk + - gipsyteam.ru + - girlsgogames.co.uk + - girlsplay.com + - gita.idv.tw + - gitbooks.io + - github.com + - gizbot.com + - gizlen.net + - gizmodo.com + - glamour.ru + - glassofporn.com + - glavcom.ua + - glgoo.com + - global-proxy.com + - global-unity.net + - globalewallet.com + - globalinventions.co.uk + - globalsources.com.cn + - globalvoicesonline.org + - globsayasytes.net + - glock.com + - gloryhole.com + - glype-proxy.info + - gmailproxy.com + - gmane.org + - gmeihua.com + - gnway.net + - go-fuzoku.tv + - go-pki.com + - go2av.com + - goagent.biz + - goalad.com + - gob.ve + - god.tv + - godsdirectcontact.com + - godsdirectcontact.info + - godsdirectcontact.org + - godsdirectcontact.org.tw + - gofirefly.org + - gofollow.fr + - gofollow.info + - gogames.me + - gogo2sex.com + - gohappytime.com + - gohawaii.com + - goibibo.com + - goingthere.org + - golang.org + - goldasians.com + - goldbet.com + - goldjizz.com + - goldproxylist.com + - golfdigest.com + - gomko.net + - gongwt.com + - gonzoo.com + - goo.gl + - goodbyemydarling.com + - goodnews.or.kr + - goodreaders.com + - goodreads.com + - goodthaigirl.com + - goodtv.tv + - google-analytics.com + - google.ad + - google.ae + - google.al + - google.am + - google.as + - google.at + - google.az + - google.ba + - google.be + - google.bf + - google.bg + - google.bi + - google.bj + - google.bs + - google.bt + - google.by + - google.ca + - google.cat + - google.cd + - google.cf + - google.cg + - google.ch + - google.ci + - google.cl + - google.cm + - google.cn + - google.co.ao + - google.co.bw + - google.co.ck + - google.co.cr + - google.co.id + - google.co.il + - google.co.in + - google.co.jp + - google.co.ke + - google.co.kr + - google.co.ls + - google.co.ma + - google.co.mz + - google.co.nz + - google.co.th + - google.co.tz + - google.co.ug + - google.co.uk + - google.co.uz + - google.co.ve + - google.co.vi + - google.co.za + - google.co.zm + - google.co.zw + - google.com + - google.com.af + - google.com.ag + - google.com.ai + - google.com.ar + - google.com.au + - google.com.bd + - google.com.bh + - google.com.bn + - google.com.bo + - google.com.br + - google.com.bz + - google.com.co + - google.com.cu + - google.com.cy + - google.com.do + - google.com.ec + - google.com.eg + - google.com.et + - google.com.fj + - google.com.gh + - google.com.gi + - google.com.gt + - google.com.hk + - google.com.jm + - google.com.kh + - google.com.kw + - google.com.lb + - google.com.ly + - google.com.mm + - google.com.mt + - google.com.mx + - google.com.my + - google.com.na + - google.com.nf + - google.com.ng + - google.com.ni + - google.com.np + - google.com.om + - google.com.pa + - google.com.pe + - google.com.pg + - google.com.ph + - google.com.pk + - google.com.pr + - google.com.py + - google.com.qa + - google.com.sa + - google.com.sb + - google.com.sg + - google.com.sl + - google.com.sv + - google.com.tj + - google.com.tr + - google.com.tw + - google.com.ua + - google.com.uy + - google.com.vc + - google.com.vn + - google.cv + - google.cz + - google.de + - google.dj + - google.dk + - google.dm + - google.dz + - google.ee + - google.es + - google.fi + - google.fm + - google.fr + - google.ga + - google.ge + - google.gg + - google.gl + - google.gm + - google.gp + - google.gr + - google.gy + - google.hn + - google.hr + - google.ht + - google.hu + - google.ie + - google.im + - google.iq + - google.is + - google.it + - google.je + - google.jo + - google.kg + - google.ki + - google.kz + - google.la + - google.li + - google.lk + - google.lt + - google.lu + - google.lv + - google.md + - google.me + - google.mg + - google.mk + - google.ml + - google.mn + - google.ms + - google.mu + - google.mv + - google.mw + - google.ne + - google.nl + - google.no + - google.nr + - google.nu + - google.pl + - google.pn + - google.ps + - google.pt + - google.ro + - google.rs + - google.ru + - google.rw + - google.sc + - google.se + - google.sh + - google.si + - google.sk + - google.sm + - google.sn + - google.so + - google.sr + - google.st + - google.td + - google.tg + - google.tk + - google.tl + - google.tm + - google.tn + - google.to + - google.tt + - google.vg + - google.vu + - google.ws + - googleadservices.com + - googleapis.com + - googlecode.com + - googlepages.com + - googlesile.com + - googleusercontent.com + - googlevideo.com + - gooya.com + - gopetition.com + - goproxing.com + - goproxyserver.com + - gorsuch.com + - gospelherald.com + - gospelherald.com.hk + - gossip-tv.gr + - gostosanovinha.com + - gosurf.asia + - gotop.idv.tw + - gotrusted.com + - goudengids.be + - gov.ar + - govorimpro.us + - gowalla.com + - gownideasite.com + - goxfc.com + - gpo.gov + - gpodder.net + - gpx.idv.tw + - gr24.us + - grader.com + - grafikart.fr + - grandascent.com + - grandepremio.com.br + - grangorz.org + - graphis.ne.jp + - greatfire.org + - greatfirewallofchina.org + - greecebay.info + - greenhousechurch.org + - greenparty.org.tw + - greenproxy.net + - greenvpn.net + - greenvpn.org + - gremlinjuice.com + - grjsq.me + - grjsq.tv + - group-facials.com + - gsp.ro + - gstatic.com + - gsw777.com + - gt3themes.com + - guanyincitta.com + - guardster.com + - guffins.com + - guihang.org + - guilinok.com + - guitarworld.com + - gujarat.gov.in + - gun-world.net + - gun.in.th + - gunsamerica.com + - gunsandammo.com + - gusttube.com + - guubii.info + - gvhunter.com + - gvm.com.tw + - gyalwarinpoche.com + - gypsyxxx.com + - gywys.com + - gzbolinktv.com + - gzdssf.com + - gzm.tv + - h1de.net + - h31bt.net + - h33t.to + - h528.com + - haaretz.co.il + - haaretz.com + - haber5.com + - habercim19.com + - habername.com + - hack85.com + - hacken.cc + - hacker.org + - hacking-facebook.com + - hackinguniversity.in + - hagah.com.br + - hairy-beauty.com + - hairy-nudist.com + - hakchouf.com + - hakkatv.org.tw + - hallels.com + - hama-k.com + - hanamoku.com + - handbrake.fr + - hani.co.kr + - hanunyi.com + - hao001.net + - hao123.com.br + - hao123114.com + - haokan946.cn + - haosf.com + - haosf.com.cn + - haoyun01.cf + - happycampus.com + - happytrips.com + - haproxy.org + - hardsextube.com + - hardware.com.br + - hardxhamster.com + - harrypottershop.com + - harunyahya.com + - hattrick.org + - have8.com + - hd-blow.com + - hd-feet.com + - hd-porn-movies.com + - hd-xhamster.com + - hdb.gov.sg + - hdbird.com + - hdteenpornmovies.com + - hdwallpapersinn.com + - hdwing.com + - hdzion.com + - healthgenie.in + - hearstmags.com + - heart-youtube.com + - hebao.net + - hecaitou.net + - hechaji.com + - hegre-art.com + - heishou.cn + - heix.pp.ru + - heji700.com + - hellocoton.fr + - hellotxt.com + - hellouk.org + - hellporno.com + - hells.pl + - helpeachpeople.com + - helptaobao.cn + - helpzhuling.org + - henhenpeng8.com + - hennablogspot.com + - hentai-high-school.com + - hentaimangaonline.com + - hentaitube.tv + - hentaivideoworld.com + - hentaiza.net + - heritage.org + - hermanzegerman.com + - heroeswm.ru + - herokuapp.com + - heroproxy.com + - herozerogame.com + - herrenausstatter.de + - hexi-ha.com + - hexieshe.com + - heyproxy.com + - heywire.com + - hfacebook.com + - hgseav.com + - hhproxy.pw + - hi-kiss.com + - hi-on.org.tw + - hibiya-lsp.com + - hiddengood.info + - hide-me.org + - hide.me + - hide.pl + - hideandgo.com + - hidebux.com + - hidebuzz.com + - hidebuzz.us + - hidedoor.com + - hideip.co + - hideipfree.com + - hideipproxy.com + - hideipvpn.com + - hideman.net + - hideme.be + - hideme.io + - hideme101.info + - hideme102.info + - hideme108.info + - hideme110.info + - hidemenow.net + - hidemyass.com + - hidemybox.com + - hidemyipaddress.org + - hidemytraxproxy.ca + - hideninja.com + - hideoxy.com + - hidetheinternet.com + - hidethisip.net + - hidevpn.asia + - hidewebsite.com + - hidexy.com + - hidingnow.org + - hifi-forum.de + - higfw.com + - high-stone-forum.com + - hihiforum.com + - hilive.tv + - hiload.org + - hiload.pk + - himalayanglacier.com + - hime.me + - himekuricalendar.com + - himemix.com + - hinet.net + - hiroshima-u.ac.jp + - hispeedproxy.com + - hisupplier.com + - hitfix.com + - hitgelsin.com + - hitproxy.com + - hiwihhi.com + - hizb-ut-tahrir.info + - hizb-ut-tahrir.org + - hjclub.info + - hk-pub.com + - hk.nextmedia.com + - hk32168.com + - hk5.cc + - hkatvnews.com + - hkbf.org + - hkbigman.net + - hkbookcity.com + - hkdailynews.com.hk + - hkej.com + - hkepc.com + - hkforum.info + - hkfreezone.com + - hkgolden.com + - hkgreenradio.org + - hkheadline.com + - hkhrm.org.hk + - hkjp.org + - hkptu.org + - hkreporter.com + - hku.hk + - hkzz8.com + - hloli.net + - hmhack.com + - hmongapp.com + - hmonghot.com + - hmongjob.com + - hmongplay.com + - hmongplus.com + - hmtweb.com + - hobbylobby.com + - hockeyapp.net + - hohosex.com + - hola.org + - holidayautos.de + - holland.idv.tw + - homcom-shop.de + - homecinema-fr.com + - homeftp.net + - homegrownfreaks.net + - homemademoviez.com + - homemadetubez.com + - homenet.org + - homeperversion.com + - homepornadventures.com + - homestayin.com + - hometeenmovs.com + - hometied.com + - hongzhi.li + - hooppay.com + - hootlet.com + - hootsuite.com + - hopto.org + - hornybbwtube.com + - horo.idv.tw + - horukan.com + - host1free.com + - host4post.pw + - hostels.com + - hostingbulk.com + - hostinger.ae + - hostinger.co.uk + - hostinger.com.br + - hostinger.es + - hostlove.com + - hot-sex-tube.com + - hot.ee + - hot50plus.com + - hotav.tv + - hotbox.com + - hotcouponworld.com + - hotfreevpn.com + - hotfrog.com.tw + - hotgamesforgirls.com + - hotgoo.com + - hothmong.com + - hothouse.com + - hotline.ua + - hotnakedmen.com + - hotpepper.jp + - hotpornshow.com + - hotpotato.com + - hotsale.com.mx + - hotshame.com + - hotspotshield.com + - hotteenmovie.com + - hottystop.com + - hotxhamster.com + - housetohome.co.uk + - houseweb.com.tw + - how-to-diy.org + - howproxy.com + - howstuffworks.com + - hoyts.com.ar + - hp-ez.com + - hq-sex-tube.com + - hq-xhamster.com + - hq-xnxx.com + - hqcdp.org + - hqfemdom.com + - hqmovies.com + - hqsexygirls.com + - hrblock.com + - hrcir.com + - hrea.org + - hrichina.org + - hrnabi.com + - hrw.org + - hsn.com + - hsselite.com + - hst.net.br + - hstbr.net + - hstd.net + - hstern.net + - hstt.net + - ht-afghanistan.com + - htfcn.com + - htkou.net + - htmlpublish.com + - httpproxy.se + - huaglad.com + - huanghuagang.org + - huaren.us + - huarenlife.com + - hudatoriq.web.id + - hugeinc.com + - huhaitai.com + - hulkshare.com + - humanite.presse.fr + - humanmetrics.com + - humanservices.gov.au + - hummingbird4twitter.com + - hung-ya.com + - hunturk.net + - huomie.com + - husaimeng.com + - hussytube.com + - hustlerhuns.com + - hut2.ru + - hutong9.net + - huyan.web.id + - huyandex.com + - hw.ac.uk + - hxiaoshuo.net + - hypergames.net + - hyperinzerce.cz + - i-cable.com + - i-sux.com + - i-write.idv.tw + - iam.ma + - iamabigboss.info + - ianker.com + - iask.ca + - ibc128.com + - iberia.com + - ibibo.com + - iblist.com + - iboner.com + - ibook.idv.tw + - ibope.com.br + - ibotube.com + - ibtimes.com + - ibvpn.com + - icams.com + - iceporn.com + - icerocket.com + - icicibank.co.in + - icij.org + - icrt.cu + - icyleaf.com + - id4.idv.tw + - idaiwan.com + - idamericany.com + - iddaa.com + - idealista.it + - identi.ca + - idesktop.tv + - idfacebook.com + - idhostinger.com + - idokep.hu + - idoneum.com + - idouga.com + - idownloadplay.com + - idownloadsnow.com + - idreamx.com + - idsam.com + - idv.tw + - idx.co.id + - ie666.net + - ied2k.net + - ifa-berlin.de + - ifanqiang.com + - ifanr.com + - ifc.com + - ifconfig.me + - ifcss.org + - ifilm.com + - ifilm.com.tw + - ifttt.com + - ig.com.br + - igafencu.com + - igfw.net + - igogo.es + - igotmail.com.tw + - ihaveanidea.org + - ihavesmalltits.com + - ihh.org.tr + - iiberry.com + - iij4u.or.jp + - iiproxy.pw + - ijapaneseporn.com + - ikea.ru + - ikeepbookmarks.com + - iklanlah.com + - ilgiornaledifacebook.com + - ilkehaberajansi.com.tr + - ilmattino.it + - ilovecougars.com + - ilovemature.net + - ilovemobi.com + - iloveuu.info + - ilovexhamster.com + - ilsoftware.it + - ilvpn.com + - im88.tw + - imagefap.com + - imageflea.com + - imagem-para-facebook.com + - imagenesenfacebook.com + - imagenesyfrasesparafacebook.com + - imagenparaelfacebook.com + - imagenparafacebook.com + - imagensemensagensparafacebook.com + - imagesfacebook.com + - imageslove.net + - imasteryoutube.com + - imazing.idv.tw + - imb.org + - imena.ua + - img.ly + - imgettingthere.com + - imgfarm.com + - imglory.com + - imkev.com + - imlive.com + - immigration.gov.tw + - immoral.jp + - impots.gouv.fr + - improxy.info + - imss.gob.mx + - imujer.com + - in-disguise.com + - in99.org + - inbanban.com + - inblogspot.com + - incezt.net + - incloak.com + - increase-youtube.com + - indamail.hu + - independent.ie + - india.com + - indiabay.info + - indiacom.com + - indiafreestuff.in + - indianproxy.biz + - indiapost.gov.in + - indiaproxy.org + - indiemerch.com + - indigo.ca + - indonesiabay.info + - indonesianmotorshow.com + - indopos.co.id + - indosat.com + - indymedia.org + - ineedhits.com + - infinitummovil.net + - info-graf.fr + - info-net.com.pl + - infolibre.es + - infon.ru + - informacion-empresas.com + - informationisbeautiful.net + - infoworld.com + - ing.dk + - ingresosextrasconyoutube.com + - inkclub.com + - inkui.com + - inmediahk.net + - innogames.com + - inosmi.ru + - inote.tw + - insanetrafficnow.info + - insee.fr + - insidefacebook.com + - insight.co.kr + - insomnia247.nl + - instagram.com + - instagram.com.br + - instagramproxy.com + - installmac.com + - instapaper.com + - interesnitee.info + - intermargins.net + - internetbrands.com + - internetcloak.com + - interoperabilitybridges.com + - interstats.org + - intertelecom.ua + - intertwitter.com + - interweavestore.com + - inyourpocket.com + - io.ua + - iobit.com + - ioshow.com + - ioxy.de + - ipadizate.es + - ipanelonline.com + - ipassexam.com + - ipchangeproxy.com + - ipchanging.com + - ipcloak.us + - ipconceal.com + - ipgizle.net + - iphider.org + - iphiderpro.com + - iphon.fr + - iphone-dev.org + - iphonedev.co.kr + - iphoster.net + - ipjetable.net + - iplama.com + - ipmask.us + - ipredator.se + - iproducts.com.tw + - iproxy07.com + - iptv.com.tw + - ipv6proxy.net + - ipvanish.com + - iranbay.info + - irangreenvoice.com + - iranian.com + - iraniproxy.com + - iranproud.com + - iranvolleyball.com + - irasutoya.com + - iredmail.org + - irelandbay.info + - ironfx.com + - isaacmao.com + - isb.edu + - iset.com.tw + - isikinsaatltd.com.tr + - islam.org.hk + - islamhouse.com + - islamicawakening.com + - islamicity.com + - islamtoday.net + - island.lk + - ismalltits.com + - isnotonfacebook.com + - isp-unblocker.com + - ispban.com + - ispot.tv + - israelnationalnews.com + - istars.co.nz + - istef.info + - istiqlalhaber.com + - istockphoto.com + - isuntv.com + - italybay.info + - itar-tass.com + - itavisen.no + - itbazar.com + - itespresso.fr + - ithacavoice.com + - ithome.com.tw + - itweet.net + - iu45.com + - iumsonline.org + - iunlocker.net + - ivacy.com + - ivc-online.com + - iwebproxy.com + - ixigo.com + - ixquick-proxy.com + - ixquick.com + - iyin.net + - izaobao.us + - izihost.org + - izles.net + - izlesem.org + - izlesene.com + - j-a-p-a-n.com + - j.mp + - j7wyt.com + - jackjia.com + - jackpot.tv + - jacso.hk + - jagoinvestor.com + - jahproxy.com + - jaimelovesstuff.com + - jamaat.org + - jamesedition.com + - janes.com + - japan-whores.com + - japanesesportcars.com + - japanpost.jp + - japanweb.info + - japanwebproxy.com + - jasaoptimasitwitter.com + - jasonaldean.com + - jav188.com + - javdownloader.info + - javhot.org + - javme.com + - javpee.com + - javzoo.com + - jbtalks.cc + - jdbbs.com + - jeepoffers.ca + - jeevansathi.com + - jerusalem.com + - jetztspielen.de + - jeux.fr + - jhalderm.com + - jiehua.cz + - jiejieshe.com + - jiepaiok.com + - jiepang.com + - jihadology.net + - jiji.com + - jimoparty.com + - jin115.com + - jingpin.org + - jinhai.de + - jiruan.net + - jisudan.org + - jivosite.com + - jizzbo.com + - jizzhut.com + - jjgirls.com + - jkb.cc + - jkforum.net + - jlgcyy.com + - jma-net.go.jp + - jmbullion.com + - jobijoba.com + - jobrapido.com + - jobs.net + - jobstreet.com.ph + - joeproxy.co.uk + - joeyrobert.org + - jofogas.hu + - jonny.idv.tw + - jooble.ru + - joomla-monster.com + - josepvinaixa.com + - journalauto.com + - journalchretien.net + - journaldugamer.com + - journaldugeek.com + - joyent.com + - jplopsoft.idv.tw + - jpmwarrants.com.hk + - jqueryui.com + - jr-shikoku.co.jp + - jra.jp + - jsdpn.com + - jualakuntwitter.com + - judis.nic.in + - juegos.com + - juegosdechicas.com + - juegosdiarios.com + - juegosjuegos.com + - juggworld.com + - jujufeed.com + - julaibao.com + - julesjordan.com + - junefourth-20.net + - junglee.com + - junhongblog.info + - jurisway.org.br + - just-cool.net + - just.ro + - justfortinypeople.com + - justfreevpn.com + - justin.tv + - justonjuice.com + - justpaste.it + - justproxy.co.uk + - jyxf.net + - k12reader.com + - k178x.com + - k9safesearch.com + - kagyu.org + - kagyu.org.za + - kagyuoffice.org + - kagyuoffice.org.tw + - kaiyuan.de + - kakao.co.kr + - kakao.com + - kaleme.com + - kalenderwoche.net + - kan-be.com + - kanal5.com.mk + - kancb.com + - kangye.org + - kanshifang.com + - kanzhongguo.com.au + - kao165.info + - kaotic.com + - kapook.com + - kaqi.cc + - karakartal.com + - karmaloop.com + - karmapa.org + - kasikornbankgroup.com + - kat-proxy.org + - katedrala.cz + - kathimerini.gr + - kaufmich.com + - kaunsa.com + - kawanlah.com + - kayhanlondon.com + - kaze-travel.co.jp + - kblldy.info + - kcet.org + - kcome.org + - kebabstall.com + - kebrum.com + - kechara.com + - keepandshare.com + - keepawayfrommy.info + - keepmes.com + - keio.co.jp + - keithurban.net + - kempinski.com + - ken-studio.idv.tw + - kendincos.net + - kenengba.com + - kenming.idv.tw + - kentonline.co.uk + - kepard.com + - kerala.gov.in + - kerjanya.net + - keso.cn + - ketnooi.com + - khabdha.org + - khmer333.com + - khmusic.com.tw + - khou.com + - kickassproxy.com + - kickstarter.com + - kickyoutube.com + - kidlogger.net + - kikinote.com + - killwall.com + - kimy.com.tw + - king5.com + - kingbig.idv.tw + - kingcounty.gov + - kingdomsalvation.org + - kinghost.com + - kinghost.com.br + - kingstone.com.tw + - kinostar.uz + - kiproxy.com + - kir.jp + - kissbbao.cn + - kissyoutube.com + - kitagawa-pro.com + - kitchendesignsideasite.com + - kiwi.kz + - kk5.biz + - kkproxy.com + - kkproxy.pw + - kl.am + - klart.se + - kleinezeitung.at + - klick-tipp.com + - klickmembersproject.com.br + - klip.me + - km.ru + - km77.com + - kmtlbb.com + - knifehome.com.tw + - knmi.nl + - knowlarity.com + - knowledgerush.com + - knowyourmobile.com + - koaci.com + - kobe-np.co.jp + - kobe.idv.tw + - kochbar.de + - komixxx.com + - kompas.com + - kompasiana.com + - kompass.com + - komunitasfacebook.com + - koornk.com + - koozai.com + - korea-twitter.com + - korzik.net + - koxy.de + - kpop-instagram.com + - kpopstarz.com + - kproxy.com + - kproxy.in + - kprs.com + - kqvod.net + - kraftfuttermischwerk.de + - kreationjuice.com + - kristinandcory.com + - ksnews.com.tw + - ktrmr.com + - ktscc.idv.tw + - ktunnel.com + - ktunnel.net + - ktv.jp + - ktv52.com + - ku8m.com + - kuaibo444.com + - kuaihei.com + - kuaitv.net + - kuaizui.org + - kui.name + - kumao.cc + - kun.im + - kungfuboard.com + - kurzweilai.net + - kusc.org + - kuveytturk.com.tr + - kuyouwo.cn + - kwestiasmaku.com + - kwongwah.com.my + - kxlf.com + - kxlh.com + - ky3.com + - kyivpost.com + - kyobobook.co.kr + - kyohk.net + - kyoto-u.ac.jp + - kzeng.info + - l-anon.com + - la-forum.org + - labioguia.com + - labutaca.net + - ladbrokes.be + - ladbrokes.com + - ladbrokes.com.au + - lady-sonia.com + - ladyboygloryhole.com + - ladycheeky.com + - ladylike.gr + - lagometer.de + - lagranepoca.com + - laiba.com.au + - lakmeindia.com + - lalulalu.com + - lama.com.tw + - lamayeshe.com + - lamisstwitter.com + - lanacion.com.ar + - lancenet.com.br + - landofnod.com + - lang33.com + - langprism.com + - lankahotnews.info + - laola1.at + - laola1.tv + - laoyang.info + - lapagina.com.sv + - lapeyre.fr + - laps3.com + - laptopsdirect.co.uk + - laqingdan.net + - larazon.es + - larepubliquedespyrenees.fr + - largeporntube.com + - largexhamster.com + - lastfm.es + - lataayoutube.com + - latimes.com + - latinbabeslinks.com + - latribune.fr + - laurag.tv + - laverdad.com + - lavoixdunord.fr + - lavoratorio.it + - lavoricreativi.com + - lavoztx.com + - law.com + - layneglass.com + - lazada.com.ph + - lazymike.com + - lcads.ru + - ldmstudio.com + - le-dictionnaire.com + - lead.idv.tw + - leadferret.com + - leafly.com + - learntohackfacebook.com + - leeds.ac.uk + - leela.tv + - lefjsq.com + - lefora.com + - leggycash.com + - lematin.ch + - lemmonjuice.com + - lemonde.fr + - lemoniteur.fr + - lendingclub.com + - lens.hk + - lenzor.com + - leprogres.fr + - lesoir.be + - lester850.info + - letrasfacebook.com + - letsallhide.info + - letscorp.com + - letscorp.net + - lexilogos.com + - lezcuties.com + - lge.com + - lian33.com + - lianyue.net + - liaoti.net + - liaowangxizang.net + - liberal.org.hk + - libertytimes.com.tw + - libremercado.com + - lidecheng.com + - lidl-hellas.gr + - life.hu + - lifehacker.co.in + - lifehacker.com + - lifescript.com + - lightbox.com + - lighthouseteenseries.com + - lightingdirect.com + - liiga.fi + - liistfacebook.com + - likeddot.com + - lincolnfp.com + - lindaikejiblogspot.com + - line.me + - line25.com + - linglingfa.com + - lingyi.cc + - link666.info + - linkadeh.com + - linkedin.com + - linkedinjuice.com + - linkideo.com + - linkmefree.net + - linkmetube.com + - links.org.au + - linksalpha.com + - linkuswell.com + - linkworth.com + - linkxchanger.mobi + - linkyoutube.com + - linpie.com + - lipsy.co.uk + - lipuman.com + - liquida.it + - list4proxy.de + - listentoyoutube.com + - listotic.com + - listproxy.info + - littleshoot.org + - littlewebdirectory.com + - liuhanyu.com + - liujianshu.com + - live-proxy.com + - livechennai.com + - livejournal.com + - liveleak.com + - livescience.com + - livescore.co.kr + - livescore.in + - livesexvod.com + - livesmi.com + - livesports.pl + - livestation.com + - livevideo.com + - liychn.cn + - lizhidy.com + - llproxy.pw + - lmzj.net + - load.to + - localdomain.ws + - localhost.com + - localpresshk.com + - localstrike.net + - loggly.com + - logic-immo.be + - loginproxy.com + - logodesignjuice.com + - logogenie.net + - logsoku.com + - loiclemeur.com + - loja2.com.br + - lolclassic.com + - lollipop-network.com + - lomadee.com + - londonchinese.ca + - lonestarnaughtygirls.com + - longhair.hk + - longwarjournal.org + - lonny.com + - lookatgame.com + - loopnet.com + - looxy.com + - lopana.com.br + - lordoftube.com + - losandes.com.ar + - losrios.edu + - loupak.cz + - louvre.fr + - lovebakesgoodcakes.com + - loved.hk + - lrtys.com + - lsd.org.hk + - lsforum.net + - lsm.org + - lsmchinese.org + - ltn.com.tw + - ltshu.com + - lubetube.com + - lujunhong2or.com + - lujunhong2or.org + - luke54.org + - lukesblogspot.com + - lululu.cc + - lululuwang.com + - lunliys.com + - lupm.org + - lustful-girls.com + - lustful3dgirls.com + - lutataa.com + - luxebc.com + - luxuryestate.com + - luxurygirls.com + - lvinpress.com + - lvv2.com + - lyddkartcircuit.com + - lyfhk.net + - lyoness.tv + - lyrsense.com + - m3rf.com + - m8008.com + - m88a.com + - m88asia.com + - maarip.org + - mablet.com + - macau-slot.com + - macauslot.com + - macobserver.com + - macrovpn.com + - mad.com + - madad2.com + - madebony.com + - madsextube.com + - magazinemanager.com + - magicbricks.com + - magiran.com + - mahnor.com + - maichuntang.info + - maiio.net + - mail-archive.com + - mailhostbox.com + - mailp.in + - mailxmail.com + - mainlinkads.com + - mainprox.com + - makerstudios.com + - makure.com + - malavida.com + - malaysiabay.info + - maltaweathersite.com + - maltese.com + - mamisite.com + - manageryoutube.com + - managerzone.com + - manatelugu.in + - mangovpn.com + - maniash.com + - manicur4ik.ru + - manoto1.com + - manototv.com + - mans.edu.eg + - mansion.com + - mansionpoker.com + - mantan-web.jp + - manypicture.com + - maodaili.us + - maomaotlbb.com + - maomei.info + - mapsofindia.com + - marcamarca.com.tr + - marche.fr + - marcovasco.fr + - mardomak.org + - marguerite.su + - marianne.net + - marketforce.com + - marketron.com + - marketsandmarkets.com + - marxist.com + - marxists.org + - mashable.com + - masihalinejad.com + - masteraplayer.com + - mastercity.ru + - matchendirect.fr + - mathcourse.net + - mathland.idv.tw + - matomeantena.com + - matrixteens.com + - matsu.idv.tw + - matt1.net + - mature-gloryhole.com + - maturegnome.com + - maturevidstube.com + - maturexfuck.com + - maturexhamster.com + - maven.org + - maxicep.com + - maxidivx.com + - maxiocio.net + - maxpreps.com + - mayajo.com + - mbc.net + - mbusa.com + - mcdonalds.com + - mcreasite.com + - mct.gov.az + - md-t.org + - mdjunction.com + - mecze24.pl + - mediafire.com + - mediafreakcity.com + - mediayou.net + - medicaldaily.com + - medicamentos.com.mx + - medicare.gov + - medyatwitter.com + - meemi.com + - meetic.com + - meetic.es + - meetic.it + - mefeedia.com + - mega-xhamster.com + - megabyet.net + - megaindex.tv + - megamidia.com.br + - megaporn.com + - megaproxy.com + - megaproxy.com.ar + - meimeidy.com + - meineihan.com + - meinvshipin.net + - mejorproxy.com + - melimazhabi.com + - melissadata.com + - membuatfacebook.com + - memehk.com + - memrijttm.org + - menki.idv.tw + - menover30.com + - mensagenscomamor.com + - mentalfloss.com + - mercyprophet.org + - meridiano.com.ve + - merit-times.com.tw + - meriview.in + - merlion.com + - mesotw.com + - met-art.com + - meta.ua + - metacafe.com + - metacritic.com + - metaffiliation.com + - metart1.com + - metartz.com + - meteo.cat + - meteoconsult.fr + - meteomedia.com + - metifar.com + - metric-conversions.org + - metropoli.com + - metroradio.com.hk + - metroui.org.ua + - metservice.com + - meyou.jp + - mfacebook.com + - mfbiz.com + - mforos.com + - mgoon.com + - mgstage.com + - mh700.cf + - mha.nic.in + - mhradio.org + - mibrujula.com + - midiamax.com + - midilibre.fr + - midnightfever.com + - mightydeals.com + - mihanblog.com + - mihanmarket.com + - mihk.hk + - mihr.com + - milanotoday.it + - militaryfactory.com + - millipiyango.gov.tr + - milsurps.com + - miltt.com + - mimivip.com + - mindandlife.org + - mindspark.com + - minghui-school.org + - minghui.de + - minghui.org + - mingjinglishi.com + - mingjingnews.com + - mingpao.com + - mingpaocanada.com + - mingpaofun.com + - mingpaomonthly.com + - mingpaonews.com + - mingpaony.com + - mingpaosf.com + - mingpaotor.com + - mingpaovan.com + - mingshengbao.com + - mini189.com + - mininova.org + - minisizebikini.com + - ministrybooks.org + - minkchan.com + - minutebuzz.com + - minutodigital.com + - minzhuhua.net + - minzhuzhongguo.org + - miqiqvod.com + - mirrorbooks.com + - misionescuatro.com + - miss-no1.com + - misty-web.com + - mitbbs.ca + - mitbbs.co.nz + - mitbbs.co.uk + - mitbbs.com + - mitbbs.org + - mitbbsau.com + - mitbbshk.com + - mitbbsjp.com + - mitbbssg.com + - mitbbstw.com + - mitmproxy.org + - mixero.com + - mixlr.com + - mixpod.com + - mixturecloud.com + - mixx.com + - mixxxx.com + - mk.ru + - mk5000.com + - mktmobi.com + - mlcool.com + - mm-11.com + - mm-cg.com + - mm6yt.com + - mmcoo.cn + - mmdays.com + - mmmca.com + - mobile01.com + - mobilelaby.com + - mobilesmovie.in + - mobypicture.com + - mobzo.net + - mockblock.com + - mocovideo.jp + - model-tokyo.com + - modells.com + - moe.gov.my + - moegirl.org + - mofosex.com + - moins-depenser.com + - mojang.com + - mojim.com + - mojtv.hr + - moka9.com + - molihua.org + - mommyslittlecorner.com + - momo-d.jp + - momon-ga.com + - momsexclipz.com + - momtubeclipz.com + - mondebarras.fr + - mondemp3.com + - money-link.com.tw + - moneymakergroup.com + - mongodb.org + - monitorinvest.ru + - monoprix.fr + - monsterproxy.info + - montrealgazette.com + - mooo.com + - moosejaw.com + - morbell.com + - moria.co.nz + - morningstar.com + - morphium.info + - mostfastproxy.org + - mothqfan.com + - moto.it + - motor4ik.ru + - motorionline.com + - motorlife.it + - mousebreaker.com + - movie-jamrock.com + - movie2kproxy.com + - movie4k.to + - movie4kproxy.com + - movie8k.to + - moviegalleri.net + - movietitan.com + - movistar.com.ve + - moztw.org + - mp3buscador.com + - mp3days.com + - mp3juices.com + - mp3okay.com + - mp3qu.com + - mp3rhino.com + - mp3skull.com + - mp3skull.tv + - mp3strana.com + - mp3truck.net + - mp3ye.eu + - mp4movies.info + - mpggalaxy.com + - mpinews.com + - mprnews.org + - mr7.ru + - mrbrowser.com + - mrgreen.com + - mrstiff.com + - mrunblock.com + - ms881.com + - msguancha.com + - mshcdn.com + - msi.com + - msk.su + - msn.com + - msn.com.tw + - mt.gov.br + - mtm.or.jp + - mtnldelhi.in + - mtvav.com + - muaban.net + - muambator.com.br + - muchosucko.com + - mulhak.com + - mullvad.net + - multiproxy.org + - multiupload.com + - mummysgold.com + - mundodesconocido.es + - mundodomarketing.com.br + - mundosexanuncio.com + - mundotoro.com + - murmur.tw + - muryouav.net + - muselinks.co.jp + - musicade.net + - musictimes.com + - musicvideomp3.com + - musik-videos.dk + - musimundo.com + - muslimvideo.com + - muslm.org + - mustaqim.net + - muzofon.com + - mwolk.com + - my-formosa.com + - my-personaltrainer.it + - my-private-network.co.uk + - my-proxy.com + - my1tube.com + - my3xxx.com + - my903.com + - myapp.com.tw + - myaudiocast.com + - myav.com.tw + - mybabyprox.info + - mybdsmvideos.net + - mybestvpn.com + - mybet.com + - myblog.it + - mybnb.tw + - myca168.com + - mychat.to + - mychinamyhome.com + - mychinanews.com + - mycloud.idv.tw + - mycould.com + - mydati.com + - mydlink.com + - myeasytv.com + - myex.com + - myfashionjuice.com + - myforum.com.hk + - myforum.com.uk + - myfreepaysite.com + - myfreshnet.com + - myhardphotos.tv + - myhhg.org + - myhotsite.net + - myip.ms + - myip.net + - myiphide.com + - mylittleblogspot.com + - mymailsrvr.com + - mymaji.com + - mymovies.it + - mypagerank.net + - mypass.de + - myproxysite.org + - myrecipes.com + - myretrotube.com + - mysinablog.com + - mysoft.idv.tw + - myspace.com + - myspaceunblockit.com + - myspaceunlock.com + - mytedata.net + - myvido1.com + - myvnc.com + - myvouchercodes.co.uk + - mywebproxy.asia + - mywebsearch.com + - mywendysmusic.com + - mz-web.de + - nabble.com + - nailideasite.com + - najlepsze.net + - naked-nude.com + - nakido.com + - naluone.biz + - naluone.net + - namestation.com + - nanoproxy.com + - nanoproxy.de + - nanyang.com + - nanyang.com.my + - nanyangpost.com + - nanzao.com + - naol.ca + - nariman.me + - nat.gov.tw + - natado.com + - nationwide.com + - natlconservative.com + - naturallycurly.com + - nature.com + - naughtyamerica.com + - naughtytube.net + - nayaritenlinea.mx + - nbcwashington.com + - nccwatch.org.tw + - nch.com.tw + - ncn.org + - ncol.com + - ndr.de + - necclassicmotorshow.com + - ned.org + - nediyor.com + - neighborhoodr.com + - neixiong.com + - nelnet.net + - neolee.cn + - nerfnow.com + - net-a-porter.com + - net.hr + - netbirds.com + - netfirms.com + - netherlandsbay.info + - neti.ee + - netlog.com + - netspend.com + - network54.com + - networkedblogs.com + - networkview.ru + - netxee.com + - neutrogena.com + - nevernumb.com + - new-akiba.com + - new-xhamster.com + - newcenturymc.com + - newchen.com + - newfreeproxy.com + - newgrounds.com + - newipnow.com + - newkaliningrad.ru + - newlandmagazine.com.au + - newnews.ca + - newproxy.pw + - newproxylist.net + - newrichmond-news.com + - news-medical.net + - news-xhamster.com + - news.at + - news1.kr + - news100.com.tw + - news247.gr + - news4andhra.com + - news4jax.com + - news520.idv.tw + - newsancai.com + - newsarama.com + - newscn.org + - newsdh.com + - newsextube.org + - newsit.gr + - newsiteproxy.info + - newspeak.cc + - newspickup.com + - newsr.in + - newstapa.org + - newstarnet.com + - newstube.ru + - newstwitter.com + - newtaiwan.com.tw + - newtalk.tw + - newunblocker.com + - next11.co.jp + - nextcontent.pl + - nextmedia.com + - nexttv.com.tw + - nf.id.au + - nfxxoo.com + - nhacso.net + - nhra.com + - niceyoungteens.com + - nichegalz.com + - nicotwitter.com + - nicovideo.jp + - nicoviewer.net + - niedziela.nl + - nightwalker.co.jp + - nikon.com + - nilongdao.com.cn + - nimenhuuto.com + - ning.com + - ninisite.com + - ninjabrowse.com + - ninjacloak.ca + - ninjacloakproxy.com + - ninjaproxy.eu + - ninjaproxy.info + - ninkipal.com + - njmaq.com + - nkongjian.com + - nlb.si + - nlfreevpn.com + - nlog.cc + - nlproxy.ru + - nn-nymphets.com + - nn2014.com + - nnlian.info + - nnproxy.pw + - no-ip.org + - noblecasino.com + - nodesnoop.com + - nol.hu + - nolags.pl + - nominet.org.uk + - nomorerack.com + - nonton88.com + - nooz.gr + - norauto.fr + - nordstrom.com + - northamericanproxy.com + - northjersey.com + - norwaybay.info + - nostringsattached.com + - notaelpais.com + - notices-pdf.com + - noticias.info + - noticiasrcn.com + - noticierodigital.com + - notjustok.com + - nottinghampost.com + - novedadesfacebook.com + - novelasfacebook.com + - novostimira.biz + - nownews.com + - nowtorrents.com + - noypf.com + - npa.go.jp + - npg.idv.tw + - nps.gov + - nqma.net + - nquran.com + - nrk.no + - nsc.gov.tw + - nsfwyoutube.com + - nstarikov.ru + - nsteens.org + - ntd.tv + - ntdtv.com + - ntdtv.jp + - ntdtv.ru + - ntdtvla.com + - ntu.edu.tw + - nu.nl + - nubelo.com + - nubiles.net + - nubileworld.com + - nude.hu + - nudegirls.pro + - nudetube.com + - nudography.com + - nuovomegavideo.com + - nutech.nl + - nuvid.com + - nviewer.mobi + - nwzonline.de + - nycgo.com + - nydus.ca + - nykaa.com + - nylon-angel.com + - nylonstockingsonline.com + - nytimes.com + - nyxcosmetics.fr + - nzchinese.net.nz + - o2youtube.com + - o4e.pw + - oauth.net + - oberon-media.com + - obutu.com + - ocaspro.com + - occupier.hk + - ocks.org + - oclp.hk + - ocreampies.com + - octane.tv + - octanevpn.com + - ocweekly.com + - ocwencustomers.com + - oeker.net + - oem.com.mx + - officeholdings.co.uk + - officer.com + - offshoreip.com + - ogaoga.org + - ogglist.com + - oglaf.com + - ogli.org + - ogp.me + - ohix.com + - ohjapanporn.com + - ohtuleht.ee + - oikos.com.tw + - oiktv.com + - ok8666.com + - okayfreedom.com + - okezone.com + - okip.info + - okk.tw + - okmall.tw + - okproxy.com + - older-beauty.com + - oldi.ru + - oldxy.info + - oliveoilsega.idv.tw + - oloblogger.com + - olx.com.ng + - olx.com.sv + - olympicwatch.org + - om.net + - omapass.com + - omegawatches.com.tw + - omgubuntu.co.uk + - omlogistics.co.in + - omnitalk.com + - omroepbrabant.nl + - omsk.su + - omy.sg + - on.cc + - onegaydaddy.com + - onego.ru + - onemedical.com + - onenewspage.com + - onepieceofbleach.com + - oneyoutube.com + - oninstagram.com + - onisep.fr + - onjuice.com + - online-anonymizer.com + - online-casino.de + - onlineaccess1.com + - onlineandhrabank.net.in + - onlineanonymizer.com + - onlinebank.com + - onlinebizguide.net + - onlinecha.com + - onlinefilmx.ru + - onlineinstagram.com + - onlineipchanger.com + - onlinematuretube.com + - onlinemediagroupllc.com + - onlineproxy.co.uk + - onlineproxy.us + - onlineproxyfree.com + - onlinevideoconverter.com + - onlineyoutube.com + - only-m-youtube.com + - onlybestsex.com + - onlyjizz.com + - onlylady.cn + - onmoon.com + - ons22.com + - ons96.com + - onthehunt.com + - ontrac.com + - oo.com.au + - ooo-sex.com + - oopsforum.com + - op.fi + - opel.de + - open-websites.us + - open.com.hk + - opendemocracy.net + - opendoors.nl + - opendoors.org.au + - openinkpot.org + - openleaks.org + - opennet.ru + - openproxy.co.uk + - openrice.com + - opensurf.info + - openthis.pl + - openvpn.net + - opera-mini.net + - opera.com + - opm.gov + - optmd.com + - opview.com.tw + - orakul.ua + - orange.com + - oranges.idv.tw + - orchidbbs.com + - orgasm.com + - orgfree.com + - orientalbutts.com + - orientaldaily.com.my + - orkut.com + - oroxy.com + - orzdream.com + - osikko.jp + - osyan.net + - otnnetwork.net + - ouest-france.fr + - oulove.org + - oup.com + - our-twitter.com + - ourgames.ru + - ourproxy.org + - oursogo.com + - oursteps.com.au + - outdoorlife.com + - outerlandssf.com + - ouvalalgerie.com + - ovaciondigital.com.uy + - over-blog.com + - over-time.idv.tw + - overclockers.com.au + - overplay.net + - ovh.ie + - ovh.it + - ovi.com + - ow.ly + - owind.com + - oxicams.com + - oyax.com + - oyota.net + - ozchinese.com + - ozyoyo.com + - p12p.com + - pacificpoker.com + - packetix.net + - page2rss.com + - pageuppeople.com + - paginegialle.it + - paid2twitter.com + - paid2youtube.com + - painless.idv.tw + - paipan-gazo.com + - paisdelosjuegos.es + - pakfacebook.com + - pakistan.tv + - pakistanjobsbank.com + - pakistanproxy.com + - pakproxy.com + - palacemoon.com + - palakuan.org + - palermo.edu + - palm.com + - palmislife.com + - pandora.tv + - pandoravote.net + - panluan.net + - panoramio.com + - pantyfixation.com + - pao-pao.net + - pao77.com + - pap.fr + - papaproxy.com + - papaproxy.net + - paperlesspost.com + - papersizes.org + - papy.co.jp + - parade.com + - parcelforce.com + - parsiteb.com + - partnercash.com + - partycasino.com + - partypoker.com + - passadoproxy.com + - passion.com + - passionfruitads.com + - passiontimes.hk + - passkey.com + - pastebin.com + - pastie.org + - path.com + - patheos.com + - pathtosharepoint.com + - patrika.com + - pavietnam.vn + - pay-click.ru + - paypal.com + - paypalobjects.com + - payrollapp2.com + - pbase.com + - pbxes.com + - pcanalysis.net + - pcappspot.com + - pcdiscuss.com + - pcdvd.com.tw + - pchome.com.tw + - pcij.org + - pcnet.idv.tw + - pcreview.co.uk + - pcsc.com.tw + - pcso.gov.ph + - pct.org.tw + - pcvector.net + - pdf2jpg.net + - pdproxy.com + - peacefire.org + - peacehall.com + - peakdiscountmattress.com + - pearsoncmg.com + - pedidosya.com.ar + - peeasian.com + - peeping-holes.com + - peerproxy.com + - pejwanyoutube.com + - pekingduck.org + - peliculas21.com + - peliculasdeyoutube.com + - peliculasenyoutube.com + - peliculasland.com + - pelismaseries.com + - penchinese.net + - penchinese.org + - penisbot.com + - pentalogic.net + - penthouse.com + - penthousebabesworld.com + - people.bg + - peoplenews.tw + - peoplepets.com + - peopo.org + - percy.in + - perfectgirls.net + - perfectvpn.net + - perfektegirls.com + - perfspot.com + - perniaspopupshop.com + - persecution.net + - persianfacebook.com + - persiankitty.com + - pet01.tw + - petardas-youtube.com + - petardashd.com + - petfilm.biz + - pewhispanic.org + - pewinternet.org + - pewresearch.org + - pewsocialtrends.org + - ph158.com + - ph84.idv.tw + - phandangkhoa.com + - phapluan.org + - phatograph.com + - phayul.com + - phica.net + - phillynews.com + - phim19.com + - phimsexvip.com + - phimvideo.org + - phonegap.com + - phothutaw.com + - photo-aks.com + - photobox.com + - photogals.com + - php-proxy.net + - php5.idv.tw + - phpbido.com + - phpmyproxy.com + - phree-porn.com + - phyworld.idv.tw + - pib24.com + - picdn.net + - picidae.net + - picsmaster.net + - pidown.com + - piecesetpneus.com + - pign.net + - pikchur.com + - pilio.idv.tw + - pilotmoon.com + - pimptubed.com + - pin6.com + - ping.fm + - pingtest.net + - pinproxy.com + - pintang.info + - pinupfiles.com + - pipeporntube.com + - pipeproxy.com + - piposay.com + - pippits.com + - piraattilahti.org + - piratbit.net + - piratebayproxy.co + - piratebayproxy.co.uk + - piratebrowser.com + - piraterfacebook.com + - pirelli.com + - piring.com + - piss.jp + - pixartprinting.es + - pixelbuddha.net + - pixnet.in + - pixnet.net + - pk.com + - pkobp.pl + - pkspiyungan.org + - pkt.pl + - planetsuzy.org + - planproxy.com + - plant-seeds.idv.tw + - plantillas-blogger-blogspot.com + - platinumhideip.com + - platum.kr + - playboy.ro + - player.pl + - playforceone.com + - playfun.mobi + - playlover.net + - plays.com.tw + - pliage-serviette-papier.info + - plixi.com + - plm.org.hk + - plndr.com + - plunder.com + - plurk.com + - plus.es + - plus28.com + - plusbb.com + - pmates.com + - pmi.it + - pocketcalculatorshow.com + - podcastblaster.com + - pogledaj.name + - point.md + - pointblank.ru + - pointstreak.com + - pokerstars.com + - pokerstars.eu + - pokerstars.net + - pokerstrategy.com + - policja.gov.pl + - politico.com + - politobzor.net + - pollstar.com + - polygamia.pl + - polysolve.com + - poonfarm.com + - popnexsus.com + - popphoto.com + - popular-youtube.com + - popyard.com + - popyard.org + - porn-xhamster.com + - porn.com + - porn2.com + - porn99.net + - pornbase.org + - pornerbros.com + - pornhome.com + - pornhost.com + - pornhub.com + - pornhub.com.bz + - pornhubking.com + - pornhublive.com + - pornicom.com + - pornoshara.tv + - pornoxo.com + - pornpin.com + - pornplays.com + - pornrapidshare.com + - pornstarclub.com + - porntitan.com + - porntube.com + - porntubenews.com + - porntubexhamster.com + - pornvisit.com + - porsh.idv.tw + - portadasparafacebook.com + - portoseguro.com.br + - posb.com.sg + - posestacio.com.br + - post852.com + - postads24.com + - posterous.com + - postmoney.com.br + - postonfacebook.com + - pourquoidocteur.fr + - povpn.org + - povpn3.com + - power.com + - powermapper.com + - powerpointninja.com + - poxy.pl + - poznavatelnoe.tv + - ppproxy.pw + - ppss.kr + - pr.gov + - prabhatkhabar.com + - prasinanea.gr + - pravda.ru + - predpriemach.com + - president.az + - president.gov.tw + - prestigecasino.com + - prettyvirgin.com + - prettywifes.com + - previdencia.gov.br + - price.ua + - priceminister.com + - pricetravel.com.mx + - pridesites.com + - primeporntube.com + - primicia.com.ve + - prisoneralert.com + - pritunl.com + - private-internet.info + - privatebrowsing.info + - privateinternetaccess.com + - privateproxyreviews.com + - privateserver.nu + - privatetunnel.com + - privatevoyeur.com + - privatevpn.com + - pro-4u.com + - pro-unblock.com + - proceso.com.mx + - profittask.com + - programastwitter.com + - programmableweb.com + - projecth.us + - proksiak.pl + - proksyfree.com + - prolink.pl + - prom.ua + - promopro.com + - pron.com + - pronosticos.gob.mx + - proproxy.me + - prosper.com + - protectmyid.com + - protectproxy.com + - protv.ro + - prounlock.org + - proverbia.net + - provideocoalition.com + - provinz.bz.it + - prowang.idv.tw + - prox.pw + - proxay.co.uk + - proxery.com + - proxfly.com + - proxfree.com + - proxfree.pk + - proxifier.com + - proxify.co.uk + - proxify.com + - proxite.me + - proxite.net + - proxite.org + - proxite.us + - proxlet.com + - proxmyass.com + - proxpn.com + - proxtik.com + - proxurf.com + - proxxy.co + - proxy-2014.com + - proxy-bg.com + - proxy-bypass.com + - proxy-ip-list.com + - proxy-online.net + - proxy-romania.info + - proxy-server.at + - proxy-service.com.de + - proxy-service.de + - proxy-site.com.de + - proxy-top.com + - proxy-unlock.com + - proxy.al + - proxy.com.de + - proxy.org + - proxy.yt + - proxy01.com + - proxy14.com + - proxy2014.net + - proxy4free.cf + - proxy4free.com + - proxy4free.pl + - proxy4usa.com + - proxy4youtube.com + - proxy4youtube.info + - proxy8.asia + - proxyanonimo.es + - proxyanonymizer.net + - proxyapp.org + - proxybay.info + - proxybay.nl + - proxybig.net + - proxybitcoin.com + - proxyboost.net + - proxybrowse.net + - proxybrowser.org + - proxybrowseronline.com + - proxybrowsing.com + - proxybutler.co.uk + - proxybutton.com + - proxycab.com + - proxychina.net + - proxyclube.org + - proxycn.cn + - proxycrime.com + - proxydada.com + - proxydogg.com + - proxyfor.eu + - proxyforplay.com + - proxyforyoutube.net + - proxyfounder.com + - proxyfoxy.com + - proxyfree.org + - proxygizlen.com + - proxygogo.info + - proxyguru.info + - proxyhash.info + - proxyhub.eu + - proxykickass.com + - proxykorea.info + - proxylist.org.uk + - proxylist.se + - proxylisting.org + - proxylistpro.co.uk + - proxylistpro.com + - proxylists.me + - proxylisty.com + - proxymesh.com + - proxymexico.com + - proxymus.de + - proxynoid.com + - proxyok.com + - proxyonline.ro + - proxyoo.com + - proxypk.com + - proxypronto.com + - proxypy.net + - proxypy.org + - proxyregister.com + - proxyroad.com + - proxys.pw + - proxysan.info + - proxysandy.com + - proxysensation.com + - proxyserver.asia + - proxyserver.com + - proxyserver.pk + - proxyserver.pw + - proxyshield.org + - proxysite.com + - proxysite.pw + - proxysite.ws + - proxysitelist.org + - proxysites.com + - proxysites.in + - proxysites.net + - proxysix.com + - proxysmurf.nl + - proxysnel.nl + - proxyspain.com + - proxysslunblocker.com + - proxystreaming.com + - proxysubmit.com + - proxysurfing.org + - proxysurfs.com + - proxytu.com + - proxytunnel.in + - proxytunnel.net + - proxyturbo.com + - proxyunblocker.org + - proxyusa.org + - proxyvideos.com + - proxyvpn.eu + - proxyweb.com.es + - proxyweb.net + - proxywebproxy.info + - proxywebsite.co.uk + - proxywebsite.org + - proxywebsite.us + - proxyzan.info + - prudentman.idv.tw + - prweek.com + - prx.im + - prxme.com + - ps3youtube.com + - pse100i.idv.tw + - psi.gov.sg + - psu.ac.th + - psychcentral.com + - psychologies.ru + - ptitchef.com + - pts.org.tw + - ptt.cc + - ptt.gov.tr + - pu.edu.pk + - public.lu + - publisuites.com + - publix.com + - pubu.com.tw + - puffinbrowser.com + - puffstore.com + - pujiahh.com + - pulsepoint.com + - punishtube.com + - pureandsexy.org + - purecfnm.com + - pureinsight.org + - purelovers.com + - purepeople.com.br + - purevpn.com + - purifymind.com + - pushpsavera.com + - pushtraffic.net + - pussy.org + - putaz.com + - putihome.org + - putlocker.com + - putproxy.com + - puuko.com + - pwnyoutube.com + - px.co.nl + - pxaa.com + - pypna.com + - pyramydair.com + - python.com + - python.com.tw + - q22w.com + - qanote.com + - qgairsoft.com.br + - qi41.com + - qiangb.com + - qidian.ca + - qienkuen.org + - qilumovie.com + - qinmin8.com + - qiqisea.com + - qire123.com + - qisexing.com + - qisuu.com + - qiu.la + - qiwen.lu + - qkshare.com + - qmzdd.com + - qoos.com + - qooza.hk + - qq-av.com + - qq.co.za + - qqproxy.pw + - qqq321.com + - qruq.com + - quackit.com + - queantube.com + - quechoisir.org + - queermenow.net + - quickprox.com + - quickproxy.co.uk + - quietyoutube.com + - qukandy.com + - qvc.de + - qvcuk.com + - qvod123.net + - qvod6.net + - qvodcd.com + - qvodhe.com + - qvodzy.org + - qweyy.com + - qwqshow.com + - qx.net + - r2sa.net + - raccontimilu.com + - racingvpn.com + - rada.gov.ua + - radaris.com + - radioaustralia.net.au + - radiofarda.com + - radiotime.com + - radiozamaneh.com + - radyoturkistan.com + - rael.org + - raidcall.com + - raidcall.com.br + - raidcall.com.ru + - raidcall.com.tw + - raiders.com + - raidtalk.com.tw + - raiffeisenpolbank.com + - rajanews.com + - rajayoutube.com + - rakuten-bank.co.jp + - ramblingsofmama.com + - randyblue.com + - rantenna.net + - raooo.com + - rapbull.net + - rapeforced.com + - rapidproxy.org + - rapidproxy.us + - rapidsharedata.com + - rappler.com + - raqq.com + - rategf.com + - razrabot4ik.ru + - rc-fans88.com + - rcinet.ca + - reachlocal.net + - read100.com + - readersdigest.de + - readersdigestdirect.com.au + - readingtimes.com.tw + - readmoo.com + - readnews.gr + - readtiger.com + - readydown.com + - realclearsports.com + - realestate.com + - realhomesex.net + - reality.hk + - realmadrid.com + - realmadryt.pl + - realmatureswingers.com + - realmaturetube.com + - realraptalk.com + - realsexpass.com + - realsimple.com + - realspeed.info + - recetasgratis.net + - recettes.de + - recipdonor.com + - reconnectiontaiwan.tw + - recordhistory.org + - recovery.org.tw + - redcrackle.com + - reddit.com + - redian.today + - redlightcenter.com + - redsocialfacebook.com + - redtube.com + - redtube.com.br + - redtube.com.es + - redtube.net.pl + - redtube.org.pl + - reed.co.uk + - reelzhot.com + - referenceur.be + - referer.us + - reg.ru + - regional-finder.com + - reibert.info + - reifefrauen.com + - relaxbbs.com + - relevance.com + - reliancedigital.in + - reliancenetconnect.co.in + - remax.com + - remontka.pro + - removefilters.net + - renfe.es + - renminbao.com + - renrenpeng.com + - rentalcars.com + - renyurenquan.org + - replayyoutube.com + - rerouted.org + - rescueme.org + - response.jp + - retranstwitter.com + - retweetrank.com + - reuters.com + - reviewcentre.com + - reviveourhearts.com + - revleft.com + - revver.com + - rexoss.com + - rfa.org + - rfachina.com + - rfamobile.org + - rfaweb.org + - rferl.org + - rfi.fr + - rgfacebook.com + - rghost.ru + - rhcloud.com + - ri86.com + - rib100.com + - ribiaozi.info + - ricardoeletro.com.br + - richmediagallery.com + - rigpa.org + - rijnmond.nl + - riku.me + - rileyguide.com + - ripley.com.pe + - rivegauche.ru + - rlwlw.com + - rncyoutube.com + - rnw.nl + - roadbikereview.com + - roadrunner.com + - roadshow.hk + - rockmelt.com + - rod.idv.tw + - romanandreg.com + - roodo.com + - roogen.com + - roozonline.com + - rosi.mn + - rosimn.com + - rostelecom.ru + - rotten.com + - roundcube.net + - routeserver.se + - royallepage.ca + - rozetka.com.ua + - rozhlas.cz + - rozryfka.pl + - rozzlobenimuzi.com + - rpp.com.pe + - rrbald.gov.in + - rrsoso.com + - rryoutube.com + - rsb.ru + - rsf-chinese.org + - rsf.org + - rssing.com + - rssmeme.com + - rthk.hk + - rthk.org.hk + - rti.org.tw + - rtysm.net + - ruanyifeng.com + - rubias19.com + - rubyfortune.com + - rulertube.com + - runningwarehouse.com + - ruporn.tv + - ruscams.com + - rushbee.com + - russianproxy.org + - rusxhamster.com + - rutor.org + - rutwitter.com + - ruuh.com + - ruv.is + - ruvr.ru + - ruyiseek.com + - rxhj.net + - rxproxy.com + - ryerson.ca + - s-dragon.org + - s135.com + - s8soso.com + - sacitaslan.com + - safariproxy.com + - safenfree.com + - safeproxy.org + - safervpn.com + - safeunblock.com + - sageone.com + - sagepay.com + - saiq.me + - saishuu-hentai.net + - sakuralive.com + - salamnews.org + - salesforceliveagent.com + - salir.com + - salonmicroentreprises.com + - salvation.org.hk + - samair.ru + - samanyoluhaber.com + - sambamediasl.com + - sancadilla.net + - sanjitu.com + - sankeibiz.jp + - sanmin.com.tw + - santabanta.com + - sanwapub.com + - sao47.com + - sao92.com + - saponeworld.com + - sasa123.com + - sat24.com + - sat4the.co.uk + - saude.gov.br + - saudi-twiter.tk + - saudiarabiabay.info + - saveinter.net + - savemyrupee.com + - savetibet.org + - savetibet.ru + - savevid.com + - saveyoutube.com + - sawmillcreek.org + - say-move.org + - sayproxy.info + - sbo128.com + - sbo222.com + - sc.gov.br + - scamaudit.com + - scambook.com + - scasino.com + - sccc1.com + - schema.org + - school-proxy.org + - school-unblock.com + - school-unblock.net + - schoolproxy.co + - schoolproxy.info + - schoolproxy.pk + - schooltunnel.net + - schuh.co.uk + - sciencesetavenir.fr + - scirp.org + - sclub.tw + - scmp.com + - scmpchinese.com + - scopesandammo.com + - scrapy.org + - screen4u.net + - scribd.com + - scriptingvideos.info + - scruzall.com + - sctimesmedia.com + - sctv31.com + - sdbluepoint.com + - se-duc-tive.com + - se94se.org + - se9678.com + - se999se.com + - seahawks.com + - search-mp3.com + - search.com + - search4passion.com + - searchblogspot.com + - searchgeek.com + - searchinstagram.com + - searchtruth.com + - secret.ly + - secretchina.com + - secretosdefacebook.com + - secretsline.biz + - secretsofthefed.com + - secsurfing.com + - sectur.gob.mx + - securebox.asia + - securefor.com + - securepro.asia + - secureserver.net + - securesurf.pw + - security.cl + - securityinabox.org + - securitykiss.com + - seekbabes.com + - seekpart.com + - seektoexplore.com + - segou456.info + - seguidoresinstagram.com + - segye.com + - seh1.com + - seh5.com + - seh7.com + - seikatsuzacca.com + - selang.ca + - selang33.com + - selaoer.com + - selectornews.com + - selekweb.com + - semaomi.com + - semonk.info + - sendgrid.net + - sendingcn.com + - sendspace.com + - seniorsoulmates.com + - sensortower.com + - sensualgirls.org + - senzuritv.com + - seocheki.net + - seopanda.net + - seosphere.com + - seovalley.com + - sequoiacap.com + - seraph.me + - serveblog.net + - serveirc.com + - servepics.com + - servermania.com + - servermatrix.org + - service.gov.uk + - ses999.com + - sesawe.org + - sese9797.com + - seseaa.com + - seserenti.com + - setty.com.tw + - sevenload.com + - seventeenbabes.com + - sex-11.com + - sex-sms-contacts.com + - sex.com + - sex169.org + - sex3.com + - sex520.net + - sex8.cc + - sexandsubmission.com + - sexbot.com + - sexdelivery.com + - sexdougablog77fc2.com + - sexfortv.com + - sexgamepark.com + - sexgo2av.com + - sexgoesmobile.com + - sexhu.com + - sexhuang.com + - sexinsex.net + - sexjapanporn.com + - sexmm520.com + - sexmoney.com + - sexnhanh.com + - sexoteric.com + - sexpreviews.eu + - sexstarsonly.com + - sextracker.com + - sextubeset.com + - sextvx.com + - sexualhentai.net + - sexxse.com + - sexy-babe-pics.com + - sexy-lingerie.ws + - sexy.com + - sexyandfunny.com + - sexyfuckgames.com + - seyedmojtaba-vahedi.blogspot.co.uk + - sf558.com + - sfacebook.com + - sfileydy.com + - sfora.pl + - sgblogs.com + - sgchinese.net + - sgcpanel.com + - sgttt.com + - shablol.com + - shabnamnews.com + - shacknews.com + - shadowsocks.org + - shahamat-english.com + - shahamat-movie.com + - shambhalasun.com + - shangfang.org + - shaoka.com + - shape.in.th + - shapeservices.net + - sharebee.com + - sharpdaily.com.hk + - sharpdaily.hk + - shaunthesheep.com + - shavedpussy.pro + - shayujsq.org + - shefacebook.com + - sheikyermami.com + - sheldonsfans.com + - shelf3d.com + - shellfire.de + - shemale-asia.com + - shemaletimpo.com + - shenghuonet.com + - shenyun.com + - shenyunperformingarts.org + - sherdog.com + - shiatv.net + - shiftdelete.net + - shinyi-aikido.idv.tw + - shiraxxx.com + - shireyishunjian.com + - shireyishunjian.org + - shistlbb.com + - shitaotv.org + - shizhao.org + - shock-news.net + - shooshtime.com + - shootq.com + - shop.by + - shop2000.com.tw + - shopcade.com + - shopping.com + - shopping.com.bn + - shopping.com.ua + - shorthairstyleideasite.com + - shoutussalam.com + - showthis.pl + - showtime.jp + - shqiplive.info + - shuangtv.net + - shulou.com + - shutterstock.com + - shvoong.com + - shwchurch3.com + - siakapkeli.com + - siamsport.co.th + - siks.com + - silkbook.com + - silverfacebook.com + - silverstripe.org + - sima-land.ru + - simboli-facebook.com + - simbolosparafacebook.com + - simbolostwitter.com + - similsites.com + - sina.com + - sina.com.hk + - sina.com.tw + - singaporebay.info + - singaporepools.com.sg + - singtao.ca + - singtao.com + - singtao.com.au + - singtaousa.com + - singyoutube.com + - sinica.edu.tw + - sinoants.com + - sinocism.com + - sinonet.ca + - sinopitt.info + - sinoquebec.com + - sis001.com + - sis001.us + - sis8.com + - sita.aero + - site2unblock.com + - siteblocked.org + - sitebro.tw + - siteexplorer.info + - sitefile.org + - siteget.net + - sitemanpro.com + - sitenable.com + - skimtube.com + - skinnytaste.com + - sky.com.br + - skybet.com + - skykiwi.com + - skype.com + - skyscanner.com.br + - skyscanner.fr + - skyscanner.nl + - skyword.com + - skyzone.com + - slandr.net + - sldao.us + - slickamericans.com + - slickvpn.com + - slideshare.net + - slime.com.tw + - slinkset.com + - slipstick.com + - sloggi.com + - sloppytube.com + - slutload.com + - slutroulette.com + - slutsofinstagram.com + - slysoft.com + - slyuser.com + - smaato.com + - smartusa.com + - smashingreader.com + - smile.co.uk + - smithmicro.com + - smlm.info + - smokeproxy.com + - smude.edu.in + - smxinling.com + - snakecastle.com + - snapdealmail.in + - snaptu.com + - sneakzorz.com + - snipurl.com + - snob.ru + - snooper.co.uk + - snowproxy.com + - so-ga.net + - so-net.net.tw + - so-news.com + - sobees.com + - soccerbase.com + - soccerstand.com + - social-bookmarking-site.com + - socialappspot.com + - socialsecurity.gov + - socialtheater.com + - socisynd.com + - socket.io + - sockslist.net + - socrec.org + - sod.co.jp + - soft.idv.tw + - soft4fun.net + - softanony.info + - softether-download.com + - softether.co.jp + - softether.org + - softonic.it + - softonic.pl + - softsurroundingsoutlet.com + - softtime.ru + - sogclub.com + - sogo360.com + - sogoo.org + - sohcradio.com + - sohfrance.org + - soifind.com + - sologirlpussy.com + - solopeliculasgratis.com + - solopos.com + - solostocks.com + - soloxy.com + - somee.com + - sondevir.com + - songjianjun.com + - songsfacebook.com + - songtexte.com + - sony.co.jp + - sony.net + - sonyyoutube.com + - sopcast.com + - sopcast.org + - sopitas.com + - sorry.idv.tw + - sortiraparis.com + - sortol.com + - sostav.ru + - sosyalmedya.co + - soubory.com + - soumo.info + - soundcloud.com + - soundofhope.org + - sourceforge.net + - sourcewadio.com + - southnews.com.tw + - sowers.org.hk + - sowiki.net + - spacebattles.com + - spaggiari.eu + - spankingtube.com + - spankingtube.com.ar + - spankwire.com + - sparkasse-krefeld.de + - sparrowmailapp.com + - spb.com + - spbo.com + - speakeasy.net + - speakerdeck.com + - spectraltube.com + - speed-proxy.com + - speedanalysis.net + - speedpluss.org + - speedtest.net + - spela.se + - spicejet.com + - spicyxxxtube.com + - spielen.com + - spike.com + - spirit1053.com + - spoiledvirgins.com + - sponsorizzaconfacebook.com + - sport.be + - sport.cz + - sport.ua + - sportbox.ru + - sportchalet.com + - sportinglife.com + - sportowefakty.pl + - sportsmansoutdoorsuperstore.com + - sportsnet.ca + - sportsworldi.com + - sporttu.com + - spotflux.com + - spring.org.uk + - sproxy.net + - spy-mobile-phone.com + - spy.co.nl + - spy2mobile.com + - spysurfing.com + - sreality.cz + - srisland.com + - sryoutube.com + - ssfacebook.com + - sskyn.com + - sslproxy.in + - sslsecureproxy.com + - ssproxy.pw + - sss.com + - ssshhh8.com + - sssyoutube.com + - sstmlt.net + - ssyoutube.com + - stackfile.com + - stardollproxy.co.uk + - starp2p.com + - starprivacy.com + - startpage.com + - state.gov + - state168.com + - stateofthemedia.org + - stats.com + - stealthiness.org + - stealthweb.net + - steepto.com + - steganos.com + - steves-digicams.com + - stheadline.com + - stickam.com + - stickam.jp + - stileproject.com + - stirileprotv.ro + - stjobs.sg + - stockingsforsex.com + - stooq.pl + - stop-block.com + - stoptibetcrisis.net + - stormmediagroup.com + - straighttalk.com + - stranabg.com + - stranamasterov.ru + - streamate.com + - streamica.com + - streamingmedia.com + - streampocket.com + - streetvoice.com + - stripproxy.info + - strongvpn.com + - sttlbb.com + - student.tw + - studentrate.com + - studysurf.com + - stumbleupon.com + - stupidcams.com + - stupidvideos.com + - stylebistro.com + - stylebook.de + - subito.it + - submarino.com.br + - subscribe.ru + - sudanfacebook.com + - sudani.sd + - sudouest.fr + - sugarsync.com + - sum.com.tw + - summify.com + - sumrando.com + - sun.mv + - sun111.com + - sunbirdarizona.com + - suncity.com.mx + - sunporno.com + - suoluo.org + - superdownloads.com.br + - superfreevpn.com + - superglam.com + - supergreenstuff.com + - superhideip.com + - superhqporn.com + - superpages.com + - supertv.com.tw + - supertweet.net + - supervpn.net + - suprememastertv.com + - suresome.com + - surf-anonymous.info + - surf-for-free.com + - surf100.com + - surf55.com + - surfall.net + - surfcovertly.com + - surfeasy.com + - surfeasy.com.au + - surfert.nl + - surfhidden.com + - surfinternet.org + - surfit.info + - surfma.nu + - surftunnel.com + - surftunnel.org + - surfwebsite.org + - surveybypass.com + - susjed.com + - sutunhaber.com + - suzuki.co.jp + - swapip.com + - swedenbay.info + - sweetandpussy.com + - swiatlopana.com + - swissvpn.net + - swisswebproxy.ch + - switchadhub.com + - switchvpn.net + - swordsoft.idv.tw + - sydneytoday.com + - sympatico.ca + - syoutube.com + - syriantube.net + - sytes.net + - syx86.cn + - syx86.com + - szbbs.net + - szetowah.org.hk + - t-basic.com + - t-mobilebankowe.pl + - t.co + - t33nies.com + - t35.com + - t66y.biz + - t66y.com + - taa-usa.org + - taaze.tw + - tabletpcreview.com + - tabloidnova.com + - taboofucktube.com + - tabtter.jp + - tacem.org + - taconet.com.tw + - taedp.org.tw + - tagesspiegel.de + - taggy.jp + - taipei.gov.tw + - taipeisociety.org + - taisele.com + - taisele.net + - taiwan-sex.com + - taiwanbible.com + - taiwancon.com + - taiwandaily.net + - taiwanjustice.com + - taiwankiss.com + - taiwannation.com.tw + - taiwannews.com.tw + - taiwantt.org.tw + - taiwanus.net + - taiyangbao.ca + - takaratomy.co.jp + - takbook.com + - take2hosting.com + - takesport.idv.tw + - takvahaber.net + - talkenglish.com + - tamizhyoutube.com + - tampabay.com + - tamtay.vn + - tanea.gr + - tanga.com + - taohuazu.us + - taoism.net + - taolun.info + - tap.az + - tapchidanong.org + - tapuz.co.il + - taragana.com + - taringa.net + - taste.com.au + - tatamotors.com + - tatar.ru + - taweet.com + - tawhed.ws + - taxes.gov.az + - tayelu.com + - tbsec.org + - tbsn.org + - tbsseattle.org + - tca.org.tw + - tclyy.com + - teashark.com + - technopoint.ru + - techonthenet.com + - techsonian.com + - techtarget.com + - techtimes.com + - techulator.com + - tecmilenio.edu.mx + - tecmint.com + - teen-handjob.com + - teenbrats.com + - teencoreclub.com + - teenhottube.com + - teenpinkvideos.com + - teenport.com + - teens-pic.com + - teensinasia.com + - teensoncouch.com + - teensyoutube.com + - teenzvidz.com + - tefal.co.uk + - tefal.com + - tehago.com + - tejji.com + - teknosa.com + - tekstowo.pl + - telecharger-videos-youtube.com + - telecomitalia.it + - telecomspace.com + - telefonica.com + - telefonino.net + - telegraph.co.uk + - telemundo.com + - telenet.be + - teletrac.com + - telexfree.com + - telkom.co.id + - template-blogspot.com + - template.my.id + - templateparablogspot.com + - tenacy.co.uk + - tenacy.com + - tenantsact.org.au + - tennis-warehouse.com + - th38.com + - thaicn.com + - thaidojin.com + - the-cloak.com + - theafricavoice.com + - thebestdailyproxy.com + - thebestofproxy.info + - thebestproxy.info + - thebestproxyserver.com + - theblaze.com + - thebobs.com + - thechinabeat.org + - thecoveteur.com + - thecrew.com + - thedesigninspiration.com + - theepochtimes.com + - thefacebook.com + - thefacesoffacebook.com + - thefastbay.com + - thefutoncritic.com + - theglobalmail.org + - theguardian.co + - theguardian.com + - thehousenews.com + - thehun.com + - theinquirer.net + - thelawdictionary.org + - theloop.ca + - themify.me + - themovs.com + - thenewcivilrightsmovement.com + - theninjaproxy.com + - thenote.com.tw + - theopenproxy.net + - thepeachpalace.com + - thepiratebay.org + - thepiratebay.org.es + - thepiratebay.org.in + - thepiratemirror.com + - theproxy.eu + - theproxyfree.com + - theproxypirate.com + - theregister.co.uk + - therock.net.nz + - thesartorialist.com + - thesimpledollar.com + - thesun.net + - thetend.com + - thetibetpost.com + - thetrackr.com + - theuniqueproxy.com + - thevisiontimes.ca + - theweathernetwork.com + - thewiseguise.com + - thewrap.com + - thexite.com + - thinkadvisor.com + - thinkfla.com + - thinkingtaiwan.com + - thisav.com + - thisisgoodshit.info + - thongdreams.com + - thoof.com + - thqafawe3lom.com + - thscore.cc + - thumbzilla.com + - tiandixing.org + - tianhuayuan.com + - tiantibooks.org + - tianzhu.org + - tiava.com + - tibet.com + - tibet.com.au + - tibet.de + - tibet.net + - tibet.org.tw + - tibetanyouthcongress.org + - tibethouse.jp + - tibetonline.tv + - tibetsun.com + - tibettimes.net + - ticbeat.com + - ticket.com.tw + - tiempo.com + - tiempo.hn + - tiffanyarment.com + - tigerdroppings.com + - tigo.com.co + - tiki-online.com + - tim.com.br + - tim.it + - timdir.com + - time.com + - timesinternet.in + - timeturk.com + - timsah.com + - timshan.idv.tw + - timtadder.com + - tiney.com + - tingtingjidi.com + - tinthethao.com.vn + - tintuc101.com + - tintuconline.com.vn + - tiny.cc + - tiny18.net + - tinychat.com + - tinyjugs.com + - tinysubversions.com + - tipp3.at + - tiscali.it + - tistory.com + - tjsp.jus.br + - tmagazine.com + - tmd38.info + - tmi.me + - tmn.idv.tw + - tn.gov.in + - tnaflix.com + - tnews.cc + - tnpsc.gov.in + - tnscg.com + - to.ly + - tobu.co.jp + - today.it + - todoinstagram.com + - togetter.com + - tokfm.pl + - tokyo-247.com + - tokyo-hot.com + - tokyo-motorshow.com + - tokyo2hot.com + - tokyocn.com + - tom365.cc + - tomica.ru + - tomoyax.com + - toodoc.com + - toolslib.net + - top-page.ru + - top-proxies.co.uk + - top-xhamster.com + - top1health.com + - top55.net + - top81.ws + - topchinesenews.com + - topchretien.com + - topify.com + - topincestvideo.com + - topnews.in + - topnews.jp + - topor4ik.ru + - topshareware.com + - topspeed.com + - topsy.com + - toptweet.org + - topunblock.com + - topzone.net + - torcedores.com + - torcn.com + - torguard.net + - toronto.ca + - torproject.org + - torproject.org.in + - torrent-tv.ru + - torrentcrazy.com + - torrentday.com + - torrentkitty.com + - torrentprivacy.com + - torrentproxies.com + - torrentroom.com + - torrinomedica.it + - tortoisesvn.net + - torvpn.com + - tosarang.net + - toshiba.com + - totalfilm.com + - totalwar.com + - toukougazou.net + - touslesdrivers.com + - tover.net + - tovima.gr + - towngain.com + - toypark.in + - tp-linkru.com + - tp1.jp + - tparents.org + - tpe.gov.tr + - tpi.org.tw + - tpimage.com + - tpuser.idv.tw + - tr-youtube.com + - tr.im + - trabajando.cl + - trabajando.com + - trabajos.com + - trackid.info + - trackyoutube.com + - traffic-delivery.com + - traffichaus.com + - trafton.org + - trafviz.com + - transdoc.com.gt + - transfermarkt.co.uk + - transfermarkt.com + - transfermarkt.es + - transworld.net + - travellingthere.com + - trend.az + - trendingweb.net + - trendsmap.com + - trialofccp.org + - trialproxy.com + - tribune.gr + - tricksfacebook.com + - trionworlds.com + - trippinwithtara.com + - triumph.com + - trivago.co.uk + - trivago.de + - trouw.nl + - trovaprezzi.it + - trtc.com.tw + - trucchifacebook.com + - trust.ru + - trusteer.com + - trustpilot.nl + - truveo.com + - tryteenstube.com + - ts8888.net + - tsb.co.uk + - tsctv.net + - tsemtulku.com + - tsep.info + - tsn.ca + - tsunagarumon.com + - tt22.info + - ttj123.com + - tts8888.net + - tttan.com + - ttv.com.tw + - tuanzt.com + - tubaholic.com + - tube.com + - tube8.com + - tube8.com.co + - tubecao.com + - tubedupe.com + - tubegals.com + - tubeislam.com + - tubent.com + - tubenube.com + - tubeofmusic.com + - tubeoxy.com + - tubepleasure.com + - tubeproxy.nu + - tubeproxy.se + - tubetop69.com + - tubeum.com + - tubewhale.com + - tubewolf.com + - tubexplorer.com + - tuempresaenfacebook.com + - tuidang.org + - tuitui.info + - tumblr.com + - tumutanzi.com + - tune.pk + - tunein.com + - tuneupmymac.com + - tunnelbear.com + - tuochat.com + - turansam.org + - turansesi.com + - turbobit.net + - turbohide.com + - turkeybay.info + - turkeyforum.com + - turkishnews.com + - turkist.org + - turkistanmaarip.org + - turkticaret.net + - turner.com + - tusfrasesparafacebook.com + - tushycash.com + - tuspelis.co + - tutorialblogspot.com + - tuttoannunci.org + - tuttonapoli.net + - tuvpn.com + - tv-greek.com + - tv.com + - tv.com.pk + - tv007.tv + - tv2.pw + - tv5000.com + - tv8888.net + - tv9k.net + - tvb.com + - tvboxnow.com + - tvgay.ru + - tvn.cl + - tvplayvideos.com + - tvvcd.com + - tvzvezda.ru + - tw01.org + - tw1.com + - tw100s.com + - tw116.com + - tw789.net + - twaitter.com + - twatter.com + - twaud.io + - twavi.com + - twavtv.com + - twbbs.net.tw + - twbbs.org + - twbbs.tw + - tweakmytwitter.com + - tweematic.com + - tweepi.com + - tweepml.org + - tweetbackup.com + - tweetbinder.com + - tweetboner.biz + - tweetdeck.com + - tweete.net + - tweetmeme.com + - tweetphoto.com + - tweetswind.com + - tweettunnel.com + - tweetvalue.com + - tweetymail.com + - twem.idv.tw + - twhirl.org + - twib.jp + - twibble.de + - twicsy.com + - twiends.com + - twifan.com + - twilightsex.com + - twilio.com + - twimg.com + - twimi.net + - twinsv.com + - twipple.jp + - twishort.com + - twistar.cc + - twister.net.co + - twisterio.com + - twit2d.com + - twitip.com + - twitlonger.com + - twitmania.com + - twitpic.com + - twitstat.com + - twittanic.com + - twittbot.net + - twitter-icon.com + - twitter.com + - twitter.com.br + - twitter4j.org + - twittercentral.com.br + - twittercounter.com + - twitterfall.com + - twitterfeed.com + - twittergadget.com + - twitterkr.com + - twitthat.com + - twitturk.com + - twitturly.com + - twitvid.com + - twitzap.com + - twopcharts.com + - twreg.info + - twskype.com + - twtkr.com + - twtmaster.com + - twtrland.com + - twunbbs.com + - twurl.nl + - twyac.org + - twylah.com + - tycool.com + - typemag.jp + - typingtest.com + - u15.tv + - uas2.com + - uberconference.com + - ubervu.com + - ubint.net + - ubldirect.com + - ubtoz.com + - ubuntu.ru + - ucam.org + - ucoz.ru + - ucr.ac.cr + - ucsc.edu + - udn.com + - udn.com.tw + - ufreevpn.com + - ufret.jp + - ufux.pl + - uggaustralia.com + - ugo.com + - uighurbiz.net + - uk-proxy.co.uk + - uk.to + - ukbay.info + - ukliferadio.co.uk + - ukproxyserver.com + - ukryj.info + - ukusvpn.com + - ukwebproxy.eu + - ulike.net + - ulkuocaklari.org.tr + - ultimatepro.eu + - ultrabestproxy.com + - ultrafastproxy.com + - ultrapussy.com + - ultrasurf.pl + - ultrasurf.us + - ultrasurfing.com + - ulusalkanal.com.tr + - ummetislam.net + - unblk.net + - unblock-everything.com + - unblock-facebookproxy.com + - unblock-me.org + - unblock-proxy.com + - unblock-proxybunker.co.uk + - unblock-us.com + - unblock.cn.com + - unblock.nu + - unblock.pk + - unblock.pl + - unblock123.com + - unblock24.de + - unblock4ever.com + - unblock4ever.info + - unblockaccess.com + - unblockanysite.net + - unblockanything.com + - unblockaproxy.com + - unblockclick.info + - unblockdmm.com + - unblocked.in + - unblockedfacebook.net + - unblockedproxy.net + - unblockedproxy.us + - unblocker.biz + - unblocker.me + - unblockersurf.com + - unblockerz.net + - unblockingwebsite.com + - unblockinstagram.com + - unblockmega.com + - unblockmyweb.com + - unblockpirate.com + - unblockpornsites.com + - unblockproxy.pk + - unblockproxy.us + - unblockreal.info + - unblocksit.es + - unblocksite.info + - unblocksocialmedia.com + - unblockthatsite.net + - unblockvideos.com + - unblockvpn.com + - unblockwebsite.net + - unblockwebsites.se + - unblockyoutube.co + - unblockyoutube.co.uk + - unblockyoutube.com + - unblockyoutube.com.pk + - unblockyoutube.eu + - unblockyoutube.me + - unblockyoutube.org + - unblockyoutube.us + - unblockyoutuber.com + - unblog.fr + - unbloock.com + - uncensoredjapanporn.com + - uncw.edu + - uncyclopedia.info + - uncyclopedia.tw + - underscorejs.org + - underwoodammo.com + - uni-goettingen.de + - uni.cc + - unica.ro + - unicorn-x.com + - unifi.it + - unification.net + - unionesarda.it + - unipa.it + - uniproxy.com + - uniteddaily.com.my + - unitedstatesproxy.info + - unitn.it + - universal-music.de + - universityproxy.net + - unix100.com + - unixmen.com + - unknownproxy.com + - unlockmethis.com + - unodedos.com + - unpo.org + - unrestricted.biz + - unseen.is + - unsoloclic.info + - untraceable.us + - uol.com.br + - up.ac.za + - upcoming.nl + - updatesmarugujarat.in + - updatestar.com + - upload4u.info + - uploaded.to + - uploadhero.co + - uploads.ru + - uploadstation.com + - ur7s.com + - ura.gov.sg + - urasunday.com + - urbanoutfitters.com + - urcheeky.com + - urgentfury.com + - url.com.tw + - url10.org + - urlm.de + - urlvoid.com + - us-proxy.org + - us-webproxy.com + - us.to + - usa-proxy.org + - usa.gov + - usafastproxy.info + - usaip.eu + - usaproxy.org + - usaupload.net + - usawebproxy.com + - usazm.net + - uscis.gov + - usejump.com + - userlocal.jp + - usertube.com + - usf.edu + - usgs.gov + - uship.com + - ushistory.org + - usproxy.nu + - usproxy4free.info + - usprxy.com + - ustream.tv + - uswebproxy.com + - uswebproxy.us + - utah.gov + - utom.us + - utube-youtube.com + - utubeclassic.com + - uu.nl + - uu158.com + - uu898.com + - uueyy.com + - uukt.idv.tw + - uurt.cc + - uushare.com + - uva.nl + - uvidi.com + - uw.hu + - uwants.com + - uwants.net + - uwi.edu + - uybbb.com + - uyghur.co.uk + - uyghuramerican.org + - uyghurcongress.org + - uyghurnet.org + - uyghurpress.com + - uyhewer.biz + - uymaarip.com + - uysam.org + - uyttt.com + - uzbekweb.net + - uzor4ik.ru + - uzum.tv + - v0791.com + - v5yy.com + - v6.facebook.com + - van698.com + - vancitybuzz.com + - vanderbilt.edu + - vanemu.cn + - vanguardia.com.mx + - vanilla-jp.com + - vanityfair.com + - vanpeople.com + - vansky.com + - vcd01.com + - vcricket.com + - vcupboss.com + - vcupbox.net + - vdyoutube.com + - veb4.info + - veclip.com + - vectroproxy.com + - vegadisk.com + - vegasmpegs.com + - vegasred.com + - vegorpedersen.com + - veinfoportal.com + - velkaepocha.sk + - veoh.com + - verizon.net + - verpeliculayoutube.com + - versavpn.com + - versus.com + - vertbaudet.fr + - veryxe.com + - vft.com.tw + - vg247.com + - vi.nl + - viajar.com + - viamichelin.de + - viamichelin.fr + - viber.com + - vickyfuck.com + - victimsofcommunism.org + - vidal.fr + - video-hned.com + - video-proxy.com + - videobam.com + - videobox.com + - videochatforfacebook.com + - videodetective.com + - videoegg.com + - videoixir.net + - videomaximum.com + - videomo.com + - videopediaworld.com + - videophim.net + - videosq.com + - videotraker.com + - videouri.com + - vidoevo.com + - vidoser.com.ua + - vidoser.org + - vidproxy.com + - vidsfucker.com + - viduba.com + - vidule.com + - viemo.com + - vietbet.com + - vietdaikynguyen.com + - vietfun.com + - vietnamplus.vn + - vietvideos.tv + - vietvideos.vn + - vimeo.com + - vintagecuties.com + - vintagefetish.net + - vintagexhamster.com + - vip-zona.biz + - viptube.com + - viralporn.com + - viraltag.com + - virgintrains.co.uk + - visibletweets.com + - visitorsweater.eu + - visitscotland.com + - visuallightbox.com + - vit.ac.in + - vitutor.com + - vivatube.com + - vivthomas.com + - viyoutube.com + - vizardsgunsandammo.com + - vizle.tv + - vjmedia.com.hk + - vkinotik.net + - vkussovet.ru + - voa.mobi + - voacantonese.com + - voachinese.com + - voachineseblog.com + - voafanti.com + - voanews.com + - voatibetan.com + - vodoumedia.com + - vogue.co.uk + - vogue.com + - voici-news.fr + - volantinofacile.it + - volvocars.com + - vorterix.com + - vot.org + - vovo2000.com + - vovokan.com + - voxer.com + - voy.com + - voyeurdaily.com + - vpalsystem.com + - vpn333.com + - vpn4all.com + - vpnaccount.org + - vpnaccounts.com + - vpnbook.com + - vpnbrowse.com + - vpncloud.me + - vpncup.com + - vpndaquan.com + - vpndeluxe.com + - vpngate.jp + - vpngate.net + - vpnintouch.com + - vpnip.net + - vpnmaster.com + - vpnmaster.org + - vpnoneclick.com + - vpnpick.com + - vpnreactor.com + - vpnsecure.me + - vpnsp.com + - vpnster.com + - vpntime.com + - vpntraffic.com + - vpntunnel.com + - vpntunnel.net + - vpnuk.info + - vpnunlock.asia + - vpnvip.com + - vporn.com + - vslovetv.com + - vtunnel.com + - vtunnel.pk + - vu.edu.au + - vuclip.com + - vufacebook.com + - vukajlija.com + - vuku.ru + - vunblock.com + - vurbmoto.com + - vusay.com + - vuze.com + - vwv.cn + - w3.org + - wa-com.com + - wadtube.com + - wahas.com + - waigaobu.com + - waikeung.info + - waiwaier.com + - wakegov.com + - wakwak-facebook.com + - wallonie.be + - wallpaper.com + - wamda.com + - wan-press.org + - wangjinbo.org + - wango.org + - wangruowang.org + - wank.to + - wanktube.com + - wanmm.info + - want-daily.com + - wantchinatimes.com + - wantyoutube.com + - waproxy.com + - waqn.com + - waratahs.com.au + - warehouse333.com + - wargameyau.net + - waselpro.com + - watchinese.com + - watchmygf.net + - watchproxy.com + - watchxtube.com + - wattpad.com + - wattpad.com.br + - wauwaa.com + - wawwproxy.org + - waybig.com + - wbxia.com + - wdaz.com + - wdcdn.net + - weare.hk + - wearehairy.com + - wearn.com + - web4proxy.com + - webanonyme.com + - webanonymizer.org + - webappers.com + - webaula.com.br + - webbee.info + - webcamproxy.com + - webcams.com + - webdesignrecipes.com + - webempresa.com + - webevade.com + - webflow.com + - webfreer.com + - weblagu.com + - weblogspot.com + - webmail.co.za + - webmasta.org + - webnewcredit.name + - webpage.idv.tw + - webproxies.org + - webproxy-server.com + - webproxy-service.de + - webproxy.at + - webproxy.ca + - webproxy.com.de + - webproxy.eu + - webproxy.hu + - webproxy.la + - webproxy.net + - webproxy.pk + - webproxy.ru + - webproxy.to + - webproxy.yt + - webproxyfree.net + - webproxyfree.org + - webproxylist.biz + - webproxyserver.net + - webproxyusa.com + - webrush.net + - websiteproxysite.com + - websteronline.com + - websurf.in + - webtalkforums.com + - webteb.com + - webtunnel.org + - webwarper.net + - webzesty.net + - weebly.com + - weekmag.info + - wefightcensorship.org + - wefong.com + - wego.co.in + - weiboleak.com + - weidui.cn + - weigegebyc.dreamhosters.com + - weiming.info + - weirdhentai.com + - welovecock.com + - welovetube.com + - wen.ru + - wengewang.org + - wenhui.ch + - wenxuecity.com + - wenxuewu.com + - wenyunchao.com + - werich.idv.tw + - werk.nl + - wermachtwas.info + - westca.com + - westjet.com + - westkit.net + - wet123.com + - wetmike.com + - wetplace.com + - wewehi.info + - wfmz.com + - wforum.com + - wgal.com + - whaaky.co.in + - whatblocked.com + - whathifi.com + - whatismyipaddress.com + - whatsthescore.com + - whendidyoujointwitter.com + - whippedass.com + - whiteblacksex.net + - whois.com + - whole30.com + - whoownsfacebook.com + - whoresofinstagram.com + - whorestube.com + - whotalking.com + - whydontyoutrythis.com + - whyewang.com + - whyproxy.com + - wiefy.com + - wife-xxx.com + - wifemovies.net + - wifi.gov.hk + - wikia.com + - wikiart.org + - wikibooks.org + - wikileaks.org + - wikimedia.org + - wikimedia.org.mo + - wikinews.org + - wikipedia.org + - wikisource.org + - wiksa.com + - wildammo.com + - wildfacebook.com + - wildjapanporn.com + - wildproxy.net + - wildtorture.com + - wildzoosex.net + - williamhill.com + - wind.gr + - windows-codec.com + - windowsmedia.com + - winporn.com + - wipo.int + - wisdompubs.org + - wisevid.com + - witopia.net + - wizardofodds.com + - wmzona.com + - wo.tc + - woaicaocao.com + - woaiwoaise1.info + - wofacai.com + - wolfofladbrokes.com + - wolframalpha.com + - womenonly.gr + - womensrightsofchina.org + - womenweb.de + - woool123.com + - woopie.jp + - woovpn.com + - wordpress.com + - wordpress.org + - wordreference.com + - workinretail.com + - worldcat.org + - worldjournal.com + - worldmarket.com + - worldnews01.com + - worldsex8.com + - worldvpn.net + - worth1000.com + - wosebar.com + - wow-clear.ru + - woyao.cl + - wpitaly.it + - wplr.com + - wpnew.ru + - wpoforum.com + - wqlhw.com + - wqyd.org + - wradio.com.mx + - wrc.com + - wrestlinginc.com + - wretch.cc + - writelonger.com + - wsj-asia.com + - wsj.com + - wsws.org + - wtfpeople.com + - wuaitxt.com + - wuala.com + - wufi.org.tw + - wujieliulan.com + - wuyuetan.com + - wuzhouclick.com + - wwe.com + - wwitv.com + - www.am730.com.hk + - www.freeproxyserver.uk + - www.homeftp.net + - www.info.vn + - www.newcenturynews.com + - www.rhcloud.com + - wyborcza.biz + - wyff4.com + - wymfw.org + - wyt750.com + - x-file.com.ar + - x-nudism.net + - x-torrents.org + - x2ds.com + - x365x.com + - x3xtube.com + - x4x6.com + - x772015.net + - x7780.net + - x7786.com + - x831.com + - x8cctv.net + - x8seo.com + - xartgirls.com + - xarthunter.com + - xartnudes.com + - xav1.info + - xav3.info + - xaxtube.com + - xbabe.com + - xbookcn.com + - xbookcn.net + - xchange.cc + - xcity.jp + - xcoyote.com + - xcritic.com + - xctsg.org + - xfcun.com + - xfiles.to + - xfm.pp.ru + - xfreehosting.com + - xfys.info + - xfyslu.com + - xhamster.com + - xhamster.vc + - xhamstercams.com + - xhamsterhq.com + - xiaav.cc + - xiao77.cc + - xiao776.com + - xiaochuncnjp.com + - xiaod.in + - xiaohexie.com + - xiaoli.cc + - xiaomi.in.ua + - xiaosege.com + - xidong.net + - xieshulou.com + - xiezi.us + - xihua.es + - xing.com + - xingbano1.com + - xingbayouni.net + - xinmiao.com.hk + - xinsheng.net + - xinwenshow.com + - xinxi3366.com + - xinyubbs.net + - xitenow.com + - xjav.tv + - xjizz.com + - xl.pt + - xmodelpics.com + - xnview.com + - xnxx.blog.br + - xnxxfacebook.com + - xocat.com + - xpornking.com + - xqidian.com + - xqiumi.com + - xrba.net + - xrea.com + - xrentdvd.com + - xrest.net + - xsejie.info + - xskywalker.com + - xtec.cat + - xthost.info + - xtlbb.com + - xtrasize.pl + - xtube.com + - xu4.net + - xuite.net + - xunblock.com + - xuxule.net + - xvideo.cc + - xvideos-fc2.com + - xvideos.com + - xvideos.com.br + - xvideos.com.bz + - xvideos.com.es + - xvideos.com.mx + - xvideos.es + - xvideos.jp + - xvideosfc2.com + - xvideosq.com + - xx33.us + - xxbbx.com + - xxeronetxx.info + - xxkxw.com + - xxlmovies.com + - xxooyy.org + - xxx-xhamster.com + - xxx-youtube.com + - xxx.com + - xxx.com.es + - xxx.com.mx + - xxx.com.py + - xxx.xxx + - xxxdessert.com + - xxxhost.me + - xxxpanda.com + - xxxstash.com + - xxxtv.me + - xxxx.com.au + - xxxxsextube.com + - xxxymovies.com + - xxys.cc + - xxyy123.com + - xys.org + - xyz566.net + - xzgod.net + - yabeb.com + - yackity-yak.com + - yad2.co.il + - yahoo.co.jp + - yahoo.com + - yahoo.com.hk + - yahoo.com.tw + - yahoo.jp + - yakmovies.com + - yalafacebook.com + - yanen.org + - yaproxy.com + - yasakli.net + - yasni.co.uk + - yasni.com + - yasukuni.or.jp + - yayabay.net + - yaypetiteteens.com + - ydxk.cn + - ydy.com + - yehua.org + - yellowproxy.net + - yenidenergenekon.com + - yeptube.com + - yesbank.co.in + - yesware.com + - yeyelu.com + - yi.org + - yibada.com + - yibian.idv.tw + - yidio.com + - yify-torrent.org + - yigese.us + - yikyakapp.com + - yildiz.edu.tr + - yimg.com + - yingchao8.com + - yinlaohan.us + - yinrense.com + - yipub.com + - yiwugou.com + - yixingjia.info + - yiyi.cc + - yle.fi + - ymail.com + - ymka.tv + - ymobile.jp + - yo168.net + - yobt.com + - yobt.tv + - yogeshblogspot.com + - yogichen.org + - yojizz.com + - yoltarifi.com + - yonkis.com + - yorkbbs.ca + - you-youtube.com + - youcanhide.net + - youcef85.com + - youdesir.com + - youdian.in + - youfck.com + - youjikan1.com + - youjizz.com + - youjizz.net + - youjoomla.info + - youjotube.com + - youliketeens.com + - youmaker.com + - yoump3.mobi + - youngatheartmommy.com + - youngfatties.com + - younggirls-sex.com + - youngleafs.com + - youngporntube.com + - youngteensexhd.com + - youniversalmedia.com + - youpai.org + - youporn.com + - youporn.com.bz + - youproxy.org + - youproxytube.com + - your-freedom.net + - yourlust.com + - yourmediahq.com + - yourtv.com.au + - yousendit.com + - youthnetradio.org + - youthwant.com.tw + - youtrannytube.com + - youtu.be + - youtube-mp3.com + - youtube-nocookie.com + - youtube-unlock.com + - youtube.be + - youtube.com + - youtube.com.br + - youtube.com.co + - youtubecn.com + - youtubefreeproxy.com + - youtubeproxy.co + - youtubeproxy.org + - youtubeproxy.pk + - youtubeunblocked.org + - youtubeunblocker.org + - youtubexyoutube.com + - youversion.com + - youwatch.org + - youxu.info + - ypmate.com + - yslang.com + - ytimg.com + - ytj.fi + - yts.re + - yuka.idv.tw + - yukinyan.info + - yunblock.com + - yunblocker.info + - yutaokeji.com + - yuvutu.com + - yvesrocherusa.com + - yvv.cn + - ywtx.cc + - yx51.net + - yyhacker.com + - yyii.org + - yypeng.com + - yysedy.com + - yzzk.com + - z953.ca + - zacebook.com + - zacebookpk.com + - zalmos.com + - zalmos.pk + - zaobao.com + - zaobao.com.sg + - zaozon.com + - zap.co.il + - zapjuegos.com + - zaurus.org.uk + - zbiornik.com + - zdnet.com.tw + - zdnet.de + - zeldawiki.org + - zelka.org + - zello.com + - zen-cart.com + - zend2.com + - zendproxy.com + - zengjinyan.org + - zenithoptions.com + - zerotunnel.com + - zertube.com + - zerx.tv + - zetagalleries.com + - zf.ro + - zfreet.com + - zfreez.com + - zhanbin.net + - zhaokaifang.com + - zhaoyn.com + - zhe.la + - zhengjian.org + - zhengwunet.org + - zhenjk.com + - zhibo8.cc + - zhinengluyou.com + - zhong.pp.ru + - zhongguobao.net + - zhuichaguoji.org + - zhuliu520.com + - ziddu.com + - zideo.nl + - zinio.com + - zipai99.net + - zipangcasino.com + - ziporn.com + - ziptt.com + - ziyuan5.com + - zjbdt.com + - zjypw.com + - zkaip.com + - zll.in + - zlvc.net + - zn.ua + - zoho.com + - zoll-auktion.de + - zombiega.ga + - zonaeuropa.com + - zonble.net + - zoo-fuck.net + - zoomby.ru + - zooshock.com + - zootoday.com + - zootool.com + - zoozle.net + - zorpia.com + - zqzj.net + - zs8080.com + - zshare.net + - zsrhao.com + - ztunnel.com + - zuary.com + - zuo.la + - zuola.com + - zuyoutube.com + - zuzazu.com + - zvents.com + - zwinky.com + - zxc22.idv.tw + - zz8080.com + - zzb.bz +trustedcas: +- commonname: VeriSign Class 3 Public Primary Certification Authority - G5 + cert: "-----BEGIN CERTIFICATE-----\nMIIE0zCCA7ugAwIBAgIQGNrRniZ96LtKIVjNzGs7SjANBgkqhkiG9w0BAQUFADCB\nyjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL\nExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJp\nU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxW\nZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0\naG9yaXR5IC0gRzUwHhcNMDYxMTA4MDAwMDAwWhcNMzYwNzE2MjM1OTU5WjCByjEL\nMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZW\nZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2ln\nbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJp\nU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9y\naXR5IC0gRzUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvJAgIKXo1\nnmAMqudLO07cfLw8RRy7K+D+KQL5VwijZIUVJ/XxrcgxiV0i6CqqpkKzj/i5Vbex\nt0uz/o9+B1fs70PbZmIVYc9gDaTY3vjgw2IIPVQT60nKWVSFJuUrjxuf6/WhkcIz\nSdhDY2pSS9KP6HBRTdGJaXvHcPaz3BJ023tdS1bTlr8Vd6Gw9KIl8q8ckmcY5fQG\nBO+QueQA5N06tRn/Arr0PO7gi+s3i+z016zy9vA9r911kTMZHRxAy3QkGSGT2RT+\nrCpSx4/VBEnkjWNHiDxpg8v+R70rfk/Fla4OndTRQ8Bnc+MUCH7lP59zuDMKz10/\nNIeWiu5T6CUVAgMBAAGjgbIwga8wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8E\nBAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJaW1hZ2UvZ2lmMCEwHzAH\nBgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYjaHR0cDovL2xvZ28udmVy\naXNpZ24uY29tL3ZzbG9nby5naWYwHQYDVR0OBBYEFH/TZafC3ey78DAJ80M5+gKv\nMzEzMA0GCSqGSIb3DQEBBQUAA4IBAQCTJEowX2LP2BqYLz3q3JktvXf2pXkiOOzE\np6B4Eq1iDkVwZMXnl2YtmAl+X6/WzChl8gGqCBpH3vn5fJJaCGkgDdk+bW48DW7Y\n5gaRQBi5+MHt39tBquCWIMnNZBU4gcmU7qKEKQsTb47bDN0lAtukixlE0kF6BWlK\nWE9gyn6CagsCqiUXObXbf+eEZSqVir2G3l6BFoMtEMze/aiCKm0oHw0LxOXnGiYZ\n4fQRbxC1lfznQgUy286dUV4otp6F01vvpX1FQHKOtw5rDgb7MzVIcbidJ4vEZV8N\nhnacRHr2lVz2XTIIM6RUthg/aFzyQkqFOFSDX9HoLPKsEdao7WNq\n-----END + CERTIFICATE-----\n" diff --git a/src/github.com/getlantern/flashlight/app/integration_test.go b/src/github.com/getlantern/flashlight/app/integration_test.go new file mode 100644 index 0000000000..271b71c490 --- /dev/null +++ b/src/github.com/getlantern/flashlight/app/integration_test.go @@ -0,0 +1,289 @@ +package app + +import ( + "compress/gzip" + "crypto/tls" + "fmt" + "io/ioutil" + "net" + "net/http" + "net/url" + "os" + "regexp" + "sync/atomic" + "testing" + "time" + + "github.com/getlantern/http-proxy-lantern" + "github.com/getlantern/tlsdefaults" + "github.com/getlantern/waitforserver" + "github.com/getlantern/yaml" + + "github.com/getlantern/flashlight/config" + + "github.com/stretchr/testify/assert" +) + +const ( + LocalProxyAddr = "localhost:18345" + ProxyServerAddr = "localhost:18346" + OBFS4ServerAddr = "localhost:18347" + + Content = "THIS IS SOME STATIC CONTENT FROM THE WEB SERVER" + Token = "AF325DF3432FDS" + KeyFile = "./proxykey.pem" + CertFile = "./proxycert.pem" + + Etag = "X-Lantern-Etag" + IfNoneMatch = "X-Lantern-If-None-Match" +) + +var ( + useOBFS4 = uint32(0) +) + +func TestProxying(t *testing.T) { + config.CloudConfigPollInterval = 100 * time.Millisecond + + // Web server serves known content for testing + httpAddr, httpsAddr, err := startWebServer(t) + if !assert.NoError(t, err) { + return + } + + // This is the remote proxy server + err = startProxyServer(t) + if !assert.NoError(t, err) { + return + } + + // This is a fake config server that serves up a config that points at our + // testing proxy server. + configAddr, err := startConfigServer(t) + if !assert.NoError(t, err) { + return + } + + // We have to write out a config file so that Lantern doesn't try to use the + // default config, which would go to some remote proxies that can't talk to + // our fake config server. + err = writeConfig(configAddr) + if !assert.NoError(t, err) { + return + } + + // Starts the Lantern App + err = startApp(t) + if !assert.NoError(t, err) { + return + } + + // Makes a test request + testRequest(t, httpAddr, httpsAddr) + + // Switch to obfs4, wait for a new config and test request again + atomic.StoreUint32(&useOBFS4, 1) + time.Sleep(2 * time.Second) + testRequest(t, httpAddr, httpsAddr) +} + +func startWebServer(t *testing.T) (string, string, error) { + lh, err := net.Listen("tcp", "localhost:0") + if err != nil { + return "", "", fmt.Errorf("Unable to listen for HTTP connections: %v", err) + } + ls, err := tlsdefaults.Listen("localhost:0", "webkey.pem", "webcert.pem") + if err != nil { + return "", "", fmt.Errorf("Unable to listen for HTTPS connections: %v", err) + } + go func() { + err := http.Serve(lh, http.HandlerFunc(serveContent)) + assert.NoError(t, err, "Unable to serve HTTP") + }() + go func() { + err := http.Serve(ls, http.HandlerFunc(serveContent)) + assert.NoError(t, err, "Unable to serve HTTPS") + }() + return lh.Addr().String(), ls.Addr().String(), nil +} + +func serveContent(resp http.ResponseWriter, req *http.Request) { + resp.WriteHeader(http.StatusOK) + resp.Write([]byte(Content)) +} + +func startProxyServer(t *testing.T) error { + s := &httpproxylantern.Server{ + TestingLocal: true, + Addr: ProxyServerAddr, + Obfs4Addr: OBFS4ServerAddr, + Obfs4Dir: ".", + Token: Token, + Keyfile: KeyFile, + CertFile: CertFile, + IdleClose: 30, + HTTPS: true, + } + + go func() { + err := s.ListenAndServe() + assert.NoError(t, err, "Proxy server should have been able to listen") + }() + + return waitforserver.WaitForServer("tcp", ProxyServerAddr, 10*time.Second) +} + +func startConfigServer(t *testing.T) (string, error) { + l, err := net.Listen("tcp", "localhost:0") + if err != nil { + return "", fmt.Errorf("Unable to listen for config server connection: %v", err) + } + configAddr := l.Addr().String() + go func() { + err := http.Serve(l, http.HandlerFunc(serveConfig(t, configAddr))) + assert.NoError(t, err, "Unable to serve config") + }() + return configAddr, nil +} + +func serveConfig(t *testing.T, configAddr string) func(http.ResponseWriter, *http.Request) { + return func(resp http.ResponseWriter, req *http.Request) { + obfs4 := atomic.LoadUint32(&useOBFS4) == 1 + version := "1" + if obfs4 { + version = "2" + } + + if req.Header.Get(IfNoneMatch) == version { + resp.WriteHeader(http.StatusNotModified) + return + } + + cfg, err := buildConfig(configAddr, obfs4) + if err != nil { + t.Error(err) + resp.WriteHeader(http.StatusInternalServerError) + return + } + + resp.Header().Set(Etag, version) + resp.WriteHeader(http.StatusOK) + + w := gzip.NewWriter(resp) + w.Write(cfg) + w.Close() + } +} + +func writeConfig(configAddr string) error { + filename := "lantern-9999.99.99.yaml" + err := os.Remove(filename) + if err != nil && !os.IsNotExist(err) { + return fmt.Errorf("Unable to delete existing yaml config: %v", err) + } + + cfg, err := buildConfig(configAddr, false) + if err != nil { + return err + } + + return ioutil.WriteFile(filename, cfg, 0644) +} + +func buildConfig(configAddr string, obfs4 bool) ([]byte, error) { + bytes, err := ioutil.ReadFile("./config-template.yaml") + if err != nil { + return nil, fmt.Errorf("Could not read config %v", err) + } + + cfg := &config.Config{} + err = yaml.Unmarshal(bytes, cfg) + if err != nil { + return nil, fmt.Errorf("Could not unmarshal config %v", err) + } + cfg.CloudConfig = "http://" + configAddr + cfg.FrontedCloudConfig = cfg.CloudConfig + + srv := cfg.Client.ChainedServers["fallback-template"] + srv.AuthToken = Token + if obfs4 { + srv.Addr = OBFS4ServerAddr + srv.PluggableTransport = "obfs4" + srv.PluggableTransportSettings = map[string]string{ + "iat-mode": "0", + } + + bridgelineFile, err := ioutil.ReadFile("obfs4_bridgeline.txt") + if err != nil { + return nil, fmt.Errorf("Could not read obfs4_bridgeline.txt: %v", err) + } + obfs4extract := regexp.MustCompile(".+cert=([^\\s]+).+") + srv.Cert = string(obfs4extract.FindSubmatch(bridgelineFile)[1]) + } else { + srv.Addr = ProxyServerAddr + + cert, err := ioutil.ReadFile(CertFile) + if err != nil { + return nil, fmt.Errorf("Could not read cert %v", err) + } + srv.Cert = string(cert) + } + out, err := yaml.Marshal(cfg) + if err != nil { + return nil, fmt.Errorf("Could not marshal config %v", err) + } + + return out, nil +} + +func startApp(t *testing.T) error { + flags := map[string]interface{}{ + "addr": LocalProxyAddr, + "headless": true, + "proxyall": true, + "configdir": ".", + "stickyconfig": false, + "clear-proxy-settings": false, + "uiaddr": "127.0.0.1:16823", + } + + a := &App{ + ShowUI: false, + Flags: flags, + } + a.Init() + go func() { + err := a.Run() + assert.NoError(t, err, "Unable to run app") + }() + + return waitforserver.WaitForServer("tcp", LocalProxyAddr, 10*time.Second) +} + +func testRequest(t *testing.T, httpAddr string, httpsAddr string) { + proxyURL, _ := url.Parse("http://" + LocalProxyAddr) + client := &http.Client{ + Transport: &http.Transport{ + Proxy: http.ProxyURL(proxyURL), + TLSClientConfig: &tls.Config{ + InsecureSkipVerify: true, + }, + }, + } + + doRequest(t, client, "http://"+httpAddr) + doRequest(t, client, "https://"+httpsAddr) +} + +func doRequest(t *testing.T, client *http.Client, url string) { + resp, err := client.Get(url) + if assert.NoError(t, err, "Unable to GET for "+url) { + defer resp.Body.Close() + b, err := ioutil.ReadAll(resp.Body) + if assert.NoError(t, err, "Unable to read response for "+url) { + if assert.Equal(t, http.StatusOK, resp.StatusCode, "Bad response status for "+url+": "+string(b)) { + assert.Equal(t, Content, string(b)) + } + } + } +} diff --git a/src/github.com/getlantern/flashlight/main/pac.go b/src/github.com/getlantern/flashlight/app/pac.go similarity index 97% rename from src/github.com/getlantern/flashlight/main/pac.go rename to src/github.com/getlantern/flashlight/app/pac.go index 411406e27d..c23c219fc2 100644 --- a/src/github.com/getlantern/flashlight/main/pac.go +++ b/src/github.com/getlantern/flashlight/app/pac.go @@ -1,4 +1,4 @@ -package main +package app import ( "fmt" @@ -17,6 +17,7 @@ import ( "github.com/getlantern/pac" "github.com/getlantern/flashlight/client" + "github.com/getlantern/flashlight/icons" "github.com/getlantern/flashlight/ui" ) @@ -52,7 +53,7 @@ func setUpPacTool() error { // We have to use a short filepath here because Cocoa won't display the // icon if the path is too long. iconFile := filepath.Join("/tmp", "escalatelantern.ico") - icon, err := Asset("icons/32on.ico") + icon, err := icons.Asset("icons/32on.ico") if err != nil { return fmt.Errorf("Unable to load escalation prompt icon: %v", err) } else { diff --git a/src/github.com/getlantern/flashlight/main/settings.go b/src/github.com/getlantern/flashlight/app/settings.go similarity index 99% rename from src/github.com/getlantern/flashlight/main/settings.go rename to src/github.com/getlantern/flashlight/app/settings.go index dabb1438a5..f059100d80 100644 --- a/src/github.com/getlantern/flashlight/main/settings.go +++ b/src/github.com/getlantern/flashlight/app/settings.go @@ -1,4 +1,4 @@ -package main +package app import ( "fmt" diff --git a/src/github.com/getlantern/flashlight/main/settings_test.go b/src/github.com/getlantern/flashlight/app/settings_test.go similarity index 96% rename from src/github.com/getlantern/flashlight/main/settings_test.go rename to src/github.com/getlantern/flashlight/app/settings_test.go index f0ec2bd32e..48bda3fe3d 100644 --- a/src/github.com/getlantern/flashlight/main/settings_test.go +++ b/src/github.com/getlantern/flashlight/app/settings_test.go @@ -1,4 +1,4 @@ -package main +package app import ( "testing" diff --git a/src/github.com/getlantern/flashlight/main/test.yaml b/src/github.com/getlantern/flashlight/app/test.yaml similarity index 100% rename from src/github.com/getlantern/flashlight/main/test.yaml rename to src/github.com/getlantern/flashlight/app/test.yaml diff --git a/src/github.com/getlantern/flashlight/client/chained.go b/src/github.com/getlantern/flashlight/client/chained.go index baa7c3d7cf..1bab1803e3 100644 --- a/src/github.com/getlantern/flashlight/client/chained.go +++ b/src/github.com/getlantern/flashlight/client/chained.go @@ -45,8 +45,7 @@ type ChainedServerInfo struct { PluggableTransportSettings map[string]string } -// Dialer creates a *balancer.Dialer backed by a chained server. The deviceID is -// used to identify this device to the server. +// Dialer creates a *balancer.Dialer backed by a chained server. func (s *ChainedServerInfo) Dialer(deviceID string) (*balancer.Dialer, error) { if s.PluggableTransport != "" { log.Debugf("Using pluggable transport %v for server at %v", s.PluggableTransport, s.Addr) diff --git a/src/github.com/getlantern/flashlight/config/config.go b/src/github.com/getlantern/flashlight/config/config.go index 35547e228e..9c3c29e520 100644 --- a/src/github.com/getlantern/flashlight/config/config.go +++ b/src/github.com/getlantern/flashlight/config/config.go @@ -40,16 +40,17 @@ var ( ) type Config struct { - configDir string - Version int - CloudConfig string - CloudConfigCA string - CpuProfile string - MemProfile string - UpdateServerURL string - Client *client.ClientConfig - ProxiedSites *proxiedsites.Config // List of proxied site domains that get routed through Lantern rather than accessed directly - TrustedCAs []*CA + configDir string + Version int + CloudConfig string + CloudConfigCA string + FrontedCloudConfig string + CpuProfile string + MemProfile string + UpdateServerURL string + Client *client.ClientConfig + ProxiedSites *proxiedsites.Config // List of proxied site domains that get routed through Lantern rather than accessed directly + TrustedCAs []*CA } // Fetcher is an interface for fetching config updates. @@ -254,6 +255,8 @@ func (updated *Config) applyFlags(flags map[string]interface{}) error { updated.CloudConfig = value.(string) case "cloudconfigca": updated.CloudConfigCA = value.(string) + case "frontedconfig": + updated.FrontedCloudConfig = value.(string) case "instanceid": updated.Client.DeviceID = value.(string) case "cpuprofile": @@ -284,6 +287,10 @@ func (cfg *Config) ApplyDefaults() { cfg.CloudConfig = chainedCloudConfigURL } + if cfg.FrontedCloudConfig == "" { + cfg.FrontedCloudConfig = frontedCloudConfigURL + } + if cfg.Client == nil { cfg.Client = &client.ClientConfig{} } diff --git a/src/github.com/getlantern/flashlight/config/fetcher.go b/src/github.com/getlantern/flashlight/config/fetcher.go index 1efe9a054c..c019afd92c 100644 --- a/src/github.com/getlantern/flashlight/config/fetcher.go +++ b/src/github.com/getlantern/flashlight/config/fetcher.go @@ -16,12 +16,11 @@ import ( ) const ( - cloudConfigPollInterval = 1 * time.Minute - etag = "X-Lantern-Etag" - ifNoneMatch = "X-Lantern-If-None-Match" - userIDHeader = "X-Lantern-User-Id" - tokenHeader = "X-Lantern-Pro-Token" - chainedCloudConfigURL = "http://config.getiantem.org/cloud.yaml.gz" + etag = "X-Lantern-Etag" + ifNoneMatch = "X-Lantern-If-None-Match" + userIDHeader = "X-Lantern-User-Id" + tokenHeader = "X-Lantern-Pro-Token" + chainedCloudConfigURL = "http://config.getiantem.org/cloud.yaml.gz" // This is over HTTP because proxies do not forward X-Forwarded-For with HTTPS // and because we only support falling back to direct domain fronting through @@ -29,6 +28,10 @@ const ( frontedCloudConfigURL = "http://d2wi0vwulmtn99.cloudfront.net/cloud.yaml.gz" ) +var ( + CloudConfigPollInterval = 1 * time.Minute +) + // fetcher periodically fetches the latest cloud configuration. type fetcher struct { lastCloudConfigETag map[string]string @@ -67,7 +70,7 @@ func (cf *fetcher) pollForConfig(currentCfg yamlconf.Config, stickyConfig bool) return mutate, waitTime, nil } - if bytes, err := cf.fetchCloudConfig(chainedCloudConfigURL); err == nil { + if bytes, err := cf.fetchCloudConfig(cfg); err == nil { // bytes will be nil if the config is unchanged (not modified) if bytes != nil { //log.Debugf("Downloaded config:\n %v", string(bytes[:400])) @@ -92,7 +95,10 @@ func (cf *fetcher) pollForConfig(currentCfg yamlconf.Config, stickyConfig bool) return mutate, waitTime, nil } -func (cf *fetcher) fetchCloudConfig(url string) ([]byte, error) { +func (cf *fetcher) fetchCloudConfig(cfg *Config) ([]byte, error) { + log.Debugf("Fetching cloud config from %v (%v)", cfg.CloudConfig, cfg.FrontedCloudConfig) + + url := cfg.CloudConfig cb := "?" + uuid.New() nocache := url + cb req, err := http.NewRequest("GET", nocache, nil) @@ -108,7 +114,7 @@ func (cf *fetcher) fetchCloudConfig(url string) ([]byte, error) { // Prevents intermediate nodes (domain-fronters) from caching the content req.Header.Set("Cache-Control", "no-cache") // Set the fronted URL to lookup the config in parallel using chained and domain fronted servers. - req.Header.Set("Lantern-Fronted-URL", frontedCloudConfigURL+cb) + req.Header.Set("Lantern-Fronted-URL", cfg.FrontedCloudConfig+cb) id := cf.user.GetUserID() if id != 0 { @@ -159,5 +165,5 @@ func (cf *fetcher) fetchCloudConfig(url string) ([]byte, error) { // cloudPollSleepTime adds some randomization to our requests to make them // less distinguishing on the network. func (cf *fetcher) cloudPollSleepTime() time.Duration { - return time.Duration((cloudConfigPollInterval.Nanoseconds() / 2) + rand.Int63n(cloudConfigPollInterval.Nanoseconds())) + return time.Duration((CloudConfigPollInterval.Nanoseconds() / 2) + rand.Int63n(CloudConfigPollInterval.Nanoseconds())) } diff --git a/src/github.com/getlantern/flashlight/main/icons.go b/src/github.com/getlantern/flashlight/icons/icons.go similarity index 99% rename from src/github.com/getlantern/flashlight/main/icons.go rename to src/github.com/getlantern/flashlight/icons/icons.go index 39c7216e2d..fcab0724c9 100644 --- a/src/github.com/getlantern/flashlight/main/icons.go +++ b/src/github.com/getlantern/flashlight/icons/icons.go @@ -8,7 +8,7 @@ // src/github.com/getlantern/flashlight/icons/64on.ico // DO NOT EDIT! -package main +package icons import ( "fmt" diff --git a/src/github.com/getlantern/flashlight/localdiscovery/localdiscovery.go b/src/github.com/getlantern/flashlight/localdiscovery/localdiscovery.go deleted file mode 100644 index 2b739b1081..0000000000 --- a/src/github.com/getlantern/flashlight/localdiscovery/localdiscovery.go +++ /dev/null @@ -1,78 +0,0 @@ -// Package localdiscovery provides a service for discovering Lantern instances -// in the local network -package localdiscovery - -import ( - "sync" - - "github.com/getlantern/flashlight/ui" - "github.com/getlantern/golog" - "github.com/getlantern/multicast" -) - -const ( - messageType = `localDiscovery` -) - -var ( - log = golog.LoggerFor("flashlight.localdiscovery") - service *ui.Service - mc *multicast.Multicast - lastPeers []multicast.PeerInfo - peersMutex sync.Mutex -) - -// Start begins the local Lantern discovery process -func Start(advertise bool, portToAdvertise string) { - if service != nil { - // Dev error: this service shouldn't be started unless stopped - panic("The " + messageType + " service is already registered") - return - } - - var err error - service, err = ui.Register(messageType, nil, func(write func(interface{}) error) error { - // When connecting the UI we push the current peer list. For this reason, we need - // to hold this list beyond the add/remove events. - return write(buildPeersList()) - }) - if err != nil { - log.Errorf("Unable to register Local Discovery service: %q", err) - return - } - - addOrRemoveCb := func(peer string, peersInfo []multicast.PeerInfo) { - peersMutex.Lock() - lastPeers = peersInfo - peersMutex.Unlock() - - service.Out <- buildPeersList() - } - mc = multicast.JoinMulticast(addOrRemoveCb, addOrRemoveCb) - - if advertise { - mc.SetPayload(portToAdvertise) - mc.StartMulticast() - } - - mc.ListenPeers() -} - -// Stop quits the local Lantern discovery process -func Stop() { - ui.Unregister(messageType) - service = nil - mc.LeaveMulticast() -} - -func buildPeersList() []string { - peersList := make([]string, len(lastPeers)) - - peersMutex.Lock() - for i, peer := range lastPeers { - peersList[i] = "http://" + peer.IP.String() + ":" + peer.Payload - } - peersMutex.Unlock() - - return peersList -} diff --git a/src/github.com/getlantern/flashlight/main/flags.go b/src/github.com/getlantern/flashlight/main/flags.go index 33cd148398..4082895c95 100644 --- a/src/github.com/getlantern/flashlight/main/flags.go +++ b/src/github.com/getlantern/flashlight/main/flags.go @@ -7,6 +7,7 @@ var ( configdir = flag.String("configdir", "", "directory in which to store configuration, including flashlight.yaml (defaults to current directory)") cloudconfig = flag.String("cloudconfig", "", "optional http(s) URL to a cloud-based source for configuration updates") cloudconfigca = flag.String("cloudconfigca", "", "optional PEM encoded certificate used to verify TLS connections to fetch cloudconfig") + frontedconfig = flag.String("frontedconfig", "", "optional http(s) URL to a cloud-based source for configuration updates") instanceid = flag.String("instanceid", "", "instanceId under which to report stats to statshub. If not specified, no stats are reported.") registerat = flag.String("registerat", "", "base URL for peer DNS registry at which to register (e.g. https://peerscanner.getiantem.org)") country = flag.String("country", "xx", "2 digit country code under which to report stats. Defaults to xx.") @@ -27,7 +28,7 @@ var ( // flagsAsMap returns a map of all flags that were provided at runtime func flagsAsMap() map[string]interface{} { flags := make(map[string]interface{}) - flag.Visit(func(f *flag.Flag) { + flag.VisitAll(func(f *flag.Flag) { flags[f.Name] = f.Value.(flag.Getter).Get() }) // Some properties should always be included diff --git a/src/github.com/getlantern/flashlight/main/main.go b/src/github.com/getlantern/flashlight/main/main.go index 43d9bcc968..09f0f0eb8f 100644 --- a/src/github.com/getlantern/flashlight/main/main.go +++ b/src/github.com/getlantern/flashlight/main/main.go @@ -3,28 +3,19 @@ package main import ( "flag" - "fmt" - "math/rand" "net/http" _ "net/http/pprof" "os" "os/signal" "strings" "syscall" - "time" - "github.com/getlantern/eventual" - "github.com/getlantern/flashlight" "github.com/getlantern/golog" "github.com/getlantern/i18n" - "github.com/getlantern/profiling" - "github.com/getlantern/flashlight/analytics" - "github.com/getlantern/flashlight/autoupdate" + "github.com/getlantern/flashlight/app" "github.com/getlantern/flashlight/client" - "github.com/getlantern/flashlight/config" "github.com/getlantern/flashlight/logging" - "github.com/getlantern/flashlight/proxiedsites" "github.com/getlantern/flashlight/ui" "github.com/mitchellh/panicwrap" @@ -32,50 +23,22 @@ import ( var ( log = golog.LoggerFor("flashlight") - - showui = true - - exitCh = make(chan error, 1) - - // use buffered channel to avoid blocking the caller of 'addExitFunc' - // the number 10 is arbitrary - chExitFuncs = make(chan func(), 10) ) -func init() { - // Passing public key and version to the autoupdate service. - autoupdate.PublicKey = []byte(packagePublicKey) - autoupdate.Version = flashlight.PackageVersion - - rand.Seed(time.Now().UnixNano()) - - settings = LoadSettings(flashlight.Version, flashlight.RevisionDate, flashlight.BuildDate) -} +func main() { + parseFlags() -func logPanic(msg string) { - cfg, err := config.Init(settings, flashlight.PackageVersion, *configdir, *stickyConfig, flagsAsMap()) - if err != nil { - panic("Error initializing config") - } - if err := logging.EnableFileLogging(); err != nil { - panic("Error initializing logging") + a := &app.App{ + ShowUI: !*headless, + Flags: flagsAsMap(), } + a.Init() - <-logging.Configure(eventual.DefaultGetter(""), "", cfg.Client.DeviceID, flashlight.Version, flashlight.RevisionDate) - - log.Error(msg) - - logging.Flush() - _ = logging.Close() -} - -func main() { // panicwrap works by re-executing the running program (retaining arguments, // environmental variables, etc.) and monitoring the stderr of the program. exitStatus, err := panicwrap.BasicWrap( func(output string) { - logPanic(output) - exit(nil) + a.LogPanicAndExit(output) }) if err != nil { // Something went wrong setting up the panic wrapper. This won't be @@ -91,7 +54,10 @@ func main() { } } - parseFlags() + if *help { + flag.Usage() + log.Fatal("Wrong arguments") + } if *pprofAddr != "" { go func() { @@ -105,167 +71,49 @@ func main() { client.ForceChainedProxyAddr = *forceProxyAddr client.ForceAuthToken = *forceAuthToken - showui = !*headless + showui := !*headless if showui { - runOnSystrayReady(_main) + runOnSystrayReady(_main(a)) } else { log.Debug("Running headless") - _main() + _main(a) } } -func _main() { - if err := doMain(); err != nil { - log.Error(err) - } - log.Debug("Lantern stopped") +func _main(a *app.App) func() { + return func() { + if err := doMain(a); err != nil { + log.Error(err) + } + log.Debug("Lantern stopped") - os.Exit(0) + os.Exit(0) + } } -func doMain() error { +func doMain(a *app.App) error { if err := logging.EnableFileLogging(); err != nil { return err } // Schedule cleanup actions - handleSignals() - addExitFunc(func() { + handleSignals(a) + a.AddExitFunc(func() { if err := logging.Close(); err != nil { log.Debugf("Error closing log: %v", err) } }) - addExitFunc(quitSystray) + a.AddExitFunc(quitSystray) i18nInit() - if showui { - if err := configureSystemTray(); err != nil { + if !*headless { + if err := configureSystemTray(a); err != nil { return err } } - // Run below in separate goroutine as config.Init() can potentially block when Lantern runs - // for the first time. User can still quit Lantern through systray menu when it happens. - go func() { - if *proxyAll { - // If proxyall flag was supplied, force proxying of all - settings.SetProxyAll(true) - } - - listenAddr := *addr - if listenAddr == "" { - listenAddr = "127.0.0.1:8787" - } - - err := flashlight.Run( - listenAddr, - "127.0.0.1:8788", - *configdir, - *stickyConfig, - settings.GetProxyAll, - flagsAsMap(), - beforeStart, - afterStart, - onConfigUpdate, - settings, - exit) - if err != nil { - exit(err) - return - } - }() - - return waitForExit() -} - -func beforeStart(cfg *config.Config) bool { - log.Debug("Got first config") - if *help { - flag.Usage() - exit(fmt.Errorf("Wrong arguments")) - return false - } - - if cfg.CpuProfile != "" || cfg.MemProfile != "" { - log.Debugf("Start profiling with cpu file %s and mem file %s", cfg.CpuProfile, cfg.MemProfile) - finishProfiling := profiling.Start(cfg.CpuProfile, cfg.MemProfile) - addExitFunc(finishProfiling) - } - - if err := setUpPacTool(); err != nil { - exit(err) - } - - if *clearProxySettings { - // This is a workaround that attempts to fix a Windows-only problem where - // Lantern was unable to clean the system's proxy settings before logging - // off. - // - // See: https://github.com/getlantern/lantern/issues/2776 - log.Debug("Clearing proxy settings") - doPACOff(fmt.Sprintf("http://%s/proxy_on.pac", *uiaddr)) - exit(nil) - } - - bootstrap, err := config.ReadBootstrapSettings() - var startupURL string - if err != nil { - log.Errorf("Could not read settings? %v", err) - startupURL = "" - } else { - startupURL = bootstrap.StartupUrl - } - - log.Debugf("Starting client UI at %v", *uiaddr) - actualUIAddr, err := ui.Start(*uiaddr, !showui, startupURL) - if err != nil { - // This very likely means Lantern is already running on our port. Tell - // it to open a browser. This is useful, for example, when the user - // clicks the Lantern desktop shortcut when Lantern is already running. - err2 := showExistingUI(*uiaddr) - if err2 != nil { - exit(fmt.Errorf("Unable to start UI: %s", err)) - } else { - log.Debug("Lantern already running, showing existing UI") - exit(nil) - } - return false - } - client.UIAddr = actualUIAddr - - // Only run analytics once on startup. - if settings.IsAutoReport() { - stopAnalytics := analytics.Start(cfg, flashlight.Version) - addExitFunc(stopAnalytics) - } - watchDirectAddrs() - - return true -} - -func afterStart(cfg *config.Config) { - onConfigUpdate(cfg) - ServePACFile() - if settings.GetSystemProxy() { - pacOn() - } - - addExitFunc(pacOff) - if showui && !*startup { - // Launch a browser window with Lantern but only after the pac - // URL and the proxy server are all up and running to avoid - // race conditions where we change the proxy setup while the - // UI server and proxy server are still coming up. - ui.Show() - } else { - log.Debugf("Not opening browser. Startup is: %v", *startup) - } -} - -func onConfigUpdate(cfg *config.Config) { - proxiedsites.Configure(cfg.ProxiedSites) - autoupdate.Configure(cfg) + return a.Run() } func i18nInit() { @@ -293,50 +141,8 @@ func parseFlags() { _ = flag.CommandLine.Parse(args) } -// showExistingUi triggers an existing Lantern running on the same system to -// open a browser to the Lantern start page. -func showExistingUI(addr string) error { - url := "http://" + addr + "/startup" - log.Debugf("Hitting local URL: %v", url) - resp, err := http.Get(url) - if err != nil { - log.Debugf("Could not hit local lantern") - if resp.Body != nil { - if err = resp.Body.Close(); err != nil { - log.Debugf("Error closing body! %s", err) - } - } - return err - } else if resp.StatusCode != http.StatusOK { - return fmt.Errorf("Unexpected response from existing Lantern: %d", resp.StatusCode) - } else { - return nil - } -} - -// addExitFunc adds a function to be called before the application exits. -func addExitFunc(exitFunc func()) { - chExitFuncs <- exitFunc -} - -// exit tells the application to exit, optionally supplying an error that caused -// the exit. -func exit(err error) { - defer func() { exitCh <- err }() - for { - select { - case f := <-chExitFuncs: - log.Debugf("Calling exit func") - f() - default: - log.Debugf("No exit func remaining, exit now") - return - } - } -} - // Handle system signals for clean exit -func handleSignals() { +func handleSignals(a *app.App) { c := make(chan os.Signal, 1) signal.Notify(c, syscall.SIGHUP, @@ -346,11 +152,6 @@ func handleSignals() { go func() { s := <-c log.Debugf("Got signal \"%s\", exiting...", s) - exit(nil) + a.Exit(nil) }() } - -// WaitForExit waits for a request to exit the application. -func waitForExit() error { - return <-exitCh -} diff --git a/src/github.com/getlantern/flashlight/main/null_systray.go b/src/github.com/getlantern/flashlight/main/null_systray.go index 4732e8039c..b54f0a973b 100644 --- a/src/github.com/getlantern/flashlight/main/null_systray.go +++ b/src/github.com/getlantern/flashlight/main/null_systray.go @@ -2,14 +2,17 @@ package main +import ( + "github.com/getlantern/flashlight/app" +) + func runOnSystrayReady(f func()) { - showui = false f() } func quitSystray() { } -func configureSystemTray() error { +func configureSystemTray(a *app.App) error { return nil } diff --git a/src/github.com/getlantern/flashlight/main/systray.go b/src/github.com/getlantern/flashlight/main/systray.go index 53179a1706..b253752769 100644 --- a/src/github.com/getlantern/flashlight/main/systray.go +++ b/src/github.com/getlantern/flashlight/main/systray.go @@ -4,9 +4,12 @@ package main import ( "fmt" + "github.com/getlantern/i18n" "github.com/getlantern/systray" + "github.com/getlantern/flashlight/app" + "github.com/getlantern/flashlight/icons" "github.com/getlantern/flashlight/ui" ) @@ -17,8 +20,9 @@ func runOnSystrayReady(f func()) { func quitSystray() { systray.Quit() } -func configureSystemTray() error { - icon, err := Asset("icons/16on.ico") + +func configureSystemTray(a *app.App) error { + icon, err := icons.Asset("icons/16on.ico") if err != nil { return fmt.Errorf("Unable to load icon for system tray: %v", err) } @@ -32,7 +36,7 @@ func configureSystemTray() error { case <-show.ClickedCh: ui.Show() case <-quit.ClickedCh: - exit(nil) + a.Exit(nil) return } } diff --git a/src/github.com/getlantern/go-igdman/.travis.yml b/src/github.com/getlantern/go-igdman/.travis.yml deleted file mode 100644 index 3ca4345ffc..0000000000 --- a/src/github.com/getlantern/go-igdman/.travis.yml +++ /dev/null @@ -1,14 +0,0 @@ -language: go - -go: - - 1.4.1 - -install: - - go get -d -t -v ./... - - go build -v ./... - - go get golang.org/x/tools/cmd/cover - - go get -v github.com/axw/gocov/gocov - - go get -v github.com/mattn/goveralls - -script: - - $HOME/gopath/bin/goveralls -v -service travis-ci github.com/getlantern/go-igdman/igdman \ No newline at end of file diff --git a/src/github.com/getlantern/go-igdman/LICENSE b/src/github.com/getlantern/go-igdman/LICENSE deleted file mode 100644 index 3ee01626e1..0000000000 --- a/src/github.com/getlantern/go-igdman/LICENSE +++ /dev/null @@ -1,202 +0,0 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright 2014 Brave New Software Project, Inc. - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/src/github.com/getlantern/go-igdman/README.md b/src/github.com/getlantern/go-igdman/README.md deleted file mode 100644 index 1d20ca2f7e..0000000000 --- a/src/github.com/getlantern/go-igdman/README.md +++ /dev/null @@ -1,37 +0,0 @@ -go-igdman [![Travis CI Status](https://travis-ci.org/getlantern/go-igdman.svg?branch=master)](https://travis-ci.org/getlantern/go-igdman) [![Coverage Status](https://coveralls.io/repos/getlantern/go-igdman/badge.png)](https://coveralls.io/r/getlantern/go-igdman) [![GoDoc](https://godoc.org/github.com/getlantern/go-igdman?status.png)](http://godoc.org/github.com/getlantern/go-igdman) -========== -To install: - -`go get github.com/getlantern/go-igdman` - -For docs: - -[`godoc github.com/getlantern/go-igdman/igdman`](https://godoc.org/github.com/getlantern/go-igdman/igdman) - -Acknowledgements: - -igdman is just a wrapper around: - -- [miniupnpc](https://github.com/miniupnp/miniupnp) -- [go-nat-pmp](https://github.com/jackpal/go-nat-pmp/) - -## Embedding upnpc - -To build the go files that embed the upnpc executables for different platforms, -just place the binaries into the right subfolder of `binaries` and then run -`embedupnpc.bash`. This script takes care of code signing the ~~Windows and~~ -OS X executables. - -~~This script signs the Windows executable, which requires that -[osslsigncode](http://sourceforge.net/projects/osslsigncode/) utility be -installed. On OS X with homebrew, you can do this with -`brew install osslsigncode`.~~ - -~~You will also need to set the environment variables BNS_CERT and BNS_CERT_PASS -to point to [bns-cert.p12](https://github.com/getlantern/too-many-secrets/blob/master/bns_cert.p12) -and its [password](https://github.com/getlantern/too-many-secrets/blob/master/build-installers/env-vars.txt#L3) -so that the script can sign the Windows executable.~~ - -This script also signs the OS X executable, which requires you to use our OS X -signing certificate, available [here](https://github.com/getlantern/too-many-secrets/blob/master/osx-code-signing-certificate.p12). -The password is [here](https://github.com/getlantern/too-many-secrets/blob/master/osx-code-signing-certificate.p12.txt). \ No newline at end of file diff --git a/src/github.com/getlantern/go-igdman/binaries/osx/upnpc b/src/github.com/getlantern/go-igdman/binaries/osx/upnpc deleted file mode 100755 index dc2b9a7c6a1fb627277f97139452e6cd8d190284..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 65792 zcmeFadwf*I`9FRV5(trSq7_6%Sus&)xdn|vAebe)aJFn98c-_55R!#NLK2f*E)^xX zS>>=CORMx_wO(4a)qZSCFHk^%1TX>XC8AYCt9YrNxL(j&jHvAI{hm2zFCkF-{r&ZQ zedWcTnR#aBnP;AP=9y=nnRD{ou@8^;Q_!& z)H&UKt^2B3geLz>Nlx~fBAyj!puBvxd+zMyBBK7LWSC;5L7S3}A4C2tFZcUa_+?zC zlkqwFqcg}@dy6c?bXvSP6U~Xq^71BsU|~}X)RVqP!V=#EtCM!xu8?8j1IxreiLboc zSKHug1f(av!|Nr!A!IiGF>OU9-~{?AoBWM6b&F;03HX#BOMKUzZxui~vA;>UQKY=Q zvc9e<&cL4ZE%=?pH{U|XbRs?r91F_J19i)5>Z;0X>K4@t{K@0dYT*-uf_$cX(iB4` z>ieq87d2Ka^+{+?`dWXVJRVF#c2D|`a<>*^S6=RN&UPjggM5i0&9-2+{8?$r8}ZtG zFE6jFEpJ-6bYXpMd4s?4r1)%fl;1?UC?A(vO))4hUtAv_g%jz^Mt#!fU}5}Yx+lKN zWR`fAm)BODioS6cz6V676@}?UeC%&Q626{tlFYx(KT7%zTXmSWd6j@B7LDr>uV>~A zx63oz%4)U7p){TrF{ezEE{kLV7_KPI;}~lNPY`4yY(QxLYi?DP1?bq}J?JA82W4#t ze*5;LBEseu6r~eLPea^pavM-@fM+rLLD8)_34H0Kc(;rpB?gH4Dd9 zt*os=n*Ywlk93TpLAU@JcuSJ^wzK0+4 znJz+jo|P_rRZ%wOBJu6NZ#nS)5C`UH`ajq88{km4vLZsJ=h=MIbPF-K>;&x+*Yg-K^Ajx*;$WNLpI` zXQ^BE<+TRCaA-!>t_NX&sjjy9d*<%})=fyx-?M0pI;=&E0_k&JI)@S zpBh?4XtZ4rng&8e_klVxTNYXBKR4Lj5EzwIhJ9w4aY;}zfY5V--GRWxNm*nGvNizd znzWfiqpm-EJQ|Ixbho_Y_dAVgDX#GE2zQQr5)D5c{GuYz*BSgeZPhh0S*6~&JNQMT zdS_e4^Fo|b0{w$KSR-}SrLu@q)abh^S0?9(Wa_HHGU-x7V^bBy9r{rH@kNMe;q%Ua zh`}UJ_$=@$JIIkWUtFC4yIR6p6Jd8t*kg&Xze?C$iLg!yYe|HiC8Wn}NQC`L!hV`5_V}K>_rK4B*MOPtEf955mqW;-8U!n?LG;6ClU6ngmosuj!D=PiLmP1 zL>rF?*lCzew*jz|i}7{}sQJs}jQ+8VwXuv9tdSqfsE=iAWX6TDjH_cA4={uKFWE+6 zEaPQnpu1K^PAp@}T4aoiWt@f#=M!QEh11XZ6?vg(liZzwK`#BUwq`Gt$2{i`o%5a7 zIm_qoG4H<#Mef3s*Z?Wh!XXN=7HajEgf~->XgV}f;V`t3pb$)jtsBNB2)A=<5!%K? z*Nn~kSi#sh;$P9I*>9Rq1EIH(8}WG!gV=V_EX&)kg*S5=Y2l5WW8Scs>1OUE;@P8x zUR7K65~oo(d;|C_DAezzHqgRN8Ctk3oAbVK88~7tBl+QTQ7Q0NG6l)>g?F&NdBYWo zqPGRR`z-qoh>-LawgOQX_JC+Hy&Icjt#ZIxEu}5`CKS!#2Z%od&GjdrN28P+nFpa$ zB%izf#5yr-rvn?N*gudT@dCqrF%17k&Q2PCT~~r}@f!bz@I?m3(-{)OJ-~o=kKc}N zTJb#OpqJ!3n)ne(2!3^g`s0s)6tN}hkIOOgh%Hcmd|e;J3|G#sVE38oZ9~#nGi#*i zUfLQhWnc6#MtcL8;tBt-BU^C&AFwzrU`hDWj*`$(wPk-IthQrF2~Fo;Ofj%~>p~L8{JMSH;yW1TwX>H;Se@6!4dEoNBT2T%H6b5g0NNLzi>4gxJ#~yv3`NkPo;DQ~g?uj3- z+Sc_rNeq5ftA;M2c1@~e5)%gOYXbxJ{*SnlZq5WUuW{1`ukmmiqVBv8BQrE3bcExt zqiMvIsEmWEP?3nIX?Je`4=ql_sB|PyIRtT{ zv8k67yU5d!AQ(J_gpTTFkwYH+b*l#!-M_pV^KTDl_)!p{zhO39&v9r2+orA)W0}{A zI{H)Qy&$~Hi!B$}-K2)*Vx)VpdowaY>_Newdq*8*i?5rj-Ke6s+ZliqP9vlv0rI7Q zJedI5Hl1{Vio3DcKyvb0UHVa%e#{&UG64RiScAZS*cp9D*`K5gRs&J4#L=D$?=ULCz|Gk?1b1uhNl5Yq>Jt^mUT4`d?#0~r@+=Sj3) ziS}94@&wzdm7)f9r5Y**@m<%$Nnv;YI>a^On{cZfxYhLwOKYOujT79eT;D zf2!%Pl<1~6EE+ZM`k|QAZmuK0NTX_unmLPrOz5Bd_GW7uW5$r%Ui}kI{~X&BkAAT0 z=P=c5p1+UyH{#TnZbM8Dh zBo<4@=#31r3WfZ3c=e;07GS>l&uhr?y>71OKj=f2zi0jteMF})i!Mj;yjMY8Y$m-5 zk9*f&Q4l&Rb@fH)-yQ!W`iB-nXfZys#2B}krKk`Sw*gX{dcw0ivh$9LO%l|cA7U3e zsu|}^CCRG$buDy2ZP|%NN~rxdBO=t`V~D6b$3y!a4<3j1BN@Rcw4aR3QA77ZA9hWn z_!;RpLc42vhnY_T3}eJ+6vIKE!L)>!h%RZELZ`7m+fgm9ZaU=33bD6!j$ue4-Y6DE z<6Z?L0o15Z7B*fWphsD~M2z*Tdu{|K^tTR{? zJoD}w1_|xngMA3-`&Dd^^q0k2`jnYn50XP4`iHyp zkIfwrNZAt&B`uBj5$9f49Vf1k(?FJU&DT$&Ni}pEvByjjDb-ky%=Bx?r4BT_INl;x zZ!C7^eLy7^HxC5}i`(>At4rghNgu7$29)j^hLUtZ{yli<+NvK<~aBJO=Otf}5Wu;HBWPDm8R50Lk-b5FwsEwgVN@u@4~N%A>cl zsg2gQOztSq;oVrmP0w^1HyA9+N>?`q(Hq`O;f2-VFN1;D0`=fAZtp}6rpPkPkZGJC zGY5K%TOkd|yBf3O=95g0C??0yrE+py29$xnB+QMkVP-&nyZ!)<1f%F=86p%;_FZ)K zs9?!tf+aIP4<1L~zXw2)yq+TfG5)Ke{s2H;|9~B&HT$p+ls$*Kh86Ub2dl^vcIQVx zVC|WN<>UHV@ZxNN!q>VTom94A6Tn@ekzPY#XUZvdijm=707d6B&Vh%S#fc*C>Ho-Lm=; z@tR(CMQ+&5b)$$^x`b{X39fa15RGm){iA4fGJbXV-HhL1{7kG&HIS=n*aVF8m;Uc~ zoaxt)-UB7Zxc0dW-?c)*hG0QtIOz+z%!`zmKVNwBvoT z!}tK(ZLf4Z5Y5jg#?TBTnn^@6JiL*`fb2_f8-}=5m;M6aJPl>?qN2sHz^9FbB!mu% zDmxgM%WBvc?&d!L2CBwq%@+algjZ*4YxZ!J21)OT8ivUL6RmKvpyhPbT8P4hv%C5f?SBY42D9%&nO&KXck^z<#8A%J#F4un+|t`Z`~7Et z*tbMsFu9&63ArBISIr1)0*ZN}B4lZj`(Oa<-%ClO>sLB{f4vx|D(Wzo5|>Bod}$w= zEz$RS^k+Q!OE_r4A;R-vpbhtdSawpwj)51@Ka%zcEQkI6Vc~!Sj=L1;w_BYLpPe5M zSlO=wRip_s`7VI~UZTQtU`C5&SNc)sfsC$Opz&eH1zgT`o)mi}s0@rmGSyBt1kOP+ zzD@*AgRjd-U%eJBxa_sg-!D?fHL%9H&S@XwRR!iD6<_p9kc#Qtz!d^ZA+SJ}h0(6> z&^TwpS9sQR$k{jN0j%1>KaHLCCFC*&((DJyBbTFZPpl(z*tfpeM8~z1xf&})*ZrK| zM&a|w!oWO$f!Pgk=v63q+0FzlJU`oiEmoM>Y*!CW5P>TPJM16AbPLDaf*QP)8Q>^X z^Kt3dDAA92!zDw^u0mSpp;!Hl@Tm>OM$IE;p&yM#+}|9{PoZ4|njE0{JA8E#jSpz( zNO&J+i&H;{ZKrwMM=Bl`q{cb|FXsZ#?$xV6yAirp^aBDIbF#+hHw-E&H<2FqhJQyi zL?0Gj6)%>6ebX#ThJlh9phT*bY(a_i5Z(w9A}+A@5&*HUB}Q!J*(&kEBt2waBgn)W zWfWe7QgQ%9N4@~-xR~an1O)sD1porhlaezqSN4I+iN_=>suX2|^)IHst@-i@#zfOM zQ}ydR9>Ehb@qoYwu)A}Yf_(E)An@o<%ET{_z(6;nY)9xZJXvHb2nS2v*~SspbYlhJ z+ZoS8A-`1!hbOwR0SOVAi%5HD6Z15E;{yow(0V-G`eCPj+&({c>3g=bfo*HQ!}YQ? zEQvHWccQ3y-F5alt=|5}zLZQg^j)aNVq@s#lkO#P%LdUV{n#8XyPzM`1;>aUA_+iRW$BK3_{`8-Z5{exgRW(I~Mx@u60 z7TvAC6pUsD76#i=oj70pQT)6Y#v?4MtN;&5{ex0it4uQ*QzyQD6AwjK<--iiay~&; z1&X!c?miO_-IO11p*h%=28{Ykk&9&eG#SoKI8P>h&qn%#1VQNr{gY_h#I~FI3s1)^ z4oc`9^asvWsD7uhDhIGpQaZja$kq4FT(^IG!`5NySPi~9G2CvP;A?#Z zrz2-zFk8?(y0&ftj@-3qD;W1&@QX};dhm;^z}Ze?X3E4@R=ue|>%{P8$N7b3vF{{D zUHYfUQ`cY1fz{t|k9^Nl`I$H6BM9|2&KTH>LbB@?kT-8Y4gy0UBVFsTUM1rD+^N3? zW(v-RLn}ZwUGU3L3X%W|7=4)wpnCh2070Q|K*9;jBb?uWE&#x(iz=ZjF}66$EG(%! zI#u1$lF!yTs&}^Ha*8vh-97R6O%5;tdFe7QQ|7r+j$p@a$u|nk00x^s-&c1^OmGyh z82`EJR+tbeiho4#%k!6CsJ{~3v$iE`6B=r7Igf$jiL#wl`|SE;x*^*W_5z6*scy*t zm(`8C!Fuu>BHG$=An>-jr45WH(N5Jx&ZD$y?BO&?COec)MSTMw+Ap?wTa zt2?vTzR?u_(Thbh6Q9Kqd>(%toC%Cl%T`nSN-mKLPP z;Vra@rta$lk<#s<+Kj zw7Sr};zX$#MZ8jNn}e_)$H_H8k)g@+*Q$tNWv->?UD)ZTbO=`dMGPIX*|@&jyc-%A zdncxx=#Z2KVOx`4@DEdwqNT2H`&!Ik%2L97k~Cw_!{S|gFeAd7xe9<8_d~|+-GI2$ z7%*(&C+hue`lllgwY0fZ_c6C|=`h?=5&d>r((9UdR6pWWz3n}EZC(T#BO{?b*mm9l z7lapA1`wBxM@r-3pU`RC3SggOE5xSxG$c@S1!}tVBS|={4p^PVY`A>{HcVg)o0-_A zu0I>e$m!Nd$0^{_)E|h!I1MGO3VH?%)Be^N@N|6#=`s)hP*4!giZ-)Ge{E8UT=2Pw zCocH6p`dlYDS5pQelVd#Z&{m3? zlR+d*0C9r;a}KE*;RzvG$VtNX$pQ)jntyHQ=HCQR!nu7OoAyS^;lYMrkK*+W5 zO5c>o(X2@SRHXOPY`+P#`d5@pe6OjA_I#bk zSe^oMNWu8P>5QTE{6IgPeD@K?=3#B*kzlu~-R0b+5}i7;TQhEI-A4bJ7ak}t$e7yh zDr|+$ys6dv1F6#chFSyPVLI>VcCnW!0tEo?9BWae2#VT4k=jCCPFhxbj34G;Jw50h zX>Ny}QVRK4-AAkJWQTdh>_cD|_s9y=P@ZJOBa1q)776cGTBo?khp`WAQg1sS`5w4O z`{eCkvOjZ?uBtmrqlWkNPDIybH}6K_1JEJCW0{R_bbSIEb{1H~RiYJ--X0^i3~6Xk zEu6LIX68Jtw!C1`T<4kCzPtvPS4#BvyfDd6O8F(k5uO8TIjrlZrP#zSpNAtH+!MrB zb&;Nm&D6}O;mQD!sm^r+o7+I;eyC+A+QxrG#-SCO!}{M&-q2ImvLQDb!WC#lHfj2h z$H5A0?7reTU@RwqUFBsW2OXnR9UT)QO-uN6{h$`yJ0Wpi)c@cFdqvETt9dhV90x=H zmp7dM05RccQg@sB#@DdCcEF@Wrm>kf;@|{0Bm$!o0sImyVcv=3Kb}}(;*NqcU{+Y< zsDIte;=*~fgY{t!xM={tVmg4-6CQ|ZYz79vZYKrvoY&!EQ#;ODr2bEyziU3&hpFz; zjmgjln90!AcBQ|ziabPzaI2E6Q_Qz!P<}h|UZrbxE!(2R zuIdPRQMDN*(7#e5Gd2=Jx7QsY1G;SOXcP`_CbT0hhm!%e1&hkAzsbj?-qLPmaHC>~9}Gzb2_ zk*tTMR@gH;Y1`l=l^r(k632RU*55qNS}!Yc6GARhFqKBO!CueX&%RtDXj_q+a?m-k zUEj0%B>-_Bfb28hqw`DO!(vsy7#XY?h3BGCb01QK&O`_b!s($KL6v0ZcO&SKv z$Uk^J`UORn=ACFR&vdStoHO}?(WCuCp{&z#JW42z1_$b^As~w3DrS!<8f$x=#(>30&x^ zss+E8vV4-ZRUqOBs}JsLI;%uK=85k1>SZYZeu@5aqtxg?`LHKe`&<>N<?R$e$$xl^0k~d!gW!U? zWnwT|=+7n%6LBu|N#j4e-iErz9a@U_wp@^r~(cykv8fgtiFAhwy3LyzfJo-~=FwA8{-I6-7+dthIZH;%kv8$_| zdDs-K8xJsWVGliJ*+7depovE|RzKtz9BF#X6Mf1Xo>3$Y)3-v}$$qT=&gk=U2+Fd% zehF}}d#oDjqA{8@#9x!QDK9|?ws;4pfXRMn0q@{c_6#f~`~KN=kcGlC#^IdauM)qe zw-bG3b|l?vRE|2Vua2|Y#*kB3Sx>u47gpg4|3VKt82Q2rNpS}m$JRTmd5FHb z2d{*Dwx^vBA-%O3V-WnZU*IyVS}7o0+_gGn{s={&iyY4OTU$6V2-CQBGHr!vr;*>m zy%|{bd7&Bl$JVc9*pz%34GY}I`l+FPENP_w5*|P4xPWUL<2y(+qJ|ztHV$0akk@#e zctK1CwC?uHn1dxOQc7~@s?Dz=l1nZ43lff-o%w4BA8o-OmvHz(^Z$qNF&6wm0S`=S zew_Yg#eXi&Mp_VyoXrSW5#eb`3l^ie8b|Xc|EEp^fHS24<^iNxpqnM=N`RaeXo&<(2WX-Nnkzwt0FAdmZUG9+ z_N>{<0f~(81V3nw3`deid*p0H$jC@G3xKhaeuSVTykM(6l^u_-M*lT+CVa{;oQ2DF z{VX9CL*qvk_ITRwzi42ES2wl_9nr4;&7=R_qkpFF*h_^JPS3>wgJrgP_26$u?K?t-+V|Qq2;z>JokHPNVEUq22kwM z{}I?%Ap^j!`sgZ>waJJBqL-?PNv?jt)A!c2SzSP>{TFNQ;cO z-B5>P#5zDN3}GHt-+?-K3&MCJonS3E2{#_N&|qMQ8yCqF{4JU>y-I@v>DEVqw7uVC zEsRa>tdw=BaOw`iI=2?y?6!5Oh_$o^KGlqsK-iJmo-zfRG=t0D&~>M`9KhNbZ4>-i zdzKdMSa&*-aG-sPjqK#Hte}NY6XniFMv{G!T)w^E6jaxOH)ey{dD&`cKCCn12owNI znsc370bS>MqEFiP^IG`oItT|06dr*g%uZ?}k6~tS1xL;GU`HfJ2)D(w9EeI!rd>CK z!VVi?Gp%G`;b>`wF%AK26fL}i!)orpF*>y7YIsjqI$%Z1Qae}&wet>`>!)Cd#l^xE z*K#|7O6p$?Q7r7n%)$whv601Lqmxj)Ou|v({lho00)<*{9)dVEi$-1=T@BD=e>N7#G>PfhM3e^w_Og+ODU2p1N_3Reg<#2`M{lpOH)?MTI# z;q{6AxZO1eO?p*#7gzRBC-88^)OTz`jNVVoCtmjSgr{h5;f$p_me`Fs@;{c17IH!KBBI5Q0w zWuTj^jD7fA1d)qmmDJ=a7P^kmY?J}b5JrP6+{x7TGyt4i`3&!1C(Ml=x$Ax_oz3jv zpnzR!%PlAp6oe`M$!33)(nD!%+%OpI9Ep5k0y?*HX^2dPRfLQ6Fw|y&CmjG`GwMRr zd_iMf1(kx`QU7RN5C$}az}*G0N~WlfMbR%nkwwAQp(wOH8xIvG96Sf8YSBLk*wJdp zCFmC`aZ3uTV7lE_@Xsm@GgTmc~Pf!cZBw$fRHU5M~lDgko zCczcBA8;v%YvE1>NiKuvlbJuA6TDrD)HpyOQVtnpBj^YX!IP3`wSlGS-g4MQXIt$c z{V>uX^JffHcQ<7G9s$`%1Ymmx0`pw7L#}xs3GjOphDosth?T%Oky${q3YE;uPz(oB zvGX%elNG7^kBse1KeH+qCdJ>`7mxRlY+sclR{Rd+>1W8E7wI zeb~;vC*cVjIVUul_rVzE>(Fr+yUYRL+r4Yn4zmk7cnA&s$*7 zmtfcRq%(>)QXT#y+Ff2Ogv{N}NkCg1rXo34jUMv~#C8srgij>ARKNqHB9n+Oc&s2$ z2ohX>i(JOETmLMQ3sTrgzJ#cY4&vBfOv`YH@+{uVIBFE9+u`*biX$go|qLVQC=(daH-K z*^j_w#m$o^D}k}xUdaNITko4GvcMn|7=;!$pu2H?Tkjh_Qlft_!&r5(!+gdC@`M6b zTZ%|(Skj~S(Tp31!qbvbV$=>h4^ACyreZ`qh+58e*RY}J%*TMsw%;|}MJEMjX7g!0FQTZ84RQmUSZ*!_ZJ_##LHnvuw^)mt$+!ZL#odNMK>KbpN6ppV;0`gBe=;B z+&f|(-18TsTM6fD*sH^87$oc)Ej-MefNUsRFckJFclYRpZNDb%2TS4m_2@5p=(oq* ze$U*BnjU?+!>dQMV5He&gj%rtaX;ZPHnyZO`Uae%@NAovpb|x~U=ad)t&>pfjR5V( z(kY3h^JQuHPBwCD9!JAv9B76JI^(Za_f9YQCVbVOdBcT2!aVVW`;j=8y5$mQ@OX8g zSlv?0gTO!mB0K{OTntU6kOWCofjNU7=c#(rcLJFD@1kl<4@qE{~Qcnw+Of-iYkrO`D)>e}b&3?P-&sR`Oft!a~XdfZeM_5om3{ zIM5`Z4FH(?Jj*O+oxF!7QW4&YQ4TN+GfPgoTP%y3jg>f@qejzoTvdh5-uZL!1!s*6s{6hy~})*4XJARugn{ zfjoWF(0o#R3EwZ_Du9z2dE3$8B}n1H!J=|r4TzDdq!agSgvtIh8mQQ-={tDyR@xKq zxsAmbPzrD06PyKxqAP}aD!&rfO3gPWV}PFkR{1{q)uMigcbPq~^7{~*c$3a+EWrNb zUSdtwk6>tqD_lH8=!A`=FKm!lGx$%E>dNUxyK2k*=*G?#c(>?#DMF*3j%g0S7>aQ~ zCXFIw>NexI2*Uz{PYxw?e75 z5;w%W*?b&y2&bebFHB;hESQ5eYX*n_NBTQ)&oT{a0IWP0CqG!eaHsDg^Z6L(da2ec?T#L5$TFqAD*LTKbAT9)iDN_K<2 zOvzC=f)w^}C{Ob6&IX6YxnqDxSOcug2(B9Q85F@#v@95mQ6iz7@&^mps}Oskbrd;J z4^mzv#lE9R&WDa7IZ-;8tIP5;dQlY@Y%QKweatO+f34nU>np43fc54Ue6N^yzVKNm8hThHa zM)DM=*6+iTTsyhulk@oCKhlvRl<5D)$Q{NoP=8+N z+=+ZJCxZRNBpPGs=AY4s7TlAKyL9e}p9dg(ADj0R7Cx^P_AV85!k1;J))Ut_H%j*6 z{|$aH7k9VBn+2c2Wb1IR=PZRyu^!hdxYRs_m+a3zOrFZCQhgv*mY)6GJczRx57e83 zl^C%!Exx5;Lo8jJmP0_;y&n2?1N5p_4{(ClLw5>=YNWp?qpg5$gX0j;eNeNVtOhl^ z!JG{u*yYF2CMUpk=n!Se!LMw;unAo#@W#Qcc75hxG@7u z+o73~{jUHUro|#}W#xih`;c$W0R-L|w!XcH6~O)H0duxbn-1x0no9)~?9i}b^)CiT8&~Q>dddUHH-4c%sX(1SKRKpTvH-_+WS$aJ$hfSehF+RL2*a%0+dubit##| zly7m&2$m%6$He#9c>X3{n9;w)#-FsG586$KB%J595dEeFkxQJo0j*Vbn|GpdO)mz4 zt^V^%Dq(tdpbtFTxs^HLVhx6{1IAKQDF6w7hPyPNnI z`HszBjXR7!=07hXN>1&-hhnQDwp6b8`3%ozu}BRQCc1wN4?X0541J+yo{L8KT1hds z!yeU*FRJjnOa63H|EjL$&={A^+r}sDPp$FA9k-hU?Nm;PAiOKTyRCHj*d{W+|f zaQ0|?XDWBfYz`I9#>BxAjRO9|${rZVn>&cXB5R~#H?n4uOv9)Gco%-0WaeP8`o)G% zZJCC$*b@$F+^dKG*cTn697`Fvq}34S3r)y76Lo0iIR=0w2^S<8o7(mb}*io96P z(Mwph%`szo^XDb&m&9?t`l{GCAM6N`KK`?Y7za2n0zZcMap?XYdepq+Z4Oz&5I=&l zy=l?yboF6ucaJ8n{195y(4*ZjOv13r}2st^1TKJah^EUCtEPs%O&T7XC?` zz}gc50j?J$8QQr7ORlBr~b9zp`0IL;Ki=&n7IsQAEM^X zAP&7;LR{eC{bF~(nXue~7y<&X)jNKblAJUNKJ;J64BVT`e+`E!yyyV4`+c($SR)zE z4mbJD$>JZ*x-9n>s~lSY)O>{H`dJqykjXPDTddDS!}M04Al6=PsuRU}q3DAY>)Rn4 zQmnzs{jibf;k zd@XtdIahI3PjN&>T+Uq>23yW|vT}^8337gP0t+R``2b+FYfV6{|0w5uKxV>yHv9h5 zT_8oQ2axiYaZjALi?lHBKX%5|!e)rHI6HfcYCY`3HW4pb@NO-xPHE^6_Se+5nsfhv>(8S2~^#>IVv;HzGOlb6`9bS28eYp0Y4eik}G z9&SbJQXb||&nL;ll>!ozhpS}LmWNp~Y0E>YOxp5LCX!xAE?me^BG!5VixMV@ z)Y0#M!ioHbnTi%-!gL;|*(rqS;aqALOqkeyEy>=*D{fDVgDSYkvYw}Pl%QhhQEoXM z;-T5<1ImT(r0q%riBf%B1N`veU{o)f#+VyQD?r_mE0ftCeLi)EmFpCpVc5`ljYPZ*l)>1gy6Lvt4j+y0W?=Y#wn3NEYS zQ$3K#teuczYf8iyg!sSe}!Og= z1X4@2F(Gb4*@XKUz3fjdm);g2vRz>D z{V7EGPdp0i)w6fci|kdxzH}29(c8XsxHy=5!~8CYL8osfM)YHb5c4+LaNp%_CO5v{ z`3+80#IBNy!9A!Jx88w(XG<8w2FyjXuS8<)h7#=dDPlXCV7Jc}t;<@?I3N6vcKeL; zPq9B;^MTa&&?oTc;LQb0@GmhSb({)viS40JwBSwIaEbFi5duJRp2Gp-ggd& zVWaF;dc!y2`cJ@NYoUi@Yw%lUt#EY0{uS-#3zdeA@kS0NX3az~wc+fcO0>lPTyU(t zIB|YQhH?$g0}3IrU0n05gWq;`EC0(v26CDdSg6mDGoDIE>b53SPw>h)ww$;$B5vM@OCvp9DqE7VNTjC0P`r)?%Ga3wIB12S*3m#omAT^(UC2{GeH!eP^gAWA z2#W|(E3oCpQ3dAOG!3%77MV%1owPl~7okk0lYHL;0YEQb#mq2&e~##jkV3U3EHo9p zKNy5+DZu89@37JvW{^d3&4`Q7U=5e!cok^O8B{_E%T_O(J3$A^zLYU^6Xyi```!CKlUOl8R3x`{TU{MC+x;R@f8Jok+Dn} zn3Jbrw1nN6%F#5k=JGr=!A23Mws1@zGIu{KxF^>bj(=y2T{yO}*u`D8M|dXRFs}rS zn2tk;5sJN0`lJCFY(W+PVqNi4IolGPWlZAJ&^+IH!+aNroH$>lQ%oF^5Z&_v*ca&T z5N5vQd6sCT7oNMhzfI)%JVBkTbsNUm=6MM&Z1&~=D;shO`~Dg6Nj>SZNnb;2LcZl> z@fovXh2S$7UQa$trC(+9ejZ^xW)d{N3*dyA^!8aSMN>aQ$4Jc7H$^ID>c1nC4sk_Q z$E(&x`XLE|xxa+d=%7p%!TRUKVKQ;ZPqh9!o)*@>7ImQqXmYMHhc^YCL|8<}a zK0IQV+5VQCum=Vw=*bVU@SRFe22l7E`{ktZ{iVPqW>kE9Ul(JE@%=l;QjYIa0)~O) zEgQi%zQ&O}&?q_t>py*WyZXhHX7?bL!%*kfLb$hcyGK6$4OHSDypjGsJt4e-o_;BG zi5D;XSlhnWL`F;&4$5SrEIcbgLKZB01K*JHGnoB1^4AeF`h7XXiowhS zML8_uINFE(mvCIumlfm+n=Eisu(?bUxY@v9dtJa~WJ;CbKP;ta{h0|;^c&g(J^N8NM@`?`{49&>`yq$AHZn!%H@L>uv~&2^ARfc#$`F)@0k}NUn*dHAJXRV31<+U zXY}-EfuA-rzw(Ah_d}oT#ZF93!OdsLL>SQ)6Mq3LVn3e#y>X27^XTOn;Mk=|C36gS zm%*`ab6*Gh8QaqMSNF!FGWZ&~Sj_`^@aQ;BS;(VRa7p*dqrW(M@aQR2?2Sk7gZZ2U zsmT9Ni`4H=w*>H%_MRp^7V@ULNBuRY!jmPo|#Vxga)|4R{95+FE0z~De?6p zl4b29I)Gnb2*`sO+9&46VvKsR4lWkEzyyIU6wOOjP=i_=fHm3i0pLf8dbiBJhf@E+ z-tL9}C0OK6!T+z&mjwR5qT2kg#(p-=|9g?@o&V`i_TYcw3ZBUS^{+_&--#x`|M|p- z{oQ5`3-~|G=KodbW-t6ll{B%5k*vE}jAkzk--4}Cl7@I%v?ptI!w*b`X9H$S{K*-< zePH4jchlXw zTIHGBw3Mf!_)Bx?e*$>^o?!GIHKfaej|<3}=x4-o`kLrZ5C(>$=&M%7d?=XJ!`DRr z&5Uc1@w%1qQv#*|&}spmU`e334q;$4GIq<1j^eLz<2QQF^0NWk&t@wJY?Xhi&Pe}@ zD1(e@ObGFZL_dXGi^%hKUWB>FwSFmn%kW!`-&*{Bg5TZvJ&2zt;rAHgoAKL;A5^c% z!`3aSj9nh$8im0Zg~KO`Q@7|;T#xw&e(&PZMt<|bsed9q z{5QG{3xU0g$k$pQ01~{`xDY`lmReX#0LWB1#WQSPtxK(FW%$-fyY>#@;Fi9lTiF)&EOqByZyy{{}kt%uZVhe z{?xTCxvjty`>fM=ATws9;;jYOEBIiG#t(eWO~IQ${ZjDBynZS83cz+x<=*y|bXHR$ zXMz-gfM4<8t;!pLpxxa{5(&rav7{8UvsnbocNM^oV=SUwe3ujoc@q)wwTfqu#vQt@Tha6)VQ=GleJhv`s^y;}Tl_jC;}$Rh)9jpEg2L?ZJ2F>_lc25d;|LbLfO(!mL7{(v1TgKQZnGB|=JQ1UQo!5f|kT>T#sNoc(N*ae4okP2{xMa(GL!pGw9rITpj zOf#3Mo$N6vQCqmybcAYwSorHG6WjYiRKOj>cn#I@vM_VaAD|xCvbGxR@aX>t-^)zC z&oLMnaB2?6e|AyVS^D}8=`fDm_-}4BeViBM3kMP%YD&h=TVn&^kfj}bBXXZpJSg|plQ1w{RWm$Pu6dn$5K$-38_bdeioEasKC$juQ$)P!Dc zlhNdh-0S}cX3C4)C+=UZZ!+OxwrI;+`BvVmUSsq@C}#US?E7K=_i#i7A$rR+u>r*z zKaj5ltod>SnhP9`+%YY#m7_tjOsO&t5hdCRi>7vqcy46?S5RU!j*<^oX z$8^zrkMB2m!&eA@;vAsF{qn6>0I522cX(Dtu z6`Ad=Ji-%zD?k8mcV{bIJgv^#9~pqJfb#R7TC_d751$UnR(B2-pBh%Td>M@PUv_wr zQ=c`U>ut2;F?Mw#z+a2SXHWSz#`xJ&f!2iYvbeqFa%SUioZ<0JF%Rt0Q5qDMS`^+Z zP`NHIRU(bw1c`I)k6#3ah#SZ}{2rK=~B+&m-AFo~--jA-EuV+%K0x-E%#Cgkz;*b|OyP4PUIZx$uc-jx$8bPafQC@(%Ja=F zP^(n=FJPjba}h+*i5%w+l#fPk!k=M<3@;P<-;FNMH#*`sXjr0_D z&U$Oc#0O}|j6{vWKY0b3m*j$G1M$coPOwL)FU42Bune7d`3Q1d{ACU~@yHB((dFl; zi+6fm`tK&=fSrFKcP;-wRC}lb$rP;P3lVOw7Mwe3-XmJwynwLl0ps7fdJx6&!SGQu zvulta?9K>`)wVS?RW%e;)Yf_?s`53B_E0BLcHM5(^PwKz9q7sw&51nxVTk8Z27YEG z8(W3OA$nU|*U&Zln*jhR2avbcuu3?T#%yK}lG$rje5|NYDZ<}s5#WJ|VAgNEkfr-2 zfccGRHrvN)7A>xAYkqU}T2=f9DHG&rB5< z#Q}?cuZ9L;E8!S1@%#oC&4CYsIA9cBj&}y%1-^EC-^0RpT;jv5D?)V_?lTx^LxDP7 zqE@@UM#IlwG@aGQY+aaxJbT&%?Fw4xlo3YmEx z>dRawhWuTV_YqM+)-#B$-IX$w>#8V)H$ereL*{xEEH+%1r|>mO!0-am1biYRV5{27yPAC2prDx(-uCSN^ zn5yjVa=go?ZZSF$o%n1MmV8$q(d}CnL-9p&F!PRHfSJb|G#I0Z$D_Xy83;;9q=kuN zzXokZa#8y4Ed5WW1|ansQ!gXMGV>7v2j=JJAJBsH1R6Oq#&!36sUE+DSc>Y2>?-S1l#Pe6;`H*=2T09>S z&)n>}tmT$e5S0R>rs!uYQiP35>nY*ciq>WGsiV6lmG5a~M0Fv24aJV5~1= z;~4u2rhRo0W1lis!kCE|_$~g89$oFLZBRy6EArumN16^@z)M?-z1-{D)~_chj4)Rv1>Lu0+azOug7F|R7nSV462 zGyC^w&rIWEdwm`j*!FeU9q-CjS&5b@^(2NQ!2^0p2E5 zneOvDitFp@Bn6Hpe}zBLbTUF}QNdf&KWSlaZ-pHr0!=k_iydf|h-NJ+1;a`z z8X5p>a*SA1-{|m6cNL6x)YsLn9Ci%n1kEp0yIr0R?IAE33FDE@{)Zwpp1e$z+ ziP7`dEc5l?`!^+TW^%o9Ftw*tl>6#1{xQi|T2Tj)qFh)**jP~q5vyNx0?FT;NsXdz zUaXZo$2oW5(Fh2wo(OEBWEC_Bkp8jg7uKzYwyM4TuvpDT(En0#-~2 zVNIPi69A9JMNX{mwZ4ibU%9_#sSmy9tSGIitFEv0ePdym;|SE%+z{}2T#h>5^715n za~i5DFd_b1l*KWWpsBdpSGmMdvnYn8rpa+led7{}%{P^Z8Horvf+a-%ZMVzNTM{=73TZjTL283<+{@|q*#Fm3 zU^P4|;9poDz|62IpAE675BR?^1*I0E(nensWL9WfN1(AbQ^|}89EJ~npwl?8_wYF*|i5SjzsUUnJeyvgsY zsN&cXaH%X4AQ>pPaAiY9QDqzRV>8>6FJOScG*Z<`>}^$ zouHzu418J|sP)%WRzT@DNJ*9LW2vj~S6dzTSA(e{&FUpJbv3M7Y_kHHSm4NQ z%7jdbFjEOM)HS#)HjEhQ@HIA~Ze@LyuP_&D>@*<g;7g@kwtQ7r zj7%spr?jpV%`K||LlzOq7>B3HQR8=1)QM78fM(EPp|T2&s99X)02-O)t*@-8b$FdK z6Zt5!#wq^#ddDK)az{nu;=oeKSbY5xYd2BPsasN4zr4=Tw7kY&S?w5|TbZfMtar%H z%qg8&>hK7?2;rIz^|ZWVrNfm-uqe$HN%SQ#3(KNV4Rt>Ma;PB31)0hy6;0Z;%7h_OkO`*RAV(Y%?RVM3t)Rldq)B9^I?N{KG$J=e1L5_!wPE0@~U;w>b%(dQ2| z)`5xaqUeN`XQ4-tQ*t@EbU{q{VL<~Yn;c_ph=q?(v?JCftFE;kowB7~%Jo- zLhP`3oT=E&LP^?Ie!^JCjnu1Xn4LK2iGmR?d}2AbwKedRf=H@wF~p*;&bpPQ2~~5O zMuC_7or-bn>VI7cGrO$8S6Q>DrZSc9#-XmaQz>*Ye5B5Y>krDP@s8Hyd%kuLt$yf5mjT@)rj;|tu-2Cdm=qbcE8Zo&6 z6T7h7fS6(@?j91E9aCa4Y)v+@rbJwz9n6^StMfJX%8S_4jv-9gE6rZnz%`c)klIQl zMmYko9+qMi3t;rTSUBTV++vNBRUBfz(8Ox=OWo0=lvJ#kTI0V8Yl4gG2MPup3mcjg zOrO9Q#7mGEDN>FZGU{-|>&$7e%cD;x3YwfRV;m#IN^32&(DV4mrMME!Eyc<$Pj`8Eh<&PdeF7Hyu?CScZ6-|z*-0C(~$&Iu1oQ|DCy`$Ri zZzvc$)h%J@fp56^kmC*3_;XQ{T9FY$nZ!rS*+4Wa$iG>|tS_iM3do08J7{&jnWE1V6ns zbxXVzD}9Y|exr(5JjYOmqy%_CZVYNuqcA@%1QeSdMOX44{H<7i(UWCCncDysu^ zOMF!d#!gv`tqF`c+KY@cv3$Ag_^pq~U%(f^% znZL2Vw%{97O6bIYEL~b!nphkHIu+|9mYDda1TdRo%7YjbP(rY88Q4-5Sjc!;ajA=8 zL2h+GDVruvEop)wd5>$7T%9qwoVo_=e-6|V{qkMdgWZQFunZ#Ip7-R{;dNG`o+<+o%mtr^xdS6qMu?fwJ zb|ss+f|oWzpEUYwxH)7SSkLolYBl*AeHBaNOM5(bPQwX#z<7dn#R?|^^9bf(Ssrdz z+_|K{!m=%+O3@tmP%i6)KZ*Jz$nBF@$;?XVqI7J|TI9ycYO(ngxu|=xoe0UWkr6`^8#>YI zC)8ffE$Ok7mb*Z)Tn^Tj&vG~@R|$tT4HYXY_yhqFhc&1qJ=X$iCyIq3%qDyHuqY=1 z`<6ENS1MwcEQ~eo+N75oz9Q+nPTptRLt_={W$UiQ_UU2(WI=1rDHd`&Sr(|Ii&3Ft zPMY_&he~Wn65t-W`E@vL=TtN5s(Ul25pLF3RfJ?w)>>=Puw$ztZBG!tq zC%|gy8AGE@inK8t(}ZPhr|9jg2>7e(8*6?9#btG`tN}XHy`s7z0EcT;%-;l`qHs9% z826d=etYO=)`KI}l+cxmJ>bYL3p6x9(16MwZw~%7HMLch*x*3dCZMpZ^`2`(QK8h= zxU|L(q@KF6#!62qoKkXFgkrUX-&f^qY^+!*rkceKl#3DRsT0`>(H4W0-q7}*2bClQ zm@7+dO{L#cXK5nY`7)UE%)h##HsEWz%6CHmKD#Pq7S7&CcSRkR6Ct%tao)t|4U1Xu zCcDRqtptg-*8-O4Ny(#GyEwk&V_P8o2GCq47>T7G2MtBh|>t_VcpH_@isLg34RgQtDdwFAx zA8w*#Al8^Fz!U`s4+_p8Vw<*-(PeJuRmGa)yK)N!;|qHznEPT6MZ*XNxJYDWmN;j^ z0vC6x>_Y??<0W%ZG$1xfz={)kWhj2Q;-}yp5b=*8&d8PL=cY3|<@D3iQc{$Zlna#9 zl!}x-DGpp+^&*46N5gpFALBS1R|Y8GRsKQ%>OFu*!w{gtE7(ONm9)d?(5CMxsSTqP zWkH^j-a1}Mec%#Y+sao`7T^V->9fhHD9tXV&k>iBw!p0@tzN)O zl(gm&C3VwGG&f60FP){NZnz5NW-F}9yP@gpVW z$d6F&MkQs#jY|5so0L8aZc>ypK_maA{OBqrWkq&M_JDpFd{yIH_^J6Ix%S^bkE{o; zQSF!&rWrCl&3tng1(_=FXwox6MQaN~V)TXmUu(kR*+wgIj4<8c<3pq3M+7 zK^kvKQk0VF`>eh9IXKn#zJ9+yKKJ|mzV7kb!~0ol?P2Y`pS7O%^Q;9$f>1&~pz^o~ z1ci-4K0OYEU;y-s4e^5_QS&*-Q|KRo@r5uVh4|4jsOyfv(HS}Om-t77V;NY)XaW+{ zAcErw80sJD%Z)|nMY1V`j2FfQ-(h5cNa{jL#TSSIHc)O4ko!c22cdm$*e9Hpu)hHI zA@&paYLvo72n8%45Q6~4LIUK|5JrJMC~*x!0pz(6&LA+vyCASd1Vo-qBoq)rf+j?; z5Wzs7AgGxL@qHE%!Y+CgWh|j&qDTxRtDt0vEF~f}KvvyNh6q#;36Ur$0G;- zgf}du8o~!pkOW(J_X+P5b#7}Ee!CAVV@Y2 z&`Y1sL`hgB)5RwOzMhLLTL@H&aDo?%@H8MV9t_8#z9uwyi3_womLUhEI^ml3iS)tp z(Z8%m<1@h_7Z4PKmD7l0CD9p}pf|{Ug2J$yG~nE$(UtxQ;tH7Wi;hB&z%fdCsN(5l zFaU27ybs7-g~HP9utFGUEOY{D8->>FphJKMRto1qK@B`#ES~{~ng>L5gCC6p$0lC? zqi}p-5C}7Zp&V#D@DqhZVh`vLo`7~5=rGX42YUh8_)(Cp1+5yQAuq(GxWFAkKo9tV zupCBEC^rOZ4#Jwi`R@a7-)=@^1gc!}+em?HtB8fdMa$rBOt2ybb__0vzZ_#?MF~K} zQMZKEFtED}3?9u52G+=6VnRrS^#&RZ++5gmkYr>L5@IbtWB=&rskldk@UZPn;z6Kl z>G@RNvEUdz^OiG_(?t|+uw9Oc39`|_;ML&R^T4x&#*Ts4=mC?1Jz>IWw?nEFdK-2~ z+4%Wk#WIv{8f%v65loDIAjj5F?mQ~&82c`Z$-~tJ`Js33Bn#H)GU2kZvn(R60sF{u z#cHIfGecB_D54H)mv#)ozDbK*K;j@BVlsRTrHguHz&s^K&F4wp&JW zFdlXvN;QGDE6})uJq5!9Jsc z)*{Pop*7H2=q^Q4y8K?_$GhM~Gy#*#SPEwZl6W?S1u(M!${$5xt~ZG@D2zprxRAnl z5Q%Fj41QRm{38lC%p>tvQGPCoH5laeLC89h--5z|r6hKy@c0lC^C-*@CGkcI7kQF+ zk0}3a5?`P&mwH~0DBLiIO#ez@6$+~{$?M@$^*@-x0%({~eT*S6`YK55Or_&-B=#2N zr{0%E6s}lJrl(NYWiW}eMd{$MLdVaeu(t_`_fc4AM&fb`kB1Kr<-bT_9HtRR_%?+z z%t_opVdSev>5UZTQ}27bsJsoCE(hNhdSCd|@di-10yGLLZ%kno@R=h#mcl}N5>FMS zQ}^#lVHXOAi!gP*M8I$ybSUDtMFQtZ;Jp&KL;_b!;QJEztpxrofxk;&CadT5DM;Wx z5?D(D>q}rG32Y*P$4lTT5*W?F)V;oZB`{Y4FPFf{5_qcw-XnpJOW?B-xJCkBm%#TV z@KXugD1lof@Mj531IKUo`cMO^^ z44QQenosCCR6mj7$_sf%&I)aHhukidX&9>#I?kDNix6JitQ=LUnaFb;}0 zL$!L zjPnc9fP?6T?uHg25Sz6exauC@H&!kOj7st@U`KRYu-kR7M5T$V5aSTI$BEH-phyoB zn1h5IFnT5IB(Yo+_1h)rW8DU=ya*-t%WKOKe2+a)K>EV2;P(l3l>aoW%3 zvp7k@P8Q35XI+akKuw9Pc(LqPL+Y?@sXtky;2I5Vue7g3;R2hehh&n{Ak$Yldjf9A8<8Vc+9#FYmlplxp6FK&?2-F=K z>(z}@LquyAf!0I0^wdF!80(Qt-twPDM?v(2$Sm++!>G}m z7)lX44@3ZY4J6$K2%}OWKS2-Q4git2K;$MMDhC*Bs*;E;;SmtI0$_?P^iU|z35QFu z{%8jt0m1X5H9_#BcZFp3e@W?s5ZF{=4J1Bn#q2%2FlZhUkdb^n!OR0uPi)cE!3%__ zd9+2GJlcxMcoI;#!ocH1Bts5jOAziP(@s(BKl!(ye*&CM1%~Org6X|equPYo zSaY3B9@l}lv}WhWIJ@oz#6=C-wXS;Rc~uvl>3lD3M)%5k!PA_ovifYS%!Mr-QO&mR z8~>tZMi?o_tdDbZ$xMyhp>F+1X3@rTUxg>+@=X#i8OJ9MO=P8cn!HWo%zAA8e$K0- z6&;mjn`xX^l%gtsBZC06@VvF<->xkC=IQBjY?~(w3qt~nEzcf%$w8i z&wlY2%Cck%-IpAD)3)kE@uz+ZafeNZ-Wr6Txqtkj?PRqxm(=`?*w$BHj5Re;T@&`; zJv;n0T3xurnXA3Mfv20B~3|c_w{4Z zQ3>*g_E0+diPLF{qyW}Hfe}ABUex@Bz^)rRqux1nyl#&hy;w;8w`5>Py*ymYz!03z zk|nN3ktR(S@Nqt!Mq|t4vMj0LN(_2GDXe=2C?QBtnu#YcnRo)dNx-1f=yVy)C3_0b zZ5pV6D~bk!aaEL$(MOTYHv>(BWNU*D&`@NX;4u4ui3!_;Z9Yds(Zr$~ z#ADeb@Zm&B1q0CS#OPs|P|i;GcPA2Ekiy?wkmzm{y59||H_`p#2{gU#HA0iZ7zs3G z4CHe31Q=+Myx5uLxy`0|r~Yty0p|{HT!nd2YNFgYmOfKh`G&E*nP>^>pCnd8pSO2BeIlW@G zvsT%M<7TrbG#BlmGc?yTj~B-no9gfmsBmy(#W3DF7KgUrhj3Fn&pbxxs@gy<%St?;~P)!m+{-^S<`R(3x2K6 zLOZPx>+?m1I@(Q356u%S{A2PSkKXKYx{HT|YHJmpbLtgjn0o29uvbEjlk)qSk-~d2 z4goRw`}XgCdc$$`>>4@)2AdSb@518?aBZkIZ6&5UQ+1Zc+x%+}mu<;YY3Mw?dW6x3 zXBuv}GD_}4qy1n?;SAW|I!K_;)Wp^Ks>6jrld~4fes2q2Ydn5e`{ZeHGV^d_ltG6% z7$1b|3kC{wlC-HIw7xK17R=NY;%^MzwvnhOVhkc&3FTKtXJEohorJ5f#9twu#iYaA z-1FszM@hpbSVjitJ*@h3oyD-UVr@CQQyY!qPR%aa@AFkUBh#ex=9w{PT`U*cMdmko z>TqA|edG|LrN3wd=lX>Wr<=1=xc&(_>d*SAXe5s)yz)&U#=~A=NStXiwxs{j#ruyR zJL&wmuzyZ<-_29yX9kWuXMMc*{7S2q=+MaX#`@Enx9wzvd$;YJvYU18BD~Z<|oIWK#dc{N$^uuhv}mNd0th=6NHjVG|F@-*ebQS2o+f z=Aw^#vR%z!o^*4<3#X4<&;uv&1V#a=2Wa%}btLtlQvmoV+|0z>gl&eKjsgW>Y7Pp( zl7jycCG>Y+`t$XBWOdd*7%#I4a&DJi?YX7u7_nJ%DSr3=MbuveF+b``m(hcVxA4kK} zPS{>k&iSKtxc!iR)!(lkD^ zx}QBX(x&+H*Js=-FAE$euF!D|cG+Z;d_Ho%yvj-~8@ z0_XXkvcJ1{hpDQ6UUXK?2=Yr$pe+I2w^-s+WBvSbcPWEke%gQg?I+MsL!+(BOrXiY z8KJ47VN}cH>nBCS<3HfTSTe&|G$|=*I!%25(hNM9+9WzUx|?bsl!UL(NIbq$oSBZt zAMY1mJi|XE$S2GfX5&P2uffDdzT#HPAI;haVNEdiT|^}8@pv#L98cE=hTC!@$ua@N zd~Gm~W|%HI2efrC85)}PC(I9GrC@@Mh)^g1QyxMzgkKOE?IDQy&R-Jm)+0ThaKqVrTXH8k73gBd1pm z9A7%Fa`5rb6}@?C3d%yd!pfW9jtuje~NduajhHYFm{T0 zyIbCBHHH_j#`Apm5W02E$rHlQWopN4&&=5oK6i6&b8P#Ro3CWIXMOTXxp-x`{gal= zrt%*T+w~7+nD0~P~J%dheIZga?$e_>B%Rcu^!>pBDF)KF=37^=+aO+3#TQC z=Di8`<#D^|ECfgR0j=tXv%B@Frns%zbvZ*;_Yosyc=VU4Xd4mut|r{_Ceu|Ko@^G79GXoI|yZl>{?B~~xj)EW&cIC(VdZDQ4c z1oq2Q1A=0{R4t!&ddQ-Ln$nU1v8h^vE~l9N*&4CaleTT^Bv!(7aNsOFHhQw!`E3^c zz9npWJvO8)&~LumjRmn~S&zS$s$GBPro6OyY;o?wDw&n;ck4ad26Gz~(k`w#(yvvM zH^xz6+@iV_N2IP5jUH=ySSA0>f>o{I^?OztPVYNeBm4H7&R$x=;xWvnFOD=%Ss8J5 zTU4rYUBb{x)u*ejtD0WtbS5^nqo6AN z;hSFWXL=PLG$}f`q|*EJ(5nM4horM|4tKg8mcKo{ey`bUnaO%%ZautRwKp&Ab<}dV zCFfg&g?84gD|-4SG-8&(rJ zPJPq4qka91FTrk(=NnuaQkK76lUC>zJ1!0PIG1~+uSM^-Rux|F)#j*mKA2dCol9M$ zSN|;Hg87}NIr-{`mC_!ySnLRXf47%hKL%W$uQ6G)|8Z>`v z?OwNyV^%d)IV-RqpIq&rV=yVWpXqMz4%2k?k9i3y6?lTmDV99NPspm!mDmX?`#`u` zT%|x-B&ciwQ5KyBPo+C?5!|gLjVbVA&cQw49`PM)OO$%*d^;Uv(O8?a)*PilOVFn$N+(N~F;g6<{wsZPMk9H>&54O zeSKMn77Xw3nth{eV1APA&U*@+NsJHf4bopvsV-}{RH}Zb^39q-OKYCrN;c1zuD9Gg zX;Pe)uI;A8M>@_%`&Y>PDB1rc=dTmH)~v>QYxiTWyB8Xu(M)F>`(&1``j)mz<3w)f zJ1p?T^yA|{p4Vw6$fFv1RSim4TzP6$4m@Z{JvTox!+g zDBI`JCyu+?g0D9;O3Qi6}k3qP8K!u zXQ3S}@77GqEAp8+H*9MwSt;gqQ}M%%nLaQ6n`YYV${?pJ^%ko}=Xn@@{_=Ea{RgcL zaKwL`>7Is0^<;ujXgu+*|4aw{wr!V@__PVDD!utMU3!~e z>hSjot(q4S-&vaE=&PPSxpPv#c@M1@FkcM14p(b!xGA_D`o=qrn~(R^=x?j{n2(`|x|J#&pM!kxdqEt_KG7{qW66rDVO->|(})JNEKkEhjrX zGo8141me1TI&Es&6Sp>(Zhv*xWma7u zt7YXewp$mCU3M}t#iuHBleKQfm|Yo86-_ViBvo#)8MqL8xvX+_c+_x~!sZ(G*rQj$ zqLK!3_#LGMmpjh#-O<`|LZYhvBfJc0KAGX>h$1#KBgx?|_z!F1zhjN+qBZl{x2gns z-7wBAS*IUp-8tc@>~gu363tHD_>tx3@48$VT>ZVoj4M#=GqzmDY1@WyON;xt{vVI} zwq;b?htAclv-~Do)@Idub!w2G)YeH2_s!4yYYwPVFX-)a)c9jdvSQl9KR&Upg(nSi zls(tKS}A7D+Ov8kWdr+U*EXl*K3eMequ}-Rf_V7vJTKGipO2CIqOvQ(^rX@GsdFOa zEL|cW4GD|otk_+sdTnO$%#fY0Th1T+(x{uRd2vYOQ<-VWh7)4vee!-b(IfBcbo+Uk zQ>T@_yU9CtpSkqej2)K>`p(@Syd@;}X;b6~JL?7?Yw3wA%%TjpjL(kBt;XLvoQYmX zs!2(H_?KGmpXG;Tf7hcQb>n0GB3J1e{kt*Q{-;`RdA=@*>#u(?|Ju<#LtcM=#9cGc zvh{)K_R0v`+kZ@$zPapxc6#QGsMN~2+dp1Pd$@3+)uT6V%ipR7x8AniP#wC&jq|}a zT}8OqD;rbLcB&nFrQ>D$IqQfMCH1e&_NoaEdIc6L?9U$HU;IoNpJ4X-U>&V)_oE5C zsAbb_S8elFd3bQ}jo`o<(~03VTLuWW#ZBwA;YrYsCWncwPPKYUv+n3gztB6n`t|m@ ziI>90y+|+VoOH{prf8p(Rj9>~g2GAu;qG}0)-=wru4%jZvSZwz&kgyzW8Di zUu}{<{K zSA)-Iby&C@$u`KH9c|H}NKah$@~^m}7Y<1UBh$t8?@oo+BHuD-*?x81%;dDa?( z*QLXbk4tb$iFM_tEYqqzZenfiZ|8n+OyPW*(s#{CcMdHu)W0!f@p(>h)TyekTOu<~ zzj`XPcE01&(dv=ZIxXl8C*4UQ;IV&(LYaZh>YRA9V`nO6@4B@jao)hs(>vCDOFrOG z?4fCEwr=rr`^KeoQ)NrV>8W={?}%-FKRhJKA$z;xvwqdV?-vglFmyn#ctwRdw(M`U T8y!^wC!tV`e}Df6YT&;BcY`o( diff --git a/src/github.com/getlantern/go-igdman/binaries/upnpc-windows-unsigned b/src/github.com/getlantern/go-igdman/binaries/upnpc-windows-unsigned deleted file mode 100644 index fad4ef3d56778320fe014e4a4c07f62feb5da9d5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 144246 zcmc${e_#~V)jvF&Y{&u&vuL7GgG5~{k%)4-#=bj zGc)&|bM86ko^$TGckbMseqEiCsVIsQ|0NQNQjaVD`NZE7{|TXb=!mUDm1hS2^{jfw zw7;G;`_|i*7A#)!!|yG*@s5J;-uQzb{4h{((=7!{f#bxlkZsi9j6uvoG>tu|t_TSl<3${yOU%O5Sl0^Orc3dNTG6|HcGv zSsp;$*uUWq8EV6S?1Z#`3zeA*$J~5l;6{|)%<>NW2l14>_%H3BPbqE~vqS=p9gB)i z{C6?_dm{}9w?1W|?*i82pXVI>DF%b=2zP%*LC-hlrlm^>*D?fu7WS`aIsb)}g$-kF zlkEx}LYImg6{MT?Pw-cM&1@El=0m8b9PHb)e*!MBNVHqPa_CmTUHWyn3reIQ%L(_W z4d*)+&Numj3rh*1tUeWgo<==8Yx1#hp2-)CEg_h)i+r`Ao_%rMap1;{Bbf3f;W})% z>yHC>@wWxsc>e7~J>hRU7Or^m1>=ha+(zn+K(KY?=40W&U#aBpR)To|M|!Za^nX6Z zGdcbFzqvo$Y(8@?0nHb`#fx?*zoenMW}>3_lcd#RH z87~=X0q3S&g@L>F;2M;9;kv-~$hS-%TG4CXIb+`KzD{vjF*s!)D0E8kU z=$1s-Nrcl;QeCGVD%u!=4ABa&M}f$=x^m>znTP8p7H-UeB%qv+d%eQzwtoApqHOZu zNoy%;HX%w%-&G|I`UlSsL&2PD&8p3_^f$FbD-ZwS>0;~sTNI_R#jNn2p>=ddm0kE3 z^*QCmB`$tLHtmqx8VBP*!NSEpC6OBdUtnU>6Vx-HJm{bB zGcbb7z5{yCpf;NI5LjZ*8??9blAZBWq*}v!0>zP?fwP_`M_PkJea;i=Em&>ouWE-K zq29CAidW+nfCl%~eY)uZ5Hp4gJ?#(Vs#~h|)(--Dm%q)S`kOW>9X@5F=u3Z{-fB7{ zj19W~J{=l!{sp3T857y}x_`a8ZU!1I*{>h9-O6x2La;mjj2>U^(968m9^4w!*Xzy) z4fi8jvqN9$bpb@5=5<<+pl-r~y5LU3f1hSKjo|vIa{wAs^l@y!IaGC=9IFipAwC4)RPQt~y9}toK(JTV7i`B@{uM&xS zg(1Zbj^&+#U5XUYza{QyN0nhla#o}}g`wMn2B`yD_^8e*TJH7KdN&WisDnhc!V z7q8sWEcP5JSeIgq(OTTG-+l?_7H$UPlJ%&D{_OgDP+uqhRp}qhxpo%3+89?s!-BbW z!Uo@f{n5g=0ZVUAmge3nR6k9!zv)qkNv2N*hMw=$s}3giXop;S)Tlbh@b7%K`Eik5a1PlCH`T*#V+z<9JWsjqGJl@d6G;4?@EQ8ZUJ?9!VedjbOiPRzs} za(9YPv2MHunz4IQ@3P~0G>Z-M-%I=xTfwj=1CS_y{MwrjC2Caoc_4E;Z~9bDMn8t6TU%Umu_~DY>N2G)BA`UqE0mN z00~~iCeAbjN#MKf#-2hQh`OwEP*2U_Urp4Bz-MiIN>N5j_{f)JMEr&P)*1=>p2T%p z9|F>hd`@0gN*>Kf51&BTD5p1DtA*U?Zm0L(WM?x_VooT@5RfR&{Zw$`v>rs2VG_UQ z$YqmN<<4<0J$jEr(RY;W>F$1sfvALid_Lgu>;r_pgW6y5V zuOi6rEEvB}UEicWx5uaTID`8ld+G@goLJHzfKq5V{|QY1phZQkXqtEZf@bLmdTY(0 z7f~45X)JIXeotViw#uahT#@|&#E)R^#$7U~{00(e4L%ANzX%bGRpUW~}cX!kE%&G_Uh#*0?099jvzF`qb!uA%NA>D${!XaL! z{>}!4l+Ou`7NA61m5+hprx3yL=a|#)M!Z2sz<^f5<>rI-G_O}T1?38Ffg$)rdwGUG z50@On&(__BLpS4>9w8a)P9(C1yc zIQkkp{|hE=7itJh=xh25-r%xe#ZraW zYwKg0HxK$EvmQbSz4d7&sXg`)baMe>4tl)R5aoe0S#}c`v%{SW_C5o=Sa<&qc$f+O zyKFDGmmHexbgLS5;LQ+E$*uz8qXc2^$bOpU&0+7D{s(YzTE)PsX`#6a53*yqjO3aF(8I-miNY&8+ zBQI>7k}*!m3A(_Vl4%Bs7`?ot;qYdl2z2Oe{@@J5zc)1gfZ`!hml2J(Q|a*171WVCeonh^f@8-)gwg zr$qgS3UA`2^UUw^@;L-XF1y$8yLEpDf|~9>X!`e(z&)4QO(18gIpiM5sF80}d5mC= zvA|UwjhxxdMI>V)yCq6G7$I>koRc8IA~Rx1 z&>RsB0$w*!zGtH-Fam)R`v;K`FU$=#ynq{*A#Fv#HUL5u%ur9f6^G(^~N`sdjQA{tsh%UTems#??*? z97EO)3hxYL`zF^;O~enIGc$nR>T_JMRs|wzkf&9$>JwmS{ybOw9&@JChH3R>1Y3QX zm#iHSZU|&goO~1uXI|%k+dxdT2RpcqZr49?o&a>abUqE;uwR8fZ?_}U$f1!_B zE}^LgeiYfi;w*KGfS~dO&RDOol%Jh1thsslG{av2bQiN%gbiEm2+MY_p)H#PsuAVM zhM>?`F5G0?14}0UEDj7)9B9Kf-CE28gmDYYo0d(dE>MgGFulBJ#Ce2f2TzW;aL2?TFc6|e znPem|#5t$|PO@VK07(9`yqRHnAKwN+G@E-!DkuLZF%T84Sx$w_L;5Cu^G$>qCtw+9(3Uk|H z{N4TxCdSWmDtY*^7*~8!h#AKs&an}rkwriR2D7P&;3bj!4CtC0icx$m9D$*d6zLvT z#1AD=EH#n^@<7QaX2fIDu%>PXV5=z#s33u8n}|;$Ydt>>=ILX-)@;BU0+OVM3d~5C z8pc2g^CZb*DIBc;#wmvBLmk*CX((-5wfy#;ywYixx`K-w-A1JoC>|$yLgR=fLdAlK zhy^5ABmN4D5d9+hYKQ2noJhlpGyA$_y4@`hkq*Sg zg^Yo@l2s{jI(PlFB3zIbN=?{&oj?n3LehH1inyCDK$HJmYsjZ>!M&wwotP5X1asF5 z)xur^72hcA++#Go6lBs!FdSTs>3RdSnnnXWC~)VJJ8V!^5*^{;v zVUVDeg`D=#fK?S}5o33b%pvsVq&w4=pQkU-ouiRFJi^(P`hJaVJ(rD*5sfvO8{7Z_ zdFKKYkSs<^-Lkl}Yru)F=Xw69i9PDCnAFD&N#4;v9S zM9a#36sVE?*DQCIB;sq*x{(Z*Bw`Do4!M?8vZrK!Nmn$|N&VwrG}4i}JCwRRXy2_3 zkD)`C4N=2?18~_Ta(Sg}kQ#mo&r?dD-3!Py?bGkKbs=9v+ERgnHVKFE+qRE zYD?LlwdFi9u0=>k)#rj;a*rSdLSi_e1hI$lgyBC=*4>}1qX4lQJkhk&@MpY}mZgUG z;~^nTP}-+}Z9^e^yyBhMB#@=I{|x1_Gs+$9p%+I}+yXt)26h4;rkvYF;j18`!(4&!~>#kXJNZ8RBH$ddW33;Ur1fhAW2~fdo#yt4G@^YQzQ;mpTuE@ znAbW=_QxK=BwyPmI!OOQ4R69DW~tR!AtCruC#}K|Z6H|U!D$sdLVkjmNsv(403~>l z5fRjva@q%Ql1qYr`mg}^NDzXn;fZL)I3xaZ8_i@}W`!$rKIP(roOPP-Ut^ z6S)j1$R6TL42e3~qhDe?OGW6DoqE)q?{Y})^y^%QH@8+~crZ$lL;YRjSu$ssd~&oM z-YhBTZ?;xAh5?8vgFe|E`xVz9Q$Z&of=+Dh7huy~O6$v5FqR{HK=8iVFB2BzE%Z#c zOjwY&hzYqh6P{(K<09X2dK;wg{a4s0^B zd|;K6^L0d_p++8SLJz^C+T$NBwd@+p+eN+&82z*Cjh!*`V==_ktF9h zg5w2TOqq*CKydsTW^YEhGm3V=01CE=0#~%0!?-Bw#a= z0o3()jTBIyYoJcKJ|)(d=W`CKhU?+EqC0nxUqeawcfiBC4gU_hGZ`e|Q^6l*v)T^C zuQp)aEwI|qB_`h6_&r%pD1bAxDPrLS%)$m~2;i9(=`yA`N#}YjwO{~f(#yXLTy3oK zlr%j59!MSjgR#o}JecR5oor_^4AJS|VdwbwGRj;G2(qHB* z8#!PkNT0=o)4!L+QcwN{%*8P$)cv~*{NKZI`v<5#F&BXJIg^~s7M$$Tmb;YTAZ^v& zOf^zK3gsgH!wiI^f`2GQ%zehgnE{E{6JA30tIK1+YX}avK_3Pv07CUnSRi!#GXBQB zroUZMZJ;s$Dtme`j0w0cvA{NUn@Phyu9;LJKBCv|zy)z_(B3`b9}Y z$sVqgTnnFnNNWj!9s(nm4x}Jxs)KnVVjupYHWkw^g-N0XKUVMj519)d<x z1{3KDs@kd?rJgRQhHphA!dh**b=CG`mA02|Wcxlw!%<-!5#Wy!k*wBSP{$EBX>HN5 z;Hk`Oy|`Yo{&SmkKX|3}Ju08|sCAKD@{C>L4_O5$GNy-ge;BXI2O}5G2J7?@%rnkH z(dnSz^5GftBPSK~2r}E&DVHhn%+>+Ok8_m3IS~Y_oWLn$obA0z>fmQHAmam~BnH4d zC2)bZDhzPLA5IYkIEO3v;}k&Sw$%sH19&5uf6W$VIfO*tooQCx$2Qto?DX1d=G4j> z2LiO|A%Mg?^O_cRg^W@{{bKa3IYi;oJ4g+`j*??~Wk1OG`TViHQvR=gy@Gbp;IX|@ za*^znb5Tu>KeYw#23-xNNU#ORONd+vEcqdT6SWut>+<+7cpr~nK zy5^8D&Q)BZP1@}Gg{ z9IurJ9x2rsAWU92qKeO@@)>4mtt0gGFy3s_Ah9HxG{{8YTomQw9Y>#;x!I6)$xlQB zFg6b0G~EI$%AUgIOcECciN;R`7+^4Y>~CB7Xz|3hwXaU9_D{&7j#?ar{}9NYA)w?67;Xvn#aV`w{yrJ-#DkCgWN zwrZz{j87UG2Q!XLG_<$xr=h9eXlO$v-U$rtRZw8(Z9>b?Mm$RxP)*C%>`nOEf*d1Q zz$x)u*can~8s==CD~3}mk-u zG6{}WdY-^Tv@)-rWjEwUD+_jrTI3&j(aKS8iQ1wM#HIK{aT)K(Ccd|R4IWj$KVMrl zO1$d?AMTSx-Prp3WZfvevJ4>tDm*q8d^^T5MQ;tN40)x{jPQr}Qad7~Wd$QHfZEUj zIRK)pNzZ;5+Dos|mvWwX ztX<#mPodQ)>>85Z2;ymW9TfS8oqk)DMN*hDa*(uZsQ6`+3%mZtA^UD4-L8RhHA$hp zPf_t7^`fo93J>2l=BeQ!wmoO@idgd%R3aDe4)@m;r@B@X$VZhbcB7c8VS@u0cP~rR z)iSpTEr=wpn^-I(jD7vtlSH+f z6)cOP7**E_q`XwKY7$orVF0*C;@S<0J+sN^a=O6H7rX|Av>f25gsW4$j!N-5DxKGN z@1?Y($SbwPp^$i|rSQBdJTLKP+A{u5;CWkpGX$O(JAwD!sHAR+Q+UP1ON#kJfmht> zL&Aaf#Fz)X-%Gp`BpKB}Bxjcbl7{n+Ak;6d7pWKQP$u=ZDI@(t7crcnJ#xWz-P`(^ zXlfF_;=O(e7A8Tg~}zWn8OZ$+{sY!R+ymzV>0KkW`7S-B@Vp(8$9S?ARotr-W(~|1l~7z&@BS* zYaaCL6kbuvgG4Hk^q}(vUeU20^gW4p0uS;6kskD=R~pkpf>2+&P7~@kJ!AmnfVwI* zf$75BMWpQO8(d9lWDG}F*cWGtX|_bwT0dZGi{19H+RTx{Cx=d-NHdU=hz!1544={R ze36Wo7o6^bH)Udyg{uTr>qRYTY#2`!>q$I* zJqiEiIZ`S2i`u;~tl>sg0c{d%2u4-A7=f~eLcXv2?dQNfvETmbZmDV=kjEc})255` zP}_Oc@RwkjLloXN;tm>sepAtF(h0Tj%mDvx!v8q+K_bZ+ z&8uka#EPn|k&0Rf$p1o7`7+TfP{aKGOHLxk(il0phS1VH&lYtIdwIAcLw2we2Kv_; zlqoAHXL{22Oqy=flD;sDD?RrUTqJ!D@UAjn%qI&T6A!{rziyS@{r&m_iw?)>kCV=l z{gF+s(o|Q6a;UE0o7cIfhmiY?6gcD}pNn8L4oO z_Frlm@BENb|H&cr8~#16^8NU)Spp0Dg(#t|GO9D+VRsAe(lnk;hUTG3l)19-z`75} zZdP?9h~%sv3Ph}QrFTdr2A~2Y;<8UL*5{*VEVm?D zDSC%gy*AYwyjVWq)>ts%?m|m;M8U$qA+l6ibo`NQ-oAbv`546bx?^2FLU!b(Xq`ej z28vFxq9~^i$b3=cV6;XKa`RS`5OT0=fsyo@4HDx7>j2jPvEMqtS!^7g+bAgZg?1Xm z*F$@19+|!rMV@Up$pn`5TaXfIz7V7tL3|J;T8yp3si=G^OY9`;>u*N9?P*C>KrDpx zpD>)-^i|wyy}yca8CUB~)UOm(=Q;uK1_5s8 z?ftLvwnD&e13>H<0s9JJ3kQ?y|3Sf;YifF%SrirMzhKdsHNA~2suM*>VU_yF1eqq3 z#uwN0zRX$&Xav4r{{d=Nez$%oo@#n`5@1G6?_L6!1h||6@T2kixqQ5&z6_U@7uDY> z;9n#Bh??Fv2+&A?)9N=9;H3Hv0q`a&0$KGA_asH^7Lgkdv1P=p3gcT~`_0t?*Wo{? zTQIrxa|xHmDh?NZZooy%Z%Kv!@c*R3G;$eUm|cxm+79c7JJ$QC1nc&=W9oO zfl>H=gEScWNh1feYAeS5&bnYZvd|gW2%uIRnNk^VZAGCHKh^aAj^I9kWA#VuEHRe> zGO`>^w)#Khuz-;wjEl?W15|+}*hy`EM0R-=K~no2^U$un-*E_9jy0eGV;hNTuO^Us ze$S|sFGefnD}U_hrF?zcwVRh;W>n@?YvWH1VvDOs2@K#)q?vg}C6@zSsDmTm&Y8%4 z2ph@d9`Du_T-}sg%dRojv18T22Q&R0Cs!SeH)`0g#m{xIg@JpC zd<^R}A2H3i#+dFhg2eI9jM&t+RL!&RNpgijZ=k2190Z1vt>qa@+oun?@9 zvvTxC?03Zuy38CU7C{Ym4Rurutuz*`Cle&hpY3J6gb!!(L5Wuh_(2l> zr1%tb*6b9;*-HFkQ60w{@mj5&@FUHiap5IJg%3(x6<{sg3V_cjXSwGl<-B%QNtbpA zIcjpNm*M=kcZm2xwU9Ft^fBL}^J6LGTHgyYqCyGIe-{7<3mNguDe+y}T~0@k>jKUW zG=^TIe^~zmVB=&xQ}<{s9@HY%)S?j;NU4*Oe~>)cRSONHzwdncQbi9kQp@aQL#O$9B-53x7Vd17lc_oUPu zDh6K|6}h)Ye6VTzJm?93<$y)*eYiZRKidOsbsy0qhj6{EiF>HAYZUjUD1l}?_NS`C z4_*|0z#Z-9^cix9N`i^Q?LhZlJXy{Fc$@wLn+iCxN!KAl8tgCqdpXFAr40I=`%NDDSUTK|KR*2oUrLZGK{iAEmf z1O7!LFQ)D`^Nxff52ec1r^+5rl|6$y{)g1lO!i=4H==bVS`kEM8Jr@`1mQt9f39rhR}d6G=mRKp+G~ZtfULuuy&U0 zpP_G~9PyIU#+5$FX{c<(CBd=!TT(r1D?E;}g5a5xOE(a3P0U>4(A)Lb%O^a{=ao^B zB$N#dyc7Sx*dQd$IX%=nB#;&A9TePG+Nhepg%V0TRr3*C3wLA+-Wdiq+g6JCDfSeY zG$8ARAF*!?@en*E^H~yPo@t<5kI;(Z*Clr&{Dt^#>?ajC!O0SucEhPKTX>lez`jL5 zh@EOs)&ry|{>F#eLOS!xh6D#gCich5kK)dt)x{pD0mS18Ir1d3w0%X zQmjQ@!E@;=YUFJ&P;Lun2M;y;APW0}hat?!5Fw=StqB{b2z7?IINC}ho5{N5xpC>F zQqkjv_^WTIBj_~fS^zOD2$!WxzxV@THWEY(x-w|Vb}|K=X;LqRqA7FiY5H!*>sXZ% zZE<@#)ujuzr0QZ05n5-2kEbV${`qLJ}%Is*5i9R>3K_j-g7lVcs&%!g?+#))J`fsK25RNeAf&7o;1 z<@jyx1*n{gV)PYXRmyji)^|T=*jH}Qog4AW z{wAuaw0HFky-nXBG-GD~g*`H9E8HrL-iGd2A z7szLq=m5X>{pqv8VB>&>F{u<}yccP-soYII}WSt>`px zXb_`*;b&T}OD%6R{T(_!@jkp6q+NE;ibNgO+**;_p;)D81>Y0v4mOUxJ%X9}vgy{q zoubXf*mu3v$2v^Be1+{=j}I9*jfxflzi^TWz8PQcxCB-dEUBgebF+3s##)zobz7)+ z;IgxjA^WOtA2z63A6BhypPDdd4{Adh9^-ETVI~lA^y1iGfJ$C2VS7+a+imjM=1p(4 zwxa|Jk76%BGoh}4v$XZjBE2WY;&C{<2{>R)v=hHd?>rIg#VJ^P54Lsy<~?Ntmz@r5 za(lZ10UQwE6tlw9hTHf7@;$!a{%?C*x5r$tMLV<@6CwL0Ez@BC(_;E6CaX_L9g3{( zr`+i)jtdBkLR&ch=_zCS)9g1WLTH3nnfbc)c56E}oog+N`%+mP*~KrBS7E2U+>98= zY~{9qJTv$^w1bu(72!m*{772Md3`Nohio2Ne#DsmsNhnB9{9cZo&!^{%SEFrMfk$W zMRKx-lN*dxE+bp7bY)_$jD2xfOuxZpPDzwDt6Dqe0%ke7XvrK3L+fMrF1EdA(yb!i zPtck(^&4D7D|cwk&eC^4O}*z=KqeM00xL)?7~Eiq)drOKPeK#QfTTu>;h6Bg%kY*E zclay_BuaJ~m9DiseJd~>Rv4IyoJ`%&jHC=+)ls|Pz}f{J;ROfOa2An!FU9LHI3`bj z2*+@P40TfJ8~Plu;sFmd@ZeLh>iEXUPBpv~5Jn}YF@Z~s;6X9(!|4mg91r4UqAgx% z_&e4rWgx}Grwp{8#8tBfmYurnoUJD-Aw}KPwDhz@CDsTqaqGax!lm$6|G_1#F>Z;8 z`VX+npC_a-$F(-2Y+_)PK)-X?dT&jBiEhU+g5 zp6tm`>4hEA3}1|Ao%`8j#mkn0hhlST+ik5$p`ah;AU zx-(J&+VMZ|?pwHvU5sLO-WXhs=^c|MOh2g4aH(20Tk8`22XkGUDLXWWeW{jDnXup> zjB?2bu?}gnsZYvRNQ2j>cUaSJq0NJ)8VLbPYaUp#hsM9mm2T@A5vn?vxaUiRs*b=g zbBbfK*6J*Uy;ZuF?TW92bY~lt9D&c^i)6ZO$^r-aCSbX$(zWzjm_ulMS@4tCLTm(t zVN8J$v-9V;?!3gVi*c=f5~__k`Rt90aSMZou8VMo4&gC8eLZn13X|WvB;!CnmPQyS ztK9m#SX6lfOF7O=C833&GOZ^&IG*w)XC<|iF9+MCZWa+Bzg6Q$OiHWfcTY?7H(*+0xaL ziZ}EUzvNRuEHg|d_IH<4BC%rEgpM?P2?a#yBJGg#@_)oY?k2o`1nmieS_tf zjj^?MdpEK@RO_uT+~aj80XRa`7) zt+(q=lXW9Z(SNYYTrII?>l$#SUiBuXxVvc+o>Yfo3=wD2*qamPXP_fj;V_q+&z`E* zdS|vqm@_Llm1YuVC3|rnIM)XtoV$@LJM#fR=>j{_y6gglN1!-JI;y_b~@-tvKDOL?_QgF)p)t>2oTq z4W`-GdNhean?vo?g~GnhMH4{X7=L zix3*LyQX0kfEH>lb+SL$4BhYG4QwNDy>ZuU$lC${s|3yHO(s6X#E{B9^q~~1oMd4G zz>TFdalm1ut95d@5;y}kW?oTIFU>5f|4nbCxEU2n+}S$00!O`JturH9E=4aFqDRZ8 zfg%hs^`WnJXsXmBmRieh@o}kjzqoX+7MITnALSn<>Z_2Ksl4b_dogMw>d8e{1a0g6 ze&0JIDwbD3z*ETm{op=YF7e9+e*Xp8AEG|BAj`E_te_y`!IFyc>0(y^OBUFDH{ETD z&ubZzt)D!?xt`~k#ky?f{_%|cK}6@jXXA&Xj5fDKF)>}Q$Jk!@vqaU@D{V)2W-6=PvRS^ z^8hUl+eJY>t4~9L-H9d zXkR3t;QawLk@K*4jyrH3Y4B69I`dW^&O_sxVoTn<=92w5nyndmr;!sOAkH%FjJMk7 zt!^BTvo+D**@v6!NI#mz0{UZoJ=m+;xEXRKI(RGol{Ap+zJJN_v}og8up0IAWkoU_ zoOsngeJ=#m?zT5-ln?yE zq71*&tb%%-HzL|*6?}J+GSI0sM6d8eG5gk!c^=#C&jb6!{E~c|~Gt8+t%HlC><`$T1HML!&-P-RBVv`CPbo=vNrk zC`1Q?ItEU$7G$ph{pC8YeTeqhNBjTL-`?52a75d`#dESVai#u~OG_^7EKtn(UcNjQ z3WJe2Pm-%mXw@2prhs37L|DAAO=qJFM>ktD01zLNM%|vr>aA#|Y~!O)0|LsrIGQnX zH{+>fzj1}L^wVX7j32u)XShmVTN1>H$y$@Uv^n?zhp&gxO>#lvZSppDo-v$wjsMJW z9L6g|c~FG)J>-j=AM-<)U9`T91cDSUY#ss2#T;(&I!qX}8{LWhOC4Bh2@cb;$dn`L z>*${zXW*lWA)p2Rq4l@|?->5}%yCI_K9mdVMl(3HPEf5CRPlx^_~%5f4-e2<09qrQ z^)RM8IGcr`RPZEtp&3@vO?^qQI{_v}W2d(OWmYwwrJHPg2>gNLZ2MU8Wc-?jBeKak z7_xR`Lp4qx4z9+=DFvsATlYXAQ6U-%aGLZkEf$WWk5sBpx+P3)6ZF)bNkQjZ1C=g{kvI*fwfmA@f1|lorvL zO+Aj&Y_w*V@pIBL@8RFfSv@@6aUC#l9EF6_Ma_~u!tP4;M;g`)i9ZeVnlPMwzUnd2 zA!gY;bL=(9HJtUh$MlS6OW-~Au5`PI zn^I2~VGbCXz&AZtI=RBp%!%-5JgZxvU!S6G!IBq_nP?k=xAuu@ZB>h+PQ@B{;VU&C zvEI>30iVRw5IaS7RqF#%+E(vgM_Re0_1pmUxi)=w%}y@jha1$XyY=dYJTV@CW%>da-Zmo*OLX9Tsy?!a7K$}6Nf!N2 z=$#_*%%a3=jbAEfIcZ6dd52`p^l z)3md33@<#nJP{~PojqrlpP$x_xhbod6V*SrUi0TfHjShH0aHN$ujdG&w3^&c;!fu$oodJt`8S~ z5iAbTe57RLMDIk2?2_i~?4EdCzx)9D05ds)8Q2(v8&c9>EckM#9S>8)gqm{M3Kg^` zaH^3}+8!JfpJKR5_XP^{CSx+OnQr#A4p5t#G1aACAy$j8m?fm^2Nd52>`g+1w)k7e zoUcy)Ah59HRnW5KG5u$?OYDL};o5QFauErCC0e3;&D%oUt8Tm#+i z4}O9p^dT1iMYGr`;w~x1DA}Fyhwbq~_FCXn3Ccd|Yg_&vhLmi+jrXRdBWT9vLG|ok z>n=XsY+GYpU8b+BW;}n0Banqu2{W9U<#~f0cvp-W0e?@xfW24OjGum;T_1m~|L=|9 z@NTRj7|3HXuPIZvEE%9~nVb{p!g;=Vfip_>)EQIVrTdm;XHIpMzPiM%H953~QKg?P zu}T`|T~GQ|bEG-u8!It!DZ_V_SJNe3%Lb=@#01BHx8&18u@$GTp0U!J0{-E$A8zE2 ziI{aVzJ_u{nEn0$bACo%XruvkP6y?c2e-Opk{XKn6CdbjOldNtd9dzacInzyBuwxC|3%5K^lc2f>-N z$Fv`t31q^4@cRi;HJb!NU?fz-Q;z$qrd3v+Wca+@ZH?9ls3}D+{#m;J%_&K6{ORif z=pZjJka|U!zrof67o5=#F`)Hb@G%Eh*=SrVkRrj?KSXTibot*}4pqbUbj zYGh|H+nCJcF+Z|@jb;282bsC%U0;J$3xN0BVDpElr0rZkfW1SUB50+;2zY&HZUFD~Vr`{&sw0rii}y}^7cm2A z|DLFF795=Ezg%h&_N+d4Cbt!0;&sDS!i3}4N%6(`_^3wjM0%C4hQE!l5c*;?7T|GX zEb>l`{7a3D6NUWFbLt=vm7f`^+v6q$Uv_dcHWrpAv(g!ibC zzvBU}1Sg%UZs+F_p2nULxa8r@A|8y^GU4}McB?* zYvIc6H~J!B7Vu*(Gdg*-if5t`80Q|P6mza+_ zdb&S!yrS=G{9=ToaoFov*?pt{VP3 zT6&=ve`1UVY@rRyV~8vlLt7OX%IyxO;Ud~!Z%p%Yip{xY4im)!V0E`c=qI>T@izu-FmLi1Wl0C_Iml7s(w%;W~f+BFtzjyhZyy_|>}|Z?|`~I0C14wK&x~&**VrV zusO&7yqmRXUWFDed*ULVf_jp}F>2==Kp3nyc!BdUXjVlUjor6)xA1T6LuD#V6 zgLHYmtyulM>I%rk@w*>Tdi+Ja(%+bcUtc;j4NA;27kP`ZTv>#Bv0?$H6q@C;l^|4( z=(#+rv{jwaiD@IQW(d`VoyZ@{U8@Ilm1j8vKSoTZ`QxqI>X{lSW+cg>5F?iFD9C}j z)4B;H0W{hSWGVV5S`@xqnb6;|xJS9PJNU7-$eZtoKcl}@Uw~Gu!?0(xYR<$!pwDux z`A}<_CX7B>?gB<4evf83xGUL)=lm=UKKNnmCP3BA!Ls}$x0G2()0C8ERUj$JNJdy3v=E0>o#%g0+^7A7ay>2xR5yB0Ovu%xJ>{1a06@2 zWYHpbjJ#j1V-J0~CsqOds9R>`#6J`HP?i4j9R1B}_17?J;{*!?fnwuIm%6S3?pykr zdVd0(6n?5-=|VWJ{R|KAg3=wT`60_2BRf%}uKOn*xG=UDNLmbE;j;Apc9hmdcCJ2? z1I@D>U{OVcfE$Y|T`dFD@L4G3*e%9!mSL~PyC{3yr$$Z!F=G~fIA`_A03WFgV8($m zHT)VN%yMwM?b@oUD#+_r*Ks<_@lAd1)Orq9_zATELd#8XsV$i3!!*?}Rw5J_wAa@2HTV+T)UEFmKfYtV3%vM~wuwGZbHt=~T_LU{qJ~G{ zP7qSVIk+{aWNb}x)cp|&3Bp>hLtXbd>>nyzHxzLCj>0zN0rA1Ge~xm~!8>$Q+8Csw zV>c?4?*|8Zvca8n1gU^JpMpor4w(7dri+BL^XhM%5^Le1CedIt)BfTUcr{E_o+{Fd~4!_T4hqr?` z9y#_lXptE;d^0MAJ;zp}3_S+&N^B$Uk69n!wn{j&&+tJvYVE@S!vM;`)q}BY)PBs; z&~e3ZsXROv;mR|HQN*#{iR*Y=UAUIf?&>+VT65v}$a;!ujwm4r7Y)qAY#pOBbESvi zuxTCG7ZA^Z0Pr;PM=%S0DdIUNhmV}bQPd}5<1^<{2Am2E!&mD0Cw2{uN0Q!W?SY1f z^Zhg&%s0jBa*k(3y1yNvUavZU{TBX%BB8px(YVrSE}Zu6>))+vr6{k53* z-72v38jPQBVnMSTF$q5e(oxvyz~RQLhni&rV6vr0Tc;$7ga0mF)gjM-gHBL8*Qn|! z>~%E34I+DBqpPnF-hkjDOxBp?#)g>M7a$iitMd`C@L~jzSGrag*!En2N^30klBU_g znh!zn@lfDu?9yz_KEE{BVXW#{%JCFoYWo1htV|%39u0nyhP3*OH2cR}c_xE{NCYO-KP@VKu!Xz(%;-pC*aA zj)o`w88NlBGEtn~^r2WWtEIhmFKE}Q4k+CV4hZk8Gp=+)GDf*4(5&9msuY`R9I;>H z!3cK57U62AWAgW1s}LyW=zqUftZUAC;d|B9)ih-!RQe8MrPr67mhI?{Gd*oQGNQ3J zLw~*S)j;0!1lHRjRCf&XCX^SxrN54Rq;eEqVh8TPE--v#F})LEy0mG{9DKeHwi9sF zeDPzP`bRKEAX_oIb0tpKb8`u@N$V)6d4&;B+u_&eIQ3rZ)_)5$kAB3l%*AOACK=2( zVr$^+g-zHw75}}F>+SIIv(vzt_}Ub%p#+Cm7fb?`4hLpK4Vil7sMz<>K9cJ%Pr_of zb{WUez$xl>%zrRR#oI&m=S{jG6MqrO^5-JH$?#Pn!q@U87)AbHq8Hh+et8(u^hK}M zKv7@x;x1ag#u|_d##<_|E|ZK$*+7kJu&-n|Du+Q5bbn3~RPcLDyd5q^l3pPHKlAj`%Cm4U+m5@xC3Eg&baEGhr!0pDBI6ju;((tWIP|>N|ES2@YwH5 zIUeYL6Zt-dy?pJ9A7T|+-O#x8B(R`9w-bXzJy$i1d2alaEMjxXPR)NX6H6JFzv^h@ z))F7mGW^8W0elzecZtBOMk+y|6{^MgFW}?7+$nMi1@C z5Alm>13xpJFVk$)@Q;D6y;p!eAlPU-{Xl#;euheY4sGvIpFH~dCtZyNs=r(H_v%Lm zei|6Ae+Dx@>n-z&;?R-O)qAz3Zx5tZWX;fYJG?**IF)VoBpf7i=K1*BG z{=)!HH+Nysaj6mR?i30UnS%#UCMIkcQ~U=B$-`+)T>3RC9 zgJ?|;9?;)07IcXIwBvoRbuy0bE`0~_9xxba6X>SZdDV4d@&_P{2%qBUYV7gEd%%y9 z!5;eu{H~YK<2Wvzzi67k$ryZ!-HJbgK6f8SQ$%{LC;EtBEM!t(u1KhtHx@?CWr^6e zK+`_S1fTfrisv8$OvK-=HD|PzBjyJW)|MZQjRcHYc@$&g-!Ye@flwbhKj{=t>8X0; zEtERm#RR?d3z7)_+vf8n5J|+EP^<4q4p2Kpw(Qs)`we_XXtY_4%ploSuC7XEd6V$~ zS{OrO-^MM?oJ}t1kUWIBO;>L>=Q;Fu3!{M2dtzr2Usy3rm^X8|hZqz?2fM{#iXE{X zbkXGR(Q^LD1d+=si}y7k9~>nXR;ouT{_2Se<`6%`@diuE^Y{>g5&v^5M8d^Dii3H$SWgV}-jd3jp z|GA{Uf2zHwmZJV5(x^hVv09`aRc;JCF7=6{&c;u~``E*@$Lkze3gq?%bzL`})#nyC zwZ?C2|0o!^uXYgI3I0)!8;iWI35&crYPc8at8tf;>y^e`wEC4;qF6T>r4L{>eow!yf!#lescu01^z2yLN)X!FYFJqZ-}-B0LsBsTV_d6k{^R zRykZ3zM}6AeyG0GRVv!!=!=k&-l`Y#q-Ovh<8iVzS31#WN^BYp=uSo5-0g65MG`Bzo*#6r$KY=dXjqhc=gl^$aU%J%CzAEW@{X-F(K2iNg9Z=dZEb>B|ZuF=N6SLZB;9A}M zmBT?ziX~vwxSv-AVHkj`a5qSb7^l4_W87D8G*nuvl9k6VO4}f3pCQZ~3k0e|EmsSR5Nd@#r6@$7-`{*(qIq%-Zmt zTNn<$?N?=d0K7TN(V96%ODM~-w4;tY^US#kYC&(`{Rs;3w5${5%i{PX7C-t#ZvnyB zlenp_vnR(=?Ge7n7o7+R)W{k5%L+{9Inhr}?Fw;1H+$s$l@M~62;fz`BXgPyPH?>99zbiyb{3!3V}mo{sH@2eLfbo z#*e`?w$%K-qcx*A#*O)ct=Qe1mdWG4`l4JR4# zpq|)Mv1`X+fjy@0v(_R%dlG3Echto#KTbP~l>-d=^nlMt!HqcA!lB-C z9wMAktjR(rw^1xWu+)(|e|RCTO&A3#(6QHi1QJSr5=lXmqz(bm;IL647OavqYq5d> znTxHVr12sw32aWqSEr9NMpC!r2Vd0yeg7zPv3q}+7w{FiR zEaELllaq*ytTofTQ$v&)tD%{x_RfUlEXhEO!!5qvHdw2&gQC`-T3 z=JI-!=({m=z=p=lOBqGBJoxF1*gLSa{;ljsr`oL;$yP9>63w6qHl>F5*{t+6Gl~r# z4U%$TGrpR~*O5G8?s}FCzhkc z$_IN%#lH@x7OG1r{A%zc1UKl|H>+VBB%IXEWA-f$7Qs=~eOzb_PF)&^h!V#*1Ug=c zeT0T=`eJq4(KmbVw_Z&HrI--!0RW6{n>^h=`cMG&LC zie2TK@lhyVl(edmO`x_F;wjtDgOA4^!J}k)ks4lNGtERL$@CDr^~aq_HAcAn@wQ?v zb|wAf+%#?%pjir;2LGL7;qO62PqKOb*Wv$!Ci~Gp1zCC$o=d<`tO#&6M=6IF*1};= zy88t<<~xbj3N++5$8a|E*p}Q_%SfX93@BWwVg8{VajM~Jn$JhY_&QR(_d498GO`Jk zV!Z^E`F-OVymCXmTKgE2HfPAJn9_!1CP&9!KH(xSfUb4~k?&^aM|}Y{_8ZY)u$|FD z0eu_Zkj0In7|q$m0Tk1JelN-~R@vqACHPP2nm)U1Dq$Iq$udv-KF~l-r z&&2s?v8%YQi$Rp%$$8LlH&?$CY6Lp~lYY)>(Q`1+47K()TPyf5PKI9ahD8+k+1;ci zebFd3mpkk8VZj(MDmpn@)D%J894i>6#-eTgMen0TdlgY!JCY$5r`3ubF}|4-a;F-K zjRIw%A4*|ceyZ8Q6zPTxRAq=NRCo|96hu4mTa0}5eRFMw%~@K!xCRa5i*rQrPta{! zF9uGE0PacPj{rHAHe(8^)}zXh8ZhuVhN89d)tQLbNelfq6(Yw43DVdHB8y|C=y`PB zOmRdKIG@ReWnZD!a$;lH3U0KIi}hl=4^NkTU%2%m!bZwT;)YCAW~SJO>V*7Qm95rO zBYIz`oWu29#b*COt(8V3MzkdBm-MlY1Ge}weXQ0fp={3A03x(21Bg?}H(z1I-bdN- znzOK8rM|=_B=UpF=3;vwi@F6h7)_`>S%xLfyp@3h$6Fi&+ms{2UX z4-)ztjYmi57>uO(rFHThZ2Gyr21vOD7{_YN?$zx8r#Nr|5qH0C-vex=g@Sa)^&S&swjo1?Nodovph47;`KM=W=G4)H$a=!k)KGmtu6rU5s3QkwJ-w!QLqlaL2ve1}`A2pmX$D`i=20TKP zBKOrAa`0vYgS$C7fo_5Z8#^)_QS{h2QO0E`D}#~D_ZFEm9NnLy5F7OMmr)Go zib4kqcqnX#fBDRTV5kdHV-l<#0(C+VjnF-jFXM4RR`$3j}F;W6ApYWrn zdGpSg@6E^6gKG}$7dtypEy!R|y~BaY`Y7Od^sByH`g=%HW{k(a+)L3lMS3e#QQEll zT;t9!@#|tE5a5dAgXR2^dx8d`8gtju#wFaq#TRS~!GE#7TtpHO<%_k2I(lXSz5w7* zvKdTq!esg#m|zznKzq=6a(*NE7;EQat#}Q^?=Y_VvSd%;j?>;64HnNpfYn~+n-dzsv>Re$9rMejyU%%RxKdBC^?GF(C#%*kIu0# z6U`%U_nrb3PNfQgk-uydxbeR2{HrfleBYI~Z|A$Qx7*cwrb1cRE#!3&8o&3le8hmh?cN#!_MAKycfMk!$Z}wA`y6*3MdcylCK(O81 zF3-d-X5lLxb=@V%t?e>;Tm{)x!!79)B1N2DpykZ_y!31|IvWueFTNqCy6(oopm1a; zUU!|9u1Y-P54nIL27_`q~4_uEWzx)wj~gLmBfvYhCe17rU>9v5~vcrQyf#XW+gY2jAB@q@_cgYk-wBrX?c5)G zd!KsmHEto;BEH#Z1lA(?=3`&h=KzXdXwT1%#o{}7G?R|?6Z9DPc;&!O@OI#peXsl{ zmdX?RV|V@*p9$`Jdtcni>%Nco?F7}Cw8tM~U(b244Dbc6yb!;LW0K7e{jUe_o@^iH zh>W9XaF&(~8R(0F_N|_W8xchDl5Zdfjk09mi29SG+$eTp>}pJ@lJspKpN&OV%4tWh zLb$sl8Y>52RAw|p%sL9snb-|iP=DSKJBRaguq#|BR*&Gp`O|t~vB>7vJ%;!KL#F}L zR*{GD7A8xBrP>Dn|3B$!VZj&;`K`jYQ!vi%rFE&d`@>R zW*Ep1uz7emCJH*@cODoYo+` z$;Iw&r;ZpEwVohZv7?`7$86lG%UV} zWl2&nXxazH5m|enOHi7&eFPri87k28j42*77{k z4R{x=K8YM**P(Tkypo$m$o?pJ4q9TeC3>%ewYbOgRG3c00Jpd=q8ZJG@@$SW)OAzv zWYz!B`;PpJ3D~#JVGpr?HvteQ{qA( zm_mO~7iH0cKm=>#6Yi)g0Tl>|2Yg@I}Y73%Z?L!o`v}#MM zZ8yeNt0*Yc{r`S5_pzI7khXr`*M9ZFWageZGjrygGiT1sy>~W^dWF}dBDK_mouCP? z=HR(?|7y99$hD&Di%aJX>Qi~

3z!KfVK-j%%+1dEqtSC6HoiVQRv|B^I#Yr&hXu%g~Mrhr+Cwspyufhxuanm z!d5s~5)HnNHPGe^)FHhH4Z5T|6+>5WRD(b8);7#oxaVy;TSi~_WQV?%?q-cN3?OgS zpj$dvd!F7r4NexE7wJ+BRB@)P$8>~QC4Ex_?I~{xB+ec_O4$QuKbyYkCnV-^oAjBW zW^M4Z-Z@-LKiymx{mtuW>gktWf92PgKOA~U&G778jHiTJ#n2uIACk+)%g}$L18g|H zPP%&Pd0P5sUque&vA`yWEc#wdBQf+dfaU%K+#K3C2|O2@Q>buun!zIJYRf@0bUhv* zys`(nP{1cqr$bI84A=!Q4aY%Rq;P1C(np%h*&3=voB_b4=0c)*JBb77A5YO-dB?ai59L)TI1*O$ol8|}!P|FaZ(w2gHjF1E-FmfSm zDRw4CkLdK$1017~g+P#F+B5~X^34Y*X!u2NgkudviEs0DVb?|?}E+@E0|Ln(M=fU3V2H;SixJZj1fN9*)n z5zV7{c$cbaG}FqLGGW&9x1PRQ*)=pKhTi4#4UqS6K1l+3wjH)S`64x6?gYoa1T!>P zk%}1w2MMOm7|iVF^ftI86-vo9r8DvkY=WS9NqrdGjo-kuhxy`SOy_&H(u@Bq3aGU> z*FMjnmoQ2*(jO|JJ(t=BcDsjehED;C>0WJmNxgJgj|uCu$ALju8cgE44F%**Den*9 ze)KAIXaFXcdZ$Dh(Pg2vFtU`Xjx5H8R zNFnP}w8%31hmHnXtaemkMHH_cOTlhx$7ereVd{180kE;y?8?@Bj)I|j-7h4~L#K0| z{8bDyg1uz*5c1HlRd!oGlp{O+A^b6Uw3)B>n|gH=By}%bq7tm0zR2Pbt-%P{XPzQK z&OJ=Cl3og~ao`Sp9u%bae~a@JI5m{Xel8s414UMIKIAMd*CzEFlZ|Kcp|33f}vHofeD`>nHq$yHKBD59)r^K&rJt=K&I^&x#_YW2Bgmm<&D&Da^_5*o}NSdlTFeFU20r)m^=;Fhw@}Kt zf0yk5D|PlmL;{tu&)5Ym&j>zfln+OSKdWy%=+6i0P&8?vB4f~1hajt$$2&lmZ<*$R2wP{zQNY@Dao z_W@3e#;0bv_=+fW{J`<+{PKVvTGHrl9pw!tGJ``zU8)~NA?NmM$FT-{seA6g@jNa8 zE74*AqPx{07OP^?TOTaOc_`n7O35;qHt;038!zm#K$z#p@O%pEs0;XVs`2#xCXPF^ z)bLaB{E+)`iV&0u+W0Fl@{!E(Joq6YML1>x4gEx&KZP?OyB&;lzz| z2C^O$?A%Mi&H+c?B6idsc1l>N%&2yXepblv8S!{{ zfd(1%+&bvo{#D`+--)kpAI10adiQx|cyJbe@nzyhe4rc|#{pd8)Jed>aqL_;OGT4| z$EXuS@I0G|p=QvmvpKG-2Iu69Nc#5_`9G0Qq-H}ei($Je28uJnf5Qju7?=D`wRmt9 zACHyd*7)Roz&QX_&rJXJTl>9upW|)Yfuml}|8v+mfGykbFYyU_*2b5^{JgDr;s^Ml zQf!=`9=pi`(X~{Ds;&P zKok}SQPd9OrwtZ!OJ(|C>gMp%g}XSJ1daj$**lRB%f8iF_;}AdgG-1sW6*g&B77YR z({M{6HySdrvds!~!7s_=u1w}Y%c1^12hRm{(`jvBlj)4mHcJ&8c5Dgngf$#U4@dT| zJ(T|v&j!G=f~3hfI3xeLLOdk{=U@$;s5dE`-t#OfP2y|Ls2hz;cVa1@)x$-whApkr zF+XMx1o*&9Bh$jW@ECFyj`J8!8mQWG2!?7Lo*jhVL7f_E;4?EVyegybiG|X5LInG) z^M3eZX#=HVWeW4@D+gH+inX@e)eFnaNx}T_ttI+ zo*mu~Q1H)~OPyitY&5(U;cN!|*nv$$6u?=YfJe4tLVETf&b7cNVa8B|J(Y%zg|=gY z9XL}S{24q?A4j3D@>tOQP!MVBq&WZvtjq9#K7IzA{aM&KMGFSAAr@!kNwfwM@bkj+ zVBV}l|0R{!-h5E0!jABS;O~{FQSb0(lbU&?M)sQ&MR7Q{GEvwPMCU+N0-Abc{S>bc`a^a4acdGOE>P4vHnY3<6%`CE57uV#}N z&p4y#?ZM2ep|KqN#RD}M4BvVUhdreDpMH~-w7W(&~<3{Ukab>c?I=O$5_n@`!Q+Su}UqApgH`|H;(A$ z=0I^6mf>#tR|gDx6Fz9o=-criwCAnipFv&s;yeKiT7I*YI^fC}I6q_79!!rjw!Lca z+m<=#JZ7-|*vw%*$)4W#x)Tqr2aYYA9(?PVt$k0~FgcSyoTb&uagZCK`tyG7rEu4| zG+dxI^KOD9=;xmZE0n(Z9Q?(mQ@LDloCcSWss*-YVRso>;dQCl)$QAnIe2O2;N|kC zW?3~QGw8eqQ3k#pi|%EhnHz;k&}+WupM>*-oU$g?!*>T>z!9^5uu01@#B#r-V+QtT zpk(I$7Y6GWiEXdj2RGc{1S3xZW2Y-Cf>A2@g?+Pu`fCrtgL#+zfw(wPOb@$ZM%0-v z(0KMXax_*iSoEKwYq{yEDXj2YYQ}|)9{L`}38eWW%A?^28VbuPPQB)VZ4ORp#TkRM z`vw{g4TcV-KlV5uX>aR0kQ`3mc=ivl{>0Cs&Dys6&8wc_GhUAA{Al4jIw65^1D`&y z`^~|MDZ76^@t5I+c;Y&vPyab(H3mYwY zx~ahPp`^$QSh`c+o&yC^rg;Aw{s>+Qi*D2(Yd^bfI1}gUi45)rmpzO39!lVPKE3;O zxXf@?FVobvk(xMz7eK}f25&s!=deTJX^-HgZ~Sryw0t4oiczO4Ncp0Q{qU>a#0xX^ zQWW7AX8m>dAHqWu-w#)0BIkAZrufOjW1j1K+|HIVLie!htNt<cH z8vbS;r>9URdalk4k}oi9nuEbNFkb%!j|a}jH^8SD!i>b(EI6qSP$Kbd+09S zGvQN{=#-14CyehEg0*sg;u`J@;L{?EHU5OCoULK7xna)@1f0*zXC+R~1XUi z^GQP+padgOSmQ^M7d%$BJp2W;#N*6xfF9;sjJ@b^UxZH+c8b$b&%*#jhdS^FL~kB1 z5r#atmHM$Vf2-m@yf*Ip7G091uq5`MBc;3YyW$XY=+aDUiM-*i$9E= zNmoYl509tV5s1AMu~YhweNW`^EBP%A4{t&tIsO;Iu&hSa^)OLx=-4W3vzOsHJIbt% z+$dW>a=L1h5{3DtM>3Fxt$|Iuk%I5#r=P;f71ppGFG>A{UgGdk1Izgh;SRfPTj6iR z%SCq{h{?jxcZOl`A$QzPN6hJn?cqo1XVJe)itsoB?56w}LcOH$;My$#@6IyR4h?%^ zAx;_NA{3v7yws1k3c;9QIXb=yhtTAP_oF9S`1!ST+jcaH2V3FvZey!Ynrhj)(WHC= znHot`tvzj3jud5wX4I^;B7ZA}LxF5faRSFz4dg|FkZ1o(kMv3j?3S#@8bI$7*-rKs zBR1cRy$dc<-xCFRLCzd(NMOA2yrKqZJ-$`LiJ-5Aj$XS6pB7z&-~HTdlNyDy56h^U zS@`vson`yT4Ga*uvODkpg=hZGmzbk9f%&Q&2L(J5Qx5YjLNCk!;~!{l;bG&z0%rfUL@Y4^%Ew>x$vbEs*98>|cstMc-0FN$6b2drpGOM?A7Co^?0=&uhQdsJ$CDHg&vpc zaj_mR)Z+zuT%gB!dOTZ?v-Mch<19U%uE&{roT105dYq)kPCXWSd1Z-5j}oQkDu4$U3&bK9&gp-NA>t&J-%O$@6+Sk^!OGT-+3KIEDdwa`>EHClR!Bv z@7$6oUjn5*So;xhCwiyyz}5;>%pD@=;1>W0bIz**>=F0QVu6!uV|1_iJ?@>%i#ZSf&KuF60Rdv^&Mp6IytQ0rcky)iKxk3nGwIiUAAQC5 zyMGI%NDG_)-2VM|PWu$%cX9g5p71k>v9J$+fL_blz~EouFM2xCAN#Ox|B30FwxE(9 zYUJAc;U{Mu-2KP!uXg`A{QmB}6aRvr3E`~v0*pnHg#8|Qk%^Dv$M;^}|6cfo@OJDK zr53*6&j6)KDD%g{9f1jjFN7R8fD#8v#>yw&82%GFWn!8y;}(0U< zp2&lA-rf%fTMU&aK`|2*E&z;6`;fZoZmhr!2r3$rscxPNPHZBSDu^E+p}{x(MYPvN0U z4K zl~a2UmZtaL4mqlt@I?0WxEYv05*`5wa`4eli2db+x3O+lD4F}f#u2&Co4IWXavw5t zznmcV7Blzh1i6=+xijA#-R^2L_lX3#XPdc8-y2<4GjktGkZU({=k6a}mOr(sxY3^= zcZZq#VuD=$6s#({;K1mbKV#-@NRZoR=02Jrx7y4-`~A^1=ONb^sU65ShG|j^{Ms1! zTi9$c@UM@7^Su=VzB2~CH3mK$1HU&0e%1$8yIW%5Ka7E|1AOQYutt54$q^rF8M6I!VNG^T5LCg;0XaU9${6V92&7sL^mBM3<%~SFimtU9#p(SQph|=8uM7N21jm)Z z1P2?P0*t|aCruuzEJik}NgeF>;-M_79_)WguX;dQhA`ZY(1mPcr@Ti25vuunYq;oq z){wrbZ4$`A1Gk&lNKoS`XW12@xdXCMn$Uw%rq0NlAZK_!=MzAu0y;chzp3L*ihgqi zZX(-(3#>w>zs_gNkIC*iXM6z=EJvJ?I|1!I=*ET!xVy2g_uvwotAWk4jau))lJreM z8c7(8O&7_83!gXwZ|Gtyw0jR$rElT~c)bU!@v|7?m{^wHA3%QoOM{QKz#$v@IUe-W zPHn1(^QQQh{<#OhCzz!4O*|+FHZ6VAbmaCPtV{2okHUlfo8+uhioay(PI=Fi5(nW* z9Bcw9`~bH6uo&W)b{PhjD({?eW>j(vDxnu~M!tvV{C$tHe(}hkFkLKAvxSzIq*b5^aJf`;Y4q0C8P=eXf&+3`2 zDbeldXT`{7%_1x(Kjh+v_HF|pd=n={+)vjjmLsbL6CPj?r5t1IaI+k}I34J3@Z%N9 zY9bv_HE=Nt(v5)Rb#SoG#2?5+L!N%4nD}-{H^jU((wLwzNuOV z=SdA-!v+U4E5K>mgXJntJy*p^zoX{xaTaKu*RE&{T@D(g3KXG@fty%87U$>VcNuiQ zgiKn@9ha=Zt8Y{)jq`#R9}P(6;Np5jIL8$aRUv6qwGwTW0G2v<_45ijDe~4^teJW> zaP;t9Sjb0C#@^rX38dqWZqThON&ZWy;0ja_`4LMfzLMS%{kkVnzff0Wo9xrh(3$}` zVDNma8jp}bji#P-W({6z^E@b1FxY_C}4&dx*31)IfL|v?8v$@2@hWePQXqKUJwbLXc+r% zpeDo4ABUzf+}_d$)uP4hWBR5y6mwzgrR4G81LU)-G5Yu#PF4m-e}USVG30TFLC3&FsRPwX16QK61M?pyd$8AvP0kx1$J4VLw-SK2n%tl95G}^{a2h=zJQ64yP6cRPX$Ypq_gA{kU4xmg?SPBm#VDjz<4}Z zkc)-%O;a%0P;QeLqkrQNE53;IO$T602g)-Cx-+nTmWvr2F%K9Eyo{J?R|2AO-+vVa zkNbjR-s5n$3rH5k%+VfMj+ZdOu4EEVLpq#AgM(a-naCWKJBztTAy-)w+$9;tS3V3d ze#d^;=HY z>uTKYfc1emf(tmdHv6S)r|Wfa&sXUmn?l(u{t|aaW zP(y2;<^vcWxoa^P^{Nk_gnyFWKM}jwdb8ANb8H)KgB$i697ziA(9Kpk ztKxYcd|mpdd^(2a7OUns9#{tz;d0_#1iYcI0cjxfD=|!XE_8}9l4DKKEx;~OV`alH zhB{G9&6?DI(BL%ZN66Wr?@M^_f*<#k^ImW!B&r5NEWUDKNx;;bFK^@EKEF@bo3@*XYK&6wFU+9e7!%CkX=--8bGWg{d zEQBalVtQ+l-l=j7*zX9FgCZV&ejVUD;$go8Y(OsbvE_x<(dv8-9k`W|IcODiCh4}M z9`ML2!!k$ zT8AFWp~mLqx(-&@=|eUrPl&Ss_2{cN++|lm?8h5pbN$G*;C{4WE$}LrVSG&4EH}G? z=Ng5c)9Xevk)6OFJ`?mr0F1a;TCQA`v&3IGL*5%$;gZ%!KJ(APbNRhP&r$7sZ-w`q z$IaTo#zWYt*7t+Mf4FeyPk1Rw-?0M;(Tv{~W0JuOp}1t?|InXgy)Sv_Bl~AwfWv^B zuwtaQ|2P`mdXD<$1-Al=cEJ}i@iw5yL%1K|Vg~HS^H*%YgP*D;$|u*qE(h9L*EBaZ zc>*49&)l5+TyI;O@Ob>b=GH*a=l87jH@5pctsQGS0rmP4!DR)PB!B8L$ zSAitTY%SCkY;E@~ni&er)~XrRFj{hfZjB2B9YmKF#$`hz~N1hVp~){aZ78rS>$ z%Ny4%ZVlEp27LjOBnwvB+0(%?A#F`pKxo-BL%B#V$IUExr!7-SO|!~0bQ$<)r)(Yg z*wNTl>2`U&eqX?BM9cP(%BD^)y5OCaEJkB4lAKuS@9b#S8vV_oc3(#jtZD7&ZftAy zYF+-$U}sZjn`GAL(guIguB&6cyVDan6AV*fmfmHpr#0B3krr*H7rhLC z9+dn03sG!czNXf-txYk7%Q}Mo_1TAOtg^#kQxVH)?0OOPz^C(1-Q%y;8qoYcZ>t~b z1bGHKwN|~Xj*{&S`5UQei)1(Q#Cg!c>Q1q;&IR@H2SZ&ZCArBW)YZ||1PQmdcC@NA z6x!eDU#~$Sf?88sE0~_EWjD>z=H}(i%bA;(U!c{ubhbAJw8fOH-z%1Ml8lyMu&Zd! z9HXM#wSJ!uf97aV#gTcz(7Lsa?X7L=b36UbbCTBrrM=VdLsyV&m(=HqoSYV4TbIab z5uMQV&JOL=nSoP*BBh@!8Ul^Y7%daQk_!|<;6g2@QETney2wIPTK)H!{01hj05qjE`U(Oj*wqisEg zLSlw={N1e1ZtPe;YZPO&#m|$uG<1o5m_%yMT%@*96SHP`e;EH`mZc@FGsG zv?>Q>mtsO0$ zZN4K`h6XLv(Rx|PS6Qlc_sqrGn8B5u{!6Jg zN2(FaVk_j3s}8lV@%g2I8=Efm1p``hCo2rL_&Y<*Et2v6(BHv@(%2SsCHi|gS%=<| zxN?~I9;$<~21ne>C5G((ZY|Iot_cO#bcQf849e+1bcTXQOo3ak$c_0PIxEe&7V=}F zPBs+|;%g{%b8e_FaVLu!Y2gD!RP7v}=Jf@d{H@CB7ij@-BNjsYB-OWFP3V}$P-;GA zF~8fcHSlSx zmRD*1&dzuOP>HIqU29Zc%^W$d);2cLe?w)cK~kb;YuS>BS?sTc*#YNL&tXRQ{8@(e zV-LYPNkv^9_|zV13$`}F$|MoLSOBE0lWwddZ_s<_B9lLa^B#>w6m4 ziw1Xx8%=e$f*EUBeXdpsweC7f|kn z^f7b?e2K5a=TGR!`F+8VzXR@<=`H5x<>d*evY0<_-Wl_(`ddOq11+K07DCc%OT7(VHxSomhYPdSbomhJ;0HIRnPh zq{=T|5AU!DZb2Q!H$V$Q6Kj1<-7=Ld+)71@66Zoxx?#z_U}oS#c)426*_xg_oR4f3 zEYcDdonu-o%tC7MAg2wzIeoe)8i}RNfqoiu$(Y4Vr#aDDLCtV_JEI$rtBWd5v2rm6 zHo;#TQ3fP)-Eo)&2_^--1)af%C217)XtGRx>GhFkP>xtlP+q`j1u!P3vW~_zSjAE+ zv{SUoj`)egMaNF%N_96%VI2bhwkR12WPmiQrU2n%R|VFgZ^k60b3~t_5~_t-2qqHS znDvaQV8&FaI2AX+HPluqb614f$hxGcJ1*_uLOK9NXll`NW;P{bMW!jMOLn8Xbaye& zErF*5BdV3g+E0m1>nu%cY!*Cp>7}4(54<7mq-3u1N?_|c;@5d{!GOt7wx(<@mg3U* zkEo(Z(A?0J@tPSD`r_?^wY~*;MWRm5CYoHlQ<1ThhR!tmf;7`yznNM|rAQVt1D~21 z5DU*)*WRXKsts^qdUAel-pS{jJt=u%ps1{)+t=2KeGedX1d0NSPS)ECG`0A!%FG2k z(An4}SBgx`@#!VzoU8?kd>vS|Vjv^2f zAe2iX=FUAMrocP_M~yjHjf*v{9bS=Nh)I!tOt4e5VM^yJUIc>1mY2^fFpC!Hg3jUg zLk{)>iUK}Aorj{8uIiG`_V&&WIXdWEVU4`DwYf+H0^Y77_{Ks!0?WcpQ8MaY`oHKt;vr7-R&NMkNyWHUS9Otgvh2Izxt%;P>Ry1nsuCe*;yr;NB7V__rk%<@L-I<5%^zM2)d-^sQcq>br&`_C0wUzkSLQwOH8sp(L{DQT`?|AS!>* zpscJzVFJEf?y-nbWu&7yg3QVeuWud2GlnD1EH zk32#Tsyl;*DpYrZBP~?h^}kdx}bQd%8);mVP$KZw+XxM@OfgYFp4G4HJ~Wq z_W9degQ&E!qt4${>4qPw zfYD>~sS>MAh@h*U(meRPEg>x4=Z$b^<-EeZ2{^R6?-Q$IoU4@|+@$tOtciHMyI359 zkd07@unM6CVLig<5J*=X52SVFF7C%W1)$nQR$mTwi`vmCzEaqmio=f(Uym5?REgUW zQu`@lyxu5YLChD>B8c%qvDlAztSf+rB~8IGRuz8iDWD*j8ieF? z+I$_&!4?t3wtQf%&!1!X{-UWR)Nv^krCIr(+*f0oaombTmms~~C1v#xn)1132HRDzDdaqnDBC3%^;&lTVA&k-fd@3V9xy9xw(aSE;d`P%;>z$ z)@aqZPHVz#p>)gW0Si1DBM%myl#_!eTW2G2K}o5r-gSYv@WQhNykzO~exy%2hC`gt z{f+UXE8X4m4TFT<1^u0EMIYH#od5fg*zxYKz;bvoHatXE%qB2kMn|RRMZtm+f_>d! zZCz*$({&~8QpQCbjBfbC2_;3T{liir52#XAQl&VsrPL*iq!r=u=epn=tP0_N*SOqj z8i4nW^FgWqd zOfOoqqO7*Os%GUZQIBU>&;)E_^8q&Z9|P@}h`HgthB>;LU`sW-p}N#4C4^k6Xc&V5 zZsiABn>+Yyy|Dv(%h~l+HFb4p+YMK<75l}BvD`YA5UEFD?S)W*(1LIW!V?G>vCTa> zJ@X4Re+XOI*p%m%QONJZ;|O?4AR9ZyU0Mqsd3WG(dwXNEFDIbh<`9~;q7~278{5te z@i~IN*TfBY?1-)5HmTMKXThw6f-}o-)DeEPKymd3z5zmljSHKtYc7jc&=hCGw z1dKfuG>0Aj!p$^h>QPlTi#uWx18|Aqc0*ZIOW|-Q%gke-ZR&4 zca?}c_VlkT=q?dYRX4Y9`(}w)bp6Gzt@>R_@pTWbJO0~KO5Jb%{>9ghT~_+}7nYBI z=B-}yy}U=mdv5;jbGI!#5&U&mUQ0d%^v?$ z!o3yH26n3Ur*({b@WF>~D1Z0;bA}u>3zpA4KJWdCo~zGa_~XFFS8Aq&ByNH~?IIw$ zMU(K0pvVgv6JS(BiF7_&;wfn8!kL>Xhwj>DC_aGHF@|hQx^=CXKkpX2`{h3 zfW(rL5^Qj{&R;M;r>is2x-Q4t)97EDFs_Ydmdf4ctsv*YiR^8cLu`hoMJYT zcwI$g;1KqCe2C&oOX|0mP8zrDTE{iczHyHA_T=rZ9j=|OCqY4J3hTKIL3{1P=&^`V zPev{3A^ZV^>;!P4jqC^8Wk03^e;*NKyNf4{D_8B>pN?sEX^O{`>J+v;vVGjiz z8z*lAhD#@|gqO!dTu^>O7wv&l|S)GQx&Ge;CChCySoTt@;iD zd@J&Ue1K=PXVm9S8r8qq7ze+3H*tMzuL}8x4wK)8{A1tyFuD}DW_$K>NstE6b;vJ8 zejI;F`yA(Om+FB%Y9a0i&SKzfLE5at(CgWeJOaE2Sm(jR zw@aSAjPP^d-3A$$^clK!UHsS~&r*R`h$EP6CjOF1<8*xc8y3%4_X6OgefVMY0uvX! zG3s6xUpMhvSav_^W{bS7$W3+tgQ!myREe)>rWsxzzDF}LS*wP;M-kox-nk|o`iVO2x~E2* zy$D&;qEXgs_5t(71^OH{R{x35emPP04YMp{u59+N3_8XtZ^+?(l)suU;23k2G4}l9 ztxhAG_*Dq@6Qa?(O}W8N8a~>s@p2>n288YtqtW@XW80APtoX6b{@lkhCyn51nVf^X zMt>-)=MlC8uN$#Rw=o~KT4aAz-w&XUB|X`KyTFaJi)GX?`|F1H&N{mg9zP`-eHrnnI-jxX9E&dUo^-7~H5y%H$|}YlWXH>D zta^<8)n`Yei(_fgb;NIxB7G_L?-Jl%7>jGj#cd(8-XOx4fO~Hu+%H+U?8hAl(`H4Z z4Y9cPbLHUG0NaXCg?txclV2D^>+~^1-oJ*>3Y=oZCXO7lz*0l@BjwzS^550V_t~*H zv)`PYmQ=Dm&AB+motET6Le@b(WS$m{9#34X^XhdtZ%3{R$b0tD34F>;RHtRE2EK-5 z0YVnwm550*+tk|8BwNCQk?TzQnH9ic9lXYpC2@(f5V(BLj@L)wYQV*`BCoM<7b4f7 zpX1l$tuA+8%o5R+VsDMPU5q8Kn2xX-A&9oFMQoNwa;!Gl9>Xq_DM3sgH^`;*#o(N> zRSO9}JsQ1|vB5hpcvlYIm8AIeR4Hj7Z`u&t!2hWJk|wrY0NiDW(RQ(YNt%;&6d<$# zF3mm=rC|M0GIDs@FFY^VO08uOFX zFTkjW3lQ!=UXf`(VCxstR+aaSv)>*g#*!4`w;Q-{ki)3!WjF*G3e0Sv1nqO zq$z1mG|IJ~sS9cj2+3MF>KCVp;uPz)Lf<< zk;^^3Lit|3WX019gAOv4m^x{q^&_+h7LRd*wL&TmxfS^unVw7h{=O% z?5?!bKF9j)uqHb&YPkTql`ze)hN3eWltMf|4LOq z$4M`6ZUjy}aq7}iyJ2gVK<9YR_2?eteTjMC>$R}asn?Kaec;*j+GKQpJ6N>?jqaq? zwqFDg47dbU0<;8d$^cO&&Y1G1e5lI{&WJ|&`|WHmRz@x*qhddVffnLqRFdL2!wxvi zUmUzNrB0V+9wJ&8HJ+%8q+t_|c{_s$(1}h6Yb+f#@NWeEnL2*pF!&m9SpVI? z|B(3TW1qb&&29e%6huvY)S+U8-ub#rBn~ElRvl$=${K~M_BCkR9{}!~h)42F>UCM# z#rE$eV46Nw??W-~nbGJM_43!+%PC`s4ZDrK&@5AQr6~)6^D@Ho!2g_%pFl==c2|P- zFxFX~Yq%K;qS2Sk@|K?+H-oxTFc{2@Ur?+1OPziK<$q`DND0R==(WbNBc0kXQcGMZ zv=h|n;8|GH>g``kJD}?{CGq7L4W?38q_kQpO#sT##=VAmQt`tm-!tj3`r+7bizA)= z&II0VXGf#Qp`4OasY!P^b-My{?Oh4TE=!SfFZU2OoD+?H6UA9xw{avHLpBwi)y+YR zb;JH%hjRN+E~K|RvcJ!d=&viKa}3P&M+ZBzTN+&{&P4w3V#)IwHrQa3X;}Qsq zeNF;yb}7~&oWx}r%jU}QT$a}5INh0`(-kSjC{ls)2P&e`4SdURM0wq2Z?QQ}uqCJf zT>EGrD+@=0&IKOp<~Y=v(~?SI8aW0@|3c)K==nOoF%Yk?7>qp5Nwi%T16M=Li)A+; zv;lU|l=q0fm!w_nc+)moO;K(vd$S37Sc*>Cw z`!Mv?>-5#PVtyXG-!trwC#bn3Wqksu9QQL&Z;*9g5;gbd`|Mq6u7vBssfR0-vG`V? z)5Y?SBdz#G{guAYHh1*NiPMx8s~d>g1C10e_7mh_jlnH_M|hhW`l> znHIb>#eQkbEd|T=A3(Y1aa?VhS$@N3fOLX94CB`Nj`5`bMP zb)#|hKD>;!He42szHhcQicfj=jR`6(PqD8^2v)YM05*1pKN>xS_2Qzg@EW<6uL3L! zAse_?n0$n+)%xYD=CCPAv6c^IDb*(2Tp)9yP@2Lyg}%$GKs4$>OxeZzm&NwF5i>9C z>>UW3Q06p~hEY6s+wVt*M>_IopL`e%)*bm+ryp%(Bk(y(MbPrYuA%?i2VbMuzBG0c z7>j4LTjZG+b$kY~8n@utnq;+FvNti7Hi7#4GvK*&yx4gfZfMU4R)}8U(e6Z0<}hQ& zZ4V|8zAI%}LRKu-aZ6(sHQ-xKLgcY^g>xeN{c?9S%I#NPgi+>u0OQ=uYb?GQNEKZMPy`*b1;XT&g5!=5F;SkCk>3$OH zPhvf|*e~{#{g=;^VQ(*oy(O#y!HKqd5S#SMF$BA%Z`LhN=`fO#z70Ti$Iv$x-+F<^ z{+0swSaWnD)sFU&YfWM~ay@xmr&crDQ1qc-g7a;@@_>)(+ zAl!%WBZOTDuOobbFck}%(-0OT)FQMXT#axC!o3KOB0P=oM}z|iN!^N;6A;fvScp)8 zunM6C;c|q}BHV)THH7;S9zl2lVHd(4guMuFAiRfQ@3DzggsBK8Ae@4bhp+&l7-1+*YT5 z&HJV(<3VgA!NO}R$7$A8>SS#3gbnqTr~`TN39mfM{XFIq8~HD9LsrFDT~#2uEaU0B`uA9af3sCAdO=@9O zL4F&LQ#b?SEZpWsZ!{V#L)1*>+g$I}&cx_>_&9kyMx)Xy0Iq>(KI3x$hYs_~lddi(^^?E9h3I&@) zrHpa9kCP|BW98#q+k;_-)P+uPkIWL6I$Hxg8qzO1kP7hN9MOpsPP_qZy%S9};#?50 z6F+$f_&RTEGXx;6b@I>v(lO{nw`8wA%Tzm#@fDw!u&(t&+~h<(a%|n~)X5XKI!PXN z@k>nMcNy+-VnoX7zTt#yRHNdXPM$K*h(+6XoPhw28d!_BiJV|jQwt>YkW7)AKV(X8 zsC)s3KjLg9aWjserShT*al25*vfPPNEacfO;x2Wb1+BtFB>tD+z_&q#E`K;Ccpm}s|1X5x+&QuT1OBEt_?@sE z`32z|oZ5<;Iq=`umA)5e^V{CrK) zrRB5-Lmj?FIHiuiTY%d}IIW9Fg_hH7{I8j-gsArJUHXbQ(r?qp>JhXB4sp6xjPOc z)xvOWz?#fZw z=~g!RRaNFfnG6f)Zm6s9ESJ0%M_FLjUj>mPR~&7DOKTby8{o+n*ubuFi%bh@AOkwZ zg1TL$p1O*f+ImlULv=}gWlgo18lPKRR^L!tT_>hl;PRS=TF=r32)n9sd1bwrZe>AS z^($SqptZKFybPK`&MYpgE-SArfliBKEYzwJx2{IVT0jV|6r3!rEI&^iXMxGA%IcER zvJ#PHK_TI?C1tgq(sGn2lLDv{$6NU|?s|`FNrO1S0=ZVyRF;zOp7NSnkE^t_R-9<% z*5SxPPbK7zKg-XUOGyZAjO+#CBr8W%3v^G78~V?>OQb%WY~ko)sjJ87drKgNPgz+Q zR<0_Xr&z|muYgsMIN)K8$IzlWF~hGRGbnITU?Lb9Mj&gWJRT9 zS9v9f$d1pdi^-Z5pH*I7TUO>4r&-XlRrQ_)d1ov*(^FDY4TDgPGXzh!vR9Oq)YsHj zo?qrsswZY!c}t)X7?#p7dFt3343;X9V_^{3P;GFfss?HSaaJye4&{!8RfqO4UUjrN z@n~*W$ujU)mqKNAUA2js7mrzgp1Z87tga4XKz(&0KR%nZ4RhNnqD<5Nec@6lX z4?-FnQEFwEyXxw7UWqab9Ag$eD{Cw3%S5@ADNV-me9wwXmj@cT#LB6zsRwu6uF6^$ zCJIqu!sY?#S$NR~3cvt_j_J;zjv_$|7Q-PXYb9_MRa|*|@_upMN|#%A@FYMIGLF8r z?ldbmH%U3e2|VH?M^k5eSDSC0ru(}YCctoor<;&CUpd3+@yIe5nZm9)Jb2n54=eU~ z#5f*P>FL5Ax#P6g(DU)m*YS5k()0Lx5Mkm{dd(u)Zl|!^j-x(0*IY zywcdbWIb;-^2Cp^N_S%88-M>t)=XGP`HUx7_UURqWu|ev@kA{D?f=vI?kru2CqW@RoJq33 zZ2J*Nz|yowApHkWC&sn3Hn$jePBA{o{;KU2AWaAe`yXsun8J@A+5c#>BPo(fSK`N4 z@zYB7Kgp^lVq|$+yYX<)+lmc?cN`hOa{L@`Kqhw>x5-{J@pze$u+|EfdZ~+H5>ivzfqSP@w$_dsR8nB=#SW#Bpmfz$Z|fPtHhvtzhDzIR%Rpxo%znMdKzEFr zq@(@}#0l83<7G=4cl2>+PE0b7pG#qWriGE%&cuyK{F#ZbAW=FFwSEJM>0Kab1=^VQ zAnxu0c-mGZ9z;T3yQB&GHd_0{g!Nc^W5&knL~#ET6V{AF@UcB*Zd%EWvHzYa`x6re zBlt0yFlnk`!ak6e%}{BWu#f?x3G23Ql2TwM4@qok%+AE)g#|DZwhx`sn2mq?;i<9ZQ4Uj(58JB zA1O_xO*3cC8y;#AtS^Wm#arA_NY;$P&l9VIfx zA7wk*=14j&X=c)7T3g#uHl$Jr$(RPKGDD=KoQ+#dqE6tYq*P8WN;zwsZ8A)8ws0h6 zp}XUzA^|A!;Jv1!1QQdch*OWj1Z}fbPA2-qlSJj@IY3V?Q0U_-C!ceSeR_POAZPr@ zhGVODPL@;{G>n^M*0lgtkDq2sNip&!Sa~2ruLO;Plw4Fov{R3%oUEmgy5wf+p2a1_oGFSql1F6D zG?O|1B17umii`lLwTl|6mhE8LB>c5O)#WpqBYEl-^9WD~^BEv(5aaB8mgu<4W;^-h z^Oof`FFNnMyg6r|e6rn!M!p3EySSGvjcm50XpZp!am16h5zict5%>QElIOjV)m}m<+ zuD$YYbj&evsiSA<9LL0k%k!!oQ?GWsYRh%JdF9oP$!ixml2l5!n?5LY|4T#3Fn zJN|@ZKl*jg#;+8eKRd54CvWzmWjR%qb8_bN<;=R_ z@nYo-&J{N}D{$X{FhN|OBmulxg^(lx*Qeg#Od z!6?G?ZxPH^c=LM%s|fF2LokXk9g+8nP^RBOFstCrdk9t)yyH7bMisb~*QfB8{WSVq zg><#NR~_m>I<|u(CAR7Ds54Q$CjoCEf=#Ss#A*FBuQ2^lF1W zKp|(?9#ISy0BrOgRg)6-j2K1_fdPoTNCahuPk9W{0W+0UuulLp(y2&g{Gb9e`aVJ? zu*dg^r0B6Tu1^|&851*4x}7;Y5T?cDCTTq)OCd0m{qPW>2I1)J@nUk4HYZc$O+C7J z*^FbeCyM+TQ$J;!I_J&kRYsJ-sp81$yxmgQl_(}Ji$S%cLFTZZhP(mHvbgCgblp2;;@Ma%y9mY?{FP>zy|^dDCPd)ZO4@8sB@cadCqa0N&_40f0q#cPoOd z6BtbMq%ETjrr9U64c`2hfq()`@0JL98@$o`qqo7k0@)wXi6Tt1ef3W=vf}K||$$ zL2VbI| zIQKB=N5IfzMA0Ad+(UVje<*9P@rcVB+(B8?BCmb;J3&@g%V?rZo=etDQAr(7K37zT zZbp0-5A85=KZ*ZaIWPgWry$UOs6x0HVF$u<2rnZ19^rKah$Qa&4&oOf(EJ$om!swm z1gd@>0*%%u*S|Iga@XSfc#wD^!iQ1Jt~Pug>09T+cMNe?tA1w_nsAIESI#aO2ogu) zQzMcP#vwQ)MWN6DgKy__d-^|_m9B9oNUo*Y{l6pf6z|yiF;ptp+39Hc%Ea?;i zhxw8}h%t`=axr2HvKkN;k+NVq!G(ipB$-NHrgUT}_F@k5kBuv5NXKmbFw)UbQb~vU zH~J#S%%0j>fS`27z|8eqs=yK8ut^3P*=9`X6r4J?baF3g;)EW;wo#?s+@E;__>ik`ROg~DeM;7@WAenKHCjcp&sMjoT&O>VlFuO49 z;$@*)XWxGcR>o_dAqzCFN=UdBkF$E##95<>`s&t7CHK0nL>G3wfj`W1zwhrf_@ za1;(@5j>16Sb%b;9g`Yvdkqk#tjmxNIijS4VbVHULVrOWhcE#jPC9m|)I*aDKC_Lf zfIJ%qIUSI9bcoWxB18pghAddB8jvniGpAUx~x{Js^=d2wx#f#$dJDVgC&y@S~M+?y|duROlxb;voMvCqKffj0Q{6!sm;0Sb#=Lstv+kjNO zN*g-H9laO}(AnOOvt$C6A*cieyL4`hHFwtm=Y5l7r1erjJ_EPFlEt-v9H+%X?gZq% zILMCyS#(k?4qs*b)yc7tHv#$er(z+K(8YN(VnScxy#6rpd*^jBw zqHqNu&z~6!xdf0GV8|?-D*^d&VJzepKwc^`AcpoT2~vBruu*aa^vAkBZtdM`jBeZK z!HLlqwRhhUXzv!3W(5vgJ)-y-)X?60kZ){3*ybaN=h?1Di9*Ynb*Fe>k_rch2C?gUC_*(a*DK z=?nzB@S(3hz<&h(T({_>`J-@1Gk>!Rra9*NxcQR-*Ie;uNlYtNlKcrC0e`aKT`2xk zpm1XT{1iEgKV(WIN}mnKdd;szP6xv)W8uQ-DUf! z2_farfX{aq>-7*Ieg%jIMUy?1kXHej?9yc+A@2g>H6ezsDtai3+0dV4iD~@#xMgv% zDGPEP)6$5G&)Mu`e-`L`t)v-&s-T}c*R@>pQC_Td|uby7SCqU2yQ%Va3cYq4gM$` z@`t~%mK4(xxTRYOLOBT}vMqnl%B2h5m$I4MTN{0mKfxp5&mEBDN7>AyP?zFQYqQtm z^#$^06l7K(NS_hn2wT4D{DwmX!At%%s5QB%R9`c7Pk`X?@$IQdc zCJ!?cQY~%W5%4f#^6(b)lv1%SL&r`sdC0LG=xpqYSF%3v=a9jT1k@P(Q8?ref9DPj z$6Oz`j@@>mp=0mHv|=Tttvdq#^kU2GqjYS($sewI{l2cY^>I3O1NgJBL1{~(u|ulv z1J0EOjwJI5KwgT2yaY(!3PbCNGz`d|I0%m?KW3$YV{l%zPR<_>&BRhU=K8off1_q_ zK0T%tD=DqtX$B4)j|7+8Yce^X1pcC1F_)p4i%rh=1mwwdO%{^T_tlac?7Nj`q(1Jx z->n(_LL$K>E!$!GZuHA-_G@k9rM~!zTI6|+nDun7IKDJ2Xb0jiqZj<`-;cmK zlLxjdoOsK}8b|eO^qeb3&9Fjm{mkG*y=DV4PcvvXAO$UGMYe80=D%jpY_{$-M#|sS zde^AdvqrV<9o72tR_nUlFF%aj4V|~@F?2qrE&XXlo6!r@H}d+}#=EZbtY67=Y@N4g zHnb&%X1(ux7g>2JqsP0U8~=m-DrhtNHMY*rFr=L5nS$cand=PQuuU2%3Sro~o6Wvs z2`i6Zj`uE(oq)YuV@69LQ>=XD0mXT%M$USw6fOTNX#Kxu)?>G5)gL&FRVNN-v|V5V z`RTB&#$T{6<}$eP4U-%A287QU;+Y|`!40?3(?s0p%AG&&%ro*#UtP9w7E1LRrEnUx zdV;abgb=A3I13PSong%&sx8ud8{k-w#9X6C6MGj=)F`W!KwDTPdARQgcsLtkR6L|b zgAs|j3?B0NjT%ijL>x!lnHxyJHAd50vhVCyOa*$<=ocIieZ50&#$QIiIO|D{C8&ob z*sp@q6{U%uMH)0eX42e)lLDI>{a#D(e-F*HL)5IpJ%>FKnuA9`^UqD1d6WnaKetF` z*Tn_UD8*+jF`spdZOH-!M(U5gZkmpqBkxxNt5s54KVwy83HifT#(KUi$MRwNj-qlb z-)QRLY(V0LZ^-l|lRr3Fp3nA2@aGZ|a-MFr;;UdYrmiX+(j2ev5=ZAx7H$-O2#voC zT`dOqqjYuO5%hiQ5%ir$IjAw%9Pse8cWWD05*I|@GY->tB3%a@4AX>iH>~H~z*+qf zI6Hx})o6K1857RG$=Ko*Z*8s|7`Y{eD!GI^Y29q)=7dR;uae^R*h{2gLj7e!(Q|quU zP%#c;D6u8#vhV;7BaI!uP7{xnQcN-LA-Vc`C<@y4gaq)h4c$WsF_0%WH&HZqW3+1XkVm(s#9`dmj zWx&;XKu*NtGKgIJoIPS9V1&7pmDyYbZ| z_Rui#)fivx!lS4jQ`~%b82_OsG>AA>s~%y)-Xo;=}Je1J^P`c-5| zL9+ARRqU*7IACm;!^P9;(T=O=P)gbmW4VUz#Fc=Iu@3=}B9Iv~mI*lpz)7Bv4pjQ?0` zaQ~qSMI2j$HB!bJF_ePZp+j4P?#+>NZn5lFQUyHT9BYG-I8Bhrg&S^i;kpVL-d zB}40M)4KC$quYGev>A8Jdh*3z;lRBWJt*5;J7ViTwR#O=guyjJ$HVA#aSeI}tLR0v zG~;*U<^mZvhJm<)Uh6(*bVo`Oq{9n((fS{Q?(+%h&$arCgtCyitlKO~{WO(wkdFgt z9}SO-IUtuDnJYjR9GSlXGLqD#w4G&pXzY9(t$#)^>OT)-XVb!_s4njODx%qL*&-71L%a z^-c7JJszgbQ4~W}=r3Ddf8uQ>Nq$h9JAe4WWBCo!<{~EdWZ2B2(nqm5DD51r*&Y(w z1ep=h7Z~rN)OH{<4$==~!9jkKO8MGXsn|4-c?bCfkR=EC9FX`}xYTPvW*p=zRLUUS z^8X3_{gh~@{-eDm3V<|N&GK}O<3ZjMtYUfMq-c}IJ-po?pJs6t&pl7y=vi=d(45%ZG>N~i>uDR#jO!8iEQvcu zBW?JEY7Y&e=B6nAO25Jfb3CVHz8y$&Q#by)GTMg!Y;0(sP^2r-dR;Vn=`;4Qm}T*{81%#10X$SMgPCLrUyr zekikL^}_+f!kqHIX98VYmy~v$^Rc{<^B@9(=-BL-wG4Yo(r6 z4?xqI4^ipb*3i8yWr%AV=Tf`YjnX|>gYLJC?hsx<_bt`B%U6nO)guY$zOV+}r3~r5 z16)wE1qUxM!R16bAioY|#6jkP#B*Vpt3Z|=dtUZ3873Op#;+;jnh9a}b4hsamg;6FQ!|Iqz9-|5t%;|4uM zR!06*E>jL|2`K4nutwyxvIbgH>$nM-n3fR&e-Gr0gZvYad4uR^BWos2=@(kk_cVjH zY79U_BJEaf)s-XdRZO*V#9am}eX@tPSk72%9PiQ%-#w0pOW_671kS&_vc8?F$7OqLwZ5F=(rR>%{$fJTa*yqIeX#32f0@oe1eNI^W)byxkWJPB_ zv$B1tW$%W}`~@Xr#-J=kT71x@Mu|pQjMzoiv<7Qz{9bL1b0}3cU#NS8W{ov!8YA)~ zG+kDjt`wi2h0JFBFIFYgz(_Z~#T;ZezAb!KT8w%cm#Bf@)y^Uw%C?OY;*|O@zQq8F z@r8dQkrN~X$G2QB0a~Coqueco%9_u(X)^c5^ zdY)FkN~a@l0*QTImm=ivsOF1dWSMGqko#26?}laG`5oxjFNBfz5Hhb3Jt}2ikdN)g zOw~q&=HNaCL&3h`L&tfeSJN41pMYfbs5F{3?R6_r6^b~&20y%H{ICz!gj%6Pk4oBE zQW^dz-f%uy9qFG$v6!+(EkE>fve?4!X^Robb0~ERwzfUk4*7F88X2mG zUZEbxGRexMAv0rSbYIB!P+z3bdYld&x-a^G3Gc08LERUo<{Ep#R3+KDvqO2^DtY)l z{6d6!yjfh$p-=YEc78uhA?-YgO|3$1)MTMjb{d+_E8T0_Srv<23ft!wQR<9Aw0&ef z)E@ek_M^5j`1COLIjt>U!-iC;m>t$&pDj;n``kk*bXn-oZJzxi=|yK*3(bC=X^+0^ zb;lhns7XJRQgSDje*o%z)GGk9M_G@*q-(>7r#(s&h(?xpM z>lW)`zronkjD4Q5#~J(0y4V*PJH=qf!#giB_T7wqsV?^GjD3W$&oTD*G4|Vav0r2C zM;SY<%p7ZU(apPVzc1ItewDEwX6&-(~C@>SDjh*kg>H ze(&J4r|avCJz5w09An?f*iSO{CC0wFE_V9GuA|rXZpJ>t*#DBTx7Wo!%h)>^`w7N= zow0Y<#eSZ#w=?!B#{S2QJysX{ImS+VxlUhn28{hOW8YgB`&q`mnXwlc`|mRLcwOwL z8GDqmry2WM#(uai_EU^~BV$i7_K!36k-FGVGWHFOeT1>kF!pp^>@$r0F~)wBu}?7e zVqNSf7&~3ba((_VW6v`7sk+#w82ft0KFruh8T(9K>;Yq6$JpbH{Rm?}RTq1au|LAt z=}sl5FS-sg_A_;{XBm5hvF~Nc^pRJ2M#n|sL_84RD zX6$oyv5zqJyNrD&V{d2d^L4QwW$eq0y_>N=!`Ls^#eSHv-(l?f-ekLT@&sdFsEd7= zvEOFw?M(N_8T+-m*yD`-Eyliuv9D+Bi*>R0G4`8`J<8bcU`VP_sa6y9vBwzu4aUBa zu`e<9n|0~Fld&%{_6>~vCSzZ!i@lq%(|sJus&fCZ^D)N0*dX>!#(s^lw=i~kZis53 z>i64q>E6!RuQK-ajQtNA#J+{GFEI9XjD4Q5FW05}X2wo;Y$~g&et(3qe~z)=tBbvr zv0rBF5ypOwvC|uGAco}NVRp!)jQtX0zmHlSYjnNbAoh)neV(z?H366XIAdQ|m+l)F z`$finm$9cAdrMvHk1=+-huqP$bD6OpZV>x=#y-o~Z!`9t4Psx%*v~Wew;1~t#=fC0 z%Rj={&oTBT#{Pt5SJ&v{=9(RZBOBctWq^DFSKp$dg;88v{xoKZMwOjU*Q$K-2d@N|qJk_`_mCjb9n->z<}PtNb41(i*PowMO-Iy%<_h z)gEQTF=N9*B`8(`uj)RuZdf&@b+2JVR2+#z=8V1;NkHT%khm@-kO0VtgPaC3?;sa| zEGtB|_A-zNZt0O%ob|Ox*&edcA8B)F&;0zEDrdH*KzAXML@I z<{8u>>e*>42z{cA;O-jwA{Etrfg2t~l(CiQYtY9{Uu2UWe&?0Q`rcS2Z!Y;?hc#N1 zHEQ`Y)%Z2YoOSx*K9Hy`B}m^3lZ`mY4*^+Xc9vXZ!#7cmy22jX&clGDo$0!|>mb_B zrai0J`HHb~wonS4Sw4G0*bnR>XzijNx@7~wXK3YO)1RV6ee)dr) zMyX71Sy+th1Hr08+vhNFX`diXrwWMXt)%I1|Y$B3r zA#abaXUAn0vFZL*X&-fEzw<0w?;u@|+Uq+i+I(si%j?m7@88a;mleEDlo2mgTUzd-r-x@7o9zg>C>|B|;iH$B7JLj?v% zFC0jfAae~?;0OI)rW-KbYS-Kp#b1h*?lG+Dq4`Jtp2$5<-{?0r^nS1PLS_knd6Q@c z3Dz)!oZqBpkn^k_-KYQXfIb~Xo1=gD;69Zyq*o7XaHIS5x8I}t^alF$yP=zVP@jGQ zt&n~C{j5DCO?^r|Df{%V$o1JleM)o6gZh;EUG`}^tAhaQ)BgZ>kbU}(KzNg=PcN;Z zPrILbaG%oE3V8=$(!P5L&v4f_0_LFm4PB3D@d+R!_(VR7Ndm`9KwAD>_Iu5&K#gVl zrWjGo`P0aLr(YqNHaAfQ>)MdL{intpM~z!TF{u~%D)p>e56OHQy0;45Nrqx3ml4_W zD*dJB0;-P=yO*M~cpxf!C;y?KVs^iG#NaV%u2ggPbv<|MsNVS)I?IviqUX;mL`Pbp z#_@3MI~n^m#@@o%KhPldZpMC5n>>C;T z9AjT*?C)q0`v%5-fwA9V?04;o>|2U;k1_UH#(tZz(_3j85ouc(`+3Ix7GwYG2C=Va z?B^Ie&6nova4CBjcrS68VP8T%*Kz}|;k0}}-08!ERkJHVQ2#~H@n%5={%_TOOF#3`?#!{#Ydn;pq8?K_fWyM&x7TsGI`vt~+2Nrcavup1f*lCsI z_Pf~$H2uD8=L?n7o?+}a8T+~hvEO0rry2VV#(ocJ`GYLK7Ts?%_EU^~k+J{J2C=`z z*iSO{>x}(R8^pfE*k>5~HO79WLF~5}`w7N=m9ft?i2WvGpJMC_jD5C2>^B&Dz}T-a z_K!7)eUY&j8T)0%o^BBPb;h1$?3Wn(!3MEkW9(_hKF`>9HHiHxV^1;mi;Vr*2C*+N z_7TQD$Jifl5Ia4w&Y8cqA7$(p7(2b6yb*E!GGjl?*k>90*BiusiLnnecG?Mc?9;W_ zAoh929%t<582gtR#D0;n4>I<%jQwJR*y+iMj#ansW$b4d`?&_OUtsKgjQuoYKiMGm zS;ih??57xe&>;5njD06#KgrlX*dX?EjJ=z&&oK7A4Prmb*gF~f3C7;pAoeqiy`8a7 zG4^K~#D1EwZ(-~KWB-l@v7ch>n;CnNvA=EBxi}U1d<*@JME><(Y3<~BN%1x!dEaRi z2pzAxGPtXW-k7pM+#RZA{tPmmtv#w9D)kSl6h$Oi&$@Txs)u3+SEgJpCX)V$Q_tg& zp+mNZK5bP9)gkMNF_{BEwy0|*@;wL{FCngUVaZH-jg@>KpJp7c52BRb?U6O-fao=m zM1BFtC4976{3;N=BQ0ev0Ew9UtUNr1FPSSw3Nf!uVs zmVv|^CzZqHK5+$VGLZjFc$@8CK^d@-mPSe6+gH z0hw`-KLVn28?rneZJ#ehX&_gfnqLC4(ReSF zKPT#mhDyBx1cN(-{27p_Q)-FofsAd>H-X5v*J+D2KZZL19rjH?W>60jROm&=e*{8@ zZS#);Sr5e4{Nq3_JM|=iOgZf-0dd>&F(9#LOz#LA9v4r>vo-$;WagZjKMQ0h*sZsG z2?!mwh1VEz(?LAMmNH7TIOFs-WTJ-4^D24V%y&%w7Dii)9zw5IcG5misoN|p`!*o7 z!)a|e2;{n{nc8|72sMf7koEYio@pRO$A-TMB<&!dRHe{zJarR~3yWYwt?Kw4$OKNQ zD?nz=sKlEH5NhEGjy1llYPMRuNr+R=TR`;H6RE}j0b)lSHRSsr#~;V%w*$Fg*hyv= z5IvjAdVUJXU3|2?oTGY-w@|5%0NLQQ=QNN7Q%dNCZa(!YSw;8YuR(^U4C`ZaKy>~r z*%yG&Vf*wi81nysY=Mlerv*1>+%oJ`eiIOVJy+J;p>E)?HNOBP3RyZYWzs-mj$V^M zXjEEj{5%lL?u};hso2&IR1s?PuRZxDfK!KE8~q# zmhftp$keOasx%Yjlf`NI)E8~%MW+;%UlK?x#Ptmz_l(6bQ{xp_e(A8OnM(Z&m2&*& z-5UrGxA|!Y!MhF%8JxfD)YIB;K+Omh?~j04rJbx^1zkB1i$ET{V8PR{j1u}Ujaggopb*dh)voqqF5h_wBg(ivrVPYUHujxLe8lMDmDQdli=D0*ChRazm6={X6wb&MvikcjW z>UkfKIfs1!$RN&G_9PJbYZPj;=g~V=_6^f~VP(pYA!RM{5g^^hVmKA~B_Mh?p5*XI zJ|I^OyI01oK`aM&1u{n=YinKvV&^z|S4$=zjGc4(VhJ*5z-}Yt9U%JJmSq1nJS*-n zKFX2nO(x6qG`86q3X(0Ly ztx{$V$X=(OKL&EtDYXdXl7svYAmm_HueS-oVG(+e?ORUGEkHIy#zy`h0+KQ^Udb1x zU*}kU4`l8b8R8hCdYtwofMgw{2t>XIoO+p#p98YRk@*!Ml($%4odx3NqF)4}@2sY= zOj#6G98L@W95Q=N&EB{l`1y%Q(UJM@kg=J$jL*kKoU`nANCxeZ(GTl_e2Qi?%ojEu zz72s{V-2xxN|z$?X;E6!cj8%teW-`@mbyPjh%J>VXA6^lDebgy4`k$Tsi+>WoEgt2 zvXO`*GYlCzY%iyPEZUlLa_sDNN_`kIcBM(>e-_AnQ;Lw6S8JhL5(u_GRyaSnQPR;+Kp$%(AeVZRQUtdSx1uLGg^!g4h~NjM#_s`zDDll&U`y8$x8PCd`7Qr27c0J-O| z4*@yvlu83>b+njL_1N}&0tkjhsD+;g5(Q#M%4Jo`vcCZ&?y!Fq2#t3+25D4gyyIeC zwxjYJte!_ebkec>Mj)q5n`I7(Y{!`y+aWVzWI!5;0a7IZT8Z5J$5Yo6i!&+l8DggYUKBcLvNdxBJzmFoa;hVMmcW#n$ww@mZ zLWf1Vft+;Mj{w=}v@i{XVy~SGehx^Vy1Rz>B9Tu4(Qg%@h!o(VsFkdI7A4v&WPTem zbXfM+fViu+F9W&awC7D$>K_^MuBR|pI;FlB$O)qbwTJQ_`HV!}o@XKBw&!^u7oB8Xfaz1`h=Z{v#y+kRIANR}pYbHNd(4P~dqa}Yrf6Hd_rjSzurNF8(RTsje zd_PDgKat30QgM*vkn5E8Ci1DQUy68m38a_w=xwJFyl+0A823|&Vo~A6qBlB(N>w4f(-AKb66zZqSoY z4g2MwEmJNf+P1dKC)l?Mqmg|^D|lNxX7X|&TM2xxQp!?ww4iHCVzvmtT5Q{j-FpTS zZ=zK8ONBy^^2^J%}u&2)(DEAifdDzoWMLYtj&UEvb$8sp(eQOH0`!j zGWP6nAxLC*O$UB?$j^gU*JJU6e$vlOggL~ycp`bs4{DWCXLvb`fS^()-?2POg-jto zJYDqNbAy@uvBAW&U)qlO5p>LV(p|&?K}Ey3>Xe+W3VD$$A(p2K-gve!n#g*1 z(Mkz+4MQ~N0HWC|gD`QN#xx>A79BL9W-e^FL6h+bDu@>%R|rHQ%S!VASTqp;ss0v zcv-Q~Z94DaO{79u+E6ET6+~JpD9B=ZBYV(!X|YlwQ}!`~2WdDddE_C?8vF3IpT24- z7^4E*h}ieI#PfJf}!$1kzFkqDKBtWEEz{?6(#OcYdPH99E!SFF6Rb{nDRh20D zv=rclyy3wi+Ls)~yb=k&hxs{T#?M1NPt0wIRs%WYUAq!x-!__^g7|J+Wr_DIOICm1 zHBBSQG?}JOCAqs$!fYWY6zvH1Y%fA9xw2Dv|CCSdgH*iVG!DQ(d4D0V`*k4STPc+= z5QKzf_VbmThctx-27bF^` z9Ogx=*gZ@tFf}}40%MM@ZwYx4(v8SfvNVC}ubGZf{gKY-&&9&zcKf~9zP+tudsinC zVeBlxEv&2T7w$oEHdtsBTrDuO^JqFE9z(q{T^^$R)R@p z)k;=Bzal+FOnUH+XoU0Bsfd?NlmidVt{?yk8RDptq3MLOftoleRwZ9cwib7;JVEbG zN8cxr9HjgrV!3$!5{#-&h0dT){D7u8Jfz7;r)i3S&Co!D(G#4=qiR%(TSHQriBx8r zUhUUh_*Zbbi)2uRTtxTp@006eS}m(D?lRdEi}*H?R<(6)-@Xkl1k03h0fhp%$UZ)h z!Jx|+5r%? z>U$CtNv(DZIWLjSrLq*Y#aATd;wCL#d zQdEIdYFFEzM2!RGzFoaTgXk+-J@-$=X#NmqhO=cf9T`c*x4I3$TV>MSi+G%YL#uRy zMC5|2#t9E2rC1h;o@%lt0mClrp&Z00l#V93<@FEM5Ssnz!Y}UMlv{lGME8);eVPeu z8_yrb;=eY3TuJk3s_OS1`S@f_g7zQhqO5KU~;{2_{39k8SHf1$lo` zT&_mSRij&E^%+~e(khWFkIQXlt*5b*E+Vf`qJ^WGaa{B)t4T>(1=EFxH4-K4XoEX$ zC(9ikMleQgraUDw4G|n@y@}kXAR?@=ySzm5;_E_JA8{t1)6d&_+eGxXP3Wuau zNQ$ye>~^AGD2`#55$EvB+v;ABx3j5sjr#$GPGO-Ak&&$&D|LX@P6+!K!=CHOaDpDx zje=!W4vu(?J-#x96=e`RM6e&8hhw>Yt!_&;;#k4qj#iZi6q96VeGV*Cy;?+2TwqAs zq@Os}1`Ag2uwqslE3{P^P5NT7+HhVuZ_;(qsdTeUP>6LPqL|?^T+m}i;NHH0{d->Y z2KEmP_Y4ktef_%*?eX^Y4Danfcu==roedCbOQWoo$4Iiq^R$mZ5~v{Tt1ptT(zNT#CI4U{ zky7(r$c@!iD6LoZq$o^?iihMr{Qx>b79Qvsc6FvCBeZ3*vWJ>rr!RBbYzD0`(~wx3 zsVxD7GIu&cNW|@X@D!TSO*9(!#bpI-)rfSqi^7VR$YTT2>viUKH3&wrzi;O3T4|Y> zzCG-jdI9!fQ4LKJGOh{3=*>L6rkTv-=}Lu{E%xSMYg}THgWI$a{U&#hlika{VYXov<6{FwZQe$C^wAH zAj2N43P}|8oM|63v+($8$3(tGZ7LLHUIUXU2?{x(SO7!TYMG=L8G)O3!MB`QN(y51 z(7lu)YuU`ywHEl;;ItMOGl$R|P7}}ulFR_<8HQLJhX#2#XA=d~E#7E@JJqUngGrE) zluh`xvMEuExZPA4U){{3Jw)CZD~w%x1|}oOsZaK6QN?|k?YKeCx|MF9YbJFo7_^}P zgJDjqB7CE<5Sp{lHh7Fk_*IXge}JvL>J(a5b%Km!l>O!%&t8a=Y&Fc(V8VFFE*`wpjJvy>cHCiN7vemL`# z0Rd}QV^J@>CudVq6P*zV=r#w{Xv#-u;*$2jAY&_CHK+?&1gvB+2rc+UncB9Xy-i$j zR`sqpKkM*6kxXW>P(X^6C>N-0FHCp`)kWG~tltrjbX_pekVvxWQcq7At15BPN91qr zOvUqEnhGe6%ZWtlZ1dIXV4ojK7bX$!!K~W}j}r5MX{YvIHBGP7vT*vZ#!`|l*ijl~ zdtApv6G%w_32nJjaPwI>5?wjLrj||V(5-q>75$>`CH4kT$x3T6otbfSS7&9WuXR5> zXnh(=*J|f|x+2OFRvqCo++=7QJe*cx>6$=7>5XL*<8oCe+W6o_vq>Y}xN4_Ew9HJB zdSQbW$|(}5!m)C24BI!fDHD$A;b|-!(&Wzxb#7=!WO$JXr$FAwbrdS;+hf#dvK!ge zGqsRrxs4jYI)_OQ;I4uMc2M+mt-OpbB{{1m>zLtCRCB$*@{%6C>tsd|Z}s`go!8|M zt)1Yin?t>tgF$bjX(y}79#+|t((5ee(wex3T&7oY_>#@4az?%-gtVD11&7wO4nk8O rwvbX0Jql~BFl&xOgfVB^O)q-bMuDCkRGw-*M;dmeiAtVTzoq&AsK-TY diff --git a/src/github.com/getlantern/go-igdman/binaries/windows/upnpc b/src/github.com/getlantern/go-igdman/binaries/windows/upnpc deleted file mode 100644 index 912a5c4f896e3f87371c8c2500b34cd0fb0eabad..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 148704 zcmc$HeP9&T)%R?&AqyDcIVlYHh0$Q7~U-L8%Q$H3(|7SZ7_TQEU>TvhVMA@9buSNc+6+A1|$$ znS0MU_ndRjIrrQupO57BBhX_m?WU6m4WD8F(kN{5o|80^S6O=$yAnFEcWEC=@<{MUj1$Q|!9B;SA# z{Nti11+wt-tV|&n3M4EMh=YIjMLsNcC^HAk+w{N7FUnAE9hP2l{Cj7eL&-Z%RsIr( zQcuRd;oq3REz1L_8~Zo>AwzBWkDZYAZ=o`C;h39m4BUvan_1q0{~(^S7yqUG^C`s* zW0pw3v13uuiT^Ife{ZA#;nt@t^j*Mu{PUcHKgD2>9pUcJDCqgd+_ZEl;aY~^&%*xo zEa$(Fvan&yZL(dVL+Da*qk?qP{t5odubIsv(R>K?l!JYn_D{eC7KwHXSPtC^xJ$nd zcR`61WI5p;wc&in!ucj&aA7GSl+~x=&(o-9XH7m9&NKOfu_Xjkc9E|()Uz+HI}Y5q zaRgJoBwU9Lcl~kTF8;QF8_&O;s3-hQ$HEm)zF>T@fZIsD5eT-f+O_-FlQo}w7Jj{{=U<~#7`as1iX zvSgB?d#pR>qUDJN9X`boxTB;&YspWt1#C8N%?G9UGu3rQZW%bM*-HKxJIuAb3x?D! zSLapN^bU3eF5@LbjeH-CYR`v(JXF1B0UnH>^x&bSA+kr^&=9*4CFY&vuI_f9Vg;^a z6&u!81b|RP1l^JdJBe^QN~-I$Lq!`ykRe*(^(YV-S67a_I`eSd#KMg^kOY+Taj#c+ z-PUiPRg_I0JZUXO%_c-i>AR|=LI2=+2AVn7npK-;>2GR>Rv!Mt)5X^NwT}AAOJ3aa;*pmedC8NPd|tGJoyIuPDP3x$CIgnWk@jEGWz2ON6PH8z z@to3jH9P=S;Mc-PkN^Wty|YvO)9@$ILy?ByI~$+IP04<($DxKlL2roXNP`;o5iQFJ zx!6adSO6WwV`RS?&OrUfT^?Z*`P3Aks4*wX*&ZJgZQ3EXH4essf`yBHN+LG^zQDw$ zC#YvYdC))MXJ7=EeFyZOL2WeaA+W@rH)wC=B|GD%NVSId1d1a&17|%?j;FU)2sfLcM3J6|crE01fV|`*hO-AZ82~dfFezRku{_tseyRE`OUt^*3!&I(*7T z(U<-@z14I^7#no|eL6Je{0l_wGA6R`b^m&G-3&BbvR^-HyOrU5gkX3489lz-p_h5B zJ-9Wduh*Rq8tzB5W{1Ag>jH>A&Fi!tLEVG}b-|s6|31xf8o~8Z=KwUO=;PRcb!HV5 z@F)~uH!Ns|KZs6zK`0O19T|2skw6!W0HU>%;4}sHaU`ELXwMarorH^ZKOiFeqge!E z7psw@UnLUv3PXw=#%*<-p5smA&XgS-`vHn1G#ezfJW0(>YLh@M_B()-G{inbYfw^k zofZERG#NOzFJ8H$S?oDdur9?IqqVqWzx@)RpuSH0tI|K1bL}j6 zwK1-Oh6Qu$gbls{`=f<#1D4*LEX}=DsD7Gcf77E7lT4os3_ahgR~=03(GI!vs8My0 z<%P0b6mD|Dh$4x=Fjf>S6fNy2o&xR5msf$?Z%QeWHbDNRG-LOq-et%0XcimhznAzYwt`_#1|U%Y`L#oN8wGa_f~erC zZ6k#PS8ma8v6OgcbDh+e`DbSq6!WIJVHD`;%{7NOluF>QjDHPCVYdyF5T=P*%a}W zr}q&zM4f2j0TR53O`K^6lE8P{jXi}r5OrDSpq`q;znZ8MfzR6bl%kB5@R2Xci1-Wn ztu+$%J&EhIJ_Mv0`JBA0lsuY|9zKDvQBH5RRtve&-A?bn$Ei> zX+4N4!z6yqk;^8l%AMn0dh{NLqVFi#)7||N15pY4_QKUz#i3E*mo!r<^E(qHX%z#jriJDz zJjjmaI>x%PwZru3dqcgq1}_Y)a0G%yp%oc{;JKj{nTvx3p%u5>HZTLkqKSVQnlgRYLJApt-`kVT`!<*IcukhUJJY7K|Lb^lnNV?~M zzFxJ?wAjC^0LB zW>DI8AXP^PjJ&XQO2#-LC+GreN~RekV)XKohQphIBG93?`GYeI|K8B}3j$eS@q%(= zdYkDy-3ad0qk3B**wuH za87~*i_C~6L32bj2zcE@`JRoUzz76N>>or%yf8P|@B(gJhO`v{mxEYKqKP*paYvi6 zD$lqKso0OqnKzr$tj*d0Mu=igb_9m%O>4!&q}s`e_&<#4 zd94|j8dp0pa12>HD7-U}?VDUXH4#5-&ddOMtIu)4S`~<>L7rC0s!xES`SV=yd(4?m z8>ZEl5p4BkUb1#TxFL`|c?yXiHvJYm?I75P?G?76SCOaumO3mTJI{U#e*xiv)Y1ur zzLSB2{e?bixrC+~_)%p4inG)$0)omDIAguSQhs*6u;%9F(+qzB&|S=45jJeKBP`p! zhPG@Hs79108-hY(xp0$l4=kOetQiFK#2eR?G{jGXIY?Sg>y!(@WK>km)O(VNsW8t` z00U2XM=7Zo1UQ&@5bs4ZusASGai9&`bZapW5XLPmZ(25;x5$6$_9XvVW z!W|QXz(9x=Ws;G=5a*xL*&^qE;!>Kf*++7d?^8^mVpZ6pZE6ycpo4~I~ zA@@E&5cT3r!LTc)VkCw~WAH?-iYA{g0CD}z!+!{rM!Mh!EIU;R56LspR3uVqEb_A!ZzlILAheMiv1P7|f<7f|o?@GoWj3C`R$M za0G@*QlxuW5kHhfvD8Qw$O9#xm=TXn!IyD$bQ_gUpm?0* z35_F`2o(z^A{LNfjrc1pLiCI1s~w`Rav}{Y&g|=!>2|k3L`FmF?Or5Pl};oaAP~>= z#lsZgC!5Hs3q|Se+U+|<+!{yn{aeK7$ks0WMw>Xc@r7tS#+4?nfM~eVO6sY4H4?&K zdW7gUttT-{7cvIsN>-)B>D=|xif}<%C^cd8bpkEC2}$c2E8=dt08RdLts$Sj1^1S! zbz(|j6U<#NR113vRD7ebbC1#VQjkd_!EkUjrt1yRY8nmjpun9=_B_wINjJuRJ<^V5 zgTtcYN{5a5-K>m8EL4bs$N}6*RF`4$!N{q_;$3(-s)bVB;3klxZ6k{Ediade^;|YK zMl{xBZg2w#qatMl87yUI^WD8~Vc0grQ#FunQoT@7HAC5D$pDorUeXP^}>-=n<+Vej#;1gCvC|?9CjnH9%kn zPmwrOeG-QqVqWVg*&lldlYDKP=pg+IHM|Lrn59-@g@oWsowN!=w1HrW2d7o=2>A(K zCP6}F1C-!JMnq6w%4r|KNiGTg>B9otBS8qRh9{yG{ncaOa+~U2s*K~Uw}<}DXlMK!B~#)0m1ub zzf4$=x6m`)GGRg9A|~Y4On8=^j*EQ9>1~j{_g`V3)Q3G@r0RB7-pPzjaKJ#0`S&+x zPNu(;YTnUh^MO@P&esuzh8lUS2|WalYL9=cwdBl8E@*Hi)bHV9M$l!fVn4~59+G^0 zipMmE1jrB08dp~58E{ZPytuzs|Y7iT&O{IWcUwqVf+ph z>r>o#MUtH32#yzUF=Z|m0m1QWn7tY0&M4Xe11Q)g3S7~04&$Qa52C~!EtlyGU>+1D zo@luYm?*gyCDC$`MyF(-W%{2n7u0Kq0#cmza2OV zTkcYVgS1t9Gu21|DU^%&4>J&w3jU!KG4~k{X9gr*Pk0I0uP%=PuOT?x27MTy00`AP zVS&)`%lI4jn*Mf4wSme2sO;&%Fec!(#QsXT{hsGTxSDlgbVF7cIhyWo!Ky!+d*kq9 zSz(&Rn*u~{J^UCdf-U0d@M9<9eI?#W^yj!5ETYvRHpg)Q#LxN$4sU}LfZZD(0}YE_ z#@fOkj59R_XJ<)sUD z1V6BsQ|6)oCZV;=PdcVB=`z?HOcE9%{3Gf=NP^ItutG70xJlY;rC40C|axHxRA+03@dI*eMI*@{(sSf6eh<*5n+Eh%x6eful{8+v7KV&X= zltUjENh#tuyzu8V<2*3THb3K70RjGka_bfnf`F~ocL~;6vM27UNB1VQS1>sW*$c`i zV91$uT!xsG9AOhfhG?++NP}NrDDD`wXHGC@~5!Pzct*f>ltF*mzBir{e8jcF&5kw^`G0U`@t)%?@{@zN3DzOl4tA^f5<98kug1_`@?uuJ{Y-h zHdv>RV4iUnicSXwmk-aFA33R@N08aJPPt5pXSNPNew?EO&WRvcLRbhY|{&0#Yz&TvOAEy8sx2-;q9>5#P{A;!_%ONEC?o6}lKDN=$ zVyD+uGpAP8I1r#s4*?|Jnb)+iD`b=s>KCJL%^?bx-a%^kb(9>_EBisd&*zWrmGXb} z>lL(%29NEPl8a=ooQrC5{HZO-A5jiL&PrDS^*RMFUZ_`F{X)IOODbTQ#5;ik#)1MB z;0B~n07Xp;(=~^LajxPLZPGpy!6A_@+d9wvx^-p_IFTME9D*L2q;+CU|7V{bkU&(0 zQwDl2mj4Vq=Xk9=@JOl70AcdF5mkIHmCrCkYaOAdhw)~c28kunq(LSE=b|Vd?>PF* z%*}?ZOMW66fU$7^r|A}8QT7xrXOg%uNHl&jzyO2EV}IMqM~f%6t$lS;wSPhub&PGL zn-#J_X3Ht>M*`T05qEu)YquJCQ*b6Hyk=FuAW%i=ZFhz(=h&uaz4cK)LqpDW97Eet zEDdcNc%-!7w^chuWPH-lIGAx{qM^NgKMhU&MnfAa@lIf9uYv+QZxdREHsV>rfNEO4 zW^cmR7UUSg0#1qN!oC;>)G%lBTrr#?N<1jxyIeBQVH(nNt;@=%K*~CbgM`Yki zm*qq&T@SIQl1Xs1((?o!qLq2|EW05;T3N6|)FS`Li&l<$OVk#9ATGrpipzLMHu1gn zYw)Q0{rTFeQQ}=E_;8;j>c-aJC+kM(m1PJKP~ow$;M*~dDSB&AWymXqW`sY)m)a2_ zEh`vt0n~;L$N>;#O?vjjD2MqKnA49J+VD!rx^5i|H|Yn|d?87py`8A|U-ZDwQ$28> z-2>rN5B&HzJ@8AA|NqqkXZ^Q5@a%_n51d4eY%%Q~h&|QkEoq(bOT6!3C)^LX^iIed z^Pf85@37|hWa3;z*3b(FK?@!CEqa#WFG7`zv4x}AasabPj-{=>EZKiZ+eIdO8@T|t z1Hr|A?mrQ+IsShP>hv2%S~6mL3v*iQW3*`ZRWpaw`C^sRT@GH8UUQdQFL!dJD;K_l zX)nD-U&?vnv37mKKZRDKuxm(qBZ#Njbx`CVcKU5q7D-{s$U)Msq2iZOF6{anhwQtJ zbh`%1)g*=XK1IcU)Qh$XD?EJLn5Tw^*!G;oD`L%8P>Ec;JKSGaoa$OlARkq#*o|VU zh7As2+`TMKSIgWYv>=kWZep>FF!~J$Jb8Bzu`>Vo0pZ*a(gVUMw3MbeByMT8ICM0m zh18j3C#g6{e;>+E91t#Fo31#Zp+mcRV&z=e@LLspW*%*Gl+7yIyfWlYc2i<`I2(JRqloSd`fqqA4Hw1+Oyu?kS ziopjpO%l~^RK60T11 zIx5BMsB~W6y_eFCBCpgEheG0=mcsL<@VvyEY0LOKf#+@Y%@BBE>;&F>qmsHQPT>_3 zFDd2^1zvHh4+#g_6Js9melPJ(kYrQ?k(^x$NE*&Nf>6J-UZh^ILz&duri}CpUBqyP z_Q(a>b#LouqNz#ziud{@SeQUTImc%5-}@FgfN#wQ2b5ty?H?R{fN~h(NZ7_%GO6sB zaH0!;a}O}2U8RHv;uAz{IMH0@HXyQzNq~eqA1AdEE*vZ{R^{7rb6hwFF2!-;3|tu< z)$lNJmxH@(+>r?vHR2TOAl6p$Co`<{G2=*|vZ8XRz_`IQ%N{Vw#i~wu&hZ1_$PW5@ zP; z6L{a?LAMCJuX)g~Q+P!w4-%2BZ*VoKkue-yVPBjnrr8ozYyE(&Eq2?(YBNU)pBy@UBF#Wf zA~N`LF?>eL^F=aVUU0e#-c+7bpNlKAaJ?KWuc@JBG)j}{%h!jNt#8Y*7OoOhtrxYV zv0*$_tS9mK^(6e4=SZd8FKYL~u!b8|1++=5AsAKdVg$+>3i-b7x1R&|#D4pyyQQji zKpuY>PMa>$Lv80(!(W1B4pDg9h&yNi`b|ZzNhj38GY1gFT7{c22y6lV*X91r*;4Lb zfJ1iOEUFz5rU0Ds`MdHNi$p_(lzMAm2v&mz+G>b9@!-~btlwcuYE1X&4n#h;-f8`U z&s8~k28kqRG_Rtu6Dz8=Mk;C{ApZ+R<;z5`Kn?TzFFA=EOJn5Z8bV9+JX_Q;?B(H( z4B5d>80cSXP^PS)oass5Gika_OZvhruJqhbaFO&qz`M$PF`q1WOgsof{km0p_xI}$ zEIJ&gKTbMJ_D43kN>g1O%AvY~Z(iq`9zyOnQs9t_d@h2a3B{_CsDrFb%t?(Zub#mU zK3af=5H249+JC8Oyz@g!{U?XeZ}|7P%J<{HW(h3p7ovo=%BaqOhutl>OVfBZ8JdSC zQRd3R1M5B@zfp#y8`n_EXf}HzI51l2jN>MrsV~DYBa*XzC=jvImEIwh7=Q|ph|4~~ zSf7ucvD}hqrRW_}_1aW#@M8IZTVuh5y9+JZ5d{kahsaW8(eX#JdHecxyCB# z2-%UBqIC-C7$`c$ilUr8AoE3$gV7o}$jw_#Lde0g1xC_qHb{&UtOHyF#D41lXR&c~ zZlj>s7usnMUk~l6d1U%h6nVDYBokQHZ$V0=`9hFp1o1(XXfd`9r=s$yEU}ZUufG}b zwx=ak0kII$f5LdmnUd?lXo}4zlfv~VKe6p!y((P+Fr)&Kf|WO*;`r8`KJSqOoQF2t z3|Z4e&!Fgk0FkI7aFm)%#n)Z%yw{ za9{5Pgc@Fq+cmSa-Y@H)29s)dA)n9CdVg8}zIdKV&{uJ*_5LcxWn8T{QNL1Djl&bZ zvI&R>zPqYlFW`>Ga_~^odp+8%A0t{Bgn~6^)%5<9P$!F`Zg5gxfZLkhf1@EgVd){|5zYuBqv5W>Hk2|AIwl*7P>As7@3i zg;nYw6J(lD8ed$~`!Z`Cpb_|f{RgO7`Q7@Vc&h2$Nq`wOy?Y5@65w(Qz>mi3=koEA z`Z8QrUQ~alfPanfBWilzAV4DlPOINcfRpMw1i+i92xQee+>;csTSRU=#Fi1WDvWP| z?Kf8oT!;UlZo%Z%&m~+MkIMs$q-P^4yUoZ-E;Dkw4)@-NCd>;?eTl#&U8Z}&TI^{L zl$0$9oUa}A1xDff4boufCygA?s;wCJJL`hw$Ux<@;X?~Zh_CsK1=i>Vha&q|k26*s zO85`0&A-&Vt4%)=Ix=wC+0PFG%48e_W42qIVV7^iVj^m){2J(q303|DnV6FyzgKFZK~v(&X1*#Yke=shzcb*|6KqeEM&wpr^I(@ zcR3wFt_wIj&=`7+{$c$OfQ^&&Ox>fkc*I5wY?FdpB2doJ4pqRS@SV)&nLbS04!t;o zm(Ewk<#WJbqYwIr+o-UTxtA>XJM3>|u5&|SEfun#?44{zCIbCX!=s-}HWjoSKg8Zd z=ZUS++>=sss2F@-*J_u=xO{%jAl)qO;d9K!XsChnoeu2I~Z zq6C`p*q^EjKX_620e7^Y(`U#bDhVbIw*%dK@nksz;BEQ~Y$`B?%Rq2(K48ctq};Lq zzp5AXu(i4WHsgnFib-Hl4BQ4ncX#EdLS|dAf z3xS@-B^r5@5BL|2yqLP%%sUc_Jd`S1pDKGiRrU<-_%9lHAXQdx-(hPm?jT}n@?Co} zC_+y036U@^VOZBfuMjoT0C08PBurSeZGwmzxgRED2p-VKs4k6=3qA4#{w|#)3{=R) zj=z72u+P(sRLQ?lVhAZ?KY=?N+lVF=p>HFhBx$O~e3tAQCY#Zt{Dw@zn>QqIn1iW7 zLw#)F!PrKuweIZDks-lLLo2f#gYdCa@LGJbRJwr;t-cb48AE~<=FCjHq!cBYgUqQ; z)o)TlUHpxo9Xc`yJ9f`7Op=_eHDrX!h7D5v5dkCq;^U_ncLdrj7(xTO&PqY8&~=yr=hYDmjuV^Z%Os6t?)R?3W8@&F5N)DH8FFELvPn# zFQ4!*pI1gjl2A4<@J{>#V}p=1=k!qTkU&eQcxM>c zY+EVjr`S_q(txZNe#E{p#6$3u%x6iEd8UDKJwhvrUzgmC@E78{v7c1n1Sd;q+6||| zY~f`>0Q(jJA$F=kSr3q=_!}Q;3+c=&8xkB0nb;pIKZ-lc1_eHanEOh)VkbeHQjMdf zhPR3S7p!GID>UCIZBjxV-YnIPBRjUSDWpQrB8HR-eW~kihox%UglDJ`&JeV1j}j_) zcId_7q&y@zuv`MKR`ETiEF6UO7DuzWZ3h61XNiz0&6vVuc|}wIgRP^F|uh3hN7;UOOkznyr+_pDh~_$g`VP*L8ulwUSoZpx{C1 zXGp5U@LxhmRwvE=*pla+sPDgrb)dNil)r5 zr|G*LuVYn8w8ib|RF^K;lB$bc31`u^(d3lXqb1v!8yNW{KcfX~=>`I*(?!s+t>9q- zWs2@DeVDv1om=`a!6c$Ot@(H&9Jxb8rEm2KbpwRzi&0ne2}!8060D?t_o5OX7*0^1d+|J) zpt-C~?=+re=QaM*SvFAbSvFAJ-e6V?Xp0Zhb`;3_-|G=VOpbM6GashS7$=e$1vc*K zQFY5_HHW65l;gL#7oc(~iqThmRVm+5THpPgVPCDi0fwZla^pp)8r}?xlb@ZMk%L4O ze?ur`&WTr=`i3?XbFfV0K9S5m4N4^uQd#vr(6zJbEud~hC>Es2lfwpLm-tZqbAXkIkM??S z$5>^Lb#BBf`LQHxGq$(c6VK z>|8s3jw2d>lA4xDx%D|2YfUBNGxg4RMoB~3cNg|HV}1b;%*JPBry_EZ)7wBCXjbC; zv{=0<@Q=`hTZ8X}?!u?*?V-Ey>H40~UHEi;7xuZEb2Fcx1chRl{GZT|Gv}$1(-;mw zWh6>TB?c;dULc>b8vdrF>))$x@V}0U$n~LBuPcGMrO~Cc#h%8iLTelsn#&x)L7_Dn zk( z_6TO?%cffccZxO_W8d{wAL}sj@)fpgJw9aMG%8vI{K82h_-1^$;}Td=u%wy>%+1;j z8EakU)or2Pfy>T9hU}}peb}ICeOR@+eQLs-J*W+3c#OXVgqc9d(Tih$0V;X9gzZ5w zZMVs1n>W4H+Kv(^Jc_;i%!IlE&eGO9i}aopi^t*cCg6ZI(N6p-z4Jt{7pGwHJ=od- znD>+oTy{FJ$?fe51aLrrQ_Koa8*bwV$oKeu`@ijN-5ztn7VXetOoZ&0v`mBjPmAfR zn5;e}bttmBpK_BhRPqW{k2%!;PW#;SF+pX=`bgs25?n`BHWEa0g zUWJ|Zax-Eevz6Nd^334x&<LW9kO|7`4MCKqk>Bjdf@lsdk##+ zE*Fii6yXae7s<&UPHr$(xr}VR(v^w1GWNw`G5rRYIVDlrtZMC;3z+5Tq9t=E46Tpd zyV&-gNw_KM74J1Ckmk zhGW9}F2h?w+~KnzkSN({RJzvk^sT^jSYco)ax!&8GmZ|HNtiU&NOa6Pf1Z%W9M{^6vWbCF0{zZmlN0^}6RHk^vn2;(K>(|p8kc?)A6Qy- zP`&3CJcA^dM}27g#9-_NK?9nAH+F}5PhEDhy6N?$Lw%(}Ny|PETVg^-z7@zW=?Wb= zJ9vd%quz5GXyK%`Ij&0v1?Enk0{Wo2?30)S<>HWxMrv(CQ+RivG`v4B4lgpNOqNjU zJqM_u8Lq!Lc(O;kc|~{V$f?VA3T9r9YyWWIG&KB;Z!zXz*DT&Y!kuB4u(t!SRJnQr zg}_?4mV)GMPwa01VY873V6?u{R$(PUG=q+Yte0FG7&=+@7-bk{8o)0F)6K@ zlLHl=<7gDkzIF3s*ZYzU&FdpcHPyfIw9x9tgE%_ z#--}mRdKPHwcf5fP1cPtMgPGnbG5{pt!u!Qdexhl;_jwRcv2mTF+`k6V{cBFpMj2C zg~MEOK6|QK>z&yeVa}}JRGLYcmF&fR;9OIbsay7dCD%i279YBkJr0zN67o16jC;>o zKp@mcKoNrH0m>1y02wJN5nJ*lJ>21wSbGCk0iN(NBePw%orN~q2<9%JnK>?|#2eah zZ{2$%h{~_ZZZ$+TKKm6_m``C}elXuK*_KGcQA5}iB~ z#kkDorO&CbHkf8#>(L|zZ4R|l7Yh427fty1{D64Y%PRsra|ct$=^ojo`mCvZkLJ;r z&eY3i_w!f~FG6V0?wW>G09vTI)XDx}GjzX$H?WPs^~PPZA#V!+tP(V%H<|bl6GJNd z(1%j2a*~A&05_J-!~utquGY!rO5hCGn0ZA-y)?6^{x`jm;$~DRacAq~3LN!@wa$!a zxfH!zh#oDU28uAm)Q7&>p{Y`jSZXc1#mA-A{o>NOT3kLSe3XBbsINj^rt+d!?Zv2# zs3#X)5wxxM`+e_>s90VB0Z$?K_k;Urxx_CQ`281Te~9|jf-Ki!v4Vn#2TLl(r;A+y zELmXp-E_ApKCfj=wl-f6m0pV$jEnU))!!U%N9bT?2>VEkEWoQ6Uh~DZx~{qo{V{4I zkG>^8Yn%+ubOmg^xSPT`Mb2qm3Pw^;-vJasHuBh9qD_?r`8XR^O#N`>$G=Xa!duLG zAF%aiJc)0t&I7bKY!?OjtUe6|c0=MMUaJ8zXf30#INMwYAks+Wwu5C9&PyJ|+jl-N zKnh5w1j|zP=g#@~+_}4*GH-Ns_!My{>j=DVsjf@3i4vTA#4meuSqmk`v=%o`9>y`A z&_|vzyx?7*qJ5Eog7*j1M9#zFIqtxDq`^daexI1i0$iYSx4LmW&elYKXCH2^BmHO=3+RvW^m5Y6)9jk3{N2Yyf6Z64c2I&R{MYF^M1kidi0>f|? zZD0b-Lg3FsD=!p>@TT?){tbMH^P>62B?E^HH#=ov@L%cBw0CaPaZ*d*%Y|oQ+!f#{ z{=4eBW9KHi1T9Ca4^q1?n_95D1AMO7~e|u;9!Vzu%7SGAf#FhF_E-ksR zvp_NDd-?KMC=5p8JV~xLp;c=XngV_S5@GSeHl2+!9Nlcq06=_58g+XftGA+=vW<^I z4G1Xf;%LUm-HfM_{l*o}(odHSGJfpJoZ%{cZAlO(CTmUZ(&pd?9KIe#H^~Kwx5?Ys zdB$+!HU2ZhaTu=<o8%^ZgeO1FLhw4 zB{)pWB2$i}ucLo@oPm!fhJY6Mht}f?ykq#=Gsh*#`A{yb8_nR*IzhEoP{kXv;GYw@ zK0H8c0ceeI*29?Y;A|F#Qo)npg=SbuH}xgK?gW?^jh)^Clv&kymTt1~A@B!|v+ZNW zlksaBj>snGV945$4b?b(IJg=crxctfZruZgM1^Q5kf)4~K=~%hQ9sr@NjaZ?FmF)T z{fa0(gVl9aptX_3%;`;(ZX9nvgz#WYEW^_aJ{DoK@c96KfxtKpR~#385Cu3cqUH-0 zF1_3sY@joKq9{Jaz#D4Bo~jo0xmhj~lLa4klX%oHEllezP{ThGH!isi6sFD-VcV#M zh0F)-Q(8o0HuX48v(cJe#?ML1yoY}?XZ7%O$92HKaTF3x7d1=v2)irUA8A-KB>pta zYr=5$`Krf6hnQva%(2@bpyKG{DHefu%;~$5mLq0maKC=Wll-=Lhwwyd)Nt109@8_P zErIvcyVC6EsGWGbh5M@vLrvetn9%1xsEyW}pPr-UK;lX!xS7uXe8;HjFp9%zBHC!&uV0=G{5885Ro^2B%mmgx&zc-xFLEYX4Usrtww zS}4}QBw6%7p?88TD-vz>Pzo%Hh)qs8UTuf*De)I44o3sQU#F2Gr`C4lvmAj6LFR6d zVIjENLO3EOCHXnv;u}Ri(pMuWtYpo-Y4C!@YLs$K;CAq1U5>XTu^Vy6z?t;#e2}h( zw29oJC9trGPt(rEF}(2P@^x;F~FW zH%ri@V|_hdUt7|}9^LqiP)z^O(?X?t)`e2U>J-4`g(n~cfCX1dweIzVk|##EPng;*`VVwRAuA5eTB zur~=2+Tw2=bG|zHgTTU)S3xIB@{t(@huHd)rZ3VL!FH&5`DqZ>+?`r3~LyUQL&DEgPKr5fdB(-jYuX#a5iUdd5m? z3iyZ1ez=i8CSumf_!`O)VfOn2%=sC4k$(k;#-kYTTd^iSs`TTf=fX$D$!&OnM#r&! ziYYBRmi&^gd3vY#IR)rTOd(x;yku)FE>5&0AKMX_!ABfg^1$%O$NBuj zC~CcjN4TLpr#bP_-E<< zH>V`Q@u#l`po6@?KoQM*>rOz>FNH^@ru5$@rx0T#$m6cjhrPHFB?#bADXyx3>g8xWEjkXKQO1>vjk1h z@6Vo2r3J3l;@^%fWEp>)0{HPZ#z$(4c+bssKxyGu>BA7(qegb)HuOcY8rgvx^|>hy zt>fLYxoY_DXz7Jw{E0Cdu!S}(k0G*L3~g0lD7QP9hKp!_y)n(pDK_VpIZPA_fYsd& zp}XIT<=|e6&xx@K=>>X`*IF#;Rq#H5d%W^!#CjHR55lNT|L7USx)cAp~H=|6v!_+vqrWRJloUUD*AAZVD! z(wL<;a`6!}dDIu+IvZCnu5)o6h3owNi!h_D@D}a+;8*WlUBWan7d!2XmR)CA|-Ppl+UHSa4S_|bgtt@_DW2`HnJq4#bUmIKKk^r#L5iP=~O zpY2_UD;EsLG2owN`GS(etqfCG$=98T;wgra%BDTB5%GU{*3-seF0jr4#S?& zsyPz_fj-N%=0mMznlSokxeFMH_&u8C;I3pFp7XOb_~3`Jn*dce2g~x4+)`#CO;b{u zRe_`=BPmI6M1OiqkEMqJXbj?YitlRxpndEJ{wuB3)u$!d8QULy&4(P^;GaqE|76Eg zIetKU(MfKKh4<&TIn9;cA+2zg^Px+(_CY~Om-<}(h1x&f9T>08|29*gqnW`&=A6vJ zChH6!A<0R`17LT*%w>i^E-8#ADN>2oODpJp*$3?gR8|(GDt|=~JsSU6a*up7)_=6+ zp0Ct!2;l0LnK{+S(W{JdkA4gGvZ!3N*xiH8b1k5O{S*iLP8)Q=PsF$3KSCCY4j*fd z&F<4$KH>~}+qh+Kaz+D{@ztQ^VDL-+UXoq*FU)o0uiM0}3t&PfUVOm9;X>kg1Dpp5 z<1+p4!wsx8lSPZ%G4g)3jy?3{o>&F+qi&g%6aP%)Lsk0AbM!Z_)nCJ?jT0;o1d5F- zUFy0DxNqre>ir3DQuwKUr3>M>_A@-d3rcsW=7%hAjO;{>y6&HN;KJBqAZamth0D_W z+fiB<*}3{m4m8hlfJGG%0&Xm>bhQjn!)KwCW49Q`S%$qD@1pE+pBgy{#Ee<^;hfbc z1AL@1fEfqM)bMM7Fw4R1wri`ZsvxghUB~Gx$2ax4Q|mcc;V0Av2rW0krM6(A57Sh` zScyRbF7V<{+9vuu%@LE{ zb%nT+h#DS&J3&Yd=it_ylCd?(QTInABnWH04t3qUh@yQ}BeYR!e?BkL)uIiiFhTr@Bb zvvrKl%#|L3!=`m$UqCzu0>IPEAHgj2rHJR896oXyM^T@MjnAA*8E`5v3}30|pV&1t z9!YwiwFep^&iB)BFy9of%Q>DE>Hcx3@hO_CdTEm%)WZBqHDt_8=1oj?jw{&!NHHHGijNk#7f9>h;!O(ka^eeGa*lvJ2 ze*0x$50+Hvuh^5b0DIr@s|{E2#{{|Mgpr8}Ij(M86n*+ZYswVJ*-%_N;2U79EW}C! zyJ`e&{q;au>GTfFwfyZ}K6r0_wYD7Io2%~_?eBQ7@uM>xZCXbroCNJn9(1BV;09%_~ifXS8~ZJm-R4*t7zRfjwS z4mv^YT%)R^u-DN9H;C+kjjp~zcmslqFj-@k8yjM3Uw~Z9tjihq0<-DaTWUsqF(0voe8DdNlY+8q(@B((E5^ zk<+Tye3%?5nE#z6sE&?54){(HlDa>#qnzW7mU&bZPI$r$CHK(l&J zt5R&Pam0R&2P4=KTZF5fj>+G5twNxfqyPO{v93Amh3{2YSJRY{Q0Y62m0n+RTDGG* z&h)hL$cV^u>C&b( zbMW~-*iOJv^Tm&G>L0-vfo#R-&XqV_&&?&sCat5O<`qUjZHHf<LM7dBz%RQ&fwuD8R-&rSnp;%ig5h7ufNT`&n$Ivkh{HDv0QqhjAj z`$(?8JPC`@+GQL=1E;9lG5^6N6>ksKpEv1(O#DS8%b$z*Cc{^S2w%&WU=;a(iC$#O z`sHCr(-*y314Vt&i@Rv~8f!o<7;mY-x=b=2Wdk*?!M>8=s2m1K(ET|{P{Hpp@piZv zNqT|&|IGLMpMmcHqV7={b=7bO$ZAKwT6sHjl-4yji=iPx-$c(^YbPdib+=mkG73eA z?$tkKnErQvcUnCyInJ!4c8(3x-6vB<5vIjhcq!?h2l^sq=8SL@$o7(O5r;d}w)CMu zh0uar){Old8rE)iJL0cMH%RJN#QSzs7IJuv&4i^0eWvvNI%0JEu{x02>-z5UC8mSbqp6^%i`O@@8d)R2h5wyni_QDpu7x}Y_ zu>&hR7(KKjKg2Jl4gAb>zD%=G!#@VP_Fe(@fMBET^aJtX_!%noIkde;ee&q*pL8`A zsQzx%->V-P_-SCc{u#{tthdZ7ibF?ASMSxDzCEbwK<&&#d>8VkQhb9dj+Wv+;~RLC z__{`D7dt2m8y&Cm@y~d4G=oHGd#jHT9`UI3T{YZ{-S9DCu8s_b}Rk}`rLgSO%ds}p6DZjv5-lDxgw!n z-dGqlmnCA?0!{lQ6MW*gE1rW4FcE*d)|}B=j+h@jSX+KHHWDyq^JZkq0weFGJ|AS zxwm_z&!%NJa=DAwPo`6m}n z)X3wo1$+6$hRagJ+!j?`^L}ED8Xit}33x}DcRL!u&Ps0)@&>IJKjY04YG~#7B@%#R zm36%SHpaCa{O6MX{;Bq!T8jFMNTUkb#%hszRJk$mxYQ?(IvYO`?_&?s9R-aqo)Ed97{i9&uzS==-C-_G_ZY=V;CM@#isNr6uuf|(e_@VkzSE*=^qc1{cUSUr+Qbpz=YNQ>g$)yf;-6NDu<`>Dh ze2}pwePV=sikW#A{tKz$Wx$a7d#hf|lb!*5jK|5=TLet^$$gC`b6~~bwFvuu*eH-y3wO9 zOw4Mhfopa1R}Kd?DVBgy<9=Qhgkb=#!rdS#Vx0D#jB#JZvT30-2^fgpGq6()w}DM; zQm9=Ba$9LJWKwT)bRp*ir=P~Q!(wfHOh5-=|IGqKzU8-~|JnIkV{vQ<#iM_q9;?l+ zWv6ucF>AwnZeck1wqKR;0r2K5M{DL7Euk#S(vCXr%roaEs0F=!_a`XC)3Q#KFN@=o zSp4V{y#)kgPvWM!&Ym1gwMY0OUvwfQP$OsHFDo#a=R`j_wJXF4-R!NmkXdOv=31wT zXC~XDF`8xsM#_aJ8Gn*UpU02sZ(1yaB&B-{l;Q?cq3z>P5O)a z+#JXA!sp)wRY4`ZC-@3}k*bf2$dAFKtsfZ0&0356>`A0u+))>|{5b6_Rt_-e(*r&q z1vlbc3x|5od5CaEu_g>*ver!VP7P6JtcGT$+B*}Hvm^sC4!8Jv-%uW8fdg!D&1Eb; z&_asHqAdMBo6GA_qVLAg0UH`GFJ%2_Uq|wYkr$9>$5x;b8ILpw<`f1(OVQsI?ejL&d$Af$z;Z&p z7pdW=z(dl0Y;%e|10q-t4Gx1o=se;*Rd^5>u@!{(Uc1f3&imlkZ@8rkJ-04SOiB^_i>>$ICW_t zB1#9fxzeza;egz*p>8?bJMt8fMzLV8vJ*Tg}(<8J;~FyWcnC~Q7E6|YN9K+erV_R}#EhCBYGoWy#hWUqf#Hog>X+9qnd@)S7#z#CoS~fREQiGBuHZ) zh%AnkqUX_hGsO`};Cv<vJ4yH~dZoZ`RNsucO_+Xuu+XIa4itW##8wV{6A75Is+8 z$pe?iehz-@em}H0jUIy8$wFf$e$;Tn z9FKbc8}JBGiriOg$ibTp4DROS1iA?tZ0yKzM9u4S9PP;5M;Vu)tPDmn-&<3x? z#YhRfe8P{O=FK}}zBeCN53V`1U+nBawIG8<^$rIn>!X0<(XaY)>F*&)nK2&waxX>K z6zQ!{MQP*GbB#N{#IK8uK!7Wb50>*w?g<)%YRp|r8<%hc7hkX~1pmeQauG>DlrPp6 z>gbsT_yT}K$!0Lc36tq}V1iwQ0PR8N$@z`sW2~Kzwc<4tzr(od%aT2XJ5GCRG*~2b<8i9?m}ZlFo$9@=K%ZoI zY;q$8&DGxjwi0f`*^=?1yyQ`Xf77#h$;Kxd>b;MGGfX?4&cU{5nGPZ<6l+HdRu2`E zK-hSb1B=+*dXCrX#;zcc5)-1Aad<*wPnKDBFYs7mPS4R_!SI$R_3eTaXid)2sD8zl zOFxBVd4;cFRVMC{`r;&N8=MH!jL8Y3tOonH4yoHJHhAVcTH>@^bpy3V8{+UAINIM z-~AwUU`RXe-f3LTV+H2Qk`7U_Z>9Hob;~sG_0PIF8J@py5w>o@9dW&W-^cI9)O%Yo z0l`eavGKi}Of-+Y-FpgDIF%{{M*gx<;Kuv5^RK>K@qJg`zMb#J-fma#nF?iLw~*IC zXaFNAPMwctrz!>Y4E{m-e~~!5lxf%1Cl*1zu8Y&>bk%4 z=?U+n0Ks;1yF3%Wn1!!&)OD92x3y!eKk z>be^TgTj%ac-?hYlfDCGix3LH@=WU}2Tk0dm&(xVb-=|^FV}|<2m=M;y_$MC?zMj~ z1dk025lIhX0MmxC*x4E8Nvi1Vv4bnTUN!O;`NRQs5s2|KIs629V9-8`J#ami0QWTj zx~RReJ?l&K8%?8T5rd=;AL^;$QsRT@eGQ->QVT%i>stJ{58iR_%W|S?4vhWlcwE@w z;Jqx_6bI$&_17_UJp&6s0(szOFS^jSgSoT=(Bihfxp*~B(|IShZ)a`BelSKq-`CiF zekWMkw{w5&?S1OK*SLjXi}+@v5m<}ln~!~2p93g?R{}4ulqjUw-Z!n(jI?|eLd&FGQbzO@>SR|!LD$jSUrLV=TGZ}#Uh(u z_ZZ>}44no{TSXqqTbL{jmS#Jf<{a~Z%)W->84yZGDk4B!*y=BW4c10_gV^tSVD1_jvR{r{w^g#~Nac#cn~ z!h2bQ1!fS5bisbxhx9Qa8rI%Nsoq|K^+sl&?6N!%CS_W0G4F9LD!|p8i`OqDs1dX5 zF~bl9@j2bOm|-A4z~5 zG~LqOs(Cj6`eI90ojTt;9s>a* zkpp26{}o%WgCV@H!Y!t9XJGyNRNmt}${Ectj`4;3TTEWSun#*#rh;?@CvjszG}5)Y z2vQ*paax1$CKtQAojPJv)Ovzs#g5KAs{mFhH1jh4`U*SM$d~9*n-S|8K!Ukx*c}J$ zVSoTJ(6IO>mL*BSplKf%M`Z1RE*5V$|Q(-z01Ki@ih-Ne! z%CkAjP}fbtlU);e3CxfJ_=H0U%W#5GMTacw;B`_PP7=1(A2t%B5W2m~AtQp_#cBZp55;f%HHOxJpAOq6k{^y{S0LEf$bF_9qM> z(vg59%({em#%7?vO#0b3x=-nD2bMQ>24jJEe}Yk~5bKUWp2lXn_rb}1G4Ayg_4;m6 z!g}E+v0tGEjC+%zun5m$aE_f#od3h#w*W>}T>Z~JfRKbFN_ePIuNE{Y2?+)y5j0C4 zBoLA{4?soNkX@2!UhX3Sr4kKMwlOVMt=8K5sJ8a2|JJr@t<@Gp!P;z4CH3!eF`&Vw1ixL{OCjGl{_vjdH`*{D*w z>O{Ve=PFq8&{@N?*zI}fI+q^Bk+aDojvMpzhz*21u09c4no6(q71$ywKMP}UM3RBQ zQ8L71o3~&H6+;1FAco$;WUwXj5++0}#&!&KL!q!HDHowPxI=pd24un61&oOI9 z;Z7W^^LYMyr`OLYw$;mL3Njnq+uRE-QsHFP8(9_v8y$KPjz##%p}!IgSBz%mm)K+g zN?sVl=1*{dhPYt|F3M3b^bD52$Tc}q2IGNN!WVLIj241aut)~G!qH9*>;EjpxnV{< z2W$PtG;=V2?*CDc=oDBn8x2b3qN0K0v(e${!zU(aA@V&sX~f1V6rzEv0IbL)Y=rVf zzLMx!FgzP~p!{sqP480<2ee%PVm2LwY2h19n|Rs>jzR~2p9jP6aE9+5EgVk6JH?y6 z1T{~8$Q=#i5Vpd>l4$UCtbsOXpbqIpXwW6ysTjI~qZ<5yx3*!%!aZ-(*)saVCp+}D zbT@0HVE}on2Hn!Z+Vk}0X>hXOyhxX7po%kPJ*FefD(RadXis@lAaVBaQOX`L``PqO zKOr%X+oaC~HEV;P_0Hj1`swDn=x<&}Q%}G2`YXS_{Nd0;YKCX$Vmu|(Du(tz_>f#S zUWWb~9bm)pb<)*S&(qRB`zmrEj|Db4WYPCx8i}Ew0W9|?;O5ZAN#MEIoI-`O(+n0# zS6dF6q3iJg;gvnmg#tc_IvsK%VZbhcX*dqjB85Y9ls?j2&el+^@&QbH{stPL2q==5 zQ>FWBG)2wQ#i5w_tEZ*+JDeu@x#wwcQ8G}ihfMoTubiUdB=DOdsGCwVDW0c8PrdSM z_)XH?{?+4qwkfWrU+YG9fAf2;i_))o93(5x)G)=r;cSc!(9RF1s`)4Vp~cbg?uB`S zb_EChla)21o7m2W;kLBlVCBOGg>db%`3`QpN36<=ilgb#m1coHOM=h{heFsGP=l%@)7)rq_162LJxKTXi z<55#?I9jLoifA6q!@E>XqnTE|lnJw*zxDLh%C4a?G4w8pTU=sw*OX|beZu|zOJ;in zm0tW`Q9!N5x%PPmy@XMkk^WE#?YY!8u-iR!GkgkAO!sQjOX{V|dQ4cKJq`@Q(qIzT zZ73jjN_l?(_oG*#Ljy3m)H@}@p<6L+NQFz^bPgzDjud`)Px_`X2upv6TRO1TQsN{? z1JpFE2K!C}5%QMO{#|M;v4MZa(?#Lf0CNc zWEJxJy&aCiM+#Y=qD7Y3KXf$EVzr|RE24PqSPFJiJ3jj%3sbLy4}guuW>>c6a}*5K z>wY0=9y*=#rr;-7W~19#^>Vss@&H!{;2(JZpO|am(XDLz>18)mdr3- z-y2uBD}C@YsARCTA1`>GIJn^^dK%7f>I@vM4>*cB2b_`%8g6I7mmD}@aD_9xZTE2D zFVnBN55VwW`0eZfUQ(0(w>^v($GD@pdvE$fsWT?-36~!lIR6mwdwzd9JP}}~4lX&k zErKuY`knnRg{KD{*aMvv*>=D_yo^NdET(AWM7Fb7?g;ns3^aUhzjh1uNnh{&HSoEg zuWy_7yoFNE{kv=jSgErgA`+;Kea0?mc}DO-qkK3r{8@eDL4Q6_hoVUX6&Zu>%)zYB z6#hDpJy4O!*DQl6!&A7Qkc=lVI48i_w^b|L-SgH3+uuol^e48baBSFCe7?x<%~r_c zhB5}GWaB)wz7KF(G(I)U#aBe3;|Gpk=a&cc(2_=X>nLwHkr^B!>QenE3OTo5JB~Hr zOWkt^j^}X+Scw(`5Z$c~u~-$8-uhrM&O`YwR7#e?w1FqN-FRV_1;RW(hUZgQM_s^| zQ;nzhH*wsVrG}r1=ZD;nQ-q*Q(8gbZk&k4K=fMvNDZ()mXy_;E{3)CPDZgmpxm}^8 z2%Y=B4<~M%Gm!P5VCP;6b`CiD7O|uDuv5Z9Wk$7A^s_>S&yYVg6#nb(KMgt`JC5Rv zIJWI|pkt9&v1El*w+B5&EdgivilpEV@x!t}#J&h#$!5ZM=XT)u;=RQpL51O8ZWA=hi{z_OB9u_)dI%`zXGT*SpU%!-KQ%i!T#5;sfQ#I1b|Oq=_;{=ox5g*$1I_`cdS?2!-`elR`y6lE4jlD*{-49n0c_cZe~C}fvo^jQ z=I3q26FeIjL=NVvVfMBpZ8=aLbFT%vj zdPtKw^%B6jw{L4I$~YsZVeKSgC@H@{#|nA)^Wf%P>?ZUAEZ}g6JS!(Iyr#}4SH&5G zh28izBP;g&FlE0Mf)j2Sj{1Qfyb+mE_?u7TXG3vH#`f@m@SEW$2c0LJC4bXNOTT?9 z-VbvqSD{Nb0HUxsh@y5FKW(s>TPo8BQ#Xg7F5Jb*Bybc6$li&3SoW>X!pD2w8C*i7 z8H3LI5#j4ln1)*lxzUh`m2Fm_3w}u^cV#jMS`PL9Ie0Fpn@(#3n@nefwpps+uwzSj zC#>N>dN{Iw?VGj^qyx?X%b&^M%`#+x)V$J ztR60cHEd~}j`=ZrAixJ+8krW}g~yPyaGb|*(m>UgLoih1@a!P;4(ilU1D}~`;Z+%Z zPb`$i6C&7Wo%h2ROB-->2tLG0@BbQz-geL)-UTJE9ayxt2_qHTgs%Yn-gaAP^0Nnn zg#%~yzqfWv@a*t@fP#OajpeE2{VQw z?5Q+#EVLaH?7*4w;LqTB`Zx-GmB)hahk{63C(QvcU|og>^zk#`?9al^DOxa?4Y4>Q zPog!DfS(th2lHkf`Y)-(_U4016?TLt1b?qYje3VSo7BuBHL~BND2l_mm5IWZAUX%C z63{gCJ7gKk?1WbV0(J&Zz?5|v>@n)mmHMk>r)qTg-ksxk#|yLd3eY;@dq<`3YV-#& z%y;s=2@JP)wjCU2+cVh0eN_A&SyJJXS5D%1QqLWqRL>nZq8A_n%7cf7XrlimOlwz8 z&fmJzc{Q8Fc*Yq;Zx3c(4UOgCFCM7DAkV~ZBo-v8g9|r@-wy`B*bEKWnAWqxKc599 z&3|urqR#*D2LpU;PY*10@N(zwSDDI~_)hrPfv!Wl|5Es5&nu{RI>u^N*pErmj#X+| z1kK@xzHvl1HwTKtunc$8zdB&poA5zvM&FJHp*?R6{|xH77v~9J(DIwD)B#thRK=y;Vi9Ij)U9? z)t~osFNM3#rQrg#nRgQ;K|lXQSfTXI=io0koyz5c<21O0R4uSI3%kq63a?AWu5RCs z%)v`D2QQaDHOs0gnL+0@h%)eSadG~&D zY;$l*E6y04-8ay1XfSjr{jtaSNPAn~f#h)d#C2F3$pFmwP%a}1?`p{c=2slSh% zj+$pZ89t!bgqK5xc1NyynvG1v?>FF=3$QQQJq`@s9g!t=|7qd@Xm3ml3LC8wH3q&# zm$w?vS=eaF(@h1Q4<$ujz|x)i_8cgXGR6Df@JH}cSahTQSo_&+!$yZ|y@FnHq$KZhL(PkRI}edCuypydnsR*X7bLCP0Z z?1x|VCSI7Sm!b&2Fzc_o{}3LU_Rs8e|TNy@M946XAFDI;R_2rcrMmt6F2>2a}r+Oc^v7b*oU<7 zKJ*rj)-^Bs)9^R*I6Z|j(Q|cXkbHq*(;N)Gf${n;aFp#!f5^e-WnAUqSK)2lf!4=&B_3yn1N1Q8V(dkS`yzaruv46ddL9NK zI@EzbAbRt7i7@2Bt<;Z|`CAqL;k9w!FLw|D!mffSO84A(FL*JqAo3nIUi;sBWHX%J z^s*PjS^Qz_Ou90Xe|S8_jzH|Ch@H}Z?0X`QU&(K2cz6>E$??AshGjLXu7`V7iW4}#Y9KEXggpCSdZbrMV7FvF z)&P2!$ab>77_s?g>|Jn?`kpAj3v%XQLjvQC=M^+!7`P6T}|boAOq__XLE{O;#w zo75@3?yZeW1OomI|PQaQ;}Ii$Gwrh7(GaIOj|iB8!fhmeLLIANe+ zA10UkB0t2Ci&049d_}1l8cZVJkUkDPEwB_X{rm4h_bx{Z5H`=u1M{hINs;+b-@Yd_ zYFI*lY9T6gM~Ybz-B5g_aO(L^T>2(he6CC{2V_O8BTZjO*Ru=KnbfO19`8nHsF}!?Jx=( zLtzzOcRn4gsS582AH-QU)8u%x?d;v)JWT`_;iFDGv0v4Fx@;bMDC~Ip_Z>>1oslzC z>(31LS}KHk_6+&K8+`aGKVIkA@x1|chWrLSUZ=-FJ?_%uHa%|9W3L`xtjDYMc$FU4 z>#L;{rX-)8pBCoUO;29%t$CbUn`0;|x7c)#D^RcIvUv<3rFv z_Wyt$@6+SA^!N=uj_C1gdi=Z|@6zL^^mwZtKdQ$M>+$`1e4ifQrpLF)_|EGvVriIT z-cP-DoCL~YdFPfy`4TAg!P<|2JJCCp2ewwAV(t(@2fqM7m~&ngV2`+W77LtQD|Z<% z{iT;a{#EzhV)2vcUaNgM{`muIqw4xbTwTSe3&$R+TB`I~;LqL38l!v7?{V*BUd(y; zcixEp3|F(CJ2 zI6v`p%SU5-4-b8NaLK?tcAS+xr&Ir;Bsw_htM#BuO~KKyp1N2(X1_u8Mf6>#C{@90o z`%g^Yv;~#?P$Spg4?j8U;O;+$f3^G1;rDm%o%k30ObBPS7ho)sB<%Odi%fhRKfd?+ z{`bN!gtud_D7Ekfe+DQ`LYY4n?g&gMd?Dn(0hBmUGN$Ex94H=pAKtTnKQQ8`v-Al^ zs;B0^bQW#XwF_Z+e#qHjXfE9gdFlQz?A=1}CXWVQ^5;4F4q#4u8%u=u>FJ~X)ZLNr zP*WQX=b_gRGljpft zy>Tx$;A{iyo#Fn?c=i-2{4yqh{^#+I27ap;0Q63dJq$k1TbP}p!TnonYlE6Pncq3% z^|vwFe+my>dJvIsW3fJzg}09|>cl(6LLT-Kkxz`AGfDx7OaaEu{_Bj|`!|@WUNg1H zOl{FqXFW&)(+8JANd~gMKbT4XS`ObYq0;b8HzF5fH1avQ1W(^|GVnNd?_w_CJvuxY z@ZPg>LRX~!=mHyFQ5%pYdk=;}N8zjZ(rMrXn;hyz?Y#%vLum$-Bn`Ls9_+F}q<8rI z-h=al%X$y`EI9i%ym(-c6b}|$J8Rpfm%@W2Fm#6er6$Qb%9{k<0|NEmOXvfQ!^t}( zM>rPBhsHySy$2gZ6Z;-xdB>I2y$8KGEw%TcALkrT+|~CO+pwj7J=@G(`rhcWnwk4hf?T_qJ9q!+ zvizx4#f|<1xjW3<7Zc?2r(jjt1qVjg{24QMLxS8kGxyO1xz%Rw+3%08IS;wUNbNwr zF-((U;Mc~$-@;~tfq#7robRm|@SQR6tugT782G(0@UuR!+T9WZ|6vS#9pFQMfHmrS zOpf?a+n_W+P*1r%4r{V&f}jd!4#@F=RK`F*M!LCOFvW6krVYJ8AMzWihf*P3mC37Y}7w^KhctaOsq1}71Dt!|_!0SC&ji1FB$HcPq{s8jxUmAR@ z1rFKJ&+(w2c4|{SoHxb4^v^v2KEWiVZ{k5guxaU=rX#oaU|o9ud=wt+-y~<9Qv4-L zcglOFlsE`i;$Ra<;Rmqghs6-bw97EKRC(u&GozAYPzk+=Gx9w==kI%r^@~UTgz4(x zSMewOELe02kkiYa>U&H!OP>OsFDs91M46#q%8qoTZ^91`iH&o558@-4FxWJB6SX7% zy+~_`jwxU*(Y4asa z=iqbHb@c4Xb?EDAEMTFCAorL$ry{j>1y%wYc=)Xt##$aNp+ph1V6#NcE1 zF$V`6N^+vR2KyfdU~uqj{Cm^O%*4uchh!6(oIR*G#v^L#XJqW?|1MCNF=J3BcgXT$ zhZ4+=epb(HO^I$tKPyHyYZhTS`5_lSw09c-;hQ)q;(oeLu^d?~nD79DDCHPqhnwZ- z#pytQgCDO*Ruk!fs)38?pkxTzrPRQd{Zwn6Y}F)Xts0Y!qp`@h(7t?6bnrpu=5Li> zk%srb^G(${I8SQu8a6nXSpiPd9xPXJ>bWXT`W-cgkF!AQymm!v=yK2?RiFrM4BW)( zu{b{;zssQeC1lcK?zm(PUVWodX`C0l_-H^f2N%~P!a1&Zs0vA=s+DM~1hCY>tDjfM zNs+hSV$Ia6fuo1-!a_cBGWPz4Paqw4bc1ePN%CJp1y`Vg$d6b;@s;$B=+`}o`h~h0 z+hm`1hSm(o0fXmT)p&#iYBcqvGi&f#s|QO|50>aXz*|-$dvLAUgIv;c&hWQL``Rl& zdpl`=Ed<(0pHgsAKJ*&YS9vMUN67Ch9e53eLIE?x(9QUR&l#jYWJlJONqG1&Z~}H> z@PbI_M8nvB12q|T{x~#^;r5n3s1_||AJaFzp_mI>FC~u$A0VGyjnT)~aI!Ku`U}*? zj3EaMVnW(DuM7-ICFkBI9&`c8T|@&!zU+|{IjeJWU*B%LLvfXw0hDa?z| zzf@&K2gc*Uf?O=5Z<>P1hH{(482uZESn)-qZ#n>5I#8ZD(4B$xvs}#Jh+*!;$3c1Rf z;4aB9zVcy!@jLdzCfC3BS5qN}F2NKwAc-8ji8hR*6MW|@1ANM_g>TZ`nJi_zL0;;B zts)EMWC0pt zalbhlcO`L8fErr!G#|k5&<%>_5;-+VE3AeT2id53`;ks_UJmbwnVFRl`7K&ivvE@7 zuQ+4_kD;a=~{)yPd)|;hHn`7H>8{Dwp z;7C$j=ksND+ zZUJ_Q8Y>%qG1Q4-YSyIwg9fKLKSIt1eP68(S(0E2I2c5Z{0>J*?kj?l!Q-F z?i;v4{{D(!lKKITS{l9z1_k3WAzNKB)a@CX4(eD=XCc{&VQ>kC1}dGb{6c5s9#;DF zK>scbl)*2zU?D`Y64P6Y^iGvyzj#lS$=)kRv z%t5QDGfB54^?*l?<4ICY@H%MG%QI-&V+Yj0e0)VKn+_fiL+o6l~g}9y-A89r$ffNL!!WZ zN=EYnS5)?sCImVO9y|!nN9IJ(*B-8~rT-X*s?h$X1e6(Z6157bD7y%2w#ci0Vqd&? zT^5iAKp*LASMP9L&4c|x28s7GJD;V!!hVn5y(o9joe1^1&3Yk^m} z4C7u13YWA-@|k}Qp3CnY zdX8%6dn>%>JZ{zwHXg!GwZ0!5{=n)h-Un@7?TWM2*o86|A+o0>wU>X zAK5?i0vrb1gcT#b{m0Sh)^pT1FSr$0vVrtY3*3s38>eX2retQBqx8q zD!a7XQ>&LQX=@Awd;uYr_<|*!9UZ==U~6Yb{rWCnB`Va`Hnz6;yt%^4(wL_eX)^=K zEK?V342A-6xC$guW^19YU~9W?(aca_wpP^`h-stD@9*^M6=_;Mu(Uw1(I51AC6JX@ zwRT)u)wtg0U*5QGaci))G3X1JBw4W1&YljI32AG(0z%848OlX^Ic{djJ8hXtYMNE1 zq07KWJ7w#@$BxFfO1I1F_4@*5BU-kPR5o>b(FO0UWHB0Zk>tcme`iOt*642zwfj1P zU`=aBcVkK=c! z)_~^sd0YKZC&)9{skQ25b(Cyx$lpj!TO_-YC(eToR(Fb(buOrnKN#vVDalP1p{|au zCP=uwwWC#~q0s(D|9TAy5!9O6TEX;OExT!!Ha9PCUe4US`~t1MrL(;;pe?3k{a&%8 zlVr36gIz^)<`@;_uJ!wT_%la?DvrzxhSsfZY;SE_pWEqgo|C*5DD9noAG(5MyQDr> zuCm0e5;T>x_?j-&TGyJj zzznYJ^j}J~IZ};S7F!{QTy>~@jn6Ly+}L!fFBs68J6U0{#orlfZjp@lhyD&Ol*YE8 zE79M}$vX6w#FfLu_fQ>_H8|p4E-_^PcWZ&(a7`$(G_Nnvg@JmvIAXBbWYaD zWOu7qsew;hwY*C6cXq}TfJ#(-?OLPqYUapswYIT|{u?So4U!T)Tg#S2%wm5n%nmr0 zdJZ$X=g%^%AA1PaNh<2 zKqqyZ1;|9{UP7m2oGi+vq?JQO^Q*j11#Q%_JJ9nc<-7X4=gg88TA|eY*GnFCGC$bb z5rWO`Sl`pQUNpEn+-R!170g)6>T|V9xGh2C%kt;MHKHSCw>EnTGIk)2dw6 z6rRCDm8G?srW3~84O^OXc54SrmcOXAgST<2qRe0gW@b&AB&xEQ=@m2Qdg)8eoEOMB zo1RwAynu2qq>rIH;7fcRK7T?-&hHC`{2g$=Om8tiFE39(mBsvd^Uj!O)!z~_8fXc{ zwh)qDE2r`J*%!Xq=*lrtgyHqZIKtLoGJPU=>XxZw;Z`bIlsFfn(hW=Y1v3K|!pqfi z&ertg;e2GPV3C%v=p55xVHQ%02RUu%&FRxc(MT+94)oKQOU5i_I?ajJ3TlSa+Zo+} zTwPRgij|8ounGR!h%z9V>yE=LNH8hrE$9qBEJ>rVN0VjpORtYSgL1@bg7N}JD}XUM zm31_(!77$op`D^tcEnE{E;@E9SE{>F3hNN~w?)ZNAOoaXH3bMCyDG2_eKRI0og?}b zl~66zLNJlo#;j*d1v92X#i_UnuA#O{nY$v)M%E=o-EnCL7t#SJLQ{*DGqWifD>6-4 zU9ub9rMruHZV5ak7*VY>)_zKCT4!lmW3%9)OD_dQd*BUeCna;8R{~qt5x>rp3kFPv zvNdIMu@slae?%2Ug64*%jMvPN&=+qPto1F(D-v~bHqqqbor;X5G<2rf7o?fy`pwiz zDn+uG8Ti!9fLM6Wy7o2=Q*D3?)06Xa^G-hJ>`BQB14U&W-M+R??0W#ABTy7rbh6%F zpsB@&Rc0>WfzHM*xl&|ej!!Q!=VUEVo);N|OCMWm{1oMXWaE`?YfXLx=x+B2eDtS?zM~>Th^Ij7A%xSNE^z?@ujM&) zWv<$i3hgwlqQ2fe2NIc-Tv1b3&#_fR22M&=HjDW=9U>^5j(d~`LGoc2qK4rw!7z-PLXO=fw*Ktia@YSrq z{Z6*sAa^&JvV@>82urZvNmC`QQVF*41bjSHX%#iLUE?bxRN+z0xF_oN!xs62t=uzX zGuR=`=O$<%==U|YTbrC#ZbR3oJhVJ&KavGT1F_j=Y?w8PJmS>KB|JUW*b?;Scn|XA zo+r~vtsC2nJmbDZ?%B!GYIYX+vZ&<{mRidz=19+^RNplmvG2*-`0Z1csKvt04<(UJ zkMcK(0a5vb24!U(3KQ_ zm|T<{Yo}I7XCA~FHL{ujTN~}K6KeP{x_TP7xh zc&8OMsxH*T#kSxQRqZ)9=nj&6a1jHq)VKOw#_oTDJZv&_VFT0`lNIZu#DJG$Xko37 zc|)Izlota5DNoELAJAC0{^o#CFs)oZtTFDmDsBt~TRQ!%m%~!(9jxoZ3{|$Sr7?u9 z2d^;HptLn0edG~(P~90cRH3>P9BHB2t`~*^AiFNq)dj^vRfhbj3@cmPyiM43htCsJ zg;6YVt^q{>x6j|+8bqa)9d-VuN;mvaB`0ag^%3Foy8Qme^>X~_%mJQBWMzlU7Ob`e zq$H{~aUKkyRA|oQZLLkg$_{<(s?OJ8LxlM&8rwp?K&|hx5ca^lq6WLrq`R>L^OscO zfW;eY91%^22aFz@PnB40LIhp)l;*+TZ3$uVK5v9WE9VvNO~9emeV6r%K$87_VN5ZzCRu_=kx3lG;xZ`ip74!V_g9}ENKdkv8wQ6 zPXPtN)F33E)8^}F4z`FOw&eqBef}K7_ZLkqp^i(TD9y_MF6i%UEBeT`;{4x_#Ey4=1(w5$vEd=QVm5&RGde0g zFA5fv5bWy)YwJR5n64{vmohHmV06P5PADl#?H`s3c|et_k}Ac4Eu}7DB&`UKKi384 zU{whByT;{K(*V40EDsavM@b`=t2qX1wT{l5CPF49yZw#L?Ttk-5IE{mBNAH>=m^Ft z%>tbbSb1tq+{GaocWF&7QGBsW+;K@UrgOE`AT1WKJb0Sgf}8AF)NX7(<8SuNW>~A{ zS(=uOy++J^i*SS0gE7l$UOe6frm}k3r8Uc4mDRJXY(6^-wKe)%gX^{Iy2>TU6E#@d zuf=YUhQWzvW_r<@6=k*MRW&PTiF!Q4f+k=an-8$L{}^b;M9dBEHO$e~1Y4@v4b`Pa zDIw%iMZ*{ja4SF1+T6is>x~`QTh6Yps;R3(+itj;t=KP4jOEs`gh)LKYcGTfgcgK5 z5S~E5h;8o4>6u@k`9s*s#-=>Cj6!}N9!J1a0@>Ip?$TQD$h!lN+uIwPeK`U3Hiyu( z6|H!t-q?0-h|dx9y(VtJV@GTaw@I}|I16Si6r5Rxvo`86N?9)<Jr3K@F(9z8CO$$Jp#13KRC5I?1-yY$$o z;~$BO^*YAu@rz$57GFc?MqqvS+-T9bB_=(xE!!6@JR@)BVek!{B{!&Y4#eL_=tVei zQ?b~Fa0dcmS0N^T18B-)z&-2U6;uD#&lig>gxEHXG~o~g<`a1DluDiu_ugJCUj2#+ znRgV6y|@=*>p6`jolRfA_PKMu_teD$*`L{Q&cXG!yC;|KKF9gNr@uTk=f;I|&tKBO zd(7qt8Ybjo6x@q|N`wF`@x}T57=%wJ&eoxC>E&k>E5LawF8-W~H*Z(*B?n~OyD3*X z1iOxg;lj1)mp9AU_w%1K);xFE7bA{zSDeZCt{abSM_l}e+w$&0yyb)^9(@sU!71-v znpz@y_nx_ayQ@Upv8R7!L3fFGs=B#-+c!(ZqU$eyZPo8eim!Wc-SOX^QtE#5_blHn3B*KdocjgAYD@L;1V!pEKmBS+IQW@pg`K*C+h@gn$3c z{P&6e{O{_|KRbVXBESD#`F+Cw|7`yMv*Y(;DxY8(_X+6VlmnSM-L}hXg>6HU?YLB@ zbF+=77z>ewu=lqgM(sL|h8W9N@iJg107sOhY4-l)G-pMM{W3%@oUp?B>Jj$fP=gZ0 zz{%T~<`lD$#Oo>|1BbBB<3kizT2jBgbkewG*E+6o_KkC_w#F8eVZ`1^<;+g&_qT)Ar3{&Y;UOH(9n70@EU zmk%rq{7Xrf>L05atDU_l7be4uawU5IHrlQ3A$tY_+bR6hhtXcd3cqsFxW(5v`keO5 zh|CsAe-Pn%;60wG-iPDsEe7u02)BGO8odQ4z==|v_qrrwoINDU(;cC%@fj2Bp$!@1 z?V)uU4tpr**f@C`FkCuuCF~@5%xkPZJ~i~A`VF*^eZ1cm*GKZ5eXJe+FnSy-H1Jm{ zUNXN8VL9?oj?KTw%D)cq8sy6jGNb&bRX%xhA3_)M7sm3YQs?>Xc;2wRmk~Dn`NJq4 zIa%~vZq;`P;9HR&1Bx}fi8Mt2qF8OZaqCR_* zs*pGWy!;DrRxxexfH*Y@hkWNzpeOJDFv{PqRyY{TdYg_N@q8zZ^}ySSLs7nrv{|P? z;}(m?v2>5TWY9kNFe*3U%V<9^j#n$$aXc+Vn1%f75u0sP$nhk(KuqF!5k7wec-H~% z;1S?Gz&Z~ezFqR{WrUvt?>5N5q|eZ;>*B`_d6o*iLL9+lGx3*98mHsi->`Vbx)%T^ z?ZXeF7nr!DIPlTT|y8dkFQv~>hiSTEQ#$N^ezdEDQ-KM@;ymb6%w7&9}{cfBPjlK)A zOj%XwbH?xEdH(=#FHDL?spBTD!TZwqy4ly)fOl1LGdrE;fK@`;r~1ypL%&W@NY}Uk(UYZ?SHj+L)=}!y(}Xd zeI04V8;kGu7c5-zg}>%J=cs5j%dFSJbxasd$84t%#~mGw9+d#!e#ol(qijk9b=(nK zhvQ}&ZN*sSNGolTJ2M)6#w>@q+pvE>jHh+1ddMHvvu8>)dNE>CcXXe@zQXDQ@hT8f zr{bWeSlngG{;{qWgoCK-SF!n}y3YQ>s*5)8MudA&S7$7)@;#b~$yzn!J&N!q@Xj^y z&`;E9*F81j>_y0$7LBrAvk#arF3{(wvHDMZ_REQ~Z~k#IHiIpAe1SZORRH((uu4jh7qoHz0JM7>&-49ovSSXT^_g_UAs9 zIcWr6%j6v7HTpwYJ&&**c-@Fix{dj;)gt?&`hEa)BsoXd;W+59Dna&G^^g|I;Nh9k zXe;7Tw5+zOVgD)+-UV))T`Z%H*e??zR!-unf>PEw4{>lY0kwd?zAKq60#2RA@j6o^myW8oma2Jc{_4lK;E;DPT*5+ zqB<>OHSjeg3lOpZuS86m*{0TxCfO1ej9h2Z&#V9r>)#dL(#2tl-UEn>4gl4G^W_84}dObKH0 zxIr$ZF9zq7ty)O<>Cxzwj1As-!Mk$st|Y~$r%Fi!dDDjA2L4C&mo%~M0^lw~jJAvI zOVXUIqX3}|aCx>5(!`}Mv;cMiVu`ylZOpmRkkKtiK!<_50l0k6f)`(ABK7sl8h zjzNdsjztsOBuzOkGfOKuFfYQNK7%6sK6X75d%@N{kv`*?_T5XI?aV84-+m z&Y(@sENbV3@}s;~0ka3!xHN=P zgk69wLQEc9V|S&c_BqyXhc(%OQR4-eGJFF#x9K?j#JSetO3S#$S(297Hx4Gxlbn_b zi_V6^HyS0c)z~ac%c#~(sVn7@v?Nr8 zfvh3>5JClT^AIasce1p87fKYVry6vn9ypikIM>*#*tbd`%FcnAORY5OR$Z3$uSVI; zD0|w-`d6y@IZk?kb0cu-iBp%B+6`N?1Ukoiu1EJE?@P=BU$2FYPQ8Xa>jTfG*CwO; z+rg?GXmls7w*4Z2V8A7)5}+kuQwE4KamJK4473m@ zqmmTI8Fs*7{^H=JDRsI;W2ICk_Yl#-sPRNyBn_Kz%-b16fKGHmSYzp^fqx_L&(!e) zhr!o?!}{+A{)fazAN%ZOX>R*Bpdf1EqYf1#^v>61B5^PYwCX5}Q`RV4wXZ?j{s3^_ zL_CsbQm@O>F1CL+0n_xcdLN2;&x}UDsF%OiUQQW9Y}jq=g=U$eD@|DloR<-v2ma@D z`~)(}v%3@UsoNEpYwt=xc3Fy?d%1_O;hbpnn<&omx{V{r z7_zD8tZoiktQ+?CI+WXoav{Clk^OysM1Nf=oueSMPtT*C*{*2xR5}rIY@)v|Fdl5j zF8!|99+yB^>~j)uvrDlK;Uq50ST;Mzy~SXnp{bT05%H^-sYoR(Ay)5tMM`WGUaX;DE{}0{>=(w|Xh3D39zeOX5Q|#f_k-`VM!G)A7OX?o zF5vuvI8r9op0~X(&J;)=_FkZMT^f!0OnlISI)lnTDoZI)(=~hvnUPibNWf-eA zq}`MLi!nFa*Cpm4`9ix}g~N7dvOKi75tfYg769%Ayk=~9xgF;uQYV+35BO^oL7dfm zy;&Z8G5k-6$h6?4DfUZaZYfx{{{YH8kK=07%<`kgNwNL)#QoAxejm!+jiZZc>&TZr z`+6!wxl{;%D8K2jUAus@;V^AD<|poBW8$XenD0Wp2fFafOnTe>oI7=&QkO|K6l(OC zD@n0mkO1sTsT+-}_u*x2-(2B!sH`lt=2DJHHS?}inV+wOQ|;D<^q`uh0+wxDfC@d1)@<8V#+Sw zzbv-bjhK09XYWARgfgd@G>qc8+kQVfJkpUz`{cuDu&mVR2d&!mHTvlloEV{v*U>m^;A3GcD?j@bTf z2!~MSNcWRie-i7##eT7`?7w`T410Sy>@8sx2u`%sgV>~3jv?4BeY0+HN{5k@^lbpD zJBGfo_|^+N_O}$c$C~3Kft{#Ipc9oTc5J^Ta1W>|qkU=W#7O8e2==3BdkVC<4nrH9 z*-`bnQrZ$i*Cv3%v~ErSmV04f&6xC&Zw%9~i$*6BQO@HStLkw&A^%aAw~Inj*ShsK zk>$6Et{B)pz_J0`8v}dma+|mXuw9o~WlJ$xYz|oWMxBhG2mCcX?>)q6a3)ScC_tz{ zxCkMLz@NOj1>rt~A0g~Qcpc#bgsE8AoQAL%p%$S9;cA3C5bi~I6ya%vKO!7JNa|L! zoPc;X!a{@!gjEPF2$vU33zuOZxz@Cd>a2)hvWAnZkW1K~Xcdyh?|B1}a%0pS#c zJcI=Z#Ry9gY7x#yScA}p(2dZG@EL>~5$;0x7Q({_k0bmH;YEbK2(KgTLpX#mew|Gm zjgWkxQ-0rA}k4bXa`U^S-i+pYqo8C=N(gKhmTG z-!S8A;wd z;=xHSafO7e#|b3uJlnw)D90)D@|1_0nN#1|bZH4reGB3zh3u91uoT}-wLk6juzQ-Z`rygpFH;!bVCv%=&Wn=`MSi_&U&6)(t+dg z43^`^>FV18=#)GzM0~+HW+mbwr~Z{T%JPeAA%0*$Bw0fI+G&tl-)Yh>&g8NGI4-8c zx2`oPig4HL3-a4|oWdCpXW^b7=i)#*Q6|5!?Cj{45d3T^?%UURaBMTazz6qQanFxB zabm3}$Wy1VDv%HyS+JM;DIk z3$7J!A|3R5LtWU1@`O5MsS}-zYj6UAIMvx0?8Ia7)14S3$brA-#34C2USqyf(NpeR ztJhP3R4CXaDrJn*eVjZ29xET`+8zuuq%L%Vdt{cl)Y%%~(U5-8fmDD8=ZH?EaN-SM z>z!z-5$A${o%qQ^z}IcNnpz;C zhh&P}{2^0%D~~aa<4N!wo2d>GwoRo#&JL#VUx=SD73>VPiRYY>jpBFCZi9hhzq6+) zAZs}`<`hS8pLfu6%VgBYoaQe?zdCJCTqBxzSV=&h&?v6uxhee739(sF5iJNi!ER`2kh}(ramgP>IVj<6N5qGKcETE-4 z*8*q#;SF5yleO?DK=C!>%p6Xt^rH|e-4#`Cm%B2zw2Dh^kqOxUR9IG4TU}Ol#$5S} z9cVinZU3i)_CR-&Kd5@X5dHo*!pge29*dil=D*jKcT}-Sa7IS4c&o*_zvGf(;YRr6 z`ajHpEiRFTum#6aXuWV@KDqv5IKaISY&qj{%D=rm#X`PEAn(*Zid}rq%-6wk55+G2 zgkR29<-|{lh1`qM5mdeZb+nPMJzXs1evnbYC-J`o2fhs|bos+E!TSi1|9>Im=FW-z zAMiKL!S96S$S(-z;M7*!%z=M}(}?G^p0Qy5oTl~7_z9cbI#E)z8q1XCo_YCstK|_Z zNW>qr67+Nz$ir4vufbU>-qmKk3LocC<;WV&n7djvB$iY+Xs$YKZtmOyVe8G4N|y;@ zoi^r_&*@T2B`i==V>y9zLT0E6=H@p2w{U>l$adR!>Au^Y6G9#I(Q#N9RxrZu9490D zgaA(D4B{tP;xn;)YgUL!<7C`6`| z<#gisvqn&3AE(G5O^()e3+8($6s*v^IMX@+a{)cGU2OX)Hj$mHkXzqSUFNAPsVFOL zs49zvxm~sOm98pJZP^k}X_>nW$D&o2oF{BCrRvH&V_@0ivFhAamG!KtPB^R_qilJV zYl&>8uHFTA+-YGfuUWB5jElK1TV7Lpo@aSw-EvobNrguh7;hnzH-M&+&m{D{HF7)cD-mvigSF>N+va0+-h`)OwaSK-g84 z%PZ@}bSn$us$c1<1+BGZ(ma%OQ^by<0333OT~W%+sH zI15Z>RaTdjmX(Ms3knIBEh($@l$N7JnG`^sINr*yao2lXOB%!p7Ra@trm~cL_mtPv zdR(QYwcJy1VI@`drQ(!$*y4KZ z=9u<|B`Yc=yUHs;M0R{uT};-j_^k5s+OjgYIL(5Vt*ZAd$U9@fnVyoGY8ZrSoFRC+ zmA#^@q`s!M^87N7Qav%-%3A`Bz_65t$y3MPV6aq)91DZMhH8T=RW(oxh_iAzbSQT$ ztU9!Z@v5WEiAQt0N|u4Yx)ds_>#9x6ym-v|^W0@sWp#BB1L~_2`SIDLCC{_?Jdb-- zO|6(~Wl|k$K{O05rC3MX0w#zv4ueu&TeDmu6(mFgV{wvZ9foC{m}g-qs~)FrFl7oE zLYQx1Qr=1so>+`C6JnSZEU>cWkZ{*kG?XtEg%((^(=e_$OR}t_L7I;u3rUTNg2m^- ziqalbt^zmDip^g&ci#N5#Jun@i1CtM6o;8VcY!I{v#lK6{;jO6ui&^B=U7>;s+F$u z>OAF`v@pfFfB>Zy#TG(CHB5aKhhmvCD-O2u?-#Pq=Ib4O;EyQ(k@;7Uou zym)z~sI^dZUj_PES}7+$h=!J|&O%XqkeVUtEwCZVb9H7kSXr*pr410I(i^eD%BX^T z#Y){jq?bOzKODBzr|P~Se;q{5BJuZba!hvybrcC&uow<8Su267sN%}wllP13R=V7} zgC_x!ka6^_b*EXmxk<_yPT&zIIhs1#yV`u~G~M6LFad@uJl%xE`N|nik4Kil$P{+X z;la}ed04T>BgXNVN>3N|$Q`G>hMtdizK*{WlAg!kg9sCs(rXsU9uFrI_#5D=N7yG$ z97g6ihxXfI=9R|gCF^;!ktcqPRk{-!-}w7KvSz|U%4a;u!ta}5Rn>t5q1)PWEa<<& zvdY-C;Fs0^hRdrFTI;B*R7<(b&q9A3aL3i{6{qvIRKL5@D>IGTjVEIHZ~vdxcW3EJ zJP8Wn;Y^bKW!sNH0+yyd0_i`1Ix()LwYkN(bBggv_E&AM0BJ%%*#BVL!W4e|$o@y0 z9Z8W?x)MLWil0`p|4CLg5hKgn+Kq>U-d1cFyyM6KmgDDm12Vb8xJ~w&DSsD}%ueY* z{=1IdOnQOvo=W1$q;0>0?WcJ2gzbRi9nhHK%{P-B7PKP9pppV>FLo%61f{F4dRxyBw(;W#HdNYnTLwC# zVD{@p2D)S1BpvlWv{#*+4GcAn7b|!8_;?GQc1&PvesP!92 zOz#3gE6~QY2XS{7z|*!O@gNfN+9gfcx6#@sCalNW8#6XmCxZK*n6PFXf{*PfbJI$0 zjQ#ga*`Js&7{QOpgh^8k6ZV0$Y=%n1goO+kO<1>elavB8c}QYQV|FGUFD!tWuzl#1 z#%%oC4^PFdG-*%4f=s4KOT$aPnZ%kxn>Lj;?M;BD(56kLO`DK}1Z~=NOwgvy#XF)? zY11BJf;R25_(*9gZQ9Y;z?@2(wulMZv{oi))3zcpg*I*4R?yXt7N^ptoey7aDs5UH z68|EX?I@8k{wUkgHb>HNNi&ls)7sjOvLTg1NX9f+l^G%>1F#*tesOx8+Z+wKYsz zm2w{Vd-OPwKbbrOv-2n0!Qo7q0OphwU_nU=kOA#s#QfG< z&?0zAx88A0vd!`4r-P2`?Mod8KmCX!klXA?&CPR6y1MyWeU5#$s~vy3GHIb>^3p{P zZOi!;dCir1Im_l$&bjmUs-#xOFGVi$A8~xqw$u?t>8tElJNh>!t$Np<3@N;cX8srZ z$2s5e!9-ioaqX3FqhpSVOC3E+=Qt)VT%K3$n0mG2Ra>s(%`2~VOkTUlk-W;0mXz!G zgSgtUPmBN`%mZE z|DFD00+rvYjTb9#aIUz)S%LcogbCvMBnjZnDug5nxIXm;C+|LuFkZMN2GjI$C-9yK zym=16D#E)x2u2a6e~VzY!kgbCSVegE8iG-T>4>~ngfjgOf>{M`-b1je;2qydGOEC> zygr4$?5EM^Dx|CBz3Na8(y<*RDX~qDN1ci4JqdUV5o}^5BUWn@4P+NNf^T;i@qj2h zc*%HBrB@s50SY<8_K0Gz0AQo{sG5|pXT&gi2n;~vMItCOe9B{p4w$K=f_(y*kxoS_ z;|CR((f1KDfjz!QBt?&%aedPG%b1vX((TOIfiNvDH%aReSqg!f?1zU4H3&y%j~A1Z zv^kj~Z|c#-%Vr##JyGP(nEEN()H!cPCx0QU=2X3jB<;x1^@i98)df8%vv1eajM)ollmG)}+-`K~bOMfy#u>Mhyg%wSvhfTk3tKWS zwqA+=n3FLn!KY)Ck4}h_@mCd?(LFNhX7mjN$j52OXO$@*=KMd2Sj*^HnQS02Isr~3 z<#iMOejNd-$%ukYW|d0Prl2PgX3E#(MZN+b88@WF*c*AVr)o^NEo$AQb{m3C)G>Mj z!65=0Z)bu60G#Zk)h?-MxXOdN8tTLhuP8CO1=k1odu0%0;Sq!Qj4Kj!QG~^W^ zNSjuBgOllEgbB3kG|IeLj9{5Z-kD|)MVMw+WEHT4OkZl;BcEv=KW0|Rn*f4UCGUC> z3@VuZJc3z-H#Z^}Z7}@>;~s4=eH(&VfHz-3u-f3=y$D7XOmjJ*CIZmSo9~(cRLYwi zD2-JI@Ax*VQ3nv@H5q@;K^QO2l~WtjWYYxRU+=uZ$(tqvq3#AJ)A-(ljf)$c0PsfV z2>>j@yIT=toxot4Cv6#RFwH)hZSdy53;6QBWa{M`8g2be3JDWRWxk3|p1NZfsIuMieA02qTIJ$cChdY{&>; ziswEAf*J2r>3Ty1KmkNvB!YSibI6EL$R9sFttC2Mk8f%H#@*N^_*0gdD}Ha~Y93lwq_*CeLN0*yCnI@!7<= zj9x)NTQYuIrB_Xcn2tvPIffL0O#v=MAU0zP6JV5)*J=2xXjs99sfDm35-h!vKO#99ZAp(|rZJDq zIO%p~ydm*w8J#41AQ{RIp;@b6E08ZQa{ZSGU??M20iqc35vH7`R6Doxel~(WO@)*j zayvm}<3BM?kug*ZP8?Pr+=eE^&OBr|m5->g#kgBI6Crl)p;D1(=(|BX=N=Gl68(?N zJP&$AiQZ5k8D!cD3R2NZ&dizGH~HTJ<}d(1c?Q zxpH>NK#({RpBj;bFb=^XA$Q>~b;H8BU&0L>55AA)>e?Kx~u;qUl3Btu)~0jg`u`eyFd=Rj-L_?qzrkklJm0G5{Z2v6sl zOIVGDU`eMCILw#)L5z6}kc$ypkkx>&h?E7>2`(H&Bgs_qGNmI+u@`fYe{5ViLpo;b zhmnqkl1e(%ztI;tX7<$90tBTq24=3`QU#6xhfOlb$Tnk2r{L7FrIUL}6DRZ-{ur{L z)mE|yb#-(#jU2e*GpIQaVw58e=|tBpfd3#VR_E^mWcpD$J+jF60LhGlJON1IM7?H# za~@hdfZ2s%7cUFdI{W@purglr3|XLYC3n<0@-jvWJzgb?kr+Z4eD)$s@%dp6h*8&G z)UPNcJ^Y2NgQIXLi{N2o!2*;!?U>YX+iQR@WnG4J$PpzS43pN;68a13ID`rKaMH0u zr5>7O@R@B)1?1T{$mxK*qeGMi79lD~Gi1S1)qr$?D@rCBrkgedZRnIQ~`AQtl?*WO#LHG(;G6t*F7Av?l4w44Q z_~T-6J_X1{aS;B(+!-erIEGD7e5Tx=KU#=(**oLU$E}B&F;Z;*542Eg<1gyi14p1^ zJWp8Z*aoEHRoc)o?&!r>fX?=IoFx;m3_&F**rju0thu`mIPaSrBdwPL@)@`VmMpFX zCari3ZuTGAIya~v!KNSm^gf7mT84Jk4#?f7#X>#<$SbGELcR&e{kgG_X8^fpPAufFfV`g{3z-BFde4Z3%miex zAQn;v$bL+X7KJMSdH&2;$R&Wh07GWsTnWgJ3u7U-0P<3i0Wq{!Ns!u`g^iLcpg-32 zacl2hV|3d-4^E7}sJ;7+Kzp~KG%Ik}>Ji1ypoaF|gM3SS<$*FWx(iu>8*iMYb0e4fkA9v_OJ^Y1g%5r80sbTK=ek87%^!tBn)#bmFwHU7$IYJ%xaNvKOJZ8FlH^bD z2>6o)??UmX0)-Rv=cmX~{2^1?S_47&qg{>u0M;-b9N!ee(q%P7z!8_o`eDW4^|b}X zqXv%f=q}q&O$aG}27JD|Sg(fw@hd$1RJCO<9oZn3hIdgg$TtvhbR+pdb>j3tmFqN)|XH$=BNLBPXqiNQ_6Z%?3A6 z%gD>%kHR5;-T=yfFMoOs3ED78CAi3+eMiC{kg0UF7`4QA&KS#l$wu*q-e3=onu=i# z@+N~n!Nt1%#8-h_b6G5D<7BA*LnLyG=g-B&HQBNj?|M(nr%_)~9!yeCEm+!z<=8_#6ey;`6%pwsZ16|nkU#v5wWOGqz%AWM5Xwm)k!|^VRxVxezLd@6-rDGk{0SZbf9`-JKgwnv zg}M}fTARHduP=aa&y>Yf?OqE0Y&}=kmIVAE);i$Ksx>sqQ@Ny+3^}3BfEYYf^^iYY zk&N&GK4u|lZUsUr<96y89H{7$wQ9iKxboDypr{SKZgu%B%sFN zkHR5;_&axKIOh7eb?mki4IO(orWGqGZQT*@rx#mhAEjgSP5yAz>-TlFt&h{O8^E81 z4N6-QjU7^TA8@WTa3q;e0P<2CIzYqF4xzOR7!7LbNPfw_!;&(vm2g0*mHc1(_E^v%Wvyc9_2ZFZ8Q`zqO(IMLQ6G z8NJ|d|9%9{nLMyv;lx`$);OwPqvu>PYK9eh>t_Zh>NOjXd74490V!xfE3$P1GXFJ$ zX0vs#F;f1n*1JZvo;9j<@2J+Fw_4Zbe)(bKZs@#KkD>E1ZRt-d+KgVHzLD3*Hr{oe zXZ=d1W9z&{v!N|9H0yomyU5B*89m+&-S{8uS3#TEud#K0h9Tud&lD7Y&Rl2chHcVF zQ3%7<-E8(9OIUgQa=dqO>;&xP8Z%k~nPTND4=B!CHFDNdrD*wILF@lLvmU!etNy@Y ztU7TxqwN9{$WMoDHU5HqF_*!OZkMlKQEidt+W^OcB<31Dn%KK|qDEP*1lqzX$-{j| zz{A-Pqv9bg8jMKHW$=*CZ`5eQA>ugV&fGu(t}&Y4l6_~tVk*#+M!(>I=<6MFGyXFA z#aT~sEI~ai!G0B-t|(3PEYhI)F_Y#VoD|s9==WNJ|9fbr9inC(?m6s{&>TDhntyK6 z%%enb__;+gyDlz(MkzjPiTSKsY)cj>Fj9Z?b<=d@9C^PISgn%U`WdS#OUNI#GS>5D zIhGI8cNCRl`9@O@X9E&1d_$%$nf$@Y@_e>GfCN08rW+=Y#8)UXy7_>EqkbFrYz1x52vxH zc^P)&?~_H|D4`lpc+J*HisXXXluSt50`-#=9%diu4O3phQS}(Q`ZrTvo(^9Re{H~0 zR>S_d&sUm$IGg$ZyZaXKD2lA@nIu5uBH<#Uav9_zB8JI5AZP*!Bp4u)AX%2RnaoU* zk;%+BGa&(44Tyj)A}T2Eq8kA*3Ti|^R8&-OQKRs!xUw!Py11euvdSVV%Kx6OuI{eX zB!qnP?EgGp?;5(_K2>kksZ*y;Ro8U4rtY;|&n=7v;TGz}%RCT9z-%n+4Z+5Y5;Hwr z2(_^?+amfOk{Sk?I<;OlXc!}7jZ1N;-$R8#K(h>)r+(>*A(UziQrUj1^<2H58v1z; zG9+yr=VBX+bp41=K`FOH)sGeA48plu9#w~;^U!3**;|4GjZdg#Kk$ zEsFBdlj|qvVn6hT2Gx&6%171VxEWOMW_8G9RQmhom-Hh3X+~rw4i6M z!+c$bm3VmCw726aIx59tQU~>SWDRXJ3i);&;TH7bQvC{Fm}>v7Sw^wC8pzCw5sQ9CI2NJJVJ}R zl=Y!l>q${SyHY({D>T1e*ZfMPM3qbj*Zg8#^EKg`aO4PW)+}blku-lUb+6}IZ6QKS zP2_c#y$vt(O1;e3HLI`>f0-S35?YXzIkLy*ZEDo306h$*VLHyGUYlA`uW$?XB3c^p zGqJgV`Hf;AVyEYIuh;92kR)7Tp3tkMzZP|Ga4>t0)Ltayh0JzdW;NB#luAJE1Y$2W z_ltTUTLhUMKz0f;9|4)=4 zq!+y#*Yjqxo-65-N2r!|@OovrSSv-+vs^EchqB@`Xjb;Q~G@_Txj0~p+$W;Lssw#VWi)3YsNc}Qpg zWM-*tf&Q+hN&`|WAh|$x3dnCMm7CitC7TPRK|t;Wa!5cn04Xdpr+N-Zt$@5wsdPlv z{8ec0OVx7nKipbu0H_8nX`Y^OoXuLoEoh!N$=g(54=>qdto1mqP-N4=E$VZt@q zBz{UuM*qZGpT%FwQ9R;0v1|G#R(*;m-lr>i7aSclCdOK;@mDlGuEW}L-s6UmxNt;M zhyAqjP#21|+VGdz6;AZyN=>E&`wY%Bya1pzb?cQFkUo zb}*2YD~6> z-_%elua-(h{sd%}fHVLptTfB)0&-kHJ^@neGt2x;`S{I9H#o4upc%Ooh#hN>YME8` zOd!YMDh*@`5Zw+{nF=5YaEOM?JRmy-WEqgGxn`MlKmzm4$a6qy7ceA7_X$jgWE-b# z_yw`b$p7#WL@$rE55J}V+Zyl3=clJH1rJijTGykqW67q;p~kDNu%FSo{m_1$u0k%{ zZ_rC*ndf&^dP1fp0Zn=jv|(AMX#=H+bR2+87MD>4z67#DK>h=yK}Wc^VL4Mx=@(ke z_BaFAY8HT~c-kbc)#g3zE)2D-$885Iof!w$Sf#G9a(qkIyn7rkm%<0A32a#2yvBIl znGDtaJ@~lE1`*DpRd;StbudlRZmjwXP>OEFgDfiC3jNH#i0h{g8Hnb<^)uhlPehA~ zMO3t6UGw^(l68Yj!+K3d?}IEA)#3(`8Y!ZsF=AJvrdDX9&&6CDtC6b7c%khPs?)U* zQ5ly0sOfR7rp@{1VUQV$|I}Ft70{B2t1JN-kE@-JGL2D7;}JCweA-#{hpcSngb1l_ z!c`VPwSVDXi)B8^!0-*OJAmvH^0}WT8PesV*l=CJta-4D&kkgdUQ)ZbC=c8SpHY42$Y2XO&m8>nu z#>Qi$N+d%4kZlZ#f_}{h_w#zatSf|d0+QvuQm?5sPs~KiQ1$bzu){679p*rrsFvyA zy^>azvgoFRO1yPvI9L)Z($~(;PZ84zA~`p$ewwYAkB`D@*k#l*!ITO&hejN7S>HENhEdKTD8m zg^qCjuzaXI^egT5MqzMvF8W!ELCq+e-DKyHW}D z^*X&geAjEnQB0_*en_S5K(0mh0+PB%(}6CNPH)NAWVAg?^=)E5BC*pLC$iJK1_UI% zR$^~x6Z>I_y+&f+DY4f`?AzPKen?^uOYA!&cAvz)vrX&=CH8>CzFlH>N$h*t#C||x z_e$(rBzAg8FIwHcHnH!Q*efLV28q2;Vn5I(_I(mN`C!4qQ#VQM<0bY(ZDMbf*k?)X z^%DCiiTy~M*!M{6GbMJKnF-oRr_H-!yB}{8`!0#SL}IU#*oR2$r`p86Q(`Zc*w;wx zeI$0vwzl~B9TIz?#7^&m5jEdkVvlbV`xc2kPhwvov7hdsmq#0A657PxAhA<4C)6}` znZ$lVV(;B1_DvFdmc&lKcM!^x{*}aTYZH6D#6DVLUnH>~lGul~iJgA2E7U73Q(~`` z*#9Q6+uOumC$XnW?DHk|Mu|PMP3&tVcDux0BeB0Gv1hf3eYM0+Yq>&Oq=qH-?Gk%l zo7h)M>_a8?fW-ck#9r7Y_GJ>gO=7Q**jGyIC2e9~DzW#G*j*C)of7-3HnA^~*n3Ot zvn2LfiM^st?6nemPl@P%#eYnKF zQ(}*o*c&AF<87+@P>G#(Y-(E7+C5HU-ypG{Y7_e)iG91oZjsnmOYHQ;8;Bt|IF}W2 zo5a3FVn2;s1#P4+j}m(yiM>H$r)L5p`#gy~zD;%SEwOKs*iT686%u~_?0n#?x~ljh2Mj0X~lEBK{ozeFAF7TQXWl*Wx5XiRpCHYSZT5k zEfZSJ;&qRpLu70zgv<*5ERq1rOdy3km5PLc%o31gKpF&OJ&@xX!b-axhy`1E*b`^| zERvOn^!yjxPEhmbf4H6t08k!y!=84=CD0by8}jusN6<5W)?YgWd8qk}HZm}sQABW} z6>Z_N@wUK*2i40Mneb=O^YpgxIu-oR%i(n^WmP`?k$)q!k)UZKl08$7UqEK1&=#kG z*mx?H^a7}CmVjIiNnJTQt8DEMWlG^D?B4{H*_OUC;9Feg5vFLr4vWgSO}IJ~H_zEz&!#YK-&)!6paS zPYH0QpC$shS6RA#N+pKqb=|3BLOpk6Q0 zLr~N4TF|d4S&wU0CgTM5h%p&-;U))f_xJR=%fEA>Bv-@tTAtU&xJVvAYj-9?-iAI@ zDIU@CHk9ir*zy;s4*mhx>!|z%A{nmew@Y{6U$XXC>kz3tlpvq#g#)1yWcEM{@rQdH2$#P6N&ffihff=-}maQ${fO9xkxmEgj+F!tQo*ZkTp_1 zyiLD3OPiLW%(fTK-lj~3>Xj`OINELcM0eh%`_ZNsqHf|rZTd7y!P>O1R34J1Hl>zi zZTfdIed(Y!r7`7fZA$IV+SD%PK>)Ssc`ygorr!gRi$ra@r4?`d;SM1gs~6cSwXB#A$vlj@4^rz+GUPL588upNp}qK6K>5*OtflZM z9*7pbll_oW(O17SvS2aVSgDQOjeP9pUOlxZ8cUE#r}xim2=}x^jpN+dM@#H`B=!V} z{rV`eXG-k5B=*h{dqI@gQziDD5_`PFo)aZ@yTrajVvm#9M@5N!xWv9)VkZ|NT3vFK z*oR8&TO{_==!hcwkSMValGqz0_EQpjzbLWWB=$`b`w59XAxi9hB=&lV{kX&)6D9WE z68n0I{iwu#!kCf$uY6rkiM>u@KO(WyS81Z*X%i&&H4^(_iT%SUv3Hi(S4-?PUWz@g zF-q+568lPt{h-9YD@yDXBMS9OTOqL@kl43HiJd}Ik$suOzF%TrA0_tFe2&j!3G>_3 zwWn13B=-AT!JdOy0|Nxb8(M6muK;tdj1?05AgS(NiG8i~Oq}8xI*iz+HS7fv`=O>I zTIx`VJtj)*c@q0UiG7g7eiEjlSxd9Nt~GT}kl5Et>_?$d!7|hHTER}UB(dG~l|a4S zj~nBK7Spbf*bhkT@lj$wDzPt<*!N59rx2E(P4lg(`w@wKsl>idV*gi^*bhtWizN0& ziT$l8u^*DyYbEwQ68nxQu^*J!=S%FnB=-6!u^*7wYb5ra5_?^g*!N59VTpZ*#J(^} z?E574fW*FCVy}o2d!xkemDsmP>{Fw}zDHuOkk}g}_OVf7-zBlTB=$`b`>-gn@08eQ zN$m9!d#@<5(;MrA@hfen#J*l)r|*+T!_RM**h?h#I*I+OD6wym*o!50S_u~PlfExX z>m>FpiG8WW9*z?G8i{?h#J)&kzadKOt0neKiM>{0&x;cKN{KyHVxKRur$&i=g~V=` z*lQ&AAyHyqCb18f*uxV0`B7qDDzOih*aH&#NqwG+Tb7Lp^w(lJbB5+lisDqiM#T1= z+JMmUq9}u1P4vZ--sQf zuH!(m1f)HlI*O?V1L3nsmh)&Je8rw2leAP=JkfMG6UZiQpA3@;0V&q*Gh{iCSvWQ7 zUJs;JKwbjEV;j;uUTyF5TiBj$UiU+gp~I-@k3dpWY1Kq+9ejj%PF7O7DAT0}_8Bt^h)Z zQRZuabOvJNd>xSOLOxC)H9~oUK*aJa1d=sGZyi;K^VB!v89CnrnR+4TM}dq6yJ0Oa z1EIqx;T{P&ARr2SO9&|vgnoJiGB%w{QL22{%r~3;7KUq#UP8}jc1%B)YTGOf_7otr z!fEKR07#>rGnKUj2o;I)VEMSEeC7fP2s&H>q(VUM*HWS6c%~Dj~lD84ejEp9E~qIH*f$J^Eu>GrC&+h}F!x(cv1;X9~ z!)3mvoP{123s>PnDilfm4=M(d@EmVb%CSF?EjGhiXpD21d^j8RT$VwQH8eIHscd?T zMEQ&YQZKOQ11Z2AgWU;){ThYJtSIzNl}W`kUKlbV$WUbsFi1fTZ5z+U^8T9Le|K69}r`Vqi?l%eBrXyLR%by%nGm@9`Yy<{%nh}x5K;Q zN^r`0u2Ss`(c9SSwwm>P31sLnba*9@^){|~x_1qbMxmyKl(T@`0EF*sWbE^RtQKVM z1|qi3!$30i5)#*oS}LPnZv$b!4P>o@4)3Z8kSz0K3iiBXth6);`uQ7D&DV2Qlrs7p zhdN#uIUk3Nkq@24(vL837#^~hgbbFD6bZRnLZ$&(t(S*5DuD3k?@VL207(@zwhRdW zLMxN02a+e`^BRzuLaKd0wg|{Sfslb2^*Tui4g;YV*&Y^hP5?3#GKS~B9EeMoQG#w& z_3?t{CqU+?E<+qel#fsz2N17-1c0#bfKw~eaT}1~g3LWYC~h%qwGN0Fi*5zNcUDth zrYH(C4xxm5A(N-)tdzUMZr>bBK#=(uGDc+1{PR53&l&7TNe1O%-VgHvpNmE`j2DJK zJPCn1T^s7WsUm1$Z;RqJ?SOX;<{%%cH>>-VgczwjA+NvM9jp*aH~}*3w^Wpm67rP$ z9A1k>kST@?9Y!m=fb27Ju4H{DPe^qWWQ>_6rN0%(X+0Go%cY#xO2}p)`-N1m3NlJ4 z-Ug}8%4YHhk4$R@}b{-+*DosjBfAjkE3 zDUMQnlM_*;z}^TMuP#IEUjd=@$Fj7D`wFgnX|t7Tg9TN84RPd=|??K=@Zh$RmaEQq(Fhdlx0jtjatA z89EI1=YWW_wl{(75X$p`l2xW^N+H$7K<4YUpz=`s!`_j|%QFlzVtGaa*(BsM z1;`pBii1b0^v`i;3YK{zWXPh7-n|gWXgwcAU2{Z#7g9Y88Ik=-AVc+3bgvOe3H}AB z>F^UEbQn7P0SHBdM(cDMhzJ8owAhb@kQST3J^(VsLaGr!#GJ0top8=1CMK z?5T98BsU0s`8z3}K7*JyHZ+zDgbv0<)`I_Ab_)4Sgp4?X%m7j^$hb&GsKr7co%J%W zz*VBV0?W0IN;iH{=Ps=(R~$iyuiPEtmmXi4pPxHQOM~t?{L1U`>4}6KCH?DabD>CK0@o-|0kL zY8K;Y)8rN<#}f*89dq-c?GV-4ANH4dYP2&Y>RHVs|K<=m`ZKiAi?$2Kz)+X{4XhDts*-BYDX0tqQx9s-Ty$qX}K26Qe~KtbxQN ztlmo?@j8MbchK(-yWAls#dwtguX|dduh8kQM1#2?B4HM#D&PyCYEC$*V2*o^#|gty zCKb6IL1)FJQ2F@EaANw%k(qW;lJrZm1<-I}hTWdh_quBQd@nPFu-o>LfCbe2CMN68P3^ZR_zr`u&w2&6>UlilL3f#70%&|it1 zV6t;*wWZ2q+%5Kp9p15X!|qU#+Xr5rkAY8hJKdf+W)AgUp~E@b9gdVryCbJV4+vL< z$aV}KtqLB$uXt|2E#52e_+}S4=DLHE95rJ-;i(Rk(ny(G1G7c|pI?~ma^c&o{1&bX z5d=;`zr?pqHF<#9zPU1<cis?thw z{*y5 zg!mw071oaDs<+UJ{@ETHNKuTy2%2R@=%$>>o(V?;7g=xWobd3s;fa%OAQKpF}#sJ=swd} z(BTQWF@lFHV5DS`(=cjG!euU9aw#aI3b-z2Bp6pTy?9(+Vj5(%4@2Y3g&MfrN`Ms* zfZNvu;0n-sMx`S-o77BIRcM{wQR*dAcGMIx5S2s;Nrb8!aC=fR)0JSAk0LhYg$M@j z90jgMNI?}&OwX{VXF{~xSB3al(;|NZ3*t#$HGI33@=<2H=Q2x4L`MlHqQhu)Cjlbm z0*Y5PMcl4VPi0CZ5p*A2q)A$CQB6_=-82=D6Dh?7MYJwiigCqa{tok%#EhSZDvCO` z!CU25BJLXN2)T_yOSd3C9#2^cb2Uviy&gN4dXipb8ag$}@%|u23pSu|Lon`+gKH&I z7BbJRaZ~vqRhX+64nTfrvfszsHQzU`Di}mZP$djzx38*FL6|}v1HWAlI)ZZ*AIf%) zp>30Rm_@o2lViMxL8(reCYSJWyjJ`xcqT-f^*}`XRGQ+PgX)$AJc()P=_w@1Z>Ucp zP1n`h4iK_bK?u7-1Pl*K!Z409#UDgP)qs@eson}YT%H=%i_BT6_sYC}hw4dq3JHL7 zV1cD-%Un!N?AC+)Br z{g~@nD+CDz=P2s>p^}rFP1nAr0BuR3Z)DNUo2vZiEnGAhs_>MB`BfMm%sY==kvva+wxWzR6^FQ4HxFROu3%7ss$mgx(C6s+mMTv| zybzUDUK&98r6;+RpVA$E9`IME8P@@OT4HiqdMW~8tThXD!m1@tjOr$?C}m^y88 zaX#khg+;m3a;7L#a|@=7GbZE}ZikCTf|O+X>j_kN1C9XgTvKS6P_2rdz9`pKxr1{H z-9hzTVm_x^9h%%hb(E(ljm6ni2MVPN*wDgafSlqfrWF7+SH34fBZ*XQRZej@D_vgl z+Ug~Oa&?myYK4{(qa{^9dlG|bgs(zfMRDoT-FS}|ft*?*mbD(os+SYo;Q|;cA~Jt4 z3*Nj4Q{uDcp_Nf+;pg<9$8sxL~^*O?r-!h~spgB@jyU6yW=9nMK z89T110BuFH=iHhs8b8!K#oiE#j)RuCHf>A^4dZ?YvmoY5W<+NbHjvO$ohTF#KFg%G9# ziocAs;G9iSI}OsbJfv1hdl;-;X&XOqQ%r@J$sL3yDOsiCMhx$vs?yM0EI(B$SXc>B zl&fdSIyFr_Agz!~zA}ysq2X+VNWPg!ctE;9(snfL5XPv!-ax55(VrigV=AYL&*wyFnX;g zRHH^3s&kIs@!I4c&=`~ZcZ#WWo-8F338UNU<&wvdnXhC?oRAA04WlLB5= zbdSFj=PrLW*4ms7b>8I;Px8B}yl%GGnQhoE%n1MINpb3<=Znxu6L(1UGD%UiiPcWD z3;8juGU6V7dE2xV*mgFpT;=XCxlUC>$!bK_yszXAnj0bXA23_4!rTd3kQWM?)nah? zW32Io$gOA!F}euW!+kI;v8}aj$+|dZaM;nR#Q^~)DVpB{3uUiOBFHaDNMg0yF*^|& zY`VgVQLW6M*hFc}76VNcr-XcZxUM!TZI%i9vy$Oa^zKpY=Y2-Sl}Y)NCrnrJCl?iG z7ZfNtxnrkIP$p#;=jBeF%FD0C@%&QT1j9RNKznGf=}mixj=N1YhHNP8hatid_(Nt7 z0DTmDoU_#dOKSp(0!lHZGaQ7rq!H4l#|W~@eYB2163D=8tJBF=Y1nnMDSv_A;nK!C zlNoDIp?JNT4vMM@k#P}Qr_V=2u*CV<#bTW)$S^ILG;g80v*V9Bjc5j?(1#&)Zl)~> zz?F%^5nLj+@4-@NMAyAhxm$g#fTbEWoJ}XUqBwk5fKQGL{(!oez%A9V50(`inG-up z(3(8fnvDfzx0k#&N&`2UsE%`1oZRUqfdL>VRp_e98YPw>a zgA8l1noAX(7l1O z>YF1^<`6J<)itV^*W`?lRQJws1hmaTD>TI;G;lF}pp!{6U9D65y>M90K-e_lSJOn+ z1+8u3fwPuxv*R;&|8ty9FD42Iu^b^km2Ki2Wvcd&b{yvK@JBo^D5yvcvguJzb_la7 z^`Va%zlkH29PiRlKz^JJB&^OxyxP>+`-&?3)$sRV=H-M%spEiNPHw;2Fx_0q%;CS* zmz?y#j>0IT#ko(^9VrPQpbb^|#dsEmL{CnzsAYt7XjVR`s_nw}5-a)0q`A2mkIZCs zH;u~lw&v|{w)v?kT#Fp{@r)=+Xt9SgcjKXDaC2CNsjCA4rBdc~l(Si#TE??an)NVJ z^sB~jh?41pB%j!zglvdJs4zPeo{i-jT9h&Sbn`G~c4_SAggiDhdZc-h2%|vUDA!S~ z65k%9^(JE>yXi=+N=vbg)`58pQ<0Bd1rDsB@ZnmsGJ2FG%$f|tG`pgR^Zn+h^k`in zGO{Qwk5}Tj&bnyi09V@_szmGzd>M@!S(E6Yg*7QY&k`Q3se8y-c*VLe>8wf2C@%>i zY^F!Sra7&E(9nk^B$tKv!bmgBi2V?5Ojvf~lOAcIfR7GZoN8DOQ*3hs6}zkbmInL8 z@C!^!OpL|8u-o+Z=M7t&xA=!H)($as3%lh3%89XBlRDYYYv1mQ^J8N!ZfCJqwC{LD zduyC^VMdHKu5O0C#GYb8y4nZhHKuj8wf$=QV1pO^Z;GYV60-O$UW?lj#(!7S|Lg-y zdB*j;{`FV?^Or|co*iYc@09q=M_2a$I@?vZ@ci-ih3#hA7sln(#l~1;Vme&5;`-SB z`ET31=moX5Ly;D|r4})ET3q`cG1H2Y671)<$3=XP4%tD^JipJ8)WhD5kPbaM7CHT4 ztRi3$HtAw}Zvs2^=r+NhgAso&9=BHxx8>vg`AI4EB)ZqB$FPcUI529&2&X$3rVS2= zZbOOXeixS?LC=9h9z437n`E~qQli)%mrd~7)EsSC8N;(-+c-Tn7LIJ$RoFp*5pix( zH+xq~(XL0lJ!540$mGlnd%p|2fIU4aDLFYgH7#idF4Iky_63W@%2MMXi})Tf_Tf-*pank%tEWxvitB2<+&5ObbaM_3py;CvE|+^zs^4M${$O{ z-Wzl4*OMo%{?AwK&kS4lz<-uLweZK((ck*EU$*%7Z+E$JLWjOi<;X4f{5)m&u#Za8il2Jyi%B~9k^Rn5w|0N#v2~9$ z)^&XD{Lr>1=FeW0a?`Q?mrUQB-nIU|3;GRyYwezw`o4PPa6-(OG41Z%miPLY!(Yza zy5#v+`^KOnSl2DIE`dgFQ`@<353BV|TswO#v}5mqCh0pkuCu*k`*?JycI`UE#;SJP zw<}4-#m01~Mc0B*|G44yVfLYQL+S=CzLc9|&?{JBxhs@*Wm0;gGw8J!Q6gJhfqkMq zuYIRki}S3Df2p)~xG=^((w@P|VywNc;CboB*{o@gurH|PDXrGHusvuW#INnv#l5wh z{LWB7D3*PqE)}!*>T}>LcVYacpc(t@=)o5z+4lZauYqyB?Y(My{<6uDe4jV>Z=W5z zUHRh+U(9*1qVWrRUlKS!u2)>oce9H29=y9(#r}5V?uzf5^2PM6I4N{LHu&d!KpgpWPo?JmEUWOMwM9 zhBqeFUfXr$7yJAC>y7rqe^@oM;>>r$QjY%o?S?7cA6=BY{M9GkyZeq&8%nQHuB$HH z{lVV+^Ahe`+ULs+uk_o0+rNK%a?i9&&TQLr(}Jfut+{&i)63^)3^@4Eb-ixdurm7( zsV^<4y5jJV1)+ZpeKIXM>$<1^bjjxbv3DPwQ8MJS8!!6Dk4wE@HtzW9mJh0e?|<4Z zZ|~24`ok0Nc?MNq|4Og>rngUM96fKu=0T61nDEp?pWHX;)aExjl~(TcHj+J4S!ncSm~Y#@lxM=Z>p>AO8A_uJeChebeoGC&0IUY+o4r2J^45*d|J{J4I(R zKy3tglHSD?Zkz7qCItOe0nLLX*+-xm;5motx78rumfV~dB$r1X4t_2vEj1+rE-%@9 z`G3p5pUrLVy7K)CmaQ35a5OpXYi0XytTQ$^7X0R_fOF$N503fEuY{LLZ@A4`06c$=`iAyzHxsXTSLQ#n(-=jL7@T z>Z$|JU%uzqsj|wBYo7i7bj|#=r`CP9_4V(cpLfrzkNsl$8JvajH>lG$6+c0cs=g-NG6-F@uI1?lbXh+n;T)YF5P?9Bh_ zv0uu6$X)(GW6zPFrQg2wmWwlf>2>m^Zhs8hd;QvD<+^JYb(zB5W-{DnqNz(q?D1xo z@Yh`pf4ygaLARTpb-X?1kzYTmzj6OR)!~r2-FSO@_|+JA-W2YW;K?qt54I2F*YIQ) zHsi_cBY(yz}TwKR&Xp{8(A1we3g66)wLZxM^Z|RnglSZ|CHH+hN7* zl)vA9eC73z_OQ1beS7kNo8SCP$NE9*SA0DFy}<)}#+JX9@Hcf=QM}K)N@1CBy=Z{MFf0+Ah?%M1(_kWNx`ReDxbKYOuW7_aH zmaNesKX*?4j6R@>|mH(v3~?xnZvda+-_s|Ru~^FNVM^23rL9~`*y zTs-#WnCsm2PYvvS=>At7paCi^5+$aLLm#*4T9mcG?%bWO6zYeaeEns1FZ}TX4I5!NS^}kz^hz zU+?~}wCX}wbZ06~4;ELRF*h-fa+0t8e)C&b-*dYA8;^8Yw!FG7rG3wtEBf{RA%4S{ zju-v7q_&&SbNK!X?PpT&aRxJwHTJQt>$`I3`lOTdb`^hc^7EvU*tL!Cmi}X9ZfNT( zxo-~I`u@V0CkM{;+_in%q<8lgyp=NWNS~!oJoJZbU#~Z9pWpHDJ6C-e_~DiZhuC@+ z58mht-TtpX4S1-dcj5Wva74(4^JMu?TS^WmfyQ5IPz=TSGRq0 z+dB{V;&*&KdC0cV6^GwDS@7$Sn?7@N3r{>V{o*BEtMU@}Ugx>6E~dL<)%*XGwK<{S z*se_p<2F3{aL4yomHx5I-lYq7CwD%4#h-Kk)#cAa*F5w5uo=^z%;@@b-&_Cj(w~zS z#>|HgsKH#;zTj{Fr@{$iPHark>*m`p(kIC0#U^z&&ClcPeT-Y}lDcAcnMRJuo{kxB z(hS@+X7`An#U&xkF1@8gl7Hl&cb?wZ<(VHm*OtCBbwR1w0O4ce zV4;tWE4tj-`@sh`+;r;Vo}X;5x^qv$r%w(YoH!-#jSE(F_g?qQsKFOKxcly;0~dYv z+V;%vH{>M#vg5X-`+t1?AJzv)+;wE*`XSSf9Gf#be$>kQlQ*_^Jv%7t{l`9feCdzF z$G_WoZ1<}kzwpiaw?|~(^4X<5m!4Yp*gZepciGK7Cq8@OOXtmb?V3Jse{$fNZTD?i zcf+<`*E!a@Eb~6?@0)$a>-kv^{QT3u_Xc;nox6X@xcRAsQh(y&zdu#-^$Y&5;(OJv zcwlHn_>t}#KYFeBhD8rQ5VAb`#4o+;en0T=qmy=|SA2il9TWD(AN{E4^ryQYF4_In rbDI_)e*Dz!lZ#8fx$Eg&rOy|K-`ds9yCHS!_fxX1&(g2NEtdZW`*~>> diff --git a/src/github.com/getlantern/go-igdman/embedupnpc.bash b/src/github.com/getlantern/go-igdman/embedupnpc.bash deleted file mode 100755 index ff6afb146c..0000000000 --- a/src/github.com/getlantern/go-igdman/embedupnpc.bash +++ /dev/null @@ -1,27 +0,0 @@ -#!/bin/bash - -############################################################################### -# -# This script regenerates the source files that embed the upnpc executable. -# -############################################################################### - -function die() { - echo $* - exit 1 -} - -if [ -z "$BNS_CERT" ] || [ -z "$BNS_CERT_PASS" ] -then - die "$0: Please set BNS_CERT and BNS_CERT_PASS to the bns_cert.p12 signing key and the password for that key" -fi - -osslsigncode sign -pkcs12 "$BNS_CERT" -pass "$BNS_CERT_PASS" -in binaries/upnpc-windows-unsigned -out binaries/windows/upnpc || die "Could not sign upnpc on windows" -# osslsigncode sign -pkcs12 "$BNS_CERT" -pass "$BNS_CERT_PASS" -in binaries/windows/natty -out binaries/windows/natty || die "Could not sign natty windows" -codesign -s "Developer ID Application: Brave New Software Project, Inc" -f binaries/osx/upnpc || die "Could not sign upnpc on macintosh" - -go-bindata -nomemcopy -nocompress -pkg igdman -prefix binaries/osx -o igdman/upnpc_darwin.go binaries/osx -go-bindata -nomemcopy -pkg igdman -prefix binaries/windows -o igdman/upnpc_windows.go binaries/windows -# go-bindata -nomemcopy -nocompress -pkg bin -prefix binaries/linux_386 -o natty/bin/linux_386.go binaries/linux_386 -# go-bindata -nomemcopy -nocompress -pkg bin -prefix binaries/linux_amd64 -o natty/bin/linux_amd64.go binaries/linux_amd64 -# go-bindata -nomemcopy -nocompress -pkg bin -prefix binaries/windows -o natty/bin/windows.go binaries/windows diff --git a/src/github.com/getlantern/go-igdman/igdman/igdman.go b/src/github.com/getlantern/go-igdman/igdman/igdman.go deleted file mode 100644 index 362e656165..0000000000 --- a/src/github.com/getlantern/go-igdman/igdman/igdman.go +++ /dev/null @@ -1,65 +0,0 @@ -// Package igdman provides a basic management interface for Internet Gateway -// Devices (IGDs), primarily intended to help with creating port mappings from -// external ports to ports on internal ips. -// -// igdman uses either UPnP or NAT-PMP, depending on what's discovered on the -// network. -// -// Internally, igdman uses miniupnpc (https://github.com/miniupnp/miniupnp) and -// go-nat-pmp (https://code.google.com/p/go-nat-pmp/). -// -// Basic Usage: -// -// igd, err := igdman.NewIGD() -// if err != nil { -// log.Fatalf("Unable to get IGD: %s", err) -// } -// err := igd.AddPortMapping(TCP, "192.168.1.210", 80, 8080, 0) -// if err != nil { -// log.Fatalf("Unable to map port: %s", err) -// } -// -package igdman - -import ( - "time" - - "github.com/getlantern/golog" -) - -// protocol is TCP or UDP -type protocol string - -const ( - TCP = protocol("TCP") - UDP = protocol("UDP") -) - -var ( - log = golog.LoggerFor("igdman") - - opTimeout = 10 * time.Second -) - -// Interface IGD represents an Internet Gateway Device. -type IGD interface { - // GetExternalIP returns the IGD's external (public) IP address - GetExternalIP() (ip string, err error) - - // AddPortMapping maps the given external port on the IGD to the internal - // port, with an optional expiration. - AddPortMapping(proto protocol, internalIP string, internalPort int, externalPort int, expiration time.Duration) error - - // RemovePortMapping removes the mapping from the given external port. - RemovePortMapping(proto protocol, externalPort int) error -} - -// NewIGD obtains a new IGD (either UPnP or NAT-PMP, depending on what's available) -func NewIGD() (igd IGD, err error) { - igd, err = NewUpnpIGD() - if err != nil { - log.Debugf("Unable to initialize UPnP IGD, falling back to NAT-PMP: %s", err) - igd, err = NewNATPMPIGD() - } - return -} diff --git a/src/github.com/getlantern/go-igdman/igdman/igdman_test.go b/src/github.com/getlantern/go-igdman/igdman/igdman_test.go deleted file mode 100644 index 0b08c63a4d..0000000000 --- a/src/github.com/getlantern/go-igdman/igdman/igdman_test.go +++ /dev/null @@ -1,186 +0,0 @@ -package igdman - -import ( - "fmt" - "net" - "os" - "testing" -) - -var ( - PUBLIC_IP = "PUBLIC_IP" -) - -func TestExternalIP_UPnP(t *testing.T) { - doTestExternalIP(t, getUPnPIGD(t)) -} - -func TestMapping_UPnP(t *testing.T) { - doTestMapping(t, getUPnPIGD(t)) -} - -func TestFailedAddMapping_UPnP(t *testing.T) { - doTestFailedAddMapping(t, getUPnPIGD(t)) -} - -func TestFailedRemoveMapping_UPnP(t *testing.T) { - doTestFailedRemoveMapping(t, getUPnPIGD(t)) -} - -func TestExternalIP_NATPMP(t *testing.T) { - doTestExternalIP(t, getNATPMPIGD(t)) -} - -func TestMapping_NATPMP(t *testing.T) { - doTestMapping(t, getNATPMPIGD(t)) -} - -func TestFailedAddMapping_NATPMP(t *testing.T) { - doTestFailedAddMapping(t, getNATPMPIGD(t)) -} - -func TestFailedRemoveMapping_NATPMP(t *testing.T) { - doTestFailedRemoveMapping(t, getNATPMPIGD(t)) -} - -func getUPnPIGD(t *testing.T) IGD { - igd, err := NewUpnpIGD() - if err != nil { - t.Fatalf("Unable to create UPnPIGD: %s", err) - } - return igd -} - -func getNATPMPIGD(t *testing.T) IGD { - igd, err := NewNATPMPIGD() - if err != nil { - t.Fatalf("Unable to create NATPMPIGD: %s", err) - } - return igd -} - -// TestExternalIP only works when there is a valid IGD device with an external -// IP. The environment variable EXTERNAL_IP needs to be set for this test to -// work. -func doTestExternalIP(t *testing.T, igd IGD) { - expectedExternalIP := os.Getenv("EXTERNAL_IP") - if expectedExternalIP == "" { - t.Fatalf("Please set the environment variable EXTERNAL_IP to provide your expected public IP address") - } - - publicIp, err := igd.GetExternalIP() - if err != nil { - t.Fatalf("Unable to get Public IP: %s", err) - } - if publicIp != expectedExternalIP { - t.Errorf("External ip '%s' did not match expected '%s'", publicIp, expectedExternalIP) - } - publicIp, err = igd.GetExternalIP() - if err != nil { - t.Fatalf("Unable to get External IP 2nd time: %s", err) - } -} - -func doTestMapping(t *testing.T, igd IGD) { - port := 15067 - - externalIP, err := igd.GetExternalIP() - if err != nil { - t.Fatalf("Unable to get external IP: %s", err) - } - - // Run echo server - go func() { - l, err := net.Listen("tcp", fmt.Sprintf("0.0.0.0:%d", port)) - defer l.Close() - if err != nil { - t.Fatalf("Unable to start server: %s", err) - } - for { - conn, err := l.Accept() - if err != nil { - t.Fatalf("Unable to accept connection: %s", err) - } - defer conn.Close() - //fr := framed.NewReader(conn) - //fw := framed.NewWriter(conn) - frame := make([]byte, 1000) - for { - n, err := conn.Read(frame) - if err != nil { - return - } - _, err = conn.Write(frame[:n]) - if err != nil { - return - } - } - } - }() - - // Add port mapping - internalIP, err := getFirstNonLoopbackAdapterAddr() - if err != nil { - t.Fatalf("Unable to get internal ip: %s", err) - } - - err = igd.AddPortMapping(TCP, internalIP, port, port, 0) - if err != nil { - t.Fatalf("Unable to add port mapping: %s", err) - } - - // Run echo client - conn, err := net.Dial("tcp", fmt.Sprintf("%s:%d", externalIP, port)) - if err != nil { - t.Fatalf("Unable to connect to echo server") - } - defer conn.Close() - //fr := framed.NewReader(conn) - //fw := framed.NewWriter(conn) - testString := "Hello strange port mapped world" - _, err = conn.Write([]byte(testString)) - if err != nil { - t.Fatalf("Unable to write to echo server") - } - frame := make([]byte, 1000) - n, err := conn.Read(frame) - if err != nil { - t.Fatalf("Unable to read from echo server") - } - response := string(frame[:n]) - if response != testString { - t.Errorf("Response '%s' did not match expected value '%s'", response, testString) - } - - // Remove port mapping - err = igd.RemovePortMapping(TCP, port) - if err != nil { - t.Fatalf("Unable to remove port mapping: %s", err) - } - conn, err = net.Dial("tcp", fmt.Sprintf("%s:%d", externalIP, port)) - if err == nil { - t.Errorf("Connecting to address with closed port mapping should have resulted in an error") - } -} - -func doTestFailedAddMapping(t *testing.T, igd IGD) { - port := 15068 - - // Add port mapping - internalIP, err := getFirstNonLoopbackAdapterAddr() - if err != nil { - t.Fatalf("Unable to get internal ip: %s", err) - } - - err = igd.AddPortMapping(TCP, internalIP, port, 0, 0) - if err == nil { - t.Error("Adding mapping for bad port should have resulted in error") - } -} - -func doTestFailedRemoveMapping(t *testing.T, igd IGD) { - err := igd.RemovePortMapping(TCP, -1) - if err == nil { - t.Error("Removing mapping for bad port should have resulted in error") - } -} diff --git a/src/github.com/getlantern/go-igdman/igdman/igdman_unix_test.go b/src/github.com/getlantern/go-igdman/igdman/igdman_unix_test.go deleted file mode 100644 index 82dfbe6380..0000000000 --- a/src/github.com/getlantern/go-igdman/igdman/igdman_unix_test.go +++ /dev/null @@ -1,34 +0,0 @@ -// +build !windows - -package igdman - -import ( - "fmt" - "net" -) - -func getFirstNonLoopbackAdapterAddr() (string, error) { - intfs, err := net.Interfaces() - if err != nil { - return "", err - } - - for _, intf := range intfs { - addrs, err := intf.Addrs() - if err != nil { - return "", err - } - - for _, a := range addrs { - switch addr := a.(type) { - case *net.IPNet: - ip4 := addr.IP.To4() - if ip4 != nil && !ip4.IsLoopback() { - return ip4.String(), nil - } - } - } - } - - return "", fmt.Errorf("No non-loopback adapter found") -} diff --git a/src/github.com/getlantern/go-igdman/igdman/igdman_windows_test.go b/src/github.com/getlantern/go-igdman/igdman/igdman_windows_test.go deleted file mode 100644 index dcfac64f02..0000000000 --- a/src/github.com/getlantern/go-igdman/igdman/igdman_windows_test.go +++ /dev/null @@ -1,29 +0,0 @@ -package igdman - -import ( - "fmt" - "net" - "os" -) - -func getFirstNonLoopbackAdapterAddr() (string, error) { - name, err := os.Hostname() - if err != nil { - return "", err - } - - addrs, err := net.LookupHost(name) - if err != nil { - return "", err - } - - for _, a := range addrs { - ip := net.ParseIP(a) - ip4 := ip.To4() - if ip4 != nil && !ip.IsLoopback() { - return ip4.String(), nil - } - } - - return "", fmt.Errorf("No non-loopback adapter found") -} diff --git a/src/github.com/getlantern/go-igdman/igdman/natpmp.go b/src/github.com/getlantern/go-igdman/igdman/natpmp.go deleted file mode 100644 index b691d86c05..0000000000 --- a/src/github.com/getlantern/go-igdman/igdman/natpmp.go +++ /dev/null @@ -1,74 +0,0 @@ -package igdman - -import ( - "fmt" - "math" - "net" - "strings" - "time" - - "github.com/getlantern/withtimeout" - natpmp "github.com/jackpal/go-nat-pmp" -) - -type natpmpIGD struct { - client *natpmp.Client -} - -func NewNATPMPIGD() (igd *natpmpIGD, err error) { - ip, err := defaultGatewayIp() - if err != nil { - return nil, fmt.Errorf("Unable to find default gateway: %s", err) - } - return &natpmpIGD{natpmp.NewClient(net.ParseIP(ip))}, nil -} - -func (igd *natpmpIGD) GetExternalIP() (ip string, err error) { - result, _, err := withtimeout.Do(opTimeout, func() (interface{}, error) { - response, err := igd.client.GetExternalAddress() - if err != nil { - return "", fmt.Errorf("Unable to get external address: %s", err) - } - ip = net.IPv4(response.ExternalIPAddress[0], - response.ExternalIPAddress[1], - response.ExternalIPAddress[2], - response.ExternalIPAddress[3]).String() - return ip, err - }) - return result.(string), err -} - -func (igd *natpmpIGD) AddPortMapping(proto protocol, internalIP string, internalPort int, externalPort int, expiration time.Duration) error { - _, _, err := withtimeout.Do(opTimeout, func() (interface{}, error) { - expirationInSeconds := int(expiration.Seconds()) - if expirationInSeconds == 0 { - expirationInSeconds = int(math.MaxInt32) - } - result, err := igd.client.AddPortMapping(natpmpProtoFor(proto), internalPort, externalPort, expirationInSeconds) - if err != nil { - return nil, fmt.Errorf("Unable to add port mapping: %s", err) - } - if int(result.MappedExternalPort) != externalPort { - igd.RemovePortMapping(proto, externalPort) - return nil, fmt.Errorf("Mapped port didn't match requested") - } - return nil, nil - }) - return err -} - -func (igd *natpmpIGD) RemovePortMapping(proto protocol, externalPort int) error { - _, _, err := withtimeout.Do(opTimeout, func() (interface{}, error) { - someInternalPort := 15670 // actual value doesn't matter - _, err := igd.client.AddPortMapping(natpmpProtoFor(proto), someInternalPort, externalPort, 0) - if err != nil { - return nil, fmt.Errorf("Unable to remove port mapping: %s", err) - } - return nil, nil - }) - return err -} - -func natpmpProtoFor(proto protocol) string { - return strings.ToLower(string(proto)) -} diff --git a/src/github.com/getlantern/go-igdman/igdman/upnp.go b/src/github.com/getlantern/go-igdman/igdman/upnp.go deleted file mode 100644 index 9e350b1f65..0000000000 --- a/src/github.com/getlantern/go-igdman/igdman/upnp.go +++ /dev/null @@ -1,184 +0,0 @@ -package igdman - -import ( - "bytes" - "fmt" - "io" - "os/exec" - "strings" - "sync" - "time" - - "github.com/getlantern/byteexec" - "github.com/getlantern/withtimeout" -) - -const ( - IGD_URL_LABEL = "Found valid IGD : " - LOCAL_IP_ADDRESS_LABEL = "Local LAN ip address : " - EXTERNAL_IP_ADDRESS_LABEL = "ExternalIPAddress = " -) - -var ( - upnpcbe *byteexec.Exec -) - -func init() { - upnpcBytes, err := Asset("upnpc") - if err != nil { - panic(fmt.Errorf("Unable to read upnpc bytes: %s", err)) - } - - upnpcbe, err = byteexec.New(upnpcBytes, "upnpc") - if err != nil { - panic(fmt.Errorf("Unable to construct byteexec for upnpc: %s", err)) - } -} - -type upnpIGD struct { - igdUrl string - internalIP string - externalIP string - updateStatusMutex sync.Mutex -} - -func NewUpnpIGD() (igd *upnpIGD, err error) { - igd = &upnpIGD{} - err = igd.updateStatus() - return -} - -func (igd *upnpIGD) GetExternalIP() (ip string, err error) { - err = igd.updateStatusIfNecessary() - if err != nil { - return "", err - } - return igd.externalIP, nil -} - -func (igd *upnpIGD) AddPortMapping(proto protocol, internalIP string, internalPort int, externalPort int, expiration time.Duration) error { - if err := igd.updateStatusIfNecessary(); err != nil { - return fmt.Errorf("Unable to add port mapping: %s", err) - } - params := []string{ - "-url", igd.igdUrl, - "-a", internalIP, fmt.Sprintf("%d", internalPort), fmt.Sprintf("%d", externalPort), string(proto), - } - if expiration > 0 { - params = append(params, fmt.Sprintf("%d", expiration/time.Second)) - } - out, err := execTimeout(opTimeout, upnpcbe.Command(params...)) - if err != nil { - return fmt.Errorf("Unable to add port mapping: %s\n%s", err, out) - } else if strings.Contains(string(out), "failed with") { - return fmt.Errorf("Unable to add port mapping: \n%s", out) - } else { - return nil - } -} - -func (igd *upnpIGD) RemovePortMapping(proto protocol, externalPort int) error { - if err := igd.updateStatusIfNecessary(); err != nil { - return fmt.Errorf("Unable to add port mapping: %s", err) - } - params := []string{ - "-url", igd.igdUrl, - "-d", fmt.Sprintf("%d", externalPort), string(proto), - } - out, err := execTimeout(opTimeout, upnpcbe.Command(params...)) - if err != nil { - return fmt.Errorf("Unable to remove port mapping: %s\n%s", err, out) - } else if !strings.Contains(string(out), "UPNP_DeletePortMapping() returned : 0") { - return fmt.Errorf("Unable to remove port mapping: \n%s", out) - } else { - return nil - } -} - -func (igd *upnpIGD) updateStatusIfNecessary() error { - igd.updateStatusMutex.Lock() - defer igd.updateStatusMutex.Unlock() - if igd.igdUrl == "" { - return igd.updateStatus() - } - return nil -} - -// updateStatus updates the IGD's status fields -func (igd *upnpIGD) updateStatus() error { - skipDiscovery := igd.igdUrl != "" - params := []string{"-s"} - if skipDiscovery { - params = []string{"-url", igd.igdUrl, "-s"} // -s has to be at the end for some reason - } - out, err := execTimeout(opTimeout, upnpcbe.Command(params...)) - if err != nil { - if skipDiscovery { - // Clear remembered url and try again - igd.igdUrl = "" - return igd.updateStatus() - } else { - return fmt.Errorf("Unable to call upnpc to get status: %s\n%s", err, out) - } - } - resp := string(out) - if igd.igdUrl, err = igd.extractFromStatusResponse(resp, IGD_URL_LABEL); err != nil { - return err - } - if igd.internalIP, err = igd.extractFromStatusResponse(resp, LOCAL_IP_ADDRESS_LABEL); err != nil { - return err - } - if igd.externalIP, err = igd.extractFromStatusResponse(resp, EXTERNAL_IP_ADDRESS_LABEL); err != nil { - return err - } - return nil -} - -func (igd *upnpIGD) extractFromStatusResponse(resp string, label string) (string, error) { - i := strings.Index(resp, label) - if i < 0 { - return "", fmt.Errorf("%s not available from upnpc", label) - } - resp = resp[i+len(label):] - // Look for either carriage return (windows) or line feed (unix) - sr := strings.Index(resp, "\r") - sn := strings.Index(resp, "\n") - s := sr - if sr < 0 { - s = sn - } - if s < 0 { - return "", fmt.Errorf("Unable to find newline after %s", label) - } - return resp[:s], nil -} - -func execTimeout(timeout time.Duration, cmd *exec.Cmd) ([]byte, error) { - stdout, err := cmd.StdoutPipe() - if err != nil { - return nil, err - } - stderr, err := cmd.StderrPipe() - if err != nil { - return nil, err - } - err = cmd.Start() - if err != nil { - return nil, err - } - - b := bytes.NewBuffer([]byte{}) - go io.Copy(b, stdout) - go io.Copy(b, stderr) - - _, timedOut, err := withtimeout.Do(timeout, func() (interface{}, error) { - return nil, cmd.Wait() - }) - if err != nil { - if timedOut { - go cmd.Process.Kill() - } - return nil, err - } - return b.Bytes(), nil -} diff --git a/src/github.com/getlantern/go-igdman/igdman/upnpc_darwin.go b/src/github.com/getlantern/go-igdman/igdman/upnpc_darwin.go deleted file mode 100644 index 825f6de1b8..0000000000 --- a/src/github.com/getlantern/go-igdman/igdman/upnpc_darwin.go +++ /dev/null @@ -1,96 +0,0 @@ -package igdman - -import ( - "fmt" - "reflect" - "strings" - "unsafe" -) - -func bindata_read(data, name string) ([]byte, error) { - var empty [0]byte - sx := (*reflect.StringHeader)(unsafe.Pointer(&data)) - b := empty[:] - bx := (*reflect.SliceHeader)(unsafe.Pointer(&b)) - bx.Data = sx.Data - bx.Len = len(data) - bx.Cap = bx.Len - return b, nil -} - -var _upnpc = "\xcf\xfa\xed\xfe\x07\x00\x00\x01\x03\x00\x00\x80\x02\x00\x00\x00\x11\x00\x00\x00\x10\x06\x00\x00\x85\x00\x20\x00\x00\x00\x00\x00\x19\x00\x00\x00\x48\x00\x00\x00\x5f\x5f\x50\x41\x47\x45\x5a\x45\x52\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x78\x02\x00\x00\x5f\x5f\x54\x45\x58\x54\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\xb0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb0\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x05\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x5f\x5f\x74\x65\x78\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x5f\x54\x45\x58\x54\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x09\x00\x00\x01\x00\x00\x00\x88\x82\x00\x00\x00\x00\x00\x00\x20\x09\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x5f\x73\x74\x75\x62\x73\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x5f\x54\x45\x58\x54\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa8\x8b\x00\x00\x01\x00\x00\x00\x38\x01\x00\x00\x00\x00\x00\x00\xa8\x8b\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x04\x00\x80\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x5f\x5f\x73\x74\x75\x62\x5f\x68\x65\x6c\x70\x65\x72\x00\x00\x00\x5f\x5f\x54\x45\x58\x54\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe0\x8c\x00\x00\x01\x00\x00\x00\x18\x02\x00\x00\x00\x00\x00\x00\xe0\x8c\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x5f\x63\x73\x74\x72\x69\x6e\x67\x00\x00\x00\x00\x00\x00\x00\x5f\x5f\x54\x45\x58\x54\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8f\x00\x00\x01\x00\x00\x00\x5e\x1e\x00\x00\x00\x00\x00\x00\x00\x8f\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x5f\x63\x6f\x6e\x73\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x5f\x54\x45\x58\x54\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\xad\x00\x00\x01\x00\x00\x00\x5d\x00\x00\x00\x00\x00\x00\x00\x60\xad\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x5f\x75\x6e\x77\x69\x6e\x64\x5f\x69\x6e\x66\x6f\x00\x00\x00\x5f\x5f\x54\x45\x58\x54\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc0\xad\x00\x00\x01\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\xc0\xad\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x5f\x65\x68\x5f\x66\x72\x61\x6d\x65\x00\x00\x00\x00\x00\x00\x5f\x5f\x54\x45\x58\x54\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc0\xae\x00\x00\x01\x00\x00\x00\x38\x01\x00\x00\x00\x00\x00\x00\xc0\xae\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x88\x01\x00\x00\x5f\x5f\x44\x41\x54\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb0\x00\x00\x01\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\xb0\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x03\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x5f\x5f\x6e\x6c\x5f\x73\x79\x6d\x62\x6f\x6c\x5f\x70\x74\x72\x00\x5f\x5f\x44\x41\x54\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb0\x00\x00\x01\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\xb0\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x34\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x5f\x67\x6f\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x5f\x44\x41\x54\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\xb0\x00\x00\x01\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x10\xb0\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x36\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x5f\x6c\x61\x5f\x73\x79\x6d\x62\x6f\x6c\x5f\x70\x74\x72\x00\x5f\x5f\x44\x41\x54\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\xb0\x00\x00\x01\x00\x00\x00\xa0\x01\x00\x00\x00\x00\x00\x00\x30\xb0\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x3a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x5f\x63\x6f\x6e\x73\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x5f\x44\x41\x54\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd0\xb1\x00\x00\x01\x00\x00\x00\xe0\x00\x00\x00\x00\x00\x00\x00\xd0\xb1\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x48\x00\x00\x00\x5f\x5f\x4c\x49\x4e\x4b\x45\x44\x49\x54\x00\x00\x00\x00\x00\x00\x00\xc0\x00\x00\x01\x00\x00\x00\x00\x50\x00\x00\x00\x00\x00\x00\x00\xc0\x00\x00\x00\x00\x00\x00\x00\x41\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x22\x00\x00\x80\x30\x00\x00\x00\x00\xc0\x00\x00\x10\x00\x00\x00\x10\xc0\x00\x00\x70\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\xc0\x00\x00\x60\x03\x00\x00\xe0\xc3\x00\x00\x30\x05\x00\x00\x02\x00\x00\x00\x18\x00\x00\x00\xc8\xc9\x00\x00\x80\x00\x00\x00\x80\xd3\x00\x00\xd0\x07\x00\x00\x0b\x00\x00\x00\x50\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x0e\x00\x00\x00\x39\x00\x00\x00\x47\x00\x00\x00\x39\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc8\xd1\x00\x00\x6e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x20\x00\x00\x00\x0c\x00\x00\x00\x2f\x75\x73\x72\x2f\x6c\x69\x62\x2f\x64\x79\x6c\x64\x00\x00\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x18\x00\x00\x00\x28\x5e\x21\xd3\x08\x6d\x39\x67\xb8\x38\x8e\x0e\xbb\x6f\x00\x2e\x24\x00\x00\x00\x10\x00\x00\x00\x00\x09\x0a\x00\x00\x09\x0a\x00\x2a\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x80\x18\x00\x00\x00\xc0\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x38\x00\x00\x00\x18\x00\x00\x00\x02\x00\x00\x00\x01\x01\xad\x04\x00\x00\x01\x00\x2f\x75\x73\x72\x2f\x6c\x69\x62\x2f\x6c\x69\x62\x53\x79\x73\x74\x65\x6d\x2e\x42\x2e\x64\x79\x6c\x69\x62\x00\x00\x00\x00\x00\x00\x26\x00\x00\x00\x10\x00\x00\x00\x10\xc9\x00\x00\x78\x00\x00\x00\x29\x00\x00\x00\x10\x00\x00\x00\x88\xc9\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x10\x00\x00\x00\x88\xc9\x00\x00\x40\x00\x00\x00\x1d\x00\x00\x00\x10\x00\x00\x00\x50\xdb\x00\x00\xb0\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x48\x89\xe5\x8a\x07\x0c\x20\x0f\xb6\xc0\x83\xf8\x74\x75\x30\x8a\x47\x01\x0c\x20\x0f\xb6\xc0\x83\xf8\x63\x75\x23\x8a\x47\x02\x0c\x20\x0f\xb6\xc0\x83\xf8\x70\x75\x16\x8a\x47\x03\x0c\x20\x0f\xb6\xc0\x83\xf8\x20\x75\x09\x48\x8d\x05\x02\xa4\x00\x00\xeb\x4b\x8a\x0f\x31\xc0\x80\xc9\x20\x0f\xb6\xc9\x83\xf9\x75\x75\x3c\x8a\x4f\x01\x31\xc0\x80\xc9\x20\x0f\xb6\xc9\x83\xf9\x64\x75\x2c\x8a\x4f\x02\x31\xc0\x80\xc9\x20\x0f\xb6\xc9\x83\xf9\x70\x75\x1c\x8a\x47\x03\x84\xc0\x74\x17\x0f\xb6\xc8\x31\xc0\x83\xf9\x20\x48\x8d\x0d\xbf\xa3\x00\x00\x48\x0f\x44\xc1\x5d\xc3\x5d\xc3\x48\x8d\x05\xb0\xa3\x00\x00\x5d\xc3\x66\x2e\x0f\x1f\x84\x00\x00\x00\x00\x00\x55\x48\x89\xe5\x41\x57\x41\x56\x41\x55\x41\x54\x53\x48\x81\xec\x78\x0d\x00\x00\x49\x89\xf7\x89\xfb\x89\x9d\xc0\xf2\xff\xff\x48\x8b\x05\x32\xa6\x00\x00\x48\x8b\x00\x48\x89\x45\xd0\xc7\x85\xf0\xf2\xff\xff\x00\x00\x00\x00\x48\x8d\x3d\xf2\x93\x00\x00\xe8\x5f\x82\x00\x00\x48\x8d\x3d\x36\x94\x00\x00\xe8\x53\x82\x00\x00\x31\xc0\x48\x89\x85\xb8\xf2\xff\xff\x83\xfb\x02\x0f\x8c\xda\x01\x00\x00\x41\xbe\x01\x00\x00\x00\x4c\x8d\x2d\xd2\x84\x00\x00\x4c\x8d\x25\xd2\x84\x00\x00\x31\xc0\x48\x89\x85\xb0\xf2\xff\xff\x31\xc0\x48\x89\x85\xa8\xf2\xff\xff\x31\xc0\x48\x89\x85\xa0\xf2\xff\xff\x31\xc0\x48\x89\x85\x98\xf2\xff\xff\x0f\x1f\x80\x00\x00\x00\x00\x49\x63\xc6\x49\x8b\x1c\xc7\x48\x89\xdf\x4c\x89\xee\xe8\x32\x82\x00\x00\x85\xc0\x0f\x84\x81\x01\x00\x00\x48\x89\xdf\x4c\x89\xe6\xe8\x1f\x82\x00\x00\x85\xc0\x0f\x84\x6e\x01\x00\x00\x0f\xb6\x03\x83\xf8\x2d\x75\x3b\x4c\x89\xe1\x44\x0f\xbe\x63\x01\x41\x83\xfc\x64\x7f\x4d\x41\x0f\xb6\xc4\x83\xf8\x36\x0f\x85\xd2\x00\x00\x00\xb8\x01\x00\x00\x00\x48\x89\x85\xb0\xf2\xff\xff\x49\x89\xcc\xe9\xac\x00\x00\x00\x66\x66\x66\x2e\x0f\x1f\x84\x00\x00\x00\x00\x00\x48\x8b\x05\x49\xa5\x00\x00\x48\x8b\x38\x31\xc0\x48\x8d\x35\x27\x84\x00\x00\x48\x89\xda\xe8\xff\x80\x00\x00\xe9\x80\x00\x00\x00\x41\x0f\xbe\xc4\x83\xf8\x6c\x7f\x23\x41\x0f\xb6\xc4\x83\xf8\x65\x0f\x85\x7c\x00\x00\x00\x41\xff\xc6\x49\x63\xc6\x49\x8b\x04\xc7\x48\x89\x85\xb8\xf2\xff\xff\x49\x89\xcc\xeb\x54\x41\x0f\xb6\xc4\x83\xf8\x6d\x74\x1b\x83\xf8\x70\x75\x2c\x41\xff\xc6\x49\x63\xc6\x49\x8b\x04\xc7\x48\x89\x85\xa8\xf2\xff\xff\x49\x89\xcc\xeb\x30\x41\xff\xc6\x49\x63\xc6\x49\x8b\x04\xc7\x48\x89\x85\xa0\xf2\xff\xff\x49\x89\xcc\xeb\x1a\x83\xf8\x75\x75\x27\x41\xff\xc6\x49\x63\xc6\x49\x8b\x04\xc7\x48\x89\x85\x98\xf2\xff\xff\x49\x89\xcc\x90\x41\xff\xc6\x44\x3b\xb5\xc0\xf2\xff\xff\x0f\x8c\xe0\xfe\xff\xff\xeb\x79\x45\x84\xe4\x74\x74\x41\x8d\x46\x01\x44\x8b\xad\xc0\xf2\xff\xff\x41\x29\xc5\x41\x0f\xb6\xcc\x83\xf9\x61\x75\x06\x41\x83\xfd\x04\x7c\x57\x41\x0f\xb6\xcc\x83\xf9\x64\x0f\x94\xc2\x83\xf9\x72\x0f\x94\xc1\x08\xd1\x0f\xb6\xc9\x83\xf9\x01\x75\x09\x83\xbd\xc0\xf2\xff\xff\x02\x7c\x34\x41\x0f\xb6\xcc\x83\xf9\x41\x75\x06\x41\x83\xfd\x06\x7c\x25\x41\x0f\xb6\xcc\x83\xf9\x55\x75\x06\x41\x83\xfd\x02\x7c\x16\x41\x0f\xb6\xcc\x83\xf9\x44\x0f\x85\x2f\x02\x00\x00\x45\x85\xed\x0f\x8f\x26\x02\x00\x00\x48\x8b\x1d\x1e\xa4\x00\x00\x48\x8b\x3b\x49\x8b\x17\x48\x8d\x35\x10\x83\x00\x00\x31\xc0\xe8\xd4\x7f\x00\x00\x48\x8b\x3b\x49\x8b\x17\x48\x8d\x35\x56\x83\x00\x00\x31\xc0\xe8\xc0\x7f\x00\x00\x48\x8b\x3b\x49\x8b\x17\x48\x8d\x35\x9a\x83\x00\x00\x31\xc0\xe8\xac\x7f\x00\x00\x48\x8b\x3b\x49\x8b\x17\x48\x8d\x35\xb7\x83\x00\x00\x31\xc0\xe8\x98\x7f\x00\x00\x48\x8b\x3b\x49\x8b\x17\x48\x8d\x35\xd0\x83\x00\x00\x31\xc0\xe8\x84\x7f\x00\x00\x48\x8b\x3b\x49\x8b\x17\x48\x8d\x35\x17\x84\x00\x00\x31\xc0\xe8\x70\x7f\x00\x00\x48\x8b\x3b\x49\x8b\x17\x48\x8d\x35\xa2\x84\x00\x00\x31\xc0\xe8\x5c\x7f\x00\x00\x48\x8b\x3b\x49\x8b\x17\x48\x8d\x35\x14\x85\x00\x00\x31\xc0\xe8\x48\x7f\x00\x00\x48\x8b\x3b\x49\x8b\x17\x48\x8d\x35\x6c\x85\x00\x00\x31\xc0\xe8\x34\x7f\x00\x00\x48\x8b\x3b\x49\x8b\x17\x48\x8d\x35\xd4\x85\x00\x00\x31\xc0\xe8\x20\x7f\x00\x00\x48\x8b\x3b\x49\x8b\x17\x48\x8d\x35\x13\x86\x00\x00\x31\xc0\xe8\x0c\x7f\x00\x00\x48\x8b\x3b\x49\x8b\x17\x48\x8d\x35\x50\x86\x00\x00\x31\xc0\xe8\xf8\x7e\x00\x00\x48\x8b\x3b\x49\x8b\x17\x48\x8d\x35\x9e\x86\x00\x00\x31\xc0\xe8\xe4\x7e\x00\x00\x48\x8b\x3b\x49\x8b\x17\x48\x8d\x35\xce\x86\x00\x00\x31\xc0\xe8\xd0\x7e\x00\x00\x48\x8b\x3b\x49\x8b\x17\x48\x8d\x35\xfa\x86\x00\x00\x31\xc0\xe8\xbc\x7e\x00\x00\x48\x8b\x3b\x49\x8b\x17\x48\x8d\x35\x68\x87\x00\x00\x31\xc0\xe8\xa8\x7e\x00\x00\x48\x8b\x0b\x48\x8d\x3d\x87\x87\x00\x00\xbe\x18\x00\x00\x00\xba\x01\x00\x00\x00\xe8\xa1\x7e\x00\x00\x48\x8b\x0b\x48\x8d\x3d\x87\x87\x00\x00\xbe\x09\x00\x00\x00\xba\x01\x00\x00\x00\xe8\x88\x7e\x00\x00\x48\x8b\x0b\x48\x8d\x3d\x78\x87\x00\x00\xbe\x35\x00\x00\x00\xba\x01\x00\x00\x00\xe8\x6f\x7e\x00\x00\x48\x8b\x0b\x48\x8d\x3d\x95\x87\x00\x00\xbe\x23\x00\x00\x00\xba\x01\x00\x00\x00\xe8\x56\x7e\x00\x00\x48\x8b\x0b\x48\x8d\x3d\xa0\x87\x00\x00\xbe\x4f\x00\x00\x00\xba\x01\x00\x00\x00\xe8\x3d\x7e\x00\x00\x48\x8b\x0b\x48\x8d\x3d\xd7\x87\x00\x00\xbe\x7f\x00\x00\x00\xba\x01\x00\x00\x00\xe8\x24\x7e\x00\x00\x48\x8b\x0b\x48\x8d\x3d\x3e\x88\x00\x00\xbe\x30\x00\x00\x00\xba\x01\x00\x00\x00\xe8\x0b\x7e\x00\x00\x41\xbc\x01\x00\x00\x00\x48\x8b\x05\x1a\xa2\x00\x00\x48\x8b\x00\x48\x3b\x45\xd0\x75\x15\x44\x89\xe0\x48\x81\xc4\x78\x0d\x00\x00\x5b\x41\x5c\x41\x5d\x41\x5e\x41\x5f\x5d\xc3\xe8\x9f\x7d\x00\x00\x48\x98\x48\x89\x85\x90\xf2\xff\xff\x48\x8b\x85\x98\xf2\xff\xff\x48\x85\xc0\x74\x4d\x8b\xb5\xf0\xf2\xff\xff\x48\x89\xc3\x48\x8d\x3d\x1f\x88\x00\x00\x31\xc0\x48\x89\x85\xb0\xf2\xff\xff\x31\xc0\xe8\x00\x7e\x00\x00\x48\x8d\x8d\xb0\xfe\xff\xff\x41\xb8\x40\x00\x00\x00\x48\x89\xdf\x48\x8d\xb5\xc8\xf2\xff\xff\x48\x8d\x95\x28\xf3\xff\xff\xe8\x07\x46\x00\x00\x85\xc0\x0f\x85\xe3\x00\x00\x00\xeb\x65\x4c\x8d\x8d\xf0\xf2\xff\xff\xbf\xd0\x07\x00\x00\x31\xc9\x48\x8b\xb5\xa0\xf2\xff\xff\x48\x8b\x95\xa8\xf2\xff\xff\x4c\x8b\x85\xb0\xf2\xff\xff\xe8\x25\x3b\x00\x00\x48\x89\xc3\x48\x85\xdb\x0f\x84\xc4\x00\x00\x00\x48\x8d\x3d\x22\x90\x00\x00\xe8\x9f\x7d\x00\x00\x48\x89\x9d\xb0\xf2\xff\xff\x48\x8b\x73\x08\x48\x8b\x53\x10\x31\xc0\x48\x8d\x3d\x76\x87\x00\x00\xe8\x76\x7d\x00\x00\x48\x8b\x1b\x48\x85\xdb\x75\xe2\x48\x8d\xb5\xc8\xf2\xff\xff\x48\x8d\x95\x28\xf3\xff\xff\x48\x8d\x8d\xb0\xfe\xff\xff\x41\xb8\x40\x00\x00\x00\x48\x8b\xbd\xb0\xf2\xff\xff\xe8\x71\x3f\x00\x00\x89\xc1\x83\xf8\x03\x76\x13\x48\x8b\xb5\xc8\xf2\xff\xff\x48\x8d\x3d\xc0\x87\x00\x00\xe9\x8b\x00\x00\x00\x48\x8d\x05\xf8\x11\x00\x00\x48\x63\x0c\x88\x48\x01\xc1\xff\xe1\x48\x8b\x05\xe0\xa0\x00\x00\x48\x8b\x08\x48\x8d\x3d\x09\x88\x00\x00\xbe\x2d\x00\x00\x00\xba\x01\x00\x00\x00\xe8\xa3\x7c\x00\x00\x41\xbc\x01\x00\x00\x00\xe9\xb2\x11\x00\x00\x48\x8b\xb5\xc8\xf2\xff\xff\x48\x8d\x3d\x11\x87\x00\x00\x31\xc0\xe8\xdd\x7c\x00\x00\xeb\x4c\x48\x8b\x05\x9e\xa0\x00\x00\x48\x8b\x08\x48\x8d\x3d\xf5\x87\x00\x00\xbe\x2a\x00\x00\x00\xe9\x51\xfe\xff\xff\x48\x8b\xb5\xc8\xf2\xff\xff\x48\x8d\x3d\xf5\x86\x00\x00\xeb\x0e\x48\x8b\xb5\xc8\xf2\xff\xff\x48\x8d\x3d\x08\x87\x00\x00\x31\xc0\xe8\x9b\x7c\x00\x00\x48\x8d\x3d\xfe\x8e\x00\x00\xe8\x9b\x7c\x00\x00\x48\x8d\x3d\x31\x87\x00\x00\x48\x8d\xb5\xb0\xfe\xff\xff\x31\xc0\xe8\x7a\x7c\x00\x00\x41\x83\xfc\x71\x0f\x8f\xee\x00\x00\x00\x41\x83\xfc\x6b\x0f\x8f\x5f\x01\x00\x00\x41\x83\xfc\x60\x0f\x8f\x5e\x03\x00\x00\x41\x8d\x44\x24\xbf\x83\xf8\x14\x0f\x87\x18\x04\x00\x00\x48\x8d\x0d\x29\x11\x00\x00\x48\x63\x04\x81\x48\x01\xc8\xff\xe0\x48\x8b\x85\x90\xf2\xff\xff\x49\x8b\x5c\xc7\x10\x48\x85\xdb\x0f\x84\xdd\x0c\x00\x00\x48\x8b\x85\x90\xf2\xff\xff\x4d\x8b\x34\xc7\x4d\x85\xf6\x0f\x84\xc9\x0c\x00\x00\x48\x8b\x85\x90\xf2\xff\xff\x4d\x8b\x6c\xc7\x18\x4d\x85\xed\x0f\x84\xb4\x0c\x00\x00\x48\x8b\x85\x90\xf2\xff\xff\x49\x8b\x44\xc7\x08\x48\x89\x85\xc0\xf2\xff\xff\x48\x85\xc0\x0f\x84\x98\x0c\x00\x00\x48\x8b\x85\x90\xf2\xff\xff\x4d\x8b\x64\xc7\x20\x4d\x85\xe4\x0f\x84\x83\x0c\x00\x00\x48\x8b\x85\x90\xf2\xff\xff\x4d\x8b\x7c\xc7\x28\x4d\x85\xff\x0f\x84\x6e\x0c\x00\x00\x4c\x89\xe7\xe8\x22\x7b\x00\x00\x85\xc0\x0f\x85\x93\x0f\x00\x00\x41\x0f\xbe\x04\x24\x0f\xb6\xc8\x83\xf8\x73\x0f\x8f\x21\x0a\x00\x00\x83\xf9\x54\x0f\x84\x21\x0a\x00\x00\x83\xf9\x55\x0f\x84\x21\x0d\x00\x00\xe9\x75\x0d\x00\x00\x41\x83\xfc\x72\x0f\x85\xe0\x01\x00\x00\x45\x31\xe4\x45\x85\xed\x0f\x8e\x20\x10\x00\x00\x48\x8b\x85\x90\xf2\xff\xff\x4d\x8d\x74\xc7\x08\x45\x31\xe4\x45\x31\xff\x48\x8b\x9d\xb8\xf2\xff\xff\x4b\x8b\x4c\xfe\xf8\x4f\x8b\x0c\xfe\x48\x89\x5c\x24\x08\x48\x8d\x05\x02\x86\x00\x00\x48\x89\x04\x24\xc7\x44\x24\x10\x00\x00\x00\x00\x48\x8d\xbd\xc8\xf2\xff\xff\x48\x8d\xb5\x28\xf3\xff\xff\x48\x8d\x95\xb0\xfe\xff\xff\x49\x89\xc8\xe8\xdf\x12\x00\x00\x49\x83\xc7\x02\x45\x39\xef\x7c\xb9\xe9\xbb\x0f\x00\x00\x41\x83\xfc\x6c\x0f\x85\x33\x02\x00\x00\x48\x8d\xbd\xc8\xf2\xff\xff\x48\x8d\xb5\x28\xf3\xff\xff\xe8\x24\x10\x00\x00\x48\x8d\x3d\xfd\x8d\x00\x00\xe8\xea\x7a\x00\x00\x4c\x8d\xb5\x0a\xf3\xff\xff\x4c\x8d\x7d\x90\x4c\x8d\xa5\x04\xf3\xff\xff\x45\x31\xed\xeb\x4b\x48\x8d\x85\xf0\xfe\xff\xff\x48\x89\x44\x24\x10\x48\x8d\x85\x00\xff\xff\xff\x48\x89\x44\x24\x08\x48\x8d\x85\x40\xff\xff\xff\x48\x89\x04\x24\x31\xc0\x48\x8d\x95\xfa\xf2\xff\xff\x48\x8d\x8d\xfe\xf2\xff\xff\x48\x8d\x3d\x01\x8b\x00\x00\x44\x89\xee\x4d\x89\xf8\x4d\x89\xe1\xe8\x7f\x7a\x00\x00\x41\xff\xc5\xbe\x06\x00\x00\x00\xba\x00\x00\x00\x00\xb9\x06\x00\x00\x00\x31\xc0\x4c\x89\xf3\x48\x89\xdf\x4c\x8d\x05\x79\x88\x00\x00\x45\x89\xe9\xe8\xba\x79\x00\x00\xc6\x85\x00\xff\xff\xff\x00\xc6\x85\xf4\xf2\xff\xff\x00\xc6\x85\xf0\xfe\xff\xff\x00\xc6\x85\x40\xff\xff\xff\x00\xc6\x85\xfe\xf2\xff\xff\x00\xc6\x85\x04\xf3\xff\xff\x00\xc6\x45\x90\x00\x48\x8b\xbd\xc8\xf2\xff\xff\x48\x8d\x85\xf0\xfe\xff\xff\x48\x89\x44\x24\x20\x48\x8d\x85\x00\xff\xff\xff\x48\x89\x44\x24\x18\x48\x8d\x85\xf4\xf2\xff\xff\x48\x89\x44\x24\x10\x48\x8d\x85\x40\xff\xff\xff\x48\x89\x44\x24\x08\x48\x8d\x85\xfa\xf2\xff\xff\x48\x89\x04\x24\x48\x8d\xb5\x2c\xf8\xff\xff\x48\x89\xda\x49\x89\xde\x48\x8d\x8d\xfe\xf2\xff\xff\x4d\x89\xf8\x4d\x89\xe1\xe8\xa1\x56\x00\x00\x89\xc3\x85\xdb\x0f\x84\xf6\xfe\xff\xff\x89\xdf\xe8\x70\x6a\x00\x00\x48\x89\xc1\x48\x8d\x3d\x42\x8a\x00\x00\x45\x31\xe4\x31\xc0\x89\xde\x48\x89\xca\xe8\x9d\x79\x00\x00\xe9\x4c\x0e\x00\x00\x41\x83\xfc\x73\x0f\x85\x58\x01\x00\x00\x48\x8d\xbd\xc8\xf2\xff\xff\x48\x8d\xb5\x28\xf3\xff\xff\xe8\xb5\x0e\x00\x00\x48\x8b\xbd\xd8\xf2\xff\xff\x48\x8d\x9d\x2c\xf6\xff\xff\x48\x89\xde\xe8\x7f\x45\x00\x00\x41\x89\xc6\x48\x8b\xbd\xd8\xf2\xff\xff\x48\x89\xde\xe8\x3d\x46\x00\x00\x41\x89\xc7\x48\x8b\xbd\xd8\xf2\xff\xff\x48\x89\xde\xe8\xfb\x46\x00\x00\x41\x89\xc5\x48\x8b\xbd\xd8\xf2\xff\xff\x48\x89\xde\xe8\xb9\x47\x00\x00\x89\xc3\x48\x8d\x3d\x9a\x85\x00\x00\x45\x31\xe4\x31\xc0\x44\x89\xf6\x44\x89\xfa\xe8\x16\x79\x00\x00\x48\x8d\x3d\xa1\x85\x00\x00\x31\xc0\x44\x89\xee\x89\xda\xe8\x03\x79\x00\x00\xe9\xb2\x0d\x00\x00\x41\x83\xfc\x61\x75\x66\x48\x8b\x85\x90\xf2\xff\xff\x49\x8b\x14\xc7\x49\x8b\x4c\xc7\x08\x4d\x8b\x44\xc7\x10\x4d\x8b\x4c\xc7\x18\x41\x83\xfd\x05\x0f\x8c\xc4\x00\x00\x00\x49\x8b\x44\xc7\x20\xe9\xc1\x00\x00\x00\x41\x83\xfc\x6e\x0f\x85\x8a\x00\x00\x00\x48\x8b\x85\x90\xf2\xff\xff\x49\x8b\x14\xc7\x49\x8b\x4c\xc7\x08\x4d\x8b\x44\xc7\x10\x4d\x8b\x4c\xc7\x18\x41\x83\xfd\x05\x0f\x8c\xad\x00\x00\x00\x49\x8b\x44\xc7\x20\xe9\xaa\x00\x00\x00\x41\x83\xfc\x64\x75\x56\x48\x8b\x95\x90\xf2\xff\xff\x49\x8b\x04\xd7\x49\x8b\x4c\xd7\x08\x31\xdb\x41\x83\xfd\x03\x7c\x05\x49\x8b\x5c\xd7\x10\x48\x85\xc9\x0f\x84\xb3\x08\x00\x00\x48\x85\xc0\x0f\x84\xaa\x08\x00\x00\x0f\xbe\x39\x40\x0f\xb6\xf7\x83\xff\x73\x0f\x8f\x28\x07\x00\x00\x83\xfe\x54\x0f\x84\x28\x07\x00\x00\x83\xfe\x55\x0f\x84\x4d\x0a\x00\x00\xe9\x97\x0c\x00\x00\x48\x8b\x05\xf9\x9b\x00\x00\x48\x8b\x38\x48\x8d\x35\x0e\x83\x00\x00\x31\xc0\x44\x89\xe2\xe8\xaf\x77\x00\x00\x41\xbc\x01\x00\x00\x00\xe9\xc4\x0c\x00\x00\x48\x8d\x05\xcd\x82\x00\x00\x48\x8b\xb5\xb8\xf2\xff\xff\x48\x89\x74\x24\x08\x48\x89\x04\x24\xc7\x44\x24\x10\x00\x00\x00\x00\xeb\x1f\x48\x8d\x05\xac\x82\x00\x00\x48\x8b\xb5\xb8\xf2\xff\xff\x48\x89\x74\x24\x08\x48\x89\x04\x24\xc7\x44\x24\x10\x01\x00\x00\x00\x48\x8d\xbd\xc8\xf2\xff\xff\x48\x8d\xb5\x28\xf3\xff\xff\xe8\x87\x0f\x00\x00\x45\x31\xe4\xe9\x69\x0c\x00\x00\x45\x31\xe4\x45\x85\xed\x0f\x8e\x5d\x0c\x00\x00\x48\x8d\x9d\x2c\xfc\xff\xff\x8b\x85\xc0\xf2\xff\xff\xff\xc8\x44\x29\xf0\x89\x85\xc0\xf2\xff\xff\x48\x8b\x85\x90\xf2\xff\xff\x4d\x8d\x34\xc7\x4c\x8d\x3d\x2f\x84\x00\x00\x4c\x8d\xad\x40\xff\xff\xff\x4d\x8b\x26\xc7\x85\x40\xff\xff\xff\x00\x00\x00\x00\x4d\x85\xe4\x74\x43\x48\x8b\x85\xe0\xf2\xff\xff\x48\x89\xc7\x48\x89\xde\x4c\x89\xe2\x4c\x89\xe9\xe8\x18\x65\x00\x00\x85\xc0\x74\x48\x41\x89\xc4\x44\x89\xe7\xe8\xf9\x67\x00\x00\x48\x89\xc1\x31\xc0\x48\x8d\x15\x82\x84\x00\x00\x48\x89\xd7\x44\x89\xe6\x48\x89\xca\xe8\x25\x77\x00\x00\xeb\x55\x48\x8b\x05\xe6\x9a\x00\x00\x48\x8b\x00\xbe\x12\x00\x00\x00\xba\x01\x00\x00\x00\x4c\x89\xff\x48\x89\xc1\xe8\xaa\x76\x00\x00\xeb\x34\x83\xbd\x40\xff\xff\xff\x00\x48\x8d\x05\x61\x83\x00\x00\x48\x89\xc1\x75\x0a\x48\x8d\x05\x59\x83\x00\x00\x48\x89\xc1\x31\xc0\x48\x8d\x15\x5b\x84\x00\x00\x48\x89\xd7\x4c\x89\xe6\x48\x89\xca\xe8\xce\x76\x00\x00\x49\x83\xc6\x08\x45\x31\xe4\xff\x8d\xc0\xf2\xff\xff\x0f\x85\x43\xff\xff\xff\xe9\x6a\x0b\x00\x00\x45\x31\xe4\x45\x85\xed\x0f\x8e\x5e\x0b\x00\x00\x48\x8d\x9d\x2c\xfc\xff\xff\x8b\x85\xc0\xf2\xff\xff\xff\xc8\x44\x29\xf0\x89\x85\xc0\xf2\xff\xff\x48\x8b\x85\x90\xf2\xff\xff\x4d\x8d\x34\xc7\x4c\x8d\x3d\x30\x83\x00\x00\x4c\x8d\x2d\x3c\x83\x00\x00\x49\x8b\x06\x48\x85\xc0\x74\x25\x48\x8b\x8d\xe0\xf2\xff\xff\x48\x89\xcf\x48\x89\xde\x48\x89\xc2\xe8\xf6\x62\x00\x00\x89\xc1\x31\xc0\x4c\x89\xef\x89\xce\xe8\x4e\x76\x00\x00\xeb\x1f\x48\x8b\x05\x0f\x9a\x00\x00\x48\x8b\x00\xbe\x12\x00\x00\x00\xba\x01\x00\x00\x00\x4c\x89\xff\x48\x89\xc1\xe8\xd3\x75\x00\x00\x49\x83\xc6\x08\x45\x31\xe4\xff\x8d\xc0\xf2\xff\xff\x75\xa5\xe9\xcd\x0a\x00\x00\x48\x8b\x85\x90\xf2\xff\xff\x4d\x8b\x34\xc7\x49\x8b\x5c\xc7\x08\x4d\x8b\x6c\xc7\x10\x49\x8b\x4c\xc7\x18\x48\x89\x8d\xc0\xf2\xff\xff\x49\x8b\x44\xc7\x20\xc7\x85\x24\xf3\xff\xff\x00\x00\x00\x00\x4d\x85\xed\x0f\x84\x94\x06\x00\x00\x4d\x85\xf6\x0f\x84\x8b\x06\x00\x00\x48\x83\xbd\xc0\xf2\xff\xff\x00\x0f\x84\x7d\x06\x00\x00\x48\x85\xdb\x0f\x84\x74\x06\x00\x00\x48\x85\xc0\x0f\x84\x6b\x06\x00\x00\x48\x8b\x8d\xe0\xf2\xff\xff\x48\x8d\x95\x2c\xfc\xff\xff\x48\x8d\xb5\x24\xf3\xff\xff\x48\x89\x74\x24\x08\x48\x89\x04\x24\x48\x89\xcf\x48\x89\xd6\x4c\x89\xf2\x48\x89\xd9\x4d\x89\xe8\x4c\x8b\x8d\xc0\xf2\xff\xff\xe8\x98\x5c\x00\x00\x41\x89\xc7\x45\x85\xff\x0f\x84\x9c\x04\x00\x00\x44\x89\xff\xe8\x24\x66\x00\x00\x48\x89\x04\x24\x48\x8d\x35\xc6\x80\x00\x00\x45\x31\xe4\x31\xc0\x48\x8b\x95\xc0\xf2\xff\xff\x4c\x89\xf1\x48\x89\xf7\x4c\x89\xee\x49\x89\xd8\xe9\x99\x09\x00\x00\x45\x31\xe4\x45\x85\xed\x0f\x8e\xea\x09\x00\x00\x48\x8d\x9d\x2c\xfc\xff\xff\x8b\x85\xc0\xf2\xff\xff\xff\xc8\x44\x29\xf0\x89\x85\xc0\xf2\xff\xff\x48\x8b\x85\x90\xf2\xff\xff\x4d\x8d\x34\xc7\x4c\x8d\x3d\xbc\x81\x00\x00\x4c\x8d\xad\x40\xff\xff\xff\x4d\x8b\x26\xc7\x85\x40\xff\xff\xff\x00\x00\x00\x00\x4d\x85\xe4\x74\x43\x48\x8b\x85\xe0\xf2\xff\xff\x48\x89\xc7\x48\x89\xde\x4c\x89\xe2\x4c\x89\xe9\xe8\x25\x64\x00\x00\x85\xc0\x74\x48\x41\x89\xc4\x44\x89\xe7\xe8\x86\x65\x00\x00\x48\x89\xc1\x31\xc0\x48\x8d\x15\xa7\x81\x00\x00\x48\x89\xd7\x44\x89\xe6\x48\x89\xca\xe8\xb2\x74\x00\x00\xeb\x3d\x48\x8b\x05\x73\x98\x00\x00\x48\x8b\x00\xbe\x12\x00\x00\x00\xba\x01\x00\x00\x00\x4c\x89\xff\x48\x89\xc1\xe8\x37\x74\x00\x00\xeb\x1c\x8b\x8d\x40\xff\xff\xff\x31\xc0\x48\x8d\x15\x95\x81\x00\x00\x48\x89\xd7\x4c\x89\xe6\x89\xca\xe8\x73\x74\x00\x00\x49\x83\xc6\x08\x45\x31\xe4\xff\x8d\xc0\xf2\xff\xff\x0f\x85\x5b\xff\xff\xff\xe9\x0f\x09\x00\x00\x0f\x57\xc0\x0f\x29\x85\x10\xf3\xff\xff\x48\x8b\x85\xc8\xf2\xff\xff\x4c\x8d\xb5\x2c\xf8\xff\xff\x4c\x8d\xbd\x10\xf3\xff\xff\x4c\x89\x3c\x24\x48\x8d\x0d\xf5\x7e\x00\x00\x48\x8d\x1d\x45\x84\x00\x00\x4c\x8d\x05\x2d\x95\x00\x00\x4c\x8d\x0d\x3d\x84\x00\x00\x48\x89\xc7\x4c\x89\xf6\x48\x89\xca\x48\x89\xd9\xe8\xe5\x57\x00\x00\x41\x89\xc4\x45\x85\xe4\x0f\x84\x59\x03\x00\x00\x44\x89\xe7\xe8\xb1\x64\x00\x00\x48\x89\xc1\x48\x8d\x15\x37\x84\x00\x00\x31\xdb\x31\xc0\x48\x89\xd7\x44\x89\xe6\x48\x89\xca\xe8\xdb\x73\x00\x00\xe9\xb7\x03\x00\x00\x41\x83\xfd\x02\x7f\x26\x48\x8b\x05\x93\x97\x00\x00\x48\x8b\x00\x48\x8d\x0d\x85\x7e\x00\x00\xbe\x12\x00\x00\x00\xba\x01\x00\x00\x00\x48\x89\xcf\x48\x89\xc1\xe8\x50\x73\x00\x00\x48\x8b\x85\x90\xf2\xff\xff\x4d\x8b\x0c\xc7\x49\x8b\x4c\xc7\x08\x49\x8b\x54\xc7\x10\x31\xf6\x41\x83\xfd\x04\x7c\x05\x49\x8b\x74\xc7\x18\x48\x85\xf6\x48\x8d\x1d\x42\x7e\x00\x00\x48\x0f\x45\xde\x48\x85\xd2\x0f\x84\xbe\x03\x00\x00\x4d\x85\xc9\x0f\x84\xb5\x03\x00\x00\x48\x85\xc9\x0f\x84\xac\x03\x00\x00\x0f\xbe\x32\x40\x0f\xb6\xfe\x83\xfe\x73\x0f\x8f\xb7\x03\x00\x00\x83\xff\x54\x0f\x84\xb7\x03\x00\x00\x83\xff\x55\x0f\x85\x9e\x07\x00\x00\xe9\x46\x06\x00\x00\x48\x8d\x05\x7b\x85\x00\x00\x48\x89\xc7\xe8\x35\x73\x00\x00\x48\x8d\x8d\x28\xf4\xff\xff\x48\x8d\x15\xf4\x7d\x00\x00\x45\x31\xe4\x31\xc0\x48\x89\xd7\x48\x89\xce\xe8\x0b\x73\x00\x00\xe9\xba\x07\x00\x00\xc7\x85\x40\xff\xff\xff\x00\x00\x00\x00\xc7\x85\x00\xff\xff\xff\x00\x00\x00\x00\x48\x8b\x85\xe0\xf2\xff\xff\x48\x8d\x8d\x2c\xfc\xff\xff\x48\x8d\x95\x40\xff\xff\xff\x48\x8d\x9d\x00\xff\xff\xff\x48\x89\xc7\x48\x89\xce\x48\x89\xd9\xe8\x72\x58\x00\x00\x8b\x8d\x40\xff\xff\xff\x8b\x95\x00\xff\xff\xff\x48\x8d\x35\xa4\x7e\x00\x00\x31\xc0\x48\x89\xf7\x89\xce\xe8\xa9\x72\x00\x00\x48\x8d\x0d\x0f\x7f\x00\x00\x83\xbd\x40\xff\xff\xff\x00\x48\x89\xca\x75\x07\x48\x8d\x15\x00\x7f\x00\x00\x83\xbd\x00\xff\xff\xff\x00\x75\x07\x48\x8d\x0d\xf0\x7e\x00\x00\x48\x8d\x35\x9a\x7e\x00\x00\x45\x31\xe4\x31\xc0\x48\x89\xf7\x48\x89\xd6\x48\x89\xca\xe8\x65\x72\x00\x00\x48\x8b\x85\xd8\xf2\xff\xff\x48\x8d\x9d\x2c\xf6\xff\xff\x48\x89\xc7\x48\x89\xde\xe8\x66\x3e\x00\x00\x41\x89\xc6\x48\x8b\x85\xd8\xf2\xff\xff\x48\x89\xc7\x48\x89\xde\xe8\x21\x3f\x00\x00\x41\x89\xc7\x48\x8b\x85\xd8\xf2\xff\xff\x48\x89\xc7\x48\x89\xde\xe8\xdc\x3f\x00\x00\x41\x89\xc5\x48\x8b\x85\xd8\xf2\xff\xff\x48\x89\xc7\x48\x89\xde\xe8\x97\x40\x00\x00\x89\xc3\x48\x8d\x0d\x78\x7e\x00\x00\x31\xc0\x48\x89\xcf\x44\x89\xf6\x44\x89\xfa\xe8\xf4\x71\x00\x00\x48\x8d\x0d\x7f\x7e\x00\x00\x31\xc0\x48\x89\xcf\xe9\xd6\xf8\xff\xff\x48\x8b\x85\x90\xf2\xff\xff\x49\x8b\x1c\xc7\x4d\x8b\x74\xc7\x08\xc7\x85\x20\xf3\xff\xff\x00\x00\x00\x00\x48\x85\xdb\x0f\x84\x74\x02\x00\x00\x4d\x85\xf6\x0f\x84\x6b\x02\x00\x00\x48\x8b\x85\xe0\xf2\xff\xff\x4c\x8d\xbd\x2c\xfc\xff\xff\x48\x8d\x8d\x20\xf3\xff\xff\x48\x89\xc7\x4c\x89\xfe\x48\x89\xda\xe8\x5e\x5f\x00\x00\x41\x89\xc5\x83\xbd\x20\xf3\xff\xff\x00\x0f\x84\x53\x02\x00\x00\x48\x8d\x0d\xea\x7d\x00\x00\xe9\x4e\x02\x00\x00\x83\xf9\x74\x0f\x85\x04\x03\x00\x00\x41\x8a\x4c\x24\x01\x88\xca\x80\xca\x20\x0f\xb6\xd2\x83\xfa\x63\x0f\x85\xfa\x02\x00\x00\x41\x8a\x54\x24\x02\x80\xca\x20\x0f\xb6\xd2\x83\xfa\x70\x0f\x85\xe6\x02\x00\x00\x41\x8a\x54\x24\x03\x80\xca\x20\x0f\xb6\xd2\x83\xfa\x20\x0f\x85\xd2\x02\x00\x00\x48\x8d\x05\x34\x92\x00\x00\xe9\x00\x03\x00\x00\x83\xfe\x74\x0f\x85\x25\x03\x00\x00\x40\x8a\x71\x01\x40\x88\xf2\x80\xca\x20\x0f\xb6\xd2\x83\xfa\x63\x0f\x85\x1e\x03\x00\x00\x8a\x51\x02\x80\xca\x20\x0f\xb6\xd2\x83\xfa\x70\x0f\x85\x0c\x03\x00\x00\x8a\x51\x03\x80\xca\x20\x0f\xb6\xd2\x83\xfa\x20\x0f\x85\xfa\x02\x00\x00\x48\x8d\x0d\xe5\x91\x00\x00\xe9\x3b\x03\x00\x00\x44\x8b\x8d\x24\xf3\xff\xff\x48\x8d\x35\x77\x7c\x00\x00\x45\x31\xe4\x31\xc0\x48\x8b\x95\xc0\xf2\xff\xff\x4c\x89\xf1\x48\x89\xf7\x4c\x89\xee\x49\x89\xd8\xe8\xab\x70\x00\x00\xe9\x5a\x05\x00\x00\x48\x8d\x05\xb9\x83\x00\x00\x48\x89\xc7\xe8\xa3\x70\x00\x00\x4c\x8b\xa5\x10\xf3\xff\xff\x31\xdb\x4d\x85\xe4\x74\x5b\x4c\x8d\x2d\xa8\x80\x00\x00\x49\x8d\x8c\x24\xd0\x00\x00\x00\x41\x0f\xb7\x74\x24\x0c\x4d\x8d\x44\x24\x50\x45\x0f\xb7\x4c\x24\x0e\x49\x8d\x84\x24\x90\x00\x00\x00\x49\x8d\x54\x24\x10\x41\x8b\x7c\x24\x08\x89\x7c\x24\x10\x48\x89\x54\x24\x08\x48\x89\x04\x24\x31\xc0\x48\x89\xca\x89\xf1\x4c\x89\xef\x89\xde\xe8\x39\x70\x00\x00\xff\xc3\x4d\x8b\x24\x24\x4d\x85\xe4\x75\xac\x48\x8d\x85\x10\xf3\xff\xff\x48\x89\xc7\xe8\x19\x6a\x00\x00\x48\x8b\x85\xc8\xf2\xff\xff\x4c\x89\x3c\x24\x48\x8d\x0d\xd1\x7a\x00\x00\x4c\x8d\x05\x21\x80\x00\x00\x4c\x8d\x0d\x0d\x91\x00\x00\x4c\x8d\x15\x19\x80\x00\x00\x48\x89\xc7\x4c\x89\xf6\x48\x89\xca\x4c\x89\xc1\x4d\x89\xc8\x4d\x89\xd1\xe8\xbb\x53\x00\x00\x41\x89\xc6\x45\x85\xf6\x0f\x84\x64\x02\x00\x00\x44\x89\xf7\xe8\x87\x60\x00\x00\x48\x89\xc1\x48\x8d\x15\x0d\x80\x00\x00\x45\x31\xe4\x31\xc0\x48\x89\xd7\x44\x89\xf6\xe9\x0e\xf6\xff\xff\x48\x8b\x05\x76\x93\x00\x00\x48\x8b\x00\x48\x8d\x0d\x52\x7c\x00\x00\xbe\x12\x00\x00\x00\xe9\x0f\x04\x00\x00\x83\xff\x74\x0f\x85\x94\x02\x00\x00\x40\x8a\x7a\x01\x40\x88\xf8\x0c\x20\x0f\xb6\xc0\x83\xf8\x63\x0f\x85\x8e\x02\x00\x00\x8a\x42\x02\x0c\x20\x0f\xb6\xc0\x83\xf8\x70\x0f\x85\x7d\x02\x00\x00\x8a\x42\x03\x0c\x20\x0f\xb6\xc0\x83\xf8\x20\x0f\x85\x6c\x02\x00\x00\x4c\x8d\x05\x5b\x90\x00\x00\xe9\xab\x02\x00\x00\x48\x8b\x05\x0f\x93\x00\x00\x48\x8b\x00\x48\x8d\x0d\x91\x7a\x00\x00\xbe\x10\x00\x00\x00\xe9\xa8\x03\x00\x00\x48\x8d\x0d\x9b\x7b\x00\x00\x48\x8d\x15\xa2\x7c\x00\x00\x45\x31\xe4\x31\xc0\x48\x89\xd7\x48\x89\xde\x48\x89\xca\xe8\x10\x6f\x00\x00\x45\x85\xed\x74\x22\x44\x89\xef\xe8\xbd\x5f\x00\x00\x48\x89\xc1\x48\x8d\x15\x48\x7c\x00\x00\x31\xc0\x48\x89\xd7\x44\x89\xee\x48\x89\xca\xe8\xe9\x6e\x00\x00\x83\xbd\x20\xf3\xff\xff\x00\x75\x0d\x41\x81\xfd\xc5\x02\x00\x00\x0f\x85\x87\x03\x00\x00\x48\x8b\x85\xe0\xf2\xff\xff\x48\x89\xc7\x4c\x89\xfe\x48\x89\xda\x4c\x89\xf1\xe8\x05\x5a\x00\x00\x41\x89\xc7\x48\x8d\x0d\x67\x7c\x00\x00\x45\x31\xe4\x31\xc0\x48\x89\xcf\x48\x89\xde\x4c\x89\xf2\xe8\x9e\x6e\x00\x00\x45\x85\xff\x0f\x84\x49\x03\x00\x00\x44\x89\xff\xe8\x47\x5f\x00\x00\x48\x89\xc1\x48\x8d\x15\x6d\x7c\x00\x00\x45\x31\xe4\x31\xc0\x48\x89\xd7\x48\x89\xde\x44\x89\xfa\xe8\x70\x6e\x00\x00\xe9\x1f\x03\x00\x00\x83\xf9\x75\x75\x59\x41\x8a\x4c\x24\x01\xeb\x0a\x0c\x20\x0f\xb6\xc0\x83\xf8\x75\x75\x48\x80\xc9\x20\x0f\xb6\xc1\x83\xf8\x64\x75\x3d\x41\x8a\x44\x24\x02\x0c\x20\x0f\xb6\xc0\x83\xf8\x70\x75\x2e\x41\x8a\x44\x24\x03\x0c\x20\x0f\xb6\xc0\x83\xf8\x20\x75\x1f\x48\x8d\x05\x33\x8f\x00\x00\x81\x38\x54\x43\x50\x00\x0f\x84\xb4\x01\x00\x00\x81\x38\x55\x44\x50\x00\x0f\x84\xcc\x01\x00\x00\x48\x8b\x05\xd0\x91\x00\x00\x48\x8b\x00\x48\x8d\x0d\x1a\x7c\x00\x00\xe9\x69\x02\x00\x00\x83\xfe\x75\x0f\x85\x4f\x02\x00\x00\x40\x8a\x71\x01\xeb\x11\x40\x80\xcf\x20\x40\x0f\xb6\xd7\x83\xfa\x75\x0f\x85\x38\x02\x00\x00\x40\x80\xce\x20\x40\x0f\xb6\xd6\x83\xfa\x64\x0f\x85\x27\x02\x00\x00\x8a\x51\x02\x80\xca\x20\x0f\xb6\xd2\x83\xfa\x70\x0f\x85\x15\x02\x00\x00\x8a\x49\x03\x80\xc9\x20\x0f\xb6\xc9\x83\xf9\x20\x0f\x85\x03\x02\x00\x00\x48\x8d\x0d\xa9\x8e\x00\x00\x48\x8b\x95\xc8\xf2\xff\xff\x48\x8d\xb5\x2c\xf8\xff\xff\x48\x89\xd7\x48\x89\xc2\x49\x89\xd8\xe8\x49\x47\x00\x00\x89\xc1\x48\x8d\x15\x52\x7c\x00\x00\xe9\xf8\x00\x00\x00\x4c\x8b\xb5\x10\xf3\xff\xff\x4d\x85\xf6\x74\x53\x4c\x8d\x3d\x84\x7d\x00\x00\x49\x8d\x8e\xd0\x00\x00\x00\x41\x0f\xb7\x76\x0c\x4d\x8d\x46\x50\x45\x0f\xb7\x4e\x0e\x49\x8d\x86\x90\x00\x00\x00\x49\x8d\x56\x10\x41\x8b\x7e\x08\x89\x7c\x24\x10\x48\x89\x54\x24\x08\x48\x89\x04\x24\x31\xc0\x48\x89\xca\x89\xf1\x4c\x89\xff\x89\xde\xe8\x1c\x6d\x00\x00\xff\xc3\x4d\x8b\x36\x4d\x85\xf6\x75\xb4\x48\x8d\x85\x10\xf3\xff\xff\x48\x89\xc7\xe8\xfd\x66\x00\x00\x45\x31\xe4\xe9\xaf\x01\x00\x00\x83\xff\x75\x0f\x85\x53\x01\x00\x00\x40\x8a\x7a\x01\xeb\x11\x40\x80\xce\x20\x40\x0f\xb6\xf6\x83\xfe\x75\x0f\x85\x3c\x01\x00\x00\x40\x80\xcf\x20\x40\x0f\xb6\xf7\x83\xfe\x64\x0f\x85\x2b\x01\x00\x00\x8a\x42\x02\x0c\x20\x0f\xb6\xc0\x83\xf8\x70\x0f\x85\x1a\x01\x00\x00\x8a\x42\x03\x0c\x20\x0f\xb6\xc0\x83\xf8\x20\x0f\x85\x09\x01\x00\x00\x4c\x8d\x05\xaf\x8d\x00\x00\x48\x8b\x85\xc8\xf2\xff\xff\x48\x8d\x95\x2c\xf8\xff\xff\x48\x89\xc7\x48\x89\xd6\x4c\x89\xca\x49\x89\xd9\xe8\xbc\x47\x00\x00\x89\xc1\x48\x8d\x15\x28\x7b\x00\x00\x45\x31\xe4\x31\xc0\x48\x89\xd7\x89\xce\xe8\x6a\x6c\x00\x00\xe9\x19\x01\x00\x00\x4c\x8d\x65\xc0\xba\x00\x00\x00\x00\xb9\x08\x00\x00\x00\x31\xc0\x4c\x8d\x05\x69\x7a\x00\x00\xbe\x08\x00\x00\x00\x41\xb9\x06\x00\x00\x00\xeb\x22\x4c\x8d\x65\xc0\xba\x00\x00\x00\x00\xb9\x08\x00\x00\x00\x31\xc0\x4c\x8d\x05\x45\x7a\x00\x00\xbe\x08\x00\x00\x00\x41\xb9\x11\x00\x00\x00\x4c\x89\xe7\xe8\x7b\x6b\x00\x00\x48\x8b\x85\xe0\xf2\xff\xff\x48\x8d\x8d\x2c\xfc\xff\xff\x48\x8d\x55\xc8\x48\x89\x54\x24\x10\x4c\x89\x7c\x24\x08\x4c\x89\x24\x24\x48\x89\xc7\x48\x89\xce\x4c\x89\xf2\x48\x8b\x8d\xc0\xf2\xff\xff\x49\x89\xd8\x4d\x89\xe9\xe8\xd6\x54\x00\x00\x41\x89\xc7\x45\x85\xff\x74\x60\x44\x89\xff\xe8\x86\x5c\x00\x00\x48\x89\x04\x24\x48\x8d\x35\xf1\x79\x00\x00\x45\x31\xe4\x31\xc0\x48\x8b\x95\xc0\xf2\xff\xff\x48\x89\xd9\x48\x89\xf7\x4c\x89\xf6\x4d\x89\xe8\x45\x89\xf9\xe8\xa1\x6b\x00\x00\xeb\x53\x48\x8b\x05\x62\x8f\x00\x00\x48\x8b\x00\x48\x8d\x0d\x2b\x7a\x00\x00\xbe\x11\x00\x00\x00\xba\x01\x00\x00\x00\x48\x89\xcf\x48\x89\xc1\xe8\x1f\x6b\x00\x00\x45\x31\xe4\xeb\x28\x48\x8d\x35\xd6\x79\x00\x00\x45\x31\xe4\x4c\x8d\x4d\xc8\x31\xc0\x48\x8b\x95\xc0\xf2\xff\xff\x48\x89\xd9\x48\x89\xf7\x4c\x89\xf6\x4d\x89\xe8\xe8\x4c\x6b\x00\x00\x48\x8d\xbd\xc8\xf2\xff\xff\xe8\x8a\x2c\x00\x00\x48\x8b\xbd\xb0\xf2\xff\xff\xe8\x7e\x29\x00\x00\xe9\xd0\xec\xff\xff\x90\x11\xee\xff\xff\x3c\xee\xff\xff\x6e\xee\xff\xff\x7e\xee\xff\xff\xe0\xee\xff\xff\xe8\xf2\xff\xff\x69\xf3\xff\xff\x68\xf4\xff\xff\xe8\xf2\xff\xff\xe8\xf2\xff\xff\x05\xf5\xff\xff\xe8\xf2\xff\xff\xe8\xf2\xff\xff\xe8\xf2\xff\xff\xdc\xf5\xff\xff\xc3\xf6\xff\xff\xe8\xf2\xff\xff\x48\xf7\xff\xff\xe8\xf2\xff\xff\xe6\xf7\xff\xff\xe8\xf2\xff\xff\xe8\xf2\xff\xff\x18\xf8\xff\xff\xe8\xf2\xff\xff\x3b\xf9\xff\xff\x0f\x1f\x40\x00\x55\x48\x89\xe5\x41\x57\x41\x56\x41\x54\x53\x48\x81\xec\x10\x01\x00\x00\x48\x89\xf3\x49\x89\xff\x4c\x8b\x25\x69\x8e\x00\x00\x49\x8b\x04\x24\x48\x89\x45\xd8\x49\x8b\x3f\x4c\x8d\xb3\x04\x05\x00\x00\x48\x8d\x95\x70\xff\xff\xff\x4c\x89\xf6\xe8\xd0\x3b\x00\x00\x85\xc0\x74\x0e\x48\x8d\x3d\x75\x7d\x00\x00\xe8\x82\x6a\x00\x00\xeb\x15\x48\x8d\x3d\x32\x7b\x00\x00\x48\x8d\xb5\x70\xff\xff\xff\x31\xc0\xe8\x5f\x6a\x00\x00\x49\x8b\x3f\x48\x8d\x95\x30\xff\xff\xff\x48\x8d\x8d\xec\xfe\xff\xff\x4c\x8d\x85\xf0\xfe\xff\xff\x4c\x89\xf6\xe8\x99\x39\x00\x00\x85\xc0\x74\x0e\x48\x8d\x3d\x0e\x7d\x00\x00\xe8\x3b\x6a\x00\x00\xeb\x22\x8b\x95\xec\xfe\xff\xff\x48\x8d\x3d\xfb\x7a\x00\x00\x48\x8d\xb5\x30\xff\xff\xff\x48\x8d\x8d\xf0\xfe\xff\xff\x31\xc0\xe8\x0b\x6a\x00\x00\x31\xff\xe8\x82\x6a\x00\x00\x8b\x8d\xec\xfe\xff\xff\x48\x29\xc8\x48\x89\x85\xd8\xfe\xff\xff\x48\x8d\xbd\xd8\xfe\xff\xff\xe8\x76\x69\x00\x00\x48\x89\xc1\x48\x8d\x3d\xec\x7a\x00\x00\x31\xc0\x48\x89\xce\xe8\xd4\x69\x00\x00\x49\x8b\x7f\x10\x48\x81\xc3\x04\x03\x00\x00\x48\x8d\x95\xe4\xfe\xff\xff\x48\x8d\x8d\xe8\xfe\xff\xff\x48\x89\xde\xe8\x3d\x3c\x00\x00\x85\xc0\x74\x11\x48\x8d\x3d\x62\x7c\x00\x00\xe8\xaf\x69\x00\x00\xe9\x0a\x01\x00\x00\x8b\xb5\xe4\xfe\xff\xff\x48\x8d\x3d\xb3\x7a\x00\x00\x31\xc0\xe8\x8a\x69\x00\x00\x8b\x85\xe4\xfe\xff\xff\x3d\x40\x42\x0f\x00\x72\x3d\x89\xc1\x48\x69\xf1\x83\xde\x1b\x43\x48\xc1\xee\x32\xc1\xe8\x05\x48\x69\xd0\xc5\x5a\x7c\x0a\x48\xc1\xea\x27\xb8\xcd\xcc\xcc\xcc\x48\x0f\xaf\xc2\x48\xc1\xe8\x23\x6b\xc0\x0a\x29\xc2\x48\x8d\x3d\x83\x7a\x00\x00\x31\xc0\xe8\x42\x69\x00\x00\xeb\x22\x3d\xe8\x03\x00\x00\x72\x1b\x89\xc0\x48\x69\xf0\xd3\x4d\x62\x10\x48\xc1\xee\x26\x48\x8d\x3d\x6d\x7a\x00\x00\x31\xc0\xe8\x1e\x69\x00\x00\x8b\xb5\xe8\xfe\xff\xff\x48\x8d\x3d\x64\x7a\x00\x00\x31\xc0\xe8\x0a\x69\x00\x00\x8b\x85\xe8\xfe\xff\xff\x3d\x40\x42\x0f\x00\x72\x3d\x89\xc1\x48\x69\xf1\x83\xde\x1b\x43\x48\xc1\xee\x32\xc1\xe8\x05\x48\x69\xd0\xc5\x5a\x7c\x0a\x48\xc1\xea\x27\xb8\xcd\xcc\xcc\xcc\x48\x0f\xaf\xc2\x48\xc1\xe8\x23\x6b\xc0\x0a\x29\xc2\x48\x8d\x3d\x03\x7a\x00\x00\x31\xc0\xe8\xc2\x68\x00\x00\xeb\x22\x3d\xe8\x03\x00\x00\x72\x1b\x89\xc0\x48\x69\xf0\xd3\x4d\x62\x10\x48\xc1\xee\x26\x48\x8d\x3d\xed\x79\x00\x00\x31\xc0\xe8\x9e\x68\x00\x00\xbf\x0a\x00\x00\x00\xe8\x9a\x68\x00\x00\x49\x8b\x3f\x48\x8d\x55\xb0\x4c\x89\xf6\xe8\x9f\x3c\x00\x00\x89\xc1\x85\xc9\x74\x12\x48\x8d\x3d\xe2\x79\x00\x00\x31\xc0\x89\xce\xe8\x6f\x68\x00\x00\xeb\x12\x48\x8d\x3d\x6a\x77\x00\x00\x48\x8d\x75\xb0\x31\xc0\xe8\x5b\x68\x00\x00\x49\x8b\x04\x24\x48\x3b\x45\xd8\x75\x10\x48\x81\xc4\x10\x01\x00\x00\x5b\x41\x5c\x41\x5e\x41\x5f\x5d\xc3\xe8\xa6\x67\x00\x00\x66\x0f\x1f\x44\x00\x00\x55\x48\x89\xe5\x41\x57\x41\x56\x41\x55\x41\x54\x53\x48\x81\xec\xc8\x00\x00\x00\x4d\x89\xc4\x49\x89\xcd\x49\x89\xd6\x49\x89\xf7\x48\x8b\x1d\xd1\x8b\x00\x00\x48\x8b\x03\x48\x89\x45\xd0\x4d\x85\xf6\x74\x2e\x4d\x85\xed\x74\x29\x4d\x85\xe4\x74\x24\x4d\x85\xc9\x74\x1f\x8b\x75\x20\x41\x0f\xbe\x01\x0f\xb6\xc8\x83\xf8\x73\x7f\x35\x83\xf9\x54\x74\x35\x83\xf9\x55\x0f\x85\xde\x00\x00\x00\xeb\x73\x48\x8b\x05\x98\x8b\x00\x00\x48\x8b\x08\x48\x8d\x3d\x1a\x73\x00\x00\xbe\x10\x00\x00\x00\xba\x01\x00\x00\x00\xe8\x5b\x67\x00\x00\xe9\x82\x02\x00\x00\x83\xf9\x74\x75\x44\x41\x8a\x49\x01\x80\xc9\x20\x0f\xb6\xc9\x83\xf9\x63\x75\x29\x41\x8a\x49\x02\x80\xc9\x20\x0f\xb6\xc9\x83\xf9\x70\x75\x1a\x41\x8a\x49\x03\x80\xc9\x20\x0f\xb6\xc9\x83\xf9\x20\x75\x0b\x89\xf3\x48\x8d\x05\x7f\x88\x00\x00\xeb\x44\x0c\x20\x0f\xb6\xc0\x83\xf8\x75\x74\x07\xeb\x6e\x83\xf9\x75\x75\x69\x41\x8a\x41\x01\x0c\x20\x0f\xb6\xc0\x83\xf8\x64\x75\x5b\x41\x8a\x41\x02\x0c\x20\x0f\xb6\xc0\x83\xf8\x70\x75\x4d\x41\x8a\x41\x03\x0c\x20\x0f\xb6\xc0\x83\xf8\x20\x75\x3f\x89\xf3\x48\x8d\x05\x3d\x88\x00\x00\x48\x89\x85\x40\xff\xff\xff\x48\x89\xbd\x48\xff\xff\xff\x48\x8b\x3f\x49\x81\xc7\x04\x05\x00\x00\x48\x8d\x55\xa0\x4c\x89\xfe\xe8\x25\x3b\x00\x00\x85\xc0\x74\x33\x48\x8d\x3d\x6a\x7a\x00\x00\xe8\x07\x67\x00\x00\xeb\x37\x48\x8b\x05\xbc\x8a\x00\x00\x48\x8b\x08\x48\x8d\x3d\x06\x75\x00\x00\xbe\x11\x00\x00\x00\xba\x01\x00\x00\x00\xe8\x7f\x66\x00\x00\xe9\x9f\x01\x00\x00\x48\x8d\x3d\xd1\x75\x00\x00\x48\x8d\x75\xa0\x31\xc0\xe8\xc2\x66\x00\x00\x85\xdb\x48\x8b\x85\x48\xff\xff\xff\x48\x8b\x38\x48\x8b\x5d\x10\x74\x5a\x48\x8d\x85\x54\xff\xff\xff\x48\x89\x85\x38\xff\xff\xff\x48\x89\x44\x24\x18\x48\x89\x5c\x24\x10\x48\x8b\x85\x40\xff\xff\xff\x48\x89\x04\x24\x48\xc7\x44\x24\x08\x00\x00\x00\x00\x4c\x89\xfe\x4c\x89\xe2\x4c\x89\xe9\x4d\x89\xf0\x4c\x8b\x4d\x18\xe8\xe9\x3d\x00\x00\x89\xc3\x85\xdb\x74\x72\x89\xdf\xe8\x1c\x57\x00\x00\x49\x89\xc1\x48\x8d\x3d\x74\x75\x00\x00\xeb\x45\x48\x89\x5c\x24\x10\x48\x8b\x85\x40\xff\xff\xff\x48\x89\x04\x24\x48\xc7\x44\x24\x08\x00\x00\x00\x00\x4c\x89\xfe\x4c\x89\xe2\x4c\x89\xe9\x4d\x89\xf0\x4c\x8b\x4d\x18\xe8\x92\x3b\x00\x00\x89\xc3\x85\xdb\x74\x24\x89\xdf\xe8\xd5\x56\x00\x00\x49\x89\xc1\x48\x8d\x3d\x65\x75\x00\x00\x31\xc0\x4c\x89\xea\x4c\x89\xf1\x41\x89\xd8\x4c\x89\xe6\xe8\xfe\x65\x00\x00\x4c\x89\xa5\x38\xff\xff\xff\x48\x8b\x85\x48\xff\xff\xff\x48\x8b\x38\x4c\x8d\xa5\x60\xff\xff\xff\x4c\x89\x64\x24\x18\x48\x8d\x85\x5a\xff\xff\xff\x48\x89\x04\x24\x48\xc7\x44\x24\x10\x00\x00\x00\x00\x48\xc7\x44\x24\x08\x00\x00\x00\x00\x4c\x8d\x8d\x70\xff\xff\xff\x45\x31\xc0\x4c\x89\xfe\x4c\x8b\xad\x38\xff\xff\xff\x4c\x89\xea\x4c\x8b\xbd\x40\xff\xff\xff\x4c\x89\xf9\xe8\xc8\x46\x00\x00\x89\xc3\x85\xdb\x74\x1f\x89\xdf\xe8\x4b\x56\x00\x00\x48\x89\xc1\x48\x8d\x3d\x10\x75\x00\x00\x31\xc0\x89\xde\x48\x89\xca\xe8\x7b\x65\x00\x00\xeb\x44\x48\x8d\x3d\x33\x75\x00\x00\x4c\x8d\xb5\x70\xff\xff\xff\x48\x8d\x9d\x5a\xff\xff\xff\x31\xc0\x4c\x89\xf6\x48\x89\xda\xe8\x57\x65\x00\x00\x4c\x89\x24\x24\x48\x8d\x3d\x26\x75\x00\x00\x48\x8d\x75\xa0\x31\xc0\x4c\x89\xea\x4c\x89\xf9\x4d\x89\xf0\x49\x89\xd9\xe8\x35\x65\x00\x00\x48\x8b\x1d\xf0\x88\x00\x00\x48\x8b\x03\x48\x3b\x45\xd0\x75\x12\x48\x81\xc4\xc8\x00\x00\x00\x5b\x41\x5c\x41\x5d\x41\x5e\x41\x5f\x5d\xc3\xe8\x78\x64\x00\x00\x90\x90\x90\x90\x90\x90\x90\x90\x55\x48\x89\xe5\x41\x57\x41\x56\x41\x55\x41\x54\x53\x48\x81\xec\xa8\x08\x00\x00\x48\x89\xb5\x48\xf7\xff\xff\x89\xbd\xa8\xf7\xff\xff\x48\x8b\x05\xa0\x88\x00\x00\x48\x8b\x00\x48\x89\x45\xd0\xbf\x00\x08\x00\x00\xe8\xa9\x64\x00\x00\x49\x89\xc5\xbf\x00\x08\x00\x00\xe8\x9c\x64\x00\x00\x48\x89\x85\x80\xf7\xff\xff\xc7\x85\xac\xf7\xff\xff\x00\x08\x00\x00\xb8\xff\xff\xff\xff\x45\x31\xe4\xb9\x00\x00\x00\x00\x48\x89\x8d\x78\xf7\xff\xff\xba\x00\x00\x00\x00\x31\xff\xc7\x85\x74\xf7\xff\xff\x00\x08\x00\x00\x31\xc9\x48\x89\x8d\x90\xf7\xff\xff\x31\xc9\x48\x89\x8d\x58\xf7\xff\xff\xc6\x85\xb0\xf7\xff\xff\x00\x48\x89\x95\xa0\xf7\xff\xff\x89\x85\x8c\xf7\xff\xff\x45\x89\xe0\x41\x89\xfe\x0f\x1f\x84\x00\x00\x00\x00\x00\x44\x89\xc3\xba\x00\x08\x00\x00\xb9\x88\x13\x00\x00\x45\x31\xc0\x8b\xbd\xa8\xf7\xff\xff\x48\x8d\xb5\xd0\xf7\xff\xff\xe8\x5e\x5e\x00\x00\x41\x89\xc7\x45\x85\xff\x0f\x8e\xb1\x06\x00\x00\x85\xdb\x0f\x85\x2a\x03\x00\x00\x43\x8d\x1c\x37\x3b\x9d\xac\xf7\xff\xff\x76\x15\x89\xde\x4c\x89\xef\xe8\x22\x64\x00\x00\x49\x89\xc5\x89\xd8\x89\x85\xac\xf7\xff\xff\x44\x89\xf7\x4c\x01\xef\x49\x63\xd7\x48\x8d\xb5\xd0\xf7\xff\xff\xe8\xd2\x63\x00\x00\x8d\x43\xff\x45\x31\xc0\x85\xc0\x41\x89\xde\xb9\x00\x00\x00\x00\x7e\x82\xeb\x10\x45\x31\xe4\x89\xd6\xe9\xa6\x00\x00\x00\x66\x0f\x1f\x44\x00\x00\x48\x63\xd1\x41\x0f\xb6\x74\x15\x00\x83\xfe\x0a\x75\x22\x41\x0f\xb6\x7c\x15\x01\x48\xff\xc2\x89\xd6\x83\xff\x0a\x75\x62\x83\xc1\x02\x41\x89\xcc\xeb\x7a\x66\x2e\x0f\x1f\x84\x00\x00\x00\x00\x00\x40\x0f\xb6\xf6\x83\xfe\x0d\x75\x57\x41\x0f\xb6\x74\x15\x01\x83\xfe\x0a\x75\x53\x48\x8d\x72\x02\x39\xde\x7d\x34\x41\x0f\xb6\x7c\x35\x00\x83\xff\x0d\x41\xbc\x00\x00\x00\x00\x75\x43\x48\x83\xc2\x03\x39\xda\x7d\x35\x41\x0f\xb6\x74\x15\x00\x83\xfe\x0a\x75\x80\x83\xc1\x04\x41\x89\xcc\x89\xd6\xeb\x26\x66\x0f\x1f\x44\x00\x00\x45\x31\xe4\xeb\x1b\x66\x66\x2e\x0f\x1f\x84\x00\x00\x00\x00\x00\x45\x31\xe4\x89\xce\xeb\x09\x48\xff\xc2\x45\x31\xe4\x89\xd6\x90\x89\xf1\xff\xc1\x39\xc1\x7d\x09\x45\x85\xe4\x0f\x84\x4f\xff\xff\xff\x45\x85\xe4\x41\x89\xde\x0f\x84\xb3\xfe\xff\xff\x41\x8d\x7c\x24\xff\x89\xbd\x54\xf7\xff\xff\x85\xff\x0f\x8e\xc6\x01\x00\x00\x49\x8d\x45\x01\x48\x89\x85\x40\xf7\xff\xff\x45\x31\xc0\x31\xd2\x31\xf6\x45\x31\xf6\x66\x66\x2e\x0f\x1f\x84\x00\x00\x00\x00\x00\x49\x63\xce\x45\x0f\xb6\x7c\x0d\x00\x39\xf2\x0f\x9e\xc0\x41\x83\xff\x3a\x75\x4c\x84\xc0\x74\x48\x41\x39\xfe\x0f\x8d\xef\x00\x00\x00\x66\x66\x66\x66\x66\x66\x2e\x0f\x1f\x84\x00\x00\x00\x00\x00\x41\x0f\xb6\x54\x0d\x01\x83\xfa\x09\x74\x08\x0f\xb6\xc2\x83\xf8\x20\x75\x07\x48\xff\xc1\x39\xf9\x7c\xe6\x44\x8d\x41\x01\xe9\x43\x01\x00\x00\x66\x66\x66\x66\x2e\x0f\x1f\x84\x00\x00\x00\x00\x00\x41\x0f\xb6\xc7\x83\xf8\x0a\x74\x09\x83\xf8\x0d\x0f\x85\xa7\x00\x00\x00\x89\xd1\x29\xf1\x0f\x8e\xc7\x00\x00\x00\x41\x39\xd0\x0f\x8e\xbe\x00\x00\x00\x44\x89\x85\x60\xf7\xff\xff\x48\x89\x9d\x98\xf7\xff\xff\x48\x63\xfe\x4c\x01\xef\x48\x89\xbd\x68\xf7\xff\xff\x48\x63\xd1\x48\x8d\x35\xb3\x75\x00\x00\x48\x89\xd3\xe8\x84\x62\x00\x00\x85\xc0\x74\x6b\x48\x8b\xbd\x68\xf7\xff\xff\x48\x8d\x35\xa8\x75\x00\x00\x48\x89\xda\xe8\x6a\x62\x00\x00\x85\xc0\x75\x66\x48\x63\xbd\x60\xf7\xff\xff\x4c\x01\xef\xba\x07\x00\x00\x00\x48\x8d\x35\x98\x75\x00\x00\xe8\x4b\x62\x00\x00\x85\xc0\xb8\x01\x00\x00\x00\x48\x8b\x8d\x78\xf7\xff\xff\x0f\x44\xc8\x48\x89\x8d\x78\xf7\xff\xff\xeb\x31\x66\x66\x2e\x0f\x1f\x84\x00\x00\x00\x00\x00\x45\x8d\x46\x01\x44\x89\xf1\xeb\x7d\x44\x89\xf1\x41\x89\xd6\xeb\x75\x48\x63\xbd\x60\xf7\xff\xff\x4c\x01\xef\xe8\x16\x61\x00\x00\x89\x85\x8c\xf7\xff\xff\x48\x8b\x9d\x98\xf7\xff\xff\x8b\xbd\x54\xf7\xff\xff\x45\x31\xc0\x41\x39\xde\x7d\x45\x49\x63\xc6\x48\x03\x85\x40\xf7\xff\xff\xeb\x12\x66\x0f\x1f\x84\x00\x00\x00\x00\x00\x44\x8a\x38\x41\xff\xc6\x48\xff\xc0\x41\x0f\xb6\xcf\x83\xf9\x0a\x74\x05\x83\xf9\x0d\x75\x19\x41\x8d\x4e\x01\x39\xd9\x7c\xe1\x89\xce\x41\x89\xce\xeb\x10\x66\x2e\x0f\x1f\x84\x00\x00\x00\x00\x00\x44\x89\xf1\x44\x89\xf6\xff\xc1\x39\xf9\x44\x89\xf2\x41\x89\xce\x0f\x8c\x5a\xfe\xff\xff\x41\x89\xdf\x45\x29\xe7\x49\x63\xf4\x4c\x01\xee\x49\x63\xd7\xb9\x00\x08\x00\x00\x48\x8d\xbd\xd0\xf7\xff\xff\xe8\x6e\x60\x00\x00\x48\x89\xdf\x45\x85\xe4\x75\x18\x45\x31\xe4\xe9\x8a\x02\x00\x00\x66\x2e\x0f\x1f\x84\x00\x00\x00\x00\x00\x44\x89\xf7\x41\x89\xdc\x48\x89\xbd\x98\xf7\xff\xff\x48\x8b\x85\x78\xf7\xff\xff\x85\xc0\x0f\x84\x76\x02\x00\x00\x45\x31\xf6\x45\x85\xff\x48\x8b\x9d\x58\xf7\xff\xff\x0f\x8e\x51\x02\x00\x00\x48\x8b\x85\x90\xf7\xff\xff\x41\x89\xc0\x48\x8b\x35\x70\x84\x00\x00\x48\x8b\x85\xa0\xf7\xff\xff\x85\xc0\x0f\x85\x51\x01\x00\x00\x85\xdb\x75\x3d\x4d\x63\xf6\x42\x0f\xb6\x84\x35\xd0\xf7\xff\xff\x83\xf8\x0d\x0f\x94\xc0\x0f\xb6\xc0\x41\x01\xc6\x45\x39\xfe\x7d\x20\x49\x63\xc6\x0f\xb6\x84\x05\xd0\xf7\xff\xff\x83\xf8\x0a\x0f\x94\xc0\x0f\xb6\xc0\x44\x01\xf0\x41\x89\xc6\x66\x0f\x1f\x44\x00\x00\x45\x39\xfe\x7d\x4b\x4d\x63\xf6\x0f\x1f\x84\x00\x00\x00\x00\x00\x4a\x0f\xbe\x84\x35\xd0\xf7\xff\xff\x48\x85\xc0\x78\x32\xf7\x44\x86\x3c\x00\x00\x01\x00\x74\x28\x83\xfb\x1e\x77\x23\x89\xd9\xff\xc3\x88\x84\x0d\xb0\xf7\xff\xff\xc6\x84\x1d\xb0\xf7\xff\xff\x00\x49\xff\xc6\x45\x39\xfe\x7c\xc8\x0f\x1f\x84\x00\x00\x00\x00\x00\x49\x63\xc6\x48\x8d\x84\x05\xd0\xf7\xff\xff\x0f\x1f\x44\x00\x00\x45\x39\xfe\x7d\x29\x0f\xb6\x08\x83\xf9\x0d\x0f\x95\xc2\x41\xff\xc6\x83\xf9\x0a\x74\x07\x48\xff\xc0\x84\xd2\x75\xe3\x0f\xb6\xc1\x41\x8d\x4e\xff\x83\xf8\x0d\x41\x0f\x44\xce\x41\x89\xce\x45\x39\xfe\x0f\x8d\xc3\x01\x00\x00\x49\x63\xc6\x0f\xb6\x84\x05\xd0\xf7\xff\xff\x83\xf8\x0a\x0f\x85\x05\xff\xff\xff\x31\xf6\x85\xdb\x48\x8d\x85\xb0\xf7\xff\xff\x0f\x84\x22\x02\x00\x00\x0f\x1f\x40\x00\x48\x89\xdf\x0f\xbe\x10\x88\xd3\x80\xc3\xd0\x89\xf1\xc1\xe1\x04\x0f\xb6\xf3\x83\xfe\x09\x77\x08\x83\xc2\xd0\xeb\x09\x0f\x1f\x00\x83\xca\x20\x83\xc2\xa9\x89\xd6\x48\x89\xfb\x01\xce\x48\xff\xc0\xff\xcb\x75\xcc\xc6\x85\xb0\xf7\xff\xff\x00\x85\xf6\x0f\x84\xe2\x01\x00\x00\x31\xdb\x41\xff\xc6\xeb\x0d\x66\x0f\x1f\x44\x00\x00\x48\x8b\xb5\xa0\xf7\xff\xff\x48\x89\xb5\xa0\xf7\xff\xff\x44\x89\xf8\x44\x29\xf0\x39\xc6\x0f\x4e\xc6\x48\x89\x85\x68\xf7\xff\xff\x42\x8d\x0c\x00\x3b\x8d\x74\xf7\xff\xff\x76\x44\x8b\x85\x8c\xf7\xff\xff\x39\xc8\x0f\x4c\xc1\x48\x89\x8d\x90\xf7\xff\xff\x89\x85\x74\xf7\xff\xff\x89\xc6\x48\x8b\xbd\x80\xf7\xff\xff\x4c\x89\x85\x80\xf7\xff\xff\xe8\x15\x5f\x00\x00\x4c\x8b\x85\x80\xf7\xff\xff\xeb\x1c\x66\x66\x66\x66\x66\x2e\x0f\x1f\x84\x00\x00\x00\x00\x00\x48\x89\x8d\x90\xf7\xff\xff\x48\x8b\x85\x80\xf7\xff\xff\x48\x89\x85\x80\xf7\xff\xff\x44\x89\xc7\x48\x01\xc7\x49\x63\xc6\x48\x8d\xb4\x05\xd0\xf7\xff\xff\x48\x8b\x85\x68\xf7\xff\xff\x89\xc2\xe8\x9a\x5e\x00\x00\x48\x8b\x8d\x68\xf7\xff\xff\x41\x01\xce\x48\x8b\x85\xa0\xf7\xff\xff\x29\xc8\x48\x89\x85\xa0\xf7\xff\xff\x45\x39\xfe\x48\x8b\xbd\x98\xf7\xff\xff\x0f\x8c\xc1\xfd\xff\xff\x48\x89\x9d\x58\xf7\xff\xff\x66\x66\x2e\x0f\x1f\x84\x00\x00\x00\x00\x00\x8b\x85\x8c\xf7\xff\xff\x48\x8b\x95\xa0\xf7\xff\xff\xe9\xc3\x00\x00\x00\x8b\xb5\x8c\xf7\xff\xff\x85\xf6\x0f\x9f\xc0\x48\x8b\x9d\x90\xf7\xff\xff\x41\x8d\x0c\x1f\x39\xf1\x0f\x9f\xc1\x89\xf2\x29\xda\x84\xc1\x44\x0f\x45\xfa\x45\x8d\x34\x1f\x44\x3b\xb5\x74\xf7\xff\xff\x76\x41\x48\x89\xbd\x98\xf7\xff\xff\x44\x39\xf6\x89\xf0\x41\x0f\x4c\xc6\x89\x85\x74\xf7\xff\xff\x89\xc6\x48\x8b\xbd\x80\xf7\xff\xff\xe8\x26\x5e\x00\x00\xeb\x29\x48\x89\x9d\x58\xf7\xff\xff\x31\xd2\x44\x89\xc0\x48\x89\x85\x90\xf7\xff\xff\x8b\x85\x8c\xf7\xff\xff\xeb\x50\x48\x89\xbd\x98\xf7\xff\xff\x48\x8b\x85\x80\xf7\xff\xff\x48\x89\x85\x80\xf7\xff\xff\x89\xdf\x48\x01\xc7\x49\x63\xd7\x48\x8d\xb5\xd0\xf7\xff\xff\xe8\xb0\x5d\x00\x00\x31\xc0\x48\x89\x85\x78\xf7\xff\xff\x44\x89\xf0\x48\x89\x85\x90\xf7\xff\xff\x8b\x85\x8c\xf7\xff\xff\x48\x8b\x95\xa0\xf7\xff\xff\x48\x8b\xbd\x98\xf7\xff\xff\x85\xc0\x0f\x8e\x28\xf9\xff\xff\x48\x8b\x8d\x90\xf7\xff\xff\x39\xc1\x0f\x8c\x19\xf9\xff\xff\xeb\x11\xc6\x85\xb0\xf7\xff\xff\x00\x44\x89\xc0\x48\x89\x85\x90\xf7\xff\xff\x4c\x89\xef\xe8\x09\x5d\x00\x00\x48\x8b\x85\x48\xf7\xff\xff\x48\x8b\x8d\x90\xf7\xff\xff\x89\x08\x85\xc9\x74\x09\x48\x8b\x85\x80\xf7\xff\xff\xeb\x0e\x48\x8b\xbd\x80\xf7\xff\xff\xe8\xe0\x5c\x00\x00\x31\xc0\x48\x8b\x0d\xff\x80\x00\x00\x48\x8b\x09\x48\x3b\x4d\xd0\x75\x12\x48\x81\xc4\xa8\x08\x00\x00\x5b\x41\x5c\x41\x5d\x41\x5e\x41\x5f\x5d\xc3\xe8\x87\x5c\x00\x00\x0f\x1f\x80\x00\x00\x00\x00\x55\x48\x89\xe5\x41\x57\x41\x56\x41\x55\x41\x54\x53\x48\x83\xec\x38\x4d\x89\xc6\x49\x89\xff\x4c\x8b\x25\xba\x80\x00\x00\x49\x8b\x04\x24\x48\x89\x45\xd0\x31\xdb\x4d\x85\xff\x0f\x84\xc0\x02\x00\x00\x48\x89\x75\xb8\x48\x89\x55\xa8\x48\x89\x4d\xb0\x48\x8d\x35\x82\x70\x00\x00\x4c\x89\xff\xe8\x3c\x5d\x00\x00\x49\x89\xc5\x4d\x85\xed\x0f\x84\x99\x02\x00\x00\x41\x0f\xb6\x07\x83\xf8\x68\x0f\x85\x8c\x02\x00\x00\x41\x0f\xb6\x47\x01\x83\xf8\x74\x0f\x85\x7e\x02\x00\x00\x41\x0f\xb6\x47\x02\x83\xf8\x74\x0f\x85\x70\x02\x00\x00\x41\x0f\xb6\x47\x03\x83\xf8\x70\x0f\x85\x62\x02\x00\x00\x49\x83\xc5\x03\xbe\x01\x01\x00\x00\x48\x8b\x7d\xb8\xe8\xc7\x5b\x00\x00\x41\x0f\xb6\x45\x00\x83\xf8\x5b\x0f\x85\x3f\x01\x00\x00\xbe\x25\x00\x00\x00\x4c\x89\xef\xe8\xa2\x5c\x00\x00\x49\x89\xc7\xbe\x5d\x00\x00\x00\x4c\x89\xef\xe8\x92\x5c\x00\x00\x49\x89\xc4\x4d\x85\xe4\x74\x7d\x4d\x85\xff\x74\x78\x4d\x39\xe7\x73\x73\x4d\x85\xf6\x74\x6e\x49\x8d\x77\x01\x41\x0f\xb6\x47\x01\x83\xf8\x32\x75\x11\x41\x0f\xb6\x47\x02\x83\xf8\x35\x75\x07\x49\x83\xc7\x03\x4c\x89\xfe\x4c\x89\xe0\x48\x29\xf0\x83\xf8\x0f\x48\x98\x41\xbf\x0f\x00\x00\x00\x4c\x0f\x4e\xf8\x48\x8d\x7d\xc0\xb9\x10\x00\x00\x00\x4c\x89\xfa\xe8\x4c\x5b\x00\x00\x42\xc6\x44\x3d\xc0\x00\x48\x8d\x7d\xc0\xe8\xaf\x5b\x00\x00\x41\x89\x06\x85\xc0\x75\x13\x48\x8d\x7d\xc0\x31\xf6\xba\x0a\x00\x00\x00\xe8\x40\x5c\x00\x00\x41\x89\x06\xbe\x2f\x00\x00\x00\x4c\x89\xef\xe8\x00\x5c\x00\x00\x49\x89\xc6\x4d\x85\xe4\x0f\x84\x84\x00\x00\x00\x4d\x85\xf6\x74\x7f\x49\x8d\x5c\x24\x01\x48\x89\xd8\x4c\x29\xe8\xba\x00\x01\x00\x00\x3d\x00\x01\x00\x00\x7f\x03\x48\x63\xd0\x48\x8b\x7d\xb8\x4c\x89\xee\xe8\xed\x5b\x00\x00\x0f\xb6\x03\x83\xf8\x3a\x0f\x85\x31\x01\x00\x00\x48\x8b\x7d\xa8\x66\xc7\x07\x00\x00\x41\x8a\x44\x24\x02\x04\xd0\x0f\xb6\xc0\x83\xf8\x09\x48\x8b\x75\xb0\x0f\x87\x1e\x01\x00\x00\x49\x8d\x44\x24\x03\x31\xc9\x6b\xc9\x0a\x66\x89\x0f\x0f\xbe\x50\xff\x8d\x4c\x11\xd0\x66\x89\x0f\x8a\x10\x80\xc2\xd0\x0f\xb6\xd2\x48\xff\xc0\x83\xfa\x0a\x72\xdf\xe9\xf1\x00\x00\x00\xbe\x3a\x00\x00\x00\x4c\x89\xef\xe8\x63\x5b\x00\x00\x49\x89\xc6\xbe\x2f\x00\x00\x00\x4c\x89\xef\xe8\x53\x5b\x00\x00\x48\x85\xc0\x48\x8b\x0d\xc3\x7e\x00\x00\x49\x89\xcc\x0f\x84\xd3\x00\x00\x00\x4d\x85\xf6\x74\x6e\x49\x39\xc6\x77\x69\x48\x89\xc3\x4d\x89\xe7\x4c\x89\xf0\x4c\x29\xe8\xba\x00\x01\x00\x00\x3d\x00\x01\x00\x00\x7f\x03\x48\x63\xd0\x48\x8b\x7d\xb8\x4c\x89\xee\xe8\x33\x5b\x00\x00\x48\x8b\x55\xa8\x66\xc7\x02\x00\x00\x41\x8a\x46\x01\x04\xd0\x0f\xb6\xc0\x83\xf8\x09\x77\x5b\x49\x83\xc6\x02\x31\xc0\x6b\xc0\x0a\x66\x89\x02\x41\x0f\xbe\x4e\xff\x8d\x44\x08\xd0\x66\x89\x02\x41\x8a\x0e\x80\xc1\xd0\x0f\xb6\xc9\x49\xff\xc6\x83\xf9\x0a\x72\xdd\xeb\x30\x4d\x89\xe7\x48\x89\xc1\x48\x89\xcb\x4c\x29\xe8\xba\x00\x01\x00\x00\x3d\x00\x01\x00\x00\x7f\x03\x48\x63\xd0\x48\x8b\x7d\xb8\x4c\x89\xee\xe8\xca\x5a\x00\x00\x48\x8b\x45\xa8\x66\xc7\x00\x50\x00\x48\x8b\x45\xb0\x48\x89\x18\xbb\x01\x00\x00\x00\x4d\x89\xfc\xeb\x1f\x48\x8b\x45\xa8\x66\xc7\x00\x50\x00\x48\x8b\x75\xb0\x4c\x89\x36\xbb\x01\x00\x00\x00\x48\x8b\x0d\xea\x7d\x00\x00\x49\x89\xcc\x49\x8b\x04\x24\x48\x3b\x45\xd0\x75\x11\x89\xd8\x48\x83\xc4\x38\x5b\x41\x5c\x41\x5d\x41\x5e\x41\x5f\x5d\xc3\xe8\x6f\x59\x00\x00\x66\x66\x66\x66\x66\x66\x2e\x0f\x1f\x84\x00\x00\x00\x00\x00\x55\x48\x89\xe5\x41\x56\x53\x48\x81\xec\x30\x01\x00\x00\x48\x89\xf3\x4c\x8b\x35\xa0\x7d\x00\x00\x49\x8b\x06\x48\x89\x45\xe8\x89\x95\xdc\xfe\xff\xff\xc7\x03\x00\x00\x00\x00\x48\x8d\xb5\xe0\xfe\xff\xff\x48\x8d\x95\xda\xfe\xff\xff\x48\x8d\x8d\xd0\xfe\xff\xff\x4c\x8d\x85\xdc\xfe\xff\xff\xe8\x94\xfc\xff\xff\x89\xc1\x31\xc0\x85\xc9\x74\x2c\x48\x8b\x95\xd0\xfe\xff\xff\x8b\x85\xdc\xfe\xff\xff\x0f\xb7\xb5\xda\xfe\xff\xff\x89\x04\x24\x48\x8d\xbd\xe0\xfe\xff\xff\x45\x31\xc0\x45\x31\xc9\x48\x89\xd9\xe8\x20\x00\x00\x00\x49\x8b\x0e\x48\x3b\x4d\xe8\x75\x0c\x48\x81\xc4\x30\x01\x00\x00\x5b\x41\x5e\x5d\xc3\xe8\xc6\x58\x00\x00\x66\x0f\x1f\x44\x00\x00\x55\x48\x89\xe5\x41\x57\x41\x56\x41\x55\x41\x54\x53\x48\x81\xec\xc8\x08\x00\x00\x44\x89\x8d\x3c\xf7\xff\xff\x4d\x89\xc6\x48\x89\x8d\x30\xf7\xff\xff\x48\x89\x95\x40\xf7\xff\xff\x41\x89\xf5\x49\x89\xfc\x8b\x55\x10\x48\x8b\x05\xdc\x7c\x00\x00\x48\x8b\x00\x48\x89\x45\xd0\xc7\x01\x00\x00\x00\x00\xe8\xe2\x4b\x00\x00\x41\x89\xc7\x31\xdb\x45\x85\xff\x0f\x88\x30\x01\x00\x00\x4d\x85\xf6\x74\x7c\xc7\x85\x4c\xf7\xff\xff\x80\x00\x00\x00\x48\x8d\xb5\x50\xf7\xff\xff\x48\x8d\x95\x4c\xf7\xff\xff\x44\x89\xff\xe8\x93\x58\x00\x00\x85\xc0\x0f\x88\x2d\x01\x00\x00\x8b\xb5\x4c\xf7\xff\xff\xc7\x04\x24\x0a\x00\x00\x00\x48\x8d\xbd\x50\xf7\xff\xff\x45\x31\xc0\x45\x31\xc9\x4c\x89\xf2\x8b\x8d\x3c\xf7\xff\xff\xe8\x5d\x58\x00\x00\x85\xc0\x74\x28\x48\x8b\x0d\x64\x7c\x00\x00\x48\x8b\x19\x89\xc7\xe8\x3c\x58\x00\x00\x48\x89\xc1\x48\x8d\x35\x46\x6c\x00\x00\x31\xc0\x48\x89\xdf\x48\x89\xca\xe8\x0d\x58\x00\x00\x41\x0f\xb7\xf5\xba\x00\x00\x00\x00\xb9\x00\x08\x00\x00\x31\xc0\x89\x74\x24\x10\x4c\x89\x64\x24\x08\x48\x8d\x35\x06\x70\x00\x00\x48\x89\x34\x24\x4c\x8d\x05\x29\x6c\x00\x00\x31\xdb\x48\x8d\xbd\xd0\xf7\xff\xff\xbe\x00\x08\x00\x00\x4c\x8b\x8d\x40\xf7\xff\xff\xe8\x98\x57\x00\x00\x41\x89\xc6\x45\x85\xf6\x7e\x30\x66\x0f\x1f\x44\x00\x00\x48\x63\xc3\x48\x8d\xb4\x05\xd0\xf7\xff\xff\x44\x89\xf1\x29\xc1\x48\x63\xd1\x31\xc9\x44\x89\xff\xe8\x33\x58\x00\x00\x85\xc0\x78\x25\x01\xd8\x41\x39\xc6\x89\xc3\x7f\xd6\x44\x89\xff\x48\x8b\xb5\x30\xf7\xff\xff\xe8\xe7\xf2\xff\xff\x48\x89\xc3\x44\x89\xff\xe8\x64\x57\x00\x00\xeb\x16\x48\x8d\x3d\x1b\x6c\x00\x00\xe8\xc8\x57\x00\x00\x44\x89\xff\xe8\x4e\x57\x00\x00\x31\xdb\x48\x8b\x05\x85\x7b\x00\x00\x48\x8b\x00\x48\x3b\x45\xd0\x75\x15\x48\x89\xd8\x48\x81\xc4\xc8\x08\x00\x00\x5b\x41\x5c\x41\x5d\x41\x5e\x41\x5f\x5d\xc3\xe8\x0a\x57\x00\x00\x48\x8d\x3d\x4d\x6b\x00\x00\xe8\x88\x57\x00\x00\xe9\x16\xff\xff\xff\x66\x0f\x1f\x84\x00\x00\x00\x00\x00\x55\x48\x89\xe5\x41\x57\x41\x56\x41\x54\x53\x48\x81\xec\x30\x01\x00\x00\x41\x89\xce\x48\x89\xd3\x49\x89\xf7\x4c\x8b\x25\x26\x7b\x00\x00\x49\x8b\x04\x24\x48\x89\x45\xd8\x44\x89\x85\xcc\xfe\xff\xff\x41\xc7\x07\x00\x00\x00\x00\x48\x85\xdb\x74\x03\xc6\x03\x00\x48\x8d\xb5\xd0\xfe\xff\xff\x48\x8d\x95\xca\xfe\xff\xff\x48\x8d\x8d\xc0\xfe\xff\xff\x4c\x8d\x85\xcc\xfe\xff\xff\xe8\x0f\xfa\xff\xff\x89\xc1\x31\xc0\x85\xc9\x74\x2c\x48\x8b\x95\xc0\xfe\xff\xff\x8b\x85\xcc\xfe\xff\xff\x0f\xb7\xb5\xca\xfe\xff\xff\x89\x04\x24\x48\x8d\xbd\xd0\xfe\xff\xff\x4c\x89\xf9\x49\x89\xd8\x45\x89\xf1\xe8\x9b\xfd\xff\xff\x49\x8b\x0c\x24\x48\x3b\x4d\xd8\x75\x10\x48\x81\xc4\x30\x01\x00\x00\x5b\x41\x5c\x41\x5e\x41\x5f\x5d\xc3\xe8\x3c\x56\x00\x00\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x55\x48\x89\xe5\x41\x57\x41\x56\x41\x55\x41\x54\x53\x48\x83\xec\x18\x48\x89\xfb\x4c\x8b\x23\x4c\x89\x63\x10\x48\x63\x43\x18\x4d\x8d\x2c\x04\x4c\x89\x6b\x08\x48\xff\xc8\x48\x85\xc0\x0f\x8e\xa7\x04\x00\x00\x4c\x8d\x35\xd8\x6a\x00\x00\x49\x8d\x44\x24\x04\x4c\x39\xe8\x77\x0a\x41\x81\x3c\x24\x3c\x21\x2d\x2d\x74\x1c\x41\x0f\xb6\x04\x24\x49\xff\xc4\x83\xf8\x3c\x75\x55\x41\x0f\xb6\x04\x24\x83\xf8\x3f\x74\x4b\x4c\x89\xe6\xeb\x6b\x49\x8d\x44\x24\x03\x48\x89\x43\x10\x49\x83\xc4\x07\x66\x0f\x1f\x84\x00\x00\x00\x00\x00\x49\x8d\x7c\x24\xfd\x48\x89\x7b\x10\x4d\x39\xec\x0f\x83\x48\x04\x00\x00\xba\x03\x00\x00\x00\x4c\x89\xf6\xe8\x09\x56\x00\x00\x49\xff\xc4\x85\xc0\x75\xda\x49\xff\xcc\x0f\x1f\x80\x00\x00\x00\x00\x4c\x89\x63\x10\x4c\x8b\x6b\x08\x49\x8d\x45\xff\x49\x39\xc4\x0f\x82\x75\xff\xff\xff\xe9\x10\x04\x00\x00\x66\x0f\x1f\x44\x00\x00\x48\x8d\x74\x16\x01\x48\x89\x73\x10\x8a\x06\x31\xd2\x0f\x1f\x00\x0f\xb6\xc0\x83\xf8\x3e\x76\x1f\x48\x8d\x44\x16\x01\x48\x89\x43\x10\x4c\x39\xe8\x0f\x83\xe0\x03\x00\x00\x0f\xb6\x00\x48\xff\xc2\x83\xf8\x3a\x75\xdb\xeb\xc9\x48\xb9\x00\x26\x00\x00\x01\x80\x00\x40\x48\x0f\xa3\xc1\x73\xd1\x4c\x8d\x24\x16\x85\xd2\x0f\x8e\x9f\x01\x00\x00\x48\x8b\x43\x28\x48\x85\xc0\x74\x0e\x48\x8b\x7b\x20\xff\xd0\x4c\x8b\x6b\x08\x4c\x8b\x63\x10\x4d\x39\xec\x4d\x89\xe7\x0f\x83\x94\x03\x00\x00\x41\x0f\xb6\x0f\x48\x83\xf9\x3e\x77\x3b\x48\xb8\x00\x26\x00\x00\x01\x00\x00\x00\x48\x0f\xa3\xc8\x73\x17\x4d\x89\xfa\x49\xff\xc2\x4c\x89\x53\x10\x4d\x39\xea\x4d\x89\xd7\x72\xd4\xe9\x63\x03\x00\x00\x48\x83\xf9\x2f\x0f\x84\xa6\x01\x00\x00\x48\x83\xf9\x3e\x0f\x84\xa4\x01\x00\x00\x4d\x8d\x57\x02\x31\xd2\xeb\x15\x66\x66\x66\x66\x2e\x0f\x1f\x84\x00\x00\x00\x00\x00\x8a\x09\x48\xff\xc2\x49\xff\xc2\x0f\xb6\xc9\x83\xf9\x3d\x76\x13\x49\x8d\x4c\x17\x01\x48\x89\x4b\x10\x4c\x39\xe9\x72\xe2\xe9\x17\x03\x00\x00\x48\xb8\x00\x26\x00\x00\x01\x00\x00\x20\x48\x0f\xa3\xc8\x73\xdd\x49\x8d\x0c\x17\x48\x8d\x71\x01\x48\x89\x73\x10\x0f\xb6\x39\x83\xff\x3d\x74\x10\x49\xff\xc2\x4c\x39\xee\x48\x89\xf1\x72\xe5\xe9\xe3\x02\x00\x00\x48\xff\xc1\x40\x8a\x31\x40\x88\xf0\x04\xf7\x0f\xb6\xf8\x83\xff\x17\x77\x1e\xb8\x13\x00\x80\x00\x0f\xa3\xf8\x73\x14\x48\xff\xc1\x48\x89\x4b\x10\x49\xff\xc2\x4c\x39\xe9\x72\xd7\xe9\xb2\x02\x00\x00\x40\x0f\xb6\xfe\x83\xff\x22\x74\x08\x45\x31\xc0\x83\xff\x27\x75\x3b\x48\xff\xc1\x48\x89\x4b\x10\x45\x31\xc0\x4c\x39\xe9\x49\x89\xca\x0f\x83\x8b\x02\x00\x00\x41\x0f\xb6\x02\x39\xf8\x74\x47\x41\xff\xc0\x49\xff\xc2\x4c\x89\x53\x10\x4d\x39\xea\x72\xe9\xe9\x6f\x02\x00\x00\x41\xff\xc0\x41\x8a\x32\x49\xff\xc2\x40\x0f\xb6\xf6\x83\xfe\x3e\x76\x0e\x4c\x89\x53\x10\x4d\x39\xea\x72\xe5\xe9\x4f\x02\x00\x00\x48\xb8\x00\x26\x00\x00\x01\x80\x00\x40\x48\x0f\xa3\xf0\x73\xe2\x49\xff\xca\x4c\x8b\x4b\x40\x4d\x85\xc9\x0f\x84\xb8\xfe\xff\xff\x48\x8b\x7b\x20\x4c\x89\xfe\x41\xff\xd1\x4c\x8b\x6b\x08\x4c\x8b\x53\x10\xe9\xa1\xfe\xff\xff\x83\xf8\x2f\x0f\x85\xe9\xfd\xff\xff\x48\x8d\x44\x16\x01\x48\x89\x43\x10\x4c\x39\xe8\x0f\x83\xfd\x01\x00\x00\x48\x01\xd6\x31\xd2\x0f\xb6\x4c\x16\x01\x83\xf9\x3e\x74\x16\x48\x8d\x4c\x16\x02\x48\x89\x4b\x10\x48\xff\xc2\x4c\x39\xe9\x72\xe5\xe9\xd8\x01\x00\x00\x48\x8b\x4b\x30\x48\x85\xc9\x74\x0f\x48\x8b\x7b\x20\x48\x89\xc6\xff\xd1\x4c\x8b\x63\x10\xeb\x05\x4c\x8d\x64\x32\x01\x49\xff\xc4\xe9\x89\xfd\xff\xff\x4d\x89\xfc\xe9\x85\xfd\xff\xff\x49\x8d\x47\x01\x48\x89\x45\xd0\x48\x89\x43\x10\x4c\x39\xe8\xb8\x00\x00\x00\x00\x48\x89\x45\xc8\x0f\x83\x8d\x01\x00\x00\x48\x8b\x45\xc8\x41\x0f\xb6\x44\x07\x01\x48\x89\x45\xc0\x48\x83\xf8\x20\x77\x32\x48\xb8\x00\x26\x00\x00\x01\x00\x00\x00\x48\x8b\x4d\xc0\x48\x0f\xa3\xc8\x73\x1e\x48\x8b\x4d\xc8\x49\x8d\x44\x0f\x02\x48\x89\x43\x10\x48\xff\xc1\x48\x89\x4d\xc8\x4c\x39\xe8\x72\xbf\xe9\x47\x01\x00\x00\x48\x8b\x45\xc8\x4d\x8d\x64\x07\x01\xba\x09\x00\x00\x00\x4c\x89\xe7\x48\x8d\x05\x6b\x67\x00\x00\x48\x89\xc6\xe8\xf5\x52\x00\x00\x85\xc0\x0f\x84\x80\x00\x00\x00\x48\x8b\x45\xc0\x0f\xb6\xc0\x83\xf8\x3c\x74\x30\x48\x8b\x4d\xc8\x49\x8d\x44\x0f\x02\x48\x89\x43\x10\x49\x8d\x4c\x0f\x03\x4c\x39\xe9\x0f\x83\xf8\x00\x00\x00\x48\xff\x45\xc8\x0f\xb6\x00\x83\xf8\x3c\x75\xd9\x48\x8b\x45\xc8\x4d\x8d\x64\x07\x01\x48\x8b\x45\xc8\x85\xc0\x0f\x8e\xb1\xfc\xff\xff\x48\x8b\x43\x38\x48\x85\xc0\x0f\x84\xa4\xfc\xff\xff\x41\x0f\xb6\x4c\x24\x01\x83\xf9\x2f\x0f\x85\x95\xfc\xff\xff\x48\x8b\x4b\x20\x48\x89\xcf\x48\x8b\x75\xd0\x48\x8b\x4d\xc8\x89\xca\xff\xd0\x4c\x8b\x63\x10\xe9\x79\xfc\xff\xff\x48\x8b\x45\xc8\x4d\x8d\x24\x07\x4d\x8d\x7c\x07\x0a\x4c\x89\x7b\x10\x31\xc0\x48\x89\x45\xd0\x48\x8b\x45\xd0\x49\x8d\x44\x04\x0a\xba\x03\x00\x00\x00\x48\x89\xc7\x48\x8d\x05\xb6\x66\x00\x00\x48\x89\xc6\xe8\x36\x52\x00\x00\x85\xc0\x74\x20\x48\x8b\x4d\xd0\x49\x8d\x44\x0c\x0b\x48\x89\x43\x10\x49\x8d\x44\x0c\x0e\x48\xff\xc1\x48\x89\x4d\xd0\x4c\x39\xe8\x72\xbe\xeb\x44\x48\x8b\x45\xd0\x4e\x8d\x64\x20\x0a\x85\xc0\x48\x89\xc2\x7e\x19\x48\x8b\x43\x38\x48\x85\xc0\x74\x10\x48\x8b\x4b\x20\x48\x89\xcf\x4c\x89\xfe\xff\xd0\x4c\x8b\x63\x10\x41\x0f\xb6\x04\x24\x83\xf8\x3c\x0f\x84\xe7\xfb\xff\xff\x49\xff\xc4\x4c\x89\x63\x10\x4c\x3b\x63\x08\x72\xe5\x48\x83\xc4\x18\x5b\x41\x5c\x41\x5d\x41\x5e\x41\x5f\x5d\xc3\x90\x90\x90\x90\x90\x90\x90\x55\x48\x89\xe5\x41\x57\x41\x56\x53\x50\x49\x89\xf7\x49\x89\xfe\x48\x63\xda\x48\x89\xda\xe8\xa3\x51\x00\x00\x41\xc6\x04\x1e\x00\x41\xff\x86\x80\x01\x00\x00\x83\xfb\x07\x75\x36\x48\x8d\x35\x01\x66\x00\x00\x4c\x89\xff\x48\x89\xda\xe8\x7a\x51\x00\x00\x85\xc0\x75\x20\x41\xc6\x86\x84\x09\x00\x00\x00\x41\xc6\x86\x04\x0a\x00\x00\x00\x41\xc6\x86\x84\x0a\x00\x00\x00\x41\xc6\x86\x04\x0b\x00\x00\x00\x48\x83\xc4\x08\x5b\x41\x5e\x41\x5f\x5d\xc3\x0f\x1f\x00\x55\x48\x89\xe5\x41\x57\x41\x56\x53\x50\x48\x89\xfb\xff\x8b\x80\x01\x00\x00\x83\xfa\x07\x0f\x85\xc8\x00\x00\x00\x48\x8d\x05\xa1\x65\x00\x00\xba\x07\x00\x00\x00\x48\x89\xf7\x48\x89\xc6\xe8\x15\x51\x00\x00\x85\xc0\x0f\x85\xa9\x00\x00\x00\x4c\x8d\xb3\x84\x09\x00\x00\x4c\x8d\xbb\x04\x0b\x00\x00\x48\x8d\x35\x08\x6a\x00\x00\xba\x36\x00\x00\x00\x4c\x89\xff\xe8\xeb\x50\x00\x00\x85\xc0\x74\x5a\x48\x8d\x35\x64\x65\x00\x00\xba\x34\x00\x00\x00\x4c\x89\xff\xe8\xd3\x50\x00\x00\x85\xc0\x74\x4b\x48\x8d\x35\x81\x65\x00\x00\xba\x2d\x00\x00\x00\x4c\x89\xff\xe8\xbb\x50\x00\x00\x85\xc0\x74\x18\x48\x8d\x35\x97\x65\x00\x00\xba\x2e\x00\x00\x00\x4c\x89\xff\xe8\xa3\x50\x00\x00\x85\xc0\x75\x3b\x80\xbb\x04\x05\x00\x00\x00\x74\x1b\x48\x81\xc3\x84\x05\x00\x00\xeb\x19\x48\x81\xc3\x84\x01\x00\x00\xeb\x10\x48\x81\xc3\x84\x07\x00\x00\xeb\x07\x48\x81\xc3\x84\x03\x00\x00\xba\x00\x02\x00\x00\x48\x89\xdf\x4c\x89\xf6\xe8\x6a\x50\x00\x00\x48\x83\xc4\x08\x5b\x41\x5e\x41\x5f\x5d\xc3\x90\x55\x48\x89\xe5\x41\x57\x41\x56\x41\x54\x53\x41\x89\xd7\x49\x89\xf6\x49\x89\xfc\x48\x8d\x35\x53\x65\x00\x00\xe8\xa4\x50\x00\x00\x85\xc0\x74\x68\x48\x8d\x35\x4b\x65\x00\x00\x4c\x89\xe7\xe8\x91\x50\x00\x00\x85\xc0\x74\x5b\x48\x8d\x35\x48\x65\x00\x00\x4c\x89\xe7\xe8\x7e\x50\x00\x00\x85\xc0\x74\x51\x48\x8d\x35\x41\x65\x00\x00\x4c\x89\xe7\xe8\x6b\x50\x00\x00\x85\xc0\x74\x47\x48\x8d\x35\x39\x65\x00\x00\x4c\x89\xe7\xe8\x58\x50\x00\x00\x85\xc0\x74\x3d\x48\x8d\x35\x32\x65\x00\x00\x4c\x89\xe7\xe8\x45\x50\x00\x00\x85\xc0\x75\x54\x49\x81\xc4\x84\x0a\x00\x00\xeb\x28\x49\x83\xec\x80\xeb\x22\x49\x81\xc4\x00\x01\x00\x00\xeb\x19\x49\x81\xc4\x04\x0b\x00\x00\xeb\x10\x49\x81\xc4\x84\x09\x00\x00\xeb\x07\x49\x81\xc4\x04\x0a\x00\x00\x41\x83\xff\x7f\x49\x63\xc7\xbb\x7f\x00\x00\x00\x48\x0f\x4e\xd8\x4c\x89\xe7\x4c\x89\xf6\x48\x89\xda\xe8\x8c\x4f\x00\x00\x41\xc6\x04\x1c\x00\x5b\x41\x5c\x41\x5e\x41\x5f\x5d\xc3\x55\x48\x89\xe5\x41\x57\x41\x56\x41\x55\x41\x54\x53\x48\x81\xec\x48\x02\x00\x00\x4c\x89\x8d\xb8\xfd\xff\xff\x4d\x89\xc6\x89\xcb\x49\x89\xd5\x49\x89\xf4\x89\xbd\xc4\xfd\xff\xff\x48\x8b\x05\x25\x73\x00\x00\x48\x8b\x00\x48\x89\x45\xd0\x4c\x89\xcf\xe8\xae\x4f\x00\x00\x49\x89\xc7\xc6\x85\xc8\xfd\xff\xff\x00\x83\xfb\x50\x74\x28\x44\x0f\xb7\xcb\xba\x00\x00\x00\x00\xb9\x08\x00\x00\x00\x31\xc0\x4c\x8d\x05\x69\x64\x00\x00\x48\x8d\xbd\xc8\xfd\xff\xff\xbe\x08\x00\x00\x00\xe8\x81\x4e\x00\x00\xba\x00\x00\x00\x00\xb9\x00\x02\x00\x00\x31\xc0\x4c\x89\x74\x24\x20\x44\x89\x7c\x24\x18\x48\x8d\xb5\xc8\xfd\xff\xff\x48\x89\x74\x24\x10\x4c\x89\x6c\x24\x08\x48\x8b\x75\x10\x48\x89\x34\x24\x4c\x8d\x05\x27\x64\x00\x00\x45\x31\xf6\x48\x8d\xbd\xd0\xfd\xff\xff\xbe\x00\x02\x00\x00\x4d\x89\xe1\xe8\x34\x4e\x00\x00\x89\xc3\x42\x8d\x04\x3b\x4c\x63\xe0\x4c\x89\xe7\xe8\x9b\x4e\x00\x00\x49\x89\xc5\x4d\x85\xed\x74\x4d\x48\x63\xdb\x48\x8d\xb5\xd0\xfd\xff\xff\x4c\x89\xef\x48\x89\xda\xe8\x8a\x4e\x00\x00\x4c\x01\xeb\x49\x63\xd7\x48\x89\xdf\x48\x8b\xb5\xb8\xfd\xff\xff\xe8\x75\x4e\x00\x00\x31\xc9\x8b\xbd\xc4\xfd\xff\xff\x4c\x89\xee\x4c\x89\xe2\xe8\xa4\x4e\x00\x00\x49\x89\xc6\x45\x85\xf6\x78\x32\x4c\x89\xef\xe8\x04\x4e\x00\x00\x48\x8b\x05\x25\x72\x00\x00\x48\x8b\x00\x48\x3b\x45\xd0\x75\x15\x44\x89\xf0\x48\x81\xc4\x48\x02\x00\x00\x5b\x41\x5c\x41\x5d\x41\x5e\x41\x5f\x5d\xc3\xe8\xaa\x4d\x00\x00\x48\x8d\x3d\x7b\x62\x00\x00\xe8\x28\x4e\x00\x00\xeb\xc0\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x55\x48\x89\xe5\x48\x83\xec\x50\x48\x89\x7d\xb8\x89\x75\xd0\x48\x89\x55\xd8\x48\x8d\x05\x36\xfc\xff\xff\x48\x89\x45\xe0\x48\x8d\x05\x9b\xfc\xff\xff\x48\x89\x45\xe8\x48\x8d\x05\x80\xfd\xff\xff\x48\x89\x45\xf0\x48\xc7\x45\xf8\x00\x00\x00\x00\x48\x8d\x7d\xb8\xe8\x1b\xf7\xff\xff\x48\x83\xc4\x50\x5d\xc3\x0f\x1f\x44\x00\x00\x55\x48\x89\xe5\x41\x57\x41\x56\x41\x55\x41\x54\x53\x48\x81\xec\xc8\x09\x00\x00\x4d\x89\xce\x4c\x89\xc3\x49\x89\xcd\x49\x89\xd7\x48\x89\xb5\x28\xf6\xff\xff\x41\x89\xfc\x48\x8b\x05\x67\x71\x00\x00\x48\x8b\x00\x48\x89\x45\xd0\x66\xc7\x85\x3e\xf6\xff\xff\x00\x00\x41\xc7\x06\x00\x00\x00\x00\xba\x00\x00\x00\x00\xb9\x80\x00\x00\x00\x31\xc0\x4c\x89\x2c\x24\x4c\x8d\x05\x87\x63\x00\x00\x48\x8d\xbd\x40\xfe\xff\xff\xbe\x80\x00\x00\x00\x4d\x89\xf9\xe8\xc7\x4c\x00\x00\xba\x00\x00\x00\x00\xb9\x00\x08\x00\x00\x31\xc0\x48\x85\xdb\x0f\x84\x30\x01\x00\x00\x4c\x89\x3c\x24\x4c\x8d\x05\x27\x64\x00\x00\x48\x8d\xbd\x40\xf6\xff\xff\xbe\x00\x08\x00\x00\x4d\x89\xe9\xe8\x93\x4c\x00\x00\x48\x98\x48\x8d\xbc\x05\x40\xf6\xff\xff\x48\x83\x3b\x00\x0f\x84\xb8\x00\x00\x00\x48\x8d\xb5\x40\xfe\xff\xff\x45\x31\xff\x66\x66\x2e\x0f\x1f\x84\x00\x00\x00\x00\x00\x48\x8d\x47\x64\x48\x39\xc6\x0f\x86\xa9\x01\x00\x00\xc6\x07\x3c\x48\x8b\x13\x48\x8d\x4f\x01\x8a\x02\x84\xc0\x74\x15\x48\xff\xc2\x88\x01\x48\xff\xc1\x8a\x02\x48\xff\xc2\x84\xc0\x75\xf2\x48\x8d\x79\xff\x48\x83\xc7\x02\xc6\x01\x3e\x48\x8b\x4b\x08\x48\x85\xc9\x74\x1c\x8a\x11\x84\xd2\x74\x16\x48\xff\xc1\x0f\x1f\x44\x00\x00\x88\x17\x48\xff\xc7\x8a\x11\x48\xff\xc1\x84\xd2\x75\xf2\x66\xc7\x07\x3c\x2f\x48\x83\xc7\x02\x48\x8b\x0b\x8a\x11\x84\xd2\x74\x1e\x48\xff\xc1\x66\x66\x66\x66\x2e\x0f\x1f\x84\x00\x00\x00\x00\x00\x88\x17\x48\xff\xc7\x8a\x11\x48\xff\xc1\x84\xd2\x75\xf2\xc6\x07\x3e\x48\xff\xc7\x48\x83\x7b\x10\x00\x48\x8d\x5b\x10\x0f\x85\x5d\xff\xff\xff\xc7\x07\x3c\x2f\x75\x3a\x48\x83\xc7\x04\x41\x8a\x45\x00\x84\xc0\x74\x1b\x49\xff\xc5\x0f\x1f\x84\x00\x00\x00\x00\x00\x88\x07\x48\xff\xc7\x41\x8a\x45\x00\x49\xff\xc5\x84\xc0\x75\xf0\x48\x8d\x95\x40\xfe\xff\xff\x48\x29\xfa\x48\x8d\x35\xb8\x63\x00\x00\xe8\x8c\x4c\x00\x00\xeb\x24\x4c\x89\x6c\x24\x08\x4c\x89\x3c\x24\x4c\x8d\x05\x24\x62\x00\x00\x48\x8d\xbd\x40\xf6\xff\xff\xbe\x00\x08\x00\x00\x4d\x89\xe9\xe8\x5e\x4b\x00\x00\x45\x31\xff\x48\x8d\xb5\xc0\xfe\xff\xff\x48\x8d\x95\x3e\xf6\xff\xff\x48\x8d\x8d\x30\xf6\xff\xff\x45\x31\xc0\x48\x8b\xbd\x28\xf6\xff\xff\xe8\xbd\xee\xff\xff\x85\xc0\x74\x7f\x45\x85\xe4\x79\x20\x0f\xb7\xb5\x3e\xf6\xff\xff\x48\x8d\xbd\xc0\xfe\xff\xff\x45\x31\xff\x31\xd2\xe8\x8c\x3e\x00\x00\x41\x89\xc4\x45\x85\xe4\x78\x5a\x48\x8b\xb5\x30\xf6\xff\xff\x0f\xb7\x8d\x3e\xf6\xff\xff\x48\x8b\x45\x10\x48\x89\x04\x24\x48\x8d\x95\xc0\xfe\xff\xff\x4c\x8d\x85\x40\xfe\xff\xff\x4c\x8d\x8d\x40\xf6\xff\xff\x44\x89\xe7\xe8\xe1\xfb\xff\xff\x85\xc0\x7e\x18\x44\x89\xe7\x4c\x89\xf6\xe8\x62\xe6\xff\xff\x49\x89\xc7\x44\x89\xe7\xe8\xdf\x4a\x00\x00\xeb\x0b\x44\x89\xe7\xe8\xd5\x4a\x00\x00\x45\x31\xff\x48\x8b\x05\x0b\x6f\x00\x00\x48\x8b\x00\x48\x3b\x45\xd0\x75\x15\x4c\x89\xf8\x48\x81\xc4\xc8\x09\x00\x00\x5b\x41\x5c\x41\x5d\x41\x5e\x41\x5f\x5d\xc3\xe8\x90\x4a\x00\x00\x55\x48\x89\xe5\x48\x83\xec\x10\x48\x8d\x05\xc4\x62\x00\x00\x48\x89\x04\x24\xe8\x38\xfd\xff\xff\x48\x83\xc4\x10\x5d\xc3\x66\x90\x55\x48\x89\xe5\x41\x57\x41\x56\x41\x55\x41\x54\x53\x48\x81\xec\x48\x07\x00\x00\x45\x89\xcf\x45\x89\xc4\x48\x89\x95\xf8\xf8\xff\xff\x89\xb5\xf0\xf8\xff\xff\x48\x8b\x55\x10\x48\x8b\x05\x96\x6e\x00\x00\x48\x8b\x00\x48\x89\x45\xd0\xc7\x85\x4c\xf9\xff\xff\x00\x00\x00\x00\xc7\x85\x48\xf9\xff\xff\x01\x00\x00\x00\x48\x85\xd2\x74\x06\xc7\x02\xff\xff\xff\xff\x48\x85\xc9\x4c\x8d\x2d\x55\x62\x00\x00\x4c\x0f\x45\xe9\x31\xc0\x48\x89\x85\xd0\xf8\xff\xff\x49\x89\xfe\x48\x89\xbd\xb0\xf8\xff\xff\xeb\x09\x0f\x1f\x44\x00\x00\x49\x83\xc6\x08\x49\x8b\x3e\x48\x85\xff\x74\x2f\x4c\x89\xee\xe8\xdc\x45\x00\x00\x48\x89\xc3\x48\x85\xdb\x74\xe4\x49\x8b\x3e\x48\x8d\x35\x29\x62\x00\x00\xe8\xcd\x4a\x00\x00\x48\x85\xc0\x0f\x84\x38\x01\x00\x00\x48\x89\x9d\xd0\xf8\xff\xff\x45\x85\xff\xbf\x1e\x00\x00\x00\xb8\x02\x00\x00\x00\x0f\x44\xf8\xbe\x02\x00\x00\x00\x31\xd2\xe8\x6b\x4a\x00\x00\x89\x85\xdc\xf8\xff\xff\x85\xc0\x0f\x88\x94\x06\x00\x00\x0f\x57\xc0\x0f\x29\x85\xc0\xf9\xff\xff\x0f\x29\x85\xb0\xf9\xff\xff\x0f\x29\x85\xa0\xf9\xff\xff\x0f\x29\x85\x90\xf9\xff\xff\x0f\x29\x85\x80\xf9\xff\xff\x0f\x29\x85\x70\xf9\xff\xff\x0f\x29\x85\x60\xf9\xff\xff\x0f\x29\x85\x50\xf9\xff\xff\x45\x85\xff\x74\x3a\x44\x89\xbd\xc8\xf8\xff\xff\xc6\x85\x51\xf9\xff\xff\x1e\x45\x85\xe4\x74\x09\x66\xc7\x85\x52\xf9\xff\xff\x07\x6c\x48\x8b\x05\x90\x6d\x00\x00\x48\x8b\x08\x48\x8b\x40\x08\x48\x89\x85\x60\xf9\xff\xff\x48\x89\x8d\x58\xf9\xff\xff\xeb\x26\xc6\x85\x51\xf9\xff\xff\x02\x45\x85\xe4\x74\x09\x66\xc7\x85\x52\xf9\xff\xff\x07\x6c\x44\x89\xbd\xc8\xf8\xff\xff\xc7\x85\x54\xf9\xff\xff\x00\x00\x00\x00\x48\x8d\x8d\x48\xf9\xff\xff\xbe\xff\xff\x00\x00\xba\x04\x00\x00\x00\x41\xb8\x04\x00\x00\x00\x8b\xbd\xdc\xf8\xff\xff\xe8\x95\x49\x00\x00\x85\xc0\x0f\x88\xe2\x05\x00\x00\x48\x8b\xbd\xf8\xf8\xff\xff\x48\x85\xff\x0f\x84\x82\x00\x00\x00\x83\xbd\xc8\xf8\xff\xff\x00\x74\x3c\xe8\x09\x49\x00\x00\x89\x85\x04\xf9\xff\xff\x48\x8d\x8d\x04\xf9\xff\xff\xbe\x29\x00\x00\x00\xba\x09\x00\x00\x00\x41\xb8\x08\x00\x00\x00\xeb\x42\x48\x8b\x45\x10\x48\x85\xc0\x0f\x84\x4f\x06\x00\x00\xc7\x00\x00\x00\x00\x00\xe9\x44\x06\x00\x00\xe8\xd3\x48\x00\x00\x89\x85\x00\xf9\xff\xff\x83\xf8\xff\x74\x2d\x89\x85\x54\xf9\xff\xff\x48\x8d\x8d\x00\xf9\xff\xff\x31\xf6\xba\x09\x00\x00\x00\x41\xb8\x04\x00\x00\x00\x8b\xbd\xdc\xf8\xff\xff\xe8\x03\x49\x00\x00\x85\xc0\x0f\x88\x9c\x05\x00\x00\x83\xbd\xc8\xf8\xff\xff\x00\xb8\x1c\x00\x00\x00\xba\x10\x00\x00\x00\x0f\x45\xd0\x48\x8d\xb5\x50\xf9\xff\xff\x8b\xbd\xdc\xf8\xff\xff\xe8\x15\x48\x00\x00\x85\xc0\x0f\x85\x44\x05\x00\x00\x48\x8b\x45\x10\x48\x85\xc0\x74\x06\xc7\x00\x00\x00\x00\x00\x8b\x8d\xf0\xf8\xff\xff\x89\xc8\x48\x69\xf8\xd3\x4d\x62\x10\x48\xc1\xef\x26\x81\xf9\xe8\x03\x00\x00\xb8\x01\x00\x00\x00\x0f\x42\xf8\xc7\x85\xc4\xf8\xff\xff\x01\x00\x00\x00\x48\x89\xbd\xa8\xf8\xff\xff\xb8\xe8\x03\x00\x00\x0f\x43\xc1\x89\x85\xcc\xf8\xff\xff\x48\x8b\x85\xb0\xf8\xff\xff\x48\x8b\x30\x48\x85\xf6\x0f\x84\x65\x05\x00\x00\x48\x8d\x05\x2d\x60\x00\x00\x48\x8d\x0d\x12\x60\x00\x00\x48\x8d\x15\x15\x60\x00\x00\x4c\x8d\x05\x33\x69\x00\x00\x31\xdb\x48\x89\x9d\xb8\xf8\xff\xff\x83\xbd\xc8\xf8\xff\xff\x00\x49\x89\xc1\x74\x0e\x83\xbd\xc4\xf8\xff\xff\x00\x49\x89\xd1\x4c\x0f\x45\xc9\xba\x00\x00\x00\x00\xb9\x00\x06\x00\x00\x31\xc0\x89\x7c\x24\x08\x48\x89\x34\x24\xbe\x00\x06\x00\x00\x48\x8d\xbd\xd0\xf9\xff\xff\xe8\x35\x47\x00\x00\x41\x89\xc6\x0f\x57\xc0\x0f\x29\x85\x30\xf9\xff\xff\x0f\x29\x85\x20\xf9\xff\xff\x0f\x29\x85\x10\xf9\xff\xff\xc7\x85\x18\xf9\xff\xff\x02\x00\x00\x00\x83\xbd\xc8\xf8\xff\xff\x00\x48\x8d\x3d\x9d\x5f\x00\x00\x74\x19\x83\xbd\xc4\xf8\xff\xff\x00\x48\x8d\x3d\xa5\x5f\x00\x00\x48\x8d\x05\x96\x5f\x00\x00\x48\x0f\x45\xf8\x48\x8d\x35\x9b\x5f\x00\x00\x48\x8d\x95\x10\xf9\xff\xff\x48\x8d\x8d\x08\xf9\xff\xff\xe8\x1b\x47\x00\x00\x85\xc0\x0f\x85\x49\x04\x00\x00\x48\x8b\x9d\x08\xf9\xff\xff\x48\x85\xdb\xbf\x00\x00\x00\x00\x75\x1a\xeb\x4f\x48\x8d\x3d\x7c\x5f\x00\x00\xe8\x36\x47\x00\x00\xeb\x31\x66\x2e\x0f\x1f\x84\x00\x00\x00\x00\x00\x49\x63\xd6\x4c\x8b\x43\x20\x44\x8b\x4b\x10\x31\xc9\x8b\xbd\xdc\xf8\xff\xff\x48\x8d\xb5\xd0\xf9\xff\xff\xe8\x47\x47\x00\x00\x49\x89\xc6\x45\x85\xf6\x78\xc1\x48\x8b\x5b\x28\x48\x85\xdb\x75\xd0\x48\x8b\xbd\x08\xf9\xff\xff\xe8\x9a\x46\x00\x00\x45\x85\xf6\x0f\x88\x12\x04\x00\x00\x66\x66\x2e\x0f\x1f\x84\x00\x00\x00\x00\x00\xba\x00\x06\x00\x00\x8b\xbd\xdc\xf8\xff\xff\x48\x8d\xb5\xd0\xf9\xff\xff\x8b\x8d\xcc\xf8\xff\xff\x4c\x8d\x85\x4c\xf9\xff\xff\xe8\xec\x40\x00\x00\x89\xc6\x85\xf6\x0f\x88\xe3\x02\x00\x00\x31\xc0\x48\x89\x85\xe8\xf8\xff\xff\x85\xf6\xb8\x00\x00\x00\x00\x48\x89\x85\xe0\xf8\xff\xff\x41\xbd\x00\x00\x00\x00\x41\xbe\x00\x00\x00\x00\xbb\x00\x00\x00\x00\xb9\x00\x00\x00\x00\xb8\x00\x00\x00\x00\x0f\x84\x0a\x02\x00\x00\x66\x2e\x0f\x1f\x84\x00\x00\x00\x00\x00\x0f\xbe\x94\x1d\xd0\xf9\xff\xff\x83\xfa\x0a\x74\x05\x83\xfa\x0d\x75\x7e\x85\xc9\x0f\x84\x86\x00\x00\x00\x4c\x89\xad\xf8\xf8\xff\xff\x4c\x89\xb5\xf0\xf8\xff\xff\x41\x89\xf6\x41\x89\xdc\x41\x29\xcc\x48\x63\xc9\x4c\x8d\xac\x0d\xd0\xf9\xff\xff\x0f\x1f\x40\x00\x41\x0f\xb6\x4d\x01\x49\xff\xc5\x41\xff\xcc\x83\xf9\x20\x74\xf0\x48\x98\x4c\x8d\xbc\x05\xd0\xf9\xff\xff\xba\x08\x00\x00\x00\x4c\x89\xff\x48\x8d\x35\x48\x5f\x00\x00\xe8\x68\x46\x00\x00\x85\xc0\x74\x33\xba\x02\x00\x00\x00\x4c\x89\xff\x48\x8d\x35\x39\x5f\x00\x00\xe8\x50\x46\x00\x00\x85\xc0\x75\x2c\xeb\x3b\x0f\x1f\x40\x00\x83\xfa\x3a\x75\x3d\x85\xc9\x0f\x44\xcb\xeb\x36\x0f\x1f\x40\x00\x45\x89\xf4\xeb\x25\x4c\x89\xad\xe8\xf8\xff\xff\x44\x89\xe0\x48\x89\x85\xe0\xf8\xff\xff\x4c\x8b\xad\xf8\xf8\xff\xff\x48\x8b\x85\xf0\xf8\xff\xff\x41\x89\xc4\x44\x89\xf6\x8d\x43\x01\x31\xc9\x45\x89\xe6\x48\xff\xc3\x39\xf3\x0f\x85\x23\xff\xff\xff\x4d\x85\xed\x0f\x84\x65\x01\x00\x00\x48\x83\xbd\xe8\xf8\xff\xff\x00\x0f\x84\x57\x01\x00\x00\x4c\x89\xad\xf8\xf8\xff\xff\x89\xb5\xf0\xf8\xff\xff\x48\x8b\x85\xd0\xf8\xff\xff\x48\x85\xc0\x48\x8b\x8d\xe0\xf8\xff\xff\x4c\x63\xf9\x4d\x63\xee\x48\x89\xc3\x74\x5b\x0f\x1f\x00\x4c\x8b\x63\x08\x4c\x89\xe7\x48\x8b\xb5\xe8\xf8\xff\xff\x4c\x89\xfa\xe8\x22\x45\x00\x00\x85\xc0\x75\x36\x43\x80\x3c\x3c\x00\x75\x2f\x4c\x8b\x63\x10\x4c\x89\xe7\x48\x8b\xb5\xf8\xf8\xff\xff\x4c\x89\xea\xe8\x01\x45\x00\x00\x85\xc0\x75\x15\x43\x80\x3c\x2c\x00\x0f\x84\x90\x00\x00\x00\x66\x2e\x0f\x1f\x84\x00\x00\x00\x00\x00\x48\x8b\x1b\x48\x85\xdb\x75\xa8\x4d\x89\xec\x4b\x8d\x7c\x27\x20\xe8\xcd\x44\x00\x00\x48\x89\xc3\x48\x85\xdb\x0f\x84\x40\x01\x00\x00\x48\x8b\x85\xd0\xf8\xff\xff\x48\x89\x03\x48\x8d\x7b\x1c\x48\x89\x7b\x08\x4d\x8d\x6c\x1f\x1d\x4c\x89\x6b\x10\x48\x8b\xb5\xe8\xf8\xff\xff\x4c\x89\xfa\xe8\xa3\x44\x00\x00\x41\xc6\x44\x1f\x1c\x00\x4c\x89\xef\x48\x8b\xb5\xf8\xf8\xff\xff\x4c\x89\xe2\xe8\x8b\x44\x00\x00\x48\x8b\x85\xe0\xf8\xff\xff\x42\x8d\x44\x30\x01\x48\x98\xc6\x44\x18\x1c\x00\x8b\x85\x4c\xf9\xff\xff\x89\x43\x18\x48\x89\x9d\xd0\xf8\xff\xff\x8b\xb5\xf0\xf8\xff\xff\xeb\x4d\x66\x90\x48\x8b\x85\xd0\xf8\xff\xff\x48\x85\xc0\x0f\x85\xa9\x00\x00\x00\x83\xbd\xc8\xf8\xff\xff\x00\x74\x29\x83\xbd\xc4\xf8\xff\xff\x00\x0f\x94\xc0\x0f\x95\xc1\x0f\xb6\xc9\x48\x8b\x95\xb8\xf8\xff\xff\x29\xca\x48\x89\x95\xb8\xf8\xff\xff\x0f\xb6\xc0\x89\x85\xc4\xf8\xff\xff\x31\xc0\x48\x89\x85\xd0\xf8\xff\xff\x85\xf6\x0f\x8f\x3d\xfd\xff\xff\x48\x8b\x85\xb8\xf8\xff\xff\xff\xc0\x48\x89\x85\xb8\xf8\xff\xff\x48\x98\x48\x8b\x8d\xb0\xf8\xff\xff\x48\x8b\x34\xc1\x48\x85\xf6\x48\x8b\xbd\xa8\xf8\xff\xff\x48\x8d\x05\xf4\x5b\x00\x00\x48\x8d\x0d\xd9\x5b\x00\x00\x48\x8d\x15\xdc\x5b\x00\x00\x4c\x8d\x05\xfa\x64\x00\x00\x0f\x85\xca\xfb\xff\xff\xe9\x05\x01\x00\x00\x48\x8b\x45\x10\x48\x85\xc0\x0f\x84\xf8\x00\x00\x00\xc7\x00\x9b\xff\xff\xff\xe9\xed\x00\x00\x00\x48\x8b\x45\x10\x48\x85\xc0\x0f\x84\xe0\x00\x00\x00\xc7\x00\x00\x00\x00\x00\xe9\xd5\x00\x00\x00\x48\x8b\x45\x10\x48\x85\xc0\x0f\x84\xc8\x00\x00\x00\xc7\x00\x9a\xff\xff\xff\xe9\xbd\x00\x00\x00\x48\x8b\x45\x10\x48\x85\xc0\x74\x06\xc7\x00\x9b\xff\xff\xff\x48\x8d\x3d\x4b\x5b\x00\x00\xeb\x16\x48\x8b\x45\x10\x48\x85\xc0\x74\x06\xc7\x00\x9b\xff\xff\xff\x48\x8d\x3d\x3a\x5b\x00\x00\xe8\x4e\x43\x00\x00\x31\xdb\xe9\x95\x00\x00\x00\x48\x8b\x45\x10\x48\x85\xc0\x74\x06\xc7\x00\x9b\xff\xff\xff\x48\x8d\x3d\x23\x5b\x00\x00\xe8\x2c\x43\x00\x00\x8b\xbd\xdc\xf8\xff\xff\xe8\xaf\x42\x00\x00\x31\xdb\xeb\x6b\x48\x8d\x3d\xfd\x5a\x00\x00\xe8\x11\x43\x00\x00\xe9\x53\xfa\xff\xff\x48\x8b\x4d\x10\x48\x85\xc9\x74\x06\xc7\x01\x9b\xff\xff\xff\x48\x8b\x0d\xcc\x66\x00\x00\x48\x8b\x19\x89\xc7\xe8\xa4\x42\x00\x00\x48\x89\xc1\x48\x8d\x35\x12\x5b\x00\x00\x31\xc0\x48\x89\xdf\x48\x89\xca\xe8\x75\x42\x00\x00\xeb\x0f\x48\x8b\x45\x10\x48\x85\xc0\x74\x06\xc7\x00\x9b\xff\xff\xff\x8b\xbd\xdc\xf8\xff\xff\xe8\x47\x42\x00\x00\x48\x8b\x9d\xd0\xf8\xff\xff\x48\x8b\x05\x79\x66\x00\x00\x48\x8b\x00\x48\x3b\x45\xd0\x75\x15\x48\x89\xd8\x48\x81\xc4\x48\x07\x00\x00\x5b\x41\x5c\x41\x5d\x41\x5e\x41\x5f\x5d\xc3\xe8\xfe\x41\x00\x00\x66\x66\x66\x66\x66\x2e\x0f\x1f\x84\x00\x00\x00\x00\x00\x55\x48\x89\xe5\x48\x83\xec\x10\x45\x89\xc2\x89\xc8\x48\x89\xd1\x48\x89\xf2\x89\xfe\x4c\x89\x0c\x24\x48\x8d\x3d\xe0\x67\x00\x00\x41\x89\xc0\x45\x89\xd1\xe8\x55\xf7\xff\xff\x48\x83\xc4\x10\x5d\xc3\x66\x66\x66\x66\x66\x66\x2e\x0f\x1f\x84\x00\x00\x00\x00\x00\x55\x48\x89\xe5\x48\x83\xec\x10\x45\x89\xc2\x89\xc8\x48\x89\xd1\x48\x89\xf2\x89\xfe\x4c\x89\x0c\x24\x48\x8d\x3d\xd0\x67\x00\x00\x41\x89\xc0\x45\x89\xd1\xe8\x15\xf7\xff\xff\x48\x83\xc4\x10\x5d\xc3\x66\x66\x66\x66\x66\x66\x2e\x0f\x1f\x84\x00\x00\x00\x00\x00\x55\x48\x89\xe5\x53\x48\x83\xec\x28\x4c\x8b\x55\x10\x48\x8b\x1d\xb4\x65\x00\x00\x48\x8b\x03\x48\x89\x45\xf0\x48\x89\x7d\xe0\x48\xc7\x45\xe8\x00\x00\x00\x00\x4c\x89\x14\x24\x48\x8d\x7d\xe0\xe8\xcc\xf6\xff\xff\x48\x8b\x0b\x48\x3b\x4d\xf0\x75\x07\x48\x83\xc4\x28\x5b\x5d\xc3\xe8\x27\x41\x00\x00\x0f\x1f\x80\x00\x00\x00\x00\x55\x48\x89\xe5\x53\x50\x48\x85\xff\x74\x15\x0f\x1f\x44\x00\x00\x48\x8b\x1f\xe8\x38\x41\x00\x00\x48\x85\xdb\x48\x89\xdf\x75\xf0\x48\x83\xc4\x08\x5b\x5d\xc3\x66\x0f\x1f\x84\x00\x00\x00\x00\x00\x55\x48\x89\xe5\x41\x57\x41\x56\x41\x55\x41\x54\x53\x50\x41\x89\xce\x49\x89\xd4\x49\x89\xf5\x49\x89\xff\x4c\x89\xe7\xe8\xb8\x41\x00\x00\x49\x89\x47\x20\x4c\x89\xeb\x48\x83\xeb\x80\x49\x8d\x85\x84\x03\x00\x00\x48\x89\x45\xd0\x49\x8d\x95\x84\x04\x00\x00\x48\x89\xdf\x4c\x89\xe6\x44\x89\xf1\xe8\x63\x00\x00\x00\x49\x89\x47\x08\x48\x89\xdf\x4c\x89\xe6\x48\x8b\x55\xd0\x44\x89\xf1\xe8\x4d\x00\x00\x00\x49\x89\x07\x49\x8d\x95\x84\x01\x00\x00\x48\x89\xdf\x4c\x89\xe6\x44\x89\xf1\xe8\x35\x00\x00\x00\x49\x89\x47\x10\x49\x8d\x95\x84\x07\x00\x00\x48\x89\xdf\x4c\x89\xe6\x44\x89\xf1\xe8\x1c\x00\x00\x00\x49\x89\x47\x18\x48\x83\xc4\x08\x5b\x41\x5c\x41\x5d\x41\x5e\x41\x5f\x5d\xc3\x66\x0f\x1f\x84\x00\x00\x00\x00\x00\x55\x48\x89\xe5\x41\x57\x41\x56\x41\x55\x41\x54\x53\x48\x83\xec\x28\x48\x89\xd3\x49\x89\xf4\x4c\x8b\x3d\x7a\x64\x00\x00\x49\x8b\x07\x48\x89\x45\xd0\x44\x0f\xb6\x33\x41\x83\xfe\x68\x75\x43\x0f\xb6\x43\x01\x83\xf8\x74\x75\x3a\x0f\xb6\x43\x02\x83\xf8\x74\x75\x31\x0f\xb6\x43\x03\x83\xf8\x70\x75\x28\x0f\xb6\x43\x04\x83\xf8\x3a\x75\x1f\x0f\xb6\x43\x05\x83\xf8\x2f\x75\x16\x0f\xb6\x43\x06\x83\xf8\x2f\x75\x0d\x48\x89\xdf\xe8\xbd\x40\x00\x00\xe9\x88\x01\x00\x00\x41\x89\xcf\x80\x3f\x00\x74\x03\x49\x89\xfc\x4c\x89\xe7\xe8\xab\x40\x00\x00\x49\x89\xc5\x41\x83\xfd\x08\x7c\x1a\x49\x8d\x7c\x24\x07\xbe\x2f\x00\x00\x00\xe8\x81\x40\x00\x00\x48\x85\xc0\x74\x06\x44\x29\xe0\x41\x89\xc5\x48\x89\xdf\x48\x89\x5d\xb8\xe8\x7c\x40\x00\x00\x44\x01\xe8\x41\x0f\xb6\xce\x83\xf9\x2f\x0f\x95\xc1\x0f\xb6\xc9\x44\x8d\x74\x01\x01\x44\x89\xff\x85\xff\x74\x28\x48\x8d\x75\xc0\x89\x7d\xb0\xe8\xc4\x3f\x00\x00\x48\x85\xc0\x4c\x8b\x3d\xb2\x63\x00\x00\x74\x1a\x48\x8d\x7d\xc0\xe8\x3f\x40\x00\x00\x45\x8d\x74\x06\x03\xeb\x0a\x89\x7d\xb0\x4c\x8b\x3d\x96\x63\x00\x00\x49\x63\xfe\xe8\xa8\x3f\x00\x00\x48\x89\xc3\x31\xc0\x48\x85\xdb\x0f\x84\xe2\x00\x00\x00\x4d\x63\xfd\x48\x89\xdf\x4c\x89\xe6\x4c\x89\xfa\xe8\x95\x3f\x00\x00\x83\x7d\xb0\x00\x0f\x84\x91\x00\x00\x00\x42\xc6\x04\x3b\x00\x48\x8d\x35\xc0\x58\x00\x00\xba\x0d\x00\x00\x00\x48\x89\xdf\xe8\x6c\x3f\x00\x00\x85\xc0\x75\x74\xbe\x5d\x00\x00\x00\x48\x89\xdf\xe8\xc1\x3f\x00\x00\x49\x89\xc7\x4d\x85\xff\x74\x5f\x48\x8d\x7d\xc0\x49\x89\xfc\xe8\xbf\x3f\x00\x00\x4a\x8d\x44\x38\x03\x48\x89\x45\xb0\x4c\x89\xff\xe8\xae\x3f\x00\x00\x48\x8d\x50\x01\x48\x8b\x7d\xb0\x4c\x89\xfe\xe8\x32\x3f\x00\x00\x41\xc6\x47\x02\x35\x66\x41\xc7\x07\x25\x32\x4d\x8d\x7f\x03\x4c\x89\xe7\xe8\x87\x3f\x00\x00\x4c\x89\xff\x4c\x89\xe6\x48\x89\xc2\xe8\x07\x3f\x00\x00\x4c\x89\xe7\xe8\x71\x3f\x00\x00\x45\x8d\x6c\x05\x03\x4c\x8b\x3d\xcd\x62\x00\x00\x48\x8b\x45\xb8\x0f\xb6\x00\x83\xf8\x2f\x74\x0a\x49\x63\xc5\x41\xff\xc5\xc6\x04\x03\x2f\x49\x63\xc5\x48\x8d\x3c\x03\x41\x29\xc6\x49\x63\xd6\x48\x8b\x75\xb8\xe8\xc7\x3e\x00\x00\x48\x89\xd8\x49\x8b\x0f\x48\x3b\x4d\xd0\x75\x0f\x48\x83\xc4\x28\x5b\x41\x5c\x41\x5d\x41\x5e\x41\x5f\x5d\xc3\xe8\x29\x3e\x00\x00\x66\x0f\x1f\x84\x00\x00\x00\x00\x00\x55\x48\x89\xe5\x53\x50\x48\x89\xfb\x48\x85\xdb\x74\x53\x48\x8b\x3b\xe8\x3a\x3e\x00\x00\x48\xc7\x03\x00\x00\x00\x00\x48\x8b\x7b\x08\xe8\x2a\x3e\x00\x00\x48\xc7\x43\x08\x00\x00\x00\x00\x48\x8b\x7b\x10\xe8\x19\x3e\x00\x00\x48\xc7\x43\x10\x00\x00\x00\x00\x48\x8b\x7b\x18\xe8\x08\x3e\x00\x00\x48\xc7\x43\x18\x00\x00\x00\x00\x48\x8b\x7b\x20\xe8\xf7\x3d\x00\x00\x48\xc7\x43\x20\x00\x00\x00\x00\x48\x83\xc4\x08\x5b\x5d\xc3\x0f\x1f\x84\x00\x00\x00\x00\x00\x55\x48\x89\xe5\x41\x56\x53\x48\x83\xec\x60\x4c\x8b\x35\xf6\x61\x00\x00\x49\x8b\x06\x48\x89\x45\xe8\xc6\x45\xa0\x00\x48\x8b\x3f\x48\x81\xc6\x04\x05\x00\x00\x48\x8d\x5d\xa0\x48\x8d\x4d\x9c\x45\x31\xc0\x48\x89\xda\xe8\x66\x0d\x00\x00\x48\x8d\x3d\xed\x56\x00\x00\x48\x89\xde\xe8\x4b\x3e\x00\x00\x85\xc0\x0f\x94\xc0\x49\x8b\x0e\x48\x3b\x4d\xe8\x75\x0c\x0f\xb6\xc0\x48\x83\xc4\x60\x5b\x41\x5e\x5d\xc3\xe8\x48\x3d\x00\x00\x0f\x1f\x84\x00\x00\x00\x00\x00\x55\x48\x89\xe5\x41\x57\x41\x56\x41\x55\x41\x54\x53\x48\x81\xec\xf8\x00\x00\x00\x44\x89\x85\x54\xff\xff\xff\x48\x89\x8d\x48\xff\xff\xff\x49\x89\xd5\x49\x89\xf6\x48\x8b\x1d\x69\x61\x00\x00\x48\x8b\x03\x48\x89\x45\xd0\x45\x31\xe4\x48\x85\xff\x0f\x84\x96\x05\x00\x00\x48\x89\xf8\x48\x89\xbd\xe8\xfe\xff\xff\x0f\x1f\x40\x00\x45\x89\xe7\x45\x8d\x67\x01\x48\x8b\x00\x48\x85\xc0\x75\xf1\x31\xc0\x45\x85\xff\x78\x1c\x49\x63\xfc\xbe\x10\x00\x00\x00\xe8\xdf\x3c\x00\x00\x41\xbc\xff\xff\xff\xff\x48\x85\xc0\x0f\x84\x56\x05\x00\x00\x48\x89\x85\x30\xff\xff\xff\x49\x8d\x8d\x04\x03\x00\x00\x48\x89\x8d\x40\xff\xff\xff\x4c\x8d\x60\x08\x48\x8b\x9d\xe8\xfe\xff\xff\x66\x66\x66\x66\x66\x2e\x0f\x1f\x84\x00\x00\x00\x00\x00\x48\x8b\x7b\x08\x44\x8b\x43\x18\x4c\x89\xe6\x48\x8b\x95\x48\xff\xff\xff\x8b\x8d\x54\xff\xff\xff\xe8\x83\xe5\xff\xff\x49\x89\x44\x24\xf8\x48\x85\xc0\x0f\x84\x9f\x00\x00\x00\xbe\x84\x0b\x00\x00\x4c\x89\xef\xe8\x40\x3c\x00\x00\x49\xc7\x46\x20\x00\x00\x00\x00\x49\xc7\x46\x18\x00\x00\x00\x00\x49\xc7\x46\x10\x00\x00\x00\x00\x49\xc7\x46\x08\x00\x00\x00\x00\x49\xc7\x06\x00\x00\x00\x00\x49\x8b\x44\x24\xf8\x41\x8b\x0c\x24\x48\x89\x45\x80\x89\x4d\x98\x4c\x89\x6d\xa0\x48\x8d\x05\xd6\xea\xff\xff\x48\x89\x45\xa8\x48\x8d\x05\x3b\xeb\xff\xff\x48\x89\x45\xb0\x48\x8d\x05\x20\xec\xff\xff\x48\x89\x45\xb8\x48\xc7\x45\xc0\x00\x00\x00\x00\x48\x8d\x7d\x80\xe8\xbb\xe5\xff\xff\xba\x36\x00\x00\x00\x48\x8b\xbd\x40\xff\xff\xff\x48\x8d\x35\x60\x55\x00\x00\xe8\x4b\x3c\x00\x00\x85\xc0\x75\x09\x41\xc7\x44\x24\x04\x01\x00\x00\x00\x48\x8b\x1b\x49\x83\xc4\x10\x48\x85\xdb\x0f\x85\x26\xff\xff\xff\x4c\x89\xb5\x58\xff\xff\xff\x4c\x89\xbd\xe0\xfe\xff\xff\x4c\x89\xad\x60\xff\xff\xff\x4c\x89\xe8\x48\x83\xe8\x80\x48\x89\x85\x28\xff\xff\xff\x49\x8d\x85\x84\x04\x00\x00\x48\x89\x85\x20\xff\xff\xff\x49\x8d\x85\x84\x03\x00\x00\x48\x89\x85\x48\xff\xff\xff\x49\x8d\x85\x84\x01\x00\x00\x48\x89\x85\x18\xff\xff\xff\x49\x8d\x85\x84\x07\x00\x00\x48\x89\x85\x10\xff\xff\xff\x49\x8d\x85\x04\x05\x00\x00\x48\x89\x85\x40\xff\xff\xff\x49\x8d\x85\x84\x09\x00\x00\x48\x89\x85\xf8\xfe\xff\xff\x49\x8d\x85\x84\x05\x00\x00\x48\x89\x85\xf0\xfe\xff\xff\xc7\x85\x54\xff\xff\xff\x01\x00\x00\x00\x4c\x8b\xb5\x30\xff\xff\xff\x41\xbd\x0c\x00\x00\x00\x4c\x8b\xbd\xe8\xfe\xff\xff\x0f\x1f\x00\x4b\x83\x7c\x2e\xf4\x00\x0f\x84\x1c\x03\x00\x00\xbe\x84\x0b\x00\x00\x48\x8b\x9d\x60\xff\xff\xff\x48\x89\xdf\xe8\xd8\x3a\x00\x00\x48\x8b\x85\x58\xff\xff\xff\x48\xc7\x40\x20\x00\x00\x00\x00\x48\xc7\x40\x18\x00\x00\x00\x00\x48\xc7\x40\x10\x00\x00\x00\x00\x48\xc7\x40\x08\x00\x00\x00\x00\x48\xc7\x00\x00\x00\x00\x00\x4b\x8b\x44\x2e\xf4\x43\x8b\x4c\x2e\xfc\x48\x89\x45\x80\x89\x4d\x98\x48\x89\x5d\xa0\x48\x8d\x05\x66\xe9\xff\xff\x48\x89\x45\xa8\x48\x8d\x05\xcb\xe9\xff\xff\x48\x89\x45\xb0\x48\x8d\x05\xb0\xea\xff\xff\x48\x89\x45\xb8\x48\xc7\x45\xc0\x00\x00\x00\x00\x48\x8d\x7d\x80\xe8\x4b\xe4\xff\xff\x43\x83\x3c\x2e\x00\x75\x0d\x83\xbd\x54\xff\xff\xff\x03\x0f\x8c\x6e\x02\x00\x00\x4d\x8b\x77\x08\x41\x8b\x5f\x18\x4c\x89\xbd\x38\xff\xff\xff\x4c\x89\xf7\xe8\x3a\x3b\x00\x00\x4c\x8b\xbd\x58\xff\xff\xff\x49\x89\x47\x20\x4c\x8b\xa5\x28\xff\xff\xff\x4c\x89\xe7\x4c\x89\xf6\x48\x8b\x95\x20\xff\xff\xff\x89\xd9\xe8\xea\xf9\xff\xff\x49\x89\x47\x08\x4c\x89\xe7\x4c\x89\xf6\x48\x8b\x95\x48\xff\xff\xff\x89\xd9\xe8\xd2\xf9\xff\xff\x49\x89\x07\x4c\x89\xe7\x4c\x89\xf6\x48\x8b\x95\x18\xff\xff\xff\x89\xd9\xe8\xbb\xf9\xff\xff\x49\x89\x47\x10\x4c\x89\xe7\x4c\x89\xf6\x48\x8b\x95\x10\xff\xff\xff\x89\xd9\xe8\xa3\xf9\xff\xff\x83\xbd\x54\xff\xff\xff\x01\x49\x89\x47\x18\x0f\x8f\x16\x02\x00\x00\xc6\x45\x80\x00\x49\x8b\x3f\x45\x31\xc0\x48\x8b\xb5\x40\xff\xff\xff\x48\x8d\x5d\x80\x48\x89\xda\x48\x8d\x8d\x6c\xff\xff\xff\xe8\x9e\x09\x00\x00\x48\x8d\x3d\x25\x53\x00\x00\x48\x89\xde\xe8\x83\x3a\x00\x00\x85\xc0\x75\x1e\x49\x8b\x3f\x48\x8b\xb5\x40\xff\xff\xff\x48\x8d\x95\x70\xff\xff\xff\xe8\x35\x0e\x00\x00\x85\xc0\x0f\x84\xc1\x01\x00\x00\x4c\x89\xff\xe8\x55\xfb\xff\xff\x48\x8b\x85\x60\xff\xff\xff\x80\xb8\x04\x07\x00\x00\x00\x4c\x8b\xb5\x30\xff\xff\xff\x4c\x8b\xbd\x38\xff\xff\xff\x0f\x84\x5a\x01\x00\x00\xba\x00\x02\x00\x00\x4c\x8b\xb5\xf8\xfe\xff\xff\x4c\x89\xf7\x48\x8b\x9d\x48\xff\xff\xff\x48\x89\xde\xe8\xb3\x39\x00\x00\xba\x00\x02\x00\x00\x48\x89\xdf\x48\x8b\x9d\xf0\xfe\xff\xff\x48\x89\xde\xe8\x9c\x39\x00\x00\xba\x00\x02\x00\x00\x48\x89\xdf\x4c\x89\xf6\xe8\x8c\x39\x00\x00\x49\x8b\x7f\x08\x48\x89\xbd\x00\xff\xff\xff\x41\x8b\x47\x18\x89\x85\x08\xff\xff\xff\x49\x89\xfe\xe8\xdb\x39\x00\x00\x48\x8b\x8d\x58\xff\xff\xff\x48\x89\x41\x20\x49\x89\xcc\x48\x8b\x9d\x28\xff\xff\xff\x48\x89\xdf\x4c\x89\xf6\x48\x8b\x95\x20\xff\xff\xff\x44\x8b\xb5\x08\xff\xff\xff\x44\x89\xf1\xe8\x80\xf8\xff\xff\x49\x89\x44\x24\x08\x48\x89\xdf\x4c\x8b\xa5\x00\xff\xff\xff\x4c\x89\xe6\x48\x8b\x95\x48\xff\xff\xff\x44\x89\xf1\xe8\x5f\xf8\xff\xff\x48\x8b\x8d\x58\xff\xff\xff\x48\x89\x01\x48\x89\xdf\x4c\x89\xe6\x48\x8b\x95\x18\xff\xff\xff\x44\x89\xf1\xe8\x40\xf8\xff\xff\x4c\x8b\x85\x58\xff\xff\xff\x49\x89\x40\x10\x48\x89\xdf\x4c\x89\xe6\x48\x8b\x95\x10\xff\xff\xff\x44\x89\xf1\x4d\x89\xc6\xe8\x1d\xf8\xff\xff\x49\x89\x46\x18\xc6\x45\x80\x00\x49\x8b\x3e\x45\x31\xc0\x48\x8b\xb5\x40\xff\xff\xff\x48\x8d\x5d\x80\x48\x89\xda\x48\x8d\x8d\x6c\xff\xff\xff\xe8\x25\x08\x00\x00\x48\x8d\x3d\xac\x51\x00\x00\x48\x89\xde\xe8\x0a\x39\x00\x00\x85\xc0\x75\x1a\x49\x8b\x3e\x48\x8b\xb5\x40\xff\xff\xff\x48\x8d\x95\x70\xff\xff\xff\xe8\xbc\x0c\x00\x00\x85\xc0\x74\x4c\x4c\x89\xf7\xe8\xe0\xf9\xff\xff\x4c\x8b\xb5\x30\xff\xff\xff\xbe\x84\x0b\x00\x00\x48\x8b\xbd\x60\xff\xff\xff\xe8\xd0\x37\x00\x00\x4d\x8b\x3f\x49\x83\xc5\x10\x4d\x85\xff\x0f\x85\xc8\xfc\xff\xff\x8b\x85\x54\xff\xff\xff\xff\xc0\x89\x85\x54\xff\xff\xff\x45\x31\xe4\x83\xf8\x04\x0f\x8c\x9e\xfc\xff\xff\xeb\x0e\x44\x8b\xa5\x54\xff\xff\xff\x4c\x8b\xb5\x30\xff\xff\xff\x4d\x85\xf6\x74\x3a\x4d\x89\xf5\x4c\x8b\xbd\xe0\xfe\xff\xff\x45\x85\xff\x78\x23\x41\xbe\xff\xff\xff\xff\x4c\x89\xeb\x90\x48\x8b\x3b\x48\x85\xff\x74\x05\xe8\xb3\x37\x00\x00\x48\x83\xc3\x10\x41\xff\xc6\x45\x39\xf7\x75\xe7\x4c\x89\xef\xe8\x9f\x37\x00\x00\x48\x8b\x1d\xc0\x5b\x00\x00\x48\x8b\x03\x48\x3b\x45\xd0\x75\x15\x44\x89\xe0\x48\x81\xc4\xf8\x00\x00\x00\x5b\x41\x5c\x41\x5d\x41\x5e\x41\x5f\x5d\xc3\xe8\x45\x37\x00\x00\x0f\x1f\x44\x00\x00\x55\x48\x89\xe5\x41\x57\x41\x56\x41\x55\x41\x54\x53\x48\x83\xec\x58\x44\x89\xc0\x49\x89\xd6\x49\x89\xf4\x49\x89\xff\xc7\x45\x8c\x00\x00\x00\x00\x48\x8d\x75\x8c\x31\xdb\x45\x31\xc0\x48\x89\xca\x89\xc1\xe8\x19\xe0\xff\xff\x49\x89\xc5\x4d\x85\xed\x0f\x84\x03\x01\x00\x00\xbe\x84\x0b\x00\x00\x4c\x89\xf7\xe8\xd8\x36\x00\x00\x49\xc7\x44\x24\x20\x00\x00\x00\x00\x49\xc7\x44\x24\x18\x00\x00\x00\x00\x49\xc7\x44\x24\x10\x00\x00\x00\x00\x49\xc7\x44\x24\x08\x00\x00\x00\x00\x49\xc7\x04\x24\x00\x00\x00\x00\x8b\x45\x8c\x4c\x89\x6d\x90\x89\x45\xa8\x4c\x89\x75\xb0\x48\x8d\x05\x6f\xe5\xff\xff\x48\x89\x45\xb8\x48\x8d\x05\xd4\xe5\xff\xff\x48\x89\x45\xc0\x48\x8d\x05\xb9\xe6\xff\xff\x48\x89\x45\xc8\x48\xc7\x45\xd0\x00\x00\x00\x00\x48\x8d\x7d\x90\xe8\x54\xe0\xff\xff\x4c\x89\xef\xe8\xac\x36\x00\x00\x4c\x89\xff\xe8\x5e\x37\x00\x00\x49\x89\x44\x24\x20\x4c\x89\xf3\x48\x83\xeb\x80\x4d\x8d\xae\x84\x03\x00\x00\x49\x8d\x96\x84\x04\x00\x00\x31\xc9\x48\x89\xdf\x4c\x89\xfe\xe8\x0d\xf6\xff\xff\x49\x89\x44\x24\x08\x31\xc9\x48\x89\xdf\x4c\x89\xfe\x4c\x89\xea\xe8\xf8\xf5\xff\xff\x49\x89\x04\x24\x49\x8d\x96\x84\x01\x00\x00\x31\xc9\x48\x89\xdf\x4c\x89\xfe\xe8\xe0\xf5\xff\xff\x49\x89\x44\x24\x10\x49\x81\xc6\x84\x07\x00\x00\x31\xc9\x48\x89\xdf\x4c\x89\xfe\x4c\x89\xf2\xe8\xc4\xf5\xff\xff\x49\x89\x44\x24\x18\xbb\x01\x00\x00\x00\x89\xd8\x48\x83\xc4\x58\x5b\x41\x5c\x41\x5d\x41\x5e\x41\x5f\x5d\xc3\x90\x90\x90\x90\x90\x90\x90\x90\x90\x55\x48\x89\xe5\x48\x83\xec\x50\x48\xc7\x02\x00\x00\x00\x00\x48\xc7\x42\x48\x00\x00\x00\x00\xc7\x42\x50\x00\x00\x00\x00\x48\x89\x7d\xb8\x89\x75\xd0\x48\x89\x55\xd8\x48\x8d\x05\x40\x00\x00\x00\x48\x89\x45\xe0\x48\x8d\x05\x85\x00\x00\x00\x48\x89\x45\xe8\x48\x8d\x05\x3a\x01\x00\x00\x48\x89\x45\xf0\x48\xc7\x45\xf8\x00\x00\x00\x00\x48\x8d\x7d\xb8\xe8\x55\xdf\xff\xff\x48\x83\xc4\x50\x5d\xc3\x66\x66\x66\x66\x66\x66\x2e\x0f\x1f\x84\x00\x00\x00\x00\x00\x55\x48\x89\xe5\x41\x56\x53\x49\x89\xfe\x41\xc7\x46\x54\x01\x00\x00\x00\x49\x8d\x7e\x08\x83\xfa\x3f\x48\x63\xc2\xbb\x3f\x00\x00\x00\x48\x0f\x4e\xd8\x48\x89\xda\xe8\xc1\x35\x00\x00\x42\xc6\x44\x33\x08\x00\x49\xc7\x46\x58\x00\x00\x00\x00\x41\xc7\x46\x60\x00\x00\x00\x00\x5b\x41\x5e\x5d\xc3\x0f\x1f\x84\x00\x00\x00\x00\x00\x55\x48\x89\xe5\x41\x57\x41\x56\x41\x54\x53\x48\x89\xfb\x83\x7b\x54\x00\x0f\x84\x93\x00\x00\x00\x4c\x8d\x7b\x08\x48\x8d\x35\xda\x4e\x00\x00\x4c\x89\xff\xe8\xd9\x35\x00\x00\x85\xc0\x74\x66\x4c\x63\x63\x60\xbf\xc8\x00\x00\x00\xe8\x55\x35\x00\x00\x49\x89\xc6\x49\x8d\x7e\x08\xba\x40\x00\x00\x00\x4c\x89\xfe\xe8\xd1\x35\x00\x00\x41\xc6\x46\x47\x00\x48\x8b\x73\x58\x4c\x89\xf7\x48\x83\xc7\x48\x48\x85\xf6\x74\x23\x41\x83\xfc\x7f\x41\xbf\x7f\x00\x00\x00\x4d\x0f\x4e\xfc\xb9\x80\x00\x00\x00\x4c\x89\xfa\xe8\x93\x34\x00\x00\x43\xc6\x44\x37\x48\x00\xeb\x03\xc6\x07\x00\x48\x8b\x03\x49\x89\x06\x4c\x89\x33\x48\xc7\x43\x58\x00\x00\x00\x00\xc7\x43\x60\x00\x00\x00\x00\xc7\x43\x54\x00\x00\x00\x00\x5b\x41\x5c\x41\x5e\x41\x5f\x5d\xc3\x66\x66\x66\x2e\x0f\x1f\x84\x00\x00\x00\x00\x00\x55\x48\x89\xe5\x41\x57\x41\x56\x41\x54\x53\x41\x89\xd6\x49\x89\xf7\x48\x89\xfb\x48\x8d\x7b\x08\x48\x8d\x35\x1e\x4e\x00\x00\xe8\x20\x35\x00\x00\x85\xc0\x74\x0a\x4c\x89\x7b\x58\x44\x89\x73\x60\xeb\x33\x41\x8d\x46\x01\x48\x63\xf8\xe8\x94\x34\x00\x00\x48\x89\x43\x48\x48\x85\xc0\x74\x1e\x4d\x63\xe6\x48\x89\xc7\x4c\x89\xfe\x4c\x89\xe2\xe8\x86\x34\x00\x00\x48\x8b\x43\x48\x42\xc6\x04\x20\x00\x44\x89\x73\x50\x5b\x41\x5c\x41\x5e\x41\x5f\x5d\xc3\x66\x90\x55\x48\x89\xe5\x53\x50\x48\x89\xfb\x48\x8b\x7b\x48\x48\x85\xff\x74\x29\xe8\x09\x34\x00\x00\x48\xc7\x43\x48\x00\x00\x00\x00\xc7\x43\x50\x00\x00\x00\x00\xeb\x13\x0f\x1f\x84\x00\x00\x00\x00\x00\x48\x8b\x07\x48\x89\x03\xe8\xe5\x33\x00\x00\x48\x8b\x3b\x48\x85\xff\x75\xed\x48\x83\xc4\x08\x5b\x5d\xc3\x66\x0f\x1f\x44\x00\x00\x55\x48\x89\xe5\x41\x57\x41\x56\x53\x50\x49\x89\xf6\x48\x8b\x1f\x31\xc0\x48\x85\xdb\x74\x2e\x45\x31\xff\x66\x0f\x1f\x44\x00\x00\x48\x8d\x7b\x08\x4c\x89\xf6\xe8\x58\x34\x00\x00\x89\xc1\x48\x8d\x43\x48\x85\xc9\x49\x0f\x45\xc7\x48\x8b\x1b\x48\x85\xdb\x74\x05\x48\x85\xc0\x74\xdb\x48\x83\xc4\x08\x5b\x41\x5e\x41\x5f\x5d\xc3\x55\x48\x89\xe5\x41\x57\x41\x56\x41\x54\x53\x48\x81\xec\x80\x00\x00\x00\x48\x89\xf0\x48\x89\xfa\x4c\x8b\x25\x89\x57\x00\x00\x49\x8b\x0c\x24\x48\x89\x4d\xd8\x48\x8d\x0d\x0e\x4d\x00\x00\x45\x31\xf6\x4c\x8d\x8d\x6c\xff\xff\xff\xbf\xff\xff\xff\xff\x45\x31\xc0\x48\x89\xd6\x48\x89\xc2\xe8\x75\xe8\xff\xff\x48\x89\xc3\xb8\xfd\xff\xff\xff\x48\x85\xdb\x74\x52\x8b\xb5\x6c\xff\xff\xff\x4c\x8d\xbd\x70\xff\xff\xff\x48\x89\xdf\x4c\x89\xfa\xe8\x00\xfd\xff\xff\x48\x89\xdf\xe8\x08\x33\x00\x00\x48\x8d\x35\xcf\x4c\x00\x00\x4c\x89\xff\xe8\x29\xff\xff\xff\x48\x85\xc0\x74\x0f\x31\xf6\x31\xd2\x48\x89\xc7\xe8\xc6\x33\x00\x00\x49\x89\xc6\x48\x8d\xbd\x70\xff\xff\xff\xe8\xb9\xfe\xff\xff\x44\x89\xf0\x49\x8b\x0c\x24\x48\x3b\x4d\xd8\x75\x10\x48\x81\xc4\x80\x00\x00\x00\x5b\x41\x5c\x41\x5e\x41\x5f\x5d\xc3\xe8\x87\x32\x00\x00\x0f\x1f\x80\x00\x00\x00\x00\x55\x48\x89\xe5\x41\x57\x41\x56\x41\x54\x53\x48\x81\xec\x80\x00\x00\x00\x48\x89\xf0\x48\x89\xfa\x4c\x8b\x25\xb9\x56\x00\x00\x49\x8b\x0c\x24\x48\x89\x4d\xd8\x48\x8d\x0d\x62\x4c\x00\x00\x45\x31\xf6\x4c\x8d\x8d\x6c\xff\xff\xff\xbf\xff\xff\xff\xff\x45\x31\xc0\x48\x89\xd6\x48\x89\xc2\xe8\xa5\xe7\xff\xff\x48\x89\xc3\xb8\xfd\xff\xff\xff\x48\x85\xdb\x74\x52\x8b\xb5\x6c\xff\xff\xff\x4c\x8d\xbd\x70\xff\xff\xff\x48\x89\xdf\x4c\x89\xfa\xe8\x30\xfc\xff\xff\x48\x89\xdf\xe8\x38\x32\x00\x00\x48\x8d\x35\x27\x4c\x00\x00\x4c\x89\xff\xe8\x59\xfe\xff\xff\x48\x85\xc0\x74\x0f\x31\xf6\x31\xd2\x48\x89\xc7\xe8\xf6\x32\x00\x00\x49\x89\xc6\x48\x8d\xbd\x70\xff\xff\xff\xe8\xe9\xfd\xff\xff\x44\x89\xf0\x49\x8b\x0c\x24\x48\x3b\x4d\xd8\x75\x10\x48\x81\xc4\x80\x00\x00\x00\x5b\x41\x5c\x41\x5e\x41\x5f\x5d\xc3\xe8\xb7\x31\x00\x00\x0f\x1f\x80\x00\x00\x00\x00\x55\x48\x89\xe5\x41\x57\x41\x56\x41\x54\x53\x48\x81\xec\x80\x00\x00\x00\x48\x89\xf0\x48\x89\xfa\x4c\x8b\x25\xe9\x55\x00\x00\x49\x8b\x0c\x24\x48\x89\x4d\xd8\x48\x8d\x0d\xbe\x4b\x00\x00\x45\x31\xf6\x4c\x8d\x8d\x6c\xff\xff\xff\xbf\xff\xff\xff\xff\x45\x31\xc0\x48\x89\xd6\x48\x89\xc2\xe8\xd5\xe6\xff\xff\x48\x89\xc3\xb8\xfd\xff\xff\xff\x48\x85\xdb\x74\x52\x8b\xb5\x6c\xff\xff\xff\x4c\x8d\xbd\x70\xff\xff\xff\x48\x89\xdf\x4c\x89\xfa\xe8\x60\xfb\xff\xff\x48\x89\xdf\xe8\x68\x31\x00\x00\x48\x8d\x35\x81\x4b\x00\x00\x4c\x89\xff\xe8\x89\xfd\xff\xff\x48\x85\xc0\x74\x0f\x31\xf6\x31\xd2\x48\x89\xc7\xe8\x26\x32\x00\x00\x49\x89\xc6\x48\x8d\xbd\x70\xff\xff\xff\xe8\x19\xfd\xff\xff\x44\x89\xf0\x49\x8b\x0c\x24\x48\x3b\x4d\xd8\x75\x10\x48\x81\xc4\x80\x00\x00\x00\x5b\x41\x5c\x41\x5e\x41\x5f\x5d\xc3\xe8\xe7\x30\x00\x00\x0f\x1f\x80\x00\x00\x00\x00\x55\x48\x89\xe5\x41\x57\x41\x56\x41\x54\x53\x48\x81\xec\x80\x00\x00\x00\x48\x89\xf0\x48\x89\xfa\x4c\x8b\x25\x19\x55\x00\x00\x49\x8b\x0c\x24\x48\x89\x4d\xd8\x48\x8d\x0d\x16\x4b\x00\x00\x45\x31\xf6\x4c\x8d\x8d\x6c\xff\xff\xff\xbf\xff\xff\xff\xff\x45\x31\xc0\x48\x89\xd6\x48\x89\xc2\xe8\x05\xe6\xff\xff\x48\x89\xc3\xb8\xfd\xff\xff\xff\x48\x85\xdb\x74\x52\x8b\xb5\x6c\xff\xff\xff\x4c\x8d\xbd\x70\xff\xff\xff\x48\x89\xdf\x4c\x89\xfa\xe8\x90\xfa\xff\xff\x48\x89\xdf\xe8\x98\x30\x00\x00\x48\x8d\x35\xdd\x4a\x00\x00\x4c\x89\xff\xe8\xb9\xfc\xff\xff\x48\x85\xc0\x74\x0f\x31\xf6\x31\xd2\x48\x89\xc7\xe8\x56\x31\x00\x00\x49\x89\xc6\x48\x8d\xbd\x70\xff\xff\xff\xe8\x49\xfc\xff\xff\x44\x89\xf0\x49\x8b\x0c\x24\x48\x3b\x4d\xd8\x75\x10\x48\x81\xc4\x80\x00\x00\x00\x5b\x41\x5c\x41\x5e\x41\x5f\x5d\xc3\xe8\x17\x30\x00\x00\x0f\x1f\x80\x00\x00\x00\x00\x55\x48\x89\xe5\x41\x57\x41\x56\x41\x55\x41\x54\x53\x48\x81\xec\x88\x00\x00\x00\x4d\x89\xc5\x49\x89\xcf\x49\x89\xd6\x48\x89\xf2\x48\x89\xfe\x4c\x8b\x25\x3e\x54\x00\x00\x49\x8b\x04\x24\x48\x89\x45\xd0\xc7\x85\x60\xff\xff\xff\xff\xff\xff\xff\x4d\x85\xf6\x75\x0e\xb8\xfe\xff\xff\xff\x4d\x85\xff\x0f\x84\x72\x01\x00\x00\x48\x8d\x0d\x4e\x4a\x00\x00\x4c\x8d\x8d\x64\xff\xff\xff\xbf\xff\xff\xff\xff\x45\x31\xc0\xe8\x16\xe5\xff\xff\x48\x89\xc3\xb8\xfd\xff\xff\xff\x48\x85\xdb\x0f\x84\x46\x01\x00\x00\x4c\x89\xad\x50\xff\xff\xff\x8b\xb5\x64\xff\xff\xff\x4c\x8d\xad\x68\xff\xff\xff\x48\x89\xdf\x4c\x89\xea\xe8\x96\xf9\xff\xff\x48\x89\xdf\xe8\x9e\x2f\x00\x00\x48\x8d\x35\x09\x4a\x00\x00\x4c\x89\xef\xe8\xbf\xfb\xff\xff\x48\x89\x85\x58\xff\xff\xff\x48\x8d\x35\xfd\x49\x00\x00\x4c\x89\xef\xe8\xa9\xfb\xff\xff\x49\x89\xc4\x48\x8d\x35\xff\x49\x00\x00\x4c\x89\xef\xe8\x97\xfb\xff\xff\x49\x89\xc5\x4d\x85\xe4\x74\x14\x48\x83\xbd\x58\xff\xff\xff\x00\x74\x0a\xc7\x85\x60\xff\xff\xff\x00\x00\x00\x00\x4d\x85\xf6\x48\x8b\x9d\x50\xff\xff\xff\x74\x20\x4d\x85\xe4\x74\x17\xba\x40\x00\x00\x00\x4c\x89\xf7\x4c\x89\xe6\xe8\xfc\x2f\x00\x00\x41\xc6\x46\x3f\x00\xeb\x04\x41\xc6\x06\x00\x4d\x85\xff\x74\x22\x48\x83\xbd\x58\xff\xff\xff\x00\x74\x18\x48\x8d\x35\xb0\x49\x00\x00\x31\xc0\x48\x8b\xbd\x58\xff\xff\xff\x4c\x89\xfa\xe8\xa0\x2f\x00\x00\x48\x85\xdb\x4c\x8b\x25\x16\x53\x00\x00\x74\x1e\x4d\x85\xed\x74\x16\xba\x40\x00\x00\x00\x48\x89\xdf\x4c\x89\xee\xe8\xa9\x2f\x00\x00\xc6\x43\x3f\x00\xeb\x03\xc6\x03\x00\x48\x8d\x35\x71\x49\x00\x00\x48\x8d\xbd\x68\xff\xff\xff\xe8\xeb\xfa\xff\xff\x48\x89\xc1\x48\x85\xc9\x74\x22\xc7\x85\x60\xff\xff\xff\xff\xff\xff\xff\x48\x8d\x35\x23\x3d\x00\x00\x48\x8d\x95\x60\xff\xff\xff\x31\xc0\x48\x89\xcf\xe8\x39\x2f\x00\x00\x48\x8d\xbd\x68\xff\xff\xff\xe8\x65\xfa\xff\xff\x8b\x85\x60\xff\xff\xff\x49\x8b\x0c\x24\x48\x3b\x4d\xd0\x75\x12\x48\x81\xc4\x88\x00\x00\x00\x5b\x41\x5c\x41\x5d\x41\x5e\x41\x5f\x5d\xc3\xe8\x2e\x2e\x00\x00\x66\x66\x66\x66\x66\x2e\x0f\x1f\x84\x00\x00\x00\x00\x00\x55\x48\x89\xe5\x41\x57\x41\x56\x41\x54\x53\x48\x81\xec\x80\x00\x00\x00\x49\x89\xd6\x48\x89\xf2\x48\x89\xfe\x4c\x8b\x25\x56\x52\x00\x00\x49\x8b\x04\x24\x48\x89\x45\xd8\xc7\x85\x68\xff\xff\xff\xff\xff\xff\xff\xb8\xfe\xff\xff\xff\x4d\x85\xf6\x0f\x84\xd4\x00\x00\x00\x48\x8d\x0d\xbb\x48\x00\x00\x4c\x8d\x8d\x6c\xff\xff\xff\xbf\xff\xff\xff\xff\x45\x31\xc0\xe8\x33\xe3\xff\xff\x48\x89\xc3\xb8\xfd\xff\xff\xff\x48\x85\xdb\x0f\x84\xa8\x00\x00\x00\x8b\xb5\x6c\xff\xff\xff\x4c\x8d\xbd\x70\xff\xff\xff\x48\x89\xdf\x4c\x89\xfa\xe8\xba\xf7\xff\xff\x48\x89\xdf\xe8\xc2\x2d\x00\x00\x48\x8d\x35\x85\x48\x00\x00\x4c\x89\xff\xe8\xe3\xf9\xff\xff\x48\x85\xc0\x74\x21\xba\x40\x00\x00\x00\x4c\x89\xf7\x48\x89\xc6\xe8\x70\x2e\x00\x00\x41\xc6\x46\x3f\x00\xc7\x85\x68\xff\xff\xff\x00\x00\x00\x00\xeb\x04\x41\xc6\x06\x00\x48\x8d\x35\x2c\x48\x00\x00\x48\x8d\xbd\x70\xff\xff\xff\xe8\xa6\xf9\xff\xff\x48\x89\xc1\x48\x85\xc9\x74\x22\xc7\x85\x68\xff\xff\xff\xff\xff\xff\xff\x48\x8d\x35\xde\x3b\x00\x00\x48\x8d\x95\x68\xff\xff\xff\x31\xc0\x48\x89\xcf\xe8\xf4\x2d\x00\x00\x48\x8d\xbd\x70\xff\xff\xff\xe8\x20\xf9\xff\xff\x8b\x85\x68\xff\xff\xff\x49\x8b\x0c\x24\x48\x3b\x4d\xd8\x75\x10\x48\x81\xc4\x80\x00\x00\x00\x5b\x41\x5c\x41\x5e\x41\x5f\x5d\xc3\xe8\xeb\x2c\x00\x00\x66\x66\x2e\x0f\x1f\x84\x00\x00\x00\x00\x00\x55\x48\x89\xe5\x41\x57\x41\x56\x41\x55\x41\x54\x53\x48\x83\xec\x78\x49\x89\xce\x49\x89\xd5\x48\x89\xf2\x48\x89\xfe\x48\x8b\x1d\x14\x51\x00\x00\x48\x8b\x03\x48\x89\x45\xd0\xc7\x85\x60\xff\xff\xff\xff\xff\xff\xff\xb8\xfe\xff\xff\xff\x4c\x89\xe9\x4c\x09\xf1\x0f\x84\x29\x01\x00\x00\x48\x8d\x0d\x9f\x47\x00\x00\x4c\x8d\x8d\x64\xff\xff\xff\xbf\xff\xff\xff\xff\x45\x31\xc0\xe8\xef\xe1\xff\xff\x49\x89\xc4\xb8\xfd\xff\xff\xff\x4d\x85\xe4\x0f\x84\xfd\x00\x00\x00\x8b\xb5\x64\xff\xff\xff\x4c\x8d\xbd\x68\xff\xff\xff\x4c\x89\xe7\x4c\x89\xfa\xe8\x76\xf6\xff\xff\x4c\x89\xe7\xe8\x7e\x2c\x00\x00\x48\x8d\x35\x6b\x47\x00\x00\x4c\x89\xff\xe8\x9f\xf8\xff\xff\x49\x89\xc4\x48\x8d\x35\x77\x47\x00\x00\x4c\x89\xff\xe8\x8d\xf8\xff\xff\x49\x89\xc7\x4d\x85\xe4\x74\x0f\x4d\x85\xff\x74\x0a\xc7\x85\x60\xff\xff\xff\x00\x00\x00\x00\x4d\x85\xed\x74\x23\x4d\x85\xe4\x74\x16\x48\x8d\x35\xdc\x46\x00\x00\x31\xc0\x4c\x89\xe7\x4c\x89\xea\xe8\xd0\x2c\x00\x00\xeb\x08\x41\xc7\x45\x00\x00\x00\x00\x00\x4d\x85\xf6\x74\x22\x4d\x85\xff\x74\x16\x48\x8d\x35\xb4\x46\x00\x00\x31\xc0\x4c\x89\xff\x4c\x89\xf2\xe8\xa8\x2c\x00\x00\xeb\x07\x41\xc7\x06\x00\x00\x00\x00\x48\x8d\x35\x9a\x46\x00\x00\x48\x8d\xbd\x68\xff\xff\xff\xe8\x14\xf8\xff\xff\x48\x89\xc1\x48\x85\xc9\x74\x22\xc7\x85\x60\xff\xff\xff\xff\xff\xff\xff\x48\x8d\x35\x4c\x3a\x00\x00\x48\x8d\x95\x60\xff\xff\xff\x31\xc0\x48\x89\xcf\xe8\x62\x2c\x00\x00\x48\x8d\xbd\x68\xff\xff\xff\xe8\x8e\xf7\xff\xff\x8b\x85\x60\xff\xff\xff\x48\x8b\x1d\xc9\x4f\x00\x00\x48\x8b\x0b\x48\x3b\x4d\xd0\x75\x0f\x48\x83\xc4\x78\x5b\x41\x5c\x41\x5d\x41\x5e\x41\x5f\x5d\xc3\xe8\x54\x2b\x00\x00\x0f\x1f\x40\x00\x55\x48\x89\xe5\x41\x57\x41\x56\x41\x54\x53\x48\x81\xec\x80\x00\x00\x00\x49\x89\xd6\x48\x89\xf3\x48\x89\xfa\x4c\x8b\x25\x86\x4f\x00\x00\x49\x8b\x04\x24\x48\x89\x45\xd8\xc7\x85\x68\xff\xff\xff\xff\xff\xff\xff\xb8\xfe\xff\xff\xff\x4d\x85\xf6\x0f\x84\xec\x00\x00\x00\x48\x85\xd2\x0f\x84\xe3\x00\x00\x00\x48\x85\xdb\x0f\x84\xda\x00\x00\x00\x48\x8d\x0d\x53\x46\x00\x00\x4c\x8d\x8d\x6c\xff\xff\xff\xbf\xff\xff\xff\xff\x45\x31\xc0\x48\x89\xd6\x48\x89\xda\xe8\x4b\xe0\xff\xff\x48\x89\xc3\xb8\xfd\xff\xff\xff\x48\x85\xdb\x0f\x84\xa8\x00\x00\x00\x8b\xb5\x6c\xff\xff\xff\x4c\x8d\xbd\x70\xff\xff\xff\x48\x89\xdf\x4c\x89\xfa\xe8\xd2\xf4\xff\xff\x48\x89\xdf\xe8\xda\x2a\x00\x00\x48\x8d\x35\x16\x46\x00\x00\x4c\x89\xff\xe8\xfb\xf6\xff\xff\x48\x85\xc0\x74\x21\xba\x10\x00\x00\x00\x4c\x89\xf7\x48\x89\xc6\xe8\x88\x2b\x00\x00\x41\xc6\x46\x0f\x00\xc7\x85\x68\xff\xff\xff\x00\x00\x00\x00\xeb\x04\x41\xc6\x06\x00\x48\x8d\x35\x44\x45\x00\x00\x48\x8d\xbd\x70\xff\xff\xff\xe8\xbe\xf6\xff\xff\x48\x89\xc1\x48\x85\xc9\x74\x22\xc7\x85\x68\xff\xff\xff\xff\xff\xff\xff\x48\x8d\x35\xf6\x38\x00\x00\x48\x8d\x95\x68\xff\xff\xff\x31\xc0\x48\x89\xcf\xe8\x0c\x2b\x00\x00\x48\x8d\xbd\x70\xff\xff\xff\xe8\x38\xf6\xff\xff\x8b\x85\x68\xff\xff\xff\x49\x8b\x0c\x24\x48\x3b\x4d\xd8\x75\x10\x48\x81\xc4\x80\x00\x00\x00\x5b\x41\x5c\x41\x5e\x41\x5f\x5d\xc3\xe8\x03\x2a\x00\x00\x0f\x1f\x00\x55\x48\x89\xe5\x41\x57\x41\x56\x41\x55\x41\x54\x53\x48\x81\xec\x98\x00\x00\x00\x4d\x89\xc5\x49\x89\xce\x49\x89\xd7\x48\x8b\x0d\x34\x4e\x00\x00\x48\x8b\x01\x48\x89\x45\xd0\xb8\xfe\xff\xff\xff\x4d\x85\xf6\x0f\x84\xb5\x01\x00\x00\x4d\x85\xed\x0f\x84\xac\x01\x00\x00\x4c\x8b\x65\x10\x4d\x85\xe4\x0f\x84\x9f\x01\x00\x00\x4c\x89\x8d\x48\xff\xff\xff\x48\x89\xbd\x50\xff\xff\xff\x48\x89\xb5\x58\xff\xff\xff\x4d\x85\xff\x0f\x84\x81\x01\x00\x00\xbf\x09\x00\x00\x00\xbe\x10\x00\x00\x00\xe8\x96\x29\x00\x00\x48\x89\xc3\x48\x8d\x05\x65\x4a\x00\x00\x48\x89\x03\x48\x8b\x45\x18\x48\x89\x43\x08\x48\x8d\x05\x61\x4a\x00\x00\x48\x89\x43\x10\x4c\x89\x7b\x18\x48\x8d\x05\x62\x4a\x00\x00\x48\x89\x43\x20\x4c\x89\x63\x28\x48\x8d\x05\x5f\x4a\x00\x00\x48\x89\x43\x30\x4c\x89\x73\x38\x48\x8d\x05\x60\x4a\x00\x00\x48\x89\x43\x40\x4c\x89\x6b\x48\x48\x8d\x05\x63\x4a\x00\x00\x48\x89\x43\x50\x48\x8d\x05\xa9\x44\x00\x00\x48\x89\x43\x58\x48\x8d\x05\xa0\x44\x00\x00\x48\x89\x43\x60\x48\x8b\x8d\x48\xff\xff\xff\x48\x85\xc9\x48\x8d\x05\xa5\x44\x00\x00\x48\x0f\x45\xc1\x48\x89\x43\x68\x48\x8d\x05\xa3\x44\x00\x00\x48\x89\x43\x70\x48\x8b\x4d\x20\x48\x85\xc9\x48\x8d\x05\x3a\x34\x00\x00\x48\x0f\x45\xc1\x48\x89\x43\x78\x48\x8d\x0d\x93\x44\x00\x00\x4c\x8d\x8d\x64\xff\xff\xff\xbf\xff\xff\xff\xff\x48\x8b\xb5\x50\xff\xff\xff\x48\x8b\x95\x58\xff\xff\xff\x49\x89\xd8\xe8\x1f\xde\xff\xff\x49\x89\xc6\x4d\x85\xf6\x74\x5b\x8b\xb5\x64\xff\xff\xff\x4c\x8d\xbd\x68\xff\xff\xff\x4c\x89\xf7\x4c\x89\xfa\xe8\xaf\xf2\xff\xff\x4c\x89\xf7\xe8\xb7\x28\x00\x00\x48\x8d\x35\x5a\x43\x00\x00\x4c\x89\xff\xe8\xd8\xf4\xff\xff\x48\x89\xc1\x48\x85\xc9\x74\x33\xc7\x85\x60\xff\xff\xff\xff\xff\xff\xff\x48\x8d\x35\x10\x37\x00\x00\x48\x8d\x95\x60\xff\xff\xff\x31\xc0\x48\x89\xcf\xe8\x26\x29\x00\x00\xeb\x19\x48\x89\xdf\xe8\x74\x28\x00\x00\xb8\xfd\xff\xff\xff\xeb\x24\xc7\x85\x60\xff\xff\xff\x00\x00\x00\x00\x48\x8d\xbd\x68\xff\xff\xff\xe8\x37\xf4\xff\xff\x48\x89\xdf\xe8\x4f\x28\x00\x00\x8b\x85\x60\xff\xff\xff\x48\x8b\x0d\x6a\x4c\x00\x00\x48\x8b\x09\x48\x3b\x4d\xd0\x75\x12\x48\x81\xc4\x98\x00\x00\x00\x5b\x41\x5c\x41\x5d\x41\x5e\x41\x5f\x5d\xc3\xe8\xf2\x27\x00\x00\x66\x90\x55\x48\x89\xe5\x41\x57\x41\x56\x41\x55\x41\x54\x53\x48\x81\xec\x98\x00\x00\x00\x4d\x89\xc5\x49\x89\xce\x49\x89\xd7\x48\x8b\x0d\x24\x4c\x00\x00\x48\x8b\x01\x48\x89\x45\xd0\xb8\xfe\xff\xff\xff\x4d\x85\xf6\x0f\x84\xf2\x01\x00\x00\x4d\x85\xed\x0f\x84\xe9\x01\x00\x00\x4c\x8b\x65\x10\x4d\x85\xe4\x0f\x84\xdc\x01\x00\x00\x4c\x89\x8d\x48\xff\xff\xff\x48\x89\xbd\x50\xff\xff\xff\x48\x89\xb5\x58\xff\xff\xff\x4d\x85\xff\x0f\x84\xbe\x01\x00\x00\xbf\x09\x00\x00\x00\xbe\x10\x00\x00\x00\xe8\x86\x27\x00\x00\x48\x89\xc3\x48\x8d\x05\x55\x48\x00\x00\x48\x89\x03\x48\x8b\x45\x18\x48\x89\x43\x08\x48\x8d\x05\x51\x48\x00\x00\x48\x89\x43\x10\x4c\x89\x7b\x18\x48\x8d\x05\x52\x48\x00\x00\x48\x89\x43\x20\x4c\x89\x63\x28\x48\x8d\x05\x4f\x48\x00\x00\x48\x89\x43\x30\x4c\x89\x73\x38\x48\x8d\x05\x50\x48\x00\x00\x48\x89\x43\x40\x4c\x89\x6b\x48\x48\x8d\x05\x53\x48\x00\x00\x48\x89\x43\x50\x48\x8d\x05\x99\x42\x00\x00\x48\x89\x43\x58\x48\x8d\x05\x90\x42\x00\x00\x48\x89\x43\x60\x48\x8b\x8d\x48\xff\xff\xff\x48\x85\xc9\x48\x8d\x05\x95\x42\x00\x00\x48\x0f\x45\xc1\x48\x89\x43\x68\x48\x8d\x05\x93\x42\x00\x00\x48\x89\x43\x70\x48\x8b\x4d\x20\x48\x85\xc9\x48\x8d\x05\x2a\x32\x00\x00\x48\x0f\x45\xc1\x48\x89\x43\x78\x48\x8d\x0d\x92\x42\x00\x00\x4c\x8d\x8d\x64\xff\xff\xff\xbf\xff\xff\xff\xff\x48\x8b\xb5\x50\xff\xff\xff\x48\x8b\x95\x58\xff\xff\xff\x49\x89\xd8\xe8\x0f\xdc\xff\xff\x49\x89\xc6\x4d\x85\xf6\x74\x5b\x8b\xb5\x64\xff\xff\xff\x4c\x8d\xbd\x68\xff\xff\xff\x4c\x89\xf7\x4c\x89\xfa\xe8\x9f\xf0\xff\xff\x4c\x89\xf7\xe8\xa7\x26\x00\x00\x48\x8d\x35\x4a\x41\x00\x00\x4c\x89\xff\xe8\xc8\xf2\xff\xff\x48\x89\xc1\x48\x85\xc9\x74\x33\xc7\x85\x60\xff\xff\xff\xff\xff\xff\xff\x48\x8d\x35\x00\x35\x00\x00\x48\x8d\x95\x60\xff\xff\xff\x31\xc0\x48\x89\xcf\xe8\x16\x27\x00\x00\xeb\x56\x48\x89\xdf\xe8\x64\x26\x00\x00\xb8\xfd\xff\xff\xff\xeb\x61\x48\x8d\x35\x09\x42\x00\x00\x48\x8d\xbd\x68\xff\xff\xff\xe8\x7a\xf2\xff\xff\x48\x85\xc0\x74\x25\x4c\x8b\x75\x28\xba\x06\x00\x00\x00\x4c\x89\xf7\x48\x89\xc6\xe8\x03\x27\x00\x00\x41\xc6\x46\x05\x00\xc7\x85\x60\xff\xff\xff\x00\x00\x00\x00\xeb\x0a\xc7\x85\x60\xff\xff\xff\xfc\xff\xff\xff\x48\x8d\xbd\x68\xff\xff\xff\xe8\xea\xf1\xff\xff\x48\x89\xdf\xe8\x02\x26\x00\x00\x8b\x85\x60\xff\xff\xff\x48\x8b\x0d\x1d\x4a\x00\x00\x48\x8b\x09\x48\x3b\x4d\xd0\x75\x12\x48\x81\xc4\x98\x00\x00\x00\x5b\x41\x5c\x41\x5d\x41\x5e\x41\x5f\x5d\xc3\xe8\xa5\x25\x00\x00\x0f\x1f\x44\x00\x00\x55\x48\x89\xe5\x41\x57\x41\x56\x41\x55\x41\x54\x53\x48\x81\xec\x88\x00\x00\x00\x4d\x89\xc6\x49\x89\xcc\x48\x89\xd3\x49\x89\xff\x48\x8b\x0d\xd1\x49\x00\x00\x48\x8b\x01\x48\x89\x45\xd0\xb8\xfe\xff\xff\xff\x48\x85\xdb\x0f\x84\x11\x01\x00\x00\x48\x89\xb5\x58\xff\xff\xff\x4d\x85\xe4\x0f\x84\x01\x01\x00\x00\xbf\x04\x00\x00\x00\xbe\x10\x00\x00\x00\xe8\x57\x25\x00\x00\x49\x89\xc5\x48\x8d\x05\x26\x46\x00\x00\x49\x89\x45\x00\x4d\x89\x75\x08\x48\x8d\x05\x25\x46\x00\x00\x49\x89\x45\x10\x49\x89\x5d\x18\x48\x8d\x05\x26\x46\x00\x00\x49\x89\x45\x20\x4d\x89\x65\x28\x48\x8d\x0d\x01\x41\x00\x00\x4c\x8d\x8d\x64\xff\xff\xff\xbf\xff\xff\xff\xff\x4c\x89\xfe\x48\x8b\x95\x58\xff\xff\xff\x4d\x89\xe8\xe8\x60\xda\xff\xff\x48\x89\xc3\x48\x85\xdb\x74\x5b\x8b\xb5\x64\xff\xff\xff\x4c\x8d\xb5\x68\xff\xff\xff\x48\x89\xdf\x4c\x89\xf2\xe8\xf0\xee\xff\xff\x48\x89\xdf\xe8\xf8\x24\x00\x00\x48\x8d\x35\x9b\x3f\x00\x00\x4c\x89\xf7\xe8\x19\xf1\xff\xff\x48\x89\xc1\x48\x85\xc9\x74\x33\xc7\x85\x60\xff\xff\xff\xff\xff\xff\xff\x48\x8d\x35\x51\x33\x00\x00\x48\x8d\x95\x60\xff\xff\xff\x31\xc0\x48\x89\xcf\xe8\x67\x25\x00\x00\xeb\x19\x4c\x89\xef\xe8\xb5\x24\x00\x00\xb8\xfd\xff\xff\xff\xeb\x24\xc7\x85\x60\xff\xff\xff\x00\x00\x00\x00\x48\x8d\xbd\x68\xff\xff\xff\xe8\x78\xf0\xff\xff\x4c\x89\xef\xe8\x90\x24\x00\x00\x8b\x85\x60\xff\xff\xff\x48\x8b\x0d\xab\x48\x00\x00\x48\x8b\x09\x48\x3b\x4d\xd0\x75\x12\x48\x81\xc4\x88\x00\x00\x00\x5b\x41\x5c\x41\x5d\x41\x5e\x41\x5f\x5d\xc3\xe8\x33\x24\x00\x00\x0f\x1f\x00\x55\x48\x89\xe5\x41\x57\x41\x56\x41\x55\x41\x54\x53\x48\x81\xec\x88\x00\x00\x00\x4d\x89\xcc\x4d\x89\xc5\x49\x89\xce\x49\x89\xd7\x48\x8b\x0d\x61\x48\x00\x00\x48\x8b\x01\x48\x89\x45\xd0\xb8\xfe\xff\xff\xff\x4d\x85\xff\x0f\x84\x3c\x01\x00\x00\x4d\x85\xf6\x0f\x84\x33\x01\x00\x00\x4d\x85\xed\x0f\x84\x2a\x01\x00\x00\x48\x89\xbd\x50\xff\xff\xff\x48\x89\xb5\x58\xff\xff\xff\x4d\x85\xe4\x0f\x84\x13\x01\x00\x00\xbf\x05\x00\x00\x00\xbe\x10\x00\x00\x00\xe8\xce\x23\x00\x00\x48\x89\xc3\x48\x8d\x05\xb7\x3f\x00\x00\x48\x89\x03\x4c\x89\x7b\x08\x48\x8d\x05\xb6\x3f\x00\x00\x48\x89\x43\x10\x4c\x89\x73\x18\x48\x8d\x05\x9e\x44\x00\x00\x48\x89\x43\x20\x4c\x89\x6b\x28\x48\x8d\x05\xa3\x3f\x00\x00\x48\x89\x43\x30\x4c\x89\x63\x38\x48\x8d\x0d\x9e\x3f\x00\x00\x4c\x8d\x8d\x64\xff\xff\xff\xbf\xff\xff\xff\xff\x48\x8b\xb5\x50\xff\xff\xff\x48\x8b\x95\x58\xff\xff\xff\x49\x89\xd8\xe8\xc5\xd8\xff\xff\x49\x89\xc6\x4d\x85\xf6\x74\x5b\x8b\xb5\x64\xff\xff\xff\x4c\x8d\xbd\x68\xff\xff\xff\x4c\x89\xf7\x4c\x89\xfa\xe8\x55\xed\xff\xff\x4c\x89\xf7\xe8\x5d\x23\x00\x00\x48\x8d\x35\x00\x3e\x00\x00\x4c\x89\xff\xe8\x7e\xef\xff\xff\x48\x89\xc1\x48\x85\xc9\x74\x33\xc7\x85\x60\xff\xff\xff\xff\xff\xff\xff\x48\x8d\x35\xb6\x31\x00\x00\x48\x8d\x95\x60\xff\xff\xff\x31\xc0\x48\x89\xcf\xe8\xcc\x23\x00\x00\xeb\x19\x48\x89\xdf\xe8\x1a\x23\x00\x00\xb8\xfd\xff\xff\xff\xeb\x24\xc7\x85\x60\xff\xff\xff\x00\x00\x00\x00\x48\x8d\xbd\x68\xff\xff\xff\xe8\xdd\xee\xff\xff\x48\x89\xdf\xe8\xf5\x22\x00\x00\x8b\x85\x60\xff\xff\xff\x48\x8b\x0d\x10\x47\x00\x00\x48\x8b\x09\x48\x3b\x4d\xd0\x75\x12\x48\x81\xc4\x88\x00\x00\x00\x5b\x41\x5c\x41\x5d\x41\x5e\x41\x5f\x5d\xc3\xe8\x98\x22\x00\x00\x0f\x1f\x84\x00\x00\x00\x00\x00\x55\x48\x89\xe5\x41\x57\x41\x56\x41\x55\x41\x54\x53\x48\x81\xec\x88\x00\x00\x00\x4d\x89\xc4\x49\x89\xcd\x49\x89\xd7\x48\x89\xf3\x49\x89\xfe\x48\x8b\x0d\xbe\x46\x00\x00\x48\x8b\x01\x48\x89\x45\xd0\xc7\x85\x60\xff\xff\xff\xff\xff\xff\xff\xb8\xfe\xff\xff\xff\x4d\x85\xff\x0f\x84\xa0\x02\x00\x00\x41\xc6\x04\x24\x00\x41\xc6\x01\x00\x4c\x89\x8d\x58\xff\xff\xff\xbf\x02\x00\x00\x00\xbe\x10\x00\x00\x00\xe8\x3a\x22\x00\x00\x48\x8d\x0d\x5f\x3e\x00\x00\x48\x89\x08\x4c\x89\x78\x08\x49\x89\xc7\x48\x8d\x0d\x62\x3e\x00\x00\x4c\x8d\x8d\x64\xff\xff\xff\xbf\xff\xff\xff\xff\x4c\x89\xf6\x48\x89\xda\x4d\x89\xf8\xe8\x66\xd7\xff\xff\x48\x89\xc3\x48\x85\xdb\x0f\x84\x2f\x02\x00\x00\x8b\xb5\x64\xff\xff\xff\x4c\x8d\xb5\x68\xff\xff\xff\x48\x89\xdf\x4c\x89\xf2\xe8\xf2\xeb\xff\xff\x48\x89\xdf\xe8\xfa\x21\x00\x00\x48\x8d\x35\xae\x42\x00\x00\x4c\x89\xf7\xe8\x1b\xee\xff\xff\x48\x85\xc0\x74\x1d\x48\x8b\x5d\x28\x48\x85\xdb\x74\x14\xba\x40\x00\x00\x00\x48\x89\xdf\x48\x89\xc6\xe8\x9f\x22\x00\x00\xc6\x43\x3f\x00\x48\x8d\x35\x8b\x42\x00\x00\x48\x8d\xbd\x68\xff\xff\xff\xe8\xe6\xed\xff\xff\x48\x85\xc0\x74\x24\x4d\x85\xed\x74\x1f\xba\x06\x00\x00\x00\x4c\x89\xef\x48\x89\xc6\xe8\x6e\x22\x00\x00\x41\xc6\x45\x05\x00\xc7\x85\x60\xff\xff\xff\x00\x00\x00\x00\x48\x8d\x35\x5f\x42\x00\x00\x48\x8d\xbd\x68\xff\xff\xff\xe8\xaa\xed\xff\xff\x48\x85\xc0\x74\x1d\x48\x8b\x5d\x10\x48\x85\xdb\x74\x14\xba\x04\x00\x00\x00\x48\x89\xdf\x48\x89\xc6\xe8\x2e\x22\x00\x00\xc6\x43\x03\x00\x48\x8d\x35\x46\x42\x00\x00\x48\x8d\xbd\x68\xff\xff\xff\xe8\x75\xed\xff\xff\x48\x85\xc0\x74\x25\x4d\x85\xe4\x74\x20\xba\x10\x00\x00\x00\x4c\x89\xe7\x48\x89\xc6\xe8\xfd\x21\x00\x00\x41\xc6\x44\x24\x0f\x00\xc7\x85\x60\xff\xff\xff\x00\x00\x00\x00\x48\x8d\x35\xf9\x41\x00\x00\x48\x8d\xbd\x68\xff\xff\xff\xe8\x38\xed\xff\xff\x48\x85\xc0\x48\x8b\xbd\x58\xff\xff\xff\x74\x19\x48\x85\xff\x74\x14\xba\x06\x00\x00\x00\x48\x89\xc6\x48\x89\xfb\xe8\xb9\x21\x00\x00\xc6\x43\x05\x00\x48\x8d\x35\xe3\x41\x00\x00\x48\x8d\xbd\x68\xff\xff\xff\xe8\x00\xed\xff\xff\x48\x85\xc0\x74\x1d\x48\x8b\x5d\x20\x48\x85\xdb\x74\x14\xba\x04\x00\x00\x00\x48\x89\xdf\x48\x89\xc6\xe8\x84\x21\x00\x00\xc6\x43\x03\x00\x48\x8d\x35\x01\x3c\x00\x00\x48\x8d\xbd\x68\xff\xff\xff\xe8\xcb\xec\xff\xff\x48\x85\xc0\x74\x1d\x48\x8b\x5d\x18\x48\x85\xdb\x74\x14\xba\x50\x00\x00\x00\x48\x89\xdf\x48\x89\xc6\xe8\x4f\x21\x00\x00\xc6\x43\x4f\x00\x48\x8d\x35\xf3\x3b\x00\x00\x48\x8d\xbd\x68\xff\xff\xff\xe8\x96\xec\xff\xff\x48\x85\xc0\x74\x1d\x48\x8b\x5d\x30\x48\x85\xdb\x74\x14\xba\x10\x00\x00\x00\x48\x89\xdf\x48\x89\xc6\xe8\x1a\x21\x00\x00\xc6\x43\x0f\x00\x48\x8d\x35\xe7\x3a\x00\x00\x48\x8d\xbd\x68\xff\xff\xff\xe8\x61\xec\xff\xff\x48\x89\xc1\x48\x85\xc9\x74\x22\xc7\x85\x60\xff\xff\xff\xff\xff\xff\xff\x48\x8d\x35\x99\x2e\x00\x00\x48\x8d\x95\x60\xff\xff\xff\x31\xc0\x48\x89\xcf\xe8\xaf\x20\x00\x00\x48\x8d\xbd\x68\xff\xff\xff\xe8\xdb\xeb\xff\xff\x4c\x89\xff\xe8\xf3\x1f\x00\x00\x8b\x85\x60\xff\xff\xff\xeb\x0d\x4c\x89\xff\xe8\xe3\x1f\x00\x00\xb8\xfd\xff\xff\xff\x48\x8b\x0d\xff\x43\x00\x00\x48\x8b\x09\x48\x3b\x4d\xd0\x75\x12\x48\x81\xc4\x88\x00\x00\x00\x5b\x41\x5c\x41\x5d\x41\x5e\x41\x5f\x5d\xc3\xe8\x87\x1f\x00\x00\x0f\x1f\x80\x00\x00\x00\x00\x55\x48\x89\xe5\x41\x57\x41\x56\x41\x54\x53\x48\x81\xec\x80\x00\x00\x00\x49\x89\xd6\x48\x89\xf0\x48\x89\xfa\x4c\x8b\x25\xb6\x43\x00\x00\x49\x8b\x0c\x24\x48\x89\x4d\xd8\xc7\x85\x68\xff\xff\xff\xff\xff\xff\xff\x48\x8d\x0d\xb2\x3b\x00\x00\x4c\x8d\x8d\x6c\xff\xff\xff\xbf\xff\xff\xff\xff\x45\x31\xc0\x48\x89\xd6\x48\x89\xc2\xe8\x9b\xd4\xff\xff\x48\x89\xc3\xb8\xfd\xff\xff\xff\x48\x85\xdb\x0f\x84\xb0\x00\x00\x00\x8b\xb5\x6c\xff\xff\xff\x4c\x8d\xbd\x70\xff\xff\xff\x48\x89\xdf\x4c\x89\xfa\xe8\x22\xe9\xff\xff\x48\x89\xdf\xe8\x2a\x1f\x00\x00\x48\x8d\x35\x7e\x3b\x00\x00\x4c\x89\xff\xe8\x4b\xeb\xff\xff\x48\x89\xc1\x4d\x85\xf6\x74\x2a\x48\x85\xc9\x74\x25\x41\xc7\x06\x00\x00\x00\x00\x48\x8d\x35\xa7\x39\x00\x00\x31\xc0\x48\x89\xcf\x4c\x89\xf2\xe8\x9b\x1f\x00\x00\xc7\x85\x68\xff\xff\xff\x00\x00\x00\x00\x48\x8d\x35\x8c\x39\x00\x00\x48\x8d\xbd\x70\xff\xff\xff\xe8\x06\xeb\xff\xff\x48\x89\xc1\x48\x85\xc9\x74\x22\xc7\x85\x68\xff\xff\xff\xff\xff\xff\xff\x48\x8d\x35\x3e\x2d\x00\x00\x48\x8d\x95\x68\xff\xff\xff\x31\xc0\x48\x89\xcf\xe8\x54\x1f\x00\x00\x48\x8d\xbd\x70\xff\xff\xff\xe8\x80\xea\xff\xff\x8b\x85\x68\xff\xff\xff\x49\x8b\x0c\x24\x48\x3b\x4d\xd8\x75\x10\x48\x81\xc4\x80\x00\x00\x00\x5b\x41\x5c\x41\x5e\x41\x5f\x5d\xc3\xe8\x4b\x1e\x00\x00\x66\x66\x2e\x0f\x1f\x84\x00\x00\x00\x00\x00\x55\x48\x89\xe5\x41\x57\x41\x56\x41\x55\x41\x54\x53\x48\x81\xec\x88\x00\x00\x00\x4d\x89\xc4\x49\x89\xcf\x49\x89\xd5\x49\x89\xf6\x48\x89\xfb\x48\x8b\x0d\x6e\x42\x00\x00\x48\x8b\x01\x48\x89\x45\xd0\xc7\x85\x60\xff\xff\xff\xff\xff\xff\xff\xb8\xfe\xff\xff\xff\x48\x83\x7d\x10\x00\x0f\x84\x38\x02\x00\x00\x4d\x85\xc9\x0f\x84\x2f\x02\x00\x00\x4d\x85\xed\x0f\x84\x26\x02\x00\x00\x4d\x85\xff\x0f\x84\x1d\x02\x00\x00\x4c\x89\x8d\x58\xff\xff\xff\xbf\x04\x00\x00\x00\xbe\x10\x00\x00\x00\xe8\xd6\x1d\x00\x00\x48\x8d\x0d\xa8\x3e\x00\x00\x48\x89\x08\x4c\x89\x60\x08\x48\x8d\x0d\xa8\x3e\x00\x00\x48\x89\x48\x10\x4c\x89\x68\x18\x49\x89\xc5\x48\x8d\x05\xa6\x3e\x00\x00\x49\x89\x45\x20\x4d\x89\x7d\x28\x48\x8d\x0d\x37\x3a\x00\x00\x4c\x8d\x8d\x64\xff\xff\xff\xbf\xff\xff\xff\xff\x48\x89\xde\x4c\x89\xf2\x4d\x89\xe8\xe8\xe4\xd2\xff\xff\x48\x89\xc3\x48\x85\xdb\x74\x63\x4c\x8b\x7d\x28\x4c\x8b\x75\x20\x8b\xb5\x64\xff\xff\xff\x4c\x8d\xa5\x68\xff\xff\xff\x48\x89\xdf\x4c\x89\xe2\xe8\x6c\xe7\xff\xff\x48\x89\xdf\xe8\x74\x1d\x00\x00\x48\x8d\x35\x62\x3e\x00\x00\x4c\x89\xe7\xe8\x95\xe9\xff\xff\x48\x85\xc0\x74\x39\xba\x10\x00\x00\x00\x48\x8b\x9d\x58\xff\xff\xff\x48\x89\xdf\x48\x89\xc6\xe8\x1b\x1e\x00\x00\xc6\x43\x0f\x00\xc7\x85\x60\xff\xff\xff\x00\x00\x00\x00\xeb\x1c\x4c\x89\xef\xe8\x31\x1d\x00\x00\xb8\xfd\xff\xff\xff\xe9\x33\x01\x00\x00\x48\x8b\x85\x58\xff\xff\xff\xc6\x00\x00\x48\x8d\x35\xfb\x3d\x00\x00\x48\x8d\xbd\x68\xff\xff\xff\xe8\x3a\xe9\xff\xff\x48\x85\xc0\x74\x1a\xba\x06\x00\x00\x00\x48\x8b\x5d\x10\x48\x89\xdf\x48\x89\xc6\xe8\xc3\x1d\x00\x00\xc6\x43\x05\x00\xeb\x07\x48\x8b\x45\x10\xc6\x00\x00\x48\x8b\x5d\x18\x48\x8d\x35\xe0\x3d\x00\x00\x48\x8d\xbd\x68\xff\xff\xff\xe8\xfd\xe8\xff\xff\x48\x85\xc0\x74\x1a\x4d\x85\xf6\x74\x15\xba\x04\x00\x00\x00\x4c\x89\xf7\x48\x89\xc6\xe8\x85\x1d\x00\x00\x41\xc6\x46\x03\x00\x48\x8d\x35\x01\x38\x00\x00\x48\x8d\xbd\x68\xff\xff\xff\xe8\xcb\xe8\xff\xff\x48\x85\xc0\x74\x19\x48\x85\xdb\x74\x14\xba\x50\x00\x00\x00\x48\x89\xdf\x48\x89\xc6\xe8\x53\x1d\x00\x00\xc6\x43\x4f\x00\x48\x8d\x35\xf7\x37\x00\x00\x48\x8d\xbd\x68\xff\xff\xff\xe8\x9a\xe8\xff\xff\x48\x85\xc0\x74\x1a\x4d\x85\xff\x74\x15\xba\x10\x00\x00\x00\x4c\x89\xff\x48\x89\xc6\xe8\x22\x1d\x00\x00\x41\xc6\x47\x0f\x00\x48\x8d\x35\xee\x36\x00\x00\x48\x8d\xbd\x68\xff\xff\xff\xe8\x68\xe8\xff\xff\x48\x89\xc1\x48\x85\xc9\x74\x22\xc7\x85\x60\xff\xff\xff\xff\xff\xff\xff\x48\x8d\x35\xa0\x2a\x00\x00\x48\x8d\x95\x60\xff\xff\xff\x31\xc0\x48\x89\xcf\xe8\xb6\x1c\x00\x00\x48\x8d\xbd\x68\xff\xff\xff\xe8\xe2\xe7\xff\xff\x4c\x89\xef\xe8\xfa\x1b\x00\x00\x8b\x85\x60\xff\xff\xff\x48\x8b\x0d\x15\x40\x00\x00\x48\x8b\x09\x48\x3b\x4d\xd0\x75\x12\x48\x81\xc4\x88\x00\x00\x00\x5b\x41\x5c\x41\x5d\x41\x5e\x41\x5f\x5d\xc3\xe8\x9d\x1b\x00\x00\x66\x66\x66\x66\x2e\x0f\x1f\x84\x00\x00\x00\x00\x00\x55\x48\x89\xe5\x41\x57\x41\x56\x41\x55\x41\x54\x53\x48\x81\xec\x88\x00\x00\x00\x4d\x89\xcc\x4d\x89\xc5\x48\x89\xcb\x49\x89\xd7\x4c\x8b\x35\xc1\x3f\x00\x00\x49\x8b\x06\x48\x89\x45\xd0\xc7\x85\x60\xff\xff\xff\xff\xff\xff\xff\xb8\xfe\xff\xff\xff\x4d\x85\xff\x0f\x84\x65\x01\x00\x00\x48\x85\xdb\x0f\x84\x5c\x01\x00\x00\x48\x89\xbd\x50\xff\xff\xff\x48\x89\xb5\x58\xff\xff\xff\x4d\x85\xed\x0f\x84\x45\x01\x00\x00\xbf\x06\x00\x00\x00\xbe\x10\x00\x00\x00\xe8\x2d\x1b\x00\x00\x49\x89\xc6\x48\x8d\x05\x16\x37\x00\x00\x49\x89\x06\x4d\x89\x7e\x08\x48\x8d\x05\x15\x37\x00\x00\x49\x89\x46\x10\x49\x89\x5e\x18\x48\x8d\x05\xfd\x3b\x00\x00\x49\x89\x46\x20\x4d\x89\x6e\x28\x48\x8d\x05\x02\x37\x00\x00\x49\x89\x46\x30\x48\x8d\x05\x62\x36\x00\x00\x49\x89\x46\x38\x48\x8d\x05\x94\x37\x00\x00\x49\x89\x46\x40\x4d\x85\xe4\x48\x8d\x05\x78\x2b\x00\x00\x49\x0f\x45\xc4\x49\x89\x46\x48\x48\x8d\x0d\x88\x37\x00\x00\x4c\x8d\x8d\x64\xff\xff\xff\xbf\xff\xff\xff\xff\x48\x8b\xb5\x50\xff\xff\xff\x48\x8b\x95\x58\xff\xff\xff\x4d\x89\xf0\xe8\x00\xd0\xff\xff\x48\x89\xc3\x4c\x89\xf7\x4c\x8b\x35\xdb\x3e\x00\x00\xe8\xae\x1a\x00\x00\x48\x85\xdb\xb8\xfd\xff\xff\xff\x0f\x84\x8b\x00\x00\x00\x8b\xb5\x64\xff\xff\xff\x48\x8d\x95\x68\xff\xff\xff\x48\x89\xdf\xe8\x7b\xe4\xff\xff\x48\x89\xdf\xe8\x83\x1a\x00\x00\x48\x8b\x7d\xb0\x48\x85\xff\x74\x16\x48\x8b\x55\x10\x8b\x75\xb8\xe8\x2e\x12\x00\x00\xc7\x85\x60\xff\xff\xff\x00\x00\x00\x00\x48\x8d\x35\x07\x35\x00\x00\x48\x8d\xbd\x68\xff\xff\xff\xe8\x81\xe6\xff\xff\x48\x89\xc1\x48\x85\xc9\x74\x22\xc7\x85\x60\xff\xff\xff\xff\xff\xff\xff\x48\x8d\x35\xb9\x28\x00\x00\x48\x8d\x95\x60\xff\xff\xff\x31\xc0\x48\x89\xcf\xe8\xcf\x1a\x00\x00\x48\x8d\xbd\x68\xff\xff\xff\xe8\xfb\xe5\xff\xff\x8b\x85\x60\xff\xff\xff\x49\x8b\x0e\x48\x3b\x4d\xd0\x75\x12\x48\x81\xc4\x88\x00\x00\x00\x5b\x41\x5c\x41\x5d\x41\x5e\x41\x5f\x5d\xc3\xe8\xc5\x19\x00\x00\x0f\x1f\x44\x00\x00\x55\x48\x89\xe5\x41\x57\x41\x56\x41\x55\x41\x54\x53\x48\x83\xec\x78\x49\x89\xce\x49\x89\xd4\x48\x89\xf3\x48\x89\xfa\x4c\x8b\x2d\xf4\x3d\x00\x00\x49\x8b\x45\x00\x48\x89\x45\xd0\xc7\x85\x60\xff\xff\xff\xff\xff\xff\xff\xb8\xfe\xff\xff\xff\x4d\x85\xe4\x0f\x84\x0b\x01\x00\x00\x4d\x85\xf6\x0f\x84\x02\x01\x00\x00\x48\x8d\x0d\x58\x36\x00\x00\x4c\x8d\x8d\x64\xff\xff\xff\xbf\xff\xff\xff\xff\x45\x31\xc0\x48\x89\xd6\x48\x89\xda\xe8\xc2\xce\xff\xff\x48\x89\xc3\xb8\xfd\xff\xff\xff\x48\x85\xdb\x0f\x84\xd0\x00\x00\x00\x8b\xb5\x64\xff\xff\xff\x4c\x8d\xbd\x68\xff\xff\xff\x48\x89\xdf\x4c\x89\xfa\xe8\x49\xe3\xff\xff\x48\x89\xdf\xe8\x51\x19\x00\x00\x48\x8d\x35\x18\x36\x00\x00\x4c\x89\xff\xe8\x72\xe5\xff\xff\x48\x89\xc3\x48\x8d\x35\x16\x36\x00\x00\x4c\x89\xff\xe8\x60\xe5\xff\xff\x49\x89\xc7\x4d\x85\xff\x74\x0f\x48\x85\xdb\x74\x0a\xc7\x85\x60\xff\xff\xff\x00\x00\x00\x00\x48\x85\xdb\x74\x10\x31\xf6\x31\xd2\x48\x89\xdf\xe8\xe6\x19\x00\x00\x41\x89\x04\x24\x4d\x85\xff\x74\x0f\x31\xf6\x31\xd2\x4c\x89\xff\xe8\xd1\x19\x00\x00\x41\x89\x06\x48\x8d\x35\x93\x33\x00\x00\x48\x8d\xbd\x68\xff\xff\xff\xe8\x0d\xe5\xff\xff\x48\x89\xc1\x48\x85\xc9\x74\x22\xc7\x85\x60\xff\xff\xff\xff\xff\xff\xff\x48\x8d\x35\x45\x27\x00\x00\x48\x8d\x95\x60\xff\xff\xff\x31\xc0\x48\x89\xcf\xe8\x5b\x19\x00\x00\x48\x8d\xbd\x68\xff\xff\xff\xe8\x87\xe4\xff\xff\x8b\x85\x60\xff\xff\xff\x49\x8b\x4d\x00\x48\x3b\x4d\xd0\x75\x0f\x48\x83\xc4\x78\x5b\x41\x5c\x41\x5d\x41\x5e\x41\x5f\x5d\xc3\xe8\x53\x18\x00\x00\x0f\x1f\x00\x55\x48\x89\xe5\x41\x57\x41\x56\x41\x55\x41\x54\x53\x48\x81\xec\x88\x00\x00\x00\x4d\x89\xcd\x4d\x89\xc4\x49\x89\xce\x49\x89\xd7\x48\x8b\x05\x81\x3c\x00\x00\x48\x8b\x00\x48\x89\x45\xd0\xb8\xfe\xff\xff\xff\x4d\x85\xed\x0f\x84\x78\x01\x00\x00\x4d\x85\xe4\x0f\x84\x6f\x01\x00\x00\x48\x83\x7d\x10\x00\x0f\x84\x64\x01\x00\x00\x4d\x85\xf6\x0f\x84\x5b\x01\x00\x00\x48\x89\xbd\x50\xff\xff\xff\x48\x89\xb5\x58\xff\xff\xff\x4d\x85\xff\x0f\x84\x44\x01\x00\x00\xbf\x06\x00\x00\x00\xbe\x10\x00\x00\x00\xe8\xe3\x17\x00\x00\x48\x89\xc3\x48\x8d\x05\xeb\x34\x00\x00\x48\x89\x03\x4c\x89\x7b\x08\x48\x8d\x05\xe8\x34\x00\x00\x48\x89\x43\x10\x4c\x89\x73\x18\x48\x8d\x05\xe4\x34\x00\x00\x48\x89\x43\x20\x48\x8b\x45\x10\x48\x89\x43\x28\x48\x8d\x05\xda\x34\x00\x00\x48\x89\x43\x30\x4c\x89\x6b\x38\x48\x8d\x05\xd8\x34\x00\x00\x48\x89\x43\x40\x4c\x89\x63\x48\x48\x8d\x0d\xd8\x34\x00\x00\x4c\x8d\x8d\x64\xff\xff\xff\xbf\xff\xff\xff\xff\x48\x8b\xb5\x50\xff\xff\xff\x48\x8b\x95\x58\xff\xff\xff\x49\x89\xd8\xe8\xc7\xcc\xff\xff\x49\x89\xc6\xb8\xfd\xff\xff\xff\x4d\x85\xf6\x0f\x84\xaa\x00\x00\x00\x8b\xb5\x64\xff\xff\xff\x4c\x8d\xbd\x68\xff\xff\xff\x4c\x89\xf7\x4c\x89\xfa\xe8\x4e\xe1\xff\xff\x4c\x89\xf7\xe8\x56\x17\x00\x00\x48\x8d\x35\xf9\x31\x00\x00\x4c\x89\xff\xe8\x77\xe3\xff\xff\x48\x89\xc1\x48\x85\xc9\x74\x24\xc7\x85\x60\xff\xff\xff\xff\xff\xff\xff\x48\x8d\x35\xaf\x25\x00\x00\x48\x8d\x95\x60\xff\xff\xff\x31\xc0\x48\x89\xcf\xe8\xc5\x17\x00\x00\xeb\x35\xc7\x85\x60\xff\xff\xff\x00\x00\x00\x00\x48\x8d\x35\x53\x34\x00\x00\x48\x8d\xbd\x68\xff\xff\xff\xe8\x2e\xe3\xff\xff\x48\x85\xc0\x74\x13\x4c\x8b\x75\x18\x31\xf6\x31\xd2\x48\x89\xc7\xe8\xc7\x17\x00\x00\x41\x89\x06\x48\x8d\xbd\x68\xff\xff\xff\xe8\xba\xe2\xff\xff\x48\x89\xdf\xe8\xd2\x16\x00\x00\x8b\x85\x60\xff\xff\xff\x48\x8b\x0d\xed\x3a\x00\x00\x48\x8b\x09\x48\x3b\x4d\xd0\x75\x12\x48\x81\xc4\x88\x00\x00\x00\x5b\x41\x5c\x41\x5d\x41\x5e\x41\x5f\x5d\xc3\xe8\x75\x16\x00\x00\x0f\x1f\x44\x00\x00\x55\x48\x89\xe5\x41\x57\x41\x56\x41\x55\x41\x54\x53\x48\x81\xec\x88\x00\x00\x00\x4d\x89\xcd\x4d\x89\xc4\x49\x89\xce\x49\x89\xd7\x48\x8b\x05\xa1\x3a\x00\x00\x48\x8b\x00\x48\x89\x45\xd0\xb8\xfe\xff\xff\xff\x4d\x85\xed\x0f\x84\xde\x01\x00\x00\x4d\x85\xe4\x0f\x84\xd5\x01\x00\x00\x48\x83\x7d\x10\x00\x0f\x84\xca\x01\x00\x00\x4d\x85\xff\x0f\x84\xc1\x01\x00\x00\x4d\x85\xf6\x0f\x84\xb8\x01\x00\x00\x48\x89\xbd\x50\xff\xff\xff\x48\x89\xb5\x58\xff\xff\xff\x48\x83\x7d\x18\x00\x0f\x84\x9f\x01\x00\x00\xbf\x07\x00\x00\x00\xbe\x10\x00\x00\x00\xe8\xf8\x15\x00\x00\x48\x89\xc3\x48\x8d\x35\x6c\x33\x00\x00\xba\x05\x00\x00\x00\x4c\x89\xff\xe8\xcb\x16\x00\x00\x85\xc0\x48\x8d\x05\xea\x32\x00\x00\x48\x89\x03\x48\x8d\x05\x34\x28\x00\x00\x4c\x0f\x44\xf8\x4c\x89\x7b\x08\x48\x8d\x05\xdc\x32\x00\x00\x48\x89\x43\x10\x4c\x89\x73\x18\x48\x8d\x05\xd8\x32\x00\x00\x48\x89\x43\x20\x48\x8b\x45\x10\x48\x89\x43\x28\x48\x8d\x05\xce\x32\x00\x00\x48\x89\x43\x30\x4c\x89\x6b\x38\xba\x05\x00\x00\x00\x4c\x89\xe7\x48\x8d\x35\x04\x33\x00\x00\xe8\x6b\x16\x00\x00\x85\xc0\x48\x8d\x05\xb6\x32\x00\x00\x48\x89\x43\x40\x48\x8d\x05\xd3\x27\x00\x00\x4c\x0f\x44\xe0\x4c\x89\x63\x48\x48\x8d\x05\xe2\x32\x00\x00\x48\x89\x43\x50\x48\x8b\x45\x18\x48\x89\x43\x58\x48\x8d\x0d\xd9\x32\x00\x00\x4c\x8d\x8d\x64\xff\xff\xff\xbf\xff\xff\xff\xff\x48\x8b\xb5\x50\xff\xff\xff\x48\x8b\x95\x58\xff\xff\xff\x49\x89\xd8\xe8\x87\xca\xff\xff\x49\x89\xc6\xb8\xfd\xff\xff\xff\x4d\x85\xf6\x0f\x84\xb0\x00\x00\x00\x8b\xb5\x64\xff\xff\xff\x4c\x8d\xbd\x68\xff\xff\xff\x4c\x89\xf7\x4c\x89\xfa\xe8\x0e\xdf\xff\xff\x4c\x89\xf7\xe8\x16\x15\x00\x00\x48\x8d\x35\x8a\x32\x00\x00\x4c\x89\xff\xe8\x37\xe1\xff\xff\x48\x85\xc0\x74\x19\x4c\x8b\x75\x20\xba\x08\x00\x00\x00\x4c\x89\xf7\x48\x89\xc6\xe8\xc0\x15\x00\x00\x41\xc6\x46\x07\x00\x48\x8d\x35\x8c\x2f\x00\x00\x48\x8d\xbd\x68\xff\xff\xff\xe8\x06\xe1\xff\xff\x48\x89\xc1\x48\x85\xc9\x74\x24\xc7\x85\x60\xff\xff\xff\xff\xff\xff\xff\x48\x8d\x35\x3e\x23\x00\x00\x48\x8d\x95\x60\xff\xff\xff\x31\xc0\x48\x89\xcf\xe8\x54\x15\x00\x00\xeb\x0a\xc7\x85\x60\xff\xff\xff\x00\x00\x00\x00\x48\x8d\xbd\x68\xff\xff\xff\xe8\x74\xe0\xff\xff\x48\x89\xdf\xe8\x8c\x14\x00\x00\x8b\x85\x60\xff\xff\xff\x48\x8b\x0d\xa7\x38\x00\x00\x48\x8b\x09\x48\x3b\x4d\xd0\x75\x12\x48\x81\xc4\x88\x00\x00\x00\x5b\x41\x5c\x41\x5d\x41\x5e\x41\x5f\x5d\xc3\xe8\x2f\x14\x00\x00\x66\x66\x66\x66\x66\x66\x2e\x0f\x1f\x84\x00\x00\x00\x00\x00\x55\x48\x89\xe5\x41\x57\x41\x56\x41\x55\x41\x54\x53\x48\x83\xec\x78\x49\x89\xcd\x48\x89\xd3\x49\x89\xf6\x49\x89\xff\x48\x8b\x0d\x54\x38\x00\x00\x48\x8b\x01\x48\x89\x45\xd0\xb8\xfe\xff\xff\xff\x48\x85\xdb\x0f\x84\xfa\x00\x00\x00\x4d\x85\xed\x0f\x84\xf1\x00\x00\x00\xbf\x03\x00\x00\x00\xbe\x10\x00\x00\x00\xe8\xe1\x13\x00\x00\x49\x89\xc4\x48\x8d\x05\x70\x31\x00\x00\x49\x89\x04\x24\x49\x89\x5c\x24\x08\x48\x8d\x05\x06\x35\x00\x00\x49\x89\x44\x24\x10\x4d\x89\x6c\x24\x18\x48\x8d\x0d\x58\x31\x00\x00\x4c\x8d\x8d\x64\xff\xff\xff\xbf\xff\xff\xff\xff\x4c\x89\xfe\x4c\x89\xf2\x4d\x89\xe0\xe8\xfa\xc8\xff\xff\x48\x8b\x0d\xdb\x37\x00\x00\x48\x89\xc3\xb8\xfd\xff\xff\xff\x48\x85\xdb\x0f\x84\x85\x00\x00\x00\x49\x89\xcf\x8b\xb5\x64\xff\xff\xff\x4c\x8d\xb5\x68\xff\xff\xff\x48\x89\xdf\x4c\x89\xf2\xe8\x77\xdd\xff\xff\x48\x89\xdf\xe8\x7f\x13\x00\x00\x48\x8d\x35\x22\x2e\x00\x00\x4c\x89\xf7\xe8\xa0\xdf\xff\xff\x48\x89\xc1\x48\x85\xc9\x74\x24\xc7\x85\x60\xff\xff\xff\xff\xff\xff\xff\x48\x8d\x35\xd8\x21\x00\x00\x48\x8d\x95\x60\xff\xff\xff\x31\xc0\x48\x89\xcf\xe8\xee\x13\x00\x00\xeb\x0a\xc7\x85\x60\xff\xff\xff\x00\x00\x00\x00\x48\x8d\xbd\x68\xff\xff\xff\xe8\x0e\xdf\xff\xff\x4c\x89\xe7\xe8\x26\x13\x00\x00\x8b\x85\x60\xff\xff\xff\x4c\x89\xf9\x48\x8b\x09\x48\x3b\x4d\xd0\x75\x0f\x48\x83\xc4\x78\x5b\x41\x5c\x41\x5d\x41\x5e\x41\x5f\x5d\xc3\xe8\xd0\x12\x00\x00\x55\x48\x89\xe5\x41\x57\x41\x56\x41\x55\x41\x54\x53\x48\x83\xec\x78\x48\x89\xd3\x49\x89\xf6\x49\x89\xfc\x4c\x8b\x2d\x07\x37\x00\x00\x49\x8b\x45\x00\x48\x89\x45\xd0\xb8\xfe\xff\xff\xff\x48\x85\xdb\x0f\x84\xcd\x00\x00\x00\xbf\x02\x00\x00\x00\xbe\x10\x00\x00\x00\xe8\x9c\x12\x00\x00\x49\x89\xc7\x48\x8d\x05\x2b\x30\x00\x00\x49\x89\x07\x49\x89\x5f\x08\x48\x8d\x0d\x34\x30\x00\x00\x4c\x8d\x8d\x64\xff\xff\xff\xbf\xff\xff\xff\xff\x4c\x89\xe6\x4c\x89\xf2\x4d\x89\xf8\xe8\xc8\xc7\xff\xff\x48\x89\xc3\xb8\xfd\xff\xff\xff\x48\x85\xdb\x74\x7f\x8b\xb5\x64\xff\xff\xff\x4c\x8d\xb5\x68\xff\xff\xff\x48\x89\xdf\x4c\x89\xf2\xe8\x53\xdc\xff\xff\x48\x89\xdf\xe8\x5b\x12\x00\x00\x48\x8d\x35\xfe\x2c\x00\x00\x4c\x89\xf7\xe8\x7c\xde\xff\xff\x48\x89\xc1\x48\x85\xc9\x74\x24\xc7\x85\x60\xff\xff\xff\xff\xff\xff\xff\x48\x8d\x35\xb4\x20\x00\x00\x48\x8d\x95\x60\xff\xff\xff\x31\xc0\x48\x89\xcf\xe8\xca\x12\x00\x00\xeb\x0a\xc7\x85\x60\xff\xff\xff\x00\x00\x00\x00\x48\x8d\xbd\x68\xff\xff\xff\xe8\xea\xdd\xff\xff\x4c\x89\xff\xe8\x02\x12\x00\x00\x8b\x85\x60\xff\xff\xff\x49\x8b\x4d\x00\x48\x3b\x4d\xd0\x75\x0f\x48\x83\xc4\x78\x5b\x41\x5c\x41\x5d\x41\x5e\x41\x5f\x5d\xc3\xe8\xae\x11\x00\x00\x66\x66\x66\x66\x66\x2e\x0f\x1f\x84\x00\x00\x00\x00\x00\x55\x48\x89\xe5\x41\x57\x41\x56\x41\x55\x41\x54\x53\x48\x81\xec\x88\x00\x00\x00\x48\x89\x8d\x58\xff\xff\xff\x48\x89\xd3\x49\x89\xf4\x49\x89\xfd\x4c\x8b\x35\xcd\x35\x00\x00\x49\x8b\x06\x48\x89\x45\xd0\xc7\x85\x60\xff\xff\xff\xff\xff\xff\xff\xb8\xfe\xff\xff\xff\x48\x85\xdb\x0f\x84\x0b\x01\x00\x00\xbf\x04\x00\x00\x00\xbe\x10\x00\x00\x00\xe8\x59\x11\x00\x00\x49\x89\xc7\x48\x8d\x05\xe8\x2e\x00\x00\x49\x89\x07\x49\x89\x5f\x08\x48\x8d\x0d\xff\x2e\x00\x00\x4c\x8d\x8d\x64\xff\xff\xff\xbf\xff\xff\xff\xff\x4c\x89\xee\x4c\x89\xe2\x4d\x89\xf8\xe8\x85\xc6\xff\xff\x48\x89\xc3\xb8\xfd\xff\xff\xff\x48\x85\xdb\x0f\x84\xb9\x00\x00\x00\x8b\xb5\x64\xff\xff\xff\x4c\x8d\xa5\x68\xff\xff\xff\x48\x89\xdf\x4c\x89\xe2\xe8\x0c\xdb\xff\xff\x48\x89\xdf\xe8\x14\x11\x00\x00\x48\x8d\x35\xc1\x2e\x00\x00\x4c\x89\xe7\xe8\x35\xdd\xff\xff\x48\x85\xc0\x74\x21\x31\xf6\x31\xd2\x48\x89\xc7\xe8\xd2\x11\x00\x00\x48\x8b\x8d\x58\xff\xff\xff\x89\x01\xc7\x85\x60\xff\xff\xff\x00\x00\x00\x00\xeb\x0d\x48\x8b\x85\x58\xff\xff\xff\xc7\x00\x00\x00\x00\x00\x48\x8d\x35\x75\x2b\x00\x00\x48\x8d\xbd\x68\xff\xff\xff\xe8\xef\xdc\xff\xff\x48\x89\xc1\x48\x85\xc9\x74\x22\xc7\x85\x60\xff\xff\xff\xff\xff\xff\xff\x48\x8d\x35\x27\x1f\x00\x00\x48\x8d\x95\x60\xff\xff\xff\x31\xc0\x48\x89\xcf\xe8\x3d\x11\x00\x00\x48\x8d\xbd\x68\xff\xff\xff\xe8\x69\xdc\xff\xff\x4c\x89\xff\xe8\x81\x10\x00\x00\x8b\x85\x60\xff\xff\xff\x49\x8b\x0e\x48\x3b\x4d\xd0\x75\x12\x48\x81\xc4\x88\x00\x00\x00\x5b\x41\x5c\x41\x5d\x41\x5e\x41\x5f\x5d\xc3\xe8\x2b\x10\x00\x00\x66\x66\x2e\x0f\x1f\x84\x00\x00\x00\x00\x00\x55\x48\x89\xe5\x41\x57\x41\x56\x41\x55\x41\x54\x53\x48\x81\xec\x88\x00\x00\x00\x48\x89\x8d\x58\xff\xff\xff\x48\x89\xd3\x49\x89\xf4\x49\x89\xfd\x4c\x8b\x35\x4d\x34\x00\x00\x49\x8b\x06\x48\x89\x45\xd0\xc7\x85\x60\xff\xff\xff\xff\xff\xff\xff\xb8\xfe\xff\xff\xff\x48\x85\xdb\x0f\x84\xfc\x00\x00\x00\xbf\x04\x00\x00\x00\xbe\x10\x00\x00\x00\xe8\xd9\x0f\x00\x00\x49\x89\xc7\x48\x8d\x05\x68\x2d\x00\x00\x49\x89\x07\x49\x89\x5f\x08\x48\x8d\x0d\x9d\x2d\x00\x00\x4c\x8d\x8d\x64\xff\xff\xff\xbf\xff\xff\xff\xff\x4c\x89\xee\x4c\x89\xe2\x4d\x89\xf8\xe8\x05\xc5\xff\xff\x48\x89\xc3\xb8\xfd\xff\xff\xff\x48\x85\xdb\x0f\x84\xaa\x00\x00\x00\x8b\xb5\x64\xff\xff\xff\x4c\x8d\xa5\x68\xff\xff\xff\x48\x89\xdf\x4c\x89\xe2\xe8\x8c\xd9\xff\xff\x48\x89\xdf\xe8\x94\x0f\x00\x00\x48\x8d\x35\x5d\x2d\x00\x00\x4c\x89\xe7\xe8\xb5\xdb\xff\xff\x48\x85\xc0\x74\x1f\x31\xf6\x31\xd2\x48\x89\xc7\xe8\x52\x10\x00\x00\x48\x8b\x8d\x58\xff\xff\xff\x89\x01\xc7\x85\x60\xff\xff\xff\x00\x00\x00\x00\x48\x8d\x35\x04\x2a\x00\x00\x48\x8d\xbd\x68\xff\xff\xff\xe8\x7e\xdb\xff\xff\x48\x89\xc1\x48\x85\xc9\x74\x22\xc7\x85\x60\xff\xff\xff\xff\xff\xff\xff\x48\x8d\x35\xb6\x1d\x00\x00\x48\x8d\x95\x60\xff\xff\xff\x31\xc0\x48\x89\xcf\xe8\xcc\x0f\x00\x00\x48\x8d\xbd\x68\xff\xff\xff\xe8\xf8\xda\xff\xff\x4c\x89\xff\xe8\x10\x0f\x00\x00\x8b\x85\x60\xff\xff\xff\x49\x8b\x0e\x48\x3b\x4d\xd0\x75\x12\x48\x81\xc4\x88\x00\x00\x00\x5b\x41\x5c\x41\x5d\x41\x5e\x41\x5f\x5d\xc3\xe8\xba\x0e\x00\x00\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x55\x48\x89\xe5\x83\xff\xfb\x7f\x0e\x83\xff\x9a\x75\x3d\x48\x8d\x05\x18\x2d\x00\x00\x5d\xc3\x81\xff\x90\x01\x00\x00\x7f\x3e\x83\xc7\x04\x83\xff\x04\x0f\x87\xb2\x00\x00\x00\x48\x8d\x05\x8d\x2c\x00\x00\x48\x8d\x0d\xc7\x01\x00\x00\x48\x63\x14\xb9\x48\x01\xca\xff\xe2\x48\x8d\x05\xb2\x2c\x00\x00\x5d\xc3\x83\xff\x9b\x0f\x85\x89\x00\x00\x00\x48\x8d\x05\xbb\x2c\x00\x00\x5d\xc3\x81\xff\xf4\x01\x00\x00\x7f\x11\x81\xff\x91\x01\x00\x00\x75\x22\x48\x8d\x05\xdb\x2c\x00\x00\x5d\xc3\x81\xff\x5d\x02\x00\x00\x7f\x22\x81\xff\xf5\x01\x00\x00\x75\x57\x48\x8d\x05\xde\x2c\x00\x00\x5d\xc3\x81\xff\x92\x01\x00\x00\x75\x46\x48\x8d\x05\xc0\x2c\x00\x00\x5d\xc3\x81\xff\xbc\x02\x00\x00\x7f\x11\x81\xff\x5e\x02\x00\x00\x75\x2d\x48\x8d\x05\xc2\x2c\x00\x00\x5d\xc3\x81\xc7\x43\xfd\xff\xff\x83\xff\x1a\x77\x19\x48\x8d\x05\xc9\x00\x00\x00\x48\x63\x0c\xb8\x48\x01\xc1\xff\xe1\x48\x8d\x05\xb4\x2c\x00\x00\x5d\xc3\x48\x8d\x05\x68\x2e\x00\x00\x5d\xc3\x48\x8d\x05\xf2\x2b\x00\x00\x5d\xc3\x48\x8d\x05\xd1\x2b\x00\x00\x5d\xc3\x48\x8d\x05\xa6\x2c\x00\x00\x5d\xc3\x48\x8d\x05\xae\x2c\x00\x00\x5d\xc3\x48\x8d\x05\xbe\x2c\x00\x00\x5d\xc3\x48\x8d\x05\xc1\x2c\x00\x00\x5d\xc3\x48\x8d\x05\xcd\x2c\x00\x00\x5d\xc3\x48\x8d\x05\xe6\x2c\x00\x00\x5d\xc3\x48\x8d\x05\xfb\x2c\x00\x00\x5d\xc3\x48\x8d\x05\x0e\x2d\x00\x00\x5d\xc3\x48\x8d\x05\x12\x2d\x00\x00\x5d\xc3\x48\x8d\x05\x24\x2d\x00\x00\x5d\xc3\x48\x8d\x05\x2e\x2d\x00\x00\x5d\xc3\x48\x8d\x05\x41\x2d\x00\x00\x5d\xc3\x48\x8d\x05\x56\x2d\x00\x00\x5d\xc3\x48\x8d\x05\x64\x2d\x00\x00\x5d\xc3\x48\x8d\x05\x72\x2d\x00\x00\x5d\xc3\x48\x8d\x05\x86\x2d\x00\x00\x5d\xc3\x48\x8d\x05\x9c\x2d\x00\x00\x5d\xc3\x0f\x1f\x00\x40\xff\xff\xff\x64\xff\xff\xff\x6d\xff\xff\xff\x76\xff\xff\xff\x7f\xff\xff\xff\x88\xff\xff\xff\x91\xff\xff\xff\x9a\xff\xff\xff\xa3\xff\xff\xff\x49\xff\xff\xff\x49\xff\xff\xff\x49\xff\xff\xff\xac\xff\xff\xff\xb5\xff\xff\xff\xbe\xff\xff\xff\xc7\xff\xff\xff\x49\xff\xff\xff\xd0\xff\xff\xff\x49\xff\xff\xff\x49\xff\xff\xff\x49\xff\xff\xff\x49\xff\xff\xff\x49\xff\xff\xff\xd9\xff\xff\xff\xe2\xff\xff\xff\xeb\xff\xff\xff\xf4\xff\xff\xff\x42\xfe\xff\xff\xdd\xfe\xff\xff\xe6\xfe\xff\xff\xef\xfe\xff\xff\xe4\xfe\xff\xff\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x55\x48\x89\xe5\x41\x57\x41\x56\x41\x55\x41\x54\x53\x48\x81\xec\x18\x02\x00\x00\x89\x95\xc8\xfd\xff\xff\x41\x89\xf1\x49\x89\xff\x4c\x8b\x2d\xc1\x30\x00\x00\x49\x8b\x45\x00\x48\x89\x45\xd0\x0f\x57\xc0\x0f\x29\x85\xa0\xfe\xff\xff\x0f\x29\x85\x90\xfe\xff\xff\x0f\x29\x85\x80\xfe\xff\xff\xc7\x85\x80\xfe\xff\xff\x00\x10\x00\x00\xc7\x85\x88\xfe\xff\xff\x01\x00\x00\x00\xc7\x85\x84\xfe\xff\xff\x00\x00\x00\x00\xba\x00\x00\x00\x00\xb9\x08\x00\x00\x00\x31\xc0\x4c\x8d\x05\xc1\x2c\x00\x00\x48\x8d\xbd\xb8\xfe\xff\xff\xbe\x08\x00\x00\x00\xe8\x01\x0c\x00\x00\x41\x0f\xb6\x07\x83\xf8\x5b\x75\x71\x41\x8a\x47\x01\x45\x31\xe4\x84\xc0\x74\x59\x49\x8d\x7f\x01\xbb\x01\x00\x00\x00\x4c\x8d\x35\xb0\x25\x00\x00\x0f\x1f\x00\x0f\xb6\xc8\x83\xf9\x5d\x74\x3e\x41\x81\xfc\xff\x00\x00\x00\x7f\x35\x42\x88\x84\x25\xc0\xfe\xff\xff\xba\x03\x00\x00\x00\x4c\x89\xf6\xe8\x32\x0c\x00\x00\x8d\x4b\x02\x85\xc0\x0f\x44\xd9\x49\xff\xc4\x48\x63\xc3\x48\x8d\x58\x01\x49\x8d\x7c\x07\x01\x41\x8a\x44\x07\x01\x84\xc0\x75\xba\x49\x63\xc4\xc6\x84\x05\xc0\xfe\xff\xff\x00\xeb\x14\x48\x8d\xbd\xc0\xfe\xff\xff\xba\x00\x01\x00\x00\x4c\x89\xfe\xe8\x7b\x0c\x00\x00\xc6\x45\xc0\x00\x48\x8d\xbd\xc0\xfe\xff\xff\x48\x8d\xb5\xb8\xfe\xff\xff\x48\x8d\x95\x80\xfe\xff\xff\x48\x8d\x8d\xb0\xfe\xff\xff\xe8\x9c\x0b\x00\x00\x85\xc0\x74\x32\x48\x8b\x0d\xa9\x2f\x00\x00\x48\x8b\x19\x89\xc7\xe8\x81\x0b\x00\x00\x48\x89\xc1\x48\x8d\x35\xe2\x2b\x00\x00\x31\xc0\x48\x89\xdf\x48\x89\xca\xe8\x52\x0b\x00\x00\xbb\xff\xff\xff\xff\xe9\xba\x02\x00\x00\x48\x8b\x85\xb0\xfe\xff\xff\x48\x85\xc0\x0f\x84\xcd\x02\x00\x00\x45\x31\xf6\xe9\x86\x01\x00\x00\x66\x0f\x1f\x44\x00\x00\x4c\x89\xbd\xc0\xfd\xff\xff\x48\x63\xc3\x41\xbc\x01\x00\x00\x00\x88\xd9\x41\xd3\xe4\x48\xc1\xe8\x05\x48\x89\x85\xd0\xfd\xff\xff\x8d\x43\x01\x89\x85\xcc\xfd\xff\xff\xeb\x15\x0f\x1f\x44\x00\x00\xe8\xb9\x0a\x00\x00\x89\x18\x41\xbe\xff\xff\xff\xff\x4c\x89\xeb\xe8\xa9\x0a\x00\x00\x83\x38\x04\x74\x0e\xe8\x9f\x0a\x00\x00\x83\x38\x24\x0f\x85\xd6\x00\x00\x00\x0f\x57\xc0\x0f\x29\x85\x50\xfe\xff\xff\x0f\x29\x85\x40\xfe\xff\xff\x0f\x29\x85\x30\xfe\xff\xff\x0f\x29\x85\x20\xfe\xff\xff\x0f\x29\x85\x10\xfe\xff\xff\x0f\x29\x85\x00\xfe\xff\xff\x0f\x29\x85\xf0\xfd\xff\xff\x0f\x29\x85\xe0\xfd\xff\xff\x48\x8b\x85\xd0\xfd\xff\xff\x44\x09\xa4\x85\xe0\xfd\xff\xff\x31\xf6\x31\xc9\x45\x31\xc0\x8b\xbd\xcc\xfd\xff\xff\x48\x8d\x95\xe0\xfd\xff\xff\xe8\xff\x0a\x00\x00\x41\x89\xc7\x41\x83\xff\xff\x75\x14\xe8\x25\x0a\x00\x00\x41\xbe\xff\xff\xff\xff\x83\x38\x04\x0f\x84\x68\xff\xff\xff\xc7\x85\x6c\xfe\xff\xff\x04\x00\x00\x00\xbe\xff\xff\x00\x00\xba\x07\x10\x00\x00\x89\xdf\x48\x8d\x8d\xdc\xfd\xff\xff\x4c\x8d\x85\x6c\xfe\xff\xff\xe8\x59\x0a\x00\x00\x85\xc0\x0f\x88\x68\x01\x00\x00\x49\x89\xdd\x8b\x9d\xdc\xfd\xff\xff\x85\xdb\x0f\x85\x16\xff\xff\xff\x45\x85\xff\x45\x89\xfe\x4c\x89\xeb\x0f\x88\x17\xff\xff\xff\xe9\x1e\x01\x00\x00\x89\xdf\xe8\xe3\x09\x00\x00\x4c\x8b\xbd\xc0\xfd\xff\xff\x4d\x8b\x7f\x28\x4d\x85\xff\x4c\x89\xf8\x45\x89\xf7\x75\x35\xe9\xfc\x00\x00\x00\x48\x8d\x3d\x1a\x22\x00\x00\xe8\x2e\x0a\x00\x00\xe9\x96\x00\x00\x00\x48\x8d\x3d\x09\x22\x00\x00\xe8\x1d\x0a\x00\x00\xe9\xbc\x00\x00\x00\x66\x66\x66\x66\x66\x2e\x0f\x1f\x84\x00\x00\x00\x00\x00\x49\x89\xc7\x41\x8b\x7f\x04\x41\x8b\x77\x08\x41\x8b\x57\x0c\xe8\x3e\x0a\x00\x00\x89\xc3\x85\xdb\x78\xa2\x49\x8b\x47\x20\x0f\xb6\x48\x01\x83\xf9\x1e\x4c\x8d\xb5\x70\xfe\xff\xff\x75\x12\x83\xbd\xc8\xfd\xff\xff\x00\x74\x09\x8b\x8d\xc8\xfd\xff\xff\x89\x48\x18\x48\xc7\x85\x70\xfe\xff\xff\x03\x00\x00\x00\xc7\x85\x78\xfe\xff\xff\x00\x00\x00\x00\xbe\xff\xff\x00\x00\xba\x06\x10\x00\x00\x41\xb8\x10\x00\x00\x00\x89\xdf\x4c\x89\xf1\xe8\xdd\x09\x00\x00\x85\xc0\x0f\x88\x59\xff\xff\xff\x48\xc7\x85\x70\xfe\xff\xff\x03\x00\x00\x00\xc7\x85\x78\xfe\xff\xff\x00\x00\x00\x00\xbe\xff\xff\x00\x00\xba\x05\x10\x00\x00\x41\xb8\x10\x00\x00\x00\x89\xdf\x4c\x89\xf1\xe8\xa6\x09\x00\x00\x85\xc0\x0f\x88\x33\xff\xff\xff\x49\x8b\x77\x20\x41\x8b\x57\x10\x89\xdf\xe8\xe1\x08\x00\x00\x41\x89\xc6\x45\x85\xf6\x0f\x88\xb7\xfd\xff\xff\x45\x89\xf7\x48\x8b\xbd\xb0\xfe\xff\xff\xe8\xde\x08\x00\x00\x85\xdb\x4c\x8b\x2d\xf7\x2c\x00\x00\x78\x71\x45\x85\xff\x79\x34\x48\x8d\x3d\x63\x29\x00\x00\xeb\x6a\x48\x8d\x3d\x4f\x29\x00\x00\xe8\x0d\x09\x00\x00\x89\xdf\xe8\x94\x08\x00\x00\x48\x8b\xbd\xb0\xfe\xff\xff\xe8\xa6\x08\x00\x00\xbb\xff\xff\xff\xff\x4c\x8b\x2d\xbc\x2c\x00\x00\x49\x8b\x45\x00\x48\x3b\x45\xd0\x75\x14\x89\xd8\x48\x81\xc4\x18\x02\x00\x00\x5b\x41\x5c\x41\x5d\x41\x5e\x41\x5f\x5d\xc3\xe8\x41\x08\x00\x00\x48\x8b\xbd\xb0\xfe\xff\xff\xe8\x6b\x08\x00\x00\x48\x8d\x3d\x98\x20\x00\x00\xeb\x07\x48\x8d\x3d\x8f\x20\x00\x00\xe8\xaa\x08\x00\x00\xe9\xf3\xfc\xff\xff\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x55\x48\x89\xe5\x48\x83\xec\x50\x48\xc7\x42\x08\x00\x00\x00\x00\x48\xc7\x02\x00\x00\x00\x00\x48\x89\x7d\xb8\x89\x75\xd0\x48\x89\x55\xd8\x48\x8d\x05\x37\x00\x00\x00\x48\x89\x45\xe0\x48\x8d\x05\xbc\x00\x00\x00\x48\x89\x45\xe8\x48\x8d\x05\xc1\x00\x00\x00\x48\x89\x45\xf0\x48\xc7\x45\xf8\x00\x00\x00\x00\x48\x8d\x7d\xb8\xe8\x8c\xb1\xff\xff\x48\x83\xc4\x50\x5d\xc3\x66\x0f\x1f\x44\x00\x00\x55\x48\x89\xe5\x41\x57\x41\x56\x41\x55\x41\x54\x53\x50\x49\x89\xf7\x49\x89\xfe\x41\xc7\x46\x08\x00\x00\x00\x00\x4c\x63\xe2\x31\xdb\x4c\x8d\x2d\xd8\x2d\x00\x00\x0f\x1f\x84\x00\x00\x00\x00\x00\x4a\x8b\x74\x2b\x08\x4c\x89\xff\x4c\x89\xe2\xe8\xe8\x07\x00\x00\x85\xc0\x74\x0e\x48\x83\xc3\x10\x81\xfb\x90\x00\x00\x00\x75\xe0\xeb\x25\x42\x8b\x04\x2b\x41\x89\x46\x08\x48\x85\xdb\x75\x18\xbf\x01\x00\x00\x00\xbe\xd8\x00\x00\x00\xe8\x54\x07\x00\x00\x49\x8b\x0e\x48\x89\x08\x49\x89\x06\x48\x83\xc4\x08\x5b\x41\x5c\x41\x5d\x41\x5e\x41\x5f\x5d\xc3\x66\x2e\x0f\x1f\x84\x00\x00\x00\x00\x00\x55\x48\x89\xe5\xc7\x47\x08\x00\x00\x00\x00\x5d\xc3\x0f\x1f\x00\x55\x48\x89\xe5\x41\x57\x41\x56\x53\x50\x4c\x8b\x3f\x4d\x85\xff\x0f\x84\x55\x01\x00\x00\x83\xfa\x3f\xb8\x3f\x00\x00\x00\x0f\x4e\xc2\x8b\x4f\x08\x83\xc1\xfe\x83\xf9\x07\x0f\x87\x3b\x01\x00\x00\x48\x8d\x15\x41\x01\x00\x00\x48\x63\x0c\x8a\x48\x01\xd1\xff\xe1\x49\x8d\x7f\x10\x4c\x63\xf0\x4c\x89\xf2\xe8\x3f\x07\x00\x00\x43\xc6\x44\x37\x10\x00\xe9\x11\x01\x00\x00\x31\xc9\xeb\x0c\x6b\xc9\x0a\x8d\x4c\x11\xd0\x48\xff\xc6\xff\xc8\x85\xc0\x7e\x10\x0f\xbe\x16\x88\xd3\x80\xc3\xd0\x0f\xb6\xfb\x83\xff\x09\x76\xe0\x66\x41\x89\x4f\x0c\xe9\xe3\x00\x00\x00\x49\x8d\xbf\xd0\x00\x00\x00\x83\xf8\x03\x48\x98\x41\xbe\x03\x00\x00\x00\x4c\x0f\x4e\xf0\x4c\x89\xf2\xe8\xe8\x06\x00\x00\x43\xc6\x84\x37\xd0\x00\x00\x00\x00\xe9\xb7\x00\x00\x00\x31\xc9\xeb\x0c\x6b\xc9\x0a\x8d\x4c\x11\xd0\x48\xff\xc6\xff\xc8\x85\xc0\x7e\x10\x0f\xbe\x16\x88\xd3\x80\xc3\xd0\x0f\xb6\xfb\x83\xff\x09\x76\xe0\x66\x41\x89\x4f\x0e\xe9\x89\x00\x00\x00\x49\x8d\x7f\x50\x4c\x63\xf0\x4c\x89\xf2\xe8\x9d\x06\x00\x00\x43\xc6\x44\x37\x50\x00\xeb\x72\x31\xc9\xeb\x0c\x6b\xc9\x0a\x8d\x4c\x11\xd0\x48\xff\xc6\xff\xc8\x85\xc0\x7e\x10\x0f\xbe\x16\x88\xd3\x80\xc3\xd0\x0f\xb6\xfb\x83\xff\x09\x76\xe0\x41\x88\x8f\xd4\x00\x00\x00\xeb\x45\x49\x8d\xbf\x90\x00\x00\x00\x4c\x63\xf0\x4c\x89\xf2\xe8\x56\x06\x00\x00\x43\xc6\x84\x37\x90\x00\x00\x00\x00\xeb\x28\x31\xc9\xeb\x0c\x6b\xc9\x0a\x8d\x4c\x11\xd0\x48\xff\xc6\xff\xc8\x85\xc0\x7e\x10\x0f\xbe\x16\x88\xd3\x80\xc3\xd0\x0f\xb6\xfb\x83\xff\x09\x76\xe0\x41\x89\x4f\x08\x48\x83\xc4\x08\x5b\x41\x5e\x41\x5f\x5d\xc3\x66\x90\xc8\xfe\xff\xff\xe2\xfe\xff\xff\x10\xff\xff\xff\x3c\xff\xff\xff\x6a\xff\xff\xff\x81\xff\xff\xff\xae\xff\xff\xff\xcb\xff\xff\xff\x0f\x1f\x84\x00\x00\x00\x00\x00\x55\x48\x89\xe5\x53\x50\x48\x89\xfb\xeb\x10\x0f\x1f\x44\x00\x00\x48\x8b\x07\x48\x89\x03\xe8\x85\x05\x00\x00\x48\x8b\x3b\x48\x85\xff\x75\xed\x48\x83\xc4\x08\x5b\x5d\xc3\x90\x90\x90\x90\x90\x90\x55\x48\x89\xe5\x41\x57\x41\x56\x41\x55\x41\x54\x53\x48\x81\xec\xa8\x00\x00\x00\x4c\x89\x85\x30\xff\xff\xff\x89\xcb\x41\x89\xd4\x48\x89\xb5\x38\xff\xff\xff\x41\x89\xfe\x4c\x8b\x3d\x67\x29\x00\x00\x49\x8b\x07\x48\x89\x45\xd0\xc7\x85\x44\xff\xff\xff\x80\x00\x00\x00\x4c\x8d\xad\x48\xff\xff\xff\x0f\x1f\x80\x00\x00\x00\x00\x44\x89\xb5\x48\xff\xff\xff\x66\xc7\x85\x4c\xff\xff\xff\x01\x00\xbe\x01\x00\x00\x00\x4c\x89\xef\x89\xda\xe8\x61\x05\x00\x00\x85\xc0\x79\x1e\xe8\xb6\x04\x00\x00\x83\x38\x04\x74\xd3\x48\x8d\x3d\x1a\x26\x00\x00\xe8\x41\x05\x00\x00\x41\xbd\xff\xff\xff\xff\xeb\x7d\x45\x31\xed\x85\xc0\x74\x76\x0f\x57\xc0\x0f\x29\x45\xc0\x0f\x29\x45\xb0\x0f\x29\x45\xa0\x0f\x29\x45\x90\x0f\x29\x45\x80\x0f\x29\x85\x70\xff\xff\xff\x0f\x29\x85\x60\xff\xff\xff\x0f\x29\x85\x50\xff\xff\xff\x49\x63\xd4\x4c\x8d\x85\x50\xff\xff\xff\x4c\x8d\x8d\x44\xff\xff\xff\x31\xc9\x44\x89\xf7\x48\x8b\xb5\x38\xff\xff\xff\xe8\x0e\x05\x00\x00\x49\x89\xc5\x45\x85\xed\x78\x43\x0f\xb6\x85\x51\xff\xff\xff\x83\xf8\x1e\x75\x14\x48\x8b\x8d\x30\xff\xff\xff\x48\x85\xc9\x74\x08\x8b\x85\x68\xff\xff\xff\x89\x01\x49\x8b\x07\x48\x3b\x45\xd0\x75\x15\x44\x89\xe8\x48\x81\xc4\xa8\x00\x00\x00\x5b\x41\x5c\x41\x5d\x41\x5e\x41\x5f\x5d\xc3\xe8\x0f\x04\x00\x00\x48\x8d\x3d\x6b\x25\x00\x00\xe8\x8d\x04\x00\x00\xeb\xaf\x90\x55\x48\x89\xe5\x41\x57\x41\x56\x41\x55\x41\x54\x53\x48\x81\xec\xb8\x10\x00\x00\x49\x89\xf6\x49\x89\xff\x48\x8b\x1d\x37\x28\x00\x00\x48\x8b\x03\x48\x89\x45\xd0\xbf\x01\x00\x00\x00\xbe\x01\x00\x00\x00\x31\xd2\xe8\x99\x04\x00\x00\x41\x89\xc5\x44\x89\xad\x3c\xef\xff\xff\x45\x85\xed\x0f\x88\x1f\x03\x00\x00\xc6\x85\x61\xef\xff\xff\x01\x48\x8d\xbd\x62\xef\xff\xff\xba\x68\x00\x00\x00\x4c\x89\xf6\xe8\x9b\x04\x00\x00\x48\x8d\xb5\x60\xef\xff\xff\xba\x6a\x00\x00\x00\x44\x89\xef\xe8\xa3\x03\x00\x00\x85\xc0\x78\x2c\x4c\x89\xff\xe8\x69\x04\x00\x00\x83\xf8\x08\x75\x2f\x48\xb9\x73\x73\x64\x70\x3a\x61\x6c\x6c\x49\x39\x0f\x0f\x84\x93\x00\x00\x00\xc6\x85\xd0\xef\xff\xff\x01\xe9\x8e\x00\x00\x00\x44\x89\xef\xe8\x65\x03\x00\x00\x45\x31\xff\xe9\x0a\x03\x00\x00\xc6\x85\xd0\xef\xff\xff\x01\x4c\x8d\xa5\xd1\xef\xff\xff\x3d\x00\x00\x00\x10\x4c\x89\xe7\x72\x18\x89\xc1\xc1\xe9\x1c\x81\xc9\x80\x00\x00\x00\x48\x8d\xbd\xd2\xef\xff\xff\x88\x8d\xd1\xef\xff\xff\x3d\x00\x00\x20\x00\x72\x10\x89\xc1\xc1\xe9\x15\x81\xc9\x80\x00\x00\x00\x88\x0f\x48\xff\xc7\x3d\x00\x40\x00\x00\x72\x10\x89\xc1\xc1\xe9\x0e\x81\xc9\x80\x00\x00\x00\x88\x0f\x48\xff\xc7\x3d\x80\x00\x00\x00\x72\x23\x89\xc1\xc1\xe9\x07\x81\xc9\x80\x00\x00\x00\x88\x0f\x48\xff\xc7\xeb\x11\xc6\x85\xd0\xef\xff\xff\x03\x4c\x8d\xa5\xd1\xef\xff\xff\x4c\x89\xe7\x88\xc1\x80\xe1\x7f\x88\x0f\x89\xc2\x48\x8d\x5c\x3a\x01\x4c\x8d\x75\xd0\x4c\x39\xf3\x0f\x87\x55\x02\x00\x00\x48\xff\xc7\x4c\x89\xfe\xe8\x15\x03\x00\x00\x48\x8d\xb5\xd0\xef\xff\xff\x48\x29\xf3\x44\x89\xef\x48\x89\xda\xe8\x9c\x03\x00\x00\x48\x85\xc0\x0f\x88\x12\x02\x00\x00\x48\x8d\xb5\xd0\xef\xff\xff\xba\x00\x10\x00\x00\x44\x89\xef\xe8\x0d\x03\x00\x00\x48\x85\xc0\x0f\x8e\x03\x02\x00\x00\x45\x31\xff\x80\xbd\xd0\xef\xff\xff\x00\x0f\x84\xdb\x01\x00\x00\x49\x8d\x44\x24\x02\x4c\x89\xf7\x48\x39\xf8\x0f\x83\xca\x01\x00\x00\x31\xf6\x66\x0f\x1f\x84\x00\x00\x00\x00\x00\x4c\x89\xfb\x45\x31\xff\x66\x2e\x0f\x1f\x84\x00\x00\x00\x00\x00\x44\x89\xf8\xc1\xe0\x07\x41\x0f\xb6\x0c\x24\x41\x89\xcf\x41\x83\xe7\x7f\x41\x09\xc7\x49\xff\xc4\xf6\xc1\x80\x74\x09\x41\x81\xff\x00\x00\x00\x02\x72\xda\x44\x89\xfa\x49\x8d\x44\x14\x02\x48\x39\xf8\x0f\x83\x65\x01\x00\x00\x48\x89\x9d\x48\xef\xff\xff\x45\x31\xf6\x49\x89\xd5\x66\x66\x66\x2e\x0f\x1f\x84\x00\x00\x00\x00\x00\x44\x89\xf0\xc1\xe0\x07\x43\x0f\xb6\x0c\x2c\x41\x89\xce\x41\x83\xe6\x7f\x41\x09\xc6\x49\xff\xc5\xf6\xc1\x80\x74\x09\x41\x81\xfe\x00\x00\x00\x02\x72\xda\x48\x89\xb5\x40\xef\xff\xff\x44\x89\xf3\x49\x8d\x04\x1c\x49\x8d\x44\x05\x02\x48\x39\xf8\x0f\x83\x0f\x01\x00\x00\x4b\x8d\x04\x2c\x48\x89\x85\x30\xef\xff\xff\x48\x8d\x7c\x1a\x20\x48\x89\x95\x50\xef\xff\xff\xe8\xe4\x01\x00\x00\x48\x89\xc1\x48\x89\x8d\x58\xef\xff\xff\x48\x8b\x85\x48\xef\xff\xff\x48\x89\x01\x48\x8d\x79\x1c\x48\x89\x79\x08\x48\x8b\x95\x50\xef\xff\xff\x48\x8d\x44\x0a\x1d\x48\x89\x85\x48\xef\xff\xff\x48\x89\x41\x10\x4c\x89\xe6\xe8\xb5\x01\x00\x00\x48\x8b\x85\x58\xef\xff\xff\x48\x8b\x8d\x50\xef\xff\xff\xc6\x44\x01\x1c\x00\x48\x8b\xbd\x48\xef\xff\xff\x48\x8b\xb5\x30\xef\xff\xff\x48\x89\xda\xe8\x8c\x01\x00\x00\x43\x8d\x44\x37\x01\x4c\x8b\xbd\x58\xef\xff\xff\x42\xc6\x44\x38\x1c\x00\x4c\x01\xe3\x4c\x01\xeb\x31\xc0\x0f\x1f\x40\x00\x89\xc1\xc1\xe1\x07\x0f\xb6\x13\x89\xd0\x83\xe0\x7f\x09\xc8\x48\xff\xc3\xf6\xc2\x80\x74\x07\x3d\x00\x00\x00\x02\x72\xe2\x89\xc0\x4c\x8d\x24\x03\x48\x8d\x55\xd0\x48\x89\xd7\x49\x39\xfc\x44\x8b\xad\x3c\xef\xff\xff\x48\x8b\xb5\x40\xef\xff\xff\x77\x41\xff\xc6\x0f\xb6\x8d\xd0\xef\xff\xff\x39\xce\x73\x34\x48\x8d\x44\x03\x02\x48\x39\xf8\x0f\x82\x67\xfe\xff\xff\xeb\x24\x48\x8d\x3d\xf6\x21\x00\x00\xe8\x13\x01\x00\x00\x45\x31\xff\xeb\x49\x49\x89\xdf\xeb\x0e\x4c\x8b\xbd\x48\xef\xff\xff\x44\x8b\xad\x3c\xef\xff\xff\x44\x89\xef\xe8\x81\x00\x00\x00\xeb\x25\x48\x8d\x3d\xd5\x21\x00\x00\xe8\xe5\x00\x00\x00\xeb\x0c\x48\x8d\x3d\xdc\x21\x00\x00\xe8\xd7\x00\x00\x00\x44\x89\xef\xe8\x5d\x00\x00\x00\x45\x31\xff\x48\x8b\x1d\x93\x24\x00\x00\x48\x8b\x03\x48\x3b\x45\xd0\x75\x15\x4c\x89\xf8\x48\x81\xc4\xb8\x10\x00\x00\x5b\x41\x5c\x41\x5d\x41\x5e\x41\x5f\x5d\xc3\xe8\x18\x00\x00\x00\xff\x25\x82\x24\x00\x00\xff\x25\x84\x24\x00\x00\xff\x25\x86\x24\x00\x00\xff\x25\x88\x24\x00\x00\xff\x25\x8a\x24\x00\x00\xff\x25\x8c\x24\x00\x00\xff\x25\x8e\x24\x00\x00\xff\x25\x90\x24\x00\x00\xff\x25\x92\x24\x00\x00\xff\x25\x94\x24\x00\x00\xff\x25\x96\x24\x00\x00\xff\x25\x98\x24\x00\x00\xff\x25\x9a\x24\x00\x00\xff\x25\x9c\x24\x00\x00\xff\x25\x9e\x24\x00\x00\xff\x25\xa0\x24\x00\x00\xff\x25\xa2\x24\x00\x00\xff\x25\xa4\x24\x00\x00\xff\x25\xa6\x24\x00\x00\xff\x25\xa8\x24\x00\x00\xff\x25\xaa\x24\x00\x00\xff\x25\xac\x24\x00\x00\xff\x25\xae\x24\x00\x00\xff\x25\xb0\x24\x00\x00\xff\x25\xb2\x24\x00\x00\xff\x25\xb4\x24\x00\x00\xff\x25\xb6\x24\x00\x00\xff\x25\xb8\x24\x00\x00\xff\x25\xba\x24\x00\x00\xff\x25\xbc\x24\x00\x00\xff\x25\xbe\x24\x00\x00\xff\x25\xc0\x24\x00\x00\xff\x25\xc2\x24\x00\x00\xff\x25\xc4\x24\x00\x00\xff\x25\xc6\x24\x00\x00\xff\x25\xc8\x24\x00\x00\xff\x25\xca\x24\x00\x00\xff\x25\xcc\x24\x00\x00\xff\x25\xce\x24\x00\x00\xff\x25\xd0\x24\x00\x00\xff\x25\xd2\x24\x00\x00\xff\x25\xd4\x24\x00\x00\xff\x25\xd6\x24\x00\x00\xff\x25\xd8\x24\x00\x00\xff\x25\xda\x24\x00\x00\xff\x25\xdc\x24\x00\x00\xff\x25\xde\x24\x00\x00\xff\x25\xe0\x24\x00\x00\xff\x25\xe2\x24\x00\x00\xff\x25\xe4\x24\x00\x00\xff\x25\xe6\x24\x00\x00\xff\x25\xe8\x24\x00\x00\x4c\x8d\x1d\x21\x23\x00\x00\x41\x53\xff\x25\x11\x23\x00\x00\x90\x68\x00\x00\x00\x00\xe9\xe6\xff\xff\xff\x68\x0f\x00\x00\x00\xe9\xdc\xff\xff\xff\x68\x1e\x00\x00\x00\xe9\xd2\xff\xff\xff\x68\x32\x00\x00\x00\xe9\xc8\xff\xff\xff\x68\x48\x00\x00\x00\xe9\xbe\xff\xff\xff\x68\x60\x00\x00\x00\xe9\xb4\xff\xff\xff\x68\x6c\x00\x00\x00\xe9\xaa\xff\xff\xff\x68\x78\x00\x00\x00\xe9\xa0\xff\xff\xff\x68\x86\x00\x00\x00\xe9\x96\xff\xff\xff\x68\x93\x00\x00\x00\xe9\x8c\xff\xff\xff\x68\xa2\x00\x00\x00\xe9\x82\xff\xff\xff\x68\xb0\x00\x00\x00\xe9\x78\xff\xff\xff\x68\xc0\x00\x00\x00\xe9\x6e\xff\xff\xff\x68\xcd\x00\x00\x00\xe9\x64\xff\xff\xff\x68\xe2\x00\x00\x00\xe9\x5a\xff\xff\xff\x68\xf1\x00\x00\x00\xe9\x50\xff\xff\xff\x68\x06\x01\x00\x00\xe9\x46\xff\xff\xff\x68\x1a\x01\x00\x00\xe9\x3c\xff\xff\xff\x68\x2e\x01\x00\x00\xe9\x32\xff\xff\xff\x68\x42\x01\x00\x00\xe9\x28\xff\xff\xff\x68\x55\x01\x00\x00\xe9\x1e\xff\xff\xff\x68\x6c\x01\x00\x00\xe9\x14\xff\xff\xff\x68\x83\x01\x00\x00\xe9\x0a\xff\xff\xff\x68\x95\x01\x00\x00\xe9\x00\xff\xff\xff\x68\xa4\x01\x00\x00\xe9\xf6\xfe\xff\xff\x68\xb3\x01\x00\x00\xe9\xec\xfe\xff\xff\x68\xc2\x01\x00\x00\xe9\xe2\xfe\xff\xff\x68\xd2\x01\x00\x00\xe9\xd8\xfe\xff\xff\x68\xe1\x01\x00\x00\xe9\xce\xfe\xff\xff\x68\xee\x01\x00\x00\xe9\xc4\xfe\xff\xff\x68\xfd\x01\x00\x00\xe9\xba\xfe\xff\xff\x68\x0d\x02\x00\x00\xe9\xb0\xfe\xff\xff\x68\x1a\x02\x00\x00\xe9\xa6\xfe\xff\xff\x68\x27\x02\x00\x00\xe9\x9c\xfe\xff\xff\x68\x37\x02\x00\x00\xe9\x92\xfe\xff\xff\x68\x48\x02\x00\x00\xe9\x88\xfe\xff\xff\x68\x64\x02\x00\x00\xe9\x7e\xfe\xff\xff\x68\x71\x02\x00\x00\xe9\x74\xfe\xff\xff\x68\x80\x02\x00\x00\xe9\x6a\xfe\xff\xff\x68\x93\x02\x00\x00\xe9\x60\xfe\xff\xff\x68\xa2\x02\x00\x00\xe9\x56\xfe\xff\xff\x68\xb1\x02\x00\x00\xe9\x4c\xfe\xff\xff\x68\xc0\x02\x00\x00\xe9\x42\xfe\xff\xff\x68\xcf\x02\x00\x00\xe9\x38\xfe\xff\xff\x68\xde\x02\x00\x00\xe9\x2e\xfe\xff\xff\x68\xed\x02\x00\x00\xe9\x24\xfe\xff\xff\x68\x01\x03\x00\x00\xe9\x1a\xfe\xff\xff\x68\x11\x03\x00\x00\xe9\x10\xfe\xff\xff\x68\x21\x03\x00\x00\xe9\x06\xfe\xff\xff\x68\x30\x03\x00\x00\xe9\xfc\xfd\xff\xff\x68\x40\x03\x00\x00\xe9\xf2\xfd\xff\xff\x68\x4d\x03\x00\x00\xe9\xe8\xfd\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x2d\x68\x65\x6c\x70\x00\x2d\x68\x00\x6f\x70\x74\x69\x6f\x6e\x20\x27\x25\x73\x27\x20\x69\x6e\x76\x61\x6c\x69\x64\x0a\x00\x55\x73\x61\x67\x65\x20\x3a\x09\x25\x73\x20\x5b\x6f\x70\x74\x69\x6f\x6e\x73\x5d\x20\x2d\x61\x20\x69\x70\x20\x70\x6f\x72\x74\x20\x65\x78\x74\x65\x72\x6e\x61\x6c\x5f\x70\x6f\x72\x74\x20\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x20\x5b\x64\x75\x72\x61\x74\x69\x6f\x6e\x5d\x0a\x09\x09\x41\x64\x64\x20\x70\x6f\x72\x74\x20\x72\x65\x64\x69\x72\x65\x63\x74\x69\x6f\x6e\x0a\x00\x20\x20\x20\x20\x20\x20\x20\x09\x25\x73\x20\x5b\x6f\x70\x74\x69\x6f\x6e\x73\x5d\x20\x2d\x64\x20\x65\x78\x74\x65\x72\x6e\x61\x6c\x5f\x70\x6f\x72\x74\x20\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x20\x3c\x72\x65\x6d\x6f\x74\x65\x20\x68\x6f\x73\x74\x3e\x0a\x09\x09\x44\x65\x6c\x65\x74\x65\x20\x70\x6f\x72\x74\x20\x72\x65\x64\x69\x72\x65\x63\x74\x69\x6f\x6e\x0a\x00\x20\x20\x20\x20\x20\x20\x20\x09\x25\x73\x20\x5b\x6f\x70\x74\x69\x6f\x6e\x73\x5d\x20\x2d\x73\x0a\x09\x09\x47\x65\x74\x20\x43\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e\x20\x73\x74\x61\x74\x75\x73\x0a\x00\x20\x20\x20\x20\x20\x20\x20\x09\x25\x73\x20\x5b\x6f\x70\x74\x69\x6f\x6e\x73\x5d\x20\x2d\x6c\x0a\x09\x09\x4c\x69\x73\x74\x20\x72\x65\x64\x69\x72\x65\x63\x74\x69\x6f\x6e\x73\x0a\x00\x20\x20\x20\x20\x20\x20\x20\x09\x25\x73\x20\x5b\x6f\x70\x74\x69\x6f\x6e\x73\x5d\x20\x2d\x4c\x0a\x09\x09\x4c\x69\x73\x74\x20\x72\x65\x64\x69\x72\x65\x63\x74\x69\x6f\x6e\x73\x20\x28\x75\x73\x69\x6e\x67\x20\x47\x65\x74\x4c\x69\x73\x74\x4f\x66\x50\x6f\x72\x74\x4d\x61\x70\x70\x69\x6e\x67\x73\x20\x28\x66\x6f\x72\x20\x49\x47\x44\x3a\x32\x20\x6f\x6e\x6c\x79\x29\x0a\x00\x20\x20\x20\x20\x20\x20\x20\x09\x25\x73\x20\x5b\x6f\x70\x74\x69\x6f\x6e\x73\x5d\x20\x2d\x6e\x20\x69\x70\x20\x70\x6f\x72\x74\x20\x65\x78\x74\x65\x72\x6e\x61\x6c\x5f\x70\x6f\x72\x74\x20\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x20\x5b\x64\x75\x72\x61\x74\x69\x6f\x6e\x5d\x0a\x09\x09\x41\x64\x64\x20\x28\x61\x6e\x79\x29\x20\x70\x6f\x72\x74\x20\x72\x65\x64\x69\x72\x65\x63\x74\x69\x6f\x6e\x20\x61\x6c\x6c\x6f\x77\x69\x6e\x67\x20\x49\x47\x44\x20\x74\x6f\x20\x75\x73\x65\x20\x61\x6c\x74\x65\x72\x6e\x61\x74\x69\x76\x65\x20\x65\x78\x74\x65\x72\x6e\x61\x6c\x5f\x70\x6f\x72\x74\x20\x28\x66\x6f\x72\x20\x49\x47\x44\x3a\x32\x20\x6f\x6e\x6c\x79\x29\x0a\x00\x20\x20\x20\x20\x20\x20\x20\x09\x25\x73\x20\x5b\x6f\x70\x74\x69\x6f\x6e\x73\x5d\x20\x2d\x4e\x20\x65\x78\x74\x65\x72\x6e\x61\x6c\x5f\x70\x6f\x72\x74\x5f\x73\x74\x61\x72\x74\x20\x65\x78\x74\x65\x72\x6e\x61\x6c\x5f\x70\x6f\x72\x74\x5f\x65\x6e\x64\x20\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x20\x5b\x6d\x61\x6e\x61\x67\x65\x5d\x0a\x09\x09\x44\x65\x6c\x65\x74\x65\x20\x72\x61\x6e\x67\x65\x20\x6f\x66\x20\x70\x6f\x72\x74\x20\x72\x65\x64\x69\x72\x65\x63\x74\x69\x6f\x6e\x73\x20\x28\x66\x6f\x72\x20\x49\x47\x44\x3a\x32\x20\x6f\x6e\x6c\x79\x29\x0a\x00\x20\x20\x20\x20\x20\x20\x20\x09\x25\x73\x20\x5b\x6f\x70\x74\x69\x6f\x6e\x73\x5d\x20\x2d\x72\x20\x70\x6f\x72\x74\x31\x20\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x31\x20\x5b\x70\x6f\x72\x74\x32\x20\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x32\x5d\x20\x5b\x2e\x2e\x2e\x5d\x0a\x09\x09\x41\x64\x64\x20\x61\x6c\x6c\x20\x72\x65\x64\x69\x72\x65\x63\x74\x69\x6f\x6e\x73\x20\x74\x6f\x20\x74\x68\x65\x20\x63\x75\x72\x72\x65\x6e\x74\x20\x68\x6f\x73\x74\x0a\x00\x20\x20\x20\x20\x20\x20\x20\x09\x25\x73\x20\x5b\x6f\x70\x74\x69\x6f\x6e\x73\x5d\x20\x2d\x41\x20\x72\x65\x6d\x6f\x74\x65\x5f\x69\x70\x20\x72\x65\x6d\x6f\x74\x65\x5f\x70\x6f\x72\x74\x20\x69\x6e\x74\x65\x72\x6e\x61\x6c\x5f\x69\x70\x20\x69\x6e\x74\x65\x72\x6e\x61\x6c\x5f\x70\x6f\x72\x74\x20\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x20\x6c\x65\x61\x73\x65\x5f\x74\x69\x6d\x65\x0a\x09\x09\x41\x64\x64\x20\x50\x69\x6e\x68\x6f\x6c\x65\x20\x28\x66\x6f\x72\x20\x49\x47\x44\x3a\x32\x20\x6f\x6e\x6c\x79\x29\x0a\x00\x20\x20\x20\x20\x20\x20\x20\x09\x25\x73\x20\x5b\x6f\x70\x74\x69\x6f\x6e\x73\x5d\x20\x2d\x55\x20\x75\x6e\x69\x71\x75\x65\x49\x44\x20\x6e\x65\x77\x5f\x6c\x65\x61\x73\x65\x5f\x74\x69\x6d\x65\x0a\x09\x09\x55\x70\x64\x61\x74\x65\x20\x50\x69\x6e\x68\x6f\x6c\x65\x20\x28\x66\x6f\x72\x20\x49\x47\x44\x3a\x32\x20\x6f\x6e\x6c\x79\x29\x0a\x00\x20\x20\x20\x20\x20\x20\x20\x09\x25\x73\x20\x5b\x6f\x70\x74\x69\x6f\x6e\x73\x5d\x20\x2d\x43\x20\x75\x6e\x69\x71\x75\x65\x49\x44\x0a\x09\x09\x43\x68\x65\x63\x6b\x20\x69\x66\x20\x50\x69\x6e\x68\x6f\x6c\x65\x20\x69\x73\x20\x57\x6f\x72\x6b\x69\x6e\x67\x20\x28\x66\x6f\x72\x20\x49\x47\x44\x3a\x32\x20\x6f\x6e\x6c\x79\x29\x0a\x00\x20\x20\x20\x20\x20\x20\x20\x09\x25\x73\x20\x5b\x6f\x70\x74\x69\x6f\x6e\x73\x5d\x20\x2d\x4b\x20\x75\x6e\x69\x71\x75\x65\x49\x44\x0a\x09\x09\x47\x65\x74\x20\x4e\x75\x6d\x62\x65\x72\x20\x6f\x66\x20\x70\x61\x63\x6b\x65\x74\x73\x20\x67\x6f\x69\x6e\x67\x20\x74\x68\x72\x6f\x75\x67\x68\x20\x74\x68\x65\x20\x72\x75\x6c\x65\x20\x28\x66\x6f\x72\x20\x49\x47\x44\x3a\x32\x20\x6f\x6e\x6c\x79\x29\x0a\x00\x20\x20\x20\x20\x20\x20\x20\x09\x25\x73\x20\x5b\x6f\x70\x74\x69\x6f\x6e\x73\x5d\x20\x2d\x44\x20\x75\x6e\x69\x71\x75\x65\x49\x44\x0a\x09\x09\x44\x65\x6c\x65\x74\x65\x20\x50\x69\x6e\x68\x6f\x6c\x65\x20\x28\x66\x6f\x72\x20\x49\x47\x44\x3a\x32\x20\x6f\x6e\x6c\x79\x29\x0a\x00\x20\x20\x20\x20\x20\x20\x20\x09\x25\x73\x20\x5b\x6f\x70\x74\x69\x6f\x6e\x73\x5d\x20\x2d\x53\x0a\x09\x09\x47\x65\x74\x20\x46\x69\x72\x65\x77\x61\x6c\x6c\x20\x73\x74\x61\x74\x75\x73\x20\x28\x66\x6f\x72\x20\x49\x47\x44\x3a\x32\x20\x6f\x6e\x6c\x79\x29\x0a\x00\x20\x20\x20\x20\x20\x20\x20\x09\x25\x73\x20\x5b\x6f\x70\x74\x69\x6f\x6e\x73\x5d\x20\x2d\x47\x20\x72\x65\x6d\x6f\x74\x65\x5f\x69\x70\x20\x72\x65\x6d\x6f\x74\x65\x5f\x70\x6f\x72\x74\x20\x69\x6e\x74\x65\x72\x6e\x61\x6c\x5f\x69\x70\x20\x69\x6e\x74\x65\x72\x6e\x61\x6c\x5f\x70\x6f\x72\x74\x20\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x0a\x09\x09\x47\x65\x74\x20\x4f\x75\x74\x62\x6f\x75\x6e\x64\x20\x50\x69\x6e\x68\x6f\x6c\x65\x20\x54\x69\x6d\x65\x6f\x75\x74\x20\x28\x66\x6f\x72\x20\x49\x47\x44\x3a\x32\x20\x6f\x6e\x6c\x79\x29\x0a\x00\x20\x20\x20\x20\x20\x20\x20\x09\x25\x73\x20\x5b\x6f\x70\x74\x69\x6f\x6e\x73\x5d\x20\x2d\x50\x0a\x09\x09\x47\x65\x74\x20\x50\x72\x65\x73\x65\x6e\x74\x61\x74\x69\x6f\x6e\x20\x75\x72\x6c\x0a\x00\x0a\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x20\x69\x73\x20\x55\x44\x50\x20\x6f\x72\x20\x54\x43\x50\x0a\x00\x4f\x70\x74\x69\x6f\x6e\x73\x3a\x0a\x00\x20\x20\x2d\x65\x20\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x20\x3a\x20\x73\x65\x74\x20\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x20\x66\x6f\x72\x20\x70\x6f\x72\x74\x20\x6d\x61\x70\x70\x69\x6e\x67\x2e\x0a\x00\x20\x20\x2d\x36\x20\x3a\x20\x75\x73\x65\x20\x69\x70\x20\x76\x36\x20\x69\x6e\x73\x74\x65\x61\x64\x20\x6f\x66\x20\x69\x70\x20\x76\x34\x2e\x0a\x00\x20\x20\x2d\x75\x20\x75\x72\x6c\x20\x3a\x20\x62\x79\x70\x61\x73\x73\x20\x64\x69\x73\x63\x6f\x76\x65\x72\x79\x20\x70\x72\x6f\x63\x65\x73\x73\x20\x62\x79\x20\x70\x72\x6f\x76\x69\x64\x69\x6e\x67\x20\x74\x68\x65\x20\x58\x4d\x4c\x20\x72\x6f\x6f\x74\x20\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x20\x75\x72\x6c\x2e\x0a\x00\x20\x20\x2d\x6d\x20\x61\x64\x64\x72\x65\x73\x73\x2f\x69\x6e\x74\x65\x72\x66\x61\x63\x65\x20\x3a\x20\x70\x72\x6f\x76\x69\x64\x65\x20\x69\x70\x20\x61\x64\x64\x72\x65\x73\x73\x20\x28\x69\x70\x20\x76\x34\x29\x20\x6f\x72\x20\x69\x6e\x74\x65\x72\x66\x61\x63\x65\x20\x6e\x61\x6d\x65\x20\x28\x69\x70\x20\x76\x34\x20\x6f\x72\x20\x76\x36\x29\x20\x74\x6f\x20\x75\x73\x65\x20\x66\x6f\x72\x20\x73\x65\x6e\x64\x69\x6e\x67\x20\x53\x53\x44\x50\x20\x6d\x75\x6c\x74\x69\x63\x61\x73\x74\x20\x70\x61\x63\x6b\x65\x74\x73\x2e\x0a\x00\x20\x20\x2d\x70\x20\x70\x61\x74\x68\x20\x3a\x20\x75\x73\x65\x20\x74\x68\x69\x73\x20\x70\x61\x74\x68\x20\x66\x6f\x72\x20\x4d\x69\x6e\x69\x53\x53\x44\x50\x64\x20\x73\x6f\x63\x6b\x65\x74\x2e\x0a\x00\x20\x64\x65\x73\x63\x3a\x20\x25\x73\x0a\x20\x73\x74\x3a\x20\x25\x73\x0a\x0a\x00\x75\x70\x6e\x70\x44\x69\x73\x63\x6f\x76\x65\x72\x28\x29\x20\x65\x72\x72\x6f\x72\x20\x63\x6f\x64\x65\x3d\x25\x64\x0a\x00\x46\x6f\x75\x6e\x64\x20\x76\x61\x6c\x69\x64\x20\x49\x47\x44\x20\x3a\x20\x25\x73\x0a\x00\x46\x6f\x75\x6e\x64\x20\x61\x20\x28\x6e\x6f\x74\x20\x63\x6f\x6e\x6e\x65\x63\x74\x65\x64\x3f\x29\x20\x49\x47\x44\x20\x3a\x20\x25\x73\x0a\x00\x55\x50\x6e\x50\x20\x64\x65\x76\x69\x63\x65\x20\x66\x6f\x75\x6e\x64\x2e\x20\x49\x73\x20\x69\x74\x20\x61\x6e\x20\x49\x47\x44\x20\x3f\x20\x3a\x20\x25\x73\x0a\x00\x46\x6f\x75\x6e\x64\x20\x64\x65\x76\x69\x63\x65\x20\x28\x69\x67\x64\x20\x3f\x29\x20\x3a\x20\x25\x73\x0a\x00\x4c\x6f\x63\x61\x6c\x20\x4c\x41\x4e\x20\x69\x70\x20\x61\x64\x64\x72\x65\x73\x73\x20\x3a\x20\x25\x73\x0a\x00\x30\x00\x74\x6f\x6f\x20\x66\x65\x77\x20\x61\x72\x67\x75\x6d\x65\x6e\x74\x73\x0a\x00\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x25\x73\x0a\x00\x55\x6e\x6b\x6e\x6f\x77\x6e\x20\x73\x77\x69\x74\x63\x68\x20\x2d\x25\x63\x0a\x00\x4e\x6f\x20\x76\x61\x6c\x69\x64\x20\x55\x50\x4e\x50\x20\x49\x6e\x74\x65\x72\x6e\x65\x74\x20\x47\x61\x74\x65\x77\x61\x79\x20\x44\x65\x76\x69\x63\x65\x20\x66\x6f\x75\x6e\x64\x2e\x0a\x00\x4e\x6f\x20\x49\x47\x44\x20\x55\x50\x6e\x50\x20\x44\x65\x76\x69\x63\x65\x20\x66\x6f\x75\x6e\x64\x20\x6f\x6e\x20\x74\x68\x65\x20\x6e\x65\x74\x77\x6f\x72\x6b\x20\x21\x0a\x00\x57\x72\x6f\x6e\x67\x20\x61\x72\x67\x75\x6d\x65\x6e\x74\x73\x0a\x00\x47\x65\x74\x4f\x75\x74\x62\x6f\x75\x6e\x64\x50\x69\x6e\x68\x6f\x6c\x65\x54\x69\x6d\x65\x6f\x75\x74\x28\x5b\x25\x73\x5d\x3a\x25\x73\x20\x2d\x3e\x20\x5b\x25\x73\x5d\x3a\x25\x73\x29\x20\x66\x61\x69\x6c\x65\x64\x20\x77\x69\x74\x68\x20\x63\x6f\x64\x65\x20\x25\x64\x20\x28\x25\x73\x29\x0a\x00\x47\x65\x74\x4f\x75\x74\x62\x6f\x75\x6e\x64\x50\x69\x6e\x68\x6f\x6c\x65\x54\x69\x6d\x65\x6f\x75\x74\x3a\x20\x28\x5b\x25\x73\x5d\x3a\x25\x73\x20\x2d\x3e\x20\x5b\x25\x73\x5d\x3a\x25\x73\x29\x20\x2f\x20\x54\x69\x6d\x65\x6f\x75\x74\x20\x3d\x20\x25\x64\x0a\x00\x46\x69\x72\x65\x77\x61\x6c\x6c\x45\x6e\x61\x62\x6c\x65\x64\x3a\x20\x25\x64\x20\x26\x20\x49\x6e\x62\x6f\x75\x6e\x64\x20\x50\x69\x6e\x68\x6f\x6c\x65\x20\x41\x6c\x6c\x6f\x77\x65\x64\x3a\x20\x25\x64\x0a\x00\x47\x65\x74\x46\x69\x72\x65\x77\x61\x6c\x6c\x53\x74\x61\x74\x75\x73\x3a\x0a\x20\x20\x20\x46\x69\x72\x65\x77\x61\x6c\x6c\x20\x45\x6e\x61\x62\x6c\x65\x64\x3a\x20\x25\x73\x0a\x20\x20\x20\x49\x6e\x62\x6f\x75\x6e\x64\x20\x50\x69\x6e\x68\x6f\x6c\x65\x20\x41\x6c\x6c\x6f\x77\x65\x64\x3a\x20\x25\x73\x0a\x00\x59\x65\x73\x00\x4e\x6f\x00\x42\x79\x74\x65\x73\x3a\x20\x20\x20\x53\x65\x6e\x74\x3a\x20\x25\x38\x75\x09\x52\x65\x63\x76\x3a\x20\x25\x38\x75\x0a\x00\x50\x61\x63\x6b\x65\x74\x73\x3a\x20\x53\x65\x6e\x74\x3a\x20\x25\x38\x75\x09\x52\x65\x63\x76\x3a\x20\x25\x38\x75\x0a\x00\x69\x6e\x76\x61\x6c\x69\x64\x20\x61\x72\x67\x75\x6d\x65\x6e\x74\x73\x0a\x00\x55\x50\x4e\x50\x5f\x44\x65\x6c\x65\x74\x65\x50\x69\x6e\x68\x6f\x6c\x65\x28\x29\x20\x72\x65\x74\x75\x72\x6e\x65\x64\x20\x3a\x20\x25\x64\x0a\x00\x47\x65\x74\x50\x69\x6e\x68\x6f\x6c\x65\x50\x61\x63\x6b\x65\x74\x73\x28\x29\x20\x66\x61\x69\x6c\x65\x64\x20\x77\x69\x74\x68\x20\x63\x6f\x64\x65\x20\x25\x64\x20\x28\x25\x73\x29\x0a\x00\x47\x65\x74\x50\x69\x6e\x68\x6f\x6c\x65\x50\x61\x63\x6b\x65\x74\x73\x3a\x20\x50\x69\x6e\x68\x6f\x6c\x65\x20\x49\x44\x20\x3d\x20\x25\x73\x20\x2f\x20\x50\x69\x6e\x68\x6f\x6c\x65\x50\x61\x63\x6b\x65\x74\x73\x20\x3d\x20\x25\x64\x0a\x00\x43\x68\x65\x63\x6b\x50\x69\x6e\x68\x6f\x6c\x65\x57\x6f\x72\x6b\x69\x6e\x67\x28\x29\x20\x66\x61\x69\x6c\x65\x64\x20\x77\x69\x74\x68\x20\x63\x6f\x64\x65\x20\x25\x64\x20\x28\x25\x73\x29\x0a\x00\x43\x68\x65\x63\x6b\x50\x69\x6e\x68\x6f\x6c\x65\x57\x6f\x72\x6b\x69\x6e\x67\x3a\x20\x50\x69\x6e\x68\x6f\x6c\x65\x20\x49\x44\x20\x3d\x20\x25\x73\x20\x2f\x20\x49\x73\x57\x6f\x72\x6b\x69\x6e\x67\x20\x3d\x20\x25\x73\x0a\x00\x55\x70\x64\x61\x74\x65\x50\x69\x6e\x68\x6f\x6c\x65\x3a\x20\x50\x69\x6e\x68\x6f\x6c\x65\x20\x49\x44\x20\x3d\x20\x25\x73\x20\x77\x69\x74\x68\x20\x4c\x65\x61\x73\x65\x20\x54\x69\x6d\x65\x3a\x20\x25\x73\x0a\x00\x55\x70\x64\x61\x74\x65\x50\x69\x6e\x68\x6f\x6c\x65\x3a\x20\x49\x44\x20\x28\x25\x73\x29\x20\x66\x61\x69\x6c\x65\x64\x20\x77\x69\x74\x68\x20\x63\x6f\x64\x65\x20\x25\x64\x20\x28\x25\x73\x29\x0a\x00\x25\x64\x00\x69\x6e\x76\x61\x6c\x69\x64\x20\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x0a\x00\x41\x64\x64\x50\x69\x6e\x68\x6f\x6c\x65\x28\x5b\x25\x73\x5d\x3a\x25\x73\x20\x2d\x3e\x20\x5b\x25\x73\x5d\x3a\x25\x73\x29\x20\x66\x61\x69\x6c\x65\x64\x20\x77\x69\x74\x68\x20\x63\x6f\x64\x65\x20\x25\x64\x20\x28\x25\x73\x29\x0a\x00\x41\x64\x64\x50\x69\x6e\x68\x6f\x6c\x65\x3a\x20\x28\x5b\x25\x73\x5d\x3a\x25\x73\x20\x2d\x3e\x20\x5b\x25\x73\x5d\x3a\x25\x73\x29\x20\x2f\x20\x50\x69\x6e\x68\x6f\x6c\x65\x20\x49\x44\x20\x3d\x20\x25\x73\x0a\x00\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x20\x69\x6e\x76\x61\x6c\x69\x64\x0a\x00\x55\x50\x4e\x50\x5f\x44\x65\x6c\x65\x74\x65\x50\x6f\x72\x74\x4d\x61\x70\x70\x69\x6e\x67\x52\x61\x6e\x67\x65\x28\x29\x20\x72\x65\x74\x75\x72\x6e\x65\x64\x20\x3a\x20\x25\x64\x0a\x00\x55\x50\x4e\x50\x5f\x44\x65\x6c\x65\x74\x65\x50\x6f\x72\x74\x4d\x61\x70\x70\x69\x6e\x67\x28\x29\x20\x72\x65\x74\x75\x72\x6e\x65\x64\x20\x3a\x20\x25\x64\x0a\x00\x45\x78\x74\x65\x72\x6e\x61\x6c\x49\x50\x41\x64\x64\x72\x65\x73\x73\x20\x3d\x20\x25\x73\x0a\x00\x41\x64\x64\x41\x6e\x79\x50\x6f\x72\x74\x4d\x61\x70\x70\x69\x6e\x67\x28\x25\x73\x2c\x20\x25\x73\x2c\x20\x25\x73\x29\x20\x66\x61\x69\x6c\x65\x64\x20\x77\x69\x74\x68\x20\x63\x6f\x64\x65\x20\x25\x64\x20\x28\x25\x73\x29\x0a\x00\x41\x64\x64\x50\x6f\x72\x74\x4d\x61\x70\x70\x69\x6e\x67\x28\x25\x73\x2c\x20\x25\x73\x2c\x20\x25\x73\x29\x20\x66\x61\x69\x6c\x65\x64\x20\x77\x69\x74\x68\x20\x63\x6f\x64\x65\x20\x25\x64\x20\x28\x25\x73\x29\x0a\x00\x47\x65\x74\x53\x70\x65\x63\x69\x66\x69\x63\x50\x6f\x72\x74\x4d\x61\x70\x70\x69\x6e\x67\x45\x6e\x74\x72\x79\x28\x29\x20\x66\x61\x69\x6c\x65\x64\x20\x77\x69\x74\x68\x20\x63\x6f\x64\x65\x20\x25\x64\x20\x28\x25\x73\x29\x0a\x00\x49\x6e\x74\x65\x72\x6e\x61\x6c\x49\x50\x3a\x50\x6f\x72\x74\x20\x3d\x20\x25\x73\x3a\x25\x73\x0a\x00\x65\x78\x74\x65\x72\x6e\x61\x6c\x20\x25\x73\x3a\x25\x73\x20\x25\x73\x20\x69\x73\x20\x72\x65\x64\x69\x72\x65\x63\x74\x65\x64\x20\x74\x6f\x20\x69\x6e\x74\x65\x72\x6e\x61\x6c\x20\x25\x73\x3a\x25\x73\x20\x28\x64\x75\x72\x61\x74\x69\x6f\x6e\x3d\x25\x73\x29\x0a\x00\x36\x35\x35\x33\x35\x00\x31\x30\x30\x30\x00\x25\x32\x64\x20\x25\x73\x20\x25\x35\x68\x75\x2d\x3e\x25\x73\x3a\x25\x2d\x35\x68\x75\x20\x27\x25\x73\x27\x20\x27\x25\x73\x27\x20\x25\x75\x0a\x00\x47\x65\x74\x4c\x69\x73\x74\x4f\x66\x50\x6f\x72\x74\x4d\x61\x70\x70\x69\x6e\x67\x73\x28\x29\x20\x72\x65\x74\x75\x72\x6e\x65\x64\x20\x25\x64\x20\x28\x25\x73\x29\x0a\x00\x25\x32\x64\x20\x25\x73\x20\x25\x35\x73\x2d\x3e\x25\x73\x3a\x25\x2d\x35\x73\x20\x27\x25\x73\x27\x20\x27\x25\x73\x27\x20\x25\x73\x0a\x00\x47\x65\x74\x47\x65\x6e\x65\x72\x69\x63\x50\x6f\x72\x74\x4d\x61\x70\x70\x69\x6e\x67\x45\x6e\x74\x72\x79\x28\x29\x20\x72\x65\x74\x75\x72\x6e\x65\x64\x20\x25\x64\x20\x28\x25\x73\x29\x0a\x00\x43\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e\x20\x54\x79\x70\x65\x20\x3a\x20\x25\x73\x0a\x00\x53\x74\x61\x74\x75\x73\x20\x3a\x20\x25\x73\x2c\x20\x75\x70\x74\x69\x6d\x65\x3d\x25\x75\x73\x2c\x20\x4c\x61\x73\x74\x43\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e\x45\x72\x72\x6f\x72\x20\x3a\x20\x25\x73\x0a\x00\x20\x20\x54\x69\x6d\x65\x20\x73\x74\x61\x72\x74\x65\x64\x20\x3a\x20\x25\x73\x00\x4d\x61\x78\x42\x69\x74\x52\x61\x74\x65\x44\x6f\x77\x6e\x20\x3a\x20\x25\x75\x20\x62\x70\x73\x00\x20\x28\x25\x75\x2e\x25\x75\x20\x4d\x62\x70\x73\x29\x00\x20\x28\x25\x75\x20\x4b\x62\x70\x73\x29\x00\x20\x20\x20\x4d\x61\x78\x42\x69\x74\x52\x61\x74\x65\x55\x70\x20\x25\x75\x20\x62\x70\x73\x00\x47\x65\x74\x45\x78\x74\x65\x72\x6e\x61\x6c\x49\x50\x41\x64\x64\x72\x65\x73\x73\x20\x66\x61\x69\x6c\x65\x64\x2e\x20\x28\x65\x72\x72\x6f\x72\x63\x6f\x64\x65\x3d\x25\x64\x29\x0a\x00\x00\x00\x00\x75\x70\x6e\x70\x63\x20\x3a\x20\x6d\x69\x6e\x69\x75\x70\x6e\x70\x63\x20\x6c\x69\x62\x72\x61\x72\x79\x20\x74\x65\x73\x74\x20\x63\x6c\x69\x65\x6e\x74\x2e\x20\x28\x63\x29\x20\x32\x30\x30\x35\x2d\x32\x30\x31\x34\x20\x54\x68\x6f\x6d\x61\x73\x20\x42\x65\x72\x6e\x61\x72\x64\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\x6f\x20\x74\x6f\x20\x68\x74\x74\x70\x3a\x2f\x2f\x6d\x69\x6e\x69\x75\x70\x6e\x70\x2e\x66\x72\x65\x65\x2e\x66\x72\x2f\x20\x6f\x72\x20\x68\x74\x74\x70\x3a\x2f\x2f\x6d\x69\x6e\x69\x75\x70\x6e\x70\x2e\x74\x75\x78\x66\x61\x6d\x69\x6c\x79\x2e\x6f\x72\x67\x2f\x0a\x66\x6f\x72\x20\x6d\x6f\x72\x65\x20\x69\x6e\x66\x6f\x72\x6d\x61\x74\x69\x6f\x6e\x2e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\x72\x65\x73\x65\x6e\x74\x61\x74\x69\x6f\x6e\x20\x55\x52\x4c\x20\x66\x6f\x75\x6e\x64\x3a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x72\x79\x69\x6e\x67\x20\x74\x6f\x20\x63\x6f\x6e\x74\x69\x6e\x75\x65\x20\x61\x6e\x79\x77\x61\x79\x00\x00\x00\x00\x00\x00\x00\x4c\x69\x73\x74\x20\x6f\x66\x20\x55\x50\x4e\x50\x20\x64\x65\x76\x69\x63\x65\x73\x20\x66\x6f\x75\x6e\x64\x20\x6f\x6e\x20\x74\x68\x65\x20\x6e\x65\x74\x77\x6f\x72\x6b\x20\x3a\x00\x00\x00\x00\x00\x47\x65\x74\x4c\x69\x6e\x6b\x4c\x61\x79\x65\x72\x4d\x61\x78\x42\x69\x74\x52\x61\x74\x65\x73\x20\x66\x61\x69\x6c\x65\x64\x2e\x00\x47\x65\x74\x53\x74\x61\x74\x75\x73\x49\x6e\x66\x6f\x20\x66\x61\x69\x6c\x65\x64\x2e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\x65\x74\x43\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e\x54\x79\x70\x65\x49\x6e\x66\x6f\x20\x66\x61\x69\x6c\x65\x64\x2e\x00\x00\x00\x20\x69\x20\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x20\x65\x78\x50\x6f\x72\x74\x2d\x3e\x69\x6e\x41\x64\x64\x72\x3a\x69\x6e\x50\x6f\x72\x74\x20\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x20\x72\x65\x6d\x6f\x74\x65\x48\x6f\x73\x74\x20\x6c\x65\x61\x73\x65\x54\x69\x6d\x65\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\x65\x74\x45\x78\x74\x65\x72\x6e\x61\x6c\x49\x50\x41\x64\x64\x72\x65\x73\x73\x20\x66\x61\x69\x6c\x65\x64\x2e\x00\x63\x6f\x6e\x74\x65\x6e\x74\x2d\x6c\x65\x6e\x67\x74\x68\x00\x74\x72\x61\x6e\x73\x66\x65\x72\x2d\x65\x6e\x63\x6f\x64\x69\x6e\x67\x00\x63\x68\x75\x6e\x6b\x65\x64\x00\x3a\x2f\x2f\x00\x67\x65\x74\x73\x6f\x63\x6b\x6e\x61\x6d\x65\x00\x67\x65\x74\x6e\x61\x6d\x65\x69\x6e\x66\x6f\x28\x29\x20\x66\x61\x69\x6c\x65\x64\x20\x3a\x20\x25\x73\x0a\x00\x47\x45\x54\x20\x25\x73\x20\x48\x54\x54\x50\x2f\x25\x73\x0d\x0a\x48\x6f\x73\x74\x3a\x20\x25\x73\x3a\x25\x64\x0d\x0a\x43\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e\x3a\x20\x43\x6c\x6f\x73\x65\x0d\x0a\x55\x73\x65\x72\x2d\x41\x67\x65\x6e\x74\x3a\x20\x44\x61\x72\x77\x69\x6e\x2f\x31\x33\x2e\x34\x2e\x30\x2c\x20\x55\x50\x6e\x50\x2f\x31\x2e\x31\x2c\x20\x4d\x69\x6e\x69\x55\x50\x6e\x50\x63\x2f\x31\x2e\x39\x0d\x0a\x0d\x0a\x00\x73\x65\x6e\x64\x00\x3c\x21\x2d\x2d\x00\x2d\x2d\x3e\x00\x3c\x21\x5b\x43\x44\x41\x54\x41\x5b\x00\x5d\x5d\x3e\x00\x73\x65\x72\x76\x69\x63\x65\x00\x75\x72\x6e\x3a\x73\x63\x68\x65\x6d\x61\x73\x2d\x75\x70\x6e\x70\x2d\x6f\x72\x67\x3a\x73\x65\x72\x76\x69\x63\x65\x3a\x57\x41\x4e\x49\x50\x76\x36\x46\x69\x72\x65\x77\x61\x6c\x6c\x43\x6f\x6e\x74\x72\x6f\x6c\x3a\x00\x75\x72\x6e\x3a\x73\x63\x68\x65\x6d\x61\x73\x2d\x75\x70\x6e\x70\x2d\x6f\x72\x67\x3a\x73\x65\x72\x76\x69\x63\x65\x3a\x57\x41\x4e\x49\x50\x43\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e\x3a\x00\x75\x72\x6e\x3a\x73\x63\x68\x65\x6d\x61\x73\x2d\x75\x70\x6e\x70\x2d\x6f\x72\x67\x3a\x73\x65\x72\x76\x69\x63\x65\x3a\x57\x41\x4e\x50\x50\x50\x43\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e\x3a\x00\x55\x52\x4c\x42\x61\x73\x65\x00\x70\x72\x65\x73\x65\x6e\x74\x61\x74\x69\x6f\x6e\x55\x52\x4c\x00\x73\x65\x72\x76\x69\x63\x65\x54\x79\x70\x65\x00\x63\x6f\x6e\x74\x72\x6f\x6c\x55\x52\x4c\x00\x65\x76\x65\x6e\x74\x53\x75\x62\x55\x52\x4c\x00\x53\x43\x50\x44\x55\x52\x4c\x00\x3a\x25\x68\x75\x00\x50\x4f\x53\x54\x20\x25\x73\x20\x48\x54\x54\x50\x2f\x25\x73\x0d\x0a\x48\x6f\x73\x74\x3a\x20\x25\x73\x25\x73\x0d\x0a\x55\x73\x65\x72\x2d\x41\x67\x65\x6e\x74\x3a\x20\x44\x61\x72\x77\x69\x6e\x2f\x31\x33\x2e\x34\x2e\x30\x2c\x20\x55\x50\x6e\x50\x2f\x31\x2e\x31\x2c\x20\x4d\x69\x6e\x69\x55\x50\x6e\x50\x63\x2f\x31\x2e\x39\x0d\x0a\x43\x6f\x6e\x74\x65\x6e\x74\x2d\x4c\x65\x6e\x67\x74\x68\x3a\x20\x25\x64\x0d\x0a\x43\x6f\x6e\x74\x65\x6e\x74\x2d\x54\x79\x70\x65\x3a\x20\x74\x65\x78\x74\x2f\x78\x6d\x6c\x0d\x0a\x53\x4f\x41\x50\x41\x63\x74\x69\x6f\x6e\x3a\x20\x22\x25\x73\x22\x0d\x0a\x43\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e\x3a\x20\x43\x6c\x6f\x73\x65\x0d\x0a\x43\x61\x63\x68\x65\x2d\x43\x6f\x6e\x74\x72\x6f\x6c\x3a\x20\x6e\x6f\x2d\x63\x61\x63\x68\x65\x0d\x0a\x50\x72\x61\x67\x6d\x61\x3a\x20\x6e\x6f\x2d\x63\x61\x63\x68\x65\x0d\x0a\x0d\x0a\x00\x25\x73\x23\x25\x73\x00\x3c\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\x30\x22\x3f\x3e\x0d\x0a\x3c\x73\x3a\x45\x6e\x76\x65\x6c\x6f\x70\x65\x20\x78\x6d\x6c\x6e\x73\x3a\x73\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x73\x63\x68\x65\x6d\x61\x73\x2e\x78\x6d\x6c\x73\x6f\x61\x70\x2e\x6f\x72\x67\x2f\x73\x6f\x61\x70\x2f\x65\x6e\x76\x65\x6c\x6f\x70\x65\x2f\x22\x20\x73\x3a\x65\x6e\x63\x6f\x64\x69\x6e\x67\x53\x74\x79\x6c\x65\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x73\x63\x68\x65\x6d\x61\x73\x2e\x78\x6d\x6c\x73\x6f\x61\x70\x2e\x6f\x72\x67\x2f\x73\x6f\x61\x70\x2f\x65\x6e\x63\x6f\x64\x69\x6e\x67\x2f\x22\x3e\x3c\x73\x3a\x42\x6f\x64\x79\x3e\x3c\x75\x3a\x25\x73\x20\x78\x6d\x6c\x6e\x73\x3a\x75\x3d\x22\x25\x73\x22\x3e\x3c\x2f\x75\x3a\x25\x73\x3e\x3c\x2f\x73\x3a\x42\x6f\x64\x79\x3e\x3c\x2f\x73\x3a\x45\x6e\x76\x65\x6c\x6f\x70\x65\x3e\x0d\x0a\x00\x3c\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\x30\x22\x3f\x3e\x0d\x0a\x3c\x73\x3a\x45\x6e\x76\x65\x6c\x6f\x70\x65\x20\x78\x6d\x6c\x6e\x73\x3a\x73\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x73\x63\x68\x65\x6d\x61\x73\x2e\x78\x6d\x6c\x73\x6f\x61\x70\x2e\x6f\x72\x67\x2f\x73\x6f\x61\x70\x2f\x65\x6e\x76\x65\x6c\x6f\x70\x65\x2f\x22\x20\x73\x3a\x65\x6e\x63\x6f\x64\x69\x6e\x67\x53\x74\x79\x6c\x65\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x73\x63\x68\x65\x6d\x61\x73\x2e\x78\x6d\x6c\x73\x6f\x61\x70\x2e\x6f\x72\x67\x2f\x73\x6f\x61\x70\x2f\x65\x6e\x63\x6f\x64\x69\x6e\x67\x2f\x22\x3e\x3c\x73\x3a\x42\x6f\x64\x79\x3e\x3c\x75\x3a\x25\x73\x20\x78\x6d\x6c\x6e\x73\x3a\x75\x3d\x22\x25\x73\x22\x3e\x00\x3e\x3c\x2f\x73\x3a\x42\x6f\x64\x79\x3e\x3c\x2f\x73\x3a\x45\x6e\x76\x65\x6c\x6f\x70\x65\x3e\x0d\x0a\x00\x31\x2e\x31\x00\x2f\x76\x61\x72\x2f\x72\x75\x6e\x2f\x6d\x69\x6e\x69\x73\x73\x64\x70\x64\x2e\x73\x6f\x63\x6b\x00\x72\x6f\x6f\x74\x64\x65\x76\x69\x63\x65\x00\x73\x6f\x63\x6b\x65\x74\x00\x73\x65\x74\x73\x6f\x63\x6b\x6f\x70\x74\x00\x62\x69\x6e\x64\x00\x5b\x46\x46\x30\x32\x3a\x3a\x43\x5d\x00\x5b\x46\x46\x30\x35\x3a\x3a\x43\x5d\x00\x32\x33\x39\x2e\x32\x35\x35\x2e\x32\x35\x35\x2e\x32\x35\x30\x00\x46\x46\x30\x32\x3a\x3a\x43\x00\x46\x46\x30\x35\x3a\x3a\x43\x00\x31\x39\x30\x30\x00\x67\x65\x74\x61\x64\x64\x72\x69\x6e\x66\x6f\x3a\x20\x25\x73\x0a\x00\x73\x65\x6e\x64\x74\x6f\x00\x75\x72\x6e\x3a\x73\x63\x68\x65\x6d\x61\x73\x2d\x75\x70\x6e\x70\x2d\x6f\x72\x67\x3a\x64\x65\x76\x69\x63\x65\x3a\x49\x6e\x74\x65\x72\x6e\x65\x74\x47\x61\x74\x65\x77\x61\x79\x44\x65\x76\x69\x63\x65\x3a\x31\x00\x75\x72\x6e\x3a\x73\x63\x68\x65\x6d\x61\x73\x2d\x75\x70\x6e\x70\x2d\x6f\x72\x67\x3a\x73\x65\x72\x76\x69\x63\x65\x3a\x57\x41\x4e\x49\x50\x43\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e\x3a\x31\x00\x75\x72\x6e\x3a\x73\x63\x68\x65\x6d\x61\x73\x2d\x75\x70\x6e\x70\x2d\x6f\x72\x67\x3a\x73\x65\x72\x76\x69\x63\x65\x3a\x57\x41\x4e\x50\x50\x50\x43\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e\x3a\x31\x00\x75\x70\x6e\x70\x3a\x72\x6f\x6f\x74\x64\x65\x76\x69\x63\x65\x00\x73\x73\x64\x70\x3a\x61\x6c\x6c\x00\x43\x6f\x6e\x6e\x65\x63\x74\x65\x64\x00\x75\x72\x6e\x3a\x73\x63\x68\x65\x6d\x61\x73\x2d\x75\x70\x6e\x70\x2d\x6f\x72\x67\x3a\x73\x65\x72\x76\x69\x63\x65\x3a\x57\x41\x4e\x43\x6f\x6d\x6d\x6f\x6e\x49\x6e\x74\x65\x72\x66\x61\x63\x65\x43\x6f\x6e\x66\x69\x67\x3a\x00\x68\x74\x74\x70\x3a\x2f\x2f\x5b\x66\x65\x38\x30\x3a\x00\x25\x32\x35\x00\x6c\x6f\x63\x61\x74\x69\x6f\x6e\x00\x73\x74\x00\x4e\x65\x77\x50\x6f\x72\x74\x4c\x69\x73\x74\x69\x6e\x67\x00\x47\x65\x74\x54\x6f\x74\x61\x6c\x42\x79\x74\x65\x73\x53\x65\x6e\x74\x00\x4e\x65\x77\x54\x6f\x74\x61\x6c\x42\x79\x74\x65\x73\x53\x65\x6e\x74\x00\x47\x65\x74\x54\x6f\x74\x61\x6c\x42\x79\x74\x65\x73\x52\x65\x63\x65\x69\x76\x65\x64\x00\x4e\x65\x77\x54\x6f\x74\x61\x6c\x42\x79\x74\x65\x73\x52\x65\x63\x65\x69\x76\x65\x64\x00\x47\x65\x74\x54\x6f\x74\x61\x6c\x50\x61\x63\x6b\x65\x74\x73\x53\x65\x6e\x74\x00\x4e\x65\x77\x54\x6f\x74\x61\x6c\x50\x61\x63\x6b\x65\x74\x73\x53\x65\x6e\x74\x00\x47\x65\x74\x54\x6f\x74\x61\x6c\x50\x61\x63\x6b\x65\x74\x73\x52\x65\x63\x65\x69\x76\x65\x64\x00\x4e\x65\x77\x54\x6f\x74\x61\x6c\x50\x61\x63\x6b\x65\x74\x73\x52\x65\x63\x65\x69\x76\x65\x64\x00\x47\x65\x74\x53\x74\x61\x74\x75\x73\x49\x6e\x66\x6f\x00\x4e\x65\x77\x55\x70\x74\x69\x6d\x65\x00\x4e\x65\x77\x43\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e\x53\x74\x61\x74\x75\x73\x00\x4e\x65\x77\x4c\x61\x73\x74\x43\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e\x45\x72\x72\x6f\x72\x00\x25\x75\x00\x65\x72\x72\x6f\x72\x43\x6f\x64\x65\x00\x47\x65\x74\x43\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e\x54\x79\x70\x65\x49\x6e\x66\x6f\x00\x4e\x65\x77\x43\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e\x54\x79\x70\x65\x00\x47\x65\x74\x43\x6f\x6d\x6d\x6f\x6e\x4c\x69\x6e\x6b\x50\x72\x6f\x70\x65\x72\x74\x69\x65\x73\x00\x4e\x65\x77\x4c\x61\x79\x65\x72\x31\x44\x6f\x77\x6e\x73\x74\x72\x65\x61\x6d\x4d\x61\x78\x42\x69\x74\x52\x61\x74\x65\x00\x4e\x65\x77\x4c\x61\x79\x65\x72\x31\x55\x70\x73\x74\x72\x65\x61\x6d\x4d\x61\x78\x42\x69\x74\x52\x61\x74\x65\x00\x47\x65\x74\x45\x78\x74\x65\x72\x6e\x61\x6c\x49\x50\x41\x64\x64\x72\x65\x73\x73\x00\x4e\x65\x77\x45\x78\x74\x65\x72\x6e\x61\x6c\x49\x50\x41\x64\x64\x72\x65\x73\x73\x00\x31\x00\x4e\x65\x77\x50\x6f\x72\x74\x4d\x61\x70\x70\x69\x6e\x67\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x00\x6c\x69\x62\x6d\x69\x6e\x69\x75\x70\x6e\x70\x63\x00\x4e\x65\x77\x4c\x65\x61\x73\x65\x44\x75\x72\x61\x74\x69\x6f\x6e\x00\x41\x64\x64\x50\x6f\x72\x74\x4d\x61\x70\x70\x69\x6e\x67\x00\x41\x64\x64\x41\x6e\x79\x50\x6f\x72\x74\x4d\x61\x70\x70\x69\x6e\x67\x00\x4e\x65\x77\x52\x65\x73\x65\x72\x76\x65\x64\x50\x6f\x72\x74\x00\x44\x65\x6c\x65\x74\x65\x50\x6f\x72\x74\x4d\x61\x70\x70\x69\x6e\x67\x00\x4e\x65\x77\x53\x74\x61\x72\x74\x50\x6f\x72\x74\x00\x4e\x65\x77\x45\x6e\x64\x50\x6f\x72\x74\x00\x4e\x65\x77\x4d\x61\x6e\x61\x67\x65\x00\x44\x65\x6c\x65\x74\x65\x50\x6f\x72\x74\x4d\x61\x70\x70\x69\x6e\x67\x52\x61\x6e\x67\x65\x00\x4e\x65\x77\x50\x6f\x72\x74\x4d\x61\x70\x70\x69\x6e\x67\x49\x6e\x64\x65\x78\x00\x47\x65\x74\x47\x65\x6e\x65\x72\x69\x63\x50\x6f\x72\x74\x4d\x61\x70\x70\x69\x6e\x67\x45\x6e\x74\x72\x79\x00\x47\x65\x74\x50\x6f\x72\x74\x4d\x61\x70\x70\x69\x6e\x67\x4e\x75\x6d\x62\x65\x72\x4f\x66\x45\x6e\x74\x72\x69\x65\x73\x00\x4e\x65\x77\x50\x6f\x72\x74\x4d\x61\x70\x70\x69\x6e\x67\x4e\x75\x6d\x62\x65\x72\x4f\x66\x45\x6e\x74\x72\x69\x65\x73\x00\x47\x65\x74\x53\x70\x65\x63\x69\x66\x69\x63\x50\x6f\x72\x74\x4d\x61\x70\x70\x69\x6e\x67\x45\x6e\x74\x72\x79\x00\x4e\x65\x77\x4e\x75\x6d\x62\x65\x72\x4f\x66\x50\x6f\x72\x74\x73\x00\x47\x65\x74\x4c\x69\x73\x74\x4f\x66\x50\x6f\x72\x74\x4d\x61\x70\x70\x69\x6e\x67\x73\x00\x47\x65\x74\x46\x69\x72\x65\x77\x61\x6c\x6c\x53\x74\x61\x74\x75\x73\x00\x46\x69\x72\x65\x77\x61\x6c\x6c\x45\x6e\x61\x62\x6c\x65\x64\x00\x49\x6e\x62\x6f\x75\x6e\x64\x50\x69\x6e\x68\x6f\x6c\x65\x41\x6c\x6c\x6f\x77\x65\x64\x00\x52\x65\x6d\x6f\x74\x65\x48\x6f\x73\x74\x00\x52\x65\x6d\x6f\x74\x65\x50\x6f\x72\x74\x00\x50\x72\x6f\x74\x6f\x63\x6f\x6c\x00\x49\x6e\x74\x65\x72\x6e\x61\x6c\x50\x6f\x72\x74\x00\x49\x6e\x74\x65\x72\x6e\x61\x6c\x43\x6c\x69\x65\x6e\x74\x00\x47\x65\x74\x4f\x75\x74\x62\x6f\x75\x6e\x64\x50\x69\x6e\x68\x6f\x6c\x65\x54\x69\x6d\x65\x6f\x75\x74\x00\x4f\x75\x74\x62\x6f\x75\x6e\x64\x50\x69\x6e\x68\x6f\x6c\x65\x54\x69\x6d\x65\x6f\x75\x74\x00\x65\x6d\x70\x74\x79\x00\x4c\x65\x61\x73\x65\x54\x69\x6d\x65\x00\x41\x64\x64\x50\x69\x6e\x68\x6f\x6c\x65\x00\x55\x6e\x69\x71\x75\x65\x49\x44\x00\x55\x70\x64\x61\x74\x65\x50\x69\x6e\x68\x6f\x6c\x65\x00\x44\x65\x6c\x65\x74\x65\x50\x69\x6e\x68\x6f\x6c\x65\x00\x43\x68\x65\x63\x6b\x50\x69\x6e\x68\x6f\x6c\x65\x57\x6f\x72\x6b\x69\x6e\x67\x00\x49\x73\x57\x6f\x72\x6b\x69\x6e\x67\x00\x47\x65\x74\x50\x69\x6e\x68\x6f\x6c\x65\x50\x61\x63\x6b\x65\x74\x73\x00\x50\x69\x6e\x68\x6f\x6c\x65\x50\x61\x63\x6b\x65\x74\x73\x00\x53\x75\x63\x63\x65\x73\x73\x00\x4d\x69\x6e\x69\x75\x70\x6e\x70\x63\x20\x55\x6e\x6b\x6e\x6f\x77\x6e\x20\x45\x72\x72\x6f\x72\x00\x4d\x69\x6e\x69\x75\x70\x6e\x70\x63\x20\x49\x6e\x76\x61\x6c\x69\x64\x20\x41\x72\x67\x75\x6d\x65\x6e\x74\x73\x00\x4d\x69\x6e\x69\x75\x70\x6e\x70\x63\x20\x49\x6e\x76\x61\x6c\x69\x64\x20\x72\x65\x73\x70\x6f\x6e\x73\x65\x00\x4d\x69\x6e\x69\x75\x70\x6e\x70\x63\x20\x53\x6f\x63\x6b\x65\x74\x20\x65\x72\x72\x6f\x72\x00\x4d\x69\x6e\x69\x75\x70\x6e\x70\x63\x20\x4d\x65\x6d\x6f\x72\x79\x20\x61\x6c\x6c\x6f\x63\x61\x74\x69\x6f\x6e\x20\x65\x72\x72\x6f\x72\x00\x49\x6e\x76\x61\x6c\x69\x64\x20\x41\x63\x74\x69\x6f\x6e\x00\x49\x6e\x76\x61\x6c\x69\x64\x20\x41\x72\x67\x73\x00\x41\x63\x74\x69\x6f\x6e\x20\x46\x61\x69\x6c\x65\x64\x00\x41\x63\x74\x69\x6f\x6e\x20\x6e\x6f\x74\x20\x61\x75\x74\x68\x6f\x72\x69\x7a\x65\x64\x00\x50\x69\x6e\x68\x6f\x6c\x65\x53\x70\x61\x63\x65\x45\x78\x68\x61\x75\x73\x74\x65\x64\x00\x46\x69\x72\x65\x77\x61\x6c\x6c\x44\x69\x73\x61\x62\x6c\x65\x64\x00\x49\x6e\x62\x6f\x75\x6e\x64\x50\x69\x6e\x68\x6f\x6c\x65\x4e\x6f\x74\x41\x6c\x6c\x6f\x77\x65\x64\x00\x4e\x6f\x53\x75\x63\x68\x45\x6e\x74\x72\x79\x00\x50\x72\x6f\x74\x6f\x63\x6f\x6c\x4e\x6f\x74\x53\x75\x70\x70\x6f\x72\x74\x65\x64\x00\x49\x6e\x74\x65\x72\x6e\x61\x6c\x50\x6f\x72\x74\x57\x69\x6c\x64\x63\x61\x72\x64\x69\x6e\x67\x4e\x6f\x74\x41\x6c\x6c\x6f\x77\x65\x64\x00\x50\x72\x6f\x74\x6f\x63\x6f\x6c\x57\x69\x6c\x64\x63\x61\x72\x64\x69\x6e\x67\x4e\x6f\x74\x41\x6c\x6c\x6f\x77\x65\x64\x00\x57\x69\x6c\x64\x63\x61\x72\x64\x4e\x6f\x74\x50\x65\x72\x6d\x69\x74\x74\x65\x64\x49\x6e\x53\x72\x63\x49\x50\x00\x4e\x6f\x50\x61\x63\x6b\x65\x74\x53\x65\x6e\x74\x00\x53\x70\x65\x63\x69\x66\x69\x65\x64\x41\x72\x72\x61\x79\x49\x6e\x64\x65\x78\x49\x6e\x76\x61\x6c\x69\x64\x00\x4e\x6f\x53\x75\x63\x68\x45\x6e\x74\x72\x79\x49\x6e\x41\x72\x72\x61\x79\x00\x57\x69\x6c\x64\x43\x61\x72\x64\x4e\x6f\x74\x50\x65\x72\x6d\x69\x74\x74\x65\x64\x49\x6e\x53\x72\x63\x49\x50\x00\x57\x69\x6c\x64\x43\x61\x72\x64\x4e\x6f\x74\x50\x65\x72\x6d\x69\x74\x74\x65\x64\x49\x6e\x45\x78\x74\x50\x6f\x72\x74\x00\x43\x6f\x6e\x66\x6c\x69\x63\x74\x49\x6e\x4d\x61\x70\x70\x69\x6e\x67\x45\x6e\x74\x72\x79\x00\x53\x61\x6d\x65\x50\x6f\x72\x74\x56\x61\x6c\x75\x65\x73\x52\x65\x71\x75\x69\x72\x65\x64\x00\x4f\x6e\x6c\x79\x50\x65\x72\x6d\x61\x6e\x65\x6e\x74\x4c\x65\x61\x73\x65\x73\x53\x75\x70\x70\x6f\x72\x74\x65\x64\x00\x52\x65\x6d\x6f\x74\x65\x48\x6f\x73\x74\x4f\x6e\x6c\x79\x53\x75\x70\x70\x6f\x72\x74\x73\x57\x69\x6c\x64\x63\x61\x72\x64\x00\x45\x78\x74\x65\x72\x6e\x61\x6c\x50\x6f\x72\x74\x4f\x6e\x6c\x79\x53\x75\x70\x70\x6f\x72\x74\x73\x57\x69\x6c\x64\x63\x61\x72\x64\x00\x55\x6e\x6b\x6e\x6f\x77\x6e\x45\x72\x72\x6f\x72\x00\x25\x68\x75\x00\x67\x65\x74\x61\x64\x64\x72\x69\x6e\x66\x6f\x28\x29\x20\x65\x72\x72\x6f\x72\x20\x3a\x20\x25\x73\x0a\x00\x67\x65\x74\x73\x6f\x63\x6b\x6f\x70\x74\x00\x63\x6f\x6e\x6e\x65\x63\x74\x00\x50\x6f\x72\x74\x4d\x61\x70\x70\x69\x6e\x67\x45\x6e\x74\x72\x79\x00\x4e\x65\x77\x52\x65\x6d\x6f\x74\x65\x48\x6f\x73\x74\x00\x4e\x65\x77\x45\x78\x74\x65\x72\x6e\x61\x6c\x50\x6f\x72\x74\x00\x4e\x65\x77\x50\x72\x6f\x74\x6f\x63\x6f\x6c\x00\x4e\x65\x77\x49\x6e\x74\x65\x72\x6e\x61\x6c\x50\x6f\x72\x74\x00\x4e\x65\x77\x49\x6e\x74\x65\x72\x6e\x61\x6c\x43\x6c\x69\x65\x6e\x74\x00\x4e\x65\x77\x45\x6e\x61\x62\x6c\x65\x64\x00\x4e\x65\x77\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x00\x4e\x65\x77\x4c\x65\x61\x73\x65\x54\x69\x6d\x65\x00\x70\x6f\x6c\x6c\x00\x72\x65\x63\x76\x00\x73\x6f\x63\x6b\x65\x74\x28\x75\x6e\x69\x78\x29\x00\x6d\x69\x6e\x69\x73\x73\x64\x70\x63\x2e\x63\x3a\x20\x77\x72\x69\x74\x65\x28\x29\x00\x6d\x69\x6e\x69\x73\x73\x64\x70\x63\x2e\x63\x3a\x20\x72\x65\x61\x64\x28\x29\x00\x00\x00\x54\x43\x50\x00\x55\x44\x50\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4d\x2d\x53\x45\x41\x52\x43\x48\x20\x2a\x20\x48\x54\x54\x50\x2f\x31\x2e\x31\x0d\x0a\x48\x4f\x53\x54\x3a\x20\x25\x73\x3a\x31\x39\x30\x30\x0d\x0a\x53\x54\x3a\x20\x25\x73\x0d\x0a\x4d\x41\x4e\x3a\x20\x22\x73\x73\x64\x70\x3a\x64\x69\x73\x63\x6f\x76\x65\x72\x22\x0d\x0a\x4d\x58\x3a\x20\x25\x75\x0d\x0a\x0d\x0a\x00\x00\x00\x00\x01\x00\x00\x00\x1c\x00\x00\x00\x06\x00\x00\x00\x34\x00\x00\x00\x00\x00\x00\x00\x34\x00\x00\x00\x02\x00\x00\x00\xd1\x58\x05\x01\x00\x00\x00\x01\x11\x0b\x04\x01\x01\x00\x01\x01\x21\x00\x02\x01\x61\x01\x03\x01\x20\x09\x00\x00\x4c\x00\x00\x00\x4c\x00\x00\x00\xa9\x8b\x00\x00\x00\x00\x00\x00\x4c\x00\x00\x00\x03\x00\x00\x00\x0c\x00\x2a\x00\xb4\x00\x00\x00\x00\x00\x00\x01\xa0\x00\x00\x00\x70\x18\x00\x02\x00\x1b\x00\x00\x40\x29\x00\x04\xe0\x29\x00\x00\xb0\x2b\x00\x02\x70\x2c\x00\x00\x60\x31\x00\x05\xc0\x32\x00\x02\xa0\x33\x00\x00\x10\x35\x00\x01\x60\x35\x00\x00\x10\x38\x00\x01\x30\x38\x00\x00\xb0\x40\x00\x01\x30\x41\x00\x03\xb0\x41\x00\x00\x80\x44\x00\x03\xf0\x44\x00\x04\x60\x45\x00\x00\xc0\x4c\x00\x01\x30\x4d\x00\x04\x80\x4d\x00\x02\xb0\x4e\x00\x03\x00\x4f\x00\x05\x50\x4f\x00\x02\x90\x52\x00\x00\x80\x54\x00\x02\xc0\x55\x00\x00\x50\x57\x00\x02\xa0\x58\x00\x00\x20\x63\x00\x02\x60\x64\x00\x00\xf0\x73\x00\x01\x10\x76\x00\x00\x90\x7a\x00\x01\xf0\x7a\x00\x00\x80\x7b\x00\x01\x90\x7b\x00\x05\x30\x7d\x00\x03\x60\x7d\x00\x00\x14\x00\x00\x00\x00\x00\x00\x00\x01\x7a\x52\x00\x01\x78\x10\x01\x10\x0c\x07\x08\x90\x01\x00\x00\x14\x00\x00\x00\x00\x00\x00\x00\x01\x7a\x52\x00\x01\x78\x10\x01\x10\x0c\x07\x08\x90\x01\x00\x00\x14\x00\x00\x00\x00\x00\x00\x00\x01\x7a\x52\x00\x01\x78\x10\x01\x10\x0c\x07\x08\x90\x01\x00\x00\x14\x00\x00\x00\x00\x00\x00\x00\x01\x7a\x52\x00\x01\x78\x10\x01\x10\x0c\x07\x08\x90\x01\x00\x00\x14\x00\x00\x00\x00\x00\x00\x00\x01\x7a\x52\x00\x01\x78\x10\x01\x10\x0c\x07\x08\x90\x01\x00\x00\x14\x00\x00\x00\x00\x00\x00\x00\x01\x7a\x52\x00\x01\x78\x10\x01\x10\x0c\x07\x08\x90\x01\x00\x00\x14\x00\x00\x00\x00\x00\x00\x00\x01\x7a\x52\x00\x01\x78\x10\x01\x10\x0c\x07\x08\x90\x01\x00\x00\x14\x00\x00\x00\x00\x00\x00\x00\x01\x7a\x52\x00\x01\x78\x10\x01\x10\x0c\x07\x08\x90\x01\x00\x00\x14\x00\x00\x00\x00\x00\x00\x00\x01\x7a\x52\x00\x01\x78\x10\x01\x10\x0c\x07\x08\x90\x01\x00\x00\x14\x00\x00\x00\x00\x00\x00\x00\x01\x7a\x52\x00\x01\x78\x10\x01\x10\x0c\x07\x08\x90\x01\x00\x00\x14\x00\x00\x00\x00\x00\x00\x00\x01\x7a\x52\x00\x01\x78\x10\x01\x10\x0c\x07\x08\x90\x01\x00\x00\x14\x00\x00\x00\x00\x00\x00\x00\x01\x7a\x52\x00\x01\x78\x10\x01\x10\x0c\x07\x08\x90\x01\x00\x00\x14\x00\x00\x00\x00\x00\x00\x00\x01\x7a\x52\x00\x01\x78\x10\x01\x10\x0c\x07\x08\x90\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0\x8c\x00\x00\x01\x00\x00\x00\xfa\x8c\x00\x00\x01\x00\x00\x00\x04\x8d\x00\x00\x01\x00\x00\x00\x0e\x8d\x00\x00\x01\x00\x00\x00\x18\x8d\x00\x00\x01\x00\x00\x00\x22\x8d\x00\x00\x01\x00\x00\x00\x2c\x8d\x00\x00\x01\x00\x00\x00\x36\x8d\x00\x00\x01\x00\x00\x00\x40\x8d\x00\x00\x01\x00\x00\x00\x4a\x8d\x00\x00\x01\x00\x00\x00\x54\x8d\x00\x00\x01\x00\x00\x00\x5e\x8d\x00\x00\x01\x00\x00\x00\x68\x8d\x00\x00\x01\x00\x00\x00\x72\x8d\x00\x00\x01\x00\x00\x00\x7c\x8d\x00\x00\x01\x00\x00\x00\x86\x8d\x00\x00\x01\x00\x00\x00\x90\x8d\x00\x00\x01\x00\x00\x00\x9a\x8d\x00\x00\x01\x00\x00\x00\xa4\x8d\x00\x00\x01\x00\x00\x00\xae\x8d\x00\x00\x01\x00\x00\x00\xb8\x8d\x00\x00\x01\x00\x00\x00\xc2\x8d\x00\x00\x01\x00\x00\x00\xcc\x8d\x00\x00\x01\x00\x00\x00\xd6\x8d\x00\x00\x01\x00\x00\x00\xe0\x8d\x00\x00\x01\x00\x00\x00\xea\x8d\x00\x00\x01\x00\x00\x00\xf4\x8d\x00\x00\x01\x00\x00\x00\xfe\x8d\x00\x00\x01\x00\x00\x00\x08\x8e\x00\x00\x01\x00\x00\x00\x12\x8e\x00\x00\x01\x00\x00\x00\x1c\x8e\x00\x00\x01\x00\x00\x00\x26\x8e\x00\x00\x01\x00\x00\x00\x30\x8e\x00\x00\x01\x00\x00\x00\x3a\x8e\x00\x00\x01\x00\x00\x00\x44\x8e\x00\x00\x01\x00\x00\x00\x4e\x8e\x00\x00\x01\x00\x00\x00\x58\x8e\x00\x00\x01\x00\x00\x00\x62\x8e\x00\x00\x01\x00\x00\x00\x6c\x8e\x00\x00\x01\x00\x00\x00\x76\x8e\x00\x00\x01\x00\x00\x00\x80\x8e\x00\x00\x01\x00\x00\x00\x8a\x8e\x00\x00\x01\x00\x00\x00\x94\x8e\x00\x00\x01\x00\x00\x00\x9e\x8e\x00\x00\x01\x00\x00\x00\xa8\x8e\x00\x00\x01\x00\x00\x00\xb2\x8e\x00\x00\x01\x00\x00\x00\xbc\x8e\x00\x00\x01\x00\x00\x00\xc6\x8e\x00\x00\x01\x00\x00\x00\xd0\x8e\x00\x00\x01\x00\x00\x00\xda\x8e\x00\x00\x01\x00\x00\x00\xe4\x8e\x00\x00\x01\x00\x00\x00\xee\x8e\x00\x00\x01\x00\x00\x00\x92\xa4\x00\x00\x01\x00\x00\x00\xc6\xa4\x00\x00\x01\x00\x00\x00\xf5\xa4\x00\x00\x01\x00\x00\x00\x25\xa5\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x35\xa5\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x9a\xac\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\xab\xac\x00\x00\x01\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\xb9\xac\x00\x00\x01\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\xc9\xac\x00\x00\x01\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\xd5\xac\x00\x00\x01\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\xe5\xac\x00\x00\x01\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\xf7\xac\x00\x00\x01\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x02\xad\x00\x00\x01\x00\x00\x00\x09\x00\x00\x00\x00\x00\x00\x00\x11\xad\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11\x22\x30\x60\x38\x42\x70\x10\x80\x08\x08\x51\x00\x00\x00\x00\x11\x40\x5f\x5f\x44\x65\x66\x61\x75\x6c\x74\x52\x75\x6e\x65\x4c\x6f\x63\x61\x6c\x65\x00\x51\x72\x10\x90\x40\x5f\x5f\x5f\x73\x74\x61\x63\x6b\x5f\x63\x68\x6b\x5f\x67\x75\x61\x72\x64\x00\x90\x40\x5f\x5f\x5f\x73\x74\x64\x65\x72\x72\x70\x00\x90\x40\x5f\x69\x6e\x36\x61\x64\x64\x72\x5f\x61\x6e\x79\x00\x90\x40\x64\x79\x6c\x64\x5f\x73\x74\x75\x62\x5f\x62\x69\x6e\x64\x65\x72\x00\x80\xd0\xff\xff\xff\xff\xff\xff\xff\xff\x01\x90\x00\x00\x00\x00\x00\x00\x00\x72\x30\x11\x40\x5f\x5f\x5f\x62\x7a\x65\x72\x6f\x00\x90\x00\x72\x38\x11\x40\x5f\x5f\x5f\x65\x72\x72\x6f\x72\x00\x90\x00\x72\x40\x11\x40\x5f\x5f\x5f\x6d\x65\x6d\x63\x70\x79\x5f\x63\x68\x6b\x00\x90\x00\x72\x48\x11\x40\x5f\x5f\x5f\x73\x6e\x70\x72\x69\x6e\x74\x66\x5f\x63\x68\x6b\x00\x90\x00\x72\x50\x11\x40\x5f\x5f\x5f\x73\x74\x61\x63\x6b\x5f\x63\x68\x6b\x5f\x66\x61\x69\x6c\x00\x90\x00\x72\x58\x11\x40\x5f\x61\x74\x6f\x69\x00\x90\x00\x72\x60\x11\x40\x5f\x62\x69\x6e\x64\x00\x90\x00\x72\x68\x11\x40\x5f\x63\x61\x6c\x6c\x6f\x63\x00\x90\x00\x72\x70\x11\x40\x5f\x63\x6c\x6f\x73\x65\x00\x90\x00\x72\x78\x11\x40\x5f\x63\x6f\x6e\x6e\x65\x63\x74\x00\x90\x00\x72\x80\x01\x11\x40\x5f\x63\x74\x69\x6d\x65\x00\x90\x00\x72\x88\x01\x11\x40\x5f\x66\x70\x72\x69\x6e\x74\x66\x00\x90\x00\x72\x90\x01\x11\x40\x5f\x66\x72\x65\x65\x00\x90\x00\x72\x98\x01\x11\x40\x5f\x66\x72\x65\x65\x61\x64\x64\x72\x69\x6e\x66\x6f\x00\x90\x00\x72\xa0\x01\x11\x40\x5f\x66\x77\x72\x69\x74\x65\x00\x90\x00\x72\xa8\x01\x11\x40\x5f\x67\x61\x69\x5f\x73\x74\x72\x65\x72\x72\x6f\x72\x00\x90\x00\x72\xb0\x01\x11\x40\x5f\x67\x65\x74\x61\x64\x64\x72\x69\x6e\x66\x6f\x00\x90\x00\x72\xb8\x01\x11\x40\x5f\x67\x65\x74\x6e\x61\x6d\x65\x69\x6e\x66\x6f\x00\x90\x00\x72\xc0\x01\x11\x40\x5f\x67\x65\x74\x73\x6f\x63\x6b\x6e\x61\x6d\x65\x00\x90\x00\x72\xc8\x01\x11\x40\x5f\x67\x65\x74\x73\x6f\x63\x6b\x6f\x70\x74\x00\x90\x00\x72\xd0\x01\x11\x40\x5f\x69\x66\x5f\x69\x6e\x64\x65\x78\x74\x6f\x6e\x61\x6d\x65\x00\x90\x00\x72\xd8\x01\x11\x40\x5f\x69\x66\x5f\x6e\x61\x6d\x65\x74\x6f\x69\x6e\x64\x65\x78\x00\x90\x00\x72\xe0\x01\x11\x40\x5f\x69\x6e\x65\x74\x5f\x61\x64\x64\x72\x00\x90\x00\x72\xe8\x01\x11\x40\x5f\x6d\x61\x6c\x6c\x6f\x63\x00\x90\x00\x72\xf0\x01\x11\x40\x5f\x6d\x65\x6d\x63\x6d\x70\x00\x90\x00\x72\xf8\x01\x11\x40\x5f\x6d\x65\x6d\x63\x70\x79\x00\x90\x00\x72\x80\x02\x11\x40\x5f\x6d\x65\x6d\x6d\x6f\x76\x65\x00\x90\x00\x72\x88\x02\x11\x40\x5f\x70\x65\x72\x72\x6f\x72\x00\x90\x00\x72\x90\x02\x11\x40\x5f\x70\x6f\x6c\x6c\x00\x90\x00\x72\x98\x02\x11\x40\x5f\x70\x72\x69\x6e\x74\x66\x00\x90\x00\x72\xa0\x02\x11\x40\x5f\x70\x75\x74\x63\x68\x61\x72\x00\x90\x00\x72\xa8\x02\x11\x40\x5f\x70\x75\x74\x73\x00\x90\x00\x72\xb0\x02\x11\x40\x5f\x72\x65\x61\x64\x00\x90\x00\x72\xb8\x02\x11\x40\x5f\x72\x65\x61\x6c\x6c\x6f\x63\x00\x90\x00\x72\xc0\x02\x11\x40\x5f\x72\x65\x63\x76\x66\x72\x6f\x6d\x00\x90\x00\x72\xc8\x02\x11\x40\x5f\x73\x65\x6c\x65\x63\x74\x24\x44\x41\x52\x57\x49\x4e\x5f\x45\x58\x54\x53\x4e\x00\x90\x00\x72\xd0\x02\x11\x40\x5f\x73\x65\x6e\x64\x00\x90\x00\x72\xd8\x02\x11\x40\x5f\x73\x65\x6e\x64\x74\x6f\x00\x90\x00\x72\xe0\x02\x11\x40\x5f\x73\x65\x74\x73\x6f\x63\x6b\x6f\x70\x74\x00\x90\x00\x72\xe8\x02\x11\x40\x5f\x73\x6f\x63\x6b\x65\x74\x00\x90\x00\x72\xf0\x02\x11\x40\x5f\x73\x73\x63\x61\x6e\x66\x00\x90\x00\x72\xf8\x02\x11\x40\x5f\x73\x74\x72\x63\x68\x72\x00\x90\x00\x72\x80\x03\x11\x40\x5f\x73\x74\x72\x63\x6d\x70\x00\x90\x00\x72\x88\x03\x11\x40\x5f\x73\x74\x72\x64\x75\x70\x00\x90\x00\x72\x90\x03\x11\x40\x5f\x73\x74\x72\x6c\x65\x6e\x00\x90\x00\x72\x98\x03\x11\x40\x5f\x73\x74\x72\x6e\x63\x61\x73\x65\x63\x6d\x70\x00\x90\x00\x72\xa0\x03\x11\x40\x5f\x73\x74\x72\x6e\x63\x6d\x70\x00\x90\x00\x72\xa8\x03\x11\x40\x5f\x73\x74\x72\x6e\x63\x70\x79\x00\x90\x00\x72\xb0\x03\x11\x40\x5f\x73\x74\x72\x73\x74\x72\x00\x90\x00\x72\xb8\x03\x11\x40\x5f\x73\x74\x72\x74\x6f\x75\x6c\x00\x90\x00\x72\xc0\x03\x11\x40\x5f\x74\x69\x6d\x65\x00\x90\x00\x72\xc8\x03\x11\x40\x5f\x77\x72\x69\x74\x65\x00\x90\x00\x00\x00\x00\x00\x00\x00\x01\x5f\x00\x05\x00\x0f\x5f\x6d\x68\x5f\x65\x78\x65\x63\x75\x74\x65\x5f\x68\x65\x61\x64\x65\x72\x00\xa6\x01\x70\x00\xaa\x01\x6d\x00\xc2\x01\x67\x65\x74\x00\xd9\x01\x49\x47\x44\x00\xbe\x02\x73\x00\xea\x02\x75\x70\x6e\x70\x44\x69\x73\x63\x6f\x76\x65\x72\x00\xbb\x03\x66\x72\x65\x65\x55\x50\x4e\x50\x44\x65\x76\x6c\x69\x73\x74\x00\xf0\x03\x47\x65\x74\x00\xf6\x03\x46\x72\x65\x65\x00\xa2\x04\x55\x50\x4e\x50\x00\xc3\x04\x50\x61\x72\x73\x65\x00\xc7\x06\x43\x6c\x65\x61\x72\x4e\x61\x6d\x65\x56\x61\x6c\x75\x65\x4c\x69\x73\x74\x00\xe9\x06\x63\x6f\x6e\x6e\x65\x63\x74\x68\x6f\x73\x74\x70\x6f\x72\x74\x00\x90\x0a\x72\x65\x63\x65\x69\x76\x65\x64\x61\x74\x61\x00\xa2\x0a\x02\x00\x00\x00\x00\x02\x72\x6f\x74\x6f\x66\x69\x78\x00\xbd\x01\x61\x72\x73\x65\x00\x86\x02\x03\x00\xa0\x12\x00\x00\x02\x61\x69\x6e\x00\xd4\x01\x69\x6e\x69\x77\x67\x65\x74\x00\xa4\x02\x03\x00\xc0\x13\x00\x00\x02\x48\x54\x54\x50\x52\x65\x73\x70\x6f\x6e\x73\x65\x00\x81\x02\x44\x65\x76\x69\x63\x65\x73\x46\x72\x6f\x6d\x4d\x69\x6e\x69\x53\x53\x44\x50\x44\x00\xa8\x0a\x03\x00\xd0\x4e\x00\x00\x03\x55\x52\x4c\x00\x9f\x02\x78\x6d\x6c\x00\xb9\x02\x72\x6f\x6f\x74\x64\x65\x73\x63\x00\xa2\x03\x03\x00\xc0\x5e\x00\x03\x00\xe0\x64\x01\x5f\x67\x65\x74\x61\x64\x64\x72\x00\xb4\x02\x03\x00\xd0\x69\x00\x03\x00\x90\x6b\x00\x00\x03\x73\x74\x61\x72\x74\x65\x6c\x74\x00\xdb\x02\x65\x6e\x64\x65\x6c\x74\x00\xe0\x02\x64\x61\x74\x61\x00\xe5\x02\x03\x00\x80\x75\x00\x03\x00\xf0\x75\x00\x03\x00\xe0\x77\x00\x00\x03\x6f\x61\x70\x50\x6f\x73\x74\x53\x75\x62\x6d\x69\x74\x00\x9d\x03\x69\x6d\x70\x6c\x65\x55\x50\x6e\x50\x63\x6f\x6d\x6d\x61\x6e\x64\x00\xa7\x03\x74\x72\x75\x70\x6e\x70\x65\x72\x72\x6f\x72\x00\x8a\x0a\x03\x00\xc0\x79\x00\x03\x00\xb0\x7c\x00\x00\x02\x32\x00\xb0\x03\x00\xb5\x03\x03\x00\x80\x7d\x00\x04\x00\xb0\x82\x01\x00\x00\x02\x44\x65\x76\x69\x63\x65\x00\xc9\x03\x00\xd8\x03\x00\x02\x73\x00\xd2\x03\x00\xea\x03\x04\x00\xd0\x82\x01\x00\x04\x00\xd0\x93\x01\x01\x41\x6c\x6c\x00\xe4\x03\x04\x00\x90\x94\x01\x00\x04\x00\xd0\x94\x01\x00\x04\x00\xa0\x95\x01\x00\x00\x02\x55\x50\x4e\x50\x55\x72\x6c\x73\x00\x9c\x04\x56\x61\x6c\x75\x65\x46\x72\x6f\x6d\x4e\x61\x6d\x65\x56\x61\x6c\x75\x65\x4c\x69\x73\x74\x00\xef\x06\x04\x00\xd0\x95\x01\x00\x00\x02\x55\x50\x4e\x50\x55\x72\x6c\x73\x00\xbd\x04\x50\x6f\x72\x74\x4c\x69\x73\x74\x69\x6e\x67\x00\x9c\x0a\x04\x00\xa0\x9b\x01\x00\x00\x02\x49\x47\x44\x5f\x49\x73\x43\x6f\x6e\x6e\x65\x63\x74\x65\x64\x00\xdb\x04\x5f\x00\xe1\x04\x04\x00\x90\x9c\x01\x00\x00\x05\x47\x65\x74\x00\x9f\x05\x41\x64\x64\x00\xb3\x08\x44\x65\x6c\x65\x74\x65\x50\x00\xee\x08\x55\x70\x64\x61\x74\x65\x50\x69\x6e\x68\x6f\x6c\x65\x00\xf2\x09\x43\x68\x65\x63\x6b\x50\x69\x6e\x68\x6f\x6c\x65\x57\x6f\x72\x6b\x69\x6e\x67\x00\xfe\x09\x00\x0b\x56\x61\x6c\x69\x64\x49\x47\x44\x00\xbb\x06\x49\x47\x44\x46\x72\x6f\x6d\x55\x72\x6c\x00\xc1\x06\x54\x6f\x74\x61\x6c\x00\xf5\x06\x53\x00\xc9\x07\x43\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e\x54\x79\x70\x65\x49\x6e\x66\x6f\x00\xf7\x07\x4c\x69\x00\xfd\x07\x45\x78\x74\x65\x72\x6e\x61\x6c\x49\x50\x41\x64\x64\x72\x65\x73\x73\x00\xad\x08\x47\x65\x6e\x65\x72\x69\x63\x50\x6f\x72\x74\x4d\x61\x70\x70\x69\x6e\x67\x45\x6e\x74\x72\x79\x00\x9a\x09\x50\x00\xa0\x09\x46\x69\x72\x65\x77\x61\x6c\x6c\x53\x74\x61\x74\x75\x73\x00\xe0\x09\x4f\x75\x74\x62\x6f\x75\x6e\x64\x50\x69\x6e\x68\x6f\x6c\x65\x54\x69\x6d\x65\x6f\x75\x74\x00\xe6\x09\x04\x00\x80\x9d\x01\x00\x04\x00\x80\xa9\x01\x00\x00\x02\x4e\x61\x6d\x65\x56\x61\x6c\x75\x65\x00\xe3\x06\x50\x6f\x72\x74\x4c\x69\x73\x74\x69\x6e\x67\x00\x96\x0a\x04\x00\xe0\xab\x01\x00\x04\x00\xd0\xaf\x01\x00\x04\x00\xa0\xb0\x01\x00\x00\x02\x42\x79\x74\x65\x73\x00\x89\x07\x50\x61\x63\x6b\x65\x74\x73\x00\xa9\x07\x00\x02\x53\x65\x6e\x74\x00\x9d\x07\x52\x65\x63\x65\x69\x76\x65\x64\x00\xa3\x07\x04\x00\xf0\xb0\x01\x00\x04\x00\xc0\xb2\x01\x00\x00\x02\x53\x65\x6e\x74\x00\xbd\x07\x52\x65\x63\x65\x69\x76\x65\x64\x00\xc3\x07\x04\x00\x90\xb4\x01\x00\x04\x00\xe0\xb5\x01\x00\x00\x02\x74\x61\x74\x75\x73\x49\x6e\x66\x6f\x00\xf1\x07\x70\x65\x63\x69\x66\x69\x63\x50\x6f\x72\x74\x4d\x61\x70\x70\x69\x6e\x67\x45\x6e\x74\x72\x79\x00\xd4\x09\x04\x00\xb0\xb7\x01\x00\x04\x00\xa0\xbb\x01\x00\x00\x02\x6e\x6b\x4c\x61\x79\x65\x72\x4d\x61\x78\x42\x69\x74\x52\x61\x74\x65\x73\x00\xa7\x08\x73\x74\x4f\x66\x50\x6f\x72\x74\x4d\x61\x70\x70\x69\x6e\x67\x73\x00\xda\x09\x04\x00\xe0\xbd\x01\x00\x04\x00\xf0\xc0\x01\x00\x00\x02\x50\x00\xca\x08\x41\x6e\x79\x50\x6f\x72\x74\x4d\x61\x70\x70\x69\x6e\x67\x00\xe8\x08\x00\x02\x6f\x72\x74\x4d\x61\x70\x70\x69\x6e\x67\x00\xe2\x08\x69\x6e\x68\x6f\x6c\x65\x00\xec\x09\x04\x00\xc0\xc3\x01\x00\x04\x00\xd0\xc7\x01\x00\x00\x02\x6f\x72\x74\x4d\x61\x70\x70\x69\x6e\x67\x00\x86\x09\x69\x6e\x68\x6f\x6c\x65\x00\xf8\x09\x04\x00\xa0\xcc\x01\x01\x52\x61\x6e\x67\x65\x00\x94\x09\x04\x00\x90\xcf\x01\x00\x04\x00\xb0\xd2\x01\x00\x00\x02\x6f\x72\x74\x4d\x61\x70\x70\x69\x6e\x67\x4e\x75\x6d\x62\x65\x72\x4f\x66\x45\x6e\x74\x72\x69\x65\x73\x00\xce\x09\x69\x6e\x68\x6f\x6c\x65\x50\x61\x63\x6b\x65\x74\x73\x00\x84\x0a\x04\x00\xc0\xd8\x01\x00\x04\x00\x80\xdb\x01\x00\x04\x00\xb0\xe0\x01\x00\x04\x00\x80\xe4\x01\x00\x04\x00\xf0\xe6\x01\x00\x04\x00\xd0\xea\x01\x00\x04\x00\xa0\xef\x01\x00\x04\x00\xf0\xf1\x01\x00\x04\x00\xa0\xf4\x01\x00\x04\x00\xa0\xf7\x01\x00\x04\x00\x90\xfa\x01\x00\x04\x00\xb0\xfe\x01\x00\x04\x00\xb0\x87\x02\x00\x04\x00\xd0\x8c\x02\x00\x04\x00\x80\x8d\x02\x00\x04\x00\xc0\x8f\x02\x00\x00\x00\xa0\x12\xa0\x01\xd0\x2f\x90\x05\xb0\x06\xf0\x0f\xa0\x06\xa0\x01\xd0\x03\xc0\x01\xf0\x09\x70\xf0\x01\xe0\x01\xf0\x02\x50\xb0\x05\x20\x80\x11\x40\x40\x50\x30\xb0\x01\xa0\x04\x70\x70\x80\x0c\xe0\x02\x70\x50\xc0\x01\x70\x50\x50\xd0\x01\xd0\x01\xd0\x01\xd0\x01\xf0\x03\xc0\x02\x90\x03\xd0\x02\x90\x04\xd0\x04\xf0\x02\xa0\x03\x90\x06\xc0\x02\xb0\x05\xd0\x03\xf0\x02\xe0\x03\xd0\x04\xd0\x02\xb0\x02\x80\x03\xf0\x02\xa0\x04\x80\x09\x60\x90\x01\x10\xa0\x03\x30\xc0\x02\x00\x00\x00\x00\x00\xfa\xde\x0c\x05\x00\x00\x00\x3c\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x14\xfa\xde\x0c\x00\x00\x00\x00\x28\x00\x00\x00\x01\x00\x00\x00\x06\x00\x00\x00\x02\x00\x00\x00\x0b\x6c\x69\x62\x53\x79\x73\x74\x65\x6d\x2e\x42\x00\x00\x00\x00\x03\x00\x00\x00\x00\x02\x00\x00\x00\x0e\x01\x00\x00\x90\x21\x00\x00\x01\x00\x00\x00\x10\x00\x00\x00\x0e\x01\x00\x00\x20\x24\x00\x00\x01\x00\x00\x00\x24\x00\x00\x00\x0e\x01\x00\x00\x00\x33\x00\x00\x01\x00\x00\x00\x2f\x00\x00\x00\x0e\x01\x00\x00\x80\x4b\x00\x00\x01\x00\x00\x00\x43\x00\x00\x00\x0e\x01\x00\x00\x50\x56\x00\x00\x01\x00\x00\x00\x5c\x00\x00\x00\x0e\x01\x00\x00\xa0\x56\x00\x00\x01\x00\x00\x00\x73\x00\x00\x00\x0e\x01\x00\x00\x60\x57\x00\x00\x01\x00\x00\x00\x8b\x00\x00\x00\x0e\x01\x00\x00\x10\x84\x00\x00\x01\x00\x00\x00\x95\x00\x00\x00\x0e\x01\x00\x00\xa0\x84\x00\x00\x01\x00\x00\x00\x9d\x00\x00\x00\x0e\x01\x00\x00\xb0\x84\x00\x00\x01\x00\x00\x00\xa3\x00\x00\x00\x0e\x05\x00\x00\x70\xad\x00\x00\x01\x00\x00\x00\xc6\x00\x00\x00\x0e\x0b\x00\x00\xd0\xb1\x00\x00\x01\x00\x00\x00\xdf\x00\x00\x00\x0e\x0b\x00\x00\x00\xb2\x00\x00\x01\x00\x00\x00\xfb\x00\x00\x00\x0e\x0b\x00\x00\x10\xb2\x00\x00\x01\x00\x00\x00\x05\x01\x00\x00\x0f\x01\x00\x00\xd0\x57\x00\x00\x01\x00\x00\x00\x19\x01\x00\x00\x0f\x01\x00\x00\x50\x86\x00\x00\x01\x00\x00\x00\x2a\x01\x00\x00\x0f\x01\x00\x00\xa0\x4d\x00\x00\x01\x00\x00\x00\x38\x01\x00\x00\x0f\x01\x00\x00\xd0\x4a\x00\x00\x01\x00\x00\x00\x45\x01\x00\x00\x0f\x01\x00\x00\x20\x58\x00\x00\x01\x00\x00\x00\x60\x01\x00\x00\x0f\x01\x00\x00\xe0\x3b\x00\x00\x01\x00\x00\x00\x69\x01\x00\x00\x0f\x01\x00\x00\xf0\x3a\x00\x00\x01\x00\x00\x00\x74\x01\x00\x00\x0f\x01\x00\x00\x80\x3a\x00\x00\x01\x00\x00\x00\x81\x01\x00\x00\x0f\x01\x00\x00\xe0\x55\x00\x00\x01\x00\x00\x00\x91\x01\x00\x00\x0f\x01\x00\x00\xb0\x83\x00\x00\x01\x00\x00\x00\xa3\x01\x00\x00\x0f\x01\x00\x00\x10\x4e\x00\x00\x01\x00\x00\x00\xb8\x01\x00\x00\x0f\x01\x00\x00\xd0\x63\x00\x00\x01\x00\x00\x00\xd0\x01\x00\x00\x0f\x01\x00\x00\x50\x75\x00\x00\x01\x00\x00\x00\xe1\x01\x00\x00\x0f\x01\x00\x00\xc0\x61\x00\x00\x01\x00\x00\x00\xf6\x01\x00\x00\x0f\x01\x00\x00\x20\x7a\x00\x00\x01\x00\x00\x00\x10\x02\x00\x00\x0f\x01\x00\x00\xf0\x78\x00\x00\x01\x00\x00\x00\x24\x02\x00\x00\x0f\x01\x00\x00\x20\x66\x00\x00\x01\x00\x00\x00\x3c\x02\x00\x00\x0f\x01\x00\x00\x90\x67\x00\x00\x01\x00\x00\x00\x59\x02\x00\x00\x0f\x01\x00\x00\xa0\x5d\x00\x00\x01\x00\x00\x00\x75\x02\x00\x00\x0f\x01\x00\x00\x70\x60\x00\x00\x01\x00\x00\x00\x90\x02\x00\x00\x0f\x01\x00\x00\x00\x72\x00\x00\x01\x00\x00\x00\xa8\x02\x00\x00\x0f\x01\x00\x00\x30\x69\x00\x00\x01\x00\x00\x00\xc9\x02\x00\x00\x0f\x01\x00\x00\x80\x54\x00\x00\x01\x00\x00\x00\xdd\x02\x00\x00\x0f\x01\x00\x00\xe0\x5e\x00\x00\x01\x00\x00\x00\xfb\x02\x00\x00\x0f\x01\x00\x00\x30\x70\x00\x00\x01\x00\x00\x00\x17\x03\x00\x00\x0f\x01\x00\x00\x70\x73\x00\x00\x01\x00\x00\x00\x37\x03\x00\x00\x0f\x01\x00\x00\xa0\x7b\x00\x00\x01\x00\x00\x00\x4f\x03\x00\x00\x0f\x01\x00\x00\x40\x6c\x00\x00\x01\x00\x00\x00\x73\x03\x00\x00\x0f\x01\x00\x00\x80\x6d\x00\x00\x01\x00\x00\x00\x95\x03\x00\x00\x0f\x01\x00\x00\xb0\x5b\x00\x00\x01\x00\x00\x00\xa9\x03\x00\x00\x0f\x01\x00\x00\x40\x59\x00\x00\x01\x00\x00\x00\xc5\x03\x00\x00\x0f\x01\x00\x00\x70\x58\x00\x00\x01\x00\x00\x00\xdd\x03\x00\x00\x0f\x01\x00\x00\xe0\x5a\x00\x00\x01\x00\x00\x00\xfb\x03\x00\x00\x0f\x01\x00\x00\x10\x5a\x00\x00\x01\x00\x00\x00\x15\x04\x00\x00\x0f\x01\x00\x00\x80\x4e\x00\x00\x01\x00\x00\x00\x27\x04\x00\x00\x0f\x01\x00\x00\xa0\x77\x00\x00\x01\x00\x00\x00\x3b\x04\x00\x00\x0f\x01\x10\x00\x00\x00\x00\x00\x01\x00\x00\x00\x4f\x04\x00\x00\x0f\x01\x00\x00\x30\x7f\x00\x00\x01\x00\x00\x00\x60\x04\x00\x00\x0f\x01\x00\x00\xa0\x4a\x00\x00\x01\x00\x00\x00\x71\x04\x00\x00\x0f\x01\x00\x00\xc0\x87\x00\x00\x01\x00\x00\x00\x8a\x04\x00\x00\x0f\x01\x00\x00\x50\x27\x00\x00\x01\x00\x00\x00\x9b\x04\x00\x00\x0f\x01\x00\x00\xc0\x09\x00\x00\x01\x00\x00\x00\xa1\x04\x00\x00\x0f\x01\x00\x00\x60\x32\x00\x00\x01\x00\x00\x00\xab\x04\x00\x00\x0f\x01\x00\x00\xd0\x34\x00\x00\x01\x00\x00\x00\xbd\x04\x00\x00\x0f\x01\x00\x00\x40\x2f\x00\x00\x01\x00\x00\x00\xc7\x04\x00\x00\x0f\x01\x00\x00\x30\x3e\x00\x00\x01\x00\x00\x00\xd6\x04\x00\x00\x0f\x01\x00\x00\x90\x35\x00\x00\x01\x00\x00\x00\xe0\x04\x00\x00\x0f\x01\x00\x00\x20\x09\x00\x00\x01\x00\x00\x00\xea\x04\x00\x00\x0f\x01\x00\x00\x80\x86\x00\x00\x01\x00\x00\x00\xf7\x04\x00\x00\x0f\x01\x00\x00\x30\x41\x00\x00\x01\x00\x00\x00\x0a\x05\x00\x00\x0f\x01\x00\x00\x80\x3e\x00\x00\x01\x00\x00\x00\x1e\x05\x00\x00\x0f\x01\x00\x00\xc0\x3c\x00\x00\x01\x00\x00\x00\x2e\x05\x00\x00\x0f\x01\x00\x00\x10\x7d\x00\x00\x01\x00\x00\x00\x3c\x05\x00\x00\x0f\x01\x00\x00\xd0\x49\x00\x00\x01\x00\x00\x00\x4a\x05\x00\x00\x0f\x01\x00\x00\x10\x4a\x00\x00\x01\x00\x00\x00\x5b\x05\x00\x00\x0f\x01\x00\x00\x50\x4a\x00\x00\x01\x00\x00\x00\x6f\x05\x00\x00\x0f\x01\x00\x00\x50\x41\x00\x00\x01\x00\x00\x00\x84\x05\x00\x00\x01\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x98\x05\x00\x00\x01\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\xa1\x05\x00\x00\x01\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\xaa\x05\x00\x00\x01\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\xb8\x05\x00\x00\x01\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\xc8\x05\x00\x00\x01\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\xda\x05\x00\x00\x01\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\xed\x05\x00\x00\x01\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\xf8\x05\x00\x00\x01\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\xfe\x05\x00\x00\x01\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x04\x06\x00\x00\x01\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x0c\x06\x00\x00\x01\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x13\x06\x00\x00\x01\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x06\x00\x00\x01\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x23\x06\x00\x00\x01\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x06\x00\x00\x01\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x32\x06\x00\x00\x01\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x40\x06\x00\x00\x01\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x48\x06\x00\x00\x01\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x56\x06\x00\x00\x01\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x63\x06\x00\x00\x01\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x70\x06\x00\x00\x01\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x06\x00\x00\x01\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x89\x06\x00\x00\x01\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x99\x06\x00\x00\x01\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\xa9\x06\x00\x00\x01\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\xb6\x06\x00\x00\x01\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\xc1\x06\x00\x00\x01\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\xc9\x06\x00\x00\x01\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\xd1\x06\x00\x00\x01\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\xd9\x06\x00\x00\x01\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\xe2\x06\x00\x00\x01\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\xea\x06\x00\x00\x01\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x01\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\xf8\x06\x00\x00\x01\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x01\x07\x00\x00\x01\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x07\x07\x00\x00\x01\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x0d\x07\x00\x00\x01\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x16\x07\x00\x00\x01\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x20\x07\x00\x00\x01\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x35\x07\x00\x00\x01\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x3b\x07\x00\x00\x01\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x43\x07\x00\x00\x01\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x07\x00\x00\x01\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x57\x07\x00\x00\x01\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x07\x00\x00\x01\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x67\x07\x00\x00\x01\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x6f\x07\x00\x00\x01\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x77\x07\x00\x00\x01\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7f\x07\x00\x00\x01\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x8c\x07\x00\x00\x01\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x95\x07\x00\x00\x01\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x9e\x07\x00\x00\x01\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\xa6\x07\x00\x00\x01\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\xaf\x07\x00\x00\x01\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\xb5\x07\x00\x00\x01\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\xbc\x07\x00\x00\x01\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x00\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x4b\x00\x00\x00\x4c\x00\x00\x00\x4f\x00\x00\x00\x50\x00\x00\x00\x51\x00\x00\x00\x52\x00\x00\x00\x53\x00\x00\x00\x54\x00\x00\x00\x55\x00\x00\x00\x56\x00\x00\x00\x57\x00\x00\x00\x58\x00\x00\x00\x59\x00\x00\x00\x5a\x00\x00\x00\x5b\x00\x00\x00\x5c\x00\x00\x00\x5d\x00\x00\x00\x5e\x00\x00\x00\x5f\x00\x00\x00\x61\x00\x00\x00\x62\x00\x00\x00\x63\x00\x00\x00\x64\x00\x00\x00\x65\x00\x00\x00\x66\x00\x00\x00\x67\x00\x00\x00\x68\x00\x00\x00\x69\x00\x00\x00\x6a\x00\x00\x00\x6b\x00\x00\x00\x6c\x00\x00\x00\x6d\x00\x00\x00\x6e\x00\x00\x00\x6f\x00\x00\x00\x70\x00\x00\x00\x71\x00\x00\x00\x72\x00\x00\x00\x73\x00\x00\x00\x74\x00\x00\x00\x75\x00\x00\x00\x76\x00\x00\x00\x77\x00\x00\x00\x78\x00\x00\x00\x79\x00\x00\x00\x7a\x00\x00\x00\x7b\x00\x00\x00\x7c\x00\x00\x00\x7d\x00\x00\x00\x7e\x00\x00\x00\x7f\x00\x00\x00\x00\x00\x00\x40\x47\x00\x00\x00\x4d\x00\x00\x00\x4e\x00\x00\x00\x60\x00\x00\x00\x48\x00\x00\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x4b\x00\x00\x00\x4c\x00\x00\x00\x4f\x00\x00\x00\x50\x00\x00\x00\x51\x00\x00\x00\x52\x00\x00\x00\x53\x00\x00\x00\x54\x00\x00\x00\x55\x00\x00\x00\x56\x00\x00\x00\x57\x00\x00\x00\x58\x00\x00\x00\x59\x00\x00\x00\x5a\x00\x00\x00\x5b\x00\x00\x00\x5c\x00\x00\x00\x5d\x00\x00\x00\x5e\x00\x00\x00\x5f\x00\x00\x00\x61\x00\x00\x00\x62\x00\x00\x00\x63\x00\x00\x00\x64\x00\x00\x00\x65\x00\x00\x00\x66\x00\x00\x00\x67\x00\x00\x00\x68\x00\x00\x00\x69\x00\x00\x00\x6a\x00\x00\x00\x6b\x00\x00\x00\x6c\x00\x00\x00\x6d\x00\x00\x00\x6e\x00\x00\x00\x6f\x00\x00\x00\x70\x00\x00\x00\x71\x00\x00\x00\x72\x00\x00\x00\x73\x00\x00\x00\x74\x00\x00\x00\x75\x00\x00\x00\x76\x00\x00\x00\x77\x00\x00\x00\x78\x00\x00\x00\x79\x00\x00\x00\x7a\x00\x00\x00\x7b\x00\x00\x00\x7c\x00\x00\x00\x7d\x00\x00\x00\x7e\x00\x00\x00\x20\x00\x5f\x44\x69\x73\x70\x6c\x61\x79\x49\x6e\x66\x6f\x73\x00\x5f\x53\x65\x74\x52\x65\x64\x69\x72\x65\x63\x74\x41\x6e\x64\x54\x65\x73\x74\x00\x5f\x6d\x69\x6e\x69\x77\x67\x65\x74\x32\x00\x5f\x62\x75\x69\x6c\x64\x5f\x61\x62\x73\x6f\x6c\x75\x74\x65\x5f\x75\x72\x6c\x00\x5f\x4e\x61\x6d\x65\x56\x61\x6c\x75\x65\x50\x61\x72\x73\x65\x72\x53\x74\x61\x72\x74\x45\x6c\x74\x00\x5f\x4e\x61\x6d\x65\x56\x61\x6c\x75\x65\x50\x61\x72\x73\x65\x72\x45\x6e\x64\x45\x6c\x74\x00\x5f\x4e\x61\x6d\x65\x56\x61\x6c\x75\x65\x50\x61\x72\x73\x65\x72\x47\x65\x74\x44\x61\x74\x61\x00\x5f\x73\x74\x61\x72\x74\x65\x6c\x74\x00\x5f\x65\x6e\x64\x65\x6c\x74\x00\x5f\x64\x61\x74\x61\x00\x5f\x75\x70\x6e\x70\x44\x69\x73\x63\x6f\x76\x65\x72\x44\x65\x76\x69\x63\x65\x73\x2e\x4d\x53\x65\x61\x72\x63\x68\x4d\x73\x67\x46\x6d\x74\x00\x5f\x75\x70\x6e\x70\x44\x69\x73\x63\x6f\x76\x65\x72\x2e\x64\x65\x76\x69\x63\x65\x4c\x69\x73\x74\x00\x5f\x75\x70\x6e\x70\x44\x69\x73\x63\x6f\x76\x65\x72\x41\x6c\x6c\x2e\x64\x65\x76\x69\x63\x65\x4c\x69\x73\x74\x00\x5f\x65\x6c\x65\x6d\x65\x6e\x74\x73\x00\x5f\x43\x6c\x65\x61\x72\x4e\x61\x6d\x65\x56\x61\x6c\x75\x65\x4c\x69\x73\x74\x00\x5f\x46\x72\x65\x65\x50\x6f\x72\x74\x4c\x69\x73\x74\x69\x6e\x67\x00\x5f\x46\x72\x65\x65\x55\x50\x4e\x50\x55\x72\x6c\x73\x00\x5f\x47\x65\x74\x55\x50\x4e\x50\x55\x72\x6c\x73\x00\x5f\x47\x65\x74\x56\x61\x6c\x75\x65\x46\x72\x6f\x6d\x4e\x61\x6d\x65\x56\x61\x6c\x75\x65\x4c\x69\x73\x74\x00\x5f\x49\x47\x44\x64\x61\x74\x61\x00\x5f\x49\x47\x44\x65\x6e\x64\x65\x6c\x74\x00\x5f\x49\x47\x44\x73\x74\x61\x72\x74\x65\x6c\x74\x00\x5f\x50\x61\x72\x73\x65\x4e\x61\x6d\x65\x56\x61\x6c\x75\x65\x00\x5f\x50\x61\x72\x73\x65\x50\x6f\x72\x74\x4c\x69\x73\x74\x69\x6e\x67\x00\x5f\x55\x50\x4e\x50\x49\x47\x44\x5f\x49\x73\x43\x6f\x6e\x6e\x65\x63\x74\x65\x64\x00\x5f\x55\x50\x4e\x50\x5f\x41\x64\x64\x41\x6e\x79\x50\x6f\x72\x74\x4d\x61\x70\x70\x69\x6e\x67\x00\x5f\x55\x50\x4e\x50\x5f\x41\x64\x64\x50\x69\x6e\x68\x6f\x6c\x65\x00\x5f\x55\x50\x4e\x50\x5f\x41\x64\x64\x50\x6f\x72\x74\x4d\x61\x70\x70\x69\x6e\x67\x00\x5f\x55\x50\x4e\x50\x5f\x43\x68\x65\x63\x6b\x50\x69\x6e\x68\x6f\x6c\x65\x57\x6f\x72\x6b\x69\x6e\x67\x00\x5f\x55\x50\x4e\x50\x5f\x44\x65\x6c\x65\x74\x65\x50\x69\x6e\x68\x6f\x6c\x65\x00\x5f\x55\x50\x4e\x50\x5f\x44\x65\x6c\x65\x74\x65\x50\x6f\x72\x74\x4d\x61\x70\x70\x69\x6e\x67\x00\x5f\x55\x50\x4e\x50\x5f\x44\x65\x6c\x65\x74\x65\x50\x6f\x72\x74\x4d\x61\x70\x70\x69\x6e\x67\x52\x61\x6e\x67\x65\x00\x5f\x55\x50\x4e\x50\x5f\x47\x65\x74\x43\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e\x54\x79\x70\x65\x49\x6e\x66\x6f\x00\x5f\x55\x50\x4e\x50\x5f\x47\x65\x74\x45\x78\x74\x65\x72\x6e\x61\x6c\x49\x50\x41\x64\x64\x72\x65\x73\x73\x00\x5f\x55\x50\x4e\x50\x5f\x47\x65\x74\x46\x69\x72\x65\x77\x61\x6c\x6c\x53\x74\x61\x74\x75\x73\x00\x5f\x55\x50\x4e\x50\x5f\x47\x65\x74\x47\x65\x6e\x65\x72\x69\x63\x50\x6f\x72\x74\x4d\x61\x70\x70\x69\x6e\x67\x45\x6e\x74\x72\x79\x00\x5f\x55\x50\x4e\x50\x5f\x47\x65\x74\x49\x47\x44\x46\x72\x6f\x6d\x55\x72\x6c\x00\x5f\x55\x50\x4e\x50\x5f\x47\x65\x74\x4c\x69\x6e\x6b\x4c\x61\x79\x65\x72\x4d\x61\x78\x42\x69\x74\x52\x61\x74\x65\x73\x00\x5f\x55\x50\x4e\x50\x5f\x47\x65\x74\x4c\x69\x73\x74\x4f\x66\x50\x6f\x72\x74\x4d\x61\x70\x70\x69\x6e\x67\x73\x00\x5f\x55\x50\x4e\x50\x5f\x47\x65\x74\x4f\x75\x74\x62\x6f\x75\x6e\x64\x50\x69\x6e\x68\x6f\x6c\x65\x54\x69\x6d\x65\x6f\x75\x74\x00\x5f\x55\x50\x4e\x50\x5f\x47\x65\x74\x50\x69\x6e\x68\x6f\x6c\x65\x50\x61\x63\x6b\x65\x74\x73\x00\x5f\x55\x50\x4e\x50\x5f\x47\x65\x74\x50\x6f\x72\x74\x4d\x61\x70\x70\x69\x6e\x67\x4e\x75\x6d\x62\x65\x72\x4f\x66\x45\x6e\x74\x72\x69\x65\x73\x00\x5f\x55\x50\x4e\x50\x5f\x47\x65\x74\x53\x70\x65\x63\x69\x66\x69\x63\x50\x6f\x72\x74\x4d\x61\x70\x70\x69\x6e\x67\x45\x6e\x74\x72\x79\x00\x5f\x55\x50\x4e\x50\x5f\x47\x65\x74\x53\x74\x61\x74\x75\x73\x49\x6e\x66\x6f\x00\x5f\x55\x50\x4e\x50\x5f\x47\x65\x74\x54\x6f\x74\x61\x6c\x42\x79\x74\x65\x73\x52\x65\x63\x65\x69\x76\x65\x64\x00\x5f\x55\x50\x4e\x50\x5f\x47\x65\x74\x54\x6f\x74\x61\x6c\x42\x79\x74\x65\x73\x53\x65\x6e\x74\x00\x5f\x55\x50\x4e\x50\x5f\x47\x65\x74\x54\x6f\x74\x61\x6c\x50\x61\x63\x6b\x65\x74\x73\x52\x65\x63\x65\x69\x76\x65\x64\x00\x5f\x55\x50\x4e\x50\x5f\x47\x65\x74\x54\x6f\x74\x61\x6c\x50\x61\x63\x6b\x65\x74\x73\x53\x65\x6e\x74\x00\x5f\x55\x50\x4e\x50\x5f\x47\x65\x74\x56\x61\x6c\x69\x64\x49\x47\x44\x00\x5f\x55\x50\x4e\x50\x5f\x55\x70\x64\x61\x74\x65\x50\x69\x6e\x68\x6f\x6c\x65\x00\x5f\x5f\x6d\x68\x5f\x65\x78\x65\x63\x75\x74\x65\x5f\x68\x65\x61\x64\x65\x72\x00\x5f\x63\x6f\x6e\x6e\x65\x63\x74\x68\x6f\x73\x74\x70\x6f\x72\x74\x00\x5f\x66\x72\x65\x65\x55\x50\x4e\x50\x44\x65\x76\x6c\x69\x73\x74\x00\x5f\x67\x65\x74\x44\x65\x76\x69\x63\x65\x73\x46\x72\x6f\x6d\x4d\x69\x6e\x69\x53\x53\x44\x50\x44\x00\x5f\x67\x65\x74\x48\x54\x54\x50\x52\x65\x73\x70\x6f\x6e\x73\x65\x00\x5f\x6d\x61\x69\x6e\x00\x5f\x6d\x69\x6e\x69\x77\x67\x65\x74\x00\x5f\x6d\x69\x6e\x69\x77\x67\x65\x74\x5f\x67\x65\x74\x61\x64\x64\x72\x00\x5f\x70\x61\x72\x73\x65\x55\x52\x4c\x00\x5f\x70\x61\x72\x73\x65\x72\x6f\x6f\x74\x64\x65\x73\x63\x00\x5f\x70\x61\x72\x73\x65\x78\x6d\x6c\x00\x5f\x70\x72\x6f\x74\x6f\x66\x69\x78\x00\x5f\x72\x65\x63\x65\x69\x76\x65\x64\x61\x74\x61\x00\x5f\x73\x69\x6d\x70\x6c\x65\x55\x50\x6e\x50\x63\x6f\x6d\x6d\x61\x6e\x64\x00\x5f\x73\x69\x6d\x70\x6c\x65\x55\x50\x6e\x50\x63\x6f\x6d\x6d\x61\x6e\x64\x32\x00\x5f\x73\x6f\x61\x70\x50\x6f\x73\x74\x53\x75\x62\x6d\x69\x74\x00\x5f\x73\x74\x72\x75\x70\x6e\x70\x65\x72\x72\x6f\x72\x00\x5f\x75\x70\x6e\x70\x44\x69\x73\x63\x6f\x76\x65\x72\x00\x5f\x75\x70\x6e\x70\x44\x69\x73\x63\x6f\x76\x65\x72\x41\x6c\x6c\x00\x5f\x75\x70\x6e\x70\x44\x69\x73\x63\x6f\x76\x65\x72\x44\x65\x76\x69\x63\x65\x00\x5f\x75\x70\x6e\x70\x44\x69\x73\x63\x6f\x76\x65\x72\x44\x65\x76\x69\x63\x65\x73\x00\x5f\x5f\x44\x65\x66\x61\x75\x6c\x74\x52\x75\x6e\x65\x4c\x6f\x63\x61\x6c\x65\x00\x5f\x5f\x5f\x62\x7a\x65\x72\x6f\x00\x5f\x5f\x5f\x65\x72\x72\x6f\x72\x00\x5f\x5f\x5f\x6d\x65\x6d\x63\x70\x79\x5f\x63\x68\x6b\x00\x5f\x5f\x5f\x73\x6e\x70\x72\x69\x6e\x74\x66\x5f\x63\x68\x6b\x00\x5f\x5f\x5f\x73\x74\x61\x63\x6b\x5f\x63\x68\x6b\x5f\x66\x61\x69\x6c\x00\x5f\x5f\x5f\x73\x74\x61\x63\x6b\x5f\x63\x68\x6b\x5f\x67\x75\x61\x72\x64\x00\x5f\x5f\x5f\x73\x74\x64\x65\x72\x72\x70\x00\x5f\x61\x74\x6f\x69\x00\x5f\x62\x69\x6e\x64\x00\x5f\x63\x61\x6c\x6c\x6f\x63\x00\x5f\x63\x6c\x6f\x73\x65\x00\x5f\x63\x6f\x6e\x6e\x65\x63\x74\x00\x5f\x63\x74\x69\x6d\x65\x00\x5f\x66\x70\x72\x69\x6e\x74\x66\x00\x5f\x66\x72\x65\x65\x00\x5f\x66\x72\x65\x65\x61\x64\x64\x72\x69\x6e\x66\x6f\x00\x5f\x66\x77\x72\x69\x74\x65\x00\x5f\x67\x61\x69\x5f\x73\x74\x72\x65\x72\x72\x6f\x72\x00\x5f\x67\x65\x74\x61\x64\x64\x72\x69\x6e\x66\x6f\x00\x5f\x67\x65\x74\x6e\x61\x6d\x65\x69\x6e\x66\x6f\x00\x5f\x67\x65\x74\x73\x6f\x63\x6b\x6e\x61\x6d\x65\x00\x5f\x67\x65\x74\x73\x6f\x63\x6b\x6f\x70\x74\x00\x5f\x69\x66\x5f\x69\x6e\x64\x65\x78\x74\x6f\x6e\x61\x6d\x65\x00\x5f\x69\x66\x5f\x6e\x61\x6d\x65\x74\x6f\x69\x6e\x64\x65\x78\x00\x5f\x69\x6e\x36\x61\x64\x64\x72\x5f\x61\x6e\x79\x00\x5f\x69\x6e\x65\x74\x5f\x61\x64\x64\x72\x00\x5f\x6d\x61\x6c\x6c\x6f\x63\x00\x5f\x6d\x65\x6d\x63\x6d\x70\x00\x5f\x6d\x65\x6d\x63\x70\x79\x00\x5f\x6d\x65\x6d\x6d\x6f\x76\x65\x00\x5f\x70\x65\x72\x72\x6f\x72\x00\x5f\x70\x6f\x6c\x6c\x00\x5f\x70\x72\x69\x6e\x74\x66\x00\x5f\x70\x75\x74\x63\x68\x61\x72\x00\x5f\x70\x75\x74\x73\x00\x5f\x72\x65\x61\x64\x00\x5f\x72\x65\x61\x6c\x6c\x6f\x63\x00\x5f\x72\x65\x63\x76\x66\x72\x6f\x6d\x00\x5f\x73\x65\x6c\x65\x63\x74\x24\x44\x41\x52\x57\x49\x4e\x5f\x45\x58\x54\x53\x4e\x00\x5f\x73\x65\x6e\x64\x00\x5f\x73\x65\x6e\x64\x74\x6f\x00\x5f\x73\x65\x74\x73\x6f\x63\x6b\x6f\x70\x74\x00\x5f\x73\x6f\x63\x6b\x65\x74\x00\x5f\x73\x73\x63\x61\x6e\x66\x00\x5f\x73\x74\x72\x63\x68\x72\x00\x5f\x73\x74\x72\x63\x6d\x70\x00\x5f\x73\x74\x72\x64\x75\x70\x00\x5f\x73\x74\x72\x6c\x65\x6e\x00\x5f\x73\x74\x72\x6e\x63\x61\x73\x65\x63\x6d\x70\x00\x5f\x73\x74\x72\x6e\x63\x6d\x70\x00\x5f\x73\x74\x72\x6e\x63\x70\x79\x00\x5f\x73\x74\x72\x73\x74\x72\x00\x5f\x73\x74\x72\x74\x6f\x75\x6c\x00\x5f\x74\x69\x6d\x65\x00\x5f\x77\x72\x69\x74\x65\x00\x64\x79\x6c\x64\x5f\x73\x74\x75\x62\x5f\x62\x69\x6e\x64\x65\x72\x00\x00\x00\x00\xfa\xde\x0c\xc0\x00\x00\x23\xed\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x24\x00\x00\x00\x02\x00\x00\x01\xa9\x00\x01\x00\x00\x00\x00\x02\x81\xfa\xde\x0c\x02\x00\x00\x01\x85\x00\x02\x02\x00\x00\x00\x00\x00\x00\x00\x00\x6d\x00\x00\x00\x34\x00\x00\x00\x02\x00\x00\x00\x0e\x00\x00\xdb\x50\x14\x01\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x75\x70\x6e\x70\x63\x00\x41\x43\x5a\x52\x4b\x43\x33\x4c\x51\x39\x00\x46\x2c\xca\x82\x59\x00\xee\xd3\x08\xa1\x70\x4b\x73\x7b\xc9\xa5\xf5\x7f\x44\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\xf7\x1c\xce\x5b\xa1\x5c\xc8\xa8\xbf\xfc\xf1\x07\x34\x02\x5c\x94\xe5\x73\x18\x4a\x10\x87\xc1\x79\x08\xc5\x98\xfa\x75\xee\x43\xf1\xea\xe7\x01\x92\x72\x2c\x0f\x78\x91\x7f\x54\x50\x92\x8b\x74\x9f\x16\x3e\xdd\x08\x71\x95\xc2\xfb\xd0\xb7\x0a\xa2\x32\x84\xcb\x2e\x81\x84\x29\x84\x06\x8c\x5b\x32\xed\x86\x5f\x57\xdf\x35\xf1\x5a\xe8\xb4\xc0\xfa\xfc\x8b\x8c\x1b\xa6\xba\x3c\x28\x23\x3a\x8a\x01\x5c\xed\xad\x87\x6c\x5d\x6c\x3f\xbe\x19\xb0\xb0\xcf\x9e\x9b\x31\xd0\x41\x85\x33\xb9\xeb\x7e\x53\x0e\xfe\x97\xfe\xaa\x9b\x20\xf9\x6c\x12\xab\xfd\x61\xf0\x7a\xc8\x27\xc3\x4f\xf4\xa6\x65\x9a\xdd\xbd\xa7\xe4\x91\xcf\x0f\xdb\x49\xff\x55\xee\xa1\x6d\xd9\x47\xad\x97\x65\x6e\xd7\xaa\x27\x5e\x8d\xbd\xfe\xce\x91\x99\x78\xba\x1b\xe8\xdc\x91\x36\x32\xad\x87\x52\x37\x57\x80\xe8\x39\x37\xba\x5e\x7e\xaf\x00\x5c\xcd\xd2\xe0\xbf\x55\xde\x1f\xe6\xd3\x6b\x57\x40\xd9\xa9\x36\x17\x1c\xab\xea\x0e\x88\xc6\x1d\x7d\x61\x1e\x62\xfe\x18\x6e\x60\x5f\x1a\xa4\x1a\x81\xc5\xba\x94\x08\xa8\x55\x7a\xb5\xeb\xf4\x85\xf2\xb3\xf6\x1a\x6a\x30\x4b\x96\xaf\xed\x24\x6f\xbf\xda\xb6\xdc\x43\x47\x15\xbf\xcb\x15\x65\x2c\x31\x3e\xce\xe5\x3c\x33\x32\x14\x88\x6e\xdb\xf1\xfa\xde\x0c\x01\x00\x00\x00\xd8\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00\x1c\x00\x00\x00\x04\x00\x00\x00\xb0\xfa\xde\x0c\x00\x00\x00\x00\x94\x00\x00\x00\x01\x00\x00\x00\x06\x00\x00\x00\x02\x00\x00\x00\x05\x75\x70\x6e\x70\x63\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x0f\x00\x00\x00\x06\x00\x00\x00\x0e\x00\x00\x00\x01\x00\x00\x00\x0a\x2a\x86\x48\x86\xf7\x63\x64\x06\x02\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x00\x00\x0a\x2a\x86\x48\x86\xf7\x63\x64\x06\x01\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x0a\x73\x75\x62\x6a\x65\x63\x74\x2e\x4f\x55\x00\x00\x00\x00\x00\x01\x00\x00\x00\x0a\x41\x43\x5a\x52\x4b\x43\x33\x4c\x51\x39\x00\x00\xfa\xde\x0c\x00\x00\x00\x00\x28\x00\x00\x00\x01\x00\x00\x00\x06\x00\x00\x00\x02\x00\x00\x00\x0b\x6c\x69\x62\x53\x79\x73\x74\x65\x6d\x2e\x42\x00\x00\x00\x00\x03\xfa\xde\x0b\x01\x00\x00\x21\x6c\x30\x80\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x07\x02\xa0\x80\x30\x80\x02\x01\x01\x31\x0b\x30\x09\x06\x05\x2b\x0e\x03\x02\x1a\x05\x00\x30\x80\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x07\x01\x00\x00\xa0\x82\x0e\x56\x30\x82\x04\x04\x30\x82\x02\xec\xa0\x03\x02\x01\x02\x02\x08\x18\x7a\xa9\xa8\xc2\x96\x21\x0c\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x0b\x05\x00\x30\x62\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x55\x53\x31\x13\x30\x11\x06\x03\x55\x04\x0a\x13\x0a\x41\x70\x70\x6c\x65\x20\x49\x6e\x63\x2e\x31\x26\x30\x24\x06\x03\x55\x04\x0b\x13\x1d\x41\x70\x70\x6c\x65\x20\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x20\x41\x75\x74\x68\x6f\x72\x69\x74\x79\x31\x16\x30\x14\x06\x03\x55\x04\x03\x13\x0d\x41\x70\x70\x6c\x65\x20\x52\x6f\x6f\x74\x20\x43\x41\x30\x1e\x17\x0d\x31\x32\x30\x32\x30\x31\x32\x32\x31\x32\x31\x35\x5a\x17\x0d\x32\x37\x30\x32\x30\x31\x32\x32\x31\x32\x31\x35\x5a\x30\x79\x31\x2d\x30\x2b\x06\x03\x55\x04\x03\x0c\x24\x44\x65\x76\x65\x6c\x6f\x70\x65\x72\x20\x49\x44\x20\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x20\x41\x75\x74\x68\x6f\x72\x69\x74\x79\x31\x26\x30\x24\x06\x03\x55\x04\x0b\x0c\x1d\x41\x70\x70\x6c\x65\x20\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x20\x41\x75\x74\x68\x6f\x72\x69\x74\x79\x31\x13\x30\x11\x06\x03\x55\x04\x0a\x0c\x0a\x41\x70\x70\x6c\x65\x20\x49\x6e\x63\x2e\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x55\x53\x30\x82\x01\x22\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x01\x05\x00\x03\x82\x01\x0f\x00\x30\x82\x01\x0a\x02\x82\x01\x01\x00\x89\x76\x4f\x06\x5b\x9a\x41\xee\xa5\x23\x2b\x02\xa3\x5f\xd7\x73\x3f\xc0\x35\xb0\x8b\x84\x0a\x3f\x06\x24\x7f\xa7\x95\x3f\xeb\x4f\x0e\x93\xaf\xb4\x0e\xd0\xc8\x3e\xe5\x6d\x18\xb3\x1f\xe8\x89\x47\xbf\xd7\x09\x08\xe4\xff\x56\x98\x29\x15\xe7\x94\x9d\xb9\x35\xa3\x0a\xcd\xb4\xc0\xe1\xe2\x60\xf4\xca\xec\x29\x78\x45\x69\x69\x60\x6b\x5f\x8a\x92\xfc\x9e\x23\xe6\x3a\xc2\x22\xb3\x31\x4f\x1c\xba\xf2\xb6\x34\x59\x42\xee\xb0\xa9\x02\x03\x18\x91\x04\xb6\xb3\x78\x2e\x33\x1f\x80\x45\x0d\x45\x6f\xbb\x0e\x5a\x5b\x7f\x3a\xe7\xd8\x08\xd7\x0b\x0e\x32\x6d\xfb\x86\x36\xe4\x6c\xab\xc4\x11\x8a\x70\x84\x26\xaa\x9f\x44\xd1\xf1\xb8\xc6\x7b\x94\x17\x9b\x48\xf7\x0b\x58\x16\xba\x23\xc5\x9f\x15\x39\x7e\xca\x5d\xc3\x32\x5f\x0f\xe0\x52\x7f\x40\xea\xbe\xac\x08\x64\x95\x5b\xc9\x1a\x9c\xe5\x80\xca\x1f\x6a\x44\x1c\x6c\x3e\xc4\xb0\x26\x1f\x1d\xec\x7b\xaf\x5e\xa0\x6a\x3d\x47\xa9\x58\x12\x31\x3f\x20\x76\x28\x6d\x1d\x1c\xb0\xc2\x4e\x11\x69\x26\x8b\xcb\xd6\xd0\x11\x82\xc9\x4e\x0f\xf1\x56\x74\xd0\xd9\x08\x4b\x66\x78\xa2\xab\xac\xa7\xe2\xd2\x4c\x87\x59\xc9\x02\x03\x01\x00\x01\xa3\x81\xa6\x30\x81\xa3\x30\x1d\x06\x03\x55\x1d\x0e\x04\x16\x04\x14\x57\x17\xed\xa2\xcf\xdc\x7c\x98\xa1\x10\xe0\xfc\xbe\x87\x2d\x2c\xf2\xe3\x17\x54\x30\x0f\x06\x03\x55\x1d\x13\x01\x01\xff\x04\x05\x30\x03\x01\x01\xff\x30\x1f\x06\x03\x55\x1d\x23\x04\x18\x30\x16\x80\x14\x2b\xd0\x69\x47\x94\x76\x09\xfe\xf4\x6b\x8d\x2e\x40\xa6\xf7\x47\x4d\x7f\x08\x5e\x30\x2e\x06\x03\x55\x1d\x1f\x04\x27\x30\x25\x30\x23\xa0\x21\xa0\x1f\x86\x1d\x68\x74\x74\x70\x3a\x2f\x2f\x63\x72\x6c\x2e\x61\x70\x70\x6c\x65\x2e\x63\x6f\x6d\x2f\x72\x6f\x6f\x74\x2e\x63\x72\x6c\x30\x0e\x06\x03\x55\x1d\x0f\x01\x01\xff\x04\x04\x03\x02\x01\x86\x30\x10\x06\x0a\x2a\x86\x48\x86\xf7\x63\x64\x06\x02\x06\x04\x02\x05\x00\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x0b\x05\x00\x03\x82\x01\x01\x00\x42\x39\x74\x6b\xa1\xdc\xc6\xa4\x8f\x37\x2a\x8c\xb3\x1d\x0a\x44\xbc\x95\x2c\x7f\xbc\x59\xb8\xac\x61\xfb\x07\x90\x92\x32\xb9\xd4\xbf\x3b\xc1\x50\x39\x6a\x44\x74\xa2\xec\x5b\x1f\x70\xe5\xaa\xdd\x4b\x6c\x1c\x23\x71\x2d\x5f\xd1\xc5\x93\xbe\xee\x9b\x8a\x70\x65\x82\x9d\x16\xe3\x1a\x10\x17\x89\x2d\xa8\xcd\xfd\x0c\x78\x58\x49\x0c\x28\x7f\x33\xee\x00\x7a\x1b\xb4\x76\xac\xb6\xb5\xbb\x4f\xdf\xa8\x1b\x9d\xc8\x19\x97\x4a\x0b\x56\x67\x2f\xc2\x3e\xb6\xb3\xc4\x83\x3a\xf0\x77\x6d\x74\xc4\x2e\x23\x51\xee\x9a\xa5\x03\x6f\x60\xf4\xa5\x48\xa7\x06\xc2\xbb\x5a\xe2\x1f\x1f\x46\x45\x7e\xe4\x97\xf5\x27\x10\xb7\x20\x22\x72\x6f\x72\xda\xc6\x50\x75\xc5\x3d\x25\x8f\x5d\xa3\x00\xe9\x9f\x36\x8c\x48\x39\x8f\xb3\x3b\xea\x90\x80\x2e\x95\x9a\x60\xf4\x78\xce\xf4\x0e\x0a\x53\x3e\xa2\xfa\x4f\xd8\x1e\xae\x84\x95\x8d\x32\xbc\x56\x4d\x89\xe9\x78\x18\xe0\xac\x9a\x42\xba\x7a\x46\x1b\x84\xa2\x89\xce\x14\xe8\x88\xd1\x58\x8b\xf6\xae\x56\xc4\x2c\x05\x2a\x45\xaf\x0b\xd9\x4b\xa9\x02\x0f\x34\xac\x88\xc7\x61\x55\x89\x44\xc9\x27\x73\x07\xee\x82\xe5\x4e\xf5\x70\x30\x82\x04\xbb\x30\x82\x03\xa3\xa0\x03\x02\x01\x02\x02\x01\x02\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x05\x05\x00\x30\x62\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x55\x53\x31\x13\x30\x11\x06\x03\x55\x04\x0a\x13\x0a\x41\x70\x70\x6c\x65\x20\x49\x6e\x63\x2e\x31\x26\x30\x24\x06\x03\x55\x04\x0b\x13\x1d\x41\x70\x70\x6c\x65\x20\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x20\x41\x75\x74\x68\x6f\x72\x69\x74\x79\x31\x16\x30\x14\x06\x03\x55\x04\x03\x13\x0d\x41\x70\x70\x6c\x65\x20\x52\x6f\x6f\x74\x20\x43\x41\x30\x1e\x17\x0d\x30\x36\x30\x34\x32\x35\x32\x31\x34\x30\x33\x36\x5a\x17\x0d\x33\x35\x30\x32\x30\x39\x32\x31\x34\x30\x33\x36\x5a\x30\x62\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x55\x53\x31\x13\x30\x11\x06\x03\x55\x04\x0a\x13\x0a\x41\x70\x70\x6c\x65\x20\x49\x6e\x63\x2e\x31\x26\x30\x24\x06\x03\x55\x04\x0b\x13\x1d\x41\x70\x70\x6c\x65\x20\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x20\x41\x75\x74\x68\x6f\x72\x69\x74\x79\x31\x16\x30\x14\x06\x03\x55\x04\x03\x13\x0d\x41\x70\x70\x6c\x65\x20\x52\x6f\x6f\x74\x20\x43\x41\x30\x82\x01\x22\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x01\x05\x00\x03\x82\x01\x0f\x00\x30\x82\x01\x0a\x02\x82\x01\x01\x00\xe4\x91\xa9\x09\x1f\x91\xdb\x1e\x47\x50\xeb\x05\xed\x5e\x79\x84\x2d\xeb\x36\xa2\x57\x4c\x55\xec\x8b\x19\x89\xde\xf9\x4b\x6c\xf5\x07\xab\x22\x30\x02\xe8\x18\x3e\xf8\x50\x09\xd3\x7f\x41\xa8\x98\xf9\xd1\xca\x66\x9c\x24\x6b\x11\xd0\xa3\xbb\xe4\x1b\x2a\xc3\x1f\x95\x9e\x7a\x0c\xa4\x47\x8b\x5b\xd4\x16\x37\x33\xcb\xc4\x0f\x4d\xce\x14\x69\xd1\xc9\x19\x72\xf5\x5d\x0e\xd5\x7f\x5f\x9b\xf2\x25\x03\xba\x55\x8f\x4d\x5d\x0d\xf1\x64\x35\x23\x15\x4b\x15\x59\x1d\xb3\x94\xf7\xf6\x9c\x9e\xcf\x50\xba\xc1\x58\x50\x67\x8f\x08\xb4\x20\xf7\xcb\xac\x2c\x20\x6f\x70\xb6\x3f\x01\x30\x8c\xb7\x43\xcf\x0f\x9d\x3d\xf3\x2b\x49\x28\x1a\xc8\xfe\xce\xb5\xb9\x0e\xd9\x5e\x1c\xd6\xcb\x3d\xb5\x3a\xad\xf4\x0f\x0e\x00\x92\x0b\xb1\x21\x16\x2e\x74\xd5\x3c\x0d\xdb\x62\x16\xab\xa3\x71\x92\x47\x53\x55\xc1\xaf\x2f\x41\xb3\xf8\xfb\xe3\x70\xcd\xe6\xa3\x4c\x45\x7e\x1f\x4c\x6b\x50\x96\x41\x89\xc4\x74\x62\x0b\x10\x83\x41\x87\x33\x8a\x81\xb1\x30\x58\xec\x5a\x04\x32\x8c\x68\xb3\x8f\x1d\xde\x65\x73\xff\x67\x5e\x65\xbc\x49\xd8\x76\x9f\x33\x14\x65\xa1\x77\x94\xc9\x2d\x02\x03\x01\x00\x01\xa3\x82\x01\x7a\x30\x82\x01\x76\x30\x0e\x06\x03\x55\x1d\x0f\x01\x01\xff\x04\x04\x03\x02\x01\x06\x30\x0f\x06\x03\x55\x1d\x13\x01\x01\xff\x04\x05\x30\x03\x01\x01\xff\x30\x1d\x06\x03\x55\x1d\x0e\x04\x16\x04\x14\x2b\xd0\x69\x47\x94\x76\x09\xfe\xf4\x6b\x8d\x2e\x40\xa6\xf7\x47\x4d\x7f\x08\x5e\x30\x1f\x06\x03\x55\x1d\x23\x04\x18\x30\x16\x80\x14\x2b\xd0\x69\x47\x94\x76\x09\xfe\xf4\x6b\x8d\x2e\x40\xa6\xf7\x47\x4d\x7f\x08\x5e\x30\x82\x01\x11\x06\x03\x55\x1d\x20\x04\x82\x01\x08\x30\x82\x01\x04\x30\x82\x01\x00\x06\x09\x2a\x86\x48\x86\xf7\x63\x64\x05\x01\x30\x81\xf2\x30\x2a\x06\x08\x2b\x06\x01\x05\x05\x07\x02\x01\x16\x1e\x68\x74\x74\x70\x73\x3a\x2f\x2f\x77\x77\x77\x2e\x61\x70\x70\x6c\x65\x2e\x63\x6f\x6d\x2f\x61\x70\x70\x6c\x65\x63\x61\x2f\x30\x81\xc3\x06\x08\x2b\x06\x01\x05\x05\x07\x02\x02\x30\x81\xb6\x1a\x81\xb3\x52\x65\x6c\x69\x61\x6e\x63\x65\x20\x6f\x6e\x20\x74\x68\x69\x73\x20\x63\x65\x72\x74\x69\x66\x69\x63\x61\x74\x65\x20\x62\x79\x20\x61\x6e\x79\x20\x70\x61\x72\x74\x79\x20\x61\x73\x73\x75\x6d\x65\x73\x20\x61\x63\x63\x65\x70\x74\x61\x6e\x63\x65\x20\x6f\x66\x20\x74\x68\x65\x20\x74\x68\x65\x6e\x20\x61\x70\x70\x6c\x69\x63\x61\x62\x6c\x65\x20\x73\x74\x61\x6e\x64\x61\x72\x64\x20\x74\x65\x72\x6d\x73\x20\x61\x6e\x64\x20\x63\x6f\x6e\x64\x69\x74\x69\x6f\x6e\x73\x20\x6f\x66\x20\x75\x73\x65\x2c\x20\x63\x65\x72\x74\x69\x66\x69\x63\x61\x74\x65\x20\x70\x6f\x6c\x69\x63\x79\x20\x61\x6e\x64\x20\x63\x65\x72\x74\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x20\x70\x72\x61\x63\x74\x69\x63\x65\x20\x73\x74\x61\x74\x65\x6d\x65\x6e\x74\x73\x2e\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x05\x05\x00\x03\x82\x01\x01\x00\x5c\x36\x99\x4c\x2d\x78\xb7\xed\x8c\x9b\xdc\xf3\x77\x9b\xf2\x76\xd2\x77\x30\x4f\xc1\x1f\x85\x83\x85\x1b\x99\x3d\x47\x37\xf2\xa9\x9b\x40\x8e\x2c\xd4\xb1\x90\x12\xd8\xbe\xf4\x73\x9b\xee\xd2\x64\x0f\xcb\x79\x4f\x34\xd8\xa2\x3e\xf9\x78\xff\x6b\xc8\x07\xec\x7d\x39\x83\x8b\x53\x20\xd3\x38\xc4\xb1\xbf\x9a\x4f\x0a\x6b\xff\x2b\xfc\x59\xa7\x05\x09\x7c\x17\x40\x56\x11\x1e\x74\xd3\xb7\x8b\x23\x3b\x47\xa3\xd5\x6f\x24\xe2\xeb\xd1\xb7\x70\xdf\x0f\x45\xe1\x27\xca\xf1\x6d\x78\xed\xe7\xb5\x17\x17\xa8\xdc\x7e\x22\x35\xca\x25\xd5\xd9\x0f\xd6\x6b\xd4\xa2\x24\x23\x11\xf7\xa1\xac\x8f\x73\x81\x60\xc6\x1b\x5b\x09\x2f\x92\xb2\xf8\x44\x48\xf0\x60\x38\x9e\x15\xf5\x3d\x26\x67\x20\x8a\x33\x6a\xf7\x0d\x82\xcf\xde\xeb\xa3\x2f\xf9\x53\x6a\x5b\x64\xc0\x63\x33\x77\xf7\x3a\x07\x2c\x56\xeb\xda\x0f\x21\x0e\xda\xba\x73\x19\x4f\xb5\xd9\x36\x7f\xc1\x87\x55\xd9\xa7\x99\xb9\x32\x42\xfb\xd8\xd5\x71\x9e\x7e\xa1\x52\xb7\x1b\xbd\x93\x42\x24\x12\x2a\xc7\x0f\x1d\xb6\x4d\x9c\x5e\x63\xc8\x4b\x80\x17\x50\xaa\x8a\xd5\xda\xe4\xfc\xd0\x09\x07\x37\xb0\x75\x75\x21\x30\x82\x05\x8b\x30\x82\x04\x73\xa0\x03\x02\x01\x02\x02\x08\x50\x64\x51\x77\x06\xf3\x9f\xc3\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x0b\x05\x00\x30\x79\x31\x2d\x30\x2b\x06\x03\x55\x04\x03\x0c\x24\x44\x65\x76\x65\x6c\x6f\x70\x65\x72\x20\x49\x44\x20\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x20\x41\x75\x74\x68\x6f\x72\x69\x74\x79\x31\x26\x30\x24\x06\x03\x55\x04\x0b\x0c\x1d\x41\x70\x70\x6c\x65\x20\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x20\x41\x75\x74\x68\x6f\x72\x69\x74\x79\x31\x13\x30\x11\x06\x03\x55\x04\x0a\x0c\x0a\x41\x70\x70\x6c\x65\x20\x49\x6e\x63\x2e\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x55\x53\x30\x1e\x17\x0d\x31\x32\x30\x38\x32\x34\x31\x38\x32\x35\x31\x30\x5a\x17\x0d\x31\x37\x30\x38\x32\x35\x31\x38\x32\x35\x31\x30\x5a\x30\x81\xac\x31\x1a\x30\x18\x06\x0a\x09\x92\x26\x89\x93\xf2\x2c\x64\x01\x01\x0c\x0a\x41\x43\x5a\x52\x4b\x43\x33\x4c\x51\x39\x31\x42\x30\x40\x06\x03\x55\x04\x03\x0c\x39\x44\x65\x76\x65\x6c\x6f\x70\x65\x72\x20\x49\x44\x20\x41\x70\x70\x6c\x69\x63\x61\x74\x69\x6f\x6e\x3a\x20\x42\x72\x61\x76\x65\x20\x4e\x65\x77\x20\x53\x6f\x66\x74\x77\x61\x72\x65\x20\x50\x72\x6f\x6a\x65\x63\x74\x2c\x20\x49\x6e\x63\x31\x13\x30\x11\x06\x03\x55\x04\x0b\x0c\x0a\x41\x43\x5a\x52\x4b\x43\x33\x4c\x51\x39\x31\x28\x30\x26\x06\x03\x55\x04\x0a\x0c\x1f\x42\x72\x61\x76\x65\x20\x4e\x65\x77\x20\x53\x6f\x66\x74\x77\x61\x72\x65\x20\x50\x72\x6f\x6a\x65\x63\x74\x2c\x20\x49\x6e\x63\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x55\x53\x30\x82\x01\x22\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x01\x05\x00\x03\x82\x01\x0f\x00\x30\x82\x01\x0a\x02\x82\x01\x01\x00\xb8\x49\xef\x09\x0f\x5d\x63\x4a\xdd\xa0\x9f\xe4\x80\x4e\x1a\x7e\xea\xdf\xc0\xa5\xc8\xf1\xc9\x32\xde\xf3\xb2\xbe\x83\x21\x40\xb9\x3f\xc3\x27\xb6\xf8\xc0\x12\x73\x15\x0c\x0f\xd0\x02\x0c\x83\xd4\xfd\xb4\x29\x1d\x29\xc7\xe6\x4b\xe4\xf9\x42\xd0\x94\xd2\xda\xa2\x44\x14\x0c\x0f\xf6\x81\x4f\x41\x53\xd3\x3f\x4b\x3c\x48\x35\xf7\x54\xa1\x87\x15\x03\x5c\x73\xc9\x5b\xc4\x6f\x28\x02\x3e\xc9\xbb\xb7\xd0\xf8\xba\x15\xb5\x43\xbf\x5a\x9f\x6f\x5d\x97\x9e\xee\x79\xf7\x48\xd4\xe8\x09\x9c\x94\xf6\x61\x8a\xc7\xcd\x2b\x49\xe1\xf0\x92\xec\xbd\xff\xdc\xf7\x23\xaf\x9b\x34\x84\x42\x3e\xca\x60\x41\x49\x16\x84\x3e\x52\x82\x54\x6e\xae\x0b\x4e\x08\x86\xa1\xbd\xd5\xdc\x11\x8e\xca\x2f\xd0\x78\x15\xb5\x77\x6c\x0b\x7f\x9e\xc0\xb5\x7f\xc0\xb3\x5e\xaf\x79\x3a\x23\x30\x09\xf7\xbc\xd3\x68\x73\xcd\x33\xf9\x8e\x6b\xd7\x77\xec\x97\x84\x5c\xa2\x56\xae\x5e\xfa\x1f\x26\x0a\xec\xef\x2f\xae\xf4\x93\xf4\x10\xeb\xd6\x85\x17\xc6\x92\x30\x33\x3e\x1f\xa7\x34\x94\x2e\x00\x28\x09\x2a\xc7\x1f\x5d\x65\x0a\x47\x4c\xbe\xee\x0a\xaa\xac\xfe\xdc\x28\x45\x36\x50\x22\x65\x02\x03\x01\x00\x01\xa3\x82\x01\xe1\x30\x82\x01\xdd\x30\x3e\x06\x08\x2b\x06\x01\x05\x05\x07\x01\x01\x04\x32\x30\x30\x30\x2e\x06\x08\x2b\x06\x01\x05\x05\x07\x30\x01\x86\x22\x68\x74\x74\x70\x3a\x2f\x2f\x6f\x63\x73\x70\x2e\x61\x70\x70\x6c\x65\x2e\x63\x6f\x6d\x2f\x6f\x63\x73\x70\x2d\x64\x65\x76\x69\x64\x30\x31\x30\x1d\x06\x03\x55\x1d\x0e\x04\x16\x04\x14\x48\x54\x85\xa6\xcc\x90\x09\x20\xdd\x03\x8a\x2b\x77\xf9\x4a\x8c\x5c\xe3\xb5\x48\x30\x0c\x06\x03\x55\x1d\x13\x01\x01\xff\x04\x02\x30\x00\x30\x1f\x06\x03\x55\x1d\x23\x04\x18\x30\x16\x80\x14\x57\x17\xed\xa2\xcf\xdc\x7c\x98\xa1\x10\xe0\xfc\xbe\x87\x2d\x2c\xf2\xe3\x17\x54\x30\x82\x01\x0e\x06\x03\x55\x1d\x20\x04\x82\x01\x05\x30\x82\x01\x01\x30\x81\xfe\x06\x09\x2a\x86\x48\x86\xf7\x63\x64\x05\x01\x30\x81\xf0\x30\x28\x06\x08\x2b\x06\x01\x05\x05\x07\x02\x01\x16\x1c\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x61\x70\x70\x6c\x65\x2e\x63\x6f\x6d\x2f\x61\x70\x70\x6c\x65\x63\x61\x30\x81\xc3\x06\x08\x2b\x06\x01\x05\x05\x07\x02\x02\x30\x81\xb6\x0c\x81\xb3\x52\x65\x6c\x69\x61\x6e\x63\x65\x20\x6f\x6e\x20\x74\x68\x69\x73\x20\x63\x65\x72\x74\x69\x66\x69\x63\x61\x74\x65\x20\x62\x79\x20\x61\x6e\x79\x20\x70\x61\x72\x74\x79\x20\x61\x73\x73\x75\x6d\x65\x73\x20\x61\x63\x63\x65\x70\x74\x61\x6e\x63\x65\x20\x6f\x66\x20\x74\x68\x65\x20\x74\x68\x65\x6e\x20\x61\x70\x70\x6c\x69\x63\x61\x62\x6c\x65\x20\x73\x74\x61\x6e\x64\x61\x72\x64\x20\x74\x65\x72\x6d\x73\x20\x61\x6e\x64\x20\x63\x6f\x6e\x64\x69\x74\x69\x6f\x6e\x73\x20\x6f\x66\x20\x75\x73\x65\x2c\x20\x63\x65\x72\x74\x69\x66\x69\x63\x61\x74\x65\x20\x70\x6f\x6c\x69\x63\x79\x20\x61\x6e\x64\x20\x63\x65\x72\x74\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x20\x70\x72\x61\x63\x74\x69\x63\x65\x20\x73\x74\x61\x74\x65\x6d\x65\x6e\x74\x73\x2e\x30\x0e\x06\x03\x55\x1d\x0f\x01\x01\xff\x04\x04\x03\x02\x07\x80\x30\x16\x06\x03\x55\x1d\x25\x01\x01\xff\x04\x0c\x30\x0a\x06\x08\x2b\x06\x01\x05\x05\x07\x03\x03\x30\x13\x06\x0a\x2a\x86\x48\x86\xf7\x63\x64\x06\x01\x0d\x01\x01\xff\x04\x02\x05\x00\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x0b\x05\x00\x03\x82\x01\x01\x00\x2e\xf9\x27\xf3\x63\x91\x14\xa1\x59\xec\x13\x5a\x65\xad\x57\x11\x44\x7d\x23\x02\xd7\x77\x60\x8a\xdf\x02\x86\x3a\xf6\x05\x33\x98\x94\x5f\x7b\xc9\x22\xca\x27\x1c\xcf\x20\x25\xb6\x72\x02\x02\xa2\x4e\xcd\x49\xbf\x9c\xf8\xf5\x0e\x01\x6d\xe0\x0b\x4e\x20\x92\x2e\x88\x7a\x3a\xe6\x88\xca\x2c\x25\xa3\xbb\xb4\x94\xed\x84\xc6\x1e\x82\x31\xe6\xbc\x1e\x69\x78\xf9\xc6\x7d\x4d\xbe\x28\x71\x82\xc9\xb9\xb8\x1e\x79\x8b\x1c\x25\xcc\x8a\x34\xa4\xf3\x72\xa5\x5b\x01\x9a\x99\x46\x06\x82\x51\x5e\x00\x00\x6a\xb5\x38\x47\x15\xc4\x9a\x37\x1a\xfd\x82\x96\xe9\x3c\x6c\xba\x67\x64\x62\x54\xd2\x68\x79\xba\x94\xdf\xfe\xb9\x15\xd1\xe3\x54\x0f\x7b\xee\x3c\xb3\x9e\x6a\xc6\x08\x83\x55\xd8\xde\x5b\xf4\x27\x70\xea\x0c\x8c\xc7\x85\xb2\x1a\xf3\x18\x73\x3b\x4c\x0c\x3f\x71\xd3\x7e\xb2\x05\xcf\xb0\x38\x3c\x33\xb1\x10\xa2\xeb\x68\x85\xf3\x6f\xde\xa9\x83\x26\x51\x19\x47\x17\x9b\xd6\xeb\xfc\x11\x1c\xd0\xb3\x3b\x04\x7b\xe5\xb2\xee\x48\x83\x72\xc1\x9a\x75\x8b\x0f\xd3\x82\x29\xc3\x14\xe2\x85\xd1\x14\x33\xcd\xfe\xbf\x00\xd7\x17\xd1\x9b\x34\xfb\x15\x41\x74\xd1\x31\x82\x12\xd0\x30\x82\x12\xcc\x02\x01\x01\x30\x81\x85\x30\x79\x31\x2d\x30\x2b\x06\x03\x55\x04\x03\x0c\x24\x44\x65\x76\x65\x6c\x6f\x70\x65\x72\x20\x49\x44\x20\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x20\x41\x75\x74\x68\x6f\x72\x69\x74\x79\x31\x26\x30\x24\x06\x03\x55\x04\x0b\x0c\x1d\x41\x70\x70\x6c\x65\x20\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x20\x41\x75\x74\x68\x6f\x72\x69\x74\x79\x31\x13\x30\x11\x06\x03\x55\x04\x0a\x0c\x0a\x41\x70\x70\x6c\x65\x20\x49\x6e\x63\x2e\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x55\x53\x02\x08\x50\x64\x51\x77\x06\xf3\x9f\xc3\x30\x09\x06\x05\x2b\x0e\x03\x02\x1a\x05\x00\xa0\x5d\x30\x18\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x09\x03\x31\x0b\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x07\x01\x30\x1c\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x09\x05\x31\x0f\x17\x0d\x31\x35\x30\x31\x31\x33\x31\x35\x31\x39\x34\x30\x5a\x30\x23\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x09\x04\x31\x16\x04\x14\x32\x58\x61\x41\x9d\xf5\x1c\xcd\xb7\x05\xf4\x7c\xff\xbd\x83\x1d\x23\xb7\x93\xf0\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x01\x05\x00\x04\x82\x01\x00\x76\xc4\xb9\xb0\x93\xbf\xcc\xad\x86\x44\x7e\xc8\x92\xd3\x3c\x36\x54\x2d\x84\x2c\x4c\xbb\x56\xf6\xbf\x79\x8b\xfa\xa3\xc6\x8e\xdc\xeb\x11\x55\xbf\x11\xa8\xae\x32\xb0\xae\x7a\xc3\x60\xbe\x29\xce\x21\xcc\x6c\x8e\x06\x9d\xb1\xfc\x54\xb1\x0b\xd6\x51\xde\xaa\x34\xe9\x08\x47\x22\x3b\xd5\xdc\xd6\xc6\xaa\xa1\x8c\xe9\x75\x7d\x54\x7a\xc4\xf0\xd0\xa8\x44\x3e\x06\xcd\x22\x23\x32\x3f\x94\x93\x04\xfc\xcb\x76\x71\x2d\x57\xa0\x58\xe4\xfd\xde\x9d\x14\x18\x8e\x3c\x6d\x52\x27\xf7\xc2\x1f\xdc\x6a\x58\x07\xf6\xcc\x1d\x13\x4c\xb4\x36\x12\x8b\xeb\xfc\x9f\xf7\x91\x52\xf9\x6b\x54\x4c\xc4\xe0\x50\xe0\x8a\x7d\xed\x88\x8c\xa8\x5c\x79\x3f\x8c\x30\x58\xc2\x9e\xcd\x19\x37\x12\xed\x3a\xc0\x5c\xf1\x15\x5a\x15\xfc\xdb\x45\xd3\x00\xc2\x8b\x71\x22\xde\xe3\x72\xc5\x35\xd7\xe2\x9d\xa2\x16\xb1\x0e\x8c\xdd\xf0\x37\x9f\x6b\xf1\xd8\x11\x0a\x66\xf3\x5a\xaa\x2b\x6d\x57\x14\xef\x76\x19\xbc\x6e\x95\xa3\x26\x44\x56\x0e\x75\xf5\x2c\xe7\x25\x62\x99\xca\xaa\x54\x95\x3b\x85\xec\xc6\x4f\x0c\x31\xdf\xbb\x87\x4b\x1f\x24\x46\x6b\x1a\x33\xa7\x60\xfa\x33\x8e\x16\xf5\xa1\x82\x10\xc0\x30\x82\x10\xbc\x06\x0b\x2a\x86\x48\x86\xf7\x0d\x01\x09\x10\x02\x0e\x31\x82\x10\xab\x30\x82\x10\xa7\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x07\x02\xa0\x82\x10\x98\x30\x82\x10\x94\x02\x01\x03\x31\x0b\x30\x09\x06\x05\x2b\x0e\x03\x02\x1a\x05\x00\x30\x6b\x06\x0b\x2a\x86\x48\x86\xf7\x0d\x01\x09\x10\x01\x04\xa0\x5c\x04\x5a\x30\x58\x02\x01\x01\x06\x05\x2a\x03\x04\x05\x06\x30\x21\x30\x09\x06\x05\x2b\x0e\x03\x02\x1a\x05\x00\x04\x14\x82\xf8\x85\x43\xc1\x3a\xb8\x9e\xb9\x8c\x21\x51\x1f\x69\xda\xdc\x26\x03\xee\xe6\x02\x08\x2f\x99\xe9\xe8\xfc\x26\x99\xfa\x18\x0f\x32\x30\x31\x35\x30\x31\x31\x33\x31\x35\x31\x39\x34\x35\x5a\x30\x03\x02\x01\x01\x02\x09\x00\xda\xe9\x16\x86\xbc\x93\xb8\xcc\xa0\x82\x0d\xd0\x30\x82\x05\x02\x30\x82\x03\xea\xa0\x03\x02\x01\x02\x02\x08\x41\xbd\xfc\x96\xe6\x12\xee\xf3\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x0b\x05\x00\x30\x7c\x31\x30\x30\x2e\x06\x03\x55\x04\x03\x0c\x27\x41\x70\x70\x6c\x65\x20\x54\x69\x6d\x65\x73\x74\x61\x6d\x70\x20\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x20\x41\x75\x74\x68\x6f\x72\x69\x74\x79\x31\x26\x30\x24\x06\x03\x55\x04\x0b\x0c\x1d\x41\x70\x70\x6c\x65\x20\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x20\x41\x75\x74\x68\x6f\x72\x69\x74\x79\x31\x13\x30\x11\x06\x03\x55\x04\x0a\x0c\x0a\x41\x70\x70\x6c\x65\x20\x49\x6e\x63\x2e\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x55\x53\x30\x1e\x17\x0d\x31\x35\x30\x31\x30\x37\x31\x36\x35\x35\x31\x36\x5a\x17\x0d\x31\x35\x30\x32\x31\x38\x31\x36\x35\x35\x31\x36\x5a\x30\x41\x31\x1d\x30\x1b\x06\x03\x55\x04\x03\x0c\x14\x54\x69\x6d\x65\x73\x74\x61\x6d\x70\x20\x53\x69\x67\x6e\x65\x72\x20\x4c\x54\x4e\x31\x13\x30\x11\x06\x03\x55\x04\x0a\x0c\x0a\x41\x70\x70\x6c\x65\x20\x49\x6e\x63\x2e\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x55\x53\x30\x82\x01\x22\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x01\x05\x00\x03\x82\x01\x0f\x00\x30\x82\x01\x0a\x02\x82\x01\x01\x00\xcb\xcd\xea\x7f\x42\xf8\x43\x94\xb9\x5c\x25\x68\xe8\xcc\x18\xb9\x83\x6a\x81\x74\x95\x19\x0f\x39\x72\xef\xe1\x4b\xe0\xe6\x6d\xc6\x76\x36\x77\xa6\x6e\x1d\xed\xbe\x3f\xf4\x3a\x70\x16\x23\xa7\x4e\xcc\x80\xb1\x10\x4f\x84\x48\x56\xfb\xc7\xe4\x64\x19\x63\x06\xaf\x68\x2b\xfa\x5c\x59\xd2\xba\x21\xa2\x86\x43\xa5\xd9\x0c\x5f\x46\x03\xf2\x55\xe0\x07\xfb\xbc\x14\x7c\xe0\xcb\xb9\x16\xd7\xc3\xeb\x88\x25\x7b\xc9\xe4\xd5\x89\x35\xa2\x07\xde\x39\x97\x46\x46\x7f\x1c\x20\x43\x96\x84\xdd\x1f\x4f\x2c\xac\x7e\x08\xff\xb8\xac\xe1\x9d\xe7\xb7\xa6\x88\x87\x00\x12\x1d\x1a\x04\x8f\xd9\x6d\x66\x17\xee\x02\x31\x2e\x61\x92\xb9\x85\xfd\x8c\x85\x17\xb7\x9e\xfc\xef\x00\x67\xb7\x51\xb6\x40\xf6\x9d\x76\xd7\x8d\xac\xfa\x37\xcd\x24\xff\xa3\x8c\x22\x78\x2d\x41\xb6\x2b\xcb\x99\xf0\x36\x2e\x39\xca\xb4\x83\x67\x38\x9b\x0d\x66\x06\xb1\xd6\xd2\x85\xd1\x03\x03\xd9\x26\x09\x13\xdd\xf6\x5f\x55\x15\x68\xfb\xd2\x17\xb9\xbd\x6b\xe1\x90\x23\x70\x0a\x4c\xfa\x1f\x90\x6c\xc6\x8b\xac\xa2\xf8\x8d\xa5\x64\x1d\xad\x93\x18\x83\xb4\x03\xd3\x4a\xe3\xb0\x53\x12\xee\x89\x02\x03\x01\x00\x01\xa3\x82\x01\xc1\x30\x82\x01\xbd\x30\x1d\x06\x03\x55\x1d\x0e\x04\x16\x04\x14\x0b\x0d\x80\x04\x9d\xd2\x43\xca\xc3\x06\x8a\x35\xd3\x4a\x30\xb1\xea\x92\x61\xe5\x30\x0c\x06\x03\x55\x1d\x13\x01\x01\xff\x04\x02\x30\x00\x30\x1f\x06\x03\x55\x1d\x23\x04\x18\x30\x16\x80\x14\x34\xcd\x25\x4e\xcd\xde\x37\x85\x38\xa1\x58\x26\xf8\xf9\xe2\x29\xde\xf2\x1c\x93\x30\x82\x01\x0e\x06\x03\x55\x1d\x20\x04\x82\x01\x05\x30\x82\x01\x01\x30\x81\xfe\x06\x09\x2a\x86\x48\x86\xf7\x63\x64\x05\x01\x30\x81\xf0\x30\x28\x06\x08\x2b\x06\x01\x05\x05\x07\x02\x01\x16\x1c\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x61\x70\x70\x6c\x65\x2e\x63\x6f\x6d\x2f\x61\x70\x70\x6c\x65\x63\x61\x30\x81\xc3\x06\x08\x2b\x06\x01\x05\x05\x07\x02\x02\x30\x81\xb6\x0c\x81\xb3\x52\x65\x6c\x69\x61\x6e\x63\x65\x20\x6f\x6e\x20\x74\x68\x69\x73\x20\x63\x65\x72\x74\x69\x66\x69\x63\x61\x74\x65\x20\x62\x79\x20\x61\x6e\x79\x20\x70\x61\x72\x74\x79\x20\x61\x73\x73\x75\x6d\x65\x73\x20\x61\x63\x63\x65\x70\x74\x61\x6e\x63\x65\x20\x6f\x66\x20\x74\x68\x65\x20\x74\x68\x65\x6e\x20\x61\x70\x70\x6c\x69\x63\x61\x62\x6c\x65\x20\x73\x74\x61\x6e\x64\x61\x72\x64\x20\x74\x65\x72\x6d\x73\x20\x61\x6e\x64\x20\x63\x6f\x6e\x64\x69\x74\x69\x6f\x6e\x73\x20\x6f\x66\x20\x75\x73\x65\x2c\x20\x63\x65\x72\x74\x69\x66\x69\x63\x61\x74\x65\x20\x70\x6f\x6c\x69\x63\x79\x20\x61\x6e\x64\x20\x63\x65\x72\x74\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x20\x70\x72\x61\x63\x74\x69\x63\x65\x20\x73\x74\x61\x74\x65\x6d\x65\x6e\x74\x73\x2e\x30\x33\x06\x03\x55\x1d\x1f\x04\x2c\x30\x2a\x30\x28\xa0\x26\xa0\x24\x86\x22\x68\x74\x74\x70\x3a\x2f\x2f\x63\x72\x6c\x2e\x61\x70\x70\x6c\x65\x2e\x63\x6f\x6d\x2f\x74\x69\x6d\x65\x73\x74\x61\x6d\x70\x2e\x63\x72\x6c\x30\x0e\x06\x03\x55\x1d\x0f\x01\x01\xff\x04\x04\x03\x02\x07\x80\x30\x16\x06\x03\x55\x1d\x25\x01\x01\xff\x04\x0c\x30\x0a\x06\x08\x2b\x06\x01\x05\x05\x07\x03\x08\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x0b\x05\x00\x03\x82\x01\x01\x00\x8e\xee\xbe\x02\x07\x9a\x64\x8b\x2b\xf1\x82\xf3\x18\xc5\x84\xef\x39\x32\x9d\x23\x14\xbe\xbb\xa5\x46\x1a\x5e\xdc\x3e\x68\x04\xe5\x25\xcb\x60\x62\x01\x41\xca\x9a\x8a\x73\xd1\xbb\x2e\xa8\x10\xde\x2a\x55\x23\x88\x34\xe2\xdb\x5b\x78\xfe\xf7\x4f\xbd\x9e\xc8\x8f\xea\x38\x60\x94\x9e\x62\x4c\x16\xf4\x41\xd0\x8d\x2a\x49\x37\x21\xd2\x65\x31\xf3\x75\x0c\x23\xf6\xb1\xc8\x1c\x93\xd4\xa0\xd6\x75\x5c\x6e\x42\xeb\x02\xdd\x50\x67\x79\xec\x80\x64\x8d\x1c\x99\x2c\x27\x58\xc0\x3a\xbd\xb7\xf5\x40\x3d\x26\xfe\x2b\xd9\x14\x2e\x02\x4c\x6c\x2f\xec\x37\x54\x53\xad\x25\x19\xf2\xfd\x4e\x10\xb8\x91\x05\x59\xb3\x03\xdb\xd7\x49\x0b\x5c\xf0\xbb\xfa\x5b\x92\x4f\x9c\x58\x67\x30\x20\xa9\xfc\x41\xc9\xf7\x84\x99\xee\xb9\x9c\xe8\xcd\xe7\xdd\x7c\x9a\x8b\x08\x03\x30\x61\x8a\xea\xf8\x7f\x59\x05\x06\x7a\xe7\xbc\x5f\x6f\xf1\xd0\x09\xca\x52\x39\x48\x57\xd3\x13\x3a\x7c\xbd\x78\x43\x99\x71\x3c\x7c\xbb\x84\x8a\x61\xc6\x92\x96\x3e\x20\x90\x3b\xa6\x90\x4e\xc0\xec\xe6\xd7\x86\xc3\x98\x41\x21\x6a\x00\xe6\x7c\xc3\x59\x6f\x75\x2b\x06\x0c\x97\xc9\x31\x3c\xb4\xce\x30\x82\x04\x07\x30\x82\x02\xef\xa0\x03\x02\x01\x02\x02\x08\x7d\x4c\x57\x63\x9f\xf3\xf0\xb7\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x0b\x05\x00\x30\x62\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x55\x53\x31\x13\x30\x11\x06\x03\x55\x04\x0a\x13\x0a\x41\x70\x70\x6c\x65\x20\x49\x6e\x63\x2e\x31\x26\x30\x24\x06\x03\x55\x04\x0b\x13\x1d\x41\x70\x70\x6c\x65\x20\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x20\x41\x75\x74\x68\x6f\x72\x69\x74\x79\x31\x16\x30\x14\x06\x03\x55\x04\x03\x13\x0d\x41\x70\x70\x6c\x65\x20\x52\x6f\x6f\x74\x20\x43\x41\x30\x1e\x17\x0d\x31\x32\x30\x34\x30\x35\x31\x32\x30\x32\x34\x34\x5a\x17\x0d\x32\x37\x30\x34\x30\x35\x31\x32\x30\x32\x34\x34\x5a\x30\x7c\x31\x30\x30\x2e\x06\x03\x55\x04\x03\x0c\x27\x41\x70\x70\x6c\x65\x20\x54\x69\x6d\x65\x73\x74\x61\x6d\x70\x20\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x20\x41\x75\x74\x68\x6f\x72\x69\x74\x79\x31\x26\x30\x24\x06\x03\x55\x04\x0b\x0c\x1d\x41\x70\x70\x6c\x65\x20\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x20\x41\x75\x74\x68\x6f\x72\x69\x74\x79\x31\x13\x30\x11\x06\x03\x55\x04\x0a\x0c\x0a\x41\x70\x70\x6c\x65\x20\x49\x6e\x63\x2e\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x55\x53\x30\x82\x01\x22\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x01\x05\x00\x03\x82\x01\x0f\x00\x30\x82\x01\x0a\x02\x82\x01\x01\x00\xd3\x77\x18\xa1\xf7\x99\x10\x67\x5c\xd2\x2e\x9e\xb8\x8f\x23\x67\x3e\xfc\x42\xe2\x09\x7d\x0a\x8a\xb8\x18\xfc\x73\x40\x2f\xbd\xc4\xd8\x50\xc5\x27\xc8\xfe\xb8\x34\x70\xa0\x0d\x13\x3c\xbd\x08\x4e\x9a\x93\x6f\x39\x37\xda\x9e\x65\xf5\xb4\x63\xf4\x90\xc8\x49\x6d\x5d\x20\xd3\x39\xfd\x09\xba\xf4\x3a\xf3\xce\x4a\x69\x64\x05\x99\x46\xe0\xda\x35\xc4\x65\x18\x1e\xc6\x16\xa3\x12\x61\xb4\x2e\xf5\xf0\x89\x0d\x8c\xdc\x3d\xf6\x06\xcf\x6f\x86\x25\x4c\x09\xc2\x1b\xc8\x0e\x78\x88\x8d\xc1\x22\xb8\xba\x21\x13\x9b\xca\xee\x8a\x9e\xdd\x7b\x5b\xff\xa3\xe9\xd1\xa3\x81\x7e\xfe\xff\xe6\x8c\x49\xe4\x3b\x0a\xf9\x10\xa6\x72\x33\xbb\x2c\xc4\x4a\x5a\x72\x0a\x39\x50\x74\xdd\x28\x6e\x79\x5f\x7e\xa7\xa8\x14\xcf\x56\xb3\x56\x6c\xa5\xe9\xf0\xc4\xae\xf9\xea\x20\x8e\x18\xc7\x28\x74\xe2\x08\x4d\x89\x26\x42\x79\x5e\xf6\x60\xe3\x45\x58\xa1\xfb\x51\x49\x5e\x92\x4a\x4d\xb9\xef\xd4\x73\xb5\xda\x04\x7b\xe3\x52\x9f\xcb\xa3\x19\x5d\xac\x6b\x98\x6c\x9e\xe2\xec\x74\x2d\x44\x3e\xe0\x61\x3e\x07\x45\x7e\x34\x75\x26\x98\x40\x9b\x75\x9e\xc8\x30\xed\x4b\xbf\x77\x8f\x02\x03\x01\x00\x01\xa3\x81\xa6\x30\x81\xa3\x30\x1d\x06\x03\x55\x1d\x0e\x04\x16\x04\x14\x34\xcd\x25\x4e\xcd\xde\x37\x85\x38\xa1\x58\x26\xf8\xf9\xe2\x29\xde\xf2\x1c\x93\x30\x0f\x06\x03\x55\x1d\x13\x01\x01\xff\x04\x05\x30\x03\x01\x01\xff\x30\x1f\x06\x03\x55\x1d\x23\x04\x18\x30\x16\x80\x14\x2b\xd0\x69\x47\x94\x76\x09\xfe\xf4\x6b\x8d\x2e\x40\xa6\xf7\x47\x4d\x7f\x08\x5e\x30\x2e\x06\x03\x55\x1d\x1f\x04\x27\x30\x25\x30\x23\xa0\x21\xa0\x1f\x86\x1d\x68\x74\x74\x70\x3a\x2f\x2f\x63\x72\x6c\x2e\x61\x70\x70\x6c\x65\x2e\x63\x6f\x6d\x2f\x72\x6f\x6f\x74\x2e\x63\x72\x6c\x30\x0e\x06\x03\x55\x1d\x0f\x01\x01\xff\x04\x04\x03\x02\x01\x86\x30\x10\x06\x0a\x2a\x86\x48\x86\xf7\x63\x64\x06\x02\x09\x04\x02\x05\x00\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x0b\x05\x00\x03\x82\x01\x01\x00\x36\xd2\xf5\xde\x71\x53\x07\xc9\x23\xd8\x78\x9b\x65\xbc\xf3\xd5\x5b\xe9\xb8\x7f\x1b\x23\xc7\xa2\xcf\xb4\xa9\x28\xe9\xf8\xdd\x70\x88\x21\x39\xf3\xdb\x33\x9c\xc3\x72\x43\xd6\x3d\x42\x51\x97\xba\xad\x1d\x8e\x92\xd2\x75\x8b\xc3\x5d\x9c\xf5\xcb\x8c\xdc\x6a\x6a\x3a\xdd\xeb\x54\x7d\xed\x14\x6b\xf3\xd6\x3e\x93\xc8\x6d\x7a\x54\x5f\xf2\x43\x8e\x10\xd0\x76\x5c\x9b\x00\x0c\x1d\x4e\xca\x3c\xcd\xfa\xe6\xf7\xc2\x3e\x72\xb7\xb8\xde\xe8\x34\xaa\x15\xa0\xae\x5c\x67\xa8\x0c\xac\x9b\x1e\x65\xb3\xe3\x0f\x30\x42\x34\xe9\xae\xd3\x01\xd3\xa7\xdd\x42\x73\x75\x7c\x51\x43\x85\x9a\x60\x10\xdc\xae\x27\xd2\x6b\x67\xc9\x33\x45\x6f\xc9\x98\x1e\xa0\x9a\x7f\x4d\x11\x93\xe1\x69\xff\xec\x4b\x45\xf3\x4e\xca\x22\x0e\x57\xd7\x22\x07\xe5\x22\xb4\x87\xe9\x9c\xd3\x45\xcb\x6e\x3f\xe5\x8e\xb8\xfc\x46\xd5\x5c\xc9\xb0\xab\x05\x3a\x6d\x37\x28\xa3\xa8\x46\x65\x6f\x55\xa1\x68\x88\xea\x52\x3e\xc9\xf4\xd4\xe6\xfa\x3f\xa4\xe4\x26\x80\xb5\x3a\x6b\xd6\xc3\xe5\xf9\x32\x81\xc8\x32\xa2\x48\xe1\x8e\x06\xa3\x19\xe4\xb3\xcb\x3b\x4b\xdf\xe0\xcc\x0e\xb2\xaf\x98\xd1\x83\x30\x82\x04\xbb\x30\x82\x03\xa3\xa0\x03\x02\x01\x02\x02\x01\x02\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x05\x05\x00\x30\x62\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x55\x53\x31\x13\x30\x11\x06\x03\x55\x04\x0a\x13\x0a\x41\x70\x70\x6c\x65\x20\x49\x6e\x63\x2e\x31\x26\x30\x24\x06\x03\x55\x04\x0b\x13\x1d\x41\x70\x70\x6c\x65\x20\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x20\x41\x75\x74\x68\x6f\x72\x69\x74\x79\x31\x16\x30\x14\x06\x03\x55\x04\x03\x13\x0d\x41\x70\x70\x6c\x65\x20\x52\x6f\x6f\x74\x20\x43\x41\x30\x1e\x17\x0d\x30\x36\x30\x34\x32\x35\x32\x31\x34\x30\x33\x36\x5a\x17\x0d\x33\x35\x30\x32\x30\x39\x32\x31\x34\x30\x33\x36\x5a\x30\x62\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x55\x53\x31\x13\x30\x11\x06\x03\x55\x04\x0a\x13\x0a\x41\x70\x70\x6c\x65\x20\x49\x6e\x63\x2e\x31\x26\x30\x24\x06\x03\x55\x04\x0b\x13\x1d\x41\x70\x70\x6c\x65\x20\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x20\x41\x75\x74\x68\x6f\x72\x69\x74\x79\x31\x16\x30\x14\x06\x03\x55\x04\x03\x13\x0d\x41\x70\x70\x6c\x65\x20\x52\x6f\x6f\x74\x20\x43\x41\x30\x82\x01\x22\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x01\x05\x00\x03\x82\x01\x0f\x00\x30\x82\x01\x0a\x02\x82\x01\x01\x00\xe4\x91\xa9\x09\x1f\x91\xdb\x1e\x47\x50\xeb\x05\xed\x5e\x79\x84\x2d\xeb\x36\xa2\x57\x4c\x55\xec\x8b\x19\x89\xde\xf9\x4b\x6c\xf5\x07\xab\x22\x30\x02\xe8\x18\x3e\xf8\x50\x09\xd3\x7f\x41\xa8\x98\xf9\xd1\xca\x66\x9c\x24\x6b\x11\xd0\xa3\xbb\xe4\x1b\x2a\xc3\x1f\x95\x9e\x7a\x0c\xa4\x47\x8b\x5b\xd4\x16\x37\x33\xcb\xc4\x0f\x4d\xce\x14\x69\xd1\xc9\x19\x72\xf5\x5d\x0e\xd5\x7f\x5f\x9b\xf2\x25\x03\xba\x55\x8f\x4d\x5d\x0d\xf1\x64\x35\x23\x15\x4b\x15\x59\x1d\xb3\x94\xf7\xf6\x9c\x9e\xcf\x50\xba\xc1\x58\x50\x67\x8f\x08\xb4\x20\xf7\xcb\xac\x2c\x20\x6f\x70\xb6\x3f\x01\x30\x8c\xb7\x43\xcf\x0f\x9d\x3d\xf3\x2b\x49\x28\x1a\xc8\xfe\xce\xb5\xb9\x0e\xd9\x5e\x1c\xd6\xcb\x3d\xb5\x3a\xad\xf4\x0f\x0e\x00\x92\x0b\xb1\x21\x16\x2e\x74\xd5\x3c\x0d\xdb\x62\x16\xab\xa3\x71\x92\x47\x53\x55\xc1\xaf\x2f\x41\xb3\xf8\xfb\xe3\x70\xcd\xe6\xa3\x4c\x45\x7e\x1f\x4c\x6b\x50\x96\x41\x89\xc4\x74\x62\x0b\x10\x83\x41\x87\x33\x8a\x81\xb1\x30\x58\xec\x5a\x04\x32\x8c\x68\xb3\x8f\x1d\xde\x65\x73\xff\x67\x5e\x65\xbc\x49\xd8\x76\x9f\x33\x14\x65\xa1\x77\x94\xc9\x2d\x02\x03\x01\x00\x01\xa3\x82\x01\x7a\x30\x82\x01\x76\x30\x0e\x06\x03\x55\x1d\x0f\x01\x01\xff\x04\x04\x03\x02\x01\x06\x30\x0f\x06\x03\x55\x1d\x13\x01\x01\xff\x04\x05\x30\x03\x01\x01\xff\x30\x1d\x06\x03\x55\x1d\x0e\x04\x16\x04\x14\x2b\xd0\x69\x47\x94\x76\x09\xfe\xf4\x6b\x8d\x2e\x40\xa6\xf7\x47\x4d\x7f\x08\x5e\x30\x1f\x06\x03\x55\x1d\x23\x04\x18\x30\x16\x80\x14\x2b\xd0\x69\x47\x94\x76\x09\xfe\xf4\x6b\x8d\x2e\x40\xa6\xf7\x47\x4d\x7f\x08\x5e\x30\x82\x01\x11\x06\x03\x55\x1d\x20\x04\x82\x01\x08\x30\x82\x01\x04\x30\x82\x01\x00\x06\x09\x2a\x86\x48\x86\xf7\x63\x64\x05\x01\x30\x81\xf2\x30\x2a\x06\x08\x2b\x06\x01\x05\x05\x07\x02\x01\x16\x1e\x68\x74\x74\x70\x73\x3a\x2f\x2f\x77\x77\x77\x2e\x61\x70\x70\x6c\x65\x2e\x63\x6f\x6d\x2f\x61\x70\x70\x6c\x65\x63\x61\x2f\x30\x81\xc3\x06\x08\x2b\x06\x01\x05\x05\x07\x02\x02\x30\x81\xb6\x1a\x81\xb3\x52\x65\x6c\x69\x61\x6e\x63\x65\x20\x6f\x6e\x20\x74\x68\x69\x73\x20\x63\x65\x72\x74\x69\x66\x69\x63\x61\x74\x65\x20\x62\x79\x20\x61\x6e\x79\x20\x70\x61\x72\x74\x79\x20\x61\x73\x73\x75\x6d\x65\x73\x20\x61\x63\x63\x65\x70\x74\x61\x6e\x63\x65\x20\x6f\x66\x20\x74\x68\x65\x20\x74\x68\x65\x6e\x20\x61\x70\x70\x6c\x69\x63\x61\x62\x6c\x65\x20\x73\x74\x61\x6e\x64\x61\x72\x64\x20\x74\x65\x72\x6d\x73\x20\x61\x6e\x64\x20\x63\x6f\x6e\x64\x69\x74\x69\x6f\x6e\x73\x20\x6f\x66\x20\x75\x73\x65\x2c\x20\x63\x65\x72\x74\x69\x66\x69\x63\x61\x74\x65\x20\x70\x6f\x6c\x69\x63\x79\x20\x61\x6e\x64\x20\x63\x65\x72\x74\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x20\x70\x72\x61\x63\x74\x69\x63\x65\x20\x73\x74\x61\x74\x65\x6d\x65\x6e\x74\x73\x2e\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x05\x05\x00\x03\x82\x01\x01\x00\x5c\x36\x99\x4c\x2d\x78\xb7\xed\x8c\x9b\xdc\xf3\x77\x9b\xf2\x76\xd2\x77\x30\x4f\xc1\x1f\x85\x83\x85\x1b\x99\x3d\x47\x37\xf2\xa9\x9b\x40\x8e\x2c\xd4\xb1\x90\x12\xd8\xbe\xf4\x73\x9b\xee\xd2\x64\x0f\xcb\x79\x4f\x34\xd8\xa2\x3e\xf9\x78\xff\x6b\xc8\x07\xec\x7d\x39\x83\x8b\x53\x20\xd3\x38\xc4\xb1\xbf\x9a\x4f\x0a\x6b\xff\x2b\xfc\x59\xa7\x05\x09\x7c\x17\x40\x56\x11\x1e\x74\xd3\xb7\x8b\x23\x3b\x47\xa3\xd5\x6f\x24\xe2\xeb\xd1\xb7\x70\xdf\x0f\x45\xe1\x27\xca\xf1\x6d\x78\xed\xe7\xb5\x17\x17\xa8\xdc\x7e\x22\x35\xca\x25\xd5\xd9\x0f\xd6\x6b\xd4\xa2\x24\x23\x11\xf7\xa1\xac\x8f\x73\x81\x60\xc6\x1b\x5b\x09\x2f\x92\xb2\xf8\x44\x48\xf0\x60\x38\x9e\x15\xf5\x3d\x26\x67\x20\x8a\x33\x6a\xf7\x0d\x82\xcf\xde\xeb\xa3\x2f\xf9\x53\x6a\x5b\x64\xc0\x63\x33\x77\xf7\x3a\x07\x2c\x56\xeb\xda\x0f\x21\x0e\xda\xba\x73\x19\x4f\xb5\xd9\x36\x7f\xc1\x87\x55\xd9\xa7\x99\xb9\x32\x42\xfb\xd8\xd5\x71\x9e\x7e\xa1\x52\xb7\x1b\xbd\x93\x42\x24\x12\x2a\xc7\x0f\x1d\xb6\x4d\x9c\x5e\x63\xc8\x4b\x80\x17\x50\xaa\x8a\xd5\xda\xe4\xfc\xd0\x09\x07\x37\xb0\x75\x75\x21\x31\x82\x02\x3f\x30\x82\x02\x3b\x02\x01\x01\x30\x81\x88\x30\x7c\x31\x30\x30\x2e\x06\x03\x55\x04\x03\x0c\x27\x41\x70\x70\x6c\x65\x20\x54\x69\x6d\x65\x73\x74\x61\x6d\x70\x20\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x20\x41\x75\x74\x68\x6f\x72\x69\x74\x79\x31\x26\x30\x24\x06\x03\x55\x04\x0b\x0c\x1d\x41\x70\x70\x6c\x65\x20\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x20\x41\x75\x74\x68\x6f\x72\x69\x74\x79\x31\x13\x30\x11\x06\x03\x55\x04\x0a\x0c\x0a\x41\x70\x70\x6c\x65\x20\x49\x6e\x63\x2e\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x55\x53\x02\x08\x41\xbd\xfc\x96\xe6\x12\xee\xf3\x30\x09\x06\x05\x2b\x0e\x03\x02\x1a\x05\x00\xa0\x81\x8c\x30\x1a\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x09\x03\x31\x0d\x06\x0b\x2a\x86\x48\x86\xf7\x0d\x01\x09\x10\x01\x04\x30\x1c\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x09\x05\x31\x0f\x17\x0d\x31\x35\x30\x31\x31\x33\x31\x35\x31\x39\x34\x35\x5a\x30\x23\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x09\x04\x31\x16\x04\x14\xdb\xf2\x5b\x44\x81\xc0\xd0\x7b\x5f\xf1\xe0\x6b\xf5\x7d\x8c\x74\xad\x3f\x63\xb2\x30\x2b\x06\x0b\x2a\x86\x48\x86\xf7\x0d\x01\x09\x10\x02\x0c\x31\x1c\x30\x1a\x30\x18\x30\x16\x04\x14\x10\x6f\x9a\x7d\x53\x9d\x98\xb0\xfc\xee\x34\x89\x5b\x4a\x00\x19\x22\xd8\x80\xe8\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x01\x05\x00\x04\x82\x01\x00\xa8\xd4\x55\xa2\xde\xb3\x3a\xaf\x55\x61\xff\x64\x42\xf4\x38\x22\xd5\x6d\xba\x35\x9f\x48\x10\x29\xa1\x59\x79\xc9\x4c\xcb\x38\x59\x19\x8e\xca\x81\x1e\x08\x33\x89\x03\x66\x5f\x2f\xd7\x23\xa5\xbc\xd6\x8e\xea\x67\xda\xfc\x68\xcc\x3e\x50\x96\x36\x5e\x22\xc1\xc3\xeb\xb8\x24\x65\xcd\x62\x29\x7f\x5f\xa8\x79\x8e\xd9\x3b\xbe\x30\x50\xaf\x5e\x0a\x82\x2f\xe9\x8e\x24\x36\x7f\xde\xfa\x50\x63\xf7\x49\xec\x0f\x57\x88\x24\xe9\xb9\x2a\xb6\x3f\x82\x4e\x8a\x79\x53\x80\x8a\x7c\x1c\xca\xb6\x32\x3e\x3e\x65\x44\x55\xae\x3b\xa8\x62\x01\x0e\xfe\x18\x46\xd7\xaf\x68\x26\x23\xd2\x52\x76\xc4\x5f\xb3\x75\xbc\xc6\xfb\x98\x74\x90\xbe\xe8\xe2\xd0\x3e\x4f\xd7\x61\xfa\xf3\x58\x86\xf3\x4d\x69\xeb\x5f\x8e\x4e\x0c\x66\xdf\x65\x90\x0c\xba\x24\x41\x87\x9d\x81\x34\xb5\xbf\xc0\x59\xa6\xd5\x7e\x84\x5e\x21\xf8\x51\xfa\x88\xfd\x89\xad\x4b\xb3\x58\x18\x43\x34\x8f\x76\xe4\x49\xea\x7b\x02\x33\x0f\x39\x0d\x51\x8b\xd7\x38\x9f\x79\xee\xf1\x2b\x6c\x86\x4b\x9b\x9c\x0d\xe3\x1a\xc8\x6b\xf1\x76\x28\x1e\x29\x1e\x11\x81\x0d\x0c\x5a\x43\x31\xfd\xca\x95\x4c\x10\x67\x46\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" - -func upnpc() ([]byte, error) { - return bindata_read( - _upnpc, - "upnpc", - ) -} - -// Asset loads and returns the asset for the given name. -// It returns an error if the asset could not be found or -// could not be loaded. -func Asset(name string) ([]byte, error) { - cannonicalName := strings.Replace(name, "\\", "/", -1) - if f, ok := _bindata[cannonicalName]; ok { - return f() - } - return nil, fmt.Errorf("Asset %s not found", name) -} - -// AssetNames returns the names of the assets. -func AssetNames() []string { - names := make([]string, 0, len(_bindata)) - for name := range _bindata { - names = append(names, name) - } - return names -} - -// _bindata is a table, holding each asset generator, mapped to its name. -var _bindata = map[string]func() ([]byte, error){ - "upnpc": upnpc, -} -// AssetDir returns the file names below a certain -// directory embedded in the file by go-bindata. -// For example if you run go-bindata on data/... and data contains the -// following hierarchy: -// data/ -// foo.txt -// img/ -// a.png -// b.png -// then AssetDir("data") would return []string{"foo.txt", "img"} -// AssetDir("data/img") would return []string{"a.png", "b.png"} -// AssetDir("foo.txt") and AssetDir("notexist") would return an error -// AssetDir("") will return []string{"data"}. -func AssetDir(name string) ([]string, error) { - node := _bintree - if len(name) != 0 { - cannonicalName := strings.Replace(name, "\\", "/", -1) - pathList := strings.Split(cannonicalName, "/") - for _, p := range pathList { - node = node.Children[p] - if node == nil { - return nil, fmt.Errorf("Asset %s not found", name) - } - } - } - if node.Func != nil { - return nil, fmt.Errorf("Asset %s not found", name) - } - rv := make([]string, 0, len(node.Children)) - for name := range node.Children { - rv = append(rv, name) - } - return rv, nil -} - -type _bintree_t struct { - Func func() ([]byte, error) - Children map[string]*_bintree_t -} -var _bintree = &_bintree_t{nil, map[string]*_bintree_t{ - "upnpc": &_bintree_t{upnpc, map[string]*_bintree_t{ - }}, -}} diff --git a/src/github.com/getlantern/go-igdman/igdman/upnpc_linux_386.go b/src/github.com/getlantern/go-igdman/igdman/upnpc_linux_386.go deleted file mode 100644 index aeaf6ff678..0000000000 --- a/src/github.com/getlantern/go-igdman/igdman/upnpc_linux_386.go +++ /dev/null @@ -1,44 +0,0 @@ -package igdman - -import ( - "fmt" - "reflect" - "unsafe" -) - -func bindata_read(data, name string) ([]byte, error) { - var empty [0]byte - sx := (*reflect.StringHeader)(unsafe.Pointer(&data)) - b := empty[:] - bx := (*reflect.SliceHeader)(unsafe.Pointer(&b)) - bx.Data = sx.Data - bx.Len = len(data) - bx.Cap = bx.Len - return b, nil -} - -var _upnpc = "\x7f\x45\x4c\x46\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x03\x00\x01\x00\x00\x00\xe0\x8d\x04\x08\x34\x00\x00\x00\x04\xe2\x00\x00\x00\x00\x00\x00\x34\x00\x20\x00\x09\x00\x28\x00\x1f\x00\x1c\x00\x06\x00\x00\x00\x34\x00\x00\x00\x34\x80\x04\x08\x34\x80\x04\x08\x20\x01\x00\x00\x20\x01\x00\x00\x05\x00\x00\x00\x04\x00\x00\x00\x03\x00\x00\x00\x54\x01\x00\x00\x54\x81\x04\x08\x54\x81\x04\x08\x13\x00\x00\x00\x13\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x80\x04\x08\x00\x80\x04\x08\x38\xd3\x00\x00\x38\xd3\x00\x00\x05\x00\x00\x00\x00\x10\x00\x00\x01\x00\x00\x00\x7c\xde\x00\x00\x7c\x6e\x05\x08\x7c\x6e\x05\x08\x54\x02\x00\x00\x5c\x02\x00\x00\x06\x00\x00\x00\x00\x10\x00\x00\x02\x00\x00\x00\x10\xdf\x00\x00\x10\x6f\x05\x08\x10\x6f\x05\x08\xc8\x00\x00\x00\xc8\x00\x00\x00\x06\x00\x00\x00\x04\x00\x00\x00\x04\x00\x00\x00\x68\x01\x00\x00\x68\x81\x04\x08\x68\x81\x04\x08\x44\x00\x00\x00\x44\x00\x00\x00\x04\x00\x00\x00\x04\x00\x00\x00\x50\xe5\x74\x64\xe0\xc2\x00\x00\xe0\x42\x05\x08\xe0\x42\x05\x08\x54\x02\x00\x00\x54\x02\x00\x00\x04\x00\x00\x00\x04\x00\x00\x00\x51\xe5\x74\x64\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x04\x00\x00\x00\x52\xe5\x74\x64\x7c\xde\x00\x00\x7c\x6e\x05\x08\x7c\x6e\x05\x08\x84\x01\x00\x00\x84\x01\x00\x00\x04\x00\x00\x00\x01\x00\x00\x00\x2f\x6c\x69\x62\x2f\x6c\x64\x2d\x6c\x69\x6e\x75\x78\x2e\x73\x6f\x2e\x32\x00\x00\x04\x00\x00\x00\x10\x00\x00\x00\x01\x00\x00\x00\x47\x4e\x55\x00\x00\x00\x00\x00\x02\x00\x00\x00\x06\x00\x00\x00\x18\x00\x00\x00\x04\x00\x00\x00\x14\x00\x00\x00\x03\x00\x00\x00\x47\x4e\x55\x00\x43\x31\x6b\x7c\xa8\x13\x5e\x99\x28\x44\xfc\x3e\x74\x08\x7f\x7f\x31\xc3\xec\x20\x03\x00\x00\x00\x35\x00\x00\x00\x01\x00\x00\x00\x05\x00\x00\x00\x00\x32\x68\x20\x35\x00\x00\x00\x36\x00\x00\x00\x38\x00\x00\x00\xcd\x8a\x60\xf0\xac\x4b\xe3\xc0\x75\x12\xeb\x15\x33\x39\xc0\xa1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x22\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x59\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\xb0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\xd4\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\xcd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x52\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11\x00\x00\x00\xcc\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\xf3\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x13\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x04\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\xd2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x82\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x03\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x49\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\xf8\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\xd9\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x62\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11\x00\x00\x00\x6e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\xe5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x53\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\xf0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x89\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x2d\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x92\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x1a\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\xa5\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\xdb\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\xed\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\xc8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x4a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x83\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\xb7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x7a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x68\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\xb8\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\xbf\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x42\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\xac\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\xa4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\xf5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x09\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x91\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x5a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x9f\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x34\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x9f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x98\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x09\x02\x00\x00\x04\x16\x05\x08\x94\x00\x00\x00\x12\x00\x0d\x00\x1a\x00\x00\x00\xe4\x22\x05\x08\x04\x00\x00\x00\x11\x00\x0f\x00\x1d\x02\x00\x00\x98\x16\x05\x08\xd1\x02\x00\x00\x12\x00\x0d\x00\x15\x02\x00\x00\x69\x19\x05\x08\x37\x01\x00\x00\x12\x00\x0d\x00\x00\x5f\x5f\x67\x6d\x6f\x6e\x5f\x73\x74\x61\x72\x74\x5f\x5f\x00\x6c\x69\x62\x63\x2e\x73\x6f\x2e\x36\x00\x5f\x49\x4f\x5f\x73\x74\x64\x69\x6e\x5f\x75\x73\x65\x64\x00\x73\x6f\x63\x6b\x65\x74\x00\x5f\x5f\x70\x72\x69\x6e\x74\x66\x5f\x63\x68\x6b\x00\x67\x61\x69\x5f\x73\x74\x72\x65\x72\x72\x6f\x72\x00\x5f\x5f\x73\x74\x72\x64\x75\x70\x00\x70\x65\x72\x72\x6f\x72\x00\x63\x6f\x6e\x6e\x65\x63\x74\x00\x69\x6e\x36\x61\x64\x64\x72\x5f\x61\x6e\x79\x00\x5f\x5f\x66\x64\x65\x6c\x74\x5f\x63\x68\x6b\x00\x73\x74\x72\x6e\x63\x70\x79\x00\x73\x65\x6c\x65\x63\x74\x00\x72\x65\x61\x6c\x6c\x6f\x63\x00\x73\x74\x72\x74\x6f\x6c\x00\x63\x61\x6c\x6c\x6f\x63\x00\x73\x65\x6e\x64\x00\x67\x65\x74\x61\x64\x64\x72\x69\x6e\x66\x6f\x00\x73\x74\x72\x73\x74\x72\x00\x5f\x5f\x65\x72\x72\x6e\x6f\x5f\x6c\x6f\x63\x61\x74\x69\x6f\x6e\x00\x62\x69\x6e\x64\x00\x72\x65\x61\x64\x00\x6d\x65\x6d\x63\x6d\x70\x00\x67\x65\x74\x6e\x61\x6d\x65\x69\x6e\x66\x6f\x00\x67\x65\x74\x73\x6f\x63\x6b\x6f\x70\x74\x00\x70\x6f\x6c\x6c\x00\x5f\x5f\x66\x70\x72\x69\x6e\x74\x66\x5f\x63\x68\x6b\x00\x63\x74\x69\x6d\x65\x00\x69\x6e\x65\x74\x5f\x61\x64\x64\x72\x00\x6d\x65\x6d\x63\x70\x79\x00\x73\x74\x72\x74\x6f\x75\x6c\x00\x73\x65\x74\x73\x6f\x63\x6b\x6f\x70\x74\x00\x6d\x61\x6c\x6c\x6f\x63\x00\x5f\x5f\x63\x74\x79\x70\x65\x5f\x62\x5f\x6c\x6f\x63\x00\x73\x73\x63\x61\x6e\x66\x00\x72\x65\x63\x76\x66\x72\x6f\x6d\x00\x73\x74\x64\x65\x72\x72\x00\x5f\x5f\x73\x6e\x70\x72\x69\x6e\x74\x66\x5f\x63\x68\x6b\x00\x73\x74\x72\x6e\x63\x61\x73\x65\x63\x6d\x70\x00\x69\x66\x5f\x6e\x61\x6d\x65\x74\x6f\x69\x6e\x64\x65\x78\x00\x69\x66\x5f\x69\x6e\x64\x65\x78\x74\x6f\x6e\x61\x6d\x65\x00\x5f\x5f\x6d\x65\x6d\x63\x70\x79\x5f\x63\x68\x6b\x00\x63\x6c\x6f\x73\x65\x00\x73\x74\x72\x63\x68\x72\x00\x67\x65\x74\x73\x6f\x63\x6b\x6e\x61\x6d\x65\x00\x73\x65\x6e\x64\x74\x6f\x00\x66\x72\x65\x65\x61\x64\x64\x72\x69\x6e\x66\x6f\x00\x6d\x65\x6d\x6d\x6f\x76\x65\x00\x73\x74\x72\x63\x6d\x70\x00\x5f\x5f\x6c\x69\x62\x63\x5f\x73\x74\x61\x72\x74\x5f\x6d\x61\x69\x6e\x00\x77\x72\x69\x74\x65\x00\x66\x72\x65\x65\x00\x5f\x5f\x73\x74\x61\x63\x6b\x5f\x63\x68\x6b\x5f\x66\x61\x69\x6c\x00\x49\x47\x44\x73\x74\x61\x72\x74\x65\x6c\x74\x00\x49\x47\x44\x64\x61\x74\x61\x00\x49\x47\x44\x65\x6e\x64\x65\x6c\x74\x00\x47\x4c\x49\x42\x43\x5f\x32\x2e\x33\x00\x47\x4c\x49\x42\x43\x5f\x32\x2e\x31\x35\x00\x47\x4c\x49\x42\x43\x5f\x32\x2e\x31\x00\x47\x4c\x49\x42\x43\x5f\x32\x2e\x34\x00\x47\x4c\x49\x42\x43\x5f\x32\x2e\x33\x2e\x34\x00\x47\x4c\x49\x42\x43\x5f\x32\x2e\x30\x00\x00\x00\x02\x00\x03\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x04\x00\x05\x00\x05\x00\x06\x00\x02\x00\x02\x00\x02\x00\x05\x00\x02\x00\x02\x00\x03\x00\x00\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x05\x00\x02\x00\x02\x00\x05\x00\x02\x00\x03\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x03\x00\x02\x00\x02\x00\x02\x00\x02\x00\x07\x00\x02\x00\x02\x00\x01\x00\x01\x00\x01\x00\x01\x00\x01\x00\x06\x00\x10\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x13\x69\x69\x0d\x00\x00\x07\x00\x27\x02\x00\x00\x10\x00\x00\x00\x95\x91\x96\x06\x00\x00\x06\x00\x31\x02\x00\x00\x10\x00\x00\x00\x11\x69\x69\x0d\x00\x00\x05\x00\x3c\x02\x00\x00\x10\x00\x00\x00\x14\x69\x69\x0d\x00\x00\x04\x00\x46\x02\x00\x00\x10\x00\x00\x00\x74\x19\x69\x09\x00\x00\x03\x00\x50\x02\x00\x00\x10\x00\x00\x00\x10\x69\x69\x0d\x00\x00\x02\x00\x5c\x02\x00\x00\x00\x00\x00\x00\xd8\x6f\x05\x08\x06\x35\x00\x00\xdc\x6f\x05\x08\x06\x06\x00\x00\xe0\x6f\x05\x08\x06\x11\x00\x00\xe4\x6f\x05\x08\x06\x38\x00\x00\xe8\x6f\x05\x08\x06\x1a\x00\x00\xec\x6f\x05\x08\x06\x37\x00\x00\x00\x70\x05\x08\x07\x01\x00\x00\x04\x70\x05\x08\x07\x02\x00\x00\x08\x70\x05\x08\x07\x03\x00\x00\x0c\x70\x05\x08\x07\x04\x00\x00\x10\x70\x05\x08\x07\x05\x00\x00\x14\x70\x05\x08\x07\x07\x00\x00\x18\x70\x05\x08\x07\x08\x00\x00\x1c\x70\x05\x08\x07\x09\x00\x00\x20\x70\x05\x08\x07\x0a\x00\x00\x24\x70\x05\x08\x07\x0b\x00\x00\x28\x70\x05\x08\x07\x0c\x00\x00\x2c\x70\x05\x08\x07\x0d\x00\x00\x30\x70\x05\x08\x07\x0e\x00\x00\x34\x70\x05\x08\x07\x0f\x00\x00\x38\x70\x05\x08\x07\x10\x00\x00\x3c\x70\x05\x08\x07\x12\x00\x00\x40\x70\x05\x08\x07\x13\x00\x00\x44\x70\x05\x08\x07\x14\x00\x00\x48\x70\x05\x08\x07\x15\x00\x00\x4c\x70\x05\x08\x07\x16\x00\x00\x50\x70\x05\x08\x07\x17\x00\x00\x54\x70\x05\x08\x07\x18\x00\x00\x58\x70\x05\x08\x07\x19\x00\x00\x5c\x70\x05\x08\x07\x1a\x00\x00\x60\x70\x05\x08\x07\x1b\x00\x00\x64\x70\x05\x08\x07\x1c\x00\x00\x68\x70\x05\x08\x07\x1d\x00\x00\x6c\x70\x05\x08\x07\x1e\x00\x00\x70\x70\x05\x08\x07\x1f\x00\x00\x74\x70\x05\x08\x07\x20\x00\x00\x78\x70\x05\x08\x07\x21\x00\x00\x7c\x70\x05\x08\x07\x22\x00\x00\x80\x70\x05\x08\x07\x23\x00\x00\x84\x70\x05\x08\x07\x24\x00\x00\x88\x70\x05\x08\x07\x25\x00\x00\x8c\x70\x05\x08\x07\x26\x00\x00\x90\x70\x05\x08\x07\x27\x00\x00\x94\x70\x05\x08\x07\x28\x00\x00\x98\x70\x05\x08\x07\x29\x00\x00\x9c\x70\x05\x08\x07\x2a\x00\x00\xa0\x70\x05\x08\x07\x2b\x00\x00\xa4\x70\x05\x08\x07\x2c\x00\x00\xa8\x70\x05\x08\x07\x2d\x00\x00\xac\x70\x05\x08\x07\x2e\x00\x00\xb0\x70\x05\x08\x07\x2f\x00\x00\xb4\x70\x05\x08\x07\x30\x00\x00\xb8\x70\x05\x08\x07\x31\x00\x00\xbc\x70\x05\x08\x07\x32\x00\x00\xc0\x70\x05\x08\x07\x33\x00\x00\xc4\x70\x05\x08\x07\x34\x00\x00\x53\x83\xec\x08\xe8\x00\x00\x00\x00\x5b\x81\xc3\x77\xe5\x00\x00\x8b\x83\xf4\xff\xff\xff\x85\xc0\x74\x05\xe8\x9d\x01\x00\x00\xe8\xd8\x03\x00\x00\xe8\xf3\x97\x00\x00\x83\xc4\x08\x5b\xc3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\x35\xf8\x6f\x05\x08\xff\x25\xfc\x6f\x05\x08\x00\x00\x00\x00\xff\x25\x00\x70\x05\x08\x68\x00\x00\x00\x00\xe9\xe0\xff\xff\xff\xff\x25\x04\x70\x05\x08\x68\x08\x00\x00\x00\xe9\xd0\xff\xff\xff\xff\x25\x08\x70\x05\x08\x68\x10\x00\x00\x00\xe9\xc0\xff\xff\xff\xff\x25\x0c\x70\x05\x08\x68\x18\x00\x00\x00\xe9\xb0\xff\xff\xff\xff\x25\x10\x70\x05\x08\x68\x20\x00\x00\x00\xe9\xa0\xff\xff\xff\xff\x25\x14\x70\x05\x08\x68\x28\x00\x00\x00\xe9\x90\xff\xff\xff\xff\x25\x18\x70\x05\x08\x68\x30\x00\x00\x00\xe9\x80\xff\xff\xff\xff\x25\x1c\x70\x05\x08\x68\x38\x00\x00\x00\xe9\x70\xff\xff\xff\xff\x25\x20\x70\x05\x08\x68\x40\x00\x00\x00\xe9\x60\xff\xff\xff\xff\x25\x24\x70\x05\x08\x68\x48\x00\x00\x00\xe9\x50\xff\xff\xff\xff\x25\x28\x70\x05\x08\x68\x50\x00\x00\x00\xe9\x40\xff\xff\xff\xff\x25\x2c\x70\x05\x08\x68\x58\x00\x00\x00\xe9\x30\xff\xff\xff\xff\x25\x30\x70\x05\x08\x68\x60\x00\x00\x00\xe9\x20\xff\xff\xff\xff\x25\x34\x70\x05\x08\x68\x68\x00\x00\x00\xe9\x10\xff\xff\xff\xff\x25\x38\x70\x05\x08\x68\x70\x00\x00\x00\xe9\x00\xff\xff\xff\xff\x25\x3c\x70\x05\x08\x68\x78\x00\x00\x00\xe9\xf0\xfe\xff\xff\xff\x25\x40\x70\x05\x08\x68\x80\x00\x00\x00\xe9\xe0\xfe\xff\xff\xff\x25\x44\x70\x05\x08\x68\x88\x00\x00\x00\xe9\xd0\xfe\xff\xff\xff\x25\x48\x70\x05\x08\x68\x90\x00\x00\x00\xe9\xc0\xfe\xff\xff\xff\x25\x4c\x70\x05\x08\x68\x98\x00\x00\x00\xe9\xb0\xfe\xff\xff\xff\x25\x50\x70\x05\x08\x68\xa0\x00\x00\x00\xe9\xa0\xfe\xff\xff\xff\x25\x54\x70\x05\x08\x68\xa8\x00\x00\x00\xe9\x90\xfe\xff\xff\xff\x25\x58\x70\x05\x08\x68\xb0\x00\x00\x00\xe9\x80\xfe\xff\xff\xff\x25\x5c\x70\x05\x08\x68\xb8\x00\x00\x00\xe9\x70\xfe\xff\xff\xff\x25\x60\x70\x05\x08\x68\xc0\x00\x00\x00\xe9\x60\xfe\xff\xff\xff\x25\x64\x70\x05\x08\x68\xc8\x00\x00\x00\xe9\x50\xfe\xff\xff\xff\x25\x68\x70\x05\x08\x68\xd0\x00\x00\x00\xe9\x40\xfe\xff\xff\xff\x25\x6c\x70\x05\x08\x68\xd8\x00\x00\x00\xe9\x30\xfe\xff\xff\xff\x25\x70\x70\x05\x08\x68\xe0\x00\x00\x00\xe9\x20\xfe\xff\xff\xff\x25\x74\x70\x05\x08\x68\xe8\x00\x00\x00\xe9\x10\xfe\xff\xff\xff\x25\x78\x70\x05\x08\x68\xf0\x00\x00\x00\xe9\x00\xfe\xff\xff\xff\x25\x7c\x70\x05\x08\x68\xf8\x00\x00\x00\xe9\xf0\xfd\xff\xff\xff\x25\x80\x70\x05\x08\x68\x00\x01\x00\x00\xe9\xe0\xfd\xff\xff\xff\x25\x84\x70\x05\x08\x68\x08\x01\x00\x00\xe9\xd0\xfd\xff\xff\xff\x25\x88\x70\x05\x08\x68\x10\x01\x00\x00\xe9\xc0\xfd\xff\xff\xff\x25\x8c\x70\x05\x08\x68\x18\x01\x00\x00\xe9\xb0\xfd\xff\xff\xff\x25\x90\x70\x05\x08\x68\x20\x01\x00\x00\xe9\xa0\xfd\xff\xff\xff\x25\x94\x70\x05\x08\x68\x28\x01\x00\x00\xe9\x90\xfd\xff\xff\xff\x25\x98\x70\x05\x08\x68\x30\x01\x00\x00\xe9\x80\xfd\xff\xff\xff\x25\x9c\x70\x05\x08\x68\x38\x01\x00\x00\xe9\x70\xfd\xff\xff\xff\x25\xa0\x70\x05\x08\x68\x40\x01\x00\x00\xe9\x60\xfd\xff\xff\xff\x25\xa4\x70\x05\x08\x68\x48\x01\x00\x00\xe9\x50\xfd\xff\xff\xff\x25\xa8\x70\x05\x08\x68\x50\x01\x00\x00\xe9\x40\xfd\xff\xff\xff\x25\xac\x70\x05\x08\x68\x58\x01\x00\x00\xe9\x30\xfd\xff\xff\xff\x25\xb0\x70\x05\x08\x68\x60\x01\x00\x00\xe9\x20\xfd\xff\xff\xff\x25\xb4\x70\x05\x08\x68\x68\x01\x00\x00\xe9\x10\xfd\xff\xff\xff\x25\xb8\x70\x05\x08\x68\x70\x01\x00\x00\xe9\x00\xfd\xff\xff\xff\x25\xbc\x70\x05\x08\x68\x78\x01\x00\x00\xe9\xf0\xfc\xff\xff\xff\x25\xc0\x70\x05\x08\x68\x80\x01\x00\x00\xe9\xe0\xfc\xff\xff\xff\x25\xc4\x70\x05\x08\x68\x88\x01\x00\x00\xe9\xd0\xfc\xff\xff\x31\xed\x5e\x89\xe1\x83\xe4\xf0\x50\x54\x52\x68\x60\x22\x05\x08\x68\xf0\x21\x05\x08\x51\x56\x68\x47\x96\x04\x08\xe8\x5f\xfe\xff\xff\xf4\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x55\x89\xe5\x53\x83\xec\x04\x80\x3d\xd0\x70\x05\x08\x00\x75\x3f\xa1\xd4\x70\x05\x08\xbb\x88\x6e\x05\x08\x81\xeb\x84\x6e\x05\x08\xc1\xfb\x02\x83\xeb\x01\x39\xd8\x73\x1e\x8d\xb6\x00\x00\x00\x00\x83\xc0\x01\xa3\xd4\x70\x05\x08\xff\x14\x85\x84\x6e\x05\x08\xa1\xd4\x70\x05\x08\x39\xd8\x72\xe8\xc6\x05\xd0\x70\x05\x08\x01\x83\xc4\x04\x5b\x5d\xc3\x8d\x74\x26\x00\x8d\xbc\x27\x00\x00\x00\x00\x55\x89\xe5\x83\xec\x18\xa1\x8c\x6e\x05\x08\x85\xc0\x74\x12\xb8\x00\x00\x00\x00\x85\xc0\x74\x09\xc7\x04\x24\x8c\x6e\x05\x08\xff\xd0\xc9\xc3\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x55\x57\x56\x53\x81\xec\x2c\x01\x00\x00\xe8\xd4\x20\x00\x00\x81\xc3\x45\xe1\x00\x00\x89\xc6\x89\xd5\x65\xa1\x14\x00\x00\x00\x89\x84\x24\x1c\x01\x00\x00\x31\xc0\x8d\xba\x04\x05\x00\x00\x8d\x44\x24\x34\x89\x44\x24\x08\x89\x7c\x24\x04\x8b\x06\x89\x04\x24\xe8\x6e\x41\x00\x00\x85\xc0\x74\x18\x8d\x83\xf4\xb2\xff\xff\x89\x44\x24\x04\xc7\x04\x24\x01\x00\x00\x00\xe8\xf2\xfd\xff\xff\xeb\x1e\x8d\x44\x24\x34\x89\x44\x24\x08\x8d\x83\x49\xc1\xff\xff\x89\x44\x24\x04\xc7\x04\x24\x01\x00\x00\x00\xe8\xd2\xfd\xff\xff\x8d\x84\x24\xb4\x00\x00\x00\x89\x44\x24\x10\x8d\x44\x24\x24\x89\x44\x24\x0c\x8d\x44\x24\x74\x89\x44\x24\x08\x89\x7c\x24\x04\x8b\x06\x89\x04\x24\xe8\xf0\x3e\x00\x00\x85\xc0\x74\x18\x8d\x83\x5f\xc1\xff\xff\x89\x44\x24\x04\xc7\x04\x24\x01\x00\x00\x00\xe8\x8f\xfd\xff\xff\xeb\x31\x8d\x84\x24\xb4\x00\x00\x00\x89\x44\x24\x10\x8b\x44\x24\x24\x89\x44\x24\x0c\x8d\x44\x24\x74\x89\x44\x24\x08\x8d\x83\x14\xb3\xff\xff\x89\x44\x24\x04\xc7\x04\x24\x01\x00\x00\x00\xe8\x5c\xfd\xff\xff\xc7\x04\x24\x00\x00\x00\x00\xe8\xa0\xfb\xff\xff\x2b\x44\x24\x24\x89\x44\x24\x30\x8d\x44\x24\x30\x89\x04\x24\xe8\xbc\xfb\xff\xff\x89\x44\x24\x08\x8d\x83\x76\xc1\xff\xff\x89\x44\x24\x04\xc7\x04\x24\x01\x00\x00\x00\xe8\x22\xfd\xff\xff\x8d\x44\x24\x28\x89\x44\x24\x0c\x8d\x44\x24\x2c\x89\x44\x24\x08\x81\xc5\x04\x03\x00\x00\x89\x6c\x24\x04\x8b\x46\x08\x89\x04\x24\xe8\xb6\x41\x00\x00\x85\xc0\x74\x1b\x8d\x83\x48\xb3\xff\xff\x89\x44\x24\x04\xc7\x04\x24\x01\x00\x00\x00\xe8\xe3\xfc\xff\xff\xe9\x5a\x01\x00\x00\x8b\x44\x24\x2c\x89\x44\x24\x08\x8d\x83\x8a\xc1\xff\xff\x89\x44\x24\x04\xc7\x04\x24\x01\x00\x00\x00\xe8\xc0\xfc\xff\xff\x8b\x4c\x24\x2c\x81\xf9\x3f\x42\x0f\x00\x76\x48\xbd\xa0\x86\x01\x00\x89\xc8\xba\x00\x00\x00\x00\xf7\xf5\xbd\x0a\x00\x00\x00\xba\x00\x00\x00\x00\xf7\xf5\x89\x54\x24\x0c\xbd\x40\x42\x0f\x00\x89\xc8\xba\x00\x00\x00\x00\xf7\xf5\x89\x44\x24\x08\x8d\x83\xa2\xc1\xff\xff\x89\x44\x24\x04\xc7\x04\x24\x01\x00\x00\x00\xe8\x6e\xfc\xff\xff\xeb\x30\x81\xf9\xe7\x03\x00\x00\x76\x28\xbd\xe8\x03\x00\x00\x89\xc8\xba\x00\x00\x00\x00\xf7\xf5\x89\x44\x24\x08\x8d\x83\xb0\xc1\xff\xff\x89\x44\x24\x04\xc7\x04\x24\x01\x00\x00\x00\xe8\x3c\xfc\xff\xff\x8b\x44\x24\x28\x89\x44\x24\x08\x8d\x83\xbb\xc1\xff\xff\x89\x44\x24\x04\xc7\x04\x24\x01\x00\x00\x00\xe8\x1e\xfc\xff\xff\x8b\x4c\x24\x28\x81\xf9\x3f\x42\x0f\x00\x76\x48\xbd\xa0\x86\x01\x00\x89\xc8\xba\x00\x00\x00\x00\xf7\xf5\xbd\x0a\x00\x00\x00\xba\x00\x00\x00\x00\xf7\xf5\x89\x54\x24\x0c\xbd\x40\x42\x0f\x00\x89\xc8\xba\x00\x00\x00\x00\xf7\xf5\x89\x44\x24\x08\x8d\x83\xa2\xc1\xff\xff\x89\x44\x24\x04\xc7\x04\x24\x01\x00\x00\x00\xe8\xcc\xfb\xff\xff\xeb\x30\x81\xf9\xe7\x03\x00\x00\x76\x28\xbd\xe8\x03\x00\x00\x89\xc8\xba\x00\x00\x00\x00\xf7\xf5\x89\x44\x24\x08\x8d\x83\xb0\xc1\xff\xff\x89\x44\x24\x04\xc7\x04\x24\x01\x00\x00\x00\xe8\x9a\xfb\xff\xff\x8d\x83\xba\xc2\xff\xff\x89\x44\x24\x04\xc7\x04\x24\x01\x00\x00\x00\xe8\x84\xfb\xff\xff\x8d\x84\x24\xf4\x00\x00\x00\x89\x44\x24\x08\x89\x7c\x24\x04\x8b\x06\x89\x04\x24\xe8\xf5\x41\x00\x00\x85\xc0\x74\x1c\x89\x44\x24\x08\x8d\x83\x6c\xb3\xff\xff\x89\x44\x24\x04\xc7\x04\x24\x01\x00\x00\x00\xe8\x4d\xfb\xff\xff\xeb\x21\x8d\x84\x24\xf4\x00\x00\x00\x89\x44\x24\x08\x8d\x83\xd2\xc1\xff\xff\x89\x44\x24\x04\xc7\x04\x24\x01\x00\x00\x00\xe8\x2a\xfb\xff\xff\x8b\x84\x24\x1c\x01\x00\x00\x65\x33\x05\x14\x00\x00\x00\x74\x05\xe8\x95\x90\x00\x00\x81\xc4\x2c\x01\x00\x00\x5b\x5e\x5f\x5d\xc3\x55\x57\x56\x53\x83\xec\x04\xe8\x91\x1d\x00\x00\x81\xc3\x02\xde\x00\x00\x8b\x74\x24\x18\xc7\x04\x24\x01\x00\x00\x00\xb8\x00\x00\x00\x00\x83\x3c\x24\x00\x74\x2d\x0f\xb6\x2c\x06\x0f\xb6\xbc\x18\xea\xc3\xff\xff\xc7\x04\x24\x01\x00\x00\x00\x89\xea\x89\xf9\x38\xca\x74\x12\x89\xfa\x83\xca\x20\x89\xe9\x38\xd1\x0f\x94\xc2\x0f\xb6\xd2\x89\x14\x24\x83\xc0\x01\x83\xf8\x04\x75\xc5\x8d\x83\xea\xc3\xff\xff\x83\x3c\x24\x00\x75\x52\xc7\x04\x24\x01\x00\x00\x00\xb8\x00\x00\x00\x00\x83\x3c\x24\x00\x74\x29\x0f\xb6\x2c\x06\x0f\xb6\xbc\x18\xee\xc3\xff\xff\xc7\x04\x24\x01\x00\x00\x00\x89\xe9\x89\xfa\x38\xd1\x74\x0e\x83\xca\x20\x38\xd1\x0f\x94\xc1\x0f\xb6\xc9\x89\x0c\x24\x83\xc0\x01\x83\xf8\x04\x75\xc9\x83\x3c\x24\x00\xb0\x00\x8d\x93\xee\xc3\xff\xff\x0f\x45\xc2\x83\xc4\x04\x5b\x5e\x5f\x5d\xc3\x81\xec\xdc\x00\x00\x00\x89\x9c\x24\xcc\x00\x00\x00\x89\xb4\x24\xd0\x00\x00\x00\x89\xbc\x24\xd4\x00\x00\x00\x89\xac\x24\xd8\x00\x00\x00\xe8\xb3\x1c\x00\x00\x81\xc3\x24\xdd\x00\x00\x89\xc7\x89\x54\x24\x3c\x8b\xac\x24\xe0\x00\x00\x00\x8b\x84\x24\xe4\x00\x00\x00\x89\x44\x24\x40\x8b\xb4\x24\xe8\x00\x00\x00\x8b\x84\x24\xec\x00\x00\x00\x8b\x94\x24\xf0\x00\x00\x00\x89\x54\x24\x44\x8b\x94\x24\xf4\x00\x00\x00\x89\x54\x24\x4c\x65\x8b\x15\x14\x00\x00\x00\x89\x94\x24\xbc\x00\x00\x00\x31\xd2\x85\xed\x74\x0f\x83\x7c\x24\x40\x00\x74\x08\x85\xf6\x74\x04\x85\xc0\x75\x27\x8d\x83\xea\xc1\xff\xff\x89\x44\x24\x08\xc7\x44\x24\x04\x01\x00\x00\x00\x8b\x83\xe8\xff\xff\xff\x8b\x00\x89\x04\x24\xe8\x09\xfa\xff\xff\xe9\xb3\x02\x00\x00\x89\x04\x24\xe8\x82\xfe\xff\xff\x89\x44\x24\x48\x85\xc0\x75\x27\x8d\x83\xfb\xc1\xff\xff\x89\x44\x24\x08\xc7\x44\x24\x04\x01\x00\x00\x00\x8b\x83\xe8\xff\xff\xff\x8b\x00\x89\x04\x24\xe8\xd2\xf9\xff\xff\xe9\x7c\x02\x00\x00\x8b\x44\x24\x3c\x05\x04\x05\x00\x00\x89\x44\x24\x3c\x8d\x44\x24\x50\x89\x44\x24\x08\x8b\x54\x24\x3c\x89\x54\x24\x04\x8b\x07\x89\x04\x24\xe8\xc0\x3f\x00\x00\x85\xc0\x74\x18\x8d\x83\x0d\xc2\xff\xff\x89\x44\x24\x04\xc7\x04\x24\x01\x00\x00\x00\xe8\x1c\xf9\xff\xff\xeb\x1e\x8d\x44\x24\x50\x89\x44\x24\x08\x8d\x83\xd2\xc1\xff\xff\x89\x44\x24\x04\xc7\x04\x24\x01\x00\x00\x00\xe8\xfc\xf8\xff\xff\x83\xbc\x24\xf8\x00\x00\x00\x00\x0f\x84\x98\x00\x00\x00\x8d\x84\x24\xb6\x00\x00\x00\x89\x44\x24\x24\x8b\x44\x24\x44\x89\x44\x24\x20\xc7\x44\x24\x1c\x00\x00\x00\x00\x8b\x44\x24\x48\x89\x44\x24\x18\x8b\x54\x24\x4c\x89\x54\x24\x14\x89\x6c\x24\x10\x8b\x44\x24\x40\x89\x44\x24\x0c\x89\x74\x24\x08\x8b\x54\x24\x3c\x89\x54\x24\x04\x8b\x07\x89\x04\x24\xe8\xdc\x42\x00\x00\x89\x44\x24\x44\x85\xc0\x0f\x84\xc5\x00\x00\x00\x89\x04\x24\xe8\xc1\x5f\x00\x00\x89\x44\x24\x18\x8b\x44\x24\x44\x89\x44\x24\x14\x89\x6c\x24\x10\x8b\x54\x24\x40\x89\x54\x24\x0c\x89\x74\x24\x08\x8d\x83\x9c\xb3\xff\xff\x89\x44\x24\x04\xc7\x04\x24\x01\x00\x00\x00\xe8\x5b\xf8\xff\xff\xe9\x8d\x00\x00\x00\x8b\x44\x24\x44\x89\x44\x24\x20\xc7\x44\x24\x1c\x00\x00\x00\x00\x8b\x44\x24\x48\x89\x44\x24\x18\x8b\x54\x24\x4c\x89\x54\x24\x14\x89\x6c\x24\x10\x8b\x44\x24\x40\x89\x44\x24\x0c\x89\x74\x24\x08\x8b\x54\x24\x3c\x89\x54\x24\x04\x8b\x07\x89\x04\x24\xe8\x0c\x40\x00\x00\x89\x44\x24\x44\x85\xc0\x74\x43\x89\x04\x24\xe8\x38\x5f\x00\x00\x89\x44\x24\x18\x8b\x44\x24\x44\x89\x44\x24\x14\x89\x6c\x24\x10\x8b\x54\x24\x40\x89\x54\x24\x0c\x89\x74\x24\x08\x8d\x83\xd4\xb3\xff\xff\x89\x44\x24\x04\xc7\x04\x24\x01\x00\x00\x00\xe8\xd2\xf7\xff\xff\xeb\x07\x8d\xb4\x24\xb6\x00\x00\x00\x8d\x84\x24\xa0\x00\x00\x00\x89\x44\x24\x24\xc7\x44\x24\x20\x00\x00\x00\x00\xc7\x44\x24\x1c\x00\x00\x00\x00\x8d\x84\x24\xb0\x00\x00\x00\x89\x44\x24\x18\x8d\x44\x24\x78\x89\x44\x24\x14\xc7\x44\x24\x10\x00\x00\x00\x00\x8b\x44\x24\x48\x89\x44\x24\x0c\x89\x74\x24\x08\x8b\x54\x24\x3c\x89\x54\x24\x04\x8b\x07\x89\x04\x24\xe8\xd2\x4c\x00\x00\x89\xc7\x85\xc0\x74\x28\x89\x04\x24\xe8\x9b\x5e\x00\x00\x89\x44\x24\x0c\x89\x7c\x24\x08\x8d\x83\x0c\xb4\xff\xff\x89\x44\x24\x04\xc7\x04\x24\x01\x00\x00\x00\xe8\x49\xf7\xff\xff\xeb\x66\x8d\xbc\x24\xb0\x00\x00\x00\x89\x7c\x24\x0c\x8d\x6c\x24\x78\x89\x6c\x24\x08\x8d\x83\x2b\xc2\xff\xff\x89\x44\x24\x04\xc7\x04\x24\x01\x00\x00\x00\xe8\x1e\xf7\xff\xff\x8d\x84\x24\xa0\x00\x00\x00\x89\x44\x24\x1c\x89\x7c\x24\x18\x89\x6c\x24\x14\x8b\x44\x24\x48\x89\x44\x24\x10\x89\x74\x24\x0c\x8d\x44\x24\x50\x89\x44\x24\x08\x8d\x83\x44\xb4\xff\xff\x89\x44\x24\x04\xc7\x04\x24\x01\x00\x00\x00\xe8\xe1\xf6\xff\xff\x8b\x94\x24\xbc\x00\x00\x00\x65\x33\x15\x14\x00\x00\x00\x74\x05\xe8\x4c\x8c\x00\x00\x8b\x9c\x24\xcc\x00\x00\x00\x8b\xb4\x24\xd0\x00\x00\x00\x8b\xbc\x24\xd4\x00\x00\x00\x8b\xac\x24\xd8\x00\x00\x00\x81\xc4\xdc\x00\x00\x00\xc3\x55\x89\xe5\x57\x56\x53\x83\xe4\xf0\x81\xec\x30\x0d\x00\x00\xe8\x28\x19\x00\x00\x81\xc3\x99\xd9\x00\x00\x8b\x45\x0c\x89\x44\x24\x48\x65\x8b\x15\x14\x00\x00\x00\x89\x94\x24\x2c\x0d\x00\x00\x31\xd2\xc7\x44\x24\x74\x00\x00\x00\x00\x8d\x83\x88\xb4\xff\xff\x89\x44\x24\x04\xc7\x04\x24\x01\x00\x00\x00\xe8\x5a\xf6\xff\xff\x8d\x83\xd0\xb4\xff\xff\x89\x44\x24\x04\xc7\x04\x24\x01\x00\x00\x00\xe8\x44\xf6\xff\xff\x83\x7d\x08\x01\x0f\x8e\x84\x01\x00\x00\xc7\x44\x24\x3c\x00\x00\x00\x00\xc7\x44\x24\x30\x00\x00\x00\x00\xc7\x44\x24\x34\x00\x00\x00\x00\xc7\x44\x24\x38\x00\x00\x00\x00\xc7\x44\x24\x40\x00\x00\x00\x00\xc7\x44\x24\x4c\x01\x00\x00\x00\x8b\x4c\x24\x4c\x8b\x54\x24\x48\x8b\x04\x8a\xb9\x07\x00\x00\x00\x8d\xbb\x4b\xc2\xff\xff\x89\xc6\xf3\xa6\x0f\x97\xc1\x0f\x92\xc2\x38\xd1\x0f\x84\x2c\x01\x00\x00\x80\x38\x2d\x0f\x85\x8e\x00\x00\x00\x80\x78\x01\x68\x75\x0a\x80\x78\x02\x00\x0f\x84\x13\x01\x00\x00\x0f\xb6\x40\x01\x3c\x75\x75\x19\x83\x44\x24\x4c\x01\x8b\x4c\x24\x4c\x8b\x44\x24\x48\x8b\x0c\x88\x89\x4c\x24\x40\xe9\x8d\x00\x00\x00\x3c\x6d\x75\x16\x83\x44\x24\x4c\x01\x8b\x44\x24\x4c\x8b\x54\x24\x48\x8b\x04\x82\x89\x44\x24\x38\xeb\x73\x3c\x70\x75\x16\x83\x44\x24\x4c\x01\x8b\x54\x24\x4c\x8b\x4c\x24\x48\x8b\x14\x91\x89\x54\x24\x34\xeb\x59\x3c\x36\x74\x4d\x3c\x65\x75\x16\x83\x44\x24\x4c\x01\x8b\x4c\x24\x4c\x8b\x44\x24\x48\x8b\x0c\x88\x89\x4c\x24\x3c\xeb\x3b\x89\xc6\x84\xc0\x75\x49\xe9\x95\x00\x00\x00\x89\x44\x24\x0c\x8d\x83\x52\xc2\xff\xff\x89\x44\x24\x08\xc7\x44\x24\x04\x01\x00\x00\x00\x8b\x93\xe8\xff\xff\xff\x8b\x02\x89\x04\x24\xe8\x95\xf5\xff\xff\xeb\x08\xc7\x44\x24\x30\x01\x00\x00\x00\x83\x44\x24\x4c\x01\x8b\x4c\x24\x4c\x39\x4d\x08\x0f\x8f\xff\xfe\xff\xff\xeb\x51\x8b\x44\x24\x4c\x83\xc0\x01\x89\x44\x24\x4c\x8b\x55\x08\x29\xc2\x89\x54\x24\x44\x89\xf1\x80\xf9\x61\x75\x05\x83\xfa\x03\x7e\x31\x89\xf0\x3c\x41\x75\x07\x83\x7c\x24\x44\x05\x7e\x24\x89\xf2\x80\xfa\x55\x75\x07\x83\x7c\x24\x44\x01\x7e\x16\x89\xf1\x80\xf9\x44\x0f\x85\x3f\x03\x00\x00\x83\x7c\x24\x44\x00\x0f\x8f\x34\x03\x00\x00\x8b\x54\x24\x48\x8b\x02\x89\x44\x24\x0c\x8d\x83\x28\xb5\xff\xff\x89\x44\x24\x08\xc7\x44\x24\x04\x01\x00\x00\x00\x8b\xb3\xe8\xff\xff\xff\x8b\x06\x89\x04\x24\xe8\xfa\xf4\xff\xff\x8b\x4c\x24\x48\x8b\x01\x89\x44\x24\x0c\x8d\x83\x84\xb5\xff\xff\x89\x44\x24\x08\xc7\x44\x24\x04\x01\x00\x00\x00\x8b\x06\x89\x04\x24\xe8\xd4\xf4\xff\xff\x8b\x54\x24\x48\x8b\x02\x89\x44\x24\x0c\x8d\x83\xe8\xb5\xff\xff\x89\x44\x24\x08\xc7\x44\x24\x04\x01\x00\x00\x00\x8b\x06\x89\x04\x24\xe8\xae\xf4\xff\xff\x8b\x4c\x24\x48\x8b\x01\x89\x44\x24\x0c\x8d\x83\x1c\xb6\xff\xff\x89\x44\x24\x08\xc7\x44\x24\x04\x01\x00\x00\x00\x8b\x06\x89\x04\x24\xe8\x88\xf4\xff\xff\x8b\x54\x24\x48\x8b\x02\x89\x44\x24\x0c\x8d\x83\x4c\xb6\xff\xff\x89\x44\x24\x08\xc7\x44\x24\x04\x01\x00\x00\x00\x8b\x06\x89\x04\x24\xe8\x62\xf4\xff\xff\x8b\x4c\x24\x48\x8b\x01\x89\x44\x24\x0c\x8d\x83\xa8\xb6\xff\xff\x89\x44\x24\x08\xc7\x44\x24\x04\x01\x00\x00\x00\x8b\x06\x89\x04\x24\xe8\x3c\xf4\xff\xff\x8b\x54\x24\x48\x8b\x02\x89\x44\x24\x0c\x8d\x83\x48\xb7\xff\xff\x89\x44\x24\x08\xc7\x44\x24\x04\x01\x00\x00\x00\x8b\x06\x89\x04\x24\xe8\x16\xf4\xff\xff\x8b\x4c\x24\x48\x8b\x01\x89\x44\x24\x0c\x8d\x83\xd0\xb7\xff\xff\x89\x44\x24\x08\xc7\x44\x24\x04\x01\x00\x00\x00\x8b\x06\x89\x04\x24\xe8\xf0\xf3\xff\xff\x8b\x54\x24\x48\x8b\x02\x89\x44\x24\x0c\x8d\x83\x3c\xb8\xff\xff\x89\x44\x24\x08\xc7\x44\x24\x04\x01\x00\x00\x00\x8b\x06\x89\x04\x24\xe8\xca\xf3\xff\xff\x8b\x4c\x24\x48\x8b\x01\x89\x44\x24\x0c\x8d\x83\xb8\xb8\xff\xff\x89\x44\x24\x08\xc7\x44\x24\x04\x01\x00\x00\x00\x8b\x06\x89\x04\x24\xe8\xa4\xf3\xff\xff\x8b\x54\x24\x48\x8b\x02\x89\x44\x24\x0c\x8d\x83\x0c\xb9\xff\xff\x89\x44\x24\x08\xc7\x44\x24\x04\x01\x00\x00\x00\x8b\x06\x89\x04\x24\xe8\x7e\xf3\xff\xff\x8b\x4c\x24\x48\x8b\x01\x89\x44\x24\x0c\x8d\x83\x60\xb9\xff\xff\x89\x44\x24\x08\xc7\x44\x24\x04\x01\x00\x00\x00\x8b\x06\x89\x04\x24\xe8\x58\xf3\xff\xff\x8b\x54\x24\x48\x8b\x02\x89\x44\x24\x0c\x8d\x83\xc4\xb9\xff\xff\x89\x44\x24\x08\xc7\x44\x24\x04\x01\x00\x00\x00\x8b\x06\x89\x04\x24\xe8\x32\xf3\xff\xff\x8b\x4c\x24\x48\x8b\x01\x89\x44\x24\x0c\x8d\x83\x08\xba\xff\xff\x89\x44\x24\x08\xc7\x44\x24\x04\x01\x00\x00\x00\x8b\x06\x89\x04\x24\xe8\x0c\xf3\xff\xff\x8b\x54\x24\x48\x8b\x02\x89\x44\x24\x0c\x8d\x83\x48\xba\xff\xff\x89\x44\x24\x08\xc7\x44\x24\x04\x01\x00\x00\x00\x8b\x06\x89\x04\x24\xe8\xe6\xf2\xff\xff\x8b\x4c\x24\x48\x8b\x01\x89\x44\x24\x0c\x8d\x83\xcc\xba\xff\xff\x89\x44\x24\x08\xc7\x44\x24\x04\x01\x00\x00\x00\x8b\x06\x89\x04\x24\xe8\xc0\xf2\xff\xff\x8d\x83\x67\xc2\xff\xff\x89\x44\x24\x08\xc7\x44\x24\x04\x01\x00\x00\x00\x8b\x06\x89\x04\x24\xe8\xa4\xf2\xff\xff\x8d\x83\x80\xc2\xff\xff\x89\x44\x24\x08\xc7\x44\x24\x04\x01\x00\x00\x00\x8b\x06\x89\x04\x24\xe8\x88\xf2\xff\xff\x8d\x83\xfc\xba\xff\xff\x89\x44\x24\x08\xc7\x44\x24\x04\x01\x00\x00\x00\x8b\x06\x89\x04\x24\xe8\x6c\xf2\xff\xff\x8d\x83\x34\xbb\xff\xff\x89\x44\x24\x08\xc7\x44\x24\x04\x01\x00\x00\x00\x8b\x06\x89\x04\x24\xe8\x50\xf2\xff\xff\x8d\x83\x58\xbb\xff\xff\x89\x44\x24\x08\xc7\x44\x24\x04\x01\x00\x00\x00\x8b\x06\x89\x04\x24\xe8\x34\xf2\xff\xff\x8d\x83\xa8\xbb\xff\xff\x89\x44\x24\x08\xc7\x44\x24\x04\x01\x00\x00\x00\x8b\x06\x89\x04\x24\xe8\x18\xf2\xff\xff\x8d\x83\x28\xbc\xff\xff\x89\x44\x24\x08\xc7\x44\x24\x04\x01\x00\x00\x00\x8b\x06\x89\x04\x24\xe8\xfc\xf1\xff\xff\xbe\x01\x00\x00\x00\xe9\xb6\x13\x00\x00\x83\x7c\x24\x40\x00\x75\x45\x8d\x44\x24\x74\x89\x44\x24\x14\x8b\x44\x24\x30\x89\x44\x24\x10\xc7\x44\x24\x0c\x00\x00\x00\x00\x8b\x54\x24\x34\x89\x54\x24\x08\x8b\x4c\x24\x38\x89\x4c\x24\x04\xc7\x04\x24\xd0\x07\x00\x00\xe8\xc1\x18\x00\x00\x89\x44\x24\x40\x85\xc0\x0f\x85\x83\x13\x00\x00\xe9\x43\x13\x00\x00\x8b\x44\x24\x74\x89\x44\x24\x08\x8d\x83\x8a\xc2\xff\xff\x89\x44\x24\x04\xc7\x04\x24\x01\x00\x00\x00\xe8\x18\xf1\xff\xff\x83\x7c\x24\x40\x00\x75\x35\xc7\x44\x24\x40\x00\x00\x00\x00\xeb\x69\x8b\x47\x08\x89\x44\x24\x0c\x8b\x47\x04\x89\x44\x24\x08\x89\x74\x24\x04\xc7\x04\x24\x01\x00\x00\x00\xe8\xe9\xf0\xff\xff\x8b\x3f\x85\xff\x75\xdc\x0f\xb6\x74\x24\x38\xeb\x3e\xc7\x44\x24\x10\x40\x00\x00\x00\x8d\x84\x24\x54\x0c\x00\x00\x89\x44\x24\x0c\x8d\x84\x24\x80\x00\x00\x00\x89\x44\x24\x08\x8d\x44\x24\x58\x89\x44\x24\x04\x8b\x44\x24\x40\x89\x04\x24\xe8\x9a\x2c\x00\x00\xc7\x44\x24\x40\x00\x00\x00\x00\x85\xc0\x75\x4d\xc7\x44\x24\x10\x40\x00\x00\x00\x8d\x84\x24\x54\x0c\x00\x00\x89\x44\x24\x0c\x8d\x84\x24\x80\x00\x00\x00\x89\x44\x24\x08\x8d\x44\x24\x58\x89\x44\x24\x04\x8b\x44\x24\x40\x89\x04\x24\xe8\x5f\x26\x00\x00\x85\xc0\x0f\x84\x3c\x12\x00\x00\x83\xf8\x02\x74\x31\x83\xf8\x03\x74\x62\x83\xf8\x01\x0f\x85\x8f\x00\x00\x00\x8b\x44\x24\x58\x89\x44\x24\x08\x8d\x83\xbc\xc2\xff\xff\x89\x44\x24\x04\xc7\x04\x24\x01\x00\x00\x00\xe8\x33\xf0\xff\xff\xe9\xa0\x00\x00\x00\x8b\x44\x24\x58\x89\x44\x24\x08\x8d\x83\x5c\xbc\xff\xff\x89\x44\x24\x04\xc7\x04\x24\x01\x00\x00\x00\xe8\x10\xf0\xff\xff\x8d\x83\xd2\xc2\xff\xff\x89\x44\x24\x04\xc7\x04\x24\x01\x00\x00\x00\xe8\xfa\xef\xff\xff\xeb\x6a\x8b\x44\x24\x58\x89\x44\x24\x08\x8d\x83\x80\xbc\xff\xff\x89\x44\x24\x04\xc7\x04\x24\x01\x00\x00\x00\xe8\xda\xef\xff\xff\x8d\x83\xd2\xc2\xff\xff\x89\x44\x24\x04\xc7\x04\x24\x01\x00\x00\x00\xe8\xc4\xef\xff\xff\xeb\x34\x8b\x44\x24\x58\x89\x44\x24\x08\x8d\x83\xed\xc2\xff\xff\x89\x44\x24\x04\xc7\x04\x24\x01\x00\x00\x00\xe8\xa4\xef\xff\xff\x8d\x83\xd2\xc2\xff\xff\x89\x44\x24\x04\xc7\x04\x24\x01\x00\x00\x00\xe8\x8e\xef\xff\xff\x8b\x54\x24\x4c\x8b\x4c\x24\x48\x8d\x3c\x91\x8d\x84\x24\x54\x0c\x00\x00\x89\x44\x24\x08\x8d\x83\x08\xc3\xff\xff\x89\x44\x24\x04\xc7\x04\x24\x01\x00\x00\x00\xe8\x62\xef\xff\xff\x89\xf0\x3c\x50\x0f\x84\xb4\x10\x00\x00\x3c\x50\x7f\x4f\x3c\x47\x66\x90\x0f\x84\x6f\x0f\x00\x00\x3c\x47\x7f\x21\x3c\x43\x8d\x74\x26\x00\x0f\x84\xaf\x0c\x00\x00\x3c\x44\x0f\x84\xfe\x0d\x00\x00\x3c\x41\x0f\x85\xc4\x10\x00\x00\xe9\xfa\x07\x00\x00\x3c\x4c\x8d\x76\x00\x0f\x84\x37\x02\x00\x00\x3c\x4e\x0f\x84\xbe\x05\x00\x00\x3c\x4b\x0f\x85\xa4\x10\x00\x00\xe9\x53\x0d\x00\x00\x89\xf1\x3c\x64\x90\x0f\x84\x35\x05\x00\x00\x3c\x64\x7f\x21\x3c\x55\x0f\x84\x16\x0a\x00\x00\x3c\x61\x0f\x84\x18\x04\x00\x00\x3c\x53\x8d\x74\x26\x00\x0f\x85\x74\x10\x00\x00\xe9\xb6\x0d\x00\x00\x80\xf9\x6e\x66\x90\x0f\x84\x1e\x05\x00\x00\x80\xf9\x6e\x7f\x0d\x80\xf9\x6c\x66\x90\x0f\x85\x54\x10\x00\x00\xeb\x1d\x80\xf9\x72\x90\x8d\x74\x26\x00\x0f\x84\x60\x07\x00\x00\x80\xf9\x73\x0f\x85\x3b\x10\x00\x00\x90\xe9\x56\x06\x00\x00\x8d\x94\x24\x80\x00\x00\x00\x8d\x44\x24\x58\xe8\x3b\xf0\xff\xff\x8d\x83\xa8\xbc\xff\xff\x89\x44\x24\x04\xc7\x04\x24\x01\x00\x00\x00\xe8\x75\xee\xff\xff\xbe\x00\x00\x00\x00\x8d\x8b\x23\xc3\xff\xff\x89\x4c\x24\x4c\x89\x74\x24\x14\x8b\x44\x24\x4c\x89\x44\x24\x10\xc7\x44\x24\x0c\x06\x00\x00\x00\xc7\x44\x24\x08\x01\x00\x00\x00\xc7\x44\x24\x04\x06\x00\x00\x00\x8d\xbc\x24\x14\x0d\x00\x00\x89\x3c\x24\xe8\x13\xec\xff\xff\xc6\x84\x24\x94\x0c\x00\x00\x00\xc6\x84\x24\x22\x0d\x00\x00\x00\xc6\x84\x24\xfc\x0c\x00\x00\x00\xc6\x84\x24\x04\x0c\x00\x00\x00\xc6\x84\x24\x1c\x0d\x00\x00\x00\xc6\x84\x24\x0c\x0d\x00\x00\x00\xc6\x84\x24\xd4\x0c\x00\x00\x00\x8d\x84\x24\xfc\x0c\x00\x00\x89\x44\x24\x28\x8d\x84\x24\x94\x0c\x00\x00\x89\x44\x24\x24\x8d\x84\x24\x22\x0d\x00\x00\x89\x44\x24\x20\x8d\x84\x24\x04\x0c\x00\x00\x89\x44\x24\x1c\x8d\x84\x24\x28\x0d\x00\x00\x89\x44\x24\x18\x8d\x84\x24\x0c\x0d\x00\x00\x89\x44\x24\x14\x8d\x84\x24\xd4\x0c\x00\x00\x89\x44\x24\x10\x8d\x84\x24\x1c\x0d\x00\x00\x89\x44\x24\x0c\x89\x7c\x24\x08\x8d\x84\x24\x84\x05\x00\x00\x89\x44\x24\x04\x8b\x44\x24\x58\x89\x04\x24\xe8\xa0\x3d\x00\x00\x89\xc7\x85\xc0\x75\x6f\x8d\x84\x24\xfc\x0c\x00\x00\x89\x44\x24\x24\x8d\x84\x24\x94\x0c\x00\x00\x89\x44\x24\x20\x8d\x84\x24\x04\x0c\x00\x00\x89\x44\x24\x1c\x8d\x84\x24\x0c\x0d\x00\x00\x89\x44\x24\x18\x8d\x84\x24\xd4\x0c\x00\x00\x89\x44\x24\x14\x8d\x84\x24\x1c\x0d\x00\x00\x89\x44\x24\x10\x8d\x84\x24\x28\x0d\x00\x00\x89\x44\x24\x0c\x89\x74\x24\x08\x8d\x83\xec\xbc\xff\xff\x89\x44\x24\x04\xc7\x04\x24\x01\x00\x00\x00\xe8\x1b\xed\xff\xff\x83\xc6\x01\xe9\xad\xfe\xff\xff\x89\x04\x24\xe8\x3f\x54\x00\x00\x89\x44\x24\x0c\x89\x7c\x24\x08\x8d\x83\x10\xbd\xff\xff\x89\x44\x24\x04\xc7\x04\x24\x01\x00\x00\x00\xe8\xed\xec\xff\xff\xbe\x00\x00\x00\x00\xe9\xad\x0e\x00\x00\x8d\x54\x24\x6c\xb9\x02\x00\x00\x00\xb8\x00\x00\x00\x00\x89\xd7\xf3\xab\x89\x54\x24\x18\x8d\x83\x26\xc3\xff\xff\x89\x44\x24\x14\x8d\x83\x2b\xc3\xff\xff\x89\x44\x24\x10\x8d\x83\x2f\xc3\xff\xff\x89\x44\x24\x0c\x8d\x83\x29\xc3\xff\xff\x89\x44\x24\x08\x8d\x84\x24\x84\x05\x00\x00\x89\x44\x24\x04\x8b\x44\x24\x58\x89\x04\x24\xe8\x16\x45\x00\x00\x89\xc6\x85\xc0\x0f\x85\x93\x00\x00\x00\x8d\x83\xa8\xbc\xff\xff\x89\x44\x24\x04\xc7\x04\x24\x01\x00\x00\x00\xe8\x6e\xec\xff\xff\x8b\x74\x24\x6c\xbf\x00\x00\x00\x00\x8d\x93\x40\xbd\xff\xff\x89\x54\x24\x4c\xeb\x56\x8b\x46\x08\x89\x44\x24\x24\x8d\x46\x10\x89\x44\x24\x20\x8d\x86\x90\x00\x00\x00\x89\x44\x24\x1c\x0f\xb7\x46\x0e\x89\x44\x24\x18\x8d\x46\x50\x89\x44\x24\x14\x0f\xb7\x46\x0c\x89\x44\x24\x10\x8d\x86\xd0\x00\x00\x00\x89\x44\x24\x0c\x89\x7c\x24\x08\x8b\x4c\x24\x4c\x89\x4c\x24\x04\xc7\x04\x24\x01\x00\x00\x00\xe8\x08\xec\xff\xff\x83\xc7\x01\x8b\x36\x85\xf6\x75\xa6\x8d\x44\x24\x6c\x89\x04\x24\xe8\x70\x5c\x00\x00\xeb\x2b\x89\x04\x24\xe8\x1d\x53\x00\x00\x89\x44\x24\x0c\x89\x74\x24\x08\x8d\x83\x64\xbd\xff\xff\x89\x44\x24\x04\xc7\x04\x24\x01\x00\x00\x00\xe8\xcb\xeb\xff\xff\xbf\x00\x00\x00\x00\x8d\x44\x24\x6c\x89\x44\x24\x18\x8d\x83\x26\xc3\xff\xff\x89\x44\x24\x14\x8d\x83\x35\xc3\xff\xff\x89\x44\x24\x10\x8d\x83\x2f\xc3\xff\xff\x89\x44\x24\x0c\x8d\x83\x29\xc3\xff\xff\x89\x44\x24\x08\x8d\x84\x24\x84\x05\x00\x00\x89\x44\x24\x04\x8b\x44\x24\x58\x89\x04\x24\xe8\x07\x44\x00\x00\x89\xc6\x85\xc0\x75\x7b\x8b\x74\x24\x6c\x8d\x83\x40\xbd\xff\xff\x89\x44\x24\x4c\xeb\x56\x8b\x46\x08\x89\x44\x24\x24\x8d\x46\x10\x89\x44\x24\x20\x8d\x86\x90\x00\x00\x00\x89\x44\x24\x1c\x0f\xb7\x46\x0e\x89\x44\x24\x18\x8d\x46\x50\x89\x44\x24\x14\x0f\xb7\x46\x0c\x89\x44\x24\x10\x8d\x86\xd0\x00\x00\x00\x89\x44\x24\x0c\x89\x7c\x24\x08\x8b\x54\x24\x4c\x89\x54\x24\x04\xc7\x04\x24\x01\x00\x00\x00\xe8\x18\xeb\xff\xff\x83\xc7\x01\x8b\x36\x85\xf6\x75\xa6\x8d\x44\x24\x6c\x89\x04\x24\xe8\x80\x5b\x00\x00\xe9\xc8\x0c\x00\x00\x89\x04\x24\xe8\x2a\x52\x00\x00\x89\x44\x24\x0c\x89\x74\x24\x08\x8d\x83\x64\xbd\xff\xff\x89\x44\x24\x04\xc7\x04\x24\x01\x00\x00\x00\xe8\xd8\xea\xff\xff\xbe\x00\x00\x00\x00\xe9\x98\x0c\x00\x00\x8d\x83\x29\xc3\xff\xff\x83\x7c\x24\x44\x04\x7e\x03\x8b\x47\x10\xc7\x44\x24\x18\x00\x00\x00\x00\x8b\x4c\x24\x3c\x89\x4c\x24\x14\x89\x44\x24\x10\x8b\x47\x0c\x89\x44\x24\x0c\x8b\x47\x08\x89\x44\x24\x08\x8b\x47\x04\x89\x44\x24\x04\x8b\x07\x89\x04\x24\x8d\x94\x24\x80\x00\x00\x00\x8d\x44\x24\x58\xe8\x39\xf0\xff\xff\xbe\x00\x00\x00\x00\xe9\x40\x0c\x00\x00\x8b\x44\xb7\x04\x8b\x14\xb7\x89\x54\x24\x4c\x85\xc0\x74\x04\x85\xd2\x75\x24\x8d\x83\x39\xc3\xff\xff\x89\x44\x24\x08\xc7\x44\x24\x04\x01\x00\x00\x00\x8b\x8b\xe8\xff\xff\xff\x8b\x01\x89\x04\x24\xe8\xb1\xea\xff\xff\xeb\x75\x89\x04\x24\xe8\x2d\xef\xff\xff\x85\xc0\x75\x24\x8d\x83\x4c\xc3\xff\xff\x89\x44\x24\x08\xc7\x44\x24\x04\x01\x00\x00\x00\x8b\x83\xe8\xff\xff\xff\x8b\x00\x89\x04\x24\xe8\x81\xea\xff\xff\xeb\x45\xc7\x44\x24\x10\x00\x00\x00\x00\x89\x44\x24\x0c\x8b\x44\x24\x4c\x89\x44\x24\x08\x8d\x84\x24\x84\x05\x00\x00\x89\x44\x24\x04\x8b\x44\x24\x58\x89\x04\x24\xe8\xb0\x36\x00\x00\x89\x44\x24\x08\x8d\x83\x90\xbd\xff\xff\x89\x44\x24\x04\xc7\x04\x24\x01\x00\x00\x00\xe8\xca\xe9\xff\xff\x83\xc6\x02\xeb\x05\xbe\x00\x00\x00\x00\x3b\x74\x24\x44\x0f\x8c\x40\xff\xff\xff\xbe\x00\x00\x00\x00\xe9\x76\x0b\x00\x00\x8d\x83\x29\xc3\xff\xff\x83\x7c\x24\x44\x04\x7e\x03\x8b\x47\x10\xc7\x44\x24\x18\x01\x00\x00\x00\x8b\x54\x24\x3c\x89\x54\x24\x14\x89\x44\x24\x10\x8b\x47\x0c\x89\x44\x24\x0c\x8b\x47\x08\x89\x44\x24\x08\x8b\x47\x04\x89\x44\x24\x04\x8b\x07\x89\x04\x24\x8d\x94\x24\x80\x00\x00\x00\x8d\x44\x24\x58\xe8\x17\xef\xff\xff\xbe\x00\x00\x00\x00\xe9\x1e\x0b\x00\x00\x83\x7c\x24\x44\x02\x7f\x22\x8d\x83\x5e\xc3\xff\xff\x89\x44\x24\x08\xc7\x44\x24\x04\x01\x00\x00\x00\x8b\x83\xe8\xff\xff\xff\x8b\x00\x89\x04\x24\xe8\x9b\xe9\xff\xff\x83\x7c\x24\x44\x03\x0f\x8e\x95\x0b\x00\x00\x8b\x77\x0c\x8b\x47\x08\x8b\x4f\x04\x89\x4c\x24\x4c\x8b\x3f\x85\xf6\x75\x06\x8d\xb3\x29\xc3\xff\xff\x85\xc0\x74\x0b\x85\xff\x74\x07\x83\x7c\x24\x4c\x00\x75\x2c\x8d\x83\x39\xc3\xff\xff\x89\x44\x24\x08\xc7\x44\x24\x04\x01\x00\x00\x00\x8b\x83\xe8\xff\xff\xff\x8b\x00\x89\x04\x24\xe8\x46\xe9\xff\xff\xbe\x00\x00\x00\x00\xe9\x96\x0a\x00\x00\x89\x04\x24\xe8\xba\xed\xff\xff\x85\xc0\x75\x2c\x8d\x83\x4c\xc3\xff\xff\x89\x44\x24\x08\xc7\x44\x24\x04\x01\x00\x00\x00\x8b\x83\xe8\xff\xff\xff\x8b\x00\x89\x04\x24\xe8\x0e\xe9\xff\xff\xbe\x00\x00\x00\x00\xe9\x5e\x0a\x00\x00\x89\x74\x24\x14\x89\x44\x24\x10\x8b\x44\x24\x4c\x89\x44\x24\x0c\x89\x7c\x24\x08\x8d\x84\x24\x84\x05\x00\x00\x89\x44\x24\x04\x8b\x44\x24\x58\x89\x04\x24\xe8\xc1\x36\x00\x00\x89\x44\x24\x08\x8d\x83\xb8\xbd\xff\xff\x89\x44\x24\x04\xc7\x04\x24\x01\x00\x00\x00\xe8\x4f\xe8\xff\xff\xbe\x00\x00\x00\x00\xe9\x0f\x0a\x00\x00\x8d\x94\x24\x80\x00\x00\x00\x8d\x44\x24\x58\xe8\xe5\xe9\xff\xff\x8d\xb4\x24\x84\x03\x00\x00\x89\x74\x24\x04\x8b\x44\x24\x60\x89\x04\x24\xe8\x85\x25\x00\x00\x89\x44\x24\x4c\x89\x74\x24\x04\x8b\x44\x24\x60\x89\x04\x24\xe8\x69\x26\x00\x00\x89\xc7\x89\x74\x24\x04\x8b\x44\x24\x60\x89\x04\x24\xe8\x4f\x27\x00\x00\x89\x44\x24\x48\x89\x74\x24\x04\x8b\x44\x24\x60\x89\x04\x24\xe8\x33\x28\x00\x00\x89\xc6\x89\x7c\x24\x0c\x8b\x44\x24\x4c\x89\x44\x24\x08\x8d\x83\x71\xc3\xff\xff\x89\x44\x24\x04\xc7\x04\x24\x01\x00\x00\x00\xe8\xc0\xe7\xff\xff\x89\x74\x24\x0c\x8b\x44\x24\x48\x89\x44\x24\x08\x8d\x83\x8f\xc3\xff\xff\x89\x44\x24\x04\xc7\x04\x24\x01\x00\x00\x00\xe8\x9e\xe7\xff\xff\xbe\x00\x00\x00\x00\xe9\x5e\x09\x00\x00\x8b\x04\xb7\xc7\x44\x24\x18\x00\x00\x00\x00\x8b\x54\x24\x3c\x89\x54\x24\x14\x8b\x4c\x24\x4c\x89\x4c\x24\x10\x8b\x54\xb7\x04\x89\x54\x24\x0c\x89\x44\x24\x08\x89\x44\x24\x04\x8d\x84\x24\x54\x0c\x00\x00\x89\x04\x24\x8d\x94\x24\x80\x00\x00\x00\x8d\x44\x24\x58\xe8\x08\xed\xff\xff\x83\xc6\x02\xeb\x0f\xbe\x00\x00\x00\x00\x8d\x83\x29\xc3\xff\xff\x89\x44\x24\x4c\x3b\x74\x24\x44\x7c\xa1\xbe\x00\x00\x00\x00\xe9\xf5\x08\x00\x00\x8b\x57\x14\x89\x54\x24\x3c\x8b\x77\x10\x8b\x4f\x0c\x89\x4c\x24\x4c\x8b\x47\x08\x89\x44\x24\x48\x8b\x57\x04\x89\x54\x24\x44\x8b\x3f\x85\xc0\x74\x18\x85\xff\x74\x14\x85\xc9\x74\x10\x85\xd2\x74\x0c\x85\xf6\x74\x08\x83\x7c\x24\x3c\x00\x90\x75\x2c\x8d\x83\xea\xc1\xff\xff\x89\x44\x24\x08\xc7\x44\x24\x04\x01\x00\x00\x00\x8b\x83\xe8\xff\xff\xff\x8b\x00\x89\x04\x24\xe8\x3c\xe7\xff\xff\xbe\x00\x00\x00\x00\xe9\x8c\x08\x00\x00\xc7\x44\x24\x08\x0a\x00\x00\x00\xc7\x44\x24\x04\x00\x00\x00\x00\x89\x34\x24\xe8\x3a\xe7\xff\xff\x85\xc0\x0f\x85\xe7\x00\x00\x00\x89\x34\x24\xe8\x90\xeb\xff\xff\x85\xc0\x0f\x84\xab\x00\x00\x00\x0f\xb6\x10\x80\xfa\x54\x75\x51\x80\x78\x01\x43\x75\x4b\x80\x78\x02\x50\x75\x45\x80\x78\x03\x00\x0f\x85\x8d\x00\x00\x00\xc7\x44\x24\x14\x06\x00\x00\x00\x8d\x83\x23\xc3\xff\xff\x89\x44\x24\x10\xc7\x44\x24\x0c\x08\x00\x00\x00\xc7\x44\x24\x08\x01\x00\x00\x00\xc7\x44\x24\x04\x08\x00\x00\x00\x8d\xb4\x24\x14\x0d\x00\x00\x89\x34\x24\xe8\x1b\xe4\xff\xff\xeb\x7e\x80\xfa\x55\x75\x4d\x80\x78\x01\x44\x75\x47\x80\x78\x02\x50\x75\x41\x80\x78\x03\x00\x75\x3b\xc7\x44\x24\x14\x11\x00\x00\x00\x8d\x83\x23\xc3\xff\xff\x89\x44\x24\x10\xc7\x44\x24\x0c\x08\x00\x00\x00\xc7\x44\x24\x08\x01\x00\x00\x00\xc7\x44\x24\x04\x08\x00\x00\x00\x8d\xb4\x24\x14\x0d\x00\x00\x89\x34\x24\xe8\xc9\xe3\xff\xff\xeb\x2c\x8d\x83\xfb\xc1\xff\xff\x89\x44\x24\x08\xc7\x44\x24\x04\x01\x00\x00\x00\x8b\x83\xe8\xff\xff\xff\x8b\x00\x89\x04\x24\xe8\x35\xe6\xff\xff\xbe\x00\x00\x00\x00\xe9\x85\x07\x00\x00\x8d\x84\x24\x0c\x0d\x00\x00\x89\x44\x24\x20\x8b\x4c\x24\x3c\x89\x4c\x24\x1c\x89\x74\x24\x18\x8b\x44\x24\x4c\x89\x44\x24\x14\x8b\x54\x24\x48\x89\x54\x24\x10\x8b\x4c\x24\x44\x89\x4c\x24\x0c\x89\x7c\x24\x08\x8d\x84\x24\x84\x09\x00\x00\x89\x44\x24\x04\x8b\x44\x24\x64\x89\x04\x24\xe8\xc6\x43\x00\x00\x89\xc6\x85\xc0\x74\x4c\x89\x04\x24\xe8\x97\x4c\x00\x00\x89\x44\x24\x1c\x89\x74\x24\x18\x8b\x44\x24\x4c\x89\x44\x24\x14\x8b\x54\x24\x48\x89\x54\x24\x10\x8b\x4c\x24\x44\x89\x4c\x24\x0c\x89\x7c\x24\x08\x8d\x83\xe8\xbd\xff\xff\x89\x44\x24\x04\xc7\x04\x24\x01\x00\x00\x00\xe8\x29\xe5\xff\xff\xbe\x00\x00\x00\x00\xe9\xe9\x06\x00\x00\x8d\x84\x24\x0c\x0d\x00\x00\x89\x44\x24\x18\x8b\x44\x24\x4c\x89\x44\x24\x14\x8b\x54\x24\x48\x89\x54\x24\x10\x8b\x4c\x24\x44\x89\x4c\x24\x0c\x89\x7c\x24\x08\x8d\x83\x24\xbe\xff\xff\x89\x44\x24\x04\xc7\x04\x24\x01\x00\x00\x00\xe8\xe2\xe4\xff\xff\xbe\x00\x00\x00\x00\xe9\xa2\x06\x00\x00\x8b\x47\x04\x89\x44\x24\x48\x8b\x3f\xc7\x44\x24\x78\x00\x00\x00\x00\x85\xff\x74\x04\x85\xc0\x75\x2c\x8d\x83\xea\xc1\xff\xff\x89\x44\x24\x08\xc7\x44\x24\x04\x01\x00\x00\x00\x8b\x83\xe8\xff\xff\xff\x8b\x00\x89\x04\x24\xe8\x0d\xe5\xff\xff\xbe\x00\x00\x00\x00\xe9\x5d\x06\x00\x00\x8d\x44\x24\x78\x89\x44\x24\x0c\x89\x7c\x24\x08\x8d\x84\x24\x84\x09\x00\x00\x89\x44\x24\x04\x8b\x44\x24\x64\x89\x04\x24\xe8\x9f\x48\x00\x00\x89\x44\x24\x4c\x8d\x83\x48\xc2\xff\xff\x83\x7c\x24\x78\x00\x8d\x93\x44\xc2\xff\xff\x0f\x45\xc2\x89\x44\x24\x0c\x89\x7c\x24\x08\x8d\x83\x58\xbe\xff\xff\x89\x44\x24\x04\xc7\x04\x24\x01\x00\x00\x00\xe8\x3a\xe4\xff\xff\x83\x7c\x24\x4c\x00\x74\x2e\x8b\x44\x24\x4c\x89\x04\x24\xe8\x5b\x4b\x00\x00\x89\x44\x24\x0c\x8b\x44\x24\x4c\x89\x44\x24\x08\x8d\x83\x90\xbe\xff\xff\x89\x44\x24\x04\xc7\x04\x24\x01\x00\x00\x00\xe8\x05\xe4\xff\xff\x83\x7c\x24\x78\x00\x75\x13\xbe\x00\x00\x00\x00\x81\x7c\x24\x4c\xc5\x02\x00\x00\x0f\x85\xb5\x05\x00\x00\x8b\x54\x24\x48\x89\x54\x24\x0c\x89\x7c\x24\x08\x8d\x84\x24\x84\x09\x00\x00\x89\x44\x24\x04\x8b\x44\x24\x64\x89\x04\x24\xe8\xe7\x44\x00\x00\x89\x44\x24\x4c\x8b\x4c\x24\x48\x89\x4c\x24\x0c\x89\x7c\x24\x08\x8d\x83\xc0\xbe\xff\xff\x89\x44\x24\x04\xc7\x04\x24\x01\x00\x00\x00\xe8\xa2\xe3\xff\xff\xbe\x00\x00\x00\x00\x83\x7c\x24\x4c\x00\x0f\x84\x5c\x05\x00\x00\x8b\x44\x24\x4c\x89\x04\x24\xe8\xba\x4a\x00\x00\x89\x44\x24\x10\x8b\x44\x24\x4c\x89\x44\x24\x0c\x89\x7c\x24\x08\x8d\x83\xf4\xbe\xff\xff\x89\x44\x24\x04\xc7\x04\x24\x01\x00\x00\x00\xe8\x60\xe3\xff\xff\xe9\x25\x05\x00\x00\x8b\x14\xb7\x89\x54\x24\x4c\xc7\x44\x24\x78\x00\x00\x00\x00\x85\xd2\x75\x27\x8d\x83\x39\xc3\xff\xff\x89\x44\x24\x08\xc7\x44\x24\x04\x01\x00\x00\x00\x8b\x8b\xe8\xff\xff\xff\x8b\x01\x89\x04\x24\xe8\x96\xe3\xff\xff\xe9\x91\x00\x00\x00\x8d\x44\x24\x78\x89\x44\x24\x0c\x8b\x44\x24\x4c\x89\x44\x24\x08\x8d\x84\x24\x84\x09\x00\x00\x89\x44\x24\x04\x8b\x44\x24\x64\x89\x04\x24\xe8\x29\x47\x00\x00\x89\x44\x24\x48\x85\xc0\x74\x2c\x89\x04\x24\xe8\x1e\x4a\x00\x00\x89\x44\x24\x0c\x8b\x44\x24\x48\x89\x44\x24\x08\x8d\x83\x90\xbe\xff\xff\x89\x44\x24\x04\xc7\x04\x24\x01\x00\x00\x00\xe8\xc8\xe2\xff\xff\xeb\x36\x8d\x83\x48\xc2\xff\xff\x83\x7c\x24\x78\x00\x8d\x93\x44\xc2\xff\xff\x0f\x45\xc2\x89\x44\x24\x0c\x8b\x54\x24\x4c\x89\x54\x24\x08\x8d\x83\x58\xbe\xff\xff\x89\x44\x24\x04\xc7\x04\x24\x01\x00\x00\x00\xe8\x90\xe2\xff\xff\x83\xc6\x01\xeb\x05\xbe\x00\x00\x00\x00\x3b\x74\x24\x44\x0f\x8c\x21\xff\xff\xff\xbe\x00\x00\x00\x00\xe9\x3c\x04\x00\x00\x8b\x0c\xb7\x89\x4c\x24\x4c\xc7\x44\x24\x78\x00\x00\x00\x00\x85\xc9\x75\x27\x8d\x83\x39\xc3\xff\xff\x89\x44\x24\x08\xc7\x44\x24\x04\x01\x00\x00\x00\x8b\x93\xe8\xff\xff\xff\x8b\x02\x89\x04\x24\xe8\xad\xe2\xff\xff\xe9\x81\x00\x00\x00\x8d\x44\x24\x78\x89\x44\x24\x0c\x8b\x4c\x24\x4c\x89\x4c\x24\x08\x8d\x84\x24\x84\x09\x00\x00\x89\x44\x24\x04\x8b\x44\x24\x64\x89\x04\x24\xe8\xc8\x47\x00\x00\x89\x44\x24\x48\x85\xc0\x74\x2c\x89\x04\x24\xe8\x35\x49\x00\x00\x89\x44\x24\x0c\x8b\x44\x24\x48\x89\x44\x24\x08\x8d\x83\x28\xbf\xff\xff\x89\x44\x24\x04\xc7\x04\x24\x01\x00\x00\x00\xe8\xdf\xe1\xff\xff\xeb\x26\x8b\x44\x24\x78\x89\x44\x24\x0c\x8b\x54\x24\x4c\x89\x54\x24\x08\x8d\x83\x58\xbf\xff\xff\x89\x44\x24\x04\xc7\x04\x24\x01\x00\x00\x00\xe8\xb7\xe1\xff\xff\x83\xc6\x01\xeb\x05\xbe\x00\x00\x00\x00\x3b\x74\x24\x44\x0f\x8c\x31\xff\xff\xff\xbe\x00\x00\x00\x00\xe9\x63\x03\x00\x00\x8b\x04\xb7\x85\xc0\x75\x24\x8d\x83\x39\xc3\xff\xff\x89\x44\x24\x08\xc7\x44\x24\x04\x01\x00\x00\x00\x8b\x8b\xe8\xff\xff\xff\x8b\x01\x89\x04\x24\xe8\xe0\xe1\xff\xff\xeb\x35\x89\x44\x24\x08\x8d\x84\x24\x84\x09\x00\x00\x89\x44\x24\x04\x8b\x44\x24\x64\x89\x04\x24\xe8\x0b\x44\x00\x00\x89\x44\x24\x08\x8d\x83\x94\xbf\xff\xff\x89\x44\x24\x04\xc7\x04\x24\x01\x00\x00\x00\xe8\x39\xe1\xff\xff\x83\xc6\x01\xeb\x05\xbe\x00\x00\x00\x00\x3b\x74\x24\x44\x7c\x90\xbe\x00\x00\x00\x00\xe9\xe9\x02\x00\x00\xc7\x44\x24\x78\x00\x00\x00\x00\xc7\x44\x24\x7c\x00\x00\x00\x00\x8d\x44\x24\x7c\x89\x44\x24\x0c\x8d\x44\x24\x78\x89\x44\x24\x08\x8d\x84\x24\x84\x09\x00\x00\x89\x44\x24\x04\x8b\x44\x24\x64\x89\x04\x24\xe8\x84\x3b\x00\x00\x8b\x44\x24\x7c\x89\x44\x24\x0c\x8b\x44\x24\x78\x89\x44\x24\x08\x8d\x83\xb8\xbf\xff\xff\x89\x44\x24\x04\xc7\x04\x24\x01\x00\x00\x00\xe8\xc2\xe0\xff\xff\x8d\x93\x48\xc2\xff\xff\x83\x7c\x24\x7c\x00\x8d\x83\x44\xc2\xff\xff\x0f\x45\xd0\x8d\x83\x48\xc2\xff\xff\x83\x7c\x24\x78\x00\x8d\x8b\x44\xc2\xff\xff\x0f\x45\xc1\x89\x54\x24\x0c\x89\x44\x24\x08\x8d\x83\xec\xbf\xff\xff\x89\x44\x24\x04\xc7\x04\x24\x01\x00\x00\x00\xe8\x7c\xe0\xff\xff\x8d\xb4\x24\x84\x03\x00\x00\x89\x74\x24\x04\x8b\x44\x24\x60\x89\x04\x24\xe8\xcc\x1d\x00\x00\x89\x44\x24\x4c\x89\x74\x24\x04\x8b\x44\x24\x60\x89\x04\x24\xe8\xb0\x1e\x00\x00\x89\xc7\x89\x74\x24\x04\x8b\x44\x24\x60\x89\x04\x24\xe8\x96\x1f\x00\x00\x89\x44\x24\x48\x89\x74\x24\x04\x8b\x44\x24\x60\x89\x04\x24\xe8\x7a\x20\x00\x00\x89\xc6\x89\x7c\x24\x0c\x8b\x44\x24\x4c\x89\x44\x24\x08\x8d\x83\x71\xc3\xff\xff\x89\x44\x24\x04\xc7\x04\x24\x01\x00\x00\x00\xe8\x07\xe0\xff\xff\x89\x74\x24\x0c\x8b\x44\x24\x48\x89\x44\x24\x08\x8d\x83\x8f\xc3\xff\xff\x89\x44\x24\x04\xc7\x04\x24\x01\x00\x00\x00\xe8\xe5\xdf\xff\xff\xbe\x00\x00\x00\x00\xe9\xa5\x01\x00\x00\x8b\x47\x10\x8b\x57\x0c\x89\x54\x24\x4c\x8b\x4f\x08\x89\x4c\x24\x48\x8b\x57\x04\x89\x54\x24\x44\x8b\x37\xc7\x44\x24\x7c\x00\x00\x00\x00\x85\xc9\x74\x13\x85\xf6\x74\x0f\x83\x7c\x24\x4c\x00\x74\x08\x85\xd2\x74\x04\x85\xc0\x75\x2c\x8d\x83\xea\xc1\xff\xff\x89\x44\x24\x08\xc7\x44\x24\x04\x01\x00\x00\x00\x8b\x83\xe8\xff\xff\xff\x8b\x00\x89\x04\x24\xe8\xf0\xdf\xff\xff\xbe\x00\x00\x00\x00\xe9\x40\x01\x00\x00\x8d\x54\x24\x7c\x89\x54\x24\x1c\x89\x44\x24\x18\x8b\x4c\x24\x4c\x89\x4c\x24\x14\x8b\x44\x24\x48\x89\x44\x24\x10\x8b\x54\x24\x44\x89\x54\x24\x0c\x89\x74\x24\x08\x8d\x84\x24\x84\x09\x00\x00\x89\x44\x24\x04\x8b\x44\x24\x64\x89\x04\x24\xe8\x73\x3b\x00\x00\x89\xc7\x85\xc0\x74\x4c\x89\x04\x24\xe8\x5d\x46\x00\x00\x89\x44\x24\x1c\x89\x7c\x24\x18\x8b\x4c\x24\x44\x89\x4c\x24\x14\x89\x74\x24\x10\x8b\x44\x24\x4c\x89\x44\x24\x0c\x8b\x54\x24\x48\x89\x54\x24\x08\x8d\x83\x38\xc0\xff\xff\x89\x44\x24\x04\xc7\x04\x24\x01\x00\x00\x00\xe8\xef\xde\xff\xff\xbe\x00\x00\x00\x00\xe9\xaf\x00\x00\x00\x8b\x44\x24\x7c\x89\x44\x24\x18\x8b\x4c\x24\x44\x89\x4c\x24\x14\x89\x74\x24\x10\x8b\x44\x24\x4c\x89\x44\x24\x0c\x8b\x54\x24\x48\x89\x54\x24\x08\x8d\x83\x80\xc0\xff\xff\x89\x44\x24\x04\xc7\x04\x24\x01\x00\x00\x00\xe8\xab\xde\xff\xff\xbe\x00\x00\x00\x00\xeb\x6e\x8d\x83\xad\xc3\xff\xff\x89\x44\x24\x04\xc7\x04\x24\x01\x00\x00\x00\xe8\x8e\xde\xff\xff\x8d\x84\x24\x80\x01\x00\x00\x89\x44\x24\x08\x8d\x83\xc6\xc3\xff\xff\x89\x44\x24\x04\xc7\x04\x24\x01\x00\x00\x00\xe8\x6d\xde\xff\xff\xbe\x00\x00\x00\x00\xeb\x30\x89\xf1\x0f\xbe\xf1\x89\x74\x24\x0c\x8d\x83\xd6\xc3\xff\xff\x89\x44\x24\x08\xc7\x44\x24\x04\x01\x00\x00\x00\x8b\x83\xe8\xff\xff\xff\x8b\x00\x89\x04\x24\xe8\xab\xde\xff\xff\xbe\x01\x00\x00\x00\x8d\x44\x24\x58\x89\x04\x24\xe8\xfa\x12\x00\x00\xeb\x27\x8d\x83\xc0\xc0\xff\xff\x89\x44\x24\x08\xc7\x44\x24\x04\x01\x00\x00\x00\x8b\x83\xe8\xff\xff\xff\x8b\x00\x89\x04\x24\xe8\x76\xde\xff\xff\xbe\x01\x00\x00\x00\x8b\x44\x24\x40\x89\x04\x24\xe8\x72\x0f\x00\x00\xeb\x27\x8d\x83\xf0\xc0\xff\xff\x89\x44\x24\x08\xc7\x44\x24\x04\x01\x00\x00\x00\x8b\x83\xe8\xff\xff\xff\x8b\x00\x89\x04\x24\xe8\x41\xde\xff\xff\xbe\x01\x00\x00\x00\x89\xf0\x8b\x94\x24\x2c\x0d\x00\x00\x65\x33\x15\x14\x00\x00\x00\x74\x45\xeb\x3e\x8d\x83\x1c\xc1\xff\xff\x89\x44\x24\x04\xc7\x04\x24\x01\x00\x00\x00\xe8\xa2\xdd\xff\xff\x8b\x7c\x24\x40\x8d\x8b\xa8\xc2\xff\xff\x89\xf0\x88\x44\x24\x38\x89\xce\xe9\x84\xec\xff\xff\x8b\x47\x08\x8b\x57\x04\x89\x54\x24\x4c\x8b\x3f\xe9\x6d\xf4\xff\xff\xe8\xf5\x72\x00\x00\x8d\x65\xf4\x5b\x5e\x5f\x5d\xc3\x8b\x1c\x24\xc3\x90\x90\x90\x90\x90\x90\x90\x90\x90\x83\xec\x2c\x89\x5c\x24\x1c\x89\x74\x24\x20\x89\x7c\x24\x24\x89\x6c\x24\x28\xe8\xdb\xff\xff\xff\x81\xc3\x4c\xc0\x00\x00\x89\xc5\x89\xd6\x0f\xb6\x12\x80\xfa\x68\x75\x42\x80\x7e\x01\x74\x75\x3c\x80\x7e\x02\x74\x0f\x85\x8b\x00\x00\x00\x80\x7e\x03\x70\x0f\x85\x81\x00\x00\x00\x80\x7e\x04\x3a\x75\x64\x80\x7e\x05\x2f\x75\x5e\x80\x7e\x06\x2f\x75\x58\x8b\x44\x24\x30\x89\x44\x24\x08\x89\x74\x24\x04\x89\x2c\x24\xe8\xc6\xdc\xff\xff\xeb\x70\x89\xef\xb8\x00\x00\x00\x00\xb9\xff\xff\xff\xff\xf2\xae\xf7\xd1\x83\xe9\x01\x89\xc8\x80\xfa\x2f\x74\x08\xc6\x44\x0d\x00\x2f\x83\xc0\x01\x3b\x44\x24\x30\x7f\x48\x8b\x54\x24\x30\x29\xc2\x89\x54\x24\x08\x89\x74\x24\x04\x01\xc5\x89\x2c\x24\xe8\x84\xdc\xff\xff\xeb\x2e\x89\xef\xb8\x00\x00\x00\x00\xb9\xff\xff\xff\xff\xf2\xae\xf7\xd1\x83\xe9\x01\x89\xc8\xeb\xc1\x89\xef\xb8\x00\x00\x00\x00\xb9\xff\xff\xff\xff\xf2\xae\xf7\xd1\x83\xe9\x01\x89\xc8\xeb\xaa\x8b\x5c\x24\x1c\x8b\x74\x24\x20\x8b\x7c\x24\x24\x8b\x6c\x24\x28\x83\xc4\x2c\xc3\x53\x83\xec\x48\xe8\xfa\xfe\xff\xff\x81\xc3\x6b\xbf\x00\x00\x8b\x44\x24\x50\x89\x44\x24\x1c\x8b\x44\x24\x54\x89\x44\x24\x28\x8b\x44\x24\x58\x89\x44\x24\x2c\x8b\x83\xe4\xff\xff\xff\x89\x44\x24\x30\x8b\x83\xf8\xff\xff\xff\x89\x44\x24\x34\x8b\x83\xf0\xff\xff\xff\x89\x44\x24\x38\xc7\x44\x24\x3c\x00\x00\x00\x00\x8d\x44\x24\x1c\x89\x04\x24\xe8\x97\x60\x00\x00\x83\xc4\x48\x5b\xc3\x55\x57\x56\x53\x81\xec\x0c\x09\x00\x00\xe8\x96\xfe\xff\xff\x81\xc3\x07\xbf\x00\x00\x8b\x84\x24\x24\x09\x00\x00\x89\x44\x24\x28\x8b\xb4\x24\x28\x09\x00\x00\x8b\x94\x24\x2c\x09\x00\x00\x89\x54\x24\x20\x8b\xbc\x24\x30\x09\x00\x00\x8b\x8c\x24\x34\x09\x00\x00\x89\x4c\x24\x24\x8b\x84\x24\x38\x09\x00\x00\x89\x44\x24\x2c\x65\x8b\x15\x14\x00\x00\x00\x89\x94\x24\xfc\x08\x00\x00\x31\xd2\x66\xc7\x44\x24\x38\x00\x00\xc7\x01\x00\x00\x00\x00\x8b\x4c\x24\x20\x89\x4c\x24\x18\x89\x74\x24\x14\x8d\x83\xf2\xc3\xff\xff\x89\x44\x24\x10\xc7\x44\x24\x0c\x80\x00\x00\x00\xc7\x44\x24\x08\x01\x00\x00\x00\xc7\x44\x24\x04\x80\x00\x00\x00\x8d\x84\x24\x3b\x08\x00\x00\x89\x04\x24\xe8\x49\xd9\xff\xff\x85\xff\x75\x43\x8b\x44\x24\x20\x89\x44\x24\x1c\x89\x74\x24\x18\x89\x44\x24\x14\x8d\x83\xc8\xc4\xff\xff\x89\x44\x24\x10\xc7\x44\x24\x0c\x00\x08\x00\x00\xc7\x44\x24\x08\x01\x00\x00\x00\xc7\x44\x24\x04\x00\x08\x00\x00\x8d\x44\x24\x3b\x89\x04\x24\xe8\x07\xd9\xff\xff\xe9\x24\x01\x00\x00\x89\x74\x24\x18\x8b\x54\x24\x20\x89\x54\x24\x14\x8d\x83\x98\xc5\xff\xff\x89\x44\x24\x10\xc7\x44\x24\x0c\x00\x08\x00\x00\xc7\x44\x24\x08\x01\x00\x00\x00\xc7\x44\x24\x04\x00\x08\x00\x00\x8d\x74\x24\x3b\x89\x34\x24\xe8\xc8\xd8\xff\xff\x01\xf0\x8b\x0f\x85\xc9\x0f\x84\x93\x00\x00\x00\x8d\xac\x24\x3b\x08\x00\x00\x8d\x50\x64\xbe\x00\x00\x00\x00\x39\xd5\x77\x10\xe9\xca\x01\x00\x00\x83\xc2\x65\x39\xd5\x0f\x86\xba\x01\x00\x00\xc6\x00\x3c\x83\xc0\x01\x0f\xb6\x11\x84\xd2\x74\x11\x89\xce\x88\x10\x83\xc0\x01\x83\xc6\x01\x0f\xb6\x16\x84\xd2\x75\xf1\xc6\x00\x3e\x83\xc0\x01\x8b\x77\x04\x85\xf6\x74\x16\x0f\xb6\x16\x84\xd2\x74\x0f\x88\x10\x83\xc0\x01\x83\xc6\x01\x0f\xb6\x16\x84\xd2\x75\xf1\xc6\x00\x3c\xc6\x40\x01\x2f\x8d\x50\x02\x0f\xb6\x01\x84\xc0\x74\x0f\x88\x02\x83\xc2\x01\x83\xc1\x01\x0f\xb6\x01\x84\xc0\x75\xf1\xc6\x02\x3e\x8d\x42\x01\x83\xc7\x08\x8b\x0f\x85\xc9\x75\x85\xc6\x00\x3c\xc6\x40\x01\x2f\xc6\x40\x02\x75\xc6\x40\x03\x3a\x83\xc0\x04\x8b\x4c\x24\x20\x0f\xb6\x11\x84\xd2\x74\x0f\x88\x10\x83\xc0\x01\x83\xc1\x01\x0f\xb6\x11\x84\xd2\x75\xf1\x8d\x94\x24\x3b\x08\x00\x00\x29\xc2\x89\x54\x24\x08\x8d\x93\xf8\xc3\xff\xff\x89\x54\x24\x04\x89\x04\x24\xe8\xce\xd9\xff\xff\xc7\x44\x24\x10\x00\x00\x00\x00\x8d\x44\x24\x34\x89\x44\x24\x0c\x8d\x44\x24\x38\x89\x44\x24\x08\x8d\x84\x24\xbb\x08\x00\x00\x89\x44\x24\x04\x8b\x44\x24\x28\x89\x04\x24\xe8\x31\x59\x00\x00\xbe\x00\x00\x00\x00\x85\xc0\x0f\x84\xc8\x00\x00\x00\x83\xbc\x24\x20\x09\x00\x00\x00\x79\x2f\xc7\x44\x24\x08\x00\x00\x00\x00\x0f\xb7\x44\x24\x38\x89\x44\x24\x04\x8d\x84\x24\xbb\x08\x00\x00\x89\x04\x24\xe8\xf8\x42\x00\x00\x89\x84\x24\x20\x09\x00\x00\x85\xc0\x0f\x88\x8f\x00\x00\x00\x8b\x54\x24\x2c\x89\x54\x24\x18\x8d\x44\x24\x3b\x89\x44\x24\x14\x8d\x84\x24\x3b\x08\x00\x00\x89\x44\x24\x10\x0f\xb7\x44\x24\x38\x89\x44\x24\x0c\x8d\x84\x24\xbb\x08\x00\x00\x89\x44\x24\x08\x8b\x44\x24\x34\x89\x44\x24\x04\x8b\x84\x24\x20\x09\x00\x00\x89\x04\x24\xe8\x63\x69\x00\x00\x85\xc0\x7f\x16\x8b\x84\x24\x20\x09\x00\x00\x89\x04\x24\xe8\xe0\xd9\xff\xff\xbe\x00\x00\x00\x00\xeb\x2f\x8b\x54\x24\x24\x89\x54\x24\x04\x8b\x84\x24\x20\x09\x00\x00\x89\x04\x24\xe8\xf2\x4e\x00\x00\x89\xc6\x8b\x84\x24\x20\x09\x00\x00\x89\x04\x24\xe8\xb1\xd9\xff\xff\xeb\x05\xbe\x00\x00\x00\x00\x89\xf0\x8b\x94\x24\xfc\x08\x00\x00\x65\x33\x15\x14\x00\x00\x00\x74\x05\xe8\x63\x6e\x00\x00\x81\xc4\x0c\x09\x00\x00\x5b\x5e\x5f\x5d\xc3\x53\x83\xec\x28\xe8\x62\xfb\xff\xff\x81\xc3\xd3\xbb\x00\x00\x8d\x83\x12\xc4\xff\xff\x89\x44\x24\x18\x8b\x44\x24\x44\x89\x44\x24\x14\x8b\x44\x24\x40\x89\x44\x24\x10\x8b\x44\x24\x3c\x89\x44\x24\x0c\x8b\x44\x24\x38\x89\x44\x24\x08\x8b\x44\x24\x34\x89\x44\x24\x04\x8b\x44\x24\x30\x89\x04\x24\xe8\x79\xfc\xff\xff\x83\xc4\x28\x5b\xc3\x55\x57\x56\x53\x81\xec\x3c\x07\x00\x00\xe8\x0a\xfb\xff\xff\x81\xc3\x7b\xbb\x00\x00\x8b\x84\x24\x54\x07\x00\x00\x89\x44\x24\x20\x8b\xbc\x24\x58\x07\x00\x00\x8b\x94\x24\x64\x07\x00\x00\x89\x54\x24\x4c\x65\x8b\x0d\x14\x00\x00\x00\x89\x8c\x24\x2c\x07\x00\x00\x31\xc9\xc7\x84\x24\x98\x00\x00\x00\x00\x00\x00\x00\xc7\x84\x24\x9c\x00\x00\x00\x01\x00\x00\x00\x85\xd2\x74\x06\xc7\x02\xff\xff\xff\xff\x85\xff\x8d\x83\x16\xc4\xff\xff\x0f\x44\xf8\x8d\xab\xb0\xfe\xff\xff\x8d\xb3\x48\xc6\xff\xff\x89\x7c\x24\x04\x89\x34\x24\xe8\xe1\x49\x00\x00\x85\xc0\x74\x34\x89\x44\x24\x30\x8d\x83\xbc\xc4\xff\xff\x89\x44\x24\x04\x89\x34\x24\xe8\xd7\xd5\xff\xff\x85\xc0\x75\x28\x83\x7c\x24\x4c\x00\x0f\x84\x36\x08\x00\x00\x8b\x44\x24\x4c\xc7\x00\x00\x00\x00\x00\xe9\x27\x08\x00\x00\x83\xc5\x04\x8b\x75\xfc\x85\xf6\x75\xb2\x89\x44\x24\x30\x83\xbc\x24\x60\x07\x00\x00\x01\x19\xc0\x83\xe0\xf8\x83\xc0\x0a\xc7\x44\x24\x08\x00\x00\x00\x00\xc7\x44\x24\x04\x02\x00\x00\x00\x89\x04\x24\xe8\xe3\xd7\xff\xff\x89\x44\x24\x34\x85\xc0\x79\x2c\x83\x7c\x24\x4c\x00\x74\x0a\x8b\x54\x24\x4c\xc7\x02\x9b\xff\xff\xff\x8d\x83\x3e\xc4\xff\xff\x89\x04\x24\xe8\x4c\xd6\xff\xff\xc7\x44\x24\x30\x00\x00\x00\x00\xe9\xbd\x07\x00\x00\x8d\x94\x24\xac\x06\x00\x00\xb9\x20\x00\x00\x00\xb8\x00\x00\x00\x00\x89\xd7\xf3\xab\x83\xbc\x24\x60\x07\x00\x00\x00\x74\x4d\x66\xc7\x84\x24\xac\x06\x00\x00\x0a\x00\x83\xbc\x24\x5c\x07\x00\x00\x00\x74\x0a\x66\xc7\x84\x24\xae\x06\x00\x00\x07\x6c\x8b\x83\xec\xff\xff\xff\x8b\x10\x89\x94\x24\xb4\x06\x00\x00\x8b\x50\x04\x89\x94\x24\xb8\x06\x00\x00\x8b\x50\x08\x89\x94\x24\xbc\x06\x00\x00\x8b\x40\x0c\x89\x84\x24\xc0\x06\x00\x00\xeb\x1e\x66\xc7\x84\x24\xac\x06\x00\x00\x02\x00\x83\xbc\x24\x5c\x07\x00\x00\x00\x74\x0a\x66\xc7\x84\x24\xae\x06\x00\x00\x07\x6c\xc7\x44\x24\x10\x04\x00\x00\x00\x8d\x84\x24\x9c\x00\x00\x00\x89\x44\x24\x0c\xc7\x44\x24\x08\x02\x00\x00\x00\xc7\x44\x24\x04\x01\x00\x00\x00\x8b\x44\x24\x34\x89\x04\x24\xe8\x76\xd4\xff\xff\x85\xc0\x79\x2c\x83\x7c\x24\x4c\x00\x74\x0a\x8b\x54\x24\x4c\xc7\x02\x9b\xff\xff\xff\x8d\x83\x45\xc4\xff\xff\x89\x04\x24\xe8\x63\xd5\xff\xff\xc7\x44\x24\x30\x00\x00\x00\x00\xe9\xd4\x06\x00\x00\x83\x7c\x24\x20\x00\x0f\x84\x47\x01\x00\x00\x83\xbc\x24\x60\x07\x00\x00\x00\x74\x5d\x8b\x4c\x24\x20\x89\x0c\x24\xe8\x55\xd5\xff\xff\x89\x84\x24\xa4\x00\x00\x00\xc7\x44\x24\x10\x04\x00\x00\x00\x8d\x84\x24\xa4\x00\x00\x00\x89\x44\x24\x0c\xc7\x44\x24\x08\x11\x00\x00\x00\xc7\x44\x24\x04\x29\x00\x00\x00\x8b\x44\x24\x34\x89\x04\x24\xe8\xef\xd3\xff\xff\x85\xc0\x0f\x89\x92\x06\x00\x00\x8d\x83\x45\xc4\xff\xff\x89\x04\x24\xe8\xe9\xd4\xff\xff\xe9\x7f\x06\x00\x00\x8b\x54\x24\x20\x89\x14\x24\xe8\x78\xd6\xff\xff\x89\x84\x24\xa8\x00\x00\x00\x83\xf8\xff\x74\x51\x89\x84\x24\xb0\x06\x00\x00\xc7\x44\x24\x10\x04\x00\x00\x00\x8d\x84\x24\xa8\x00\x00\x00\x89\x44\x24\x0c\xc7\x44\x24\x08\x20\x00\x00\x00\xc7\x44\x24\x04\x00\x00\x00\x00\x8b\x44\x24\x34\x89\x04\x24\xe8\x86\xd3\xff\xff\x85\xc0\x0f\x89\x99\x00\x00\x00\x8d\x83\x45\xc4\xff\xff\x89\x04\x24\xe8\x80\xd4\xff\xff\xe9\x86\x00\x00\x00\x8d\xb4\x24\x8c\x00\x00\x00\xc7\x84\x24\x8c\x00\x00\x00\x00\x00\x00\x00\xc7\x84\x24\x90\x00\x00\x00\x00\x00\x00\x00\xc7\x84\x24\x94\x00\x00\x00\x00\x00\x00\x00\x8b\x54\x24\x20\x89\x14\x24\xe8\x67\xd4\xff\xff\x89\x84\x24\x94\x00\x00\x00\xc7\x44\x24\x10\x0c\x00\x00\x00\x89\x74\x24\x0c\xc7\x44\x24\x08\x20\x00\x00\x00\xc7\x44\x24\x04\x00\x00\x00\x00\x8b\x44\x24\x34\x89\x04\x24\xe8\x08\xd3\xff\xff\x85\xc0\x79\x1f\x8d\x83\x45\xc4\xff\xff\x89\x04\x24\xe8\x06\xd4\xff\xff\xeb\x0f\xb8\x1c\x00\x00\x00\x83\xbc\x24\x60\x07\x00\x00\x00\x75\x05\xb8\x10\x00\x00\x00\x89\x44\x24\x08\x8d\x84\x24\xac\x06\x00\x00\x89\x44\x24\x04\x8b\x44\x24\x34\x89\x04\x24\xe8\x85\xd4\xff\xff\x85\xc0\x74\x38\x83\x7c\x24\x4c\x00\x74\x0a\x8b\x54\x24\x4c\xc7\x02\x9b\xff\xff\xff\x8d\x83\x50\xc4\xff\xff\x89\x04\x24\xe8\xb2\xd3\xff\xff\x8b\x44\x24\x34\x89\x04\x24\xe8\x76\xd5\xff\xff\xc7\x44\x24\x30\x00\x00\x00\x00\xe9\x17\x05\x00\x00\x83\x7c\x24\x4c\x00\x74\x0a\x8b\x54\x24\x4c\xc7\x02\x00\x00\x00\x00\xba\xd3\x4d\x62\x10\x8b\x84\x24\x50\x07\x00\x00\xf7\xe2\xc1\xea\x06\x89\x54\x24\x44\x85\xd2\x75\x13\xc7\x44\x24\x44\x01\x00\x00\x00\xc7\x84\x24\x50\x07\x00\x00\xe8\x03\x00\x00\x8d\x83\x48\xc6\xff\xff\xc7\x44\x24\x40\x01\x00\x00\x00\xc7\x44\x24\x20\x00\x00\x00\x00\xc7\x44\x24\x2c\x00\x00\x00\x00\x8d\x93\x85\xc4\xff\xff\x89\x54\x24\x5c\x83\x7c\x24\x20\x00\x0f\x85\x83\x01\x00\x00\x83\xbc\x24\x60\x07\x00\x00\x00\x0f\x84\xc0\x04\x00\x00\x83\x7c\x24\x40\x00\x0f\x85\x27\x05\x00\x00\x8b\x4c\x24\x44\x89\x4c\x24\x1c\x89\x44\x24\x18\x8d\x83\x55\xc4\xff\xff\x89\x44\x24\x14\x8d\x83\x2c\xc7\xff\xff\x89\x44\x24\x10\xc7\x44\x24\x0c\x00\x06\x00\x00\xc7\x44\x24\x08\x01\x00\x00\x00\xc7\x44\x24\x04\x00\x06\x00\x00\x8d\x84\x24\xac\x00\x00\x00\x89\x04\x24\xe8\xc9\xd1\xff\xff\x89\xc7\xb9\x00\x00\x00\x00\xba\x20\x00\x00\x00\xb8\x00\x00\x00\x00\x89\x4c\x04\x6c\x83\xc0\x04\x39\xd0\x72\xf5\xc7\x44\x24\x74\x02\x00\x00\x00\x8d\x93\x36\xc4\xff\xff\x8d\x84\x24\xa0\x00\x00\x00\x89\x44\x24\x0c\x8d\x44\x24\x6c\x89\x44\x24\x08\x8d\x83\x5f\xc4\xff\xff\x89\x44\x24\x04\x89\x14\x24\xe8\xfa\xd3\xff\xff\x85\xc0\x74\x44\x83\x7c\x24\x4c\x00\x74\x0a\x8b\x54\x24\x4c\xc7\x02\x9b\xff\xff\xff\x89\x04\x24\xe8\x5d\xd3\xff\xff\x89\x44\x24\x0c\x8d\x83\x64\xc4\xff\xff\x89\x44\x24\x08\xc7\x44\x24\x04\x01\x00\x00\x00\x8b\x83\xe8\xff\xff\xff\x8b\x00\x89\x04\x24\xe8\xc7\xd3\xff\xff\xe9\xa4\x03\x00\x00\x8b\xb4\x24\xa0\x00\x00\x00\x85\xf6\x74\x54\x8d\xab\x75\xc4\xff\xff\x89\x6c\x24\x20\x8b\x6c\x24\x34\x8b\x46\x10\x89\x44\x24\x14\x8b\x46\x14\x89\x44\x24\x10\xc7\x44\x24\x0c\x00\x00\x00\x00\x89\x7c\x24\x08\x8d\x84\x24\xac\x00\x00\x00\x89\x44\x24\x04\x89\x2c\x24\xe8\x1c\xd3\xff\xff\x89\xc7\x85\xc0\x79\x0c\x8b\x4c\x24\x20\x89\x0c\x24\xe8\xda\xd1\xff\xff\x8b\x76\x1c\x85\xf6\x75\xba\x8b\x84\x24\xa0\x00\x00\x00\x89\x04\x24\xe8\x04\xd3\xff\xff\x85\xff\x79\x1a\x83\x7c\x24\x4c\x00\x0f\x84\x27\x03\x00\x00\x8b\x44\x24\x4c\xc7\x00\x9b\xff\xff\xff\xe9\x18\x03\x00\x00\x8d\x84\x24\x98\x00\x00\x00\x89\x44\x24\x10\x8b\x94\x24\x50\x07\x00\x00\x89\x54\x24\x0c\xc7\x44\x24\x08\x00\x06\x00\x00\x8d\x84\x24\xac\x00\x00\x00\x89\x44\x24\x04\x8b\x44\x24\x34\x89\x04\x24\xe8\x51\x43\x00\x00\x89\x44\x24\x20\x85\xc0\x79\x1a\x83\x7c\x24\x4c\x00\x0f\x84\xd0\x02\x00\x00\x8b\x54\x24\x4c\xc7\x02\x9b\xff\xff\xff\xe9\xc1\x02\x00\x00\x83\x7c\x24\x20\x00\x74\x0c\x83\x7c\x24\x20\x00\x7f\x51\xe9\x96\x02\x00\x00\x83\x7c\x24\x30\x00\x74\x1a\x83\x7c\x24\x4c\x00\x0f\x84\x9c\x02\x00\x00\x8b\x4c\x24\x4c\xc7\x01\x00\x00\x00\x00\xe9\x8d\x02\x00\x00\x83\xbc\x24\x60\x07\x00\x00\x00\x0f\x84\x67\x02\x00\x00\x83\x7c\x24\x40\x00\x0f\x84\x54\x02\x00\x00\x83\x6c\x24\x2c\x01\xc7\x44\x24\x40\x00\x00\x00\x00\xe9\x4a\x02\x00\x00\xc7\x44\x24\x38\x00\x00\x00\x00\xc7\x44\x24\x3c\x00\x00\x00\x00\xc7\x44\x24\x24\x00\x00\x00\x00\xba\x00\x00\x00\x00\xbf\x00\x00\x00\x00\xbd\x00\x00\x00\x00\xc7\x44\x24\x50\x00\x00\x00\x00\x8d\x83\x7c\xc4\xff\xff\x89\x44\x24\x54\x8d\x8b\x2d\xc9\xff\xff\x89\x4c\x24\x58\x89\x6c\x24\x28\x0f\xb6\x84\x2c\xac\x00\x00\x00\x3c\x0d\x74\x19\x3c\x3a\x74\x0b\x3c\x0a\x0f\x85\xaf\x00\x00\x00\x90\xeb\x0a\x85\xff\x0f\x44\xfd\xe9\xa2\x00\x00\x00\x85\xff\x66\x90\x0f\x84\x91\x00\x00\x00\x83\xc7\x01\x80\xbc\x3c\xac\x00\x00\x00\x20\x74\xf3\x89\x7c\x24\x48\x8d\xb4\x14\xac\x00\x00\x00\xc7\x44\x24\x08\x08\x00\x00\x00\x8b\x44\x24\x54\x89\x44\x24\x04\x89\x34\x24\xe8\x5a\xd1\xff\xff\x85\xc0\x75\x1e\x8b\x54\x24\x48\x8d\x94\x14\xac\x00\x00\x00\x89\x54\x24\x24\x89\xe9\x29\xf9\x89\x4c\x24\x50\xbf\x00\x00\x00\x00\xeb\x3f\xc7\x44\x24\x08\x02\x00\x00\x00\x8b\x44\x24\x58\x89\x44\x24\x04\x89\x34\x24\xe8\x20\xd1\xff\xff\x85\xc0\x75\x1e\x8b\x54\x24\x48\x8d\x94\x14\xac\x00\x00\x00\x89\x54\x24\x3c\x89\xe9\x29\xf9\x89\x4c\x24\x38\xbf\x00\x00\x00\x00\xeb\x05\xbf\x00\x00\x00\x00\x8b\x54\x24\x28\x83\xc2\x01\x83\xc5\x01\x3b\x6c\x24\x20\x0f\x85\x28\xff\xff\xff\x83\x7c\x24\x3c\x00\x0f\x84\x24\x01\x00\x00\x83\x7c\x24\x24\x00\x0f\x84\x19\x01\x00\x00\x83\x7c\x24\x30\x00\x74\x62\x8b\x7c\x24\x30\x8b\x6c\x24\x50\x8b\x77\x04\x89\x6c\x24\x08\x8b\x44\x24\x24\x89\x44\x24\x04\x89\x34\x24\xe8\x19\xcf\xff\xff\x85\xc0\x75\x2f\x80\x3c\x2e\x00\x75\x29\x8b\x77\x08\x8b\x54\x24\x38\x89\x54\x24\x08\x8b\x4c\x24\x3c\x89\x4c\x24\x04\x89\x34\x24\xe8\xf4\xce\xff\xff\x85\xc0\x75\x0a\x8b\x44\x24\x38\x80\x3c\x06\x00\x74\x08\x8b\x3f\x85\xff\x75\xb0\xeb\x08\x85\xff\x0f\x85\xb0\x00\x00\x00\x8b\x4c\x24\x50\x8b\x54\x24\x38\x8d\x44\x11\x14\x89\x04\x24\xe8\x82\xcf\xff\xff\x89\xc6\x85\xc0\x75\x1a\x83\x7c\x24\x4c\x00\x0f\x84\xa3\x00\x00\x00\x8b\x44\x24\x4c\xc7\x00\x9a\xff\xff\xff\xe9\x94\x00\x00\x00\x8b\x44\x24\x30\x89\x06\x8d\x7e\x10\x89\x7e\x04\x8b\x6c\x24\x50\x83\xc5\x01\x8b\x54\x24\x50\x8d\x44\x16\x11\x89\x46\x08\x89\x54\x24\x08\x8b\x4c\x24\x24\x89\x4c\x24\x04\x89\x3c\x24\xe8\x50\xce\xff\xff\x8b\x44\x24\x50\xc6\x44\x06\x10\x00\x01\xef\x8b\x54\x24\x38\x89\x54\x24\x08\x8b\x4c\x24\x3c\x89\x4c\x24\x04\x89\x3c\x24\xe8\x2d\xce\xff\xff\x8b\x44\x24\x50\x01\xf0\x8b\x54\x24\x38\xc6\x44\x02\x11\x00\x8b\x84\x24\x98\x00\x00\x00\x89\x46\x0c\x89\x74\x24\x30\xeb\x08\xc7\x44\x24\x40\x01\x00\x00\x00\x83\x44\x24\x2c\x01\x8b\x4c\x24\x2c\x8b\x84\x8b\xac\xfe\xff\xff\x85\xc0\x0f\x85\x5a\xfb\xff\xff\x8b\x44\x24\x34\x89\x04\x24\xe8\x52\xd0\xff\xff\x8b\x44\x24\x30\x8b\x94\x24\x2c\x07\x00\x00\x65\x33\x15\x14\x00\x00\x00\x0f\x84\xfc\x00\x00\x00\xe9\xf2\x00\x00\x00\xb8\x1c\x00\x00\x00\xe9\x6b\xfa\xff\xff\x8b\x4c\x24\x44\x89\x4c\x24\x1c\x89\x44\x24\x18\x8b\x44\x24\x5c\x89\x44\x24\x14\x8d\x83\x2c\xc7\xff\xff\x89\x44\x24\x10\xc7\x44\x24\x0c\x00\x06\x00\x00\xc7\x44\x24\x08\x01\x00\x00\x00\xc7\x44\x24\x04\x00\x06\x00\x00\x8d\x84\x24\xac\x00\x00\x00\x89\x04\x24\xe8\x16\xcd\xff\xff\x89\xc7\xb9\x00\x00\x00\x00\xba\x20\x00\x00\x00\xb8\x00\x00\x00\x00\x89\x4c\x04\x6c\x83\xc0\x04\x39\xd0\x72\xf5\xc7\x44\x24\x74\x02\x00\x00\x00\x8b\x54\x24\x5c\xe9\x4a\xfb\xff\xff\x8b\x54\x24\x44\x89\x54\x24\x1c\x89\x44\x24\x18\x8d\x83\x95\xc4\xff\xff\x89\x44\x24\x14\x8d\x83\x2c\xc7\xff\xff\x89\x44\x24\x10\xc7\x44\x24\x0c\x00\x06\x00\x00\xc7\x44\x24\x08\x01\x00\x00\x00\xc7\x44\x24\x04\x00\x06\x00\x00\x8d\x84\x24\xac\x00\x00\x00\x89\x04\x24\xe8\xa2\xcc\xff\xff\x89\xc7\xb9\x00\x00\x00\x00\xba\x20\x00\x00\x00\xb8\x00\x00\x00\x00\x89\x4c\x04\x6c\x83\xc0\x04\x39\xd0\x72\xf5\xc7\x44\x24\x74\x02\x00\x00\x00\x8d\x93\x2e\xc4\xff\xff\xe9\xd4\xfa\xff\xff\xe8\x0e\x64\x00\x00\x81\xc4\x3c\x07\x00\x00\x5b\x5e\x5f\x5d\xc3\x56\x53\x83\xec\x14\xe8\x0c\xf1\xff\xff\x81\xc3\x7d\xb1\x00\x00\x8b\x44\x24\x20\x85\xc0\x75\x04\xeb\x10\x89\xf0\x8b\x30\x89\x04\x24\xe8\x8d\xcc\xff\xff\x85\xf6\x75\xf0\x83\xc4\x14\x5b\x5e\xc3\x55\x57\x56\x53\x83\xec\x6c\xe8\xda\xf0\xff\xff\x81\xc3\x4b\xb1\x00\x00\x8b\xb4\x24\x80\x00\x00\x00\x8b\x84\x24\x84\x00\x00\x00\x89\x44\x24\x1c\x8b\x94\x24\x88\x00\x00\x00\x89\x54\x24\x3c\x65\x8b\x0d\x14\x00\x00\x00\x89\x4c\x24\x5c\x31\xc9\x8d\xb8\x80\x00\x00\x00\xb8\x00\x00\x00\x00\xb9\xff\xff\xff\xff\xf2\xae\xf7\xd1\x83\xe9\x01\x89\xcd\x85\xc9\x75\x0e\x89\xd7\xb9\xff\xff\xff\xff\xf2\xae\xf7\xd1\x8d\x69\xff\x83\xbc\x24\x8c\x00\x00\x00\x00\x74\x31\x8d\x44\x24\x4c\x89\x44\x24\x04\x8b\xbc\x24\x8c\x00\x00\x00\x89\x3c\x24\xe8\x7b\xcd\xff\xff\x85\xc0\x74\x16\x8d\x7c\x24\x4c\xb8\x00\x00\x00\x00\xb9\xff\xff\xff\xff\xf2\xae\xf7\xd1\x8d\x6c\x0d\x02\x8b\x44\x24\x1c\x05\x84\x04\x00\x00\x89\x44\x24\x2c\xba\xff\xff\xff\xff\x89\xc7\xb8\x00\x00\x00\x00\x89\xd1\xf2\xae\x89\xef\x29\xcf\x89\x7c\x24\x20\x8b\x4c\x24\x1c\x81\xc1\x84\x03\x00\x00\x89\x4c\x24\x30\x89\xcf\x89\xd1\xf2\xae\x89\xef\x29\xcf\x89\x7c\x24\x24\x8b\x4c\x24\x1c\x81\xc1\x84\x01\x00\x00\x89\x4c\x24\x34\x89\xcf\x89\xd1\xf2\xae\x89\xef\x29\xcf\x89\x7c\x24\x28\x8b\x4c\x24\x1c\x81\xc1\x84\x07\x00\x00\x89\x4c\x24\x38\x89\xcf\x89\xd1\xf2\xae\x29\xcd\x8b\x7c\x24\x20\x89\x3c\x24\xe8\x52\xcc\xff\xff\x89\x46\x04\x8b\x44\x24\x24\x89\x04\x24\xe8\x43\xcc\xff\xff\x89\x06\x8b\x54\x24\x28\x89\x14\x24\xe8\x35\xcc\xff\xff\x89\x46\x08\x89\x2c\x24\xe8\x2a\xcc\xff\xff\x89\x46\x0c\x8b\x4c\x24\x3c\x89\x0c\x24\xe8\x9b\xcc\xff\xff\x89\x46\x10\x8b\x7c\x24\x1c\x80\xbf\x80\x00\x00\x00\x00\x74\x1e\x8b\x44\x24\x20\x89\x44\x24\x08\x89\xf8\x83\xe8\x80\x89\x44\x24\x04\x8b\x46\x04\x89\x04\x24\xe8\x9f\xcc\xff\xff\xeb\x1b\x8b\x54\x24\x20\x89\x54\x24\x08\x8b\x4c\x24\x3c\x89\x4c\x24\x04\x8b\x46\x04\x89\x04\x24\xe8\x82\xcc\xff\xff\xc7\x44\x24\x04\x2f\x00\x00\x00\x8b\x46\x04\x83\xc0\x07\x89\x04\x24\xe8\xfc\xcb\xff\xff\x85\xc0\x74\x03\xc6\x00\x00\x83\xbc\x24\x8c\x00\x00\x00\x00\x0f\x84\xb1\x00\x00\x00\x8b\x7e\x04\xc7\x44\x24\x08\x0d\x00\x00\x00\x8d\x83\x9f\xc4\xff\xff\x89\x44\x24\x04\x89\x3c\x24\xe8\xca\xca\xff\xff\x85\xc0\x0f\x85\x8c\x00\x00\x00\xc7\x44\x24\x04\x5d\x00\x00\x00\x89\x3c\x24\xe8\xb2\xcb\xff\xff\x89\x44\x24\x1c\x85\xc0\x74\x74\x89\xc7\xb9\xff\xff\xff\xff\xb8\x00\x00\x00\x00\xf2\xae\x89\xca\xf7\xd2\x8d\x7c\x24\x4c\xb9\xff\xff\xff\xff\xf2\xae\xf7\xd1\x89\x54\x24\x08\x8b\x44\x24\x1c\x89\x44\x24\x04\x8d\x44\x08\x02\x89\x04\x24\xe8\x33\xca\xff\xff\x8b\x44\x24\x1c\x66\xc7\x00\x25\x32\xc6\x40\x02\x35\x8d\x7c\x24\x4c\xb9\xff\xff\xff\xff\xb8\x00\x00\x00\x00\xf2\xae\xf7\xd1\x83\xe9\x01\x8b\x44\x24\x1c\x83\xc0\x03\x89\x4c\x24\x08\x8d\x54\x24\x4c\x89\x54\x24\x04\x89\x04\x24\xe8\x16\xca\xff\xff\x8b\x4c\x24\x24\x89\x4c\x24\x08\x8b\x46\x04\x89\x44\x24\x04\x8b\x06\x89\x04\x24\xe8\x8d\xcb\xff\xff\x8b\x7c\x24\x28\x89\x7c\x24\x08\x8b\x46\x04\x89\x44\x24\x04\x8b\x46\x08\x89\x04\x24\xe8\x73\xcb\xff\xff\x89\x6c\x24\x08\x8b\x46\x04\x89\x44\x24\x04\x8b\x46\x0c\x89\x04\x24\xe8\x5d\xcb\xff\xff\x8b\x46\x04\x8b\x54\x24\x20\x89\x14\x24\x8b\x54\x24\x2c\xe8\x1a\xee\xff\xff\x8b\x4c\x24\x24\x89\x0c\x24\x8b\x54\x24\x30\x8b\x06\xe8\x08\xee\xff\xff\x8b\x46\x08\x89\x3c\x24\x8b\x54\x24\x34\xe8\xf9\xed\xff\xff\x8b\x46\x0c\x89\x2c\x24\x8b\x54\x24\x38\xe8\xea\xed\xff\xff\x8b\x7c\x24\x5c\x65\x33\x3d\x14\x00\x00\x00\x74\x05\xe8\xb8\x60\x00\x00\x83\xc4\x6c\x5b\x5e\x5f\x5d\xc3\x83\xec\x1c\x89\x5c\x24\x14\x89\x74\x24\x18\xe8\xb3\xed\xff\xff\x81\xc3\x24\xae\x00\x00\x8b\x74\x24\x20\x85\xf6\x74\x58\x8b\x06\x89\x04\x24\xe8\x38\xc9\xff\xff\xc7\x06\x00\x00\x00\x00\x8b\x46\x04\x89\x04\x24\xe8\x27\xc9\xff\xff\xc7\x46\x04\x00\x00\x00\x00\x8b\x46\x08\x89\x04\x24\xe8\x15\xc9\xff\xff\xc7\x46\x08\x00\x00\x00\x00\x8b\x46\x0c\x89\x04\x24\xe8\x03\xc9\xff\xff\xc7\x46\x0c\x00\x00\x00\x00\x8b\x46\x10\x89\x04\x24\xe8\xf1\xc8\xff\xff\xc7\x46\x10\x00\x00\x00\x00\x8b\x5c\x24\x14\x8b\x74\x24\x18\x83\xc4\x1c\xc3\x83\xec\x7c\x89\x5c\x24\x70\x89\x74\x24\x74\x89\x7c\x24\x78\xe8\x2d\xed\xff\xff\x81\xc3\x9e\xad\x00\x00\x65\xa1\x14\x00\x00\x00\x89\x44\x24\x6c\x31\xc0\xc6\x44\x24\x2c\x00\xc7\x44\x24\x10\x00\x00\x00\x00\x8d\x44\x24\x28\x89\x44\x24\x0c\x8d\x7c\x24\x2c\x89\x7c\x24\x08\x8b\x84\x24\x84\x00\x00\x00\x05\x04\x05\x00\x00\x89\x44\x24\x04\x8b\x84\x24\x80\x00\x00\x00\x8b\x00\x89\x04\x24\xe8\x91\x0b\x00\x00\xb9\x0a\x00\x00\x00\x8d\xb3\xad\xc4\xff\xff\xf3\xa6\x0f\x97\xc2\x0f\x92\xc0\x38\xc2\x0f\x94\xc0\x0f\xb6\xc0\x8b\x54\x24\x6c\x65\x33\x15\x14\x00\x00\x00\x74\x05\xe8\x9d\x5f\x00\x00\x8b\x5c\x24\x70\x8b\x74\x24\x74\x8b\x7c\x24\x78\x83\xc4\x7c\xc3\x55\x57\x56\x53\x83\xec\x7c\xe8\x94\xec\xff\xff\x81\xc3\x05\xad\x00\x00\x8b\x84\x24\x90\x00\x00\x00\x89\x44\x24\x44\x8b\xac\x24\x94\x00\x00\x00\x8b\x94\x24\x98\x00\x00\x00\x89\x54\x24\x24\x8b\x84\x24\x9c\x00\x00\x00\x89\x44\x24\x34\x65\x8b\x15\x14\x00\x00\x00\x89\x54\x24\x6c\x31\xd2\xc7\x44\x24\x30\x00\x00\x00\x00\x83\x7c\x24\x44\x00\x0f\x84\x85\x05\x00\x00\x8b\x44\x24\x44\xc7\x44\x24\x40\x00\x00\x00\x00\x83\xc2\x01\x8b\x00\x85\xc0\x75\xf7\x89\x54\x24\x40\x85\xd2\x7e\x1d\xc7\x44\x24\x04\x0c\x00\x00\x00\x89\x14\x24\xe8\x66\xca\xff\xff\x89\x44\x24\x48\x85\xc0\x75\x0d\xe9\x43\x05\x00\x00\xc7\x44\x24\x48\x00\x00\x00\x00\x8b\x44\x24\x48\x89\x44\x24\x4c\x89\x44\x24\x20\x8b\x74\x24\x44\x8d\x93\x7c\xc6\xff\xff\x89\x54\x24\x30\x89\x6c\x24\x28\x89\xf5\x8b\x44\x24\x20\x89\x44\x24\x2c\x8b\x45\x0c\x89\x44\x24\x10\x8b\x94\x24\xa0\x00\x00\x00\x89\x54\x24\x0c\x8b\x44\x24\x34\x89\x44\x24\x08\x8b\x44\x24\x20\x83\xc0\x04\x89\x44\x24\x04\x8b\x45\x04\x89\x04\x24\xe8\xb6\x4c\x00\x00\x8b\x54\x24\x20\x89\x02\x85\xc0\x0f\x84\xbe\x00\x00\x00\x8b\x7c\x24\x24\xba\x84\x0b\x00\x00\xf7\xc7\x01\x00\x00\x00\x74\x0c\xc6\x07\x00\x8b\x7c\x24\x24\x83\xc7\x01\xb2\x83\xf7\xc7\x02\x00\x00\x00\x74\x0b\x66\xc7\x07\x00\x00\x83\xc7\x02\x83\xea\x02\x89\xd1\xc1\xe9\x02\xb8\x00\x00\x00\x00\xf3\xab\xf6\xc2\x02\x74\x08\x66\xc7\x07\x00\x00\x83\xc7\x02\xf6\xc2\x01\x74\x03\xc6\x07\x00\x8b\x44\x24\x28\xc7\x00\x00\x00\x00\x00\xc7\x40\x04\x00\x00\x00\x00\xc7\x40\x08\x00\x00\x00\x00\xc7\x40\x0c\x00\x00\x00\x00\xc7\x40\x10\x00\x00\x00\x00\x8b\x54\x24\x24\x89\x54\x24\x08\x8b\x54\x24\x2c\x8b\x42\x04\x89\x44\x24\x04\x8b\x02\x89\x04\x24\xe8\x07\xec\xff\xff\x8b\x74\x24\x24\x81\xc6\x04\x03\x00\x00\xb9\x38\x00\x00\x00\x8b\x7c\x24\x30\xf3\xa6\x0f\x97\xc2\x0f\x92\xc0\x38\xc2\x75\x0b\x8b\x44\x24\x2c\xc7\x40\x08\x01\x00\x00\x00\x8b\x6d\x00\x83\x44\x24\x20\x0c\x85\xed\x0f\x85\xec\xfe\xff\xff\x8b\x6c\x24\x28\xc7\x44\x24\x30\x01\x00\x00\x00\x8b\x54\x24\x24\x83\xe2\x01\x89\x54\x24\x2c\xe9\x8b\x03\x00\x00\x8b\x74\x24\x20\x83\x3e\x00\x0f\x84\x5b\x03\x00\x00\x8b\x7c\x24\x24\xba\x84\x0b\x00\x00\x83\x7c\x24\x2c\x00\x74\x0c\xc6\x07\x00\x8b\x7c\x24\x24\x83\xc7\x01\xb2\x83\xf7\xc7\x02\x00\x00\x00\x74\x0b\x66\xc7\x07\x00\x00\x83\xc7\x02\x83\xea\x02\x89\xd1\xc1\xe9\x02\xb8\x00\x00\x00\x00\xf3\xab\xf6\xc2\x02\x74\x08\x66\xc7\x07\x00\x00\x83\xc7\x02\xf6\xc2\x01\x74\x03\xc6\x07\x00\xc7\x45\x00\x00\x00\x00\x00\xc7\x45\x04\x00\x00\x00\x00\xc7\x45\x08\x00\x00\x00\x00\xc7\x45\x0c\x00\x00\x00\x00\xc7\x45\x10\x00\x00\x00\x00\x8b\x44\x24\x24\x89\x44\x24\x08\x8b\x46\x04\x89\x44\x24\x04\x8b\x06\x89\x04\x24\xe8\x18\xeb\xff\xff\x83\x7e\x08\x00\x75\x0b\x83\x7c\x24\x30\x02\x0f\x8e\x6e\x02\x00\x00\x8b\x54\x24\x28\x8b\x42\x0c\x89\x44\x24\x0c\x8b\x42\x04\x89\x44\x24\x08\x8b\x44\x24\x24\x89\x44\x24\x04\x89\x2c\x24\xe8\x02\xf9\xff\xff\x83\x7c\x24\x30\x01\x0f\x8f\xd1\x02\x00\x00\x8b\x54\x24\x24\x89\x54\x24\x04\x89\x2c\x24\xe8\x8c\xfc\xff\xff\x85\xc0\x74\x28\x8d\x44\x24\x5c\x89\x44\x24\x08\x8b\x44\x24\x24\x05\x04\x05\x00\x00\x89\x44\x24\x04\x8b\x45\x00\x89\x04\x24\xe8\xa0\x0d\x00\x00\x85\xc0\x0f\x84\x95\x02\x00\x00\x89\x2c\x24\xe8\xd6\xfb\xff\xff\x8b\x44\x24\x24\x80\xb8\x04\x07\x00\x00\x00\x0f\x84\xec\x01\x00\x00\x05\x84\x03\x00\x00\x89\x44\x24\x34\x8b\x54\x24\x24\x81\xc2\x84\x09\x00\x00\x89\x54\x24\x38\x89\xd7\x89\xc6\xba\x00\x02\x00\x00\xf7\xc7\x01\x00\x00\x00\x74\x24\x8b\x54\x24\x24\x0f\xb6\x82\x84\x03\x00\x00\x88\x82\x84\x09\x00\x00\x8b\x7c\x24\x38\x83\xc7\x01\x8b\x74\x24\x34\x83\xc6\x01\xba\xff\x01\x00\x00\xf7\xc7\x02\x00\x00\x00\x74\x0f\x0f\xb7\x06\x66\x89\x07\x83\xc7\x02\x83\xc6\x02\x83\xea\x02\x89\xd1\xc1\xe9\x02\xf3\xa5\xb8\x00\x00\x00\x00\xf6\xc2\x02\x74\x0b\x0f\xb7\x06\x66\x89\x07\xb8\x02\x00\x00\x00\xf6\xc2\x01\x74\x07\x0f\xb6\x14\x06\x88\x14\x07\x8b\x44\x24\x24\x05\x84\x05\x00\x00\x89\x44\x24\x3c\x8b\x7c\x24\x34\x89\xc6\xba\x00\x02\x00\x00\xf7\xc7\x01\x00\x00\x00\x74\x24\x8b\x54\x24\x24\x0f\xb6\x82\x84\x05\x00\x00\x88\x82\x84\x03\x00\x00\x8b\x7c\x24\x34\x83\xc7\x01\x8b\x74\x24\x3c\x83\xc6\x01\xba\xff\x01\x00\x00\xf7\xc7\x02\x00\x00\x00\x74\x0f\x0f\xb7\x06\x66\x89\x07\x83\xc7\x02\x83\xc6\x02\x83\xea\x02\x89\xd1\xc1\xe9\x02\xf3\xa5\xb8\x00\x00\x00\x00\xf6\xc2\x02\x74\x0b\x0f\xb7\x06\x66\x89\x07\xb8\x02\x00\x00\x00\xf6\xc2\x01\x74\x07\x0f\xb6\x14\x06\x88\x14\x07\x8b\x7c\x24\x3c\x8b\x74\x24\x38\xba\x00\x02\x00\x00\xf7\xc7\x01\x00\x00\x00\x74\x24\x8b\x54\x24\x24\x0f\xb6\x82\x84\x09\x00\x00\x88\x82\x84\x05\x00\x00\x8b\x7c\x24\x3c\x83\xc7\x01\x8b\x74\x24\x38\x83\xc6\x01\xba\xff\x01\x00\x00\xf7\xc7\x02\x00\x00\x00\x74\x0f\x0f\xb7\x06\x66\x89\x07\x83\xc7\x02\x83\xc6\x02\x83\xea\x02\x89\xd1\xc1\xe9\x02\xf3\xa5\xb8\x00\x00\x00\x00\xf6\xc2\x02\x74\x0b\x0f\xb7\x06\x66\x89\x07\xb8\x02\x00\x00\x00\xf6\xc2\x01\x74\x07\x0f\xb6\x14\x06\x88\x14\x07\x8b\x54\x24\x28\x8b\x42\x0c\x89\x44\x24\x0c\x8b\x42\x04\x89\x44\x24\x08\x8b\x44\x24\x24\x89\x44\x24\x04\x89\x2c\x24\xe8\xfa\xf6\xff\xff\x8b\x54\x24\x24\x89\x54\x24\x04\x89\x2c\x24\xe8\x8f\xfa\xff\xff\x85\xc0\x74\x28\x8d\x44\x24\x5c\x89\x44\x24\x08\x8b\x44\x24\x24\x05\x04\x05\x00\x00\x89\x44\x24\x04\x8b\x45\x00\x89\x04\x24\xe8\xa3\x0b\x00\x00\x85\xc0\x0f\x84\x98\x00\x00\x00\x89\x2c\x24\xe8\xd9\xf9\xff\xff\x8b\x7c\x24\x24\xba\x84\x0b\x00\x00\x83\x7c\x24\x2c\x00\x74\x0c\xc6\x07\x00\x8b\x7c\x24\x24\x83\xc7\x01\xb2\x83\xf7\xc7\x02\x00\x00\x00\x74\x0b\x66\xc7\x07\x00\x00\x83\xc7\x02\x83\xea\x02\x89\xd1\xc1\xe9\x02\xb8\x00\x00\x00\x00\xf3\xab\xf6\xc2\x02\x74\x08\x66\xc7\x07\x00\x00\x83\xc7\x02\xf6\xc2\x01\x74\x03\xc6\x07\x00\x8b\x44\x24\x28\x8b\x00\x89\x44\x24\x28\x83\x44\x24\x20\x0c\x85\xc0\x0f\x85\x81\xfc\xff\xff\x83\x44\x24\x30\x01\x83\x7c\x24\x30\x04\x74\x15\x8b\x54\x24\x4c\x89\x54\x24\x20\x8b\x44\x24\x44\x89\x44\x24\x28\xe9\x60\xfc\xff\xff\xc7\x44\x24\x30\x00\x00\x00\x00\x83\x7c\x24\x48\x00\x74\x44\x83\x7c\x24\x40\x00\x7e\x27\xbe\x00\x00\x00\x00\x8b\x6c\x24\x40\x89\xf7\x8b\x74\x24\x4c\x8b\x06\x85\xc0\x74\x08\x89\x04\x24\xe8\x7e\xc2\xff\xff\x83\xc7\x01\x83\xc6\x0c\x39\xef\x75\xe8\x8b\x44\x24\x48\x89\x04\x24\xe8\x68\xc2\xff\xff\xeb\x08\xc7\x44\x24\x30\xff\xff\xff\xff\x8b\x44\x24\x30\x8b\x54\x24\x6c\x65\x33\x15\x14\x00\x00\x00\x74\x05\xe8\x98\x59\x00\x00\x83\xc4\x7c\x5b\x5e\x5f\x5d\xc3\x83\xec\x4c\x89\x5c\x24\x3c\x89\x74\x24\x40\x89\x7c\x24\x44\x89\x6c\x24\x48\xe8\x8b\xe6\xff\xff\x81\xc3\xfc\xa6\x00\x00\x8b\x74\x24\x54\xc7\x44\x24\x2c\x00\x00\x00\x00\xc7\x44\x24\x10\x00\x00\x00\x00\x8b\x44\x24\x60\x89\x44\x24\x0c\x8b\x44\x24\x5c\x89\x44\x24\x08\x8d\x44\x24\x2c\x89\x44\x24\x04\x8b\x44\x24\x50\x89\x04\x24\xe8\x57\x47\x00\x00\x89\xc5\xb8\x00\x00\x00\x00\x85\xed\x0f\x84\xb8\x00\x00\x00\x8b\x7c\x24\x58\xba\x84\x0b\x00\x00\xf7\xc7\x01\x00\x00\x00\x74\x0c\xc6\x07\x00\x8b\x7c\x24\x58\x83\xc7\x01\xb2\x83\xf7\xc7\x02\x00\x00\x00\x74\x0b\x66\xc7\x07\x00\x00\x83\xc7\x02\x83\xea\x02\x89\xd1\xc1\xe9\x02\xb8\x00\x00\x00\x00\xf3\xab\xf6\xc2\x02\x74\x08\x66\xc7\x07\x00\x00\x83\xc7\x02\xf6\xc2\x01\x74\x03\xc6\x07\x00\xc7\x06\x00\x00\x00\x00\xc7\x46\x04\x00\x00\x00\x00\xc7\x46\x08\x00\x00\x00\x00\xc7\x46\x0c\x00\x00\x00\x00\xc7\x46\x10\x00\x00\x00\x00\x8b\x44\x24\x58\x89\x44\x24\x08\x8b\x44\x24\x2c\x89\x44\x24\x04\x89\x2c\x24\xe8\xb0\xe6\xff\xff\x89\x2c\x24\xe8\x48\xc1\xff\xff\xc7\x44\x24\x0c\x00\x00\x00\x00\x8b\x44\x24\x50\x89\x44\x24\x08\x8b\x44\x24\x58\x89\x44\x24\x04\x89\x34\x24\xe8\xa5\xf4\xff\xff\xb8\x01\x00\x00\x00\x8b\x5c\x24\x3c\x8b\x74\x24\x40\x8b\x7c\x24\x44\x8b\x6c\x24\x48\x83\xc4\x4c\xc3\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x53\x83\xec\x18\xe8\x5a\xe5\xff\xff\x81\xc3\xcb\xa5\x00\x00\x89\xc2\xb8\x00\x00\x00\x00\x85\xd2\x74\x18\xc7\x44\x24\x08\x00\x00\x00\x00\xc7\x44\x24\x04\x00\x00\x00\x00\x89\x14\x24\xe8\xee\xc1\xff\xff\x83\xc4\x18\x5b\xc3\x81\xec\x9c\x00\x00\x00\x89\x9c\x24\x8c\x00\x00\x00\x89\xb4\x24\x90\x00\x00\x00\x89\xbc\x24\x94\x00\x00\x00\x89\xac\x24\x98\x00\x00\x00\xe8\x05\xe5\xff\xff\x81\xc3\x76\xa5\x00\x00\x65\xa1\x14\x00\x00\x00\x89\x44\x24\x7c\x31\xc0\x8d\x44\x24\x20\x89\x44\x24\x14\xc7\x44\x24\x10\x00\x00\x00\x00\x8d\x83\x79\xc7\xff\xff\x89\x44\x24\x0c\x8b\x84\x24\xa4\x00\x00\x00\x89\x44\x24\x08\x8b\x84\x24\xa0\x00\x00\x00\x89\x44\x24\x04\xc7\x04\x24\xff\xff\xff\xff\xe8\x4c\xe9\xff\xff\x89\xc6\xbf\xfd\xff\xff\xff\x85\xc0\x74\x41\x8d\x6c\x24\x24\x89\x6c\x24\x08\x8b\x44\x24\x20\x89\x44\x24\x04\x89\x34\x24\xe8\xd2\x55\x00\x00\x89\x34\x24\xe8\x29\xc0\xff\xff\x8d\x83\x8b\xc7\xff\xff\x89\x44\x24\x04\x89\x2c\x24\xe8\x88\x56\x00\x00\xe8\x12\xff\xff\xff\x89\xc7\x89\x2c\x24\xe8\x1b\x56\x00\x00\x89\xf8\x8b\x54\x24\x7c\x65\x33\x15\x14\x00\x00\x00\x74\x05\xe8\x44\x57\x00\x00\x8b\x9c\x24\x8c\x00\x00\x00\x8b\xb4\x24\x90\x00\x00\x00\x8b\xbc\x24\x94\x00\x00\x00\x8b\xac\x24\x98\x00\x00\x00\x81\xc4\x9c\x00\x00\x00\xc3\x81\xec\x9c\x00\x00\x00\x89\x9c\x24\x8c\x00\x00\x00\x89\xb4\x24\x90\x00\x00\x00\x89\xbc\x24\x94\x00\x00\x00\x89\xac\x24\x98\x00\x00\x00\xe8\x0d\xe4\xff\xff\x81\xc3\x7e\xa4\x00\x00\x65\xa1\x14\x00\x00\x00\x89\x44\x24\x7c\x31\xc0\x8d\x44\x24\x20\x89\x44\x24\x14\xc7\x44\x24\x10\x00\x00\x00\x00\x8d\x83\x9d\xc7\xff\xff\x89\x44\x24\x0c\x8b\x84\x24\xa4\x00\x00\x00\x89\x44\x24\x08\x8b\x84\x24\xa0\x00\x00\x00\x89\x44\x24\x04\xc7\x04\x24\xff\xff\xff\xff\xe8\x54\xe8\xff\xff\x89\xc6\xbf\xfd\xff\xff\xff\x85\xc0\x74\x41\x8d\x6c\x24\x24\x89\x6c\x24\x08\x8b\x44\x24\x20\x89\x44\x24\x04\x89\x34\x24\xe8\xda\x54\x00\x00\x89\x34\x24\xe8\x31\xbf\xff\xff\x8d\x83\xb3\xc7\xff\xff\x89\x44\x24\x04\x89\x2c\x24\xe8\x90\x55\x00\x00\xe8\x1a\xfe\xff\xff\x89\xc7\x89\x2c\x24\xe8\x23\x55\x00\x00\x89\xf8\x8b\x54\x24\x7c\x65\x33\x15\x14\x00\x00\x00\x74\x05\xe8\x4c\x56\x00\x00\x8b\x9c\x24\x8c\x00\x00\x00\x8b\xb4\x24\x90\x00\x00\x00\x8b\xbc\x24\x94\x00\x00\x00\x8b\xac\x24\x98\x00\x00\x00\x81\xc4\x9c\x00\x00\x00\xc3\x81\xec\x9c\x00\x00\x00\x89\x9c\x24\x8c\x00\x00\x00\x89\xb4\x24\x90\x00\x00\x00\x89\xbc\x24\x94\x00\x00\x00\x89\xac\x24\x98\x00\x00\x00\xe8\x15\xe3\xff\xff\x81\xc3\x86\xa3\x00\x00\x65\xa1\x14\x00\x00\x00\x89\x44\x24\x7c\x31\xc0\x8d\x44\x24\x20\x89\x44\x24\x14\xc7\x44\x24\x10\x00\x00\x00\x00\x8d\x83\xc9\xc7\xff\xff\x89\x44\x24\x0c\x8b\x84\x24\xa4\x00\x00\x00\x89\x44\x24\x08\x8b\x84\x24\xa0\x00\x00\x00\x89\x44\x24\x04\xc7\x04\x24\xff\xff\xff\xff\xe8\x5c\xe7\xff\xff\x89\xc6\xbf\xfd\xff\xff\xff\x85\xc0\x74\x41\x8d\x6c\x24\x24\x89\x6c\x24\x08\x8b\x44\x24\x20\x89\x44\x24\x04\x89\x34\x24\xe8\xe2\x53\x00\x00\x89\x34\x24\xe8\x39\xbe\xff\xff\x8d\x83\xdd\xc7\xff\xff\x89\x44\x24\x04\x89\x2c\x24\xe8\x98\x54\x00\x00\xe8\x22\xfd\xff\xff\x89\xc7\x89\x2c\x24\xe8\x2b\x54\x00\x00\x89\xf8\x8b\x54\x24\x7c\x65\x33\x15\x14\x00\x00\x00\x74\x05\xe8\x54\x55\x00\x00\x8b\x9c\x24\x8c\x00\x00\x00\x8b\xb4\x24\x90\x00\x00\x00\x8b\xbc\x24\x94\x00\x00\x00\x8b\xac\x24\x98\x00\x00\x00\x81\xc4\x9c\x00\x00\x00\xc3\x81\xec\x9c\x00\x00\x00\x89\x9c\x24\x8c\x00\x00\x00\x89\xb4\x24\x90\x00\x00\x00\x89\xbc\x24\x94\x00\x00\x00\x89\xac\x24\x98\x00\x00\x00\xe8\x1d\xe2\xff\xff\x81\xc3\x8e\xa2\x00\x00\x65\xa1\x14\x00\x00\x00\x89\x44\x24\x7c\x31\xc0\x8d\x44\x24\x20\x89\x44\x24\x14\xc7\x44\x24\x10\x00\x00\x00\x00\x8d\x83\xf1\xc7\xff\xff\x89\x44\x24\x0c\x8b\x84\x24\xa4\x00\x00\x00\x89\x44\x24\x08\x8b\x84\x24\xa0\x00\x00\x00\x89\x44\x24\x04\xc7\x04\x24\xff\xff\xff\xff\xe8\x64\xe6\xff\xff\x89\xc6\xbf\xfd\xff\xff\xff\x85\xc0\x74\x41\x8d\x6c\x24\x24\x89\x6c\x24\x08\x8b\x44\x24\x20\x89\x44\x24\x04\x89\x34\x24\xe8\xea\x52\x00\x00\x89\x34\x24\xe8\x41\xbd\xff\xff\x8d\x83\x09\xc8\xff\xff\x89\x44\x24\x04\x89\x2c\x24\xe8\xa0\x53\x00\x00\xe8\x2a\xfc\xff\xff\x89\xc7\x89\x2c\x24\xe8\x33\x53\x00\x00\x89\xf8\x8b\x54\x24\x7c\x65\x33\x15\x14\x00\x00\x00\x74\x05\xe8\x5c\x54\x00\x00\x8b\x9c\x24\x8c\x00\x00\x00\x8b\xb4\x24\x90\x00\x00\x00\x8b\xbc\x24\x94\x00\x00\x00\x8b\xac\x24\x98\x00\x00\x00\x81\xc4\x9c\x00\x00\x00\xc3\x55\x57\x56\x53\x81\xec\xac\x00\x00\x00\xe8\x3d\xe1\xff\xff\x81\xc3\xae\xa1\x00\x00\x8b\x94\x24\xc0\x00\x00\x00\x8b\x8c\x24\xc4\x00\x00\x00\x8b\xbc\x24\xc8\x00\x00\x00\x8b\x84\x24\xcc\x00\x00\x00\x89\x44\x24\x24\x8b\x84\x24\xd0\x00\x00\x00\x89\x44\x24\x20\x65\xa1\x14\x00\x00\x00\x89\x84\x24\x9c\x00\x00\x00\x31\xc0\xc7\x44\x24\x40\xff\xff\xff\xff\x85\xff\x75\x10\xb8\xfe\xff\xff\xff\x83\x7c\x24\x24\x00\x0f\x84\x90\x01\x00\x00\x8d\x44\x24\x3c\x89\x44\x24\x14\xc7\x44\x24\x10\x00\x00\x00\x00\x8d\x83\x21\xc8\xff\xff\x89\x44\x24\x0c\x89\x4c\x24\x08\x89\x54\x24\x04\xc7\x04\x24\xff\xff\xff\xff\xe8\x48\xe5\xff\xff\x89\xc5\x85\xc0\x0f\x84\x53\x01\x00\x00\x8d\x74\x24\x44\x89\x74\x24\x08\x8b\x44\x24\x3c\x89\x44\x24\x04\x89\x2c\x24\xe8\xcf\x51\x00\x00\x89\x2c\x24\xe8\x26\xbc\xff\xff\x8d\x83\x2f\xc8\xff\xff\x89\x44\x24\x04\x89\x34\x24\xe8\x85\x52\x00\x00\x89\x44\x24\x28\x8d\x83\x39\xc8\xff\xff\x89\x44\x24\x04\x89\x34\x24\xe8\x6f\x52\x00\x00\x89\xc5\x8d\x83\x4d\xc8\xff\xff\x89\x44\x24\x04\x89\x34\x24\xe8\x5b\x52\x00\x00\x89\xc6\x85\xed\x0f\x95\xc0\x83\x7c\x24\x28\x00\x0f\x95\x44\x24\x2f\x84\xc0\x74\x0f\x80\x7c\x24\x2f\x00\x74\x08\xc7\x44\x24\x40\x00\x00\x00\x00\x85\xff\x74\x21\x84\xc0\x74\x1a\xc7\x44\x24\x08\x40\x00\x00\x00\x89\x6c\x24\x04\x89\x3c\x24\xe8\x4a\xbd\xff\xff\xc6\x47\x3f\x00\xeb\x03\xc6\x07\x00\x83\x7c\x24\x24\x00\x74\x25\x80\x7c\x24\x2f\x00\x74\x1e\x8b\x54\x24\x24\x89\x54\x24\x08\x8d\x83\x64\xc8\xff\xff\x89\x44\x24\x04\x8b\x44\x24\x28\x89\x04\x24\xe8\x75\xbd\xff\xff\x83\x7c\x24\x20\x00\x74\x2d\x85\xf6\x74\x22\xc7\x44\x24\x08\x40\x00\x00\x00\x89\x74\x24\x04\x8b\x54\x24\x20\x89\x14\x24\xe8\xf2\xbc\xff\xff\x8b\x44\x24\x20\xc6\x40\x3f\x00\xeb\x07\x8b\x54\x24\x20\xc6\x02\x00\x8d\x83\x67\xc8\xff\xff\x89\x44\x24\x04\x8d\x44\x24\x44\x89\x04\x24\xe8\x9c\x51\x00\x00\x85\xc0\x74\x22\xc7\x44\x24\x40\xff\xff\xff\xff\x8d\x54\x24\x40\x89\x54\x24\x08\x8d\x93\x23\xc3\xff\xff\x89\x54\x24\x04\x89\x04\x24\xe8\x05\xbd\xff\xff\x8d\x44\x24\x44\x89\x04\x24\xe8\x0c\x51\x00\x00\x8b\x44\x24\x40\xeb\x05\xb8\xfd\xff\xff\xff\x8b\x94\x24\x9c\x00\x00\x00\x65\x33\x15\x14\x00\x00\x00\x74\x05\xe8\x29\x52\x00\x00\x81\xc4\xac\x00\x00\x00\x5b\x5e\x5f\x5d\xc3\x55\x57\x56\x53\x81\xec\x9c\x00\x00\x00\xe8\x22\xdf\xff\xff\x81\xc3\x93\x9f\x00\x00\x8b\x84\x24\xb0\x00\x00\x00\x8b\x94\x24\xb4\x00\x00\x00\x8b\xbc\x24\xb8\x00\x00\x00\x65\x8b\x0d\x14\x00\x00\x00\x89\x8c\x24\x8c\x00\x00\x00\x31\xc9\xc7\x44\x24\x30\xff\xff\xff\xff\x85\xff\x0f\x84\xe1\x00\x00\x00\x8d\x4c\x24\x2c\x89\x4c\x24\x14\xc7\x44\x24\x10\x00\x00\x00\x00\x8d\x8b\x71\xc8\xff\xff\x89\x4c\x24\x0c\x89\x54\x24\x08\x89\x44\x24\x04\xc7\x04\x24\xff\xff\xff\xff\xe8\x4e\xe3\xff\xff\x89\xc6\x85\xc0\x0f\x84\xb0\x00\x00\x00\x8d\x6c\x24\x34\x89\x6c\x24\x08\x8b\x44\x24\x2c\x89\x44\x24\x04\x89\x34\x24\xe8\xd5\x4f\x00\x00\x89\x34\x24\xe8\x2c\xba\xff\xff\x8d\x83\x87\xc8\xff\xff\x89\x44\x24\x04\x89\x2c\x24\xe8\x8b\x50\x00\x00\x85\xc0\x74\x22\xc7\x44\x24\x08\x40\x00\x00\x00\x89\x44\x24\x04\x89\x3c\x24\xe8\xa2\xbb\xff\xff\xc6\x47\x3f\x00\xc7\x44\x24\x30\x00\x00\x00\x00\xeb\x03\xc6\x07\x00\x8d\x83\x67\xc8\xff\xff\x89\x44\x24\x04\x8d\x44\x24\x34\x89\x04\x24\xe8\x4c\x50\x00\x00\x85\xc0\x74\x22\xc7\x44\x24\x30\xff\xff\xff\xff\x8d\x54\x24\x30\x89\x54\x24\x08\x8d\x93\x23\xc3\xff\xff\x89\x54\x24\x04\x89\x04\x24\xe8\xb5\xbb\xff\xff\x8d\x44\x24\x34\x89\x04\x24\xe8\xbc\x4f\x00\x00\x8b\x44\x24\x30\xeb\x0c\xb8\xfe\xff\xff\xff\xeb\x05\xb8\xfd\xff\xff\xff\x8b\x94\x24\x8c\x00\x00\x00\x65\x33\x15\x14\x00\x00\x00\x74\x05\xe8\xd2\x50\x00\x00\x81\xc4\x9c\x00\x00\x00\x5b\x5e\x5f\x5d\xc3\x55\x57\x56\x53\x81\xec\xac\x00\x00\x00\xe8\xcb\xdd\xff\xff\x81\xc3\x3c\x9e\x00\x00\x8b\x94\x24\xc0\x00\x00\x00\x8b\x8c\x24\xc4\x00\x00\x00\x8b\xb4\x24\xc8\x00\x00\x00\x8b\x84\x24\xcc\x00\x00\x00\x89\x44\x24\x28\x65\xa1\x14\x00\x00\x00\x89\x84\x24\x9c\x00\x00\x00\x31\xc0\xc7\x44\x24\x40\xff\xff\xff\xff\x85\xf6\x75\x10\xb8\xfe\xff\xff\xff\x83\x7c\x24\x28\x00\x0f\x84\x51\x01\x00\x00\x8d\x44\x24\x3c\x89\x44\x24\x14\xc7\x44\x24\x10\x00\x00\x00\x00\x8d\x83\x99\xc8\xff\xff\x89\x44\x24\x0c\x89\x4c\x24\x08\x89\x54\x24\x04\xc7\x04\x24\xff\xff\xff\xff\xe8\xe1\xe1\xff\xff\x89\xc7\x85\xc0\x0f\x84\x14\x01\x00\x00\x8d\x6c\x24\x44\x89\x6c\x24\x08\x8b\x44\x24\x3c\x89\x44\x24\x04\x89\x3c\x24\xe8\x68\x4e\x00\x00\x89\x3c\x24\xe8\xbf\xb8\xff\xff\x8d\x83\xb1\xc8\xff\xff\x89\x44\x24\x04\x89\x2c\x24\xe8\x1e\x4f\x00\x00\x89\x44\x24\x2c\x8d\x83\xcf\xc8\xff\xff\x89\x44\x24\x04\x89\x2c\x24\xe8\x08\x4f\x00\x00\x89\xc7\x83\x7c\x24\x2c\x00\x0f\x95\xc0\x85\xff\x0f\x95\xc2\x89\xd5\x84\xc0\x74\x0c\x84\xd2\x74\x08\xc7\x44\x24\x40\x00\x00\x00\x00\x85\xf6\x74\x26\x84\xc0\x74\x1c\x89\x74\x24\x08\x8d\x83\x64\xc8\xff\xff\x89\x44\x24\x04\x8b\x44\x24\x2c\x89\x04\x24\xe8\x54\xba\xff\xff\xeb\x06\xc7\x06\x00\x00\x00\x00\x83\x7c\x24\x28\x00\x74\x2c\x89\xea\x84\xd2\x74\x1c\x8b\x44\x24\x28\x89\x44\x24\x08\x8d\x83\x64\xc8\xff\xff\x89\x44\x24\x04\x89\x3c\x24\xe8\x25\xba\xff\xff\xeb\x0a\x8b\x54\x24\x28\xc7\x02\x00\x00\x00\x00\x8d\x83\x67\xc8\xff\xff\x89\x44\x24\x04\x8d\x44\x24\x44\x89\x04\x24\xe8\x74\x4e\x00\x00\x85\xc0\x74\x22\xc7\x44\x24\x40\xff\xff\xff\xff\x8d\x54\x24\x40\x89\x54\x24\x08\x8d\x93\x23\xc3\xff\xff\x89\x54\x24\x04\x89\x04\x24\xe8\xdd\xb9\xff\xff\x8d\x44\x24\x44\x89\x04\x24\xe8\xe4\x4d\x00\x00\x8b\x44\x24\x40\xeb\x05\xb8\xfd\xff\xff\xff\x8b\x94\x24\x9c\x00\x00\x00\x65\x33\x15\x14\x00\x00\x00\x74\x05\xe8\x01\x4f\x00\x00\x81\xc4\xac\x00\x00\x00\x5b\x5e\x5f\x5d\xc3\x55\x57\x56\x53\x81\xec\x9c\x00\x00\x00\xe8\xfa\xdb\xff\xff\x81\xc3\x6b\x9c\x00\x00\x8b\x84\x24\xb0\x00\x00\x00\x8b\x94\x24\xb4\x00\x00\x00\x8b\xbc\x24\xb8\x00\x00\x00\x65\x8b\x0d\x14\x00\x00\x00\x89\x8c\x24\x8c\x00\x00\x00\x31\xc9\xc7\x44\x24\x30\xff\xff\xff\xff\x85\xff\x0f\x84\xf1\x00\x00\x00\x85\xc0\x0f\x84\xe9\x00\x00\x00\x85\xd2\x0f\x84\xe8\x00\x00\x00\x8d\x4c\x24\x2c\x89\x4c\x24\x14\xc7\x44\x24\x10\x00\x00\x00\x00\x8d\x8b\xeb\xc8\xff\xff\x89\x4c\x24\x0c\x89\x54\x24\x08\x89\x44\x24\x04\xc7\x04\x24\xff\xff\xff\xff\xe8\x16\xe0\xff\xff\x89\xc6\x85\xc0\x0f\x84\xb7\x00\x00\x00\x8d\x6c\x24\x34\x89\x6c\x24\x08\x8b\x44\x24\x2c\x89\x44\x24\x04\x89\x34\x24\xe8\x9d\x4c\x00\x00\x89\x34\x24\xe8\xf4\xb6\xff\xff\x8d\x83\x00\xc9\xff\xff\x89\x44\x24\x04\x89\x2c\x24\xe8\x53\x4d\x00\x00\x85\xc0\x74\x22\xc7\x44\x24\x08\x10\x00\x00\x00\x89\x44\x24\x04\x89\x3c\x24\xe8\x6a\xb8\xff\xff\xc6\x47\x0f\x00\xc7\x44\x24\x30\x00\x00\x00\x00\xeb\x03\xc6\x07\x00\x8d\x83\x67\xc8\xff\xff\x89\x44\x24\x04\x8d\x44\x24\x34\x89\x04\x24\xe8\x14\x4d\x00\x00\x85\xc0\x74\x22\xc7\x44\x24\x30\xff\xff\xff\xff\x8d\x54\x24\x30\x89\x54\x24\x08\x8d\x93\x23\xc3\xff\xff\x89\x54\x24\x04\x89\x04\x24\xe8\x7d\xb8\xff\xff\x8d\x44\x24\x34\x89\x04\x24\xe8\x84\x4c\x00\x00\x8b\x44\x24\x30\xeb\x13\xb8\xfe\xff\xff\xff\xeb\x0c\xb8\xfe\xff\xff\xff\xeb\x05\xb8\xfd\xff\xff\xff\x8b\x94\x24\x8c\x00\x00\x00\x65\x33\x15\x14\x00\x00\x00\x74\x05\xe8\x93\x4d\x00\x00\x81\xc4\x9c\x00\x00\x00\x5b\x5e\x5f\x5d\xc3\x55\x57\x56\x53\x81\xec\xbc\x00\x00\x00\xe8\x8c\xda\xff\xff\x81\xc3\xfd\x9a\x00\x00\x8b\x84\x24\xd0\x00\x00\x00\x89\x44\x24\x34\x8b\x94\x24\xd4\x00\x00\x00\x89\x54\x24\x38\x8b\x84\x24\xd8\x00\x00\x00\x89\x44\x24\x30\x8b\x94\x24\xdc\x00\x00\x00\x89\x54\x24\x24\x8b\x84\x24\xe0\x00\x00\x00\x89\x44\x24\x28\x8b\xbc\x24\xe4\x00\x00\x00\x8b\x94\x24\xe8\x00\x00\x00\x89\x54\x24\x2c\x8b\x84\x24\xec\x00\x00\x00\x89\x44\x24\x3c\x8b\xac\x24\xf0\x00\x00\x00\x65\x8b\x15\x14\x00\x00\x00\x89\x94\x24\xac\x00\x00\x00\x31\xd2\x83\x7c\x24\x24\x00\x0f\x84\x8c\x01\x00\x00\x83\x7c\x24\x28\x00\x0f\x84\x81\x01\x00\x00\x83\x7c\x24\x2c\x00\x0f\x84\x7d\x01\x00\x00\x83\x7c\x24\x30\x00\x0f\x84\x72\x01\x00\x00\xc7\x44\x24\x04\x08\x00\x00\x00\xc7\x04\x24\x09\x00\x00\x00\xe8\x28\xb8\xff\xff\x89\xc6\x8d\x83\x22\xc9\xff\xff\x89\x06\x8b\x44\x24\x3c\x89\x46\x04\x8d\x83\x30\xc9\xff\xff\x89\x46\x08\x8b\x54\x24\x30\x89\x56\x0c\x8d\x83\x40\xc9\xff\xff\x89\x46\x10\x8b\x44\x24\x2c\x89\x46\x14\x8d\x83\x4c\xc9\xff\xff\x89\x46\x18\x8b\x54\x24\x24\x89\x56\x1c\x8d\x83\x5c\xc9\xff\xff\x89\x46\x20\x8b\x44\x24\x28\x89\x46\x24\x8d\x83\x6e\xc9\xff\xff\x89\x46\x28\x8d\x83\x14\xc4\xff\xff\x89\x46\x2c\x8d\x83\x79\xc9\xff\xff\x89\x46\x30\x85\xff\x8d\x83\x15\xc9\xff\xff\x0f\x44\xf8\x89\x7e\x34\x8d\x83\x93\xc9\xff\xff\x89\x46\x38\x85\xed\x8d\x83\x29\xc3\xff\xff\x0f\x44\xe8\x89\x6e\x3c\x8d\x44\x24\x4c\x89\x44\x24\x14\x89\x74\x24\x10\x8d\x83\xa4\xc9\xff\xff\x89\x44\x24\x0c\x8b\x54\x24\x38\x89\x54\x24\x08\x8b\x44\x24\x34\x89\x44\x24\x04\xc7\x04\x24\xff\xff\xff\xff\xe8\xad\xdd\xff\xff\x89\xc7\x85\xc0\x75\x12\x89\x34\x24\xe8\xa7\xb4\xff\xff\xb8\xfd\xff\xff\xff\xe9\x88\x00\x00\x00\x8d\x6c\x24\x54\x89\x6c\x24\x08\x8b\x44\x24\x4c\x89\x44\x24\x04\x89\x3c\x24\xe8\x26\x4a\x00\x00\x89\x3c\x24\xe8\x7d\xb4\xff\xff\x8d\x83\x67\xc8\xff\xff\x89\x44\x24\x04\x89\x2c\x24\xe8\xdc\x4a\x00\x00\x85\xc0\x74\x24\xc7\x44\x24\x50\xff\xff\xff\xff\x8d\x54\x24\x50\x89\x54\x24\x08\x8d\x93\x23\xc3\xff\xff\x89\x54\x24\x04\x89\x04\x24\xe8\x45\xb6\xff\xff\xeb\x08\xc7\x44\x24\x50\x00\x00\x00\x00\x8d\x44\x24\x54\x89\x04\x24\xe8\x42\x4a\x00\x00\x89\x34\x24\xe8\x27\xb4\xff\xff\x8b\x44\x24\x50\xeb\x0c\xb8\xfe\xff\xff\xff\xeb\x05\xb8\xfe\xff\xff\xff\x8b\x94\x24\xac\x00\x00\x00\x65\x33\x15\x14\x00\x00\x00\x74\x05\xe8\x50\x4b\x00\x00\x81\xc4\xbc\x00\x00\x00\x5b\x5e\x5f\x5d\xc3\x55\x57\x56\x53\x81\xec\xbc\x00\x00\x00\xe8\x49\xd8\xff\xff\x81\xc3\xba\x98\x00\x00\x8b\x84\x24\xd0\x00\x00\x00\x89\x44\x24\x30\x8b\x94\x24\xd4\x00\x00\x00\x89\x54\x24\x34\x8b\x84\x24\xd8\x00\x00\x00\x89\x44\x24\x2c\x8b\x94\x24\xdc\x00\x00\x00\x89\x54\x24\x20\x8b\x84\x24\xe0\x00\x00\x00\x89\x44\x24\x24\x8b\xbc\x24\xe4\x00\x00\x00\x8b\x94\x24\xe8\x00\x00\x00\x89\x54\x24\x28\x8b\x84\x24\xec\x00\x00\x00\x89\x44\x24\x38\x8b\xac\x24\xf0\x00\x00\x00\x8b\x94\x24\xf4\x00\x00\x00\x89\x54\x24\x3c\x65\xa1\x14\x00\x00\x00\x89\x84\x24\xac\x00\x00\x00\x31\xc0\x83\x7c\x24\x20\x00\x0f\x84\xd0\x01\x00\x00\x83\x7c\x24\x24\x00\x0f\x84\xc5\x01\x00\x00\x83\x7c\x24\x28\x00\x0f\x84\xc1\x01\x00\x00\x83\x7c\x24\x2c\x00\x0f\x84\xb6\x01\x00\x00\xc7\x44\x24\x04\x08\x00\x00\x00\xc7\x04\x24\x09\x00\x00\x00\xe8\xdb\xb5\xff\xff\x89\xc6\x8d\x83\x22\xc9\xff\xff\x89\x06\x8b\x54\x24\x38\x89\x56\x04\x8d\x83\x30\xc9\xff\xff\x89\x46\x08\x8b\x44\x24\x2c\x89\x46\x0c\x8d\x83\x40\xc9\xff\xff\x89\x46\x10\x8b\x54\x24\x28\x89\x56\x14\x8d\x83\x4c\xc9\xff\xff\x89\x46\x18\x8b\x44\x24\x20\x89\x46\x1c\x8d\x83\x5c\xc9\xff\xff\x89\x46\x20\x8b\x54\x24\x24\x89\x56\x24\x8d\x83\x6e\xc9\xff\xff\x89\x46\x28\x8d\x83\x14\xc4\xff\xff\x89\x46\x2c\x8d\x83\x79\xc9\xff\xff\x89\x46\x30\x85\xff\x8d\x83\x15\xc9\xff\xff\x0f\x44\xf8\x89\x7e\x34\x8d\x83\x93\xc9\xff\xff\x89\x46\x38\x85\xed\x8d\x83\x29\xc3\xff\xff\x0f\x44\xe8\x89\x6e\x3c\x8d\x44\x24\x4c\x89\x44\x24\x14\x89\x74\x24\x10\x8d\x83\xb3\xc9\xff\xff\x89\x44\x24\x0c\x8b\x44\x24\x34\x89\x44\x24\x08\x8b\x54\x24\x30\x89\x54\x24\x04\xc7\x04\x24\xff\xff\xff\xff\xe8\x60\xdb\xff\xff\x89\xc7\x85\xc0\x75\x12\x89\x34\x24\xe8\x5a\xb2\xff\xff\xb8\xfd\xff\xff\xff\xe9\xcc\x00\x00\x00\x8d\x6c\x24\x54\x89\x6c\x24\x08\x8b\x44\x24\x4c\x89\x44\x24\x04\x89\x3c\x24\xe8\xd9\x47\x00\x00\x89\x3c\x24\xe8\x30\xb2\xff\xff\x8d\x83\x67\xc8\xff\xff\x89\x44\x24\x04\x89\x2c\x24\xe8\x8f\x48\x00\x00\x85\xc0\x74\x24\xc7\x44\x24\x50\xff\xff\xff\xff\x8d\x54\x24\x50\x89\x54\x24\x08\x8d\x93\x23\xc3\xff\xff\x89\x54\x24\x04\x89\x04\x24\xe8\xf8\xb3\xff\xff\xeb\x4c\x8d\x83\xc5\xc9\xff\xff\x89\x44\x24\x04\x8d\x44\x24\x54\x89\x04\x24\xe8\x51\x48\x00\x00\x85\xc0\x74\x2a\xc7\x44\x24\x08\x06\x00\x00\x00\x89\x44\x24\x04\x8b\x44\x24\x3c\x89\x04\x24\xe8\x64\xb3\xff\xff\x8b\x54\x24\x3c\xc6\x42\x05\x00\xc7\x44\x24\x50\x00\x00\x00\x00\xeb\x08\xc7\x44\x24\x50\xfc\xff\xff\xff\x8d\x44\x24\x54\x89\x04\x24\xe8\xb1\x47\x00\x00\x89\x34\x24\xe8\x96\xb1\xff\xff\x8b\x44\x24\x50\xeb\x0c\xb8\xfe\xff\xff\xff\xeb\x05\xb8\xfe\xff\xff\xff\x8b\x94\x24\xac\x00\x00\x00\x65\x33\x15\x14\x00\x00\x00\x74\x05\xe8\xbf\x48\x00\x00\x81\xc4\xbc\x00\x00\x00\x5b\x5e\x5f\x5d\xc3\x55\x57\x56\x53\x81\xec\xac\x00\x00\x00\xe8\xb8\xd5\xff\xff\x81\xc3\x29\x96\x00\x00\x8b\x84\x24\xc0\x00\x00\x00\x89\x44\x24\x24\x8b\x94\x24\xc4\x00\x00\x00\x89\x54\x24\x28\x8b\xbc\x24\xc8\x00\x00\x00\x8b\xac\x24\xcc\x00\x00\x00\x8b\x84\x24\xd0\x00\x00\x00\x89\x44\x24\x2c\x65\x8b\x15\x14\x00\x00\x00\x89\x94\x24\x9c\x00\x00\x00\x31\xd2\x85\xff\x0f\x84\x0b\x01\x00\x00\x85\xed\x0f\x84\x03\x01\x00\x00\xc7\x44\x24\x04\x08\x00\x00\x00\xc7\x04\x24\x04\x00\x00\x00\xe8\x9c\xb3\xff\xff\x89\xc6\x8d\x83\x22\xc9\xff\xff\x89\x06\x8b\x44\x24\x2c\x89\x46\x04\x8d\x83\x30\xc9\xff\xff\x89\x46\x08\x89\x7e\x0c\x8d\x83\x40\xc9\xff\xff\x89\x46\x10\x89\x6e\x14\x8d\x44\x24\x3c\x89\x44\x24\x14\x89\x74\x24\x10\x8d\x83\xd5\xc9\xff\xff\x89\x44\x24\x0c\x8b\x54\x24\x28\x89\x54\x24\x08\x8b\x44\x24\x24\x89\x44\x24\x04\xc7\x04\x24\xff\xff\xff\xff\xe8\x89\xd9\xff\xff\x89\xc7\x85\xc0\x75\x12\x89\x34\x24\xe8\x83\xb0\xff\xff\xb8\xfd\xff\xff\xff\xe9\x81\x00\x00\x00\x8d\x6c\x24\x44\x89\x6c\x24\x08\x8b\x44\x24\x3c\x89\x44\x24\x04\x89\x3c\x24\xe8\x02\x46\x00\x00\x89\x3c\x24\xe8\x59\xb0\xff\xff\x8d\x83\x67\xc8\xff\xff\x89\x44\x24\x04\x89\x2c\x24\xe8\xb8\x46\x00\x00\x85\xc0\x74\x24\xc7\x44\x24\x40\xff\xff\xff\xff\x8d\x54\x24\x40\x89\x54\x24\x08\x8d\x93\x23\xc3\xff\xff\x89\x54\x24\x04\x89\x04\x24\xe8\x21\xb2\xff\xff\xeb\x08\xc7\x44\x24\x40\x00\x00\x00\x00\x8d\x44\x24\x44\x89\x04\x24\xe8\x1e\x46\x00\x00\x89\x34\x24\xe8\x03\xb0\xff\xff\x8b\x44\x24\x40\xeb\x05\xb8\xfe\xff\xff\xff\x8b\x94\x24\x9c\x00\x00\x00\x65\x33\x15\x14\x00\x00\x00\x74\x05\xe8\x33\x47\x00\x00\x81\xc4\xac\x00\x00\x00\x5b\x5e\x5f\x5d\xc3\x55\x57\x56\x53\x81\xec\xac\x00\x00\x00\xe8\x2c\xd4\xff\xff\x81\xc3\x9d\x94\x00\x00\x8b\x84\x24\xc0\x00\x00\x00\x89\x44\x24\x28\x8b\x94\x24\xc4\x00\x00\x00\x89\x54\x24\x2c\x8b\xbc\x24\xc8\x00\x00\x00\x8b\xac\x24\xcc\x00\x00\x00\x8b\x84\x24\xd0\x00\x00\x00\x89\x44\x24\x20\x8b\x94\x24\xd4\x00\x00\x00\x89\x54\x24\x24\x65\xa1\x14\x00\x00\x00\x89\x84\x24\x9c\x00\x00\x00\x31\xc0\x85\xff\x0f\x84\x2e\x01\x00\x00\x85\xed\x0f\x84\x26\x01\x00\x00\x83\x7c\x24\x20\x00\x0f\x84\x22\x01\x00\x00\x85\xd2\x0f\x84\x1a\x01\x00\x00\xc7\x44\x24\x04\x08\x00\x00\x00\xc7\x04\x24\x05\x00\x00\x00\xe8\xf3\xb1\xff\xff\x89\xc6\x8d\x83\xe7\xc9\xff\xff\x89\x06\x89\x7e\x04\x8d\x83\xf4\xc9\xff\xff\x89\x46\x08\x89\x6e\x0c\x8d\x83\x40\xc9\xff\xff\x89\x46\x10\x8b\x54\x24\x20\x89\x56\x14\x8d\x83\xff\xc9\xff\xff\x89\x46\x18\x8b\x44\x24\x24\x89\x46\x1c\x8d\x44\x24\x3c\x89\x44\x24\x14\x89\x74\x24\x10\x8d\x83\x09\xca\xff\xff\x89\x44\x24\x0c\x8b\x54\x24\x2c\x89\x54\x24\x08\x8b\x44\x24\x28\x89\x44\x24\x04\xc7\x04\x24\xff\xff\xff\xff\xe8\xd0\xd7\xff\xff\x89\xc7\x85\xc0\x75\x12\x89\x34\x24\xe8\xca\xae\xff\xff\xb8\xfd\xff\xff\xff\xe9\x88\x00\x00\x00\x8d\x6c\x24\x44\x89\x6c\x24\x08\x8b\x44\x24\x3c\x89\x44\x24\x04\x89\x3c\x24\xe8\x49\x44\x00\x00\x89\x3c\x24\xe8\xa0\xae\xff\xff\x8d\x83\x67\xc8\xff\xff\x89\x44\x24\x04\x89\x2c\x24\xe8\xff\x44\x00\x00\x85\xc0\x74\x24\xc7\x44\x24\x40\xff\xff\xff\xff\x8d\x54\x24\x40\x89\x54\x24\x08\x8d\x93\x23\xc3\xff\xff\x89\x54\x24\x04\x89\x04\x24\xe8\x68\xb0\xff\xff\xeb\x08\xc7\x44\x24\x40\x00\x00\x00\x00\x8d\x44\x24\x44\x89\x04\x24\xe8\x65\x44\x00\x00\x89\x34\x24\xe8\x4a\xae\xff\xff\x8b\x44\x24\x40\xeb\x0c\xb8\xfe\xff\xff\xff\xeb\x05\xb8\xfe\xff\xff\xff\x8b\x94\x24\x9c\x00\x00\x00\x65\x33\x15\x14\x00\x00\x00\x74\x05\xe8\x73\x45\x00\x00\x81\xc4\xac\x00\x00\x00\x5b\x5e\x5f\x5d\xc3\x55\x57\x56\x53\x81\xec\xcc\x00\x00\x00\xe8\x6c\xd2\xff\xff\x81\xc3\xdd\x92\x00\x00\x8b\x84\x24\xe0\x00\x00\x00\x89\x44\x24\x34\x8b\xac\x24\xe4\x00\x00\x00\x8b\xbc\x24\xe8\x00\x00\x00\x8b\x94\x24\xec\x00\x00\x00\x89\x54\x24\x38\x8b\x84\x24\xf0\x00\x00\x00\x89\x44\x24\x2c\x8b\x94\x24\xf4\x00\x00\x00\x89\x54\x24\x30\x8b\x84\x24\xf8\x00\x00\x00\x89\x44\x24\x3c\x8b\x94\x24\xfc\x00\x00\x00\x89\x54\x24\x40\x8b\x84\x24\x00\x01\x00\x00\x89\x44\x24\x44\x8b\x94\x24\x04\x01\x00\x00\x89\x54\x24\x48\x8b\x84\x24\x08\x01\x00\x00\x89\x44\x24\x4c\x65\x8b\x15\x14\x00\x00\x00\x89\x94\x24\xbc\x00\x00\x00\x31\xd2\xc7\x44\x24\x60\xff\xff\xff\xff\x85\xff\x0f\x84\xff\x02\x00\x00\x8b\x44\x24\x2c\xc6\x00\x00\x8b\x54\x24\x30\xc6\x02\x00\xc7\x44\x24\x04\x08\x00\x00\x00\xc7\x04\x24\x02\x00\x00\x00\xe8\x00\xb0\xff\xff\x89\xc6\x8d\x83\x20\xca\xff\xff\x89\x06\x89\x7e\x04\x8d\x44\x24\x5c\x89\x44\x24\x14\x89\x74\x24\x10\x8d\x83\x34\xca\xff\xff\x89\x44\x24\x0c\x89\x6c\x24\x08\x8b\x44\x24\x34\x89\x44\x24\x04\xc7\x04\x24\xff\xff\xff\xff\xe8\x0d\xd6\xff\xff\x89\xc7\x85\xc0\x75\x12\x89\x34\x24\xe8\x07\xad\xff\xff\xb8\xfd\xff\xff\xff\xe9\x8f\x02\x00\x00\x8d\x6c\x24\x64\x89\x6c\x24\x08\x8b\x44\x24\x5c\x89\x44\x24\x04\x89\x3c\x24\xe8\x86\x42\x00\x00\x89\x3c\x24\xe8\xdd\xac\xff\xff\x8d\x83\x22\xc9\xff\xff\x89\x44\x24\x04\x89\x2c\x24\xe8\x3c\x43\x00\x00\x85\xc0\x74\x27\x83\x7c\x24\x48\x00\x74\x20\xc7\x44\x24\x08\x40\x00\x00\x00\x89\x44\x24\x04\x8b\x54\x24\x48\x89\x14\x24\xe8\x48\xae\xff\xff\x8b\x44\x24\x48\xc6\x40\x3f\x00\x8d\x83\x30\xc9\xff\xff\x89\x44\x24\x04\x8d\x44\x24\x64\x89\x04\x24\xe8\xfb\x42\x00\x00\x85\xc0\x74\x2f\x83\x7c\x24\x38\x00\x74\x28\xc7\x44\x24\x08\x06\x00\x00\x00\x89\x44\x24\x04\x8b\x54\x24\x38\x89\x14\x24\xe8\x07\xae\xff\xff\x8b\x44\x24\x38\xc6\x40\x05\x00\xc7\x44\x24\x60\x00\x00\x00\x00\x8d\x83\x40\xc9\xff\xff\x89\x44\x24\x04\x8d\x44\x24\x64\x89\x04\x24\xe8\xb2\x42\x00\x00\x85\xc0\x74\x27\x83\x7c\x24\x3c\x00\x74\x20\xc7\x44\x24\x08\x04\x00\x00\x00\x89\x44\x24\x04\x8b\x54\x24\x3c\x89\x14\x24\xe8\xbe\xad\xff\xff\x8b\x44\x24\x3c\xc6\x40\x03\x00\x8d\x83\x5c\xc9\xff\xff\x89\x44\x24\x04\x8d\x44\x24\x64\x89\x04\x24\xe8\x71\x42\x00\x00\x85\xc0\x74\x2f\x83\x7c\x24\x2c\x00\x74\x28\xc7\x44\x24\x08\x10\x00\x00\x00\x89\x44\x24\x04\x8b\x54\x24\x2c\x89\x14\x24\xe8\x7d\xad\xff\xff\x8b\x44\x24\x2c\xc6\x40\x0f\x00\xc7\x44\x24\x60\x00\x00\x00\x00\x8d\x83\x4c\xc9\xff\xff\x89\x44\x24\x04\x8d\x44\x24\x64\x89\x04\x24\xe8\x28\x42\x00\x00\x85\xc0\x74\x27\x83\x7c\x24\x30\x00\x74\x20\xc7\x44\x24\x08\x06\x00\x00\x00\x89\x44\x24\x04\x8b\x54\x24\x30\x89\x14\x24\xe8\x34\xad\xff\xff\x8b\x44\x24\x30\xc6\x40\x05\x00\x8d\x83\x6e\xc9\xff\xff\x89\x44\x24\x04\x8d\x44\x24\x64\x89\x04\x24\xe8\xe7\x41\x00\x00\x85\xc0\x74\x27\x83\x7c\x24\x44\x00\x74\x20\xc7\x44\x24\x08\x04\x00\x00\x00\x89\x44\x24\x04\x8b\x54\x24\x44\x89\x14\x24\xe8\xf3\xac\xff\xff\x8b\x44\x24\x44\xc6\x40\x03\x00\x8d\x83\x79\xc9\xff\xff\x89\x44\x24\x04\x8d\x44\x24\x64\x89\x04\x24\xe8\xa6\x41\x00\x00\x85\xc0\x74\x27\x83\x7c\x24\x40\x00\x74\x20\xc7\x44\x24\x08\x50\x00\x00\x00\x89\x44\x24\x04\x8b\x54\x24\x40\x89\x14\x24\xe8\xb2\xac\xff\xff\x8b\x44\x24\x40\xc6\x40\x4f\x00\x8d\x83\x93\xc9\xff\xff\x89\x44\x24\x04\x8d\x44\x24\x64\x89\x04\x24\xe8\x65\x41\x00\x00\x85\xc0\x74\x27\x83\x7c\x24\x4c\x00\x74\x20\xc7\x44\x24\x08\x10\x00\x00\x00\x89\x44\x24\x04\x8b\x54\x24\x4c\x89\x14\x24\xe8\x71\xac\xff\xff\x8b\x44\x24\x4c\xc6\x40\x0f\x00\x8d\x83\x67\xc8\xff\xff\x89\x44\x24\x04\x8d\x44\x24\x64\x89\x04\x24\xe8\x24\x41\x00\x00\x85\xc0\x74\x22\xc7\x44\x24\x60\xff\xff\xff\xff\x8d\x54\x24\x60\x89\x54\x24\x08\x8d\x93\x23\xc3\xff\xff\x89\x54\x24\x04\x89\x04\x24\xe8\x8d\xac\xff\xff\x8d\x44\x24\x64\x89\x04\x24\xe8\x94\x40\x00\x00\x89\x34\x24\xe8\x79\xaa\xff\xff\x8b\x44\x24\x60\xeb\x05\xb8\xfe\xff\xff\xff\x8b\x94\x24\xbc\x00\x00\x00\x65\x33\x15\x14\x00\x00\x00\x74\x05\xe8\xa9\x41\x00\x00\x81\xc4\xcc\x00\x00\x00\x5b\x5e\x5f\x5d\xc3\x81\xec\xac\x00\x00\x00\x89\x9c\x24\x9c\x00\x00\x00\x89\xb4\x24\xa0\x00\x00\x00\x89\xbc\x24\xa4\x00\x00\x00\x89\xac\x24\xa8\x00\x00\x00\xe8\x8a\xce\xff\xff\x81\xc3\xfb\x8e\x00\x00\x8b\xac\x24\xb8\x00\x00\x00\x65\xa1\x14\x00\x00\x00\x89\x84\x24\x8c\x00\x00\x00\x31\xc0\xc7\x44\x24\x30\xff\xff\xff\xff\x8d\x44\x24\x2c\x89\x44\x24\x14\xc7\x44\x24\x10\x00\x00\x00\x00\x8d\x83\x4f\xca\xff\xff\x89\x44\x24\x0c\x8b\x84\x24\xb4\x00\x00\x00\x89\x44\x24\x08\x8b\x84\x24\xb0\x00\x00\x00\x89\x44\x24\x04\xc7\x04\x24\xff\xff\xff\xff\xe8\xbf\xd2\xff\xff\x89\xc6\x85\xc0\x0f\x84\xad\x00\x00\x00\x8d\x7c\x24\x34\x89\x7c\x24\x08\x8b\x44\x24\x2c\x89\x44\x24\x04\x89\x34\x24\xe8\x46\x3f\x00\x00\x89\x34\x24\xe8\x9d\xa9\xff\xff\x8d\x83\x6d\xca\xff\xff\x89\x44\x24\x04\x89\x3c\x24\xe8\xfc\x3f\x00\x00\x85\xed\x74\x29\x85\xc0\x74\x25\xc7\x45\x00\x00\x00\x00\x00\x89\x6c\x24\x08\x8d\x93\x64\xc8\xff\xff\x89\x54\x24\x04\x89\x04\x24\xe8\x66\xab\xff\xff\xc7\x44\x24\x30\x00\x00\x00\x00\x8d\x83\x67\xc8\xff\xff\x89\x44\x24\x04\x8d\x44\x24\x34\x89\x04\x24\xe8\xb9\x3f\x00\x00\x85\xc0\x74\x22\xc7\x44\x24\x30\xff\xff\xff\xff\x8d\x54\x24\x30\x89\x54\x24\x08\x8d\x93\x23\xc3\xff\xff\x89\x54\x24\x04\x89\x04\x24\xe8\x22\xab\xff\xff\x8d\x44\x24\x34\x89\x04\x24\xe8\x29\x3f\x00\x00\x8b\x44\x24\x30\xeb\x05\xb8\xfd\xff\xff\xff\x8b\x94\x24\x8c\x00\x00\x00\x65\x33\x15\x14\x00\x00\x00\x74\x05\xe8\x46\x40\x00\x00\x8b\x9c\x24\x9c\x00\x00\x00\x8b\xb4\x24\xa0\x00\x00\x00\x8b\xbc\x24\xa4\x00\x00\x00\x8b\xac\x24\xa8\x00\x00\x00\x81\xc4\xac\x00\x00\x00\xc3\x55\x57\x56\x53\x81\xec\xbc\x00\x00\x00\xe8\x27\xcd\xff\xff\x81\xc3\x98\x8d\x00\x00\x8b\x84\x24\xd0\x00\x00\x00\x89\x44\x24\x28\x8b\x94\x24\xd4\x00\x00\x00\x89\x54\x24\x2c\x8b\xbc\x24\xd8\x00\x00\x00\x8b\x84\x24\xdc\x00\x00\x00\x89\x44\x24\x24\x8b\x94\x24\xe0\x00\x00\x00\x89\x54\x24\x30\x8b\x84\x24\xe4\x00\x00\x00\x89\x44\x24\x20\x8b\xac\x24\xe8\x00\x00\x00\x8b\x94\x24\xec\x00\x00\x00\x89\x54\x24\x34\x8b\x84\x24\xf0\x00\x00\x00\x89\x44\x24\x38\x8b\x94\x24\xf4\x00\x00\x00\x89\x54\x24\x3c\x65\xa1\x14\x00\x00\x00\x89\x84\x24\xac\x00\x00\x00\x31\xc0\xc7\x44\x24\x50\xff\xff\xff\xff\x85\xed\x0f\x84\x65\x02\x00\x00\x83\x7c\x24\x20\x00\x0f\x84\x5a\x02\x00\x00\x85\xff\x0f\x84\x59\x02\x00\x00\x83\x7c\x24\x24\x00\x0f\x84\x4e\x02\x00\x00\xc7\x44\x24\x04\x08\x00\x00\x00\xc7\x04\x24\x04\x00\x00\x00\xe8\xb7\xaa\xff\xff\x89\xc6\x8d\x83\x22\xc9\xff\xff\x89\x06\x8b\x54\x24\x30\x89\x56\x04\x8d\x83\x30\xc9\xff\xff\x89\x46\x08\x89\x7e\x0c\x8d\x83\x40\xc9\xff\xff\x89\x46\x10\x8b\x44\x24\x24\x89\x46\x14\x8d\x44\x24\x4c\x89\x44\x24\x14\x89\x74\x24\x10\x8d\x83\x8b\xca\xff\xff\x89\x44\x24\x0c\x8b\x54\x24\x2c\x89\x54\x24\x08\x8b\x44\x24\x28\x89\x44\x24\x04\xc7\x04\x24\xff\xff\xff\xff\xe8\xa0\xd0\xff\xff\x89\xc7\x85\xc0\x75\x12\x89\x34\x24\xe8\x9a\xa7\xff\xff\xb8\xfd\xff\xff\xff\xe9\xc8\x01\x00\x00\x8d\x54\x24\x54\x89\x54\x24\x08\x8b\x44\x24\x4c\x89\x44\x24\x04\x89\x3c\x24\xe8\x19\x3d\x00\x00\x89\x3c\x24\xe8\x70\xa7\xff\xff\x8d\x83\x5c\xc9\xff\xff\x89\x44\x24\x04\x8d\x44\x24\x54\x89\x04\x24\xe8\xcb\x3d\x00\x00\x85\xc0\x74\x2a\xc7\x44\x24\x08\x10\x00\x00\x00\x89\x44\x24\x04\x8b\x54\x24\x20\x89\x14\x24\xe8\xde\xa8\xff\xff\x8b\x44\x24\x20\xc6\x40\x0f\x00\xc7\x44\x24\x50\x00\x00\x00\x00\xeb\x07\x8b\x54\x24\x20\xc6\x02\x00\x8d\x83\x4c\xc9\xff\xff\x89\x44\x24\x04\x8d\x44\x24\x54\x89\x04\x24\xe8\x80\x3d\x00\x00\x85\xc0\x74\x1a\xc7\x44\x24\x08\x06\x00\x00\x00\x89\x44\x24\x04\x89\x2c\x24\xe8\x97\xa8\xff\xff\xc6\x45\x05\x00\xeb\x04\xc6\x45\x00\x00\x8d\x83\x6e\xc9\xff\xff\x89\x44\x24\x04\x8d\x44\x24\x54\x89\x04\x24\xe8\x48\x3d\x00\x00\x85\xc0\x74\x27\x83\x7c\x24\x38\x00\x74\x20\xc7\x44\x24\x08\x04\x00\x00\x00\x89\x44\x24\x04\x8b\x44\x24\x38\x89\x04\x24\xe8\x54\xa8\xff\xff\x8b\x54\x24\x38\xc6\x42\x03\x00\x8d\x83\x79\xc9\xff\xff\x89\x44\x24\x04\x8d\x44\x24\x54\x89\x04\x24\xe8\x07\x3d\x00\x00\x85\xc0\x74\x27\x83\x7c\x24\x34\x00\x74\x20\xc7\x44\x24\x08\x50\x00\x00\x00\x89\x44\x24\x04\x8b\x44\x24\x34\x89\x04\x24\xe8\x13\xa8\xff\xff\x8b\x54\x24\x34\xc6\x42\x4f\x00\x8d\x83\x93\xc9\xff\xff\x89\x44\x24\x04\x8d\x44\x24\x54\x89\x04\x24\xe8\xc6\x3c\x00\x00\x85\xc0\x74\x27\x83\x7c\x24\x3c\x00\x74\x20\xc7\x44\x24\x08\x10\x00\x00\x00\x89\x44\x24\x04\x8b\x44\x24\x3c\x89\x04\x24\xe8\xd2\xa7\xff\xff\x8b\x54\x24\x3c\xc6\x42\x0f\x00\x8d\x83\x67\xc8\xff\xff\x89\x44\x24\x04\x8d\x44\x24\x54\x89\x04\x24\xe8\x85\x3c\x00\x00\x85\xc0\x74\x22\xc7\x44\x24\x50\xff\xff\xff\xff\x8d\x54\x24\x50\x89\x54\x24\x08\x8d\x93\x23\xc3\xff\xff\x89\x54\x24\x04\x89\x04\x24\xe8\xee\xa7\xff\xff\x8d\x44\x24\x54\x89\x04\x24\xe8\xf5\x3b\x00\x00\x89\x34\x24\xe8\xda\xa5\xff\xff\x8b\x44\x24\x50\xeb\x0c\xb8\xfe\xff\xff\xff\xeb\x05\xb8\xfe\xff\xff\xff\x8b\x94\x24\xac\x00\x00\x00\x65\x33\x15\x14\x00\x00\x00\x74\x05\xe8\x03\x3d\x00\x00\x81\xc4\xbc\x00\x00\x00\x5b\x5e\x5f\x5d\xc3\x55\x57\x56\x53\x81\xec\xbc\x00\x00\x00\xe8\xfc\xc9\xff\xff\x81\xc3\x6d\x8a\x00\x00\x8b\x84\x24\xd0\x00\x00\x00\x89\x44\x24\x34\x8b\x94\x24\xd4\x00\x00\x00\x89\x54\x24\x38\x8b\xac\x24\xd8\x00\x00\x00\x8b\x84\x24\xdc\x00\x00\x00\x89\x44\x24\x2c\x8b\x94\x24\xe0\x00\x00\x00\x89\x54\x24\x30\x8b\xbc\x24\xe4\x00\x00\x00\x8b\x84\x24\xe8\x00\x00\x00\x89\x44\x24\x3c\x65\x8b\x15\x14\x00\x00\x00\x89\x94\x24\xac\x00\x00\x00\x31\xd2\xc7\x44\x24\x50\xff\xff\xff\xff\x85\xed\x0f\x84\x6e\x01\x00\x00\x83\x7c\x24\x2c\x00\x0f\x84\x63\x01\x00\x00\x83\x7c\x24\x30\x00\x0f\x84\x5f\x01\x00\x00\xc7\x44\x24\x04\x08\x00\x00\x00\xc7\x04\x24\x06\x00\x00\x00\xe8\xb4\xa7\xff\xff\x89\xc6\x8d\x83\xe7\xc9\xff\xff\x89\x06\x89\x6e\x04\x8d\x83\xf4\xc9\xff\xff\x89\x46\x08\x8b\x44\x24\x2c\x89\x46\x0c\x8d\x83\x40\xc9\xff\xff\x89\x46\x10\x8b\x54\x24\x30\x89\x56\x14\x8d\x83\xff\xc9\xff\xff\x89\x46\x18\x8d\x83\x14\xc4\xff\xff\x89\x46\x1c\x8d\x83\xa7\xca\xff\xff\x89\x46\x20\x85\xff\x8d\x83\x26\xc3\xff\xff\x0f\x44\xf8\x89\x7e\x24\x8d\x44\x24\x4c\x89\x44\x24\x14\x89\x74\x24\x10\x8d\x83\xb8\xca\xff\xff\x89\x44\x24\x0c\x8b\x44\x24\x38\x89\x44\x24\x08\x8b\x54\x24\x34\x89\x54\x24\x04\xc7\x04\x24\xff\xff\xff\xff\xe8\x74\xcd\xff\xff\x89\xc7\x85\xc0\x75\x12\x89\x34\x24\xe8\x6e\xa4\xff\xff\xb8\xfd\xff\xff\xff\xe9\xb0\x00\x00\x00\x89\x34\x24\xe8\x5c\xa4\xff\xff\x8d\x44\x24\x54\x89\x44\x24\x08\x8b\x44\x24\x4c\x89\x44\x24\x04\x89\x3c\x24\xe8\xe5\x39\x00\x00\x89\x3c\x24\xe8\x3c\xa4\xff\xff\x8b\x84\x24\x98\x00\x00\x00\x85\xc0\x74\x23\x8b\x54\x24\x3c\x89\x54\x24\x08\x8b\x94\x24\x9c\x00\x00\x00\x89\x54\x24\x04\x89\x04\x24\xe8\xf8\x15\x00\x00\xc7\x44\x24\x50\x00\x00\x00\x00\x8d\x83\x67\xc8\xff\xff\x89\x44\x24\x04\x8d\x44\x24\x54\x89\x04\x24\xe8\x69\x3a\x00\x00\x85\xc0\x74\x22\xc7\x44\x24\x50\xff\xff\xff\xff\x8d\x54\x24\x50\x89\x54\x24\x08\x8d\x93\x23\xc3\xff\xff\x89\x54\x24\x04\x89\x04\x24\xe8\xd2\xa5\xff\xff\x8d\x44\x24\x54\x89\x04\x24\xe8\xd9\x39\x00\x00\x8b\x44\x24\x50\xeb\x0c\xb8\xfe\xff\xff\xff\xeb\x05\xb8\xfe\xff\xff\xff\x8b\x94\x24\xac\x00\x00\x00\x65\x33\x15\x14\x00\x00\x00\x74\x05\xe8\xef\x3a\x00\x00\x81\xc4\xbc\x00\x00\x00\x5b\x5e\x5f\x5d\xc3\x55\x57\x56\x53\x81\xec\xac\x00\x00\x00\xe8\xe8\xc7\xff\xff\x81\xc3\x59\x88\x00\x00\x8b\x84\x24\xc0\x00\x00\x00\x8b\x94\x24\xc4\x00\x00\x00\x8b\xac\x24\xc8\x00\x00\x00\x8b\x8c\x24\xcc\x00\x00\x00\x89\x4c\x24\x28\x65\x8b\x0d\x14\x00\x00\x00\x89\x8c\x24\x9c\x00\x00\x00\x31\xc9\xc7\x44\x24\x40\xff\xff\xff\xff\x85\xed\x0f\x84\x1f\x01\x00\x00\x83\x7c\x24\x28\x00\x0f\x84\x14\x01\x00\x00\x8d\x4c\x24\x3c\x89\x4c\x24\x14\xc7\x44\x24\x10\x00\x00\x00\x00\x8d\x8b\xce\xca\xff\xff\x89\x4c\x24\x0c\x89\x54\x24\x08\x89\x44\x24\x04\xc7\x04\x24\xff\xff\xff\xff\xe8\xfe\xcb\xff\xff\x89\xc6\x85\xc0\x0f\x84\xe3\x00\x00\x00\x8d\x7c\x24\x44\x89\x7c\x24\x08\x8b\x44\x24\x3c\x89\x44\x24\x04\x89\x34\x24\xe8\x85\x38\x00\x00\x89\x34\x24\xe8\xdc\xa2\xff\xff\x8d\x83\xe0\xca\xff\xff\x89\x44\x24\x04\x89\x3c\x24\xe8\x3b\x39\x00\x00\x89\x44\x24\x2c\x8d\x83\xf0\xca\xff\xff\x89\x44\x24\x04\x89\x3c\x24\xe8\x25\x39\x00\x00\x89\xc6\x85\xc0\x0f\x95\xc0\x89\xc7\x83\x7c\x24\x2c\x00\x0f\x95\xc0\x89\xfa\x84\xd2\x74\x0c\x84\xc0\x74\x08\xc7\x44\x24\x40\x00\x00\x00\x00\x84\xc0\x74\x0c\x8b\x44\x24\x2c\xe8\x84\xe1\xff\xff\x89\x45\x00\x89\xf9\x84\xc9\x74\x0d\x89\xf0\xe8\x74\xe1\xff\xff\x8b\x54\x24\x28\x89\x02\x8d\x83\x67\xc8\xff\xff\x89\x44\x24\x04\x8d\x44\x24\x44\x89\x04\x24\xe8\xc9\x38\x00\x00\x85\xc0\x74\x22\xc7\x44\x24\x40\xff\xff\xff\xff\x8d\x54\x24\x40\x89\x54\x24\x08\x8d\x93\x23\xc3\xff\xff\x89\x54\x24\x04\x89\x04\x24\xe8\x32\xa4\xff\xff\x8d\x44\x24\x44\x89\x04\x24\xe8\x39\x38\x00\x00\x8b\x44\x24\x40\xeb\x0c\xb8\xfe\xff\xff\xff\xeb\x05\xb8\xfd\xff\xff\xff\x8b\x8c\x24\x9c\x00\x00\x00\x65\x33\x0d\x14\x00\x00\x00\x74\x05\xe8\x4f\x39\x00\x00\x81\xc4\xac\x00\x00\x00\x5b\x5e\x5f\x5d\xc3\x55\x57\x56\x53\x81\xec\xbc\x00\x00\x00\xe8\x48\xc6\xff\xff\x81\xc3\xb9\x86\x00\x00\x8b\x84\x24\xd0\x00\x00\x00\x89\x44\x24\x34\x8b\x94\x24\xd4\x00\x00\x00\x89\x54\x24\x38\x8b\x84\x24\xd8\x00\x00\x00\x89\x44\x24\x2c\x8b\x94\x24\xdc\x00\x00\x00\x89\x54\x24\x30\x8b\x84\x24\xe0\x00\x00\x00\x89\x44\x24\x28\x8b\xbc\x24\xe4\x00\x00\x00\x8b\xac\x24\xe8\x00\x00\x00\x8b\x94\x24\xec\x00\x00\x00\x89\x54\x24\x3c\x65\xa1\x14\x00\x00\x00\x89\x84\x24\xac\x00\x00\x00\x31\xc0\x85\xff\x0f\x84\x63\x01\x00\x00\x83\x7c\x24\x28\x00\x0f\x84\x58\x01\x00\x00\x85\xed\x0f\x84\x57\x01\x00\x00\x83\x7c\x24\x30\x00\x0f\x84\x4c\x01\x00\x00\x83\x7c\x24\x2c\x00\x0f\x84\x48\x01\x00\x00\xc7\x44\x24\x04\x08\x00\x00\x00\xc7\x04\x24\x06\x00\x00\x00\xe8\xeb\xa3\xff\xff\x89\xc6\x8d\x83\x25\xc9\xff\xff\x89\x06\x8b\x54\x24\x2c\x89\x56\x04\x8d\x83\x06\xcb\xff\xff\x89\x46\x08\x8b\x44\x24\x30\x89\x46\x0c\x8d\x83\x43\xc9\xff\xff\x89\x46\x10\x89\x6e\x14\x8d\x83\x4f\xc9\xff\xff\x89\x46\x18\x89\x7e\x1c\x8d\x83\x5f\xc9\xff\xff\x89\x46\x20\x8b\x54\x24\x28\x89\x56\x24\x8d\x44\x24\x4c\x89\x44\x24\x14\x89\x74\x24\x10\x8d\x83\x11\xcb\xff\xff\x89\x44\x24\x0c\x8b\x44\x24\x38\x89\x44\x24\x08\x8b\x54\x24\x34\x89\x54\x24\x04\xc7\x04\x24\xff\xff\xff\xff\xe8\xb8\xc9\xff\xff\x89\xc7\x85\xc0\x0f\x84\xb6\x00\x00\x00\x8d\x6c\x24\x54\x89\x6c\x24\x08\x8b\x44\x24\x4c\x89\x44\x24\x04\x89\x3c\x24\xe8\x3f\x36\x00\x00\x89\x3c\x24\xe8\x96\xa0\xff\xff\x8d\x83\x67\xc8\xff\xff\x89\x44\x24\x04\x89\x2c\x24\xe8\xf5\x36\x00\x00\x85\xc0\x74\x24\xc7\x44\x24\x50\xff\xff\xff\xff\x8d\x54\x24\x50\x89\x54\x24\x08\x8d\x93\x23\xc3\xff\xff\x89\x54\x24\x04\x89\x04\x24\xe8\x5e\xa2\xff\xff\xeb\x2d\xc7\x44\x24\x50\x00\x00\x00\x00\x8d\x83\x14\xcb\xff\xff\x89\x44\x24\x04\x8d\x44\x24\x54\x89\x04\x24\xe8\xaf\x36\x00\x00\x85\xc0\x74\x0b\xe8\x35\xdf\xff\xff\x8b\x54\x24\x3c\x89\x02\x8d\x44\x24\x54\x89\x04\x24\xe8\x36\x36\x00\x00\x89\x34\x24\xe8\x1b\xa0\xff\xff\x8b\x44\x24\x50\xeb\x1a\xb8\xfe\xff\xff\xff\xeb\x13\xb8\xfe\xff\xff\xff\xeb\x0c\xb8\xfe\xff\xff\xff\xeb\x05\xb8\xfd\xff\xff\xff\x8b\x94\x24\xac\x00\x00\x00\x65\x33\x15\x14\x00\x00\x00\x74\x05\xe8\x36\x37\x00\x00\x81\xc4\xbc\x00\x00\x00\x5b\x5e\x5f\x5d\xc3\x55\x57\x56\x53\x81\xec\xcc\x00\x00\x00\xe8\x2f\xc4\xff\xff\x81\xc3\xa0\x84\x00\x00\x8b\x84\x24\xe0\x00\x00\x00\x89\x44\x24\x48\x8b\x94\x24\xe4\x00\x00\x00\x89\x54\x24\x4c\x8b\x84\x24\xe8\x00\x00\x00\x89\x44\x24\x30\x8b\x94\x24\xec\x00\x00\x00\x89\x54\x24\x3c\x8b\x84\x24\xf0\x00\x00\x00\x89\x44\x24\x2c\x8b\x94\x24\xf4\x00\x00\x00\x89\x54\x24\x34\x8b\x84\x24\xf8\x00\x00\x00\x89\x44\x24\x38\x8b\x94\x24\xfc\x00\x00\x00\x89\x54\x24\x40\x8b\x84\x24\x00\x01\x00\x00\x89\x44\x24\x44\x65\x8b\x15\x14\x00\x00\x00\x89\x94\x24\xbc\x00\x00\x00\x31\xd2\x83\x7c\x24\x34\x00\x0f\x84\xfd\x01\x00\x00\x83\x7c\x24\x2c\x00\x0f\x84\xf2\x01\x00\x00\x83\x7c\x24\x38\x00\x0f\x84\xee\x01\x00\x00\x83\x7c\x24\x30\x00\x0f\x84\xe3\x01\x00\x00\x83\x7c\x24\x3c\x00\x0f\x84\xdf\x01\x00\x00\x83\x7c\x24\x40\x00\x0f\x84\xd4\x01\x00\x00\xc7\x44\x24\x04\x08\x00\x00\x00\xc7\x04\x24\x07\x00\x00\x00\xe8\xad\xa1\xff\xff\x89\xc5\xb9\x05\x00\x00\x00\x8d\xbb\x2b\xcb\xff\xff\x8b\x74\x24\x30\xf3\xa6\x0f\x97\xc2\x0f\x92\xc0\x38\xc2\x75\x14\x8d\x83\x25\xc9\xff\xff\x89\x45\x00\x8d\x83\xbb\xc2\xff\xff\x89\x45\x04\xeb\x10\x8d\x83\x25\xc9\xff\xff\x89\x45\x00\x8b\x44\x24\x30\x89\x45\x04\x8d\x83\x06\xcb\xff\xff\x89\x45\x08\x8b\x54\x24\x3c\x89\x55\x0c\x8d\x83\x43\xc9\xff\xff\x89\x45\x10\x8b\x44\x24\x38\x89\x45\x14\x8d\x83\x4f\xc9\xff\xff\x89\x45\x18\x8b\x54\x24\x34\x89\x55\x1c\xb9\x05\x00\x00\x00\x8d\xbb\x2b\xcb\xff\xff\x8b\x74\x24\x2c\xf3\xa6\x0f\x97\xc2\x0f\x92\xc0\x38\xc2\x75\x14\x8d\x83\x5f\xc9\xff\xff\x89\x45\x20\x8d\x83\xbb\xc2\xff\xff\x89\x45\x24\xeb\x10\x8d\x83\x5f\xc9\xff\xff\x89\x45\x20\x8b\x44\x24\x2c\x89\x45\x24\x8d\x83\x48\xcb\xff\xff\x89\x45\x28\x8b\x54\x24\x40\x89\x55\x2c\x8d\x44\x24\x5c\x89\x44\x24\x14\x89\x6c\x24\x10\x8d\x83\x31\xcb\xff\xff\x89\x44\x24\x0c\x8b\x44\x24\x4c\x89\x44\x24\x08\x8b\x54\x24\x48\x89\x54\x24\x04\xc7\x04\x24\xff\xff\xff\xff\xe8\x03\xc7\xff\xff\x89\xc6\x85\xc0\x0f\x84\xcb\x00\x00\x00\x8d\x7c\x24\x64\x89\x7c\x24\x08\x8b\x44\x24\x5c\x89\x44\x24\x04\x89\x34\x24\xe8\x8a\x33\x00\x00\x89\x34\x24\xe8\xe1\x9d\xff\xff\x8d\x83\x3c\xcb\xff\xff\x89\x44\x24\x04\x89\x3c\x24\xe8\x40\x34\x00\x00\x85\xc0\x74\x20\xc7\x44\x24\x08\x08\x00\x00\x00\x89\x44\x24\x04\x8b\x44\x24\x44\x89\x04\x24\xe8\x53\x9f\xff\xff\x8b\x54\x24\x44\xc6\x42\x07\x00\x8d\x83\x67\xc8\xff\xff\x89\x44\x24\x04\x8d\x44\x24\x64\x89\x04\x24\xe8\x06\x34\x00\x00\x85\xc0\x74\x24\xc7\x44\x24\x60\xff\xff\xff\xff\x8d\x54\x24\x60\x89\x54\x24\x08\x8d\x93\x23\xc3\xff\xff\x89\x54\x24\x04\x89\x04\x24\xe8\x6f\x9f\xff\xff\xeb\x08\xc7\x44\x24\x60\x00\x00\x00\x00\x8d\x44\x24\x64\x89\x04\x24\xe8\x6c\x33\x00\x00\x89\x2c\x24\xe8\x51\x9d\xff\xff\x8b\x44\x24\x60\xeb\x1a\xb8\xfe\xff\xff\xff\xeb\x13\xb8\xfe\xff\xff\xff\xeb\x0c\xb8\xfe\xff\xff\xff\xeb\x05\xb8\xfd\xff\xff\xff\x8b\x94\x24\xbc\x00\x00\x00\x65\x33\x15\x14\x00\x00\x00\x74\x05\xe8\x6c\x34\x00\x00\x81\xc4\xcc\x00\x00\x00\x5b\x5e\x5f\x5d\xc3\x81\xec\xbc\x00\x00\x00\x89\x9c\x24\xac\x00\x00\x00\x89\xb4\x24\xb0\x00\x00\x00\x89\xbc\x24\xb4\x00\x00\x00\x89\xac\x24\xb8\x00\x00\x00\xe8\x4d\xc1\xff\xff\x81\xc3\xbe\x81\x00\x00\x8b\x84\x24\xc0\x00\x00\x00\x89\x44\x24\x28\x8b\x94\x24\xc4\x00\x00\x00\x89\x54\x24\x2c\x8b\xbc\x24\xc8\x00\x00\x00\x8b\xac\x24\xcc\x00\x00\x00\x65\xa1\x14\x00\x00\x00\x89\x84\x24\x9c\x00\x00\x00\x31\xc0\x85\xff\x0f\x84\xed\x00\x00\x00\x85\xed\x0f\x84\xe5\x00\x00\x00\xc7\x44\x24\x04\x08\x00\x00\x00\xc7\x04\x24\x03\x00\x00\x00\xe8\x3d\x9f\xff\xff\x89\xc6\x8d\x83\x3c\xcb\xff\xff\x89\x06\x89\x7e\x04\x8d\x83\x45\xcb\xff\xff\x89\x46\x08\x89\x6e\x0c\x8d\x44\x24\x3c\x89\x44\x24\x14\x89\x74\x24\x10\x8d\x83\x52\xcb\xff\xff\x89\x44\x24\x0c\x8b\x54\x24\x2c\x89\x54\x24\x08\x8b\x44\x24\x28\x89\x44\x24\x04\xc7\x04\x24\xff\xff\xff\xff\xe8\x3a\xc5\xff\xff\x89\xc7\x85\xc0\x0f\x84\x83\x00\x00\x00\x8d\x6c\x24\x44\x89\x6c\x24\x08\x8b\x44\x24\x3c\x89\x44\x24\x04\x89\x3c\x24\xe8\xc1\x31\x00\x00\x89\x3c\x24\xe8\x18\x9c\xff\xff\x8d\x83\x67\xc8\xff\xff\x89\x44\x24\x04\x89\x2c\x24\xe8\x77\x32\x00\x00\x85\xc0\x74\x24\xc7\x44\x24\x40\xff\xff\xff\xff\x8d\x54\x24\x40\x89\x54\x24\x08\x8d\x93\x23\xc3\xff\xff\x89\x54\x24\x04\x89\x04\x24\xe8\xe0\x9d\xff\xff\xeb\x08\xc7\x44\x24\x40\x00\x00\x00\x00\x8d\x44\x24\x44\x89\x04\x24\xe8\xdd\x31\x00\x00\x89\x34\x24\xe8\xc2\x9b\xff\xff\x8b\x44\x24\x40\xeb\x0c\xb8\xfe\xff\xff\xff\xeb\x05\xb8\xfd\xff\xff\xff\x8b\x94\x24\x9c\x00\x00\x00\x65\x33\x15\x14\x00\x00\x00\x74\x05\xe8\xeb\x32\x00\x00\x8b\x9c\x24\xac\x00\x00\x00\x8b\xb4\x24\xb0\x00\x00\x00\x8b\xbc\x24\xb4\x00\x00\x00\x8b\xac\x24\xb8\x00\x00\x00\x81\xc4\xbc\x00\x00\x00\xc3\x81\xec\xbc\x00\x00\x00\x89\x9c\x24\xac\x00\x00\x00\x89\xb4\x24\xb0\x00\x00\x00\x89\xbc\x24\xb4\x00\x00\x00\x89\xac\x24\xb8\x00\x00\x00\xe8\xb4\xbf\xff\xff\x81\xc3\x25\x80\x00\x00\x8b\x84\x24\xc0\x00\x00\x00\x89\x44\x24\x2c\x8b\xac\x24\xc4\x00\x00\x00\x8b\xbc\x24\xc8\x00\x00\x00\x65\x8b\x15\x14\x00\x00\x00\x89\x94\x24\x9c\x00\x00\x00\x31\xd2\x85\xff\x0f\x84\xd5\x00\x00\x00\xc7\x44\x24\x04\x08\x00\x00\x00\xc7\x04\x24\x02\x00\x00\x00\xe8\xb6\x9d\xff\xff\x89\xc6\x8d\x83\x3c\xcb\xff\xff\x89\x06\x89\x7e\x04\x8d\x44\x24\x3c\x89\x44\x24\x14\x89\x74\x24\x10\x8d\x83\x60\xcb\xff\xff\x89\x44\x24\x0c\x89\x6c\x24\x08\x8b\x44\x24\x2c\x89\x44\x24\x04\xc7\x04\x24\xff\xff\xff\xff\xe8\xc3\xc3\xff\xff\x89\xc7\x85\xc0\x0f\x84\x83\x00\x00\x00\x8d\x6c\x24\x44\x89\x6c\x24\x08\x8b\x44\x24\x3c\x89\x44\x24\x04\x89\x3c\x24\xe8\x4a\x30\x00\x00\x89\x3c\x24\xe8\xa1\x9a\xff\xff\x8d\x83\x67\xc8\xff\xff\x89\x44\x24\x04\x89\x2c\x24\xe8\x00\x31\x00\x00\x85\xc0\x74\x24\xc7\x44\x24\x40\xff\xff\xff\xff\x8d\x54\x24\x40\x89\x54\x24\x08\x8d\x93\x23\xc3\xff\xff\x89\x54\x24\x04\x89\x04\x24\xe8\x69\x9c\xff\xff\xeb\x08\xc7\x44\x24\x40\x00\x00\x00\x00\x8d\x44\x24\x44\x89\x04\x24\xe8\x66\x30\x00\x00\x89\x34\x24\xe8\x4b\x9a\xff\xff\x8b\x44\x24\x40\xeb\x0c\xb8\xfe\xff\xff\xff\xeb\x05\xb8\xfd\xff\xff\xff\x8b\x94\x24\x9c\x00\x00\x00\x65\x33\x15\x14\x00\x00\x00\x74\x05\xe8\x74\x31\x00\x00\x8b\x9c\x24\xac\x00\x00\x00\x8b\xb4\x24\xb0\x00\x00\x00\x8b\xbc\x24\xb4\x00\x00\x00\x8b\xac\x24\xb8\x00\x00\x00\x81\xc4\xbc\x00\x00\x00\xc3\x55\x57\x56\x53\x81\xec\xac\x00\x00\x00\xe8\x55\xbe\xff\xff\x81\xc3\xc6\x7e\x00\x00\x8b\x84\x24\xc0\x00\x00\x00\x89\x44\x24\x28\x8b\xac\x24\xc4\x00\x00\x00\x8b\xbc\x24\xc8\x00\x00\x00\x8b\x94\x24\xcc\x00\x00\x00\x89\x54\x24\x2c\x65\xa1\x14\x00\x00\x00\x89\x84\x24\x9c\x00\x00\x00\x31\xc0\xc7\x44\x24\x40\xff\xff\xff\xff\x85\xff\x0f\x84\x04\x01\x00\x00\xc7\x44\x24\x04\x08\x00\x00\x00\xc7\x04\x24\x04\x00\x00\x00\xe8\x45\x9c\xff\xff\x89\xc6\x8d\x83\x3c\xcb\xff\xff\x89\x06\x89\x7e\x04\x8d\x44\x24\x3c\x89\x44\x24\x14\x89\x74\x24\x10\x8d\x83\x6e\xcb\xff\xff\x89\x44\x24\x0c\x89\x6c\x24\x08\x8b\x54\x24\x28\x89\x54\x24\x04\xc7\x04\x24\xff\xff\xff\xff\xe8\x52\xc2\xff\xff\x89\xc7\x85\xc0\x0f\x84\xb2\x00\x00\x00\x8d\x6c\x24\x44\x89\x6c\x24\x08\x8b\x44\x24\x3c\x89\x44\x24\x04\x89\x3c\x24\xe8\xd9\x2e\x00\x00\x89\x3c\x24\xe8\x30\x99\xff\xff\x8d\x83\x82\xcb\xff\xff\x89\x44\x24\x04\x89\x2c\x24\xe8\x8f\x2f\x00\x00\x85\xc0\x74\x15\xe8\x15\xd8\xff\xff\x8b\x54\x24\x2c\x89\x02\xc7\x44\x24\x40\x00\x00\x00\x00\xeb\x0a\x8b\x44\x24\x2c\xc7\x00\x00\x00\x00\x00\x8d\x83\x67\xc8\xff\xff\x89\x44\x24\x04\x8d\x44\x24\x44\x89\x04\x24\xe8\x56\x2f\x00\x00\x85\xc0\x74\x22\xc7\x44\x24\x40\xff\xff\xff\xff\x8d\x54\x24\x40\x89\x54\x24\x08\x8d\x93\x23\xc3\xff\xff\x89\x54\x24\x04\x89\x04\x24\xe8\xbf\x9a\xff\xff\x8d\x44\x24\x44\x89\x04\x24\xe8\xc6\x2e\x00\x00\x89\x34\x24\xe8\xab\x98\xff\xff\x8b\x44\x24\x40\xeb\x0c\xb8\xfe\xff\xff\xff\xeb\x05\xb8\xfd\xff\xff\xff\x8b\x94\x24\x9c\x00\x00\x00\x65\x33\x15\x14\x00\x00\x00\x74\x05\xe8\xd4\x2f\x00\x00\x81\xc4\xac\x00\x00\x00\x5b\x5e\x5f\x5d\xc3\x55\x57\x56\x53\x81\xec\xac\x00\x00\x00\xe8\xcd\xbc\xff\xff\x81\xc3\x3e\x7d\x00\x00\x8b\x84\x24\xc0\x00\x00\x00\x89\x44\x24\x28\x8b\xac\x24\xc4\x00\x00\x00\x8b\xbc\x24\xc8\x00\x00\x00\x8b\x94\x24\xcc\x00\x00\x00\x89\x54\x24\x2c\x65\xa1\x14\x00\x00\x00\x89\x84\x24\x9c\x00\x00\x00\x31\xc0\xc7\x44\x24\x40\xff\xff\xff\xff\x85\xff\x0f\x84\xf8\x00\x00\x00\xc7\x44\x24\x04\x08\x00\x00\x00\xc7\x04\x24\x04\x00\x00\x00\xe8\xbd\x9a\xff\xff\x89\xc6\x8d\x83\x3c\xcb\xff\xff\x89\x06\x89\x7e\x04\x8d\x44\x24\x3c\x89\x44\x24\x14\x89\x74\x24\x10\x8d\x83\x8c\xcb\xff\xff\x89\x44\x24\x0c\x89\x6c\x24\x08\x8b\x54\x24\x28\x89\x54\x24\x04\xc7\x04\x24\xff\xff\xff\xff\xe8\xca\xc0\xff\xff\x89\xc7\x85\xc0\x0f\x84\xa6\x00\x00\x00\x8d\x6c\x24\x44\x89\x6c\x24\x08\x8b\x44\x24\x3c\x89\x44\x24\x04\x89\x3c\x24\xe8\x51\x2d\x00\x00\x89\x3c\x24\xe8\xa8\x97\xff\xff\x8d\x83\x8f\xcb\xff\xff\x89\x44\x24\x04\x89\x2c\x24\xe8\x07\x2e\x00\x00\x85\xc0\x74\x13\xe8\x8d\xd6\xff\xff\x8b\x54\x24\x2c\x89\x02\xc7\x44\x24\x40\x00\x00\x00\x00\x8d\x83\x67\xc8\xff\xff\x89\x44\x24\x04\x8d\x44\x24\x44\x89\x04\x24\xe8\xda\x2d\x00\x00\x85\xc0\x74\x22\xc7\x44\x24\x40\xff\xff\xff\xff\x8d\x54\x24\x40\x89\x54\x24\x08\x8d\x93\x23\xc3\xff\xff\x89\x54\x24\x04\x89\x04\x24\xe8\x43\x99\xff\xff\x8d\x44\x24\x44\x89\x04\x24\xe8\x4a\x2d\x00\x00\x89\x34\x24\xe8\x2f\x97\xff\xff\x8b\x44\x24\x40\xeb\x0c\xb8\xfe\xff\xff\xff\xeb\x05\xb8\xfd\xff\xff\xff\x8b\x94\x24\x9c\x00\x00\x00\x65\x33\x15\x14\x00\x00\x00\x74\x05\xe8\x58\x2e\x00\x00\x81\xc4\xac\x00\x00\x00\x5b\x5e\x5f\x5d\xc3\x90\xe8\x1e\x02\x00\x00\x81\xc1\xcb\x7b\x00\x00\x8b\x54\x24\x04\x8d\x81\x8c\xcc\xff\xff\x81\xfa\xc0\x02\x00\x00\x0f\x84\x00\x02\x00\x00\x81\xfa\xc0\x02\x00\x00\x0f\x8f\xf4\x00\x00\x00\x8d\x81\x0c\xcc\xff\xff\x81\xfa\x91\x01\x00\x00\x0f\x84\xe2\x01\x00\x00\x81\xfa\x91\x01\x00\x00\x7f\x62\x8d\x81\xda\xcb\xff\xff\x83\xfa\xfc\x0f\x84\xcb\x01\x00\x00\x83\xfa\xfc\x7f\x20\x8d\x81\xb4\xcd\xff\xff\x83\xfa\x9a\x0f\x84\xb7\x01\x00\x00\x8d\x81\xf5\xcb\xff\xff\x83\xfa\x9b\x0f\x85\xa2\x01\x00\x00\xf3\xc3\x8d\x81\xa6\xcb\xff\xff\x83\xfa\xff\x0f\x84\x97\x01\x00\x00\x8d\x81\x9e\xcb\xff\xff\x85\xd2\x0f\x84\x89\x01\x00\x00\x8d\x81\xbe\xcb\xff\xff\x83\xfa\xfe\x0f\x85\x74\x01\x00\x00\xf3\xc3\x8d\x81\x36\xcc\xff\xff\x81\xfa\x5e\x02\x00\x00\x0f\x84\x66\x01\x00\x00\x81\xfa\x5e\x02\x00\x00\x7f\x26\x8d\x81\x1b\xcc\xff\xff\x81\xfa\x92\x01\x00\x00\x0f\x84\x4c\x01\x00\x00\x8d\x81\x28\xcc\xff\xff\x81\xfa\xf5\x01\x00\x00\x0f\x85\x34\x01\x00\x00\xf3\xc3\x8d\x81\x62\xcc\xff\xff\x81\xfa\xbe\x02\x00\x00\x0f\x84\x26\x01\x00\x00\x8d\x81\x73\xcc\xff\xff\x81\xfa\xbe\x02\x00\x00\x0f\x8f\x14\x01\x00\x00\x8d\x81\x4c\xcc\xff\xff\x81\xfa\xbd\x02\x00\x00\x0f\x85\xfc\x00\x00\x00\xf3\xc3\x8d\x81\x0f\xcd\xff\xff\x81\xfa\xca\x02\x00\x00\x0f\x84\xee\x00\x00\x00\x81\xfa\xca\x02\x00\x00\x7f\x74\x8d\x81\xad\xcc\xff\xff\x81\xfa\xc3\x02\x00\x00\x0f\x84\xd4\x00\x00\x00\x81\xfa\xc3\x02\x00\x00\x7f\x26\x8d\x81\x98\xcc\xff\xff\x81\xfa\xc1\x02\x00\x00\x0f\x84\xba\x00\x00\x00\x8d\x81\xd8\xcd\xff\xff\x81\xfa\xc2\x02\x00\x00\x0f\x85\xa2\x00\x00\x00\xf3\xc3\x8d\x81\xe7\xcc\xff\xff\x81\xfa\xc5\x02\x00\x00\x0f\x84\x94\x00\x00\x00\x8d\x81\xcb\xcc\xff\xff\x81\xfa\xc5\x02\x00\x00\x0f\x8c\x82\x00\x00\x00\x8d\x81\xf4\xcc\xff\xff\x81\xfa\xc9\x02\x00\x00\x75\x6e\xf3\xc3\x8d\x81\x73\xcd\xff\xff\x81\xfa\xd4\x02\x00\x00\x74\x64\x81\xfa\xd4\x02\x00\x00\x7f\x2c\x8d\x81\x3e\xcd\xff\xff\x81\xfa\xcc\x02\x00\x00\x74\x4e\x8d\x81\x22\xcd\xff\xff\x81\xfa\xcc\x02\x00\x00\x7c\x40\x8d\x81\x5c\xcd\xff\xff\x81\xfa\xce\x02\x00\x00\x75\x2c\xf3\xc3\x8d\x81\xfc\xcd\xff\xff\x81\xfa\xd6\x02\x00\x00\x74\x22\x8d\x81\x8a\xcd\xff\xff\x81\xfa\xd6\x02\x00\x00\x7c\x14\x8d\x81\x1c\xce\xff\xff\x81\xfa\xd7\x02\x00\x00\x74\x06\x8d\x81\xa7\xcd\xff\xff\xf3\xc3\x8b\x0c\x24\xc3\x90\x90\x90\x90\x90\x55\x57\x56\x53\x81\xec\x4c\x01\x00\x00\xe8\x24\xb9\xff\xff\x81\xc3\x95\x79\x00\x00\x8b\xac\x24\x60\x01\x00\x00\x0f\xb7\xb4\x24\x64\x01\x00\x00\x65\xa1\x14\x00\x00\x00\x89\x84\x24\x3c\x01\x00\x00\x31\xc0\xb9\x00\x00\x00\x00\xba\x20\x00\x00\x00\x89\x8c\x04\xbc\x00\x00\x00\x83\xc0\x04\x39\xd0\x72\xf2\xc7\x84\x24\xbc\x00\x00\x00\x00\x04\x00\x00\xc7\x84\x24\xc4\x00\x00\x00\x01\x00\x00\x00\x0f\xb7\xf6\x89\x74\x24\x14\x8d\x83\x06\xd2\xff\xff\x89\x44\x24\x10\xc7\x44\x24\x0c\x08\x00\x00\x00\xc7\x44\x24\x08\x01\x00\x00\x00\xc7\x44\x24\x04\x08\x00\x00\x00\x8d\x84\x24\x34\x01\x00\x00\x89\x04\x24\xe8\xe7\x93\xff\xff\x80\x7d\x00\x5b\x75\x75\x0f\xb6\x45\x01\x84\xc0\x74\x5e\x3c\x5d\x74\x5a\x8d\x55\x01\xbf\x01\x00\x00\x00\xbe\x00\x00\x00\x00\x8d\x8b\x3d\xce\xff\xff\x89\x4c\x24\x24\x88\x84\x34\xf3\x00\x00\x00\xc7\x44\x24\x08\x03\x00\x00\x00\x8b\x44\x24\x24\x89\x44\x24\x04\x89\x14\x24\xe8\x1f\x94\xff\xff\x8d\x57\x02\x85\xc0\x0f\x44\xfa\x83\xc6\x01\x83\xc7\x01\x8d\x54\x3d\x00\x0f\xb6\x02\x84\xc0\x74\x10\x3c\x5d\x74\x0c\x83\xfe\x40\x75\xbf\xeb\x05\xbe\x00\x00\x00\x00\xc6\x84\x34\xf3\x00\x00\x00\x00\xeb\x1b\xc7\x44\x24\x08\x40\x00\x00\x00\x89\x6c\x24\x04\x8d\x84\x24\xf3\x00\x00\x00\x89\x04\x24\xe8\x41\x95\xff\xff\xc6\x84\x24\x33\x01\x00\x00\x00\x8d\x84\x24\xe4\x00\x00\x00\x89\x44\x24\x0c\x8d\x84\x24\xbc\x00\x00\x00\x89\x44\x24\x08\x8d\x84\x24\x34\x01\x00\x00\x89\x44\x24\x04\x8d\x84\x24\xf3\x00\x00\x00\x89\x04\x24\xe8\x99\x95\xff\xff\x89\xc7\x85\xc0\x74\x38\x89\x04\x24\xe8\x0b\x95\xff\xff\x89\x44\x24\x0c\x8d\x83\x41\xce\xff\xff\x89\x44\x24\x08\xc7\x44\x24\x04\x01\x00\x00\x00\x8b\x83\xe8\xff\xff\xff\x8b\x00\x89\x04\x24\xe8\x75\x95\xff\xff\xbe\xff\xff\xff\xff\xe9\xad\x02\x00\x00\x8b\x94\x24\xe4\x00\x00\x00\x89\x54\x24\x28\x85\xd2\x0f\x84\xb8\x02\x00\x00\x8d\x8b\x45\xc4\xff\xff\x89\x4c\x24\x2c\x8b\x54\x24\x28\x8b\x42\x0c\x89\x44\x24\x08\x8b\x42\x08\x89\x44\x24\x04\x8b\x42\x04\x89\x04\x24\xe8\x11\x95\xff\xff\x89\xc6\x85\xc0\x0f\x88\x17\x02\x00\x00\x8b\x4c\x24\x28\x8b\x41\x14\x66\x83\x38\x0a\x75\x14\x83\xbc\x24\x68\x01\x00\x00\x00\x74\x0a\x8b\x94\x24\x68\x01\x00\x00\x89\x50\x18\xc7\x84\x24\xdc\x00\x00\x00\x03\x00\x00\x00\xc7\x84\x24\xe0\x00\x00\x00\x00\x00\x00\x00\xc7\x44\x24\x10\x08\x00\x00\x00\x8d\x84\x24\xdc\x00\x00\x00\x89\x44\x24\x0c\xc7\x44\x24\x08\x14\x00\x00\x00\xc7\x44\x24\x04\x01\x00\x00\x00\x89\x34\x24\xe8\x25\x92\xff\xff\x85\xc0\x79\x0c\x8b\x4c\x24\x2c\x89\x0c\x24\xe8\x25\x93\xff\xff\xc7\x84\x24\xdc\x00\x00\x00\x03\x00\x00\x00\xc7\x84\x24\xe0\x00\x00\x00\x00\x00\x00\x00\xc7\x44\x24\x10\x08\x00\x00\x00\x8d\x84\x24\xdc\x00\x00\x00\x89\x44\x24\x0c\xc7\x44\x24\x08\x15\x00\x00\x00\xc7\x44\x24\x04\x01\x00\x00\x00\x89\x34\x24\xe8\xd4\x91\xff\xff\x85\xc0\x79\x0c\x8b\x44\x24\x2c\x89\x04\x24\xe8\xd4\x92\xff\xff\x8b\x54\x24\x28\x8b\x42\x10\x89\x44\x24\x08\x8b\x42\x14\x89\x44\x24\x04\x89\x34\x24\xe8\x7a\x94\xff\xff\x89\xc7\x85\xc0\x0f\x89\xae\x01\x00\x00\xe8\x8b\x93\xff\xff\x89\xc5\x89\xf0\xc1\xf8\x1f\xc1\xe8\x1b\x8d\x0c\x06\x83\xe1\x1f\x29\xc1\xb8\x01\x00\x00\x00\xd3\xe0\x89\x44\x24\x24\xe9\xe4\x00\x00\x00\xb9\x20\x00\x00\x00\x8d\x7c\x24\x3c\xb8\x00\x00\x00\x00\xfc\xf3\xab\x89\x34\x24\xe8\x50\x92\xff\xff\x8b\x4c\x24\x24\x09\x4c\x84\x3c\xc7\x44\x24\x10\x00\x00\x00\x00\xc7\x44\x24\x0c\x00\x00\x00\x00\x8d\x44\x24\x3c\x89\x44\x24\x08\xc7\x44\x24\x04\x00\x00\x00\x00\x8d\x46\x01\x89\x04\x24\xe8\xcd\x91\xff\xff\x89\xc7\x83\xf8\xff\x75\x0a\x83\x7d\x00\x04\x0f\x84\x12\x01\x00\x00\xc7\x84\x24\xe8\x00\x00\x00\x04\x00\x00\x00\x8d\x84\x24\xe8\x00\x00\x00\x89\x44\x24\x10\x8d\x84\x24\xec\x00\x00\x00\x89\x44\x24\x0c\xc7\x44\x24\x08\x04\x00\x00\x00\xc7\x44\x24\x04\x01\x00\x00\x00\x89\x34\x24\xe8\xe3\x91\xff\xff\x85\xc0\x79\x2f\x8d\x83\x5b\xce\xff\xff\x89\x04\x24\xe8\xe1\x91\xff\xff\x89\x34\x24\xe8\xa9\x93\xff\xff\x8b\x84\x24\xe4\x00\x00\x00\x89\x04\x24\xe8\x0a\x93\xff\xff\xbe\xff\xff\xff\xff\xe9\x92\x00\x00\x00\x8b\x84\x24\xec\x00\x00\x00\x85\xc0\x74\x08\x89\x45\x00\xe9\x93\x00\x00\x00\x85\xff\x0f\x89\xa3\x00\x00\x00\x8b\x45\x00\x83\xf8\x04\x0f\x84\x10\xff\xff\xff\x83\xf8\x73\x0f\x84\x07\xff\xff\xff\x85\xff\x0f\x89\x86\x00\x00\x00\x89\x34\x24\xe8\x50\x93\xff\xff\x8b\x54\x24\x28\x8b\x52\x1c\x89\x54\x24\x28\x85\xd2\x0f\x85\xaf\xfd\xff\xff\x8b\x84\x24\xe4\x00\x00\x00\x89\x04\x24\xe8\x9e\x92\xff\xff\x85\xf6\x79\x15\x8d\x83\x3e\xc4\xff\xff\x89\x04\x24\xe8\x4c\x91\xff\xff\xbe\xff\xff\xff\xff\xeb\x17\x85\xff\x79\x13\x8d\x83\x66\xce\xff\xff\x89\x04\x24\xe8\x33\x91\xff\xff\xbe\xff\xff\xff\xff\x89\xf0\x8b\x8c\x24\x3c\x01\x00\x00\x65\x33\x0d\x14\x00\x00\x00\x74\x30\xeb\x29\xbf\xff\xff\xff\xff\xe9\x6b\xff\xff\xff\xc7\x04\x24\x00\x00\x00\x00\xe8\x44\x92\xff\xff\xeb\xa8\x8b\x84\x24\xe4\x00\x00\x00\x89\x04\x24\xe8\x33\x92\xff\xff\xeb\xac\xe8\x8c\x27\x00\x00\x81\xc4\x4c\x01\x00\x00\x5b\x5e\x5f\x5d\xc3\x90\x55\x57\x56\x89\xc1\x89\xd5\xbe\x00\x00\x00\x00\x85\xd2\x7e\x36\x0f\xb6\x00\x84\xc0\x74\x2f\x8d\x78\xd0\x89\xfa\x80\xfa\x09\x76\x0c\xeb\x23\x8d\x78\xd0\x89\xfa\x80\xfa\x09\x77\x19\x8d\x34\xb6\x0f\xbe\xc0\x8d\x74\x70\xd0\x83\xc1\x01\x83\xed\x01\x74\x07\x0f\xb6\x01\x84\xc0\x75\xdd\x89\xf0\x5e\x5f\x5d\xc3\x8b\x44\x24\x04\xc7\x40\x04\x00\x00\x00\x00\xc3\x83\xec\x1c\x89\x5c\x24\x10\x89\x74\x24\x14\x89\x7c\x24\x18\xe8\x27\xb4\xff\xff\x81\xc3\x98\x74\x00\x00\x8b\x54\x24\x20\x8b\x44\x24\x24\x8b\x4c\x24\x28\x8b\x3a\x85\xff\x0f\x84\xdb\x00\x00\x00\x83\xf9\x3f\xbe\x3f\x00\x00\x00\x0f\x4e\xf1\x83\x7a\x04\x09\x0f\x87\xc6\x00\x00\x00\x8b\x52\x04\x8b\x94\x93\x70\xce\xff\xff\x01\xda\xff\xe2\x8d\x57\x10\x89\x74\x24\x08\x89\x44\x24\x04\x89\x14\x24\xe8\x82\x8f\xff\xff\xc6\x44\x37\x10\x00\xe9\x9b\x00\x00\x00\x89\xf2\xe8\x31\xff\xff\xff\x66\x89\x47\x0c\xe9\x8b\x00\x00\x00\x83\xfe\x03\xba\x03\x00\x00\x00\x0f\x4f\xf2\x8d\x97\xd0\x00\x00\x00\x89\x74\x24\x08\x89\x44\x24\x04\x89\x14\x24\xe8\x47\x8f\xff\xff\xc6\x84\x37\xd0\x00\x00\x00\x00\xeb\x60\x89\xf2\xe8\xf6\xfe\xff\xff\x66\x89\x47\x0e\xeb\x53\x8d\x57\x50\x89\x74\x24\x08\x89\x44\x24\x04\x89\x14\x24\xe8\x1d\x8f\xff\xff\xc6\x44\x37\x50\x00\xeb\x39\x89\xf2\xe8\xcf\xfe\xff\xff\x88\x87\xd4\x00\x00\x00\xeb\x2a\x8d\x97\x90\x00\x00\x00\x89\x74\x24\x08\x89\x44\x24\x04\x89\x14\x24\xe8\xf1\x8e\xff\xff\xc6\x84\x37\x90\x00\x00\x00\x00\xeb\x0a\x89\xf2\xe8\xa0\xfe\xff\xff\x89\x47\x08\x8b\x5c\x24\x10\x8b\x74\x24\x14\x8b\x7c\x24\x18\x83\xc4\x1c\xc3\x55\x57\x56\x53\x83\xec\x1c\xe8\x14\xb3\xff\xff\x81\xc3\x85\x73\x00\x00\x8b\x7c\x24\x34\x8b\x6c\x24\x38\x8b\x44\x24\x30\xc7\x40\x04\x00\x00\x00\x00\x8d\x83\x96\xca\xff\xff\xbe\x00\x00\x00\x00\x89\x6c\x24\x08\x89\x44\x24\x04\x89\x3c\x24\xe8\xad\x8e\xff\xff\x85\xc0\x75\x15\x8b\x84\xf3\xcc\xfe\xff\xff\x8b\x54\x24\x30\x89\x42\x04\x83\xf8\x01\x75\x40\xeb\x10\x83\xc6\x01\x8b\x84\xf3\xd0\xfe\xff\xff\x85\xc0\x75\xc9\xeb\x2e\xc7\x44\x24\x04\xd8\x00\x00\x00\xc7\x04\x24\x01\x00\x00\x00\xe8\xf0\x90\xff\xff\x8b\x4c\x24\x30\x8b\x11\x89\x10\x85\xd2\x74\x05\x8b\x11\x89\x42\x04\x8b\x54\x24\x30\x89\x02\x89\x50\x04\x83\xc4\x1c\x5b\x5e\x5f\x5d\xc3\x53\x83\xec\x48\xe8\x78\xb2\xff\xff\x81\xc3\xe9\x72\x00\x00\x8b\x44\x24\x58\xc7\x40\x04\x00\x00\x00\x00\xc7\x00\x00\x00\x00\x00\x8b\x54\x24\x50\x89\x54\x24\x1c\x8b\x54\x24\x54\x89\x54\x24\x28\x89\x44\x24\x2c\x8d\x83\x6f\x8c\xff\xff\x89\x44\x24\x30\x8d\x83\x48\x8b\xff\xff\x89\x44\x24\x34\x8d\x83\x54\x8b\xff\xff\x89\x44\x24\x38\xc7\x44\x24\x3c\x00\x00\x00\x00\x8d\x44\x24\x1c\x89\x04\x24\xe8\x08\x14\x00\x00\x83\xc4\x48\x5b\xc3\x56\x53\x83\xec\x14\xe8\x0c\xb2\xff\xff\x81\xc3\x7d\x72\x00\x00\x8b\x74\x24\x20\x8b\x06\x85\xc0\x74\x21\x8b\x10\x85\xd2\x74\x06\x8b\x48\x04\x89\x4a\x04\x8b\x50\x04\x8b\x08\x89\x0a\x89\x04\x24\xe8\x7e\x8d\xff\xff\x8b\x06\x85\xc0\x75\xdf\x83\xc4\x14\x5b\x5e\xc3\x90\x90\x55\x57\x56\x53\x81\xec\xcc\x00\x00\x00\xe8\xc4\xb1\xff\xff\x81\xc3\x35\x72\x00\x00\x8b\xac\x24\xe0\x00\x00\x00\x8b\x84\x24\xe4\x00\x00\x00\x89\x44\x24\x28\x8b\x94\x24\xf0\x00\x00\x00\x89\x54\x24\x2c\x65\xa1\x14\x00\x00\x00\x89\x84\x24\xbc\x00\x00\x00\x31\xc0\xc7\x44\x24\x38\x80\x00\x00\x00\x8d\x7c\x24\x30\x89\x6c\x24\x30\x66\xc7\x44\x24\x34\x01\x00\x8b\x94\x24\xec\x00\x00\x00\x89\x54\x24\x08\xc7\x44\x24\x04\x01\x00\x00\x00\x89\x3c\x24\xe8\xbd\x8d\xff\xff\x89\xc6\x85\xc0\x79\x1f\xe8\x82\x8e\xff\xff\x83\x38\x04\x74\xca\x8d\x83\xa7\xce\xff\xff\x89\x04\x24\xe8\x8f\x8d\xff\xff\xbe\xff\xff\xff\xff\xeb\x64\x85\xc0\x74\x60\x8d\x44\x24\x38\x89\x44\x24\x14\x8d\x44\x24\x3c\x89\x44\x24\x10\xc7\x44\x24\x0c\x00\x00\x00\x00\x8b\x84\x24\xe8\x00\x00\x00\x89\x44\x24\x08\x8b\x44\x24\x28\x89\x44\x24\x04\x89\x2c\x24\xe8\x01\x8d\xff\xff\x89\xc6\x85\xc0\x79\x0e\x8d\x83\xac\xce\xff\xff\x89\x04\x24\xe8\x3d\x8d\xff\xff\x66\x83\x7c\x24\x3c\x0a\x75\x11\x83\x7c\x24\x2c\x00\x74\x0a\x8b\x44\x24\x54\x8b\x54\x24\x2c\x89\x02\x89\xf0\x8b\x94\x24\xbc\x00\x00\x00\x65\x33\x15\x14\x00\x00\x00\x74\x05\xe8\xad\x23\x00\x00\x81\xc4\xcc\x00\x00\x00\x5b\x5e\x5f\x5d\xc3\x90\x90\x55\x57\x56\x53\x81\xec\xbc\x10\x00\x00\xe8\xa4\xb0\xff\xff\x81\xc3\x15\x71\x00\x00\x8b\xac\x24\xd0\x10\x00\x00\x8b\xb4\x24\xd4\x10\x00\x00\x65\xa1\x14\x00\x00\x00\x89\x84\x24\xac\x10\x00\x00\x31\xc0\xc7\x44\x24\x08\x00\x00\x00\x00\xc7\x44\x24\x04\x01\x00\x00\x00\xc7\x04\x24\x01\x00\x00\x00\xe8\x22\x8e\xff\xff\x89\x44\x24\x2c\x85\xc0\x79\x1b\x8d\x83\xb1\xce\xff\xff\x89\x04\x24\xe8\x9c\x8c\xff\xff\xc7\x44\x24\x1c\x00\x00\x00\x00\xe9\x60\x03\x00\x00\x66\xc7\x84\x24\x3e\x10\x00\x00\x01\x00\xc7\x44\x24\x08\x6c\x00\x00\x00\x89\x74\x24\x04\x8d\xb4\x24\x3e\x10\x00\x00\x8d\x84\x24\x40\x10\x00\x00\x89\x04\x24\xe8\x53\x8d\xff\xff\xc7\x44\x24\x08\x6e\x00\x00\x00\x89\x74\x24\x04\x8b\x44\x24\x2c\x89\x04\x24\xe8\x0b\x8e\xff\xff\x85\xc0\x79\x19\x8b\x44\x24\x2c\x89\x04\x24\xe8\x0b\x8e\xff\xff\xc7\x44\x24\x1c\x00\x00\x00\x00\xe9\xff\x02\x00\x00\x89\xef\xb8\x00\x00\x00\x00\xb9\xff\xff\xff\xff\xf2\xae\xf7\xd1\x83\xe9\x01\xc6\x44\x24\x3e\x01\x8d\x44\x24\x3f\x81\xf9\xff\xff\xff\x0f\x76\x10\x89\xc8\xc1\xe8\x1c\x83\xc8\x80\x88\x44\x24\x3f\x8d\x44\x24\x40\x81\xf9\xff\xff\x1f\x00\x76\x0d\x89\xca\xc1\xea\x15\x83\xca\x80\x88\x10\x83\xc0\x01\x81\xf9\xff\x3f\x00\x00\x76\x0d\x89\xca\xc1\xea\x0e\x83\xca\x80\x88\x10\x83\xc0\x01\x83\xf9\x7f\x76\x0d\x89\xca\xc1\xea\x07\x83\xca\x80\x88\x10\x83\xc0\x01\x89\xca\x83\xe2\x7f\x88\x10\x83\xc0\x01\x8d\x34\x08\x8d\x94\x24\x3e\x10\x00\x00\x39\xd6\x76\x19\x8b\x44\x24\x2c\x89\x04\x24\xe8\x6a\x8d\xff\xff\xc7\x44\x24\x1c\x00\x00\x00\x00\xe9\x5e\x02\x00\x00\xc7\x44\x24\x0c\xfe\x0f\x00\x00\x89\x4c\x24\x08\x89\x6c\x24\x04\x89\x04\x24\xe8\xc5\x8b\xff\xff\x8d\x44\x24\x3e\x29\xc6\x89\x74\x24\x08\x89\x44\x24\x04\x8b\x44\x24\x2c\x89\x04\x24\xe8\xfb\x8b\xff\xff\x85\xc0\x79\x27\x8d\x83\xbe\xce\xff\xff\x89\x04\x24\xe8\x49\x8b\xff\xff\x8b\x44\x24\x2c\x89\x04\x24\xe8\x0d\x8d\xff\xff\xc7\x44\x24\x1c\x00\x00\x00\x00\xe9\x01\x02\x00\x00\xc7\x44\x24\x08\x00\x10\x00\x00\x8d\x44\x24\x3e\x89\x44\x24\x04\x8b\x44\x24\x2c\x89\x04\x24\xe8\x44\x8a\xff\xff\x85\xc0\x7e\x3a\x80\x7c\x24\x3e\x00\x0f\x84\xa4\x01\x00\x00\x8d\x94\x24\x3e\x10\x00\x00\x8d\x44\x24\x41\x39\xc2\x0f\x86\x9b\x01\x00\x00\xc7\x44\x24\x20\x00\x00\x00\x00\xc7\x44\x24\x1c\x00\x00\x00\x00\x8d\x74\x24\x3f\x89\x54\x24\x10\x89\xf7\xeb\x3c\x8d\x83\xd3\xce\xff\xff\x89\x04\x24\xe8\xc8\x8a\xff\xff\x8b\x44\x24\x2c\x89\x04\x24\xe8\x8c\x8c\xff\xff\xc7\x44\x24\x1c\x00\x00\x00\x00\xe9\x80\x01\x00\x00\x8d\x47\x02\x39\x44\x24\x10\x0f\x86\x55\x01\x00\x00\x8b\x44\x24\x14\x89\x44\x24\x1c\xbe\x00\x00\x00\x00\xc1\xe6\x07\x0f\xb6\x07\x89\xc2\x83\xe2\x7f\x09\xd6\x83\xc7\x01\x84\xc0\x79\x08\x81\xfe\xff\xff\xff\x01\x76\xe4\x8d\x44\x37\x02\x39\x44\x24\x10\x0f\x86\x30\x01\x00\x00\x8d\x2c\x37\xc7\x44\x24\x18\x00\x00\x00\x00\xba\x00\x00\x00\x00\xc1\xe2\x07\x0f\xb6\x45\x00\x89\xc1\x83\xe1\x7f\x09\xca\x83\xc5\x01\x84\xc0\x79\x08\x81\xfa\xff\xff\xff\x01\x76\xe3\x89\x54\x24\x18\x8d\x44\x15\x02\x39\x44\x24\x10\x0f\x86\xf1\x00\x00\x00\x01\xf2\x89\x54\x24\x24\x89\xd0\x83\xc0\x14\x89\x04\x24\xe8\x59\x8a\xff\xff\x89\x44\x24\x14\x8b\x54\x24\x1c\x89\x10\x83\xc0\x10\x89\x44\x24\x1c\x8b\x54\x24\x14\x89\x42\x04\x8d\x46\x01\x89\x44\x24\x28\x8d\x44\x32\x11\x89\x42\x08\x89\x74\x24\x08\x89\x7c\x24\x04\x8b\x54\x24\x1c\x89\x14\x24\xe8\x3f\x89\xff\xff\x8b\x44\x24\x14\xc6\x44\x30\x10\x00\x8b\x44\x24\x1c\x03\x44\x24\x28\x8b\x54\x24\x18\x89\x54\x24\x08\x89\x6c\x24\x04\x89\x04\x24\xe8\x1a\x89\xff\xff\x03\x6c\x24\x18\x8b\x54\x24\x14\x8b\x44\x24\x24\xc6\x44\x02\x11\x00\xbf\x00\x00\x00\x00\xc1\xe7\x07\x0f\xb6\x45\x00\x89\xc2\x83\xe2\x7f\x09\xd7\x83\xc5\x01\x84\xc0\x79\x08\x81\xff\xff\xff\xff\x01\x76\xe3\x01\xef\x3b\x7c\x24\x10\x77\x3c\x83\x44\x24\x20\x01\x0f\xb6\x44\x24\x3e\x3b\x44\x24\x20\x0f\x87\xbc\xfe\xff\xff\x8b\x44\x24\x14\x89\x44\x24\x1c\xeb\x26\xc7\x44\x24\x1c\x00\x00\x00\x00\xeb\x1c\xc7\x44\x24\x1c\x00\x00\x00\x00\xeb\x12\x8b\x44\x24\x14\x89\x44\x24\x1c\xeb\x08\x8b\x44\x24\x14\x89\x44\x24\x1c\x8b\x44\x24\x2c\x89\x04\x24\xe8\xff\x8a\xff\xff\x8b\x44\x24\x1c\x8b\x94\x24\xac\x10\x00\x00\x65\x33\x15\x14\x00\x00\x00\x74\x05\xe8\xb6\x1f\x00\x00\x81\xc4\xbc\x10\x00\x00\x5b\x5e\x5f\x5d\xc3\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x55\x57\x56\x53\x81\xec\xbc\x08\x00\x00\xe8\xa4\xac\xff\xff\x81\xc3\x15\x6d\x00\x00\x8b\xbc\x24\xd4\x08\x00\x00\x89\x7c\x24\x7c\x65\x8b\x2d\x14\x00\x00\x00\x89\xac\x24\xac\x08\x00\x00\x31\xed\xc7\x04\x24\x00\x08\x00\x00\xe8\x04\x89\xff\xff\x89\x44\x24\x58\xc7\x04\x24\x00\x08\x00\x00\xe8\xf4\x88\xff\xff\x89\x44\x24\x44\xc6\x84\x24\x8c\x08\x00\x00\x00\xbe\x00\x00\x00\x00\xc7\x44\x24\x3c\x00\x00\x00\x00\xc7\x44\x24\x48\x00\x08\x00\x00\xc7\x44\x24\x4c\x00\x00\x00\x00\xc7\x44\x24\x70\x00\x08\x00\x00\xc7\x44\x24\x38\x00\x00\x00\x00\xc7\x44\x24\x50\xff\xff\xff\xff\xc7\x44\x24\x64\x00\x00\x00\x00\xc7\x44\x24\x40\x00\x00\x00\x00\x8d\xbb\xe7\xce\xff\xff\x89\x7c\x24\x74\xe9\xbd\x05\x00\x00\x83\x7c\x24\x40\x00\x0f\x85\xf0\x02\x00\x00\x89\xfd\x03\x7c\x24\x4c\x89\x7c\x24\x54\x39\x7c\x24\x70\x73\x18\x89\x7c\x24\x04\x8b\x44\x24\x58\x89\x04\x24\xe8\x59\x88\xff\xff\x89\x44\x24\x58\x89\x7c\x24\x70\x8b\x44\x24\x58\x89\x44\x24\x6c\x03\x44\x24\x4c\x8d\x94\x24\x8c\x00\x00\x00\x89\x6c\x24\x08\x89\x54\x24\x04\x89\x04\x24\xe8\x5e\x87\xff\xff\x8b\x6c\x24\x54\x89\xe9\x83\xe9\x01\x85\xc9\x0f\x8e\x44\x05\x00\x00\xb8\x00\x00\x00\x00\x8b\x7c\x24\x58\x0f\xb6\x14\x07\x80\xfa\x0d\x75\x31\x8d\x50\x01\x80\x7c\x07\x01\x0a\x75\x41\x8d\x50\x02\x39\xea\x7d\x3e\x80\x7c\x07\x02\x0d\x75\x3b\x8d\x50\x03\x39\xea\x7d\x38\x80\x7c\x07\x03\x0a\x75\x37\x83\xc0\x04\x89\x44\x24\x40\x89\xd0\xeb\x32\x80\xfa\x0a\x75\x2d\x8d\x50\x01\x80\x7c\x07\x01\x0a\x75\x21\x83\xc0\x02\x89\x44\x24\x40\x89\xd0\xeb\x18\x89\xd0\xeb\x14\x89\xd0\xeb\x10\x89\xd0\xeb\x0c\x89\xd0\x66\x90\xeb\x06\x89\xd0\xeb\x02\x89\xd0\x83\xc0\x01\x39\xc8\x7d\x07\x83\x7c\x24\x40\x00\x74\x86\x8b\x7c\x24\x40\x89\x7c\x24\x68\x85\xff\x0f\x84\xbb\x04\x00\x00\x83\xef\x01\x89\x7c\x24\x34\x85\xff\x0f\x8e\xb9\x01\x00\x00\xc7\x44\x24\x4c\x00\x00\x00\x00\xba\x00\x00\x00\x00\xb9\x00\x00\x00\x00\xbf\x00\x00\x00\x00\x89\x74\x24\x78\x8b\x74\x24\x58\x89\x6c\x24\x2c\x39\xd1\x7c\x55\x80\x3c\x3e\x3a\x75\x4f\x89\xf8\x39\x7c\x24\x34\x7e\x37\x0f\xb6\x54\x3e\x01\x80\xfa\x20\x74\x05\x80\xfa\x09\x75\x28\x89\xf8\x8b\x6c\x24\x2c\x83\xc0\x01\x3b\x44\x24\x34\x7d\x15\x0f\xb6\x54\x06\x01\x80\xfa\x20\x74\xed\x80\xfa\x09\x74\xe8\x89\x6c\x24\x2c\xeb\x04\x89\x6c\x24\x2c\x8d\x68\x01\x89\x6c\x24\x4c\x89\xfa\x89\xc7\xe9\x2c\x01\x00\x00\x8d\x2c\x3e\x89\x6c\x24\x30\x0f\xb6\x45\x00\x3c\x0d\x74\x08\x3c\x0a\x0f\x85\x15\x01\x00\x00\x39\xca\x0f\x8e\x9e\x00\x00\x00\x39\x54\x24\x4c\x0f\x8e\x94\x00\x00\x00\x89\xd5\x29\xcd\x01\xf1\x89\x4c\x24\x60\x89\x6c\x24\x08\x8b\x44\x24\x74\x89\x44\x24\x04\x89\x0c\x24\xe8\x98\x87\xff\xff\x85\xc0\x75\x24\xc7\x44\x24\x08\x0a\x00\x00\x00\xc7\x44\x24\x04\x00\x00\x00\x00\x8b\x44\x24\x4c\x01\xf0\x89\x04\x24\xe8\x16\x88\xff\xff\x89\x44\x24\x50\xeb\x4e\x89\x6c\x24\x08\x8d\x83\xf6\xce\xff\xff\x89\x44\x24\x04\x8b\x6c\x24\x60\x89\x2c\x24\xe8\x56\x87\xff\xff\x85\xc0\x75\x30\xc7\x44\x24\x08\x07\x00\x00\x00\x8d\x83\x08\xcf\xff\xff\x89\x44\x24\x04\x8b\x44\x24\x4c\x01\xf0\x89\x04\x24\xe8\x32\x87\xff\xff\x85\xc0\xb8\x01\x00\x00\x00\x0f\x45\x44\x24\x64\x89\x44\x24\x64\x3b\x7c\x24\x2c\x7d\x3d\x8b\x6c\x24\x30\x0f\xb6\x45\x00\x8b\x6c\x24\x2c\x3c\x0d\x74\x08\x8b\x6c\x24\x2c\x3c\x0a\x75\x33\x83\xc7\x01\x39\xef\x7d\x3a\x0f\xb6\x04\x3e\x3c\x0d\x74\xf1\x3c\x0a\x74\xed\x89\x6c\x24\x2c\x89\xfa\x89\xf9\xc7\x44\x24\x4c\x00\x00\x00\x00\xeb\x2c\x89\xfa\x89\xf9\xc7\x44\x24\x4c\x00\x00\x00\x00\xeb\x1e\x89\xfa\x89\xf9\xc7\x44\x24\x4c\x00\x00\x00\x00\xeb\x10\x89\x6c\x24\x2c\x89\xfa\x89\xf9\xc7\x44\x24\x4c\x00\x00\x00\x00\x83\xc7\x01\x3b\x7c\x24\x34\x0f\x8c\x6e\xfe\xff\xff\x8b\x74\x24\x78\x8b\x44\x24\x54\x2b\x44\x24\x68\x89\xc7\xc7\x44\x24\x0c\x00\x08\x00\x00\x89\x44\x24\x08\x8b\x44\x24\x6c\x03\x44\x24\x68\x89\x44\x24\x04\x8d\x84\x24\x8c\x00\x00\x00\x89\x04\x24\xe8\xb1\x85\xff\xff\x8b\x6c\x24\x54\x89\x6c\x24\x4c\x83\x7c\x24\x64\x00\x0f\x84\x24\x02\x00\x00\x89\x74\x24\x30\xbd\x00\x00\x00\x00\x85\xff\x7f\x0d\xe9\x80\x02\x00\x00\x8b\x44\x24\x34\x89\x44\x24\x3c\x83\x7c\x24\x38\x00\x0f\x85\x82\x01\x00\x00\x83\x7c\x24\x30\x00\x75\x2a\x39\xef\x0f\x8e\x03\x03\x00\x00\x80\xbc\x2c\x8c\x00\x00\x00\x0d\x75\x0b\x83\xc5\x01\x39\xef\x0f\x8e\xf7\x02\x00\x00\x80\xbc\x2c\x8c\x00\x00\x00\x0a\x75\x45\x83\xc5\x01\x39\xef\x7f\x3e\x8b\x74\x24\x30\xe9\x2f\x02\x00\x00\x88\x0a\x83\xc6\x01\xc6\x42\x01\x00\x83\xc0\x01\x83\xc2\x01\x39\x44\x24\x54\x7f\x53\xe9\x15\x02\x00\x00\x0f\xb6\x94\x04\x8c\x00\x00\x00\x80\xfa\x0d\x0f\x84\xbb\x02\x00\x00\x80\xfa\x0a\x75\x66\xe9\xb1\x02\x00\x00\x8d\xb6\x00\x00\x00\x00\xe8\x8b\x86\xff\xff\x8b\x00\x89\x44\x24\x34\x8b\x4c\x24\x30\x8d\x94\x0c\x8c\x08\x00\x00\x89\xe8\x89\xce\x29\xcd\x8d\x8c\x24\x8c\x00\x00\x00\x01\xe9\x89\x4c\x24\x30\x89\x7c\x24\x54\x8b\x7c\x24\x30\x0f\xb6\x0c\x37\x0f\xbe\xe9\x8b\x7c\x24\x34\xf6\x44\x6f\x01\x10\x74\x09\x83\xfe\x1e\x0f\x86\x79\xff\xff\xff\x8b\x7c\x24\x54\x89\xf1\x39\xc7\x7f\x89\xe9\x99\x01\x00\x00\x83\xc0\x01\x39\xc7\x0f\x8e\x8e\x01\x00\x00\x0f\xb6\x94\x04\x8c\x00\x00\x00\x80\xfa\x0d\x0f\x84\x34\x02\x00\x00\x80\xfa\x0a\x75\xdf\xe9\x2a\x02\x00\x00\x83\xc0\x01\x39\xc7\x0f\x8e\x68\x01\x00\x00\x89\xc5\x89\x74\x24\x30\x80\xbc\x04\x8c\x00\x00\x00\x0a\x0f\x85\xdc\xfe\xff\xff\x85\xc9\x0f\x84\xad\x01\x00\x00\xba\x00\x00\x00\x00\x89\x7c\x24\x34\x8b\x74\x24\x38\x89\xcf\x0f\xb6\x8c\x14\x8c\x08\x00\x00\x8d\x41\xd0\x3c\x09\x77\x0c\xc1\xe6\x04\x0f\xbe\xc9\x8d\x74\x0e\xd0\xeb\x0d\xc1\xe6\x04\x83\xc9\x20\x0f\xbe\xc9\x8d\x74\x0e\xa9\x83\xc2\x01\x39\xfa\x75\xd1\x8b\x7c\x24\x34\x89\x74\x24\x38\xc6\x84\x24\x8c\x08\x00\x00\x00\x85\xf6\x0f\x84\x57\x01\x00\x00\x8d\x6d\x01\xc7\x44\x24\x30\x00\x00\x00\x00\x89\xfe\x29\xee\x39\x74\x24\x38\x0f\x4e\x74\x24\x38\x8b\x44\x24\x3c\x01\xf0\x89\x44\x24\x34\x39\x44\x24\x48\x73\x23\x39\x44\x24\x50\x8b\x54\x24\x50\x0f\x4c\xd0\x89\x54\x24\x48\x89\x54\x24\x04\x8b\x44\x24\x44\x89\x04\x24\xe8\x9b\x83\xff\xff\x89\x44\x24\x44\x8b\x54\x24\x44\x03\x54\x24\x3c\x8d\x84\x24\x8c\x00\x00\x00\x01\xe8\x89\x74\x24\x08\x89\x44\x24\x04\x89\x14\x24\xe8\xa6\x82\xff\xff\x01\xf5\x29\x74\x24\x38\x39\xef\x0f\x8f\xfc\xfd\xff\xff\x8b\x74\x24\x30\x8b\x7c\x24\x34\x89\x7c\x24\x3c\xeb\x6e\x83\x7c\x24\x50\x00\x7e\x15\x8b\x44\x24\x3c\x01\xf8\x8b\x54\x24\x50\x2b\x54\x24\x3c\x39\x44\x24\x50\x0f\x4c\xfa\x89\xfd\x03\x7c\x24\x3c\x39\x7c\x24\x48\x73\x23\x39\x7c\x24\x50\x8b\x44\x24\x50\x0f\x4c\xc7\x89\x44\x24\x48\x89\x44\x24\x04\x8b\x44\x24\x44\x89\x04\x24\xe8\x13\x83\xff\xff\x89\x44\x24\x44\x8b\x54\x24\x44\x03\x54\x24\x3c\x8d\x84\x24\x8c\x00\x00\x00\x89\x6c\x24\x08\x89\x44\x24\x04\x89\x14\x24\xe8\x20\x82\xff\xff\x89\x7c\x24\x3c\x83\x7c\x24\x50\x00\x7e\x1e\x8b\x44\x24\x50\x39\x44\x24\x3c\x7c\x14\xeb\x4e\x8b\x7c\x24\x54\x89\x7c\x24\x4c\xeb\x08\x8b\x6c\x24\x54\x89\x6c\x24\x4c\xc7\x44\x24\x10\x00\x00\x00\x00\xc7\x44\x24\x0c\x88\x13\x00\x00\xc7\x44\x24\x08\x00\x08\x00\x00\x8d\x84\x24\x8c\x00\x00\x00\x89\x44\x24\x04\x8b\xbc\x24\xd0\x08\x00\x00\x89\x3c\x24\xe8\x45\xf4\xff\xff\x89\xc7\x85\xc0\x0f\x8f\x07\xfa\xff\xff\x8b\x44\x24\x58\x89\x04\x24\xe8\x9f\x81\xff\xff\x8b\x6c\x24\x3c\x8b\x7c\x24\x7c\x89\x2f\x85\xed\x75\x14\x8b\x44\x24\x44\x89\x04\x24\xe8\x85\x81\xff\xff\xc7\x44\x24\x44\x00\x00\x00\x00\x8b\x44\x24\x44\x8b\x94\x24\xac\x08\x00\x00\x65\x33\x15\x14\x00\x00\x00\x74\x2c\xeb\x25\x8b\x74\x24\x30\xe9\x52\xff\xff\xff\x8b\x74\x24\x30\xe9\x49\xff\xff\xff\x80\xbc\x04\x8c\x00\x00\x00\x0d\x0f\x85\xd3\xfd\xff\xff\xe9\xc3\xfd\xff\xff\xe8\x8d\x18\x00\x00\x81\xc4\xbc\x08\x00\x00\x5b\x5e\x5f\x5d\xc3\x55\x57\x56\x53\x81\xec\xec\x08\x00\x00\xe8\x86\xa5\xff\xff\x81\xc3\xf7\x65\x00\x00\x89\xc7\x8b\x84\x24\x00\x09\x00\x00\x89\x44\x24\x48\x8b\x84\x24\x04\x09\x00\x00\x89\x44\x24\x40\x8b\x84\x24\x08\x09\x00\x00\x89\x44\x24\x44\x8b\x84\x24\x10\x09\x00\x00\x89\x44\x24\x4c\x65\xa1\x14\x00\x00\x00\x89\x84\x24\xdc\x08\x00\x00\x31\xc0\x8b\x44\x24\x40\xc7\x00\x00\x00\x00\x00\x89\xd6\x8b\x84\x24\x14\x09\x00\x00\x89\x44\x24\x08\x89\x54\x24\x04\x89\x3c\x24\xe8\xed\xeb\xff\xff\x89\xc5\xc7\x44\x24\x3c\x00\x00\x00\x00\x85\xc0\x0f\x88\x6f\x01\x00\x00\x83\x7c\x24\x44\x00\x0f\x84\xab\x00\x00\x00\xc7\x44\x24\x58\x80\x00\x00\x00\x8d\x44\x24\x58\x89\x44\x24\x08\x8d\x84\x24\x5c\x08\x00\x00\x89\x44\x24\x04\x89\x2c\x24\xe8\x8d\x82\xff\xff\x85\xc0\x79\x10\x8d\x83\x10\xcf\xff\xff\x89\x04\x24\xe8\x1b\x81\xff\xff\xeb\x74\xc7\x44\x24\x18\x03\x00\x00\x00\xc7\x44\x24\x14\x00\x00\x00\x00\xc7\x44\x24\x10\x00\x00\x00\x00\x8b\x84\x24\x0c\x09\x00\x00\x89\x44\x24\x0c\x8b\x54\x24\x44\x89\x54\x24\x08\x8b\x44\x24\x58\x89\x44\x24\x04\x8d\x84\x24\x5c\x08\x00\x00\x89\x04\x24\xe8\xa7\x80\xff\xff\x85\xc0\x74\x2e\x89\x04\x24\xe8\xcb\x81\xff\xff\x89\x44\x24\x0c\x8d\x83\x1c\xcf\xff\xff\x89\x44\x24\x08\xc7\x44\x24\x04\x01\x00\x00\x00\x8b\x83\xe8\xff\xff\xff\x8b\x00\x89\x04\x24\xe8\x35\x82\xff\xff\x89\x74\x24\x20\x89\x7c\x24\x1c\x8b\x44\x24\x4c\x89\x44\x24\x18\x8b\x54\x24\x48\x89\x54\x24\x14\x8d\x83\x40\xcf\xff\xff\x89\x44\x24\x10\xc7\x44\x24\x0c\x00\x08\x00\x00\xc7\x44\x24\x08\x01\x00\x00\x00\xc7\x44\x24\x04\x00\x08\x00\x00\x8d\x44\x24\x5c\x89\x04\x24\xe8\x5f\x7f\xff\xff\x89\xc7\x85\xc0\x7e\x51\xbe\x00\x00\x00\x00\xc7\x44\x24\x0c\x00\x00\x00\x00\x89\xf8\x29\xf0\x89\x44\x24\x08\x8d\x44\x24\x5c\x01\xf0\x89\x44\x24\x04\x89\x2c\x24\xe8\x22\x82\xff\xff\x85\xc0\x79\x20\x8d\x83\x37\xcf\xff\xff\x89\x04\x24\xe8\x20\x80\xff\xff\x89\x2c\x24\xe8\xe8\x81\xff\xff\xc7\x44\x24\x3c\x00\x00\x00\x00\xeb\x22\x01\xc6\x39\xfe\x7c\xb4\x8b\x44\x24\x40\x89\x44\x24\x04\x89\x2c\x24\xe8\xf8\xf6\xff\xff\x89\x44\x24\x3c\x89\x2c\x24\xe8\xbc\x81\xff\xff\x8b\x44\x24\x3c\x8b\x94\x24\xdc\x08\x00\x00\x65\x33\x15\x14\x00\x00\x00\x74\x05\xe8\x73\x16\x00\x00\x81\xc4\xec\x08\x00\x00\x5b\x5e\x5f\x5d\xc3\x53\x83\xec\x28\xe8\x72\xa3\xff\xff\x81\xc3\xe3\x63\x00\x00\x8b\x4c\x24\x40\x89\x4c\x24\x14\x8d\x8b\x12\xc4\xff\xff\x89\x4c\x24\x10\x8b\x4c\x24\x3c\x89\x4c\x24\x0c\x8b\x4c\x24\x38\x89\x4c\x24\x08\x8b\x4c\x24\x34\x89\x4c\x24\x04\x8b\x4c\x24\x30\x89\x0c\x24\xe8\xa1\xfd\xff\xff\x83\xc4\x28\x5b\xc3\x83\xec\x6c\x89\x5c\x24\x5c\x89\x74\x24\x60\x89\x7c\x24\x64\x89\x6c\x24\x68\xe8\x19\xa3\xff\xff\x81\xc3\x8a\x63\x00\x00\x8b\x74\x24\x70\x8b\x44\x24\x74\x89\x44\x24\x1c\x8b\x6c\x24\x78\x8b\x54\x24\x7c\x89\x54\x24\x20\x8b\x84\x24\x80\x00\x00\x00\x89\x44\x24\x24\x65\x8b\x15\x14\x00\x00\x00\x89\x54\x24\x4c\x31\xd2\xb8\x00\x00\x00\x00\x85\xf6\x0f\x84\x08\x03\x00\x00\x8d\x83\x3c\xcf\xff\xff\x89\x44\x24\x04\x89\x34\x24\xe8\x21\x7e\xff\xff\x89\xc2\xb8\x00\x00\x00\x00\x85\xd2\x0f\x84\xe7\x02\x00\x00\x80\x3e\x68\x0f\x85\xde\x02\x00\x00\x80\x7e\x01\x74\x0f\x85\xd4\x02\x00\x00\x80\x7e\x02\x74\x0f\x85\xca\x02\x00\x00\x80\x7e\x03\x70\x0f\x85\xc0\x02\x00\x00\x8d\x42\x03\x89\x44\x24\x28\x8b\x7c\x24\x1c\xbe\x41\x00\x00\x00\xf7\xc7\x01\x00\x00\x00\x74\x0e\xc6\x07\x00\x8b\x7c\x24\x1c\x83\xc7\x01\x66\xbe\x40\x00\xf7\xc7\x02\x00\x00\x00\x74\x0b\x66\xc7\x07\x00\x00\x83\xc7\x02\x83\xee\x02\x89\xf1\xc1\xe9\x02\xb8\x00\x00\x00\x00\xf3\xab\xf7\xc6\x02\x00\x00\x00\x74\x08\x66\xc7\x07\x00\x00\x83\xc7\x02\xf7\xc6\x01\x00\x00\x00\x74\x03\xc6\x07\x00\x80\x7a\x03\x5b\x0f\x85\x76\x01\x00\x00\xc7\x44\x24\x04\x25\x00\x00\x00\x8b\x54\x24\x28\x89\x14\x24\xe8\xdd\x7e\xff\xff\x89\xc6\xc7\x44\x24\x04\x5d\x00\x00\x00\x8b\x44\x24\x28\x89\x04\x24\xe8\xc7\x7e\xff\xff\x89\xc7\x85\xc0\x0f\x95\x44\x24\x2f\x0f\x84\x92\x00\x00\x00\x85\xf6\x0f\x84\x8a\x00\x00\x00\x39\xc6\x0f\x83\x82\x00\x00\x00\x83\x7c\x24\x24\x00\x74\x7b\x8d\x46\x01\x80\x7e\x01\x32\x75\x0a\x8d\x56\x03\x80\x7e\x02\x35\x0f\x44\xc2\x89\xfe\x29\xc6\x83\xfe\x0f\xba\x0f\x00\x00\x00\x0f\x4f\xf2\xc7\x44\x24\x0c\x10\x00\x00\x00\x89\x74\x24\x08\x89\x44\x24\x04\x8d\x54\x24\x3c\x89\x14\x24\xe8\x33\x7e\xff\xff\xc6\x44\x34\x3c\x00\x8d\x44\x24\x3c\x89\x04\x24\xe8\xf2\x7d\xff\xff\x8b\x54\x24\x24\x89\x02\x85\xc0\x75\x22\xc7\x44\x24\x08\x0a\x00\x00\x00\xc7\x44\x24\x04\x00\x00\x00\x00\x8d\x44\x24\x3c\x89\x04\x24\xe8\x1c\x7e\xff\xff\x8b\x54\x24\x24\x89\x02\xc7\x44\x24\x04\x2f\x00\x00\x00\x8b\x44\x24\x28\x89\x04\x24\xe8\x12\x7e\xff\xff\x89\xc6\x80\x7c\x24\x2f\x00\x0f\x84\x8a\x00\x00\x00\x85\xc0\x0f\x84\x82\x00\x00\x00\x8d\x47\x01\x2b\x44\x24\x28\x83\xf8\x40\xba\x40\x00\x00\x00\x0f\x4f\xc2\x89\x44\x24\x08\x8b\x54\x24\x28\x89\x54\x24\x04\x8b\x44\x24\x1c\x89\x04\x24\xe8\x43\x7e\xff\xff\x80\x7f\x01\x3a\x75\x3c\x66\xc7\x45\x00\x00\x00\x0f\xb6\x47\x02\x83\xe8\x30\x3c\x09\x77\x31\x83\xc7\x02\x0f\xb7\x45\x00\x8d\x04\x80\x01\xc0\x66\x89\x45\x00\x66\x0f\xbe\x17\x8d\x44\x10\xd0\x66\x89\x45\x00\x83\xc7\x01\x0f\xb6\x07\x83\xe8\x30\x3c\x09\x76\xda\xeb\x06\x66\xc7\x45\x00\x50\x00\x8b\x54\x24\x20\x89\x32\xb8\x01\x00\x00\x00\xe9\xe0\x00\x00\x00\xc7\x44\x24\x04\x3a\x00\x00\x00\x8b\x44\x24\x28\x89\x04\x24\xe8\x67\x7d\xff\xff\x89\xc6\xc7\x44\x24\x04\x2f\x00\x00\x00\x8b\x54\x24\x28\x89\x14\x24\xe8\x51\x7d\xff\xff\x89\xc7\xb8\x00\x00\x00\x00\x85\xff\x0f\x84\xa7\x00\x00\x00\x85\xf6\x74\x04\x39\xfe\x76\x31\x89\xf8\x2b\x44\x24\x28\x83\xf8\x40\xba\x40\x00\x00\x00\x0f\x4f\xc2\x89\x44\x24\x08\x8b\x44\x24\x28\x89\x44\x24\x04\x8b\x54\x24\x1c\x89\x14\x24\xe8\x81\x7d\xff\xff\x66\xc7\x45\x00\x50\x00\xeb\x63\x89\xf0\x2b\x44\x24\x28\x83\xf8\x40\xba\x40\x00\x00\x00\x0f\x4f\xc2\x89\x44\x24\x08\x8b\x44\x24\x28\x89\x44\x24\x04\x8b\x54\x24\x1c\x89\x14\x24\xe8\x50\x7d\xff\xff\x66\xc7\x45\x00\x00\x00\x0f\xb6\x46\x01\x83\xe8\x30\x3c\x09\x77\x29\x83\xc6\x01\x0f\xb7\x45\x00\x8d\x04\x80\x01\xc0\x66\x89\x45\x00\x66\x0f\xbe\x16\x8d\x44\x10\xd0\x66\x89\x45\x00\x83\xc6\x01\x0f\xb6\x06\x83\xe8\x30\x3c\x09\x76\xda\x8b\x44\x24\x20\x89\x38\xb8\x01\x00\x00\x00\x8b\x54\x24\x4c\x65\x33\x15\x14\x00\x00\x00\x74\x05\xe8\xa9\x12\x00\x00\x8b\x5c\x24\x5c\x8b\x74\x24\x60\x8b\x7c\x24\x64\x8b\x6c\x24\x68\x83\xc4\x6c\xc3\x56\x53\x83\xec\x74\xe8\x9e\x9f\xff\xff\x81\xc3\x0f\x60\x00\x00\x8b\xb4\x24\x84\x00\x00\x00\x65\xa1\x14\x00\x00\x00\x89\x44\x24\x6c\x31\xc0\xc7\x06\x00\x00\x00\x00\x8d\x84\x24\x88\x00\x00\x00\x89\x44\x24\x10\x8d\x44\x24\x24\x89\x44\x24\x0c\x8d\x44\x24\x28\x89\x44\x24\x08\x8d\x44\x24\x2b\x89\x44\x24\x04\x8b\x84\x24\x80\x00\x00\x00\x89\x04\x24\xe8\x1c\xfc\xff\xff\x89\xc2\xb8\x00\x00\x00\x00\x85\xd2\x74\x34\x0f\xb7\x54\x24\x28\x8b\x84\x24\x88\x00\x00\x00\x89\x44\x24\x10\xc7\x44\x24\x0c\x00\x00\x00\x00\xc7\x44\x24\x08\x00\x00\x00\x00\x89\x74\x24\x04\x8b\x44\x24\x24\x89\x04\x24\x8d\x44\x24\x2b\xe8\x93\xfb\xff\xff\x8b\x54\x24\x6c\x65\x33\x15\x14\x00\x00\x00\x74\x05\xe8\xe9\x11\x00\x00\x83\xc4\x74\x5b\x5e\xc3\x83\xec\x7c\x89\x5c\x24\x70\x89\x74\x24\x74\x89\x7c\x24\x78\xe8\xe2\x9e\xff\xff\x81\xc3\x53\x5f\x00\x00\x8b\x84\x24\x80\x00\x00\x00\x8b\xbc\x24\x84\x00\x00\x00\x8b\xb4\x24\x88\x00\x00\x00\x65\x8b\x15\x14\x00\x00\x00\x89\x54\x24\x6c\x31\xd2\xc7\x07\x00\x00\x00\x00\x85\xf6\x74\x03\xc6\x06\x00\x8d\x94\x24\x90\x00\x00\x00\x89\x54\x24\x10\x8d\x54\x24\x24\x89\x54\x24\x0c\x8d\x54\x24\x28\x89\x54\x24\x08\x8d\x54\x24\x2b\x89\x54\x24\x04\x89\x04\x24\xe8\x51\xfb\xff\xff\x89\xc2\xb8\x00\x00\x00\x00\x85\xd2\x74\x33\x0f\xb7\x54\x24\x28\x8b\x84\x24\x90\x00\x00\x00\x89\x44\x24\x10\x8b\x84\x24\x8c\x00\x00\x00\x89\x44\x24\x0c\x89\x74\x24\x08\x89\x7c\x24\x04\x8b\x44\x24\x24\x89\x04\x24\x8d\x44\x24\x2b\xe8\xc9\xfa\xff\xff\x8b\x54\x24\x6c\x65\x33\x15\x14\x00\x00\x00\x74\x05\xe8\x1f\x11\x00\x00\x8b\x5c\x24\x70\x8b\x74\x24\x74\x8b\x7c\x24\x78\x83\xc4\x7c\xc3\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x55\x57\x56\x53\x83\xec\x3c\xe8\x07\x9e\xff\xff\x81\xc3\x78\x5e\x00\x00\x8b\x74\x24\x50\x8b\x06\x89\x46\x08\x03\x46\x0c\x89\x46\x04\x8d\xab\xaf\xcf\xff\xff\x89\x6c\x24\x28\xe9\x4a\x04\x00\x00\x8d\x47\x04\x39\xc5\x72\x66\xc7\x44\x24\x08\x04\x00\x00\x00\x8d\x83\xa6\xcf\xff\xff\x89\x44\x24\x04\x89\x3c\x24\xe8\x8f\x79\xff\xff\x85\xc0\x75\x48\x83\xc7\x03\x89\x7e\x08\x8d\x83\xab\xcf\xff\xff\x89\x44\x24\x20\x8b\x7e\x08\x8d\x47\x01\x89\x46\x08\x83\xc7\x04\x39\xef\x0f\x83\x12\x04\x00\x00\xc7\x44\x24\x08\x03\x00\x00\x00\x8b\x54\x24\x20\x89\x54\x24\x04\x89\x04\x24\xe8\x4f\x79\xff\xff\x85\xc0\x75\xd0\x89\x7e\x08\xe9\xdd\x03\x00\x00\x80\x3f\x3c\x0f\x85\xce\x03\x00\x00\x80\x7f\x01\x3f\x0f\x84\xc4\x03\x00\x00\x83\xc7\x01\x89\x7e\x08\xeb\x1d\x83\xc1\x01\x8d\x42\x01\x89\x46\x08\x39\xe8\x0f\x83\xc2\x03\x00\x00\x80\x7a\x01\x3a\x75\x0b\x8d\x7a\x02\x89\x7e\x08\xb9\x00\x00\x00\x00\x8b\x56\x08\x0f\xb6\x02\x3c\x20\x74\x16\x3c\x09\x74\x12\x3c\x0d\x74\x0e\x3c\x0a\x66\x90\x74\x08\x3c\x3e\x74\x04\x3c\x2f\x75\xbe\x85\xc9\x8d\x74\x26\x00\x0f\x8e\x27\x03\x00\x00\x8b\x46\x14\x85\xc0\x74\x10\x89\x4c\x24\x08\x89\x7c\x24\x04\x8b\x56\x10\x89\x14\x24\xff\xd0\x8b\x46\x08\x8b\x6e\x04\x39\xc5\x0f\x86\x60\x03\x00\x00\x0f\xb6\x08\x80\xf9\x2f\x0f\x84\xa7\x01\x00\x00\x80\xf9\x3e\x75\x1b\xe9\x9d\x01\x00\x00\x0f\xb6\x4a\x01\x80\xf9\x2f\x0f\x84\x90\x01\x00\x00\x80\xf9\x3e\x0f\x84\x87\x01\x00\x00\x80\xf9\x20\x0f\x84\x65\x01\x00\x00\x80\xf9\x09\x0f\x84\x5c\x01\x00\x00\x80\xf9\x0d\x0f\x84\x53\x01\x00\x00\xba\x00\x00\x00\x00\x80\xf9\x0a\x75\x16\xe9\x44\x01\x00\x00\x83\xc2\x01\x83\xc7\x01\x89\x7e\x08\x39\xfd\x0f\x86\xf9\x02\x00\x00\x8b\x7e\x08\x0f\xb6\x0f\x80\xf9\x3d\x74\x28\x80\xf9\x20\x74\x27\x80\xf9\x09\x74\x2b\x80\xf9\x0d\x74\x2a\x80\xf9\x0a\x90\x75\xcf\x89\xc7\xeb\x22\x39\x4e\x04\x77\x1d\x90\x8d\x74\x26\x00\xe9\xc6\x02\x00\x00\x89\xc7\xeb\x0f\x89\xc7\x90\x8d\x74\x26\x00\xeb\x06\x89\xc7\xeb\x02\x89\xc7\x8b\x4e\x08\x0f\xb6\x01\x83\xc1\x01\x89\x4e\x08\x3c\x3d\x75\xce\x89\xf8\xeb\x0f\x83\xc7\x01\x89\x7e\x08\x3b\x7e\x04\x0f\x83\x90\x02\x00\x00\x8b\x7e\x08\x0f\xb6\x0f\x80\xf9\x20\x74\xe6\x80\xf9\x09\x74\xe1\x80\xf9\x0d\x74\xdc\x80\xf9\x0a\x74\xd7\x89\xfd\x80\xf9\x27\x74\x0d\xc7\x44\x24\x20\x00\x00\x00\x00\x80\xf9\x22\x75\x52\x8d\x7d\x01\x89\x7e\x08\x8b\x6e\x04\x89\x6c\x24\x24\x39\xef\x0f\x83\x4d\x02\x00\x00\xc7\x44\x24\x20\x00\x00\x00\x00\xeb\x15\x83\x44\x24\x20\x01\x83\xc5\x01\x89\x6e\x08\x39\x6c\x24\x24\x0f\x86\x2e\x02\x00\x00\x8b\x6e\x08\x3a\x4d\x00\x75\xe3\xeb\x3b\x83\x44\x24\x20\x01\x83\xc5\x01\x89\x6e\x08\x3b\x6e\x04\x0f\x83\x10\x02\x00\x00\x8b\x6e\x08\x0f\xb6\x4d\x00\x80\xf9\x20\x74\x1b\x80\xf9\x09\x74\x16\x80\xf9\x0d\x74\x11\x80\xf9\x0a\x74\x0c\x80\xf9\x3e\x74\x07\x80\xf9\x2f\x66\x90\x75\xc5\x8b\x4e\x20\x85\xc9\x74\x1c\x8b\x6c\x24\x20\x89\x6c\x24\x10\x89\x7c\x24\x0c\x89\x54\x24\x08\x89\x44\x24\x04\x8b\x46\x10\x89\x04\x24\xff\xd1\x8b\x56\x08\x8d\x42\x01\x89\x46\x08\x8b\x6e\x04\x39\xe8\x0f\x82\x68\xfe\xff\xff\xe9\xad\x01\x00\x00\x8b\x46\x08\x80\x38\x2f\x0f\x84\x90\x01\x00\x00\x83\xc0\x01\x89\x44\x24\x24\x89\x46\x08\x8b\x46\x04\x89\x44\x24\x20\x39\x44\x24\x24\x0f\x83\x86\x01\x00\x00\xbd\x00\x00\x00\x00\x89\xc2\xeb\x11\x83\xc5\x01\x83\xc7\x01\x89\x7e\x08\x39\xfa\x0f\x86\x6c\x01\x00\x00\x8b\x7e\x08\x0f\xb6\x07\x3c\x20\x74\xe5\x3c\x09\x74\xe1\x3c\x0d\x74\xdd\x3c\x0a\x74\xd9\xc7\x44\x24\x08\x09\x00\x00\x00\x8b\x54\x24\x28\x89\x54\x24\x04\x89\x3c\x24\xe8\x93\x76\xff\xff\x8b\x4c\x24\x20\x85\xc0\x0f\x85\xa5\x00\x00\x00\x83\xc7\x09\x89\x7c\x24\x2c\x89\x7e\x08\xbd\x00\x00\x00\x00\x8d\x83\xb9\xcf\xff\xff\x89\x44\x24\x24\x89\xf7\xeb\x16\x83\xc5\x01\x8d\x46\x01\x89\x47\x08\x83\xc6\x04\x39\x74\x24\x20\x0f\x86\xff\x00\x00\x00\x8b\x77\x08\xc7\x44\x24\x08\x03\x00\x00\x00\x8b\x54\x24\x24\x89\x54\x24\x04\x89\x34\x24\xe8\x39\x76\xff\xff\x85\xc0\x75\xcb\x89\xfe\x85\xed\x7e\x2c\x8b\x47\x1c\x85\xc0\x74\x25\x89\x6c\x24\x08\x8b\x6c\x24\x2c\x89\x6c\x24\x04\x8b\x57\x10\x89\x14\x24\xff\xd0\xeb\x0f\x83\xc0\x01\x89\x46\x08\x3b\x46\x04\x0f\x83\xae\x00\x00\x00\x8b\x46\x08\x80\x38\x3c\x75\xe9\xe9\x90\x00\x00\x00\x83\xc5\x01\x8d\x50\x01\x89\x56\x08\x83\xc0\x02\x39\xc1\x0f\x86\x8d\x00\x00\x00\x8b\x46\x08\x80\x38\x3c\x75\xe4\x85\xed\x7e\x70\x8b\x56\x1c\x85\xd2\x74\x69\x80\x78\x01\x2f\x75\x63\x89\x6c\x24\x08\x8b\x6c\x24\x24\x89\x6c\x24\x04\x8b\x46\x10\x89\x04\x24\xff\xd2\xeb\x4d\x3c\x2f\x75\x49\x83\xc2\x01\x89\x56\x08\x39\xea\x73\x50\xb9\x00\x00\x00\x00\xeb\x0d\x83\xc1\x01\x83\xc0\x01\x89\x46\x08\x39\xe8\x73\x3c\x8b\x46\x08\x80\x38\x3e\x75\xeb\x8b\x46\x18\x85\xc0\x74\x10\x89\x4c\x24\x08\x89\x54\x24\x04\x8b\x56\x10\x89\x14\x24\xff\xd0\x83\x46\x08\x01\xeb\x06\x83\xc7\x01\x89\x7e\x08\x8b\x7e\x08\x8b\x6e\x04\x8d\x45\xff\x39\xc7\x0f\x82\xa5\xfb\xff\xff\x83\xc4\x3c\x5b\x5e\x5f\x5d\xc3\x90\x83\xec\x2c\x89\x5c\x24\x1c\x89\x74\x24\x20\x89\x7c\x24\x24\x89\x6c\x24\x28\xe8\x67\x99\xff\xff\x81\xc3\xd8\x59\x00\x00\x8b\x7c\x24\x30\x8b\x6c\x24\x34\x8b\x74\x24\x38\x89\x74\x24\x08\x89\x6c\x24\x04\x89\x3c\x24\xe8\xf2\x74\xff\xff\xc6\x04\x37\x00\x83\x87\x80\x01\x00\x00\x01\x83\xfe\x07\x75\x36\x89\x74\x24\x08\x8d\x83\xbd\xcf\xff\xff\x89\x44\x24\x04\x89\x2c\x24\xe8\xec\x74\xff\xff\x85\xc0\x75\x1c\xc6\x87\x84\x09\x00\x00\x00\xc6\x87\x04\x0a\x00\x00\x00\xc6\x87\x84\x0a\x00\x00\x00\xc6\x87\x04\x0b\x00\x00\x00\x8b\x5c\x24\x1c\x8b\x74\x24\x20\x8b\x7c\x24\x24\x8b\x6c\x24\x28\x83\xc4\x2c\xc3\x83\xec\x2c\x89\x5c\x24\x1c\x89\x74\x24\x20\x89\x7c\x24\x24\x89\x6c\x24\x28\xe8\xd3\x98\xff\xff\x81\xc3\x44\x59\x00\x00\x8b\x7c\x24\x30\x83\xaf\x80\x01\x00\x00\x01\x83\x7c\x24\x38\x07\x0f\x85\x89\x02\x00\x00\xc7\x44\x24\x08\x07\x00\x00\x00\x8d\x83\xbd\xcf\xff\xff\x89\x44\x24\x04\x8b\x44\x24\x34\x89\x04\x24\xe8\x66\x74\xff\xff\x85\xc0\x0f\x85\x63\x02\x00\x00\x8d\xb7\x04\x0b\x00\x00\xc7\x44\x24\x08\x36\x00\x00\x00\x8d\x83\x9c\xd0\xff\xff\x89\x44\x24\x04\x89\x34\x24\xe8\x3e\x74\xff\xff\x85\xc0\x75\x7a\x8d\x8f\x84\x01\x00\x00\x8d\xaf\x84\x09\x00\x00\x89\xc8\x89\xee\xba\x00\x02\x00\x00\xf6\xc1\x01\x74\x1d\x0f\xb6\x87\x84\x09\x00\x00\x88\x87\x84\x01\x00\x00\x8d\x87\x85\x01\x00\x00\x8d\xb7\x85\x09\x00\x00\x66\xba\xff\x01\xa8\x02\x74\x0f\x0f\xb7\x0e\x66\x89\x08\x83\xc0\x02\x83\xc6\x02\x83\xea\x02\x89\xd1\xc1\xe9\x02\x89\xc7\xf3\xa5\x89\xf8\xf6\xc2\x02\x74\x0b\x0f\xb7\x0e\x66\x89\x0f\xb9\x02\x00\x00\x00\xf6\xc2\x01\x0f\x84\xd1\x01\x00\x00\x0f\xb6\x14\x0e\x88\x14\x08\xe9\xc5\x01\x00\x00\xc7\x44\x24\x08\x34\x00\x00\x00\x8d\x83\xd4\xd0\xff\xff\x89\x44\x24\x04\x89\x34\x24\xe8\xa6\x73\xff\xff\x85\xc0\x75\x7a\x8d\x8f\x84\x07\x00\x00\x8d\xaf\x84\x09\x00\x00\x89\xc8\x89\xee\xba\x00\x02\x00\x00\xf6\xc1\x01\x74\x1d\x0f\xb6\x87\x84\x09\x00\x00\x88\x87\x84\x07\x00\x00\x8d\x87\x85\x07\x00\x00\x8d\xb7\x85\x09\x00\x00\x66\xba\xff\x01\xa8\x02\x74\x0f\x0f\xb7\x0e\x66\x89\x08\x83\xc0\x02\x83\xc6\x02\x83\xea\x02\x89\xd1\xc1\xe9\x02\x89\xc7\xf3\xa5\x89\xf8\xf6\xc2\x02\x74\x0b\x0f\xb7\x0e\x66\x89\x0f\xb9\x02\x00\x00\x00\xf6\xc2\x01\x0f\x84\x39\x01\x00\x00\x0f\xb6\x14\x0e\x88\x14\x08\xe9\x2d\x01\x00\x00\xc7\x44\x24\x08\x2d\x00\x00\x00\x8d\x83\x0c\xd1\xff\xff\x89\x44\x24\x04\x89\x34\x24\xe8\x0e\x73\xff\xff\x85\xc0\x74\x22\xc7\x44\x24\x08\x2e\x00\x00\x00\x8d\x83\x3c\xd1\xff\xff\x89\x44\x24\x04\x89\x34\x24\xe8\xf0\x72\xff\xff\x85\xc0\x0f\x85\xed\x00\x00\x00\x80\xbf\x04\x05\x00\x00\x00\x75\x73\x8d\x8f\x84\x03\x00\x00\x8d\xaf\x84\x09\x00\x00\x89\xc8\x89\xee\xba\x00\x02\x00\x00\xf6\xc1\x01\x74\x1d\x0f\xb6\x87\x84\x09\x00\x00\x88\x87\x84\x03\x00\x00\x8d\x87\x85\x03\x00\x00\x8d\xb7\x85\x09\x00\x00\x66\xba\xff\x01\xa8\x02\x74\x0f\x0f\xb7\x0e\x66\x89\x08\x83\xc0\x02\x83\xc6\x02\x83\xea\x02\x89\xd1\xc1\xe9\x02\x89\xc7\xf3\xa5\x89\xf8\xf6\xc2\x02\x74\x0b\x0f\xb7\x0e\x66\x89\x0f\xb9\x02\x00\x00\x00\xf6\xc2\x01\x74\x7a\x0f\xb6\x14\x0e\x88\x14\x08\xeb\x71\x8d\x8f\x84\x05\x00\x00\x8d\xaf\x84\x09\x00\x00\x89\xc8\x89\xee\xba\x00\x02\x00\x00\xf6\xc1\x01\x74\x1d\x0f\xb6\x87\x84\x09\x00\x00\x88\x87\x84\x05\x00\x00\x8d\x87\x85\x05\x00\x00\x8d\xb7\x85\x09\x00\x00\x66\xba\xff\x01\xa8\x02\x74\x0f\x0f\xb7\x0e\x66\x89\x08\x83\xc0\x02\x83\xc6\x02\x83\xea\x02\x89\xd1\xc1\xe9\x02\x89\xc7\xf3\xa5\x89\xf8\xf6\xc2\x02\x74\x0b\x0f\xb7\x0e\x66\x89\x0f\xb9\x02\x00\x00\x00\xf6\xc2\x01\x74\x07\x0f\xb6\x14\x0e\x88\x14\x08\x8b\x5c\x24\x1c\x8b\x74\x24\x20\x8b\x7c\x24\x24\x8b\x6c\x24\x28\x83\xc4\x2c\xc3\x83\xec\x2c\x89\x5c\x24\x1c\x89\x74\x24\x20\x89\x7c\x24\x24\x89\x6c\x24\x28\xe8\x02\x96\xff\xff\x81\xc3\x73\x56\x00\x00\x8b\x44\x24\x30\x8b\x6c\x24\x38\xb9\x08\x00\x00\x00\x8d\xbb\xc5\xcf\xff\xff\x89\xc6\xf3\xa6\x0f\x97\xc2\x0f\x92\xc1\x8d\xb8\x80\x00\x00\x00\x38\xca\x0f\x84\xb3\x00\x00\x00\xb9\x10\x00\x00\x00\x8d\xbb\xcd\xcf\xff\xff\x89\xc6\xf3\xa6\x0f\x97\xc1\x89\xce\x0f\x92\xc1\x89\xf2\x8d\xb8\x00\x01\x00\x00\x38\xca\x0f\x84\x8c\x00\x00\x00\xb9\x0c\x00\x00\x00\x8d\xbb\xdd\xcf\xff\xff\x89\xc6\xf3\xa6\x0f\x97\xc1\x89\xce\x0f\x92\xc1\x89\xf2\x8d\xb8\x04\x0b\x00\x00\x38\xca\x74\x69\xb9\x0b\x00\x00\x00\x8d\xbb\xe9\xcf\xff\xff\x89\xc6\xf3\xa6\x0f\x97\xc1\x89\xce\x0f\x92\xc1\x89\xf2\x8d\xb8\x84\x09\x00\x00\x38\xca\x74\x46\xb9\x0c\x00\x00\x00\x8d\xbb\xf4\xcf\xff\xff\x89\xc6\xf3\xa6\x0f\x97\xc1\x89\xce\x0f\x92\xc1\x89\xf2\x8d\xb8\x04\x0a\x00\x00\x38\xca\x74\x23\xb9\x08\x00\x00\x00\x8d\xbb\x00\xd0\xff\xff\x89\xc6\xf3\xa6\x0f\x97\xc1\x89\xce\x0f\x92\xc1\x89\xf2\x38\xca\x75\x2d\x8d\xb8\x84\x0a\x00\x00\x85\xff\x74\x23\x83\xfd\x7f\xbe\x7f\x00\x00\x00\x0f\x4e\xf5\x89\x74\x24\x08\x8b\x44\x24\x34\x89\x44\x24\x04\x89\x3c\x24\xe8\xa8\x70\xff\xff\xc6\x04\x37\x00\x8b\x5c\x24\x1c\x8b\x74\x24\x20\x8b\x7c\x24\x24\x8b\x6c\x24\x28\x83\xc4\x2c\xc3\x55\x57\x56\x53\x83\xec\x2c\xe8\xd7\x94\xff\xff\x81\xc3\x48\x55\x00\x00\x8b\x74\x24\x40\x8d\x86\x80\x00\x00\x00\x89\x44\x24\x08\x8d\x83\x08\xd0\xff\xff\x89\x44\x24\x04\xc7\x04\x24\x01\x00\x00\x00\xe8\x1a\x72\xff\xff\x8d\x83\x6c\xd1\xff\xff\x89\x44\x24\x04\xc7\x04\x24\x01\x00\x00\x00\xe8\x04\x72\xff\xff\x8d\x86\x04\x03\x00\x00\x89\x44\x24\x08\x8d\x83\x18\xd0\xff\xff\x89\x44\x24\x04\xc7\x04\x24\x01\x00\x00\x00\xe8\xe4\x71\xff\xff\x8d\x86\x84\x01\x00\x00\x89\x44\x24\x08\x8d\xbb\x2d\xd0\xff\xff\x89\x7c\x24\x04\xc7\x04\x24\x01\x00\x00\x00\xe8\xc4\x71\xff\xff\x8d\x86\x04\x02\x00\x00\x89\x44\x24\x08\x8d\xab\x41\xd0\xff\xff\x89\x6c\x24\x04\xc7\x04\x24\x01\x00\x00\x00\xe8\xa4\x71\xff\xff\x8d\x86\x84\x02\x00\x00\x89\x44\x24\x08\x8d\x83\x56\xd0\xff\xff\x89\x44\x24\x18\x89\x44\x24\x04\xc7\x04\x24\x01\x00\x00\x00\xe8\x80\x71\xff\xff\x8d\x83\x94\xd1\xff\xff\x89\x44\x24\x04\xc7\x04\x24\x01\x00\x00\x00\xe8\x6a\x71\xff\xff\x8d\x86\x04\x05\x00\x00\x89\x44\x24\x08\x8d\x83\x67\xd0\xff\xff\x89\x44\x24\x1c\x89\x44\x24\x04\xc7\x04\x24\x01\x00\x00\x00\xe8\x46\x71\xff\xff\x8d\x86\x84\x03\x00\x00\x89\x44\x24\x08\x89\x7c\x24\x04\xc7\x04\x24\x01\x00\x00\x00\xe8\x2c\x71\xff\xff\x8d\x86\x04\x04\x00\x00\x89\x44\x24\x08\x89\x6c\x24\x04\xc7\x04\x24\x01\x00\x00\x00\xe8\x12\x71\xff\xff\x8d\x86\x84\x04\x00\x00\x89\x44\x24\x08\x8b\x44\x24\x18\x89\x44\x24\x04\xc7\x04\x24\x01\x00\x00\x00\xe8\xf4\x70\xff\xff\x8d\x83\xcc\xd1\xff\xff\x89\x44\x24\x04\xc7\x04\x24\x01\x00\x00\x00\xe8\xde\x70\xff\xff\x8d\x86\x04\x07\x00\x00\x89\x44\x24\x08\x8b\x44\x24\x1c\x89\x44\x24\x04\xc7\x04\x24\x01\x00\x00\x00\xe8\xc0\x70\xff\xff\x8d\x86\x84\x05\x00\x00\x89\x44\x24\x08\x89\x7c\x24\x04\xc7\x04\x24\x01\x00\x00\x00\xe8\xa6\x70\xff\xff\x8d\x86\x04\x06\x00\x00\x89\x44\x24\x08\x89\x6c\x24\x04\xc7\x04\x24\x01\x00\x00\x00\xe8\x8c\x70\xff\xff\x8d\x86\x84\x06\x00\x00\x89\x44\x24\x08\x8b\x44\x24\x18\x89\x44\x24\x04\xc7\x04\x24\x01\x00\x00\x00\xe8\x6e\x70\xff\xff\x8d\x83\x7c\xd0\xff\xff\x89\x44\x24\x04\xc7\x04\x24\x01\x00\x00\x00\xe8\x58\x70\xff\xff\x8d\x86\x04\x09\x00\x00\x89\x44\x24\x08\x8b\x44\x24\x1c\x89\x44\x24\x04\xc7\x04\x24\x01\x00\x00\x00\xe8\x3a\x70\xff\xff\x8d\x86\x84\x07\x00\x00\x89\x44\x24\x08\x89\x7c\x24\x04\xc7\x04\x24\x01\x00\x00\x00\xe8\x20\x70\xff\xff\x8d\x86\x04\x08\x00\x00\x89\x44\x24\x08\x89\x6c\x24\x04\xc7\x04\x24\x01\x00\x00\x00\xe8\x06\x70\xff\xff\x81\xc6\x84\x08\x00\x00\x89\x74\x24\x08\x8b\x44\x24\x18\x89\x44\x24\x04\xc7\x04\x24\x01\x00\x00\x00\xe8\xe8\x6f\xff\xff\x83\xc4\x2c\x5b\x5e\x5f\x5d\xc3\x55\x57\x56\x53\x81\xec\x5c\x02\x00\x00\xe8\x64\x92\xff\xff\x81\xc3\xd5\x52\x00\x00\x8b\x84\x24\x74\x02\x00\x00\x89\x44\x24\x30\x8b\x94\x24\x78\x02\x00\x00\x89\x54\x24\x34\x8b\xac\x24\x80\x02\x00\x00\x8b\x84\x24\x84\x02\x00\x00\x89\x44\x24\x38\x8b\x94\x24\x88\x02\x00\x00\x89\x54\x24\x3c\x0f\xb7\x94\x24\x7c\x02\x00\x00\x65\xa1\x14\x00\x00\x00\x89\x84\x24\x4c\x02\x00\x00\x31\xc0\x8b\x7c\x24\x38\xb9\xff\xff\xff\xff\xf2\xae\xf7\xd1\x8d\x71\xff\xc6\x84\x24\x44\x02\x00\x00\x00\x66\x83\xfa\x50\x74\x38\x0f\xb7\xd2\x89\x54\x24\x14\x8d\x83\x05\xd2\xff\xff\x89\x44\x24\x10\xc7\x44\x24\x0c\x08\x00\x00\x00\xc7\x44\x24\x08\x01\x00\x00\x00\xc7\x44\x24\x04\x08\x00\x00\x00\x8d\x84\x24\x44\x02\x00\x00\x89\x04\x24\xe8\x0b\x6d\xff\xff\x89\x6c\x24\x28\x89\x74\x24\x24\x8d\x84\x24\x44\x02\x00\x00\x89\x44\x24\x20\x8b\x54\x24\x34\x89\x54\x24\x1c\x8b\x44\x24\x3c\x89\x44\x24\x18\x8b\x54\x24\x30\x89\x54\x24\x14\x8d\x83\x0c\xd2\xff\xff\x89\x44\x24\x10\xc7\x44\x24\x0c\x00\x02\x00\x00\xc7\x44\x24\x08\x01\x00\x00\x00\xc7\x44\x24\x04\x00\x02\x00\x00\x8d\x44\x24\x44\x89\x04\x24\xe8\xb2\x6c\xff\xff\x89\xc5\x8d\x04\x06\x89\x44\x24\x34\x89\x04\x24\xe8\xe1\x6d\xff\xff\x89\xc7\xc7\x44\x24\x30\x00\x00\x00\x00\x85\xc0\x74\x6b\x8d\x44\x24\x44\x89\x6c\x24\x08\x89\x44\x24\x04\x89\x3c\x24\xe8\xdf\x6c\xff\xff\x01\xfd\x89\x74\x24\x08\x8b\x54\x24\x38\x89\x54\x24\x04\x89\x2c\x24\xe8\xc9\x6c\xff\xff\xc7\x44\x24\x0c\x00\x00\x00\x00\x8b\x44\x24\x34\x89\x44\x24\x08\x89\x7c\x24\x04\x8b\x84\x24\x70\x02\x00\x00\x89\x04\x24\xe8\x36\x6f\xff\xff\x89\x44\x24\x30\x85\xc0\x79\x0e\x8d\x83\x37\xcf\xff\xff\x89\x04\x24\xe8\x30\x6d\xff\xff\x89\x3c\x24\xe8\x78\x6c\xff\xff\x8b\x44\x24\x30\x8b\x94\x24\x4c\x02\x00\x00\x65\x33\x15\x14\x00\x00\x00\x74\x05\xe8\xaf\x03\x00\x00\x81\xc4\x5c\x02\x00\x00\x5b\x5e\x5f\x5d\xc3\x83\xec\x1c\x89\x5c\x24\x10\x89\x74\x24\x14\x89\x7c\x24\x18\xe8\xa3\x90\xff\xff\x81\xc3\x14\x51\x00\x00\x8b\x7c\x24\x20\x8b\x44\x24\x28\xc7\x47\x4c\x01\x00\x00\x00\x83\xf8\x3f\xbe\x3f\x00\x00\x00\x0f\x4e\xf0\x8d\x47\x04\x89\x74\x24\x08\x8b\x54\x24\x24\x89\x54\x24\x04\x89\x04\x24\xe8\x19\x6c\xff\xff\xc6\x44\x37\x04\x00\xc7\x47\x50\x00\x00\x00\x00\xc7\x47\x54\x00\x00\x00\x00\x8b\x5c\x24\x10\x8b\x74\x24\x14\x8b\x7c\x24\x18\x83\xc4\x1c\xc3\x83\xec\x2c\x89\x5c\x24\x1c\x89\x74\x24\x20\x89\x7c\x24\x24\x89\x6c\x24\x28\xe8\x31\x90\xff\xff\x81\xc3\xa2\x50\x00\x00\x8b\x6c\x24\x30\x8d\x75\x04\xb9\x0f\x00\x00\x00\x8d\xbb\xdc\xd2\xff\xff\xf3\xa6\x0f\x97\xc2\x0f\x92\xc0\x38\xc2\x75\x3e\x8b\x44\x24\x38\x83\xc0\x01\x89\x04\x24\xe8\x8b\x6c\xff\xff\x89\x45\x44\x85\xc0\x74\x36\x8b\x54\x24\x38\x89\x54\x24\x08\x8b\x54\x24\x34\x89\x54\x24\x04\x89\x04\x24\xe8\x8c\x6b\xff\xff\x8b\x45\x44\x8b\x54\x24\x38\xc6\x04\x10\x00\x89\x55\x48\xeb\x0e\x8b\x44\x24\x34\x89\x45\x50\x8b\x54\x24\x38\x89\x55\x54\x8b\x5c\x24\x1c\x8b\x74\x24\x20\x8b\x7c\x24\x24\x8b\x6c\x24\x28\x83\xc4\x2c\xc3\x83\xec\x2c\x89\x5c\x24\x1c\x89\x74\x24\x20\x89\x7c\x24\x24\x89\x6c\x24\x28\xe8\x95\x8f\xff\xff\x81\xc3\x06\x50\x00\x00\x8b\x6c\x24\x30\x83\x7d\x4c\x00\x0f\x84\xab\x00\x00\x00\x8d\x75\x04\xb9\x0f\x00\x00\x00\x8d\xbb\xdc\xd2\xff\xff\xf3\xa6\x0f\x97\xc2\x0f\x92\xc0\x38\xc2\x74\x7c\x8b\x7d\x54\xc7\x04\x24\xc8\x00\x00\x00\xe8\xe5\x6b\xff\xff\x89\xc6\xc7\x44\x24\x08\x40\x00\x00\x00\x8d\x45\x04\x89\x44\x24\x04\x8d\x46\x08\x89\x04\x24\xe8\x79\x6c\xff\xff\xc6\x46\x47\x00\x8b\x45\x50\x85\xc0\x74\x2d\x83\xff\x7f\xba\x7f\x00\x00\x00\x0f\x4f\xfa\xc7\x44\x24\x0c\x80\x00\x00\x00\x89\x7c\x24\x08\x89\x44\x24\x04\x8d\x46\x48\x89\x04\x24\xe8\xa8\x6b\xff\xff\xc6\x44\x3e\x48\x00\xeb\x04\xc6\x46\x48\x00\x8b\x45\x00\x89\x06\x85\xc0\x74\x06\x8b\x45\x00\x89\x70\x04\x89\x75\x00\x89\x6e\x04\xc7\x45\x50\x00\x00\x00\x00\xc7\x45\x54\x00\x00\x00\x00\xc7\x45\x4c\x00\x00\x00\x00\x8b\x5c\x24\x1c\x8b\x74\x24\x20\x8b\x7c\x24\x24\x8b\x6c\x24\x28\x83\xc4\x2c\xc3\x53\x83\xec\x48\xe8\xb9\x8e\xff\xff\x81\xc3\x2a\x4f\x00\x00\x8b\x44\x24\x58\xc7\x00\x00\x00\x00\x00\xc7\x40\x44\x00\x00\x00\x00\xc7\x40\x48\x00\x00\x00\x00\x8b\x54\x24\x50\x89\x54\x24\x1c\x8b\x54\x24\x54\x89\x54\x24\x28\x89\x44\x24\x2c\x8d\x83\xd8\xae\xff\xff\x89\x44\x24\x30\x8d\x83\xe2\xaf\xff\xff\x89\x44\x24\x34\x8d\x83\x46\xaf\xff\xff\x89\x44\x24\x38\xc7\x44\x24\x3c\x00\x00\x00\x00\x8d\x44\x24\x1c\x89\x04\x24\xe8\x42\xf0\xff\xff\x83\xc4\x48\x5b\xc3\x56\x53\x83\xec\x14\xe8\x46\x8e\xff\xff\x81\xc3\xb7\x4e\x00\x00\x8b\x74\x24\x20\x8b\x46\x44\x85\xc0\x74\x16\x89\x04\x24\xe8\xca\x69\xff\xff\xc7\x46\x44\x00\x00\x00\x00\xc7\x46\x48\x00\x00\x00\x00\x8b\x06\x85\xc0\x74\x21\x8b\x10\x85\xd2\x74\x06\x8b\x48\x04\x89\x4a\x04\x8b\x50\x04\x8b\x08\x89\x0a\x89\x04\x24\xe8\x9b\x69\xff\xff\x8b\x06\x85\xc0\x75\xdf\x83\xc4\x14\x5b\x5e\xc3\x55\x57\x56\x53\x83\xec\x1c\xe8\xe6\x8d\xff\xff\x81\xc3\x57\x4e\x00\x00\x8b\x6c\x24\x34\x8b\x44\x24\x30\x8b\x30\xbf\x00\x00\x00\x00\x85\xf6\x74\x21\x8d\x46\x08\x89\x6c\x24\x04\x89\x04\x24\xe8\x2b\x69\xff\xff\x8d\x56\x48\x85\xc0\x0f\x44\xfa\x8b\x36\x85\xf6\x74\x04\x85\xff\x74\xdf\x89\xf8\x83\xc4\x1c\x5b\x5e\x5f\x5d\xc3\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x55\x57\x56\x53\xe8\x8a\x8d\xff\xff\x81\xc3\xfb\x4d\x00\x00\x83\xec\x1c\x8b\x6c\x24\x30\x8d\xbb\x88\xfe\xff\xff\xe8\x63\x68\xff\xff\x8d\x83\x88\xfe\xff\xff\x29\xc7\xc1\xff\x02\x85\xff\x74\x29\x31\xf6\x8d\xb6\x00\x00\x00\x00\x8b\x44\x24\x38\x89\x2c\x24\x89\x44\x24\x08\x8b\x44\x24\x34\x89\x44\x24\x04\xff\x94\xb3\x88\xfe\xff\xff\x83\xc6\x01\x39\xfe\x75\xdf\x83\xc4\x1c\x5b\x5e\x5f\x5d\xc3\xeb\x0d\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\xf3\xc3\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x53\xe8\x0d\x8d\xff\xff\x81\xc3\x7e\x4d\x00\x00\x83\xec\x08\xe8\x0c\x69\xff\xff\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x55\x89\xe5\x53\x83\xec\x04\xa1\x7c\x6e\x05\x08\x83\xf8\xff\x74\x13\xbb\x7c\x6e\x05\x08\x66\x90\x83\xeb\x04\xff\xd0\x8b\x03\x83\xf8\xff\x75\xf4\x83\xc4\x04\x5b\x5d\xc3\x90\x90\x53\x83\xec\x08\xe8\x00\x00\x00\x00\x5b\x81\xc3\x2f\x4d\x00\x00\xe8\x3f\x6b\xff\xff\x83\xc4\x08\x5b\xc3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x01\x00\x02\x00\x47\x65\x74\x43\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e\x54\x79\x70\x65\x49\x6e\x66\x6f\x20\x66\x61\x69\x6c\x65\x64\x2e\x0a\x00\x00\x53\x74\x61\x74\x75\x73\x20\x3a\x20\x25\x73\x2c\x20\x75\x70\x74\x69\x6d\x65\x3d\x25\x75\x73\x2c\x20\x4c\x61\x73\x74\x43\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e\x45\x72\x72\x6f\x72\x20\x3a\x20\x25\x73\x0a\x00\x00\x47\x65\x74\x4c\x69\x6e\x6b\x4c\x61\x79\x65\x72\x4d\x61\x78\x42\x69\x74\x52\x61\x74\x65\x73\x20\x66\x61\x69\x6c\x65\x64\x2e\x0a\x00\x00\x00\x00\x47\x65\x74\x45\x78\x74\x65\x72\x6e\x61\x6c\x49\x50\x41\x64\x64\x72\x65\x73\x73\x20\x66\x61\x69\x6c\x65\x64\x2e\x20\x28\x65\x72\x72\x6f\x72\x63\x6f\x64\x65\x3d\x25\x64\x29\x0a\x00\x00\x00\x00\x41\x64\x64\x41\x6e\x79\x50\x6f\x72\x74\x4d\x61\x70\x70\x69\x6e\x67\x28\x25\x73\x2c\x20\x25\x73\x2c\x20\x25\x73\x29\x20\x66\x61\x69\x6c\x65\x64\x20\x77\x69\x74\x68\x20\x63\x6f\x64\x65\x20\x25\x64\x20\x28\x25\x73\x29\x0a\x00\x41\x64\x64\x50\x6f\x72\x74\x4d\x61\x70\x70\x69\x6e\x67\x28\x25\x73\x2c\x20\x25\x73\x2c\x20\x25\x73\x29\x20\x66\x61\x69\x6c\x65\x64\x20\x77\x69\x74\x68\x20\x63\x6f\x64\x65\x20\x25\x64\x20\x28\x25\x73\x29\x0a\x00\x00\x00\x00\x47\x65\x74\x53\x70\x65\x63\x69\x66\x69\x63\x50\x6f\x72\x74\x4d\x61\x70\x70\x69\x6e\x67\x45\x6e\x74\x72\x79\x28\x29\x20\x66\x61\x69\x6c\x65\x64\x20\x77\x69\x74\x68\x20\x63\x6f\x64\x65\x20\x25\x64\x20\x28\x25\x73\x29\x0a\x00\x65\x78\x74\x65\x72\x6e\x61\x6c\x20\x25\x73\x3a\x25\x73\x20\x25\x73\x20\x69\x73\x20\x72\x65\x64\x69\x72\x65\x63\x74\x65\x64\x20\x74\x6f\x20\x69\x6e\x74\x65\x72\x6e\x61\x6c\x20\x25\x73\x3a\x25\x73\x20\x28\x64\x75\x72\x61\x74\x69\x6f\x6e\x3d\x25\x73\x29\x0a\x00\x00\x00\x00\x75\x70\x6e\x70\x63\x20\x3a\x20\x6d\x69\x6e\x69\x75\x70\x6e\x70\x63\x20\x6c\x69\x62\x72\x61\x72\x79\x20\x74\x65\x73\x74\x20\x63\x6c\x69\x65\x6e\x74\x2e\x20\x28\x63\x29\x20\x32\x30\x30\x35\x2d\x32\x30\x31\x34\x20\x54\x68\x6f\x6d\x61\x73\x20\x42\x65\x72\x6e\x61\x72\x64\x0a\x00\x00\x00\x00\x47\x6f\x20\x74\x6f\x20\x68\x74\x74\x70\x3a\x2f\x2f\x6d\x69\x6e\x69\x75\x70\x6e\x70\x2e\x66\x72\x65\x65\x2e\x66\x72\x2f\x20\x6f\x72\x20\x68\x74\x74\x70\x3a\x2f\x2f\x6d\x69\x6e\x69\x75\x70\x6e\x70\x2e\x74\x75\x78\x66\x61\x6d\x69\x6c\x79\x2e\x6f\x72\x67\x2f\x0a\x66\x6f\x72\x20\x6d\x6f\x72\x65\x20\x69\x6e\x66\x6f\x72\x6d\x61\x74\x69\x6f\x6e\x2e\x0a\x00\x55\x73\x61\x67\x65\x20\x3a\x09\x25\x73\x20\x5b\x6f\x70\x74\x69\x6f\x6e\x73\x5d\x20\x2d\x61\x20\x69\x70\x20\x70\x6f\x72\x74\x20\x65\x78\x74\x65\x72\x6e\x61\x6c\x5f\x70\x6f\x72\x74\x20\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x20\x5b\x64\x75\x72\x61\x74\x69\x6f\x6e\x5d\x0a\x09\x09\x41\x64\x64\x20\x70\x6f\x72\x74\x20\x72\x65\x64\x69\x72\x65\x63\x74\x69\x6f\x6e\x0a\x00\x00\x00\x20\x20\x20\x20\x20\x20\x20\x09\x25\x73\x20\x5b\x6f\x70\x74\x69\x6f\x6e\x73\x5d\x20\x2d\x64\x20\x65\x78\x74\x65\x72\x6e\x61\x6c\x5f\x70\x6f\x72\x74\x20\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x20\x5b\x70\x6f\x72\x74\x32\x20\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x32\x5d\x20\x5b\x2e\x2e\x2e\x5d\x0a\x09\x09\x44\x65\x6c\x65\x74\x65\x20\x70\x6f\x72\x74\x20\x72\x65\x64\x69\x72\x65\x63\x74\x69\x6f\x6e\x0a\x00\x00\x00\x20\x20\x20\x20\x20\x20\x20\x09\x25\x73\x20\x5b\x6f\x70\x74\x69\x6f\x6e\x73\x5d\x20\x2d\x73\x0a\x09\x09\x47\x65\x74\x20\x43\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e\x20\x73\x74\x61\x74\x75\x73\x0a\x00\x00\x00\x00\x20\x20\x20\x20\x20\x20\x20\x09\x25\x73\x20\x5b\x6f\x70\x74\x69\x6f\x6e\x73\x5d\x20\x2d\x6c\x0a\x09\x09\x4c\x69\x73\x74\x20\x72\x65\x64\x69\x72\x65\x63\x74\x69\x6f\x6e\x73\x0a\x00\x00\x00\x00\x20\x20\x20\x20\x20\x20\x20\x09\x25\x73\x20\x5b\x6f\x70\x74\x69\x6f\x6e\x73\x5d\x20\x2d\x4c\x0a\x09\x09\x4c\x69\x73\x74\x20\x72\x65\x64\x69\x72\x65\x63\x74\x69\x6f\x6e\x73\x20\x28\x75\x73\x69\x6e\x67\x20\x47\x65\x74\x4c\x69\x73\x74\x4f\x66\x50\x6f\x72\x74\x4d\x61\x70\x70\x69\x6e\x67\x73\x20\x28\x66\x6f\x72\x20\x49\x47\x44\x3a\x32\x20\x6f\x6e\x6c\x79\x29\x0a\x00\x00\x20\x20\x20\x20\x20\x20\x20\x09\x25\x73\x20\x5b\x6f\x70\x74\x69\x6f\x6e\x73\x5d\x20\x2d\x6e\x20\x69\x70\x20\x70\x6f\x72\x74\x20\x65\x78\x74\x65\x72\x6e\x61\x6c\x5f\x70\x6f\x72\x74\x20\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x20\x5b\x64\x75\x72\x61\x74\x69\x6f\x6e\x5d\x0a\x09\x09\x41\x64\x64\x20\x28\x61\x6e\x79\x29\x20\x70\x6f\x72\x74\x20\x72\x65\x64\x69\x72\x65\x63\x74\x69\x6f\x6e\x20\x61\x6c\x6c\x6f\x77\x69\x6e\x67\x20\x49\x47\x44\x20\x74\x6f\x20\x75\x73\x65\x20\x61\x6c\x74\x65\x72\x6e\x61\x74\x69\x76\x65\x20\x65\x78\x74\x65\x72\x6e\x61\x6c\x5f\x70\x6f\x72\x74\x20\x28\x66\x6f\x72\x20\x49\x47\x44\x3a\x32\x20\x6f\x6e\x6c\x79\x29\x0a\x00\x00\x20\x20\x20\x20\x20\x20\x20\x09\x25\x73\x20\x5b\x6f\x70\x74\x69\x6f\x6e\x73\x5d\x20\x2d\x4e\x20\x65\x78\x74\x65\x72\x6e\x61\x6c\x5f\x70\x6f\x72\x74\x5f\x73\x74\x61\x72\x74\x20\x65\x78\x74\x65\x72\x6e\x61\x6c\x5f\x70\x6f\x72\x74\x5f\x65\x6e\x64\x20\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x20\x5b\x6d\x61\x6e\x61\x67\x65\x5d\x0a\x09\x09\x44\x65\x6c\x65\x74\x65\x20\x72\x61\x6e\x67\x65\x20\x6f\x66\x20\x70\x6f\x72\x74\x20\x72\x65\x64\x69\x72\x65\x63\x74\x69\x6f\x6e\x73\x20\x28\x66\x6f\x72\x20\x49\x47\x44\x3a\x32\x20\x6f\x6e\x6c\x79\x29\x0a\x00\x00\x00\x20\x20\x20\x20\x20\x20\x20\x09\x25\x73\x20\x5b\x6f\x70\x74\x69\x6f\x6e\x73\x5d\x20\x2d\x72\x20\x70\x6f\x72\x74\x31\x20\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x31\x20\x5b\x70\x6f\x72\x74\x32\x20\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x32\x5d\x20\x5b\x2e\x2e\x2e\x5d\x0a\x09\x09\x41\x64\x64\x20\x61\x6c\x6c\x20\x72\x65\x64\x69\x72\x65\x63\x74\x69\x6f\x6e\x73\x20\x74\x6f\x20\x74\x68\x65\x20\x63\x75\x72\x72\x65\x6e\x74\x20\x68\x6f\x73\x74\x0a\x00\x20\x20\x20\x20\x20\x20\x20\x09\x25\x73\x20\x5b\x6f\x70\x74\x69\x6f\x6e\x73\x5d\x20\x2d\x41\x20\x72\x65\x6d\x6f\x74\x65\x5f\x69\x70\x20\x72\x65\x6d\x6f\x74\x65\x5f\x70\x6f\x72\x74\x20\x69\x6e\x74\x65\x72\x6e\x61\x6c\x5f\x69\x70\x20\x69\x6e\x74\x65\x72\x6e\x61\x6c\x5f\x70\x6f\x72\x74\x20\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x20\x6c\x65\x61\x73\x65\x5f\x74\x69\x6d\x65\x0a\x09\x09\x41\x64\x64\x20\x50\x69\x6e\x68\x6f\x6c\x65\x20\x28\x66\x6f\x72\x20\x49\x47\x44\x3a\x32\x20\x6f\x6e\x6c\x79\x29\x0a\x00\x20\x20\x20\x20\x20\x20\x20\x09\x25\x73\x20\x5b\x6f\x70\x74\x69\x6f\x6e\x73\x5d\x20\x2d\x55\x20\x75\x6e\x69\x71\x75\x65\x49\x44\x20\x6e\x65\x77\x5f\x6c\x65\x61\x73\x65\x5f\x74\x69\x6d\x65\x0a\x09\x09\x55\x70\x64\x61\x74\x65\x20\x50\x69\x6e\x68\x6f\x6c\x65\x20\x28\x66\x6f\x72\x20\x49\x47\x44\x3a\x32\x20\x6f\x6e\x6c\x79\x29\x0a\x00\x00\x20\x20\x20\x20\x20\x20\x20\x09\x25\x73\x20\x5b\x6f\x70\x74\x69\x6f\x6e\x73\x5d\x20\x2d\x43\x20\x75\x6e\x69\x71\x75\x65\x49\x44\x0a\x09\x09\x43\x68\x65\x63\x6b\x20\x69\x66\x20\x50\x69\x6e\x68\x6f\x6c\x65\x20\x69\x73\x20\x57\x6f\x72\x6b\x69\x6e\x67\x20\x28\x66\x6f\x72\x20\x49\x47\x44\x3a\x32\x20\x6f\x6e\x6c\x79\x29\x0a\x00\x00\x00\x00\x20\x20\x20\x20\x20\x20\x20\x09\x25\x73\x20\x5b\x6f\x70\x74\x69\x6f\x6e\x73\x5d\x20\x2d\x4b\x20\x75\x6e\x69\x71\x75\x65\x49\x44\x0a\x09\x09\x47\x65\x74\x20\x4e\x75\x6d\x62\x65\x72\x20\x6f\x66\x20\x70\x61\x63\x6b\x65\x74\x73\x20\x67\x6f\x69\x6e\x67\x20\x74\x68\x72\x6f\x75\x67\x68\x20\x74\x68\x65\x20\x72\x75\x6c\x65\x20\x28\x66\x6f\x72\x20\x49\x47\x44\x3a\x32\x20\x6f\x6e\x6c\x79\x29\x0a\x00\x00\x00\x20\x20\x20\x20\x20\x20\x20\x09\x25\x73\x20\x5b\x6f\x70\x74\x69\x6f\x6e\x73\x5d\x20\x2d\x44\x20\x75\x6e\x69\x71\x75\x65\x49\x44\x0a\x09\x09\x44\x65\x6c\x65\x74\x65\x20\x50\x69\x6e\x68\x6f\x6c\x65\x20\x28\x66\x6f\x72\x20\x49\x47\x44\x3a\x32\x20\x6f\x6e\x6c\x79\x29\x0a\x00\x20\x20\x20\x20\x20\x20\x20\x09\x25\x73\x20\x5b\x6f\x70\x74\x69\x6f\x6e\x73\x5d\x20\x2d\x53\x0a\x09\x09\x47\x65\x74\x20\x46\x69\x72\x65\x77\x61\x6c\x6c\x20\x73\x74\x61\x74\x75\x73\x20\x28\x66\x6f\x72\x20\x49\x47\x44\x3a\x32\x20\x6f\x6e\x6c\x79\x29\x0a\x00\x20\x20\x20\x20\x20\x20\x20\x09\x25\x73\x20\x5b\x6f\x70\x74\x69\x6f\x6e\x73\x5d\x20\x2d\x47\x20\x72\x65\x6d\x6f\x74\x65\x5f\x69\x70\x20\x72\x65\x6d\x6f\x74\x65\x5f\x70\x6f\x72\x74\x20\x69\x6e\x74\x65\x72\x6e\x61\x6c\x5f\x69\x70\x20\x69\x6e\x74\x65\x72\x6e\x61\x6c\x5f\x70\x6f\x72\x74\x20\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x0a\x09\x09\x47\x65\x74\x20\x4f\x75\x74\x62\x6f\x75\x6e\x64\x20\x50\x69\x6e\x68\x6f\x6c\x65\x20\x54\x69\x6d\x65\x6f\x75\x74\x20\x28\x66\x6f\x72\x20\x49\x47\x44\x3a\x32\x20\x6f\x6e\x6c\x79\x29\x0a\x00\x00\x00\x20\x20\x20\x20\x20\x20\x20\x09\x25\x73\x20\x5b\x6f\x70\x74\x69\x6f\x6e\x73\x5d\x20\x2d\x50\x0a\x09\x09\x47\x65\x74\x20\x50\x72\x65\x73\x65\x6e\x74\x61\x74\x69\x6f\x6e\x20\x75\x72\x6c\x0a\x00\x20\x20\x2d\x65\x20\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x20\x3a\x20\x73\x65\x74\x20\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x20\x66\x6f\x72\x20\x70\x6f\x72\x74\x20\x6d\x61\x70\x70\x69\x6e\x67\x2e\x0a\x00\x00\x00\x20\x20\x2d\x36\x20\x3a\x20\x75\x73\x65\x20\x69\x70\x20\x76\x36\x20\x69\x6e\x73\x74\x65\x61\x64\x20\x6f\x66\x20\x69\x70\x20\x76\x34\x2e\x0a\x00\x20\x20\x2d\x75\x20\x75\x72\x6c\x20\x3a\x20\x62\x79\x70\x61\x73\x73\x20\x64\x69\x73\x63\x6f\x76\x65\x72\x79\x20\x70\x72\x6f\x63\x65\x73\x73\x20\x62\x79\x20\x70\x72\x6f\x76\x69\x64\x69\x6e\x67\x20\x74\x68\x65\x20\x58\x4d\x4c\x20\x72\x6f\x6f\x74\x20\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x20\x75\x72\x6c\x2e\x0a\x00\x20\x20\x2d\x6d\x20\x61\x64\x64\x72\x65\x73\x73\x2f\x69\x6e\x74\x65\x72\x66\x61\x63\x65\x20\x3a\x20\x70\x72\x6f\x76\x69\x64\x65\x20\x69\x70\x20\x61\x64\x64\x72\x65\x73\x73\x20\x28\x69\x70\x20\x76\x34\x29\x20\x6f\x72\x20\x69\x6e\x74\x65\x72\x66\x61\x63\x65\x20\x6e\x61\x6d\x65\x20\x28\x69\x70\x20\x76\x34\x20\x6f\x72\x20\x76\x36\x29\x20\x74\x6f\x20\x75\x73\x65\x20\x66\x6f\x72\x20\x73\x65\x6e\x64\x69\x6e\x67\x20\x53\x53\x44\x50\x20\x6d\x75\x6c\x74\x69\x63\x61\x73\x74\x20\x70\x61\x63\x6b\x65\x74\x73\x2e\x0a\x00\x20\x20\x2d\x70\x20\x70\x61\x74\x68\x20\x3a\x20\x75\x73\x65\x20\x74\x68\x69\x73\x20\x70\x61\x74\x68\x20\x66\x6f\x72\x20\x4d\x69\x6e\x69\x53\x53\x44\x50\x64\x20\x73\x6f\x63\x6b\x65\x74\x2e\x0a\x00\x00\x00\x00\x46\x6f\x75\x6e\x64\x20\x61\x20\x28\x6e\x6f\x74\x20\x63\x6f\x6e\x6e\x65\x63\x74\x65\x64\x3f\x29\x20\x49\x47\x44\x20\x3a\x20\x25\x73\x0a\x00\x00\x55\x50\x6e\x50\x20\x64\x65\x76\x69\x63\x65\x20\x66\x6f\x75\x6e\x64\x2e\x20\x49\x73\x20\x69\x74\x20\x61\x6e\x20\x49\x47\x44\x20\x3f\x20\x3a\x20\x25\x73\x0a\x00\x20\x69\x20\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x20\x65\x78\x50\x6f\x72\x74\x2d\x3e\x69\x6e\x41\x64\x64\x72\x3a\x69\x6e\x50\x6f\x72\x74\x20\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x20\x72\x65\x6d\x6f\x74\x65\x48\x6f\x73\x74\x20\x6c\x65\x61\x73\x65\x54\x69\x6d\x65\x0a\x00\x25\x32\x64\x20\x25\x73\x20\x25\x35\x73\x2d\x3e\x25\x73\x3a\x25\x2d\x35\x73\x20\x27\x25\x73\x27\x20\x27\x25\x73\x27\x20\x25\x73\x0a\x00\x00\x00\x47\x65\x74\x47\x65\x6e\x65\x72\x69\x63\x50\x6f\x72\x74\x4d\x61\x70\x70\x69\x6e\x67\x45\x6e\x74\x72\x79\x28\x29\x20\x72\x65\x74\x75\x72\x6e\x65\x64\x20\x25\x64\x20\x28\x25\x73\x29\x0a\x00\x00\x25\x32\x64\x20\x25\x73\x20\x25\x35\x68\x75\x2d\x3e\x25\x73\x3a\x25\x2d\x35\x68\x75\x20\x27\x25\x73\x27\x20\x27\x25\x73\x27\x20\x25\x75\x0a\x00\x47\x65\x74\x4c\x69\x73\x74\x4f\x66\x50\x6f\x72\x74\x4d\x61\x70\x70\x69\x6e\x67\x73\x28\x29\x20\x72\x65\x74\x75\x72\x6e\x65\x64\x20\x25\x64\x20\x28\x25\x73\x29\x0a\x00\x00\x00\x55\x50\x4e\x50\x5f\x44\x65\x6c\x65\x74\x65\x50\x6f\x72\x74\x4d\x61\x70\x70\x69\x6e\x67\x28\x29\x20\x72\x65\x74\x75\x72\x6e\x65\x64\x20\x3a\x20\x25\x64\x0a\x00\x55\x50\x4e\x50\x5f\x44\x65\x6c\x65\x74\x65\x50\x6f\x72\x74\x4d\x61\x70\x70\x69\x6e\x67\x52\x61\x6e\x67\x65\x28\x29\x20\x72\x65\x74\x75\x72\x6e\x65\x64\x20\x3a\x20\x25\x64\x0a\x00\x00\x00\x00\x41\x64\x64\x50\x69\x6e\x68\x6f\x6c\x65\x28\x5b\x25\x73\x5d\x3a\x25\x73\x20\x2d\x3e\x20\x5b\x25\x73\x5d\x3a\x25\x73\x29\x20\x66\x61\x69\x6c\x65\x64\x20\x77\x69\x74\x68\x20\x63\x6f\x64\x65\x20\x25\x64\x20\x28\x25\x73\x29\x0a\x00\x00\x00\x00\x41\x64\x64\x50\x69\x6e\x68\x6f\x6c\x65\x3a\x20\x28\x5b\x25\x73\x5d\x3a\x25\x73\x20\x2d\x3e\x20\x5b\x25\x73\x5d\x3a\x25\x73\x29\x20\x2f\x20\x50\x69\x6e\x68\x6f\x6c\x65\x20\x49\x44\x20\x3d\x20\x25\x73\x0a\x00\x43\x68\x65\x63\x6b\x50\x69\x6e\x68\x6f\x6c\x65\x57\x6f\x72\x6b\x69\x6e\x67\x3a\x20\x50\x69\x6e\x68\x6f\x6c\x65\x20\x49\x44\x20\x3d\x20\x25\x73\x20\x2f\x20\x49\x73\x57\x6f\x72\x6b\x69\x6e\x67\x20\x3d\x20\x25\x73\x0a\x00\x00\x43\x68\x65\x63\x6b\x50\x69\x6e\x68\x6f\x6c\x65\x57\x6f\x72\x6b\x69\x6e\x67\x28\x29\x20\x66\x61\x69\x6c\x65\x64\x20\x77\x69\x74\x68\x20\x63\x6f\x64\x65\x20\x25\x64\x20\x28\x25\x73\x29\x0a\x00\x55\x70\x64\x61\x74\x65\x50\x69\x6e\x68\x6f\x6c\x65\x3a\x20\x50\x69\x6e\x68\x6f\x6c\x65\x20\x49\x44\x20\x3d\x20\x25\x73\x20\x77\x69\x74\x68\x20\x4c\x65\x61\x73\x65\x20\x54\x69\x6d\x65\x3a\x20\x25\x73\x0a\x00\x55\x70\x64\x61\x74\x65\x50\x69\x6e\x68\x6f\x6c\x65\x3a\x20\x49\x44\x20\x28\x25\x73\x29\x20\x66\x61\x69\x6c\x65\x64\x20\x77\x69\x74\x68\x20\x63\x6f\x64\x65\x20\x25\x64\x20\x28\x25\x73\x29\x0a\x00\x00\x00\x00\x47\x65\x74\x50\x69\x6e\x68\x6f\x6c\x65\x50\x61\x63\x6b\x65\x74\x73\x28\x29\x20\x66\x61\x69\x6c\x65\x64\x20\x77\x69\x74\x68\x20\x63\x6f\x64\x65\x20\x25\x64\x20\x28\x25\x73\x29\x0a\x00\x00\x00\x47\x65\x74\x50\x69\x6e\x68\x6f\x6c\x65\x50\x61\x63\x6b\x65\x74\x73\x3a\x20\x50\x69\x6e\x68\x6f\x6c\x65\x20\x49\x44\x20\x3d\x20\x25\x73\x20\x2f\x20\x50\x69\x6e\x68\x6f\x6c\x65\x50\x61\x63\x6b\x65\x74\x73\x20\x3d\x20\x25\x64\x0a\x00\x00\x00\x55\x50\x4e\x50\x5f\x44\x65\x6c\x65\x74\x65\x50\x69\x6e\x68\x6f\x6c\x65\x28\x29\x20\x72\x65\x74\x75\x72\x6e\x65\x64\x20\x3a\x20\x25\x64\x0a\x00\x46\x69\x72\x65\x77\x61\x6c\x6c\x45\x6e\x61\x62\x6c\x65\x64\x3a\x20\x25\x64\x20\x26\x20\x49\x6e\x62\x6f\x75\x6e\x64\x20\x50\x69\x6e\x68\x6f\x6c\x65\x20\x41\x6c\x6c\x6f\x77\x65\x64\x3a\x20\x25\x64\x0a\x00\x00\x47\x65\x74\x46\x69\x72\x65\x77\x61\x6c\x6c\x53\x74\x61\x74\x75\x73\x3a\x0a\x20\x20\x20\x46\x69\x72\x65\x77\x61\x6c\x6c\x20\x45\x6e\x61\x62\x6c\x65\x64\x3a\x20\x25\x73\x0a\x20\x20\x20\x49\x6e\x62\x6f\x75\x6e\x64\x20\x50\x69\x6e\x68\x6f\x6c\x65\x20\x41\x6c\x6c\x6f\x77\x65\x64\x3a\x20\x25\x73\x0a\x00\x00\x47\x65\x74\x4f\x75\x74\x62\x6f\x75\x6e\x64\x50\x69\x6e\x68\x6f\x6c\x65\x54\x69\x6d\x65\x6f\x75\x74\x28\x5b\x25\x73\x5d\x3a\x25\x73\x20\x2d\x3e\x20\x5b\x25\x73\x5d\x3a\x25\x73\x29\x20\x66\x61\x69\x6c\x65\x64\x20\x77\x69\x74\x68\x20\x63\x6f\x64\x65\x20\x25\x64\x20\x28\x25\x73\x29\x0a\x00\x47\x65\x74\x4f\x75\x74\x62\x6f\x75\x6e\x64\x50\x69\x6e\x68\x6f\x6c\x65\x54\x69\x6d\x65\x6f\x75\x74\x3a\x20\x28\x5b\x25\x73\x5d\x3a\x25\x73\x20\x2d\x3e\x20\x5b\x25\x73\x5d\x3a\x25\x73\x29\x20\x2f\x20\x54\x69\x6d\x65\x6f\x75\x74\x20\x3d\x20\x25\x64\x0a\x00\x4e\x6f\x20\x76\x61\x6c\x69\x64\x20\x55\x50\x4e\x50\x20\x49\x6e\x74\x65\x72\x6e\x65\x74\x20\x47\x61\x74\x65\x77\x61\x79\x20\x44\x65\x76\x69\x63\x65\x20\x66\x6f\x75\x6e\x64\x2e\x0a\x00\x00\x00\x4e\x6f\x20\x49\x47\x44\x20\x55\x50\x6e\x50\x20\x44\x65\x76\x69\x63\x65\x20\x66\x6f\x75\x6e\x64\x20\x6f\x6e\x20\x74\x68\x65\x20\x6e\x65\x74\x77\x6f\x72\x6b\x20\x21\x0a\x00\x00\x4c\x69\x73\x74\x20\x6f\x66\x20\x55\x50\x4e\x50\x20\x64\x65\x76\x69\x63\x65\x73\x20\x66\x6f\x75\x6e\x64\x20\x6f\x6e\x20\x74\x68\x65\x20\x6e\x65\x74\x77\x6f\x72\x6b\x20\x3a\x0a\x00\x43\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e\x20\x54\x79\x70\x65\x20\x3a\x20\x25\x73\x0a\x00\x47\x65\x74\x53\x74\x61\x74\x75\x73\x49\x6e\x66\x6f\x20\x66\x61\x69\x6c\x65\x64\x2e\x0a\x00\x20\x20\x54\x69\x6d\x65\x20\x73\x74\x61\x72\x74\x65\x64\x20\x3a\x20\x25\x73\x00\x4d\x61\x78\x42\x69\x74\x52\x61\x74\x65\x44\x6f\x77\x6e\x20\x3a\x20\x25\x75\x20\x62\x70\x73\x00\x20\x28\x25\x75\x2e\x25\x75\x20\x4d\x62\x70\x73\x29\x00\x20\x28\x25\x75\x20\x4b\x62\x70\x73\x29\x00\x20\x20\x20\x4d\x61\x78\x42\x69\x74\x52\x61\x74\x65\x55\x70\x20\x25\x75\x20\x62\x70\x73\x00\x45\x78\x74\x65\x72\x6e\x61\x6c\x49\x50\x41\x64\x64\x72\x65\x73\x73\x20\x3d\x20\x25\x73\x0a\x00\x57\x72\x6f\x6e\x67\x20\x61\x72\x67\x75\x6d\x65\x6e\x74\x73\x0a\x00\x69\x6e\x76\x61\x6c\x69\x64\x20\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x0a\x00\x47\x65\x74\x45\x78\x74\x65\x72\x6e\x61\x6c\x49\x50\x41\x64\x64\x72\x65\x73\x73\x20\x66\x61\x69\x6c\x65\x64\x2e\x0a\x00\x49\x6e\x74\x65\x72\x6e\x61\x6c\x49\x50\x3a\x50\x6f\x72\x74\x20\x3d\x20\x25\x73\x3a\x25\x73\x0a\x00\x59\x65\x73\x00\x4e\x6f\x00\x2d\x2d\x68\x65\x6c\x70\x00\x6f\x70\x74\x69\x6f\x6e\x20\x27\x25\x73\x27\x20\x69\x6e\x76\x61\x6c\x69\x64\x0a\x00\x0a\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x20\x69\x73\x20\x55\x44\x50\x20\x6f\x72\x20\x54\x43\x50\x0a\x00\x4f\x70\x74\x69\x6f\x6e\x73\x3a\x0a\x00\x75\x70\x6e\x70\x44\x69\x73\x63\x6f\x76\x65\x72\x28\x29\x20\x65\x72\x72\x6f\x72\x20\x63\x6f\x64\x65\x3d\x25\x64\x0a\x00\x20\x64\x65\x73\x63\x3a\x20\x25\x73\x0a\x20\x73\x74\x3a\x20\x25\x73\x0a\x0a\x00\x46\x6f\x75\x6e\x64\x20\x76\x61\x6c\x69\x64\x20\x49\x47\x44\x20\x3a\x20\x25\x73\x0a\x00\x54\x72\x79\x69\x6e\x67\x20\x74\x6f\x20\x63\x6f\x6e\x74\x69\x6e\x75\x65\x20\x61\x6e\x79\x77\x61\x79\x0a\x00\x46\x6f\x75\x6e\x64\x20\x64\x65\x76\x69\x63\x65\x20\x28\x69\x67\x64\x20\x3f\x29\x20\x3a\x20\x25\x73\x0a\x00\x4c\x6f\x63\x61\x6c\x20\x4c\x41\x4e\x20\x69\x70\x20\x61\x64\x64\x72\x65\x73\x73\x20\x3a\x20\x25\x73\x0a\x00\x25\x64\x00\x31\x30\x30\x30\x00\x54\x43\x50\x00\x36\x35\x35\x33\x35\x00\x55\x44\x50\x00\x69\x6e\x76\x61\x6c\x69\x64\x20\x61\x72\x67\x75\x6d\x65\x6e\x74\x73\x0a\x00\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x20\x69\x6e\x76\x61\x6c\x69\x64\x0a\x00\x74\x6f\x6f\x20\x66\x65\x77\x20\x61\x72\x67\x75\x6d\x65\x6e\x74\x73\x0a\x00\x42\x79\x74\x65\x73\x3a\x20\x20\x20\x53\x65\x6e\x74\x3a\x20\x25\x38\x75\x09\x52\x65\x63\x76\x3a\x20\x25\x38\x75\x0a\x00\x50\x61\x63\x6b\x65\x74\x73\x3a\x20\x53\x65\x6e\x74\x3a\x20\x25\x38\x75\x09\x52\x65\x63\x76\x3a\x20\x25\x38\x75\x0a\x00\x50\x72\x65\x73\x65\x6e\x74\x61\x74\x69\x6f\x6e\x20\x55\x52\x4c\x20\x66\x6f\x75\x6e\x64\x3a\x0a\x00\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x25\x73\x0a\x00\x55\x6e\x6b\x6e\x6f\x77\x6e\x20\x73\x77\x69\x74\x63\x68\x20\x2d\x25\x63\x0a\x00\x54\x43\x50\x00\x55\x44\x50\x00\x25\x73\x23\x25\x73\x00\x3e\x3c\x2f\x73\x3a\x42\x6f\x64\x79\x3e\x3c\x2f\x73\x3a\x45\x6e\x76\x65\x6c\x6f\x70\x65\x3e\x0d\x0a\x00\x31\x2e\x31\x00\x2f\x76\x61\x72\x2f\x72\x75\x6e\x2f\x6d\x69\x6e\x69\x73\x73\x64\x70\x64\x2e\x73\x6f\x63\x6b\x00\x46\x46\x30\x32\x3a\x3a\x43\x00\x46\x46\x30\x35\x3a\x3a\x43\x00\x73\x6f\x63\x6b\x65\x74\x00\x73\x65\x74\x73\x6f\x63\x6b\x6f\x70\x74\x00\x62\x69\x6e\x64\x00\x5b\x46\x46\x30\x35\x3a\x3a\x43\x5d\x00\x31\x39\x30\x30\x00\x67\x65\x74\x61\x64\x64\x72\x69\x6e\x66\x6f\x3a\x20\x25\x73\x0a\x00\x73\x65\x6e\x64\x74\x6f\x00\x6c\x6f\x63\x61\x74\x69\x6f\x6e\x00\x32\x33\x39\x2e\x32\x35\x35\x2e\x32\x35\x35\x2e\x32\x35\x30\x00\x5b\x46\x46\x30\x32\x3a\x3a\x43\x5d\x00\x68\x74\x74\x70\x3a\x2f\x2f\x5b\x66\x65\x38\x30\x3a\x00\x43\x6f\x6e\x6e\x65\x63\x74\x65\x64\x00\x75\x70\x6e\x70\x3a\x72\x6f\x6f\x74\x64\x65\x76\x69\x63\x65\x00\x00\x3c\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\x30\x22\x3f\x3e\x0d\x0a\x3c\x73\x3a\x45\x6e\x76\x65\x6c\x6f\x70\x65\x20\x78\x6d\x6c\x6e\x73\x3a\x73\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x73\x63\x68\x65\x6d\x61\x73\x2e\x78\x6d\x6c\x73\x6f\x61\x70\x2e\x6f\x72\x67\x2f\x73\x6f\x61\x70\x2f\x65\x6e\x76\x65\x6c\x6f\x70\x65\x2f\x22\x20\x73\x3a\x65\x6e\x63\x6f\x64\x69\x6e\x67\x53\x74\x79\x6c\x65\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x73\x63\x68\x65\x6d\x61\x73\x2e\x78\x6d\x6c\x73\x6f\x61\x70\x2e\x6f\x72\x67\x2f\x73\x6f\x61\x70\x2f\x65\x6e\x63\x6f\x64\x69\x6e\x67\x2f\x22\x3e\x3c\x73\x3a\x42\x6f\x64\x79\x3e\x3c\x75\x3a\x25\x73\x20\x78\x6d\x6c\x6e\x73\x3a\x75\x3d\x22\x25\x73\x22\x3e\x3c\x2f\x75\x3a\x25\x73\x3e\x3c\x2f\x73\x3a\x42\x6f\x64\x79\x3e\x3c\x2f\x73\x3a\x45\x6e\x76\x65\x6c\x6f\x70\x65\x3e\x0d\x0a\x00\x00\x00\x3c\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\x30\x22\x3f\x3e\x0d\x0a\x3c\x73\x3a\x45\x6e\x76\x65\x6c\x6f\x70\x65\x20\x78\x6d\x6c\x6e\x73\x3a\x73\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x73\x63\x68\x65\x6d\x61\x73\x2e\x78\x6d\x6c\x73\x6f\x61\x70\x2e\x6f\x72\x67\x2f\x73\x6f\x61\x70\x2f\x65\x6e\x76\x65\x6c\x6f\x70\x65\x2f\x22\x20\x73\x3a\x65\x6e\x63\x6f\x64\x69\x6e\x67\x53\x74\x79\x6c\x65\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x73\x63\x68\x65\x6d\x61\x73\x2e\x78\x6d\x6c\x73\x6f\x61\x70\x2e\x6f\x72\x67\x2f\x73\x6f\x61\x70\x2f\x65\x6e\x63\x6f\x64\x69\x6e\x67\x2f\x22\x3e\x3c\x73\x3a\x42\x6f\x64\x79\x3e\x3c\x75\x3a\x25\x73\x20\x78\x6d\x6c\x6e\x73\x3a\x75\x3d\x22\x25\x73\x22\x3e\x00\x00\x75\x72\x6e\x3a\x73\x63\x68\x65\x6d\x61\x73\x2d\x75\x70\x6e\x70\x2d\x6f\x72\x67\x3a\x64\x65\x76\x69\x63\x65\x3a\x49\x6e\x74\x65\x72\x6e\x65\x74\x47\x61\x74\x65\x77\x61\x79\x44\x65\x76\x69\x63\x65\x3a\x31\x00\x75\x72\x6e\x3a\x73\x63\x68\x65\x6d\x61\x73\x2d\x75\x70\x6e\x70\x2d\x6f\x72\x67\x3a\x73\x65\x72\x76\x69\x63\x65\x3a\x57\x41\x4e\x43\x6f\x6d\x6d\x6f\x6e\x49\x6e\x74\x65\x72\x66\x61\x63\x65\x43\x6f\x6e\x66\x69\x67\x3a\x31\x00\x75\x72\x6e\x3a\x73\x63\x68\x65\x6d\x61\x73\x2d\x75\x70\x6e\x70\x2d\x6f\x72\x67\x3a\x73\x65\x72\x76\x69\x63\x65\x3a\x57\x41\x4e\x49\x50\x43\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e\x3a\x31\x00\x00\x75\x72\x6e\x3a\x73\x63\x68\x65\x6d\x61\x73\x2d\x75\x70\x6e\x70\x2d\x6f\x72\x67\x3a\x73\x65\x72\x76\x69\x63\x65\x3a\x57\x41\x4e\x50\x50\x50\x43\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e\x3a\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4d\x2d\x53\x45\x41\x52\x43\x48\x20\x2a\x20\x48\x54\x54\x50\x2f\x31\x2e\x31\x0d\x0a\x48\x4f\x53\x54\x3a\x20\x25\x73\x3a\x31\x39\x30\x30\x0d\x0a\x53\x54\x3a\x20\x25\x73\x0d\x0a\x4d\x41\x4e\x3a\x20\x22\x73\x73\x64\x70\x3a\x64\x69\x73\x63\x6f\x76\x65\x72\x22\x0d\x0a\x4d\x58\x3a\x20\x25\x75\x0d\x0a\x0d\x0a\x00\x47\x65\x74\x54\x6f\x74\x61\x6c\x42\x79\x74\x65\x73\x53\x65\x6e\x74\x00\x4e\x65\x77\x54\x6f\x74\x61\x6c\x42\x79\x74\x65\x73\x53\x65\x6e\x74\x00\x47\x65\x74\x54\x6f\x74\x61\x6c\x42\x79\x74\x65\x73\x52\x65\x63\x65\x69\x76\x65\x64\x00\x4e\x65\x77\x54\x6f\x74\x61\x6c\x42\x79\x74\x65\x73\x52\x65\x63\x65\x69\x76\x65\x64\x00\x47\x65\x74\x54\x6f\x74\x61\x6c\x50\x61\x63\x6b\x65\x74\x73\x53\x65\x6e\x74\x00\x4e\x65\x77\x54\x6f\x74\x61\x6c\x50\x61\x63\x6b\x65\x74\x73\x53\x65\x6e\x74\x00\x47\x65\x74\x54\x6f\x74\x61\x6c\x50\x61\x63\x6b\x65\x74\x73\x52\x65\x63\x65\x69\x76\x65\x64\x00\x4e\x65\x77\x54\x6f\x74\x61\x6c\x50\x61\x63\x6b\x65\x74\x73\x52\x65\x63\x65\x69\x76\x65\x64\x00\x47\x65\x74\x53\x74\x61\x74\x75\x73\x49\x6e\x66\x6f\x00\x4e\x65\x77\x55\x70\x74\x69\x6d\x65\x00\x4e\x65\x77\x43\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e\x53\x74\x61\x74\x75\x73\x00\x4e\x65\x77\x4c\x61\x73\x74\x43\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e\x45\x72\x72\x6f\x72\x00\x25\x75\x00\x65\x72\x72\x6f\x72\x43\x6f\x64\x65\x00\x47\x65\x74\x43\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e\x54\x79\x70\x65\x49\x6e\x66\x6f\x00\x4e\x65\x77\x43\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e\x54\x79\x70\x65\x00\x47\x65\x74\x43\x6f\x6d\x6d\x6f\x6e\x4c\x69\x6e\x6b\x50\x72\x6f\x70\x65\x72\x74\x69\x65\x73\x00\x4e\x65\x77\x4c\x61\x79\x65\x72\x31\x44\x6f\x77\x6e\x73\x74\x72\x65\x61\x6d\x4d\x61\x78\x42\x69\x74\x52\x61\x74\x65\x00\x4e\x65\x77\x4c\x61\x79\x65\x72\x31\x55\x70\x73\x74\x72\x65\x61\x6d\x4d\x61\x78\x42\x69\x74\x52\x61\x74\x65\x00\x47\x65\x74\x45\x78\x74\x65\x72\x6e\x61\x6c\x49\x50\x41\x64\x64\x72\x65\x73\x73\x00\x4e\x65\x77\x45\x78\x74\x65\x72\x6e\x61\x6c\x49\x50\x41\x64\x64\x72\x65\x73\x73\x00\x6c\x69\x62\x6d\x69\x6e\x69\x75\x70\x6e\x70\x63\x00\x4e\x65\x77\x52\x65\x6d\x6f\x74\x65\x48\x6f\x73\x74\x00\x4e\x65\x77\x45\x78\x74\x65\x72\x6e\x61\x6c\x50\x6f\x72\x74\x00\x4e\x65\x77\x50\x72\x6f\x74\x6f\x63\x6f\x6c\x00\x4e\x65\x77\x49\x6e\x74\x65\x72\x6e\x61\x6c\x50\x6f\x72\x74\x00\x4e\x65\x77\x49\x6e\x74\x65\x72\x6e\x61\x6c\x43\x6c\x69\x65\x6e\x74\x00\x4e\x65\x77\x45\x6e\x61\x62\x6c\x65\x64\x00\x4e\x65\x77\x50\x6f\x72\x74\x4d\x61\x70\x70\x69\x6e\x67\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x00\x4e\x65\x77\x4c\x65\x61\x73\x65\x44\x75\x72\x61\x74\x69\x6f\x6e\x00\x41\x64\x64\x50\x6f\x72\x74\x4d\x61\x70\x70\x69\x6e\x67\x00\x41\x64\x64\x41\x6e\x79\x50\x6f\x72\x74\x4d\x61\x70\x70\x69\x6e\x67\x00\x4e\x65\x77\x52\x65\x73\x65\x72\x76\x65\x64\x50\x6f\x72\x74\x00\x44\x65\x6c\x65\x74\x65\x50\x6f\x72\x74\x4d\x61\x70\x70\x69\x6e\x67\x00\x4e\x65\x77\x53\x74\x61\x72\x74\x50\x6f\x72\x74\x00\x4e\x65\x77\x45\x6e\x64\x50\x6f\x72\x74\x00\x4e\x65\x77\x4d\x61\x6e\x61\x67\x65\x00\x44\x65\x6c\x65\x74\x65\x50\x6f\x72\x74\x4d\x61\x70\x70\x69\x6e\x67\x52\x61\x6e\x67\x65\x00\x4e\x65\x77\x50\x6f\x72\x74\x4d\x61\x70\x70\x69\x6e\x67\x49\x6e\x64\x65\x78\x00\x47\x65\x74\x47\x65\x6e\x65\x72\x69\x63\x50\x6f\x72\x74\x4d\x61\x70\x70\x69\x6e\x67\x45\x6e\x74\x72\x79\x00\x47\x65\x74\x50\x6f\x72\x74\x4d\x61\x70\x70\x69\x6e\x67\x4e\x75\x6d\x62\x65\x72\x4f\x66\x45\x6e\x74\x72\x69\x65\x73\x00\x4e\x65\x77\x50\x6f\x72\x74\x4d\x61\x70\x70\x69\x6e\x67\x4e\x75\x6d\x62\x65\x72\x4f\x66\x45\x6e\x74\x72\x69\x65\x73\x00\x47\x65\x74\x53\x70\x65\x63\x69\x66\x69\x63\x50\x6f\x72\x74\x4d\x61\x70\x70\x69\x6e\x67\x45\x6e\x74\x72\x79\x00\x4e\x65\x77\x4e\x75\x6d\x62\x65\x72\x4f\x66\x50\x6f\x72\x74\x73\x00\x47\x65\x74\x4c\x69\x73\x74\x4f\x66\x50\x6f\x72\x74\x4d\x61\x70\x70\x69\x6e\x67\x73\x00\x47\x65\x74\x46\x69\x72\x65\x77\x61\x6c\x6c\x53\x74\x61\x74\x75\x73\x00\x46\x69\x72\x65\x77\x61\x6c\x6c\x45\x6e\x61\x62\x6c\x65\x64\x00\x49\x6e\x62\x6f\x75\x6e\x64\x50\x69\x6e\x68\x6f\x6c\x65\x41\x6c\x6c\x6f\x77\x65\x64\x00\x52\x65\x6d\x6f\x74\x65\x50\x6f\x72\x74\x00\x47\x65\x74\x4f\x75\x74\x62\x6f\x75\x6e\x64\x50\x69\x6e\x68\x6f\x6c\x65\x54\x69\x6d\x65\x6f\x75\x74\x00\x65\x6d\x70\x74\x79\x00\x41\x64\x64\x50\x69\x6e\x68\x6f\x6c\x65\x00\x55\x6e\x69\x71\x75\x65\x49\x44\x00\x4e\x65\x77\x4c\x65\x61\x73\x65\x54\x69\x6d\x65\x00\x55\x70\x64\x61\x74\x65\x50\x69\x6e\x68\x6f\x6c\x65\x00\x44\x65\x6c\x65\x74\x65\x50\x69\x6e\x68\x6f\x6c\x65\x00\x43\x68\x65\x63\x6b\x50\x69\x6e\x68\x6f\x6c\x65\x57\x6f\x72\x6b\x69\x6e\x67\x00\x49\x73\x57\x6f\x72\x6b\x69\x6e\x67\x00\x47\x65\x74\x50\x69\x6e\x68\x6f\x6c\x65\x50\x61\x63\x6b\x65\x74\x73\x00\x53\x75\x63\x63\x65\x73\x73\x00\x4d\x69\x6e\x69\x75\x70\x6e\x70\x63\x20\x55\x6e\x6b\x6e\x6f\x77\x6e\x20\x45\x72\x72\x6f\x72\x00\x4d\x69\x6e\x69\x75\x70\x6e\x70\x63\x20\x49\x6e\x76\x61\x6c\x69\x64\x20\x41\x72\x67\x75\x6d\x65\x6e\x74\x73\x00\x4d\x69\x6e\x69\x75\x70\x6e\x70\x63\x20\x49\x6e\x76\x61\x6c\x69\x64\x20\x72\x65\x73\x70\x6f\x6e\x73\x65\x00\x4d\x69\x6e\x69\x75\x70\x6e\x70\x63\x20\x53\x6f\x63\x6b\x65\x74\x20\x65\x72\x72\x6f\x72\x00\x49\x6e\x76\x61\x6c\x69\x64\x20\x41\x63\x74\x69\x6f\x6e\x00\x49\x6e\x76\x61\x6c\x69\x64\x20\x41\x72\x67\x73\x00\x41\x63\x74\x69\x6f\x6e\x20\x46\x61\x69\x6c\x65\x64\x00\x41\x63\x74\x69\x6f\x6e\x20\x6e\x6f\x74\x20\x61\x75\x74\x68\x6f\x72\x69\x7a\x65\x64\x00\x50\x69\x6e\x68\x6f\x6c\x65\x53\x70\x61\x63\x65\x45\x78\x68\x61\x75\x73\x74\x65\x64\x00\x46\x69\x72\x65\x77\x61\x6c\x6c\x44\x69\x73\x61\x62\x6c\x65\x64\x00\x49\x6e\x62\x6f\x75\x6e\x64\x50\x69\x6e\x68\x6f\x6c\x65\x4e\x6f\x74\x41\x6c\x6c\x6f\x77\x65\x64\x00\x4e\x6f\x53\x75\x63\x68\x45\x6e\x74\x72\x79\x00\x50\x72\x6f\x74\x6f\x63\x6f\x6c\x4e\x6f\x74\x53\x75\x70\x70\x6f\x72\x74\x65\x64\x00\x50\x72\x6f\x74\x6f\x63\x6f\x6c\x57\x69\x6c\x64\x63\x61\x72\x64\x69\x6e\x67\x4e\x6f\x74\x41\x6c\x6c\x6f\x77\x65\x64\x00\x57\x69\x6c\x64\x63\x61\x72\x64\x4e\x6f\x74\x50\x65\x72\x6d\x69\x74\x74\x65\x64\x49\x6e\x53\x72\x63\x49\x50\x00\x4e\x6f\x50\x61\x63\x6b\x65\x74\x53\x65\x6e\x74\x00\x53\x70\x65\x63\x69\x66\x69\x65\x64\x41\x72\x72\x61\x79\x49\x6e\x64\x65\x78\x49\x6e\x76\x61\x6c\x69\x64\x00\x4e\x6f\x53\x75\x63\x68\x45\x6e\x74\x72\x79\x49\x6e\x41\x72\x72\x61\x79\x00\x57\x69\x6c\x64\x43\x61\x72\x64\x4e\x6f\x74\x50\x65\x72\x6d\x69\x74\x74\x65\x64\x49\x6e\x53\x72\x63\x49\x50\x00\x57\x69\x6c\x64\x43\x61\x72\x64\x4e\x6f\x74\x50\x65\x72\x6d\x69\x74\x74\x65\x64\x49\x6e\x45\x78\x74\x50\x6f\x72\x74\x00\x43\x6f\x6e\x66\x6c\x69\x63\x74\x49\x6e\x4d\x61\x70\x70\x69\x6e\x67\x45\x6e\x74\x72\x79\x00\x53\x61\x6d\x65\x50\x6f\x72\x74\x56\x61\x6c\x75\x65\x73\x52\x65\x71\x75\x69\x72\x65\x64\x00\x4f\x6e\x6c\x79\x50\x65\x72\x6d\x61\x6e\x65\x6e\x74\x4c\x65\x61\x73\x65\x73\x53\x75\x70\x70\x6f\x72\x74\x65\x64\x00\x55\x6e\x6b\x6e\x6f\x77\x6e\x45\x72\x72\x6f\x72\x00\x4d\x69\x6e\x69\x75\x70\x6e\x70\x63\x20\x4d\x65\x6d\x6f\x72\x79\x20\x61\x6c\x6c\x6f\x63\x61\x74\x69\x6f\x6e\x20\x65\x72\x72\x6f\x72\x00\x00\x00\x49\x6e\x74\x65\x72\x6e\x61\x6c\x50\x6f\x72\x74\x57\x69\x6c\x64\x63\x61\x72\x64\x69\x6e\x67\x4e\x6f\x74\x41\x6c\x6c\x6f\x77\x65\x64\x00\x00\x00\x52\x65\x6d\x6f\x74\x65\x48\x6f\x73\x74\x4f\x6e\x6c\x79\x53\x75\x70\x70\x6f\x72\x74\x73\x57\x69\x6c\x64\x63\x61\x72\x64\x00\x00\x45\x78\x74\x65\x72\x6e\x61\x6c\x50\x6f\x72\x74\x4f\x6e\x6c\x79\x53\x75\x70\x70\x6f\x72\x74\x73\x57\x69\x6c\x64\x63\x61\x72\x64\x00\x25\x32\x35\x00\x67\x65\x74\x61\x64\x64\x72\x69\x6e\x66\x6f\x28\x29\x20\x65\x72\x72\x6f\x72\x20\x3a\x20\x25\x73\x0a\x00\x67\x65\x74\x73\x6f\x63\x6b\x6f\x70\x74\x00\x63\x6f\x6e\x6e\x65\x63\x74\x00\x00\x00\x5f\x8c\xff\xff\x5f\x8c\xff\xff\xa7\x8b\xff\xff\xc4\x8b\xff\xff\xd4\x8b\xff\xff\xff\x8b\xff\xff\x0c\x8c\xff\xff\x26\x8c\xff\xff\x35\x8c\xff\xff\x55\x8c\xff\xff\x4e\x65\x77\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x00\x70\x6f\x6c\x6c\x00\x72\x65\x63\x76\x00\x73\x6f\x63\x6b\x65\x74\x28\x75\x6e\x69\x78\x29\x00\x6d\x69\x6e\x69\x73\x73\x64\x70\x63\x2e\x63\x3a\x20\x77\x72\x69\x74\x65\x28\x29\x00\x6d\x69\x6e\x69\x73\x73\x64\x70\x63\x2e\x63\x3a\x20\x72\x65\x61\x64\x28\x29\x00\x63\x6f\x6e\x74\x65\x6e\x74\x2d\x6c\x65\x6e\x67\x74\x68\x00\x74\x72\x61\x6e\x73\x66\x65\x72\x2d\x65\x6e\x63\x6f\x64\x69\x6e\x67\x00\x63\x68\x75\x6e\x6b\x65\x64\x00\x67\x65\x74\x73\x6f\x63\x6b\x6e\x61\x6d\x65\x00\x67\x65\x74\x6e\x61\x6d\x65\x69\x6e\x66\x6f\x28\x29\x20\x66\x61\x69\x6c\x65\x64\x20\x3a\x20\x25\x73\x0a\x00\x73\x65\x6e\x64\x00\x3a\x2f\x2f\x00\x47\x45\x54\x20\x25\x73\x20\x48\x54\x54\x50\x2f\x25\x73\x0d\x0a\x48\x6f\x73\x74\x3a\x20\x25\x73\x3a\x25\x64\x0d\x0a\x43\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e\x3a\x20\x43\x6c\x6f\x73\x65\x0d\x0a\x55\x73\x65\x72\x2d\x41\x67\x65\x6e\x74\x3a\x20\x55\x62\x75\x6e\x74\x75\x2f\x31\x32\x2e\x30\x34\x2c\x20\x55\x50\x6e\x50\x2f\x31\x2e\x30\x2c\x20\x4d\x69\x6e\x69\x55\x50\x6e\x50\x63\x2f\x31\x2e\x39\x0d\x0a\x0d\x0a\x00\x3c\x21\x2d\x2d\x00\x2d\x2d\x3e\x00\x3c\x21\x5b\x43\x44\x41\x54\x41\x5b\x00\x5d\x5d\x3e\x00\x73\x65\x72\x76\x69\x63\x65\x00\x55\x52\x4c\x42\x61\x73\x65\x00\x70\x72\x65\x73\x65\x6e\x74\x61\x74\x69\x6f\x6e\x55\x52\x4c\x00\x73\x65\x72\x76\x69\x63\x65\x54\x79\x70\x65\x00\x63\x6f\x6e\x74\x72\x6f\x6c\x55\x52\x4c\x00\x65\x76\x65\x6e\x74\x53\x75\x62\x55\x52\x4c\x00\x53\x43\x50\x44\x55\x52\x4c\x00\x75\x72\x6c\x62\x61\x73\x65\x20\x3d\x20\x27\x25\x73\x27\x0a\x00\x20\x73\x65\x72\x76\x69\x63\x65\x54\x79\x70\x65\x20\x3d\x20\x27\x25\x73\x27\x0a\x00\x20\x63\x6f\x6e\x74\x72\x6f\x6c\x55\x52\x4c\x20\x3d\x20\x27\x25\x73\x27\x0a\x00\x20\x65\x76\x65\x6e\x74\x53\x75\x62\x55\x52\x4c\x20\x3d\x20\x27\x25\x73\x27\x0a\x00\x20\x53\x43\x50\x44\x55\x52\x4c\x20\x3d\x20\x27\x25\x73\x27\x0a\x00\x20\x73\x65\x72\x76\x69\x63\x65\x74\x79\x70\x65\x20\x3d\x20\x27\x25\x73\x27\x0a\x00\x57\x41\x4e\x20\x49\x50\x76\x36\x20\x46\x69\x72\x65\x77\x61\x6c\x6c\x20\x43\x6f\x6e\x74\x72\x6f\x6c\x20\x3a\x0a\x00\x00\x00\x00\x75\x72\x6e\x3a\x73\x63\x68\x65\x6d\x61\x73\x2d\x75\x70\x6e\x70\x2d\x6f\x72\x67\x3a\x73\x65\x72\x76\x69\x63\x65\x3a\x57\x41\x4e\x43\x6f\x6d\x6d\x6f\x6e\x49\x6e\x74\x65\x72\x66\x61\x63\x65\x43\x6f\x6e\x66\x69\x67\x3a\x00\x00\x75\x72\x6e\x3a\x73\x63\x68\x65\x6d\x61\x73\x2d\x75\x70\x6e\x70\x2d\x6f\x72\x67\x3a\x73\x65\x72\x76\x69\x63\x65\x3a\x57\x41\x4e\x49\x50\x76\x36\x46\x69\x72\x65\x77\x61\x6c\x6c\x43\x6f\x6e\x74\x72\x6f\x6c\x3a\x00\x00\x00\x00\x75\x72\x6e\x3a\x73\x63\x68\x65\x6d\x61\x73\x2d\x75\x70\x6e\x70\x2d\x6f\x72\x67\x3a\x73\x65\x72\x76\x69\x63\x65\x3a\x57\x41\x4e\x49\x50\x43\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e\x3a\x00\x00\x00\x75\x72\x6e\x3a\x73\x63\x68\x65\x6d\x61\x73\x2d\x75\x70\x6e\x70\x2d\x6f\x72\x67\x3a\x73\x65\x72\x76\x69\x63\x65\x3a\x57\x41\x4e\x50\x50\x50\x43\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e\x3a\x00\x00\x57\x41\x4e\x20\x44\x65\x76\x69\x63\x65\x20\x28\x43\x6f\x6d\x6d\x6f\x6e\x20\x69\x6e\x74\x65\x72\x66\x61\x63\x65\x20\x63\x6f\x6e\x66\x69\x67\x29\x20\x3a\x0a\x00\x70\x72\x69\x6d\x61\x72\x79\x20\x57\x41\x4e\x20\x43\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e\x20\x44\x65\x76\x69\x63\x65\x20\x28\x49\x50\x20\x6f\x72\x20\x50\x50\x50\x20\x43\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e\x29\x3a\x0a\x00\x00\x73\x65\x63\x6f\x6e\x64\x61\x72\x79\x20\x57\x41\x4e\x20\x43\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e\x20\x44\x65\x76\x69\x63\x65\x20\x28\x49\x50\x20\x6f\x72\x20\x50\x50\x50\x20\x43\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e\x29\x3a\x0a\x00\x3a\x25\x68\x75\x00\x00\x00\x50\x4f\x53\x54\x20\x25\x73\x20\x48\x54\x54\x50\x2f\x25\x73\x0d\x0a\x48\x6f\x73\x74\x3a\x20\x25\x73\x25\x73\x0d\x0a\x55\x73\x65\x72\x2d\x41\x67\x65\x6e\x74\x3a\x20\x55\x62\x75\x6e\x74\x75\x2f\x31\x32\x2e\x30\x34\x2c\x20\x55\x50\x6e\x50\x2f\x31\x2e\x30\x2c\x20\x4d\x69\x6e\x69\x55\x50\x6e\x50\x63\x2f\x31\x2e\x39\x0d\x0a\x43\x6f\x6e\x74\x65\x6e\x74\x2d\x4c\x65\x6e\x67\x74\x68\x3a\x20\x25\x64\x0d\x0a\x43\x6f\x6e\x74\x65\x6e\x74\x2d\x54\x79\x70\x65\x3a\x20\x74\x65\x78\x74\x2f\x78\x6d\x6c\x0d\x0a\x53\x4f\x41\x50\x41\x63\x74\x69\x6f\x6e\x3a\x20\x22\x25\x73\x22\x0d\x0a\x43\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e\x3a\x20\x43\x6c\x6f\x73\x65\x0d\x0a\x43\x61\x63\x68\x65\x2d\x43\x6f\x6e\x74\x72\x6f\x6c\x3a\x20\x6e\x6f\x2d\x63\x61\x63\x68\x65\x0d\x0a\x50\x72\x61\x67\x6d\x61\x3a\x20\x6e\x6f\x2d\x63\x61\x63\x68\x65\x0d\x0a\x0d\x0a\x00\x00\x4e\x65\x77\x50\x6f\x72\x74\x4c\x69\x73\x74\x69\x6e\x67\x00\x00\x01\x1b\x03\x3b\x50\x02\x00\x00\x49\x00\x00\x00\xd0\x47\xff\xff\x6c\x02\x00\x00\xc0\x4b\xff\xff\x90\x02\x00\x00\x06\x4f\xff\xff\xd0\x02\x00\x00\xc9\x4f\xff\xff\x0c\x03\x00\x00\x67\x53\xff\xff\x34\x03\x00\x00\xa3\x6c\xff\xff\x64\x03\x00\x00\xb0\x6c\xff\xff\x78\x03\x00\x00\xa0\x6d\xff\xff\xa0\x03\x00\x00\xfe\x6d\xff\xff\xc4\x03\x00\x00\x38\x71\xff\xff\x04\x04\x00\x00\x8a\x71\xff\xff\x28\x04\x00\x00\x8d\x7b\xff\xff\x68\x04\x00\x00\xbd\x7b\xff\xff\x94\x04\x00\x00\xe0\x7e\xff\xff\xd4\x04\x00\x00\x62\x7f\xff\xff\xf4\x04\x00\x00\x03\x80\xff\xff\x18\x05\x00\x00\x00\x86\xff\xff\x58\x05\x00\x00\x40\x87\xff\xff\x80\x05\x00\x00\x77\x87\xff\xff\xa0\x05\x00\x00\x6f\x88\xff\xff\xc8\x05\x00\x00\x67\x89\xff\xff\xf0\x05\x00\x00\x5f\x8a\xff\xff\x18\x06\x00\x00\x57\x8b\xff\xff\x40\x06\x00\x00\x72\x8d\xff\xff\x80\x06\x00\x00\xc9\x8e\xff\xff\xc0\x06\x00\x00\x9a\x90\xff\xff\x00\x07\x00\x00\x08\x92\xff\xff\x40\x07\x00\x00\x4b\x94\xff\xff\x80\x07\x00\x00\xdc\x96\xff\xff\xc0\x07\x00\x00\x68\x98\xff\xff\x00\x08\x00\x00\x28\x9a\xff\xff\x40\x08\x00\x00\xf2\x9d\xff\xff\x80\x08\x00\x00\x6d\x9f\xff\xff\xa8\x08\x00\x00\x98\xa2\xff\xff\xe8\x08\x00\x00\xac\xa4\xff\xff\x28\x09\x00\x00\x4c\xa6\xff\xff\x68\x09\x00\x00\x65\xa8\xff\xff\xa8\x09\x00\x00\x2f\xab\xff\xff\xe8\x09\x00\x00\xc8\xac\xff\xff\x10\x0a\x00\x00\x3f\xae\xff\xff\x38\x0a\x00\x00\xc7\xaf\xff\xff\x78\x0a\x00\x00\x44\xb1\xff\xff\xb8\x0a\x00\x00\x67\xb3\xff\xff\xcc\x0a\x00\x00\x70\xb3\xff\xff\xe0\x0a\x00\x00\x10\xb8\xff\xff\x20\x0b\x00\x00\x5c\xb8\xff\xff\x50\x0b\x00\x00\x68\xb8\xff\xff\x64\x0b\x00\x00\x83\xb9\xff\xff\x88\x0b\x00\x00\x22\xba\xff\xff\xc4\x0b\x00\x00\x8d\xba\xff\xff\xe8\x0b\x00\x00\xd0\xba\xff\xff\x14\x0c\x00\x00\xf0\xbb\xff\xff\x54\x0c\x00\x00\xf0\xbf\xff\xff\x94\x0c\x00\x00\x0e\xc7\xff\xff\xd4\x0c\x00\x00\x28\xc9\xff\xff\x14\x0d\x00\x00\x72\xc9\xff\xff\x38\x0d\x00\x00\xfb\xcc\xff\xff\x60\x0d\x00\x00\xad\xcd\xff\xff\x8c\x0d\x00\x00\x90\xce\xff\xff\xb0\x0d\x00\x00\x24\xd3\xff\xff\xf0\x0d\x00\x00\xb8\xd3\xff\xff\x18\x0e\x00\x00\x89\xd6\xff\xff\x40\x0e\x00\x00\xc0\xd7\xff\xff\x68\x0e\x00\x00\x30\xda\xff\xff\xa8\x0e\x00\x00\xec\xdb\xff\xff\xe8\x0e\x00\x00\x5a\xdc\xff\xff\x0c\x0f\x00\x00\xf6\xdc\xff\xff\x34\x0f\x00\x00\xe1\xdd\xff\xff\x5c\x0f\x00\x00\x53\xde\xff\xff\x80\x0f\x00\x00\xb1\xde\xff\xff\xac\x0f\x00\x00\x10\xdf\xff\xff\xe8\x0f\x00\x00\x80\xdf\xff\xff\x24\x10\x00\x00\x90\xdf\xff\xff\x38\x10\x00\x00\x14\x00\x00\x00\x00\x00\x00\x00\x01\x7a\x52\x00\x01\x7c\x08\x01\x1b\x0c\x04\x04\x88\x01\x00\x00\x20\x00\x00\x00\x1c\x00\x00\x00\x5c\x45\xff\xff\x30\x03\x00\x00\x00\x0e\x08\x46\x0e\x0c\x4a\x0f\x0b\x74\x04\x78\x00\x3f\x1a\x3b\x2a\x32\x24\x22\x3c\x00\x00\x00\x40\x00\x00\x00\x28\x49\xff\xff\x46\x03\x00\x00\x00\x41\x0e\x08\x85\x02\x41\x0e\x0c\x87\x03\x41\x0e\x10\x86\x04\x41\x0e\x14\x83\x05\x46\x0e\xc0\x02\x03\x37\x03\x0e\x14\x41\x0e\x10\xc3\x41\x0e\x0c\xc6\x41\x0e\x08\xc7\x41\x0e\x04\xc5\x00\x00\x38\x00\x00\x00\x80\x00\x00\x00\x2e\x4c\xff\xff\xc3\x00\x00\x00\x00\x41\x0e\x08\x85\x02\x41\x0e\x0c\x87\x03\x41\x0e\x10\x86\x04\x41\x0e\x14\x83\x05\x43\x0e\x18\x02\xb7\x0e\x14\x41\x0e\x10\xc3\x41\x0e\x0c\xc6\x41\x0e\x08\xc7\x41\x0e\x04\xc5\x24\x00\x00\x00\xbc\x00\x00\x00\xb5\x4c\xff\xff\x9e\x03\x00\x00\x00\x46\x0e\xe0\x01\x5c\x85\x02\x87\x03\x86\x04\x83\x05\x03\x7b\x03\x0e\x04\xc5\xc7\xc6\xc3\x00\x2c\x00\x00\x00\xe4\x00\x00\x00\x2b\x50\xff\xff\x3c\x19\x00\x00\x00\x41\x0e\x08\x85\x02\x42\x0d\x05\x4c\x83\x05\x86\x04\x87\x03\x03\x29\x19\xc3\x41\xc6\x41\xc7\x41\x0c\x04\x04\xc5\x00\x00\x00\x10\x00\x00\x00\x14\x01\x00\x00\x37\x69\xff\xff\x04\x00\x00\x00\x00\x00\x00\x00\x24\x00\x00\x00\x28\x01\x00\x00\x30\x69\xff\xff\xf0\x00\x00\x00\x00\x43\x0e\x30\x50\x85\x02\x87\x03\x86\x04\x83\x05\x02\xdc\x0e\x04\xc5\xc7\xc6\xc3\x00\x00\x00\x20\x00\x00\x00\x50\x01\x00\x00\xf8\x69\xff\xff\x5e\x00\x00\x00\x00\x41\x0e\x08\x83\x02\x43\x0e\x50\x02\x58\x0e\x08\x41\x0e\x04\xc3\x00\x00\x00\x3c\x00\x00\x00\x74\x01\x00\x00\x32\x6a\xff\xff\x3a\x03\x00\x00\x00\x41\x0e\x08\x85\x02\x41\x0e\x0c\x87\x03\x41\x0e\x10\x86\x04\x41\x0e\x14\x83\x05\x46\x0e\xa0\x12\x03\x2b\x03\x0e\x14\x41\x0e\x10\xc3\x41\x0e\x0c\xc6\x41\x0e\x08\xc7\x41\x0e\x04\xc5\x00\x00\x20\x00\x00\x00\xb4\x01\x00\x00\x2c\x6d\xff\xff\x52\x00\x00\x00\x00\x41\x0e\x08\x83\x02\x43\x0e\x30\x02\x4c\x0e\x08\x41\x0e\x04\xc3\x00\x00\x00\x3c\x00\x00\x00\xd8\x01\x00\x00\x5a\x6d\xff\xff\x03\x0a\x00\x00\x00\x41\x0e\x08\x85\x02\x41\x0e\x0c\x87\x03\x41\x0e\x10\x86\x04\x41\x0e\x14\x83\x05\x46\x0e\xd0\x0e\x03\xf4\x09\x0e\x14\x41\x0e\x10\xc3\x41\x0e\x0c\xc6\x41\x0e\x08\xc7\x41\x0e\x04\xc5\x00\x00\x28\x00\x00\x00\x18\x02\x00\x00\x1d\x77\xff\xff\x30\x00\x00\x00\x00\x41\x0e\x08\x86\x02\x41\x0e\x0c\x83\x03\x43\x0e\x20\x68\x0e\x0c\x41\x0e\x08\xc3\x41\x0e\x04\xc6\x00\x00\x00\x3c\x00\x00\x00\x44\x02\x00\x00\x21\x77\xff\xff\x23\x03\x00\x00\x00\x41\x0e\x08\x85\x02\x41\x0e\x0c\x87\x03\x41\x0e\x10\x86\x04\x41\x0e\x14\x83\x05\x43\x0e\x80\x01\x03\x17\x03\x0e\x14\x41\x0e\x10\xc3\x41\x0e\x0c\xc6\x41\x0e\x08\xc7\x41\x0e\x04\xc5\x00\x00\x1c\x00\x00\x00\x84\x02\x00\x00\x04\x7a\xff\xff\x82\x00\x00\x00\x00\x43\x0e\x20\x48\x86\x02\x83\x03\x02\x76\x0e\x04\xc6\xc3\x00\x20\x00\x00\x00\xa4\x02\x00\x00\x66\x7a\xff\xff\xa1\x00\x00\x00\x00\x43\x0e\x80\x01\x4c\x87\x02\x86\x03\x83\x04\x02\x91\x0e\x04\xc7\xc6\xc3\x00\x3c\x00\x00\x00\xc8\x02\x00\x00\xe3\x7a\xff\xff\xfd\x05\x00\x00\x00\x41\x0e\x08\x85\x02\x41\x0e\x0c\x87\x03\x41\x0e\x10\x86\x04\x41\x0e\x14\x83\x05\x43\x0e\x90\x01\x03\xf1\x05\x0e\x14\x41\x0e\x10\xc3\x41\x0e\x0c\xc6\x41\x0e\x08\xc7\x41\x0e\x04\xc5\x00\x00\x24\x00\x00\x00\x08\x03\x00\x00\xa0\x80\xff\xff\x31\x01\x00\x00\x00\x43\x0e\x50\x50\x85\x02\x87\x03\x86\x04\x83\x05\x03\x1d\x01\x0e\x04\xc5\xc7\xc6\xc3\x00\x00\x1c\x00\x00\x00\x30\x03\x00\x00\xb8\x81\xff\xff\x37\x00\x00\x00\x00\x41\x0e\x08\x83\x02\x43\x0e\x20\x71\x0e\x08\x41\x0e\x04\xc3\x24\x00\x00\x00\x50\x03\x00\x00\xcf\x81\xff\xff\xf8\x00\x00\x00\x00\x46\x0e\xa0\x01\x5c\x85\x02\x87\x03\x86\x04\x83\x05\x02\xd5\x0e\x04\xc5\xc7\xc6\xc3\x00\x00\x24\x00\x00\x00\x78\x03\x00\x00\x9f\x82\xff\xff\xf8\x00\x00\x00\x00\x46\x0e\xa0\x01\x5c\x85\x02\x87\x03\x86\x04\x83\x05\x02\xd5\x0e\x04\xc5\xc7\xc6\xc3\x00\x00\x24\x00\x00\x00\xa0\x03\x00\x00\x6f\x83\xff\xff\xf8\x00\x00\x00\x00\x46\x0e\xa0\x01\x5c\x85\x02\x87\x03\x86\x04\x83\x05\x02\xd5\x0e\x04\xc5\xc7\xc6\xc3\x00\x00\x24\x00\x00\x00\xc8\x03\x00\x00\x3f\x84\xff\xff\xf8\x00\x00\x00\x00\x46\x0e\xa0\x01\x5c\x85\x02\x87\x03\x86\x04\x83\x05\x02\xd5\x0e\x04\xc5\xc7\xc6\xc3\x00\x00\x3c\x00\x00\x00\xf0\x03\x00\x00\x0f\x85\xff\xff\x1b\x02\x00\x00\x00\x41\x0e\x08\x85\x02\x41\x0e\x0c\x87\x03\x41\x0e\x10\x86\x04\x41\x0e\x14\x83\x05\x46\x0e\xc0\x01\x03\x0c\x02\x0e\x14\x41\x0e\x10\xc3\x41\x0e\x0c\xc6\x41\x0e\x08\xc7\x41\x0e\x04\xc5\x00\x00\x3c\x00\x00\x00\x30\x04\x00\x00\xea\x86\xff\xff\x57\x01\x00\x00\x00\x41\x0e\x08\x85\x02\x41\x0e\x0c\x87\x03\x41\x0e\x10\x86\x04\x41\x0e\x14\x83\x05\x46\x0e\xb0\x01\x03\x48\x01\x0e\x14\x41\x0e\x10\xc3\x41\x0e\x0c\xc6\x41\x0e\x08\xc7\x41\x0e\x04\xc5\x00\x00\x3c\x00\x00\x00\x70\x04\x00\x00\x01\x88\xff\xff\xd1\x01\x00\x00\x00\x41\x0e\x08\x85\x02\x41\x0e\x0c\x87\x03\x41\x0e\x10\x86\x04\x41\x0e\x14\x83\x05\x46\x0e\xc0\x01\x03\xc2\x01\x0e\x14\x41\x0e\x10\xc3\x41\x0e\x0c\xc6\x41\x0e\x08\xc7\x41\x0e\x04\xc5\x00\x00\x3c\x00\x00\x00\xb0\x04\x00\x00\x92\x89\xff\xff\x6e\x01\x00\x00\x00\x41\x0e\x08\x85\x02\x41\x0e\x0c\x87\x03\x41\x0e\x10\x86\x04\x41\x0e\x14\x83\x05\x46\x0e\xb0\x01\x03\x5f\x01\x0e\x14\x41\x0e\x10\xc3\x41\x0e\x0c\xc6\x41\x0e\x08\xc7\x41\x0e\x04\xc5\x00\x00\x3c\x00\x00\x00\xf0\x04\x00\x00\xc0\x8a\xff\xff\x43\x02\x00\x00\x00\x41\x0e\x08\x85\x02\x41\x0e\x0c\x87\x03\x41\x0e\x10\x86\x04\x41\x0e\x14\x83\x05\x46\x0e\xd0\x01\x03\x34\x02\x0e\x14\x41\x0e\x10\xc3\x41\x0e\x0c\xc6\x41\x0e\x08\xc7\x41\x0e\x04\xc5\x00\x00\x3c\x00\x00\x00\x30\x05\x00\x00\xc3\x8c\xff\xff\x91\x02\x00\x00\x00\x41\x0e\x08\x85\x02\x41\x0e\x0c\x87\x03\x41\x0e\x10\x86\x04\x41\x0e\x14\x83\x05\x46\x0e\xd0\x01\x03\x82\x02\x0e\x14\x41\x0e\x10\xc3\x41\x0e\x0c\xc6\x41\x0e\x08\xc7\x41\x0e\x04\xc5\x00\x00\x3c\x00\x00\x00\x70\x05\x00\x00\x14\x8f\xff\xff\x8c\x01\x00\x00\x00\x41\x0e\x08\x85\x02\x41\x0e\x0c\x87\x03\x41\x0e\x10\x86\x04\x41\x0e\x14\x83\x05\x46\x0e\xc0\x01\x03\x7d\x01\x0e\x14\x41\x0e\x10\xc3\x41\x0e\x0c\xc6\x41\x0e\x08\xc7\x41\x0e\x04\xc5\x00\x00\x3c\x00\x00\x00\xb0\x05\x00\x00\x60\x90\xff\xff\xc0\x01\x00\x00\x00\x41\x0e\x08\x85\x02\x41\x0e\x0c\x87\x03\x41\x0e\x10\x86\x04\x41\x0e\x14\x83\x05\x46\x0e\xc0\x01\x03\xb1\x01\x0e\x14\x41\x0e\x10\xc3\x41\x0e\x0c\xc6\x41\x0e\x08\xc7\x41\x0e\x04\xc5\x00\x00\x3c\x00\x00\x00\xf0\x05\x00\x00\xe0\x91\xff\xff\xca\x03\x00\x00\x00\x41\x0e\x08\x85\x02\x41\x0e\x0c\x87\x03\x41\x0e\x10\x86\x04\x41\x0e\x14\x83\x05\x46\x0e\xe0\x01\x03\xbb\x03\x0e\x14\x41\x0e\x10\xc3\x41\x0e\x0c\xc6\x41\x0e\x08\xc7\x41\x0e\x04\xc5\x00\x00\x24\x00\x00\x00\x30\x06\x00\x00\x6a\x95\xff\xff\x7b\x01\x00\x00\x00\x46\x0e\xb0\x01\x5c\x85\x02\x87\x03\x86\x04\x83\x05\x03\x58\x01\x0e\x04\xc5\xc7\xc6\xc3\x00\x3c\x00\x00\x00\x58\x06\x00\x00\xbd\x96\xff\xff\x2b\x03\x00\x00\x00\x41\x0e\x08\x85\x02\x41\x0e\x0c\x87\x03\x41\x0e\x10\x86\x04\x41\x0e\x14\x83\x05\x46\x0e\xd0\x01\x03\x1c\x03\x0e\x14\x41\x0e\x10\xc3\x41\x0e\x0c\xc6\x41\x0e\x08\xc7\x41\x0e\x04\xc5\x00\x00\x3c\x00\x00\x00\x98\x06\x00\x00\xa8\x99\xff\xff\x14\x02\x00\x00\x00\x41\x0e\x08\x85\x02\x41\x0e\x0c\x87\x03\x41\x0e\x10\x86\x04\x41\x0e\x14\x83\x05\x46\x0e\xd0\x01\x03\x05\x02\x0e\x14\x41\x0e\x10\xc3\x41\x0e\x0c\xc6\x41\x0e\x08\xc7\x41\x0e\x04\xc5\x00\x00\x3c\x00\x00\x00\xd8\x06\x00\x00\x7c\x9b\xff\xff\xa0\x01\x00\x00\x00\x41\x0e\x08\x85\x02\x41\x0e\x0c\x87\x03\x41\x0e\x10\x86\x04\x41\x0e\x14\x83\x05\x46\x0e\xc0\x01\x03\x91\x01\x0e\x14\x41\x0e\x10\xc3\x41\x0e\x0c\xc6\x41\x0e\x08\xc7\x41\x0e\x04\xc5\x00\x00\x3c\x00\x00\x00\x18\x07\x00\x00\xdc\x9c\xff\xff\x19\x02\x00\x00\x00\x41\x0e\x08\x85\x02\x41\x0e\x0c\x87\x03\x41\x0e\x10\x86\x04\x41\x0e\x14\x83\x05\x46\x0e\xd0\x01\x03\x0a\x02\x0e\x14\x41\x0e\x10\xc3\x41\x0e\x0c\xc6\x41\x0e\x08\xc7\x41\x0e\x04\xc5\x00\x00\x3c\x00\x00\x00\x58\x07\x00\x00\xb5\x9e\xff\xff\xca\x02\x00\x00\x00\x41\x0e\x08\x85\x02\x41\x0e\x0c\x87\x03\x41\x0e\x10\x86\x04\x41\x0e\x14\x83\x05\x46\x0e\xe0\x01\x03\xbb\x02\x0e\x14\x41\x0e\x10\xc3\x41\x0e\x0c\xc6\x41\x0e\x08\xc7\x41\x0e\x04\xc5\x00\x00\x24\x00\x00\x00\x98\x07\x00\x00\x3f\xa1\xff\xff\x99\x01\x00\x00\x00\x46\x0e\xc0\x01\x5c\x85\x02\x87\x03\x86\x04\x83\x05\x03\x76\x01\x0e\x04\xc5\xc7\xc6\xc3\x00\x24\x00\x00\x00\xc0\x07\x00\x00\xb0\xa2\xff\xff\x77\x01\x00\x00\x00\x46\x0e\xc0\x01\x5c\x85\x02\x87\x03\x86\x04\x83\x05\x03\x54\x01\x0e\x04\xc5\xc7\xc6\xc3\x00\x3c\x00\x00\x00\xe8\x07\x00\x00\xff\xa3\xff\xff\x88\x01\x00\x00\x00\x41\x0e\x08\x85\x02\x41\x0e\x0c\x87\x03\x41\x0e\x10\x86\x04\x41\x0e\x14\x83\x05\x46\x0e\xc0\x01\x03\x79\x01\x0e\x14\x41\x0e\x10\xc3\x41\x0e\x0c\xc6\x41\x0e\x08\xc7\x41\x0e\x04\xc5\x00\x00\x3c\x00\x00\x00\x28\x08\x00\x00\x47\xa5\xff\xff\x7c\x01\x00\x00\x00\x41\x0e\x08\x85\x02\x41\x0e\x0c\x87\x03\x41\x0e\x10\x86\x04\x41\x0e\x14\x83\x05\x46\x0e\xc0\x01\x03\x6d\x01\x0e\x14\x41\x0e\x10\xc3\x41\x0e\x0c\xc6\x41\x0e\x08\xc7\x41\x0e\x04\xc5\x00\x00\x10\x00\x00\x00\x68\x08\x00\x00\x84\xa6\xff\xff\x23\x02\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x7c\x08\x00\x00\x93\xa8\xff\xff\x04\x00\x00\x00\x00\x00\x00\x00\x3c\x00\x00\x00\x90\x08\x00\x00\x88\xa8\xff\xff\x9f\x04\x00\x00\x00\x41\x0e\x08\x85\x02\x41\x0e\x0c\x87\x03\x41\x0e\x10\x86\x04\x41\x0e\x14\x83\x05\x46\x0e\xe0\x02\x03\x90\x04\x0e\x14\x41\x0e\x10\xc3\x41\x0e\x0c\xc6\x41\x0e\x08\xc7\x41\x0e\x04\xc5\x00\x00\x2c\x00\x00\x00\xd0\x08\x00\x00\xe8\xac\xff\xff\x4c\x00\x00\x00\x00\x41\x0e\x08\x85\x02\x41\x0e\x0c\x87\x03\x41\x0e\x10\x86\x04\x02\x46\x0e\x0c\xc6\x41\x0e\x08\xc7\x41\x0e\x04\xc5\x00\x00\x00\x10\x00\x00\x00\x00\x09\x00\x00\x04\xad\xff\xff\x0c\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x14\x09\x00\x00\xfc\xac\xff\xff\x1b\x01\x00\x00\x00\x43\x0e\x20\x4c\x87\x02\x86\x03\x83\x04\x03\x0b\x01\x0e\x04\xc7\xc6\xc3\x00\x38\x00\x00\x00\x38\x09\x00\x00\xf3\xad\xff\xff\x9f\x00\x00\x00\x00\x41\x0e\x08\x85\x02\x41\x0e\x0c\x87\x03\x41\x0e\x10\x86\x04\x41\x0e\x14\x83\x05\x43\x0e\x30\x02\x93\x0e\x14\x41\x0e\x10\xc3\x41\x0e\x0c\xc6\x41\x0e\x08\xc7\x41\x0e\x04\xc5\x20\x00\x00\x00\x74\x09\x00\x00\x56\xae\xff\xff\x6b\x00\x00\x00\x00\x41\x0e\x08\x83\x02\x43\x0e\x50\x02\x65\x0e\x08\x41\x0e\x04\xc3\x00\x00\x00\x28\x00\x00\x00\x98\x09\x00\x00\x9d\xae\xff\xff\x41\x00\x00\x00\x00\x41\x0e\x08\x86\x02\x41\x0e\x0c\x83\x03\x43\x0e\x20\x79\x0e\x0c\x41\x0e\x08\xc3\x41\x0e\x04\xc6\x00\x00\x00\x3c\x00\x00\x00\xc4\x09\x00\x00\xb4\xae\xff\xff\x1e\x01\x00\x00\x00\x41\x0e\x08\x85\x02\x41\x0e\x0c\x87\x03\x41\x0e\x10\x86\x04\x41\x0e\x14\x83\x05\x46\x0e\xe0\x01\x03\x0f\x01\x0e\x14\x41\x0e\x10\xc3\x41\x0e\x0c\xc6\x41\x0e\x08\xc7\x41\x0e\x04\xc5\x00\x00\x3c\x00\x00\x00\x04\x0a\x00\x00\x94\xaf\xff\xff\xf5\x03\x00\x00\x00\x41\x0e\x08\x85\x02\x41\x0e\x0c\x87\x03\x41\x0e\x10\x86\x04\x41\x0e\x14\x83\x05\x46\x0e\xd0\x21\x03\xe6\x03\x0e\x14\x41\x0e\x10\xc3\x41\x0e\x0c\xc6\x41\x0e\x08\xc7\x41\x0e\x04\xc5\x00\x00\x3c\x00\x00\x00\x44\x0a\x00\x00\x54\xb3\xff\xff\x1e\x07\x00\x00\x00\x41\x0e\x08\x85\x02\x41\x0e\x0c\x87\x03\x41\x0e\x10\x86\x04\x41\x0e\x14\x83\x05\x46\x0e\xd0\x11\x03\x0f\x07\x0e\x14\x41\x0e\x10\xc3\x41\x0e\x0c\xc6\x41\x0e\x08\xc7\x41\x0e\x04\xc5\x00\x00\x3c\x00\x00\x00\x84\x0a\x00\x00\x32\xba\xff\xff\x1a\x02\x00\x00\x00\x41\x0e\x08\x85\x02\x41\x0e\x0c\x87\x03\x41\x0e\x10\x86\x04\x41\x0e\x14\x83\x05\x46\x0e\x80\x12\x03\x0b\x02\x0e\x14\x41\x0e\x10\xc3\x41\x0e\x0c\xc6\x41\x0e\x08\xc7\x41\x0e\x04\xc5\x00\x00\x20\x00\x00\x00\xc4\x0a\x00\x00\x0c\xbc\xff\xff\x4a\x00\x00\x00\x00\x41\x0e\x08\x83\x02\x43\x0e\x30\x02\x44\x0e\x08\x41\x0e\x04\xc3\x00\x00\x00\x24\x00\x00\x00\xe8\x0a\x00\x00\x32\xbc\xff\xff\x89\x03\x00\x00\x00\x43\x0e\x70\x50\x85\x02\x87\x03\x86\x04\x83\x05\x03\x75\x03\x0e\x04\xc5\xc7\xc6\xc3\x00\x00\x28\x00\x00\x00\x10\x0b\x00\x00\x93\xbf\xff\xff\xb2\x00\x00\x00\x00\x41\x0e\x08\x86\x02\x41\x0e\x0c\x83\x03\x43\x0e\x80\x01\x02\xaa\x0e\x0c\x41\x0e\x08\xc3\x41\x0e\x04\xc6\x00\x20\x00\x00\x00\x3c\x0b\x00\x00\x19\xc0\xff\xff\xd4\x00\x00\x00\x00\x43\x0e\x80\x01\x4c\x87\x02\x86\x03\x83\x04\x02\xc4\x0e\x04\xc7\xc6\xc3\x00\x3c\x00\x00\x00\x60\x0b\x00\x00\xd8\xc0\xff\xff\x93\x04\x00\x00\x00\x41\x0e\x08\x85\x02\x41\x0e\x0c\x87\x03\x41\x0e\x10\x86\x04\x41\x0e\x14\x83\x05\x43\x0e\x50\x03\x87\x04\x0e\x14\x41\x0e\x10\xc3\x41\x0e\x0c\xc6\x41\x0e\x08\xc7\x41\x0e\x04\xc5\x00\x00\x00\x24\x00\x00\x00\xa0\x0b\x00\x00\x2c\xc5\xff\xff\x94\x00\x00\x00\x00\x43\x0e\x30\x50\x85\x02\x87\x03\x86\x04\x83\x05\x02\x80\x0e\x04\xc5\xc7\xc6\xc3\x00\x00\x00\x24\x00\x00\x00\xc8\x0b\x00\x00\x98\xc5\xff\xff\xd1\x02\x00\x00\x00\x43\x0e\x30\x50\x85\x02\x87\x03\x86\x04\x83\x05\x03\xbd\x02\x0e\x04\xc5\xc7\xc6\xc3\x00\x00\x24\x00\x00\x00\xf0\x0b\x00\x00\x41\xc8\xff\xff\x37\x01\x00\x00\x00\x43\x0e\x30\x50\x85\x02\x87\x03\x86\x04\x83\x05\x03\x23\x01\x0e\x04\xc5\xc7\xc6\xc3\x00\x00\x3c\x00\x00\x00\x18\x0c\x00\x00\x50\xc9\xff\xff\x70\x02\x00\x00\x00\x41\x0e\x08\x85\x02\x41\x0e\x0c\x87\x03\x41\x0e\x10\x86\x04\x41\x0e\x14\x83\x05\x43\x0e\x40\x03\x64\x02\x0e\x14\x41\x0e\x10\xc3\x41\x0e\x0c\xc6\x41\x0e\x08\xc7\x41\x0e\x04\xc5\x00\x00\x00\x3c\x00\x00\x00\x58\x0c\x00\x00\x80\xcb\xff\xff\xbc\x01\x00\x00\x00\x41\x0e\x08\x85\x02\x41\x0e\x0c\x87\x03\x41\x0e\x10\x86\x04\x41\x0e\x14\x83\x05\x46\x0e\xf0\x04\x03\xad\x01\x0e\x14\x41\x0e\x10\xc3\x41\x0e\x0c\xc6\x41\x0e\x08\xc7\x41\x0e\x04\xc5\x00\x00\x20\x00\x00\x00\x98\x0c\x00\x00\xfc\xcc\xff\xff\x6e\x00\x00\x00\x00\x43\x0e\x20\x4c\x87\x02\x86\x03\x83\x04\x02\x5e\x0e\x04\xc7\xc6\xc3\x00\x00\x24\x00\x00\x00\xbc\x0c\x00\x00\x46\xcd\xff\xff\x9c\x00\x00\x00\x00\x43\x0e\x30\x50\x85\x02\x87\x03\x86\x04\x83\x05\x02\x88\x0e\x04\xc5\xc7\xc6\xc3\x00\x00\x00\x24\x00\x00\x00\xe4\x0c\x00\x00\xba\xcd\xff\xff\xeb\x00\x00\x00\x00\x43\x0e\x30\x50\x85\x02\x87\x03\x86\x04\x83\x05\x02\xd7\x0e\x04\xc5\xc7\xc6\xc3\x00\x00\x00\x20\x00\x00\x00\x0c\x0d\x00\x00\x7d\xce\xff\xff\x72\x00\x00\x00\x00\x41\x0e\x08\x83\x02\x43\x0e\x50\x02\x6c\x0e\x08\x41\x0e\x04\xc3\x00\x00\x00\x28\x00\x00\x00\x30\x0d\x00\x00\xcb\xce\xff\xff\x5e\x00\x00\x00\x00\x41\x0e\x08\x86\x02\x41\x0e\x0c\x83\x03\x43\x0e\x20\x02\x56\x0e\x0c\x41\x0e\x08\xc3\x41\x0e\x04\xc6\x00\x00\x38\x00\x00\x00\x5c\x0d\x00\x00\xfd\xce\xff\xff\x50\x00\x00\x00\x00\x41\x0e\x08\x85\x02\x41\x0e\x0c\x87\x03\x41\x0e\x10\x86\x04\x41\x0e\x14\x83\x05\x43\x0e\x30\x02\x44\x0e\x14\x41\x0e\x10\xc3\x41\x0e\x0c\xc6\x41\x0e\x08\xc7\x41\x0e\x04\xc5\x38\x00\x00\x00\x98\x0d\x00\x00\x20\xcf\xff\xff\x61\x00\x00\x00\x00\x41\x0e\x08\x85\x02\x41\x0e\x0c\x87\x03\x41\x0e\x10\x86\x04\x41\x0e\x14\x83\x05\x4e\x0e\x30\x02\x4a\x0e\x14\x41\x0e\x10\xc3\x41\x0e\x0c\xc6\x41\x0e\x08\xc7\x41\x0e\x04\xc5\x10\x00\x00\x00\xd4\x0d\x00\x00\x54\xcf\xff\xff\x02\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\xe8\x0d\x00\x00\x50\xcf\xff\xff\x14\x00\x00\x00\x00\x41\x0e\x08\x83\x02\x4e\x0e\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3c\x36\x05\x08\xa8\x36\x05\x08\xd8\x36\x05\x08\xab\x34\x05\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x8a\x3a\x05\x08\x02\x00\x00\x00\x16\x39\x05\x08\x03\x00\x00\x00\x24\x39\x05\x08\x04\x00\x00\x00\x34\x39\x05\x08\x05\x00\x00\x00\x40\x39\x05\x08\x06\x00\x00\x00\x50\x39\x05\x08\x07\x00\x00\x00\x62\x39\x05\x08\x08\x00\x00\x00\x8c\x3e\x05\x08\x09\x00\x00\x00\x39\x3b\x05\x08\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x10\x00\x00\x00\x0c\x00\x00\x00\x74\x8a\x04\x08\x0d\x00\x00\x00\xbc\x22\x05\x08\xf5\xfe\xff\x6f\xac\x81\x04\x08\x05\x00\x00\x00\x6c\x85\x04\x08\x06\x00\x00\x00\xdc\x81\x04\x08\x0a\x00\x00\x00\x66\x02\x00\x00\x0b\x00\x00\x00\x10\x00\x00\x00\x15\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\xf4\x6f\x05\x08\x02\x00\x00\x00\x90\x01\x00\x00\x14\x00\x00\x00\x11\x00\x00\x00\x17\x00\x00\x00\xe4\x88\x04\x08\x11\x00\x00\x00\xb4\x88\x04\x08\x12\x00\x00\x00\x30\x00\x00\x00\x13\x00\x00\x00\x08\x00\x00\x00\xfe\xff\xff\x6f\x44\x88\x04\x08\xff\xff\xff\x6f\x01\x00\x00\x00\xf0\xff\xff\x6f\xd2\x87\x04\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x6f\x05\x08\x00\x00\x00\x00\x00\x00\x00\x00\xc6\x8a\x04\x08\xd6\x8a\x04\x08\xe6\x8a\x04\x08\xf6\x8a\x04\x08\x06\x8b\x04\x08\x16\x8b\x04\x08\x26\x8b\x04\x08\x36\x8b\x04\x08\x46\x8b\x04\x08\x56\x8b\x04\x08\x66\x8b\x04\x08\x76\x8b\x04\x08\x86\x8b\x04\x08\x96\x8b\x04\x08\xa6\x8b\x04\x08\xb6\x8b\x04\x08\xc6\x8b\x04\x08\xd6\x8b\x04\x08\xe6\x8b\x04\x08\xf6\x8b\x04\x08\x06\x8c\x04\x08\x16\x8c\x04\x08\x26\x8c\x04\x08\x36\x8c\x04\x08\x46\x8c\x04\x08\x56\x8c\x04\x08\x66\x8c\x04\x08\x76\x8c\x04\x08\x86\x8c\x04\x08\x96\x8c\x04\x08\xa6\x8c\x04\x08\xb6\x8c\x04\x08\xc6\x8c\x04\x08\xd6\x8c\x04\x08\xe6\x8c\x04\x08\xf6\x8c\x04\x08\x06\x8d\x04\x08\x16\x8d\x04\x08\x26\x8d\x04\x08\x36\x8d\x04\x08\x46\x8d\x04\x08\x56\x8d\x04\x08\x66\x8d\x04\x08\x76\x8d\x04\x08\x86\x8d\x04\x08\x96\x8d\x04\x08\xa6\x8d\x04\x08\xb6\x8d\x04\x08\xc6\x8d\x04\x08\xd6\x8d\x04\x08\x00\x00\x00\x00\x00\x00\x00\x00\x47\x43\x43\x3a\x20\x28\x55\x62\x75\x6e\x74\x75\x2f\x4c\x69\x6e\x61\x72\x6f\x20\x34\x2e\x36\x2e\x33\x2d\x31\x75\x62\x75\x6e\x74\x75\x35\x29\x20\x34\x2e\x36\x2e\x33\x00\x00\x2e\x73\x79\x6d\x74\x61\x62\x00\x2e\x73\x74\x72\x74\x61\x62\x00\x2e\x73\x68\x73\x74\x72\x74\x61\x62\x00\x2e\x69\x6e\x74\x65\x72\x70\x00\x2e\x6e\x6f\x74\x65\x2e\x41\x42\x49\x2d\x74\x61\x67\x00\x2e\x6e\x6f\x74\x65\x2e\x67\x6e\x75\x2e\x62\x75\x69\x6c\x64\x2d\x69\x64\x00\x2e\x67\x6e\x75\x2e\x68\x61\x73\x68\x00\x2e\x64\x79\x6e\x73\x79\x6d\x00\x2e\x64\x79\x6e\x73\x74\x72\x00\x2e\x67\x6e\x75\x2e\x76\x65\x72\x73\x69\x6f\x6e\x00\x2e\x67\x6e\x75\x2e\x76\x65\x72\x73\x69\x6f\x6e\x5f\x72\x00\x2e\x72\x65\x6c\x2e\x64\x79\x6e\x00\x2e\x72\x65\x6c\x2e\x70\x6c\x74\x00\x2e\x69\x6e\x69\x74\x00\x2e\x74\x65\x78\x74\x00\x2e\x66\x69\x6e\x69\x00\x2e\x72\x6f\x64\x61\x74\x61\x00\x2e\x65\x68\x5f\x66\x72\x61\x6d\x65\x5f\x68\x64\x72\x00\x2e\x65\x68\x5f\x66\x72\x61\x6d\x65\x00\x2e\x63\x74\x6f\x72\x73\x00\x2e\x64\x74\x6f\x72\x73\x00\x2e\x6a\x63\x72\x00\x2e\x64\x61\x74\x61\x2e\x72\x65\x6c\x2e\x72\x6f\x00\x2e\x64\x79\x6e\x61\x6d\x69\x63\x00\x2e\x67\x6f\x74\x00\x2e\x67\x6f\x74\x2e\x70\x6c\x74\x00\x2e\x64\x61\x74\x61\x00\x2e\x62\x73\x73\x00\x2e\x63\x6f\x6d\x6d\x65\x6e\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x54\x81\x04\x08\x54\x01\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x07\x00\x00\x00\x02\x00\x00\x00\x68\x81\x04\x08\x68\x01\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x31\x00\x00\x00\x07\x00\x00\x00\x02\x00\x00\x00\x88\x81\x04\x08\x88\x01\x00\x00\x24\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x44\x00\x00\x00\xf6\xff\xff\x6f\x02\x00\x00\x00\xac\x81\x04\x08\xac\x01\x00\x00\x30\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x04\x00\x00\x00\x4e\x00\x00\x00\x0b\x00\x00\x00\x02\x00\x00\x00\xdc\x81\x04\x08\xdc\x01\x00\x00\x90\x03\x00\x00\x06\x00\x00\x00\x01\x00\x00\x00\x04\x00\x00\x00\x10\x00\x00\x00\x56\x00\x00\x00\x03\x00\x00\x00\x02\x00\x00\x00\x6c\x85\x04\x08\x6c\x05\x00\x00\x66\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x5e\x00\x00\x00\xff\xff\xff\x6f\x02\x00\x00\x00\xd2\x87\x04\x08\xd2\x07\x00\x00\x72\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x6b\x00\x00\x00\xfe\xff\xff\x6f\x02\x00\x00\x00\x44\x88\x04\x08\x44\x08\x00\x00\x70\x00\x00\x00\x06\x00\x00\x00\x01\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x7a\x00\x00\x00\x09\x00\x00\x00\x02\x00\x00\x00\xb4\x88\x04\x08\xb4\x08\x00\x00\x30\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x08\x00\x00\x00\x83\x00\x00\x00\x09\x00\x00\x00\x02\x00\x00\x00\xe4\x88\x04\x08\xe4\x08\x00\x00\x90\x01\x00\x00\x05\x00\x00\x00\x0c\x00\x00\x00\x04\x00\x00\x00\x08\x00\x00\x00\x8c\x00\x00\x00\x01\x00\x00\x00\x06\x00\x00\x00\x74\x8a\x04\x08\x74\x0a\x00\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x87\x00\x00\x00\x01\x00\x00\x00\x06\x00\x00\x00\xb0\x8a\x04\x08\xb0\x0a\x00\x00\x30\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x04\x00\x00\x00\x92\x00\x00\x00\x01\x00\x00\x00\x06\x00\x00\x00\xe0\x8d\x04\x08\xe0\x0d\x00\x00\xdc\x94\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x98\x00\x00\x00\x01\x00\x00\x00\x06\x00\x00\x00\xbc\x22\x05\x08\xbc\xa2\x00\x00\x1a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x9e\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\xe0\x22\x05\x08\xe0\xa2\x00\x00\xff\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\xa6\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\xe0\x42\x05\x08\xe0\xc2\x00\x00\x54\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\xb4\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x34\x45\x05\x08\x34\xc5\x00\x00\x04\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\xbe\x00\x00\x00\x01\x00\x00\x00\x03\x00\x00\x00\x7c\x6e\x05\x08\x7c\xde\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\xc5\x00\x00\x00\x01\x00\x00\x00\x03\x00\x00\x00\x84\x6e\x05\x08\x84\xde\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\xcc\x00\x00\x00\x01\x00\x00\x00\x03\x00\x00\x00\x8c\x6e\x05\x08\x8c\xde\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\xd1\x00\x00\x00\x01\x00\x00\x00\x03\x00\x00\x00\xa0\x6e\x05\x08\xa0\xde\x00\x00\x70\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\xde\x00\x00\x00\x06\x00\x00\x00\x03\x00\x00\x00\x10\x6f\x05\x08\x10\xdf\x00\x00\xc8\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x08\x00\x00\x00\xe7\x00\x00\x00\x01\x00\x00\x00\x03\x00\x00\x00\xd8\x6f\x05\x08\xd8\xdf\x00\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x04\x00\x00\x00\xec\x00\x00\x00\x01\x00\x00\x00\x03\x00\x00\x00\xf4\x6f\x05\x08\xf4\xdf\x00\x00\xd4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x04\x00\x00\x00\xf5\x00\x00\x00\x01\x00\x00\x00\x03\x00\x00\x00\xc8\x70\x05\x08\xc8\xe0\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\xfb\x00\x00\x00\x08\x00\x00\x00\x03\x00\x00\x00\xd0\x70\x05\x08\xd0\xe0\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x01\x00\x00\x00\x30\x00\x00\x00\x00\x00\x00\x00\xd0\xe0\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x11\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfa\xe0\x00\x00\x09\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdc\xe6\x00\x00\x10\x0d\x00\x00\x1e\x00\x00\x00\x55\x00\x00\x00\x04\x00\x00\x00\x10\x00\x00\x00\x09\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xec\xf3\x00\x00\xe7\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x81\x04\x08\x00\x00\x00\x00\x03\x00\x01\x00\x00\x00\x00\x00\x68\x81\x04\x08\x00\x00\x00\x00\x03\x00\x02\x00\x00\x00\x00\x00\x88\x81\x04\x08\x00\x00\x00\x00\x03\x00\x03\x00\x00\x00\x00\x00\xac\x81\x04\x08\x00\x00\x00\x00\x03\x00\x04\x00\x00\x00\x00\x00\xdc\x81\x04\x08\x00\x00\x00\x00\x03\x00\x05\x00\x00\x00\x00\x00\x6c\x85\x04\x08\x00\x00\x00\x00\x03\x00\x06\x00\x00\x00\x00\x00\xd2\x87\x04\x08\x00\x00\x00\x00\x03\x00\x07\x00\x00\x00\x00\x00\x44\x88\x04\x08\x00\x00\x00\x00\x03\x00\x08\x00\x00\x00\x00\x00\xb4\x88\x04\x08\x00\x00\x00\x00\x03\x00\x09\x00\x00\x00\x00\x00\xe4\x88\x04\x08\x00\x00\x00\x00\x03\x00\x0a\x00\x00\x00\x00\x00\x74\x8a\x04\x08\x00\x00\x00\x00\x03\x00\x0b\x00\x00\x00\x00\x00\xb0\x8a\x04\x08\x00\x00\x00\x00\x03\x00\x0c\x00\x00\x00\x00\x00\xe0\x8d\x04\x08\x00\x00\x00\x00\x03\x00\x0d\x00\x00\x00\x00\x00\xbc\x22\x05\x08\x00\x00\x00\x00\x03\x00\x0e\x00\x00\x00\x00\x00\xe0\x22\x05\x08\x00\x00\x00\x00\x03\x00\x0f\x00\x00\x00\x00\x00\xe0\x42\x05\x08\x00\x00\x00\x00\x03\x00\x10\x00\x00\x00\x00\x00\x34\x45\x05\x08\x00\x00\x00\x00\x03\x00\x11\x00\x00\x00\x00\x00\x7c\x6e\x05\x08\x00\x00\x00\x00\x03\x00\x12\x00\x00\x00\x00\x00\x84\x6e\x05\x08\x00\x00\x00\x00\x03\x00\x13\x00\x00\x00\x00\x00\x8c\x6e\x05\x08\x00\x00\x00\x00\x03\x00\x14\x00\x00\x00\x00\x00\xa0\x6e\x05\x08\x00\x00\x00\x00\x03\x00\x15\x00\x00\x00\x00\x00\x10\x6f\x05\x08\x00\x00\x00\x00\x03\x00\x16\x00\x00\x00\x00\x00\xd8\x6f\x05\x08\x00\x00\x00\x00\x03\x00\x17\x00\x00\x00\x00\x00\xf4\x6f\x05\x08\x00\x00\x00\x00\x03\x00\x18\x00\x00\x00\x00\x00\xc8\x70\x05\x08\x00\x00\x00\x00\x03\x00\x19\x00\x00\x00\x00\x00\xd0\x70\x05\x08\x00\x00\x00\x00\x03\x00\x1a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x1b\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\xf1\xff\x0c\x00\x00\x00\x7c\x6e\x05\x08\x00\x00\x00\x00\x01\x00\x12\x00\x1a\x00\x00\x00\x84\x6e\x05\x08\x00\x00\x00\x00\x01\x00\x13\x00\x28\x00\x00\x00\x8c\x6e\x05\x08\x00\x00\x00\x00\x01\x00\x14\x00\x35\x00\x00\x00\x10\x8e\x04\x08\x00\x00\x00\x00\x02\x00\x0d\x00\x4b\x00\x00\x00\xd0\x70\x05\x08\x01\x00\x00\x00\x01\x00\x1a\x00\x5a\x00\x00\x00\xd4\x70\x05\x08\x04\x00\x00\x00\x01\x00\x1a\x00\x68\x00\x00\x00\x70\x8e\x04\x08\x00\x00\x00\x00\x02\x00\x0d\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\xf1\xff\x74\x00\x00\x00\x80\x6e\x05\x08\x00\x00\x00\x00\x01\x00\x12\x00\x81\x00\x00\x00\x34\x53\x05\x08\x00\x00\x00\x00\x01\x00\x11\x00\x8f\x00\x00\x00\x8c\x6e\x05\x08\x00\x00\x00\x00\x01\x00\x14\x00\x9b\x00\x00\x00\x90\x22\x05\x08\x00\x00\x00\x00\x02\x00\x0d\x00\xb1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\xf1\xff\xb9\x00\x00\x00\xa0\x8e\x04\x08\x46\x03\x00\x00\x02\x00\x0d\x00\xc6\x00\x00\x00\xde\x33\x05\x08\x04\x00\x00\x00\x01\x00\x0f\x00\xd5\x00\x00\x00\xe2\x33\x05\x08\x04\x00\x00\x00\x01\x00\x0f\x00\xe4\x00\x00\x00\xa9\x92\x04\x08\x9e\x03\x00\x00\x02\x00\x0d\x00\xf7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\xf1\xff\x03\x01\x00\x00\x90\xaf\x04\x08\xf0\x00\x00\x00\x02\x00\x0d\x00\x12\x01\x00\x00\xa0\x6e\x05\x08\x14\x00\x00\x00\x01\x00\x15\x00\x22\x01\x00\x00\x20\x37\x05\x08\x4d\x00\x00\x00\x01\x00\x0f\x00\x35\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\xf1\xff\x44\x01\x00\x00\x20\xca\x04\x08\x37\x00\x00\x00\x02\x00\x0d\x00\x4d\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\xf1\xff\x5a\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\xf1\xff\x6c\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\xf1\xff\x7f\x01\x00\x00\xf0\xfa\x04\x08\x4c\x00\x00\x00\x02\x00\x0d\x00\x85\x01\x00\x00\x3c\xfb\x04\x08\x0c\x00\x00\x00\x02\x00\x0d\x00\x8c\x01\x00\x00\x48\xfb\x04\x08\x1b\x01\x00\x00\x02\x00\x0d\x00\x91\x01\x00\x00\x63\xfc\x04\x08\x9f\x00\x00\x00\x02\x00\x0d\x00\x9a\x01\x00\x00\xc0\x6e\x05\x08\x50\x00\x00\x00\x01\x00\x15\x00\xa3\x01\x00\x00\x53\xfc\x04\x08\x00\x00\x00\x00\x00\x00\x0d\x00\xa8\x01\x00\x00\x9b\xfb\x04\x08\x00\x00\x00\x00\x00\x00\x0d\x00\xad\x01\x00\x00\xb8\xfb\x04\x08\x00\x00\x00\x00\x00\x00\x0d\x00\xb2\x01\x00\x00\xc8\xfb\x04\x08\x00\x00\x00\x00\x00\x00\x0d\x00\xb7\x01\x00\x00\xf3\xfb\x04\x08\x00\x00\x00\x00\x00\x00\x0d\x00\xbc\x01\x00\x00\x00\xfc\x04\x08\x00\x00\x00\x00\x00\x00\x0d\x00\xc1\x01\x00\x00\x1a\xfc\x04\x08\x00\x00\x00\x00\x00\x00\x0d\x00\xc6\x01\x00\x00\x29\xfc\x04\x08\x00\x00\x00\x00\x00\x00\x0d\x00\xcb\x01\x00\x00\x49\xfc\x04\x08\x00\x00\x00\x00\x00\x00\x0d\x00\xd0\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\xf1\xff\xde\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\xf1\xff\xea\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\xf1\xff\xf5\x01\x00\x00\xee\x09\x05\x08\x1a\x02\x00\x00\x02\x00\x0d\x00\xff\x01\x00\x00\x08\x0c\x05\x08\x4a\x00\x00\x00\x02\x00\x0d\x00\x09\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\xf1\xff\x13\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\xf1\xff\x24\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\xf1\xff\x2f\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\xf1\xff\x40\x02\x00\x00\xcc\x1e\x05\x08\x6e\x00\x00\x00\x02\x00\x0d\x00\x58\x02\x00\x00\x3a\x1f\x05\x08\x9c\x00\x00\x00\x02\x00\x0d\x00\x6f\x02\x00\x00\xd6\x1f\x05\x08\xeb\x00\x00\x00\x02\x00\x0d\x00\x85\x02\x00\x00\x7c\x6e\x05\x08\x00\x00\x00\x00\x00\x00\x12\x00\x96\x02\x00\x00\x10\x6f\x05\x08\x00\x00\x00\x00\x01\x00\x16\x00\x9f\x02\x00\x00\x7c\x6e\x05\x08\x00\x00\x00\x00\x00\x00\x12\x00\xb2\x02\x00\x00\xf4\x6f\x05\x08\x00\x00\x00\x00\x01\x00\x18\x00\xc8\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\xde\x02\x00\x00\x04\x16\x05\x08\x94\x00\x00\x00\x12\x00\x0d\x00\xea\x02\x00\x00\x60\x22\x05\x08\x02\x00\x00\x00\x12\x00\x0d\x00\xfa\x02\x00\x00\x48\xdb\x04\x08\xc0\x01\x00\x00\x12\x00\x0d\x00\x16\x03\x00\x00\xd0\x02\x05\x08\x1e\x07\x00\x00\x12\x00\x0d\x00\x26\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x42\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x54\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x66\x03\x00\x00\x83\xaf\x04\x08\x00\x00\x00\x00\x12\x02\x0d\x00\x7d\x03\x00\x00\x02\xfd\x04\x08\x6b\x00\x00\x00\x12\x00\x0d\x00\x8e\x03\x00\x00\x6d\xfd\x04\x08\x41\x00\x00\x00\x12\x00\x0d\x00\x9e\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\xae\x03\x00\x00\xc8\x70\x05\x08\x00\x00\x00\x00\x20\x00\x19\x00\xb9\x03\x00\x00\x8d\x10\x05\x08\xd4\x00\x00\x00\x12\x00\x0d\x00\xca\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11\x00\x00\x00\xdc\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\xef\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\xff\x03\x00\x00\xe3\xc2\x04\x08\xfd\x05\x00\x00\x12\x00\x0d\x00\x10\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x22\x04\x00\x00\xd0\x70\x05\x08\x00\x00\x00\x00\x10\x00\xf1\xff\x29\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x39\x04\x00\x00\x80\xb0\x04\x08\x5e\x00\x00\x00\x12\x00\x0d\x00\x47\x04\x00\x00\x6d\xbe\x04\x08\x30\x00\x00\x00\x12\x00\x0d\x00\x57\x04\x00\x00\xe6\x91\x04\x08\xc3\x00\x00\x00\x12\x00\x0d\x00\x60\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x72\x04\x00\x00\xa7\xf2\x04\x08\x7c\x01\x00\x00\x12\x00\x0d\x00\x89\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x9b\x04\x00\x00\xc1\x20\x05\x08\x72\x00\x00\x00\x12\x00\x0d\x00\xaa\x04\x00\x00\xbc\x22\x05\x08\x00\x00\x00\x00\x12\x00\x0e\x00\xb0\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\xc1\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\xd5\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\xf1\x04\x00\x00\x6a\xb4\x04\x08\x03\x0a\x00\x00\x12\x00\x0d\x00\xfe\x04\x00\x00\x78\xe5\x04\x08\x14\x02\x00\x00\x12\x00\x0d\x00\x19\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x30\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11\x00\x00\x00\x47\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x5f\x05\x00\x00\x3f\xcd\x04\x08\xf8\x00\x00\x00\x12\x00\x0d\x00\x7c\x05\x00\x00\x50\xf6\x04\x08\x9f\x04\x00\x00\x12\x00\x0d\x00\x8c\x05\x00\x00\x2b\xd7\x04\x08\x91\x02\x00\x00\x12\x00\x0d\x00\xa3\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\xb9\x05\x00\x00\x8c\xe7\x04\x08\xa0\x01\x00\x00\x12\x00\x0d\x00\xd0\x05\x00\x00\x57\xca\x04\x08\xf8\x00\x00\x00\x12\x00\x0d\x00\xe7\x05\x00\x00\xbc\xd9\x04\x08\x8c\x01\x00\x00\x12\x00\x0d\x00\xfe\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x10\x06\x00\x00\x4d\xe2\x04\x08\x2b\x03\x00\x00\x12\x00\x0d\x00\x31\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x41\x06\x00\x00\xd2\xe0\x04\x08\x7b\x01\x00\x00\x12\x00\x0d\x00\x64\x06\x00\x00\x70\x11\x05\x08\x93\x04\x00\x00\x12\x00\x0d\x00\x6d\x06\x00\x00\x88\x6e\x05\x08\x00\x00\x00\x00\x11\x02\x13\x00\x7a\x06\x00\x00\xc0\xc1\x04\x08\x82\x00\x00\x00\x12\x00\x0d\x00\x87\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\xa1\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\xb4\x06\x00\x00\x37\xce\x04\x08\x1b\x02\x00\x00\x12\x00\x0d\x00\xc7\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\xd9\x06\x00\x00\xc8\x70\x05\x08\x00\x00\x00\x00\x10\x00\x19\x00\xe6\x06\x00\x00\x47\xf6\x04\x08\x00\x00\x00\x00\x12\x02\x0d\x00\xfd\x06\x00\x00\x9d\xbe\x04\x08\x23\x03\x00\x00\x12\x00\x0d\x00\x09\x07\x00\x00\x24\xf4\x04\x08\x23\x02\x00\x00\x12\x00\x0d\x00\x16\x07\x00\x00\x18\xb4\x04\x08\x52\x00\x00\x00\x12\x00\x0d\x00\x28\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x42\x07\x00\x00\x91\x21\x05\x08\x50\x00\x00\x00\x12\x00\x0d\x00\x5c\x07\x00\x00\x69\x19\x05\x08\x37\x01\x00\x00\x12\x00\x0d\x00\x64\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x73\x07\x00\x00\xcc\x70\x05\x08\x00\x00\x00\x00\x11\x02\x19\x00\x80\x07\x00\x00\xe4\x22\x05\x08\x04\x00\x00\x00\x11\x00\x0f\x00\x8f\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\xa2\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\xb4\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\xd1\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\xe2\x07\x00\x00\x33\x21\x05\x08\x5e\x00\x00\x00\x12\x00\x0d\x00\xf5\x07\x00\x00\x52\x0c\x05\x08\x89\x03\x00\x00\x12\x00\x0d\x00\xfe\x07\x00\x00\x10\x1d\x05\x08\xbc\x01\x00\x00\x12\x00\x0d\x00\x0d\x08\x00\x00\xb0\xfd\x04\x08\x1e\x01\x00\x00\x12\x00\x0d\x00\x19\x08\x00\x00\xf0\x21\x05\x08\x61\x00\x00\x00\x12\x00\x0d\x00\x29\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x39\x08\x00\x00\x42\xc2\x04\x08\xa1\x00\x00\x00\x12\x00\x0d\x00\x4d\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x61\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x7b\x08\x00\x00\xd8\x70\x05\x08\x00\x00\x00\x00\x10\x00\xf1\xff\x80\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x9c\x08\x00\x00\xa0\x1a\x05\x08\x70\x02\x00\x00\x12\x00\x0d\x00\xa5\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\xb8\x08\x00\x00\xe0\x8d\x04\x08\x00\x00\x00\x00\x12\x00\x0d\x00\xbf\x08\x00\x00\xe0\x22\x05\x08\x04\x00\x00\x00\x11\x00\x0f\x00\xc6\x08\x00\x00\x7a\xd3\x04\x08\x6e\x01\x00\x00\x12\x00\x0d\x00\xe0\x08\x00\x00\x4f\xcb\x04\x08\xf8\x00\x00\x00\x12\x00\x0d\x00\xfb\x08\x00\x00\xd0\xfe\x04\x08\xf5\x03\x00\x00\x12\x00\x0d\x00\x13\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x2b\x09\x00\x00\xa9\xd1\x04\x08\xd1\x01\x00\x00\x12\x00\x0d\x00\x48\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x5f\x09\x00\x00\x45\xeb\x04\x08\xca\x02\x00\x00\x12\x00\x0d\x00\x6f\x09\x00\x00\x2c\xe9\x04\x08\x19\x02\x00\x00\x12\x00\x0d\x00\x8e\x09\x00\x00\x08\xdd\x04\x08\xca\x03\x00\x00\x12\x00\x0d\x00\xae\x09\x00\x00\xd0\x70\x05\x08\x00\x00\x00\x00\x10\x00\xf1\xff\xba\x09\x00\x00\x47\x96\x04\x08\x3c\x19\x00\x00\x12\x00\x0d\x00\xbf\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\xd9\x09\x00\x00\x1f\xf1\x04\x08\x88\x01\x00\x00\x12\x00\x0d\x00\xf2\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x04\x0a\x00\x00\xdb\x0f\x05\x08\xb2\x00\x00\x00\x12\x00\x0d\x00\x0d\x0a\x00\x00\x47\xcc\x04\x08\xf8\x00\x00\x00\x12\x00\x0d\x00\x26\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x3e\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x50\x0a\x00\x00\xde\xb0\x04\x08\x3a\x03\x00\x00\x12\x00\x0d\x00\x63\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x77\x0a\x00\x00\x70\x22\x05\x08\x14\x00\x00\x00\x12\x02\x0d\x00\x8e\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\xa5\x0a\x00\x00\xa8\xef\x04\x08\x77\x01\x00\x00\x12\x00\x0d\x00\xb8\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\xca\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\xe1\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\xfc\x0a\x00\x00\x98\x16\x05\x08\xd1\x02\x00\x00\x12\x00\x0d\x00\x06\x0b\x00\x00\xe8\xd4\x04\x08\x43\x02\x00\x00\x12\x00\x0d\x00\x1a\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x2f\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x41\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x54\x0b\x00\x00\x52\xd0\x04\x08\x57\x01\x00\x00\x12\x00\x0d\x00\x6f\x0b\x00\x00\x0f\xee\x04\x08\x99\x01\x00\x00\x12\x00\x0d\x00\x82\x0b\x00\x00\x74\x8a\x04\x08\x00\x00\x00\x00\x12\x00\x0b\x00\x88\x0b\x00\x00\xe0\xc8\x04\x08\x31\x01\x00\x00\x12\x00\x0d\x00\x9b\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\xac\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\xc5\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\xd5\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x00\x63\x72\x74\x73\x74\x75\x66\x66\x2e\x63\x00\x5f\x5f\x43\x54\x4f\x52\x5f\x4c\x49\x53\x54\x5f\x5f\x00\x5f\x5f\x44\x54\x4f\x52\x5f\x4c\x49\x53\x54\x5f\x5f\x00\x5f\x5f\x4a\x43\x52\x5f\x4c\x49\x53\x54\x5f\x5f\x00\x5f\x5f\x64\x6f\x5f\x67\x6c\x6f\x62\x61\x6c\x5f\x64\x74\x6f\x72\x73\x5f\x61\x75\x78\x00\x63\x6f\x6d\x70\x6c\x65\x74\x65\x64\x2e\x36\x31\x35\x39\x00\x64\x74\x6f\x72\x5f\x69\x64\x78\x2e\x36\x31\x36\x31\x00\x66\x72\x61\x6d\x65\x5f\x64\x75\x6d\x6d\x79\x00\x5f\x5f\x43\x54\x4f\x52\x5f\x45\x4e\x44\x5f\x5f\x00\x5f\x5f\x46\x52\x41\x4d\x45\x5f\x45\x4e\x44\x5f\x5f\x00\x5f\x5f\x4a\x43\x52\x5f\x45\x4e\x44\x5f\x5f\x00\x5f\x5f\x64\x6f\x5f\x67\x6c\x6f\x62\x61\x6c\x5f\x63\x74\x6f\x72\x73\x5f\x61\x75\x78\x00\x75\x70\x6e\x70\x63\x2e\x63\x00\x44\x69\x73\x70\x6c\x61\x79\x49\x6e\x66\x6f\x73\x00\x70\x72\x6f\x74\x6f\x5f\x74\x63\x70\x2e\x32\x39\x32\x32\x00\x70\x72\x6f\x74\x6f\x5f\x75\x64\x70\x2e\x32\x39\x32\x33\x00\x53\x65\x74\x52\x65\x64\x69\x72\x65\x63\x74\x41\x6e\x64\x54\x65\x73\x74\x00\x6d\x69\x6e\x69\x75\x70\x6e\x70\x63\x2e\x63\x00\x75\x72\x6c\x5f\x63\x70\x79\x5f\x6f\x72\x5f\x63\x61\x74\x00\x64\x65\x76\x69\x63\x65\x4c\x69\x73\x74\x2e\x34\x34\x35\x36\x00\x4d\x53\x65\x61\x72\x63\x68\x4d\x73\x67\x46\x6d\x74\x2e\x34\x34\x35\x35\x00\x75\x70\x6e\x70\x63\x6f\x6d\x6d\x61\x6e\x64\x73\x2e\x63\x00\x6d\x79\x5f\x61\x74\x6f\x75\x69\x00\x75\x70\x6e\x70\x65\x72\x72\x6f\x72\x73\x2e\x63\x00\x63\x6f\x6e\x6e\x65\x63\x74\x68\x6f\x73\x74\x70\x6f\x72\x74\x2e\x63\x00\x70\x6f\x72\x74\x6c\x69\x73\x74\x69\x6e\x67\x70\x61\x72\x73\x65\x2e\x63\x00\x61\x74\x6f\x75\x69\x00\x65\x6e\x64\x65\x6c\x74\x00\x64\x61\x74\x61\x00\x73\x74\x61\x72\x74\x65\x6c\x74\x00\x65\x6c\x65\x6d\x65\x6e\x74\x73\x00\x2e\x4c\x31\x31\x00\x2e\x4c\x31\x33\x00\x2e\x4c\x31\x34\x00\x2e\x4c\x31\x35\x00\x2e\x4c\x31\x36\x00\x2e\x4c\x31\x37\x00\x2e\x4c\x31\x38\x00\x2e\x4c\x31\x39\x00\x2e\x4c\x32\x30\x00\x72\x65\x63\x65\x69\x76\x65\x64\x61\x74\x61\x2e\x63\x00\x6d\x69\x6e\x69\x73\x73\x64\x70\x63\x2e\x63\x00\x6d\x69\x6e\x69\x77\x67\x65\x74\x2e\x63\x00\x6d\x69\x6e\x69\x77\x67\x65\x74\x33\x00\x6d\x69\x6e\x69\x77\x67\x65\x74\x32\x00\x6d\x69\x6e\x69\x78\x6d\x6c\x2e\x63\x00\x69\x67\x64\x5f\x64\x65\x73\x63\x5f\x70\x61\x72\x73\x65\x2e\x63\x00\x6d\x69\x6e\x69\x73\x6f\x61\x70\x2e\x63\x00\x75\x70\x6e\x70\x72\x65\x70\x6c\x79\x70\x61\x72\x73\x65\x2e\x63\x00\x4e\x61\x6d\x65\x56\x61\x6c\x75\x65\x50\x61\x72\x73\x65\x72\x53\x74\x61\x72\x74\x45\x6c\x74\x00\x4e\x61\x6d\x65\x56\x61\x6c\x75\x65\x50\x61\x72\x73\x65\x72\x47\x65\x74\x44\x61\x74\x61\x00\x4e\x61\x6d\x65\x56\x61\x6c\x75\x65\x50\x61\x72\x73\x65\x72\x45\x6e\x64\x45\x6c\x74\x00\x5f\x5f\x69\x6e\x69\x74\x5f\x61\x72\x72\x61\x79\x5f\x65\x6e\x64\x00\x5f\x44\x59\x4e\x41\x4d\x49\x43\x00\x5f\x5f\x69\x6e\x69\x74\x5f\x61\x72\x72\x61\x79\x5f\x73\x74\x61\x72\x74\x00\x5f\x47\x4c\x4f\x42\x41\x4c\x5f\x4f\x46\x46\x53\x45\x54\x5f\x54\x41\x42\x4c\x45\x5f\x00\x73\x65\x74\x73\x6f\x63\x6b\x6f\x70\x74\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x30\x00\x49\x47\x44\x73\x74\x61\x72\x74\x65\x6c\x74\x00\x5f\x5f\x6c\x69\x62\x63\x5f\x63\x73\x75\x5f\x66\x69\x6e\x69\x00\x55\x50\x4e\x50\x5f\x44\x65\x6c\x65\x74\x65\x50\x6f\x72\x74\x4d\x61\x70\x70\x69\x6e\x67\x52\x61\x6e\x67\x65\x00\x67\x65\x74\x48\x54\x54\x50\x52\x65\x73\x70\x6f\x6e\x73\x65\x00\x5f\x5f\x73\x6e\x70\x72\x69\x6e\x74\x66\x5f\x63\x68\x6b\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x33\x2e\x34\x00\x73\x74\x72\x73\x74\x72\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x30\x00\x73\x74\x72\x63\x6d\x70\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x30\x00\x5f\x5f\x69\x36\x38\x36\x2e\x67\x65\x74\x5f\x70\x63\x5f\x74\x68\x75\x6e\x6b\x2e\x62\x78\x00\x50\x61\x72\x73\x65\x50\x6f\x72\x74\x4c\x69\x73\x74\x69\x6e\x67\x00\x46\x72\x65\x65\x50\x6f\x72\x74\x4c\x69\x73\x74\x69\x6e\x67\x00\x72\x65\x61\x64\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x30\x00\x64\x61\x74\x61\x5f\x73\x74\x61\x72\x74\x00\x6d\x69\x6e\x69\x77\x67\x65\x74\x5f\x67\x65\x74\x61\x64\x64\x72\x00\x73\x74\x64\x65\x72\x72\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x30\x00\x6d\x65\x6d\x6d\x6f\x76\x65\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x30\x00\x66\x72\x65\x65\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x30\x00\x55\x50\x4e\x50\x5f\x47\x65\x74\x56\x61\x6c\x69\x64\x49\x47\x44\x00\x6d\x65\x6d\x63\x70\x79\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x30\x00\x5f\x65\x64\x61\x74\x61\x00\x74\x69\x6d\x65\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x30\x00\x70\x61\x72\x73\x65\x72\x6f\x6f\x74\x64\x65\x73\x63\x00\x66\x72\x65\x65\x55\x50\x4e\x50\x44\x65\x76\x6c\x69\x73\x74\x00\x70\x72\x6f\x74\x6f\x66\x69\x78\x00\x6d\x65\x6d\x63\x6d\x70\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x30\x00\x55\x50\x4e\x50\x5f\x47\x65\x74\x50\x69\x6e\x68\x6f\x6c\x65\x50\x61\x63\x6b\x65\x74\x73\x00\x73\x65\x6c\x65\x63\x74\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x30\x00\x50\x61\x72\x73\x65\x4e\x61\x6d\x65\x56\x61\x6c\x75\x65\x00\x5f\x66\x69\x6e\x69\x00\x63\x74\x69\x6d\x65\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x30\x00\x72\x65\x63\x76\x66\x72\x6f\x6d\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x30\x00\x5f\x5f\x73\x74\x61\x63\x6b\x5f\x63\x68\x6b\x5f\x66\x61\x69\x6c\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x34\x00\x75\x70\x6e\x70\x44\x69\x73\x63\x6f\x76\x65\x72\x00\x55\x50\x4e\x50\x5f\x47\x65\x74\x4c\x69\x73\x74\x4f\x66\x50\x6f\x72\x74\x4d\x61\x70\x70\x69\x6e\x67\x73\x00\x67\x65\x74\x6e\x61\x6d\x65\x69\x6e\x66\x6f\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x31\x00\x69\x6e\x36\x61\x64\x64\x72\x5f\x61\x6e\x79\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x31\x00\x5f\x5f\x66\x64\x65\x6c\x74\x5f\x63\x68\x6b\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x31\x35\x00\x55\x50\x4e\x50\x5f\x47\x65\x74\x54\x6f\x74\x61\x6c\x50\x61\x63\x6b\x65\x74\x73\x52\x65\x63\x65\x69\x76\x65\x64\x00\x63\x6f\x6e\x6e\x65\x63\x74\x68\x6f\x73\x74\x70\x6f\x72\x74\x00\x55\x50\x4e\x50\x5f\x41\x64\x64\x41\x6e\x79\x50\x6f\x72\x74\x4d\x61\x70\x70\x69\x6e\x67\x00\x67\x65\x74\x73\x6f\x63\x6b\x6f\x70\x74\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x30\x00\x55\x50\x4e\x50\x5f\x47\x65\x74\x46\x69\x72\x65\x77\x61\x6c\x6c\x53\x74\x61\x74\x75\x73\x00\x55\x50\x4e\x50\x5f\x47\x65\x74\x54\x6f\x74\x61\x6c\x42\x79\x74\x65\x73\x53\x65\x6e\x74\x00\x55\x50\x4e\x50\x5f\x44\x65\x6c\x65\x74\x65\x50\x6f\x72\x74\x4d\x61\x70\x70\x69\x6e\x67\x00\x70\x65\x72\x72\x6f\x72\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x30\x00\x55\x50\x4e\x50\x5f\x47\x65\x74\x53\x70\x65\x63\x69\x66\x69\x63\x50\x6f\x72\x74\x4d\x61\x70\x70\x69\x6e\x67\x45\x6e\x74\x72\x79\x00\x70\x6f\x6c\x6c\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x30\x00\x55\x50\x4e\x50\x5f\x47\x65\x74\x50\x6f\x72\x74\x4d\x61\x70\x70\x69\x6e\x67\x4e\x75\x6d\x62\x65\x72\x4f\x66\x45\x6e\x74\x72\x69\x65\x73\x00\x70\x61\x72\x73\x65\x78\x6d\x6c\x00\x5f\x5f\x44\x54\x4f\x52\x5f\x45\x4e\x44\x5f\x5f\x00\x46\x72\x65\x65\x55\x50\x4e\x50\x55\x72\x6c\x73\x00\x69\x66\x5f\x6e\x61\x6d\x65\x74\x6f\x69\x6e\x64\x65\x78\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x31\x00\x72\x65\x61\x6c\x6c\x6f\x63\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x30\x00\x55\x50\x4e\x50\x5f\x47\x65\x74\x53\x74\x61\x74\x75\x73\x49\x6e\x66\x6f\x00\x6d\x61\x6c\x6c\x6f\x63\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x30\x00\x5f\x5f\x64\x61\x74\x61\x5f\x73\x74\x61\x72\x74\x00\x5f\x5f\x69\x36\x38\x36\x2e\x67\x65\x74\x5f\x70\x63\x5f\x74\x68\x75\x6e\x6b\x2e\x63\x78\x00\x47\x65\x74\x55\x50\x4e\x50\x55\x72\x6c\x73\x00\x73\x74\x72\x75\x70\x6e\x70\x65\x72\x72\x6f\x72\x00\x73\x69\x6d\x70\x6c\x65\x55\x50\x6e\x50\x63\x6f\x6d\x6d\x61\x6e\x64\x00\x5f\x5f\x6d\x65\x6d\x63\x70\x79\x5f\x63\x68\x6b\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x33\x2e\x34\x00\x47\x65\x74\x56\x61\x6c\x75\x65\x46\x72\x6f\x6d\x4e\x61\x6d\x65\x56\x61\x6c\x75\x65\x4c\x69\x73\x74\x00\x49\x47\x44\x64\x61\x74\x61\x00\x5f\x5f\x67\x6d\x6f\x6e\x5f\x73\x74\x61\x72\x74\x5f\x5f\x00\x5f\x5f\x64\x73\x6f\x5f\x68\x61\x6e\x64\x6c\x65\x00\x5f\x49\x4f\x5f\x73\x74\x64\x69\x6e\x5f\x75\x73\x65\x64\x00\x73\x74\x72\x74\x6f\x75\x6c\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x30\x00\x73\x74\x72\x63\x68\x72\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x30\x00\x5f\x5f\x6c\x69\x62\x63\x5f\x73\x74\x61\x72\x74\x5f\x6d\x61\x69\x6e\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x30\x00\x77\x72\x69\x74\x65\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x30\x00\x43\x6c\x65\x61\x72\x4e\x61\x6d\x65\x56\x61\x6c\x75\x65\x4c\x69\x73\x74\x00\x70\x61\x72\x73\x65\x55\x52\x4c\x00\x73\x6f\x61\x70\x50\x6f\x73\x74\x53\x75\x62\x6d\x69\x74\x00\x72\x65\x63\x65\x69\x76\x65\x64\x61\x74\x61\x00\x5f\x5f\x6c\x69\x62\x63\x5f\x63\x73\x75\x5f\x69\x6e\x69\x74\x00\x62\x69\x6e\x64\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x30\x00\x55\x50\x4e\x50\x49\x47\x44\x5f\x49\x73\x43\x6f\x6e\x6e\x65\x63\x74\x65\x64\x00\x5f\x5f\x73\x74\x72\x64\x75\x70\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x30\x00\x69\x66\x5f\x69\x6e\x64\x65\x78\x74\x6f\x6e\x61\x6d\x65\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x31\x00\x5f\x65\x6e\x64\x00\x5f\x5f\x65\x72\x72\x6e\x6f\x5f\x6c\x6f\x63\x61\x74\x69\x6f\x6e\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x30\x00\x70\x72\x69\x6e\x74\x49\x47\x44\x00\x73\x74\x72\x6e\x63\x70\x79\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x30\x00\x5f\x73\x74\x61\x72\x74\x00\x5f\x66\x70\x5f\x68\x77\x00\x55\x50\x4e\x50\x5f\x47\x65\x74\x45\x78\x74\x65\x72\x6e\x61\x6c\x49\x50\x41\x64\x64\x72\x65\x73\x73\x00\x55\x50\x4e\x50\x5f\x47\x65\x74\x54\x6f\x74\x61\x6c\x42\x79\x74\x65\x73\x52\x65\x63\x65\x69\x76\x65\x64\x00\x67\x65\x74\x44\x65\x76\x69\x63\x65\x73\x46\x72\x6f\x6d\x4d\x69\x6e\x69\x53\x53\x44\x50\x44\x00\x67\x61\x69\x5f\x73\x74\x72\x65\x72\x72\x6f\x72\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x31\x00\x55\x50\x4e\x50\x5f\x47\x65\x74\x4c\x69\x6e\x6b\x4c\x61\x79\x65\x72\x4d\x61\x78\x42\x69\x74\x52\x61\x74\x65\x73\x00\x73\x74\x72\x6e\x63\x61\x73\x65\x63\x6d\x70\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x30\x00\x55\x50\x4e\x50\x5f\x41\x64\x64\x50\x69\x6e\x68\x6f\x6c\x65\x00\x55\x50\x4e\x50\x5f\x47\x65\x74\x4f\x75\x74\x62\x6f\x75\x6e\x64\x50\x69\x6e\x68\x6f\x6c\x65\x54\x69\x6d\x65\x6f\x75\x74\x00\x55\x50\x4e\x50\x5f\x47\x65\x74\x47\x65\x6e\x65\x72\x69\x63\x50\x6f\x72\x74\x4d\x61\x70\x70\x69\x6e\x67\x45\x6e\x74\x72\x79\x00\x5f\x5f\x62\x73\x73\x5f\x73\x74\x61\x72\x74\x00\x6d\x61\x69\x6e\x00\x5f\x5f\x70\x72\x69\x6e\x74\x66\x5f\x63\x68\x6b\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x33\x2e\x34\x00\x55\x50\x4e\x50\x5f\x43\x68\x65\x63\x6b\x50\x69\x6e\x68\x6f\x6c\x65\x57\x6f\x72\x6b\x69\x6e\x67\x00\x73\x65\x6e\x64\x74\x6f\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x30\x00\x6d\x69\x6e\x69\x77\x67\x65\x74\x00\x55\x50\x4e\x50\x5f\x47\x65\x74\x54\x6f\x74\x61\x6c\x50\x61\x63\x6b\x65\x74\x73\x53\x65\x6e\x74\x00\x66\x72\x65\x65\x61\x64\x64\x72\x69\x6e\x66\x6f\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x30\x00\x73\x73\x63\x61\x6e\x66\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x30\x00\x73\x69\x6d\x70\x6c\x65\x55\x50\x6e\x50\x63\x6f\x6d\x6d\x61\x6e\x64\x32\x00\x5f\x4a\x76\x5f\x52\x65\x67\x69\x73\x74\x65\x72\x43\x6c\x61\x73\x73\x65\x73\x00\x5f\x5f\x73\x74\x61\x63\x6b\x5f\x63\x68\x6b\x5f\x66\x61\x69\x6c\x5f\x6c\x6f\x63\x61\x6c\x00\x67\x65\x74\x73\x6f\x63\x6b\x6e\x61\x6d\x65\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x30\x00\x55\x50\x4e\x50\x5f\x44\x65\x6c\x65\x74\x65\x50\x69\x6e\x68\x6f\x6c\x65\x00\x73\x6f\x63\x6b\x65\x74\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x30\x00\x67\x65\x74\x61\x64\x64\x72\x69\x6e\x66\x6f\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x30\x00\x5f\x5f\x66\x70\x72\x69\x6e\x74\x66\x5f\x63\x68\x6b\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x33\x2e\x34\x00\x49\x47\x44\x65\x6e\x64\x65\x6c\x74\x00\x55\x50\x4e\x50\x5f\x41\x64\x64\x50\x6f\x72\x74\x4d\x61\x70\x70\x69\x6e\x67\x00\x69\x6e\x65\x74\x5f\x61\x64\x64\x72\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x30\x00\x73\x74\x72\x74\x6f\x6c\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x30\x00\x63\x6f\x6e\x6e\x65\x63\x74\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x30\x00\x55\x50\x4e\x50\x5f\x47\x65\x74\x43\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e\x54\x79\x70\x65\x49\x6e\x66\x6f\x00\x55\x50\x4e\x50\x5f\x55\x70\x64\x61\x74\x65\x50\x69\x6e\x68\x6f\x6c\x65\x00\x5f\x69\x6e\x69\x74\x00\x55\x50\x4e\x50\x5f\x47\x65\x74\x49\x47\x44\x46\x72\x6f\x6d\x55\x72\x6c\x00\x63\x6c\x6f\x73\x65\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x30\x00\x5f\x5f\x63\x74\x79\x70\x65\x5f\x62\x5f\x6c\x6f\x63\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x33\x00\x73\x65\x6e\x64\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x30\x00\x63\x61\x6c\x6c\x6f\x63\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x30\x00" - -func upnpc() ([]byte, error) { - return bindata_read( - _upnpc, - "upnpc", - ) -} - - -// Asset loads and returns the asset for the given name. -// It returns an error if the asset could not be found or -// could not be loaded. -func Asset(name string) ([]byte, error) { - if f, ok := _bindata[name]; ok { - return f() - } - return nil, fmt.Errorf("Asset %s not found", name) -} - -// _bindata is a table, holding each asset generator, mapped to its name. -var _bindata = map[string] func() ([]byte, error) { - "upnpc": upnpc, - -} diff --git a/src/github.com/getlantern/go-igdman/igdman/upnpc_linux_amd64.go b/src/github.com/getlantern/go-igdman/igdman/upnpc_linux_amd64.go deleted file mode 100644 index e979152958..0000000000 --- a/src/github.com/getlantern/go-igdman/igdman/upnpc_linux_amd64.go +++ /dev/null @@ -1,44 +0,0 @@ -package igdman - -import ( - "fmt" - "reflect" - "unsafe" -) - -func bindata_read(data, name string) ([]byte, error) { - var empty [0]byte - sx := (*reflect.StringHeader)(unsafe.Pointer(&data)) - b := empty[:] - bx := (*reflect.SliceHeader)(unsafe.Pointer(&b)) - bx.Data = sx.Data - bx.Len = len(data) - bx.Cap = bx.Len - return b, nil -} - -var _upnpc = "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x3e\x00\x01\x00\x00\x00\xb0\x13\x40\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\xd0\xd2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x38\x00\x09\x00\x40\x00\x1f\x00\x1c\x00\x06\x00\x00\x00\x05\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x40\x00\x40\x00\x00\x00\x00\x00\x40\x00\x40\x00\x00\x00\x00\x00\xf8\x01\x00\x00\x00\x00\x00\x00\xf8\x01\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x04\x00\x00\x00\x38\x02\x00\x00\x00\x00\x00\x00\x38\x02\x40\x00\x00\x00\x00\x00\x38\x02\x40\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x84\xcb\x00\x00\x00\x00\x00\x00\x84\xcb\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x01\x00\x00\x00\x06\x00\x00\x00\x10\xcd\x00\x00\x00\x00\x00\x00\x10\xcd\x60\x00\x00\x00\x00\x00\x10\xcd\x60\x00\x00\x00\x00\x00\x88\x04\x00\x00\x00\x00\x00\x00\x98\x04\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x02\x00\x00\x00\x06\x00\x00\x00\x20\xce\x00\x00\x00\x00\x00\x00\x20\xce\x60\x00\x00\x00\x00\x00\x20\xce\x60\x00\x00\x00\x00\x00\x90\x01\x00\x00\x00\x00\x00\x00\x90\x01\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x04\x00\x00\x00\x54\x02\x00\x00\x00\x00\x00\x00\x54\x02\x40\x00\x00\x00\x00\x00\x54\x02\x40\x00\x00\x00\x00\x00\x44\x00\x00\x00\x00\x00\x00\x00\x44\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x50\xe5\x74\x64\x04\x00\x00\x00\x10\xbd\x00\x00\x00\x00\x00\x00\x10\xbd\x40\x00\x00\x00\x00\x00\x10\xbd\x40\x00\x00\x00\x00\x00\x3c\x02\x00\x00\x00\x00\x00\x00\x3c\x02\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x51\xe5\x74\x64\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x52\xe5\x74\x64\x04\x00\x00\x00\x10\xcd\x00\x00\x00\x00\x00\x00\x10\xcd\x60\x00\x00\x00\x00\x00\x10\xcd\x60\x00\x00\x00\x00\x00\xf0\x02\x00\x00\x00\x00\x00\x00\xf0\x02\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x2f\x6c\x69\x62\x36\x34\x2f\x6c\x64\x2d\x6c\x69\x6e\x75\x78\x2d\x78\x38\x36\x2d\x36\x34\x2e\x73\x6f\x2e\x32\x00\x04\x00\x00\x00\x10\x00\x00\x00\x01\x00\x00\x00\x47\x4e\x55\x00\x00\x00\x00\x00\x02\x00\x00\x00\x06\x00\x00\x00\x18\x00\x00\x00\x04\x00\x00\x00\x14\x00\x00\x00\x03\x00\x00\x00\x47\x4e\x55\x00\xab\xfe\x1a\x40\x54\x5c\x49\x88\xd5\xfe\xd1\xd2\x8a\x1e\x3e\xb9\xe4\x68\xbc\xfb\x03\x00\x00\x00\x35\x00\x00\x00\x01\x00\x00\x00\x06\x00\x00\x00\x00\x12\x00\x00\x10\x08\x28\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\xcd\x8a\x60\xf0\x75\x12\xeb\x15\x33\x39\xc0\xa1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x01\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf5\x01\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb9\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6b\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x01\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xef\x01\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05\x01\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x73\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa1\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa7\x01\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xba\x01\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa1\x01\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdb\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3b\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcf\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdd\x01\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd4\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe7\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9a\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x01\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd6\x01\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x94\x01\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x76\x01\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x93\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15\x01\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x01\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x84\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2f\x01\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x01\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x01\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x01\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x85\x01\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8b\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x21\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf2\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xca\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xce\x01\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xae\x01\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x01\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf7\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa6\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb2\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x36\x01\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc1\x01\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x01\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1a\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfa\x01\x00\x00\x12\x00\x0d\x00\xd4\x8f\x40\x00\x00\x00\x00\x00\x89\x00\x00\x00\x00\x00\x00\x00\x0e\x02\x00\x00\x12\x00\x0d\x00\x5d\x90\x40\x00\x00\x00\x00\x00\x69\x03\x00\x00\x00\x00\x00\x00\x06\x02\x00\x00\x12\x00\x0d\x00\xc6\x93\x40\x00\x00\x00\x00\x00\x1e\x01\x00\x00\x00\x00\x00\x00\x00\x5f\x5f\x67\x6d\x6f\x6e\x5f\x73\x74\x61\x72\x74\x5f\x5f\x00\x6c\x69\x62\x63\x2e\x73\x6f\x2e\x36\x00\x73\x6f\x63\x6b\x65\x74\x00\x5f\x5f\x70\x72\x69\x6e\x74\x66\x5f\x63\x68\x6b\x00\x67\x61\x69\x5f\x73\x74\x72\x65\x72\x72\x6f\x72\x00\x5f\x5f\x73\x74\x72\x64\x75\x70\x00\x70\x65\x72\x72\x6f\x72\x00\x63\x6f\x6e\x6e\x65\x63\x74\x00\x69\x6e\x36\x61\x64\x64\x72\x5f\x61\x6e\x79\x00\x5f\x5f\x66\x64\x65\x6c\x74\x5f\x63\x68\x6b\x00\x73\x74\x72\x6e\x63\x70\x79\x00\x5f\x5f\x73\x74\x61\x63\x6b\x5f\x63\x68\x6b\x5f\x66\x61\x69\x6c\x00\x73\x65\x6c\x65\x63\x74\x00\x72\x65\x61\x6c\x6c\x6f\x63\x00\x73\x74\x72\x74\x6f\x6c\x00\x63\x61\x6c\x6c\x6f\x63\x00\x73\x65\x6e\x64\x00\x67\x65\x74\x61\x64\x64\x72\x69\x6e\x66\x6f\x00\x73\x74\x72\x73\x74\x72\x00\x5f\x5f\x65\x72\x72\x6e\x6f\x5f\x6c\x6f\x63\x61\x74\x69\x6f\x6e\x00\x62\x69\x6e\x64\x00\x72\x65\x61\x64\x00\x6d\x65\x6d\x63\x6d\x70\x00\x67\x65\x74\x6e\x61\x6d\x65\x69\x6e\x66\x6f\x00\x67\x65\x74\x73\x6f\x63\x6b\x6f\x70\x74\x00\x70\x6f\x6c\x6c\x00\x5f\x5f\x66\x70\x72\x69\x6e\x74\x66\x5f\x63\x68\x6b\x00\x63\x74\x69\x6d\x65\x00\x69\x6e\x65\x74\x5f\x61\x64\x64\x72\x00\x6d\x65\x6d\x63\x70\x79\x00\x73\x74\x72\x74\x6f\x75\x6c\x00\x73\x65\x74\x73\x6f\x63\x6b\x6f\x70\x74\x00\x6d\x61\x6c\x6c\x6f\x63\x00\x5f\x5f\x63\x74\x79\x70\x65\x5f\x62\x5f\x6c\x6f\x63\x00\x73\x73\x63\x61\x6e\x66\x00\x72\x65\x63\x76\x66\x72\x6f\x6d\x00\x73\x74\x64\x65\x72\x72\x00\x5f\x5f\x73\x6e\x70\x72\x69\x6e\x74\x66\x5f\x63\x68\x6b\x00\x73\x74\x72\x6e\x63\x61\x73\x65\x63\x6d\x70\x00\x69\x66\x5f\x6e\x61\x6d\x65\x74\x6f\x69\x6e\x64\x65\x78\x00\x69\x66\x5f\x69\x6e\x64\x65\x78\x74\x6f\x6e\x61\x6d\x65\x00\x5f\x5f\x6d\x65\x6d\x63\x70\x79\x5f\x63\x68\x6b\x00\x63\x6c\x6f\x73\x65\x00\x73\x74\x72\x63\x68\x72\x00\x67\x65\x74\x73\x6f\x63\x6b\x6e\x61\x6d\x65\x00\x73\x65\x6e\x64\x74\x6f\x00\x66\x72\x65\x65\x61\x64\x64\x72\x69\x6e\x66\x6f\x00\x6d\x65\x6d\x6d\x6f\x76\x65\x00\x73\x74\x72\x63\x6d\x70\x00\x5f\x5f\x6c\x69\x62\x63\x5f\x73\x74\x61\x72\x74\x5f\x6d\x61\x69\x6e\x00\x77\x72\x69\x74\x65\x00\x66\x72\x65\x65\x00\x49\x47\x44\x73\x74\x61\x72\x74\x65\x6c\x74\x00\x49\x47\x44\x64\x61\x74\x61\x00\x49\x47\x44\x65\x6e\x64\x65\x6c\x74\x00\x47\x4c\x49\x42\x43\x5f\x32\x2e\x33\x00\x47\x4c\x49\x42\x43\x5f\x32\x2e\x31\x34\x00\x47\x4c\x49\x42\x43\x5f\x32\x2e\x31\x35\x00\x47\x4c\x49\x42\x43\x5f\x32\x2e\x34\x00\x47\x4c\x49\x42\x43\x5f\x32\x2e\x32\x2e\x35\x00\x47\x4c\x49\x42\x43\x5f\x32\x2e\x33\x2e\x34\x00\x00\x00\x02\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x04\x00\x03\x00\x03\x00\x05\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x02\x00\x00\x00\x03\x00\x03\x00\x06\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x02\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x02\x00\x03\x00\x03\x00\x07\x00\x03\x00\x03\x00\x03\x00\x01\x00\x01\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01\x00\x06\x00\x10\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x13\x69\x69\x0d\x00\x00\x07\x00\x18\x02\x00\x00\x10\x00\x00\x00\x94\x91\x96\x06\x00\x00\x06\x00\x22\x02\x00\x00\x10\x00\x00\x00\x95\x91\x96\x06\x00\x00\x05\x00\x2d\x02\x00\x00\x10\x00\x00\x00\x14\x69\x69\x0d\x00\x00\x04\x00\x38\x02\x00\x00\x10\x00\x00\x00\x75\x1a\x69\x09\x00\x00\x03\x00\x42\x02\x00\x00\x10\x00\x00\x00\x74\x19\x69\x09\x00\x00\x02\x00\x4e\x02\x00\x00\x00\x00\x00\x00\xb0\xcf\x60\x00\x00\x00\x00\x00\x06\x00\x00\x00\x35\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb8\xcf\x60\x00\x00\x00\x00\x00\x06\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc0\xcf\x60\x00\x00\x00\x00\x00\x06\x00\x00\x00\x37\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc8\xcf\x60\x00\x00\x00\x00\x00\x06\x00\x00\x00\x1a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd0\xcf\x60\x00\x00\x00\x00\x00\x06\x00\x00\x00\x36\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd8\xcf\x60\x00\x00\x00\x00\x00\x06\x00\x00\x00\x33\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd0\x60\x00\x00\x00\x00\x00\x07\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\xd0\x60\x00\x00\x00\x00\x00\x07\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\xd0\x60\x00\x00\x00\x00\x00\x07\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\xd0\x60\x00\x00\x00\x00\x00\x07\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\xd0\x60\x00\x00\x00\x00\x00\x07\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\xd0\x60\x00\x00\x00\x00\x00\x07\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\xd0\x60\x00\x00\x00\x00\x00\x07\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x38\xd0\x60\x00\x00\x00\x00\x00\x07\x00\x00\x00\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\xd0\x60\x00\x00\x00\x00\x00\x07\x00\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\xd0\x60\x00\x00\x00\x00\x00\x07\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\xd0\x60\x00\x00\x00\x00\x00\x07\x00\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\xd0\x60\x00\x00\x00\x00\x00\x07\x00\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\xd0\x60\x00\x00\x00\x00\x00\x07\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x68\xd0\x60\x00\x00\x00\x00\x00\x07\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x70\xd0\x60\x00\x00\x00\x00\x00\x07\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x78\xd0\x60\x00\x00\x00\x00\x00\x07\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\xd0\x60\x00\x00\x00\x00\x00\x07\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x88\xd0\x60\x00\x00\x00\x00\x00\x07\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x90\xd0\x60\x00\x00\x00\x00\x00\x07\x00\x00\x00\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x98\xd0\x60\x00\x00\x00\x00\x00\x07\x00\x00\x00\x15\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa0\xd0\x60\x00\x00\x00\x00\x00\x07\x00\x00\x00\x16\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa8\xd0\x60\x00\x00\x00\x00\x00\x07\x00\x00\x00\x17\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb0\xd0\x60\x00\x00\x00\x00\x00\x07\x00\x00\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb8\xd0\x60\x00\x00\x00\x00\x00\x07\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc0\xd0\x60\x00\x00\x00\x00\x00\x07\x00\x00\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc8\xd0\x60\x00\x00\x00\x00\x00\x07\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd0\xd0\x60\x00\x00\x00\x00\x00\x07\x00\x00\x00\x1d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd8\xd0\x60\x00\x00\x00\x00\x00\x07\x00\x00\x00\x1e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe0\xd0\x60\x00\x00\x00\x00\x00\x07\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe8\xd0\x60\x00\x00\x00\x00\x00\x07\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0\xd0\x60\x00\x00\x00\x00\x00\x07\x00\x00\x00\x21\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf8\xd0\x60\x00\x00\x00\x00\x00\x07\x00\x00\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd1\x60\x00\x00\x00\x00\x00\x07\x00\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\xd1\x60\x00\x00\x00\x00\x00\x07\x00\x00\x00\x24\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\xd1\x60\x00\x00\x00\x00\x00\x07\x00\x00\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\xd1\x60\x00\x00\x00\x00\x00\x07\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\xd1\x60\x00\x00\x00\x00\x00\x07\x00\x00\x00\x27\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\xd1\x60\x00\x00\x00\x00\x00\x07\x00\x00\x00\x28\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\xd1\x60\x00\x00\x00\x00\x00\x07\x00\x00\x00\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x38\xd1\x60\x00\x00\x00\x00\x00\x07\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\xd1\x60\x00\x00\x00\x00\x00\x07\x00\x00\x00\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\xd1\x60\x00\x00\x00\x00\x00\x07\x00\x00\x00\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\xd1\x60\x00\x00\x00\x00\x00\x07\x00\x00\x00\x2d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\xd1\x60\x00\x00\x00\x00\x00\x07\x00\x00\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\xd1\x60\x00\x00\x00\x00\x00\x07\x00\x00\x00\x2f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x68\xd1\x60\x00\x00\x00\x00\x00\x07\x00\x00\x00\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x70\xd1\x60\x00\x00\x00\x00\x00\x07\x00\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x78\xd1\x60\x00\x00\x00\x00\x00\x07\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\xd1\x60\x00\x00\x00\x00\x00\x07\x00\x00\x00\x34\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x83\xec\x08\xe8\x63\x03\x00\x00\xe8\xf2\x03\x00\x00\xe8\xad\x8b\x00\x00\x48\x83\xc4\x08\xc3\x00\x00\x00\x00\x00\x00\x00\x00\xff\x35\x5a\xbf\x20\x00\xff\x25\x5c\xbf\x20\x00\x0f\x1f\x40\x00\xff\x25\x5a\xbf\x20\x00\x68\x00\x00\x00\x00\xe9\xe0\xff\xff\xff\xff\x25\x52\xbf\x20\x00\x68\x01\x00\x00\x00\xe9\xd0\xff\xff\xff\xff\x25\x4a\xbf\x20\x00\x68\x02\x00\x00\x00\xe9\xc0\xff\xff\xff\xff\x25\x42\xbf\x20\x00\x68\x03\x00\x00\x00\xe9\xb0\xff\xff\xff\xff\x25\x3a\xbf\x20\x00\x68\x04\x00\x00\x00\xe9\xa0\xff\xff\xff\xff\x25\x32\xbf\x20\x00\x68\x05\x00\x00\x00\xe9\x90\xff\xff\xff\xff\x25\x2a\xbf\x20\x00\x68\x06\x00\x00\x00\xe9\x80\xff\xff\xff\xff\x25\x22\xbf\x20\x00\x68\x07\x00\x00\x00\xe9\x70\xff\xff\xff\xff\x25\x1a\xbf\x20\x00\x68\x08\x00\x00\x00\xe9\x60\xff\xff\xff\xff\x25\x12\xbf\x20\x00\x68\x09\x00\x00\x00\xe9\x50\xff\xff\xff\xff\x25\x0a\xbf\x20\x00\x68\x0a\x00\x00\x00\xe9\x40\xff\xff\xff\xff\x25\x02\xbf\x20\x00\x68\x0b\x00\x00\x00\xe9\x30\xff\xff\xff\xff\x25\xfa\xbe\x20\x00\x68\x0c\x00\x00\x00\xe9\x20\xff\xff\xff\xff\x25\xf2\xbe\x20\x00\x68\x0d\x00\x00\x00\xe9\x10\xff\xff\xff\xff\x25\xea\xbe\x20\x00\x68\x0e\x00\x00\x00\xe9\x00\xff\xff\xff\xff\x25\xe2\xbe\x20\x00\x68\x0f\x00\x00\x00\xe9\xf0\xfe\xff\xff\xff\x25\xda\xbe\x20\x00\x68\x10\x00\x00\x00\xe9\xe0\xfe\xff\xff\xff\x25\xd2\xbe\x20\x00\x68\x11\x00\x00\x00\xe9\xd0\xfe\xff\xff\xff\x25\xca\xbe\x20\x00\x68\x12\x00\x00\x00\xe9\xc0\xfe\xff\xff\xff\x25\xc2\xbe\x20\x00\x68\x13\x00\x00\x00\xe9\xb0\xfe\xff\xff\xff\x25\xba\xbe\x20\x00\x68\x14\x00\x00\x00\xe9\xa0\xfe\xff\xff\xff\x25\xb2\xbe\x20\x00\x68\x15\x00\x00\x00\xe9\x90\xfe\xff\xff\xff\x25\xaa\xbe\x20\x00\x68\x16\x00\x00\x00\xe9\x80\xfe\xff\xff\xff\x25\xa2\xbe\x20\x00\x68\x17\x00\x00\x00\xe9\x70\xfe\xff\xff\xff\x25\x9a\xbe\x20\x00\x68\x18\x00\x00\x00\xe9\x60\xfe\xff\xff\xff\x25\x92\xbe\x20\x00\x68\x19\x00\x00\x00\xe9\x50\xfe\xff\xff\xff\x25\x8a\xbe\x20\x00\x68\x1a\x00\x00\x00\xe9\x40\xfe\xff\xff\xff\x25\x82\xbe\x20\x00\x68\x1b\x00\x00\x00\xe9\x30\xfe\xff\xff\xff\x25\x7a\xbe\x20\x00\x68\x1c\x00\x00\x00\xe9\x20\xfe\xff\xff\xff\x25\x72\xbe\x20\x00\x68\x1d\x00\x00\x00\xe9\x10\xfe\xff\xff\xff\x25\x6a\xbe\x20\x00\x68\x1e\x00\x00\x00\xe9\x00\xfe\xff\xff\xff\x25\x62\xbe\x20\x00\x68\x1f\x00\x00\x00\xe9\xf0\xfd\xff\xff\xff\x25\x5a\xbe\x20\x00\x68\x20\x00\x00\x00\xe9\xe0\xfd\xff\xff\xff\x25\x52\xbe\x20\x00\x68\x21\x00\x00\x00\xe9\xd0\xfd\xff\xff\xff\x25\x4a\xbe\x20\x00\x68\x22\x00\x00\x00\xe9\xc0\xfd\xff\xff\xff\x25\x42\xbe\x20\x00\x68\x23\x00\x00\x00\xe9\xb0\xfd\xff\xff\xff\x25\x3a\xbe\x20\x00\x68\x24\x00\x00\x00\xe9\xa0\xfd\xff\xff\xff\x25\x32\xbe\x20\x00\x68\x25\x00\x00\x00\xe9\x90\xfd\xff\xff\xff\x25\x2a\xbe\x20\x00\x68\x26\x00\x00\x00\xe9\x80\xfd\xff\xff\xff\x25\x22\xbe\x20\x00\x68\x27\x00\x00\x00\xe9\x70\xfd\xff\xff\xff\x25\x1a\xbe\x20\x00\x68\x28\x00\x00\x00\xe9\x60\xfd\xff\xff\xff\x25\x12\xbe\x20\x00\x68\x29\x00\x00\x00\xe9\x50\xfd\xff\xff\xff\x25\x0a\xbe\x20\x00\x68\x2a\x00\x00\x00\xe9\x40\xfd\xff\xff\xff\x25\x02\xbe\x20\x00\x68\x2b\x00\x00\x00\xe9\x30\xfd\xff\xff\xff\x25\xfa\xbd\x20\x00\x68\x2c\x00\x00\x00\xe9\x20\xfd\xff\xff\xff\x25\xf2\xbd\x20\x00\x68\x2d\x00\x00\x00\xe9\x10\xfd\xff\xff\xff\x25\xea\xbd\x20\x00\x68\x2e\x00\x00\x00\xe9\x00\xfd\xff\xff\xff\x25\xe2\xbd\x20\x00\x68\x2f\x00\x00\x00\xe9\xf0\xfc\xff\xff\xff\x25\xda\xbd\x20\x00\x68\x30\x00\x00\x00\xe9\xe0\xfc\xff\xff\x31\xed\x49\x89\xd1\x5e\x48\x89\xe2\x48\x83\xe4\xf0\x50\x54\x49\xc7\xc0\x20\x9c\x40\x00\x48\xc7\xc1\x90\x9b\x40\x00\x48\xc7\xc7\x61\x1b\x40\x00\xe8\xd7\xfd\xff\xff\xf4\x90\x90\x48\x83\xec\x08\x48\x8b\x05\xe1\xbb\x20\x00\x48\x85\xc0\x74\x02\xff\xd0\x48\x83\xc4\x08\xc3\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x55\x48\x89\xe5\x53\x48\x83\xec\x08\x80\x3d\x88\xbd\x20\x00\x00\x75\x4b\xbb\x28\xcd\x60\x00\x48\x8b\x05\x82\xbd\x20\x00\x48\x81\xeb\x20\xcd\x60\x00\x48\xc1\xfb\x03\x48\x83\xeb\x01\x48\x39\xd8\x73\x24\x66\x0f\x1f\x44\x00\x00\x48\x83\xc0\x01\x48\x89\x05\x5d\xbd\x20\x00\xff\x14\xc5\x20\xcd\x60\x00\x48\x8b\x05\x4f\xbd\x20\x00\x48\x39\xd8\x72\xe2\xc6\x05\x3b\xbd\x20\x00\x01\x48\x83\xc4\x08\x5b\x5d\xc3\x66\x66\x66\x2e\x0f\x1f\x84\x00\x00\x00\x00\x00\x48\x83\x3d\xb8\xb8\x20\x00\x00\x55\x48\x89\xe5\x74\x12\xb8\x00\x00\x00\x00\x48\x85\xc0\x74\x08\x5d\xbf\x30\xcd\x60\x00\xff\xe0\x5d\xc3\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x41\x54\x55\x53\x48\x81\xec\x10\x01\x00\x00\x48\x89\xfb\x49\x89\xf4\x64\x48\x8b\x04\x25\x28\x00\x00\x00\x48\x89\x84\x24\x08\x01\x00\x00\x31\xc0\x48\x8d\xae\x04\x05\x00\x00\x48\x8d\x54\x24\x20\x48\x89\xee\x48\x8b\x3f\xe8\x2b\x3a\x00\x00\x85\xc0\x74\x18\x48\x8d\x35\xa2\x87\x00\x00\xbf\x01\x00\x00\x00\xb8\x00\x00\x00\x00\xe8\xdb\xfd\xff\xff\xeb\x1b\x48\x8d\x54\x24\x20\x48\x8d\x35\x52\x96\x00\x00\xbf\x01\x00\x00\x00\xb8\x00\x00\x00\x00\xe8\xbe\xfd\xff\xff\x4c\x8d\x84\x24\xa0\x00\x00\x00\x48\x8d\x4c\x24\x14\x48\x8d\x54\x24\x60\x48\x89\xee\x48\x8b\x3b\xe8\xcf\x37\x00\x00\x85\xc0\x74\x18\x48\x8d\x35\x31\x96\x00\x00\xbf\x01\x00\x00\x00\xb8\x00\x00\x00\x00\xe8\x87\xfd\xff\xff\xeb\x27\x4c\x8d\x84\x24\xa0\x00\x00\x00\x8b\x4c\x24\x14\x48\x8d\x54\x24\x60\x48\x8d\x35\x45\x87\x00\x00\xbf\x01\x00\x00\x00\xb8\x00\x00\x00\x00\xe8\x5e\xfd\xff\xff\xbf\x00\x00\x00\x00\xe8\xd4\xfc\xff\xff\x8b\x54\x24\x14\x48\x29\xd0\x48\x89\x44\x24\x08\x48\x8d\x7c\x24\x08\xe8\x6e\xfb\xff\xff\x48\x89\xc2\x48\x8d\x35\xe6\x95\x00\x00\xbf\x01\x00\x00\x00\xb8\x00\x00\x00\x00\xe8\x25\xfd\xff\xff\x49\x8d\xb4\x24\x04\x03\x00\x00\x48\x8b\x7b\x10\x48\x8d\x4c\x24\x18\x48\x8d\x54\x24\x1c\xe8\x5d\x3a\x00\x00\x85\xc0\x74\x1b\x48\x8d\x35\x0f\x87\x00\x00\xbf\x01\x00\x00\x00\xb8\x00\x00\x00\x00\xe8\xf0\xfc\xff\xff\xe9\x46\x01\x00\x00\x8b\x54\x24\x1c\x48\x8d\x35\xa6\x95\x00\x00\xbf\x01\x00\x00\x00\xb8\x00\x00\x00\x00\xe8\xd1\xfc\xff\xff\x8b\x74\x24\x1c\x81\xfe\x3f\x42\x0f\x00\x76\x44\xb9\xa0\x86\x01\x00\x89\xf0\xba\x00\x00\x00\x00\xf7\xf1\xbf\x0a\x00\x00\x00\xba\x00\x00\x00\x00\xf7\xf7\x89\xd1\xbf\x40\x42\x0f\x00\x89\xf0\xba\x00\x00\x00\x00\xf7\xf7\x89\xc2\x48\x8d\x35\x70\x95\x00\x00\xbf\x01\x00\x00\x00\xb8\x00\x00\x00\x00\xe8\x83\xfc\xff\xff\xeb\x2e\x81\xfe\xe7\x03\x00\x00\x76\x26\xb9\xe8\x03\x00\x00\x89\xf0\xba\x00\x00\x00\x00\xf7\xf1\x89\xc2\x48\x8d\x35\x4e\x95\x00\x00\xbf\x01\x00\x00\x00\xb8\x00\x00\x00\x00\xe8\x53\xfc\xff\xff\x8b\x54\x24\x18\x48\x8d\x35\x3f\x95\x00\x00\xbf\x01\x00\x00\x00\xb8\x00\x00\x00\x00\xe8\x39\xfc\xff\xff\x8b\x74\x24\x18\x81\xfe\x3f\x42\x0f\x00\x76\x44\xb9\xa0\x86\x01\x00\x89\xf0\xba\x00\x00\x00\x00\xf7\xf1\xbf\x0a\x00\x00\x00\xba\x00\x00\x00\x00\xf7\xf7\x89\xd1\xbf\x40\x42\x0f\x00\x89\xf0\xba\x00\x00\x00\x00\xf7\xf7\x89\xc2\x48\x8d\x35\xd8\x94\x00\x00\xbf\x01\x00\x00\x00\xb8\x00\x00\x00\x00\xe8\xeb\xfb\xff\xff\xeb\x2e\x81\xfe\xe7\x03\x00\x00\x76\x26\xb9\xe8\x03\x00\x00\x89\xf0\xba\x00\x00\x00\x00\xf7\xf1\x89\xc2\x48\x8d\x35\xb6\x94\x00\x00\xbf\x01\x00\x00\x00\xb8\x00\x00\x00\x00\xe8\xbb\xfb\xff\xff\x48\x8d\x35\xaa\x95\x00\x00\xbf\x01\x00\x00\x00\xb8\x00\x00\x00\x00\xe8\xa5\xfb\xff\xff\x48\x8d\x94\x24\xe0\x00\x00\x00\x48\x89\xee\x48\x8b\x3b\xe8\xa7\x3a\x00\x00\x85\xc0\x74\x1a\x89\xc2\x48\x8d\x35\xbd\x85\x00\x00\xbf\x01\x00\x00\x00\xb8\x00\x00\x00\x00\xe8\x76\xfb\xff\xff\xeb\x1e\x48\x8d\x94\x24\xe0\x00\x00\x00\x48\x8d\x35\x73\x94\x00\x00\xbf\x01\x00\x00\x00\xb8\x00\x00\x00\x00\xe8\x56\xfb\xff\xff\x48\x8b\x94\x24\x08\x01\x00\x00\x64\x48\x33\x14\x25\x28\x00\x00\x00\x74\x05\xe8\x7e\xf9\xff\xff\x48\x81\xc4\x10\x01\x00\x00\x5b\x5d\x41\x5c\xc3\xb8\x00\x00\x00\x00\xba\x01\x00\x00\x00\x85\xd2\x74\x25\x0f\xb6\x0c\x07\x48\x8d\x15\x3f\x96\x00\x00\x0f\xb6\x34\x02\xba\x01\x00\x00\x00\x40\x38\xf1\x74\x0c\x83\xce\x20\x40\x38\xf1\x0f\x94\xc2\x0f\xb6\xd2\x48\x83\xc0\x01\x48\x83\xf8\x04\x75\xcd\x48\x8d\x05\x14\x96\x00\x00\x85\xd2\x75\x49\xb8\x00\x00\x00\x00\xb2\x01\x85\xd2\x74\x25\x0f\xb6\x0c\x07\x48\x8d\x15\xfe\x95\x00\x00\x0f\xb6\x34\x02\xba\x01\x00\x00\x00\x40\x38\xf1\x74\x0c\x83\xce\x20\x40\x38\xf1\x0f\x94\xc2\x0f\xb6\xd2\x48\x83\xc0\x01\x48\x83\xf8\x04\x75\xcd\x85\xd2\xb0\x00\x48\x8d\x15\xcf\x95\x00\x00\x48\x0f\x45\xc2\xf3\xc3\x48\x89\x5c\x24\xd0\x48\x89\x6c\x24\xd8\x4c\x89\x64\x24\xe0\x4c\x89\x6c\x24\xe8\x4c\x89\x74\x24\xf0\x4c\x89\x7c\x24\xf8\x48\x81\xec\xf8\x00\x00\x00\x49\x89\xfd\x49\x89\xf6\x48\x89\xd5\x49\x89\xcc\x4c\x89\xc3\x4c\x8b\xbc\x24\x00\x01\x00\x00\x48\x8b\x84\x24\x08\x01\x00\x00\x48\x89\x44\x24\x28\x64\x48\x8b\x04\x25\x28\x00\x00\x00\x48\x89\x84\x24\xb8\x00\x00\x00\x31\xc0\x48\x85\xd2\x74\x10\x48\x85\xc9\x74\x0b\x4d\x85\xc0\x74\x06\x4d\x85\xc9\x90\x75\x25\x48\x8d\x15\x4d\x93\x00\x00\xbe\x01\x00\x00\x00\x48\x8b\x05\x23\xb7\x20\x00\x48\x8b\x38\xb8\x00\x00\x00\x00\xe8\x8e\xfa\xff\xff\xe9\x4a\x02\x00\x00\x4c\x89\xcf\xe8\xcf\xfe\xff\xff\x48\x89\x44\x24\x20\x48\x85\xc0\x75\x25\x48\x8d\x15\x27\x93\x00\x00\xbe\x01\x00\x00\x00\x48\x8b\x05\xec\xb6\x20\x00\x48\x8b\x38\xb8\x00\x00\x00\x00\xe8\x57\xfa\xff\xff\xe9\x13\x02\x00\x00\x49\x81\xc6\x04\x05\x00\x00\x48\x8d\x54\x24\x30\x4c\x89\xf6\x49\x8b\x7d\x00\xe8\xcf\x38\x00\x00\x85\xc0\x74\x18\x48\x8d\x35\xf8\x92\x00\x00\xbf\x01\x00\x00\x00\xb8\x00\x00\x00\x00\xe8\xa0\xf9\xff\xff\xeb\x1b\x48\x8d\x54\x24\x30\x48\x8d\x35\xa0\x92\x00\x00\xbf\x01\x00\x00\x00\xb8\x00\x00\x00\x00\xe8\x83\xf9\xff\xff\x83\xbc\x24\x10\x01\x00\x00\x00\x74\x78\x48\x8d\x84\x24\xb0\x00\x00\x00\x48\x89\x44\x24\x18\x4c\x89\x7c\x24\x10\x48\xc7\x44\x24\x08\x00\x00\x00\x00\x48\x8b\x44\x24\x20\x48\x89\x04\x24\x4c\x8b\x4c\x24\x28\x49\x89\xe8\x4c\x89\xe1\x48\x89\xda\x4c\x89\xf6\x49\x8b\x7d\x00\xe8\xd5\x3b\x00\x00\x41\x89\xc7\x85\xc0\x0f\x84\x96\x00\x00\x00\x89\xc7\xe8\xe9\x56\x00\x00\x48\x89\x04\x24\x45\x89\xf9\x49\x89\xe8\x4c\x89\xe1\x48\x89\xda\x48\x8d\x35\x7a\x83\x00\x00\xbf\x01\x00\x00\x00\xb8\x00\x00\x00\x00\xe8\x03\xf9\xff\xff\xeb\x6f\x4c\x89\x7c\x24\x10\x48\xc7\x44\x24\x08\x00\x00\x00\x00\x48\x8b\x44\x24\x20\x48\x89\x04\x24\x4c\x8b\x4c\x24\x28\x49\x89\xe8\x4c\x89\xe1\x48\x89\xda\x4c\x89\xf6\x49\x8b\x7d\x00\xe8\x1b\x39\x00\x00\x41\x89\xc7\x85\xc0\x74\x37\x89\xc7\xe8\x82\x56\x00\x00\x48\x89\x04\x24\x45\x89\xf9\x49\x89\xe8\x4c\x89\xe1\x48\x89\xda\x48\x8d\x35\x4b\x83\x00\x00\xbf\x01\x00\x00\x00\xb8\x00\x00\x00\x00\xe8\x9c\xf8\xff\xff\xeb\x08\x48\x8d\x9c\x24\xb0\x00\x00\x00\x48\x8d\x84\x24\x90\x00\x00\x00\x48\x89\x44\x24\x18\x48\xc7\x44\x24\x10\x00\x00\x00\x00\x48\xc7\x44\x24\x08\x00\x00\x00\x00\x48\x8d\x84\x24\xa0\x00\x00\x00\x48\x89\x04\x24\x4c\x8d\x4c\x24\x60\x41\xb8\x00\x00\x00\x00\x48\x8b\x4c\x24\x20\x48\x89\xda\x4c\x89\xf6\x49\x8b\x7d\x00\xe8\x2d\x45\x00\x00\x89\xc5\x85\xc0\x74\x24\x89\xc7\xe8\xfb\x55\x00\x00\x48\x89\xc1\x89\xea\x48\x8d\x35\x07\x83\x00\x00\xbf\x01\x00\x00\x00\xb8\x00\x00\x00\x00\xe8\x20\xf8\xff\xff\xeb\x5f\x48\x8d\xac\x24\xa0\x00\x00\x00\x48\x89\xe9\x48\x8d\x54\x24\x60\x48\x8d\x35\x6e\x91\x00\x00\xbf\x01\x00\x00\x00\xb8\x00\x00\x00\x00\xe8\xf8\xf7\xff\xff\x48\x8d\x84\x24\x90\x00\x00\x00\x48\x89\x44\x24\x08\x48\x89\x2c\x24\x4c\x8d\x4c\x24\x60\x4c\x8b\x44\x24\x20\x48\x89\xd9\x48\x8d\x54\x24\x30\x48\x8d\x35\xde\x82\x00\x00\xbf\x01\x00\x00\x00\xb8\x00\x00\x00\x00\xe8\xbf\xf7\xff\xff\x48\x8b\x84\x24\xb8\x00\x00\x00\x64\x48\x33\x04\x25\x28\x00\x00\x00\x74\x05\xe8\xe7\xf5\xff\xff\x48\x8b\x9c\x24\xc8\x00\x00\x00\x48\x8b\xac\x24\xd0\x00\x00\x00\x4c\x8b\xa4\x24\xd8\x00\x00\x00\x4c\x8b\xac\x24\xe0\x00\x00\x00\x4c\x8b\xb4\x24\xe8\x00\x00\x00\x4c\x8b\xbc\x24\xf0\x00\x00\x00\x48\x81\xc4\xf8\x00\x00\x00\xc3\x41\x57\x41\x56\x41\x55\x41\x54\x55\x53\x48\x81\xec\x98\x0d\x00\x00\x41\x89\xfd\x48\x89\xf5\x64\x48\x8b\x04\x25\x28\x00\x00\x00\x48\x89\x84\x24\x88\x0d\x00\x00\x31\xc0\xc7\x84\x24\x94\x00\x00\x00\x00\x00\x00\x00\x48\x8d\x35\x8b\x82\x00\x00\xbf\x01\x00\x00\x00\xe8\x29\xf7\xff\xff\x48\x8d\x35\xc2\x82\x00\x00\xbf\x01\x00\x00\x00\xb8\x00\x00\x00\x00\xe8\x13\xf7\xff\xff\x41\x83\xfd\x01\x0f\x8e\x5a\x01\x00\x00\x48\xc7\x44\x24\x30\x00\x00\x00\x00\xc7\x44\x24\x4c\x00\x00\x00\x00\x48\xc7\x44\x24\x40\x00\x00\x00\x00\x48\xc7\x44\x24\x38\x00\x00\x00\x00\x41\xbf\x00\x00\x00\x00\xbb\x01\x00\x00\x00\x4c\x8d\x35\x5b\x90\x00\x00\x48\x63\xc3\x48\x8b\x44\xc5\x00\xb9\x07\x00\x00\x00\x48\x89\xc6\x4c\x89\xf7\xf3\xa6\x0f\x97\xc1\x0f\x92\xc2\x38\xd1\x0f\x84\x02\x01\x00\x00\x80\x38\x2d\x0f\x85\x80\x00\x00\x00\x80\x78\x01\x68\x75\x0a\x80\x78\x02\x00\x0f\x84\xe9\x00\x00\x00\x44\x0f\xb6\x60\x01\x41\x80\xfc\x75\x75\x10\x83\xc3\x01\x48\x63\xc3\x4c\x8b\x7c\xc5\x00\xe9\x82\x00\x00\x00\x41\x80\xfc\x6d\x75\x12\x83\xc3\x01\x48\x63\xc3\x48\x8b\x44\xc5\x00\x48\x89\x44\x24\x38\xeb\x6a\x41\x80\xfc\x70\x75\x12\x83\xc3\x01\x48\x63\xc3\x48\x8b\x44\xc5\x00\x48\x89\x44\x24\x40\xeb\x52\x41\x80\xfc\x36\x74\x44\x41\x80\xfc\x65\x75\x12\x83\xc3\x01\x48\x63\xc3\x48\x8b\x44\xc5\x00\x48\x89\x44\x24\x30\xeb\x34\x45\x84\xe4\x75\x3d\xeb\x79\x48\x89\xc1\x48\x8d\x15\xac\x8f\x00\x00\xbe\x01\x00\x00\x00\x48\x8b\x05\x1a\xb3\x20\x00\x48\x8b\x38\xb8\x00\x00\x00\x00\xe8\x85\xf6\xff\xff\xeb\x08\xc7\x44\x24\x4c\x01\x00\x00\x00\x83\xc3\x01\x41\x39\xdd\x0f\x8f\x1b\xff\xff\xff\xeb\x3e\x44\x8d\x73\x01\x45\x29\xf5\x41\x80\xfc\x61\x75\x06\x41\x83\xfd\x03\x7e\x2b\x41\x80\xfc\x41\x75\x06\x41\x83\xfd\x05\x7e\x1f\x41\x80\xfc\x55\x75\x06\x41\x83\xfd\x01\x7e\x13\x41\x80\xfc\x44\x0f\x85\x99\x02\x00\x00\x45\x85\xed\x0f\x8f\x90\x02\x00\x00\x48\x8b\x1d\xb0\xb2\x20\x00\x48\x8b\x4d\x00\x48\x8d\x15\x95\x81\x00\x00\xbe\x01\x00\x00\x00\x48\x8b\x3b\xb8\x00\x00\x00\x00\xe8\x0b\xf6\xff\xff\x48\x8b\x4d\x00\x48\x8d\x15\xd8\x81\x00\x00\xbe\x01\x00\x00\x00\x48\x8b\x3b\xb8\x00\x00\x00\x00\xe8\xee\xf5\xff\xff\x48\x8b\x4d\x00\x48\x8d\x15\x23\x82\x00\x00\xbe\x01\x00\x00\x00\x48\x8b\x3b\xb8\x00\x00\x00\x00\xe8\xd1\xf5\xff\xff\x48\x8b\x4d\x00\x48\x8d\x15\x3e\x82\x00\x00\xbe\x01\x00\x00\x00\x48\x8b\x3b\xb8\x00\x00\x00\x00\xe8\xb4\xf5\xff\xff\x48\x8b\x4d\x00\x48\x8d\x15\x51\x82\x00\x00\xbe\x01\x00\x00\x00\x48\x8b\x3b\xb8\x00\x00\x00\x00\xe8\x97\xf5\xff\xff\x48\x8b\x4d\x00\x48\x8d\x15\x94\x82\x00\x00\xbe\x01\x00\x00\x00\x48\x8b\x3b\xb8\x00\x00\x00\x00\xe8\x7a\xf5\xff\xff\x48\x8b\x4d\x00\x48\x8d\x15\x17\x83\x00\x00\xbe\x01\x00\x00\x00\x48\x8b\x3b\xb8\x00\x00\x00\x00\xe8\x5d\xf5\xff\xff\x48\x8b\x4d\x00\x48\x8d\x15\x82\x83\x00\x00\xbe\x01\x00\x00\x00\x48\x8b\x3b\xb8\x00\x00\x00\x00\xe8\x40\xf5\xff\xff\x48\x8b\x4d\x00\x48\x8d\x15\xd5\x83\x00\x00\xbe\x01\x00\x00\x00\x48\x8b\x3b\xb8\x00\x00\x00\x00\xe8\x23\xf5\xff\xff\x48\x8b\x4d\x00\x48\x8d\x15\x38\x84\x00\x00\xbe\x01\x00\x00\x00\x48\x8b\x3b\xb8\x00\x00\x00\x00\xe8\x06\xf5\xff\xff\x48\x8b\x4d\x00\x48\x8d\x15\x73\x84\x00\x00\xbe\x01\x00\x00\x00\x48\x8b\x3b\xb8\x00\x00\x00\x00\xe8\xe9\xf4\xff\xff\x48\x8b\x4d\x00\x48\x8d\x15\xae\x84\x00\x00\xbe\x01\x00\x00\x00\x48\x8b\x3b\xb8\x00\x00\x00\x00\xe8\xcc\xf4\xff\xff\x48\x8b\x4d\x00\x48\x8d\x15\xf9\x84\x00\x00\xbe\x01\x00\x00\x00\x48\x8b\x3b\xb8\x00\x00\x00\x00\xe8\xaf\xf4\xff\xff\x48\x8b\x4d\x00\x48\x8d\x15\x24\x85\x00\x00\xbe\x01\x00\x00\x00\x48\x8b\x3b\xb8\x00\x00\x00\x00\xe8\x92\xf4\xff\xff\x48\x8b\x4d\x00\x48\x8d\x15\x47\x85\x00\x00\xbe\x01\x00\x00\x00\x48\x8b\x3b\xb8\x00\x00\x00\x00\xe8\x75\xf4\xff\xff\x48\x8b\x4d\x00\x48\x8d\x15\xb2\x85\x00\x00\xbe\x01\x00\x00\x00\x48\x8b\x3b\xb8\x00\x00\x00\x00\xe8\x58\xf4\xff\xff\x48\x8d\x15\x74\x8d\x00\x00\xbe\x01\x00\x00\x00\x48\x8b\x3b\xb8\x00\x00\x00\x00\xe8\x3f\xf4\xff\xff\x48\x8d\x15\x74\x8d\x00\x00\xbe\x01\x00\x00\x00\x48\x8b\x3b\xb8\x00\x00\x00\x00\xe8\x26\xf4\xff\xff\x48\x8d\x15\x97\x85\x00\x00\xbe\x01\x00\x00\x00\x48\x8b\x3b\xb8\x00\x00\x00\x00\xe8\x0d\xf4\xff\xff\x48\x8d\x15\xb6\x85\x00\x00\xbe\x01\x00\x00\x00\x48\x8b\x3b\xb8\x00\x00\x00\x00\xe8\xf4\xf3\xff\xff\x48\x8d\x15\xc5\x85\x00\x00\xbe\x01\x00\x00\x00\x48\x8b\x3b\xb8\x00\x00\x00\x00\xe8\xdb\xf3\xff\xff\x48\x8d\x15\xfc\x85\x00\x00\xbe\x01\x00\x00\x00\x48\x8b\x3b\xb8\x00\x00\x00\x00\xe8\xc2\xf3\xff\xff\x48\x8d\x15\x63\x86\x00\x00\xbe\x01\x00\x00\x00\x48\x8b\x3b\xb8\x00\x00\x00\x00\xe8\xa9\xf3\xff\xff\xbb\x01\x00\x00\x00\xe9\xd8\x11\x00\x00\x4d\x85\xff\x75\x39\x4c\x8d\x8c\x24\x94\x00\x00\x00\x44\x8b\x44\x24\x4c\xb9\x00\x00\x00\x00\x48\x8b\x54\x24\x40\x48\x8b\x74\x24\x38\xbf\xd0\x07\x00\x00\xe8\xf4\x15\x00\x00\x48\x89\x44\x24\x38\x48\x85\xc0\x0f\x85\xb6\x11\x00\x00\xe9\x75\x11\x00\x00\x8b\x94\x24\x94\x00\x00\x00\x48\x8d\x35\x99\x8c\x00\x00\xbf\x01\x00\x00\x00\xb8\x00\x00\x00\x00\xe8\xc4\xf2\xff\xff\x4d\x85\xff\x75\x2f\x48\xc7\x44\x24\x38\x00\x00\x00\x00\xeb\x54\x48\x8b\x4b\x10\x48\x8b\x53\x08\x4c\x89\xfe\xbf\x01\x00\x00\x00\xb8\x00\x00\x00\x00\xe8\x9a\xf2\xff\xff\x48\x8b\x1b\x48\x85\xdb\x75\xde\xeb\x30\x41\xb8\x40\x00\x00\x00\x48\x8d\x8c\x24\x80\x0c\x00\x00\x48\x8d\x94\x24\xa0\x00\x00\x00\x48\x8d\x74\x24\x50\x4c\x89\xff\xe8\xa6\x28\x00\x00\x48\xc7\x44\x24\x38\x00\x00\x00\x00\x85\xc0\x75\x40\x41\xb8\x40\x00\x00\x00\x48\x8d\x8c\x24\x80\x0c\x00\x00\x48\x8d\x94\x24\xa0\x00\x00\x00\x48\x8d\x74\x24\x50\x48\x8b\x7c\x24\x38\xe8\x28\x22\x00\x00\x85\xc0\x0f\x84\x96\x10\x00\x00\x83\xf8\x02\x74\x2e\x83\xf8\x03\x74\x5c\x83\xf8\x01\x0f\x85\x86\x00\x00\x00\x48\x8b\x54\x24\x50\x48\x8d\x35\x0c\x8c\x00\x00\xbf\x01\x00\x00\x00\xb8\x00\x00\x00\x00\xe8\x05\xf2\xff\xff\xe9\x97\x00\x00\x00\x48\x8b\x54\x24\x50\x48\x8d\x35\x54\x85\x00\x00\xbf\x01\x00\x00\x00\xb8\x00\x00\x00\x00\xe8\xe5\xf1\xff\xff\x48\x8d\x35\xec\x8b\x00\x00\xbf\x01\x00\x00\x00\xb8\x00\x00\x00\x00\xe8\xcf\xf1\xff\xff\xeb\x64\x48\x8b\x54\x24\x50\x48\x8d\x35\x49\x85\x00\x00\xbf\x01\x00\x00\x00\xb8\x00\x00\x00\x00\xe8\xb2\xf1\xff\xff\x48\x8d\x35\xb9\x8b\x00\x00\xbf\x01\x00\x00\x00\xb8\x00\x00\x00\x00\xe8\x9c\xf1\xff\xff\xeb\x31\x48\x8b\x54\x24\x50\x48\x8d\x35\xb7\x8b\x00\x00\xbf\x01\x00\x00\x00\xb8\x00\x00\x00\x00\xe8\x7f\xf1\xff\xff\x48\x8d\x35\x86\x8b\x00\x00\xbf\x01\x00\x00\x00\xb8\x00\x00\x00\x00\xe8\x69\xf1\xff\xff\x4d\x63\xf6\x4a\x8d\x5c\xf5\x00\x48\x8d\x94\x24\x80\x0c\x00\x00\x48\x8d\x35\x96\x8b\x00\x00\xbf\x01\x00\x00\x00\xb8\x00\x00\x00\x00\xe8\x43\xf1\xff\xff\x41\x80\xfc\x50\x0f\x84\x2c\x0f\x00\x00\x41\x80\xfc\x50\x7f\x58\x41\x80\xfc\x47\x0f\x84\x16\x0e\x00\x00\x41\x80\xfc\x47\x7f\x23\x41\x80\xfc\x43\x0f\x84\x81\x0b\x00\x00\x41\x80\xfc\x44\x0f\x84\xa9\x0c\x00\x00\x41\x80\xfc\x41\x0f\x85\x33\x0f\x00\x00\xe9\x62\x07\x00\x00\x41\x80\xfc\x4c\x0f\x84\x1d\x02\x00\x00\x41\x80\xfc\x4e\x66\x90\x0f\x84\x5d\x05\x00\x00\x41\x80\xfc\x4b\x0f\x85\x0e\x0f\x00\x00\xe9\x03\x0c\x00\x00\x41\x80\xfc\x64\x0f\x84\xcc\x04\x00\x00\x41\x80\xfc\x64\x7f\x23\x41\x80\xfc\x55\x0f\x84\x29\x09\x00\x00\x41\x80\xfc\x61\x0f\x84\xc6\x03\x00\x00\x41\x80\xfc\x53\x0f\x85\xdb\x0e\x00\x00\xe9\x64\x0c\x00\x00\x41\x80\xfc\x6e\x0f\x84\xbf\x04\x00\x00\x41\x80\xfc\x6e\x7f\x0c\x41\x80\xfc\x6c\x0f\x85\xbc\x0e\x00\x00\xeb\x19\x41\x80\xfc\x72\x0f\x84\xc9\x06\x00\x00\x41\x80\xfc\x73\x0f\x85\xa6\x0e\x00\x00\xe9\xde\x05\x00\x00\x48\x8d\xb4\x24\xa0\x00\x00\x00\x48\x8d\x7c\x24\x50\xe8\x31\xf2\xff\xff\x48\x8d\x35\x0a\x84\x00\x00\xbf\x01\x00\x00\x00\xb8\x00\x00\x00\x00\xe8\x4b\xf0\xff\xff\xbb\x00\x00\x00\x00\x4c\x8d\xa4\x24\x40\x0d\x00\x00\x41\x89\xd9\x4c\x8d\x05\x93\x8a\x00\x00\xb9\x06\x00\x00\x00\xba\x01\x00\x00\x00\xbe\x06\x00\x00\x00\x48\x8d\xbc\x24\x50\x0d\x00\x00\xb8\x00\x00\x00\x00\xe8\xe3\xed\xff\xff\xc6\x84\x24\xc0\x0c\x00\x00\x00\xc6\x84\x24\x70\x0d\x00\x00\x00\xc6\x84\x24\x30\x0d\x00\x00\x00\xc6\x84\x24\x30\x0c\x00\x00\x00\xc6\x84\x24\x60\x0d\x00\x00\x00\xc6\x84\x24\x40\x0d\x00\x00\x00\xc6\x84\x24\x00\x0d\x00\x00\x00\x48\x8d\x84\x24\x30\x0d\x00\x00\x48\x89\x44\x24\x20\x48\x8d\x84\x24\xc0\x0c\x00\x00\x48\x89\x44\x24\x18\x48\x8d\x84\x24\x70\x0d\x00\x00\x48\x89\x44\x24\x10\x48\x8d\x84\x24\x30\x0c\x00\x00\x48\x89\x44\x24\x08\x48\x8d\x84\x24\x80\x0d\x00\x00\x48\x89\x04\x24\x4d\x89\xe1\x4c\x8d\x84\x24\x00\x0d\x00\x00\x48\x8d\x8c\x24\x60\x0d\x00\x00\x48\x8d\x94\x24\x50\x0d\x00\x00\x48\x8d\xb4\x24\xa4\x05\x00\x00\x48\x8b\x7c\x24\x50\xe8\xf7\x37\x00\x00\x89\xc5\x85\xc0\x75\x63\x48\x8d\x84\x24\x30\x0d\x00\x00\x48\x89\x44\x24\x18\x48\x8d\x84\x24\xc0\x0c\x00\x00\x48\x89\x44\x24\x10\x48\x8d\x84\x24\x30\x0c\x00\x00\x48\x89\x44\x24\x08\x4c\x89\x24\x24\x4c\x8d\x8c\x24\x00\x0d\x00\x00\x4c\x8d\x84\x24\x60\x0d\x00\x00\x48\x8d\x8c\x24\x80\x0d\x00\x00\x89\xda\x48\x8d\x35\x14\x83\x00\x00\xbf\x01\x00\x00\x00\xb8\x00\x00\x00\x00\xe8\x0d\xef\xff\xff\x83\xc3\x01\xe9\xc7\xfe\xff\xff\x89\xc7\xe8\xbe\x4c\x00\x00\x48\x89\xc1\x89\xea\x48\x8d\x35\x12\x83\x00\x00\xbf\x01\x00\x00\x00\xb8\x00\x00\x00\x00\xe8\xe3\xee\xff\xff\xbb\x00\x00\x00\x00\xe9\x30\x0d\x00\x00\x48\x8d\x94\x24\x80\x00\x00\x00\xb9\x04\x00\x00\x00\xb8\x00\x00\x00\x00\x48\x89\xd7\xf3\xab\x48\x89\x14\x24\x4c\x8d\x0d\x19\x89\x00\x00\x4c\x8d\x05\x17\x89\x00\x00\x48\x8d\x0d\x14\x89\x00\x00\x48\x8d\x15\x07\x89\x00\x00\x48\x8d\xb4\x24\xa4\x05\x00\x00\x48\x8b\x7c\x24\x50\xe8\x39\x3e\x00\x00\x89\xc3\x85\xc0\x0f\x85\x8d\x00\x00\x00\x48\x8d\x35\x2f\x82\x00\x00\xbf\x01\x00\x00\x00\xb8\x00\x00\x00\x00\xe8\x70\xee\xff\xff\x48\x8b\x9c\x24\x80\x00\x00\x00\xbd\x00\x00\x00\x00\x4c\x8d\x25\xac\x82\x00\x00\xeb\x4d\x44\x0f\xb7\x43\x14\x48\x8d\x8b\xd8\x00\x00\x00\x8b\x43\x10\x89\x44\x24\x18\x48\x8d\x43\x18\x48\x89\x44\x24\x10\x48\x8d\x83\x98\x00\x00\x00\x48\x89\x44\x24\x08\x0f\xb7\x43\x16\x89\x04\x24\x4c\x8d\x4b\x58\x89\xea\x4c\x89\xe6\xbf\x01\x00\x00\x00\xb8\x00\x00\x00\x00\xe8\x13\xee\xff\xff\x83\xc5\x01\x48\x8b\x1b\x48\x85\xdb\x75\xae\x48\x8d\xbc\x24\x80\x00\x00\x00\xe8\x4e\x54\x00\x00\xeb\x27\x89\xc7\xe8\xb2\x4b\x00\x00\x48\x89\xc1\x89\xda\x48\x8d\x35\x5e\x82\x00\x00\xbf\x01\x00\x00\x00\xb8\x00\x00\x00\x00\xe8\xd7\xed\xff\xff\xbd\x00\x00\x00\x00\x48\x8d\x84\x24\x80\x00\x00\x00\x48\x89\x04\x24\x4c\x8d\x0d\x21\x88\x00\x00\x4c\x8d\x05\x29\x88\x00\x00\x48\x8d\x0d\x1c\x88\x00\x00\x48\x8d\x15\x0f\x88\x00\x00\x48\x8d\xb4\x24\xa4\x05\x00\x00\x48\x8b\x7c\x24\x50\xe8\x41\x3d\x00\x00\x89\xc3\x85\xc0\x75\x75\x48\x8b\x9c\x24\x80\x00\x00\x00\x4c\x8d\x25\xd3\x81\x00\x00\xeb\x4d\x44\x0f\xb7\x43\x14\x48\x8d\x8b\xd8\x00\x00\x00\x8b\x43\x10\x89\x44\x24\x18\x48\x8d\x43\x18\x48\x89\x44\x24\x10\x48\x8d\x83\x98\x00\x00\x00\x48\x89\x44\x24\x08\x0f\xb7\x43\x16\x89\x04\x24\x4c\x8d\x4b\x58\x89\xea\x4c\x89\xe6\xbf\x01\x00\x00\x00\xb8\x00\x00\x00\x00\xe8\x3a\xed\xff\xff\x83\xc5\x01\x48\x8b\x1b\x48\x85\xdb\x75\xae\x48\x8d\xbc\x24\x80\x00\x00\x00\xe8\x75\x53\x00\x00\xe9\x74\x0b\x00\x00\x89\xc7\xe8\xd6\x4a\x00\x00\x48\x89\xc1\x89\xda\x48\x8d\x35\x82\x81\x00\x00\xbf\x01\x00\x00\x00\xb8\x00\x00\x00\x00\xe8\xfb\xec\xff\xff\xbb\x00\x00\x00\x00\xe9\x48\x0b\x00\x00\x48\x8d\x05\x4f\x87\x00\x00\x41\x83\xfd\x04\x7e\x04\x48\x8b\x43\x20\x4c\x8b\x4b\x18\x4c\x8b\x43\x10\x48\x8b\x4b\x08\xc7\x44\x24\x10\x00\x00\x00\x00\x48\x8b\x54\x24\x30\x48\x89\x54\x24\x08\x48\x89\x04\x24\x48\x8b\x13\x48\x8d\xb4\x24\xa0\x00\x00\x00\x48\x8d\x7c\x24\x50\xe8\x0a\xf2\xff\xff\xbb\x00\x00\x00\x00\xe9\xf6\x0a\x00\x00\x48\x63\xc5\x48\x8b\x7c\xc3\x08\x4c\x8b\x24\xc3\x48\x85\xff\x74\x05\x4d\x85\xe4\x75\x1e\x4c\x89\xf2\xbe\x01\x00\x00\x00\x48\x8b\x05\x82\xa9\x20\x00\x48\x8b\x38\xb8\x00\x00\x00\x00\xe8\xed\xec\xff\xff\xeb\x61\xe8\x34\xf1\xff\xff\x48\x85\xc0\x0f\x1f\x00\x75\x22\x48\x8d\x15\xdf\x86\x00\x00\xbe\x01\x00\x00\x00\x48\x8b\x05\x53\xa9\x20\x00\x48\x8b\x38\xb8\x00\x00\x00\x00\xe8\xbe\xec\xff\xff\xeb\x32\x41\xb8\x00\x00\x00\x00\x48\x89\xc1\x4c\x89\xe2\x48\x8d\xb4\x24\xa4\x05\x00\x00\x48\x8b\x7c\x24\x50\xe8\x55\x31\x00\x00\x89\xc2\x4c\x89\xfe\xbf\x01\x00\x00\x00\xb8\x00\x00\x00\x00\xe8\x0a\xec\xff\xff\x83\xc5\x02\xeb\x13\xbd\x00\x00\x00\x00\x4c\x8d\x35\x6e\x86\x00\x00\x4c\x8d\x3d\x9a\x80\x00\x00\x44\x39\xed\x0f\x8c\x4a\xff\xff\xff\xbb\x00\x00\x00\x00\xe9\x36\x0a\x00\x00\x48\x8d\x05\x3d\x86\x00\x00\x41\x83\xfd\x04\x7e\x04\x48\x8b\x43\x20\x4c\x8b\x4b\x18\x4c\x8b\x43\x10\x48\x8b\x4b\x08\xc7\x44\x24\x10\x01\x00\x00\x00\x48\x8b\x54\x24\x30\x48\x89\x54\x24\x08\x48\x89\x04\x24\x48\x8b\x13\x48\x8d\xb4\x24\xa0\x00\x00\x00\x48\x8d\x7c\x24\x50\xe8\xf8\xf0\xff\xff\xbb\x00\x00\x00\x00\xe9\xe4\x09\x00\x00\x41\x83\xfd\x02\x7f\x20\x48\x8d\x15\x1a\x86\x00\x00\xbe\x01\x00\x00\x00\x48\x8b\x05\x7c\xa8\x20\x00\x48\x8b\x38\xb8\x00\x00\x00\x00\xe8\xe7\xeb\xff\xff\x41\x83\xfd\x03\x0f\x8e\x54\x0a\x00\x00\x48\x8b\x6b\x18\x48\x8b\x7b\x10\x4c\x8b\x63\x08\x48\x8b\x1b\x48\x85\xed\x75\x07\x48\x8d\x2d\xa7\x85\x00\x00\x48\x85\xff\x74\x0a\x48\x85\xdb\x74\x05\x4d\x85\xe4\x75\x2a\x48\x8d\x15\xa1\x85\x00\x00\xbe\x01\x00\x00\x00\x48\x8b\x05\x28\xa8\x20\x00\x48\x8b\x38\xb8\x00\x00\x00\x00\xe8\x93\xeb\xff\xff\xbb\x00\x00\x00\x00\xe9\x60\x09\x00\x00\xe8\xd2\xef\xff\xff\x49\x89\xc0\x48\x85\xc0\x75\x2a\x48\x8d\x15\x7d\x85\x00\x00\xbe\x01\x00\x00\x00\x48\x8b\x05\xf1\xa7\x20\x00\x48\x8b\x38\xb8\x00\x00\x00\x00\xe8\x5c\xeb\xff\xff\xbb\x00\x00\x00\x00\xe9\x29\x09\x00\x00\x49\x89\xe9\x4c\x89\xe1\x48\x89\xda\x48\x8d\xb4\x24\xa4\x05\x00\x00\x48\x8b\x7c\x24\x50\xe8\x7c\x31\x00\x00\x89\xc2\x48\x8d\x35\x7e\x7f\x00\x00\xbf\x01\x00\x00\x00\xb8\x00\x00\x00\x00\xe8\x9f\xea\xff\xff\xbb\x00\x00\x00\x00\xe9\xec\x08\x00\x00\x48\x8d\xb4\x24\xa0\x00\x00\x00\x48\x8d\x7c\x24\x50\xe8\x53\xec\xff\xff\x48\x8d\x9c\x24\xa4\x03\x00\x00\x48\x89\xde\x48\x8b\x7c\x24\x60\xe8\x00\x22\x00\x00\x41\x89\xc4\x48\x89\xde\x48\x8b\x7c\x24\x60\xe8\x97\x22\x00\x00\x89\xc5\x48\x89\xde\x48\x8b\x7c\x24\x60\xe8\x2f\x23\x00\x00\x41\x89\xc5\x48\x89\xde\x48\x8b\x7c\x24\x60\xe8\xc6\x23\x00\x00\x89\xc3\x89\xe9\x44\x89\xe2\x48\x8d\x35\xde\x84\x00\x00\xbf\x01\x00\x00\x00\xb8\x00\x00\x00\x00\xe8\x22\xea\xff\xff\x89\xd9\x44\x89\xea\x48\x8d\x35\xe1\x84\x00\x00\xbf\x01\x00\x00\x00\xb8\x00\x00\x00\x00\xe8\x07\xea\xff\xff\xbb\x00\x00\x00\x00\xe9\x54\x08\x00\x00\x48\x63\xc5\x48\x8b\x0c\xc3\x4c\x8b\x4c\xc3\x08\xc7\x44\x24\x10\x00\x00\x00\x00\x48\x8b\x44\x24\x30\x48\x89\x44\x24\x08\x4c\x89\x24\x24\x49\x89\xc8\x48\x8d\x94\x24\x80\x0c\x00\x00\x48\x8d\xb4\x24\xa0\x00\x00\x00\x48\x8d\x7c\x24\x50\xe8\x1f\xef\xff\xff\x83\xc5\x02\xeb\x0c\xbd\x00\x00\x00\x00\x4c\x8d\x25\x12\x84\x00\x00\x44\x39\xed\x7c\xab\xbb\x00\x00\x00\x00\xe9\xf5\x07\x00\x00\x4c\x8b\x7b\x28\x48\x8b\x6b\x20\x4c\x8b\x63\x18\x4c\x8b\x6b\x10\x4c\x8b\x73\x08\x48\x8b\x1b\x4d\x85\xed\x74\x19\x48\x85\xdb\x74\x14\x4d\x85\xe4\x74\x0f\x4d\x85\xf6\x74\x0a\x48\x85\xed\x74\x05\x4d\x85\xff\x75\x2a\x48\x8d\x15\x88\x82\x00\x00\xbe\x01\x00\x00\x00\x48\x8b\x05\x5e\xa6\x20\x00\x48\x8b\x38\xb8\x00\x00\x00\x00\xe8\xc9\xe9\xff\xff\xbb\x00\x00\x00\x00\xe9\x96\x07\x00\x00\xba\x0a\x00\x00\x00\xbe\x00\x00\x00\x00\x48\x89\xef\xe8\x8d\xe8\xff\xff\x85\xc0\x0f\x85\xe0\x00\x00\x00\x48\x89\xef\xe8\xeb\xed\xff\xff\x48\x85\xc0\x0f\x84\xa5\x00\x00\x00\x0f\xb6\x10\x80\xfa\x54\x75\x4e\x80\x78\x01\x43\x75\x48\x80\x78\x02\x50\x75\x42\x80\x78\x03\x00\x0f\x85\x87\x00\x00\x00\x41\xb9\x06\x00\x00\x00\x4c\x8d\x05\x48\x83\x00\x00\xb9\x08\x00\x00\x00\xba\x01\x00\x00\x00\xbe\x08\x00\x00\x00\x48\x8d\xbc\x24\x50\x0d\x00\x00\xb8\x00\x00\x00\x00\xe8\x98\xe6\xff\xff\x48\x8d\xac\x24\x50\x0d\x00\x00\xeb\x79\x80\xfa\x55\x75\x4a\x80\x78\x01\x44\x75\x44\x80\x78\x02\x50\x75\x3e\x80\x78\x03\x00\x75\x38\x41\xb9\x11\x00\x00\x00\x4c\x8d\x05\xf9\x82\x00\x00\xb9\x08\x00\x00\x00\xba\x01\x00\x00\x00\xbe\x08\x00\x00\x00\x48\x8d\xbc\x24\x50\x0d\x00\x00\xb8\x00\x00\x00\x00\xe8\x49\xe6\xff\xff\x48\x8d\xac\x24\x50\x0d\x00\x00\xeb\x2a\x48\x8d\x15\x9f\x81\x00\x00\xbe\x01\x00\x00\x00\x48\x8b\x05\x64\xa5\x20\x00\x48\x8b\x38\xb8\x00\x00\x00\x00\xe8\xcf\xe8\xff\xff\xbb\x00\x00\x00\x00\xe9\x9c\x06\x00\x00\x48\x8d\x84\x24\x40\x0d\x00\x00\x48\x89\x44\x24\x10\x4c\x89\x7c\x24\x08\x48\x89\x2c\x24\x4d\x89\xe1\x4d\x89\xe8\x4c\x89\xf1\x48\x89\xda\x48\x8d\xb4\x24\xa4\x09\x00\x00\x48\x8b\x7c\x24\x68\xe8\x73\x3d\x00\x00\x89\xc5\x85\xc0\x74\x3b\x89\xc7\xe8\xc4\x45\x00\x00\x48\x89\x44\x24\x08\x89\x2c\x24\x4d\x89\xe1\x4d\x89\xe8\x4c\x89\xf1\x48\x89\xda\x48\x8d\x35\xe9\x7c\x00\x00\xbf\x01\x00\x00\x00\xb8\x00\x00\x00\x00\xe8\xda\xe7\xff\xff\xbb\x00\x00\x00\x00\xe9\x27\x06\x00\x00\x48\x8d\x84\x24\x40\x0d\x00\x00\x48\x89\x04\x24\x4d\x89\xe1\x4d\x89\xe8\x4c\x89\xf1\x48\x89\xda\x48\x8d\x35\xf1\x7c\x00\x00\xbf\x01\x00\x00\x00\xb8\x00\x00\x00\x00\xe8\xa2\xe7\xff\xff\xbb\x00\x00\x00\x00\xe9\xef\x05\x00\x00\x4c\x8b\x6b\x08\x48\x8b\x2b\xc7\x84\x24\x98\x00\x00\x00\x00\x00\x00\x00\x48\x85\xed\x74\x05\x4d\x85\xed\x75\x2a\x48\x8d\x15\x9b\x80\x00\x00\xbe\x01\x00\x00\x00\x48\x8b\x05\x71\xa4\x20\x00\x48\x8b\x38\xb8\x00\x00\x00\x00\xe8\xdc\xe7\xff\xff\xbb\x00\x00\x00\x00\xe9\xa9\x05\x00\x00\x48\x8d\x8c\x24\x98\x00\x00\x00\x48\x89\xea\x48\x8d\xb4\x24\xa4\x09\x00\x00\x48\x8b\x7c\x24\x68\xe8\xf5\x41\x00\x00\x41\x89\xc4\x83\xbc\x24\x98\x00\x00\x00\x00\x48\x8d\x05\xa3\x80\x00\x00\x48\x8d\x0d\xa0\x80\x00\x00\x48\x0f\x45\xc8\x48\x89\xea\x48\x8d\x35\x86\x7c\x00\x00\xbf\x01\x00\x00\x00\xb8\x00\x00\x00\x00\xe8\xff\xe6\xff\xff\x45\x85\xe4\x74\x24\x44\x89\xe7\xe8\xb2\x44\x00\x00\x48\x89\xc1\x44\x89\xe2\x48\x8d\x35\x95\x7c\x00\x00\xbf\x01\x00\x00\x00\xb8\x00\x00\x00\x00\xe8\xd6\xe6\xff\xff\x83\xbc\x24\x98\x00\x00\x00\x00\x75\x12\xbb\x00\x00\x00\x00\x41\x81\xfc\xc5\x02\x00\x00\x0f\x85\x11\x05\x00\x00\x4c\x89\xe9\x48\x89\xea\x48\x8d\xb4\x24\xa4\x09\x00\x00\x48\x8b\x7c\x24\x68\xe8\xbc\x3e\x00\x00\x41\x89\xc4\x4c\x89\xe9\x48\x89\xea\x48\x8d\x35\x72\x7c\x00\x00\xbf\x01\x00\x00\x00\xb8\x00\x00\x00\x00\xe8\x83\xe6\xff\xff\xbb\x00\x00\x00\x00\x45\x85\xe4\x0f\x84\xcc\x04\x00\x00\x44\x89\xe7\xe8\x2d\x44\x00\x00\x49\x89\xc0\x44\x89\xe1\x48\x89\xea\x48\x8d\x35\x75\x7c\x00\x00\xbf\x01\x00\x00\x00\xb8\x00\x00\x00\x00\xe8\x4e\xe6\xff\xff\xe9\xa0\x04\x00\x00\x4c\x8b\x34\xeb\xc7\x84\x24\x98\x00\x00\x00\x00\x00\x00\x00\x4d\x85\xf6\x75\x22\x48\x8d\x15\xa3\x80\x00\x00\xbe\x01\x00\x00\x00\x48\x8b\x05\x2a\xa3\x20\x00\x48\x8b\x38\xb8\x00\x00\x00\x00\xe8\x95\xe6\xff\xff\xeb\x75\x48\x8d\x8c\x24\x98\x00\x00\x00\x4c\x89\xf2\x48\x8d\xb4\x24\xa4\x09\x00\x00\x48\x8b\x7c\x24\x68\xe8\xb6\x40\x00\x00\x41\x89\xc4\x85\xc0\x74\x25\x89\xc7\xe8\xa8\x43\x00\x00\x48\x89\xc1\x44\x89\xe2\x48\x8d\x35\x8b\x7b\x00\x00\xbf\x01\x00\x00\x00\xb8\x00\x00\x00\x00\xe8\xcc\xe5\xff\xff\xeb\x2c\x83\xbc\x24\x98\x00\x00\x00\x00\x48\x8d\x0d\x3b\x7f\x00\x00\x49\x0f\x44\xcf\x4c\x89\xf2\x48\x8d\x35\x25\x7b\x00\x00\xbf\x01\x00\x00\x00\xb8\x00\x00\x00\x00\xe8\x9e\xe5\xff\xff\x48\x83\xc5\x01\xeb\x0c\xbd\x00\x00\x00\x00\x4c\x8d\x3d\x10\x7f\x00\x00\x41\x39\xed\x0f\x8f\x3a\xff\xff\xff\xbb\x00\x00\x00\x00\xe9\xd0\x03\x00\x00\x4c\x8b\x34\xeb\xc7\x84\x24\x98\x00\x00\x00\x00\x00\x00\x00\x4d\x85\xf6\x75\x22\x48\x8d\x15\xd3\x7f\x00\x00\xbe\x01\x00\x00\x00\x48\x8b\x05\x5a\xa2\x20\x00\x48\x8b\x38\xb8\x00\x00\x00\x00\xe8\xc5\xe5\xff\xff\xeb\x65\x48\x8d\x8c\x24\x98\x00\x00\x00\x4c\x89\xf2\x48\x8d\xb4\x24\xa4\x09\x00\x00\x48\x8b\x7c\x24\x68\xe8\x6b\x41\x00\x00\x41\x89\xc4\x85\xc0\x74\x25\x89\xc7\xe8\xd8\x42\x00\x00\x48\x89\xc1\x44\x89\xe2\x48\x8d\x35\x5b\x7b\x00\x00\xbf\x01\x00\x00\x00\xb8\x00\x00\x00\x00\xe8\xfc\xe4\xff\xff\xeb\x1c\x8b\x8c\x24\x98\x00\x00\x00\x4c\x89\xf2\x4c\x89\xfe\xbf\x01\x00\x00\x00\xb8\x00\x00\x00\x00\xe8\xde\xe4\xff\xff\x48\x83\xc5\x01\xeb\x0c\xbd\x00\x00\x00\x00\x4c\x8d\x3d\x4c\x7b\x00\x00\x41\x39\xed\x0f\x8f\x4a\xff\xff\xff\xbb\x00\x00\x00\x00\xe9\x10\x03\x00\x00\x48\x8b\x14\xeb\x48\x85\xd2\x75\x1e\x4c\x89\xf2\xbe\x01\x00\x00\x00\x48\x8b\x05\xa9\xa1\x20\x00\x48\x8b\x38\xb8\x00\x00\x00\x00\xe8\x14\xe5\xff\xff\xeb\x26\x48\x8d\xb4\x24\xa4\x09\x00\x00\x48\x8b\x7c\x24\x68\xe8\x01\x3e\x00\x00\x89\xc2\x4c\x89\xe6\xbf\x01\x00\x00\x00\xb8\x00\x00\x00\x00\xe8\x6c\xe4\xff\xff\x48\x83\xc5\x01\xeb\x13\xbd\x00\x00\x00\x00\x4c\x8d\x25\x1a\x7b\x00\x00\x4c\x8d\x35\xc8\x7e\x00\x00\x41\x39\xed\x7f\x95\xbb\x00\x00\x00\x00\xe9\x9b\x02\x00\x00\xc7\x84\x24\x98\x00\x00\x00\x00\x00\x00\x00\xc7\x84\x24\x9c\x00\x00\x00\x00\x00\x00\x00\x48\x8d\x8c\x24\x9c\x00\x00\x00\x48\x8d\x94\x24\x98\x00\x00\x00\x48\x8d\xb4\x24\xa4\x09\x00\x00\x48\x8b\x7c\x24\x68\xe8\xbf\x35\x00\x00\x8b\x8c\x24\x9c\x00\x00\x00\x8b\x94\x24\x98\x00\x00\x00\x48\x8d\x35\xdf\x7a\x00\x00\xbf\x01\x00\x00\x00\xb8\x00\x00\x00\x00\xe8\xe8\xe3\xff\xff\x83\xbc\x24\x9c\x00\x00\x00\x00\x48\x8d\x05\x59\x7d\x00\x00\x48\x8d\x0d\x56\x7d\x00\x00\x48\x0f\x45\xc8\x83\xbc\x24\x98\x00\x00\x00\x00\x48\x8d\x15\x43\x7d\x00\x00\x48\x0f\x45\xd0\x48\x8d\x35\xd4\x7a\x00\x00\xbf\x01\x00\x00\x00\xb8\x00\x00\x00\x00\xe8\xa5\xe3\xff\xff\x48\x8d\xb4\x24\xa4\x03\x00\x00\x48\x8b\x7c\x24\x60\xe8\x25\x1b\x00\x00\x89\xc5\x48\x8d\xb4\x24\xa4\x03\x00\x00\x48\x8b\x7c\x24\x60\xe8\xb8\x1b\x00\x00\x89\xc3\x48\x8d\xb4\x24\xa4\x03\x00\x00\x48\x8b\x7c\x24\x60\xe8\x4b\x1c\x00\x00\x41\x89\xc5\x48\x8d\xb4\x24\xa4\x03\x00\x00\x48\x8b\x7c\x24\x60\xe8\xdd\x1c\x00\x00\x41\x89\xc4\x89\xd9\x89\xea\x48\x8d\x35\xf5\x7d\x00\x00\xbf\x01\x00\x00\x00\xb8\x00\x00\x00\x00\xe8\x39\xe3\xff\xff\x44\x89\xe1\x44\x89\xea\x48\x8d\x35\xf7\x7d\x00\x00\xbf\x01\x00\x00\x00\xb8\x00\x00\x00\x00\xe8\x1d\xe3\xff\xff\xbb\x00\x00\x00\x00\xe9\x6a\x01\x00\x00\x48\x8b\x43\x20\x4c\x8b\x63\x18\x4c\x8b\x6b\x10\x48\x8b\x6b\x08\x48\x8b\x1b\xc7\x84\x24\x9c\x00\x00\x00\x00\x00\x00\x00\x4d\x85\xed\x74\x14\x48\x85\xdb\x74\x0f\x4d\x85\xe4\x74\x0a\x48\x85\xed\x74\x05\x48\x85\xc0\x75\x2a\x48\x8d\x15\xfb\x7b\x00\x00\xbe\x01\x00\x00\x00\x48\x8b\x05\xd1\x9f\x20\x00\x48\x8b\x38\xb8\x00\x00\x00\x00\xe8\x3c\xe3\xff\xff\xbb\x00\x00\x00\x00\xe9\x09\x01\x00\x00\x48\x8d\x94\x24\x9c\x00\x00\x00\x48\x89\x54\x24\x08\x48\x89\x04\x24\x4d\x89\xe1\x4d\x89\xe8\x48\x89\xe9\x48\x89\xda\x48\x8d\xb4\x24\xa4\x09\x00\x00\x48\x8b\x7c\x24\x68\xe8\xc8\x35\x00\x00\x41\x89\xc6\x85\xc0\x74\x3c\x89\xc7\xe8\x35\x40\x00\x00\x48\x89\x44\x24\x08\x44\x89\x34\x24\x49\x89\xe9\x49\x89\xd8\x4c\x89\xe1\x4c\x89\xea\x48\x8d\x35\xc9\x79\x00\x00\xbf\x01\x00\x00\x00\xb8\x00\x00\x00\x00\xe8\x4a\xe2\xff\xff\xbb\x00\x00\x00\x00\xe9\x97\x00\x00\x00\x8b\x84\x24\x9c\x00\x00\x00\x89\x04\x24\x49\x89\xe9\x49\x89\xd8\x4c\x89\xe1\x4c\x89\xea\x48\x8d\x35\xdb\x79\x00\x00\xbf\x01\x00\x00\x00\xb8\x00\x00\x00\x00\xe8\x14\xe2\xff\xff\xbb\x00\x00\x00\x00\xeb\x64\x48\x8d\x35\xef\x7c\x00\x00\xbf\x01\x00\x00\x00\xb8\x00\x00\x00\x00\xe8\xf7\xe1\xff\xff\x48\x8d\x94\x24\xa0\x01\x00\x00\x48\x8d\x35\xea\x7c\x00\x00\xbf\x01\x00\x00\x00\xb8\x00\x00\x00\x00\xe8\xd9\xe1\xff\xff\xbb\x00\x00\x00\x00\xeb\x29\x41\x0f\xbe\xcc\x48\x8d\x15\xd9\x7c\x00\x00\xbe\x01\x00\x00\x00\x48\x8b\x05\xc3\x9e\x20\x00\x48\x8b\x38\xb8\x00\x00\x00\x00\xe8\x2e\xe2\xff\xff\xbb\x01\x00\x00\x00\x48\x8d\x7c\x24\x50\xe8\xb8\x10\x00\x00\xeb\x25\x48\x8d\x15\x8e\x79\x00\x00\xbe\x01\x00\x00\x00\x48\x8b\x05\x92\x9e\x20\x00\x48\x8b\x38\xb8\x00\x00\x00\x00\xe8\xfd\xe1\xff\xff\xbb\x01\x00\x00\x00\x48\x8b\x7c\x24\x38\xe8\x89\x0d\x00\x00\xeb\x25\x48\x8d\x15\x8d\x79\x00\x00\xbe\x01\x00\x00\x00\x48\x8b\x05\x61\x9e\x20\x00\x48\x8b\x38\xb8\x00\x00\x00\x00\xe8\xcc\xe1\xff\xff\xbb\x01\x00\x00\x00\x89\xd8\x48\x8b\x94\x24\x88\x0d\x00\x00\x64\x48\x33\x14\x25\x28\x00\x00\x00\x74\x3e\xeb\x37\x48\x8d\x35\x81\x79\x00\x00\xbf\x01\x00\x00\x00\xb8\x00\x00\x00\x00\xe8\x1a\xe1\xff\xff\x48\x8b\x5c\x24\x38\x4c\x8d\x3d\xf2\x7a\x00\x00\xe9\x55\xee\xff\xff\x48\x8b\x7b\x10\x4c\x8b\x63\x08\x48\x8b\x1b\xe9\xb0\xf5\xff\xff\xe8\x34\xdf\xff\xff\x48\x81\xc4\x98\x0d\x00\x00\x5b\x5d\x41\x5c\x41\x5d\x41\x5e\x41\x5f\xc3\x90\x90\x48\x83\xec\x08\x49\x89\xf8\x44\x0f\xb6\x0e\x41\x80\xf9\x68\x75\x2e\x80\x7e\x01\x74\x75\x28\x80\x7e\x02\x74\x75\x7a\x80\x7e\x03\x70\x75\x74\x80\x7e\x04\x3a\x75\x55\x80\x7e\x05\x2f\x75\x4f\x80\x7e\x06\x2f\x75\x49\x48\x63\xd2\xe8\xa3\xde\xff\xff\xeb\x71\x4c\x89\xc7\xb8\x00\x00\x00\x00\x48\xc7\xc1\xff\xff\xff\xff\xf2\xae\x48\xf7\xd1\x83\xe9\x01\x41\x80\xf9\x2f\x74\x0b\x48\x63\xc1\x41\xc6\x04\x00\x2f\x83\xc1\x01\x39\xd1\x7f\x45\x29\xca\x48\x63\xd2\x48\x63\xc9\x49\x8d\x3c\x08\xe8\x64\xde\xff\xff\xeb\x32\x4c\x89\xc7\xb8\x00\x00\x00\x00\x48\xc7\xc1\xff\xff\xff\xff\xf2\xae\x48\xf7\xd1\x83\xe9\x01\xeb\xc5\x4c\x89\xc7\xb8\x00\x00\x00\x00\x48\xc7\xc1\xff\xff\xff\xff\xf2\xae\x48\xf7\xd1\x83\xe9\x01\xeb\xac\x48\x83\xc4\x08\xc3\x48\x83\xec\x58\x48\x89\x3c\x24\x89\x74\x24\x18\x48\x89\x54\x24\x20\x48\x8b\x05\xf3\x9c\x20\x00\x48\x89\x44\x24\x28\x48\x8b\x05\x07\x9d\x20\x00\x48\x89\x44\x24\x30\x48\x8b\x05\xeb\x9c\x20\x00\x48\x89\x44\x24\x38\x48\xc7\x44\x24\x40\x00\x00\x00\x00\x48\x89\xe7\xe8\x85\x58\x00\x00\x48\x83\xc4\x58\xc3\x41\x57\x41\x56\x41\x55\x41\x54\x55\x53\x48\x81\xec\x08\x09\x00\x00\x41\x89\xfd\x48\x89\x74\x24\x18\x49\x89\xd4\x48\x89\xcb\x4c\x89\xc5\x4d\x89\xce\x4c\x8b\xbc\x24\x40\x09\x00\x00\x64\x48\x8b\x04\x25\x28\x00\x00\x00\x48\x89\x84\x24\xf8\x08\x00\x00\x31\xc0\x66\xc7\x44\x24\x2e\x00\x00\x41\xc7\x01\x00\x00\x00\x00\x48\x89\x0c\x24\x49\x89\xd1\x4c\x8d\x05\xb2\x7a\x00\x00\xb9\x80\x00\x00\x00\xba\x01\x00\x00\x00\xbe\x80\x00\x00\x00\x48\x8d\xbc\x24\x30\x08\x00\x00\xe8\x38\xdd\xff\xff\x48\x85\xed\x75\x36\x48\x89\x5c\x24\x08\x4c\x89\x24\x24\x49\x89\xd9\x4c\x8d\x05\x58\x7b\x00\x00\xb9\x00\x08\x00\x00\xba\x01\x00\x00\x00\xbe\x00\x08\x00\x00\x48\x8d\x7c\x24\x30\xb8\x00\x00\x00\x00\xe8\x02\xdd\xff\xff\xe9\x37\x01\x00\x00\x4c\x89\x24\x24\x49\x89\xd9\x4c\x8d\x05\xf7\x7b\x00\x00\xb9\x00\x08\x00\x00\xba\x01\x00\x00\x00\xbe\x00\x08\x00\x00\x48\x8d\x7c\x24\x30\xb8\x00\x00\x00\x00\xe8\xd1\xdc\xff\xff\x48\x63\xf8\x48\x8d\x54\x24\x30\x48\x01\xd7\x48\x8b\x4d\x00\x48\x85\xc9\x0f\x84\xb1\x00\x00\x00\x48\x8d\x94\x24\x30\x08\x00\x00\x48\x8d\x47\x64\x41\xbc\x00\x00\x00\x00\x49\x89\xd0\x48\x39\xc2\x77\x12\xe9\x84\x01\x00\x00\x48\x83\xc0\x65\x49\x39\xc0\x0f\x86\x71\x01\x00\x00\xc6\x07\x3c\x48\x8d\x47\x01\x0f\xb6\x11\x84\xd2\x74\x14\x48\x89\xce\x88\x10\x48\x83\xc0\x01\x48\x83\xc6\x01\x0f\xb6\x16\x84\xd2\x75\xef\xc6\x00\x3e\x48\x83\xc0\x01\x48\x8b\x75\x08\x48\x85\xf6\x74\x18\x0f\xb6\x16\x84\xd2\x74\x11\x88\x10\x48\x83\xc0\x01\x48\x83\xc6\x01\x0f\xb6\x16\x84\xd2\x75\xef\xc6\x00\x3c\xc6\x40\x01\x2f\x48\x83\xc0\x02\x0f\xb6\x11\x84\xd2\x74\x11\x88\x10\x48\x83\xc0\x01\x48\x83\xc1\x01\x0f\xb6\x11\x84\xd2\x75\xef\xc6\x00\x3e\x48\x8d\x78\x01\x48\x83\xc5\x10\x48\x8b\x4d\x00\x48\x85\xc9\x0f\x85\x6e\xff\xff\xff\xc6\x07\x3c\xc6\x47\x01\x2f\xc6\x47\x02\x75\xc6\x47\x03\x3a\x48\x83\xc7\x04\x0f\xb6\x03\x84\xc0\x74\x11\x88\x07\x48\x83\xc7\x01\x48\x83\xc3\x01\x0f\xb6\x03\x84\xc0\x75\xef\x48\x8d\x94\x24\x30\x08\x00\x00\x48\x29\xfa\x48\x8d\x35\x2f\x79\x00\x00\xe8\xf6\xdb\xff\xff\x41\xb8\x00\x00\x00\x00\x48\x8d\x4c\x24\x20\x48\x8d\x54\x24\x2e\x48\x8d\xb4\x24\xb0\x08\x00\x00\x48\x8b\x7c\x24\x18\xe8\xcb\x51\x00\x00\x41\xbc\x00\x00\x00\x00\x85\xc0\x0f\x84\x80\x00\x00\x00\x45\x85\xed\x79\x1e\x0f\xb7\x74\x24\x2e\xba\x00\x00\x00\x00\x48\x8d\xbc\x24\xb0\x08\x00\x00\xe8\x9e\x3d\x00\x00\x41\x89\xc5\x85\xc0\x78\x5d\x0f\xb7\x4c\x24\x2e\x4c\x89\x3c\x24\x4c\x8d\x4c\x24\x30\x4c\x8d\x84\x24\x30\x08\x00\x00\x48\x8d\x94\x24\xb0\x08\x00\x00\x48\x8b\x74\x24\x20\x44\x89\xef\xe8\xd8\x61\x00\x00\x85\xc0\x7f\x10\x44\x89\xef\xe8\x0c\xdc\xff\xff\x41\xbc\x00\x00\x00\x00\xeb\x1e\x4c\x89\xf6\x44\x89\xef\xe8\xe9\x48\x00\x00\x49\x89\xc4\x44\x89\xef\xe8\xee\xdb\xff\xff\xeb\x06\x41\xbc\x00\x00\x00\x00\x4c\x89\xe0\x48\x8b\x94\x24\xf8\x08\x00\x00\x64\x48\x33\x14\x25\x28\x00\x00\x00\x74\x05\xe8\x6b\xdb\xff\xff\x48\x81\xc4\x08\x09\x00\x00\x5b\x5d\x41\x5c\x41\x5d\x41\x5e\x41\x5f\xc3\x48\x83\xec\x18\x48\x8d\x05\x5c\x78\x00\x00\x48\x89\x04\x24\xe8\x25\xfd\xff\xff\x48\x83\xc4\x18\xc3\x41\x57\x41\x56\x41\x55\x41\x54\x55\x53\x48\x81\xec\x58\x07\x00\x00\x89\x7c\x24\x38\x49\x89\xf6\x48\x89\xd5\x41\x89\xcf\x44\x89\x44\x24\x24\x4c\x89\x4c\x24\x48\x64\x48\x8b\x04\x25\x28\x00\x00\x00\x48\x89\x84\x24\x48\x07\x00\x00\x31\xc0\xc7\x84\x24\xb4\x00\x00\x00\x00\x00\x00\x00\xc7\x84\x24\xb8\x00\x00\x00\x01\x00\x00\x00\x4d\x85\xc9\x74\x07\x41\xc7\x01\xff\xff\xff\xff\x48\x85\xed\x48\x8d\x05\xeb\x77\x00\x00\x48\x0f\x44\xe8\x4c\x8d\x25\x06\x97\x20\x00\x48\x8d\x1d\x0f\x7a\x00\x00\x48\x89\xee\x48\x89\xdf\xe8\x28\x44\x00\x00\x48\x85\xc0\x74\x35\x48\x89\x44\x24\x18\x48\x8d\x35\x63\x78\x00\x00\x48\x89\xdf\xe8\x03\xdd\xff\xff\x48\x85\xc0\x75\x2f\x48\x83\x7c\x24\x48\x00\x0f\x84\x65\x07\x00\x00\x48\x8b\x4c\x24\x48\xc7\x01\x00\x00\x00\x00\xe9\x55\x07\x00\x00\x49\x83\xc4\x08\x49\x8b\x5c\x24\xf8\x48\x85\xdb\x75\xad\x48\x89\x44\x24\x18\x83\x7c\x24\x24\x01\x19\xff\x83\xe7\xf8\x83\xc7\x0a\xba\x00\x00\x00\x00\xbe\x02\x00\x00\x00\xe8\xe3\xdc\xff\xff\x41\x89\xc5\x85\xc0\x79\x2d\x48\x83\x7c\x24\x48\x00\x74\x0b\x48\x8b\x44\x24\x48\xc7\x00\x9b\xff\xff\xff\x48\x8d\x3d\x6c\x77\x00\x00\xe8\x2d\xdc\xff\xff\x48\xc7\x44\x24\x18\x00\x00\x00\x00\xe9\xf2\x06\x00\x00\x48\x8d\x94\x24\xc0\x06\x00\x00\xb9\x10\x00\x00\x00\xb8\x00\x00\x00\x00\x48\x89\xd7\xf3\x48\xab\x83\x7c\x24\x24\x00\x74\x39\x66\xc7\x84\x24\xc0\x06\x00\x00\x0a\x00\x45\x85\xff\x74\x0a\x66\xc7\x84\x24\xc2\x06\x00\x00\x07\x6c\x48\x8b\x05\x88\x98\x20\x00\x48\x8b\x10\x48\x89\x94\x24\xc8\x06\x00\x00\x48\x8b\x40\x08\x48\x89\x84\x24\xd0\x06\x00\x00\xeb\x19\x66\xc7\x84\x24\xc0\x06\x00\x00\x02\x00\x45\x85\xff\x74\x0a\x66\xc7\x84\x24\xc2\x06\x00\x00\x07\x6c\x41\xb8\x04\x00\x00\x00\x48\x8d\x8c\x24\xb8\x00\x00\x00\xba\x02\x00\x00\x00\xbe\x01\x00\x00\x00\x44\x89\xef\xe8\x5e\xd9\xff\xff\x85\xc0\x79\x2d\x48\x83\x7c\x24\x48\x00\x74\x0b\x48\x8b\x54\x24\x48\xc7\x02\x9b\xff\xff\xff\x48\x8d\x3d\xb1\x76\x00\x00\xe8\x6b\xdb\xff\xff\x48\xc7\x44\x24\x18\x00\x00\x00\x00\xe9\x30\x06\x00\x00\x4d\x85\xf6\x0f\x84\xf4\x00\x00\x00\x83\x7c\x24\x24\x00\x74\x48\x4c\x89\xf7\xe8\x55\xda\xff\xff\x89\x84\x24\xbc\x00\x00\x00\x41\xb8\x08\x00\x00\x00\x48\x8d\x8c\x24\xbc\x00\x00\x00\xba\x11\x00\x00\x00\xbe\x29\x00\x00\x00\x44\x89\xef\xe8\xee\xd8\xff\xff\x85\xc0\x0f\x89\x0a\x06\x00\x00\x48\x8d\x3d\x50\x76\x00\x00\xe8\x0a\xdb\xff\xff\xe9\xf9\x05\x00\x00\x4c\x89\xf7\xe8\xdd\xd9\xff\xff\x89\x84\x24\xb0\x00\x00\x00\x83\xf8\xff\x74\x39\x89\x84\x24\xc4\x06\x00\x00\x41\xb8\x04\x00\x00\x00\x48\x8d\x8c\x24\xb0\x00\x00\x00\xba\x20\x00\x00\x00\xbe\x00\x00\x00\x00\x44\x89\xef\xe8\x9a\xd8\xff\xff\x85\xc0\x79\x72\x48\x8d\x3d\x00\x76\x00\x00\xe8\xba\xda\xff\xff\xeb\x64\x48\xc7\x84\x24\x90\x00\x00\x00\x00\x00\x00\x00\xc7\x84\x24\x98\x00\x00\x00\x00\x00\x00\x00\x4c\x89\xf7\xe8\xa9\xd9\xff\xff\x89\x84\x24\x98\x00\x00\x00\x41\xb8\x0c\x00\x00\x00\x48\x8d\x8c\x24\x90\x00\x00\x00\xba\x20\x00\x00\x00\xbe\x00\x00\x00\x00\x44\x89\xef\xe8\x42\xd8\xff\xff\x85\xc0\x79\x1a\x48\x8d\x3d\xa8\x75\x00\x00\xe8\x62\xda\xff\xff\xeb\x0c\xba\x1c\x00\x00\x00\x83\x7c\x24\x24\x00\x75\x05\xba\x10\x00\x00\x00\x48\x8d\xb4\x24\xc0\x06\x00\x00\x44\x89\xef\xe8\x1f\xda\xff\xff\x85\xc0\x74\x35\x48\x83\x7c\x24\x48\x00\x74\x0b\x48\x8b\x4c\x24\x48\xc7\x01\x9b\xff\xff\xff\x48\x8d\x3d\x6d\x75\x00\x00\xe8\x1c\xda\xff\xff\x44\x89\xef\xe8\x74\xd8\xff\xff\x48\xc7\x44\x24\x18\x00\x00\x00\x00\xe9\xd9\x04\x00\x00\x48\x83\x7c\x24\x48\x00\x74\x0b\x48\x8b\x44\x24\x48\xc7\x00\x00\x00\x00\x00\xba\xd3\x4d\x62\x10\x8b\x44\x24\x38\xf7\xe2\xc1\xea\x06\x89\x54\x24\x50\x85\xd2\x75\x10\xc7\x44\x24\x50\x01\x00\x00\x00\xc7\x44\x24\x38\xe8\x03\x00\x00\x48\x8d\x05\x0e\x77\x00\x00\xc7\x44\x24\x3c\x01\x00\x00\x00\x41\xbf\x00\x00\x00\x00\xc7\x44\x24\x20\x00\x00\x00\x00\x48\x8d\x54\x24\x60\x48\x89\x54\x24\x10\x45\x85\xff\x0f\x85\x48\x01\x00\x00\x83\x7c\x24\x24\x00\x0f\x84\x90\x04\x00\x00\x83\x7c\x24\x3c\x00\x0f\x85\xe8\x04\x00\x00\x8b\x4c\x24\x50\x89\x4c\x24\x08\x48\x89\x04\x24\x4c\x8d\x0d\xc5\x74\x00\x00\x4c\x8d\x05\x9d\x77\x00\x00\xb9\x00\x06\x00\x00\xba\x01\x00\x00\x00\xbe\x00\x06\x00\x00\x48\x8d\xbc\x24\xc0\x00\x00\x00\xb8\x00\x00\x00\x00\xe8\xdc\xd6\xff\xff\x89\xc5\xb9\x06\x00\x00\x00\xb8\x00\x00\x00\x00\x48\x8b\x7c\x24\x10\xf3\x48\xab\xc7\x44\x24\x68\x02\x00\x00\x00\x48\x8d\x3d\x5b\x74\x00\x00\x48\x8d\x8c\x24\xa8\x00\x00\x00\x48\x8d\x54\x24\x60\x48\x8d\x35\x70\x74\x00\x00\xe8\x60\xd9\xff\xff\x85\xc0\x74\x42\x48\x83\x7c\x24\x48\x00\x74\x0b\x48\x8b\x54\x24\x48\xc7\x02\x9b\xff\xff\xff\x89\xc7\xe8\x32\xd7\xff\xff\x48\x89\xc1\x48\x8d\x15\x48\x74\x00\x00\xbe\x01\x00\x00\x00\x48\x8b\x05\xa4\x95\x20\x00\x48\x8b\x38\xb8\x00\x00\x00\x00\xe8\x0f\xd9\xff\xff\xe9\x95\x03\x00\x00\x48\x8b\x9c\x24\xa8\x00\x00\x00\x48\x85\xdb\x74\x3b\x48\x63\xd5\x44\x8b\x4b\x10\x4c\x8b\x43\x18\xb9\x00\x00\x00\x00\x48\x8d\xb4\x24\xc0\x00\x00\x00\x44\x89\xef\xe8\xed\xd6\xff\xff\x89\xc5\x85\xc0\x79\x0c\x48\x8d\x3d\x01\x74\x00\x00\xe8\x8b\xd8\xff\xff\x48\x8b\x5b\x28\x48\x85\xdb\x75\xc5\x48\x8b\xbc\x24\xa8\x00\x00\x00\xe8\xf5\xd8\xff\xff\x85\xed\x79\x1c\x48\x83\x7c\x24\x48\x00\x0f\x84\x30\x03\x00\x00\x48\x8b\x4c\x24\x48\xc7\x01\x9b\xff\xff\xff\xe9\x20\x03\x00\x00\x4c\x8d\x84\x24\xb4\x00\x00\x00\x8b\x4c\x24\x38\xba\x00\x06\x00\x00\x48\x8d\xb4\x24\xc0\x00\x00\x00\x44\x89\xef\xe8\x7c\x3e\x00\x00\x41\x89\xc7\x85\xc0\x79\x1c\x48\x83\x7c\x24\x48\x00\x0f\x84\xec\x02\x00\x00\x48\x8b\x44\x24\x48\xc7\x00\x9b\xff\xff\xff\xe9\xdc\x02\x00\x00\x85\xc0\x74\x09\x85\xc0\x7f\x51\xe9\xb1\x02\x00\x00\x48\x83\x7c\x24\x18\x00\x74\x1c\x48\x83\x7c\x24\x48\x00\x0f\x84\xbb\x02\x00\x00\x48\x8b\x54\x24\x48\xc7\x02\x00\x00\x00\x00\xe9\xab\x02\x00\x00\x83\x7c\x24\x24\x00\x0f\x84\x82\x02\x00\x00\x83\x7c\x24\x3c\x00\x0f\x84\x6f\x02\x00\x00\x83\x6c\x24\x20\x01\xc7\x44\x24\x3c\x00\x00\x00\x00\xe9\x65\x02\x00\x00\x41\x8d\x47\xff\x4c\x8d\x70\x01\xbb\x00\x00\x00\x00\xc7\x44\x24\x58\x00\x00\x00\x00\x48\xc7\x44\x24\x28\x00\x00\x00\x00\x48\xc7\x44\x24\x40\x00\x00\x00\x00\xb8\x00\x00\x00\x00\xbd\x00\x00\x00\x00\xc7\x44\x24\x54\x00\x00\x00\x00\x44\x89\x6c\x24\x5c\x41\x89\xdd\x0f\xb6\x94\x1c\xc0\x00\x00\x00\x80\xfa\x0d\x74\x1a\x80\xfa\x3a\x74\x0b\x80\xfa\x0a\x0f\x85\xaf\x00\x00\x00\xeb\x0a\x85\xed\x0f\x44\xeb\xe9\xa3\x00\x00\x00\x85\xed\x0f\x84\x98\x00\x00\x00\x83\xc5\x01\x4c\x63\xe5\x42\x80\xbc\x24\xc0\x00\x00\x00\x20\x74\xef\x48\x98\x48\x8d\x8c\x24\xc0\x00\x00\x00\x48\x01\xc1\x48\x89\x4c\x24\x30\xba\x08\x00\x00\x00\x48\x8d\x35\x91\x72\x00\x00\x48\x89\xcf\xe8\x81\xd6\xff\xff\x85\xc0\x75\x1f\x48\x8d\x84\x24\xc0\x00\x00\x00\x4c\x01\xe0\x48\x89\x44\x24\x40\x41\x29\xed\x44\x89\x6c\x24\x54\xbd\x00\x00\x00\x00\xeb\x3e\xba\x02\x00\x00\x00\x48\x8d\x35\x13\x77\x00\x00\x48\x8b\x7c\x24\x30\xe8\x48\xd6\xff\xff\x85\xc0\x75\x1f\x48\x8d\x94\x24\xc0\x00\x00\x00\x4c\x01\xe2\x48\x89\x54\x24\x28\x41\x29\xed\x44\x89\x6c\x24\x58\xbd\x00\x00\x00\x00\xeb\x05\xbd\x00\x00\x00\x00\x8d\x43\x01\x48\x83\xc3\x01\x4c\x39\xf3\x0f\x85\x26\xff\xff\xff\x44\x8b\x6c\x24\x5c\x48\x83\x7c\x24\x28\x00\x0f\x84\x3c\x01\x00\x00\x48\x83\x7c\x24\x40\x00\x0f\x84\x30\x01\x00\x00\x48\x83\x7c\x24\x18\x00\x74\x73\x48\x8b\x6c\x24\x18\x4c\x63\x64\x24\x54\x4c\x63\x74\x24\x58\x44\x89\x6c\x24\x30\x4c\x8b\x6c\x24\x40\x48\x8b\x5d\x08\x4c\x89\xe2\x4c\x89\xee\x48\x89\xdf\xe8\x00\xd5\xff\xff\x85\xc0\x75\x26\x42\x80\x3c\x23\x00\x75\x1f\x48\x8b\x5d\x10\x4c\x89\xf2\x48\x8b\x74\x24\x28\x48\x89\xdf\xe8\xe1\xd4\xff\xff\x85\xc0\x75\x07\x42\x80\x3c\x33\x00\x74\x10\x48\x8b\x6d\x00\x48\x85\xed\x75\xbb\x44\x8b\x6c\x24\x30\xeb\x0e\x44\x8b\x6c\x24\x30\x48\x85\xed\x0f\x85\xb5\x00\x00\x00\x48\x63\x6c\x24\x54\x4c\x63\x74\x24\x58\x4a\x8d\x7c\x35\x20\xe8\x54\xd5\xff\xff\x48\x89\xc3\x48\x85\xc0\x75\x1c\x48\x83\x7c\x24\x48\x00\x0f\x84\xab\x00\x00\x00\x48\x8b\x4c\x24\x48\xc7\x01\x9a\xff\xff\xff\xe9\x9b\x00\x00\x00\x48\x8b\x44\x24\x18\x48\x89\x03\x4c\x8d\x63\x1c\x4c\x89\x63\x08\x48\x8d\x55\x01\x48\x89\x54\x24\x18\x48\x8d\x44\x2b\x1d\x48\x89\x43\x10\x48\x89\xea\x48\x8b\x74\x24\x40\x4c\x89\xe7\xe8\xce\xd4\xff\xff\x48\x63\x44\x24\x54\xc6\x44\x03\x1c\x00\x48\x8b\x7c\x24\x18\x4c\x01\xe7\x4c\x89\xf2\x48\x8b\x74\x24\x28\xe8\xaf\xd4\xff\xff\x8b\x4c\x24\x54\x8b\x54\x24\x58\x8d\x44\x11\x01\x48\x98\xc6\x44\x03\x1c\x00\x8b\x84\x24\xb4\x00\x00\x00\x89\x43\x18\x48\x89\x5c\x24\x18\xeb\x08\xc7\x44\x24\x3c\x01\x00\x00\x00\x83\x44\x24\x20\x01\x48\x63\x54\x24\x20\x48\x8d\x05\x72\x8f\x20\x00\x48\x8b\x04\xd0\x48\x85\xc0\x0f\x85\x8f\xfb\xff\xff\x44\x89\xef\xe8\x8d\xd3\xff\xff\x48\x8b\x44\x24\x18\x48\x8b\x8c\x24\x48\x07\x00\x00\x64\x48\x33\x0c\x25\x28\x00\x00\x00\x0f\x84\xda\x00\x00\x00\xe9\xd0\x00\x00\x00\xba\x1c\x00\x00\x00\xe9\xb3\xfa\xff\xff\x8b\x54\x24\x50\x89\x54\x24\x08\x48\x89\x04\x24\x4c\x8d\x0d\x70\x70\x00\x00\x4c\x8d\x05\x18\x73\x00\x00\xb9\x00\x06\x00\x00\xba\x01\x00\x00\x00\xbe\x00\x06\x00\x00\x48\x8d\xbc\x24\xc0\x00\x00\x00\xb8\x00\x00\x00\x00\xe8\x57\xd2\xff\xff\x89\xc5\xb9\x06\x00\x00\x00\xb8\x00\x00\x00\x00\x48\x8b\x7c\x24\x10\xf3\x48\xab\xc7\x44\x24\x68\x02\x00\x00\x00\x48\x8d\x3d\x25\x70\x00\x00\xe9\x76\xfb\xff\xff\x8b\x4c\x24\x50\x89\x4c\x24\x08\x48\x89\x04\x24\x4c\x8d\x0d\x1d\x70\x00\x00\x4c\x8d\x05\xb5\x72\x00\x00\xb9\x00\x06\x00\x00\xba\x01\x00\x00\x00\xbe\x00\x06\x00\x00\x48\x8d\xbc\x24\xc0\x00\x00\x00\xb8\x00\x00\x00\x00\xe8\xf4\xd1\xff\xff\x89\xc5\xb9\x06\x00\x00\x00\xb8\x00\x00\x00\x00\x48\x8b\x7c\x24\x10\xf3\x48\xab\xc7\x44\x24\x68\x02\x00\x00\x00\x48\x8d\x3d\x6b\x6f\x00\x00\xe9\x13\xfb\xff\xff\xe8\x37\xd2\xff\xff\x48\x81\xc4\x58\x07\x00\x00\x5b\x5d\x41\x5c\x41\x5d\x41\x5e\x41\x5f\xc3\x53\x48\x85\xff\x75\x05\xeb\x10\x48\x89\xdf\x48\x8b\x1f\xe8\xb2\xd1\xff\xff\x48\x85\xdb\x75\xf0\x5b\xc3\x41\x57\x41\x56\x41\x55\x41\x54\x55\x53\x48\x83\xec\x68\x48\x89\xfb\x48\x89\xf5\x49\x89\xd6\x41\x89\xcd\x64\x48\x8b\x04\x25\x28\x00\x00\x00\x48\x89\x44\x24\x58\x31\xc0\x48\x8d\xbe\x80\x00\x00\x00\x48\xc7\xc1\xff\xff\xff\xff\xf2\xae\x48\xf7\xd1\x41\x89\xcc\x41\x83\xec\x01\x75\x13\x48\x89\xd7\x48\xc7\xc1\xff\xff\xff\xff\xf2\xae\x48\xf7\xd1\x44\x8d\x61\xff\x45\x85\xed\x74\x2d\x48\x8d\x74\x24\x40\x44\x89\xef\xe8\x40\xd3\xff\xff\x48\x85\xc0\x74\x1b\x48\x8d\x7c\x24\x40\xb8\x00\x00\x00\x00\x48\xc7\xc1\xff\xff\xff\xff\xf2\xae\x48\xf7\xd1\x45\x8d\x64\x0c\x02\x48\x8d\xb5\x84\x04\x00\x00\x48\x89\x34\x24\x48\xc7\xc2\xff\xff\xff\xff\x48\x89\xf7\xb8\x00\x00\x00\x00\x48\x89\xd1\xf2\xae\x44\x89\xe6\x29\xce\x89\x74\x24\x10\x48\x8d\xb5\x84\x03\x00\x00\x48\x89\x74\x24\x08\x48\x89\xf7\x48\x89\xd1\xf2\xae\x44\x89\xe6\x29\xce\x89\x74\x24\x14\x48\x8d\xb5\x84\x01\x00\x00\x48\x89\x74\x24\x18\x48\x89\xf7\x48\x89\xd1\xf2\xae\x44\x89\xe6\x29\xce\x89\x74\x24\x28\x48\x8d\xb5\x84\x07\x00\x00\x48\x89\x74\x24\x20\x48\x89\xf7\x48\x89\xd1\xf2\xae\x41\x29\xcc\x44\x89\x64\x24\x2c\x4c\x63\x64\x24\x10\x4c\x89\xe7\xe8\x55\xd2\xff\xff\x48\x89\x43\x08\x4c\x63\x7c\x24\x14\x4c\x89\xff\xe8\x44\xd2\xff\xff\x48\x89\x03\x48\x63\x74\x24\x28\x48\x89\x74\x24\x30\x48\x89\xf7\xe8\x2f\xd2\xff\xff\x48\x89\x43\x10\x48\x63\x44\x24\x2c\x48\x89\x44\x24\x38\x48\x89\xc7\xe8\x19\xd2\xff\xff\x48\x89\x43\x18\x4c\x89\xf7\xe8\x2d\xd1\xff\xff\x48\x89\x43\x20\x80\xbd\x80\x00\x00\x00\x00\x74\x15\x48\x8d\xb5\x80\x00\x00\x00\x48\x8b\x7b\x08\x4c\x89\xe2\xe8\x4d\xd0\xff\xff\xeb\x0f\x48\x8b\x7b\x08\x4c\x89\xe2\x4c\x89\xf6\xe8\x3c\xd0\xff\xff\x48\x8b\x7b\x08\x48\x83\xc7\x07\xbe\x2f\x00\x00\x00\xe8\x8a\xd0\xff\xff\x48\x85\xc0\x74\x03\xc6\x00\x00\x45\x85\xed\x0f\x84\x95\x00\x00\x00\x48\x8b\x6b\x08\xba\x0d\x00\x00\x00\x48\x8d\x35\xe4\x6d\x00\x00\x48\x89\xef\xe8\xf1\xd0\xff\xff\x85\xc0\x75\x79\xbe\x5d\x00\x00\x00\x48\x89\xef\xe8\x50\xd0\xff\xff\x48\x89\xc5\x48\x85\xc0\x74\x64\x49\xc7\xc4\xff\xff\xff\xff\x48\x89\xc7\x41\xbd\x00\x00\x00\x00\x4c\x89\xe1\x44\x89\xe8\xf2\xae\x48\x89\xca\x48\xf7\xd2\x48\x8d\x7c\x24\x40\x4c\x89\xe1\xf2\xae\x48\xf7\xd1\x48\x8d\x7c\x0d\x02\x48\x89\xee\xe8\xe0\xd1\xff\xff\x66\xc7\x45\x00\x25\x32\xc6\x45\x02\x35\x48\x8d\x7c\x24\x40\x4c\x89\xe1\x44\x89\xe8\xf2\xae\x48\xf7\xd1\x4a\x8d\x14\x21\x48\x8d\x7d\x03\x48\x8d\x74\x24\x40\xe8\xf4\xd0\xff\xff\x48\x8b\x73\x08\x4c\x89\xfa\x48\x8b\x3b\xe8\x75\xcf\xff\xff\x48\x8b\x73\x08\x48\x8b\x7b\x10\x48\x8b\x54\x24\x30\xe8\x63\xcf\xff\xff\x48\x8b\x73\x08\x48\x8b\x7b\x18\x48\x8b\x54\x24\x38\xe8\x51\xcf\xff\xff\x48\x8b\x7b\x08\x8b\x54\x24\x10\x48\x8b\x34\x24\xe8\x60\xf0\xff\xff\x8b\x54\x24\x14\x48\x8b\x74\x24\x08\x48\x8b\x3b\xe8\x4f\xf0\xff\xff\x48\x8b\x7b\x10\x8b\x54\x24\x28\x48\x8b\x74\x24\x18\xe8\x3d\xf0\xff\xff\x48\x8b\x7b\x18\x8b\x54\x24\x2c\x48\x8b\x74\x24\x20\xe8\x2b\xf0\xff\xff\x48\x8b\x4c\x24\x58\x64\x48\x33\x0c\x25\x28\x00\x00\x00\x74\x05\xe8\x36\xcf\xff\xff\x48\x83\xc4\x68\x5b\x5d\x41\x5c\x41\x5d\x41\x5e\x41\x5f\xc3\x53\x48\x89\xfb\x48\x85\xff\x74\x53\x48\x8b\x3f\xe8\xb6\xce\xff\xff\x48\xc7\x03\x00\x00\x00\x00\x48\x8b\x7b\x08\xe8\xa6\xce\xff\xff\x48\xc7\x43\x08\x00\x00\x00\x00\x48\x8b\x7b\x10\xe8\x95\xce\xff\xff\x48\xc7\x43\x10\x00\x00\x00\x00\x48\x8b\x7b\x18\xe8\x84\xce\xff\xff\x48\xc7\x43\x18\x00\x00\x00\x00\x48\x8b\x7b\x20\xe8\x73\xce\xff\xff\x48\xc7\x43\x20\x00\x00\x00\x00\x5b\xc3\x53\x48\x83\xec\x60\x64\x48\x8b\x04\x25\x28\x00\x00\x00\x48\x89\x44\x24\x58\x31\xc0\xc6\x44\x24\x10\x00\x48\x8d\x5c\x24\x10\x48\x81\xc6\x04\x05\x00\x00\x41\xb8\x00\x00\x00\x00\x48\x8d\x4c\x24\x0c\x48\x89\xda\x48\x8b\x3f\xe8\x7b\x0a\x00\x00\xb9\x0a\x00\x00\x00\x48\x8d\x35\x2a\x6c\x00\x00\x48\x89\xdf\xf3\xa6\x0f\x97\xc2\x0f\x92\xc0\x38\xc2\x0f\x94\xc0\x0f\xb6\xc0\x48\x8b\x54\x24\x58\x64\x48\x33\x14\x25\x28\x00\x00\x00\x74\x05\xe8\x59\xce\xff\xff\x48\x83\xc4\x60\x5b\xc3\x41\x57\x41\x56\x41\x55\x41\x54\x55\x53\x48\x83\xec\x68\x48\x89\x7c\x24\x30\x48\x89\xf3\x49\x89\xd4\x48\x89\x4c\x24\x10\x44\x89\x44\x24\x18\x64\x48\x8b\x04\x25\x28\x00\x00\x00\x48\x89\x44\x24\x58\x31\xc0\xc7\x44\x24\x08\x00\x00\x00\x00\x48\x85\xff\x0f\x84\xe0\x05\x00\x00\x48\x89\xf8\xc7\x44\x24\x2c\x00\x00\x00\x00\xba\x00\x00\x00\x00\x83\xc2\x01\x48\x8b\x00\x48\x85\xc0\x75\xf5\x89\x54\x24\x2c\x85\xd2\x7e\x1a\x48\x63\xfa\xbe\x10\x00\x00\x00\xe8\xaf\xce\xff\xff\x49\x89\xc7\x48\x85\xc0\x75\x0b\xe9\x9b\x05\x00\x00\x41\xbf\x00\x00\x00\x00\x48\x8b\x6c\x24\x30\x41\xbe\x00\x00\x00\x00\x4c\x89\xe2\x83\xe2\x01\x48\x89\x54\x24\x08\x49\x8d\x8c\x24\x04\x03\x00\x00\x48\x89\x4c\x24\x20\x4d\x89\xe5\x49\x89\xdc\x49\x63\xde\x48\xc1\xe3\x04\x4c\x01\xfb\x48\x8d\x73\x08\x48\x8b\x7d\x08\x44\x8b\x45\x18\x8b\x4c\x24\x18\x48\x8b\x54\x24\x10\xe8\x1b\x47\x00\x00\x48\x89\x03\x48\x85\xc0\x0f\x84\xd2\x00\x00\x00\x4c\x89\xef\xba\x84\x0b\x00\x00\x48\x83\x7c\x24\x08\x00\x74\x0b\x41\xc6\x45\x00\x00\x49\x8d\x7d\x01\xb2\x83\x40\xf6\xc7\x02\x74\x0c\x66\xc7\x07\x00\x00\x48\x83\xc7\x02\x83\xea\x02\x40\xf6\xc7\x04\x74\x0d\xc7\x07\x00\x00\x00\x00\x48\x83\xc7\x04\x83\xea\x04\x89\xd1\xc1\xe9\x03\x89\xc9\xb8\x00\x00\x00\x00\xf3\x48\xab\xf6\xc2\x04\x74\x0a\xc7\x07\x00\x00\x00\x00\x48\x83\xc7\x04\xf6\xc2\x02\x74\x09\x66\xc7\x07\x00\x00\x48\x83\xc7\x02\xf6\xc2\x01\x74\x03\xc6\x07\x00\x49\xc7\x04\x24\x00\x00\x00\x00\x49\xc7\x44\x24\x08\x00\x00\x00\x00\x49\xc7\x44\x24\x10\x00\x00\x00\x00\x49\xc7\x44\x24\x18\x00\x00\x00\x00\x49\xc7\x44\x24\x20\x00\x00\x00\x00\x8b\x73\x08\x4c\x89\xea\x48\x8b\x3b\xe8\x5a\xee\xff\xff\xb9\x38\x00\x00\x00\x48\x8b\x74\x24\x20\x48\x8d\x3d\x34\x6c\x00\x00\xf3\xa6\x0f\x97\xc2\x0f\x92\xc0\x38\xc2\x75\x07\xc7\x43\x0c\x01\x00\x00\x00\x48\x8b\x6d\x00\x41\x83\xc6\x01\x48\x85\xed\x0f\x85\xed\xfe\xff\xff\x4c\x89\xe3\xc7\x44\x24\x08\x01\x00\x00\x00\x49\x8d\x95\x84\x03\x00\x00\x48\x89\x54\x24\x10\x49\x8d\x8d\x84\x09\x00\x00\x48\x89\x4c\x24\x18\x83\xe1\x01\x48\x89\x4c\x24\x20\x83\xe2\x01\x48\x89\x54\x24\x38\x48\x89\xdd\xe9\xc5\x03\x00\x00\x4d\x63\xe6\x49\xc1\xe4\x04\x4d\x01\xfc\x49\x83\x3c\x24\x00\x0f\x84\x94\x03\x00\x00\x4c\x89\xef\xba\x84\x0b\x00\x00\x41\xf6\xc5\x01\x74\x0b\x41\xc6\x45\x00\x00\x49\x8d\x7d\x01\xb2\x83\x40\xf6\xc7\x02\x74\x0c\x66\xc7\x07\x00\x00\x48\x83\xc7\x02\x83\xea\x02\x40\xf6\xc7\x04\x74\x0d\xc7\x07\x00\x00\x00\x00\x48\x83\xc7\x04\x83\xea\x04\x89\xd1\xc1\xe9\x03\x89\xc9\xb8\x00\x00\x00\x00\xf3\x48\xab\xf6\xc2\x04\x74\x0a\xc7\x07\x00\x00\x00\x00\x48\x83\xc7\x04\xf6\xc2\x02\x74\x09\x66\xc7\x07\x00\x00\x48\x83\xc7\x02\xf6\xc2\x01\x74\x03\xc6\x07\x00\x48\xc7\x45\x00\x00\x00\x00\x00\x48\xc7\x45\x08\x00\x00\x00\x00\x48\xc7\x45\x10\x00\x00\x00\x00\x48\xc7\x45\x18\x00\x00\x00\x00\x48\xc7\x45\x20\x00\x00\x00\x00\x41\x8b\x74\x24\x08\x4c\x89\xea\x49\x8b\x3c\x24\xe8\x2a\xed\xff\xff\x41\x83\x7c\x24\x0c\x00\x75\x0b\x83\x7c\x24\x08\x02\x0f\x8e\x64\x02\x00\x00\x8b\x4b\x18\x48\x8b\x53\x08\x4c\x89\xee\x48\x89\xef\xe8\x65\xf9\xff\xff\x83\x7c\x24\x08\x01\x0f\x8f\xed\x02\x00\x00\x4c\x89\xee\x48\x89\xef\xe8\x91\xfc\xff\xff\x85\xc0\x74\x1d\x49\x8d\xb5\x04\x05\x00\x00\x48\x8d\x54\x24\x40\x48\x8b\x7d\x00\xe8\x16\x0c\x00\x00\x85\xc0\x0f\x84\xc1\x02\x00\x00\x48\x89\xef\xe8\x0a\xfc\xff\xff\x41\x80\xbd\x04\x07\x00\x00\x00\x0f\x84\x05\x02\x00\x00\x48\x8b\x7c\x24\x18\x48\x8b\x74\x24\x10\xb8\x00\x02\x00\x00\x48\x83\x7c\x24\x20\x00\x74\x1c\x0f\xb6\x06\x88\x07\x48\x8b\x7c\x24\x18\x48\x83\xc7\x01\x48\x8b\x74\x24\x10\x48\x83\xc6\x01\xb8\xff\x01\x00\x00\x40\xf6\xc7\x02\x74\x11\x0f\xb7\x16\x66\x89\x17\x48\x83\xc7\x02\x48\x83\xc6\x02\x83\xe8\x02\x40\xf6\xc7\x04\x74\x0f\x8b\x16\x89\x17\x48\x83\xc7\x04\x48\x83\xc6\x04\x83\xe8\x04\x89\xc1\xc1\xe9\x03\x89\xc9\xf3\x48\xa5\xba\x00\x00\x00\x00\xa8\x04\x74\x09\x8b\x16\x89\x17\xba\x04\x00\x00\x00\xa8\x02\x74\x0c\x0f\xb7\x0c\x16\x66\x89\x0c\x17\x48\x83\xc2\x02\xa8\x01\x74\x07\x0f\xb6\x04\x16\x88\x04\x17\x49\x8d\x95\x84\x05\x00\x00\x48\x8b\x7c\x24\x10\x48\x89\xd6\xb8\x00\x02\x00\x00\x48\x83\x7c\x24\x38\x00\x74\x1c\x41\x0f\xb6\x85\x84\x05\x00\x00\x88\x07\x48\x8b\x7c\x24\x10\x48\x83\xc7\x01\x48\x8d\x72\x01\xb8\xff\x01\x00\x00\x40\xf6\xc7\x02\x74\x11\x0f\xb7\x0e\x66\x89\x0f\x48\x83\xc7\x02\x48\x83\xc6\x02\x83\xe8\x02\x40\xf6\xc7\x04\x74\x0f\x8b\x0e\x89\x0f\x48\x83\xc7\x04\x48\x83\xc6\x04\x83\xe8\x04\x89\xc1\xc1\xe9\x03\x89\xc9\xf3\x48\xa5\xa8\x04\x74\x09\x8b\x0e\x89\x0f\xb9\x04\x00\x00\x00\xa8\x02\x74\x0e\x44\x0f\xb7\x04\x0e\x66\x44\x89\x04\x0f\x48\x83\xc1\x02\xa8\x01\x74\x07\x0f\xb6\x04\x0e\x88\x04\x0f\x48\x89\xd7\x48\x8b\x74\x24\x18\xb8\x00\x02\x00\x00\xf6\xc2\x01\x74\x1c\x0f\xb6\x06\x41\x88\x85\x84\x05\x00\x00\x48\x8d\x7a\x01\x48\x8b\x74\x24\x18\x48\x83\xc6\x01\xb8\xff\x01\x00\x00\x40\xf6\xc7\x02\x74\x11\x0f\xb7\x16\x66\x89\x17\x48\x83\xc7\x02\x48\x83\xc6\x02\x83\xe8\x02\x40\xf6\xc7\x04\x74\x0f\x8b\x16\x89\x17\x48\x83\xc7\x04\x48\x83\xc6\x04\x83\xe8\x04\x89\xc1\xc1\xe9\x03\x89\xc9\xf3\x48\xa5\xba\x00\x00\x00\x00\xa8\x04\x74\x09\x8b\x16\x89\x17\xba\x04\x00\x00\x00\xa8\x02\x74\x0c\x0f\xb7\x0c\x16\x66\x89\x0c\x17\x48\x83\xc2\x02\xa8\x01\x74\x07\x0f\xb6\x04\x16\x88\x04\x17\x8b\x4b\x18\x48\x8b\x53\x08\x4c\x89\xee\x48\x89\xef\xe8\x47\xf7\xff\xff\x4c\x89\xee\x48\x89\xef\xe8\x7e\xfa\xff\xff\x85\xc0\x74\x1d\x49\x8d\xb5\x04\x05\x00\x00\x48\x8d\x54\x24\x40\x48\x8b\x7d\x00\xe8\x03\x0a\x00\x00\x85\xc0\x0f\x84\xae\x00\x00\x00\x48\x89\xef\xe8\xf7\xf9\xff\xff\x4c\x89\xef\xba\x84\x0b\x00\x00\x41\xf6\xc5\x01\x74\x0b\x41\xc6\x45\x00\x00\x49\x8d\x7d\x01\xb2\x83\x40\xf6\xc7\x02\x74\x0c\x66\xc7\x07\x00\x00\x48\x83\xc7\x02\x83\xea\x02\x40\xf6\xc7\x04\x74\x0d\xc7\x07\x00\x00\x00\x00\x48\x83\xc7\x04\x83\xea\x04\x89\xd1\xc1\xe9\x03\x89\xc9\xb8\x00\x00\x00\x00\xf3\x48\xab\xf6\xc2\x04\x74\x0a\xc7\x07\x00\x00\x00\x00\x48\x83\xc7\x04\xf6\xc2\x02\x74\x09\x66\xc7\x07\x00\x00\x48\x83\xc7\x02\xf6\xc2\x01\x74\x03\xc6\x07\x00\x48\x8b\x1b\x41\x83\xc6\x01\x48\x85\xdb\x0f\x85\x47\xfc\xff\xff\x83\x44\x24\x08\x01\x83\x7c\x24\x08\x04\x74\x10\x48\x8b\x5c\x24\x30\x41\xbe\x00\x00\x00\x00\xe9\x2b\xfc\xff\xff\xc7\x44\x24\x08\x00\x00\x00\x00\x4d\x85\xff\x74\x44\x83\x7c\x24\x2c\x00\x7e\x2b\x8b\x6c\x24\x2c\x83\xed\x01\x48\x83\xc5\x01\x48\xc1\xe5\x04\xbb\x00\x00\x00\x00\x49\x8b\x3c\x1f\x48\x85\xff\x74\x05\xe8\xea\xc7\xff\xff\x48\x83\xc3\x10\x48\x39\xeb\x75\xe9\x4c\x89\xff\xe8\xd9\xc7\xff\xff\xeb\x08\xc7\x44\x24\x08\xff\xff\xff\xff\x8b\x44\x24\x08\x48\x8b\x54\x24\x58\x64\x48\x33\x14\x25\x28\x00\x00\x00\x74\x05\xe8\x16\xc8\xff\xff\x48\x83\xc4\x68\x5b\x5d\x41\x5c\x41\x5d\x41\x5e\x41\x5f\xc3\x48\x89\x5c\x24\xe0\x48\x89\x6c\x24\xe8\x4c\x89\x64\x24\xf0\x4c\x89\x6c\x24\xf8\x48\x83\xec\x38\x49\x89\xfd\x48\x89\xf3\x48\x89\xd5\x48\x89\xca\x44\x89\xc1\xc7\x44\x24\x0c\x00\x00\x00\x00\x41\xb8\x00\x00\x00\x00\x48\x8d\x74\x24\x0c\xe8\x64\x41\x00\x00\x49\x89\xc4\xb8\x00\x00\x00\x00\x4d\x85\xe4\x0f\x84\xc7\x00\x00\x00\x48\x89\xef\xba\x84\x0b\x00\x00\x40\xf6\xc5\x01\x74\x0a\xc6\x45\x00\x00\x48\x8d\x7d\x01\xb2\x83\x40\xf6\xc7\x02\x74\x0c\x66\xc7\x07\x00\x00\x48\x83\xc7\x02\x83\xea\x02\x40\xf6\xc7\x04\x74\x0d\xc7\x07\x00\x00\x00\x00\x48\x83\xc7\x04\x83\xea\x04\x89\xd1\xc1\xe9\x03\x89\xc9\xb8\x00\x00\x00\x00\xf3\x48\xab\xf6\xc2\x04\x74\x0a\xc7\x07\x00\x00\x00\x00\x48\x83\xc7\x04\xf6\xc2\x02\x74\x09\x66\xc7\x07\x00\x00\x48\x83\xc7\x02\xf6\xc2\x01\x74\x03\xc6\x07\x00\x48\xc7\x03\x00\x00\x00\x00\x48\xc7\x43\x08\x00\x00\x00\x00\x48\xc7\x43\x10\x00\x00\x00\x00\x48\xc7\x43\x18\x00\x00\x00\x00\x48\xc7\x43\x20\x00\x00\x00\x00\x48\x89\xea\x8b\x74\x24\x0c\x4c\x89\xe7\xe8\xa5\xe8\xff\xff\x4c\x89\xe7\xe8\xa8\xc6\xff\xff\xb9\x00\x00\x00\x00\x4c\x89\xea\x48\x89\xee\x48\x89\xdf\xe8\xea\xf4\xff\xff\xb8\x01\x00\x00\x00\x48\x8b\x5c\x24\x18\x48\x8b\x6c\x24\x20\x4c\x8b\x64\x24\x28\x4c\x8b\x6c\x24\x30\x48\x83\xc4\x38\xc3\x90\x90\x90\x90\x90\x90\x90\x48\x83\xec\x08\xb8\x00\x00\x00\x00\x48\x85\xff\x74\x0f\xba\x00\x00\x00\x00\xbe\x00\x00\x00\x00\xe8\xd3\xc8\xff\xff\x48\x83\xc4\x08\xc3\x55\x53\x48\x81\xec\x88\x00\x00\x00\x48\x89\xf2\x64\x48\x8b\x04\x25\x28\x00\x00\x00\x48\x89\x44\x24\x78\x31\xc0\x4c\x8d\x4c\x24\x0c\x41\xb8\x00\x00\x00\x00\x48\x8d\x0d\xfd\x66\x00\x00\x48\x89\xfe\xbf\xff\xff\xff\xff\xe8\x1a\xeb\xff\xff\x48\x89\xc3\xbd\xfd\xff\xff\xff\x48\x85\xc0\x74\x3e\x48\x8d\x54\x24\x10\x8b\x74\x24\x0c\x48\x89\xc7\xe8\xe3\x4f\x00\x00\x48\x89\xdf\xe8\xed\xc5\xff\xff\x48\x8d\x35\xd5\x66\x00\x00\x48\x8d\x7c\x24\x10\xe8\x7d\x50\x00\x00\x48\x89\xc7\xe8\x64\xff\xff\xff\x89\xc5\x48\x8d\x7c\x24\x10\xe8\x17\x50\x00\x00\x89\xe8\x48\x8b\x54\x24\x78\x64\x48\x33\x14\x25\x28\x00\x00\x00\x74\x05\xe8\x11\xc6\xff\xff\x48\x81\xc4\x88\x00\x00\x00\x5b\x5d\xc3\x55\x53\x48\x81\xec\x88\x00\x00\x00\x48\x89\xf2\x64\x48\x8b\x04\x25\x28\x00\x00\x00\x48\x89\x44\x24\x78\x31\xc0\x4c\x8d\x4c\x24\x0c\x41\xb8\x00\x00\x00\x00\x48\x8d\x0d\x7a\x66\x00\x00\x48\x89\xfe\xbf\xff\xff\xff\xff\xe8\x73\xea\xff\xff\x48\x89\xc3\xbd\xfd\xff\xff\xff\x48\x85\xc0\x74\x3e\x48\x8d\x54\x24\x10\x8b\x74\x24\x0c\x48\x89\xc7\xe8\x3c\x4f\x00\x00\x48\x89\xdf\xe8\x46\xc5\xff\xff\x48\x8d\x35\x56\x66\x00\x00\x48\x8d\x7c\x24\x10\xe8\xd6\x4f\x00\x00\x48\x89\xc7\xe8\xbd\xfe\xff\xff\x89\xc5\x48\x8d\x7c\x24\x10\xe8\x70\x4f\x00\x00\x89\xe8\x48\x8b\x54\x24\x78\x64\x48\x33\x14\x25\x28\x00\x00\x00\x74\x05\xe8\x6a\xc5\xff\xff\x48\x81\xc4\x88\x00\x00\x00\x5b\x5d\xc3\x55\x53\x48\x81\xec\x88\x00\x00\x00\x48\x89\xf2\x64\x48\x8b\x04\x25\x28\x00\x00\x00\x48\x89\x44\x24\x78\x31\xc0\x4c\x8d\x4c\x24\x0c\x41\xb8\x00\x00\x00\x00\x48\x8d\x0d\xff\x65\x00\x00\x48\x89\xfe\xbf\xff\xff\xff\xff\xe8\xcc\xe9\xff\xff\x48\x89\xc3\xbd\xfd\xff\xff\xff\x48\x85\xc0\x74\x3e\x48\x8d\x54\x24\x10\x8b\x74\x24\x0c\x48\x89\xc7\xe8\x95\x4e\x00\x00\x48\x89\xdf\xe8\x9f\xc4\xff\xff\x48\x8d\x35\xd9\x65\x00\x00\x48\x8d\x7c\x24\x10\xe8\x2f\x4f\x00\x00\x48\x89\xc7\xe8\x16\xfe\xff\xff\x89\xc5\x48\x8d\x7c\x24\x10\xe8\xc9\x4e\x00\x00\x89\xe8\x48\x8b\x54\x24\x78\x64\x48\x33\x14\x25\x28\x00\x00\x00\x74\x05\xe8\xc3\xc4\xff\xff\x48\x81\xc4\x88\x00\x00\x00\x5b\x5d\xc3\x55\x53\x48\x81\xec\x88\x00\x00\x00\x48\x89\xf2\x64\x48\x8b\x04\x25\x28\x00\x00\x00\x48\x89\x44\x24\x78\x31\xc0\x4c\x8d\x4c\x24\x0c\x41\xb8\x00\x00\x00\x00\x48\x8d\x0d\x80\x65\x00\x00\x48\x89\xfe\xbf\xff\xff\xff\xff\xe8\x25\xe9\xff\xff\x48\x89\xc3\xbd\xfd\xff\xff\xff\x48\x85\xc0\x74\x3e\x48\x8d\x54\x24\x10\x8b\x74\x24\x0c\x48\x89\xc7\xe8\xee\x4d\x00\x00\x48\x89\xdf\xe8\xf8\xc3\xff\xff\x48\x8d\x35\x5e\x65\x00\x00\x48\x8d\x7c\x24\x10\xe8\x88\x4e\x00\x00\x48\x89\xc7\xe8\x6f\xfd\xff\xff\x89\xc5\x48\x8d\x7c\x24\x10\xe8\x22\x4e\x00\x00\x89\xe8\x48\x8b\x54\x24\x78\x64\x48\x33\x14\x25\x28\x00\x00\x00\x74\x05\xe8\x1c\xc4\xff\xff\x48\x81\xc4\x88\x00\x00\x00\x5b\x5d\xc3\x48\x89\x5c\x24\xd0\x48\x89\x6c\x24\xd8\x4c\x89\x64\x24\xe0\x4c\x89\x6c\x24\xe8\x4c\x89\x74\x24\xf0\x4c\x89\x7c\x24\xf8\x48\x81\xec\xc8\x00\x00\x00\x48\x89\xd3\x49\x89\xcd\x4d\x89\xc4\x64\x48\x8b\x04\x25\x28\x00\x00\x00\x48\x89\x84\x24\x88\x00\x00\x00\x31\xc0\xc7\x44\x24\x1c\xff\xff\xff\xff\x48\x85\xd2\x75\x0e\xb8\xfe\xff\xff\xff\x48\x85\xc9\x0f\x84\x5c\x01\x00\x00\x4c\x8d\x4c\x24\x18\x41\xb8\x00\x00\x00\x00\x48\x8d\x0d\xc9\x64\x00\x00\x48\x89\xf2\x48\x89\xfe\xbf\xff\xff\xff\xff\xe8\x3b\xe8\xff\xff\x48\x89\xc5\x48\x85\xc0\x0f\x84\x29\x01\x00\x00\x48\x8d\x54\x24\x20\x8b\x74\x24\x18\x48\x89\xc7\xe8\x05\x4d\x00\x00\x48\x89\xef\xe8\x0f\xc3\xff\xff\x48\x8d\x35\x9b\x64\x00\x00\x48\x8d\x7c\x24\x20\xe8\x9f\x4d\x00\x00\x49\x89\xc6\x48\x8d\x35\x91\x64\x00\x00\x48\x8d\x7c\x24\x20\xe8\x8b\x4d\x00\x00\x48\x89\xc5\x48\x8d\x35\x91\x64\x00\x00\x48\x8d\x7c\x24\x20\xe8\x77\x4d\x00\x00\x49\x89\xc7\x48\x85\xed\x0f\x95\xc0\x4d\x85\xf6\x0f\x95\x44\x24\x0f\x84\xc0\x74\x0f\x80\x7c\x24\x0f\x00\x74\x08\xc7\x44\x24\x1c\x00\x00\x00\x00\x48\x85\xdb\x74\x1d\x84\xc0\x74\x16\xba\x40\x00\x00\x00\x48\x89\xee\x48\x89\xdf\xe8\xb9\xc2\xff\xff\xc6\x43\x3f\x00\xeb\x03\xc6\x03\x00\x4d\x85\xed\x74\x1e\x80\x7c\x24\x0f\x00\x74\x17\x4c\x89\xea\x48\x8d\x35\x42\x64\x00\x00\x4c\x89\xf7\xb8\x00\x00\x00\x00\xe8\x5d\xc4\xff\xff\x4d\x85\xe4\x74\x22\x4d\x85\xff\x74\x18\xba\x40\x00\x00\x00\x4c\x89\xfe\x4c\x89\xe7\xe8\x73\xc2\xff\xff\x41\xc6\x44\x24\x3f\x00\xeb\x05\x41\xc6\x04\x24\x00\x48\x8d\x35\x0a\x64\x00\x00\x48\x8d\x7c\x24\x20\xe8\xd6\x4c\x00\x00\x48\x85\xc0\x74\x21\xc7\x44\x24\x1c\xff\xff\xff\xff\x48\x8d\x54\x24\x1c\x48\x8d\x35\x9b\x5e\x00\x00\x48\x89\xc7\xb8\x00\x00\x00\x00\xe8\xff\xc3\xff\xff\x48\x8d\x7c\x24\x20\xe8\x54\x4c\x00\x00\x8b\x44\x24\x1c\xeb\x05\xb8\xfd\xff\xff\xff\x48\x8b\x94\x24\x88\x00\x00\x00\x64\x48\x33\x14\x25\x28\x00\x00\x00\x74\x05\xe8\x42\xc2\xff\xff\x48\x8b\x9c\x24\x98\x00\x00\x00\x48\x8b\xac\x24\xa0\x00\x00\x00\x4c\x8b\xa4\x24\xa8\x00\x00\x00\x4c\x8b\xac\x24\xb0\x00\x00\x00\x4c\x8b\xb4\x24\xb8\x00\x00\x00\x4c\x8b\xbc\x24\xc0\x00\x00\x00\x48\x81\xc4\xc8\x00\x00\x00\xc3\x55\x53\x48\x81\xec\x88\x00\x00\x00\x48\x89\xd3\x64\x48\x8b\x04\x25\x28\x00\x00\x00\x48\x89\x44\x24\x78\x31\xc0\xc7\x44\x24\x0c\xff\xff\xff\xff\x48\x85\xd2\x0f\x84\xc5\x00\x00\x00\x4c\x8d\x4c\x24\x08\x41\xb8\x00\x00\x00\x00\x48\x8d\x0d\x40\x63\x00\x00\x48\x89\xf2\x48\x89\xfe\xbf\xff\xff\xff\xff\xe8\x62\xe6\xff\xff\x48\x89\xc5\x48\x85\xc0\x0f\x84\x9e\x00\x00\x00\x48\x8d\x54\x24\x10\x8b\x74\x24\x08\x48\x89\xc7\xe8\x2c\x4b\x00\x00\x48\x89\xef\xe8\x36\xc1\xff\xff\x48\x8d\x35\x1a\x63\x00\x00\x48\x8d\x7c\x24\x10\xe8\xc6\x4b\x00\x00\x48\x85\xc0\x74\x1e\xba\x40\x00\x00\x00\x48\x89\xc6\x48\x89\xdf\xe8\x30\xc1\xff\xff\xc6\x43\x3f\x00\xc7\x44\x24\x0c\x00\x00\x00\x00\xeb\x03\xc6\x03\x00\x48\x8d\x35\xc3\x62\x00\x00\x48\x8d\x7c\x24\x10\xe8\x8f\x4b\x00\x00\x48\x85\xc0\x74\x21\xc7\x44\x24\x0c\xff\xff\xff\xff\x48\x8d\x54\x24\x0c\x48\x8d\x35\x54\x5d\x00\x00\x48\x89\xc7\xb8\x00\x00\x00\x00\xe8\xb8\xc2\xff\xff\x48\x8d\x7c\x24\x10\xe8\x0d\x4b\x00\x00\x8b\x44\x24\x0c\xeb\x0c\xb8\xfe\xff\xff\xff\xeb\x05\xb8\xfd\xff\xff\xff\x48\x8b\x54\x24\x78\x64\x48\x33\x14\x25\x28\x00\x00\x00\x74\x05\xe8\xf7\xc0\xff\xff\x48\x81\xc4\x88\x00\x00\x00\x5b\x5d\xc3\x48\x89\x5c\x24\xd8\x48\x89\x6c\x24\xe0\x4c\x89\x64\x24\xe8\x4c\x89\x6c\x24\xf0\x4c\x89\x74\x24\xf8\x48\x81\xec\xa8\x00\x00\x00\x48\x89\xd3\x49\x89\xcc\x64\x48\x8b\x04\x25\x28\x00\x00\x00\x48\x89\x44\x24\x78\x31\xc0\xc7\x44\x24\x0c\xff\xff\xff\xff\x48\x85\xd2\x75\x0e\xb8\xfe\xff\xff\xff\x48\x85\xc9\x0f\x84\x2c\x01\x00\x00\x4c\x8d\x4c\x24\x08\x41\xb8\x00\x00\x00\x00\x48\x8d\x0d\x27\x62\x00\x00\x48\x89\xf2\x48\x89\xfe\xbf\xff\xff\xff\xff\xe8\x21\xe5\xff\xff\x48\x89\xc5\x48\x85\xc0\x0f\x84\xf9\x00\x00\x00\x48\x8d\x54\x24\x10\x8b\x74\x24\x08\x48\x89\xc7\xe8\xeb\x49\x00\x00\x48\x89\xef\xe8\xf5\xbf\xff\xff\x48\x8d\x35\x03\x62\x00\x00\x48\x8d\x7c\x24\x10\xe8\x85\x4a\x00\x00\x48\x89\xc5\x48\x8d\x35\x0d\x62\x00\x00\x48\x8d\x7c\x24\x10\xe8\x71\x4a\x00\x00\x49\x89\xc5\x48\x85\xed\x0f\x95\xc0\x4d\x85\xed\x41\x0f\x95\xc6\x84\xc0\x74\x0d\x45\x84\xf6\x74\x08\xc7\x44\x24\x0c\x00\x00\x00\x00\x48\x85\xdb\x74\x23\x84\xc0\x74\x19\x48\x89\xda\x48\x8d\x35\x64\x61\x00\x00\x48\x89\xef\xb8\x00\x00\x00\x00\xe8\x7f\xc1\xff\xff\xeb\x06\xc7\x03\x00\x00\x00\x00\x4d\x85\xe4\x74\x26\x45\x84\xf6\x74\x19\x4c\x89\xe2\x48\x8d\x35\x3b\x61\x00\x00\x4c\x89\xef\xb8\x00\x00\x00\x00\xe8\x56\xc1\xff\xff\xeb\x08\x41\xc7\x04\x24\x00\x00\x00\x00\x48\x8d\x35\x20\x61\x00\x00\x48\x8d\x7c\x24\x10\xe8\xec\x49\x00\x00\x48\x85\xc0\x74\x21\xc7\x44\x24\x0c\xff\xff\xff\xff\x48\x8d\x54\x24\x0c\x48\x8d\x35\xb1\x5b\x00\x00\x48\x89\xc7\xb8\x00\x00\x00\x00\xe8\x15\xc1\xff\xff\x48\x8d\x7c\x24\x10\xe8\x6a\x49\x00\x00\x8b\x44\x24\x0c\xeb\x05\xb8\xfd\xff\xff\xff\x48\x8b\x54\x24\x78\x64\x48\x33\x14\x25\x28\x00\x00\x00\x74\x05\xe8\x5b\xbf\xff\xff\x48\x8b\x9c\x24\x80\x00\x00\x00\x48\x8b\xac\x24\x88\x00\x00\x00\x4c\x8b\xa4\x24\x90\x00\x00\x00\x4c\x8b\xac\x24\x98\x00\x00\x00\x4c\x8b\xb4\x24\xa0\x00\x00\x00\x48\x81\xc4\xa8\x00\x00\x00\xc3\x55\x53\x48\x81\xec\x88\x00\x00\x00\x48\x89\xd3\x64\x48\x8b\x04\x25\x28\x00\x00\x00\x48\x89\x44\x24\x78\x31\xc0\xc7\x44\x24\x0c\xff\xff\xff\xff\x48\x85\xd2\x0f\x84\xd7\x00\x00\x00\x48\x85\xff\x0f\x84\xce\x00\x00\x00\x48\x85\xf6\x0f\x84\xcc\x00\x00\x00\x4c\x8d\x4c\x24\x08\x41\xb8\x00\x00\x00\x00\x48\x8d\x0d\xc9\x60\x00\x00\x48\x89\xf2\x48\x89\xfe\xbf\xff\xff\xff\xff\xe8\x71\xe3\xff\xff\x48\x89\xc5\x48\x85\xc0\x0f\x84\xa5\x00\x00\x00\x48\x8d\x54\x24\x10\x8b\x74\x24\x08\x48\x89\xc7\xe8\x3b\x48\x00\x00\x48\x89\xef\xe8\x45\xbe\xff\xff\x48\x8d\x35\xa2\x60\x00\x00\x48\x8d\x7c\x24\x10\xe8\xd5\x48\x00\x00\x48\x85\xc0\x74\x1e\xba\x10\x00\x00\x00\x48\x89\xc6\x48\x89\xdf\xe8\x3f\xbe\xff\xff\xc6\x43\x0f\x00\xc7\x44\x24\x0c\x00\x00\x00\x00\xeb\x03\xc6\x03\x00\x48\x8d\x35\xd2\x5f\x00\x00\x48\x8d\x7c\x24\x10\xe8\x9e\x48\x00\x00\x48\x85\xc0\x74\x21\xc7\x44\x24\x0c\xff\xff\xff\xff\x48\x8d\x54\x24\x0c\x48\x8d\x35\x63\x5a\x00\x00\x48\x89\xc7\xb8\x00\x00\x00\x00\xe8\xc7\xbf\xff\xff\x48\x8d\x7c\x24\x10\xe8\x1c\x48\x00\x00\x8b\x44\x24\x0c\xeb\x13\xb8\xfe\xff\xff\xff\xeb\x0c\xb8\xfe\xff\xff\xff\xeb\x05\xb8\xfd\xff\xff\xff\x48\x8b\x54\x24\x78\x64\x48\x33\x14\x25\x28\x00\x00\x00\x74\x05\xe8\xff\xbd\xff\xff\x48\x81\xc4\x88\x00\x00\x00\x5b\x5d\xc3\x48\x89\x5c\x24\xd0\x48\x89\x6c\x24\xd8\x4c\x89\x64\x24\xe0\x4c\x89\x6c\x24\xe8\x4c\x89\x74\x24\xf0\x4c\x89\x7c\x24\xf8\x48\x81\xec\xd8\x00\x00\x00\x48\x89\x7c\x24\x08\x48\x89\x74\x24\x10\x48\x89\x14\x24\x49\x89\xcd\x4d\x89\xc7\x4c\x89\xcd\x4c\x8b\xb4\x24\xe0\x00\x00\x00\x48\x8b\x84\x24\xe8\x00\x00\x00\x48\x89\x44\x24\x18\x4c\x8b\xa4\x24\xf0\x00\x00\x00\x64\x48\x8b\x14\x25\x28\x00\x00\x00\x48\x89\x94\x24\x98\x00\x00\x00\x31\xd2\x48\x85\xc9\x0f\x84\x7e\x01\x00\x00\x4d\x85\xc0\x0f\x84\x75\x01\x00\x00\x4d\x85\xf6\x0f\x84\x73\x01\x00\x00\x48\x83\x3c\x24\x00\x0f\x84\x68\x01\x00\x00\xbe\x10\x00\x00\x00\xbf\x09\x00\x00\x00\xe8\x24\xbe\xff\xff\x48\x89\xc3\x48\x8d\x05\x70\x5f\x00\x00\x48\x89\x03\x48\x8b\x54\x24\x18\x48\x89\x53\x08\x48\x8d\x05\x6b\x5f\x00\x00\x48\x89\x43\x10\x48\x8b\x14\x24\x48\x89\x53\x18\x48\x8d\x05\x68\x5f\x00\x00\x48\x89\x43\x20\x4c\x89\x73\x28\x48\x8d\x15\x65\x5f\x00\x00\x48\x89\x53\x30\x4c\x89\x6b\x38\x48\x8d\x05\x66\x5f\x00\x00\x48\x89\x43\x40\x4c\x89\x7b\x48\x48\x8d\x15\x69\x5f\x00\x00\x48\x89\x53\x50\x48\x8d\x05\xfc\x59\x00\x00\x48\x89\x43\x58\x48\x8d\x15\x5e\x5f\x00\x00\x48\x89\x53\x60\x48\x85\xed\x48\x8d\x05\xec\x5e\x00\x00\x48\x0f\x44\xe8\x48\x89\x6b\x68\x48\x8d\x05\x5b\x5f\x00\x00\x48\x89\x43\x70\x4d\x85\xe4\x48\x8d\x05\xdb\x58\x00\x00\x4c\x0f\x44\xe0\x4c\x89\x63\x78\x4c\x8d\x4c\x24\x28\x49\x89\xd8\x48\x8d\x0d\x47\x5f\x00\x00\x48\x8b\x54\x24\x10\x48\x8b\x74\x24\x08\xbf\xff\xff\xff\xff\xe8\x32\xe1\xff\xff\x48\x89\xc5\x48\x85\xc0\x75\x0f\x48\x89\xdf\xe8\x1b\xbc\xff\xff\xb8\xfd\xff\xff\xff\xeb\x7e\x48\x8d\x54\x24\x30\x8b\x74\x24\x28\x48\x89\xc7\xe8\xf1\x45\x00\x00\x48\x89\xef\xe8\xfb\xbb\xff\xff\x48\x8d\x35\xbf\x5d\x00\x00\x48\x8d\x7c\x24\x30\xe8\x8b\x46\x00\x00\x48\x85\xc0\x74\x23\xc7\x44\x24\x2c\xff\xff\xff\xff\x48\x8d\x54\x24\x2c\x48\x8d\x35\x50\x58\x00\x00\x48\x89\xc7\xb8\x00\x00\x00\x00\xe8\xb4\xbd\xff\xff\xeb\x08\xc7\x44\x24\x2c\x00\x00\x00\x00\x48\x8d\x7c\x24\x30\xe8\xff\x45\x00\x00\x48\x89\xdf\xe8\xa8\xbb\xff\xff\x8b\x44\x24\x2c\xeb\x0c\xb8\xfe\xff\xff\xff\xeb\x05\xb8\xfe\xff\xff\xff\x48\x8b\x94\x24\x98\x00\x00\x00\x64\x48\x33\x14\x25\x28\x00\x00\x00\x74\x05\xe8\xde\xbb\xff\xff\x48\x8b\x9c\x24\xa8\x00\x00\x00\x48\x8b\xac\x24\xb0\x00\x00\x00\x4c\x8b\xa4\x24\xb8\x00\x00\x00\x4c\x8b\xac\x24\xc0\x00\x00\x00\x4c\x8b\xb4\x24\xc8\x00\x00\x00\x4c\x8b\xbc\x24\xd0\x00\x00\x00\x48\x81\xc4\xd8\x00\x00\x00\xc3\x48\x89\x5c\x24\xd0\x48\x89\x6c\x24\xd8\x4c\x89\x64\x24\xe0\x4c\x89\x6c\x24\xe8\x4c\x89\x74\x24\xf0\x4c\x89\x7c\x24\xf8\x48\x81\xec\xe8\x00\x00\x00\x48\x89\x7c\x24\x10\x48\x89\x74\x24\x18\x48\x89\x54\x24\x08\x49\x89\xcd\x4d\x89\xc7\x4c\x89\xcd\x4c\x8b\xb4\x24\xf0\x00\x00\x00\x48\x8b\x84\x24\xf8\x00\x00\x00\x48\x89\x44\x24\x20\x4c\x8b\xa4\x24\x00\x01\x00\x00\x48\x8b\x94\x24\x08\x01\x00\x00\x48\x89\x54\x24\x28\x64\x48\x8b\x04\x25\x28\x00\x00\x00\x48\x89\x84\x24\xa8\x00\x00\x00\x31\xc0\x48\x85\xc9\x0f\x84\xbe\x01\x00\x00\x4d\x85\xc0\x0f\x84\xb5\x01\x00\x00\x4d\x85\xf6\x0f\x84\xb3\x01\x00\x00\x48\x83\x7c\x24\x08\x00\x0f\x84\xa7\x01\x00\x00\xbe\x10\x00\x00\x00\xbf\x09\x00\x00\x00\xe8\xc6\xbb\xff\xff\x48\x89\xc3\x48\x8d\x15\x12\x5d\x00\x00\x48\x89\x10\x48\x8b\x44\x24\x20\x48\x89\x43\x08\x48\x8d\x15\x0d\x5d\x00\x00\x48\x89\x53\x10\x48\x8b\x54\x24\x08\x48\x89\x53\x18\x48\x8d\x05\x09\x5d\x00\x00\x48\x89\x43\x20\x4c\x89\x73\x28\x48\x8d\x15\x06\x5d\x00\x00\x48\x89\x53\x30\x4c\x89\x6b\x38\x48\x8d\x05\x07\x5d\x00\x00\x48\x89\x43\x40\x4c\x89\x7b\x48\x48\x8d\x15\x0a\x5d\x00\x00\x48\x89\x53\x50\x48\x8d\x05\x9d\x57\x00\x00\x48\x89\x43\x58\x48\x8d\x15\xff\x5c\x00\x00\x48\x89\x53\x60\x48\x85\xed\x48\x8d\x05\x8d\x5c\x00\x00\x48\x0f\x44\xe8\x48\x89\x6b\x68\x48\x8d\x05\xfc\x5c\x00\x00\x48\x89\x43\x70\x4d\x85\xe4\x48\x8d\x05\x7c\x56\x00\x00\x4c\x0f\x44\xe0\x4c\x89\x63\x78\x4c\x8d\x4c\x24\x38\x49\x89\xd8\x48\x8d\x0d\xf7\x5c\x00\x00\x48\x8b\x54\x24\x18\x48\x8b\x74\x24\x10\xbf\xff\xff\xff\xff\xe8\xd3\xde\xff\xff\x48\x89\xc5\x48\x85\xc0\x75\x12\x48\x89\xdf\xe8\xbc\xb9\xff\xff\xb8\xfd\xff\xff\xff\xe9\xb9\x00\x00\x00\x48\x8d\x54\x24\x40\x8b\x74\x24\x38\x48\x89\xc7\xe8\x8f\x43\x00\x00\x48\x89\xef\xe8\x99\xb9\xff\xff\x48\x8d\x35\x5d\x5b\x00\x00\x48\x8d\x7c\x24\x40\xe8\x29\x44\x00\x00\x48\x85\xc0\x74\x23\xc7\x44\x24\x3c\xff\xff\xff\xff\x48\x8d\x54\x24\x3c\x48\x8d\x35\xee\x55\x00\x00\x48\x89\xc7\xb8\x00\x00\x00\x00\xe8\x52\xbb\xff\xff\xeb\x43\x48\x8d\x35\x82\x5c\x00\x00\x48\x8d\x7c\x24\x40\xe8\xf0\x43\x00\x00\x48\x85\xc0\x74\x25\xba\x06\x00\x00\x00\x48\x89\xc6\x48\x8b\x7c\x24\x28\xe8\x58\xb9\xff\xff\x48\x8b\x54\x24\x28\xc6\x42\x05\x00\xc7\x44\x24\x3c\x00\x00\x00\x00\xeb\x08\xc7\x44\x24\x3c\xfc\xff\xff\xff\x48\x8d\x7c\x24\x40\xe8\x62\x43\x00\x00\x48\x89\xdf\xe8\x0b\xb9\xff\xff\x8b\x44\x24\x3c\xeb\x0c\xb8\xfe\xff\xff\xff\xeb\x05\xb8\xfe\xff\xff\xff\x48\x8b\x94\x24\xa8\x00\x00\x00\x64\x48\x33\x14\x25\x28\x00\x00\x00\x74\x05\xe8\x41\xb9\xff\xff\x48\x8b\x9c\x24\xb8\x00\x00\x00\x48\x8b\xac\x24\xc0\x00\x00\x00\x4c\x8b\xa4\x24\xc8\x00\x00\x00\x4c\x8b\xac\x24\xd0\x00\x00\x00\x4c\x8b\xb4\x24\xd8\x00\x00\x00\x4c\x8b\xbc\x24\xe0\x00\x00\x00\x48\x81\xc4\xe8\x00\x00\x00\xc3\x48\x89\x5c\x24\xd0\x48\x89\x6c\x24\xd8\x4c\x89\x64\x24\xe0\x4c\x89\x6c\x24\xe8\x4c\x89\x74\x24\xf0\x4c\x89\x7c\x24\xf8\x48\x81\xec\xb8\x00\x00\x00\x49\x89\xff\x49\x89\xf6\x48\x89\xd5\x49\x89\xcc\x4d\x89\xc5\x64\x48\x8b\x04\x25\x28\x00\x00\x00\x48\x89\x44\x24\x78\x31\xc0\x48\x85\xd2\x0f\x84\xef\x00\x00\x00\x48\x85\xc9\x0f\x84\xe6\x00\x00\x00\xbe\x10\x00\x00\x00\xbf\x04\x00\x00\x00\xe8\x74\xb9\xff\xff\x48\x89\xc3\x48\x8d\x15\xc0\x5a\x00\x00\x48\x89\x10\x4c\x89\x68\x08\x48\x8d\x05\xc0\x5a\x00\x00\x48\x89\x43\x10\x48\x89\x6b\x18\x48\x8d\x15\xc1\x5a\x00\x00\x48\x89\x53\x20\x4c\x89\x63\x28\x4c\x8d\x4c\x24\x08\x49\x89\xd8\x48\x8d\x0d\x3f\x5b\x00\x00\x4c\x89\xf2\x4c\x89\xfe\xbf\xff\xff\xff\xff\xe8\xfd\xdc\xff\xff\x48\x89\xc5\x48\x85\xc0\x75\x0f\x48\x89\xdf\xe8\xe6\xb7\xff\xff\xb8\xfd\xff\xff\xff\xeb\x77\x48\x8d\x54\x24\x10\x8b\x74\x24\x08\x48\x89\xc7\xe8\xbc\x41\x00\x00\x48\x89\xef\xe8\xc6\xb7\xff\xff\x48\x8d\x35\x8a\x59\x00\x00\x48\x8d\x7c\x24\x10\xe8\x56\x42\x00\x00\x48\x85\xc0\x74\x23\xc7\x44\x24\x0c\xff\xff\xff\xff\x48\x8d\x54\x24\x0c\x48\x8d\x35\x1b\x54\x00\x00\x48\x89\xc7\xb8\x00\x00\x00\x00\xe8\x7f\xb9\xff\xff\xeb\x08\xc7\x44\x24\x0c\x00\x00\x00\x00\x48\x8d\x7c\x24\x10\xe8\xca\x41\x00\x00\x48\x89\xdf\xe8\x73\xb7\xff\xff\x8b\x44\x24\x0c\xeb\x05\xb8\xfe\xff\xff\xff\x48\x8b\x54\x24\x78\x64\x48\x33\x14\x25\x28\x00\x00\x00\x74\x05\xe8\xb3\xb7\xff\xff\x48\x8b\x9c\x24\x88\x00\x00\x00\x48\x8b\xac\x24\x90\x00\x00\x00\x4c\x8b\xa4\x24\x98\x00\x00\x00\x4c\x8b\xac\x24\xa0\x00\x00\x00\x4c\x8b\xb4\x24\xa8\x00\x00\x00\x4c\x8b\xbc\x24\xb0\x00\x00\x00\x48\x81\xc4\xb8\x00\x00\x00\xc3\x48\x89\x5c\x24\xd0\x48\x89\x6c\x24\xd8\x4c\x89\x64\x24\xe0\x4c\x89\x6c\x24\xe8\x4c\x89\x74\x24\xf0\x4c\x89\x7c\x24\xf8\x48\x81\xec\xc8\x00\x00\x00\x48\x89\x7c\x24\x08\x49\x89\xf7\x48\x89\xd5\x49\x89\xcc\x4d\x89\xc5\x4d\x89\xce\x64\x48\x8b\x04\x25\x28\x00\x00\x00\x48\x89\x84\x24\x88\x00\x00\x00\x31\xc0\x48\x85\xd2\x0f\x84\x13\x01\x00\x00\x48\x85\xc9\x0f\x84\x0a\x01\x00\x00\x4d\x85\xc0\x0f\x84\x08\x01\x00\x00\x4d\x85\xc9\x90\x0f\x84\xfe\x00\x00\x00\xbe\x10\x00\x00\x00\xbf\x05\x00\x00\x00\xe8\xcb\xb7\xff\xff\x48\x89\xc3\x48\x8d\x15\xdc\x59\x00\x00\x48\x89\x10\x48\x89\x68\x08\x48\x8d\x05\xdb\x59\x00\x00\x48\x89\x43\x10\x4c\x89\x63\x18\x48\x8d\x15\x18\x59\x00\x00\x48\x89\x53\x20\x4c\x89\x6b\x28\x48\x8d\x05\xc8\x59\x00\x00\x48\x89\x43\x30\x4c\x89\x73\x38\x4c\x8d\x4c\x24\x18\x49\x89\xd8\x48\x8d\x0d\xbb\x59\x00\x00\x4c\x89\xfa\x48\x8b\x74\x24\x08\xbf\xff\xff\xff\xff\xe8\x43\xdb\xff\xff\x48\x89\xc5\x48\x85\xc0\x75\x0f\x48\x89\xdf\xe8\x2c\xb6\xff\xff\xb8\xfd\xff\xff\xff\xeb\x7e\x48\x8d\x54\x24\x20\x8b\x74\x24\x18\x48\x89\xc7\xe8\x02\x40\x00\x00\x48\x89\xef\xe8\x0c\xb6\xff\xff\x48\x8d\x35\xd0\x57\x00\x00\x48\x8d\x7c\x24\x20\xe8\x9c\x40\x00\x00\x48\x85\xc0\x74\x23\xc7\x44\x24\x1c\xff\xff\xff\xff\x48\x8d\x54\x24\x1c\x48\x8d\x35\x61\x52\x00\x00\x48\x89\xc7\xb8\x00\x00\x00\x00\xe8\xc5\xb7\xff\xff\xeb\x08\xc7\x44\x24\x1c\x00\x00\x00\x00\x48\x8d\x7c\x24\x20\xe8\x10\x40\x00\x00\x48\x89\xdf\xe8\xb9\xb5\xff\xff\x8b\x44\x24\x1c\xeb\x0c\xb8\xfe\xff\xff\xff\xeb\x05\xb8\xfe\xff\xff\xff\x48\x8b\x94\x24\x88\x00\x00\x00\x64\x48\x33\x14\x25\x28\x00\x00\x00\x74\x05\xe8\xef\xb5\xff\xff\x48\x8b\x9c\x24\x98\x00\x00\x00\x48\x8b\xac\x24\xa0\x00\x00\x00\x4c\x8b\xa4\x24\xa8\x00\x00\x00\x4c\x8b\xac\x24\xb0\x00\x00\x00\x4c\x8b\xb4\x24\xb8\x00\x00\x00\x4c\x8b\xbc\x24\xc0\x00\x00\x00\x48\x81\xc4\xc8\x00\x00\x00\xc3\x41\x57\x41\x56\x41\x55\x41\x54\x55\x53\x48\x81\xec\xb8\x00\x00\x00\x49\x89\xff\x49\x89\xf6\x48\x89\xd5\x48\x89\x0c\x24\x4d\x89\xc4\x4d\x89\xcd\x48\x8b\x84\x24\xf0\x00\x00\x00\x48\x89\x44\x24\x08\x48\x8b\x94\x24\xf8\x00\x00\x00\x48\x89\x54\x24\x10\x48\x8b\x84\x24\x00\x01\x00\x00\x48\x89\x44\x24\x18\x48\x8b\x94\x24\x08\x01\x00\x00\x48\x89\x54\x24\x20\x48\x8b\x84\x24\x10\x01\x00\x00\x48\x89\x44\x24\x28\x64\x48\x8b\x14\x25\x28\x00\x00\x00\x48\x89\x94\x24\xa8\x00\x00\x00\x31\xd2\xc7\x44\x24\x3c\xff\xff\xff\xff\x48\x85\xed\x0f\x84\x8d\x02\x00\x00\x41\xc6\x00\x00\x41\xc6\x01\x00\xbe\x10\x00\x00\x00\xbf\x02\x00\x00\x00\xe8\xe7\xb5\xff\xff\x48\x89\xc3\x48\x8d\x05\x31\x58\x00\x00\x48\x89\x03\x48\x89\x6b\x08\x4c\x8d\x4c\x24\x38\x49\x89\xd8\x48\x8d\x0d\x2f\x58\x00\x00\x4c\x89\xf2\x4c\x89\xfe\xbf\xff\xff\xff\xff\xe8\x8e\xd9\xff\xff\x48\x89\xc5\x48\x85\xc0\x75\x12\x48\x89\xdf\xe8\x77\xb4\xff\xff\xb8\xfd\xff\xff\xff\xe9\x31\x02\x00\x00\x48\x8d\x54\x24\x40\x8b\x74\x24\x38\x48\x89\xc7\xe8\x4a\x3e\x00\x00\x48\x89\xef\xe8\x54\xb4\xff\xff\x48\x8d\x35\xd3\x56\x00\x00\x48\x8d\x7c\x24\x40\xe8\xe4\x3e\x00\x00\x48\x85\xc0\x74\x23\x48\x83\x7c\x24\x20\x00\x74\x1b\xba\x40\x00\x00\x00\x48\x89\xc6\x48\x8b\x7c\x24\x20\xe8\x44\xb4\xff\xff\x48\x8b\x54\x24\x20\xc6\x42\x3f\x00\x48\x8d\x35\xa8\x56\x00\x00\x48\x8d\x7c\x24\x40\xe8\xab\x3e\x00\x00\x48\x85\xc0\x74\x28\x48\x83\x3c\x24\x00\x74\x21\xba\x06\x00\x00\x00\x48\x89\xc6\x48\x8b\x3c\x24\xe8\x0d\xb4\xff\xff\x48\x8b\x04\x24\xc6\x40\x05\x00\xc7\x44\x24\x3c\x00\x00\x00\x00\x48\x8d\x35\x7a\x56\x00\x00\x48\x8d\x7c\x24\x40\xe8\x6d\x3e\x00\x00\x48\x85\xc0\x74\x23\x48\x83\x7c\x24\x08\x00\x74\x1b\xba\x04\x00\x00\x00\x48\x89\xc6\x48\x8b\x7c\x24\x08\xe8\xcd\xb3\xff\xff\x48\x8b\x54\x24\x08\xc6\x42\x03\x00\x48\x8d\x35\x5d\x56\x00\x00\x48\x8d\x7c\x24\x40\xe8\x34\x3e\x00\x00\x48\x85\xc0\x74\x23\x4d\x85\xe4\x74\x1e\xba\x10\x00\x00\x00\x48\x89\xc6\x4c\x89\xe7\xe8\x99\xb3\xff\xff\x41\xc6\x44\x24\x0f\x00\xc7\x44\x24\x3c\x00\x00\x00\x00\x48\x8d\x35\x14\x56\x00\x00\x48\x8d\x7c\x24\x40\xe8\xfb\x3d\x00\x00\x48\x85\xc0\x74\x1a\x4d\x85\xed\x74\x15\xba\x06\x00\x00\x00\x48\x89\xc6\x4c\x89\xef\xe8\x60\xb3\xff\xff\x41\xc6\x45\x05\x00\x48\x8d\x35\x06\x56\x00\x00\x48\x8d\x7c\x24\x40\xe8\xcb\x3d\x00\x00\x48\x85\xc0\x74\x23\x48\x83\x7c\x24\x18\x00\x74\x1b\xba\x04\x00\x00\x00\x48\x89\xc6\x48\x8b\x7c\x24\x18\xe8\x2b\xb3\xff\xff\x48\x8b\x44\x24\x18\xc6\x40\x03\x00\x48\x8d\x35\xd8\x55\x00\x00\x48\x8d\x7c\x24\x40\xe8\x92\x3d\x00\x00\x48\x85\xc0\x74\x23\x48\x83\x7c\x24\x10\x00\x74\x1b\xba\x50\x00\x00\x00\x48\x89\xc6\x48\x8b\x7c\x24\x10\xe8\xf2\xb2\xff\xff\x48\x8b\x54\x24\x10\xc6\x42\x4f\x00\x48\x8d\x35\xb9\x55\x00\x00\x48\x8d\x7c\x24\x40\xe8\x59\x3d\x00\x00\x48\x85\xc0\x74\x23\x48\x83\x7c\x24\x28\x00\x74\x1b\xba\x10\x00\x00\x00\x48\x89\xc6\x48\x8b\x7c\x24\x28\xe8\xb9\xb2\xff\xff\x48\x8b\x44\x24\x28\xc6\x40\x0f\x00\x48\x8d\x35\x54\x54\x00\x00\x48\x8d\x7c\x24\x40\xe8\x20\x3d\x00\x00\x48\x85\xc0\x74\x21\xc7\x44\x24\x3c\xff\xff\xff\xff\x48\x8d\x54\x24\x3c\x48\x8d\x35\xe5\x4e\x00\x00\x48\x89\xc7\xb8\x00\x00\x00\x00\xe8\x49\xb4\xff\xff\x48\x8d\x7c\x24\x40\xe8\x9e\x3c\x00\x00\x48\x89\xdf\xe8\x47\xb2\xff\xff\x8b\x44\x24\x3c\xeb\x05\xb8\xfe\xff\xff\xff\x48\x8b\x94\x24\xa8\x00\x00\x00\x64\x48\x33\x14\x25\x28\x00\x00\x00\x74\x05\xe8\x84\xb2\xff\xff\x48\x81\xc4\xb8\x00\x00\x00\x5b\x5d\x41\x5c\x41\x5d\x41\x5e\x41\x5f\xc3\x55\x53\x48\x81\xec\x88\x00\x00\x00\x48\x89\xd5\x64\x48\x8b\x04\x25\x28\x00\x00\x00\x48\x89\x44\x24\x78\x31\xc0\xc7\x44\x24\x0c\xff\xff\xff\xff\x4c\x8d\x4c\x24\x08\x41\xb8\x00\x00\x00\x00\x48\x8d\x0d\x8f\x55\x00\x00\x48\x89\xf2\x48\x89\xfe\xbf\xff\xff\xff\xff\xe8\xd3\xd6\xff\xff\x48\x89\xc3\x48\x85\xc0\x0f\x84\xa1\x00\x00\x00\x48\x8d\x54\x24\x10\x8b\x74\x24\x08\x48\x89\xc7\xe8\x9d\x3b\x00\x00\x48\x89\xdf\xe8\xa7\xb1\xff\xff\x48\x8d\x35\x71\x55\x00\x00\x48\x8d\x7c\x24\x10\xe8\x37\x3c\x00\x00\x48\x85\xed\x74\x2b\x48\x85\xc0\x74\x26\xc7\x45\x00\x00\x00\x00\x00\x48\x89\xea\x48\x8d\x35\x43\x53\x00\x00\x48\x89\xc7\xb8\x00\x00\x00\x00\xe8\x5e\xb3\xff\xff\xc7\x44\x24\x0c\x00\x00\x00\x00\x48\x8d\x35\x2a\x53\x00\x00\x48\x8d\x7c\x24\x10\xe8\xf6\x3b\x00\x00\x48\x85\xc0\x74\x21\xc7\x44\x24\x0c\xff\xff\xff\xff\x48\x8d\x54\x24\x0c\x48\x8d\x35\xbb\x4d\x00\x00\x48\x89\xc7\xb8\x00\x00\x00\x00\xe8\x1f\xb3\xff\xff\x48\x8d\x7c\x24\x10\xe8\x74\x3b\x00\x00\x8b\x44\x24\x0c\xeb\x05\xb8\xfd\xff\xff\xff\x48\x8b\x54\x24\x78\x64\x48\x33\x14\x25\x28\x00\x00\x00\x74\x05\xe8\x65\xb1\xff\xff\x48\x81\xc4\x88\x00\x00\x00\x5b\x5d\xc3\x41\x57\x41\x56\x41\x55\x41\x54\x55\x53\x48\x81\xec\xb8\x00\x00\x00\x48\x89\x7c\x24\x08\x48\x89\x74\x24\x10\x49\x89\xd5\x49\x89\xce\x4d\x89\xc7\x4d\x89\xcc\x48\x8b\xac\x24\xf0\x00\x00\x00\x48\x8b\x84\x24\xf8\x00\x00\x00\x48\x89\x44\x24\x18\x48\x8b\x94\x24\x00\x01\x00\x00\x48\x89\x54\x24\x20\x48\x8b\x84\x24\x08\x01\x00\x00\x48\x89\x44\x24\x28\x64\x48\x8b\x14\x25\x28\x00\x00\x00\x48\x89\x94\x24\xa8\x00\x00\x00\x31\xd2\xc7\x44\x24\x3c\xff\xff\xff\xff\x48\x85\xed\x0f\x84\x14\x02\x00\x00\x4d\x85\xc9\x0f\x84\x0b\x02\x00\x00\x4d\x85\xed\x0f\x84\x09\x02\x00\x00\x48\x85\xc9\x0f\x84\x00\x02\x00\x00\xbe\x10\x00\x00\x00\xbf\x04\x00\x00\x00\xe8\x87\xb1\xff\xff\x48\x89\xc3\x48\x8d\x05\xd3\x52\x00\x00\x48\x89\x03\x4c\x89\x7b\x08\x48\x8d\x15\xd3\x52\x00\x00\x48\x89\x53\x10\x4c\x89\x6b\x18\x48\x8d\x05\xd4\x52\x00\x00\x48\x89\x43\x20\x4c\x89\x73\x28\x4c\x8d\x4c\x24\x38\x49\x89\xd8\x48\x8d\x0d\x08\x54\x00\x00\x48\x8b\x54\x24\x10\x48\x8b\x74\x24\x08\xbf\xff\xff\xff\xff\xe8\x0c\xd5\xff\xff\x49\x89\xc5\x48\x85\xc0\x75\x12\x48\x89\xdf\xe8\xf5\xaf\xff\xff\xb8\xfd\xff\xff\xff\xe9\x8a\x01\x00\x00\x48\x8d\x54\x24\x40\x8b\x74\x24\x38\x48\x89\xc7\xe8\xc8\x39\x00\x00\x4c\x89\xef\xe8\xd2\xaf\xff\xff\x48\x8d\x35\x8b\x52\x00\x00\x48\x8d\x7c\x24\x40\xe8\x62\x3a\x00\x00\x48\x85\xc0\x74\x20\xba\x10\x00\x00\x00\x48\x89\xc6\x4c\x89\xe7\xe8\xcc\xaf\xff\xff\x41\xc6\x44\x24\x0f\x00\xc7\x44\x24\x3c\x00\x00\x00\x00\xeb\x05\x41\xc6\x04\x24\x00\x48\x8d\x35\x40\x52\x00\x00\x48\x8d\x7c\x24\x40\xe8\x27\x3a\x00\x00\x48\x85\xc0\x74\x16\xba\x06\x00\x00\x00\x48\x89\xc6\x48\x89\xef\xe8\x91\xaf\xff\xff\xc6\x45\x05\x00\xeb\x04\xc6\x45\x00\x00\x48\x8d\x35\x32\x52\x00\x00\x48\x8d\x7c\x24\x40\xe8\xf7\x39\x00\x00\x48\x85\xc0\x74\x23\x48\x83\x7c\x24\x20\x00\x74\x1b\xba\x04\x00\x00\x00\x48\x89\xc6\x48\x8b\x7c\x24\x20\xe8\x57\xaf\xff\xff\x48\x8b\x54\x24\x20\xc6\x42\x03\x00\x48\x8d\x35\x04\x52\x00\x00\x48\x8d\x7c\x24\x40\xe8\xbe\x39\x00\x00\x48\x85\xc0\x74\x23\x48\x83\x7c\x24\x18\x00\x74\x1b\xba\x50\x00\x00\x00\x48\x89\xc6\x48\x8b\x7c\x24\x18\xe8\x1e\xaf\xff\xff\x48\x8b\x44\x24\x18\xc6\x40\x4f\x00\x48\x8d\x35\xe5\x51\x00\x00\x48\x8d\x7c\x24\x40\xe8\x85\x39\x00\x00\x48\x85\xc0\x74\x23\x48\x83\x7c\x24\x28\x00\x74\x1b\xba\x10\x00\x00\x00\x48\x89\xc6\x48\x8b\x7c\x24\x28\xe8\xe5\xae\xff\xff\x48\x8b\x54\x24\x28\xc6\x42\x0f\x00\x48\x8d\x35\x80\x50\x00\x00\x48\x8d\x7c\x24\x40\xe8\x4c\x39\x00\x00\x48\x85\xc0\x74\x21\xc7\x44\x24\x3c\xff\xff\xff\xff\x48\x8d\x54\x24\x3c\x48\x8d\x35\x11\x4b\x00\x00\x48\x89\xc7\xb8\x00\x00\x00\x00\xe8\x75\xb0\xff\xff\x48\x8d\x7c\x24\x40\xe8\xca\x38\x00\x00\x48\x89\xdf\xe8\x73\xae\xff\xff\x8b\x44\x24\x3c\xeb\x0c\xb8\xfe\xff\xff\xff\xeb\x05\xb8\xfe\xff\xff\xff\x48\x8b\x94\x24\xa8\x00\x00\x00\x64\x48\x33\x14\x25\x28\x00\x00\x00\x74\x05\xe8\xa9\xae\xff\xff\x48\x81\xc4\xb8\x00\x00\x00\x5b\x5d\x41\x5c\x41\x5d\x41\x5e\x41\x5f\xc3\x48\x89\x5c\x24\xd0\x48\x89\x6c\x24\xd8\x4c\x89\x64\x24\xe0\x4c\x89\x6c\x24\xe8\x4c\x89\x74\x24\xf0\x4c\x89\x7c\x24\xf8\x48\x81\xec\xc8\x00\x00\x00\x48\x89\x3c\x24\x49\x89\xf7\x49\x89\xd4\x49\x89\xcd\x4d\x89\xc6\x4c\x89\xcd\x48\x8b\x94\x24\xd0\x00\x00\x00\x48\x89\x54\x24\x08\x64\x48\x8b\x04\x25\x28\x00\x00\x00\x48\x89\x84\x24\x88\x00\x00\x00\x31\xc0\xc7\x44\x24\x1c\xff\xff\xff\xff\x4d\x85\xe4\x0f\x84\x45\x01\x00\x00\x48\x85\xc9\x0f\x84\x3c\x01\x00\x00\x4d\x85\xc0\x0f\x84\x3a\x01\x00\x00\xbe\x10\x00\x00\x00\xbf\x06\x00\x00\x00\xe8\xdd\xae\xff\xff\x48\x89\xc3\x48\x8d\x15\xee\x50\x00\x00\x48\x89\x10\x4c\x89\x60\x08\x48\x8d\x05\xed\x50\x00\x00\x48\x89\x43\x10\x4c\x89\x6b\x18\x48\x8d\x15\x2a\x50\x00\x00\x48\x89\x53\x20\x4c\x89\x73\x28\x48\x8d\x05\xda\x50\x00\x00\x48\x89\x43\x30\x48\x8d\x15\xdc\x4a\x00\x00\x48\x89\x53\x38\x48\x8d\x05\x6c\x51\x00\x00\x48\x89\x43\x40\x48\x85\xed\x48\x8d\x05\xd5\x49\x00\x00\x48\x0f\x44\xe8\x48\x89\x6b\x48\x4c\x8d\x4c\x24\x18\x49\x89\xd8\x48\x8d\x0d\x58\x51\x00\x00\x4c\x89\xfa\x48\x8b\x34\x24\xbf\xff\xff\xff\xff\xe8\x32\xd2\xff\xff\x48\x89\xc5\x48\x85\xc0\x75\x12\x48\x89\xdf\xe8\x1b\xad\xff\xff\xb8\xfd\xff\xff\xff\xe9\x94\x00\x00\x00\x48\x89\xdf\xe8\x09\xad\xff\xff\x48\x8d\x54\x24\x20\x8b\x74\x24\x18\x48\x89\xef\xe8\xe6\x36\x00\x00\x48\x89\xef\xe8\xf0\xac\xff\xff\x48\x8b\x7c\x24\x68\x48\x85\xff\x74\x16\x48\x8b\x54\x24\x08\x8b\x74\x24\x70\xe8\xf1\x14\x00\x00\xc7\x44\x24\x1c\x00\x00\x00\x00\x48\x8d\x35\x94\x4e\x00\x00\x48\x8d\x7c\x24\x20\xe8\x60\x37\x00\x00\x48\x85\xc0\x74\x21\xc7\x44\x24\x1c\xff\xff\xff\xff\x48\x8d\x54\x24\x1c\x48\x8d\x35\x25\x49\x00\x00\x48\x89\xc7\xb8\x00\x00\x00\x00\xe8\x89\xae\xff\xff\x48\x8d\x7c\x24\x20\xe8\xde\x36\x00\x00\x8b\x44\x24\x1c\xeb\x0c\xb8\xfe\xff\xff\xff\xeb\x05\xb8\xfe\xff\xff\xff\x48\x8b\x94\x24\x88\x00\x00\x00\x64\x48\x33\x14\x25\x28\x00\x00\x00\x74\x05\xe8\xc5\xac\xff\xff\x48\x8b\x9c\x24\x98\x00\x00\x00\x48\x8b\xac\x24\xa0\x00\x00\x00\x4c\x8b\xa4\x24\xa8\x00\x00\x00\x4c\x8b\xac\x24\xb0\x00\x00\x00\x4c\x8b\xb4\x24\xb8\x00\x00\x00\x4c\x8b\xbc\x24\xc0\x00\x00\x00\x48\x81\xc4\xc8\x00\x00\x00\xc3\x48\x89\x5c\x24\xd8\x48\x89\x6c\x24\xe0\x4c\x89\x64\x24\xe8\x4c\x89\x6c\x24\xf0\x4c\x89\x74\x24\xf8\x48\x81\xec\xa8\x00\x00\x00\x48\x89\xd5\x49\x89\xcc\x64\x48\x8b\x04\x25\x28\x00\x00\x00\x48\x89\x44\x24\x78\x31\xc0\xc7\x44\x24\x0c\xff\xff\xff\xff\x48\x85\xd2\x0f\x84\xfa\x00\x00\x00\x48\x85\xc9\x0f\x84\xf1\x00\x00\x00\x4c\x8d\x4c\x24\x08\x41\xb8\x00\x00\x00\x00\x48\x8d\x0d\xfd\x4f\x00\x00\x48\x89\xf2\x48\x89\xfe\xbf\xff\xff\xff\xff\xe8\xc2\xd0\xff\xff\x48\x89\xc3\x48\x85\xc0\x0f\x84\xca\x00\x00\x00\x48\x8d\x54\x24\x10\x8b\x74\x24\x08\x48\x89\xc7\xe8\x8c\x35\x00\x00\x48\x89\xdf\xe8\x96\xab\xff\xff\x48\x8d\x35\xd3\x4f\x00\x00\x48\x8d\x7c\x24\x10\xe8\x26\x36\x00\x00\x49\x89\xc5\x48\x8d\x35\xcf\x4f\x00\x00\x48\x8d\x7c\x24\x10\xe8\x12\x36\x00\x00\x49\x89\xc6\x48\x85\xc0\x0f\x95\xc3\x4d\x85\xed\x0f\x95\xc0\x84\xdb\x74\x0c\x84\xc0\x74\x08\xc7\x44\x24\x0c\x00\x00\x00\x00\x84\xc0\x74\x0b\x4c\x89\xef\xe8\xd6\xe4\xff\xff\x89\x45\x00\x84\xdb\x74\x0c\x4c\x89\xf7\xe8\xc7\xe4\xff\xff\x41\x89\x04\x24\x48\x8d\x35\xf7\x4c\x00\x00\x48\x8d\x7c\x24\x10\xe8\xc3\x35\x00\x00\x48\x85\xc0\x74\x21\xc7\x44\x24\x0c\xff\xff\xff\xff\x48\x8d\x54\x24\x0c\x48\x8d\x35\x88\x47\x00\x00\x48\x89\xc7\xb8\x00\x00\x00\x00\xe8\xec\xac\xff\xff\x48\x8d\x7c\x24\x10\xe8\x41\x35\x00\x00\x8b\x44\x24\x0c\xeb\x0c\xb8\xfe\xff\xff\xff\xeb\x05\xb8\xfd\xff\xff\xff\x48\x8b\x54\x24\x78\x64\x48\x33\x14\x25\x28\x00\x00\x00\x74\x05\xe8\x2b\xab\xff\xff\x48\x8b\x9c\x24\x80\x00\x00\x00\x48\x8b\xac\x24\x88\x00\x00\x00\x4c\x8b\xa4\x24\x90\x00\x00\x00\x4c\x8b\xac\x24\x98\x00\x00\x00\x4c\x8b\xb4\x24\xa0\x00\x00\x00\x48\x81\xc4\xa8\x00\x00\x00\xc3\x48\x89\x5c\x24\xd0\x48\x89\x6c\x24\xd8\x4c\x89\x64\x24\xe0\x4c\x89\x6c\x24\xe8\x4c\x89\x74\x24\xf0\x4c\x89\x7c\x24\xf8\x48\x81\xec\xd8\x00\x00\x00\x48\x89\x7c\x24\x08\x48\x89\x74\x24\x10\x49\x89\xd6\x49\x89\xcf\x4d\x89\xc5\x4c\x89\xcd\x4c\x8b\xa4\x24\xe0\x00\x00\x00\x48\x8b\x84\x24\xe8\x00\x00\x00\x48\x89\x44\x24\x18\x64\x48\x8b\x14\x25\x28\x00\x00\x00\x48\x89\x94\x24\x98\x00\x00\x00\x31\xd2\x4d\x85\xc9\x0f\x84\x47\x01\x00\x00\x4d\x85\xc0\x0f\x84\x3e\x01\x00\x00\x4d\x85\xe4\x0f\x84\x3c\x01\x00\x00\x48\x85\xc9\x0f\x84\x33\x01\x00\x00\x4d\x85\xf6\x90\x0f\x84\x30\x01\x00\x00\xbe\x10\x00\x00\x00\xbf\x06\x00\x00\x00\xe8\x2b\xab\xff\xff\x48\x89\xc3\x48\x8d\x05\x7a\x4c\x00\x00\x48\x89\x03\x4c\x89\x73\x08\x48\x8d\x15\x4d\x4e\x00\x00\x48\x89\x53\x10\x4c\x89\x7b\x18\x48\x8d\x05\x7b\x4c\x00\x00\x48\x89\x43\x20\x4c\x89\x63\x28\x48\x8d\x15\x78\x4c\x00\x00\x48\x89\x53\x30\x48\x89\x6b\x38\x48\x8d\x05\x79\x4c\x00\x00\x48\x89\x43\x40\x4c\x89\x6b\x48\x4c\x8d\x4c\x24\x28\x49\x89\xd8\x48\x8d\x0d\x14\x4e\x00\x00\x48\x8b\x54\x24\x10\x48\x8b\x74\x24\x08\xbf\xff\xff\xff\xff\xe8\x92\xce\xff\xff\x48\x89\xc5\x48\x85\xc0\x0f\x84\xac\x00\x00\x00\x48\x8d\x54\x24\x30\x8b\x74\x24\x28\x48\x89\xc7\xe8\x5c\x33\x00\x00\x48\x89\xef\xe8\x66\xa9\xff\xff\x48\x8d\x35\x2a\x4b\x00\x00\x48\x8d\x7c\x24\x30\xe8\xf6\x33\x00\x00\x48\x85\xc0\x74\x23\xc7\x44\x24\x2c\xff\xff\xff\xff\x48\x8d\x54\x24\x2c\x48\x8d\x35\xbb\x45\x00\x00\x48\x89\xc7\xb8\x00\x00\x00\x00\xe8\x1f\xab\xff\xff\xeb\x2d\xc7\x44\x24\x2c\x00\x00\x00\x00\x48\x8d\x35\x96\x4d\x00\x00\x48\x8d\x7c\x24\x30\xe8\xb5\x33\x00\x00\x48\x85\xc0\x74\x0f\x48\x89\xc7\xe8\x97\xe2\xff\xff\x48\x8b\x54\x24\x18\x89\x02\x48\x8d\x7c\x24\x30\xe8\x45\x33\x00\x00\x48\x89\xdf\xe8\xee\xa8\xff\xff\x8b\x44\x24\x2c\xeb\x1a\xb8\xfe\xff\xff\xff\xeb\x13\xb8\xfe\xff\xff\xff\xeb\x0c\xb8\xfe\xff\xff\xff\xeb\x05\xb8\xfd\xff\xff\xff\x48\x8b\x94\x24\x98\x00\x00\x00\x64\x48\x33\x14\x25\x28\x00\x00\x00\x74\x05\xe8\x16\xa9\xff\xff\x48\x8b\x9c\x24\xa8\x00\x00\x00\x48\x8b\xac\x24\xb0\x00\x00\x00\x4c\x8b\xa4\x24\xb8\x00\x00\x00\x4c\x8b\xac\x24\xc0\x00\x00\x00\x4c\x8b\xb4\x24\xc8\x00\x00\x00\x4c\x8b\xbc\x24\xd0\x00\x00\x00\x48\x81\xc4\xd8\x00\x00\x00\xc3\x48\x89\x5c\x24\xd0\x48\x89\x6c\x24\xd8\x4c\x89\x64\x24\xe0\x4c\x89\x6c\x24\xe8\x4c\x89\x74\x24\xf0\x4c\x89\x7c\x24\xf8\x48\x81\xec\xd8\x00\x00\x00\x48\x89\x7c\x24\x10\x48\x89\x74\x24\x18\x49\x89\xd6\x49\x89\xcf\x4d\x89\xc5\x4c\x89\xcd\x4c\x8b\xa4\x24\xe0\x00\x00\x00\x48\x8b\x84\x24\xe8\x00\x00\x00\x48\x89\x04\x24\x48\x8b\x94\x24\xf0\x00\x00\x00\x48\x89\x54\x24\x08\x64\x48\x8b\x04\x25\x28\x00\x00\x00\x48\x89\x84\x24\x98\x00\x00\x00\x31\xc0\x4d\x85\xc9\x0f\x84\xd6\x01\x00\x00\x4d\x85\xc0\x0f\x84\xcd\x01\x00\x00\x4d\x85\xe4\x0f\x84\xcb\x01\x00\x00\x4d\x85\xf6\x90\x0f\x84\xc1\x01\x00\x00\x48\x85\xc9\x0f\x84\xbf\x01\x00\x00\x48\x83\x3c\x24\x00\x0f\x84\xb4\x01\x00\x00\xbe\x10\x00\x00\x00\xbf\x07\x00\x00\x00\xe8\xf7\xa8\xff\xff\x48\x89\xc3\xb9\x05\x00\x00\x00\x48\x8d\x3d\x47\x4c\x00\x00\x4c\x89\xf6\xf3\xa6\x0f\x97\xc2\x0f\x92\xc0\x38\xc2\x75\x17\x48\x8d\x15\x2b\x4a\x00\x00\x48\x89\x13\x48\x8d\x05\xaf\x43\x00\x00\x48\x89\x43\x08\xeb\x0e\x48\x8d\x15\x14\x4a\x00\x00\x48\x89\x13\x4c\x89\x73\x08\x48\x8d\x05\xe7\x4b\x00\x00\x48\x89\x43\x10\x4c\x89\x7b\x18\x48\x8d\x15\x15\x4a\x00\x00\x48\x89\x53\x20\x4c\x89\x63\x28\x48\x8d\x05\x12\x4a\x00\x00\x48\x89\x43\x30\x48\x89\x6b\x38\xb9\x05\x00\x00\x00\x48\x8d\x3d\xda\x4b\x00\x00\x4c\x89\xee\xf3\xa6\x0f\x97\xc2\x0f\x92\xc0\x38\xc2\x75\x18\x48\x8d\x15\xf8\x49\x00\x00\x48\x89\x53\x40\x48\x8d\x05\x41\x43\x00\x00\x48\x89\x43\x48\xeb\x0f\x48\x8d\x15\xe0\x49\x00\x00\x48\x89\x53\x40\x4c\x89\x6b\x48\x48\x8d\x05\xba\x4b\x00\x00\x48\x89\x43\x50\x48\x8b\x14\x24\x48\x89\x53\x58\x4c\x8d\x4c\x24\x28\x49\x89\xd8\x48\x8d\x0d\x88\x4b\x00\x00\x48\x8b\x54\x24\x18\x48\x8b\x74\x24\x10\xbf\xff\xff\xff\xff\xe8\xe6\xcb\xff\xff\x48\x89\xc5\x48\x85\xc0\x0f\x84\xb8\x00\x00\x00\x48\x8d\x54\x24\x30\x8b\x74\x24\x28\x48\x89\xc7\xe8\xb0\x30\x00\x00\x48\x89\xef\xe8\xba\xa6\xff\xff\x48\x8d\x35\x53\x4b\x00\x00\x48\x8d\x7c\x24\x30\xe8\x4a\x31\x00\x00\x48\x85\xc0\x74\x1b\xba\x08\x00\x00\x00\x48\x89\xc6\x48\x8b\x7c\x24\x08\xe8\xb2\xa6\xff\xff\x48\x8b\x44\x24\x08\xc6\x40\x07\x00\x48\x8d\x35\x4d\x48\x00\x00\x48\x8d\x7c\x24\x30\xe8\x19\x31\x00\x00\x48\x85\xc0\x74\x23\xc7\x44\x24\x2c\xff\xff\xff\xff\x48\x8d\x54\x24\x2c\x48\x8d\x35\xde\x42\x00\x00\x48\x89\xc7\xb8\x00\x00\x00\x00\xe8\x42\xa8\xff\xff\xeb\x08\xc7\x44\x24\x2c\x00\x00\x00\x00\x48\x8d\x7c\x24\x30\xe8\x8d\x30\x00\x00\x48\x89\xdf\xe8\x36\xa6\xff\xff\x8b\x44\x24\x2c\xeb\x1a\xb8\xfe\xff\xff\xff\xeb\x13\xb8\xfe\xff\xff\xff\xeb\x0c\xb8\xfe\xff\xff\xff\xeb\x05\xb8\xfd\xff\xff\xff\x48\x8b\x94\x24\x98\x00\x00\x00\x64\x48\x33\x14\x25\x28\x00\x00\x00\x74\x05\xe8\x5e\xa6\xff\xff\x48\x8b\x9c\x24\xa8\x00\x00\x00\x48\x8b\xac\x24\xb0\x00\x00\x00\x4c\x8b\xa4\x24\xb8\x00\x00\x00\x4c\x8b\xac\x24\xc0\x00\x00\x00\x4c\x8b\xb4\x24\xc8\x00\x00\x00\x4c\x8b\xbc\x24\xd0\x00\x00\x00\x48\x81\xc4\xd8\x00\x00\x00\xc3\x48\x89\x5c\x24\xd8\x48\x89\x6c\x24\xe0\x4c\x89\x64\x24\xe8\x4c\x89\x6c\x24\xf0\x4c\x89\x74\x24\xf8\x48\x81\xec\xa8\x00\x00\x00\x49\x89\xfe\x49\x89\xf5\x48\x89\xd5\x49\x89\xcc\x64\x48\x8b\x04\x25\x28\x00\x00\x00\x48\x89\x44\x24\x78\x31\xc0\x48\x85\xd2\x0f\x84\xd1\x00\x00\x00\x48\x85\xc9\x0f\x84\xc8\x00\x00\x00\xbe\x10\x00\x00\x00\xbf\x03\x00\x00\x00\xe8\x99\xa6\xff\xff\x48\x89\xc3\x48\x8d\x15\xff\x49\x00\x00\x48\x89\x10\x48\x89\x68\x08\x48\x8d\x05\xfa\x49\x00\x00\x48\x89\x43\x10\x4c\x89\x63\x18\x4c\x8d\x4c\x24\x08\x49\x89\xd8\x48\x8d\x0d\xf0\x49\x00\x00\x4c\x89\xea\x4c\x89\xf6\xbf\xff\xff\xff\xff\xe8\x31\xca\xff\xff\x48\x89\xc5\x48\x85\xc0\x74\x79\x48\x8d\x54\x24\x10\x8b\x74\x24\x08\x48\x89\xc7\xe8\xff\x2e\x00\x00\x48\x89\xef\xe8\x09\xa5\xff\xff\x48\x8d\x35\xcd\x46\x00\x00\x48\x8d\x7c\x24\x10\xe8\x99\x2f\x00\x00\x48\x85\xc0\x74\x23\xc7\x44\x24\x0c\xff\xff\xff\xff\x48\x8d\x54\x24\x0c\x48\x8d\x35\x5e\x41\x00\x00\x48\x89\xc7\xb8\x00\x00\x00\x00\xe8\xc2\xa6\xff\xff\xeb\x08\xc7\x44\x24\x0c\x00\x00\x00\x00\x48\x8d\x7c\x24\x10\xe8\x0d\x2f\x00\x00\x48\x89\xdf\xe8\xb6\xa4\xff\xff\x8b\x44\x24\x0c\xeb\x0c\xb8\xfe\xff\xff\xff\xeb\x05\xb8\xfd\xff\xff\xff\x48\x8b\x54\x24\x78\x64\x48\x33\x14\x25\x28\x00\x00\x00\x74\x05\xe8\xef\xa4\xff\xff\x48\x8b\x9c\x24\x80\x00\x00\x00\x48\x8b\xac\x24\x88\x00\x00\x00\x4c\x8b\xa4\x24\x90\x00\x00\x00\x4c\x8b\xac\x24\x98\x00\x00\x00\x4c\x8b\xb4\x24\xa0\x00\x00\x00\x48\x81\xc4\xa8\x00\x00\x00\xc3\x48\x89\x5c\x24\xe0\x48\x89\x6c\x24\xe8\x4c\x89\x64\x24\xf0\x4c\x89\x6c\x24\xf8\x48\x81\xec\xa8\x00\x00\x00\x49\x89\xfd\x49\x89\xf4\x48\x89\xd5\x64\x48\x8b\x04\x25\x28\x00\x00\x00\x48\x89\x44\x24\x78\x31\xc0\x48\x85\xd2\x0f\x84\xb9\x00\x00\x00\xbe\x10\x00\x00\x00\xbf\x02\x00\x00\x00\xe8\x43\xa5\xff\xff\x48\x89\xc3\x48\x8d\x15\xa9\x48\x00\x00\x48\x89\x10\x48\x89\x68\x08\x4c\x8d\x4c\x24\x08\x49\x89\xc0\x48\x8d\x0d\xb7\x48\x00\x00\x4c\x89\xe2\x4c\x89\xee\xbf\xff\xff\xff\xff\xe8\xea\xc8\xff\xff\x48\x89\xc5\x48\x85\xc0\x74\x79\x48\x8d\x54\x24\x10\x8b\x74\x24\x08\x48\x89\xc7\xe8\xb8\x2d\x00\x00\x48\x89\xef\xe8\xc2\xa3\xff\xff\x48\x8d\x35\x86\x45\x00\x00\x48\x8d\x7c\x24\x10\xe8\x52\x2e\x00\x00\x48\x85\xc0\x74\x23\xc7\x44\x24\x0c\xff\xff\xff\xff\x48\x8d\x54\x24\x0c\x48\x8d\x35\x17\x40\x00\x00\x48\x89\xc7\xb8\x00\x00\x00\x00\xe8\x7b\xa5\xff\xff\xeb\x08\xc7\x44\x24\x0c\x00\x00\x00\x00\x48\x8d\x7c\x24\x10\xe8\xc6\x2d\x00\x00\x48\x89\xdf\xe8\x6f\xa3\xff\xff\x8b\x44\x24\x0c\xeb\x0c\xb8\xfe\xff\xff\xff\xeb\x05\xb8\xfd\xff\xff\xff\x48\x8b\x54\x24\x78\x64\x48\x33\x14\x25\x28\x00\x00\x00\x74\x05\xe8\xa8\xa3\xff\xff\x48\x8b\x9c\x24\x88\x00\x00\x00\x48\x8b\xac\x24\x90\x00\x00\x00\x4c\x8b\xa4\x24\x98\x00\x00\x00\x4c\x8b\xac\x24\xa0\x00\x00\x00\x48\x81\xc4\xa8\x00\x00\x00\xc3\x48\x89\x5c\x24\xd8\x48\x89\x6c\x24\xe0\x4c\x89\x64\x24\xe8\x4c\x89\x6c\x24\xf0\x4c\x89\x74\x24\xf8\x48\x81\xec\xa8\x00\x00\x00\x49\x89\xfe\x49\x89\xf5\x48\x89\xd5\x49\x89\xcc\x64\x48\x8b\x04\x25\x28\x00\x00\x00\x48\x89\x44\x24\x78\x31\xc0\xc7\x44\x24\x0c\xff\xff\xff\xff\x48\x85\xd2\x0f\x84\xe7\x00\x00\x00\xbe\x10\x00\x00\x00\xbf\x04\x00\x00\x00\xe8\xf4\xa3\xff\xff\x48\x89\xc3\x48\x8d\x15\x5a\x47\x00\x00\x48\x89\x10\x48\x89\x68\x08\x4c\x8d\x4c\x24\x08\x49\x89\xc0\x48\x8d\x0d\x76\x47\x00\x00\x4c\x89\xea\x4c\x89\xf6\xbf\xff\xff\xff\xff\xe8\x9b\xc7\xff\xff\x48\x89\xc5\x48\x85\xc0\x0f\x84\xa3\x00\x00\x00\x48\x8d\x54\x24\x10\x8b\x74\x24\x08\x48\x89\xc7\xe8\x65\x2c\x00\x00\x48\x89\xef\xe8\x6f\xa2\xff\xff\x48\x8d\x35\x4e\x47\x00\x00\x48\x8d\x7c\x24\x10\xe8\xff\x2c\x00\x00\x48\x85\xc0\x74\x16\x48\x89\xc7\xe8\xe1\xdb\xff\xff\x41\x89\x04\x24\xc7\x44\x24\x0c\x00\x00\x00\x00\xeb\x08\x41\xc7\x04\x24\x00\x00\x00\x00\x48\x8d\x35\xff\x43\x00\x00\x48\x8d\x7c\x24\x10\xe8\xcb\x2c\x00\x00\x48\x85\xc0\x74\x21\xc7\x44\x24\x0c\xff\xff\xff\xff\x48\x8d\x54\x24\x0c\x48\x8d\x35\x90\x3e\x00\x00\x48\x89\xc7\xb8\x00\x00\x00\x00\xe8\xf4\xa3\xff\xff\x48\x8d\x7c\x24\x10\xe8\x49\x2c\x00\x00\x48\x89\xdf\xe8\xf2\xa1\xff\xff\x8b\x44\x24\x0c\xeb\x0c\xb8\xfe\xff\xff\xff\xeb\x05\xb8\xfd\xff\xff\xff\x48\x8b\x54\x24\x78\x64\x48\x33\x14\x25\x28\x00\x00\x00\x74\x05\xe8\x2b\xa2\xff\xff\x48\x8b\x9c\x24\x80\x00\x00\x00\x48\x8b\xac\x24\x88\x00\x00\x00\x4c\x8b\xa4\x24\x90\x00\x00\x00\x4c\x8b\xac\x24\x98\x00\x00\x00\x4c\x8b\xb4\x24\xa0\x00\x00\x00\x48\x81\xc4\xa8\x00\x00\x00\xc3\x48\x89\x5c\x24\xd8\x48\x89\x6c\x24\xe0\x4c\x89\x64\x24\xe8\x4c\x89\x6c\x24\xf0\x4c\x89\x74\x24\xf8\x48\x81\xec\xa8\x00\x00\x00\x49\x89\xfd\x49\x89\xf4\x48\x89\xd5\x49\x89\xce\x64\x48\x8b\x04\x25\x28\x00\x00\x00\x48\x89\x44\x24\x78\x31\xc0\xc7\x44\x24\x0c\xff\xff\xff\xff\x48\x85\xd2\x0f\x84\xdc\x00\x00\x00\xbe\x10\x00\x00\x00\xbf\x04\x00\x00\x00\xe8\x6f\xa2\xff\xff\x48\x89\xc3\x48\x8d\x15\xd5\x45\x00\x00\x48\x89\x10\x48\x89\x68\x08\x4c\x8d\x4c\x24\x08\x49\x89\xc0\x48\x8d\x0d\x0f\x46\x00\x00\x4c\x89\xe2\x4c\x89\xee\xbf\xff\xff\xff\xff\xe8\x16\xc6\xff\xff\x48\x89\xc5\x48\x85\xc0\x0f\x84\x98\x00\x00\x00\x48\x8d\x54\x24\x10\x8b\x74\x24\x08\x48\x89\xc7\xe8\xe0\x2a\x00\x00\x48\x89\xef\xe8\xea\xa0\xff\xff\x48\x8d\x35\xd6\x45\x00\x00\x48\x8d\x7c\x24\x10\xe8\x7a\x2b\x00\x00\x48\x85\xc0\x74\x13\x48\x89\xc7\xe8\x5c\xda\xff\xff\x41\x89\x06\xc7\x44\x24\x0c\x00\x00\x00\x00\x48\x8d\x35\x85\x42\x00\x00\x48\x8d\x7c\x24\x10\xe8\x51\x2b\x00\x00\x48\x85\xc0\x74\x21\xc7\x44\x24\x0c\xff\xff\xff\xff\x48\x8d\x54\x24\x0c\x48\x8d\x35\x16\x3d\x00\x00\x48\x89\xc7\xb8\x00\x00\x00\x00\xe8\x7a\xa2\xff\xff\x48\x8d\x7c\x24\x10\xe8\xcf\x2a\x00\x00\x48\x89\xdf\xe8\x78\xa0\xff\xff\x8b\x44\x24\x0c\xeb\x0c\xb8\xfe\xff\xff\xff\xeb\x05\xb8\xfd\xff\xff\xff\x48\x8b\x54\x24\x78\x64\x48\x33\x14\x25\x28\x00\x00\x00\x74\x05\xe8\xb1\xa0\xff\xff\x48\x8b\x9c\x24\x80\x00\x00\x00\x48\x8b\xac\x24\x88\x00\x00\x00\x4c\x8b\xa4\x24\x90\x00\x00\x00\x4c\x8b\xac\x24\x98\x00\x00\x00\x4c\x8b\xb4\x24\xa0\x00\x00\x00\x48\x81\xc4\xa8\x00\x00\x00\xc3\x90\x48\x8d\x05\x09\x46\x00\x00\x81\xff\xc0\x02\x00\x00\x0f\x84\x1c\x02\x00\x00\x81\xff\xc0\x02\x00\x00\x0f\x8f\x01\x01\x00\x00\x48\x8d\x05\x6a\x45\x00\x00\x81\xff\x91\x01\x00\x00\x0f\x84\xfd\x01\x00\x00\x81\xff\x91\x01\x00\x00\x7f\x68\x48\x8d\x05\x1d\x45\x00\x00\x83\xff\xfc\x0f\x84\xe5\x01\x00\x00\x83\xff\xfc\x7f\x22\x48\x8d\x05\xe2\x46\x00\x00\x83\xff\x9a\x0f\x84\xd0\x01\x00\x00\x48\x8d\x05\x13\x45\x00\x00\x83\xff\x9b\x0f\x85\xb9\x01\x00\x00\xf3\xc3\x48\x8d\x05\xb2\x44\x00\x00\x83\xff\xff\x0f\x84\xae\x01\x00\x00\x48\x8d\x05\x9a\x44\x00\x00\x85\xff\x0f\x84\x9f\x01\x00\x00\x48\x8d\x05\xab\x44\x00\x00\x83\xff\xfe\x0f\x85\x88\x01\x00\x00\xf3\xc3\x48\x8d\x05\x11\x45\x00\x00\x81\xff\x5e\x02\x00\x00\x0f\x84\x7a\x01\x00\x00\x81\xff\x5e\x02\x00\x00\x7f\x28\x48\x8d\x05\xdb\x44\x00\x00\x81\xff\x92\x01\x00\x00\x0f\x84\x5f\x01\x00\x00\x48\x8d\x05\xd5\x44\x00\x00\x81\xff\xf5\x01\x00\x00\x0f\x85\x45\x01\x00\x00\xf3\xc3\x48\x8d\x05\xfa\x44\x00\x00\x81\xff\xbe\x02\x00\x00\x0f\x84\x37\x01\x00\x00\x48\x8d\x05\xf8\x44\x00\x00\x81\xff\xbe\x02\x00\x00\x0f\x8f\x24\x01\x00\x00\x48\x8d\x05\xbe\x44\x00\x00\x81\xff\xbd\x02\x00\x00\x0f\x85\x0a\x01\x00\x00\xf3\xc3\x48\x8d\x05\x6c\x45\x00\x00\x81\xff\xca\x02\x00\x00\x0f\x84\xfc\x00\x00\x00\x81\xff\xca\x02\x00\x00\x7f\x7a\x48\x8d\x05\xef\x44\x00\x00\x81\xff\xc3\x02\x00\x00\x0f\x84\xe1\x00\x00\x00\x81\xff\xc3\x02\x00\x00\x7f\x28\x48\x8d\x05\xbf\x44\x00\x00\x81\xff\xc1\x02\x00\x00\x0f\x84\xc6\x00\x00\x00\x48\x8d\x05\xf0\x45\x00\x00\x81\xff\xc2\x02\x00\x00\x0f\x85\xac\x00\x00\x00\xf3\xc3\x48\x8d\x05\xe6\x44\x00\x00\x81\xff\xc5\x02\x00\x00\x0f\x84\x9e\x00\x00\x00\x48\x8d\x05\xb7\x44\x00\x00\x81\xff\xc5\x02\x00\x00\x0f\x8c\x8b\x00\x00\x00\x48\x8d\x05\xcd\x44\x00\x00\x81\xff\xc9\x02\x00\x00\x75\x75\xf3\xc3\x48\x8d\x05\x3b\x45\x00\x00\x81\xff\xd4\x02\x00\x00\x74\x6b\x81\xff\xd4\x02\x00\x00\x7f\x2f\x48\x8d\x05\xef\x44\x00\x00\x81\xff\xcc\x02\x00\x00\x74\x54\x48\x8d\x05\xc4\x44\x00\x00\x81\xff\xcc\x02\x00\x00\x7c\x45\x48\x8d\x05\xef\x44\x00\x00\x81\xff\xce\x02\x00\x00\x75\x2f\xf3\xc3\x48\x8d\x05\x86\x45\x00\x00\x81\xff\xd6\x02\x00\x00\x74\x25\x48\x8d\x05\xfd\x44\x00\x00\x81\xff\xd6\x02\x00\x00\x7c\x16\x48\x8d\x05\x88\x45\x00\x00\x81\xff\xd7\x02\x00\x00\x74\x07\x48\x8d\x05\xfc\x44\x00\x00\xf3\xc3\x90\x90\x90\x41\x57\x41\x56\x41\x55\x41\x54\x55\x53\x48\x81\xec\x48\x01\x00\x00\x49\x89\xfc\x89\x54\x24\x0c\x64\x48\x8b\x04\x25\x28\x00\x00\x00\x48\x89\x84\x24\x38\x01\x00\x00\x31\xc0\x48\x8d\x94\x24\x90\x00\x00\x00\xb9\x06\x00\x00\x00\x48\x89\xd7\xf3\x48\xab\xc7\x84\x24\x90\x00\x00\x00\x00\x04\x00\x00\xc7\x84\x24\x98\x00\x00\x00\x01\x00\x00\x00\x44\x0f\xb7\xce\x4c\x8d\x05\x07\x49\x00\x00\xb1\x08\xba\x01\x00\x00\x00\xbe\x08\x00\x00\x00\x48\x8d\xbc\x24\x30\x01\x00\x00\xe8\x64\x9d\xff\xff\x41\x80\x3c\x24\x5b\x75\x75\x41\x0f\xb6\x44\x24\x01\x84\xc0\x74\x59\x3c\x5d\x74\x55\x49\x8d\x7c\x24\x01\xbd\x00\x00\x00\x00\xbb\x01\x00\x00\x00\x4c\x8d\x2d\xf2\x44\x00\x00\x88\x84\x2c\xe0\x00\x00\x00\xba\x03\x00\x00\x00\x4c\x89\xee\xe8\x45\x9e\xff\xff\x8d\x53\x02\x85\xc0\x0f\x44\xda\x8d\x55\x01\x83\xc3\x01\x48\x63\xfb\x4c\x01\xe7\x0f\xb6\x07\x84\xc0\x74\x15\x3c\x5d\x74\x11\x48\x83\xc5\x01\x48\x83\xfd\x40\x75\xc3\xeb\x05\xba\x00\x00\x00\x00\x48\x63\xd2\xc6\x84\x14\xe0\x00\x00\x00\x00\xeb\x15\xba\x40\x00\x00\x00\x4c\x89\xe6\x48\x8d\xbc\x24\xe0\x00\x00\x00\xe8\x03\x9d\xff\xff\xc6\x84\x24\x20\x01\x00\x00\x00\x48\x8d\x8c\x24\xd0\x00\x00\x00\x48\x8d\x94\x24\x90\x00\x00\x00\x48\x8d\xb4\x24\x30\x01\x00\x00\x48\x8d\xbc\x24\xe0\x00\x00\x00\xe8\x66\x9f\xff\xff\x89\xc3\x85\xc0\x74\x34\x89\xc7\xe8\x49\x9d\xff\xff\x48\x89\xc1\x48\x8d\x15\x4c\x44\x00\x00\xbe\x01\x00\x00\x00\x48\x8b\x05\xbb\x5b\x20\x00\x48\x8b\x38\xb8\x00\x00\x00\x00\xe8\x26\x9f\xff\xff\xbd\xff\xff\xff\xff\xe9\x49\x02\x00\x00\x4c\x8b\xac\x24\xd0\x00\x00\x00\x4d\x85\xed\x0f\x84\x59\x02\x00\x00\x4c\x8d\x74\x24\x10\x41\x8b\x55\x0c\x41\x8b\x75\x08\x41\x8b\x7d\x04\xe8\x45\x9f\xff\xff\x89\xc5\x85\xc0\x0f\x88\xd2\x01\x00\x00\x49\x8b\x45\x18\x66\x83\x38\x0a\x75\x0e\x83\x7c\x24\x0c\x00\x74\x07\x8b\x54\x24\x0c\x89\x50\x18\x48\xc7\x84\x24\xc0\x00\x00\x00\x03\x00\x00\x00\x48\xc7\x84\x24\xc8\x00\x00\x00\x00\x00\x00\x00\x41\xb8\x10\x00\x00\x00\x48\x8d\x8c\x24\xc0\x00\x00\x00\xba\x14\x00\x00\x00\xbe\x01\x00\x00\x00\x89\xef\xe8\x2c\x9c\xff\xff\x85\xc0\x79\x0c\x48\x8d\x3d\x92\x39\x00\x00\xe8\x4c\x9e\xff\xff\x48\xc7\x84\x24\xc0\x00\x00\x00\x03\x00\x00\x00\x48\xc7\x84\x24\xc8\x00\x00\x00\x00\x00\x00\x00\x41\xb8\x10\x00\x00\x00\x48\x8d\x8c\x24\xc0\x00\x00\x00\xba\x15\x00\x00\x00\xbe\x01\x00\x00\x00\x89\xef\xe8\xe5\x9b\xff\xff\x85\xc0\x79\x0c\x48\x8d\x3d\x4b\x39\x00\x00\xe8\x05\x9e\xff\xff\x41\x8b\x55\x10\x49\x8b\x75\x18\x89\xef\xe8\x26\x9e\xff\xff\x89\xc3\x85\xc0\x0f\x89\x86\x01\x00\x00\xe8\x97\x9b\xff\xff\x49\x89\xc4\x89\xe8\xc1\xf8\x1f\xc1\xe8\x1a\x8d\x4c\x05\x00\x83\xe1\x3f\x29\xc1\xb8\x01\x00\x00\x00\x49\x89\xc7\x49\xd3\xe7\x48\x63\xc5\x48\x89\x04\x24\xe9\xc2\x00\x00\x00\xb9\x10\x00\x00\x00\xb8\x00\x00\x00\x00\x4c\x89\xf7\xfc\xf3\x48\xab\x48\x8b\x3c\x24\xe8\xd2\x9b\xff\xff\x4c\x09\x7c\xc4\x10\x8d\x7d\x01\x41\xb8\x00\x00\x00\x00\xb9\x00\x00\x00\x00\x4c\x89\xf2\xbe\x00\x00\x00\x00\xe8\xd2\x9c\xff\xff\x89\xc3\x83\xf8\xff\x75\x0b\x41\x83\x3c\x24\x04\x0f\x84\xf4\x00\x00\x00\xc7\x84\x24\xd8\x00\x00\x00\x04\x00\x00\x00\x4c\x8d\x84\x24\xd8\x00\x00\x00\x48\x8d\x8c\x24\xdc\x00\x00\x00\xba\x04\x00\x00\x00\xbe\x01\x00\x00\x00\x89\xef\xe8\x04\x9c\xff\xff\x85\xc0\x79\x2a\x48\x8d\x3d\xa0\x42\x00\x00\xe8\x34\x9d\xff\xff\x89\xef\xe8\x8d\x9b\xff\xff\x48\x8b\xbc\x24\xd0\x00\x00\x00\xe8\xa0\x9d\xff\xff\xbd\xff\xff\xff\xff\xe9\x83\x00\x00\x00\x8b\x84\x24\xdc\x00\x00\x00\x85\xc0\x74\x09\x41\x89\x04\x24\xe9\x86\x00\x00\x00\x85\xdb\x0f\x89\x94\x00\x00\x00\x41\x8b\x04\x24\x83\xf8\x04\x0f\x84\x31\xff\xff\xff\x83\xf8\x73\x0f\x84\x28\xff\xff\xff\x85\xdb\x79\x7a\x89\xef\xe8\x39\x9b\xff\xff\x4d\x8b\x6d\x28\x4d\x85\xed\x0f\x85\x06\xfe\xff\xff\x48\x8b\xbc\x24\xd0\x00\x00\x00\xe8\x3f\x9d\xff\xff\x85\xed\x79\x13\x48\x8d\x3d\xee\x37\x00\x00\xe8\xaf\x9c\xff\xff\xbd\xff\xff\xff\xff\xeb\x15\x85\xdb\x79\x11\x48\x8d\x3d\x0f\x42\x00\x00\xe8\x98\x9c\xff\xff\xbd\xff\xff\xff\xff\x89\xe8\x48\x8b\x94\x24\x38\x01\x00\x00\x64\x48\x33\x14\x25\x28\x00\x00\x00\x74\x2c\xeb\x25\xbb\xff\xff\xff\xff\xe9\x78\xff\xff\xff\xbf\x00\x00\x00\x00\xe8\xe8\x9c\xff\xff\xeb\xab\x48\x8b\xbc\x24\xd0\x00\x00\x00\xe8\xd9\x9c\xff\xff\xeb\xaf\xe8\x52\x9a\xff\xff\x48\x81\xc4\x48\x01\x00\x00\x5b\x5d\x41\x5c\x41\x5d\x41\x5e\x41\x5f\xc3\xb8\x00\x00\x00\x00\x85\xf6\x7e\x3b\x0f\xb6\x17\x84\xd2\x74\x34\x8d\x4a\xd0\x80\xf9\x09\x77\x2c\x83\xee\x01\x48\x8d\x74\x37\x01\xeb\x08\x8d\x4a\xd0\x80\xf9\x09\x77\x1a\x8d\x04\x80\x0f\xbe\xd2\x8d\x44\x42\xd0\x48\x83\xc7\x01\x48\x39\xf7\x74\x07\x0f\xb6\x17\x84\xd2\x75\xde\xf3\xc3\xc7\x47\x08\x00\x00\x00\x00\xc3\x48\x89\x5c\x24\xf0\x48\x89\x6c\x24\xf8\x48\x83\xec\x18\x48\x89\xf0\x48\x8b\x2f\x48\x85\xed\x0f\x84\xe2\x00\x00\x00\x83\xfa\x3f\xbb\x3f\x00\x00\x00\x89\xde\x0f\x4e\xf2\x83\x7f\x08\x09\x0f\x87\xcb\x00\x00\x00\x8b\x4f\x08\x48\x8d\x15\x30\x41\x00\x00\x48\x63\x0c\x8a\x48\x01\xca\xff\xe2\x48\x8d\x7d\x18\x48\x63\xde\x48\x89\xda\x48\x89\xc6\xe8\xc9\x9a\xff\xff\xc6\x44\x1d\x18\x00\xe9\x9c\x00\x00\x00\x48\x89\xc7\xe8\x47\xff\xff\xff\x66\x89\x45\x14\xe9\x8b\x00\x00\x00\x83\xfe\x03\xbb\x03\x00\x00\x00\x0f\x4e\xde\x48\x8d\xbd\xd8\x00\x00\x00\x48\x63\xdb\x48\x89\xda\x48\x89\xc6\xe8\x8e\x9a\xff\xff\xc6\x84\x1d\xd8\x00\x00\x00\x00\xeb\x61\x48\x89\xc7\xe8\x0c\xff\xff\xff\x66\x89\x45\x16\xeb\x53\x48\x8d\x7d\x58\x48\x63\xde\x48\x89\xda\x48\x89\xc6\xe8\x64\x9a\xff\xff\xc6\x44\x1d\x58\x00\xeb\x3a\x48\x89\xc7\xe8\xe5\xfe\xff\xff\x88\x85\xdc\x00\x00\x00\xeb\x2a\x48\x8d\xbd\x98\x00\x00\x00\x48\x63\xde\x48\x89\xda\x48\x89\xc6\xe8\x38\x9a\xff\xff\xc6\x84\x1d\x98\x00\x00\x00\x00\xeb\x0b\x48\x89\xc7\xe8\xb6\xfe\xff\xff\x89\x45\x10\x48\x8b\x5c\x24\x08\x48\x8b\x6c\x24\x10\x48\x83\xc4\x18\xc3\x41\x56\x41\x55\x41\x54\x55\x53\x49\x89\xfe\x49\x89\xf4\xc7\x47\x08\x00\x00\x00\x00\xbb\x00\x00\x00\x00\x48\x8d\x35\x5d\x3c\x00\x00\x4c\x63\xea\x4c\x89\xea\x4c\x89\xe7\xe8\x65\x99\xff\xff\x85\xc0\x75\x1c\x48\x63\xeb\x48\xc1\xe5\x04\x48\x8d\x05\x13\x55\x20\x00\x8b\x04\x28\x41\x89\x46\x08\x83\xf8\x01\x75\x47\xeb\x1d\x48\x83\xc3\x01\x48\x89\xd8\x48\xc1\xe0\x04\x48\x8d\x15\xfb\x54\x20\x00\x48\x8b\x34\x02\x48\x85\xf6\x75\xba\xeb\x28\xbe\xe0\x00\x00\x00\xbf\x01\x00\x00\x00\xe8\x39\x99\xff\xff\x49\x8b\x16\x48\x89\x10\x48\x85\xd2\x74\x07\x49\x8b\x16\x48\x89\x42\x08\x49\x89\x06\x4c\x89\x70\x08\x5b\x5d\x41\x5c\x41\x5d\x41\x5e\xc3\x48\x83\xec\x58\x48\xc7\x42\x08\x00\x00\x00\x00\x48\xc7\x02\x00\x00\x00\x00\x48\x89\x3c\x24\x89\x74\x24\x18\x48\x89\x54\x24\x20\x48\x8d\x05\x3c\xff\xff\xff\x48\x89\x44\x24\x28\x48\x8d\x05\x1a\xfe\xff\xff\x48\x89\x44\x24\x30\x48\x8d\x05\x16\xfe\xff\xff\x48\x89\x44\x24\x38\x48\xc7\x44\x24\x40\x00\x00\x00\x00\x48\x89\xe7\xe8\x52\x12\x00\x00\x48\x83\xc4\x58\xc3\x53\x48\x89\xfb\x48\x8b\x3f\x48\x85\xff\x74\x27\x48\x8b\x07\x48\x85\xc0\x74\x08\x48\x8b\x57\x08\x48\x89\x50\x08\x48\x8b\x47\x08\x48\x8b\x17\x48\x89\x10\xe8\x62\x97\xff\xff\x48\x8b\x3b\x48\x85\xff\x75\xd9\x5b\xc3\x48\x89\x5c\x24\xd0\x48\x89\x6c\x24\xd8\x4c\x89\x64\x24\xe0\x4c\x89\x6c\x24\xe8\x4c\x89\x74\x24\xf0\x4c\x89\x7c\x24\xf8\x48\x81\xec\xd8\x00\x00\x00\x89\xfd\x49\x89\xf6\x41\x89\xd5\x41\x89\xcc\x4d\x89\xc7\x64\x48\x8b\x04\x25\x28\x00\x00\x00\x48\x89\x84\x24\x98\x00\x00\x00\x31\xc0\xc7\x44\x24\x0c\x80\x00\x00\x00\x89\x2c\x24\x66\xc7\x44\x24\x04\x01\x00\x44\x89\xe2\xbe\x01\x00\x00\x00\x48\x89\xe7\xe8\x20\x99\xff\xff\x89\xc3\x85\xc0\x79\x1d\xe8\xf5\x96\xff\xff\x83\x38\x04\x74\xd6\x48\x8d\x3d\xec\x3e\x00\x00\xe8\x34\x99\xff\xff\xbb\xff\xff\xff\xff\xeb\x46\x85\xc0\x74\x42\x49\x63\xd5\x4c\x8d\x4c\x24\x0c\x4c\x8d\x44\x24\x10\xb9\x00\x00\x00\x00\x4c\x89\xf6\x89\xef\xe8\x8d\x98\xff\xff\x89\xc3\x85\xc0\x79\x0c\x48\x8d\x3d\xb8\x3e\x00\x00\xe8\xfb\x98\xff\xff\x66\x83\x7c\x24\x10\x0a\x75\x0c\x4d\x85\xff\x74\x07\x8b\x44\x24\x28\x41\x89\x07\x89\xd8\x48\x8b\x94\x24\x98\x00\x00\x00\x64\x48\x33\x14\x25\x28\x00\x00\x00\x74\x05\xe8\xcd\x96\xff\xff\x48\x8b\x9c\x24\xa8\x00\x00\x00\x48\x8b\xac\x24\xb0\x00\x00\x00\x4c\x8b\xa4\x24\xb8\x00\x00\x00\x4c\x8b\xac\x24\xc0\x00\x00\x00\x4c\x8b\xb4\x24\xc8\x00\x00\x00\x4c\x8b\xbc\x24\xd0\x00\x00\x00\x48\x81\xc4\xd8\x00\x00\x00\xc3\x90\x41\x57\x41\x56\x41\x55\x41\x54\x55\x53\x48\x81\xec\xb8\x10\x00\x00\x48\x89\xfb\x48\x89\xf5\x64\x48\x8b\x04\x25\x28\x00\x00\x00\x48\x89\x84\x24\xa8\x10\x00\x00\x31\xc0\xba\x00\x00\x00\x00\xbe\x01\x00\x00\x00\xbf\x01\x00\x00\x00\xe8\xe6\x98\xff\xff\x89\x44\x24\x2c\x85\xc0\x79\x1a\x48\x8d\x3d\x04\x3e\x00\x00\xe8\x42\x98\xff\xff\x48\xc7\x44\x24\x10\x00\x00\x00\x00\xe9\x46\x03\x00\x00\x66\xc7\x84\x24\x30\x10\x00\x00\x01\x00\x48\x8d\xbc\x24\x32\x10\x00\x00\xba\x6c\x00\x00\x00\x48\x89\xee\xe8\xd5\x95\xff\xff\xba\x6e\x00\x00\x00\x48\x8d\xb4\x24\x30\x10\x00\x00\x8b\x7c\x24\x2c\xe8\x2f\x98\xff\xff\x85\xc0\x79\x17\x8b\x7c\x24\x2c\xe8\x52\x96\xff\xff\x48\xc7\x44\x24\x10\x00\x00\x00\x00\xe9\xf6\x02\x00\x00\x48\x89\xdf\xb8\x00\x00\x00\x00\x48\xc7\xc1\xff\xff\xff\xff\xf2\xae\x48\xf7\xd1\x8d\x51\xff\xc6\x44\x24\x30\x01\x48\x8d\x7c\x24\x31\x81\xfa\xff\xff\xff\x0f\x76\x11\x89\xd0\xc1\xe8\x1c\x83\xc8\x80\x88\x44\x24\x31\x48\x8d\x7c\x24\x32\x81\xfa\xff\xff\x1f\x00\x76\x0e\x89\xd0\xc1\xe8\x15\x83\xc8\x80\x88\x07\x48\x83\xc7\x01\x81\xfa\xff\x3f\x00\x00\x76\x0e\x89\xd0\xc1\xe8\x0e\x83\xc8\x80\x88\x07\x48\x83\xc7\x01\x83\xfa\x7f\x76\x0e\x89\xd0\xc1\xe8\x07\x83\xc8\x80\x88\x07\x48\x83\xc7\x01\x89\xd0\x83\xe0\x7f\x88\x07\x48\x83\xc7\x01\x89\xd2\x48\x8d\x2c\x17\x48\x8d\x84\x24\x30\x10\x00\x00\x48\x39\xc5\x76\x17\x8b\x7c\x24\x2c\xe8\xa4\x95\xff\xff\x48\xc7\x44\x24\x10\x00\x00\x00\x00\xe9\x48\x02\x00\x00\xb9\xfe\x0f\x00\x00\x48\x89\xde\xe8\x29\x96\xff\xff\x48\x8d\x74\x24\x30\x48\x89\xea\x48\x29\xf2\x8b\x7c\x24\x2c\xe8\xf5\x94\xff\xff\x48\x85\xc0\x79\x23\x48\x8d\x3d\xd3\x3c\x00\x00\xe8\x04\x97\xff\xff\x8b\x7c\x24\x2c\xe8\x5b\x95\xff\xff\x48\xc7\x44\x24\x10\x00\x00\x00\x00\xe9\xff\x01\x00\x00\xba\x00\x10\x00\x00\x48\x8d\x74\x24\x30\x8b\x7c\x24\x2c\xe8\x6a\x95\xff\xff\x48\x85\xc0\x7e\x46\x80\x7c\x24\x30\x00\x0f\x84\xb1\x01\x00\x00\x48\x8d\x94\x24\x30\x10\x00\x00\x48\x8d\x44\x24\x33\x48\x39\xc2\x0f\x86\xa6\x01\x00\x00\xc7\x44\x24\x28\x00\x00\x00\x00\x48\xc7\x44\x24\x10\x00\x00\x00\x00\x48\x8d\x5c\x24\x31\x48\x8d\x94\x24\x30\x10\x00\x00\x48\x89\x54\x24\x08\xeb\x37\x48\x8d\x3d\x67\x3c\x00\x00\xe8\x83\x96\xff\xff\x8b\x7c\x24\x2c\xe8\xda\x94\xff\xff\x48\xc7\x44\x24\x10\x00\x00\x00\x00\xe9\x7e\x01\x00\x00\x48\x8d\x43\x02\x48\x39\x44\x24\x08\x0f\x86\x5a\x01\x00\x00\x4c\x89\x74\x24\x10\x41\xbc\x00\x00\x00\x00\x41\xc1\xe4\x07\x0f\xb6\x03\x89\xc2\x83\xe2\x7f\x41\x09\xd4\x48\x83\xc3\x01\x84\xc0\x79\x09\x41\x81\xfc\xff\xff\xff\x01\x76\xe0\x45\x89\xe7\x4a\x8d\x44\x3b\x02\x48\x39\x44\x24\x08\x0f\x86\x28\x01\x00\x00\x4a\x8d\x2c\x3b\x41\xbd\x00\x00\x00\x00\x41\xc1\xe5\x07\x0f\xb6\x45\x00\x89\xc2\x83\xe2\x7f\x41\x09\xd5\x48\x83\xc5\x01\x84\xc0\x79\x09\x41\x81\xfd\xff\xff\xff\x01\x76\xdf\x44\x89\xe8\x48\x89\x44\x24\x18\x48\x8d\x44\x05\x02\x48\x39\x44\x24\x08\x0f\x86\xe5\x00\x00\x00\x48\x8b\x54\x24\x18\x49\x8d\x7c\x17\x20\xe8\x2d\x95\xff\xff\x49\x89\xc6\x48\x8b\x44\x24\x10\x49\x89\x06\x49\x8d\x56\x1c\x48\x89\x54\x24\x10\x49\x89\x56\x08\x49\x8d\x47\x01\x48\x89\x44\x24\x20\x4b\x8d\x44\x3e\x1d\x49\x89\x46\x10\x4c\x89\xfa\x48\x89\xde\x48\x8b\x7c\x24\x10\xe8\xc3\x94\xff\xff\x44\x89\xe0\x41\xc6\x44\x06\x1c\x00\x48\x8b\x7c\x24\x10\x48\x03\x7c\x24\x20\x48\x8b\x54\x24\x18\x48\x89\xee\xe8\xa3\x94\xff\xff\x48\x03\x6c\x24\x18\x47\x8d\x64\x2c\x01\x43\xc6\x44\x26\x1c\x00\xbb\x00\x00\x00\x00\xc1\xe3\x07\x0f\xb6\x45\x00\x89\xc2\x83\xe2\x7f\x09\xd3\x48\x83\xc5\x01\x84\xc0\x79\x08\x81\xfb\xff\xff\xff\x01\x76\xe2\x89\xdb\x48\x01\xeb\x48\x3b\x5c\x24\x08\x77\x38\x83\x44\x24\x28\x01\x0f\xb6\x44\x24\x30\x3b\x44\x24\x28\x0f\x87\xb4\xfe\xff\xff\x4c\x89\x74\x24\x10\xeb\x22\x48\xc7\x44\x24\x10\x00\x00\x00\x00\xeb\x17\x48\xc7\x44\x24\x10\x00\x00\x00\x00\xeb\x0c\x4c\x89\x74\x24\x10\xeb\x05\x4c\x89\x74\x24\x10\x8b\x7c\x24\x2c\xe8\x4e\x93\xff\xff\x48\x8b\x44\x24\x10\x48\x8b\x94\x24\xa8\x10\x00\x00\x64\x48\x33\x14\x25\x28\x00\x00\x00\x74\x05\xe8\xd1\x92\xff\xff\x48\x81\xc4\xb8\x10\x00\x00\x5b\x5d\x41\x5c\x41\x5d\x41\x5e\x41\x5f\xc3\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x41\x57\x41\x56\x41\x55\x41\x54\x55\x53\x48\x81\xec\x98\x08\x00\x00\x89\x7c\x24\x30\x48\x89\x74\x24\x58\x64\x48\x8b\x04\x25\x28\x00\x00\x00\x48\x89\x84\x24\x88\x08\x00\x00\x31\xc0\xbf\x00\x08\x00\x00\xe8\xd9\x93\xff\xff\x49\x89\xc5\xbf\x00\x08\x00\x00\xe8\xcc\x93\xff\xff\x48\x89\x44\x24\x08\xc6\x84\x24\x60\x08\x00\x00\x00\xbd\x00\x00\x00\x00\xc7\x44\x24\x10\x00\x00\x00\x00\xc7\x44\x24\x14\x00\x08\x00\x00\xc7\x44\x24\x18\x00\x00\x00\x00\xc7\x44\x24\x44\x00\x08\x00\x00\x41\xbe\x00\x00\x00\x00\xc7\x44\x24\x20\xff\xff\xff\xff\xc7\x44\x24\x34\x00\x00\x00\x00\xc7\x44\x24\x24\x00\x00\x00\x00\x48\x8d\x94\x24\x61\x08\x00\x00\x48\x89\x54\x24\x50\xe9\x43\x05\x00\x00\x83\x7c\x24\x24\x00\x0f\x85\xcb\x02\x00\x00\x8b\x44\x24\x18\x44\x01\xe0\x89\x44\x24\x04\x39\x44\x24\x44\x73\x15\x89\xc6\x4c\x89\xef\xe8\x94\x93\xff\xff\x49\x89\xc5\x8b\x54\x24\x04\x89\x54\x24\x44\x4c\x89\x6c\x24\x38\x8b\x7c\x24\x18\x4c\x01\xef\x49\x63\xd4\x48\x8d\x74\x24\x60\xe8\xf0\x92\xff\xff\x44\x8b\x64\x24\x04\x44\x89\xe2\x83\xea\x01\x85\xd2\x0f\x8e\xd4\x04\x00\x00\xb8\x00\x00\x00\x00\x8b\x4c\x24\x24\x48\x63\xf0\x41\x0f\xb6\x74\x35\x00\x40\x80\xfe\x0d\x75\x3b\x8d\x70\x01\x48\x63\xfe\x41\x80\x7c\x3d\x00\x0a\x75\x48\x8d\x70\x02\x44\x39\xe6\x7d\x44\x48\x63\xfe\x41\x80\x7c\x3d\x00\x0d\x75\x3d\x8d\x70\x03\x44\x39\xe6\x7d\x3e\x48\x63\xfe\x41\x80\x7c\x3d\x00\x0a\x75\x37\x8d\x48\x04\x89\xf0\xeb\x36\x40\x80\xfe\x0a\x75\x30\x8d\x70\x01\x48\x63\xfe\x41\x80\x7c\x3d\x00\x0a\x75\x20\x8d\x48\x02\x89\xf0\xeb\x1b\x89\xf0\xeb\x17\x89\xf0\xeb\x13\x89\xf0\x0f\x1f\x44\x00\x00\xeb\x0a\x89\xf0\xeb\x06\x89\xf0\xeb\x02\x89\xf0\x83\xc0\x01\x39\xd0\x7d\x08\x85\xc9\x0f\x84\x71\xff\xff\xff\x89\x4c\x24\x24\x89\x4c\x24\x40\x85\xc9\x0f\x84\x36\x04\x00\x00\x41\x89\xcf\x41\x83\xef\x01\x45\x85\xff\x0f\x8e\x93\x01\x00\x00\xc7\x44\x24\x18\x00\x00\x00\x00\xb9\x00\x00\x00\x00\xba\x00\x00\x00\x00\xbb\x00\x00\x00\x00\x89\x6c\x24\x48\x44\x89\x74\x24\x4c\x41\xbe\x00\x00\x00\x00\x39\xca\x7c\x4c\x48\x63\xf3\x41\x80\x7c\x35\x00\x3a\x75\x41\x89\xd8\x41\x39\xdf\x7e\x2d\x41\x0f\xb6\x4c\x35\x01\x80\xf9\x20\x74\x05\x80\xf9\x09\x75\x1d\x89\xd8\x83\xc0\x01\x44\x39\xf8\x7d\x13\x48\x63\xc8\x41\x0f\xb6\x4c\x0d\x01\x80\xf9\x20\x74\xea\x80\xf9\x09\x74\xe5\x44\x8d\x70\x01\x89\xd9\x89\xc3\xe9\x08\x01\x00\x00\x48\x63\xeb\x4c\x01\xed\x0f\xb6\x45\x00\x3c\x0d\x74\x08\x3c\x0a\x0f\x85\xf2\x00\x00\x00\x39\xd1\x0f\x8e\x92\x00\x00\x00\x41\x39\xce\x0f\x8e\x89\x00\x00\x00\x29\xd1\x48\x63\xc9\x48\x89\x4c\x24\x18\x48\x63\xd2\x4c\x01\xea\x48\x89\x54\x24\x28\x48\x89\xca\x48\x8d\x35\x2c\x38\x00\x00\x48\x8b\x7c\x24\x28\xe8\x9f\x91\xff\xff\x85\xc0\x75\x1b\x49\x63\xfe\x4c\x01\xef\xba\x0a\x00\x00\x00\xbe\x00\x00\x00\x00\xe8\x36\x91\xff\xff\x89\x44\x24\x20\xeb\x41\x48\x8b\x54\x24\x18\x48\x8d\x35\x06\x38\x00\x00\x48\x8b\x7c\x24\x28\xe8\x6a\x91\xff\xff\x85\xc0\x75\x27\x49\x63\xfe\x4c\x01\xef\xba\x07\x00\x00\x00\x48\x8d\x35\xf8\x37\x00\x00\xe8\x4f\x91\xff\xff\x85\xc0\xb8\x01\x00\x00\x00\x0f\x45\x44\x24\x34\x89\x44\x24\x34\x44\x39\xe3\x7d\x31\x0f\xb6\x45\x00\x3c\x0d\x74\x04\x3c\x0a\x75\x31\x83\xc3\x01\x44\x39\xe3\x7d\x35\x48\x63\xc3\x41\x0f\xb6\x44\x05\x00\x3c\x0d\x74\xeb\x3c\x0a\x74\xe7\x89\xd9\x89\xda\x41\xbe\x00\x00\x00\x00\xeb\x22\x89\xd9\x89\xda\x41\xbe\x00\x00\x00\x00\xeb\x16\x89\xd9\x89\xda\x41\xbe\x00\x00\x00\x00\xeb\x0a\x89\xd9\x89\xda\x41\xbe\x00\x00\x00\x00\x83\xc3\x01\x44\x39\xfb\x0f\x8c\x9c\xfe\xff\xff\x8b\x6c\x24\x48\x44\x8b\x74\x24\x4c\x44\x8b\x64\x24\x04\x44\x2b\x64\x24\x40\x49\x63\xd4\x48\x63\x74\x24\x40\x48\x03\x74\x24\x38\xb9\x00\x08\x00\x00\x48\x8d\x7c\x24\x60\xe8\x3c\x90\xff\xff\x8b\x54\x24\x04\x89\x54\x24\x18\x83\x7c\x24\x34\x00\x0f\x84\xd8\x01\x00\x00\xbb\x00\x00\x00\x00\x45\x85\xe4\x7f\x0d\xe9\x2e\x02\x00\x00\x8b\x44\x24\x04\x89\x44\x24\x10\x45\x85\xf6\x0f\x85\x42\x01\x00\x00\x85\xed\x75\x2c\x41\x39\xdc\x0f\x8e\x10\x02\x00\x00\x48\x63\xc3\x80\x7c\x04\x60\x0d\x75\x0c\x83\xc3\x01\x41\x39\xdc\x0f\x8e\xfa\x01\x00\x00\x48\x63\xc3\x80\x7c\x04\x60\x0a\x75\x49\x83\xc3\x01\x41\x39\xdc\x7f\x41\xe9\xe3\x01\x00\x00\x89\xea\x88\x84\x14\x60\x08\x00\x00\x83\xc5\x01\x89\xe8\xc6\x84\x04\x60\x08\x00\x00\x00\x83\xc3\x01\x41\x39\xdc\x7f\x29\xe9\xc0\x01\x00\x00\x48\x63\xc3\x0f\xb6\x44\x04\x60\x3c\x0d\x0f\x84\x42\x02\x00\x00\x3c\x0a\x75\x34\xe9\x39\x02\x00\x00\x0f\x1f\x00\xe8\xfb\x90\xff\xff\x48\x8b\x08\x48\x63\xc3\x0f\xb6\x44\x04\x60\x48\x0f\xbe\xd0\xf6\x44\x51\x01\x10\x74\x05\x83\xfd\x1e\x76\xa1\x89\xea\x41\x39\xdc\x7f\xbd\xe9\x78\x01\x00\x00\x83\xc3\x01\x41\x39\xdc\x0f\x8e\x6c\x01\x00\x00\x48\x63\xc3\x0f\xb6\x44\x04\x60\x3c\x0d\x74\x06\x3c\x0a\x75\xe4\xeb\x0c\x83\xc3\x01\x41\x39\xdc\x0f\x8e\x4e\x01\x00\x00\x48\x63\xc3\x80\x7c\x04\x60\x0a\x0f\x85\x1a\xff\xff\xff\x85\xd2\x0f\x84\x86\x01\x00\x00\x48\x8d\x84\x24\x60\x08\x00\x00\x83\xea\x01\x48\x8b\x74\x24\x50\x48\x01\xd6\x0f\xb6\x10\x8d\x4a\xd0\x80\xf9\x09\x77\x0e\x41\xc1\xe6\x04\x0f\xbe\xd2\x45\x8d\x74\x16\xd0\xeb\x0f\x41\xc1\xe6\x04\x83\xca\x20\x0f\xbe\xd2\x45\x8d\x74\x16\xa9\x48\x83\xc0\x01\x48\x39\xf0\x75\xcf\xc6\x84\x24\x60\x08\x00\x00\x00\x45\x85\xf6\x0f\x84\x31\x01\x00\x00\x83\xc3\x01\xbd\x00\x00\x00\x00\x45\x89\xe7\x41\x29\xdf\x45\x39\xfe\x45\x0f\x4e\xfe\x8b\x54\x24\x10\x44\x01\xfa\x89\x54\x24\x04\x39\x54\x24\x14\x73\x20\x39\x54\x24\x20\x8b\x44\x24\x20\x0f\x4c\xc2\x89\x44\x24\x14\x89\xc6\x48\x8b\x7c\x24\x08\xe8\x3e\x8f\xff\xff\x48\x89\x44\x24\x08\x8b\x7c\x24\x10\x48\x03\x7c\x24\x08\x44\x89\xfa\x48\x63\xf3\x48\x8d\x44\x24\x60\x48\x01\xc6\xe8\x9d\x8e\xff\xff\x41\x8d\x04\x1f\x89\xc3\x45\x29\xfe\x41\x39\xc4\x0f\x8f\x41\xfe\xff\xff\x8b\x54\x24\x04\x89\x54\x24\x10\xeb\x65\x83\x7c\x24\x20\x00\x7e\x17\x8b\x54\x24\x10\x44\x01\xe2\x8b\x44\x24\x20\x2b\x44\x24\x10\x39\x54\x24\x20\x44\x0f\x4c\xe0\x8b\x5c\x24\x10\x44\x01\xe3\x39\x5c\x24\x14\x73\x20\x39\x5c\x24\x20\x8b\x44\x24\x20\x0f\x4c\xc3\x89\x44\x24\x14\x89\xc6\x48\x8b\x7c\x24\x08\xe8\xbb\x8e\xff\xff\x48\x89\x44\x24\x08\x8b\x7c\x24\x10\x48\x03\x7c\x24\x08\x49\x63\xd4\x48\x8d\x74\x24\x60\xe8\x20\x8e\xff\xff\x89\x5c\x24\x10\x83\x7c\x24\x20\x00\x7e\x1e\x8b\x54\x24\x20\x39\x54\x24\x10\x7c\x14\xeb\x3b\x8b\x44\x24\x04\x89\x44\x24\x18\xeb\x08\x8b\x54\x24\x04\x89\x54\x24\x18\x41\xb8\x00\x00\x00\x00\xb9\x88\x13\x00\x00\xba\x00\x08\x00\x00\x48\x8d\x74\x24\x60\x8b\x7c\x24\x30\xe8\xf1\xf4\xff\xff\x41\x89\xc4\x85\xc0\x0f\x8f\x94\xfa\xff\xff\x4c\x89\xef\xe8\x36\x8c\xff\xff\x8b\x54\x24\x10\x48\x8b\x44\x24\x58\x89\x10\x85\xd2\x75\x13\x48\x8b\x7c\x24\x08\xe8\x1d\x8c\xff\xff\x48\xc7\x44\x24\x08\x00\x00\x00\x00\x48\x8b\x44\x24\x08\x48\x8b\x94\x24\x88\x08\x00\x00\x64\x48\x33\x14\x25\x28\x00\x00\x00\x74\x1a\xeb\x13\x48\x63\xc3\x80\x7c\x04\x60\x0d\x0f\x85\x12\xfe\xff\xff\xe9\x01\xfe\xff\xff\xe8\x42\x8c\xff\xff\x48\x81\xc4\x98\x08\x00\x00\x5b\x5d\x41\x5c\x41\x5d\x41\x5e\x41\x5f\xc3\x41\x57\x41\x56\x41\x55\x41\x54\x55\x53\x48\x81\xec\xe8\x08\x00\x00\x49\x89\xfd\x48\x89\x54\x24\x28\x49\x89\xcf\x4d\x89\xc6\x44\x89\x4c\x24\x3c\x48\x8b\x84\x24\x20\x09\x00\x00\x48\x89\x44\x24\x30\x64\x48\x8b\x14\x25\x28\x00\x00\x00\x48\x89\x94\x24\xd8\x08\x00\x00\x31\xd2\xc7\x01\x00\x00\x00\x00\x89\xf5\x8b\x94\x24\x28\x09\x00\x00\xe8\x8c\xed\xff\xff\x41\x89\xc4\xbb\x00\x00\x00\x00\x85\xc0\x0f\x88\x31\x01\x00\x00\x4d\x85\xf6\x0f\x84\x87\x00\x00\x00\xc7\x44\x24\x4c\x80\x00\x00\x00\x48\x8d\x54\x24\x4c\x48\x8d\xb4\x24\x50\x08\x00\x00\x89\xc7\xe8\xb3\x8d\xff\xff\x85\xc0\x79\x0e\x48\x8d\x3d\xb4\x33\x00\x00\xe8\x93\x8d\xff\xff\xeb\x59\xc7\x04\x24\x03\x00\x00\x00\x41\xb9\x00\x00\x00\x00\x41\xb8\x00\x00\x00\x00\x8b\x4c\x24\x3c\x4c\x89\xf2\x8b\x74\x24\x4c\x48\x8d\xbc\x24\x50\x08\x00\x00\xe8\xd6\x8b\xff\xff\x85\xc0\x74\x2a\x89\xc7\xe8\x9b\x8b\xff\xff\x48\x89\xc1\x48\x8d\x15\x79\x33\x00\x00\xbe\x01\x00\x00\x00\x48\x8b\x05\x0d\x4a\x20\x00\x48\x8b\x38\xb8\x00\x00\x00\x00\xe8\x78\x8d\xff\xff\x89\x6c\x24\x10\x4c\x89\x6c\x24\x08\x48\x8b\x44\x24\x30\x48\x89\x04\x24\x4c\x8b\x4c\x24\x28\x4c\x8d\x05\x6a\x33\x00\x00\xb9\x00\x08\x00\x00\xba\x01\x00\x00\x00\xbe\x00\x08\x00\x00\x48\x8d\x7c\x24\x50\xb8\x00\x00\x00\x00\xe8\x8c\x8a\xff\xff\x89\xc5\x85\xc0\x7e\x49\xbb\x00\x00\x00\x00\x89\xea\x29\xda\x48\x63\xd2\x48\x63\xf3\x48\x8d\x44\x24\x50\x48\x01\xc6\xb9\x00\x00\x00\x00\x44\x89\xe7\xe8\xe2\x8a\xff\xff\x85\xc0\x79\x1b\x48\x8d\x3d\x0a\x33\x00\x00\xe8\xc2\x8c\xff\xff\x44\x89\xe7\xe8\x1a\x8b\xff\xff\xbb\x00\x00\x00\x00\xeb\x1c\x01\xc3\x39\xeb\x7c\xbc\x4c\x89\xfe\x44\x89\xe7\xe8\xf2\xf7\xff\xff\x48\x89\xc3\x44\x89\xe7\xe8\xf7\x8a\xff\xff\x48\x89\xd8\x48\x8b\x94\x24\xd8\x08\x00\x00\x64\x48\x33\x14\x25\x28\x00\x00\x00\x74\x05\xe8\x7c\x8a\xff\xff\x48\x81\xc4\xe8\x08\x00\x00\x5b\x5d\x41\x5c\x41\x5d\x41\x5e\x41\x5f\xc3\x48\x83\xec\x18\x8b\x44\x24\x20\x89\x44\x24\x08\x48\x8d\x05\x65\x27\x00\x00\x48\x89\x04\x24\xe8\x1e\xfe\xff\xff\x48\x83\xc4\x18\xc3\x48\x89\x5c\x24\xd0\x48\x89\x6c\x24\xd8\x4c\x89\x64\x24\xe0\x4c\x89\x6c\x24\xe8\x4c\x89\x74\x24\xf0\x4c\x89\x7c\x24\xf8\x48\x83\xec\x68\x48\x89\xfb\x49\x89\xf4\x48\x89\xd5\x49\x89\xcd\x4d\x89\xc6\x64\x48\x8b\x04\x25\x28\x00\x00\x00\x48\x89\x44\x24\x28\x31\xc0\x48\x85\xff\x0f\x84\xd8\x02\x00\x00\x48\x8d\x35\x40\x32\x00\x00\xe8\x53\x8c\xff\xff\x48\x89\xc2\xb8\x00\x00\x00\x00\x48\x85\xd2\x0f\x84\xbb\x02\x00\x00\x80\x3b\x68\x0f\x85\xb2\x02\x00\x00\x80\x7b\x01\x74\x0f\x85\xa8\x02\x00\x00\x80\x7b\x02\x74\x0f\x85\x9e\x02\x00\x00\x80\x7b\x03\x70\x0f\x85\x94\x02\x00\x00\x4c\x8d\x7a\x03\x4c\x89\xe7\xbe\x41\x00\x00\x00\x41\xf6\xc4\x01\x74\x0d\x41\xc6\x04\x24\x00\x49\x8d\x7c\x24\x01\x40\xb6\x40\x40\xf6\xc7\x02\x74\x0c\x66\xc7\x07\x00\x00\x48\x83\xc7\x02\x83\xee\x02\x40\xf6\xc7\x04\x74\x0d\xc7\x07\x00\x00\x00\x00\x48\x83\xc7\x04\x83\xee\x04\x89\xf1\xc1\xe9\x03\x89\xc9\xb8\x00\x00\x00\x00\xf3\x48\xab\x40\xf6\xc6\x04\x74\x0a\xc7\x07\x00\x00\x00\x00\x48\x83\xc7\x04\x40\xf6\xc6\x02\x74\x09\x66\xc7\x07\x00\x00\x48\x83\xc7\x02\x40\xf6\xc6\x01\x74\x03\xc6\x07\x00\x80\x7a\x03\x5b\x0f\x85\x4d\x01\x00\x00\xbe\x25\x00\x00\x00\x4c\x89\xff\xe8\x49\x89\xff\xff\x48\x89\xc3\xbe\x5d\x00\x00\x00\x4c\x89\xff\xe8\x39\x89\xff\xff\x48\x89\x04\x24\x48\x85\xc0\x0f\x95\x44\x24\x0f\x74\x77\x48\x85\xdb\x74\x72\x48\x39\xc3\x73\x6d\x4d\x85\xf6\x74\x68\x48\x8d\x73\x01\x80\x7b\x01\x32\x75\x0c\x48\x8d\x43\x03\x80\x7b\x02\x35\x48\x0f\x44\xf0\x8b\x04\x24\x29\xf0\x83\xf8\x0f\xba\x0f\x00\x00\x00\x0f\x4f\xc2\x48\x63\xd8\xb9\x10\x00\x00\x00\x48\x89\xda\x48\x8d\x7c\x24\x10\xe8\xc1\x89\xff\xff\xc6\x44\x1c\x10\x00\x48\x8d\x7c\x24\x10\xe8\xc2\x89\xff\xff\x41\x89\x06\x85\xc0\x75\x17\xba\x0a\x00\x00\x00\xbe\x00\x00\x00\x00\x48\x8d\x7c\x24\x10\xe8\xb7\x8a\xff\xff\x41\x89\x06\xbe\x2f\x00\x00\x00\x4c\x89\xff\xe8\xa7\x88\xff\xff\x48\x89\xc3\x80\x7c\x24\x0f\x00\x0f\x84\x90\x00\x00\x00\x48\x85\xc0\x0f\x84\x87\x00\x00\x00\x48\x8b\x04\x24\x48\x83\xc0\x01\x44\x29\xf8\x83\xf8\x40\xba\x40\x00\x00\x00\x0f\x4f\xc2\x48\x63\xd0\x4c\x89\xfe\x4c\x89\xe7\xe8\x0c\x88\xff\xff\x48\x8b\x04\x24\x80\x78\x01\x3a\x75\x45\x66\xc7\x45\x00\x00\x00\x48\x89\xc2\x0f\xb6\x40\x02\x83\xe8\x30\x3c\x09\x77\x37\x48\x89\xd0\x48\x83\xc0\x02\x0f\xb7\x55\x00\x8d\x14\x92\x01\xd2\x66\x89\x55\x00\x66\x0f\xbe\x08\x8d\x54\x0a\xd0\x66\x89\x55\x00\x48\x83\xc0\x01\x0f\xb6\x10\x83\xea\x30\x80\xfa\x09\x76\xd8\xeb\x06\x66\xc7\x45\x00\x50\x00\x49\x89\x5d\x00\xb8\x01\x00\x00\x00\xe9\xc2\x00\x00\x00\xbe\x3a\x00\x00\x00\x4c\x89\xff\xe8\xfc\x87\xff\xff\x48\x89\xc3\xbe\x2f\x00\x00\x00\x4c\x89\xff\xe8\xec\x87\xff\xff\x49\x89\xc6\xb8\x00\x00\x00\x00\x4d\x85\xf6\x0f\x84\x94\x00\x00\x00\x48\x85\xdb\x74\x05\x4c\x39\xf3\x76\x27\x44\x89\xf0\x44\x29\xf8\x83\xf8\x40\xba\x40\x00\x00\x00\x0f\x4f\xc2\x48\x63\xd0\x4c\x89\xfe\x4c\x89\xe7\xe8\x52\x87\xff\xff\x66\xc7\x45\x00\x50\x00\xeb\x5a\x89\xd8\x44\x29\xf8\x83\xf8\x40\xba\x40\x00\x00\x00\x0f\x4f\xc2\x48\x63\xd0\x4c\x89\xfe\x4c\x89\xe7\xe8\x2c\x87\xff\xff\x66\xc7\x45\x00\x00\x00\x0f\xb6\x43\x01\x83\xe8\x30\x3c\x09\x77\x2b\x48\x83\xc3\x01\x0f\xb7\x45\x00\x8d\x04\x80\x01\xc0\x66\x89\x45\x00\x66\x0f\xbe\x13\x8d\x44\x10\xd0\x66\x89\x45\x00\x48\x83\xc3\x01\x0f\xb6\x03\x83\xe8\x30\x3c\x09\x76\xd9\x4d\x89\x75\x00\xb8\x01\x00\x00\x00\x48\x8b\x54\x24\x28\x64\x48\x33\x14\x25\x28\x00\x00\x00\x74\x05\xe8\x12\x87\xff\xff\x48\x8b\x5c\x24\x38\x48\x8b\x6c\x24\x40\x4c\x8b\x64\x24\x48\x4c\x8b\x6c\x24\x50\x4c\x8b\x74\x24\x58\x4c\x8b\x7c\x24\x60\x48\x83\xc4\x68\xc3\x53\x48\x83\xc4\x80\x48\x89\xf3\x89\x54\x24\x1c\x64\x48\x8b\x04\x25\x28\x00\x00\x00\x48\x89\x44\x24\x78\x31\xc0\xc7\x06\x00\x00\x00\x00\x4c\x8d\x44\x24\x1c\x48\x8d\x4c\x24\x20\x48\x8d\x54\x24\x2e\x48\x8d\x74\x24\x30\xe8\x6b\xfc\xff\xff\x89\xc2\xb8\x00\x00\x00\x00\x85\xd2\x74\x2a\x0f\xb7\x74\x24\x2e\x8b\x44\x24\x1c\x89\x04\x24\x41\xb9\x00\x00\x00\x00\x41\xb8\x00\x00\x00\x00\x48\x89\xd9\x48\x8b\x54\x24\x20\x48\x8d\x7c\x24\x30\xe8\x15\xfc\xff\xff\x48\x8b\x54\x24\x78\x64\x48\x33\x14\x25\x28\x00\x00\x00\x74\x05\xe8\x6a\x86\xff\xff\x48\x83\xec\x80\x5b\xc3\x48\x89\x5c\x24\xe8\x48\x89\x6c\x24\xf0\x4c\x89\x64\x24\xf8\x48\x81\xec\x98\x00\x00\x00\x48\x89\xf5\x48\x89\xd3\x41\x89\xcc\x44\x89\x44\x24\x1c\x64\x48\x8b\x04\x25\x28\x00\x00\x00\x48\x89\x44\x24\x78\x31\xc0\xc7\x06\x00\x00\x00\x00\x48\x85\xd2\x74\x03\xc6\x02\x00\x4c\x8d\x44\x24\x1c\x48\x8d\x4c\x24\x20\x48\x8d\x54\x24\x2e\x48\x8d\x74\x24\x30\xe8\xc0\xfb\xff\xff\x89\xc2\xb8\x00\x00\x00\x00\x85\xd2\x74\x24\x0f\xb7\x74\x24\x2e\x8b\x44\x24\x1c\x89\x04\x24\x45\x89\xe1\x49\x89\xd8\x48\x89\xe9\x48\x8b\x54\x24\x20\x48\x8d\x7c\x24\x30\xe8\x70\xfb\xff\xff\x48\x8b\x54\x24\x78\x64\x48\x33\x14\x25\x28\x00\x00\x00\x74\x05\xe8\xc5\x85\xff\xff\x48\x8b\x9c\x24\x80\x00\x00\x00\x48\x8b\xac\x24\x88\x00\x00\x00\x4c\x8b\xa4\x24\x90\x00\x00\x00\x48\x81\xc4\x98\x00\x00\x00\xc3\x90\x90\x90\x90\x90\x41\x57\x41\x56\x41\x55\x41\x54\x55\x53\x48\x83\xec\x18\x48\x89\xfb\x48\x8b\x07\x48\x89\x47\x10\x48\x63\x57\x18\x48\x01\xd0\x48\x89\x47\x08\x4c\x8d\x35\x2c\x2e\x00\x00\x4c\x8d\x2d\x2a\x2e\x00\x00\xe9\x06\x04\x00\x00\x48\x8d\x45\x04\x49\x39\xc4\x72\x4f\xba\x04\x00\x00\x00\x4c\x89\xf6\x48\x89\xef\xe8\x01\x86\xff\xff\x85\xc0\x75\x3b\x48\x83\xc5\x03\x48\x89\x6b\x10\x48\x8b\x6b\x10\x48\x8d\x7d\x01\x48\x89\x7b\x10\x48\x83\xc5\x04\x4c\x39\xe5\x0f\x83\xde\x03\x00\x00\xba\x03\x00\x00\x00\x4c\x89\xee\xe8\xcf\x85\xff\xff\x85\xc0\x75\xd6\x48\x89\x6b\x10\xe9\xae\x03\x00\x00\x80\x7d\x00\x3c\x0f\x85\x9c\x03\x00\x00\x80\x7d\x01\x3f\x0f\x84\x92\x03\x00\x00\x48\x8d\x75\x01\x48\x89\x73\x10\xeb\x22\x83\xc2\x01\x48\x8d\x41\x01\x48\x89\x43\x10\x4c\x39\xe0\x0f\x83\x92\x03\x00\x00\x80\x79\x01\x3a\x75\x0d\x48\x8d\x71\x02\x48\x89\x73\x10\xba\x00\x00\x00\x00\x48\x8b\x4b\x10\x0f\xb6\x01\x3c\x20\x74\x18\x3c\x09\x74\x14\x3c\x0d\x74\x10\x3c\x0a\x74\x0c\x3c\x3e\x0f\x1f\x40\x00\x74\x04\x3c\x2f\x75\xb6\x85\xd2\x0f\x8e\xef\x02\x00\x00\x48\x8b\x43\x28\x48\x85\xc0\x74\x06\x48\x8b\x7b\x20\xff\xd0\x48\x8b\x73\x10\x48\x8b\x7b\x08\x48\x39\xf7\x0f\x86\x34\x03\x00\x00\x0f\xb6\x06\x3c\x2f\x0f\x84\x7e\x01\x00\x00\x3c\x3e\x75\x1c\x0f\x1f\x00\xe9\x72\x01\x00\x00\x0f\xb6\x40\x01\x3c\x2f\x0f\x84\x66\x01\x00\x00\x3c\x3e\x0f\x84\x5e\x01\x00\x00\x3c\x20\x0f\x84\x38\x01\x00\x00\x3c\x09\x0f\x84\x30\x01\x00\x00\x3c\x0d\x0f\x1f\x44\x00\x00\x0f\x84\x23\x01\x00\x00\xba\x00\x00\x00\x00\x3c\x0a\x75\x1a\x90\xe9\x14\x01\x00\x00\x83\xc2\x01\x48\x83\xc1\x01\x48\x89\x4b\x10\x48\x39\xcf\x0f\x86\xc9\x02\x00\x00\x48\x8b\x4b\x10\x0f\xb6\x01\x3c\x3d\x74\x22\x3c\x20\x74\x1e\x3c\x09\x74\x1a\x3c\x0d\x66\x90\x74\x14\x3c\x0a\x75\xcf\xeb\x0e\x48\x39\x43\x08\x0f\x1f\x40\x00\x0f\x86\x9c\x02\x00\x00\x48\x8b\x43\x10\x0f\xb6\x08\x48\x83\xc0\x01\x48\x89\x43\x10\x80\xf9\x3d\x75\xde\xeb\x12\x48\x83\xc1\x01\x48\x89\x4b\x10\x48\x3b\x4b\x08\x0f\x83\x74\x02\x00\x00\x48\x8b\x4b\x10\x0f\xb6\x01\x3c\x20\x74\xe3\x3c\x09\x74\xdf\x3c\x0d\x74\xdb\x3c\x0a\x74\xd7\x48\x89\xcf\x3c\x27\x74\x0a\x41\xb8\x00\x00\x00\x00\x3c\x22\x75\x53\x48\x8d\x4f\x01\x48\x89\x4b\x10\x48\x8b\x7b\x08\x48\x39\xf9\x0f\x83\x37\x02\x00\x00\x41\xb8\x00\x00\x00\x00\xeb\x15\x41\x83\xc0\x01\x49\x83\xc1\x01\x4c\x89\x4b\x10\x4c\x39\xcf\x0f\x86\x1a\x02\x00\x00\x4c\x8b\x4b\x10\x41\x3a\x01\x75\xe2\xeb\x37\x41\x83\xc0\x01\x48\x83\xc7\x01\x48\x89\x7b\x10\x48\x3b\x7b\x08\x0f\x83\xf9\x01\x00\x00\x48\x8b\x7b\x10\x0f\xb6\x07\x3c\x20\x74\x16\x3c\x09\x74\x12\x3c\x0d\x74\x0e\x3c\x0a\x66\x90\x74\x08\x3c\x3e\x74\x04\x3c\x2f\x75\xc9\x48\x8b\x43\x40\x48\x85\xc0\x74\x06\x48\x8b\x7b\x20\xff\xd0\x48\x8b\x43\x10\x48\x8d\x70\x01\x48\x89\x73\x10\x48\x8b\x7b\x08\x48\x39\xfe\x0f\x82\x93\xfe\xff\xff\xe9\xab\x01\x00\x00\x48\x8b\x43\x10\x80\x38\x2f\x0f\x84\x88\x01\x00\x00\x48\x83\xc0\x01\x48\x89\x44\x24\x08\x48\x89\x43\x10\x4c\x8b\x7b\x08\x4c\x39\xf8\x0f\x83\x84\x01\x00\x00\x41\xbc\x00\x00\x00\x00\xeb\x15\x41\x83\xc4\x01\x48\x83\xc5\x01\x48\x89\x6b\x10\x49\x39\xef\x0f\x86\x67\x01\x00\x00\x48\x8b\x6b\x10\x0f\xb6\x45\x00\x3c\x20\x74\xdf\x3c\x09\x74\xdb\x3c\x0d\x74\xd7\x3c\x0a\x74\xd3\xba\x09\x00\x00\x00\x48\x8d\x35\x50\x2b\x00\x00\x48\x89\xef\xe8\x39\x83\xff\xff\x85\xc0\x0f\x85\xa1\x00\x00\x00\x48\x83\xc5\x09\x48\x89\x6c\x24\x08\x48\x89\x6b\x10\x41\xbc\x00\x00\x00\x00\xeb\x19\x41\x83\xc4\x01\x48\x8d\x45\x01\x48\x89\x43\x10\x48\x83\xc5\x04\x49\x39\xef\x0f\x86\x05\x01\x00\x00\x48\x8b\x6b\x10\xba\x03\x00\x00\x00\x48\x8d\x35\x0c\x2b\x00\x00\x48\x89\xef\xe8\xeb\x82\xff\xff\x85\xc0\x75\xcb\x45\x85\xe4\x7e\x2b\x48\x8b\x43\x38\x48\x85\xc0\x74\x22\x48\x8b\x7b\x20\x44\x89\xe2\x48\x8b\x74\x24\x08\xff\xd0\xeb\x12\x48\x83\xc0\x01\x48\x89\x43\x10\x48\x3b\x43\x08\x0f\x83\xb9\x00\x00\x00\x48\x8b\x43\x10\x80\x38\x3c\x75\xe5\xe9\x95\x00\x00\x00\x41\x83\xc4\x01\x48\x8d\x42\x01\x48\x89\x43\x10\x48\x83\xc2\x02\x49\x39\xd7\x0f\x86\x92\x00\x00\x00\x48\x8b\x53\x10\x80\x3a\x3c\x75\xde\x45\x85\xe4\x7e\x6e\x48\x8b\x43\x38\x48\x85\xc0\x74\x65\x80\x7a\x01\x2f\x75\x5f\x48\x8b\x7b\x20\x44\x89\xe2\x48\x8b\x74\x24\x08\xff\xd0\xeb\x4f\x3c\x2f\x75\x4b\x48\x8d\x71\x01\x48\x89\x73\x10\x4c\x39\xe6\x73\x54\xba\x00\x00\x00\x00\xeb\x10\x83\xc2\x01\x48\x83\xc0\x01\x48\x89\x43\x10\x4c\x39\xe0\x73\x3d\x48\x8b\x43\x10\x80\x38\x3e\x75\xe7\x48\x8b\x43\x30\x48\x85\xc0\x74\x06\x48\x8b\x7b\x20\xff\xd0\x48\x83\x43\x10\x01\xeb\x08\x48\x83\xc5\x01\x48\x89\x6b\x10\x48\x8b\x6b\x10\x4c\x8b\x63\x08\x49\x8d\x44\x24\xff\x48\x39\xc5\x0f\x82\xe4\xfb\xff\xff\x48\x83\xc4\x18\x5b\x5d\x41\x5c\x41\x5d\x41\x5e\x41\x5f\xc3\x90\x90\x90\x48\x89\x5c\x24\xe0\x48\x89\x6c\x24\xe8\x4c\x89\x64\x24\xf0\x4c\x89\x6c\x24\xf8\x48\x83\xec\x28\x48\x89\xfd\x49\x89\xf5\x41\x89\xd4\x48\x63\xda\x48\x89\xda\xe8\x40\x82\xff\xff\xc6\x44\x1d\x00\x00\x83\x85\x80\x01\x00\x00\x01\x41\x83\xfc\x07\x75\x32\x48\x89\xda\x48\x8d\x35\xc1\x29\x00\x00\x4c\x89\xef\xe8\x9c\x81\xff\xff\x85\xc0\x75\x1c\xc6\x85\x84\x09\x00\x00\x00\xc6\x85\x04\x0a\x00\x00\x00\xc6\x85\x84\x0a\x00\x00\x00\xc6\x85\x04\x0b\x00\x00\x00\x48\x8b\x5c\x24\x08\x48\x8b\x6c\x24\x10\x4c\x8b\x64\x24\x18\x4c\x8b\x6c\x24\x20\x48\x83\xc4\x28\xc3\x48\x89\x5c\x24\xf0\x48\x89\x6c\x24\xf8\x48\x83\xec\x18\x48\x89\xfb\x48\x89\xf7\x83\xab\x80\x01\x00\x00\x01\x83\xfa\x07\x0f\x85\x36\x03\x00\x00\xba\x07\x00\x00\x00\x48\x8d\x35\x50\x29\x00\x00\xe8\x2e\x81\xff\xff\x85\xc0\x0f\x85\x1d\x03\x00\x00\x48\x8d\xab\x04\x0b\x00\x00\xba\x36\x00\x00\x00\x48\x8d\x35\x13\x2a\x00\x00\x48\x89\xef\xe8\x0b\x81\xff\xff\x85\xc0\x0f\x85\xa9\x00\x00\x00\x48\x8d\x93\x84\x01\x00\x00\x48\x8d\x8b\x84\x09\x00\x00\x48\x89\xd7\x48\x89\xce\x66\xb8\x00\x02\xf6\xc2\x01\x74\x20\x0f\xb6\x83\x84\x09\x00\x00\x88\x83\x84\x01\x00\x00\x48\x8d\xbb\x85\x01\x00\x00\x48\x8d\xb3\x85\x09\x00\x00\xb8\xff\x01\x00\x00\x40\xf6\xc7\x02\x74\x11\x0f\xb7\x16\x66\x89\x17\x48\x83\xc7\x02\x48\x83\xc6\x02\x83\xe8\x02\x40\xf6\xc7\x04\x74\x0f\x8b\x16\x89\x17\x48\x83\xc7\x04\x48\x83\xc6\x04\x83\xe8\x04\x89\xc1\xc1\xe9\x03\x89\xc9\xf3\x48\xa5\xba\x00\x00\x00\x00\xa8\x04\x74\x09\x8b\x16\x89\x17\xba\x04\x00\x00\x00\xa8\x02\x74\x0c\x0f\xb7\x0c\x16\x66\x89\x0c\x17\x48\x83\xc2\x02\xa8\x01\x0f\x84\x5d\x02\x00\x00\x0f\xb6\x04\x16\x88\x04\x17\xe9\x51\x02\x00\x00\xba\x34\x00\x00\x00\x48\x8d\x35\x86\x29\x00\x00\x48\x89\xef\xe8\x46\x80\xff\xff\x85\xc0\x0f\x85\xa9\x00\x00\x00\x48\x8d\x93\x84\x07\x00\x00\x48\x8d\x8b\x84\x09\x00\x00\x48\x89\xd7\x48\x89\xce\x66\xb8\x00\x02\xf6\xc2\x01\x74\x20\x0f\xb6\x83\x84\x09\x00\x00\x88\x83\x84\x07\x00\x00\x48\x8d\xbb\x85\x07\x00\x00\x48\x8d\xb3\x85\x09\x00\x00\xb8\xff\x01\x00\x00\x40\xf6\xc7\x02\x74\x11\x0f\xb7\x16\x66\x89\x17\x48\x83\xc7\x02\x48\x83\xc6\x02\x83\xe8\x02\x40\xf6\xc7\x04\x74\x0f\x8b\x16\x89\x17\x48\x83\xc7\x04\x48\x83\xc6\x04\x83\xe8\x04\x89\xc1\xc1\xe9\x03\x89\xc9\xf3\x48\xa5\xba\x00\x00\x00\x00\xa8\x04\x74\x09\x8b\x16\x89\x17\xba\x04\x00\x00\x00\xa8\x02\x74\x0c\x0f\xb7\x0c\x16\x66\x89\x0c\x17\x48\x83\xc2\x02\xa8\x01\x0f\x84\x98\x01\x00\x00\x0f\xb6\x04\x16\x88\x04\x17\xe9\x8c\x01\x00\x00\xba\x2d\x00\x00\x00\x48\x8d\x35\xf9\x28\x00\x00\x48\x89\xef\xe8\x81\x7f\xff\xff\x85\xc0\x74\x1c\xba\x2e\x00\x00\x00\x48\x8d\x35\x11\x29\x00\x00\x48\x89\xef\xe8\x69\x7f\xff\xff\x85\xc0\x0f\x85\x58\x01\x00\x00\x80\xbb\x04\x05\x00\x00\x00\x0f\x85\xaa\x00\x00\x00\x48\x8d\x93\x84\x03\x00\x00\x48\x8d\x8b\x84\x09\x00\x00\x48\x89\xd7\x48\x89\xce\xb8\x00\x02\x00\x00\xf6\xc2\x01\x74\x20\x0f\xb6\x83\x84\x09\x00\x00\x88\x83\x84\x03\x00\x00\x48\x8d\xbb\x85\x03\x00\x00\x48\x8d\xb3\x85\x09\x00\x00\xb8\xff\x01\x00\x00\x40\xf6\xc7\x02\x74\x11\x0f\xb7\x16\x66\x89\x17\x48\x83\xc7\x02\x48\x83\xc6\x02\x83\xe8\x02\x40\xf6\xc7\x04\x74\x0f\x8b\x16\x89\x17\x48\x83\xc7\x04\x48\x83\xc6\x04\x83\xe8\x04\x89\xc1\xc1\xe9\x03\x89\xc9\xf3\x48\xa5\xba\x00\x00\x00\x00\xa8\x04\x74\x09\x8b\x16\x89\x17\xba\x04\x00\x00\x00\xa8\x02\x74\x0c\x0f\xb7\x0c\x16\x66\x89\x0c\x17\x48\x83\xc2\x02\xa8\x01\x0f\x84\xad\x00\x00\x00\x0f\xb6\x04\x16\x88\x04\x17\xe9\xa1\x00\x00\x00\x48\x8d\x93\x84\x05\x00\x00\x48\x8d\x8b\x84\x09\x00\x00\x48\x89\xd7\x48\x89\xce\xb8\x00\x02\x00\x00\xf6\xc2\x01\x74\x20\x0f\xb6\x83\x84\x09\x00\x00\x88\x83\x84\x05\x00\x00\x48\x8d\xbb\x85\x05\x00\x00\x48\x8d\xb3\x85\x09\x00\x00\xb8\xff\x01\x00\x00\x40\xf6\xc7\x02\x74\x11\x0f\xb7\x16\x66\x89\x17\x48\x83\xc7\x02\x48\x83\xc6\x02\x83\xe8\x02\x40\xf6\xc7\x04\x74\x0f\x8b\x16\x89\x17\x48\x83\xc7\x04\x48\x83\xc6\x04\x83\xe8\x04\x89\xc1\xc1\xe9\x03\x89\xc9\xf3\x48\xa5\xba\x00\x00\x00\x00\xa8\x04\x74\x09\x8b\x16\x89\x17\xba\x04\x00\x00\x00\xa8\x02\x74\x0c\x0f\xb7\x0c\x16\x66\x89\x0c\x17\x48\x83\xc2\x02\xa8\x01\x74\x07\x0f\xb6\x04\x16\x88\x04\x17\x48\x8b\x5c\x24\x08\x48\x8b\x6c\x24\x10\x48\x83\xc4\x18\xc3\x55\x53\x48\x83\xec\x08\x48\x89\xfd\x48\x89\xf0\xb9\x08\x00\x00\x00\x48\x8d\x3d\x07\x26\x00\x00\x48\x89\xee\xf3\xa6\x40\x0f\x97\xc6\x0f\x92\xc1\x40\x38\xce\x75\x09\x48\x83\xed\x80\xe9\xbf\x00\x00\x00\xb9\x10\x00\x00\x00\x48\x8d\x3d\xe9\x25\x00\x00\x48\x89\xee\xf3\xa6\x40\x0f\x97\xc6\x0f\x92\xc1\x40\x38\xce\x75\x0c\x48\x81\xc5\x00\x01\x00\x00\xe9\x96\x00\x00\x00\xb9\x0c\x00\x00\x00\x48\x8d\x3d\xd0\x25\x00\x00\x48\x89\xee\xf3\xa6\x40\x0f\x97\xc6\x0f\x92\xc1\x40\x38\xce\x75\x09\x48\x81\xc5\x04\x0b\x00\x00\xeb\x70\xb9\x0b\x00\x00\x00\x48\x8d\x3d\xb6\x25\x00\x00\x48\x89\xee\xf3\xa6\x40\x0f\x97\xc6\x0f\x92\xc1\x40\x38\xce\x75\x09\x48\x81\xc5\x84\x09\x00\x00\xeb\x4a\xb9\x0c\x00\x00\x00\x48\x8d\x3d\x9b\x25\x00\x00\x48\x89\xee\xf3\xa6\x40\x0f\x97\xc6\x0f\x92\xc1\x40\x38\xce\x75\x09\x48\x81\xc5\x04\x0a\x00\x00\xeb\x24\xb9\x08\x00\x00\x00\x48\x8d\x3d\x81\x25\x00\x00\x48\x89\xee\xf3\xa6\x40\x0f\x97\xc6\x0f\x92\xc1\x40\x38\xce\x75\x2d\x48\x81\xc5\x84\x0a\x00\x00\x48\x85\xed\x74\x21\x83\xfa\x7f\xbb\x7f\x00\x00\x00\x0f\x4e\xda\x48\x63\xdb\x48\x89\xda\x48\x89\xc6\x48\x89\xef\xe8\x68\x7d\xff\xff\xc6\x44\x1d\x00\x00\x48\x83\xc4\x08\x5b\x5d\xc3\x53\x48\x89\xfb\x48\x8d\x97\x80\x00\x00\x00\x48\x8d\x35\x32\x25\x00\x00\xbf\x01\x00\x00\x00\xb8\x00\x00\x00\x00\xe8\xcb\x7d\xff\xff\x48\x8d\x35\x84\x26\x00\x00\xbf\x01\x00\x00\x00\xb8\x00\x00\x00\x00\xe8\xb5\x7d\xff\xff\x48\x8d\x93\x04\x03\x00\x00\x48\x8d\x35\x0f\x25\x00\x00\xbf\x01\x00\x00\x00\xb8\x00\x00\x00\x00\xe8\x98\x7d\xff\xff\x48\x8d\x93\x84\x01\x00\x00\x48\x8d\x35\x07\x25\x00\x00\xbf\x01\x00\x00\x00\xb8\x00\x00\x00\x00\xe8\x7b\x7d\xff\xff\x48\x8d\x93\x04\x02\x00\x00\x48\x8d\x35\xfe\x24\x00\x00\xbf\x01\x00\x00\x00\xb8\x00\x00\x00\x00\xe8\x5e\x7d\xff\xff\x48\x8d\x93\x84\x02\x00\x00\x48\x8d\x35\xf6\x24\x00\x00\xbf\x01\x00\x00\x00\xb8\x00\x00\x00\x00\xe8\x41\x7d\xff\xff\x48\x8d\x35\x22\x26\x00\x00\xbf\x01\x00\x00\x00\xb8\x00\x00\x00\x00\xe8\x2b\x7d\xff\xff\x48\x8d\x93\x04\x05\x00\x00\x48\x8d\x35\xd4\x24\x00\x00\xbf\x01\x00\x00\x00\xb8\x00\x00\x00\x00\xe8\x0e\x7d\xff\xff\x48\x8d\x93\x84\x03\x00\x00\x48\x8d\x35\x7d\x24\x00\x00\xbf\x01\x00\x00\x00\xb8\x00\x00\x00\x00\xe8\xf1\x7c\xff\xff\x48\x8d\x93\x04\x04\x00\x00\x48\x8d\x35\x74\x24\x00\x00\xbf\x01\x00\x00\x00\xb8\x00\x00\x00\x00\xe8\xd4\x7c\xff\xff\x48\x8d\x93\x84\x04\x00\x00\x48\x8d\x35\x6c\x24\x00\x00\xbf\x01\x00\x00\x00\xb8\x00\x00\x00\x00\xe8\xb7\x7c\xff\xff\x48\x8d\x35\xd0\x25\x00\x00\xbf\x01\x00\x00\x00\xb8\x00\x00\x00\x00\xe8\xa1\x7c\xff\xff\x48\x8d\x93\x04\x07\x00\x00\x48\x8d\x35\x4a\x24\x00\x00\xbf\x01\x00\x00\x00\xb8\x00\x00\x00\x00\xe8\x84\x7c\xff\xff\x48\x8d\x93\x84\x05\x00\x00\x48\x8d\x35\xf3\x23\x00\x00\xbf\x01\x00\x00\x00\xb8\x00\x00\x00\x00\xe8\x67\x7c\xff\xff\x48\x8d\x93\x04\x06\x00\x00\x48\x8d\x35\xea\x23\x00\x00\xbf\x01\x00\x00\x00\xb8\x00\x00\x00\x00\xe8\x4a\x7c\xff\xff\x48\x8d\x93\x84\x06\x00\x00\x48\x8d\x35\xe2\x23\x00\x00\xbf\x01\x00\x00\x00\xb8\x00\x00\x00\x00\xe8\x2d\x7c\xff\xff\x48\x8d\x35\xf2\x23\x00\x00\xbf\x01\x00\x00\x00\xb8\x00\x00\x00\x00\xe8\x17\x7c\xff\xff\x48\x8d\x93\x04\x09\x00\x00\x48\x8d\x35\xc0\x23\x00\x00\xbf\x01\x00\x00\x00\xb8\x00\x00\x00\x00\xe8\xfa\x7b\xff\xff\x48\x8d\x93\x84\x07\x00\x00\x48\x8d\x35\x69\x23\x00\x00\xbf\x01\x00\x00\x00\xb8\x00\x00\x00\x00\xe8\xdd\x7b\xff\xff\x48\x8d\x93\x04\x08\x00\x00\x48\x8d\x35\x60\x23\x00\x00\xbf\x01\x00\x00\x00\xb8\x00\x00\x00\x00\xe8\xc0\x7b\xff\xff\x48\x8d\x93\x84\x08\x00\x00\x48\x8d\x35\x58\x23\x00\x00\xbf\x01\x00\x00\x00\xb8\x00\x00\x00\x00\xe8\xa3\x7b\xff\xff\x5b\xc3\x90\x48\x89\x5c\x24\xd0\x48\x89\x6c\x24\xd8\x4c\x89\x64\x24\xe0\x4c\x89\x6c\x24\xe8\x4c\x89\x74\x24\xf0\x4c\x89\x7c\x24\xf8\x48\x81\xec\x88\x02\x00\x00\x89\x7c\x24\x3c\x49\x89\xf6\x48\x89\xd5\x4c\x89\xc3\x4d\x89\xcf\x4c\x8b\xac\x24\x90\x02\x00\x00\x41\x89\xc9\x64\x48\x8b\x04\x25\x28\x00\x00\x00\x48\x89\x84\x24\x48\x02\x00\x00\x31\xc0\x4c\x89\xff\x48\xc7\xc1\xff\xff\xff\xff\xf2\xae\x48\xf7\xd1\x44\x8d\x61\xff\xc6\x84\x24\x40\x02\x00\x00\x00\x66\x41\x83\xf9\x50\x74\x27\x45\x0f\xb7\xc9\x4c\x8d\x05\x79\x24\x00\x00\xb9\x08\x00\x00\x00\xba\x01\x00\x00\x00\xbe\x08\x00\x00\x00\x48\x8d\xbc\x24\x40\x02\x00\x00\xe8\xd4\x78\xff\xff\x48\x89\x5c\x24\x20\x44\x89\x64\x24\x18\x48\x8d\x84\x24\x40\x02\x00\x00\x48\x89\x44\x24\x10\x48\x89\x6c\x24\x08\x4c\x89\x2c\x24\x4d\x89\xf1\x4c\x8d\x05\x3a\x24\x00\x00\xb9\x00\x02\x00\x00\xba\x01\x00\x00\x00\xbe\x00\x02\x00\x00\x48\x8d\x7c\x24\x40\xb8\x00\x00\x00\x00\xe8\x8c\x78\xff\xff\x41\x89\xc5\x47\x8d\x34\x2c\x4d\x63\xf6\x4c\x89\xf7\xe8\x4a\x7a\xff\xff\x48\x89\xc5\xbb\x00\x00\x00\x00\x48\x85\xc0\x74\x51\x49\x63\xdd\x48\x89\xda\x48\x8d\x74\x24\x40\x48\x89\xc7\xe8\xfa\x79\xff\xff\x48\x8d\x7c\x1d\x00\x49\x63\xd4\x4c\x89\xfe\xe8\xea\x79\xff\xff\xb9\x00\x00\x00\x00\x4c\x89\xf2\x48\x89\xee\x8b\x7c\x24\x3c\xe8\xb6\x78\xff\xff\x89\xc3\x85\xc0\x79\x0c\x48\x8d\x3d\xdc\x20\x00\x00\xe8\x94\x7a\xff\xff\x48\x89\xef\xe8\x2c\x78\xff\xff\x89\xd8\x48\x8b\x94\x24\x48\x02\x00\x00\x64\x48\x33\x14\x25\x28\x00\x00\x00\x74\x05\xe8\x72\x78\xff\xff\x48\x8b\x9c\x24\x58\x02\x00\x00\x48\x8b\xac\x24\x60\x02\x00\x00\x4c\x8b\xa4\x24\x68\x02\x00\x00\x4c\x8b\xac\x24\x70\x02\x00\x00\x4c\x8b\xb4\x24\x78\x02\x00\x00\x4c\x8b\xbc\x24\x80\x02\x00\x00\x48\x81\xc4\x88\x02\x00\x00\xc3\x90\x90\x48\x89\x5c\x24\xf0\x48\x89\x6c\x24\xf8\x48\x83\xec\x18\x48\x89\xfd\xc7\x47\x54\x01\x00\x00\x00\x83\xfa\x3f\xbb\x3f\x00\x00\x00\x0f\x4e\xda\x48\x8d\x7f\x08\x48\x63\xdb\x48\x89\xda\xe8\x36\x79\xff\xff\xc6\x44\x1d\x08\x00\x48\xc7\x45\x58\x00\x00\x00\x00\xc7\x45\x60\x00\x00\x00\x00\x48\x8b\x5c\x24\x08\x48\x8b\x6c\x24\x10\x48\x83\xc4\x18\xc3\x48\x89\x5c\x24\xe0\x48\x89\x6c\x24\xe8\x4c\x89\x64\x24\xf0\x4c\x89\x6c\x24\xf8\x48\x83\xec\x28\x48\x89\xfb\x49\x89\xf4\x89\xd5\x48\x8d\x77\x08\xb9\x0f\x00\x00\x00\x48\x8d\x3d\xa3\x23\x00\x00\xf3\xa6\x0f\x97\xc2\x0f\x92\xc0\x38\xc2\x75\x33\x8d\x7d\x01\x48\x63\xff\xe8\xfc\x78\xff\xff\x48\x89\x43\x48\x48\x85\xc0\x74\x26\x4c\x63\xed\x4c\x89\xea\x4c\x89\xe6\x48\x89\xc7\xe8\xb2\x78\xff\xff\x48\x8b\x43\x48\x42\xc6\x04\x28\x00\x89\x6b\x50\xeb\x07\x4c\x89\x63\x58\x89\x6b\x60\x48\x8b\x5c\x24\x08\x48\x8b\x6c\x24\x10\x4c\x8b\x64\x24\x18\x4c\x8b\x6c\x24\x20\x48\x83\xc4\x28\xc3\x48\x89\x5c\x24\xe8\x48\x89\x6c\x24\xf0\x4c\x89\x64\x24\xf8\x48\x83\xec\x18\x48\x89\xfd\x83\x7f\x54\x00\x0f\x84\xaf\x00\x00\x00\x48\x8d\x77\x08\xb9\x0f\x00\x00\x00\x48\x8d\x3d\x14\x23\x00\x00\xf3\xa6\x0f\x97\xc2\x0f\x92\xc0\x38\xc2\x74\x7d\x8b\x5d\x60\xbf\xd0\x00\x00\x00\xe8\x6b\x78\xff\xff\x49\x89\xc4\x48\x8d\x75\x08\x48\x8d\x78\x10\xba\x40\x00\x00\x00\xe8\xb6\x76\xff\xff\x41\xc6\x44\x24\x4f\x00\x48\x8b\x75\x58\x48\x85\xf6\x74\x28\x83\xfb\x7f\xb8\x7f\x00\x00\x00\x0f\x4f\xd8\x48\x63\xdb\x49\x8d\x7c\x24\x50\xb9\x80\x00\x00\x00\x48\x89\xda\xe8\xc7\x77\xff\xff\x41\xc6\x44\x1c\x50\x00\xeb\x06\x41\xc6\x44\x24\x50\x00\x48\x8b\x45\x00\x49\x89\x04\x24\x48\x85\xc0\x74\x08\x48\x8b\x45\x00\x4c\x89\x60\x08\x4c\x89\x65\x00\x49\x89\x6c\x24\x08\x48\xc7\x45\x58\x00\x00\x00\x00\xc7\x45\x60\x00\x00\x00\x00\xc7\x45\x54\x00\x00\x00\x00\x48\x8b\x1c\x24\x48\x8b\x6c\x24\x08\x4c\x8b\x64\x24\x10\x48\x83\xc4\x18\xc3\x48\x83\xec\x58\x48\xc7\x02\x00\x00\x00\x00\x48\xc7\x42\x48\x00\x00\x00\x00\xc7\x42\x50\x00\x00\x00\x00\x48\x89\x3c\x24\x89\x74\x24\x18\x48\x89\x54\x24\x20\x48\x8d\x05\x0c\xfe\xff\xff\x48\x89\x44\x24\x28\x48\x8d\x05\xe4\xfe\xff\xff\x48\x89\x44\x24\x30\x48\x8d\x05\x49\xfe\xff\xff\x48\x89\x44\x24\x38\x48\xc7\x44\x24\x40\x00\x00\x00\x00\x48\x89\xe7\xe8\x76\xf0\xff\xff\x48\x83\xc4\x58\xc3\x53\x48\x89\xfb\x48\x8b\x7f\x48\x48\x85\xff\x74\x14\xe8\x9f\x75\xff\xff\x48\xc7\x43\x48\x00\x00\x00\x00\xc7\x43\x50\x00\x00\x00\x00\x48\x8b\x3b\x48\x85\xff\x74\x27\x48\x8b\x07\x48\x85\xc0\x74\x08\x48\x8b\x57\x08\x48\x89\x50\x08\x48\x8b\x47\x08\x48\x8b\x17\x48\x89\x10\xe8\x69\x75\xff\xff\x48\x8b\x3b\x48\x85\xff\x75\xd9\x5b\xc3\x41\x54\x55\x53\x49\x89\xf4\x48\x8b\x1f\xbd\x00\x00\x00\x00\x48\x85\xdb\x74\x23\x48\x8d\x7b\x10\x4c\x89\xe6\xe8\x8f\x76\xff\xff\x48\x8d\x53\x50\x85\xc0\x48\x0f\x44\xea\x48\x8b\x1b\x48\x85\xdb\x74\x05\x48\x85\xed\x74\xdd\x48\x89\xe8\x5b\x5d\x41\x5c\xc3\x48\x89\x6c\x24\xd8\x4c\x89\x64\x24\xe0\x48\x8d\x2d\x6b\x31\x20\x00\x4c\x8d\x25\x64\x31\x20\x00\x4c\x89\x6c\x24\xe8\x4c\x89\x74\x24\xf0\x4c\x89\x7c\x24\xf8\x48\x89\x5c\x24\xd0\x48\x83\xec\x38\x4c\x29\xe5\x41\x89\xfd\x49\x89\xf6\x48\xc1\xfd\x03\x49\x89\xd7\xe8\x9b\x74\xff\xff\x48\x85\xed\x74\x1c\x31\xdb\x0f\x1f\x40\x00\x4c\x89\xfa\x4c\x89\xf6\x44\x89\xef\x41\xff\x14\xdc\x48\x83\xc3\x01\x48\x39\xeb\x75\xea\x48\x8b\x5c\x24\x08\x48\x8b\x6c\x24\x10\x4c\x8b\x64\x24\x18\x4c\x8b\x6c\x24\x20\x4c\x8b\x74\x24\x28\x4c\x8b\x7c\x24\x30\x48\x83\xc4\x38\xc3\x0f\x1f\x80\x00\x00\x00\x00\xf3\xc3\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x55\x48\x89\xe5\x53\x48\x83\xec\x08\x48\x8b\x05\xd0\x30\x20\x00\x48\x83\xf8\xff\x74\x19\xbb\x10\xcd\x60\x00\x0f\x1f\x44\x00\x00\x48\x83\xeb\x08\xff\xd0\x48\x8b\x03\x48\x83\xf8\xff\x75\xf1\x48\x83\xc4\x08\x5b\x5d\xc3\x90\x90\x48\x83\xec\x08\xe8\x8f\x77\xff\xff\x48\x83\xc4\x08\xc3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x02\x00\x00\x00\x00\x00\x47\x65\x74\x43\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e\x54\x79\x70\x65\x49\x6e\x66\x6f\x20\x66\x61\x69\x6c\x65\x64\x2e\x0a\x00\x00\x53\x74\x61\x74\x75\x73\x20\x3a\x20\x25\x73\x2c\x20\x75\x70\x74\x69\x6d\x65\x3d\x25\x75\x73\x2c\x20\x4c\x61\x73\x74\x43\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e\x45\x72\x72\x6f\x72\x20\x3a\x20\x25\x73\x0a\x00\x00\x00\x00\x00\x00\x47\x65\x74\x4c\x69\x6e\x6b\x4c\x61\x79\x65\x72\x4d\x61\x78\x42\x69\x74\x52\x61\x74\x65\x73\x20\x66\x61\x69\x6c\x65\x64\x2e\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x47\x65\x74\x45\x78\x74\x65\x72\x6e\x61\x6c\x49\x50\x41\x64\x64\x72\x65\x73\x73\x20\x66\x61\x69\x6c\x65\x64\x2e\x20\x28\x65\x72\x72\x6f\x72\x63\x6f\x64\x65\x3d\x25\x64\x29\x0a\x00\x00\x00\x00\x41\x64\x64\x41\x6e\x79\x50\x6f\x72\x74\x4d\x61\x70\x70\x69\x6e\x67\x28\x25\x73\x2c\x20\x25\x73\x2c\x20\x25\x73\x29\x20\x66\x61\x69\x6c\x65\x64\x20\x77\x69\x74\x68\x20\x63\x6f\x64\x65\x20\x25\x64\x20\x28\x25\x73\x29\x0a\x00\x41\x64\x64\x50\x6f\x72\x74\x4d\x61\x70\x70\x69\x6e\x67\x28\x25\x73\x2c\x20\x25\x73\x2c\x20\x25\x73\x29\x20\x66\x61\x69\x6c\x65\x64\x20\x77\x69\x74\x68\x20\x63\x6f\x64\x65\x20\x25\x64\x20\x28\x25\x73\x29\x0a\x00\x00\x00\x00\x47\x65\x74\x53\x70\x65\x63\x69\x66\x69\x63\x50\x6f\x72\x74\x4d\x61\x70\x70\x69\x6e\x67\x45\x6e\x74\x72\x79\x28\x29\x20\x66\x61\x69\x6c\x65\x64\x20\x77\x69\x74\x68\x20\x63\x6f\x64\x65\x20\x25\x64\x20\x28\x25\x73\x29\x0a\x00\x65\x78\x74\x65\x72\x6e\x61\x6c\x20\x25\x73\x3a\x25\x73\x20\x25\x73\x20\x69\x73\x20\x72\x65\x64\x69\x72\x65\x63\x74\x65\x64\x20\x74\x6f\x20\x69\x6e\x74\x65\x72\x6e\x61\x6c\x20\x25\x73\x3a\x25\x73\x20\x28\x64\x75\x72\x61\x74\x69\x6f\x6e\x3d\x25\x73\x29\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x75\x70\x6e\x70\x63\x20\x3a\x20\x6d\x69\x6e\x69\x75\x70\x6e\x70\x63\x20\x6c\x69\x62\x72\x61\x72\x79\x20\x74\x65\x73\x74\x20\x63\x6c\x69\x65\x6e\x74\x2e\x20\x28\x63\x29\x20\x32\x30\x30\x35\x2d\x32\x30\x31\x34\x20\x54\x68\x6f\x6d\x61\x73\x20\x42\x65\x72\x6e\x61\x72\x64\x0a\x00\x00\x00\x00\x47\x6f\x20\x74\x6f\x20\x68\x74\x74\x70\x3a\x2f\x2f\x6d\x69\x6e\x69\x75\x70\x6e\x70\x2e\x66\x72\x65\x65\x2e\x66\x72\x2f\x20\x6f\x72\x20\x68\x74\x74\x70\x3a\x2f\x2f\x6d\x69\x6e\x69\x75\x70\x6e\x70\x2e\x74\x75\x78\x66\x61\x6d\x69\x6c\x79\x2e\x6f\x72\x67\x2f\x0a\x66\x6f\x72\x20\x6d\x6f\x72\x65\x20\x69\x6e\x66\x6f\x72\x6d\x61\x74\x69\x6f\x6e\x2e\x0a\x00\x55\x73\x61\x67\x65\x20\x3a\x09\x25\x73\x20\x5b\x6f\x70\x74\x69\x6f\x6e\x73\x5d\x20\x2d\x61\x20\x69\x70\x20\x70\x6f\x72\x74\x20\x65\x78\x74\x65\x72\x6e\x61\x6c\x5f\x70\x6f\x72\x74\x20\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x20\x5b\x64\x75\x72\x61\x74\x69\x6f\x6e\x5d\x0a\x09\x09\x41\x64\x64\x20\x70\x6f\x72\x74\x20\x72\x65\x64\x69\x72\x65\x63\x74\x69\x6f\x6e\x0a\x00\x00\x00\x00\x00\x00\x00\x20\x20\x20\x20\x20\x20\x20\x09\x25\x73\x20\x5b\x6f\x70\x74\x69\x6f\x6e\x73\x5d\x20\x2d\x64\x20\x65\x78\x74\x65\x72\x6e\x61\x6c\x5f\x70\x6f\x72\x74\x20\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x20\x5b\x70\x6f\x72\x74\x32\x20\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x32\x5d\x20\x5b\x2e\x2e\x2e\x5d\x0a\x09\x09\x44\x65\x6c\x65\x74\x65\x20\x70\x6f\x72\x74\x20\x72\x65\x64\x69\x72\x65\x63\x74\x69\x6f\x6e\x0a\x00\x00\x00\x00\x00\x00\x00\x20\x20\x20\x20\x20\x20\x20\x09\x25\x73\x20\x5b\x6f\x70\x74\x69\x6f\x6e\x73\x5d\x20\x2d\x73\x0a\x09\x09\x47\x65\x74\x20\x43\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e\x20\x73\x74\x61\x74\x75\x73\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x20\x20\x20\x20\x20\x20\x20\x09\x25\x73\x20\x5b\x6f\x70\x74\x69\x6f\x6e\x73\x5d\x20\x2d\x6c\x0a\x09\x09\x4c\x69\x73\x74\x20\x72\x65\x64\x69\x72\x65\x63\x74\x69\x6f\x6e\x73\x0a\x00\x00\x00\x00\x20\x20\x20\x20\x20\x20\x20\x09\x25\x73\x20\x5b\x6f\x70\x74\x69\x6f\x6e\x73\x5d\x20\x2d\x4c\x0a\x09\x09\x4c\x69\x73\x74\x20\x72\x65\x64\x69\x72\x65\x63\x74\x69\x6f\x6e\x73\x20\x28\x75\x73\x69\x6e\x67\x20\x47\x65\x74\x4c\x69\x73\x74\x4f\x66\x50\x6f\x72\x74\x4d\x61\x70\x70\x69\x6e\x67\x73\x20\x28\x66\x6f\x72\x20\x49\x47\x44\x3a\x32\x20\x6f\x6e\x6c\x79\x29\x0a\x00\x00\x00\x00\x00\x00\x20\x20\x20\x20\x20\x20\x20\x09\x25\x73\x20\x5b\x6f\x70\x74\x69\x6f\x6e\x73\x5d\x20\x2d\x6e\x20\x69\x70\x20\x70\x6f\x72\x74\x20\x65\x78\x74\x65\x72\x6e\x61\x6c\x5f\x70\x6f\x72\x74\x20\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x20\x5b\x64\x75\x72\x61\x74\x69\x6f\x6e\x5d\x0a\x09\x09\x41\x64\x64\x20\x28\x61\x6e\x79\x29\x20\x70\x6f\x72\x74\x20\x72\x65\x64\x69\x72\x65\x63\x74\x69\x6f\x6e\x20\x61\x6c\x6c\x6f\x77\x69\x6e\x67\x20\x49\x47\x44\x20\x74\x6f\x20\x75\x73\x65\x20\x61\x6c\x74\x65\x72\x6e\x61\x74\x69\x76\x65\x20\x65\x78\x74\x65\x72\x6e\x61\x6c\x5f\x70\x6f\x72\x74\x20\x28\x66\x6f\x72\x20\x49\x47\x44\x3a\x32\x20\x6f\x6e\x6c\x79\x29\x0a\x00\x00\x20\x20\x20\x20\x20\x20\x20\x09\x25\x73\x20\x5b\x6f\x70\x74\x69\x6f\x6e\x73\x5d\x20\x2d\x4e\x20\x65\x78\x74\x65\x72\x6e\x61\x6c\x5f\x70\x6f\x72\x74\x5f\x73\x74\x61\x72\x74\x20\x65\x78\x74\x65\x72\x6e\x61\x6c\x5f\x70\x6f\x72\x74\x5f\x65\x6e\x64\x20\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x20\x5b\x6d\x61\x6e\x61\x67\x65\x5d\x0a\x09\x09\x44\x65\x6c\x65\x74\x65\x20\x72\x61\x6e\x67\x65\x20\x6f\x66\x20\x70\x6f\x72\x74\x20\x72\x65\x64\x69\x72\x65\x63\x74\x69\x6f\x6e\x73\x20\x28\x66\x6f\x72\x20\x49\x47\x44\x3a\x32\x20\x6f\x6e\x6c\x79\x29\x0a\x00\x00\x00\x20\x20\x20\x20\x20\x20\x20\x09\x25\x73\x20\x5b\x6f\x70\x74\x69\x6f\x6e\x73\x5d\x20\x2d\x72\x20\x70\x6f\x72\x74\x31\x20\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x31\x20\x5b\x70\x6f\x72\x74\x32\x20\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x32\x5d\x20\x5b\x2e\x2e\x2e\x5d\x0a\x09\x09\x41\x64\x64\x20\x61\x6c\x6c\x20\x72\x65\x64\x69\x72\x65\x63\x74\x69\x6f\x6e\x73\x20\x74\x6f\x20\x74\x68\x65\x20\x63\x75\x72\x72\x65\x6e\x74\x20\x68\x6f\x73\x74\x0a\x00\x00\x00\x00\x00\x20\x20\x20\x20\x20\x20\x20\x09\x25\x73\x20\x5b\x6f\x70\x74\x69\x6f\x6e\x73\x5d\x20\x2d\x41\x20\x72\x65\x6d\x6f\x74\x65\x5f\x69\x70\x20\x72\x65\x6d\x6f\x74\x65\x5f\x70\x6f\x72\x74\x20\x69\x6e\x74\x65\x72\x6e\x61\x6c\x5f\x69\x70\x20\x69\x6e\x74\x65\x72\x6e\x61\x6c\x5f\x70\x6f\x72\x74\x20\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x20\x6c\x65\x61\x73\x65\x5f\x74\x69\x6d\x65\x0a\x09\x09\x41\x64\x64\x20\x50\x69\x6e\x68\x6f\x6c\x65\x20\x28\x66\x6f\x72\x20\x49\x47\x44\x3a\x32\x20\x6f\x6e\x6c\x79\x29\x0a\x00\x00\x00\x00\x00\x20\x20\x20\x20\x20\x20\x20\x09\x25\x73\x20\x5b\x6f\x70\x74\x69\x6f\x6e\x73\x5d\x20\x2d\x55\x20\x75\x6e\x69\x71\x75\x65\x49\x44\x20\x6e\x65\x77\x5f\x6c\x65\x61\x73\x65\x5f\x74\x69\x6d\x65\x0a\x09\x09\x55\x70\x64\x61\x74\x65\x20\x50\x69\x6e\x68\x6f\x6c\x65\x20\x28\x66\x6f\x72\x20\x49\x47\x44\x3a\x32\x20\x6f\x6e\x6c\x79\x29\x0a\x00\x00\x00\x00\x00\x00\x20\x20\x20\x20\x20\x20\x20\x09\x25\x73\x20\x5b\x6f\x70\x74\x69\x6f\x6e\x73\x5d\x20\x2d\x43\x20\x75\x6e\x69\x71\x75\x65\x49\x44\x0a\x09\x09\x43\x68\x65\x63\x6b\x20\x69\x66\x20\x50\x69\x6e\x68\x6f\x6c\x65\x20\x69\x73\x20\x57\x6f\x72\x6b\x69\x6e\x67\x20\x28\x66\x6f\x72\x20\x49\x47\x44\x3a\x32\x20\x6f\x6e\x6c\x79\x29\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x20\x20\x20\x20\x20\x20\x20\x09\x25\x73\x20\x5b\x6f\x70\x74\x69\x6f\x6e\x73\x5d\x20\x2d\x4b\x20\x75\x6e\x69\x71\x75\x65\x49\x44\x0a\x09\x09\x47\x65\x74\x20\x4e\x75\x6d\x62\x65\x72\x20\x6f\x66\x20\x70\x61\x63\x6b\x65\x74\x73\x20\x67\x6f\x69\x6e\x67\x20\x74\x68\x72\x6f\x75\x67\x68\x20\x74\x68\x65\x20\x72\x75\x6c\x65\x20\x28\x66\x6f\x72\x20\x49\x47\x44\x3a\x32\x20\x6f\x6e\x6c\x79\x29\x0a\x00\x00\x00\x00\x00\x00\x00\x20\x20\x20\x20\x20\x20\x20\x09\x25\x73\x20\x5b\x6f\x70\x74\x69\x6f\x6e\x73\x5d\x20\x2d\x44\x20\x75\x6e\x69\x71\x75\x65\x49\x44\x0a\x09\x09\x44\x65\x6c\x65\x74\x65\x20\x50\x69\x6e\x68\x6f\x6c\x65\x20\x28\x66\x6f\x72\x20\x49\x47\x44\x3a\x32\x20\x6f\x6e\x6c\x79\x29\x0a\x00\x00\x00\x00\x00\x20\x20\x20\x20\x20\x20\x20\x09\x25\x73\x20\x5b\x6f\x70\x74\x69\x6f\x6e\x73\x5d\x20\x2d\x53\x0a\x09\x09\x47\x65\x74\x20\x46\x69\x72\x65\x77\x61\x6c\x6c\x20\x73\x74\x61\x74\x75\x73\x20\x28\x66\x6f\x72\x20\x49\x47\x44\x3a\x32\x20\x6f\x6e\x6c\x79\x29\x0a\x00\x20\x20\x20\x20\x20\x20\x20\x09\x25\x73\x20\x5b\x6f\x70\x74\x69\x6f\x6e\x73\x5d\x20\x2d\x47\x20\x72\x65\x6d\x6f\x74\x65\x5f\x69\x70\x20\x72\x65\x6d\x6f\x74\x65\x5f\x70\x6f\x72\x74\x20\x69\x6e\x74\x65\x72\x6e\x61\x6c\x5f\x69\x70\x20\x69\x6e\x74\x65\x72\x6e\x61\x6c\x5f\x70\x6f\x72\x74\x20\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x0a\x09\x09\x47\x65\x74\x20\x4f\x75\x74\x62\x6f\x75\x6e\x64\x20\x50\x69\x6e\x68\x6f\x6c\x65\x20\x54\x69\x6d\x65\x6f\x75\x74\x20\x28\x66\x6f\x72\x20\x49\x47\x44\x3a\x32\x20\x6f\x6e\x6c\x79\x29\x0a\x00\x00\x00\x00\x00\x00\x00\x20\x20\x20\x20\x20\x20\x20\x09\x25\x73\x20\x5b\x6f\x70\x74\x69\x6f\x6e\x73\x5d\x20\x2d\x50\x0a\x09\x09\x47\x65\x74\x20\x50\x72\x65\x73\x65\x6e\x74\x61\x74\x69\x6f\x6e\x20\x75\x72\x6c\x0a\x00\x20\x20\x2d\x65\x20\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x20\x3a\x20\x73\x65\x74\x20\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x20\x66\x6f\x72\x20\x70\x6f\x72\x74\x20\x6d\x61\x70\x70\x69\x6e\x67\x2e\x0a\x00\x00\x00\x20\x20\x2d\x36\x20\x3a\x20\x75\x73\x65\x20\x69\x70\x20\x76\x36\x20\x69\x6e\x73\x74\x65\x61\x64\x20\x6f\x66\x20\x69\x70\x20\x76\x34\x2e\x0a\x00\x00\x00\x00\x00\x20\x20\x2d\x75\x20\x75\x72\x6c\x20\x3a\x20\x62\x79\x70\x61\x73\x73\x20\x64\x69\x73\x63\x6f\x76\x65\x72\x79\x20\x70\x72\x6f\x63\x65\x73\x73\x20\x62\x79\x20\x70\x72\x6f\x76\x69\x64\x69\x6e\x67\x20\x74\x68\x65\x20\x58\x4d\x4c\x20\x72\x6f\x6f\x74\x20\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x20\x75\x72\x6c\x2e\x0a\x00\x20\x20\x2d\x6d\x20\x61\x64\x64\x72\x65\x73\x73\x2f\x69\x6e\x74\x65\x72\x66\x61\x63\x65\x20\x3a\x20\x70\x72\x6f\x76\x69\x64\x65\x20\x69\x70\x20\x61\x64\x64\x72\x65\x73\x73\x20\x28\x69\x70\x20\x76\x34\x29\x20\x6f\x72\x20\x69\x6e\x74\x65\x72\x66\x61\x63\x65\x20\x6e\x61\x6d\x65\x20\x28\x69\x70\x20\x76\x34\x20\x6f\x72\x20\x76\x36\x29\x20\x74\x6f\x20\x75\x73\x65\x20\x66\x6f\x72\x20\x73\x65\x6e\x64\x69\x6e\x67\x20\x53\x53\x44\x50\x20\x6d\x75\x6c\x74\x69\x63\x61\x73\x74\x20\x70\x61\x63\x6b\x65\x74\x73\x2e\x0a\x00\x20\x20\x2d\x70\x20\x70\x61\x74\x68\x20\x3a\x20\x75\x73\x65\x20\x74\x68\x69\x73\x20\x70\x61\x74\x68\x20\x66\x6f\x72\x20\x4d\x69\x6e\x69\x53\x53\x44\x50\x64\x20\x73\x6f\x63\x6b\x65\x74\x2e\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x46\x6f\x75\x6e\x64\x20\x61\x20\x28\x6e\x6f\x74\x20\x63\x6f\x6e\x6e\x65\x63\x74\x65\x64\x3f\x29\x20\x49\x47\x44\x20\x3a\x20\x25\x73\x0a\x00\x00\x00\x00\x00\x00\x55\x50\x6e\x50\x20\x64\x65\x76\x69\x63\x65\x20\x66\x6f\x75\x6e\x64\x2e\x20\x49\x73\x20\x69\x74\x20\x61\x6e\x20\x49\x47\x44\x20\x3f\x20\x3a\x20\x25\x73\x0a\x00\x20\x69\x20\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x20\x65\x78\x50\x6f\x72\x74\x2d\x3e\x69\x6e\x41\x64\x64\x72\x3a\x69\x6e\x50\x6f\x72\x74\x20\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x20\x72\x65\x6d\x6f\x74\x65\x48\x6f\x73\x74\x20\x6c\x65\x61\x73\x65\x54\x69\x6d\x65\x0a\x00\x00\x00\x00\x00\x25\x32\x64\x20\x25\x73\x20\x25\x35\x73\x2d\x3e\x25\x73\x3a\x25\x2d\x35\x73\x20\x27\x25\x73\x27\x20\x27\x25\x73\x27\x20\x25\x73\x0a\x00\x00\x00\x00\x00\x00\x00\x47\x65\x74\x47\x65\x6e\x65\x72\x69\x63\x50\x6f\x72\x74\x4d\x61\x70\x70\x69\x6e\x67\x45\x6e\x74\x72\x79\x28\x29\x20\x72\x65\x74\x75\x72\x6e\x65\x64\x20\x25\x64\x20\x28\x25\x73\x29\x0a\x00\x00\x25\x32\x64\x20\x25\x73\x20\x25\x35\x68\x75\x2d\x3e\x25\x73\x3a\x25\x2d\x35\x68\x75\x20\x27\x25\x73\x27\x20\x27\x25\x73\x27\x20\x25\x75\x0a\x00\x00\x00\x00\x00\x47\x65\x74\x4c\x69\x73\x74\x4f\x66\x50\x6f\x72\x74\x4d\x61\x70\x70\x69\x6e\x67\x73\x28\x29\x20\x72\x65\x74\x75\x72\x6e\x65\x64\x20\x25\x64\x20\x28\x25\x73\x29\x0a\x00\x00\x00\x00\x00\x00\x00\x55\x50\x4e\x50\x5f\x44\x65\x6c\x65\x74\x65\x50\x6f\x72\x74\x4d\x61\x70\x70\x69\x6e\x67\x28\x29\x20\x72\x65\x74\x75\x72\x6e\x65\x64\x20\x3a\x20\x25\x64\x0a\x00\x55\x50\x4e\x50\x5f\x44\x65\x6c\x65\x74\x65\x50\x6f\x72\x74\x4d\x61\x70\x70\x69\x6e\x67\x52\x61\x6e\x67\x65\x28\x29\x20\x72\x65\x74\x75\x72\x6e\x65\x64\x20\x3a\x20\x25\x64\x0a\x00\x00\x00\x00\x41\x64\x64\x50\x69\x6e\x68\x6f\x6c\x65\x28\x5b\x25\x73\x5d\x3a\x25\x73\x20\x2d\x3e\x20\x5b\x25\x73\x5d\x3a\x25\x73\x29\x20\x66\x61\x69\x6c\x65\x64\x20\x77\x69\x74\x68\x20\x63\x6f\x64\x65\x20\x25\x64\x20\x28\x25\x73\x29\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x41\x64\x64\x50\x69\x6e\x68\x6f\x6c\x65\x3a\x20\x28\x5b\x25\x73\x5d\x3a\x25\x73\x20\x2d\x3e\x20\x5b\x25\x73\x5d\x3a\x25\x73\x29\x20\x2f\x20\x50\x69\x6e\x68\x6f\x6c\x65\x20\x49\x44\x20\x3d\x20\x25\x73\x0a\x00\x00\x00\x00\x00\x43\x68\x65\x63\x6b\x50\x69\x6e\x68\x6f\x6c\x65\x57\x6f\x72\x6b\x69\x6e\x67\x3a\x20\x50\x69\x6e\x68\x6f\x6c\x65\x20\x49\x44\x20\x3d\x20\x25\x73\x20\x2f\x20\x49\x73\x57\x6f\x72\x6b\x69\x6e\x67\x20\x3d\x20\x25\x73\x0a\x00\x00\x43\x68\x65\x63\x6b\x50\x69\x6e\x68\x6f\x6c\x65\x57\x6f\x72\x6b\x69\x6e\x67\x28\x29\x20\x66\x61\x69\x6c\x65\x64\x20\x77\x69\x74\x68\x20\x63\x6f\x64\x65\x20\x25\x64\x20\x28\x25\x73\x29\x0a\x00\x55\x70\x64\x61\x74\x65\x50\x69\x6e\x68\x6f\x6c\x65\x3a\x20\x50\x69\x6e\x68\x6f\x6c\x65\x20\x49\x44\x20\x3d\x20\x25\x73\x20\x77\x69\x74\x68\x20\x4c\x65\x61\x73\x65\x20\x54\x69\x6d\x65\x3a\x20\x25\x73\x0a\x00\x00\x00\x00\x00\x55\x70\x64\x61\x74\x65\x50\x69\x6e\x68\x6f\x6c\x65\x3a\x20\x49\x44\x20\x28\x25\x73\x29\x20\x66\x61\x69\x6c\x65\x64\x20\x77\x69\x74\x68\x20\x63\x6f\x64\x65\x20\x25\x64\x20\x28\x25\x73\x29\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x47\x65\x74\x50\x69\x6e\x68\x6f\x6c\x65\x50\x61\x63\x6b\x65\x74\x73\x28\x29\x20\x66\x61\x69\x6c\x65\x64\x20\x77\x69\x74\x68\x20\x63\x6f\x64\x65\x20\x25\x64\x20\x28\x25\x73\x29\x0a\x00\x00\x00\x47\x65\x74\x50\x69\x6e\x68\x6f\x6c\x65\x50\x61\x63\x6b\x65\x74\x73\x3a\x20\x50\x69\x6e\x68\x6f\x6c\x65\x20\x49\x44\x20\x3d\x20\x25\x73\x20\x2f\x20\x50\x69\x6e\x68\x6f\x6c\x65\x50\x61\x63\x6b\x65\x74\x73\x20\x3d\x20\x25\x64\x0a\x00\x00\x00\x00\x00\x00\x00\x55\x50\x4e\x50\x5f\x44\x65\x6c\x65\x74\x65\x50\x69\x6e\x68\x6f\x6c\x65\x28\x29\x20\x72\x65\x74\x75\x72\x6e\x65\x64\x20\x3a\x20\x25\x64\x0a\x00\x00\x00\x00\x00\x46\x69\x72\x65\x77\x61\x6c\x6c\x45\x6e\x61\x62\x6c\x65\x64\x3a\x20\x25\x64\x20\x26\x20\x49\x6e\x62\x6f\x75\x6e\x64\x20\x50\x69\x6e\x68\x6f\x6c\x65\x20\x41\x6c\x6c\x6f\x77\x65\x64\x3a\x20\x25\x64\x0a\x00\x00\x00\x00\x00\x00\x47\x65\x74\x46\x69\x72\x65\x77\x61\x6c\x6c\x53\x74\x61\x74\x75\x73\x3a\x0a\x20\x20\x20\x46\x69\x72\x65\x77\x61\x6c\x6c\x20\x45\x6e\x61\x62\x6c\x65\x64\x3a\x20\x25\x73\x0a\x20\x20\x20\x49\x6e\x62\x6f\x75\x6e\x64\x20\x50\x69\x6e\x68\x6f\x6c\x65\x20\x41\x6c\x6c\x6f\x77\x65\x64\x3a\x20\x25\x73\x0a\x00\x00\x00\x00\x00\x00\x47\x65\x74\x4f\x75\x74\x62\x6f\x75\x6e\x64\x50\x69\x6e\x68\x6f\x6c\x65\x54\x69\x6d\x65\x6f\x75\x74\x28\x5b\x25\x73\x5d\x3a\x25\x73\x20\x2d\x3e\x20\x5b\x25\x73\x5d\x3a\x25\x73\x29\x20\x66\x61\x69\x6c\x65\x64\x20\x77\x69\x74\x68\x20\x63\x6f\x64\x65\x20\x25\x64\x20\x28\x25\x73\x29\x0a\x00\x47\x65\x74\x4f\x75\x74\x62\x6f\x75\x6e\x64\x50\x69\x6e\x68\x6f\x6c\x65\x54\x69\x6d\x65\x6f\x75\x74\x3a\x20\x28\x5b\x25\x73\x5d\x3a\x25\x73\x20\x2d\x3e\x20\x5b\x25\x73\x5d\x3a\x25\x73\x29\x20\x2f\x20\x54\x69\x6d\x65\x6f\x75\x74\x20\x3d\x20\x25\x64\x0a\x00\x4e\x6f\x20\x76\x61\x6c\x69\x64\x20\x55\x50\x4e\x50\x20\x49\x6e\x74\x65\x72\x6e\x65\x74\x20\x47\x61\x74\x65\x77\x61\x79\x20\x44\x65\x76\x69\x63\x65\x20\x66\x6f\x75\x6e\x64\x2e\x0a\x00\x00\x00\x4e\x6f\x20\x49\x47\x44\x20\x55\x50\x6e\x50\x20\x44\x65\x76\x69\x63\x65\x20\x66\x6f\x75\x6e\x64\x20\x6f\x6e\x20\x74\x68\x65\x20\x6e\x65\x74\x77\x6f\x72\x6b\x20\x21\x0a\x00\x00\x00\x00\x00\x00\x4c\x69\x73\x74\x20\x6f\x66\x20\x55\x50\x4e\x50\x20\x64\x65\x76\x69\x63\x65\x73\x20\x66\x6f\x75\x6e\x64\x20\x6f\x6e\x20\x74\x68\x65\x20\x6e\x65\x74\x77\x6f\x72\x6b\x20\x3a\x0a\x00\x43\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e\x20\x54\x79\x70\x65\x20\x3a\x20\x25\x73\x0a\x00\x47\x65\x74\x53\x74\x61\x74\x75\x73\x49\x6e\x66\x6f\x20\x66\x61\x69\x6c\x65\x64\x2e\x0a\x00\x20\x20\x54\x69\x6d\x65\x20\x73\x74\x61\x72\x74\x65\x64\x20\x3a\x20\x25\x73\x00\x4d\x61\x78\x42\x69\x74\x52\x61\x74\x65\x44\x6f\x77\x6e\x20\x3a\x20\x25\x75\x20\x62\x70\x73\x00\x20\x28\x25\x75\x2e\x25\x75\x20\x4d\x62\x70\x73\x29\x00\x20\x28\x25\x75\x20\x4b\x62\x70\x73\x29\x00\x20\x20\x20\x4d\x61\x78\x42\x69\x74\x52\x61\x74\x65\x55\x70\x20\x25\x75\x20\x62\x70\x73\x00\x45\x78\x74\x65\x72\x6e\x61\x6c\x49\x50\x41\x64\x64\x72\x65\x73\x73\x20\x3d\x20\x25\x73\x0a\x00\x57\x72\x6f\x6e\x67\x20\x61\x72\x67\x75\x6d\x65\x6e\x74\x73\x0a\x00\x69\x6e\x76\x61\x6c\x69\x64\x20\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x0a\x00\x47\x65\x74\x45\x78\x74\x65\x72\x6e\x61\x6c\x49\x50\x41\x64\x64\x72\x65\x73\x73\x20\x66\x61\x69\x6c\x65\x64\x2e\x0a\x00\x49\x6e\x74\x65\x72\x6e\x61\x6c\x49\x50\x3a\x50\x6f\x72\x74\x20\x3d\x20\x25\x73\x3a\x25\x73\x0a\x00\x59\x65\x73\x00\x4e\x6f\x00\x2d\x2d\x68\x65\x6c\x70\x00\x6f\x70\x74\x69\x6f\x6e\x20\x27\x25\x73\x27\x20\x69\x6e\x76\x61\x6c\x69\x64\x0a\x00\x0a\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x20\x69\x73\x20\x55\x44\x50\x20\x6f\x72\x20\x54\x43\x50\x0a\x00\x4f\x70\x74\x69\x6f\x6e\x73\x3a\x0a\x00\x75\x70\x6e\x70\x44\x69\x73\x63\x6f\x76\x65\x72\x28\x29\x20\x65\x72\x72\x6f\x72\x20\x63\x6f\x64\x65\x3d\x25\x64\x0a\x00\x20\x64\x65\x73\x63\x3a\x20\x25\x73\x0a\x20\x73\x74\x3a\x20\x25\x73\x0a\x0a\x00\x46\x6f\x75\x6e\x64\x20\x76\x61\x6c\x69\x64\x20\x49\x47\x44\x20\x3a\x20\x25\x73\x0a\x00\x54\x72\x79\x69\x6e\x67\x20\x74\x6f\x20\x63\x6f\x6e\x74\x69\x6e\x75\x65\x20\x61\x6e\x79\x77\x61\x79\x0a\x00\x46\x6f\x75\x6e\x64\x20\x64\x65\x76\x69\x63\x65\x20\x28\x69\x67\x64\x20\x3f\x29\x20\x3a\x20\x25\x73\x0a\x00\x4c\x6f\x63\x61\x6c\x20\x4c\x41\x4e\x20\x69\x70\x20\x61\x64\x64\x72\x65\x73\x73\x20\x3a\x20\x25\x73\x0a\x00\x25\x64\x00\x31\x30\x30\x30\x00\x54\x43\x50\x00\x36\x35\x35\x33\x35\x00\x55\x44\x50\x00\x69\x6e\x76\x61\x6c\x69\x64\x20\x61\x72\x67\x75\x6d\x65\x6e\x74\x73\x0a\x00\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x20\x69\x6e\x76\x61\x6c\x69\x64\x0a\x00\x74\x6f\x6f\x20\x66\x65\x77\x20\x61\x72\x67\x75\x6d\x65\x6e\x74\x73\x0a\x00\x42\x79\x74\x65\x73\x3a\x20\x20\x20\x53\x65\x6e\x74\x3a\x20\x25\x38\x75\x09\x52\x65\x63\x76\x3a\x20\x25\x38\x75\x0a\x00\x50\x61\x63\x6b\x65\x74\x73\x3a\x20\x53\x65\x6e\x74\x3a\x20\x25\x38\x75\x09\x52\x65\x63\x76\x3a\x20\x25\x38\x75\x0a\x00\x50\x72\x65\x73\x65\x6e\x74\x61\x74\x69\x6f\x6e\x20\x55\x52\x4c\x20\x66\x6f\x75\x6e\x64\x3a\x0a\x00\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x25\x73\x0a\x00\x55\x6e\x6b\x6e\x6f\x77\x6e\x20\x73\x77\x69\x74\x63\x68\x20\x2d\x25\x63\x0a\x00\x54\x43\x50\x00\x55\x44\x50\x00\x25\x73\x23\x25\x73\x00\x3e\x3c\x2f\x73\x3a\x42\x6f\x64\x79\x3e\x3c\x2f\x73\x3a\x45\x6e\x76\x65\x6c\x6f\x70\x65\x3e\x0d\x0a\x00\x31\x2e\x31\x00\x2f\x76\x61\x72\x2f\x72\x75\x6e\x2f\x6d\x69\x6e\x69\x73\x73\x64\x70\x64\x2e\x73\x6f\x63\x6b\x00\x46\x46\x30\x32\x3a\x3a\x43\x00\x46\x46\x30\x35\x3a\x3a\x43\x00\x73\x6f\x63\x6b\x65\x74\x00\x73\x65\x74\x73\x6f\x63\x6b\x6f\x70\x74\x00\x62\x69\x6e\x64\x00\x5b\x46\x46\x30\x35\x3a\x3a\x43\x5d\x00\x31\x39\x30\x30\x00\x67\x65\x74\x61\x64\x64\x72\x69\x6e\x66\x6f\x3a\x20\x25\x73\x0a\x00\x73\x65\x6e\x64\x74\x6f\x00\x6c\x6f\x63\x61\x74\x69\x6f\x6e\x00\x32\x33\x39\x2e\x32\x35\x35\x2e\x32\x35\x35\x2e\x32\x35\x30\x00\x5b\x46\x46\x30\x32\x3a\x3a\x43\x5d\x00\x68\x74\x74\x70\x3a\x2f\x2f\x5b\x66\x65\x38\x30\x3a\x00\x43\x6f\x6e\x6e\x65\x63\x74\x65\x64\x00\x75\x70\x6e\x70\x3a\x72\x6f\x6f\x74\x64\x65\x76\x69\x63\x65\x00\x00\x00\x00\x00\x00\x3c\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\x30\x22\x3f\x3e\x0d\x0a\x3c\x73\x3a\x45\x6e\x76\x65\x6c\x6f\x70\x65\x20\x78\x6d\x6c\x6e\x73\x3a\x73\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x73\x63\x68\x65\x6d\x61\x73\x2e\x78\x6d\x6c\x73\x6f\x61\x70\x2e\x6f\x72\x67\x2f\x73\x6f\x61\x70\x2f\x65\x6e\x76\x65\x6c\x6f\x70\x65\x2f\x22\x20\x73\x3a\x65\x6e\x63\x6f\x64\x69\x6e\x67\x53\x74\x79\x6c\x65\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x73\x63\x68\x65\x6d\x61\x73\x2e\x78\x6d\x6c\x73\x6f\x61\x70\x2e\x6f\x72\x67\x2f\x73\x6f\x61\x70\x2f\x65\x6e\x63\x6f\x64\x69\x6e\x67\x2f\x22\x3e\x3c\x73\x3a\x42\x6f\x64\x79\x3e\x3c\x75\x3a\x25\x73\x20\x78\x6d\x6c\x6e\x73\x3a\x75\x3d\x22\x25\x73\x22\x3e\x3c\x2f\x75\x3a\x25\x73\x3e\x3c\x2f\x73\x3a\x42\x6f\x64\x79\x3e\x3c\x2f\x73\x3a\x45\x6e\x76\x65\x6c\x6f\x70\x65\x3e\x0d\x0a\x00\x00\x00\x3c\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\x30\x22\x3f\x3e\x0d\x0a\x3c\x73\x3a\x45\x6e\x76\x65\x6c\x6f\x70\x65\x20\x78\x6d\x6c\x6e\x73\x3a\x73\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x73\x63\x68\x65\x6d\x61\x73\x2e\x78\x6d\x6c\x73\x6f\x61\x70\x2e\x6f\x72\x67\x2f\x73\x6f\x61\x70\x2f\x65\x6e\x76\x65\x6c\x6f\x70\x65\x2f\x22\x20\x73\x3a\x65\x6e\x63\x6f\x64\x69\x6e\x67\x53\x74\x79\x6c\x65\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x73\x63\x68\x65\x6d\x61\x73\x2e\x78\x6d\x6c\x73\x6f\x61\x70\x2e\x6f\x72\x67\x2f\x73\x6f\x61\x70\x2f\x65\x6e\x63\x6f\x64\x69\x6e\x67\x2f\x22\x3e\x3c\x73\x3a\x42\x6f\x64\x79\x3e\x3c\x75\x3a\x25\x73\x20\x78\x6d\x6c\x6e\x73\x3a\x75\x3d\x22\x25\x73\x22\x3e\x00\x00\x75\x72\x6e\x3a\x73\x63\x68\x65\x6d\x61\x73\x2d\x75\x70\x6e\x70\x2d\x6f\x72\x67\x3a\x64\x65\x76\x69\x63\x65\x3a\x49\x6e\x74\x65\x72\x6e\x65\x74\x47\x61\x74\x65\x77\x61\x79\x44\x65\x76\x69\x63\x65\x3a\x31\x00\x00\x00\x00\x00\x75\x72\x6e\x3a\x73\x63\x68\x65\x6d\x61\x73\x2d\x75\x70\x6e\x70\x2d\x6f\x72\x67\x3a\x73\x65\x72\x76\x69\x63\x65\x3a\x57\x41\x4e\x43\x6f\x6d\x6d\x6f\x6e\x49\x6e\x74\x65\x72\x66\x61\x63\x65\x43\x6f\x6e\x66\x69\x67\x3a\x31\x00\x75\x72\x6e\x3a\x73\x63\x68\x65\x6d\x61\x73\x2d\x75\x70\x6e\x70\x2d\x6f\x72\x67\x3a\x73\x65\x72\x76\x69\x63\x65\x3a\x57\x41\x4e\x49\x50\x43\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e\x3a\x31\x00\x00\x75\x72\x6e\x3a\x73\x63\x68\x65\x6d\x61\x73\x2d\x75\x70\x6e\x70\x2d\x6f\x72\x67\x3a\x73\x65\x72\x76\x69\x63\x65\x3a\x57\x41\x4e\x50\x50\x50\x43\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e\x3a\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4d\x2d\x53\x45\x41\x52\x43\x48\x20\x2a\x20\x48\x54\x54\x50\x2f\x31\x2e\x31\x0d\x0a\x48\x4f\x53\x54\x3a\x20\x25\x73\x3a\x31\x39\x30\x30\x0d\x0a\x53\x54\x3a\x20\x25\x73\x0d\x0a\x4d\x41\x4e\x3a\x20\x22\x73\x73\x64\x70\x3a\x64\x69\x73\x63\x6f\x76\x65\x72\x22\x0d\x0a\x4d\x58\x3a\x20\x25\x75\x0d\x0a\x0d\x0a\x00\x47\x65\x74\x54\x6f\x74\x61\x6c\x42\x79\x74\x65\x73\x53\x65\x6e\x74\x00\x4e\x65\x77\x54\x6f\x74\x61\x6c\x42\x79\x74\x65\x73\x53\x65\x6e\x74\x00\x47\x65\x74\x54\x6f\x74\x61\x6c\x42\x79\x74\x65\x73\x52\x65\x63\x65\x69\x76\x65\x64\x00\x4e\x65\x77\x54\x6f\x74\x61\x6c\x42\x79\x74\x65\x73\x52\x65\x63\x65\x69\x76\x65\x64\x00\x47\x65\x74\x54\x6f\x74\x61\x6c\x50\x61\x63\x6b\x65\x74\x73\x53\x65\x6e\x74\x00\x4e\x65\x77\x54\x6f\x74\x61\x6c\x50\x61\x63\x6b\x65\x74\x73\x53\x65\x6e\x74\x00\x47\x65\x74\x54\x6f\x74\x61\x6c\x50\x61\x63\x6b\x65\x74\x73\x52\x65\x63\x65\x69\x76\x65\x64\x00\x4e\x65\x77\x54\x6f\x74\x61\x6c\x50\x61\x63\x6b\x65\x74\x73\x52\x65\x63\x65\x69\x76\x65\x64\x00\x47\x65\x74\x53\x74\x61\x74\x75\x73\x49\x6e\x66\x6f\x00\x4e\x65\x77\x55\x70\x74\x69\x6d\x65\x00\x4e\x65\x77\x43\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e\x53\x74\x61\x74\x75\x73\x00\x4e\x65\x77\x4c\x61\x73\x74\x43\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e\x45\x72\x72\x6f\x72\x00\x25\x75\x00\x65\x72\x72\x6f\x72\x43\x6f\x64\x65\x00\x47\x65\x74\x43\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e\x54\x79\x70\x65\x49\x6e\x66\x6f\x00\x4e\x65\x77\x43\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e\x54\x79\x70\x65\x00\x47\x65\x74\x43\x6f\x6d\x6d\x6f\x6e\x4c\x69\x6e\x6b\x50\x72\x6f\x70\x65\x72\x74\x69\x65\x73\x00\x4e\x65\x77\x4c\x61\x79\x65\x72\x31\x44\x6f\x77\x6e\x73\x74\x72\x65\x61\x6d\x4d\x61\x78\x42\x69\x74\x52\x61\x74\x65\x00\x4e\x65\x77\x4c\x61\x79\x65\x72\x31\x55\x70\x73\x74\x72\x65\x61\x6d\x4d\x61\x78\x42\x69\x74\x52\x61\x74\x65\x00\x47\x65\x74\x45\x78\x74\x65\x72\x6e\x61\x6c\x49\x50\x41\x64\x64\x72\x65\x73\x73\x00\x4e\x65\x77\x45\x78\x74\x65\x72\x6e\x61\x6c\x49\x50\x41\x64\x64\x72\x65\x73\x73\x00\x6c\x69\x62\x6d\x69\x6e\x69\x75\x70\x6e\x70\x63\x00\x4e\x65\x77\x52\x65\x6d\x6f\x74\x65\x48\x6f\x73\x74\x00\x4e\x65\x77\x45\x78\x74\x65\x72\x6e\x61\x6c\x50\x6f\x72\x74\x00\x4e\x65\x77\x50\x72\x6f\x74\x6f\x63\x6f\x6c\x00\x4e\x65\x77\x49\x6e\x74\x65\x72\x6e\x61\x6c\x50\x6f\x72\x74\x00\x4e\x65\x77\x49\x6e\x74\x65\x72\x6e\x61\x6c\x43\x6c\x69\x65\x6e\x74\x00\x4e\x65\x77\x45\x6e\x61\x62\x6c\x65\x64\x00\x4e\x65\x77\x50\x6f\x72\x74\x4d\x61\x70\x70\x69\x6e\x67\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x00\x4e\x65\x77\x4c\x65\x61\x73\x65\x44\x75\x72\x61\x74\x69\x6f\x6e\x00\x41\x64\x64\x50\x6f\x72\x74\x4d\x61\x70\x70\x69\x6e\x67\x00\x41\x64\x64\x41\x6e\x79\x50\x6f\x72\x74\x4d\x61\x70\x70\x69\x6e\x67\x00\x4e\x65\x77\x52\x65\x73\x65\x72\x76\x65\x64\x50\x6f\x72\x74\x00\x44\x65\x6c\x65\x74\x65\x50\x6f\x72\x74\x4d\x61\x70\x70\x69\x6e\x67\x00\x4e\x65\x77\x53\x74\x61\x72\x74\x50\x6f\x72\x74\x00\x4e\x65\x77\x45\x6e\x64\x50\x6f\x72\x74\x00\x4e\x65\x77\x4d\x61\x6e\x61\x67\x65\x00\x44\x65\x6c\x65\x74\x65\x50\x6f\x72\x74\x4d\x61\x70\x70\x69\x6e\x67\x52\x61\x6e\x67\x65\x00\x4e\x65\x77\x50\x6f\x72\x74\x4d\x61\x70\x70\x69\x6e\x67\x49\x6e\x64\x65\x78\x00\x47\x65\x74\x47\x65\x6e\x65\x72\x69\x63\x50\x6f\x72\x74\x4d\x61\x70\x70\x69\x6e\x67\x45\x6e\x74\x72\x79\x00\x47\x65\x74\x50\x6f\x72\x74\x4d\x61\x70\x70\x69\x6e\x67\x4e\x75\x6d\x62\x65\x72\x4f\x66\x45\x6e\x74\x72\x69\x65\x73\x00\x4e\x65\x77\x50\x6f\x72\x74\x4d\x61\x70\x70\x69\x6e\x67\x4e\x75\x6d\x62\x65\x72\x4f\x66\x45\x6e\x74\x72\x69\x65\x73\x00\x47\x65\x74\x53\x70\x65\x63\x69\x66\x69\x63\x50\x6f\x72\x74\x4d\x61\x70\x70\x69\x6e\x67\x45\x6e\x74\x72\x79\x00\x4e\x65\x77\x4e\x75\x6d\x62\x65\x72\x4f\x66\x50\x6f\x72\x74\x73\x00\x47\x65\x74\x4c\x69\x73\x74\x4f\x66\x50\x6f\x72\x74\x4d\x61\x70\x70\x69\x6e\x67\x73\x00\x47\x65\x74\x46\x69\x72\x65\x77\x61\x6c\x6c\x53\x74\x61\x74\x75\x73\x00\x46\x69\x72\x65\x77\x61\x6c\x6c\x45\x6e\x61\x62\x6c\x65\x64\x00\x49\x6e\x62\x6f\x75\x6e\x64\x50\x69\x6e\x68\x6f\x6c\x65\x41\x6c\x6c\x6f\x77\x65\x64\x00\x52\x65\x6d\x6f\x74\x65\x50\x6f\x72\x74\x00\x47\x65\x74\x4f\x75\x74\x62\x6f\x75\x6e\x64\x50\x69\x6e\x68\x6f\x6c\x65\x54\x69\x6d\x65\x6f\x75\x74\x00\x65\x6d\x70\x74\x79\x00\x41\x64\x64\x50\x69\x6e\x68\x6f\x6c\x65\x00\x55\x6e\x69\x71\x75\x65\x49\x44\x00\x4e\x65\x77\x4c\x65\x61\x73\x65\x54\x69\x6d\x65\x00\x55\x70\x64\x61\x74\x65\x50\x69\x6e\x68\x6f\x6c\x65\x00\x44\x65\x6c\x65\x74\x65\x50\x69\x6e\x68\x6f\x6c\x65\x00\x43\x68\x65\x63\x6b\x50\x69\x6e\x68\x6f\x6c\x65\x57\x6f\x72\x6b\x69\x6e\x67\x00\x49\x73\x57\x6f\x72\x6b\x69\x6e\x67\x00\x47\x65\x74\x50\x69\x6e\x68\x6f\x6c\x65\x50\x61\x63\x6b\x65\x74\x73\x00\x53\x75\x63\x63\x65\x73\x73\x00\x4d\x69\x6e\x69\x75\x70\x6e\x70\x63\x20\x55\x6e\x6b\x6e\x6f\x77\x6e\x20\x45\x72\x72\x6f\x72\x00\x4d\x69\x6e\x69\x75\x70\x6e\x70\x63\x20\x49\x6e\x76\x61\x6c\x69\x64\x20\x41\x72\x67\x75\x6d\x65\x6e\x74\x73\x00\x4d\x69\x6e\x69\x75\x70\x6e\x70\x63\x20\x49\x6e\x76\x61\x6c\x69\x64\x20\x72\x65\x73\x70\x6f\x6e\x73\x65\x00\x4d\x69\x6e\x69\x75\x70\x6e\x70\x63\x20\x53\x6f\x63\x6b\x65\x74\x20\x65\x72\x72\x6f\x72\x00\x49\x6e\x76\x61\x6c\x69\x64\x20\x41\x63\x74\x69\x6f\x6e\x00\x49\x6e\x76\x61\x6c\x69\x64\x20\x41\x72\x67\x73\x00\x41\x63\x74\x69\x6f\x6e\x20\x46\x61\x69\x6c\x65\x64\x00\x41\x63\x74\x69\x6f\x6e\x20\x6e\x6f\x74\x20\x61\x75\x74\x68\x6f\x72\x69\x7a\x65\x64\x00\x50\x69\x6e\x68\x6f\x6c\x65\x53\x70\x61\x63\x65\x45\x78\x68\x61\x75\x73\x74\x65\x64\x00\x46\x69\x72\x65\x77\x61\x6c\x6c\x44\x69\x73\x61\x62\x6c\x65\x64\x00\x49\x6e\x62\x6f\x75\x6e\x64\x50\x69\x6e\x68\x6f\x6c\x65\x4e\x6f\x74\x41\x6c\x6c\x6f\x77\x65\x64\x00\x4e\x6f\x53\x75\x63\x68\x45\x6e\x74\x72\x79\x00\x50\x72\x6f\x74\x6f\x63\x6f\x6c\x4e\x6f\x74\x53\x75\x70\x70\x6f\x72\x74\x65\x64\x00\x50\x72\x6f\x74\x6f\x63\x6f\x6c\x57\x69\x6c\x64\x63\x61\x72\x64\x69\x6e\x67\x4e\x6f\x74\x41\x6c\x6c\x6f\x77\x65\x64\x00\x57\x69\x6c\x64\x63\x61\x72\x64\x4e\x6f\x74\x50\x65\x72\x6d\x69\x74\x74\x65\x64\x49\x6e\x53\x72\x63\x49\x50\x00\x4e\x6f\x50\x61\x63\x6b\x65\x74\x53\x65\x6e\x74\x00\x53\x70\x65\x63\x69\x66\x69\x65\x64\x41\x72\x72\x61\x79\x49\x6e\x64\x65\x78\x49\x6e\x76\x61\x6c\x69\x64\x00\x4e\x6f\x53\x75\x63\x68\x45\x6e\x74\x72\x79\x49\x6e\x41\x72\x72\x61\x79\x00\x57\x69\x6c\x64\x43\x61\x72\x64\x4e\x6f\x74\x50\x65\x72\x6d\x69\x74\x74\x65\x64\x49\x6e\x53\x72\x63\x49\x50\x00\x57\x69\x6c\x64\x43\x61\x72\x64\x4e\x6f\x74\x50\x65\x72\x6d\x69\x74\x74\x65\x64\x49\x6e\x45\x78\x74\x50\x6f\x72\x74\x00\x43\x6f\x6e\x66\x6c\x69\x63\x74\x49\x6e\x4d\x61\x70\x70\x69\x6e\x67\x45\x6e\x74\x72\x79\x00\x53\x61\x6d\x65\x50\x6f\x72\x74\x56\x61\x6c\x75\x65\x73\x52\x65\x71\x75\x69\x72\x65\x64\x00\x4f\x6e\x6c\x79\x50\x65\x72\x6d\x61\x6e\x65\x6e\x74\x4c\x65\x61\x73\x65\x73\x53\x75\x70\x70\x6f\x72\x74\x65\x64\x00\x55\x6e\x6b\x6e\x6f\x77\x6e\x45\x72\x72\x6f\x72\x00\x4d\x69\x6e\x69\x75\x70\x6e\x70\x63\x20\x4d\x65\x6d\x6f\x72\x79\x20\x61\x6c\x6c\x6f\x63\x61\x74\x69\x6f\x6e\x20\x65\x72\x72\x6f\x72\x00\x00\x00\x00\x00\x00\x00\x49\x6e\x74\x65\x72\x6e\x61\x6c\x50\x6f\x72\x74\x57\x69\x6c\x64\x63\x61\x72\x64\x69\x6e\x67\x4e\x6f\x74\x41\x6c\x6c\x6f\x77\x65\x64\x00\x00\x00\x00\x00\x00\x00\x52\x65\x6d\x6f\x74\x65\x48\x6f\x73\x74\x4f\x6e\x6c\x79\x53\x75\x70\x70\x6f\x72\x74\x73\x57\x69\x6c\x64\x63\x61\x72\x64\x00\x00\x45\x78\x74\x65\x72\x6e\x61\x6c\x50\x6f\x72\x74\x4f\x6e\x6c\x79\x53\x75\x70\x70\x6f\x72\x74\x73\x57\x69\x6c\x64\x63\x61\x72\x64\x00\x25\x32\x35\x00\x67\x65\x74\x61\x64\x64\x72\x69\x6e\x66\x6f\x28\x29\x20\x65\x72\x72\x6f\x72\x20\x3a\x20\x25\x73\x0a\x00\x67\x65\x74\x73\x6f\x63\x6b\x6f\x70\x74\x00\x63\x6f\x6e\x6e\x65\x63\x74\x00\x00\x00\x91\xbf\xff\xff\x91\xbf\xff\xff\xd9\xbe\xff\xff\xf5\xbe\xff\xff\x06\xbf\xff\xff\x30\xbf\xff\xff\x3e\xbf\xff\xff\x57\xbf\xff\xff\x67\xbf\xff\xff\x86\xbf\xff\xff\x4e\x65\x77\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x00\x70\x6f\x6c\x6c\x00\x72\x65\x63\x76\x00\x73\x6f\x63\x6b\x65\x74\x28\x75\x6e\x69\x78\x29\x00\x6d\x69\x6e\x69\x73\x73\x64\x70\x63\x2e\x63\x3a\x20\x77\x72\x69\x74\x65\x28\x29\x00\x6d\x69\x6e\x69\x73\x73\x64\x70\x63\x2e\x63\x3a\x20\x72\x65\x61\x64\x28\x29\x00\x63\x6f\x6e\x74\x65\x6e\x74\x2d\x6c\x65\x6e\x67\x74\x68\x00\x74\x72\x61\x6e\x73\x66\x65\x72\x2d\x65\x6e\x63\x6f\x64\x69\x6e\x67\x00\x63\x68\x75\x6e\x6b\x65\x64\x00\x67\x65\x74\x73\x6f\x63\x6b\x6e\x61\x6d\x65\x00\x67\x65\x74\x6e\x61\x6d\x65\x69\x6e\x66\x6f\x28\x29\x20\x66\x61\x69\x6c\x65\x64\x20\x3a\x20\x25\x73\x0a\x00\x73\x65\x6e\x64\x00\x3a\x2f\x2f\x00\x00\x00\x00\x00\x47\x45\x54\x20\x25\x73\x20\x48\x54\x54\x50\x2f\x25\x73\x0d\x0a\x48\x6f\x73\x74\x3a\x20\x25\x73\x3a\x25\x64\x0d\x0a\x43\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e\x3a\x20\x43\x6c\x6f\x73\x65\x0d\x0a\x55\x73\x65\x72\x2d\x41\x67\x65\x6e\x74\x3a\x20\x55\x62\x75\x6e\x74\x75\x2f\x31\x32\x2e\x30\x34\x2c\x20\x55\x50\x6e\x50\x2f\x31\x2e\x30\x2c\x20\x4d\x69\x6e\x69\x55\x50\x6e\x50\x63\x2f\x31\x2e\x39\x0d\x0a\x0d\x0a\x00\x3c\x21\x2d\x2d\x00\x2d\x2d\x3e\x00\x3c\x21\x5b\x43\x44\x41\x54\x41\x5b\x00\x5d\x5d\x3e\x00\x73\x65\x72\x76\x69\x63\x65\x00\x55\x52\x4c\x42\x61\x73\x65\x00\x70\x72\x65\x73\x65\x6e\x74\x61\x74\x69\x6f\x6e\x55\x52\x4c\x00\x73\x65\x72\x76\x69\x63\x65\x54\x79\x70\x65\x00\x63\x6f\x6e\x74\x72\x6f\x6c\x55\x52\x4c\x00\x65\x76\x65\x6e\x74\x53\x75\x62\x55\x52\x4c\x00\x53\x43\x50\x44\x55\x52\x4c\x00\x75\x72\x6c\x62\x61\x73\x65\x20\x3d\x20\x27\x25\x73\x27\x0a\x00\x20\x73\x65\x72\x76\x69\x63\x65\x54\x79\x70\x65\x20\x3d\x20\x27\x25\x73\x27\x0a\x00\x20\x63\x6f\x6e\x74\x72\x6f\x6c\x55\x52\x4c\x20\x3d\x20\x27\x25\x73\x27\x0a\x00\x20\x65\x76\x65\x6e\x74\x53\x75\x62\x55\x52\x4c\x20\x3d\x20\x27\x25\x73\x27\x0a\x00\x20\x53\x43\x50\x44\x55\x52\x4c\x20\x3d\x20\x27\x25\x73\x27\x0a\x00\x20\x73\x65\x72\x76\x69\x63\x65\x74\x79\x70\x65\x20\x3d\x20\x27\x25\x73\x27\x0a\x00\x57\x41\x4e\x20\x49\x50\x76\x36\x20\x46\x69\x72\x65\x77\x61\x6c\x6c\x20\x43\x6f\x6e\x74\x72\x6f\x6c\x20\x3a\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x75\x72\x6e\x3a\x73\x63\x68\x65\x6d\x61\x73\x2d\x75\x70\x6e\x70\x2d\x6f\x72\x67\x3a\x73\x65\x72\x76\x69\x63\x65\x3a\x57\x41\x4e\x43\x6f\x6d\x6d\x6f\x6e\x49\x6e\x74\x65\x72\x66\x61\x63\x65\x43\x6f\x6e\x66\x69\x67\x3a\x00\x00\x75\x72\x6e\x3a\x73\x63\x68\x65\x6d\x61\x73\x2d\x75\x70\x6e\x70\x2d\x6f\x72\x67\x3a\x73\x65\x72\x76\x69\x63\x65\x3a\x57\x41\x4e\x49\x50\x76\x36\x46\x69\x72\x65\x77\x61\x6c\x6c\x43\x6f\x6e\x74\x72\x6f\x6c\x3a\x00\x00\x00\x00\x75\x72\x6e\x3a\x73\x63\x68\x65\x6d\x61\x73\x2d\x75\x70\x6e\x70\x2d\x6f\x72\x67\x3a\x73\x65\x72\x76\x69\x63\x65\x3a\x57\x41\x4e\x49\x50\x43\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e\x3a\x00\x00\x00\x75\x72\x6e\x3a\x73\x63\x68\x65\x6d\x61\x73\x2d\x75\x70\x6e\x70\x2d\x6f\x72\x67\x3a\x73\x65\x72\x76\x69\x63\x65\x3a\x57\x41\x4e\x50\x50\x50\x43\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e\x3a\x00\x00\x57\x41\x4e\x20\x44\x65\x76\x69\x63\x65\x20\x28\x43\x6f\x6d\x6d\x6f\x6e\x20\x69\x6e\x74\x65\x72\x66\x61\x63\x65\x20\x63\x6f\x6e\x66\x69\x67\x29\x20\x3a\x0a\x00\x70\x72\x69\x6d\x61\x72\x79\x20\x57\x41\x4e\x20\x43\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e\x20\x44\x65\x76\x69\x63\x65\x20\x28\x49\x50\x20\x6f\x72\x20\x50\x50\x50\x20\x43\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e\x29\x3a\x0a\x00\x00\x73\x65\x63\x6f\x6e\x64\x61\x72\x79\x20\x57\x41\x4e\x20\x43\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e\x20\x44\x65\x76\x69\x63\x65\x20\x28\x49\x50\x20\x6f\x72\x20\x50\x50\x50\x20\x43\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e\x29\x3a\x0a\x00\x3a\x25\x68\x75\x00\x00\x00\x50\x4f\x53\x54\x20\x25\x73\x20\x48\x54\x54\x50\x2f\x25\x73\x0d\x0a\x48\x6f\x73\x74\x3a\x20\x25\x73\x25\x73\x0d\x0a\x55\x73\x65\x72\x2d\x41\x67\x65\x6e\x74\x3a\x20\x55\x62\x75\x6e\x74\x75\x2f\x31\x32\x2e\x30\x34\x2c\x20\x55\x50\x6e\x50\x2f\x31\x2e\x30\x2c\x20\x4d\x69\x6e\x69\x55\x50\x6e\x50\x63\x2f\x31\x2e\x39\x0d\x0a\x43\x6f\x6e\x74\x65\x6e\x74\x2d\x4c\x65\x6e\x67\x74\x68\x3a\x20\x25\x64\x0d\x0a\x43\x6f\x6e\x74\x65\x6e\x74\x2d\x54\x79\x70\x65\x3a\x20\x74\x65\x78\x74\x2f\x78\x6d\x6c\x0d\x0a\x53\x4f\x41\x50\x41\x63\x74\x69\x6f\x6e\x3a\x20\x22\x25\x73\x22\x0d\x0a\x43\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e\x3a\x20\x43\x6c\x6f\x73\x65\x0d\x0a\x43\x61\x63\x68\x65\x2d\x43\x6f\x6e\x74\x72\x6f\x6c\x3a\x20\x6e\x6f\x2d\x63\x61\x63\x68\x65\x0d\x0a\x50\x72\x61\x67\x6d\x61\x3a\x20\x6e\x6f\x2d\x63\x61\x63\x68\x65\x0d\x0a\x0d\x0a\x00\x00\x4e\x65\x77\x50\x6f\x72\x74\x4c\x69\x73\x74\x69\x6e\x67\x00\x00\x01\x1b\x03\x3b\x3c\x02\x00\x00\x46\x00\x00\x00\x80\x53\xff\xff\x58\x02\x00\x00\x90\x57\xff\xff\x80\x02\x00\x00\x8e\x5a\xff\xff\xb8\x02\x00\x00\x21\x5b\xff\xff\xd0\x02\x00\x00\x51\x5e\xff\xff\xf8\x02\x00\x00\xe0\x74\xff\xff\x48\x03\x00\x00\x95\x75\xff\xff\x60\x03\x00\x00\xe0\x75\xff\xff\x78\x03\x00\x00\xa7\x78\xff\xff\xc8\x03\x00\x00\xc0\x78\xff\xff\xe0\x03\x00\x00\xdb\x81\xff\xff\x30\x04\x00\x00\xf5\x81\xff\xff\x50\x04\x00\x00\xd9\x84\xff\xff\xa0\x04\x00\x00\x37\x85\xff\xff\xc0\x04\x00\x00\xad\x85\xff\xff\xe0\x04\x00\x00\xf9\x8b\xff\xff\x30\x05\x00\x00\x30\x8d\xff\xff\x58\x05\x00\x00\x52\x8d\xff\xff\x70\x05\x00\x00\xf9\x8d\xff\xff\xa0\x05\x00\x00\xa0\x8e\xff\xff\xd0\x05\x00\x00\x47\x8f\xff\xff\x00\x06\x00\x00\xee\x8f\xff\xff\x30\x06\x00\x00\xf6\x91\xff\xff\x58\x06\x00\x00\x13\x93\xff\xff\x88\x06\x00\x00\xd5\x94\xff\xff\xb0\x06\x00\x00\x0b\x96\xff\xff\xe0\x06\x00\x00\x5a\x98\xff\xff\x08\x07\x00\x00\xf7\x9a\xff\xff\x30\x07\x00\x00\x85\x9c\xff\xff\x58\x07\x00\x00\x49\x9e\xff\xff\x80\x07\x00\x00\x8e\xa1\xff\xff\xd0\x07\x00\x00\xa5\xa2\xff\xff\x00\x08\x00\x00\x69\xa5\xff\xff\x50\x08\x00\x00\x73\xa7\xff\xff\x78\x08\x00\x00\x05\xa9\xff\xff\xa0\x08\x00\x00\x22\xab\xff\xff\xc8\x08\x00\x00\xda\xad\xff\xff\xf0\x08\x00\x00\x41\xaf\xff\xff\x18\x09\x00\x00\x80\xb0\xff\xff\x40\x09\x00\x00\x05\xb2\xff\xff\x68\x09\x00\x00\x80\xb3\xff\xff\x90\x09\x00\x00\xb4\xb5\xff\xff\xa8\x09\x00\x00\xc0\xb9\xff\xff\xf8\x09\x00\x00\x06\xba\xff\xff\x10\x0a\x00\x00\x0e\xba\xff\xff\x28\x0a\x00\x00\x1c\xbb\xff\xff\x48\x0a\x00\x00\xb9\xbb\xff\xff\x88\x0a\x00\x00\x13\xbc\xff\xff\xa0\x0a\x00\x00\x48\xbc\xff\xff\xc0\x0a\x00\x00\x6c\xbd\xff\xff\xe8\x0a\x00\x00\x50\xc1\xff\xff\x38\x0b\x00\x00\xd0\xc7\xff\xff\x88\x0b\x00\x00\x96\xc9\xff\xff\xd8\x0b\x00\x00\xb7\xc9\xff\xff\xf0\x0b\x00\x00\x11\xcd\xff\xff\x18\x0c\x00\x00\x9c\xcd\xff\xff\x40\x0c\x00\x00\x60\xce\xff\xff\x60\x0c\x00\x00\xc4\xd2\xff\xff\xb0\x0c\x00\x00\x4d\xd3\xff\xff\xd0\x0c\x00\x00\xb6\xd6\xff\xff\xf0\x0c\x00\x00\xd4\xd7\xff\xff\x20\x0d\x00\x00\x20\xda\xff\xff\x40\x0d\x00\x00\xc8\xdb\xff\xff\x68\x0d\x00\x00\x1d\xdc\xff\xff\x88\x0d\x00\x00\xac\xdc\xff\xff\xa8\x0d\x00\x00\x8e\xdd\xff\xff\xc8\x0d\x00\x00\xef\xdd\xff\xff\xe0\x0d\x00\x00\x41\xde\xff\xff\x00\x0e\x00\x00\x80\xde\xff\xff\x30\x0e\x00\x00\x10\xdf\xff\xff\x58\x0e\x00\x00\x00\x00\x00\x00\x14\x00\x00\x00\x00\x00\x00\x00\x01\x7a\x52\x00\x01\x78\x10\x01\x1b\x0c\x07\x08\x90\x01\x00\x00\x24\x00\x00\x00\x1c\x00\x00\x00\x20\x51\xff\xff\x20\x03\x00\x00\x00\x0e\x10\x46\x0e\x18\x4a\x0f\x0b\x77\x08\x80\x00\x3f\x1a\x3b\x2a\x33\x24\x22\x00\x00\x00\x00\x34\x00\x00\x00\x44\x00\x00\x00\x08\x55\xff\xff\xfe\x02\x00\x00\x00\x42\x0e\x10\x8c\x02\x41\x0e\x18\x86\x03\x41\x0e\x20\x83\x04\x47\x0e\xb0\x02\x03\xee\x02\x0e\x20\x41\x0e\x18\x41\x0e\x10\x42\x0e\x08\x00\x00\x00\x00\x00\x00\x14\x00\x00\x00\x7c\x00\x00\x00\xce\x57\xff\xff\x93\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x00\x00\x94\x00\x00\x00\x49\x58\xff\xff\x30\x03\x00\x00\x00\x65\x0e\x80\x02\x8f\x02\x8e\x03\x8d\x04\x8c\x05\x86\x06\x83\x07\x03\x0a\x03\x0e\x08\x00\x00\x4c\x00\x00\x00\xbc\x00\x00\x00\x51\x5b\xff\xff\x8d\x16\x00\x00\x00\x42\x0e\x10\x8f\x02\x42\x0e\x18\x8e\x03\x42\x0e\x20\x8d\x04\x42\x0e\x28\x8c\x05\x41\x0e\x30\x86\x06\x41\x0e\x38\x83\x07\x47\x0e\xd0\x1b\x03\x71\x16\x0e\x38\x41\x0e\x30\x41\x0e\x28\x42\x0e\x20\x42\x0e\x18\x42\x0e\x10\x42\x0e\x08\x00\x00\x00\x00\x00\x00\x14\x00\x00\x00\x0c\x01\x00\x00\x90\x71\xff\xff\xb5\x00\x00\x00\x00\x44\x0e\x10\x02\xb0\x0e\x08\x14\x00\x00\x00\x24\x01\x00\x00\x2d\x72\xff\xff\x4b\x00\x00\x00\x00\x44\x0e\x60\x02\x46\x0e\x08\x4c\x00\x00\x00\x3c\x01\x00\x00\x60\x72\xff\xff\xc7\x02\x00\x00\x00\x42\x0e\x10\x8f\x02\x42\x0e\x18\x8e\x03\x42\x0e\x20\x8d\x04\x42\x0e\x28\x8c\x05\x41\x0e\x30\x86\x06\x41\x0e\x38\x83\x07\x47\x0e\xc0\x12\x03\xab\x02\x0e\x38\x41\x0e\x30\x41\x0e\x28\x42\x0e\x20\x42\x0e\x18\x42\x0e\x10\x42\x0e\x08\x00\x00\x00\x00\x00\x00\x14\x00\x00\x00\x8c\x01\x00\x00\xd7\x74\xff\xff\x19\x00\x00\x00\x00\x44\x0e\x20\x54\x0e\x08\x00\x4c\x00\x00\x00\xa4\x01\x00\x00\xd8\x74\xff\xff\x1b\x09\x00\x00\x00\x42\x0e\x10\x8f\x02\x42\x0e\x18\x8e\x03\x42\x0e\x20\x8d\x04\x42\x0e\x28\x8c\x05\x41\x0e\x30\x86\x06\x41\x0e\x38\x83\x07\x47\x0e\x90\x0f\x03\xff\x08\x0e\x38\x41\x0e\x30\x41\x0e\x28\x42\x0e\x20\x42\x0e\x18\x42\x0e\x10\x42\x0e\x08\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\xf4\x01\x00\x00\xa3\x7d\xff\xff\x1a\x00\x00\x00\x00\x41\x0e\x10\x83\x02\x58\x0e\x08\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x00\x00\x14\x02\x00\x00\x9d\x7d\xff\xff\xe4\x02\x00\x00\x00\x42\x0e\x10\x8f\x02\x42\x0e\x18\x8e\x03\x42\x0e\x20\x8d\x04\x42\x0e\x28\x8c\x05\x41\x0e\x30\x86\x06\x41\x0e\x38\x83\x07\x44\x0e\xa0\x01\x03\xcb\x02\x0e\x38\x41\x0e\x30\x41\x0e\x28\x42\x0e\x20\x42\x0e\x18\x42\x0e\x10\x42\x0e\x08\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x64\x02\x00\x00\x31\x80\xff\xff\x5e\x00\x00\x00\x00\x41\x0e\x10\x83\x02\x02\x5c\x0e\x08\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x84\x02\x00\x00\x6f\x80\xff\xff\x76\x00\x00\x00\x00\x41\x0e\x10\x83\x02\x44\x0e\x70\x02\x6f\x0e\x10\x41\x0e\x08\x4c\x00\x00\x00\xa4\x02\x00\x00\xc5\x80\xff\xff\x4c\x06\x00\x00\x00\x42\x0e\x10\x8f\x02\x42\x0e\x18\x8e\x03\x42\x0e\x20\x8d\x04\x42\x0e\x28\x8c\x05\x41\x0e\x30\x86\x06\x41\x0e\x38\x83\x07\x44\x0e\xa0\x01\x03\x33\x06\x0e\x38\x41\x0e\x30\x41\x0e\x28\x42\x0e\x20\x42\x0e\x18\x42\x0e\x10\x42\x0e\x08\x00\x00\x00\x00\x00\x00\x24\x00\x00\x00\xf4\x02\x00\x00\xc1\x86\xff\xff\x30\x01\x00\x00\x00\x58\x0e\x40\x8d\x02\x8c\x03\x86\x04\x83\x05\x03\x17\x01\x0e\x08\x00\x00\x00\x00\x00\x00\x00\x14\x00\x00\x00\x1c\x03\x00\x00\xd0\x87\xff\xff\x22\x00\x00\x00\x00\x44\x0e\x10\x5d\x0e\x08\x00\x2c\x00\x00\x00\x34\x03\x00\x00\xda\x87\xff\xff\xa7\x00\x00\x00\x00\x41\x0e\x10\x86\x02\x41\x0e\x18\x83\x03\x47\x0e\xa0\x01\x02\x9b\x0e\x18\x41\x0e\x10\x41\x0e\x08\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x64\x03\x00\x00\x51\x88\xff\xff\xa7\x00\x00\x00\x00\x41\x0e\x10\x86\x02\x41\x0e\x18\x83\x03\x47\x0e\xa0\x01\x02\x9b\x0e\x18\x41\x0e\x10\x41\x0e\x08\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x94\x03\x00\x00\xc8\x88\xff\xff\xa7\x00\x00\x00\x00\x41\x0e\x10\x86\x02\x41\x0e\x18\x83\x03\x47\x0e\xa0\x01\x02\x9b\x0e\x18\x41\x0e\x10\x41\x0e\x08\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x00\x00\xc4\x03\x00\x00\x3f\x89\xff\xff\xa7\x00\x00\x00\x00\x41\x0e\x10\x86\x02\x41\x0e\x18\x83\x03\x47\x0e\xa0\x01\x02\x9b\x0e\x18\x41\x0e\x10\x41\x0e\x08\x00\x00\x00\x00\x00\x00\x00\x24\x00\x00\x00\xf4\x03\x00\x00\xb6\x89\xff\xff\x08\x02\x00\x00\x00\x65\x0e\xd0\x01\x8f\x02\x8e\x03\x8d\x04\x8c\x05\x86\x06\x83\x07\x03\xe2\x01\x0e\x08\x00\x00\x2c\x00\x00\x00\x1c\x04\x00\x00\x96\x8b\xff\xff\x1d\x01\x00\x00\x00\x41\x0e\x10\x86\x02\x41\x0e\x18\x83\x03\x47\x0e\xa0\x01\x03\x11\x01\x0e\x18\x41\x0e\x10\x41\x0e\x08\x00\x00\x00\x00\x00\x00\x24\x00\x00\x00\x4c\x04\x00\x00\x83\x8c\xff\xff\xc2\x01\x00\x00\x00\x60\x0e\xb0\x01\x8e\x02\x8d\x03\x8c\x04\x86\x05\x83\x06\x03\xa1\x01\x0e\x08\x00\x00\x00\x00\x2c\x00\x00\x00\x74\x04\x00\x00\x1d\x8e\xff\xff\x36\x01\x00\x00\x00\x41\x0e\x10\x86\x02\x41\x0e\x18\x83\x03\x47\x0e\xa0\x01\x03\x2a\x01\x0e\x18\x41\x0e\x10\x41\x0e\x08\x00\x00\x00\x00\x00\x00\x24\x00\x00\x00\xa4\x04\x00\x00\x23\x8f\xff\xff\x4f\x02\x00\x00\x00\x65\x0e\xe0\x01\x8f\x02\x8e\x03\x8d\x04\x8c\x05\x86\x06\x83\x07\x03\x29\x02\x0e\x08\x00\x00\x24\x00\x00\x00\xcc\x04\x00\x00\x4a\x91\xff\xff\x9d\x02\x00\x00\x00\x65\x0e\xf0\x01\x8f\x02\x8e\x03\x8d\x04\x8c\x05\x86\x06\x83\x07\x03\x77\x02\x0e\x08\x00\x00\x24\x00\x00\x00\xf4\x04\x00\x00\xbf\x93\xff\xff\x8e\x01\x00\x00\x00\x65\x0e\xc0\x01\x8f\x02\x8e\x03\x8d\x04\x8c\x05\x86\x06\x83\x07\x03\x68\x01\x0e\x08\x00\x00\x24\x00\x00\x00\x1c\x05\x00\x00\x25\x95\xff\xff\xc4\x01\x00\x00\x00\x65\x0e\xd0\x01\x8f\x02\x8e\x03\x8d\x04\x8c\x05\x86\x06\x83\x07\x03\x9e\x01\x0e\x08\x00\x00\x4c\x00\x00\x00\x44\x05\x00\x00\xc1\x96\xff\xff\x45\x03\x00\x00\x00\x42\x0e\x10\x8f\x02\x42\x0e\x18\x8e\x03\x42\x0e\x20\x8d\x04\x42\x0e\x28\x8c\x05\x41\x0e\x30\x86\x06\x41\x0e\x38\x83\x07\x47\x0e\xf0\x01\x03\x29\x03\x0e\x38\x41\x0e\x30\x41\x0e\x28\x42\x0e\x20\x42\x0e\x18\x42\x0e\x10\x42\x0e\x08\x00\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x94\x05\x00\x00\xb6\x99\xff\xff\x17\x01\x00\x00\x00\x41\x0e\x10\x86\x02\x41\x0e\x18\x83\x03\x47\x0e\xa0\x01\x03\x0b\x01\x0e\x18\x41\x0e\x10\x41\x0e\x08\x00\x00\x00\x00\x00\x00\x4c\x00\x00\x00\xc4\x05\x00\x00\x9d\x9a\xff\xff\xc4\x02\x00\x00\x00\x42\x0e\x10\x8f\x02\x42\x0e\x18\x8e\x03\x42\x0e\x20\x8d\x04\x42\x0e\x28\x8c\x05\x41\x0e\x30\x86\x06\x41\x0e\x38\x83\x07\x47\x0e\xf0\x01\x03\xa8\x02\x0e\x38\x41\x0e\x30\x41\x0e\x28\x42\x0e\x20\x42\x0e\x18\x42\x0e\x10\x42\x0e\x08\x00\x00\x00\x00\x00\x00\x24\x00\x00\x00\x14\x06\x00\x00\x11\x9d\xff\xff\x0a\x02\x00\x00\x00\x65\x0e\xd0\x01\x8f\x02\x8e\x03\x8d\x04\x8c\x05\x86\x06\x83\x07\x03\xe4\x01\x0e\x08\x00\x00\x24\x00\x00\x00\x3c\x06\x00\x00\xf3\x9e\xff\xff\x92\x01\x00\x00\x00\x60\x0e\xb0\x01\x8e\x02\x8d\x03\x8c\x04\x86\x05\x83\x06\x03\x71\x01\x0e\x08\x00\x00\x00\x00\x24\x00\x00\x00\x64\x06\x00\x00\x5d\xa0\xff\xff\x1d\x02\x00\x00\x00\x65\x0e\xe0\x01\x8f\x02\x8e\x03\x8d\x04\x8c\x05\x86\x06\x83\x07\x03\xf7\x01\x0e\x08\x00\x00\x24\x00\x00\x00\x8c\x06\x00\x00\x52\xa2\xff\xff\xb8\x02\x00\x00\x00\x65\x0e\xe0\x01\x8f\x02\x8e\x03\x8d\x04\x8c\x05\x86\x06\x83\x07\x03\x92\x02\x0e\x08\x00\x00\x24\x00\x00\x00\xb4\x06\x00\x00\xe2\xa4\xff\xff\x67\x01\x00\x00\x00\x60\x0e\xb0\x01\x8e\x02\x8d\x03\x8c\x04\x86\x05\x83\x06\x03\x46\x01\x0e\x08\x00\x00\x00\x00\x24\x00\x00\x00\xdc\x06\x00\x00\x21\xa6\xff\xff\x3f\x01\x00\x00\x00\x5b\x0e\xb0\x01\x8d\x02\x8c\x03\x86\x04\x83\x05\x03\x23\x01\x0e\x08\x00\x00\x00\x00\x00\x00\x24\x00\x00\x00\x04\x07\x00\x00\x38\xa7\xff\xff\x85\x01\x00\x00\x00\x60\x0e\xb0\x01\x8e\x02\x8d\x03\x8c\x04\x86\x05\x83\x06\x03\x64\x01\x0e\x08\x00\x00\x00\x00\x24\x00\x00\x00\x2c\x07\x00\x00\x95\xa8\xff\xff\x7a\x01\x00\x00\x00\x60\x0e\xb0\x01\x8e\x02\x8d\x03\x8c\x04\x86\x05\x83\x06\x03\x59\x01\x0e\x08\x00\x00\x00\x00\x14\x00\x00\x00\x54\x07\x00\x00\xe8\xa9\xff\xff\x31\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x00\x00\x6c\x07\x00\x00\x04\xac\xff\xff\x0c\x04\x00\x00\x00\x42\x0e\x10\x8f\x02\x42\x0e\x18\x8e\x03\x42\x0e\x20\x8d\x04\x42\x0e\x28\x8c\x05\x41\x0e\x30\x86\x06\x41\x0e\x38\x83\x07\x47\x0e\x80\x03\x03\xf0\x03\x0e\x38\x41\x0e\x30\x41\x0e\x28\x42\x0e\x20\x42\x0e\x18\x42\x0e\x10\x42\x0e\x08\x00\x00\x00\x00\x00\x00\x14\x00\x00\x00\xbc\x07\x00\x00\xc0\xaf\xff\xff\x46\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14\x00\x00\x00\xd4\x07\x00\x00\xee\xaf\xff\xff\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\xec\x07\x00\x00\xde\xaf\xff\xff\x0e\x01\x00\x00\x00\x4e\x0e\x20\x86\x02\x83\x03\x02\xff\x0e\x08\x00\x00\x00\x00\x3c\x00\x00\x00\x0c\x08\x00\x00\xcc\xb0\xff\xff\x9d\x00\x00\x00\x00\x42\x0e\x10\x8e\x02\x42\x0e\x18\x8d\x03\x42\x0e\x20\x8c\x04\x41\x0e\x28\x86\x05\x41\x0e\x30\x83\x06\x02\x8d\x0e\x28\x41\x0e\x20\x42\x0e\x18\x42\x0e\x10\x42\x0e\x08\x00\x00\x00\x00\x00\x00\x14\x00\x00\x00\x4c\x08\x00\x00\x29\xb1\xff\xff\x5a\x00\x00\x00\x00\x44\x0e\x60\x02\x55\x0e\x08\x1c\x00\x00\x00\x64\x08\x00\x00\x6b\xb1\xff\xff\x35\x00\x00\x00\x00\x41\x0e\x10\x83\x02\x73\x0e\x08\x00\x00\x00\x00\x00\x00\x00\x24\x00\x00\x00\x84\x08\x00\x00\x80\xb1\xff\xff\x23\x01\x00\x00\x00\x65\x0e\xe0\x01\x8f\x02\x8e\x03\x8d\x04\x8c\x05\x86\x06\x83\x07\x02\xfd\x0e\x08\x00\x00\x00\x4c\x00\x00\x00\xac\x08\x00\x00\x7c\xb2\xff\xff\xd5\x03\x00\x00\x00\x42\x0e\x10\x8f\x02\x42\x0e\x18\x8e\x03\x42\x0e\x20\x8d\x04\x42\x0e\x28\x8c\x05\x41\x0e\x30\x86\x06\x41\x0e\x38\x83\x07\x47\x0e\xf0\x21\x03\xb9\x03\x0e\x38\x41\x0e\x30\x41\x0e\x28\x42\x0e\x20\x42\x0e\x18\x42\x0e\x10\x42\x0e\x08\x00\x00\x00\x00\x00\x00\x4c\x00\x00\x00\xfc\x08\x00\x00\x10\xb6\xff\xff\x80\x06\x00\x00\x00\x42\x0e\x10\x8f\x02\x42\x0e\x18\x8e\x03\x42\x0e\x20\x8d\x04\x42\x0e\x28\x8c\x05\x41\x0e\x30\x86\x06\x41\x0e\x38\x83\x07\x47\x0e\xd0\x11\x03\x64\x06\x0e\x38\x41\x0e\x30\x41\x0e\x28\x42\x0e\x20\x42\x0e\x18\x42\x0e\x10\x42\x0e\x08\x00\x00\x00\x00\x00\x00\x4c\x00\x00\x00\x4c\x09\x00\x00\x40\xbc\xff\xff\xc6\x01\x00\x00\x00\x42\x0e\x10\x8f\x02\x42\x0e\x18\x8e\x03\x42\x0e\x20\x8d\x04\x42\x0e\x28\x8c\x05\x41\x0e\x30\x86\x06\x41\x0e\x38\x83\x07\x47\x0e\xa0\x12\x03\xaa\x01\x0e\x38\x41\x0e\x30\x41\x0e\x28\x42\x0e\x20\x42\x0e\x18\x42\x0e\x10\x42\x0e\x08\x00\x00\x00\x00\x00\x00\x14\x00\x00\x00\x9c\x09\x00\x00\xb6\xbd\xff\xff\x21\x00\x00\x00\x00\x44\x0e\x20\x5c\x0e\x08\x00\x24\x00\x00\x00\xb4\x09\x00\x00\xbf\xbd\xff\xff\x5a\x03\x00\x00\x00\x62\x0e\x70\x8f\x02\x8e\x03\x8d\x04\x8c\x05\x86\x06\x83\x07\x03\x37\x03\x0e\x08\x00\x00\x00\x24\x00\x00\x00\xdc\x09\x00\x00\xf1\xc0\xff\xff\x8b\x00\x00\x00\x00\x41\x0e\x10\x83\x02\x44\x0e\x90\x01\x02\x84\x0e\x10\x41\x0e\x08\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x04\x0a\x00\x00\x54\xc1\xff\xff\xbf\x00\x00\x00\x00\x56\x0e\xa0\x01\x8c\x02\x86\x03\x83\x04\x02\xa8\x0e\x08\x00\x4c\x00\x00\x00\x24\x0a\x00\x00\xf8\xc1\xff\xff\x61\x04\x00\x00\x00\x42\x0e\x10\x8f\x02\x42\x0e\x18\x8e\x03\x42\x0e\x20\x8d\x04\x42\x0e\x28\x8c\x05\x41\x0e\x30\x86\x06\x41\x0e\x38\x83\x07\x44\x0e\x50\x03\x48\x04\x0e\x38\x41\x0e\x30\x41\x0e\x28\x42\x0e\x20\x42\x0e\x18\x42\x0e\x10\x42\x0e\x08\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x74\x0a\x00\x00\x0c\xc6\xff\xff\x89\x00\x00\x00\x00\x58\x0e\x30\x8d\x02\x8c\x03\x86\x04\x83\x05\x02\x70\x0e\x08\x1c\x00\x00\x00\x94\x0a\x00\x00\x75\xc6\xff\xff\x69\x03\x00\x00\x00\x4e\x0e\x20\x86\x02\x83\x03\x03\x5a\x03\x0e\x08\x00\x00\x00\x2c\x00\x00\x00\xb4\x0a\x00\x00\xbe\xc9\xff\xff\x1e\x01\x00\x00\x00\x41\x0e\x10\x86\x02\x41\x0e\x18\x83\x03\x44\x0e\x20\x03\x15\x01\x0e\x18\x41\x0e\x10\x41\x0e\x08\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\xe4\x0a\x00\x00\xac\xca\xff\xff\x4b\x02\x00\x00\x00\x41\x0e\x10\x83\x02\x03\x49\x02\x0e\x08\x00\x00\x00\x00\x00\x24\x00\x00\x00\x04\x0b\x00\x00\xd8\xcc\xff\xff\xa6\x01\x00\x00\x00\x65\x0e\x90\x05\x8f\x02\x8e\x03\x8d\x04\x8c\x05\x86\x06\x83\x07\x03\x80\x01\x0e\x08\x00\x00\x1c\x00\x00\x00\x2c\x0b\x00\x00\x58\xce\xff\xff\x55\x00\x00\x00\x00\x4e\x0e\x20\x86\x02\x83\x03\x02\x46\x0e\x08\x00\x00\x00\x00\x1c\x00\x00\x00\x4c\x0b\x00\x00\x8d\xce\xff\xff\x8f\x00\x00\x00\x00\x58\x0e\x30\x8d\x02\x8c\x03\x86\x04\x83\x05\x02\x76\x0e\x08\x1c\x00\x00\x00\x6c\x0b\x00\x00\xfc\xce\xff\xff\xe2\x00\x00\x00\x00\x53\x0e\x20\x8c\x02\x86\x03\x83\x04\x02\xce\x0e\x08\x00\x00\x14\x00\x00\x00\x8c\x0b\x00\x00\xbe\xcf\xff\xff\x61\x00\x00\x00\x00\x44\x0e\x60\x02\x5c\x0e\x08\x1c\x00\x00\x00\xa4\x0b\x00\x00\x07\xd0\xff\xff\x52\x00\x00\x00\x00\x41\x0e\x10\x83\x02\x02\x50\x0e\x08\x00\x00\x00\x00\x00\x00\x2c\x00\x00\x00\xc4\x0b\x00\x00\x39\xd0\xff\xff\x3f\x00\x00\x00\x00\x42\x0e\x10\x8c\x02\x41\x0e\x18\x86\x03\x41\x0e\x20\x83\x04\x77\x0e\x18\x41\x0e\x10\x42\x0e\x08\x00\x00\x00\x00\x00\x00\x00\x24\x00\x00\x00\xf4\x0b\x00\x00\x48\xd0\xff\xff\x89\x00\x00\x00\x00\x51\x8c\x05\x86\x06\x5f\x0e\x40\x83\x07\x8f\x02\x8e\x03\x8d\x04\x02\x58\x0e\x08\x00\x00\x00\x14\x00\x00\x00\x1c\x0c\x00\x00\xb0\xd0\xff\xff\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\xb0\x40\x00\x00\x00\x00\x00\xc8\xb0\x40\x00\x00\x00\x00\x00\xf8\xb0\x40\x00\x00\x00\x00\x00\xc3\xae\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\xaa\xb4\x40\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x36\xb3\x40\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x44\xb3\x40\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x54\xb3\x40\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x60\xb3\x40\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x70\xb3\x40\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x82\xb3\x40\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\xb4\xb8\x40\x00\x00\x00\x00\x00\x09\x00\x00\x00\x00\x00\x00\x00\x59\xb5\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x70\x10\x40\x00\x00\x00\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x68\x9c\x40\x00\x00\x00\x00\x00\xf5\xfe\xff\x6f\x00\x00\x00\x00\x98\x02\x40\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x08\x08\x40\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\xc8\x02\x40\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x5a\x02\x00\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x00\x00\x00\x00\x15\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\xe8\xcf\x60\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x98\x04\x00\x00\x00\x00\x00\x00\x14\x00\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x17\x00\x00\x00\x00\x00\x00\x00\xd8\x0b\x40\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x48\x0b\x40\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x90\x00\x00\x00\x00\x00\x00\x00\x09\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x00\x00\x00\x00\xfe\xff\xff\x6f\x00\x00\x00\x00\xd8\x0a\x40\x00\x00\x00\x00\x00\xff\xff\xff\x6f\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\xf0\xff\xff\x6f\x00\x00\x00\x00\x62\x0a\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\xce\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa6\x10\x40\x00\x00\x00\x00\x00\xb6\x10\x40\x00\x00\x00\x00\x00\xc6\x10\x40\x00\x00\x00\x00\x00\xd6\x10\x40\x00\x00\x00\x00\x00\xe6\x10\x40\x00\x00\x00\x00\x00\xf6\x10\x40\x00\x00\x00\x00\x00\x06\x11\x40\x00\x00\x00\x00\x00\x16\x11\x40\x00\x00\x00\x00\x00\x26\x11\x40\x00\x00\x00\x00\x00\x36\x11\x40\x00\x00\x00\x00\x00\x46\x11\x40\x00\x00\x00\x00\x00\x56\x11\x40\x00\x00\x00\x00\x00\x66\x11\x40\x00\x00\x00\x00\x00\x76\x11\x40\x00\x00\x00\x00\x00\x86\x11\x40\x00\x00\x00\x00\x00\x96\x11\x40\x00\x00\x00\x00\x00\xa6\x11\x40\x00\x00\x00\x00\x00\xb6\x11\x40\x00\x00\x00\x00\x00\xc6\x11\x40\x00\x00\x00\x00\x00\xd6\x11\x40\x00\x00\x00\x00\x00\xe6\x11\x40\x00\x00\x00\x00\x00\xf6\x11\x40\x00\x00\x00\x00\x00\x06\x12\x40\x00\x00\x00\x00\x00\x16\x12\x40\x00\x00\x00\x00\x00\x26\x12\x40\x00\x00\x00\x00\x00\x36\x12\x40\x00\x00\x00\x00\x00\x46\x12\x40\x00\x00\x00\x00\x00\x56\x12\x40\x00\x00\x00\x00\x00\x66\x12\x40\x00\x00\x00\x00\x00\x76\x12\x40\x00\x00\x00\x00\x00\x86\x12\x40\x00\x00\x00\x00\x00\x96\x12\x40\x00\x00\x00\x00\x00\xa6\x12\x40\x00\x00\x00\x00\x00\xb6\x12\x40\x00\x00\x00\x00\x00\xc6\x12\x40\x00\x00\x00\x00\x00\xd6\x12\x40\x00\x00\x00\x00\x00\xe6\x12\x40\x00\x00\x00\x00\x00\xf6\x12\x40\x00\x00\x00\x00\x00\x06\x13\x40\x00\x00\x00\x00\x00\x16\x13\x40\x00\x00\x00\x00\x00\x26\x13\x40\x00\x00\x00\x00\x00\x36\x13\x40\x00\x00\x00\x00\x00\x46\x13\x40\x00\x00\x00\x00\x00\x56\x13\x40\x00\x00\x00\x00\x00\x66\x13\x40\x00\x00\x00\x00\x00\x76\x13\x40\x00\x00\x00\x00\x00\x86\x13\x40\x00\x00\x00\x00\x00\x96\x13\x40\x00\x00\x00\x00\x00\xa6\x13\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\x43\x43\x3a\x20\x28\x55\x62\x75\x6e\x74\x75\x2f\x4c\x69\x6e\x61\x72\x6f\x20\x34\x2e\x36\x2e\x33\x2d\x31\x75\x62\x75\x6e\x74\x75\x35\x29\x20\x34\x2e\x36\x2e\x33\x00\x00\x2e\x73\x79\x6d\x74\x61\x62\x00\x2e\x73\x74\x72\x74\x61\x62\x00\x2e\x73\x68\x73\x74\x72\x74\x61\x62\x00\x2e\x69\x6e\x74\x65\x72\x70\x00\x2e\x6e\x6f\x74\x65\x2e\x41\x42\x49\x2d\x74\x61\x67\x00\x2e\x6e\x6f\x74\x65\x2e\x67\x6e\x75\x2e\x62\x75\x69\x6c\x64\x2d\x69\x64\x00\x2e\x67\x6e\x75\x2e\x68\x61\x73\x68\x00\x2e\x64\x79\x6e\x73\x79\x6d\x00\x2e\x64\x79\x6e\x73\x74\x72\x00\x2e\x67\x6e\x75\x2e\x76\x65\x72\x73\x69\x6f\x6e\x00\x2e\x67\x6e\x75\x2e\x76\x65\x72\x73\x69\x6f\x6e\x5f\x72\x00\x2e\x72\x65\x6c\x61\x2e\x64\x79\x6e\x00\x2e\x72\x65\x6c\x61\x2e\x70\x6c\x74\x00\x2e\x69\x6e\x69\x74\x00\x2e\x74\x65\x78\x74\x00\x2e\x66\x69\x6e\x69\x00\x2e\x72\x6f\x64\x61\x74\x61\x00\x2e\x65\x68\x5f\x66\x72\x61\x6d\x65\x5f\x68\x64\x72\x00\x2e\x65\x68\x5f\x66\x72\x61\x6d\x65\x00\x2e\x63\x74\x6f\x72\x73\x00\x2e\x64\x74\x6f\x72\x73\x00\x2e\x6a\x63\x72\x00\x2e\x64\x61\x74\x61\x2e\x72\x65\x6c\x2e\x72\x6f\x00\x2e\x64\x79\x6e\x61\x6d\x69\x63\x00\x2e\x67\x6f\x74\x00\x2e\x67\x6f\x74\x2e\x70\x6c\x74\x00\x2e\x64\x61\x74\x61\x00\x2e\x62\x73\x73\x00\x2e\x63\x6f\x6d\x6d\x65\x6e\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x38\x02\x40\x00\x00\x00\x00\x00\x38\x02\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x07\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x54\x02\x40\x00\x00\x00\x00\x00\x54\x02\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x31\x00\x00\x00\x07\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x74\x02\x40\x00\x00\x00\x00\x00\x74\x02\x00\x00\x00\x00\x00\x00\x24\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x00\x00\x00\xf6\xff\xff\x6f\x02\x00\x00\x00\x00\x00\x00\x00\x98\x02\x40\x00\x00\x00\x00\x00\x98\x02\x00\x00\x00\x00\x00\x00\x30\x00\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4e\x00\x00\x00\x0b\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\xc8\x02\x40\x00\x00\x00\x00\x00\xc8\x02\x00\x00\x00\x00\x00\x00\x40\x05\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x01\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x00\x00\x00\x00\x56\x00\x00\x00\x03\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x08\x08\x40\x00\x00\x00\x00\x00\x08\x08\x00\x00\x00\x00\x00\x00\x5a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x00\x00\x00\xff\xff\xff\x6f\x02\x00\x00\x00\x00\x00\x00\x00\x62\x0a\x40\x00\x00\x00\x00\x00\x62\x0a\x00\x00\x00\x00\x00\x00\x70\x00\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x6b\x00\x00\x00\xfe\xff\xff\x6f\x02\x00\x00\x00\x00\x00\x00\x00\xd8\x0a\x40\x00\x00\x00\x00\x00\xd8\x0a\x00\x00\x00\x00\x00\x00\x70\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x01\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7a\x00\x00\x00\x04\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x48\x0b\x40\x00\x00\x00\x00\x00\x48\x0b\x00\x00\x00\x00\x00\x00\x90\x00\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x00\x00\x00\x00\x84\x00\x00\x00\x04\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\xd8\x0b\x40\x00\x00\x00\x00\x00\xd8\x0b\x00\x00\x00\x00\x00\x00\x98\x04\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x0c\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x00\x00\x00\x00\x8e\x00\x00\x00\x01\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x70\x10\x40\x00\x00\x00\x00\x00\x70\x10\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x89\x00\x00\x00\x01\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x90\x10\x40\x00\x00\x00\x00\x00\x90\x10\x00\x00\x00\x00\x00\x00\x20\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x94\x00\x00\x00\x01\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\xb0\x13\x40\x00\x00\x00\x00\x00\xb0\x13\x00\x00\x00\x00\x00\x00\xb8\x88\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9a\x00\x00\x00\x01\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x68\x9c\x40\x00\x00\x00\x00\x00\x68\x9c\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa0\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x80\x9c\x40\x00\x00\x00\x00\x00\x80\x9c\x00\x00\x00\x00\x00\x00\x8f\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa8\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x10\xbd\x40\x00\x00\x00\x00\x00\x10\xbd\x00\x00\x00\x00\x00\x00\x3c\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb6\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x50\xbf\x40\x00\x00\x00\x00\x00\x50\xbf\x00\x00\x00\x00\x00\x00\x34\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc0\x00\x00\x00\x01\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x10\xcd\x60\x00\x00\x00\x00\x00\x10\xcd\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc7\x00\x00\x00\x01\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x20\xcd\x60\x00\x00\x00\x00\x00\x20\xcd\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xce\x00\x00\x00\x01\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x30\xcd\x60\x00\x00\x00\x00\x00\x30\xcd\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd3\x00\x00\x00\x01\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x40\xcd\x60\x00\x00\x00\x00\x00\x40\xcd\x00\x00\x00\x00\x00\x00\xe0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe0\x00\x00\x00\x06\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x20\xce\x60\x00\x00\x00\x00\x00\x20\xce\x00\x00\x00\x00\x00\x00\x90\x01\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\xe9\x00\x00\x00\x01\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\xb0\xcf\x60\x00\x00\x00\x00\x00\xb0\xcf\x00\x00\x00\x00\x00\x00\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\xee\x00\x00\x00\x01\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\xe8\xcf\x60\x00\x00\x00\x00\x00\xe8\xcf\x00\x00\x00\x00\x00\x00\xa0\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\xf7\x00\x00\x00\x01\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x88\xd1\x60\x00\x00\x00\x00\x00\x88\xd1\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfd\x00\x00\x00\x08\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x98\xd1\x60\x00\x00\x00\x00\x00\x98\xd1\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x01\x00\x00\x01\x00\x00\x00\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x98\xd1\x00\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x11\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc2\xd1\x00\x00\x00\x00\x00\x00\x0b\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x90\xda\x00\x00\x00\x00\x00\x00\x78\x12\x00\x00\x00\x00\x00\x00\x1e\x00\x00\x00\x4d\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x00\x00\x00\x00\x09\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\xed\x00\x00\x00\x00\x00\x00\xd5\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x01\x00\x38\x02\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x02\x00\x54\x02\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x03\x00\x74\x02\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x04\x00\x98\x02\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x05\x00\xc8\x02\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x06\x00\x08\x08\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x07\x00\x62\x0a\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x08\x00\xd8\x0a\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x09\x00\x48\x0b\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x0a\x00\xd8\x0b\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x0b\x00\x70\x10\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x0c\x00\x90\x10\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x0d\x00\xb0\x13\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x0e\x00\x68\x9c\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x0f\x00\x80\x9c\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x10\x00\x10\xbd\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x11\x00\x50\xbf\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x12\x00\x10\xcd\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x13\x00\x20\xcd\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x14\x00\x30\xcd\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x15\x00\x40\xcd\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x16\x00\x20\xce\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x17\x00\xb0\xcf\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x18\x00\xe8\xcf\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x19\x00\x88\xd1\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x1a\x00\x98\xd1\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x02\x00\x0d\x00\xdc\x13\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11\x00\x00\x00\x04\x00\xf1\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x01\x00\x12\x00\x10\xcd\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x01\x00\x13\x00\x20\xcd\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x38\x00\x00\x00\x01\x00\x14\x00\x30\xcd\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\x00\x00\x00\x02\x00\x0d\x00\x00\x14\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x00\x00\x01\x00\x1a\x00\x98\xd1\x60\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x6a\x00\x00\x00\x01\x00\x1a\x00\xa0\xd1\x60\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x78\x00\x00\x00\x02\x00\x0d\x00\x70\x14\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11\x00\x00\x00\x04\x00\xf1\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x84\x00\x00\x00\x01\x00\x12\x00\x18\xcd\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x91\x00\x00\x00\x01\x00\x11\x00\x80\xcb\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9f\x00\x00\x00\x01\x00\x14\x00\x30\xcd\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x02\x00\x0d\x00\x30\x9c\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc1\x00\x00\x00\x04\x00\xf1\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc9\x00\x00\x00\x02\x00\x0d\x00\xa0\x14\x40\x00\x00\x00\x00\x00\xfe\x02\x00\x00\x00\x00\x00\x00\xd6\x00\x00\x00\x01\x00\x0f\x00\xf6\xad\x40\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\xe5\x00\x00\x00\x01\x00\x0f\x00\xfa\xad\x40\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\xf4\x00\x00\x00\x02\x00\x0d\x00\x31\x18\x40\x00\x00\x00\x00\x00\x30\x03\x00\x00\x00\x00\x00\x00\x07\x01\x00\x00\x04\x00\xf1\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x01\x00\x00\x02\x00\x0d\x00\xf0\x31\x40\x00\x00\x00\x00\x00\xb5\x00\x00\x00\x00\x00\x00\x00\x22\x01\x00\x00\x01\x00\x15\x00\x40\xcd\x60\x00\x00\x00\x00\x00\x28\x00\x00\x00\x00\x00\x00\x00\x32\x01\x00\x00\x01\x00\x0f\x00\x40\xb1\x40\x00\x00\x00\x00\x00\x4d\x00\x00\x00\x00\x00\x00\x00\x45\x01\x00\x00\x04\x00\xf1\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x01\x00\x00\x02\x00\x0d\x00\x40\x4a\x40\x00\x00\x00\x00\x00\x22\x00\x00\x00\x00\x00\x00\x00\x5d\x01\x00\x00\x04\x00\xf1\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x01\x00\x00\x04\x00\xf1\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x00\x00\x04\x00\xf1\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8f\x01\x00\x00\x02\x00\x0d\x00\xd0\x76\x40\x00\x00\x00\x00\x00\x46\x00\x00\x00\x00\x00\x00\x00\x95\x01\x00\x00\x02\x00\x0d\x00\x16\x77\x40\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x9c\x01\x00\x00\x02\x00\x0d\x00\x1e\x77\x40\x00\x00\x00\x00\x00\x0e\x01\x00\x00\x00\x00\x00\x00\xa1\x01\x00\x00\x02\x00\x0d\x00\x2c\x78\x40\x00\x00\x00\x00\x00\x9d\x00\x00\x00\x00\x00\x00\x00\xaa\x01\x00\x00\x01\x00\x15\x00\x80\xcd\x60\x00\x00\x00\x00\x00\xa0\x00\x00\x00\x00\x00\x00\x00\xb3\x01\x00\x00\x04\x00\xf1\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc1\x01\x00\x00\x04\x00\xf1\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcd\x01\x00\x00\x04\x00\xf1\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd8\x01\x00\x00\x02\x00\x0d\x00\xe0\x84\x40\x00\x00\x00\x00\x00\xc6\x01\x00\x00\x00\x00\x00\x00\xe2\x01\x00\x00\x02\x00\x0d\x00\xa6\x86\x40\x00\x00\x00\x00\x00\x21\x00\x00\x00\x00\x00\x00\x00\xec\x01\x00\x00\x04\x00\xf1\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf6\x01\x00\x00\x04\x00\xf1\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07\x02\x00\x00\x04\x00\xf1\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x02\x00\x00\x04\x00\xf1\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x02\x00\x00\x02\x00\x0d\x00\xd8\x98\x40\x00\x00\x00\x00\x00\x55\x00\x00\x00\x00\x00\x00\x00\x3b\x02\x00\x00\x02\x00\x0d\x00\x2d\x99\x40\x00\x00\x00\x00\x00\x8f\x00\x00\x00\x00\x00\x00\x00\x52\x02\x00\x00\x02\x00\x0d\x00\xbc\x99\x40\x00\x00\x00\x00\x00\xe2\x00\x00\x00\x00\x00\x00\x00\x68\x02\x00\x00\x00\x00\x12\x00\x0c\xcd\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x79\x02\x00\x00\x01\x00\x16\x00\x20\xce\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x82\x02\x00\x00\x00\x00\x12\x00\x0c\xcd\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x95\x02\x00\x00\x01\x00\x18\x00\xe8\xcf\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x12\x00\x0d\x00\xd4\x8f\x40\x00\x00\x00\x00\x00\x89\x00\x00\x00\x00\x00\x00\x00\xb7\x02\x00\x00\x12\x00\x0d\x00\x20\x9c\x40\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\xc7\x02\x00\x00\x12\x00\x0d\x00\x95\x59\x40\x00\x00\x00\x00\x00\xc4\x01\x00\x00\x00\x00\x00\x00\xe3\x02\x00\x00\x12\x00\x0d\x00\x60\x7e\x40\x00\x00\x00\x00\x00\x80\x06\x00\x00\x00\x00\x00\x00\xf3\x02\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0f\x03\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x21\x03\x00\x00\x12\x00\x0d\x00\xc9\x78\x40\x00\x00\x00\x00\x00\x5a\x00\x00\x00\x00\x00\x00\x00\x32\x03\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\x03\x00\x00\x12\x00\x0d\x00\x23\x79\x40\x00\x00\x00\x00\x00\x35\x00\x00\x00\x00\x00\x00\x00\x60\x03\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x75\x03\x00\x00\x20\x00\x19\x00\x88\xd1\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x03\x00\x00\x12\x00\x0d\x00\xac\x8a\x40\x00\x00\x00\x00\x00\xbf\x00\x00\x00\x00\x00\x00\x00\x91\x03\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xaa\x03\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc2\x03\x00\x00\x12\x00\x0d\x00\xbd\x42\x40\x00\x00\x00\x00\x00\x4c\x06\x00\x00\x00\x00\x00\x00\xd3\x03\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe6\x03\x00\x00\x10\x00\xf1\xff\x98\xd1\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xed\x03\x00\x00\x12\x00\x0d\x00\xa5\x32\x40\x00\x00\x00\x00\x00\x4b\x00\x00\x00\x00\x00\x00\x00\xfb\x03\x00\x00\x12\x00\x0d\x00\xeb\x3e\x40\x00\x00\x00\x00\x00\x1a\x00\x00\x00\x00\x00\x00\x00\x0b\x04\x00\x00\x12\x00\x0d\x00\x9e\x17\x40\x00\x00\x00\x00\x00\x93\x00\x00\x00\x00\x00\x00\x00\x14\x04\x00\x00\x12\x00\x0d\x00\x15\x6f\x40\x00\x00\x00\x00\x00\x7a\x01\x00\x00\x00\x00\x00\x00\x2b\x04\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x04\x00\x00\x12\x00\x0d\x00\x9e\x9a\x40\x00\x00\x00\x00\x00\x61\x00\x00\x00\x00\x00\x00\x00\x4d\x04\x00\x00\x12\x00\x0e\x00\x68\x9c\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\x04\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6f\x04\x00\x00\x12\x00\x0d\x00\xd0\x35\x40\x00\x00\x00\x00\x00\x1b\x09\x00\x00\x00\x00\x00\x00\x7c\x04\x00\x00\x12\x00\x0d\x00\x79\x62\x40\x00\x00\x00\x00\x00\x0a\x02\x00\x00\x00\x00\x00\x00\x97\x04\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa9\x04\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbd\x04\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd5\x04\x00\x00\x12\x00\x0d\x00\x57\x4c\x40\x00\x00\x00\x00\x00\xa7\x00\x00\x00\x00\x00\x00\x00\xf2\x04\x00\x00\x12\x00\x0d\x00\xc4\x72\x40\x00\x00\x00\x00\x00\x0c\x04\x00\x00\x00\x00\x00\x00\x02\x05\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x05\x00\x00\x12\x00\x0d\x00\x6a\x55\x40\x00\x00\x00\x00\x00\x9d\x02\x00\x00\x00\x00\x00\x00\x33\x05\x00\x00\x12\x00\x0d\x00\x83\x64\x40\x00\x00\x00\x00\x00\x92\x01\x00\x00\x00\x00\x00\x00\x4a\x05\x00\x00\x12\x00\x0d\x00\x62\x4a\x40\x00\x00\x00\x00\x00\xa7\x00\x00\x00\x00\x00\x00\x00\x61\x05\x00\x00\x12\x00\x0d\x00\x07\x58\x40\x00\x00\x00\x00\x00\x8e\x01\x00\x00\x00\x00\x00\x00\x78\x05\x00\x00\x12\x00\x0d\x00\xb5\x5f\x40\x00\x00\x00\x00\x00\xc4\x02\x00\x00\x00\x00\x00\x00\x99\x05\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xad\x05\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc0\x05\x00\x00\x12\x00\x0d\x00\x9e\x5e\x40\x00\x00\x00\x00\x00\x17\x01\x00\x00\x00\x00\x00\x00\xe3\x05\x00\x00\x12\x00\x0d\x00\x70\x8b\x40\x00\x00\x00\x00\x00\x61\x04\x00\x00\x00\x00\x00\x00\xec\x05\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05\x06\x00\x00\x11\x02\x13\x00\x28\xcd\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x06\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x06\x00\x00\x12\x00\x0d\x00\xe9\x41\x40\x00\x00\x00\x00\x00\x5e\x00\x00\x00\x00\x00\x00\x00\x35\x06\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\x06\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x66\x06\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7a\x06\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x92\x06\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa6\x06\x00\x00\x12\x00\x0d\x00\xfe\x4c\x40\x00\x00\x00\x00\x00\x08\x02\x00\x00\x00\x00\x00\x00\xb9\x06\x00\x00\x10\x00\x19\x00\x88\xd1\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc6\x06\x00\x00\x12\x00\x0d\x00\x05\x3f\x40\x00\x00\x00\x00\x00\xe4\x02\x00\x00\x00\x00\x00\x00\xd2\x06\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe9\x06\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfd\x06\x00\x00\x12\x00\x0d\x00\x90\x70\x40\x00\x00\x00\x00\x00\x31\x02\x00\x00\x00\x00\x00\x00\x0a\x07\x00\x00\x12\x00\x0d\x00\xb7\x35\x40\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x1c\x07\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x36\x07\x00\x00\x12\x00\x0d\x00\x51\x9b\x40\x00\x00\x00\x00\x00\x3f\x00\x00\x00\x00\x00\x00\x00\x50\x07\x00\x00\x12\x00\x0d\x00\xc6\x93\x40\x00\x00\x00\x00\x00\x1e\x01\x00\x00\x00\x00\x00\x00\x58\x07\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\x07\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x83\x07\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x97\x07\x00\x00\x11\x02\x19\x00\x90\xd1\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x07\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb7\x07\x00\x00\x11\x00\x0f\x00\x80\x9c\x40\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\xc6\x07\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd8\x07\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xec\x07\x00\x00\x12\x00\x0d\x00\xff\x9a\x40\x00\x00\x00\x00\x00\x52\x00\x00\x00\x00\x00\x00\x00\xff\x07\x00\x00\x12\x00\x0d\x00\xc7\x86\x40\x00\x00\x00\x00\x00\x5a\x03\x00\x00\x00\x00\x00\x00\x08\x08\x00\x00\x12\x00\x0d\x00\x30\x97\x40\x00\x00\x00\x00\x00\xa6\x01\x00\x00\x00\x00\x00\x00\x17\x08\x00\x00\x12\x00\x0d\x00\x58\x79\x40\x00\x00\x00\x00\x00\x23\x01\x00\x00\x00\x00\x00\x00\x23\x08\x00\x00\x12\x00\x0d\x00\x90\x9b\x40\x00\x00\x00\x00\x00\x89\x00\x00\x00\x00\x00\x00\x00\x33\x08\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\x08\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\x08\x00\x00\x12\x00\x0d\x00\x47\x42\x40\x00\x00\x00\x00\x00\x76\x00\x00\x00\x00\x00\x00\x00\x74\x08\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8a\x08\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9e\x08\x00\x00\x10\x00\xf1\xff\xa8\xd1\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa3\x08\x00\x00\x12\x00\x0d\x00\xe4\x94\x40\x00\x00\x00\x00\x00\x4b\x02\x00\x00\x00\x00\x00\x00\xac\x08\x00\x00\x12\x00\x0d\x00\xb0\x13\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb3\x08\x00\x00\x12\x00\x0d\x00\xe5\x51\x40\x00\x00\x00\x00\x00\x36\x01\x00\x00\x00\x00\x00\x00\xcd\x08\x00\x00\x12\x00\x0d\x00\x09\x4b\x40\x00\x00\x00\x00\x00\xa7\x00\x00\x00\x00\x00\x00\x00\xe8\x08\x00\x00\x12\x00\x0d\x00\x7c\x7a\x40\x00\x00\x00\x00\x00\xd5\x03\x00\x00\x00\x00\x00\x00\x00\x09\x00\x00\x12\x00\x0d\x00\x23\x50\x40\x00\x00\x00\x00\x00\xc2\x01\x00\x00\x00\x00\x00\x00\x1d\x09\x00\x00\x12\x00\x0d\x00\x32\x68\x40\x00\x00\x00\x00\x00\xb8\x02\x00\x00\x00\x00\x00\x00\x2d\x09\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x49\x09\x00\x00\x12\x00\x0d\x00\x15\x66\x40\x00\x00\x00\x00\x00\x1d\x02\x00\x00\x00\x00\x00\x00\x68\x09\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x09\x00\x00\x12\x00\x0d\x00\x59\x5b\x40\x00\x00\x00\x00\x00\x45\x03\x00\x00\x00\x00\x00\x00\x9d\x09\x00\x00\x10\x00\xf1\xff\x98\xd1\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa9\x09\x00\x00\x12\x00\x0d\x00\x61\x1b\x40\x00\x00\x00\x00\x00\x8d\x16\x00\x00\x00\x00\x00\x00\xae\x09\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc8\x09\x00\x00\x12\x00\x0d\x00\x90\x6d\x40\x00\x00\x00\x00\x00\x85\x01\x00\x00\x00\x00\x00\x00\xe1\x09\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf3\x09\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05\x0a\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1a\x0a\x00\x00\x12\x00\x0d\x00\x21\x8a\x40\x00\x00\x00\x00\x00\x8b\x00\x00\x00\x00\x00\x00\x00\x23\x0a\x00\x00\x12\x00\x0d\x00\xb0\x4b\x40\x00\x00\x00\x00\x00\xa7\x00\x00\x00\x00\x00\x00\x00\x3c\x0a\x00\x00\x12\x00\x0d\x00\xf0\x32\x40\x00\x00\x00\x00\x00\xc7\x02\x00\x00\x00\x00\x00\x00\x4f\x0a\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x63\x0a\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x77\x0a\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x90\x0a\x00\x00\x12\x00\x0d\x00\x51\x6c\x40\x00\x00\x00\x00\x00\x3f\x01\x00\x00\x00\x00\x00\x00\xa3\x0a\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb8\x0a\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcd\x0a\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe8\x0a\x00\x00\x12\x00\x0d\x00\x5d\x90\x40\x00\x00\x00\x00\x00\x69\x03\x00\x00\x00\x00\x00\x00\xf2\x0a\x00\x00\x12\x00\x0d\x00\x1b\x53\x40\x00\x00\x00\x00\x00\x4f\x02\x00\x00\x00\x00\x00\x00\x06\x0b\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x0b\x00\x00\x12\x00\x0d\x00\x06\x4f\x40\x00\x00\x00\x00\x00\x1d\x01\x00\x00\x00\x00\x00\x00\x3a\x0b\x00\x00\x12\x00\x0d\x00\xea\x6a\x40\x00\x00\x00\x00\x00\x67\x01\x00\x00\x00\x00\x00\x00\x4d\x0b\x00\x00\x12\x00\x0b\x00\x70\x10\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\x0b\x00\x00\x12\x00\x0d\x00\x09\x49\x40\x00\x00\x00\x00\x00\x30\x01\x00\x00\x00\x00\x00\x00\x66\x0b\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7a\x0b\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x93\x0b\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xad\x0b\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc1\x0b\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x63\x61\x6c\x6c\x5f\x67\x6d\x6f\x6e\x5f\x73\x74\x61\x72\x74\x00\x63\x72\x74\x73\x74\x75\x66\x66\x2e\x63\x00\x5f\x5f\x43\x54\x4f\x52\x5f\x4c\x49\x53\x54\x5f\x5f\x00\x5f\x5f\x44\x54\x4f\x52\x5f\x4c\x49\x53\x54\x5f\x5f\x00\x5f\x5f\x4a\x43\x52\x5f\x4c\x49\x53\x54\x5f\x5f\x00\x5f\x5f\x64\x6f\x5f\x67\x6c\x6f\x62\x61\x6c\x5f\x64\x74\x6f\x72\x73\x5f\x61\x75\x78\x00\x63\x6f\x6d\x70\x6c\x65\x74\x65\x64\x2e\x36\x35\x33\x31\x00\x64\x74\x6f\x72\x5f\x69\x64\x78\x2e\x36\x35\x33\x33\x00\x66\x72\x61\x6d\x65\x5f\x64\x75\x6d\x6d\x79\x00\x5f\x5f\x43\x54\x4f\x52\x5f\x45\x4e\x44\x5f\x5f\x00\x5f\x5f\x46\x52\x41\x4d\x45\x5f\x45\x4e\x44\x5f\x5f\x00\x5f\x5f\x4a\x43\x52\x5f\x45\x4e\x44\x5f\x5f\x00\x5f\x5f\x64\x6f\x5f\x67\x6c\x6f\x62\x61\x6c\x5f\x63\x74\x6f\x72\x73\x5f\x61\x75\x78\x00\x75\x70\x6e\x70\x63\x2e\x63\x00\x44\x69\x73\x70\x6c\x61\x79\x49\x6e\x66\x6f\x73\x00\x70\x72\x6f\x74\x6f\x5f\x74\x63\x70\x2e\x33\x32\x38\x30\x00\x70\x72\x6f\x74\x6f\x5f\x75\x64\x70\x2e\x33\x32\x38\x31\x00\x53\x65\x74\x52\x65\x64\x69\x72\x65\x63\x74\x41\x6e\x64\x54\x65\x73\x74\x00\x6d\x69\x6e\x69\x75\x70\x6e\x70\x63\x2e\x63\x00\x75\x72\x6c\x5f\x63\x70\x79\x5f\x6f\x72\x5f\x63\x61\x74\x00\x64\x65\x76\x69\x63\x65\x4c\x69\x73\x74\x2e\x34\x38\x31\x33\x00\x4d\x53\x65\x61\x72\x63\x68\x4d\x73\x67\x46\x6d\x74\x2e\x34\x38\x31\x32\x00\x75\x70\x6e\x70\x63\x6f\x6d\x6d\x61\x6e\x64\x73\x2e\x63\x00\x6d\x79\x5f\x61\x74\x6f\x75\x69\x00\x75\x70\x6e\x70\x65\x72\x72\x6f\x72\x73\x2e\x63\x00\x63\x6f\x6e\x6e\x65\x63\x74\x68\x6f\x73\x74\x70\x6f\x72\x74\x2e\x63\x00\x70\x6f\x72\x74\x6c\x69\x73\x74\x69\x6e\x67\x70\x61\x72\x73\x65\x2e\x63\x00\x61\x74\x6f\x75\x69\x00\x65\x6e\x64\x65\x6c\x74\x00\x64\x61\x74\x61\x00\x73\x74\x61\x72\x74\x65\x6c\x74\x00\x65\x6c\x65\x6d\x65\x6e\x74\x73\x00\x72\x65\x63\x65\x69\x76\x65\x64\x61\x74\x61\x2e\x63\x00\x6d\x69\x6e\x69\x73\x73\x64\x70\x63\x2e\x63\x00\x6d\x69\x6e\x69\x77\x67\x65\x74\x2e\x63\x00\x6d\x69\x6e\x69\x77\x67\x65\x74\x33\x00\x6d\x69\x6e\x69\x77\x67\x65\x74\x32\x00\x6d\x69\x6e\x69\x78\x6d\x6c\x2e\x63\x00\x69\x67\x64\x5f\x64\x65\x73\x63\x5f\x70\x61\x72\x73\x65\x2e\x63\x00\x6d\x69\x6e\x69\x73\x6f\x61\x70\x2e\x63\x00\x75\x70\x6e\x70\x72\x65\x70\x6c\x79\x70\x61\x72\x73\x65\x2e\x63\x00\x4e\x61\x6d\x65\x56\x61\x6c\x75\x65\x50\x61\x72\x73\x65\x72\x53\x74\x61\x72\x74\x45\x6c\x74\x00\x4e\x61\x6d\x65\x56\x61\x6c\x75\x65\x50\x61\x72\x73\x65\x72\x47\x65\x74\x44\x61\x74\x61\x00\x4e\x61\x6d\x65\x56\x61\x6c\x75\x65\x50\x61\x72\x73\x65\x72\x45\x6e\x64\x45\x6c\x74\x00\x5f\x5f\x69\x6e\x69\x74\x5f\x61\x72\x72\x61\x79\x5f\x65\x6e\x64\x00\x5f\x44\x59\x4e\x41\x4d\x49\x43\x00\x5f\x5f\x69\x6e\x69\x74\x5f\x61\x72\x72\x61\x79\x5f\x73\x74\x61\x72\x74\x00\x5f\x47\x4c\x4f\x42\x41\x4c\x5f\x4f\x46\x46\x53\x45\x54\x5f\x54\x41\x42\x4c\x45\x5f\x00\x49\x47\x44\x73\x74\x61\x72\x74\x65\x6c\x74\x00\x5f\x5f\x6c\x69\x62\x63\x5f\x63\x73\x75\x5f\x66\x69\x6e\x69\x00\x55\x50\x4e\x50\x5f\x44\x65\x6c\x65\x74\x65\x50\x6f\x72\x74\x4d\x61\x70\x70\x69\x6e\x67\x52\x61\x6e\x67\x65\x00\x67\x65\x74\x48\x54\x54\x50\x52\x65\x73\x70\x6f\x6e\x73\x65\x00\x5f\x5f\x73\x6e\x70\x72\x69\x6e\x74\x66\x5f\x63\x68\x6b\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x33\x2e\x34\x00\x66\x72\x65\x65\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x32\x2e\x35\x00\x50\x61\x72\x73\x65\x50\x6f\x72\x74\x4c\x69\x73\x74\x69\x6e\x67\x00\x5f\x5f\x65\x72\x72\x6e\x6f\x5f\x6c\x6f\x63\x61\x74\x69\x6f\x6e\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x32\x2e\x35\x00\x46\x72\x65\x65\x50\x6f\x72\x74\x4c\x69\x73\x74\x69\x6e\x67\x00\x73\x74\x72\x6e\x63\x70\x79\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x32\x2e\x35\x00\x64\x61\x74\x61\x5f\x73\x74\x61\x72\x74\x00\x6d\x69\x6e\x69\x77\x67\x65\x74\x5f\x67\x65\x74\x61\x64\x64\x72\x00\x69\x6e\x36\x61\x64\x64\x72\x5f\x61\x6e\x79\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x32\x2e\x35\x00\x73\x65\x74\x73\x6f\x63\x6b\x6f\x70\x74\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x32\x2e\x35\x00\x55\x50\x4e\x50\x5f\x47\x65\x74\x56\x61\x6c\x69\x64\x49\x47\x44\x00\x77\x72\x69\x74\x65\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x32\x2e\x35\x00\x5f\x65\x64\x61\x74\x61\x00\x70\x61\x72\x73\x65\x72\x6f\x6f\x74\x64\x65\x73\x63\x00\x66\x72\x65\x65\x55\x50\x4e\x50\x44\x65\x76\x6c\x69\x73\x74\x00\x70\x72\x6f\x74\x6f\x66\x69\x78\x00\x55\x50\x4e\x50\x5f\x47\x65\x74\x50\x69\x6e\x68\x6f\x6c\x65\x50\x61\x63\x6b\x65\x74\x73\x00\x63\x74\x69\x6d\x65\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x32\x2e\x35\x00\x50\x61\x72\x73\x65\x4e\x61\x6d\x65\x56\x61\x6c\x75\x65\x00\x5f\x66\x69\x6e\x69\x00\x5f\x5f\x73\x74\x61\x63\x6b\x5f\x63\x68\x6b\x5f\x66\x61\x69\x6c\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x34\x00\x75\x70\x6e\x70\x44\x69\x73\x63\x6f\x76\x65\x72\x00\x55\x50\x4e\x50\x5f\x47\x65\x74\x4c\x69\x73\x74\x4f\x66\x50\x6f\x72\x74\x4d\x61\x70\x70\x69\x6e\x67\x73\x00\x73\x65\x6e\x64\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x32\x2e\x35\x00\x73\x74\x72\x63\x68\x72\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x32\x2e\x35\x00\x5f\x5f\x66\x64\x65\x6c\x74\x5f\x63\x68\x6b\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x31\x35\x00\x55\x50\x4e\x50\x5f\x47\x65\x74\x54\x6f\x74\x61\x6c\x50\x61\x63\x6b\x65\x74\x73\x52\x65\x63\x65\x69\x76\x65\x64\x00\x63\x6f\x6e\x6e\x65\x63\x74\x68\x6f\x73\x74\x70\x6f\x72\x74\x00\x67\x61\x69\x5f\x73\x74\x72\x65\x72\x72\x6f\x72\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x32\x2e\x35\x00\x55\x50\x4e\x50\x5f\x41\x64\x64\x41\x6e\x79\x50\x6f\x72\x74\x4d\x61\x70\x70\x69\x6e\x67\x00\x55\x50\x4e\x50\x5f\x47\x65\x74\x46\x69\x72\x65\x77\x61\x6c\x6c\x53\x74\x61\x74\x75\x73\x00\x55\x50\x4e\x50\x5f\x47\x65\x74\x54\x6f\x74\x61\x6c\x42\x79\x74\x65\x73\x53\x65\x6e\x74\x00\x55\x50\x4e\x50\x5f\x44\x65\x6c\x65\x74\x65\x50\x6f\x72\x74\x4d\x61\x70\x70\x69\x6e\x67\x00\x55\x50\x4e\x50\x5f\x47\x65\x74\x53\x70\x65\x63\x69\x66\x69\x63\x50\x6f\x72\x74\x4d\x61\x70\x70\x69\x6e\x67\x45\x6e\x74\x72\x79\x00\x73\x65\x6e\x64\x74\x6f\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x32\x2e\x35\x00\x63\x6c\x6f\x73\x65\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x32\x2e\x35\x00\x55\x50\x4e\x50\x5f\x47\x65\x74\x50\x6f\x72\x74\x4d\x61\x70\x70\x69\x6e\x67\x4e\x75\x6d\x62\x65\x72\x4f\x66\x45\x6e\x74\x72\x69\x65\x73\x00\x70\x61\x72\x73\x65\x78\x6d\x6c\x00\x67\x65\x74\x6e\x61\x6d\x65\x69\x6e\x66\x6f\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x32\x2e\x35\x00\x5f\x5f\x44\x54\x4f\x52\x5f\x45\x4e\x44\x5f\x5f\x00\x5f\x5f\x73\x74\x72\x64\x75\x70\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x32\x2e\x35\x00\x46\x72\x65\x65\x55\x50\x4e\x50\x55\x72\x6c\x73\x00\x72\x65\x61\x64\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x32\x2e\x35\x00\x5f\x5f\x6c\x69\x62\x63\x5f\x73\x74\x61\x72\x74\x5f\x6d\x61\x69\x6e\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x32\x2e\x35\x00\x6d\x65\x6d\x63\x6d\x70\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x32\x2e\x35\x00\x67\x65\x74\x73\x6f\x63\x6b\x6f\x70\x74\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x32\x2e\x35\x00\x63\x61\x6c\x6c\x6f\x63\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x32\x2e\x35\x00\x55\x50\x4e\x50\x5f\x47\x65\x74\x53\x74\x61\x74\x75\x73\x49\x6e\x66\x6f\x00\x5f\x5f\x64\x61\x74\x61\x5f\x73\x74\x61\x72\x74\x00\x47\x65\x74\x55\x50\x4e\x50\x55\x72\x6c\x73\x00\x69\x6e\x65\x74\x5f\x61\x64\x64\x72\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x32\x2e\x35\x00\x73\x74\x72\x63\x6d\x70\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x32\x2e\x35\x00\x73\x74\x72\x75\x70\x6e\x70\x65\x72\x72\x6f\x72\x00\x73\x69\x6d\x70\x6c\x65\x55\x50\x6e\x50\x63\x6f\x6d\x6d\x61\x6e\x64\x00\x5f\x5f\x6d\x65\x6d\x63\x70\x79\x5f\x63\x68\x6b\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x33\x2e\x34\x00\x47\x65\x74\x56\x61\x6c\x75\x65\x46\x72\x6f\x6d\x4e\x61\x6d\x65\x56\x61\x6c\x75\x65\x4c\x69\x73\x74\x00\x49\x47\x44\x64\x61\x74\x61\x00\x5f\x5f\x67\x6d\x6f\x6e\x5f\x73\x74\x61\x72\x74\x5f\x5f\x00\x69\x66\x5f\x6e\x61\x6d\x65\x74\x6f\x69\x6e\x64\x65\x78\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x32\x2e\x35\x00\x73\x74\x72\x74\x6f\x6c\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x32\x2e\x35\x00\x5f\x5f\x64\x73\x6f\x5f\x68\x61\x6e\x64\x6c\x65\x00\x6d\x65\x6d\x63\x70\x79\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x31\x34\x00\x5f\x49\x4f\x5f\x73\x74\x64\x69\x6e\x5f\x75\x73\x65\x64\x00\x74\x69\x6d\x65\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x32\x2e\x35\x00\x73\x65\x6c\x65\x63\x74\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x32\x2e\x35\x00\x43\x6c\x65\x61\x72\x4e\x61\x6d\x65\x56\x61\x6c\x75\x65\x4c\x69\x73\x74\x00\x70\x61\x72\x73\x65\x55\x52\x4c\x00\x73\x6f\x61\x70\x50\x6f\x73\x74\x53\x75\x62\x6d\x69\x74\x00\x72\x65\x63\x65\x69\x76\x65\x64\x61\x74\x61\x00\x5f\x5f\x6c\x69\x62\x63\x5f\x63\x73\x75\x5f\x69\x6e\x69\x74\x00\x6d\x61\x6c\x6c\x6f\x63\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x32\x2e\x35\x00\x73\x74\x72\x6e\x63\x61\x73\x65\x63\x6d\x70\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x32\x2e\x35\x00\x55\x50\x4e\x50\x49\x47\x44\x5f\x49\x73\x43\x6f\x6e\x6e\x65\x63\x74\x65\x64\x00\x72\x65\x63\x76\x66\x72\x6f\x6d\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x32\x2e\x35\x00\x73\x73\x63\x61\x6e\x66\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x32\x2e\x35\x00\x5f\x65\x6e\x64\x00\x70\x72\x69\x6e\x74\x49\x47\x44\x00\x5f\x73\x74\x61\x72\x74\x00\x55\x50\x4e\x50\x5f\x47\x65\x74\x45\x78\x74\x65\x72\x6e\x61\x6c\x49\x50\x41\x64\x64\x72\x65\x73\x73\x00\x55\x50\x4e\x50\x5f\x47\x65\x74\x54\x6f\x74\x61\x6c\x42\x79\x74\x65\x73\x52\x65\x63\x65\x69\x76\x65\x64\x00\x67\x65\x74\x44\x65\x76\x69\x63\x65\x73\x46\x72\x6f\x6d\x4d\x69\x6e\x69\x53\x53\x44\x50\x44\x00\x55\x50\x4e\x50\x5f\x47\x65\x74\x4c\x69\x6e\x6b\x4c\x61\x79\x65\x72\x4d\x61\x78\x42\x69\x74\x52\x61\x74\x65\x73\x00\x55\x50\x4e\x50\x5f\x41\x64\x64\x50\x69\x6e\x68\x6f\x6c\x65\x00\x69\x66\x5f\x69\x6e\x64\x65\x78\x74\x6f\x6e\x61\x6d\x65\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x32\x2e\x35\x00\x55\x50\x4e\x50\x5f\x47\x65\x74\x4f\x75\x74\x62\x6f\x75\x6e\x64\x50\x69\x6e\x68\x6f\x6c\x65\x54\x69\x6d\x65\x6f\x75\x74\x00\x72\x65\x61\x6c\x6c\x6f\x63\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x32\x2e\x35\x00\x55\x50\x4e\x50\x5f\x47\x65\x74\x47\x65\x6e\x65\x72\x69\x63\x50\x6f\x72\x74\x4d\x61\x70\x70\x69\x6e\x67\x45\x6e\x74\x72\x79\x00\x5f\x5f\x62\x73\x73\x5f\x73\x74\x61\x72\x74\x00\x6d\x61\x69\x6e\x00\x5f\x5f\x70\x72\x69\x6e\x74\x66\x5f\x63\x68\x6b\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x33\x2e\x34\x00\x55\x50\x4e\x50\x5f\x43\x68\x65\x63\x6b\x50\x69\x6e\x68\x6f\x6c\x65\x57\x6f\x72\x6b\x69\x6e\x67\x00\x70\x6f\x6c\x6c\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x32\x2e\x35\x00\x62\x69\x6e\x64\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x32\x2e\x35\x00\x6d\x65\x6d\x6d\x6f\x76\x65\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x32\x2e\x35\x00\x6d\x69\x6e\x69\x77\x67\x65\x74\x00\x55\x50\x4e\x50\x5f\x47\x65\x74\x54\x6f\x74\x61\x6c\x50\x61\x63\x6b\x65\x74\x73\x53\x65\x6e\x74\x00\x73\x69\x6d\x70\x6c\x65\x55\x50\x6e\x50\x63\x6f\x6d\x6d\x61\x6e\x64\x32\x00\x70\x65\x72\x72\x6f\x72\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x32\x2e\x35\x00\x5f\x4a\x76\x5f\x52\x65\x67\x69\x73\x74\x65\x72\x43\x6c\x61\x73\x73\x65\x73\x00\x67\x65\x74\x73\x6f\x63\x6b\x6e\x61\x6d\x65\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x32\x2e\x35\x00\x55\x50\x4e\x50\x5f\x44\x65\x6c\x65\x74\x65\x50\x69\x6e\x68\x6f\x6c\x65\x00\x73\x74\x72\x74\x6f\x75\x6c\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x32\x2e\x35\x00\x63\x6f\x6e\x6e\x65\x63\x74\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x32\x2e\x35\x00\x5f\x5f\x66\x70\x72\x69\x6e\x74\x66\x5f\x63\x68\x6b\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x33\x2e\x34\x00\x49\x47\x44\x65\x6e\x64\x65\x6c\x74\x00\x55\x50\x4e\x50\x5f\x41\x64\x64\x50\x6f\x72\x74\x4d\x61\x70\x70\x69\x6e\x67\x00\x67\x65\x74\x61\x64\x64\x72\x69\x6e\x66\x6f\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x32\x2e\x35\x00\x55\x50\x4e\x50\x5f\x47\x65\x74\x43\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e\x54\x79\x70\x65\x49\x6e\x66\x6f\x00\x55\x50\x4e\x50\x5f\x55\x70\x64\x61\x74\x65\x50\x69\x6e\x68\x6f\x6c\x65\x00\x5f\x69\x6e\x69\x74\x00\x55\x50\x4e\x50\x5f\x47\x65\x74\x49\x47\x44\x46\x72\x6f\x6d\x55\x72\x6c\x00\x73\x74\x72\x73\x74\x72\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x32\x2e\x35\x00\x5f\x5f\x63\x74\x79\x70\x65\x5f\x62\x5f\x6c\x6f\x63\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x33\x00\x66\x72\x65\x65\x61\x64\x64\x72\x69\x6e\x66\x6f\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x32\x2e\x35\x00\x73\x74\x64\x65\x72\x72\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x32\x2e\x35\x00\x73\x6f\x63\x6b\x65\x74\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x32\x2e\x35\x00" - -func upnpc() ([]byte, error) { - return bindata_read( - _upnpc, - "upnpc", - ) -} - - -// Asset loads and returns the asset for the given name. -// It returns an error if the asset could not be found or -// could not be loaded. -func Asset(name string) ([]byte, error) { - if f, ok := _bindata[name]; ok { - return f() - } - return nil, fmt.Errorf("Asset %s not found", name) -} - -// _bindata is a table, holding each asset generator, mapped to its name. -var _bindata = map[string] func() ([]byte, error) { - "upnpc": upnpc, - -} diff --git a/src/github.com/getlantern/go-igdman/igdman/upnpc_linux_arm.go b/src/github.com/getlantern/go-igdman/igdman/upnpc_linux_arm.go deleted file mode 100644 index 128ec382d6..0000000000 --- a/src/github.com/getlantern/go-igdman/igdman/upnpc_linux_arm.go +++ /dev/null @@ -1,96 +0,0 @@ -package igdman - -import ( - "fmt" - "reflect" - "strings" - "unsafe" -) - -func bindata_read(data, name string) ([]byte, error) { - var empty [0]byte - sx := (*reflect.StringHeader)(unsafe.Pointer(&data)) - b := empty[:] - bx := (*reflect.SliceHeader)(unsafe.Pointer(&b)) - bx.Data = sx.Data - bx.Len = len(data) - bx.Cap = bx.Len - return b, nil -} - -var _upnpc = "\x7f\x45\x4c\x46\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x28\x00\x01\x00\x00\x00\x0c\x90\x00\x00\x34\x00\x00\x00\x5c\xad\x00\x00\x02\x00\x00\x05\x34\x00\x20\x00\x08\x00\x28\x00\x20\x00\x1d\x00\x01\x00\x00\x70\x78\xa9\x00\x00\x78\x29\x01\x00\x78\x29\x01\x00\x08\x00\x00\x00\x08\x00\x00\x00\x04\x00\x00\x00\x04\x00\x00\x00\x06\x00\x00\x00\x34\x00\x00\x00\x34\x80\x00\x00\x34\x80\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x05\x00\x00\x00\x04\x00\x00\x00\x03\x00\x00\x00\x34\x01\x00\x00\x34\x81\x00\x00\x34\x81\x00\x00\x19\x00\x00\x00\x19\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x80\x00\x00\x84\xa9\x00\x00\x84\xa9\x00\x00\x05\x00\x00\x00\x00\x80\x00\x00\x01\x00\x00\x00\x84\xa9\x00\x00\x84\xa9\x01\x00\x84\xa9\x01\x00\x70\x02\x00\x00\x74\x02\x00\x00\x06\x00\x00\x00\x00\x80\x00\x00\x02\x00\x00\x00\xfc\xa9\x00\x00\xfc\xa9\x01\x00\xfc\xa9\x01\x00\xf0\x00\x00\x00\xf0\x00\x00\x00\x06\x00\x00\x00\x04\x00\x00\x00\x04\x00\x00\x00\x50\x01\x00\x00\x50\x81\x00\x00\x50\x81\x00\x00\x44\x00\x00\x00\x44\x00\x00\x00\x04\x00\x00\x00\x04\x00\x00\x00\x51\xe5\x74\x64\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x04\x00\x00\x00\x2f\x6c\x69\x62\x2f\x6c\x64\x2d\x6c\x69\x6e\x75\x78\x2d\x61\x72\x6d\x68\x66\x2e\x73\x6f\x2e\x33\x00\x00\x00\x00\x04\x00\x00\x00\x10\x00\x00\x00\x01\x00\x00\x00\x47\x4e\x55\x00\x00\x00\x00\x00\x02\x00\x00\x00\x06\x00\x00\x00\x1a\x00\x00\x00\x04\x00\x00\x00\x14\x00\x00\x00\x03\x00\x00\x00\x47\x4e\x55\x00\x37\xb5\x2d\x3f\x13\x3a\xee\x0a\xcb\xe3\xc7\x3f\x08\x3e\xa8\x16\xcb\xc9\x3d\x50\x25\x00\x00\x00\x3d\x00\x00\x00\x2f\x00\x00\x00\x06\x00\x00\x00\x14\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x01\x00\x00\x00\x23\x00\x00\x00\x03\x00\x00\x00\x05\x00\x00\x00\x26\x00\x00\x00\x0c\x00\x00\x00\x18\x00\x00\x00\x1d\x00\x00\x00\x0b\x00\x00\x00\x09\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x39\x00\x00\x00\x12\x00\x00\x00\x1f\x00\x00\x00\x36\x00\x00\x00\x35\x00\x00\x00\x0e\x00\x00\x00\x25\x00\x00\x00\x08\x00\x00\x00\x17\x00\x00\x00\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x00\x00\x00\x00\x24\x00\x00\x00\x20\x00\x00\x00\x1c\x00\x00\x00\x22\x00\x00\x00\x00\x00\x00\x00\x21\x00\x00\x00\x15\x00\x00\x00\x32\x00\x00\x00\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x28\x00\x00\x00\x00\x00\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x3b\x00\x00\x00\x33\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x30\x00\x00\x00\x1a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x38\x00\x00\x00\x00\x00\x00\x00\x31\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x34\x00\x00\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x27\x00\x00\x00\x00\x00\x00\x00\x1e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x37\x00\x00\x00\x0f\x00\x00\x00\x16\x00\x00\x00\x00\x00\x00\x00\x25\x00\x00\x00\x04\x00\x00\x00\x10\x00\x00\x00\x09\x00\x00\x00\x20\x48\x64\x01\x85\x40\x11\x93\x00\xa8\x02\x48\x00\x02\x35\x32\x80\x00\x10\x11\x00\x00\x80\x10\xa0\x10\x00\x00\x04\xa9\x48\x82\x02\x80\x82\x28\x13\xc4\x48\x75\x42\xa0\x81\x04\x50\x00\x40\x20\x01\x80\x01\x24\x00\x05\x20\x49\x60\xd0\x12\x80\x04\x10\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x0a\x00\x00\x00\x0b\x00\x00\x00\x0c\x00\x00\x00\x0d\x00\x00\x00\x0f\x00\x00\x00\x15\x00\x00\x00\x16\x00\x00\x00\x17\x00\x00\x00\x19\x00\x00\x00\x1a\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x24\x00\x00\x00\x27\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x2d\x00\x00\x00\x00\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x35\x00\x00\x00\x37\x00\x00\x00\x39\x00\x00\x00\x3d\xad\x39\x0d\x7d\x60\x9c\x7c\x00\x23\xf9\xa4\x04\x6c\xb2\xcd\x4e\xdb\x9d\x7c\xcf\x4d\x76\xd3\x2f\xbd\xae\xb1\xa9\xbd\xf0\xbb\x37\x15\x15\x65\xb8\x2b\x6b\x15\x87\xf0\x96\x7c\x74\x12\xec\xa7\x40\x4d\x9d\x7c\x94\x78\x9e\x7c\xc6\x0e\xe0\x3d\xe2\x99\x94\x7c\xcf\x29\x66\x52\x2f\x4e\x3d\xf6\xff\xec\x84\x14\xba\x95\x93\x1c\x8f\x41\xb1\xb4\x3f\xf9\xff\xbc\xc4\xe3\x80\x1b\x20\x31\xe7\x4b\x7d\xed\x11\x0f\x5b\x9a\x3b\x0f\x9c\xbb\x93\x1c\xbd\xee\x90\xca\xe9\x44\x6d\x77\x23\xbe\x0f\xaf\x72\xfa\x81\x1b\x2f\x03\x31\x1c\x4e\x62\x0a\x76\x30\xb8\x82\x0d\xcd\xcd\x84\x7c\xcc\x8a\x60\xf0\x90\x75\x82\x0d\x38\x40\x0c\xaf\x75\x12\xeb\x15\x38\xe8\x44\x10\x17\xe3\x3f\x0f\x24\x75\x82\x0d\x12\x16\x01\xa9\xcd\x3f\x0c\xaf\x51\xb5\xa8\x10\x5f\x96\x93\x1c\xed\xde\x93\x1c\x18\xdc\x77\x89\x67\x49\x49\x22\x56\xdb\x93\x1c\xf9\x2c\x58\xbe\xf2\x16\xe6\xf5\x11\x7b\x9c\x7c\x1a\x9f\xd6\xbd\x68\xf2\x3d\xff\x16\xea\x76\xfe\x33\x39\xc0\xa1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11\x00\x00\x00\x30\x01\x00\x00\x98\x8e\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x01\x01\x00\x00\x68\x8e\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\xc8\x00\x00\x00\xf8\x8e\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x36\x00\x00\x00\x28\x8f\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\xa9\x00\x00\x00\xf4\x8f\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x56\x00\x00\x00\x00\x90\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x0c\x01\x00\x00\xb8\x8f\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x5b\x01\x00\x00\x04\x8f\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\xa1\x01\x00\x00\x88\x8f\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x9a\x01\x00\x00\xc0\x8d\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\xeb\x01\x00\x00\xf0\x8d\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x25\x01\x00\x00\xb4\x8d\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\xde\x00\x00\x00\xcc\x8d\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x07\x01\x00\x00\x14\x8e\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x86\x00\x00\x00\x50\x8e\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\xd9\x00\x00\x00\x34\x8f\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\xb4\x01\x00\x00\x94\x8f\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\xd0\x01\x00\x00\xa4\x8e\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x3f\x00\x00\x00\x5c\x8e\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x92\x01\x00\x00\xe0\x8e\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x67\x01\x00\x00\xc4\x8f\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x99\x01\x00\x00\xec\x8e\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x7f\x00\x00\x00\x2c\x8e\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x46\x00\x00\x00\x1c\x8f\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x8e\x00\x00\x00\xdc\x8f\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x8c\x01\x00\x00\xe8\x8f\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\xa2\x00\x00\x00\xd4\x8e\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x77\x00\x00\x00\x4c\x8f\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\xf6\x00\x00\x00\x80\x8e\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x1d\x01\x00\x00\xc8\x8e\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\xad\x01\x00\x00\x70\x8f\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x1a\x00\x00\x00\xac\x8f\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x76\x01\x00\x00\xd8\x8d\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\xba\x00\x00\x00\x40\x8f\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\xae\x00\x00\x00\xa0\x8f\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\xf0\x01\x00\x00\x40\x01\x01\x00\x64\x00\x00\x00\x12\x00\x0e\x00\x16\x01\x00\x00\x08\x8e\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x6a\x00\x00\x00\x58\x8f\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x04\x02\x00\x00\xa4\x01\x01\x00\x20\x01\x00\x00\x12\x00\x0e\x00\x37\x01\x00\x00\x90\x8d\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x06\x01\x00\x00\x38\x8e\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\xe3\x00\x00\x00\x20\x8e\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\xea\x00\x00\x00\x7c\x8f\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x2e\x00\x00\x00\xd0\x8f\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x86\x01\x00\x00\x64\x8f\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\xc9\x01\x00\x00\x9c\x8d\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x94\x00\x00\x00\xa8\x8d\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x21\x00\x00\x00\xfc\x8d\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x3d\x01\x00\x00\xbc\x8e\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\xc1\x00\x00\x00\x84\x8d\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\xe2\x01\x00\x00\x10\x8f\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x9b\x00\x00\x00\x78\x8d\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x72\x00\x00\x00\x8c\x8e\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\xc1\x01\x00\x00\xe4\x8d\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x4b\x01\x00\x00\x44\x8e\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x85\x01\x00\x00\x74\x8e\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\xfc\x01\x00\x00\xc4\x02\x01\x00\x08\x01\x00\x00\x12\x00\x0e\x00\x00\x5f\x5f\x67\x6d\x6f\x6e\x5f\x73\x74\x61\x72\x74\x5f\x5f\x00\x6c\x69\x62\x63\x2e\x73\x6f\x2e\x36\x00\x73\x6f\x63\x6b\x65\x74\x00\x67\x61\x69\x5f\x73\x74\x72\x65\x72\x72\x6f\x72\x00\x73\x74\x72\x6e\x63\x6d\x70\x00\x5f\x5f\x73\x74\x72\x64\x75\x70\x00\x70\x65\x72\x72\x6f\x72\x00\x5f\x5f\x69\x73\x6f\x63\x39\x39\x5f\x73\x73\x63\x61\x6e\x66\x00\x63\x6f\x6e\x6e\x65\x63\x74\x00\x69\x6e\x36\x61\x64\x64\x72\x5f\x61\x6e\x79\x00\x73\x74\x72\x6e\x63\x70\x79\x00\x70\x75\x74\x73\x00\x70\x75\x74\x63\x68\x61\x72\x00\x73\x65\x6c\x65\x63\x74\x00\x72\x65\x61\x6c\x6c\x6f\x63\x00\x61\x62\x6f\x72\x74\x00\x73\x74\x72\x74\x6f\x6c\x00\x63\x61\x6c\x6c\x6f\x63\x00\x73\x74\x72\x6c\x65\x6e\x00\x73\x65\x6e\x64\x00\x67\x65\x74\x61\x64\x64\x72\x69\x6e\x66\x6f\x00\x6d\x65\x6d\x73\x65\x74\x00\x73\x74\x72\x73\x74\x72\x00\x5f\x5f\x65\x72\x72\x6e\x6f\x5f\x6c\x6f\x63\x61\x74\x69\x6f\x6e\x00\x62\x69\x6e\x64\x00\x72\x65\x61\x64\x00\x6d\x65\x6d\x63\x6d\x70\x00\x67\x65\x74\x6e\x61\x6d\x65\x69\x6e\x66\x6f\x00\x67\x65\x74\x73\x6f\x63\x6b\x6f\x70\x74\x00\x70\x6f\x6c\x6c\x00\x63\x74\x69\x6d\x65\x00\x69\x6e\x65\x74\x5f\x61\x64\x64\x72\x00\x6d\x65\x6d\x63\x70\x79\x00\x73\x74\x72\x74\x6f\x75\x6c\x00\x73\x65\x74\x73\x6f\x63\x6b\x6f\x70\x74\x00\x6d\x61\x6c\x6c\x6f\x63\x00\x72\x61\x69\x73\x65\x00\x5f\x5f\x63\x74\x79\x70\x65\x5f\x62\x5f\x6c\x6f\x63\x00\x72\x65\x63\x76\x66\x72\x6f\x6d\x00\x73\x74\x64\x65\x72\x72\x00\x73\x74\x72\x6e\x63\x61\x73\x65\x63\x6d\x70\x00\x69\x66\x5f\x6e\x61\x6d\x65\x74\x6f\x69\x6e\x64\x65\x78\x00\x69\x66\x5f\x69\x6e\x64\x65\x78\x74\x6f\x6e\x61\x6d\x65\x00\x66\x77\x72\x69\x74\x65\x00\x63\x6c\x6f\x73\x65\x00\x73\x74\x72\x63\x68\x72\x00\x66\x70\x72\x69\x6e\x74\x66\x00\x67\x65\x74\x73\x6f\x63\x6b\x6e\x61\x6d\x65\x00\x73\x65\x6e\x64\x74\x6f\x00\x66\x72\x65\x65\x61\x64\x64\x72\x69\x6e\x66\x6f\x00\x6d\x65\x6d\x6d\x6f\x76\x65\x00\x73\x74\x72\x63\x6d\x70\x00\x5f\x5f\x6c\x69\x62\x63\x5f\x73\x74\x61\x72\x74\x5f\x6d\x61\x69\x6e\x00\x73\x6e\x70\x72\x69\x6e\x74\x66\x00\x66\x72\x65\x65\x00\x49\x47\x44\x73\x74\x61\x72\x74\x65\x6c\x74\x00\x49\x47\x44\x64\x61\x74\x61\x00\x49\x47\x44\x65\x6e\x64\x65\x6c\x74\x00\x47\x4c\x49\x42\x43\x5f\x32\x2e\x37\x00\x47\x4c\x49\x42\x43\x5f\x32\x2e\x34\x00\x00\x00\x02\x00\x00\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x03\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x01\x00\x02\x00\x02\x00\x01\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x01\x00\x01\x00\x02\x00\x10\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x17\x69\x69\x0d\x00\x00\x03\x00\x0e\x02\x00\x00\x10\x00\x00\x00\x14\x69\x69\x0d\x00\x00\x02\x00\x18\x02\x00\x00\x00\x00\x00\x00\xd8\xab\x01\x00\x15\x01\x00\x00\xe0\xab\x01\x00\x15\x02\x00\x00\xe4\xab\x01\x00\x15\x03\x00\x00\xf8\xaa\x01\x00\x16\x37\x00\x00\xfc\xaa\x01\x00\x16\x35\x00\x00\x00\xab\x01\x00\x16\x2b\x00\x00\x04\xab\x01\x00\x16\x31\x00\x00\x08\xab\x01\x00\x16\x32\x00\x00\x0c\xab\x01\x00\x16\x0f\x00\x00\x10\xab\x01\x00\x16\x0d\x00\x00\x14\xab\x01\x00\x16\x10\x00\x00\x18\xab\x01\x00\x16\x24\x00\x00\x1c\xab\x01\x00\x16\x39\x00\x00\x20\xab\x01\x00\x16\x0e\x00\x00\x24\xab\x01\x00\x16\x33\x00\x00\x28\xab\x01\x00\x16\x28\x00\x00\x2c\xab\x01\x00\x16\x11\x00\x00\x30\xab\x01\x00\x16\x2d\x00\x00\x34\xab\x01\x00\x16\x1a\x00\x00\x38\xab\x01\x00\x16\x2c\x00\x00\x3c\xab\x01\x00\x16\x3a\x00\x00\x40\xab\x01\x00\x16\x12\x00\x00\x44\xab\x01\x00\x16\x16\x00\x00\x48\xab\x01\x00\x16\x05\x00\x00\x4c\xab\x01\x00\x16\x3b\x00\x00\x50\xab\x01\x00\x16\x20\x00\x00\x54\xab\x01\x00\x16\x38\x00\x00\x58\xab\x01\x00\x16\x04\x00\x00\x5c\xab\x01\x00\x16\x15\x00\x00\x60\xab\x01\x00\x16\x02\x00\x00\x64\xab\x01\x00\x16\x34\x00\x00\x68\xab\x01\x00\x16\x21\x00\x00\x6c\xab\x01\x00\x16\x1e\x00\x00\x70\xab\x01\x00\x16\x17\x00\x00\x74\xab\x01\x00\x16\x19\x00\x00\x78\xab\x01\x00\x16\x06\x00\x00\x7c\xab\x01\x00\x16\x0b\x00\x00\x80\xab\x01\x00\x16\x36\x00\x00\x84\xab\x01\x00\x16\x1b\x00\x00\x88\xab\x01\x00\x16\x07\x00\x00\x8c\xab\x01\x00\x16\x13\x00\x00\x90\xab\x01\x00\x16\x25\x00\x00\x94\xab\x01\x00\x16\x1f\x00\x00\x98\xab\x01\x00\x16\x29\x00\x00\x9c\xab\x01\x00\x16\x30\x00\x00\xa0\xab\x01\x00\x16\x22\x00\x00\xa4\xab\x01\x00\x16\x2e\x00\x00\xa8\xab\x01\x00\x16\x0c\x00\x00\xac\xab\x01\x00\x16\x14\x00\x00\xb0\xab\x01\x00\x16\x26\x00\x00\xb4\xab\x01\x00\x16\x23\x00\x00\xb8\xab\x01\x00\x16\x0a\x00\x00\xbc\xab\x01\x00\x16\x18\x00\x00\xc0\xab\x01\x00\x16\x2f\x00\x00\xc4\xab\x01\x00\x16\x1c\x00\x00\xc8\xab\x01\x00\x16\x1d\x00\x00\xcc\xab\x01\x00\x16\x08\x00\x00\xd0\xab\x01\x00\x16\x09\x00\x00\x08\x40\x2d\xe9\xb9\x00\x00\xeb\x08\x80\xbd\xe8\x04\xe0\x2d\xe5\x04\xe0\x9f\xe5\x0e\xe0\x8f\xe0\x08\xf0\xbe\xe5\x78\x1d\x01\x00\x00\xc6\x8f\xe2\x11\xca\x8c\xe2\x78\xfd\xbc\xe5\x00\xc6\x8f\xe2\x11\xca\x8c\xe2\x70\xfd\xbc\xe5\x00\xc6\x8f\xe2\x11\xca\x8c\xe2\x68\xfd\xbc\xe5\x00\xc6\x8f\xe2\x11\xca\x8c\xe2\x60\xfd\xbc\xe5\x00\xc6\x8f\xe2\x11\xca\x8c\xe2\x58\xfd\xbc\xe5\x00\xc6\x8f\xe2\x11\xca\x8c\xe2\x50\xfd\xbc\xe5\x00\xc6\x8f\xe2\x11\xca\x8c\xe2\x48\xfd\xbc\xe5\x00\xc6\x8f\xe2\x11\xca\x8c\xe2\x40\xfd\xbc\xe5\x00\xc6\x8f\xe2\x11\xca\x8c\xe2\x38\xfd\xbc\xe5\x00\xc6\x8f\xe2\x11\xca\x8c\xe2\x30\xfd\xbc\xe5\x00\xc6\x8f\xe2\x11\xca\x8c\xe2\x28\xfd\xbc\xe5\x00\xc6\x8f\xe2\x11\xca\x8c\xe2\x20\xfd\xbc\xe5\x00\xc6\x8f\xe2\x11\xca\x8c\xe2\x18\xfd\xbc\xe5\x00\xc6\x8f\xe2\x11\xca\x8c\xe2\x10\xfd\xbc\xe5\x00\xc6\x8f\xe2\x11\xca\x8c\xe2\x08\xfd\xbc\xe5\x00\xc6\x8f\xe2\x11\xca\x8c\xe2\x00\xfd\xbc\xe5\x00\xc6\x8f\xe2\x11\xca\x8c\xe2\xf8\xfc\xbc\xe5\x00\xc6\x8f\xe2\x11\xca\x8c\xe2\xf0\xfc\xbc\xe5\x00\xc6\x8f\xe2\x11\xca\x8c\xe2\xe8\xfc\xbc\xe5\x00\xc6\x8f\xe2\x11\xca\x8c\xe2\xe0\xfc\xbc\xe5\x00\xc6\x8f\xe2\x11\xca\x8c\xe2\xd8\xfc\xbc\xe5\x00\xc6\x8f\xe2\x11\xca\x8c\xe2\xd0\xfc\xbc\xe5\x00\xc6\x8f\xe2\x11\xca\x8c\xe2\xc8\xfc\xbc\xe5\x00\xc6\x8f\xe2\x11\xca\x8c\xe2\xc0\xfc\xbc\xe5\x00\xc6\x8f\xe2\x11\xca\x8c\xe2\xb8\xfc\xbc\xe5\x00\xc6\x8f\xe2\x11\xca\x8c\xe2\xb0\xfc\xbc\xe5\x00\xc6\x8f\xe2\x11\xca\x8c\xe2\xa8\xfc\xbc\xe5\x00\xc6\x8f\xe2\x11\xca\x8c\xe2\xa0\xfc\xbc\xe5\x00\xc6\x8f\xe2\x11\xca\x8c\xe2\x98\xfc\xbc\xe5\x00\xc6\x8f\xe2\x11\xca\x8c\xe2\x90\xfc\xbc\xe5\x00\xc6\x8f\xe2\x11\xca\x8c\xe2\x88\xfc\xbc\xe5\x00\xc6\x8f\xe2\x11\xca\x8c\xe2\x80\xfc\xbc\xe5\x00\xc6\x8f\xe2\x11\xca\x8c\xe2\x78\xfc\xbc\xe5\x00\xc6\x8f\xe2\x11\xca\x8c\xe2\x70\xfc\xbc\xe5\x00\xc6\x8f\xe2\x11\xca\x8c\xe2\x68\xfc\xbc\xe5\x00\xc6\x8f\xe2\x11\xca\x8c\xe2\x60\xfc\xbc\xe5\x00\xc6\x8f\xe2\x11\xca\x8c\xe2\x58\xfc\xbc\xe5\x00\xc6\x8f\xe2\x11\xca\x8c\xe2\x50\xfc\xbc\xe5\x00\xc6\x8f\xe2\x11\xca\x8c\xe2\x48\xfc\xbc\xe5\x00\xc6\x8f\xe2\x11\xca\x8c\xe2\x40\xfc\xbc\xe5\x00\xc6\x8f\xe2\x11\xca\x8c\xe2\x38\xfc\xbc\xe5\x00\xc6\x8f\xe2\x11\xca\x8c\xe2\x30\xfc\xbc\xe5\x00\xc6\x8f\xe2\x11\xca\x8c\xe2\x28\xfc\xbc\xe5\x00\xc6\x8f\xe2\x11\xca\x8c\xe2\x20\xfc\xbc\xe5\x00\xc6\x8f\xe2\x11\xca\x8c\xe2\x18\xfc\xbc\xe5\x00\xc6\x8f\xe2\x11\xca\x8c\xe2\x10\xfc\xbc\xe5\x00\xc6\x8f\xe2\x11\xca\x8c\xe2\x08\xfc\xbc\xe5\x00\xc6\x8f\xe2\x11\xca\x8c\xe2\x00\xfc\xbc\xe5\x00\xc6\x8f\xe2\x11\xca\x8c\xe2\xf8\xfb\xbc\xe5\x00\xc6\x8f\xe2\x11\xca\x8c\xe2\xf0\xfb\xbc\xe5\x00\xc6\x8f\xe2\x11\xca\x8c\xe2\xe8\xfb\xbc\xe5\x00\xc6\x8f\xe2\x11\xca\x8c\xe2\xe0\xfb\xbc\xe5\x00\xc6\x8f\xe2\x11\xca\x8c\xe2\xd8\xfb\xbc\xe5\x00\xc6\x8f\xe2\x11\xca\x8c\xe2\xd0\xfb\xbc\xe5\x00\xc6\x8f\xe2\x11\xca\x8c\xe2\xc8\xfb\xbc\xe5\x00\xb0\xa0\xe3\x00\xe0\xa0\xe3\x04\x10\x9d\xe4\x0d\x20\xa0\xe1\x04\x20\x2d\xe5\x04\x00\x2d\xe5\x10\xc0\x9f\xe5\x04\xc0\x2d\xe5\x0c\x00\x9f\xe5\x0c\x30\x9f\xe5\x9a\xff\xff\xeb\xe7\xff\xff\xeb\xbc\x09\x01\x00\xb0\x96\x00\x00\x5c\x09\x01\x00\x14\x30\x9f\xe5\x14\x20\x9f\xe5\x03\x30\x8f\xe0\x02\x30\x93\xe7\x00\x00\x53\xe3\x1e\xff\x2f\x01\x92\xff\xff\xea\x94\x1a\x01\x00\xf4\x00\x00\x00\x10\x30\x9f\xe5\x00\x20\xd3\xe5\x00\x00\x52\xe3\x01\x20\xa0\x03\x00\x20\xc3\x05\x1e\xff\x2f\xe1\xf4\xab\x01\x00\x20\x00\x9f\xe5\x08\x40\x2d\xe9\x00\x30\x90\xe5\x00\x00\x53\xe3\x08\x80\xbd\x08\x10\x30\x9f\xe5\x00\x00\x53\xe3\x08\x80\xbd\x08\x33\xff\x2f\xe1\x08\x80\xbd\xe8\x8c\xa9\x01\x00\x00\x00\x00\x00\xf0\x40\x2d\xe9\x41\xdf\x4d\xe2\x00\x40\xa0\xe1\x01\x60\xa0\xe1\x05\x5c\x81\xe2\x04\x50\x85\xe2\x00\x00\x90\xe5\x05\x10\xa0\xe1\x98\x20\x8d\xe2\x19\x0d\x00\xeb\x00\x00\x50\xe3\x03\x00\x00\x0a\x04\x02\x9f\xe5\x00\x00\x8f\xe0\x65\xff\xff\xeb\x03\x00\x00\xea\xf8\x01\x9f\xe5\x00\x00\x8f\xe0\x98\x10\x8d\xe2\x2d\xff\xff\xeb\x00\x00\x94\xe5\x18\x30\x8d\xe2\x00\x30\x8d\xe5\x05\x10\xa0\xe1\x58\x20\x8d\xe2\x14\x30\x8d\xe2\x98\x0c\x00\xeb\x00\x00\x50\xe3\x03\x00\x00\x0a\xc8\x01\x9f\xe5\x00\x00\x8f\xe0\x54\xff\xff\xeb\x05\x00\x00\xea\xbc\x01\x9f\xe5\x00\x00\x8f\xe0\x58\x10\x8d\xe2\x14\x20\x9d\xe5\x18\x30\x8d\xe2\x1a\xff\xff\xeb\x00\x00\xa0\xe3\x2d\xff\xff\xeb\x14\x30\x9d\xe5\x00\x30\x63\xe0\x01\x0c\x8d\xe2\xf8\x30\x20\xe5\x31\xff\xff\xeb\x00\x10\xa0\xe1\x88\x01\x9f\xe5\x00\x00\x8f\xe0\x0f\xff\xff\xeb\x08\x00\x94\xe5\xc1\x1f\x86\xe2\x0c\x20\x8d\xe2\x10\x30\x8d\xe2\x2b\x0d\x00\xeb\x00\x00\x50\xe3\x03\x00\x00\x0a\x64\x01\x9f\xe5\x00\x00\x8f\xe0\x38\xff\xff\xeb\x41\x00\x00\xea\x58\x01\x9f\xe5\x00\x00\x8f\xe0\x0c\x10\x9d\xe5\x00\xff\xff\xeb\x0c\x60\x9d\xe5\x48\x31\x9f\xe5\x03\x00\x56\xe1\x0e\x00\x00\x9a\x06\x00\xa0\xe1\x3c\x11\x9f\xe5\x59\x1d\x00\xeb\x00\x70\xa0\xe1\x06\x00\xa0\xe1\x30\x11\x9f\xe5\x55\x1d\x00\xeb\x0a\x10\xa0\xe3\xce\x1d\x00\xeb\x01\x20\xa0\xe1\x20\x01\x9f\xe5\x00\x00\x8f\xe0\x07\x10\xa0\xe1\xee\xfe\xff\xeb\x08\x00\x00\xea\xfa\x0f\x56\xe3\x06\x00\x00\x3a\x06\x00\xa0\xe1\xfa\x1f\xa0\xe3\x48\x1d\x00\xeb\x00\x10\xa0\xe1\xf8\x00\x9f\xe5\x00\x00\x8f\xe0\xe4\xfe\xff\xeb\xf0\x00\x9f\xe5\x00\x00\x8f\xe0\x10\x10\x9d\xe5\xe0\xfe\xff\xeb\x10\x60\x9d\xe5\xc8\x30\x9f\xe5\x03\x00\x56\xe1\x0e\x00\x00\x9a\x06\x00\xa0\xe1\xbc\x10\x9f\xe5\x39\x1d\x00\xeb\x00\x70\xa0\xe1\x06\x00\xa0\xe1\xb0\x10\x9f\xe5\x35\x1d\x00\xeb\x0a\x10\xa0\xe3\xae\x1d\x00\xeb\x01\x20\xa0\xe1\xac\x00\x9f\xe5\x00\x00\x8f\xe0\x07\x10\xa0\xe1\xce\xfe\xff\xeb\x08\x00\x00\xea\xfa\x0f\x56\xe3\x06\x00\x00\x3a\x06\x00\xa0\xe1\xfa\x1f\xa0\xe3\x28\x1d\x00\xeb\x00\x10\xa0\xe1\x84\x00\x9f\xe5\x00\x00\x8f\xe0\xc4\xfe\xff\xeb\x0a\x00\xa0\xe3\x25\xff\xff\xeb\x00\x00\x94\xe5\x05\x10\xa0\xe1\xd8\x20\x8d\xe2\x3e\x0d\x00\xeb\x00\x10\x50\xe2\x03\x00\x00\x0a\x5c\x00\x9f\xe5\x00\x00\x8f\xe0\xb9\xfe\xff\xeb\x03\x00\x00\xea\x50\x00\x9f\xe5\x00\x00\x8f\xe0\xd8\x10\x8d\xe2\xb4\xfe\xff\xeb\x41\xdf\x8d\xe2\xf0\x80\xbd\xe8\xe0\x78\x00\x00\xf0\x78\x00\x00\xd4\x78\x00\x00\xdc\x78\x00\x00\xd8\x78\x00\x00\xc4\x78\x00\x00\xd4\x78\x00\x00\x3f\x42\x0f\x00\x40\x42\x0f\x00\xa0\x86\x01\x00\xa4\x78\x00\x00\x88\x78\x00\x00\x88\x78\x00\x00\x24\x78\x00\x00\x08\x78\x00\x00\x00\x78\x00\x00\x20\x78\x00\x00\x04\x40\x2d\xe5\x01\x20\xa0\xe3\x00\x30\xa0\xe3\xc4\xc0\x9f\xe5\x0c\xc0\x8f\xe0\x02\x40\xa0\xe1\x00\x00\x52\xe3\x08\x00\x00\x0a\x03\x10\xd0\xe7\x0c\x20\xd3\xe7\x02\x00\x51\xe1\x04\x20\xa0\x01\x03\x00\x00\x0a\x20\x20\x82\xe3\x02\x00\x51\xe1\x00\x20\xa0\x13\x01\x20\xa0\x03\x01\x30\x83\xe2\x04\x00\x53\xe3\xf1\xff\xff\x1a\x00\x00\x52\xe3\x19\x00\x00\x1a\x01\x20\xa0\xe3\x00\x30\xa0\xe3\x74\xc0\x9f\xe5\x0c\xc0\x8f\xe0\x02\x40\xa0\xe1\x00\x00\x52\xe3\x09\x00\x00\x0a\x03\x10\xd0\xe7\x04\x20\x8c\xe2\x02\x20\xd3\xe7\x02\x00\x51\xe1\x04\x20\xa0\x01\x03\x00\x00\x0a\x20\x20\x82\xe3\x02\x00\x51\xe1\x00\x20\xa0\x13\x01\x20\xa0\x03\x01\x30\x83\xe2\x04\x00\x53\xe3\xf0\xff\xff\x1a\x30\x00\x9f\xe5\x00\x00\x8f\xe0\x04\x00\x80\xe2\x00\x00\x52\xe3\x04\x00\x00\x1a\x02\x00\x00\xea\x1c\x00\x9f\xe5\x00\x00\x8f\xe0\x00\x00\x00\xea\x00\x00\xa0\xe3\x10\x00\xbd\xe8\x1e\xff\x2f\xe1\x7c\x76\x00\x00\x28\x76\x00\x00\xe0\x75\x00\x00\xc8\x75\x00\x00\xf0\x4f\x2d\xe9\x8c\xd0\x4d\xe2\x00\x50\xa0\xe1\x01\x60\xa0\xe1\xb0\x70\x9d\xe5\xb4\x00\x9d\xe5\xbc\xb0\x9d\xe5\x40\x42\x9f\xe5\x04\x40\x8f\xe0\x02\xa0\xa0\xe1\x03\x80\xa0\xe1\x00\x00\x53\xe3\x00\x00\x52\x13\x02\x00\x00\x0a\x00\x00\x50\xe3\x00\x00\x57\x13\x08\x00\x00\x1a\x1c\x32\x9f\xe5\x03\x30\x94\xe7\x18\x02\x9f\xe5\x00\x00\x8f\xe0\x01\x10\xa0\xe3\x10\x20\xa0\xe3\x00\x30\x93\xe5\x7b\xfe\xff\xeb\x7c\x00\x00\xea\xaa\xff\xff\xeb\x00\x90\x50\xe2\x08\x00\x00\x1a\xec\x31\x9f\xe5\x03\x30\x94\xe7\xec\x01\x9f\xe5\x00\x00\x8f\xe0\x01\x10\xa0\xe3\x11\x20\xa0\xe3\x00\x30\x93\xe5\x6f\xfe\xff\xeb\x70\x00\x00\xea\x05\x6c\x86\xe2\x04\x60\x86\xe2\x00\x00\x95\xe5\x06\x10\xa0\xe1\x60\x20\x8d\xe2\xbb\x0c\x00\xeb\x00\x00\x50\xe3\x03\x00\x00\x0a\xb4\x01\x9f\xe5\x00\x00\x8f\xe0\x69\xfe\xff\xeb\x03\x00\x00\xea\xa8\x01\x9f\xe5\x00\x00\x8f\xe0\x60\x10\x8d\xe2\x31\xfe\xff\xeb\xc0\x30\x9d\xe5\x00\x00\x53\xe3\x1b\x00\x00\x0a\x00\x00\x95\xe5\x00\xa0\x8d\xe5\x04\xb0\x8d\xe5\x08\x90\x8d\xe5\x00\x30\xa0\xe3\x0c\x30\x8d\xe5\xb8\x10\x9d\xe5\x10\x10\x8d\xe5\x28\x30\x8d\xe2\x14\x30\x8d\xe5\x06\x10\xa0\xe1\x07\x20\xa0\xe1\x08\x30\xa0\xe1\x5b\x0d\x00\xeb\x00\x40\x50\xe2\x28\x70\x8d\x02\x22\x00\x00\x0a\x04\x00\xa0\xe1\xd0\x12\x00\xeb\x00\x40\x8d\xe5\x04\x00\x8d\xe5\x3c\x01\x9f\xe5\x00\x00\x8f\xe0\x07\x10\xa0\xe1\x08\x20\xa0\xe1\x0a\x30\xa0\xe1\x13\xfe\xff\xeb\x17\x00\x00\xea\x00\x00\x95\xe5\x00\xa0\x8d\xe5\x04\xb0\x8d\xe5\x08\x90\x8d\xe5\x00\x30\xa0\xe3\x0c\x30\x8d\xe5\xb8\x30\x9d\xe5\x10\x30\x8d\xe5\x06\x10\xa0\xe1\x07\x20\xa0\xe1\x08\x30\xa0\xe1\xc9\x0c\x00\xeb\x00\x40\x50\xe2\x09\x00\x00\x0a\x04\x00\xa0\xe1\xb7\x12\x00\xeb\x00\x40\x8d\xe5\x04\x00\x8d\xe5\xdc\x00\x9f\xe5\x00\x00\x8f\xe0\x07\x10\xa0\xe1\x08\x20\xa0\xe1\x0a\x30\xa0\xe1\xfa\xfd\xff\xeb\x00\x00\x95\xe5\x00\x30\xa0\xe3\x00\x30\x8d\xe5\x38\x20\x8d\xe2\x04\x20\x8d\xe5\x30\x20\x8d\xe2\x08\x20\x8d\xe5\x0c\x30\x8d\xe5\x10\x30\x8d\xe5\x18\x30\x8d\xe2\x14\x30\x8d\xe5\x06\x10\xa0\xe1\x07\x20\xa0\xe1\x09\x30\xa0\xe1\x48\x0f\x00\xeb\x00\x40\x50\xe2\x07\x00\x00\x0a\x04\x00\xa0\xe1\x9c\x12\x00\xeb\x00\x20\xa0\xe1\x78\x00\x9f\xe5\x00\x00\x8f\xe0\x04\x10\xa0\xe1\xe2\xfd\xff\xeb\x10\x00\x00\xea\x38\x50\x8d\xe2\x30\x40\x8d\xe2\x60\x00\x9f\xe5\x00\x00\x8f\xe0\x05\x10\xa0\xe1\x04\x20\xa0\xe1\xda\xfd\xff\xeb\x00\x50\x8d\xe5\x04\x40\x8d\xe5\x18\x30\x8d\xe2\x08\x30\x8d\xe5\x40\x00\x9f\xe5\x00\x00\x8f\xe0\x60\x10\x8d\xe2\x07\x20\xa0\xe1\x09\x30\xa0\xe1\xd0\xfd\xff\xeb\x8c\xd0\x8d\xe2\xf0\x8f\xbd\xe8\xa4\x16\x01\x00\xec\x00\x00\x00\xa8\x76\x00\x00\x8c\x76\x00\x00\x64\x76\x00\x00\x14\x76\x00\x00\x04\x76\x00\x00\xd8\x75\x00\x00\xa8\x75\x00\x00\xc4\x75\x00\x00\xbc\x75\x00\x00\xf0\x4f\x2d\xe9\x0d\xdc\x4d\xe2\x04\xd0\x4d\xe2\x00\x70\xa0\xe1\x01\x60\xa0\xe1\x94\xaf\x9f\xe5\x0a\xa0\x8f\xe0\x00\x30\xa0\xe3\xbc\x3c\x8d\xe5\x88\x0f\x9f\xe5\x00\x00\x8f\xe0\xea\xfd\xff\xeb\x80\x0f\x9f\xe5\x00\x00\x8f\xe0\xe7\xfd\xff\xeb\x01\x00\x57\xe3\x4c\x00\x00\xda\x00\xb0\xa0\xe3\x2c\xb0\x8d\xe5\x28\xb0\x8d\xe5\x24\xb0\x8d\xe5\x20\xb0\x8d\xe5\x01\x40\xa0\xe3\x58\x8f\x9f\xe5\x08\x80\x8f\xe0\x54\x9f\x9f\xe5\x09\x90\x8f\xe0\x04\x51\x96\xe7\x05\x00\xa0\xe1\x08\x10\xa0\xe1\x9b\xfd\xff\xeb\x00\x00\x50\xe3\x3c\x00\x00\x0a\x00\x30\xd5\xe5\x2d\x00\x53\xe3\x1e\x00\x00\x1a\x01\x30\xd5\xe5\x68\x00\x53\xe3\x02\x00\x00\x1a\x02\x30\xd5\xe5\x00\x00\x53\xe3\x33\x00\x00\x0a\x01\x50\xd5\xe5\x75\x00\x55\xe3\x01\x40\x84\x02\x04\x21\x96\x07\x20\x20\x8d\x05\x1b\x00\x00\x0a\x6d\x00\x55\xe3\x01\x40\x84\x02\x04\x31\x96\x07\x24\x30\x8d\x05\x16\x00\x00\x0a\x70\x00\x55\xe3\x01\x40\x84\x02\x04\x21\x96\x07\x28\x20\x8d\x05\x11\x00\x00\x0a\x36\x00\x55\xe3\x0d\x00\x00\x0a\x65\x00\x55\xe3\x01\x40\x84\x02\x04\xb1\x96\x07\x0b\x00\x00\x0a\x00\x00\x55\xe3\x0d\x00\x00\x1a\x1a\x00\x00\xea\xb0\x3e\x9f\xe5\x03\x30\x9a\xe7\x00\x00\x93\xe5\x09\x10\xa0\xe1\x05\x20\xa0\xe1\xc5\xfd\xff\xeb\x01\x00\x00\xea\x01\x30\xa0\xe3\x2c\x30\x8d\xe5\x01\x40\x84\xe2\x04\x00\x57\xe1\xcb\xff\xff\xca\x0d\x00\x00\xea\x01\x80\x84\xe2\x07\x70\x68\xe0\x03\x00\x57\xe3\x61\x00\x55\xd3\x08\x00\x00\x0a\x05\x00\x57\xe3\x41\x00\x55\xd3\x05\x00\x00\x0a\x01\x00\x57\xe3\x55\x00\x55\xd3\x02\x00\x00\x0a\x00\x00\x57\xe3\x44\x00\x55\xd3\x7d\x00\x00\x1a\x44\x3e\x9f\xe5\x03\x40\x9a\xe7\x00\x00\x94\xe5\x3c\x1e\x9f\xe5\x01\x10\x8f\xe0\x00\x20\x96\xe5\xa9\xfd\xff\xeb\x00\x00\x94\xe5\x2c\x1e\x9f\xe5\x01\x10\x8f\xe0\x00\x20\x96\xe5\xa4\xfd\xff\xeb\x00\x00\x94\xe5\x1c\x1e\x9f\xe5\x01\x10\x8f\xe0\x00\x20\x96\xe5\x9f\xfd\xff\xeb\x00\x00\x94\xe5\x0c\x1e\x9f\xe5\x01\x10\x8f\xe0\x00\x20\x96\xe5\x9a\xfd\xff\xeb\x00\x00\x94\xe5\xfc\x1d\x9f\xe5\x01\x10\x8f\xe0\x00\x20\x96\xe5\x95\xfd\xff\xeb\x00\x00\x94\xe5\xec\x1d\x9f\xe5\x01\x10\x8f\xe0\x00\x20\x96\xe5\x90\xfd\xff\xeb\x00\x00\x94\xe5\xdc\x1d\x9f\xe5\x01\x10\x8f\xe0\x00\x20\x96\xe5\x8b\xfd\xff\xeb\x00\x00\x94\xe5\xcc\x1d\x9f\xe5\x01\x10\x8f\xe0\x00\x20\x96\xe5\x86\xfd\xff\xeb\x00\x00\x94\xe5\xbc\x1d\x9f\xe5\x01\x10\x8f\xe0\x00\x20\x96\xe5\x81\xfd\xff\xeb\x00\x00\x94\xe5\xac\x1d\x9f\xe5\x01\x10\x8f\xe0\x00\x20\x96\xe5\x7c\xfd\xff\xeb\x00\x00\x94\xe5\x9c\x1d\x9f\xe5\x01\x10\x8f\xe0\x00\x20\x96\xe5\x77\xfd\xff\xeb\x00\x00\x94\xe5\x8c\x1d\x9f\xe5\x01\x10\x8f\xe0\x00\x20\x96\xe5\x72\xfd\xff\xeb\x00\x00\x94\xe5\x7c\x1d\x9f\xe5\x01\x10\x8f\xe0\x00\x20\x96\xe5\x6d\xfd\xff\xeb\x00\x00\x94\xe5\x6c\x1d\x9f\xe5\x01\x10\x8f\xe0\x00\x20\x96\xe5\x68\xfd\xff\xeb\x00\x00\x94\xe5\x5c\x1d\x9f\xe5\x01\x10\x8f\xe0\x00\x20\x96\xe5\x63\xfd\xff\xeb\x00\x00\x94\xe5\x4c\x1d\x9f\xe5\x01\x10\x8f\xe0\x00\x20\x96\xe5\x5e\xfd\xff\xeb\x40\x0d\x9f\xe5\x00\x00\x8f\xe0\x01\x10\xa0\xe3\x18\x20\xa0\xe3\x00\x30\x94\xe5\x3a\xfd\xff\xeb\x2c\x0d\x9f\xe5\x00\x00\x8f\xe0\x01\x10\xa0\xe3\x09\x20\xa0\xe3\x00\x30\x94\xe5\x34\xfd\xff\xeb\x18\x0d\x9f\xe5\x00\x00\x8f\xe0\x01\x10\xa0\xe3\x35\x20\xa0\xe3\x00\x30\x94\xe5\x2e\xfd\xff\xeb\x04\x0d\x9f\xe5\x00\x00\x8f\xe0\x01\x10\xa0\xe3\x23\x20\xa0\xe3\x00\x30\x94\xe5\x28\xfd\xff\xeb\xf0\x0c\x9f\xe5\x00\x00\x8f\xe0\x01\x10\xa0\xe3\x4f\x20\xa0\xe3\x00\x30\x94\xe5\x22\xfd\xff\xeb\xdc\x0c\x9f\xe5\x00\x00\x8f\xe0\x01\x10\xa0\xe3\x7f\x20\xa0\xe3\x00\x30\x94\xe5\x1c\xfd\xff\xeb\xc8\x0c\x9f\xe5\x00\x00\x8f\xe0\x01\x10\xa0\xe3\x30\x20\xa0\xe3\x00\x30\x94\xe5\x16\xfd\xff\xeb\x01\x40\xa0\xe3\x7e\x04\x00\xea\x20\x20\x9d\xe5\x00\x00\x52\xe3\x0d\x00\x00\x1a\x2c\x30\x9d\xe5\x00\x30\x8d\xe5\xcb\x3e\x8d\xe2\x0c\x30\x83\xe2\x04\x30\x8d\xe5\x7d\x0e\xa0\xe3\x24\x10\x9d\xe5\x28\x20\x9d\xe5\x00\x30\xa0\xe3\x38\x08\x00\xeb\x00\x00\x50\xe3\x20\x00\x8d\xe5\x72\x04\x00\x1a\x64\x04\x00\xea\x68\x0c\x9f\xe5\x00\x00\x8f\xe0\xbc\x1c\x9d\xe5\xd2\xfc\xff\xeb\x20\x20\x9d\xe5\x00\x00\x52\xe3\x00\x30\xa0\x03\x20\x30\x8d\x05\x08\x00\x00\x1a\x15\x00\x00\xea\x09\x00\xa0\xe1\x04\x10\x94\xe5\x08\x20\x94\xe5\xc8\xfc\xff\xeb\x00\x40\x94\xe5\x00\x00\x54\xe3\xf8\xff\xff\x1a\x0d\x00\x00\xea\x40\x30\xa0\xe3\x00\x30\x8d\xe5\x20\x00\x9d\xe5\xc6\x1e\x8d\xe2\x0c\x10\x81\xe2\x30\x20\x8d\xe2\x33\x3d\x8d\xe2\x73\x09\x00\xeb\x00\x00\x50\xe3\x00\x30\xa0\x13\x20\x30\x8d\x15\x11\x00\x00\x1a\x00\x20\xa0\xe3\x20\x20\x8d\xe5\x40\x30\xa0\xe3\x00\x30\x8d\xe5\x20\x00\x9d\xe5\xc6\x1e\x8d\xe2\x0c\x10\x81\xe2\x30\x20\x8d\xe2\x33\x3d\x8d\xe2\x99\x08\x00\xeb\x00\x00\x50\xe3\x2e\x04\x00\x0a\x02\x00\x50\xe3\x08\x00\x00\x0a\x03\x00\x50\xe3\x0e\x00\x00\x0a\x01\x00\x50\xe3\x14\x00\x00\x1a\xac\x0b\x9f\xe5\x00\x00\x8f\xe0\x6c\x1c\x9d\xe5\xa2\xfc\xff\xeb\x16\x00\x00\xea\x9c\x0b\x9f\xe5\x00\x00\x8f\xe0\x6c\x1c\x9d\xe5\x9d\xfc\xff\xeb\x90\x0b\x9f\xe5\x00\x00\x8f\xe0\xcd\xfc\xff\xeb\x0e\x00\x00\xea\x84\x0b\x9f\xe5\x00\x00\x8f\xe0\x6c\x1c\x9d\xe5\x95\xfc\xff\xeb\x78\x0b\x9f\xe5\x00\x00\x8f\xe0\xc5\xfc\xff\xeb\x06\x00\x00\xea\x6c\x0b\x9f\xe5\x00\x00\x8f\xe0\x6c\x1c\x9d\xe5\x8d\xfc\xff\xeb\x60\x0b\x9f\xe5\x00\x00\x8f\xe0\xbd\xfc\xff\xeb\x08\x41\x86\xe0\x54\x0b\x9f\xe5\x00\x00\x8f\xe0\x33\x1d\x8d\xe2\x85\xfc\xff\xeb\x50\x00\x55\xe3\xf0\x03\x00\x0a\x10\x00\x00\x8a\x47\x00\x55\xe3\xae\x03\x00\x0a\x06\x00\x00\x8a\x43\x00\x55\xe3\x35\x00\x00\x0a\x44\x00\x55\xe3\x2c\x00\x00\x0a\x41\x00\x55\xe3\xef\x03\x00\x1a\xc4\x01\x00\xea\x4c\x00\x55\xe3\x8a\x00\x00\x0a\x4e\x00\x55\xe3\x4a\x01\x00\x0a\x4b\x00\x55\xe3\xe8\x03\x00\x1a\x18\x00\x00\xea\x64\x00\x55\xe3\x06\x01\x00\x0a\x06\x00\x00\x8a\x55\x00\x55\xe3\x36\x02\x00\x0a\x61\x00\x55\xe3\xee\x00\x00\x0a\x53\x00\x55\xe3\xde\x03\x00\x1a\x59\x03\x00\xea\x6e\x00\x55\xe3\x27\x01\x00\x0a\x02\x00\x00\x8a\x6c\x00\x55\xe3\xd8\x03\x00\x1a\x23\x00\x00\xea\x72\x00\x55\xe3\x02\x00\x00\x0a\x73\x00\x55\xe3\xd3\x03\x00\x1a\x74\x01\x00\xea\x00\x50\xa0\xe3\xa0\x6a\x9f\xe5\x06\x60\x8f\xe0\x9f\x01\x00\xea\x04\x80\xa0\xe1\x00\x50\xa0\xe3\x90\x9a\x9f\xe5\x09\x90\x8f\xe0\x8c\xba\x9f\xe5\x0b\xb0\x8f\xe0\x88\x2a\x9f\xe5\x02\x20\x8f\xe0\x24\x20\x8d\xe5\x25\x03\x00\xea\x04\x50\xa0\xe1\x00\x40\xa0\xe3\x74\x6a\x9f\xe5\x06\x60\x8f\xe0\x70\x8a\x9f\xe5\x08\x80\x8f\xe0\x35\x03\x00\xea\x04\x80\xa0\xe1\x00\x50\xa0\xe3\x60\x9a\x9f\xe5\x09\x90\x8f\xe0\x5c\xba\x9f\xe5\x0b\xb0\x8f\xe0\x58\x3a\x9f\xe5\x03\x30\x8f\xe0\x24\x30\x8d\xe5\xee\x02\x00\xea\xc6\x0e\x8d\xe2\x0c\x00\x80\xe2\x30\x10\x8d\xe2\xf7\xfc\xff\xeb\x3c\x0a\x9f\xe5\x00\x00\x8f\xe0\x69\xfc\xff\xeb\x00\x40\xa0\xe3\x30\x6a\x9f\xe5\x06\x60\x8f\xe0\x2c\x7a\x9f\xe5\x07\x70\x8f\xe0\xc9\x0e\x8d\xe2\x08\x00\x80\xe2\x06\x10\xa0\xe3\x06\x20\xa0\xe1\x04\x30\xa0\xe1\x7f\xfc\xff\xeb\x00\x30\xa0\xe3\x04\x3c\xcd\xe5\xa8\x3c\xcd\xe5\x80\x3c\xcd\xe5\xb4\x3b\xcd\xe5\xa0\x3c\xcd\xe5\x90\x3c\xcd\xe5\x44\x3c\xcd\xe5\x31\x3d\x8d\xe2\x04\x30\x83\xe2\x00\x30\x8d\xe5\xc9\x3e\x8d\xe2\x04\x30\x8d\xe5\xcb\x3e\x8d\xe2\x08\x30\x8d\xe5\xbb\x3e\x8d\xe2\x04\x30\x83\xe2\x0c\x30\x8d\xe5\xca\x3e\x8d\xe2\x08\x30\x83\xe2\x10\x30\x8d\xe5\x03\x3b\x8d\xe2\x04\x30\x83\xe2\x14\x30\x8d\xe5\x32\x3d\x8d\xe2\x18\x30\x8d\xe5\x6c\x0c\x9d\xe5\x53\x1e\x8d\xe2\x04\x10\x81\xe2\xc9\x2e\x8d\xe2\x08\x20\x82\xe2\xca\x3e\x8d\xe2\x6c\x0c\x00\xeb\x00\x50\x50\xe2\x13\x00\x00\x1a\x31\x3d\x8d\xe2\x04\x30\x83\xe2\x00\x30\x8d\xe5\xc9\x3e\x8d\xe2\x04\x30\x8d\xe5\xbb\x3e\x8d\xe2\x04\x30\x83\xe2\x08\x30\x8d\xe5\x03\x3b\x8d\xe2\x04\x30\x83\xe2\x0c\x30\x8d\xe5\x32\x3d\x8d\xe2\x10\x30\x8d\xe5\x07\x00\xa0\xe1\x04\x10\xa0\xe1\xcb\x2e\x8d\xe2\xca\x3e\x8d\xe2\xf6\xfb\xff\xeb\x01\x40\x84\xe2\xc2\xff\xff\xea\x05\x00\xa0\xe1\xa7\x10\x00\xeb\x00\x20\xa0\xe1\x28\x09\x9f\xe5\x00\x00\x8f\xe0\x05\x10\xa0\xe1\xed\xfb\xff\xeb\x00\x40\xa0\xe3\x69\x03\x00\xea\x00\x30\xa0\xe3\x90\x3c\x8d\xe5\x94\x3c\x8d\xe5\x08\x39\x9f\xe5\x03\x30\x8f\xe0\x00\x30\x8d\xe5\x00\x39\x9f\xe5\x03\x30\x8f\xe0\x04\x30\x8d\xe5\xc9\x3e\x8d\xe2\x08\x30\x8d\xe5\x6c\x0c\x9d\xe5\x53\x2e\x8d\xe2\x04\x10\x82\xe2\xe4\x28\x9f\xe5\x02\x20\x8f\xe0\xe0\x38\x9f\xe5\x03\x30\x8f\xe0\xd2\x0d\x00\xeb\x00\x40\x50\xe2\x1d\x00\x00\x1a\xd0\x08\x9f\xe5\x00\x00\x8f\xe0\x06\xfc\xff\xeb\x90\x4c\x9d\xe5\x00\x50\xa0\xe3\xc0\x68\x9f\xe5\x06\x60\x8f\xe0\x10\x00\x00\xea\xb8\x30\xd4\xe1\x4c\x20\x84\xe2\x00\x20\x8d\xe5\xba\x20\xd4\xe1\x04\x20\x8d\xe5\x8c\x20\x84\xe2\x08\x20\x8d\xe5\x0c\x20\x84\xe2\x0c\x20\x8d\xe5\x04\x20\x94\xe5\x10\x20\x8d\xe5\x06\x00\xa0\xe1\x05\x10\xa0\xe1\xcc\x20\x84\xe2\xbf\xfb\xff\xeb\x01\x50\x85\xe2\x00\x40\x94\xe5\x00\x00\x54\xe3\xec\xff\xff\x1a\xc9\x0e\x8d\xe2\xe9\x12\x00\xeb\x07\x00\x00\xea\x04\x00\xa0\xe1\x6b\x10\x00\xeb\x00\x20\xa0\xe1\x54\x08\x9f\xe5\x00\x00\x8f\xe0\x04\x10\xa0\xe1\xb1\xfb\xff\xeb\x00\x50\xa0\xe3\x44\x38\x9f\xe5\x03\x30\x8f\xe0\x00\x30\x8d\xe5\x3c\x38\x9f\xe5\x03\x30\x8f\xe0\x04\x30\x8d\xe5\xc9\x3e\x8d\xe2\x08\x30\x8d\xe5\x6c\x0c\x9d\xe5\x53\x3e\x8d\xe2\x04\x10\x83\xe2\x20\x28\x9f\xe5\x02\x20\x8f\xe0\x1c\x38\x9f\xe5\x03\x30\x8f\xe0\x9a\x0d\x00\xeb\x00\x40\x50\xe2\x19\x00\x00\x1a\x90\x4c\x9d\xe5\x08\x68\x9f\xe5\x06\x60\x8f\xe0\x10\x00\x00\xea\xb8\x30\xd4\xe1\x4c\x20\x84\xe2\x00\x20\x8d\xe5\xba\x20\xd4\xe1\x04\x20\x8d\xe5\x8c\x20\x84\xe2\x08\x20\x8d\xe5\x0c\x20\x84\xe2\x0c\x20\x8d\xe5\x04\x20\x94\xe5\x10\x20\x8d\xe5\x06\x00\xa0\xe1\x05\x10\xa0\xe1\xcc\x20\x84\xe2\x8b\xfb\xff\xeb\x01\x50\x85\xe2\x00\x40\x94\xe5\x00\x00\x54\xe3\xec\xff\xff\x1a\xc9\x0e\x8d\xe2\xb5\x12\x00\xeb\x02\x03\x00\xea\x04\x00\xa0\xe1\x37\x10\x00\xeb\x00\x20\xa0\xe1\x9c\x07\x9f\xe5\x00\x00\x8f\xe0\x04\x10\xa0\xe1\x7d\xfb\xff\xeb\x00\x40\xa0\xe3\xf9\x02\x00\xea\x08\x21\x96\xe7\x04\x30\x94\xe5\x08\xc0\x94\xe5\x0c\x00\x94\xe5\x04\x00\x57\xe3\x10\x10\x94\xc5\x70\x17\x9f\xd5\x01\x10\x8f\xd0\x00\xc0\x8d\xe5\x04\x00\x8d\xe5\x08\x10\x8d\xe5\x0c\xb0\x8d\xe5\x00\x40\xa0\xe3\x10\x40\x8d\xe5\xc6\x0e\x8d\xe2\x0c\x00\x80\xe2\x30\x10\x8d\xe2\x01\xfd\xff\xeb\xe6\x02\x00\xea\x08\x51\x96\xe7\x04\x00\x94\xe5\x02\x00\x57\xe3\x08\x40\x94\xc5\x00\x40\xa0\xd3\x00\x00\x55\xe3\x00\x00\x50\x13\x09\x00\x00\x1a\x30\x36\x9f\xe5\x03\x30\x9a\xe7\x18\x07\x9f\xe5\x00\x00\x8f\xe0\x01\x10\xa0\xe3\x12\x20\xa0\xe3\x00\x30\x93\xe5\x85\xfb\xff\xeb\x00\x40\xa0\xe3\xd4\x02\x00\xea\xb3\xfc\xff\xeb\x00\x30\x50\xe2\x09\x00\x00\x1a\xfc\x35\x9f\xe5\x03\x30\x9a\xe7\xe8\x06\x9f\xe5\x00\x00\x8f\xe0\x01\x10\xa0\xe3\x11\x20\xa0\xe3\x00\x30\x93\xe5\x78\xfb\xff\xeb\x00\x40\xa0\xe3\xc7\x02\x00\xea\x00\x40\x8d\xe5\x6c\x0c\x9d\xe5\x53\x2e\x8d\xe2\x04\x10\x82\xe2\x05\x20\xa0\xe1\x05\x0b\x00\xeb\x00\x10\xa0\xe1\xb0\x06\x9f\xe5\x00\x00\x8f\xe0\x3f\xfb\xff\xeb\x00\x40\xa0\xe3\xbb\x02\x00\xea\x08\x21\x96\xe7\x04\x30\x94\xe5\x08\xc0\x94\xe5\x0c\x00\x94\xe5\x04\x00\x57\xe3\x10\x10\x94\xc5\x88\x16\x9f\xd5\x01\x10\x8f\xd0\x00\xc0\x8d\xe5\x04\x00\x8d\xe5\x08\x10\x8d\xe5\x0c\xb0\x8d\xe5\x01\x10\xa0\xe3\x10\x10\x8d\xe5\xc6\x0e\x8d\xe2\x0c\x00\x80\xe2\x30\x10\x8d\xe2\xc3\xfc\xff\xeb\x00\x40\xa0\xe3\xa7\x02\x00\xea\x02\x00\x57\xe3\x07\x00\x00\xca\x4c\x35\x9f\xe5\x03\x30\x9a\xe7\x44\x06\x9f\xe5\x00\x00\x8f\xe0\x01\x10\xa0\xe3\x12\x20\xa0\xe3\x00\x30\x93\xe5\x4c\xfb\xff\xeb\x08\x51\x96\xe7\x04\x60\x94\xe5\x08\x00\x94\xe5\x03\x00\x57\xe3\x03\x00\x00\xda\x0c\x40\x94\xe5\x00\x00\x54\xe3\x05\x00\x00\x1a\x02\x00\x00\xea\x0c\x46\x9f\xe5\x04\x40\x8f\xe0\x01\x00\x00\xea\x04\x46\x9f\xe5\x04\x40\x8f\xe0\x00\x00\x55\xe3\x00\x00\x50\x13\x01\x00\x00\x0a\x00\x00\x56\xe3\x09\x00\x00\x1a\xe0\x34\x9f\xe5\x03\x30\x9a\xe7\xe4\x05\x9f\xe5\x00\x00\x8f\xe0\x01\x10\xa0\xe3\x12\x20\xa0\xe3\x00\x30\x93\xe5\x31\xfb\xff\xeb\x00\x40\xa0\xe3\x80\x02\x00\xea\x5f\xfc\xff\xeb\x00\x00\x50\xe3\x09\x00\x00\x1a\xac\x34\x9f\xe5\x03\x30\x9a\xe7\xb4\x05\x9f\xe5\x00\x00\x8f\xe0\x01\x10\xa0\xe3\x11\x20\xa0\xe3\x00\x30\x93\xe5\x24\xfb\xff\xeb\x00\x40\xa0\xe3\x73\x02\x00\xea\x00\x00\x8d\xe5\x04\x40\x8d\xe5\x6c\x0c\x9d\xe5\x53\x3e\x8d\xe2\x04\x10\x83\xe2\x05\x20\xa0\xe1\x06\x30\xa0\xe1\xfa\x0a\x00\xeb\x00\x10\xa0\xe1\x74\x05\x9f\xe5\x00\x00\x8f\xe0\xe9\xfa\xff\xeb\x00\x40\xa0\xe3\x65\x02\x00\xea\xc6\x0e\x8d\xe2\x0c\x00\x80\xe2\x30\x10\x8d\xe2\xa1\xfb\xff\xeb\xcd\x4f\x8d\xe2\x74\x0c\x9d\xe5\x04\x10\xa0\xe1\xc5\x07\x00\xeb\x00\x50\xa0\xe1\x74\x0c\x9d\xe5\x04\x10\xa0\xe1\xe4\x07\x00\xeb\x00\x60\xa0\xe1\x74\x0c\x9d\xe5\x04\x10\xa0\xe1\x03\x08\x00\xeb\x00\x70\xa0\xe1\x74\x0c\x9d\xe5\x04\x10\xa0\xe1\x22\x08\x00\xeb\x00\x40\xa0\xe1\x10\x05\x9f\xe5\x00\x00\x8f\xe0\x05\x10\xa0\xe1\x06\x20\xa0\xe1\xcd\xfa\xff\xeb\x00\x05\x9f\xe5\x00\x00\x8f\xe0\x07\x10\xa0\xe1\x04\x20\xa0\xe1\xc8\xfa\xff\xeb\x00\x40\xa0\xe3\x44\x02\x00\xea\x08\x30\x14\xe5\x00\x30\x8d\xe5\x04\x20\x14\xe5\x04\x20\x8d\xe5\x08\x60\x8d\xe5\x0c\xb0\x8d\xe5\x00\x20\xa0\xe3\x10\x20\x8d\xe5\xc6\x0e\x8d\xe2\x0c\x00\x80\xe2\x30\x10\x8d\xe2\x33\x2d\x8d\xe2\x51\xfc\xff\xeb\x02\x50\x85\xe2\x08\x40\x84\xe2\x07\x00\x55\xe1\xee\xff\xff\xba\x00\x40\xa0\xe3\x31\x02\x00\xea\x08\x71\x96\xe7\x04\x80\x94\xe5\x08\x90\x94\xe5\x0c\x60\x94\xe5\x10\x50\x94\xe5\x14\x40\x94\xe5\x00\x00\x57\xe3\x00\x00\x59\x13\x05\x00\x00\x0a\x00\x00\x58\xe3\x00\x00\x56\x13\x02\x00\x00\x0a\x00\x00\x54\xe3\x00\x00\x55\x13\x09\x00\x00\x1a\x40\x33\x9f\xe5\x03\x30\x9a\xe7\x58\x04\x9f\xe5\x00\x00\x8f\xe0\x01\x10\xa0\xe3\x10\x20\xa0\xe3\x00\x30\x93\xe5\xc9\xfa\xff\xeb\x00\x40\xa0\xe3\x18\x02\x00\xea\x05\x00\xa0\xe1\x00\x10\xa0\xe3\x0a\x20\xa0\xe3\x90\xfa\xff\xeb\x00\x00\x50\xe3\x38\x00\x00\x1a\x05\x00\xa0\xe1\xf0\xfb\xff\xeb\x00\x00\x50\xe3\x2a\x00\x00\x0a\x00\x30\xd0\xe5\x54\x00\x53\xe3\x12\x00\x00\x1a\x01\x20\xd0\xe5\x43\x00\x52\xe3\x0f\x00\x00\x1a\x02\x20\xd0\xe5\x50\x00\x52\xe3\x0c\x00\x00\x1a\x03\x30\xd0\xe5\x00\x00\x53\xe3\x1e\x00\x00\x1a\xc9\x0e\x8d\xe2\x08\x00\x80\xe2\x08\x10\xa0\xe3\xd8\x23\x9f\xe5\x02\x20\x8f\xe0\x06\x30\xa0\xe3\xd1\xfa\xff\xeb\xc9\x5e\x8d\xe2\x08\x50\x85\xe2\x1e\x00\x00\xea\x55\x00\x53\xe3\x12\x00\x00\x1a\x01\x30\xd0\xe5\x44\x00\x53\xe3\x0f\x00\x00\x1a\x02\x30\xd0\xe5\x50\x00\x53\xe3\x0c\x00\x00\x1a\x03\x30\xd0\xe5\x00\x00\x53\xe3\x09\x00\x00\x1a\xc9\x0e\x8d\xe2\x08\x00\x80\xe2\x08\x10\xa0\xe3\x88\x23\x9f\xe5\x02\x20\x8f\xe0\x11\x30\xa0\xe3\xbc\xfa\xff\xeb\xc9\x5e\x8d\xe2\x08\x50\x85\xe2\x09\x00\x00\xea\x44\x32\x9f\xe5\x03\x30\x9a\xe7\x68\x03\x9f\xe5\x00\x00\x8f\xe0\x01\x10\xa0\xe3\x11\x20\xa0\xe3\x00\x30\x93\xe5\x8a\xfa\xff\xeb\x00\x40\xa0\xe3\xd9\x01\x00\xea\x00\x90\x8d\xe5\x04\x60\x8d\xe5\x08\x50\x8d\xe5\x0c\x40\x8d\xe5\xc9\x3e\x8d\xe2\x10\x30\x8d\xe5\x78\x0c\x9d\xe5\x93\x1e\x8d\xe2\x04\x10\x81\xe2\x07\x20\xa0\xe1\x08\x30\xa0\xe1\x68\x0d\x00\xeb\x00\x40\x50\xe2\x0c\x00\x00\x0a\x04\x00\xa0\xe1\x00\x0f\x00\xeb\x00\x60\x8d\xe5\x04\x40\x8d\xe5\x08\x00\x8d\xe5\x00\x03\x9f\xe5\x00\x00\x8f\xe0\x07\x10\xa0\xe1\x08\x20\xa0\xe1\x09\x30\xa0\xe1\x42\xfa\xff\xeb\x00\x40\xa0\xe3\xbe\x01\x00\xea\x00\x60\x8d\xe5\xc9\x3e\x8d\xe2\x04\x30\x8d\xe5\xd8\x02\x9f\xe5\x00\x00\x8f\xe0\x07\x10\xa0\xe1\x08\x20\xa0\xe1\x09\x30\xa0\xe1\x37\xfa\xff\xeb\x00\x40\xa0\xe3\xb3\x01\x00\xea\x08\x51\x96\xe7\x04\x60\x94\xe5\x00\x30\xa0\xe3\xb4\x3c\x8d\xe5\x03\x00\x56\xe1\x03\x00\x55\x11\x09\x00\x00\x1a\x68\x31\x9f\xe5\x03\x30\x9a\xe7\x98\x02\x9f\xe5\x00\x00\x8f\xe0\x01\x10\xa0\xe3\x10\x20\xa0\xe3\x00\x30\x93\xe5\x53\xfa\xff\xeb\x00\x40\xa0\xe3\xa2\x01\x00\xea\x78\x0c\x9d\xe5\x93\x1e\x8d\xe2\x04\x10\x81\xe2\x05\x20\xa0\xe1\xcb\x3e\x8d\xe2\x04\x30\x83\xe2\x44\x0e\x00\xeb\x00\x40\xa0\xe1\xb4\x3c\x9d\xe5\x00\x00\x53\xe3\x54\x22\x9f\x15\x02\x20\x8f\x10\x50\x22\x9f\x05\x02\x20\x8f\x00\x4c\x02\x9f\xe5\x00\x00\x8f\xe0\x05\x10\xa0\xe1\x12\xfa\xff\xeb\x00\x00\x54\xe3\x06\x00\x00\x0a\x04\x00\xa0\xe1\xc3\x0e\x00\xeb\x00\x20\xa0\xe1\x2c\x02\x9f\xe5\x00\x00\x8f\xe0\x04\x10\xa0\xe1\x09\xfa\xff\xeb\x20\x32\x9f\xe5\x03\x00\x54\xe1\x00\x40\xa0\x13\x01\x40\xa0\x03\xb4\x3c\x9d\xe5\x00\x00\x53\xe3\x04\x30\xa0\x01\x01\x30\x84\x13\x00\x00\x53\xe3\x00\x40\xa0\x03\x7c\x01\x00\x0a\x78\x0c\x9d\xe5\x93\x1e\x8d\xe2\x04\x10\x81\xe2\x05\x20\xa0\xe1\x06\x30\xa0\xe1\xa3\x0d\x00\xeb\x00\x40\xa0\xe1\xdc\x01\x9f\xe5\x00\x00\x8f\xe0\x05\x10\xa0\xe1\x06\x20\xa0\xe1\xf2\xf9\xff\xeb\x00\x00\x54\xe3\x00\x40\xa0\x03\x6d\x01\x00\x0a\x04\x00\xa0\xe1\xa2\x0e\x00\xeb\x00\x30\xa0\xe1\xb4\x01\x9f\xe5\x00\x00\x8f\xe0\x05\x10\xa0\xe1\x04\x20\xa0\xe1\xe7\xf9\xff\xeb\x00\x40\xa0\xe3\x63\x01\x00\xea\x04\x40\x98\xe4\x00\x30\xa0\xe3\xb4\x3c\x8d\xe5\x03\x00\x54\xe1\x78\x00\x00\x1a\x30\x30\x9f\xe5\x03\x30\x9a\xe7\x80\x01\x9f\xe5\x00\x00\x8f\xe0\x01\x10\xa0\xe3\x12\x20\xa0\xe3\x00\x30\x93\xe5\x05\xfa\xff\xeb\x87\x00\x00\xea\x1c\x14\x01\x00\x9c\x75\x00\x00\xd4\x75\x00\x00\x00\x76\x00\x00\x00\x76\x00\x00\xec\x00\x00\x00\xf8\x74\x00\x00\x40\x75\x00\x00\x84\x75\x00\x00\xa4\x75\x00\x00\xc0\x75\x00\x00\x08\x76\x00\x00\x94\x76\x00\x00\x08\x77\x00\x00\x60\x77\x00\x00\xc8\x77\x00\x00\x08\x78\x00\x00\x48\x78\x00\x00\x98\x78\x00\x00\xc8\x78\x00\x00\xf4\x78\x00\x00\x64\x79\x00\x00\x84\x79\x00\x00\x88\x79\x00\x00\x7c\x79\x00\x00\x9c\x79\x00\x00\xa8\x79\x00\x00\xe0\x79\x00\x00\x48\x7a\x00\x00\x18\x7a\x00\x00\x8c\x79\x00\x00\x90\x79\x00\x00\xa4\x79\x00\x00\xb0\x79\x00\x00\x84\x79\x00\x00\xb8\x79\x00\x00\x64\x79\x00\x00\xb4\x79\x00\x00\x14\x70\x00\x00\x4c\x7c\x00\x00\x14\x7c\x00\x00\xf8\x79\x00\x00\x60\x7c\x00\x00\xd8\x79\x00\x00\x08\x7b\x00\x00\xbc\x6f\x00\x00\xb0\x6f\x00\x00\x90\x78\x00\x00\xc4\x78\x00\x00\xc0\x78\x00\x00\xdc\x77\x00\x00\xf0\x77\x00\x00\xe8\x77\x00\x00\x1c\x6e\x00\x00\xb4\x77\x00\x00\x04\x77\x00\x00\xa0\x77\x00\x00\x54\x77\x00\x00\x6c\x77\x00\x00\x08\x77\x00\x00\x3c\x6d\x00\x00\xd4\x76\x00\x00\xd0\x76\x00\x00\x84\x76\x00\x00\x7c\x6c\x00\x00\x28\x76\x00\x00\x08\x76\x00\x00\xe0\x75\x00\x00\x84\x6b\x00\x00\x94\x75\x00\x00\x00\x6b\x00\x00\xf4\x6a\x00\x00\xd8\x74\x00\x00\xb8\x74\x00\x00\xc4\x74\x00\x00\x8c\x74\x00\x00\x98\x74\x00\x00\xe0\x67\x00\x00\xf4\x71\x00\x00\xa0\x71\x00\x00\xf8\x66\x00\x00\xa4\x72\x00\x00\xb4\x72\x00\x00\x08\x66\x00\x00\x14\x67\x00\x00\x10\x67\x00\x00\x4c\x72\x00\x00\x60\x72\x00\x00\xc5\x02\x00\x00\x38\x72\x00\x00\x40\x72\x00\x00\x28\x70\x00\x00\x98\x6f\x00\x00\x5c\x6f\x00\x00\x98\x62\x00\x00\x94\x62\x00\x00\x80\x62\x00\x00\x7c\x62\x00\x00\x4c\x6f\x00\x00\xb8\x6c\x00\x00\xc4\x6c\x00\x00\x58\x60\x00\x00\x68\x6e\x00\x00\x84\x6e\x00\x00\xa4\x6e\x00\x00\xb0\x6e\x00\x00\x9c\x6e\x00\x00\x84\x6e\x00\x00\xec\x00\x00\x00\x84\x6e\x00\x00\x84\x6e\x00\x00\x60\x68\x00\x00\x78\x0c\x9d\xe5\x93\x1e\x8d\xe2\x04\x10\x81\xe2\x04\x20\xa0\xe1\xcb\x3e\x8d\xe2\x04\x30\x83\xe2\x87\x0d\x00\xeb\x00\x60\x50\xe2\x07\x00\x00\x0a\x06\x00\xa0\xe1\x11\x0e\x00\xeb\x00\x20\xa0\xe1\x88\x00\x1f\xe5\x00\x00\x8f\xe0\x06\x10\xa0\xe1\x57\xf9\xff\xeb\x06\x00\x00\xea\xb4\x3c\x9d\xe5\x00\x00\x53\xe3\x24\x20\x9d\xe5\x0b\x20\xa0\x01\x09\x00\xa0\xe1\x04\x10\xa0\xe1\x4f\xf9\xff\xeb\x01\x50\x85\xe2\x07\x00\x55\xe1\x66\xff\xff\xba\x00\x40\xa0\xe3\xc8\x00\x00\xea\x04\x40\x98\xe4\x00\x30\xa0\xe3\xb4\x3c\x8d\xe5\x03\x00\x54\xe1\x07\x00\x00\x1a\xa0\x30\x1f\xe5\x03\x30\x9a\xe7\x24\x00\x9d\xe5\x01\x10\xa0\xe3\x12\x20\xa0\xe3\x00\x30\x93\xe5\x6b\xf9\xff\xeb\x13\x00\x00\xea\x78\x0c\x9d\xe5\x93\x1e\x8d\xe2\x04\x10\x81\xe2\x04\x20\xa0\xe1\xcb\x3e\x8d\xe2\x04\x30\x83\xe2\xa5\x0d\x00\xeb\x00\x60\x50\xe2\x06\x00\x00\x0a\x06\x00\xa0\xe1\xe7\x0d\x00\xeb\x00\x20\xa0\xe1\x0b\x00\xa0\xe1\x06\x10\xa0\xe1\x2e\xf9\xff\xeb\x03\x00\x00\xea\x09\x00\xa0\xe1\x04\x10\xa0\xe1\xb4\x2c\x9d\xe5\x29\xf9\xff\xeb\x01\x50\x85\xe2\x07\x00\x55\xe1\xdb\xff\xff\xba\x00\x40\xa0\xe3\xa2\x00\x00\xea\x04\x20\x95\xe4\x00\x00\x52\xe3\x07\x00\x00\x1a\x30\x31\x1f\xe5\x03\x30\x9a\xe7\x08\x00\xa0\xe1\x01\x10\xa0\xe3\x12\x20\xa0\xe3\x00\x30\x93\xe5\x47\xf9\xff\xeb\x06\x00\x00\xea\x78\x0c\x9d\xe5\x93\x1e\x8d\xe2\x04\x10\x81\xe2\x02\x0d\x00\xeb\x00\x10\xa0\xe1\x06\x00\xa0\xe1\x12\xf9\xff\xeb\x01\x40\x84\xe2\x07\x00\x54\xe1\xea\xff\xff\xba\x00\x40\xa0\xe3\x8b\x00\x00\xea\x00\x30\xa0\xe3\xb4\x3c\x8d\xe5\xb8\x3c\x8d\xe5\x78\x0c\x9d\xe5\x93\x1e\x8d\xe2\x04\x10\x81\xe2\xcb\x2e\x8d\xe2\x04\x20\x82\xe2\xcb\x3e\x8d\xe2\x08\x30\x83\xe2\x64\x0b\x00\xeb\xe8\x01\x1f\xe5\x00\x00\x8f\xe0\xb4\x1c\x9d\xe5\xb8\x2c\x9d\xe5\xfd\xf8\xff\xeb\xb4\x3c\x9d\xe5\x00\x00\x53\xe3\x00\x12\x1f\x15\x01\x10\x8f\x10\x04\x12\x1f\x05\x01\x10\x8f\x00\xb8\x3c\x9d\xe5\x00\x00\x53\xe3\x10\x22\x1f\x15\x02\x20\x8f\x10\x14\x22\x1f\x05\x02\x20\x8f\x00\x18\x02\x1f\xe5\x00\x00\x8f\xe0\xee\xf8\xff\xeb\xcd\x4f\x8d\xe2\x74\x0c\x9d\xe5\x04\x10\xa0\xe1\xd0\x05\x00\xeb\x00\x50\xa0\xe1\x74\x0c\x9d\xe5\x04\x10\xa0\xe1\xef\x05\x00\xeb\x00\x60\xa0\xe1\x74\x0c\x9d\xe5\x04\x10\xa0\xe1\x0e\x06\x00\xeb\x00\x70\xa0\xe1\x74\x0c\x9d\xe5\x04\x10\xa0\xe1\x2d\x06\x00\xeb\x00\x40\xa0\xe1\x64\x02\x1f\xe5\x00\x00\x8f\xe0\x05\x10\xa0\xe1\x06\x20\xa0\xe1\xd8\xf8\xff\xeb\x74\x02\x1f\xe5\x00\x00\x8f\xe0\x07\x10\xa0\xe1\x04\x20\xa0\xe1\xd3\xf8\xff\xeb\x00\x40\xa0\xe3\x4f\x00\x00\xea\x08\x81\x96\xe7\x04\x50\x94\xe5\x08\x60\x94\xe5\x0c\x70\x94\xe5\x10\x30\x94\xe5\x00\x20\xa0\xe3\xb8\x2c\x8d\xe5\x02\x00\x58\xe1\x02\x00\x56\x11\x04\x00\x00\x0a\x02\x00\x55\xe1\x02\x00\x57\x11\x01\x00\x00\x0a\x02\x00\x53\xe1\x09\x00\x00\x1a\xac\x32\x1f\xe5\x03\x30\x9a\xe7\xd0\x02\x1f\xe5\x00\x00\x8f\xe0\x01\x10\xa0\xe3\x10\x20\xa0\xe3\x00\x30\x93\xe5\xe7\xf8\xff\xeb\x00\x40\xa0\xe3\x36\x00\x00\xea\x00\x60\x8d\xe5\x04\x70\x8d\xe5\x08\x30\x8d\xe5\xcb\x3e\x8d\xe2\x08\x30\x83\xe2\x0c\x30\x8d\xe5\x78\x0c\x9d\xe5\x93\x1e\x8d\xe2\x04\x10\x81\xe2\x08\x20\xa0\xe1\x05\x30\xa0\xe1\x5f\x0b\x00\xeb\x00\x40\x50\xe2\x0c\x00\x00\x0a\x04\x00\xa0\xe1\x5d\x0d\x00\xeb\x00\x50\x8d\xe5\x04\x40\x8d\xe5\x08\x00\x8d\xe5\x38\x03\x1f\xe5\x00\x00\x8f\xe0\x06\x10\xa0\xe1\x07\x20\xa0\xe1\x08\x30\xa0\xe1\x9f\xf8\xff\xeb\x00\x40\xa0\xe3\x1b\x00\x00\xea\x00\x50\x8d\xe5\xb8\x3c\x9d\xe5\x04\x30\x8d\xe5\x60\x03\x1f\xe5\x00\x00\x8f\xe0\x06\x10\xa0\xe1\x07\x20\xa0\xe1\x08\x30\xa0\xe1\x94\xf8\xff\xeb\x00\x40\xa0\xe3\x10\x00\x00\xea\x7c\x03\x1f\xe5\x00\x00\x8f\xe0\xc2\xf8\xff\xeb\x84\x03\x1f\xe5\x00\x00\x8f\xe0\x13\x1e\x8d\xe2\x8b\xf8\xff\xeb\x00\x40\xa0\xe3\x07\x00\x00\xea\x90\x33\x1f\xe5\x03\x30\x9a\xe7\x00\x00\x93\xe5\xa4\x13\x1f\xe5\x01\x10\x8f\xe0\x05\x20\xa0\xe1\xcd\xf8\xff\xeb\x01\x40\xa0\xe3\xc6\x0e\x8d\xe2\x0c\x00\x80\xe2\x40\x04\x00\xeb\x08\x00\x00\xea\xc0\x33\x1f\xe5\x03\x30\x9a\xe7\xcc\x03\x1f\xe5\x00\x00\x8f\xe0\x01\x10\xa0\xe3\x2d\x20\xa0\xe3\x00\x30\x93\xe5\xa2\xf8\xff\xeb\x01\x40\xa0\xe3\x20\x00\x9d\xe5\x06\x04\x00\xeb\x08\x00\x00\xea\xf0\x33\x1f\xe5\x03\x30\x9a\xe7\xf4\x03\x1f\xe5\x00\x00\x8f\xe0\x01\x10\xa0\xe3\x2a\x20\xa0\xe3\x00\x30\x93\xe5\x96\xf8\xff\xeb\x01\x40\xa0\xe3\x04\x00\xa0\xe1\x41\xdf\x8d\xe2\x03\xdb\x8d\xe2\xf0\x8f\xbd\xe8\x1c\x04\x1f\xe5\x00\x00\x8f\xe0\x94\xf8\xff\xeb\x20\x40\x9d\xe5\x28\x94\x1f\xe5\x09\x90\x8f\xe0\x90\xfb\xff\xea\xf0\x4f\x2d\xe9\x14\xd0\x4d\xe2\x02\x60\xa0\xe1\x03\xa0\xa0\xe1\x00\x50\xd2\xe5\x68\x00\x55\xe3\x15\x00\x00\x1a\x01\x30\xd2\xe5\x74\x00\x53\xe3\x12\x00\x00\x1a\x02\x30\xd2\xe5\x74\x00\x53\xe3\x0f\x00\x00\x1a\x03\x30\xd2\xe5\x70\x00\x53\xe3\x0c\x00\x00\x1a\x04\x30\xd2\xe5\x3a\x00\x53\xe3\x09\x00\x00\x1a\x05\x30\xd2\xe5\x2f\x00\x53\xe3\x06\x00\x00\x1a\x06\x30\xd2\xe5\x2f\x00\x53\xe3\x03\x00\x00\x1a\x02\x00\xa0\xe1\x9c\xf8\xff\xeb\x00\x50\xa0\xe1\x5a\x00\x00\xea\x00\x80\xd0\xe5\x00\x00\x58\xe3\x00\x80\xa0\x11\x01\x80\xa0\x01\x08\x00\xa0\xe1\x7f\xf8\xff\xeb\x00\x40\xa0\xe1\x07\x00\x50\xe3\x04\x00\x00\xda\x07\x00\x88\xe2\x2f\x10\xa0\xe3\x7c\xf8\xff\xeb\x00\x00\x50\xe3\x00\x40\x68\x10\x06\x00\xa0\xe1\x75\xf8\xff\xeb\x04\x90\xa0\xe1\x01\x00\x80\xe2\x04\x70\x80\xe0\x2f\x00\x55\xe3\x01\x70\x87\x12\x00\x00\x5a\xe3\x08\x00\x00\x0a\x0a\x00\xa0\xe1\x0d\x10\xa0\xe1\x2c\xf8\xff\xeb\x00\x00\x50\xe3\x03\x00\x00\x0a\x0d\x00\xa0\xe1\x67\xf8\xff\xeb\x03\x70\x87\xe2\x00\x70\x87\xe0\x07\x00\xa0\xe1\x54\xf8\xff\xeb\x00\x50\x50\xe2\x36\x00\x00\x0a\x05\xb0\xa0\xe1\x05\x00\xa0\xe1\x08\x10\xa0\xe1\x09\x20\xa0\xe1\x29\xf8\xff\xeb\x00\x00\x5a\xe3\x26\x00\x00\x0a\x00\x30\xa0\xe3\x09\x30\xc5\xe7\x05\x00\xa0\xe1\xb8\x10\x9f\xe5\x01\x10\x8f\xe0\x0d\x20\xa0\xe3\x26\xf8\xff\xeb\x00\x00\x50\xe3\x1d\x00\x00\x1a\x05\x00\xa0\xe1\x5d\x10\xa0\xe3\x51\xf8\xff\xeb\x00\x80\x50\xe2\x18\x00\x00\x0a\x0d\x00\xa0\xe1\x4a\xf8\xff\xeb\x00\x40\xa0\xe1\x08\x00\xa0\xe1\x47\xf8\xff\xeb\x03\x40\x84\xe2\x01\x20\x80\xe2\x04\x00\x88\xe0\x08\x10\xa0\xe1\x06\xf8\xff\xeb\x08\x00\xa0\xe1\x64\x10\x9f\xe5\x01\x10\x8f\xe0\x03\x20\xa0\xe3\x0a\xf8\xff\xeb\x0d\x00\xa0\xe1\x3b\xf8\xff\xeb\x00\x20\xa0\xe1\x03\x00\x88\xe2\x0d\x10\xa0\xe1\x04\xf8\xff\xeb\x0d\x00\xa0\xe1\x35\xf8\xff\xeb\x03\x40\x89\xe2\x00\x40\x84\xe0\x00\x30\xd6\xe5\x2f\x00\x53\xe3\x2f\x30\xa0\x13\x04\x30\xc5\x17\x01\x40\x84\x12\x04\x00\x8b\xe0\x06\x10\xa0\xe1\x07\x20\x64\xe0\xf7\xf7\xff\xeb\x05\x00\xa0\xe1\x14\xd0\x8d\xe2\xf0\x8f\xbd\xe8\xb8\x6d\x00\x00\x70\x6d\x00\x00\x04\xe0\x2d\xe5\x2c\xd0\x4d\xe2\x48\x30\x9f\xe5\x03\x30\x8f\xe0\x04\x00\x8d\xe5\x10\x10\x8d\xe5\x14\x20\x8d\xe5\x38\x20\x9f\xe5\x02\x20\x93\xe7\x18\x20\x8d\xe5\x30\x20\x9f\xe5\x02\x20\x93\xe7\x1c\x20\x8d\xe5\x28\x20\x9f\xe5\x02\x30\x93\xe7\x20\x30\x8d\xe5\x00\x30\xa0\xe3\x24\x30\x8d\xe5\x04\x00\x8d\xe2\x5c\x13\x00\xeb\x2c\xd0\x8d\xe2\x00\x80\xbd\xe8\x9c\xfc\x00\x00\xe8\x00\x00\x00\xfc\x00\x00\x00\xf0\x00\x00\x00\xf0\x4f\x2d\xe9\x8e\xde\x4d\xe2\x0c\xd0\x4d\xe2\x10\x00\x8d\xe5\x14\x10\x8d\xe5\x02\x50\xa0\xe1\x03\xb0\xa0\xe1\x10\x49\x9d\xe5\x00\x30\xa0\xe3\x02\x1b\x8d\xe2\xb2\x3a\xc1\xe1\x14\x29\x9d\xe5\x00\x30\x82\xe5\x00\xb0\x8d\xe5\x81\x0e\x8d\xe2\x0c\x00\x80\xe2\x80\x10\xa0\xe3\xa0\x22\x9f\xe5\x02\x20\x8f\xe0\x05\x30\xa0\xe1\x05\xf8\xff\xeb\x00\x00\x54\xe3\x08\x00\x00\x1a\x00\x50\x8d\xe5\x04\xb0\x8d\xe5\x1c\x00\x8d\xe2\x02\x1b\xa0\xe3\x7c\x22\x9f\xe5\x02\x20\x8f\xe0\x0b\x30\xa0\xe1\xfb\xf7\xff\xeb\x60\x00\x00\xea\x00\x50\x8d\xe5\x1c\x00\x8d\xe2\x02\x1b\xa0\xe3\x60\x22\x9f\xe5\x02\x20\x8f\xe0\x0b\x30\xa0\xe1\xf3\xf7\xff\xeb\x1c\x10\x8d\xe2\x00\x90\x81\xe0\x00\x10\x94\xe5\x00\x00\x51\xe3\x3b\x00\x00\x0a\x64\x30\x89\xe2\x81\x2e\x8d\xe2\x0c\x20\x82\xe2\x03\x00\x52\xe1\x00\x40\xa0\x93\x84\x00\x00\x9a\x04\x80\xa0\xe1\x04\xc0\xa0\xe1\x3c\x60\xa0\xe3\x3e\x50\xa0\xe3\x2f\x70\xa0\xe3\x02\xa0\xa0\xe1\x03\x00\x00\xea\x08\xc0\x8c\xe2\x65\x00\x80\xe2\x00\x00\x5a\xe1\x78\x00\x00\x9a\x01\x60\xc9\xe4\x00\x30\xd1\xe5\x00\x00\x53\xe3\x06\x00\x00\x0a\x09\x20\xa0\xe1\x01\x00\xa0\xe1\x01\x30\xc2\xe4\x02\x90\xa0\xe1\x01\x30\xf0\xe5\x00\x00\x53\xe3\xfa\xff\xff\x1a\x01\x50\xc9\xe4\x04\x00\x9c\xe5\x00\x00\x50\xe3\x08\x00\x00\x0a\x00\x30\xd0\xe5\x00\x00\x53\xe3\x05\x00\x00\x0a\x09\x20\xa0\xe1\x01\x30\xc2\xe4\x02\x90\xa0\xe1\x01\x30\xf0\xe5\x00\x00\x53\xe3\xfa\xff\xff\x1a\x00\x60\xc9\xe5\x01\x70\xc9\xe5\x02\x00\x89\xe2\x00\x30\xd1\xe5\x00\x00\x53\xe3\x05\x00\x00\x0a\x00\x20\xa0\xe1\x01\x30\xc2\xe4\x02\x00\xa0\xe1\x01\x30\xf1\xe5\x00\x00\x53\xe3\xfa\xff\xff\x1a\x00\x90\xa0\xe1\x01\x50\xc9\xe4\x0c\x20\x68\xe0\x08\x30\x84\xe2\x03\x10\x92\xe7\x00\x00\x51\xe3\xd0\xff\xff\x1a\x3c\x30\xa0\xe3\x00\x30\xc9\xe5\x2f\x30\xa0\xe3\x01\x30\xc9\xe5\x75\x30\xa0\xe3\x02\x30\xc9\xe5\x3a\x30\xa0\xe3\x03\x30\xc9\xe5\x04\x90\x89\xe2\x00\x30\xdb\xe5\x00\x00\x53\xe3\x05\x00\x00\x0a\x09\x20\xa0\xe1\x01\x30\xc2\xe4\x02\x90\xa0\xe1\x01\x30\xfb\xe5\x00\x00\x53\xe3\xfa\xff\xff\x1a\x09\x00\xa0\xe1\x04\x11\x9f\xe5\x01\x10\x8f\xe0\x81\x2e\x8d\xe2\x0c\x20\x82\xe2\x02\x20\x69\xe0\xab\xf7\xff\xeb\x00\x30\xa0\xe3\x00\x30\x8d\xe5\x14\x00\x9d\xe5\x8a\x1e\x8d\xe2\x04\x10\x81\xe2\x8a\x2e\x8d\xe2\x02\x20\x82\xe2\x89\x3e\x8d\xe2\x0c\x30\x83\xe2\xd9\x11\x00\xeb\x00\x00\x50\xe3\x00\x40\xa0\x03\x28\x00\x00\x0a\x10\x20\x9d\xe5\x00\x00\x52\xe3\x09\x00\x00\xaa\x8a\x0e\x8d\xe2\x04\x00\x80\xe2\x02\x3b\x8d\xe2\xb2\x1a\xd3\xe1\x00\x20\xa0\xe3\xb3\x0c\x00\xeb\x00\x00\x50\xe3\x10\x00\x8d\xe5\x00\x40\xa0\xb3\x1b\x00\x00\xba\x02\x1b\x8d\xe2\xb2\x3a\xd1\xe1\x81\x2e\x8d\xe2\x0c\x20\x82\xe2\x00\x20\x8d\xe5\x1c\x20\x8d\xe2\x04\x20\x8d\xe5\x18\x29\x9d\xe5\x08\x20\x8d\xe5\x10\x00\x9d\xe5\x9c\x18\x9d\xe5\x8a\x2e\x8d\xe2\x04\x20\x82\xe2\xa0\x14\x00\xeb\x00\x00\x50\xe3\x03\x00\x00\xca\x10\x00\x9d\xe5\xa3\xf7\xff\xeb\x00\x40\xa0\xe3\x07\x00\x00\xea\x10\x00\x9d\xe5\x14\x19\x9d\xe5\x76\x0f\x00\xeb\x00\x40\xa0\xe1\x10\x00\x9d\xe5\x9b\xf7\xff\xeb\x00\x00\x00\xea\x00\x40\xa0\xe3\x04\x00\xa0\xe1\xec\xd0\x8d\xe2\x02\xdb\x8d\xe2\xf0\x8f\xbd\xe8\x58\x6c\x00\x00\x38\x6c\x00\x00\xe8\x6c\x00\x00\x6c\x6b\x00\x00\x04\xe0\x2d\xe5\x14\xd0\x4d\xe2\x18\xc0\x9d\xe5\x00\xc0\x8d\xe5\x1c\xc0\x9d\xe5\x04\xc0\x8d\xe5\x10\xc0\x9f\xe5\x0c\xc0\x8f\xe0\x08\xc0\x8d\xe5\x36\xff\xff\xeb\x14\xd0\x8d\xe2\x00\x80\xbd\xe8\x10\x6b\x00\x00\xf0\x4f\x2d\xe9\x07\xdc\x4d\xe2\x0c\xd0\x4d\xe2\x2c\x00\x8d\xe5\x18\x10\x8d\xe5\x02\x70\xa0\xe1\x03\x40\xa0\xe1\x30\x87\x9d\xe5\xd0\x18\x9f\xe5\x01\x10\x8f\xe0\x44\x10\x8d\xe5\x00\x30\xa0\xe3\x04\x37\x8d\xe5\x01\x30\xa0\xe3\x00\x37\x8d\xe5\x38\x27\x9d\xe5\x00\x00\x52\xe3\x00\x30\xe0\x13\x00\x30\x82\x15\x00\x00\x54\xe3\xa4\x48\x9f\x05\x04\x40\x8f\x00\x2c\x30\x9d\xe5\x00\x00\x93\xe5\x00\x00\x50\xe3\x17\x00\x00\x0a\x04\x60\x83\xe2\x03\x50\xa0\xe1\x04\x10\xa0\xe1\x52\x0e\x00\xeb\x00\x30\x50\xe2\x0b\x00\x00\x0a\x10\x30\x8d\xe5\x00\x00\x95\xe5\x70\x18\x9f\xe5\x01\x10\x8f\xe0\xc6\xf6\xff\xeb\x00\x00\x50\xe3\x0c\x00\x00\x1a\x38\xc7\x9d\xe5\x00\x00\x5c\xe3\x00\x30\xa0\x13\x00\x30\x8c\x15\xd3\x01\x00\xea\x06\x50\xa0\xe1\x04\x00\x96\xe4\x00\x00\x50\xe3\xeb\xff\xff\x1a\x10\x30\x8d\xe5\x01\x00\x00\xea\x00\x10\xa0\xe3\x10\x10\x8d\xe5\x34\x27\x9d\xe5\x00\x00\x52\xe3\x02\x00\xa0\x03\x0a\x00\xa0\x13\x02\x10\xa0\xe3\x00\x20\xa0\xe3\x3a\xf7\xff\xeb\x00\x00\x50\xe3\x14\x00\x8d\xe5\x0a\x00\x00\xaa\x38\x37\x9d\xe5\x00\x00\x53\xe3\x64\x30\xe0\x13\x38\xc7\x9d\x15\x00\x30\x8c\x15\xf0\x07\x9f\xe5\x00\x00\x8f\xe0\xdb\xf6\xff\xeb\x00\x10\xa0\xe3\x10\x10\x8d\xe5\xb6\x01\x00\xea\x80\x00\x8d\xe2\x00\x10\xa0\xe3\x80\x20\xa0\xe3\x0d\xf7\xff\xeb\x34\x37\x9d\xe5\x00\x00\x53\xe3\x0f\x00\x00\x0a\x0a\x20\xa0\xe3\xbc\x37\x9f\xe5\x07\xcc\x8d\xe2\x08\xc0\x8c\xe2\xb3\x20\x8c\xe1\x00\x00\x58\xe3\xac\x27\x9f\x15\x02\x30\x83\x12\xb3\x20\x8c\x11\xa4\x37\x9f\xe5\x44\x10\x9d\xe5\x03\x30\x91\xe7\x88\xc0\x8d\xe2\x0f\x00\x93\xe8\x0f\x00\x8c\xe8\x08\x00\x00\xea\x02\x20\xa0\xe3\x7c\x37\x9f\xe5\x07\xcc\x8d\xe2\x08\xc0\x8c\xe2\xb3\x20\x8c\xe1\x00\x00\x58\xe3\x6c\x27\x9f\x15\x02\x30\x83\x12\xb3\x20\x8c\x11\x04\x30\xa0\xe3\x00\x30\x8d\xe5\x14\x00\x9d\xe5\x01\x10\xa0\xe3\x02\x20\xa0\xe3\x07\x3c\x8d\xe2\x87\xf6\xff\xeb\x00\x00\x50\xe3\x09\x00\x00\xaa\x38\x17\x9d\xe5\x00\x00\x51\xe3\x64\x30\xe0\x13\x00\x30\x81\x15\x34\x07\x9f\xe5\x00\x00\x8f\xe0\xa8\xf6\xff\xeb\x00\x20\xa0\xe3\x10\x20\x8d\xe5\x83\x01\x00\xea\x00\x00\x57\xe3\x39\x00\x00\x0a\x34\x37\x9d\xe5\x00\x00\x53\xe3\x0f\x00\x00\x0a\x07\x00\xa0\xe1\xf8\xf6\xff\xeb\x54\x00\x8d\xe5\x04\x30\xa0\xe3\x00\x30\x8d\xe5\x14\x00\x9d\xe5\x29\x10\xa0\xe3\x11\x20\xa0\xe3\x54\x30\x8d\xe2\x6c\xf6\xff\xeb\x00\x00\x50\xe3\x76\x01\x00\xaa\xdc\x06\x9f\xe5\x00\x00\x8f\xe0\x91\xf6\xff\xeb\x72\x01\x00\xea\x07\x00\xa0\xe1\xe5\xf6\xff\xeb\x58\x00\x8d\xe5\x01\x00\x70\xe3\x0d\x00\x00\x0a\x84\x00\x8d\xe5\x04\x30\xa0\xe3\x00\x30\x8d\xe5\x14\x00\x9d\xe5\x00\x10\xa0\xe3\x20\x20\xa0\xe3\x58\x30\x8d\xe2\x59\xf6\xff\xeb\x00\x00\x50\xe3\x1b\x00\x00\xaa\x94\x06\x9f\xe5\x00\x00\x8f\xe0\x7e\xf6\xff\xeb\x17\x00\x00\xea\x00\x40\xa0\xe3\x48\x40\x8d\xe5\x4c\x40\x8d\xe5\x50\x40\x8d\xe5\x07\x00\xa0\xe1\xd1\xf6\xff\xeb\x50\x00\x8d\xe5\x0c\x30\xa0\xe3\x00\x30\x8d\xe5\x14\x00\x9d\xe5\x04\x10\xa0\xe1\x20\x20\xa0\xe3\x48\x30\x8d\xe2\x45\xf6\xff\xeb\x04\x00\x50\xe1\x07\x00\x00\xaa\x48\x06\x9f\xe5\x00\x00\x8f\xe0\x6a\xf6\xff\xeb\x03\x00\x00\xea\x34\x27\x9d\xe5\x00\x00\x52\xe3\x1c\x20\xa0\x13\x00\x00\x00\x1a\x10\x20\xa0\xe3\x14\x00\x9d\xe5\x80\x10\x8d\xe2\x97\xf6\xff\xeb\x00\x00\x50\xe3\x0b\x00\x00\x0a\x38\xc7\x9d\xe5\x00\x00\x5c\xe3\x64\x30\xe0\x13\x00\x30\x8c\x15\x04\x06\x9f\xe5\x00\x00\x8f\xe0\x58\xf6\xff\xeb\x14\x00\x9d\xe5\xb9\xf6\xff\xeb\x00\x10\xa0\xe3\x10\x10\x8d\xe5\x31\x01\x00\xea\x38\x27\x9d\xe5\x00\x00\x52\xe3\x00\x30\xa0\x13\x00\x30\x82\x15\xd8\x35\x9f\xe5\x18\xc0\x9d\xe5\x93\xcc\x83\xe0\x23\x33\xb0\xe1\x40\x30\x8d\xe5\x01\x10\xa0\x03\x40\x10\x8d\x05\xfa\x2f\xa0\x03\x18\x20\x8d\x05\x2c\xc0\x9d\xe5\x00\x30\x9c\xe5\x00\x00\x53\xe3\x1e\x01\x00\x0a\x01\x10\xa0\xe3\x20\x10\x8d\xe5\x00\x20\xa0\xe3\x24\x20\x8d\xe5\x6c\xc0\x8d\xe2\x3c\xc0\x8d\xe5\x04\x10\x8c\xe2\x38\x10\x8d\xe5\x88\x25\x9f\xe5\x02\x20\x8f\xe0\x30\x20\x8d\xe5\x34\xc7\x9d\xe5\x00\x00\x5c\xe3\x18\x01\x00\x0a\x20\x10\x9d\xe5\x00\x00\x51\xe3\x31\x01\x00\x1a\x00\x30\x8d\xe5\x40\x20\x9d\xe5\x04\x20\x8d\xe5\x01\x0c\x8d\xe2\x06\x1c\xa0\xe3\x54\x25\x9f\xe5\x02\x20\x8f\xe0\x50\x35\x9f\xe5\x03\x30\x8f\xe0\x54\xf6\xff\xeb\x00\x50\xa0\xe1\x00\x20\xa0\xe3\x60\x20\x8d\xe5\x64\x20\x8d\xe5\x3c\xc0\x9d\xe5\x00\x20\x8c\xe5\x38\x30\x9d\xe5\x04\x20\x83\xe4\x38\x10\x9d\xe5\x04\x20\x81\xe5\x04\x30\x83\xe2\x04\x20\x83\xe4\x00\x20\x83\xe5\x02\x30\xa0\xe3\x68\x30\x8d\xe5\x0c\x05\x9f\xe5\x00\x00\x8f\xe0\x08\x15\x9f\xe5\x01\x10\x8f\xe0\x68\x30\x8d\xe2\x60\x20\x8d\xe2\x0c\x30\x43\xe2\x61\xf6\xff\xeb\x00\x00\x50\xe3\x0e\x00\x00\x0a\x38\xc7\x9d\xe5\x00\x00\x5c\xe3\x64\x30\xe0\x13\x00\x30\x8c\x15\xdc\x34\x9f\xe5\x44\x10\x9d\xe5\x03\x30\x91\xe7\x00\x40\x93\xe5\xed\xf5\xff\xeb\x00\x20\xa0\xe1\x04\x00\xa0\xe1\xc4\x14\x9f\xe5\x01\x10\x8f\xe0\x24\xf6\xff\xeb\xdb\x00\x00\xea\x5c\x40\x9d\xe5\x00\x00\x54\xe3\x14\x00\x00\x0a\x00\x60\xa0\xe3\xa8\x74\x9f\xe5\x07\x70\x8f\xe0\x07\x80\xa0\xe1\x14\x70\x9d\xe5\x14\x30\x94\xe5\x00\x30\x8d\xe5\x10\x30\x94\xe5\x04\x30\x8d\xe5\x07\x00\xa0\xe1\x01\x1c\x8d\xe2\x05\x20\xa0\xe1\x06\x30\xa0\xe1\x33\xf6\xff\xeb\x00\x50\x50\xe2\x01\x00\x00\xaa\x08\x00\xa0\xe1\xea\xf5\xff\xeb\x1c\x40\x94\xe5\x00\x00\x54\xe3\xef\xff\xff\x1a\x5c\x00\x9d\xe5\x33\xf6\xff\xeb\x00\x00\x55\xe3\x04\x00\x00\xaa\x38\x27\x9d\xe5\x00\x00\x52\xe3\x64\x30\xe0\x13\x00\x30\x82\x15\xba\x00\x00\xea\x01\x8c\x8d\xe2\x34\xc4\x9f\xe5\x0c\xc0\x8f\xe0\x34\xc0\x8d\xe5\x07\x1c\x8d\xe2\x04\x10\x81\xe2\x00\x10\x8d\xe5\x14\x00\x9d\xe5\x08\x10\xa0\xe1\x06\x2c\xa0\xe3\x18\x30\x9d\xe5\xe7\x0c\x00\xeb\x00\x70\x50\xe2\x04\x00\x00\xaa\x38\x27\x9d\xe5\x00\x00\x52\xe3\x64\x30\xe0\x13\x00\x30\x82\x15\xa7\x00\x00\xea\x00\x00\x57\xe3\x01\x00\x00\x0a\x16\x00\x00\xca\x9c\x00\x00\xea\x10\x30\x9d\xe5\x00\x00\x53\xe3\x04\x00\x00\x0a\x38\xc7\x9d\xe5\x00\x00\x5c\xe3\x00\x30\xa0\x13\x00\x30\x8c\x15\x9b\x00\x00\xea\x34\x17\x9d\xe5\x00\x00\x51\xe3\x91\x00\x00\x0a\x20\x20\x9d\xe5\x00\x00\x52\xe3\x01\x10\xa0\x03\x20\x10\x8d\x05\x8c\x00\x00\x0a\x24\x30\x9d\xe5\x01\x30\x43\xe2\x24\x30\x8d\xe5\x00\xc0\xa0\xe3\x20\xc0\x8d\xe5\x86\x00\x00\xea\x00\x10\xa0\xe3\x0c\x10\x8d\xe5\x1c\x10\x8d\xe5\x01\xb0\xa0\xe1\x01\x40\xa0\xe1\x01\x60\xa0\xe1\x01\x50\xa0\xe1\x28\x10\x8d\xe5\x07\x90\xa0\xe1\x05\x70\xa0\xe1\x08\x30\xd5\xe7\x0d\x00\x53\xe3\x07\x00\x00\x0a\x3a\x00\x53\xe3\x02\x00\x00\x0a\x0a\x00\x53\xe3\x22\x00\x00\x1a\x02\x00\x00\xea\x00\x00\x56\xe3\x05\x60\xa0\x01\x1e\x00\x00\xea\x00\x00\x56\xe3\x1b\x00\x00\x0a\x06\x30\x88\xe0\x01\x60\x86\xe2\x06\xa0\xa0\xe1\x01\x20\xf3\xe5\x20\x00\x52\xe3\xfa\xff\xff\x0a\x04\x40\x88\xe0\x04\x00\xa0\xe1\x30\x10\x9d\xe5\x08\x20\xa0\xe3\xb9\xf5\xff\xeb\x00\x00\x50\xe3\x04\x00\x00\x1a\x06\xb0\x88\xe0\x05\x60\x66\xe0\x28\x60\x8d\xe5\x00\x60\xa0\xe3\x09\x00\x00\xea\x04\x00\xa0\xe1\x34\x10\x9d\xe5\x02\x20\xa0\xe3\xae\xf5\xff\xeb\x00\x00\x50\xe3\x06\xa0\x88\x00\x1c\xa0\x8d\x05\x05\x60\x66\x00\x0c\x60\x8d\x05\x00\x60\xa0\xe3\x01\x40\x87\xe2\x01\x50\x85\xe2\x09\x00\x55\xe1\xd1\xff\xff\x1a\x1c\x20\x9d\xe5\x00\x00\x52\xe3\x9c\xff\xff\x0a\x00\x00\x5b\xe3\x9a\xff\xff\x0a\x10\x30\x9d\xe5\x00\x00\x53\xe3\x1d\x00\x00\x0a\x03\x50\xa0\xe1\x28\x60\x9d\xe5\x0c\x70\x9d\xe5\x02\xa0\xa0\xe1\x04\x40\x95\xe5\x04\x00\xa0\xe1\x0b\x10\xa0\xe1\x06\x20\xa0\xe1\x5a\xf5\xff\xeb\x00\x00\x50\xe3\x0c\x00\x00\x1a\x06\x30\xd4\xe7\x00\x00\x53\xe3\x09\x00\x00\x1a\x08\x40\x95\xe5\x04\x00\xa0\xe1\x0a\x10\xa0\xe1\x07\x20\xa0\xe1\x50\xf5\xff\xeb\x00\x00\x50\xe3\x02\x00\x00\x1a\x07\x30\xd4\xe7\x00\x00\x53\xe3\x03\x00\x00\x0a\x00\x50\x95\xe5\x00\x00\x55\xe3\xe8\xff\xff\x1a\x01\x00\x00\xea\x00\x00\x55\xe3\x79\xff\xff\x1a\x28\xc0\x9d\xe5\x0c\x10\x9d\xe5\x01\x00\x8c\xe0\x14\x00\x80\xe2\x5e\xf5\xff\xeb\x00\x40\x50\xe2\x04\x00\x00\x1a\x38\x27\x9d\xe5\x00\x00\x52\xe3\x65\x30\xe0\x13\x00\x30\x82\x15\x24\x00\x00\xea\x04\x50\xa0\xe1\x10\x30\x9d\xe5\x10\x30\x85\xe4\x04\x50\x84\xe5\x28\xc0\x9d\xe5\x01\x70\x8c\xe2\x11\x30\x8c\xe2\x03\x30\x84\xe0\x08\x30\x84\xe5\x05\x00\xa0\xe1\x0b\x10\xa0\xe1\x0c\x20\xa0\xe1\x26\xf5\xff\xeb\x28\x10\x9d\xe5\x01\x30\x84\xe0\x00\x60\xa0\xe3\x10\x60\xc3\xe5\x07\x00\x85\xe0\x1c\x10\x9d\xe5\x0c\x20\x9d\xe5\x1e\xf5\xff\xeb\x0c\x20\x9d\xe5\x02\x30\x84\xe0\x28\xc0\x9d\xe5\x0c\x30\x83\xe0\x11\x60\xc3\xe5\x04\x37\x9d\xe5\x0c\x30\x84\xe5\x10\x40\x8d\xe5\x4f\xff\xff\xea\x24\x10\x9d\xe5\x01\x10\x81\xe2\x24\x10\x8d\xe5\x2c\x20\x9d\xe5\x01\x31\x92\xe7\x00\x00\x53\xe3\xeb\xfe\xff\x1a\x14\x00\x9d\xe5\x84\xf5\xff\xeb\x10\x00\x9d\xe5\xc3\xdf\x8d\xe2\x01\xdb\x8d\xe2\xf0\x8f\xbd\xe8\x1c\x20\xa0\xe3\xb6\xfe\xff\xea\x30\x41\x9f\xe5\x04\x40\x8f\xe0\x00\x30\x8d\xe5\x40\x30\x9d\xe5\x04\x30\x8d\xe5\x01\x0c\x8d\xe2\x06\x1c\xa0\xe3\x18\x21\x9f\xe5\x02\x20\x8f\xe0\x04\x30\xa0\xe1\x3d\xf5\xff\xeb\x00\x50\xa0\xe1\x00\x20\xa0\xe3\x60\x20\x8d\xe5\x64\x20\x8d\xe5\x3c\x10\x9d\xe5\x00\x20\x81\xe5\x38\x30\x9d\xe5\x04\x20\x83\xe4\x38\xc0\x9d\xe5\x04\x20\x8c\xe5\x04\x30\x83\xe2\x04\x20\x83\xe4\x00\x20\x83\xe5\x02\x30\xa0\xe3\x68\x30\x8d\xe5\x04\x00\xa0\xe1\xe8\xfe\xff\xea\x00\x30\x8d\xe5\x40\x20\x9d\xe5\x04\x20\x8d\xe5\x01\x0c\x8d\xe2\x06\x1c\xa0\xe3\xb4\x20\x9f\xe5\x02\x20\x8f\xe0\xb0\x30\x9f\xe5\x03\x30\x8f\xe0\x22\xf5\xff\xeb\x00\x50\xa0\xe1\x00\x20\xa0\xe3\x60\x20\x8d\xe5\x64\x20\x8d\xe5\x3c\xc0\x9d\xe5\x00\x20\x8c\xe5\x38\x30\x9d\xe5\x04\x20\x83\xe4\x38\x10\x9d\xe5\x04\x20\x81\xe5\x04\x30\x83\xe2\x04\x20\x83\xe4\x00\x20\x83\xe5\x02\x30\xa0\xe3\x68\x30\x8d\xe5\x6c\x00\x9f\xe5\x00\x00\x8f\xe0\xcc\xfe\xff\xea\xec\xf8\x00\x00\xa8\x6a\x00\x00\x98\x6a\x00\x00\x20\x6a\x00\x00\x78\xf9\xff\xff\x07\x6c\x00\x00\xf8\x00\x00\x00\x5c\x69\x00\x00\x00\x69\x00\x00\xb4\x68\x00\x00\x64\x68\x00\x00\x28\x68\x00\x00\xd3\x4d\x62\x10\xdc\x67\x00\x00\x34\x65\x00\x00\x6c\x67\x00\x00\xf4\x66\x00\x00\x28\x67\x00\x00\xec\x00\x00\x00\xe4\x66\x00\x00\xd8\x66\x00\x00\x60\x6b\x00\x00\x6c\x63\x00\x00\xd4\x60\x00\x00\x6c\x60\x00\x00\xf0\x62\x00\x00\x24\x62\x00\x00\x10\x40\x2d\xe9\x10\xd0\x4d\xe2\x00\x40\xa0\xe1\x01\xe0\xa0\xe1\x02\xc0\xa0\xe1\x00\x30\x8d\xe5\x18\x30\x9d\xe5\x04\x30\x8d\xe5\x1c\x30\x9d\xe5\x08\x30\x8d\xe5\x18\x00\x9f\xe5\x00\x00\x8f\xe0\x04\x10\xa0\xe1\x0e\x20\xa0\xe1\x0c\x30\xa0\xe1\x96\xfd\xff\xeb\x10\xd0\x8d\xe2\x10\x80\xbd\xe8\x24\xee\x00\x00\x10\x40\x2d\xe9\x10\xd0\x4d\xe2\x00\x40\xa0\xe1\x01\xe0\xa0\xe1\x02\xc0\xa0\xe1\x00\x30\x8d\xe5\x18\x30\x9d\xe5\x04\x30\x8d\xe5\x1c\x30\x9d\xe5\x08\x30\x8d\xe5\x1c\x00\x9f\xe5\x00\x00\x8f\xe0\x14\x00\x80\xe2\x04\x10\xa0\xe1\x0e\x20\xa0\xe1\x0c\x30\xa0\xe1\x82\xfd\xff\xeb\x10\xd0\x8d\xe2\x10\x80\xbd\xe8\xd8\xed\x00\x00\x04\xe0\x2d\xe5\x1c\xd0\x4d\xe2\x10\x00\x8d\xe5\x00\x00\xa0\xe3\x14\x00\x8d\xe5\x20\x00\x9d\xe5\x00\x00\x8d\xe5\x24\x00\x9d\xe5\x04\x00\x8d\xe5\x28\x00\x9d\xe5\x08\x00\x8d\xe5\x10\x00\x8d\xe2\x72\xfd\xff\xeb\x1c\xd0\x8d\xe2\x00\x80\xbd\xe8\x10\x40\x2d\xe9\x00\x00\x50\xe3\x01\x00\x00\x1a\x10\x80\xbd\xe8\x04\x00\xa0\xe1\x00\x40\x90\xe5\x70\xf4\xff\xeb\x00\x00\x54\xe3\xfa\xff\xff\x1a\x10\x80\xbd\xe8\xf0\x41\x2d\xe9\x00\x60\xa0\xe1\x01\x50\xa0\xe1\x02\x40\xa0\xe1\x03\x80\xa0\xe1\x02\x00\xa0\xe1\xb4\xf4\xff\xeb\x10\x00\x86\xe5\x80\x70\x85\xe2\x12\x2d\x85\xe2\x07\x00\xa0\xe1\x04\x10\xa0\xe1\x04\x20\x82\xe2\x08\x30\xa0\xe1\xf4\xfb\xff\xeb\x04\x00\x86\xe5\x07\x00\xa0\xe1\x04\x10\xa0\xe1\xe1\x2f\x85\xe2\x08\x30\xa0\xe1\xee\xfb\xff\xeb\x00\x00\x86\xe5\x07\x00\xa0\xe1\x04\x10\xa0\xe1\x61\x2f\x85\xe2\x08\x30\xa0\xe1\xe8\xfb\xff\xeb\x08\x00\x86\xe5\x1e\x2d\x85\xe2\x07\x00\xa0\xe1\x04\x10\xa0\xe1\x04\x20\x82\xe2\x08\x30\xa0\xe1\xe1\xfb\xff\xeb\x0c\x00\x86\xe5\xf0\x81\xbd\xe8\x38\x40\x2d\xe9\x00\x40\x50\xe2\x38\x80\xbd\x08\x00\x00\x94\xe5\x44\xf4\xff\xeb\x00\x50\xa0\xe3\x00\x50\x84\xe5\x04\x00\x94\xe5\x40\xf4\xff\xeb\x04\x50\x84\xe5\x08\x00\x94\xe5\x3d\xf4\xff\xeb\x08\x50\x84\xe5\x0c\x00\x94\xe5\x3a\xf4\xff\xeb\x0c\x50\x84\xe5\x10\x00\x94\xe5\x37\xf4\xff\xeb\x10\x50\x84\xe5\x38\x80\xbd\xe8\x10\x40\x2d\xe9\x50\xd0\x4d\xe2\x00\x30\xa0\xe3\x50\x40\x8d\xe2\x40\x30\x64\xe5\x00\x00\x90\xe5\x05\x1c\x81\xe2\x00\x30\x8d\xe5\x04\x10\x81\xe2\x04\x20\xa0\xe1\x0c\x30\x8d\xe2\x8f\x01\x00\xeb\x18\x00\x9f\xe5\x00\x00\x8f\xe0\x04\x10\xa0\xe1\x10\xf4\xff\xeb\x01\x00\x70\xe2\x00\x00\xa0\x33\x50\xd0\x8d\xe2\x10\x80\xbd\xe8\x2c\x60\x00\x00\xf0\x4f\x2d\xe9\x34\xd0\x4d\xe2\x01\x80\xa0\xe1\x02\x60\xa0\xe1\x03\xa0\xa0\xe1\x58\x90\x9d\xe5\x00\x00\x50\xe3\x14\x00\x8d\xe5\x00\x90\xa0\x03\xbc\x00\x00\x0a\x00\x30\xa0\xe1\x00\xb0\xa0\xe3\x01\xb0\x8b\xe2\x00\x30\x93\xe5\x00\x00\x53\xe3\xfb\xff\xff\x1a\x00\x00\x5b\xe3\x06\x00\x00\xda\x0b\x00\xa0\xe1\x0c\x10\xa0\xe3\xed\xf3\xff\xeb\x00\x00\x50\xe3\x10\x00\x8d\xe5\x02\x00\x00\x1a\xac\x00\x00\xea\x00\x30\xa0\xe3\x10\x30\x8d\xe5\x10\x30\x9d\xe5\x18\x30\x8d\xe5\x03\x40\xa0\xe1\x14\x50\x9d\xe5\xa4\x72\x9f\xe5\x07\x70\x8f\xe0\x08\xb0\x8d\xe5\x07\xb0\xa0\xe1\x04\x00\x95\xe5\x0c\x30\x95\xe5\x00\x30\x8d\xe5\x04\x10\x84\xe2\x0a\x20\xa0\xe1\x09\x30\xa0\xe1\x5e\x0f\x00\xeb\x00\x00\x84\xe5\x00\x00\x50\xe3\x12\x00\x00\x0a\x06\x00\xa0\xe1\x00\x10\xa0\xe3\x68\x22\x9f\xe5\x43\xf4\xff\xeb\x08\x00\xa0\xe1\x00\x10\xa0\xe3\x14\x20\xa0\xe3\x3f\xf4\xff\xeb\x00\x00\x94\xe5\x04\x10\x94\xe5\x06\x20\xa0\xe1\xfa\xfb\xff\xeb\xc1\x0f\x86\xe2\x0b\x10\xa0\xe1\x36\x20\xa0\xe3\xef\xf3\xff\xeb\x00\x00\x50\xe3\x01\x30\xa0\x03\x08\x30\x84\x05\x00\x50\x95\xe5\x0c\x40\x84\xe2\x00\x00\x55\xe3\xde\xff\xff\x1a\x08\xb0\x9d\xe5\x01\x90\xa0\xe3\x26\x3d\x86\xe2\x04\x30\x83\xe2\x0c\x30\x8d\xe5\x1c\xb0\x8d\xe5\x06\x70\xa0\xe1\x59\x00\x00\xea\x00\x30\x95\xe5\x00\x00\x53\xe3\x4f\x00\x00\x0a\x07\x00\xa0\xe1\x00\x10\xa0\xe3\x0a\x20\xa0\xe1\x21\xf4\xff\xeb\x08\x00\xa0\xe1\x00\x10\xa0\xe3\x14\x20\xa0\xe3\x1d\xf4\xff\xeb\x00\x00\x95\xe5\x04\x10\x95\xe5\x07\x20\xa0\xe1\xd8\xfb\xff\xeb\x08\x30\x95\xe5\x02\x00\x59\xe3\x00\x00\x53\xd3\x3b\x00\x00\x0a\x08\x00\xa0\xe1\x07\x10\xa0\xe1\x04\x20\x96\xe5\x0c\x30\x96\xe5\x4e\xff\xff\xeb\x01\x00\x59\xe3\x47\x00\x00\xca\x08\x00\xa0\xe1\x07\x10\xa0\xe1\x81\xff\xff\xeb\x00\x00\x50\xe3\x06\x00\x00\x0a\x05\x1c\x87\xe2\x00\x00\x98\xe5\x04\x10\x81\xe2\x20\x20\x8d\xe2\x24\x02\x00\xeb\x00\x00\x50\xe3\x3d\x00\x00\x0a\x08\x00\xa0\xe1\x62\xff\xff\xeb\x04\x37\xd7\xe5\x00\x00\x53\xe3\x23\x00\x00\x0a\xe1\x3f\x87\xe2\x08\x30\x8d\xe5\x02\xbc\xa0\xe3\x0c\x00\x9d\xe5\x03\x10\xa0\xe1\x0b\x20\xa0\xe1\xa8\xf3\xff\xeb\x16\x4d\x87\xe2\x04\x40\x84\xe2\x08\x00\x9d\xe5\x04\x10\xa0\xe1\x0b\x20\xa0\xe1\xa2\xf3\xff\xeb\x04\x00\xa0\xe1\x0c\x10\x9d\xe5\x0b\x20\xa0\xe1\x9e\xf3\xff\xeb\x08\x00\xa0\xe1\x07\x10\xa0\xe1\x04\x20\x96\xe5\x0c\x30\x96\xe5\x25\xff\xff\xeb\x08\x00\xa0\xe1\x07\x10\xa0\xe1\x5a\xff\xff\xeb\x00\x00\x50\xe3\x06\x00\x00\x0a\x05\x1c\x87\xe2\x00\x00\x98\xe5\x04\x10\x81\xe2\x20\x20\x8d\xe2\xfd\x01\x00\xeb\x00\x00\x50\xe3\x18\x00\x00\x0a\x08\x00\xa0\xe1\x3b\xff\xff\xeb\x07\x00\xa0\xe1\x00\x10\xa0\xe3\x0a\x20\xa0\xe1\xd5\xf3\xff\xeb\x00\x60\x96\xe5\x0c\x50\x85\xe2\x00\x00\x56\xe3\xa8\xff\xff\x1a\x01\x90\x89\xe2\x04\x00\x59\xe3\x04\x00\x00\x0a\x18\x40\x9d\xe5\x14\x60\x9d\xe5\x84\xa0\x9f\xe5\x04\x50\xa0\xe1\xa0\xff\xff\xea\x1c\xb0\x9d\xe5\x00\x90\xa0\xe3\x04\x00\x00\xea\x1c\xb0\x9d\xe5\x02\x00\x00\xea\x1c\xb0\x9d\xe5\x00\x00\x00\xea\x1c\xb0\x9d\xe5\x10\x30\x9d\xe5\x00\x00\x53\xe3\x10\x00\x00\x0a\x00\x00\x5b\xe3\x0a\x00\x00\xda\x00\x40\xa0\xe3\x04\x50\xa0\xe1\x03\x60\xa0\xe1\x04\x00\x96\xe7\x00\x00\x50\xe3\x00\x00\x00\x0a\x61\xf3\xff\xeb\x01\x50\x85\xe2\x0c\x40\x84\xe2\x0b\x00\x55\xe1\xf7\xff\xff\x1a\x10\x00\x9d\xe5\x5b\xf3\xff\xeb\x00\x00\x00\xea\x00\x90\xe0\xe3\x09\x00\xa0\xe1\x34\xd0\x8d\xe2\xf0\x8f\xbd\xe8\x98\x5f\x00\x00\x84\x0b\x00\x00\xf0\x40\x2d\xe9\x14\xd0\x4d\xe2\x00\x70\xa0\xe1\x01\x60\xa0\xe1\x02\x40\xa0\xe1\x00\x20\xa0\xe3\x10\x10\x8d\xe2\x04\x20\x21\xe5\x00\x20\x8d\xe5\x03\x20\xa0\xe1\x28\x30\x9d\xe5\xb0\x0e\x00\xeb\x00\x50\x50\xe2\x00\x00\xa0\x03\x13\x00\x00\x0a\x04\x00\xa0\xe1\x00\x10\xa0\xe3\x48\x20\x9f\xe5\x95\xf3\xff\xeb\x06\x00\xa0\xe1\x00\x10\xa0\xe3\x14\x20\xa0\xe3\x91\xf3\xff\xeb\x05\x00\xa0\xe1\x0c\x10\x9d\xe5\x04\x20\xa0\xe1\x4c\xfb\xff\xeb\x05\x00\xa0\xe1\x37\xf3\xff\xeb\x06\x00\xa0\xe1\x04\x10\xa0\xe1\x07\x20\xa0\xe1\x00\x30\xa0\xe3\xc4\xfe\xff\xeb\x01\x00\xa0\xe3\x14\xd0\x8d\xe2\xf0\x80\xbd\xe8\x84\x0b\x00\x00\x08\x40\x2d\xe9\x00\x00\x50\xe3\x03\x00\x00\x0a\x00\x10\xa0\xe3\x01\x20\xa0\xe1\x5e\xf3\xff\xeb\x08\x80\xbd\xe8\x00\x00\xa0\xe3\x08\x80\xbd\xe8\x10\x40\x2d\xe9\x68\xd0\x4d\xe2\x00\x30\xa0\xe1\x01\x20\xa0\xe1\x00\x10\xa0\xe3\x00\x10\x8d\xe5\x0c\x10\x8d\xe2\x04\x10\x8d\xe5\x00\x00\xe0\xe3\x03\x10\xa0\xe1\x54\x30\x9f\xe5\x03\x30\x8f\xe0\x04\xfc\xff\xeb\x00\x40\x50\xe2\x02\x40\xe0\x03\x0d\x00\x00\x0a\x04\x00\xa0\xe1\x0c\x10\x9d\xe5\x10\x20\x8d\xe2\x23\x11\x00\xeb\x04\x00\xa0\xe1\x0f\xf3\xff\xeb\x10\x00\x8d\xe2\x24\x10\x9f\xe5\x01\x10\x8f\xe0\x4a\x11\x00\xeb\xdb\xff\xff\xeb\x00\x40\xa0\xe1\x10\x00\x8d\xe2\x33\x11\x00\xeb\x04\x00\xa0\xe1\x68\xd0\x8d\xe2\x10\x80\xbd\xe8\xe8\x5c\x00\x00\xc8\x5c\x00\x00\x10\x40\x2d\xe9\x68\xd0\x4d\xe2\x00\x30\xa0\xe1\x01\x20\xa0\xe1\x00\x10\xa0\xe3\x00\x10\x8d\xe5\x0c\x10\x8d\xe2\x04\x10\x8d\xe5\x00\x00\xe0\xe3\x03\x10\xa0\xe1\x54\x30\x9f\xe5\x03\x30\x8f\xe0\xe1\xfb\xff\xeb\x00\x40\x50\xe2\x02\x40\xe0\x03\x0d\x00\x00\x0a\x04\x00\xa0\xe1\x0c\x10\x9d\xe5\x10\x20\x8d\xe2\x00\x11\x00\xeb\x04\x00\xa0\xe1\xec\xf2\xff\xeb\x10\x00\x8d\xe2\x24\x10\x9f\xe5\x01\x10\x8f\xe0\x27\x11\x00\xeb\xb8\xff\xff\xeb\x00\x40\xa0\xe1\x10\x00\x8d\xe2\x10\x11\x00\xeb\x04\x00\xa0\xe1\x68\xd0\x8d\xe2\x10\x80\xbd\xe8\x84\x5c\x00\x00\x68\x5c\x00\x00\x10\x40\x2d\xe9\x68\xd0\x4d\xe2\x00\x30\xa0\xe1\x01\x20\xa0\xe1\x00\x10\xa0\xe3\x00\x10\x8d\xe5\x0c\x10\x8d\xe2\x04\x10\x8d\xe5\x00\x00\xe0\xe3\x03\x10\xa0\xe1\x54\x30\x9f\xe5\x03\x30\x8f\xe0\xbe\xfb\xff\xeb\x00\x40\x50\xe2\x02\x40\xe0\x03\x0d\x00\x00\x0a\x04\x00\xa0\xe1\x0c\x10\x9d\xe5\x10\x20\x8d\xe2\xdd\x10\x00\xeb\x04\x00\xa0\xe1\xc9\xf2\xff\xeb\x10\x00\x8d\xe2\x24\x10\x9f\xe5\x01\x10\x8f\xe0\x04\x11\x00\xeb\x95\xff\xff\xeb\x00\x40\xa0\xe1\x10\x00\x8d\xe2\xed\x10\x00\xeb\x04\x00\xa0\xe1\x68\xd0\x8d\xe2\x10\x80\xbd\xe8\x28\x5c\x00\x00\x08\x5c\x00\x00\x10\x40\x2d\xe9\x68\xd0\x4d\xe2\x00\x30\xa0\xe1\x01\x20\xa0\xe1\x00\x10\xa0\xe3\x00\x10\x8d\xe5\x0c\x10\x8d\xe2\x04\x10\x8d\xe5\x00\x00\xe0\xe3\x03\x10\xa0\xe1\x54\x30\x9f\xe5\x03\x30\x8f\xe0\x9b\xfb\xff\xeb\x00\x40\x50\xe2\x02\x40\xe0\x03\x0d\x00\x00\x0a\x04\x00\xa0\xe1\x0c\x10\x9d\xe5\x10\x20\x8d\xe2\xba\x10\x00\xeb\x04\x00\xa0\xe1\xa6\xf2\xff\xeb\x10\x00\x8d\xe2\x24\x10\x9f\xe5\x01\x10\x8f\xe0\xe1\x10\x00\xeb\x72\xff\xff\xeb\x00\x40\xa0\xe1\x10\x00\x8d\xe2\xca\x10\x00\xeb\x04\x00\xa0\xe1\x68\xd0\x8d\xe2\x10\x80\xbd\xe8\xc4\x5b\x00\x00\xa8\x5b\x00\x00\xf0\x47\x2d\xe9\x68\xd0\x4d\xe2\x00\x50\xa0\xe1\x01\xc0\xa0\xe1\x88\x90\x9d\xe5\x00\x10\xe0\xe3\x08\x10\x8d\xe5\x02\x40\xa0\xe1\x03\x80\xa0\xe1\x00\x00\x52\xe3\x00\x00\x53\x03\x01\x00\xe0\x03\x59\x00\x00\x0a\x00\x30\xa0\xe3\x00\x30\x8d\xe5\x0c\x30\x8d\xe2\x04\x30\x8d\xe5\x01\x00\xa0\xe1\x05\x10\xa0\xe1\x0c\x20\xa0\xe1\x4c\x31\x9f\xe5\x03\x30\x8f\xe0\x6e\xfb\xff\xeb\x00\x50\x50\xe2\x4c\x00\x00\x0a\x05\x00\xa0\xe1\x0c\x10\x9d\xe5\x10\x20\x8d\xe2\x8e\x10\x00\xeb\x05\x00\xa0\xe1\x7a\xf2\xff\xeb\x10\x00\x8d\xe2\x20\x11\x9f\xe5\x01\x10\x8f\xe0\xb5\x10\x00\xeb\x00\x70\xa0\xe1\x10\x00\x8d\xe2\x10\x11\x9f\xe5\x01\x10\x8f\xe0\xb0\x10\x00\xeb\x00\x60\xa0\xe1\x10\x00\x8d\xe2\x00\x11\x9f\xe5\x01\x10\x8f\xe0\xab\x10\x00\xeb\x00\xa0\xa0\xe1\x00\x30\x96\xe2\x01\x30\xa0\x13\x00\x50\x97\xe2\x01\x50\xa0\x13\x05\x00\x13\xe1\x00\x20\xa0\x13\x08\x20\x8d\x15\x00\x00\x54\xe3\x09\x00\x00\x0a\x00\x00\x53\xe3\x00\x30\xa0\x03\x00\x30\xc4\x05\x05\x00\x00\x0a\x04\x00\xa0\xe1\x06\x10\xa0\xe1\x40\x20\xa0\xe3\xb4\xf2\xff\xeb\x00\x30\xa0\xe3\x3f\x30\xc4\xe5\x00\x00\x58\xe3\x06\x00\x00\x0a\x00\x00\x55\xe3\x04\x00\x00\x0a\x07\x00\xa0\xe1\x94\x10\x9f\xe5\x01\x10\x8f\xe0\x08\x20\xa0\xe1\x9a\xf2\xff\xeb\x00\x00\x59\xe3\x09\x00\x00\x0a\x00\x00\x5a\xe3\x00\x30\xa0\x03\x00\x30\xc9\x05\x05\x00\x00\x0a\x09\x00\xa0\xe1\x0a\x10\xa0\xe1\x40\x20\xa0\xe3\x9f\xf2\xff\xeb\x00\x30\xa0\xe3\x3f\x30\xc9\xe5\x10\x00\x8d\xe2\x54\x10\x9f\xe5\x01\x10\x8f\xe0\x7e\x10\x00\xeb\x00\x00\x50\xe3\x05\x00\x00\x0a\x68\x20\x8d\xe2\x00\x30\xe0\xe3\x60\x30\x22\xe5\x38\x10\x9f\xe5\x01\x10\x8f\xe0\x82\xf2\xff\xeb\x10\x00\x8d\xe2\x61\x10\x00\xeb\x08\x00\x9d\xe5\x00\x00\x00\xea\x02\x00\xe0\xe3\x68\xd0\x8d\xe2\xf0\x87\xbd\xe8\x40\x5b\x00\x00\x20\x5b\x00\x00\x18\x5b\x00\x00\x18\x5b\x00\x00\xc0\x5a\x00\x00\x80\x5a\x00\x00\xa8\x50\x00\x00\x30\x40\x2d\xe9\x6c\xd0\x4d\xe2\x00\xc0\xa0\xe1\x01\x30\xa0\xe1\x00\x10\xe0\xe3\x08\x10\x8d\xe5\x00\x50\x52\xe2\x01\x00\xe0\x03\x2f\x00\x00\x0a\x00\x20\xa0\xe3\x00\x20\x8d\xe5\x0c\x20\x8d\xe2\x04\x20\x8d\xe5\x01\x00\xa0\xe1\x0c\x10\xa0\xe1\x03\x20\xa0\xe1\xa4\x30\x9f\xe5\x03\x30\x8f\xe0\x02\xfb\xff\xeb\x00\x40\x50\xe2\x02\x00\xe0\x03\x22\x00\x00\x0a\x04\x00\xa0\xe1\x0c\x10\x9d\xe5\x10\x20\x8d\xe2\x21\x10\x00\xeb\x04\x00\xa0\xe1\x0d\xf2\xff\xeb\x10\x00\x8d\xe2\x74\x10\x9f\xe5\x01\x10\x8f\xe0\x48\x10\x00\xeb\x00\x10\x50\xe2\x00\x30\xa0\x03\x00\x30\xc5\x05\x05\x00\x00\x0a\x05\x00\xa0\xe1\x40\x20\xa0\xe3\x5c\xf2\xff\xeb\x00\x30\xa0\xe3\x3f\x30\xc5\xe5\x08\x30\x8d\xe5\x10\x00\x8d\xe2\x40\x10\x9f\xe5\x01\x10\x8f\xe0\x3a\x10\x00\xeb\x00\x00\x50\xe3\x05\x00\x00\x0a\x68\x20\x8d\xe2\x00\x30\xe0\xe3\x60\x30\x22\xe5\x24\x10\x9f\xe5\x01\x10\x8f\xe0\x3e\xf2\xff\xeb\x10\x00\x8d\xe2\x1d\x10\x00\xeb\x08\x00\x9d\xe5\x6c\xd0\x8d\xe2\x30\x80\xbd\xe8\xe8\x59\x00\x00\xcc\x59\x00\x00\x70\x59\x00\x00\x98\x4f\x00\x00\xf0\x41\x2d\xe9\x68\xd0\x4d\xe2\x00\x40\xa0\xe1\x01\xc0\xa0\xe1\x00\x10\xe0\xe3\x08\x10\x8d\xe5\x02\x50\xa0\xe1\x03\x60\xa0\xe1\x00\x00\x52\xe3\x00\x00\x53\x03\x01\x00\xe0\x03\x49\x00\x00\x0a\x00\x30\xa0\xe3\x00\x30\x8d\xe5\x0c\x30\x8d\xe2\x04\x30\x8d\xe5\x01\x00\xa0\xe1\x04\x10\xa0\xe1\x0c\x20\xa0\xe1\x0c\x31\x9f\xe5\x03\x30\x8f\xe0\xc0\xfa\xff\xeb\x00\x40\x50\xe2\x3c\x00\x00\x0a\x04\x00\xa0\xe1\x0c\x10\x9d\xe5\x10\x20\x8d\xe2\xe0\x0f\x00\xeb\x04\x00\xa0\xe1\xcc\xf1\xff\xeb\x10\x00\x8d\xe2\xe0\x10\x9f\xe5\x01\x10\x8f\xe0\x07\x10\x00\xeb\x00\x70\xa0\xe1\x10\x00\x8d\xe2\xd0\x10\x9f\xe5\x01\x10\x8f\xe0\x02\x10\x00\xeb\x00\x30\x97\xe2\x01\x30\xa0\x13\x00\x80\xa0\xe1\x00\x40\x90\xe2\x01\x40\xa0\x13\x04\x00\x13\xe1\x00\x20\xa0\x13\x08\x20\x8d\x15\x00\x00\x55\xe3\x08\x00\x00\x0a\x00\x00\x53\xe3\x00\x30\xa0\x03\x00\x30\x85\x05\x04\x00\x00\x0a\x07\x00\xa0\xe1\x8c\x10\x9f\xe5\x01\x10\x8f\xe0\x05\x20\xa0\xe1\xfb\xf1\xff\xeb\x00\x00\x56\xe3\x08\x00\x00\x0a\x00\x00\x54\xe3\x00\x30\xa0\x03\x00\x30\x86\x05\x04\x00\x00\x0a\x08\x00\xa0\xe1\x64\x10\x9f\xe5\x01\x10\x8f\xe0\x06\x20\xa0\xe1\xf0\xf1\xff\xeb\x10\x00\x8d\xe2\x54\x10\x9f\xe5\x01\x10\x8f\xe0\xe0\x0f\x00\xeb\x00\x00\x50\xe3\x05\x00\x00\x0a\x68\x20\x8d\xe2\x00\x30\xe0\xe3\x60\x30\x22\xe5\x38\x10\x9f\xe5\x01\x10\x8f\xe0\xe4\xf1\xff\xeb\x10\x00\x8d\xe2\xc3\x0f\x00\xeb\x08\x00\x9d\xe5\x00\x00\x00\xea\x02\x00\xe0\xe3\x68\xd0\x8d\xe2\xf0\x81\xbd\xe8\x0c\x59\x00\x00\xf4\x58\x00\x00\x00\x59\x00\x00\x44\x58\x00\x00\x18\x58\x00\x00\x08\x58\x00\x00\x30\x4e\x00\x00\x30\x40\x2d\xe9\x6c\xd0\x4d\xe2\x01\x30\xa0\xe1\x00\x10\xe0\xe3\x08\x10\x8d\xe5\x02\x50\xa0\xe1\x00\x10\xa0\xe1\x00\x00\x50\xe3\x00\x00\x52\x13\x01\x00\xe0\x03\x31\x00\x00\x0a\x00\x00\x53\xe3\x01\x00\xe0\x03\x2e\x00\x00\x0a\x00\x20\xa0\xe3\x00\x20\x8d\xe5\x0c\x20\x8d\xe2\x04\x20\x8d\xe5\x00\x00\xe0\xe3\x03\x20\xa0\xe1\xa4\x30\x9f\xe5\x03\x30\x8f\xe0\x60\xfa\xff\xeb\x00\x40\x50\xe2\x02\x00\xe0\x03\x22\x00\x00\x0a\x04\x00\xa0\xe1\x0c\x10\x9d\xe5\x10\x20\x8d\xe2\x7f\x0f\x00\xeb\x04\x00\xa0\xe1\x6b\xf1\xff\xeb\x10\x00\x8d\xe2\x74\x10\x9f\xe5\x01\x10\x8f\xe0\xa6\x0f\x00\xeb\x00\x10\x50\xe2\x00\x30\xa0\x03\x00\x30\xc5\x05\x05\x00\x00\x0a\x05\x00\xa0\xe1\x10\x20\xa0\xe3\xba\xf1\xff\xeb\x00\x30\xa0\xe3\x0f\x30\xc5\xe5\x08\x30\x8d\xe5\x10\x00\x8d\xe2\x40\x10\x9f\xe5\x01\x10\x8f\xe0\x98\x0f\x00\xeb\x00\x00\x50\xe3\x05\x00\x00\x0a\x68\x20\x8d\xe2\x00\x30\xe0\xe3\x60\x30\x22\xe5\x24\x10\x9f\xe5\x01\x10\x8f\xe0\x9c\xf1\xff\xeb\x10\x00\x8d\xe2\x7b\x0f\x00\xeb\x08\x00\x9d\xe5\x6c\xd0\x8d\xe2\x30\x80\xbd\xe8\xe0\x57\x00\x00\xc4\x57\x00\x00\xe8\x56\x00\x00\x10\x4d\x00\x00\xf0\x4f\x2d\xe9\x6c\xd0\x4d\xe2\x00\x90\xa0\xe1\x01\xb0\xa0\xe1\x02\x50\xa0\xe1\x90\xa0\x9d\xe5\x94\x60\x9d\xe5\xa0\x70\x9d\xe5\x03\x80\xa0\xe1\x00\x00\x5a\xe3\x00\x00\x53\x13\x01\x00\xe0\x03\x5a\x00\x00\x0a\x98\x20\x9d\xe5\x00\x00\x55\xe3\x00\x00\x52\x13\x01\x00\xe0\x03\x55\x00\x00\x0a\x09\x00\xa0\xe3\x08\x10\xa0\xe3\x15\xf1\xff\xeb\x00\x40\xa0\xe1\x48\x31\x9f\xe5\x03\x30\x8f\xe0\x00\x30\x80\xe5\x9c\x30\x9d\xe5\x04\x30\x80\xe5\x38\x31\x9f\xe5\x03\x30\x8f\xe0\x08\x30\x80\xe5\x0c\x50\x80\xe5\x2c\x31\x9f\xe5\x03\x30\x8f\xe0\x10\x30\x80\xe5\x98\x30\x9d\xe5\x14\x30\x80\xe5\x1c\x31\x9f\xe5\x03\x30\x8f\xe0\x18\x30\x80\xe5\x1c\x80\x80\xe5\x10\x31\x9f\xe5\x03\x30\x8f\xe0\x20\x30\x80\xe5\x24\xa0\x80\xe5\x04\x31\x9f\xe5\x03\x30\x8f\xe0\x28\x30\x80\xe5\xfc\x30\x9f\xe5\x03\x30\x8f\xe0\x2c\x30\x80\xe5\xf4\x30\x9f\xe5\x03\x30\x8f\xe0\x30\x30\x80\xe5\x00\x00\x56\xe3\xe8\x60\x9f\x05\x06\x60\x8f\x00\x34\x60\x84\xe5\xe0\x30\x9f\xe5\x03\x30\x8f\xe0\x38\x30\x84\xe5\x00\x00\x57\xe3\xd4\x70\x9f\x05\x07\x70\x8f\x00\x3c\x70\x84\xe5\x00\x40\x8d\xe5\x64\x30\x8d\xe2\x04\x30\x8d\xe5\x00\x00\xe0\xe3\x09\x10\xa0\xe1\x0b\x20\xa0\xe1\xb4\x30\x9f\xe5\x03\x30\x8f\xe0\xeb\xf9\xff\xeb\x00\x50\x50\xe2\x03\x00\x00\x1a\x04\x00\xa0\xe1\xfb\xf0\xff\xeb\x02\x00\xe0\xe3\x18\x00\x00\xea\x05\x00\xa0\xe1\x64\x10\x9d\xe5\x0c\x20\x8d\xe2\x07\x0f\x00\xeb\x05\x00\xa0\xe1\xf3\xf0\xff\xeb\x0c\x00\x8d\xe2\x78\x10\x9f\xe5\x01\x10\x8f\xe0\x2e\x0f\x00\xeb\x00\x00\x50\xe3\x00\x30\xa0\x03\x08\x30\x8d\x05\x05\x00\x00\x0a\x68\x20\x8d\xe2\x00\x30\xe0\xe3\x60\x30\x22\xe5\x54\x10\x9f\xe5\x01\x10\x8f\xe0\x30\xf1\xff\xeb\x0c\x00\x8d\xe2\x0f\x0f\x00\xeb\x04\x00\xa0\xe1\xe1\xf0\xff\xeb\x08\x00\x9d\xe5\x6c\xd0\x8d\xe2\xf0\x8f\xbd\xe8\x0c\x57\x00\x00\x08\x57\x00\x00\x08\x57\x00\x00\x00\x57\x00\x00\x00\x57\x00\x00\x04\x57\x00\x00\x04\x57\x00\x00\xfc\x56\x00\x00\x7c\x56\x00\x00\xfc\x56\x00\x00\xa4\x42\x00\x00\xdc\x56\x00\x00\x40\x55\x00\x00\x60\x4b\x00\x00\xf0\x4f\x2d\xe9\x6c\xd0\x4d\xe2\x00\x90\xa0\xe1\x01\xb0\xa0\xe1\x02\x50\xa0\xe1\x90\xa0\x9d\xe5\x94\x60\x9d\xe5\xa0\x70\x9d\xe5\x03\x80\xa0\xe1\x00\x00\x5a\xe3\x00\x00\x53\x13\x01\x00\xe0\x03\x68\x00\x00\x0a\x98\x20\x9d\xe5\x00\x00\x55\xe3\x00\x00\x52\x13\x01\x00\xe0\x03\x63\x00\x00\x0a\x09\x00\xa0\xe3\x08\x10\xa0\xe3\x9d\xf0\xff\xeb\x00\x40\xa0\xe1\x80\x31\x9f\xe5\x03\x30\x8f\xe0\x00\x30\x80\xe5\x9c\x30\x9d\xe5\x04\x30\x80\xe5\x70\x31\x9f\xe5\x03\x30\x8f\xe0\x08\x30\x80\xe5\x0c\x50\x80\xe5\x64\x31\x9f\xe5\x03\x30\x8f\xe0\x10\x30\x80\xe5\x98\x30\x9d\xe5\x14\x30\x80\xe5\x54\x31\x9f\xe5\x03\x30\x8f\xe0\x18\x30\x80\xe5\x1c\x80\x80\xe5\x48\x31\x9f\xe5\x03\x30\x8f\xe0\x20\x30\x80\xe5\x24\xa0\x80\xe5\x3c\x31\x9f\xe5\x03\x30\x8f\xe0\x28\x30\x80\xe5\x34\x31\x9f\xe5\x03\x30\x8f\xe0\x2c\x30\x80\xe5\x2c\x31\x9f\xe5\x03\x30\x8f\xe0\x30\x30\x80\xe5\x00\x00\x56\xe3\x20\x61\x9f\x05\x06\x60\x8f\x00\x34\x60\x84\xe5\x18\x31\x9f\xe5\x03\x30\x8f\xe0\x38\x30\x84\xe5\x00\x00\x57\xe3\x0c\x71\x9f\x05\x07\x70\x8f\x00\x3c\x70\x84\xe5\x00\x40\x8d\xe5\x64\x30\x8d\xe2\x04\x30\x8d\xe5\x00\x00\xe0\xe3\x09\x10\xa0\xe1\x0b\x20\xa0\xe1\xec\x30\x9f\xe5\x03\x30\x8f\xe0\x73\xf9\xff\xeb\x00\x50\x50\xe2\x03\x00\x00\x1a\x04\x00\xa0\xe1\x83\xf0\xff\xeb\x02\x00\xe0\xe3\x26\x00\x00\xea\x05\x00\xa0\xe1\x64\x10\x9d\xe5\x0c\x20\x8d\xe2\x8f\x0e\x00\xeb\x05\x00\xa0\xe1\x7b\xf0\xff\xeb\x0c\x00\x8d\xe2\xb0\x10\x9f\xe5\x01\x10\x8f\xe0\xb6\x0e\x00\xeb\x00\x00\x50\xe3\x06\x00\x00\x0a\x68\x20\x8d\xe2\x00\x30\xe0\xe3\x60\x30\x22\xe5\x94\x10\x9f\xe5\x01\x10\x8f\xe0\xba\xf0\xff\xeb\x0e\x00\x00\xea\x0c\x00\x8d\xe2\x84\x10\x9f\xe5\x01\x10\x8f\xe0\xa9\x0e\x00\xeb\x00\x10\x50\xe2\x03\x30\xe0\x03\x08\x30\x8d\x05\x06\x00\x00\x0a\xa4\x00\x9d\xe5\x06\x20\xa0\xe3\xbd\xf0\xff\xeb\x00\x30\xa0\xe3\xa4\x20\x9d\xe5\x05\x30\xc2\xe5\x08\x30\x8d\xe5\x0c\x00\x8d\xe2\x89\x0e\x00\xeb\x04\x00\xa0\xe1\x5b\xf0\xff\xeb\x08\x00\x9d\xe5\x6c\xd0\x8d\xe2\xf0\x8f\xbd\xe8\x2c\x55\x00\x00\x28\x55\x00\x00\x28\x55\x00\x00\x20\x55\x00\x00\x20\x55\x00\x00\x24\x55\x00\x00\x24\x55\x00\x00\x1c\x55\x00\x00\x9c\x54\x00\x00\x1c\x55\x00\x00\xc4\x40\x00\x00\x0c\x55\x00\x00\x60\x53\x00\x00\x88\x49\x00\x00\xac\x54\x00\x00\xf0\x41\x2d\xe9\x68\xd0\x4d\xe2\x00\x70\xa0\xe1\x01\x80\xa0\xe1\x02\x50\xa0\xe1\x03\x60\xa0\xe1\x00\x00\x53\xe3\x00\x00\x52\x13\x01\x00\xe0\x03\x38\x00\x00\x0a\x04\x00\xa0\xe3\x08\x10\xa0\xe3\x1e\xf0\xff\xeb\x00\x40\xa0\xe1\xd4\x30\x9f\xe5\x03\x30\x8f\xe0\x00\x30\x80\xe5\x80\x30\x9d\xe5\x04\x30\x80\xe5\xc4\x30\x9f\xe5\x03\x30\x8f\xe0\x08\x30\x80\xe5\x0c\x50\x80\xe5\xb8\x30\x9f\xe5\x03\x30\x8f\xe0\x10\x30\x80\xe5\x14\x60\x80\xe5\x00\x00\x8d\xe5\x64\x30\x8d\xe2\x04\x30\x8d\xe5\x00\x00\xe0\xe3\x07\x10\xa0\xe1\x08\x20\xa0\xe1\x94\x30\x9f\xe5\x03\x30\x8f\xe0\x11\xf9\xff\xeb\x00\x50\x50\xe2\x03\x00\x00\x1a\x04\x00\xa0\xe1\x21\xf0\xff\xeb\x02\x00\xe0\xe3\x18\x00\x00\xea\x05\x00\xa0\xe1\x64\x10\x9d\xe5\x0c\x20\x8d\xe2\x2d\x0e\x00\xeb\x05\x00\xa0\xe1\x19\xf0\xff\xeb\x0c\x00\x8d\xe2\x58\x10\x9f\xe5\x01\x10\x8f\xe0\x54\x0e\x00\xeb\x00\x00\x50\xe3\x00\x30\xa0\x03\x08\x30\x8d\x05\x05\x00\x00\x0a\x68\x20\x8d\xe2\x00\x30\xe0\xe3\x60\x30\x22\xe5\x34\x10\x9f\xe5\x01\x10\x8f\xe0\x56\xf0\xff\xeb\x0c\x00\x8d\xe2\x35\x0e\x00\xeb\x04\x00\xa0\xe1\x07\xf0\xff\xeb\x08\x00\x9d\xe5\x68\xd0\x8d\xe2\xf0\x81\xbd\xe8\x30\x53\x00\x00\x2c\x53\x00\x00\x2c\x53\x00\x00\xa8\x53\x00\x00\xd8\x51\x00\x00\xf8\x47\x00\x00\xf0\x47\x2d\xe9\x68\xd0\x4d\xe2\x00\x70\xa0\xe1\x01\x80\xa0\xe1\x88\xa0\x9d\xe5\x8c\x90\x9d\xe5\x02\x50\xa0\xe1\x03\x60\xa0\xe1\x00\x00\x53\xe3\x00\x00\x52\x13\x01\x00\xe0\x03\x3f\x00\x00\x0a\x00\x00\x59\xe3\x00\x00\x5a\x13\x01\x00\xe0\x03\x3b\x00\x00\x0a\x05\x00\xa0\xe3\x08\x10\xa0\xe3\xcd\xef\xff\xeb\x00\x40\xa0\xe1\xe0\x30\x9f\xe5\x03\x30\x8f\xe0\x00\x30\x80\xe5\x04\x50\x80\xe5\xd4\x30\x9f\xe5\x03\x30\x8f\xe0\x08\x30\x80\xe5\x0c\x60\x80\xe5\xc8\x30\x9f\xe5\x03\x30\x8f\xe0\x10\x30\x80\xe5\x14\xa0\x80\xe5\xbc\x30\x9f\xe5\x03\x30\x8f\xe0\x18\x30\x80\xe5\x1c\x90\x80\xe5\x00\x00\x8d\xe5\x64\x30\x8d\xe2\x04\x30\x8d\xe5\x00\x00\xe0\xe3\x07\x10\xa0\xe1\x08\x20\xa0\xe1\x98\x30\x9f\xe5\x03\x30\x8f\xe0\xbd\xf8\xff\xeb\x00\x50\x50\xe2\x03\x00\x00\x1a\x04\x00\xa0\xe1\xcd\xef\xff\xeb\x02\x00\xe0\xe3\x18\x00\x00\xea\x05\x00\xa0\xe1\x64\x10\x9d\xe5\x0c\x20\x8d\xe2\xd9\x0d\x00\xeb\x05\x00\xa0\xe1\xc5\xef\xff\xeb\x0c\x00\x8d\xe2\x5c\x10\x9f\xe5\x01\x10\x8f\xe0\x00\x0e\x00\xeb\x00\x00\x50\xe3\x00\x30\xa0\x03\x08\x30\x8d\x05\x05\x00\x00\x0a\x68\x20\x8d\xe2\x00\x30\xe0\xe3\x60\x30\x22\xe5\x38\x10\x9f\xe5\x01\x10\x8f\xe0\x02\xf0\xff\xeb\x0c\x00\x8d\xe2\xe1\x0d\x00\xeb\x04\x00\xa0\xe1\xb3\xef\xff\xeb\x08\x00\x9d\xe5\x68\xd0\x8d\xe2\xf0\x87\xbd\xe8\xc4\x52\x00\x00\xc4\x52\x00\x00\xec\x51\x00\x00\xb0\x52\x00\x00\x94\x52\x00\x00\x88\x50\x00\x00\xa8\x46\x00\x00\xf0\x4f\x2d\xe9\x6c\xd0\x4d\xe2\x00\xa0\xa0\xe1\x01\x90\xa0\xe1\x03\x60\xa0\xe1\x90\x70\x9d\xe5\x94\x80\x9d\xe5\xa4\xb0\x9d\xe5\x00\x30\xe0\xe3\x08\x30\x8d\xe5\x00\x50\x52\xe2\x01\x00\xe0\x03\xa2\x00\x00\x0a\x00\x30\xa0\xe3\x00\x30\xc7\xe5\x00\x30\xc8\xe5\x02\x00\xa0\xe3\x08\x10\xa0\xe3\x78\xef\xff\xeb\x00\x40\xa0\xe1\x70\x32\x9f\xe5\x03\x30\x8f\xe0\x00\x30\x80\xe5\x04\x50\x80\xe5\x00\x00\x8d\xe5\x0c\x30\x8d\xe2\x04\x30\x8d\xe5\x00\x00\xe0\xe3\x0a\x10\xa0\xe1\x09\x20\xa0\xe1\x4c\x32\x9f\xe5\x03\x30\x8f\xe0\x74\xf8\xff\xeb\x00\x50\x50\xe2\x03\x00\x00\x1a\x04\x00\xa0\xe1\x84\xef\xff\xeb\x02\x00\xe0\xe3\x88\x00\x00\xea\x05\x00\xa0\xe1\x0c\x10\x9d\xe5\x10\x20\x8d\xe2\x90\x0d\x00\xeb\x05\x00\xa0\xe1\x7c\xef\xff\xeb\x10\x00\x8d\xe2\x10\x12\x9f\xe5\x01\x10\x8f\xe0\xb7\x0d\x00\xeb\x00\x10\xa0\xe1\x00\x00\x50\xe3\x00\x00\x5b\x13\x04\x00\x00\x0a\x0b\x00\xa0\xe1\x40\x20\xa0\xe3\xcb\xef\xff\xeb\x00\x30\xa0\xe3\x3f\x30\xcb\xe5\x10\x00\x8d\xe2\xe0\x11\x9f\xe5\x01\x10\x8f\xe0\xaa\x0d\x00\xeb\x00\x10\xa0\xe1\x00\x00\x50\xe3\x00\x00\x56\x13\x05\x00\x00\x0a\x06\x00\xa0\xe1\x06\x20\xa0\xe3\xbe\xef\xff\xeb\x00\x30\xa0\xe3\x05\x30\xc6\xe5\x08\x30\x8d\xe5\x10\x00\x8d\xe2\xac\x11\x9f\xe5\x01\x10\x8f\xe0\x9c\x0d\x00\xeb\x00\x10\xa0\xe1\x98\x20\x9d\xe5\x00\x00\x50\xe3\x00\x00\x52\x13\x05\x00\x00\x0a\x02\x00\xa0\xe1\x04\x20\xa0\xe3\xaf\xef\xff\xeb\x00\x30\xa0\xe3\x98\x20\x9d\xe5\x03\x30\xc2\xe5\x10\x00\x8d\xe2\x74\x11\x9f\xe5\x01\x10\x8f\xe0\x8d\x0d\x00\xeb\x00\x10\xa0\xe1\x00\x00\x50\xe3\x00\x00\x57\x13\x05\x00\x00\x0a\x07\x00\xa0\xe1\x10\x20\xa0\xe3\xa1\xef\xff\xeb\x00\x30\xa0\xe3\x0f\x30\xc7\xe5\x08\x30\x8d\xe5\x10\x00\x8d\xe2\x40\x11\x9f\xe5\x01\x10\x8f\xe0\x7f\x0d\x00\xeb\x00\x10\xa0\xe1\x00\x00\x50\xe3\x00\x00\x58\x13\x04\x00\x00\x0a\x08\x00\xa0\xe1\x06\x20\xa0\xe3\x93\xef\xff\xeb\x00\x30\xa0\xe3\x05\x30\xc8\xe5\x10\x00\x8d\xe2\x10\x11\x9f\xe5\x01\x10\x8f\xe0\x72\x0d\x00\xeb\x00\x10\xa0\xe1\xa0\x30\x9d\xe5\x00\x00\x50\xe3\x00\x00\x53\x13\x05\x00\x00\x0a\x03\x00\xa0\xe1\x04\x20\xa0\xe3\x85\xef\xff\xeb\x00\x30\xa0\xe3\xa0\x20\x9d\xe5\x03\x30\xc2\xe5\x10\x00\x8d\xe2\xd8\x10\x9f\xe5\x01\x10\x8f\xe0\x63\x0d\x00\xeb\x00\x10\xa0\xe1\x9c\x30\x9d\xe5\x00\x00\x50\xe3\x00\x00\x53\x13\x05\x00\x00\x0a\x03\x00\xa0\xe1\x50\x20\xa0\xe3\x76\xef\xff\xeb\x00\x30\xa0\xe3\x9c\x20\x9d\xe5\x4f\x30\xc2\xe5\x10\x00\x8d\xe2\xa0\x10\x9f\xe5\x01\x10\x8f\xe0\x54\x0d\x00\xeb\x00\x10\xa0\xe1\xa8\x30\x9d\xe5\x00\x00\x50\xe3\x00\x00\x53\x13\x05\x00\x00\x0a\x03\x00\xa0\xe1\x10\x20\xa0\xe3\x67\xef\xff\xeb\x00\x30\xa0\xe3\xa8\x20\x9d\xe5\x0f\x30\xc2\xe5\x10\x00\x8d\xe2\x68\x10\x9f\xe5\x01\x10\x8f\xe0\x45\x0d\x00\xeb\x00\x00\x50\xe3\x05\x00\x00\x0a\x68\x20\x8d\xe2\x00\x30\xe0\xe3\x60\x30\x22\xe5\x4c\x10\x9f\xe5\x01\x10\x8f\xe0\x49\xef\xff\xeb\x10\x00\x8d\xe2\x28\x0d\x00\xeb\x04\x00\xa0\xe1\xfa\xee\xff\xeb\x08\x00\x9d\xe5\x6c\xd0\x8d\xe2\xf0\x8f\xbd\xe8\xb0\x51\x00\x00\x9c\x51\x00\x00\x30\x50\x00\x00\x0c\x50\x00\x00\xe4\x4f\x00\x00\xc4\x4f\x00\x00\x7c\x4f\x00\x00\x6c\x4f\x00\x00\x40\x4f\x00\x00\x20\x4f\x00\x00\x9c\x4d\x00\x00\xc4\x43\x00\x00\x30\x40\x2d\xe9\x6c\xd0\x4d\xe2\x00\xc0\xa0\xe1\x01\x30\xa0\xe1\x02\x50\xa0\xe1\x00\x00\xe0\xe3\x08\x00\x8d\xe5\x00\x20\xa0\xe3\x00\x20\x8d\xe5\x0c\x20\x8d\xe2\x04\x20\x8d\xe5\x0c\x10\xa0\xe1\x03\x20\xa0\xe1\xa4\x30\x9f\xe5\x03\x30\x8f\xe0\xc7\xf7\xff\xeb\x00\x40\x50\xe2\x02\x00\xe0\x03\x22\x00\x00\x0a\x04\x00\xa0\xe1\x0c\x10\x9d\xe5\x10\x20\x8d\xe2\xe6\x0c\x00\xeb\x04\x00\xa0\xe1\xd2\xee\xff\xeb\x10\x00\x8d\xe2\x74\x10\x9f\xe5\x01\x10\x8f\xe0\x0d\x0d\x00\xeb\x00\x00\x55\xe3\x00\x00\x50\x13\x06\x00\x00\x0a\x00\x40\xa0\xe3\x00\x40\x85\xe5\x58\x10\x9f\xe5\x01\x10\x8f\xe0\x05\x20\xa0\xe1\x10\xef\xff\xeb\x08\x40\x8d\xe5\x10\x00\x8d\xe2\x44\x10\x9f\xe5\x01\x10\x8f\xe0\xff\x0c\x00\xeb\x00\x00\x50\xe3\x05\x00\x00\x0a\x68\x20\x8d\xe2\x00\x30\xe0\xe3\x60\x30\x22\xe5\x28\x10\x9f\xe5\x01\x10\x8f\xe0\x03\xef\xff\xeb\x10\x00\x8d\xe2\xe2\x0c\x00\xeb\x08\x00\x9d\xe5\x6c\xd0\x8d\xe2\x30\x80\xbd\xe8\x04\x4f\x00\x00\xf0\x4e\x00\x00\x98\x4c\x00\x00\x84\x4c\x00\x00\xac\x42\x00\x00\xf0\x4f\x2d\xe9\x6c\xd0\x4d\xe2\x00\xa0\xa0\xe1\x01\x90\xa0\xe1\x02\x50\xa0\xe1\x03\x60\xa0\xe1\x94\x70\x9d\xe5\x98\x80\x9d\xe5\xa0\xb0\x9d\xe5\x00\x30\xe0\xe3\x08\x30\x8d\xe5\x00\x00\x57\xe3\x00\x00\x58\x13\x01\x00\xe0\x03\x80\x00\x00\x0a\x00\x00\x56\xe3\x00\x00\x52\x13\x01\x00\xe0\x03\x7c\x00\x00\x0a\x04\x00\xa0\xe3\x08\x10\xa0\xe3\x7a\xee\xff\xeb\x00\x40\xa0\xe1\xe4\x31\x9f\xe5\x03\x30\x8f\xe0\x00\x30\x80\xe5\x90\x30\x9d\xe5\x04\x30\x80\xe5\xd4\x31\x9f\xe5\x03\x30\x8f\xe0\x08\x30\x80\xe5\x0c\x50\x80\xe5\xc8\x31\x9f\xe5\x03\x30\x8f\xe0\x10\x30\x80\xe5\x14\x60\x80\xe5\x00\x00\x8d\xe5\x0c\x30\x8d\xe2\x04\x30\x8d\xe5\x00\x00\xe0\xe3\x0a\x10\xa0\xe1\x09\x20\xa0\xe1\xa4\x31\x9f\xe5\x03\x30\x8f\xe0\x6d\xf7\xff\xeb\x00\x50\x50\xe2\x03\x00\x00\x1a\x04\x00\xa0\xe1\x7d\xee\xff\xeb\x02\x00\xe0\xe3\x5c\x00\x00\xea\x05\x00\xa0\xe1\x0c\x10\x9d\xe5\x10\x20\x8d\xe2\x89\x0c\x00\xeb\x05\x00\xa0\xe1\x75\xee\xff\xeb\x10\x00\x8d\xe2\x68\x11\x9f\xe5\x01\x10\x8f\xe0\xb0\x0c\x00\xeb\x00\x10\x50\xe2\x00\x30\xa0\x03\x00\x30\xc7\x05\x05\x00\x00\x0a\x07\x00\xa0\xe1\x10\x20\xa0\xe3\xc4\xee\xff\xeb\x00\x30\xa0\xe3\x0f\x30\xc7\xe5\x08\x30\x8d\xe5\x10\x00\x8d\xe2\x34\x11\x9f\xe5\x01\x10\x8f\xe0\xa2\x0c\x00\xeb\x00\x10\x50\xe2\x00\x30\xa0\x03\x00\x30\xc8\x05\x04\x00\x00\x0a\x08\x00\xa0\xe1\x06\x20\xa0\xe3\xb6\xee\xff\xeb\x00\x30\xa0\xe3\x05\x30\xc8\xe5\x10\x00\x8d\xe2\x04\x11\x9f\xe5\x01\x10\x8f\xe0\x95\x0c\x00\xeb\x00\x10\xa0\xe1\x00\x00\x50\xe3\x00\x00\x5b\x13\x04\x00\x00\x0a\x0b\x00\xa0\xe1\x04\x20\xa0\xe3\xa9\xee\xff\xeb\x00\x30\xa0\xe3\x03\x30\xcb\xe5\x10\x00\x8d\xe2\xd4\x10\x9f\xe5\x01\x10\x8f\xe0\x88\x0c\x00\xeb\x00\x10\xa0\xe1\x9c\x20\x9d\xe5\x00\x00\x50\xe3\x00\x00\x52\x13\x05\x00\x00\x0a\x02\x00\xa0\xe1\x50\x20\xa0\xe3\x9b\xee\xff\xeb\x00\x30\xa0\xe3\x9c\x20\x9d\xe5\x4f\x30\xc2\xe5\x10\x00\x8d\xe2\x9c\x10\x9f\xe5\x01\x10\x8f\xe0\x79\x0c\x00\xeb\x00\x10\xa0\xe1\xa4\x30\x9d\xe5\x00\x00\x50\xe3\x00\x00\x53\x13\x05\x00\x00\x0a\x03\x00\xa0\xe1\x10\x20\xa0\xe3\x8c\xee\xff\xeb\x00\x30\xa0\xe3\xa4\x20\x9d\xe5\x0f\x30\xc2\xe5\x10\x00\x8d\xe2\x64\x10\x9f\xe5\x01\x10\x8f\xe0\x6a\x0c\x00\xeb\x00\x00\x50\xe3\x05\x00\x00\x0a\x68\x20\x8d\xe2\x00\x30\xe0\xe3\x60\x30\x22\xe5\x48\x10\x9f\xe5\x01\x10\x8f\xe0\x6e\xee\xff\xeb\x10\x00\x8d\xe2\x4d\x0c\x00\xeb\x04\x00\xa0\xe1\x1f\xee\xff\xeb\x08\x00\x9d\xe5\x6c\xd0\x8d\xe2\xf0\x8f\xbd\xe8\xa0\x4c\x00\x00\x9c\x4c\x00\x00\x9c\x4c\x00\x00\xdc\x4d\x00\x00\x50\x4c\x00\x00\x08\x4c\x00\x00\xf8\x4b\x00\x00\xd4\x4b\x00\x00\xb4\x4b\x00\x00\x30\x4a\x00\x00\x58\x40\x00\x00\xf0\x47\x2d\xe9\x68\xd0\x4d\xe2\x00\x80\xa0\xe1\x01\xa0\xa0\xe1\x88\x90\x9d\xe5\x8c\x50\x9d\xe5\x00\x10\xe0\xe3\x08\x10\x8d\xe5\x02\x60\xa0\xe1\x03\x70\xa0\xe1\x00\x00\x53\xe3\x00\x00\x52\x13\x01\x00\xe0\x03\x4d\x00\x00\x0a\x00\x00\x59\xe3\x01\x00\xe0\x03\x4a\x00\x00\x0a\x06\x00\xa0\xe3\x08\x10\xa0\xe3\xdf\xed\xff\xeb\x00\x40\xa0\xe1\x1c\x31\x9f\xe5\x03\x30\x8f\xe0\x00\x30\x80\xe5\x04\x60\x80\xe5\x10\x31\x9f\xe5\x03\x30\x8f\xe0\x08\x30\x80\xe5\x0c\x70\x80\xe5\x04\x31\x9f\xe5\x03\x30\x8f\xe0\x10\x30\x80\xe5\x14\x90\x80\xe5\xf8\x30\x9f\xe5\x03\x30\x8f\xe0\x18\x30\x80\xe5\xf0\x30\x9f\xe5\x03\x30\x8f\xe0\x1c\x30\x80\xe5\xe8\x30\x9f\xe5\x03\x30\x8f\xe0\x20\x30\x80\xe5\x00\x00\x55\xe3\xdc\x50\x9f\x05\x05\x50\x8f\x00\x24\x50\x84\xe5\x00\x40\x8d\xe5\x0c\x30\x8d\xe2\x04\x30\x8d\xe5\x00\x00\xe0\xe3\x08\x10\xa0\xe1\x0a\x20\xa0\xe1\xbc\x30\x9f\xe5\x03\x30\x8f\xe0\xc6\xf6\xff\xeb\x00\x50\x50\xe2\x03\x00\x00\x1a\x04\x00\xa0\xe1\xd6\xed\xff\xeb\x02\x00\xe0\xe3\x1e\x00\x00\xea\x04\x00\xa0\xe1\xd2\xed\xff\xeb\x05\x00\xa0\xe1\x0c\x10\x9d\xe5\x10\x20\x8d\xe2\xe0\x0b\x00\xeb\x05\x00\xa0\xe1\xcc\xed\xff\xeb\x54\x00\x9d\xe5\x00\x00\x50\xe3\x04\x00\x00\x0a\x58\x10\x9d\xe5\x90\x20\x9d\xe5\xc9\x04\x00\xeb\x00\x30\xa0\xe3\x08\x30\x8d\xe5\x10\x00\x8d\xe2\x58\x10\x9f\xe5\x01\x10\x8f\xe0\xff\x0b\x00\xeb\x00\x00\x50\xe3\x05\x00\x00\x0a\x68\x20\x8d\xe2\x00\x30\xe0\xe3\x60\x30\x22\xe5\x3c\x10\x9f\xe5\x01\x10\x8f\xe0\x03\xee\xff\xeb\x10\x00\x8d\xe2\xe2\x0b\x00\xeb\x08\x00\x9d\xe5\x68\xd0\x8d\xe2\xf0\x87\xbd\xe8\x0c\x4b\x00\x00\x0c\x4b\x00\x00\x34\x4a\x00\x00\xf8\x4a\x00\x00\x54\x4a\x00\x00\x90\x4b\x00\x00\xbc\x3f\x00\x00\x70\x4b\x00\x00\x84\x48\x00\x00\xac\x3e\x00\x00\xf0\x41\x2d\xe9\x68\xd0\x4d\xe2\x00\x40\xa0\xe1\x01\xc0\xa0\xe1\x00\x10\xe0\xe3\x08\x10\x8d\xe5\x02\x60\xa0\xe1\x03\x80\xa0\xe1\x00\x00\x53\xe3\x00\x00\x52\x13\x01\x00\xe0\x03\x3d\x00\x00\x0a\x00\x30\xa0\xe3\x00\x30\x8d\xe5\x0c\x30\x8d\xe2\x04\x30\x8d\xe5\x01\x00\xa0\xe1\x04\x10\xa0\xe1\x0c\x20\xa0\xe1\xdc\x30\x9f\xe5\x03\x30\x8f\xe0\x7f\xf6\xff\xeb\x00\x40\x50\xe2\x30\x00\x00\x0a\x04\x00\xa0\xe1\x0c\x10\x9d\xe5\x10\x20\x8d\xe2\x9f\x0b\x00\xeb\x04\x00\xa0\xe1\x8b\xed\xff\xeb\x10\x00\x8d\xe2\xb0\x10\x9f\xe5\x01\x10\x8f\xe0\xc6\x0b\x00\xeb\x00\x50\xa0\xe1\x10\x00\x8d\xe2\xa0\x10\x9f\xe5\x01\x10\x8f\xe0\xc1\x0b\x00\xeb\x00\x70\xa0\xe1\x00\x40\x90\xe2\x01\x40\xa0\x13\x00\x30\x95\xe2\x01\x30\xa0\x13\x03\x00\x14\xe1\x00\x20\xa0\x13\x08\x20\x8d\x15\x00\x00\x53\xe3\x02\x00\x00\x0a\x05\x00\xa0\xe1\x47\xfa\xff\xeb\x00\x00\x86\xe5\x00\x00\x54\xe3\x02\x00\x00\x0a\x07\x00\xa0\xe1\x42\xfa\xff\xeb\x00\x00\x88\xe5\x10\x00\x8d\xe2\x4c\x10\x9f\xe5\x01\x10\x8f\xe0\xab\x0b\x00\xeb\x00\x00\x50\xe3\x05\x00\x00\x0a\x68\x20\x8d\xe2\x00\x30\xe0\xe3\x60\x30\x22\xe5\x30\x10\x9f\xe5\x01\x10\x8f\xe0\xaf\xed\xff\xeb\x10\x00\x8d\xe2\x8e\x0b\x00\xeb\x08\x00\x9d\xe5\x00\x00\x00\xea\x02\x00\xe0\xe3\x68\xd0\x8d\xe2\xf0\x81\xbd\xe8\x6c\x4a\x00\x00\x50\x4a\x00\x00\x4c\x4a\x00\x00\x34\x47\x00\x00\x5c\x3d\x00\x00\xf0\x4f\x2d\xe9\x6c\xd0\x4d\xe2\x00\xa0\xa0\xe1\x01\x90\xa0\xe1\x02\x50\xa0\xe1\x03\x60\xa0\xe1\x90\x80\x9d\xe5\x94\x70\x9d\xe5\x98\xb0\x9d\xe5\x00\x00\x58\xe3\x00\x00\x57\x13\x01\x00\xe0\x03\x4d\x00\x00\x0a\x00\x00\x53\xe3\x00\x00\x5b\x13\x01\x00\xe0\x03\x49\x00\x00\x0a\x00\x00\x52\xe3\x01\x00\xe0\x03\x46\x00\x00\x0a\x06\x00\xa0\xe3\x08\x10\xa0\xe3\x23\xed\xff\xeb\x00\x40\xa0\xe1\x0c\x31\x9f\xe5\x03\x30\x8f\xe0\x00\x30\x80\xe5\x04\x50\x80\xe5\x00\x31\x9f\xe5\x03\x30\x8f\xe0\x08\x30\x80\xe5\x0c\x60\x80\xe5\xf4\x30\x9f\xe5\x03\x30\x8f\xe0\x10\x30\x80\xe5\x14\xb0\x80\xe5\xe8\x30\x9f\xe5\x03\x30\x8f\xe0\x18\x30\x80\xe5\x1c\x70\x80\xe5\xdc\x30\x9f\xe5\x03\x30\x8f\xe0\x20\x30\x80\xe5\x24\x80\x80\xe5\x00\x00\x8d\xe5\x64\x30\x8d\xe2\x04\x30\x8d\xe5\x00\x00\xe0\xe3\x0a\x10\xa0\xe1\x09\x20\xa0\xe1\xb8\x30\x9f\xe5\x03\x30\x8f\xe0\x0f\xf6\xff\xeb\x00\x50\x50\xe2\x02\x00\xe0\x03\x22\x00\x00\x0a\x05\x00\xa0\xe1\x64\x10\x9d\xe5\x0c\x20\x8d\xe2\x2e\x0b\x00\xeb\x05\x00\xa0\xe1\x1a\xed\xff\xeb\x0c\x00\x8d\xe2\x88\x10\x9f\xe5\x01\x10\x8f\xe0\x55\x0b\x00\xeb\x00\x00\x50\xe3\x06\x00\x00\x0a\x68\x20\x8d\xe2\x00\x30\xe0\xe3\x60\x30\x22\xe5\x6c\x10\x9f\xe5\x01\x10\x8f\xe0\x59\xed\xff\xeb\x0a\x00\x00\xea\x00\x30\xa0\xe3\x08\x30\x8d\xe5\x0c\x00\x8d\xe2\x54\x10\x9f\xe5\x01\x10\x8f\xe0\x46\x0b\x00\xeb\x00\x00\x50\xe3\x02\x00\x00\x0a\xd5\xf9\xff\xeb\x9c\x30\x9d\xe5\x00\x00\x83\xe5\x0c\x00\x8d\xe2\x2c\x0b\x00\xeb\x04\x00\xa0\xe1\xfe\xec\xff\xeb\x08\x00\x9d\xe5\x6c\xd0\x8d\xe2\xf0\x8f\xbd\xe8\x50\x49\x00\x00\x4c\x49\x00\x00\x48\x49\x00\x00\x44\x49\x00\x00\x44\x49\x00\x00\x2c\x49\x00\x00\xdc\x45\x00\x00\x04\x3c\x00\x00\xd8\x48\x00\x00\xf0\x4f\x2d\xe9\x6c\xd0\x4d\xe2\x00\xa0\xa0\xe1\x01\x90\xa0\xe1\x02\x50\xa0\xe1\x03\x60\xa0\xe1\x90\x70\x9d\xe5\x94\x80\x9d\xe5\x98\xb0\x9d\xe5\x00\x00\x57\xe3\x00\x00\x58\x13\x01\x00\xe0\x03\x72\x00\x00\x0a\x00\x00\x52\xe3\x00\x00\x5b\x13\x01\x00\xe0\x03\x6e\x00\x00\x0a\x9c\x20\x9d\xe5\x00\x00\x52\xe3\x00\x00\x53\x13\x01\x00\xe0\x03\x69\x00\x00\x0a\x07\x00\xa0\xe3\x08\x10\xa0\xe3\xbb\xec\xff\xeb\x00\x40\xa0\xe1\x05\x00\xa0\xe1\x94\x11\x9f\xe5\x01\x10\x8f\xe0\x05\x20\xa0\xe3\x4b\xed\xff\xeb\x00\x00\x50\xe3\x06\x00\x00\x1a\x80\x31\x9f\xe5\x03\x30\x8f\xe0\x00\x30\x84\xe5\x78\x31\x9f\xe5\x03\x30\x8f\xe0\x04\x30\x84\xe5\x03\x00\x00\xea\x6c\x31\x9f\xe5\x03\x30\x8f\xe0\x00\x30\x84\xe5\x04\x50\x84\xe5\x60\x31\x9f\xe5\x03\x30\x8f\xe0\x08\x30\x84\xe5\x0c\x60\x84\xe5\x54\x31\x9f\xe5\x03\x30\x8f\xe0\x10\x30\x84\xe5\x14\xb0\x84\xe5\x48\x31\x9f\xe5\x03\x30\x8f\xe0\x18\x30\x84\xe5\x1c\x80\x84\xe5\x07\x00\xa0\xe1\x38\x11\x9f\xe5\x01\x10\x8f\xe0\x05\x20\xa0\xe3\x2d\xed\xff\xeb\x00\x00\x50\xe3\x06\x00\x00\x1a\x24\x31\x9f\xe5\x03\x30\x8f\xe0\x20\x30\x84\xe5\x1c\x31\x9f\xe5\x03\x30\x8f\xe0\x24\x30\x84\xe5\x03\x00\x00\xea\x10\x31\x9f\xe5\x03\x30\x8f\xe0\x20\x30\x84\xe5\x24\x70\x84\xe5\x04\x31\x9f\xe5\x03\x30\x8f\xe0\x28\x30\x84\xe5\x9c\x30\x9d\xe5\x2c\x30\x84\xe5\x00\x40\x8d\xe5\x64\x30\x8d\xe2\x04\x30\x8d\xe5\x00\x00\xe0\xe3\x0a\x10\xa0\xe1\x09\x20\xa0\xe1\xdc\x30\x9f\xe5\x03\x30\x8f\xe0\x86\xf5\xff\xeb\x00\x50\x50\xe2\x02\x00\xe0\x03\x24\x00\x00\x0a\x05\x00\xa0\xe1\x64\x10\x9d\xe5\x0c\x20\x8d\xe2\xa5\x0a\x00\xeb\x05\x00\xa0\xe1\x91\xec\xff\xeb\x0c\x00\x8d\xe2\xac\x10\x9f\xe5\x01\x10\x8f\xe0\xcc\x0a\x00\xeb\x00\x10\x50\xe2\x05\x00\x00\x0a\xa0\x00\x9d\xe5\x08\x20\xa0\xe3\xe2\xec\xff\xeb\x00\x30\xa0\xe3\xa0\x20\x9d\xe5\x07\x30\xc2\xe5\x0c\x00\x8d\xe2\x80\x10\x9f\xe5\x01\x10\x8f\xe0\xc0\x0a\x00\xeb\x00\x00\x50\xe3\x00\x30\xa0\x03\x08\x30\x8d\x05\x05\x00\x00\x0a\x68\x20\x8d\xe2\x00\x30\xe0\xe3\x60\x30\x22\xe5\x5c\x10\x9f\xe5\x01\x10\x8f\xe0\xc2\xec\xff\xeb\x0c\x00\x8d\xe2\xa1\x0a\x00\xeb\x04\x00\xa0\xe1\x73\xec\xff\xeb\x08\x00\x9d\xe5\x6c\xd0\x8d\xe2\xf0\x8f\xbd\xe8\x24\x48\x00\x00\x94\x47\x00\x00\xa4\x4e\x00\x00\x78\x47\x00\x00\x74\x47\x00\x00\x70\x47\x00\x00\x6c\x47\x00\x00\xac\x47\x00\x00\x50\x47\x00\x00\x2c\x4e\x00\x00\x34\x47\x00\x00\x70\x47\x00\x00\x50\x47\x00\x00\x28\x47\x00\x00\x88\x43\x00\x00\xa8\x39\x00\x00\xf0\x41\x2d\xe9\x68\xd0\x4d\xe2\x00\x70\xa0\xe1\x01\x80\xa0\xe1\x02\x50\xa0\xe1\x03\x60\xa0\xe1\x00\x00\x53\xe3\x00\x00\x52\x13\x01\x00\xe0\x03\x30\x00\x00\x0a\x03\x00\xa0\xe3\x08\x10\xa0\xe3\x35\xec\xff\xeb\x00\x40\xa0\xe1\xb4\x30\x9f\xe5\x03\x30\x8f\xe0\x00\x30\x80\xe5\x04\x50\x80\xe5\xa8\x30\x9f\xe5\x03\x30\x8f\xe0\x08\x30\x80\xe5\x0c\x60\x80\xe5\x00\x00\x8d\xe5\x64\x30\x8d\xe2\x04\x30\x8d\xe5\x00\x00\xe0\xe3\x07\x10\xa0\xe1\x08\x20\xa0\xe1\x84\x30\x9f\xe5\x03\x30\x8f\xe0\x2d\xf5\xff\xeb\x00\x50\x50\xe2\x02\x00\xe0\x03\x18\x00\x00\x0a\x05\x00\xa0\xe1\x64\x10\x9d\xe5\x0c\x20\x8d\xe2\x4c\x0a\x00\xeb\x05\x00\xa0\xe1\x38\xec\xff\xeb\x0c\x00\x8d\xe2\x54\x10\x9f\xe5\x01\x10\x8f\xe0\x73\x0a\x00\xeb\x00\x00\x50\xe3\x00\x30\xa0\x03\x08\x30\x8d\x05\x05\x00\x00\x0a\x68\x20\x8d\xe2\x00\x30\xe0\xe3\x60\x30\x22\xe5\x30\x10\x9f\xe5\x01\x10\x8f\xe0\x75\xec\xff\xeb\x0c\x00\x8d\xe2\x54\x0a\x00\xeb\x04\x00\xa0\xe1\x26\xec\xff\xeb\x08\x00\x9d\xe5\x68\xd0\x8d\xe2\xf0\x81\xbd\xe8\x30\x46\x00\x00\x2c\x46\x00\x00\x14\x46\x00\x00\x54\x42\x00\x00\x74\x38\x00\x00\xf0\x40\x2d\xe9\x6c\xd0\x4d\xe2\x00\x60\xa0\xe1\x01\x70\xa0\xe1\x00\x50\x52\xe2\x01\x00\xe0\x03\x2c\x00\x00\x0a\x02\x00\xa0\xe3\x08\x10\xa0\xe3\xf6\xeb\xff\xeb\x00\x40\xa0\xe1\xa4\x30\x9f\xe5\x03\x30\x8f\xe0\x00\x30\x80\xe5\x04\x50\x80\xe5\x00\x00\x8d\xe5\x64\x30\x8d\xe2\x04\x30\x8d\xe5\x00\x00\xe0\xe3\x06\x10\xa0\xe1\x07\x20\xa0\xe1\x80\x30\x9f\xe5\x03\x30\x8f\xe0\xf2\xf4\xff\xeb\x00\x50\x50\xe2\x02\x00\xe0\x03\x18\x00\x00\x0a\x05\x00\xa0\xe1\x64\x10\x9d\xe5\x0c\x20\x8d\xe2\x11\x0a\x00\xeb\x05\x00\xa0\xe1\xfd\xeb\xff\xeb\x0c\x00\x8d\xe2\x50\x10\x9f\xe5\x01\x10\x8f\xe0\x38\x0a\x00\xeb\x00\x00\x50\xe3\x00\x30\xa0\x03\x08\x30\x8d\x05\x05\x00\x00\x0a\x68\x20\x8d\xe2\x00\x30\xe0\xe3\x60\x30\x22\xe5\x2c\x10\x9f\xe5\x01\x10\x8f\xe0\x3a\xec\xff\xeb\x0c\x00\x8d\xe2\x19\x0a\x00\xeb\x04\x00\xa0\xe1\xeb\xeb\xff\xeb\x08\x00\x9d\xe5\x6c\xd0\x8d\xe2\xf0\x80\xbd\xe8\x34\x45\x00\x00\x38\x45\x00\x00\x68\x41\x00\x00\x88\x37\x00\x00\xf0\x41\x2d\xe9\x68\xd0\x4d\xe2\x00\x60\xa0\xe1\x01\x70\xa0\xe1\x03\x80\xa0\xe1\x00\x30\xe0\xe3\x08\x30\x8d\xe5\x00\x50\x52\xe2\x01\x00\xe0\x03\x36\x00\x00\x0a\x04\x00\xa0\xe3\x08\x10\xa0\xe3\xb9\xeb\xff\xeb\x00\x40\xa0\xe1\xcc\x30\x9f\xe5\x03\x30\x8f\xe0\x00\x30\x80\xe5\x04\x50\x80\xe5\x00\x00\x8d\xe5\x0c\x30\x8d\xe2\x04\x30\x8d\xe5\x00\x00\xe0\xe3\x06\x10\xa0\xe1\x07\x20\xa0\xe1\xa8\x30\x9f\xe5\x03\x30\x8f\xe0\xb5\xf4\xff\xeb\x00\x50\x50\xe2\x02\x00\xe0\x03\x22\x00\x00\x0a\x05\x00\xa0\xe1\x0c\x10\x9d\xe5\x10\x20\x8d\xe2\xd4\x09\x00\xeb\x05\x00\xa0\xe1\xc0\xeb\xff\xeb\x10\x00\x8d\xe2\x78\x10\x9f\xe5\x01\x10\x8f\xe0\xfb\x09\x00\xeb\x00\x00\x50\xe3\x00\x30\xa0\x03\x00\x30\x88\x05\x03\x00\x00\x0a\x88\xf8\xff\xeb\x00\x00\x88\xe5\x00\x30\xa0\xe3\x08\x30\x8d\xe5\x10\x00\x8d\xe2\x4c\x10\x9f\xe5\x01\x10\x8f\xe0\xef\x09\x00\xeb\x00\x00\x50\xe3\x05\x00\x00\x0a\x68\x20\x8d\xe2\x00\x30\xe0\xe3\x60\x30\x22\xe5\x30\x10\x9f\xe5\x01\x10\x8f\xe0\xf3\xeb\xff\xeb\x10\x00\x8d\xe2\xd2\x09\x00\xeb\x04\x00\xa0\xe1\xa4\xeb\xff\xeb\x08\x00\x9d\xe5\x68\xd0\x8d\xe2\xf0\x81\xbd\xe8\x40\x44\x00\x00\x54\x44\x00\x00\x34\x44\x00\x00\x44\x40\x00\x00\x6c\x36\x00\x00\xf0\x41\x2d\xe9\x68\xd0\x4d\xe2\x00\x60\xa0\xe1\x01\x70\xa0\xe1\x03\x80\xa0\xe1\x00\x30\xe0\xe3\x08\x30\x8d\xe5\x00\x50\x52\xe2\x01\x00\xe0\x03\x34\x00\x00\x0a\x04\x00\xa0\xe3\x08\x10\xa0\xe3\x71\xeb\xff\xeb\x00\x40\xa0\xe1\xc4\x30\x9f\xe5\x03\x30\x8f\xe0\x00\x30\x80\xe5\x04\x50\x80\xe5\x00\x00\x8d\xe5\x0c\x30\x8d\xe2\x04\x30\x8d\xe5\x00\x00\xe0\xe3\x06\x10\xa0\xe1\x07\x20\xa0\xe1\xa0\x30\x9f\xe5\x03\x30\x8f\xe0\x6d\xf4\xff\xeb\x00\x50\x50\xe2\x02\x00\xe0\x03\x20\x00\x00\x0a\x05\x00\xa0\xe1\x0c\x10\x9d\xe5\x10\x20\x8d\xe2\x8c\x09\x00\xeb\x05\x00\xa0\xe1\x78\xeb\xff\xeb\x10\x00\x8d\xe2\x70\x10\x9f\xe5\x01\x10\x8f\xe0\xb3\x09\x00\xeb\x00\x00\x50\xe3\x03\x00\x00\x0a\x42\xf8\xff\xeb\x00\x00\x88\xe5\x00\x30\xa0\xe3\x08\x30\x8d\xe5\x10\x00\x8d\xe2\x4c\x10\x9f\xe5\x01\x10\x8f\xe0\xa9\x09\x00\xeb\x00\x00\x50\xe3\x05\x00\x00\x0a\x68\x20\x8d\xe2\x00\x30\xe0\xe3\x60\x30\x22\xe5\x30\x10\x9f\xe5\x01\x10\x8f\xe0\xad\xeb\xff\xeb\x10\x00\x8d\xe2\x8c\x09\x00\xeb\x04\x00\xa0\xe1\x5e\xeb\xff\xeb\x08\x00\x9d\xe5\x68\xd0\x8d\xe2\xf0\x81\xbd\xe8\x20\x43\x00\x00\x54\x43\x00\x00\x34\x43\x00\x00\x2c\x3f\x00\x00\x54\x35\x00\x00\x0b\x0d\x50\xe3\x75\x00\x00\x0a\x25\x00\x00\xca\x98\x32\x9f\xe5\x03\x00\x50\xe1\x5c\x00\x00\x0a\x0e\x00\x00\xca\x04\x00\x70\xe3\x50\x00\x00\x0a\x04\x00\x00\xca\x66\x00\x70\xe3\x53\x00\x00\x0a\x65\x00\x70\xe3\x96\x00\x00\x1a\x4d\x00\x00\xea\x01\x00\x70\xe3\x96\x00\x00\x0a\x00\x00\x50\xe3\x40\x00\x00\x0a\x02\x00\x70\xe3\x8f\x00\x00\x1a\x40\x00\x00\xea\x50\x32\x9f\xe5\x03\x00\x50\xe1\x52\x00\x00\x0a\x06\x00\x00\xca\xcc\x30\x43\xe2\x03\x00\x50\xe1\x48\x00\x00\x0a\x63\x30\x83\xe2\x03\x00\x50\xe1\x84\x00\x00\x1a\x47\x00\x00\xea\x28\x32\x9f\xe5\x03\x00\x50\xe1\x4d\x00\x00\x0a\x4f\x00\x00\xca\x01\x30\x43\xe2\x03\x00\x50\xe1\x7c\x00\x00\x1a\x45\x00\x00\xea\x0c\x32\x9f\xe5\x03\x00\x50\xe1\x60\x00\x00\x0a\x14\x00\x00\xca\x07\x30\x43\xe2\x03\x00\x50\xe1\x50\x00\x00\x0a\xb1\x0f\x50\xe3\x06\x00\x00\xaa\x02\x30\x43\xe2\x03\x00\x50\xe1\x45\x00\x00\x0a\x01\x30\x83\xe2\x03\x00\x50\xe1\x6c\x00\x00\x1a\x44\x00\x00\xea\xd0\x31\x9f\xe5\x03\x00\x50\xe1\x4a\x00\x00\x0a\xb1\x0f\x50\xe3\x45\x00\x00\xda\x04\x30\x83\xe2\x03\x00\x50\xe1\x63\x00\x00\x1a\x47\x00\x00\xea\xb5\x0f\x50\xe3\x54\x00\x00\x0a\x06\x00\x00\xca\xb3\x0f\x50\xe3\x4b\x00\x00\x0a\x47\x00\x00\xba\x98\x31\x9f\xe5\x03\x00\x50\xe1\x59\x00\x00\x1a\x49\x00\x00\xea\x8c\x31\x9f\xe5\x03\x00\x50\xe1\x4f\x00\x00\x0a\x4b\x00\x00\xba\x01\x30\x83\xe2\x03\x00\x50\xe1\x51\x00\x00\x1a\x4d\x00\x00\xea\x70\x01\x9f\xe5\x00\x00\x8f\xe0\x1e\xff\x2f\xe1\x68\x01\x9f\xe5\x00\x00\x8f\xe0\x1e\xff\x2f\xe1\x60\x01\x9f\xe5\x00\x00\x8f\xe0\x1e\xff\x2f\xe1\x58\x01\x9f\xe5\x00\x00\x8f\xe0\x1e\xff\x2f\xe1\x50\x01\x9f\xe5\x00\x00\x8f\xe0\x1e\xff\x2f\xe1\x48\x01\x9f\xe5\x00\x00\x8f\xe0\x1e\xff\x2f\xe1\x40\x01\x9f\xe5\x00\x00\x8f\xe0\x1e\xff\x2f\xe1\x38\x01\x9f\xe5\x00\x00\x8f\xe0\x1e\xff\x2f\xe1\x30\x01\x9f\xe5\x00\x00\x8f\xe0\x1e\xff\x2f\xe1\x28\x01\x9f\xe5\x00\x00\x8f\xe0\x1e\xff\x2f\xe1\x20\x01\x9f\xe5\x00\x00\x8f\xe0\x1e\xff\x2f\xe1\x18\x01\x9f\xe5\x00\x00\x8f\xe0\x1e\xff\x2f\xe1\x10\x01\x9f\xe5\x00\x00\x8f\xe0\x1e\xff\x2f\xe1\x08\x01\x9f\xe5\x00\x00\x8f\xe0\x1e\xff\x2f\xe1\x00\x01\x9f\xe5\x00\x00\x8f\xe0\x1e\xff\x2f\xe1\xf8\x00\x9f\xe5\x00\x00\x8f\xe0\x1e\xff\x2f\xe1\xf0\x00\x9f\xe5\x00\x00\x8f\xe0\x1e\xff\x2f\xe1\xe8\x00\x9f\xe5\x00\x00\x8f\xe0\x1e\xff\x2f\xe1\xe0\x00\x9f\xe5\x00\x00\x8f\xe0\x1e\xff\x2f\xe1\xd8\x00\x9f\xe5\x00\x00\x8f\xe0\x1e\xff\x2f\xe1\xd0\x00\x9f\xe5\x00\x00\x8f\xe0\x1e\xff\x2f\xe1\xc8\x00\x9f\xe5\x00\x00\x8f\xe0\x1e\xff\x2f\xe1\xc0\x00\x9f\xe5\x00\x00\x8f\xe0\x1e\xff\x2f\xe1\xb8\x00\x9f\xe5\x00\x00\x8f\xe0\x1e\xff\x2f\xe1\xb0\x00\x9f\xe5\x00\x00\x8f\xe0\x1e\xff\x2f\xe1\xa8\x00\x9f\xe5\x00\x00\x8f\xe0\x1e\xff\x2f\xe1\xa0\x00\x9f\xe5\x00\x00\x8f\xe0\x1e\xff\x2f\xe1\x98\x00\x9f\xe5\x00\x00\x8f\xe0\x1e\xff\x2f\xe1\x90\x00\x9f\xe5\x00\x00\x8f\xe0\x1e\xff\x2f\xe1\x91\x01\x00\x00\x5e\x02\x00\x00\xbe\x02\x00\x00\xca\x02\x00\x00\xc5\x02\x00\x00\xce\x02\x00\x00\xd6\x02\x00\x00\x70\x41\x00\x00\x84\x41\x00\x00\x94\x41\x00\x00\xa4\x41\x00\x00\xb0\x41\x00\x00\xc8\x41\x00\x00\xcc\x41\x00\x00\xd0\x41\x00\x00\xd4\x41\x00\x00\xe0\x41\x00\x00\xec\x41\x00\x00\xf4\x41\x00\x00\x04\x42\x00\x00\x04\x42\x00\x00\x10\x42\x00\x00\x28\x42\x00\x00\x3c\x42\x00\x00\x4c\x42\x00\x00\x50\x42\x00\x00\x60\x42\x00\x00\x68\x42\x00\x00\x78\x42\x00\x00\x8c\x42\x00\x00\x98\x42\x00\x00\xa4\x42\x00\x00\xb8\x42\x00\x00\xcc\x42\x00\x00\xe4\x42\x00\x00\x28\x40\x00\x00\xf0\x4f\x2d\xe9\x45\xdf\x4d\xe2\x00\x60\xa0\xe1\x01\x30\xa0\xe1\x02\xb0\xa0\xe1\xa4\xa3\x9f\xe5\x0a\xa0\x8f\xe0\x00\x20\xa0\xe3\xa4\x20\x8d\xe5\xac\x20\x8d\xe5\xb0\x20\x8d\xe5\xb4\x20\x8d\xe5\xb8\x20\x8d\xe5\xbc\x20\x8d\xe5\x01\x2b\xa0\xe3\xa0\x20\x8d\xe5\x01\x20\xa0\xe3\xa8\x20\x8d\xe5\xc4\x00\x8d\xe2\x08\x10\xa0\xe3\x6c\x23\x9f\xe5\x02\x20\x8f\xe0\xb8\xea\xff\xeb\x00\x30\xd6\xe5\x5b\x00\x53\xe3\x1f\x00\x00\x1a\x01\x30\xd6\xe5\x00\x00\x53\xe3\x5d\x00\x53\x13\x00\x50\xa0\x03\x15\x00\x00\x0a\x01\x00\x86\xe2\x01\x40\xa0\xe3\x00\x50\xa0\xe3\x38\x73\x9f\xe5\x07\x70\x8f\xe0\x03\x80\xa0\xe3\xcc\x20\x8d\xe2\x02\x30\xc5\xe7\x07\x10\xa0\xe1\x08\x20\xa0\xe1\x69\xea\xff\xeb\x00\x00\x50\xe3\x02\x40\x84\x02\x01\x50\x85\xe2\x01\x40\x84\xe2\x04\x00\x86\xe0\x04\x30\xd6\xe7\x00\x00\x53\xe3\x5d\x00\x53\x13\x01\x00\x00\x0a\x40\x00\x55\xe3\xef\xff\xff\x1a\x11\x3e\x8d\xe2\x05\x50\x83\xe0\x00\x30\xa0\xe3\x44\x30\x45\xe5\x03\x00\x00\xea\xcc\x00\x8d\xe2\x06\x10\xa0\xe1\x40\x20\xa0\xe3\xa3\xea\xff\xeb\x00\x30\xa0\xe3\x0c\x31\xcd\xe5\xcc\x00\x8d\xe2\xc4\x10\x8d\xe2\xa0\x20\x8d\xe2\xc0\x30\x8d\xe2\xae\xea\xff\xeb\x00\x60\x50\xe2\x0b\x00\x00\x0a\xa8\x32\x9f\xe5\x03\x30\x9a\xe7\x00\x40\x93\xe5\x06\x00\xa0\xe1\x3e\xea\xff\xeb\x00\x20\xa0\xe1\x04\x00\xa0\xe1\x90\x12\x9f\xe5\x01\x10\x8f\xe0\x75\xea\xff\xeb\x00\x80\xe0\xe3\x91\x00\x00\xea\xc0\x90\x9d\xe5\x00\x00\x59\xe3\x93\x00\x00\x0a\x8c\x40\x8d\xe2\x70\x32\x9f\xe5\x03\x30\x8f\xe0\x0c\x30\x8d\xe5\x04\x00\x99\xe5\x08\x10\x99\xe5\x0c\x20\x99\xe5\x98\xea\xff\xeb\x00\x80\x50\xe2\x72\x00\x00\xba\x14\x30\x99\xe5\xb0\x20\xd3\xe1\x0a\x00\x52\xe3\x00\x20\xa0\x13\x01\x20\xa0\x03\x00\x00\x5b\xe3\x00\x20\xa0\x03\x00\x00\x52\xe3\x18\xb0\x83\x15\x03\x30\xa0\xe3\x98\x30\x8d\xe5\x00\x30\xa0\xe3\x9c\x30\x8d\xe5\x08\x30\xa0\xe3\x00\x30\x8d\xe5\x08\x00\xa0\xe1\x01\x10\xa0\xe3\x14\x20\xa0\xe3\x98\x30\x8d\xe2\x04\xea\xff\xeb\x00\x00\x50\xe3\x02\x00\x00\xaa\xf8\x01\x9f\xe5\x00\x00\x8f\xe0\x29\xea\xff\xeb\x03\x30\xa0\xe3\x98\x30\x8d\xe5\x00\x30\xa0\xe3\x9c\x30\x8d\xe5\x08\x30\xa0\xe3\x00\x30\x8d\xe5\x08\x00\xa0\xe1\x01\x10\xa0\xe3\x15\x20\xa0\xe3\x98\x30\x8d\xe2\xf4\xe9\xff\xeb\x00\x00\x50\xe3\x01\x00\x00\xaa\x0c\x00\x9d\xe5\x1a\xea\xff\xeb\x08\x00\xa0\xe1\x14\x10\x99\xe5\x10\x20\x99\xe5\x7f\xea\xff\xeb\x00\x60\x50\xe2\x5e\x00\x00\xaa\x3a\xea\xff\xeb\x00\x50\xa0\xe1\x1f\x70\x88\xe2\x00\x00\x58\xe3\x08\x70\xa0\xa1\xc7\x72\xa0\xe1\xc8\x3f\xa0\xe1\xa3\x3d\xa0\xe1\x03\x20\x88\xe0\x1f\x20\x02\xe2\x02\x30\x63\xe0\x01\xa0\xa0\xe3\x1a\xa3\xa0\xe1\x11\x3e\x8d\xe2\x07\x71\x83\xe0\x2a\x00\x00\xea\x04\x20\xa3\xe5\x04\x00\x53\xe1\xfc\xff\xff\x1a\x00\x31\x17\xe5\x03\x30\x8a\xe1\x00\x31\x07\xe5\x00\x30\xa0\xe3\x00\x30\x8d\xe5\x01\x00\x88\xe2\x03\x10\xa0\xe1\x10\x20\x8d\xe2\xec\xe9\xff\xeb\x00\x60\xa0\xe1\x01\x00\x70\xe3\x02\x00\x00\x1a\x00\x30\x95\xe5\x04\x00\x53\xe3\x37\x00\x00\x0a\x04\x20\xa0\xe3\x90\x20\x8d\xe5\x90\x30\x8d\xe2\x00\x30\x8d\xe5\x08\x00\xa0\xe1\x01\x10\xa0\xe3\x94\x30\x8d\xe2\xf3\xe9\xff\xeb\x00\x00\x50\xe3\x08\x00\x00\xaa\xec\x00\x9f\xe5\x00\x00\x8f\xe0\xe5\xe9\xff\xeb\x08\x00\xa0\xe1\x46\xea\xff\xeb\xc0\x00\x9d\xe5\x2f\xea\xff\xeb\x00\x80\xe0\xe3\x21\x00\x00\xea\x94\x30\x9d\xe5\x00\x00\x53\xe3\x00\x30\x85\x15\x20\x00\x00\x1a\x00\x00\x56\xe3\x23\x00\x00\xaa\x00\x30\x95\xe5\x73\x00\x53\xe3\x04\x00\x53\x13\x0c\x30\x8d\x02\x00\x20\xa0\x03\xce\xff\xff\x0a\x00\x00\x56\xe3\x1b\x00\x00\xaa\x08\x00\xa0\xe1\x32\xea\xff\xeb\x1c\x90\x99\xe5\x00\x00\x59\xe3\x83\xff\xff\x1a\xc0\x00\x9d\xe5\x18\xea\xff\xeb\x00\x00\x58\xe3\x04\x00\x00\xaa\x70\x00\x9f\xe5\x00\x00\x8f\xe0\xc5\xe9\xff\xeb\x00\x80\xe0\xe3\x05\x00\x00\xea\x00\x00\x56\xe3\x03\x00\x00\xaa\x58\x00\x9f\xe5\x00\x00\x8f\xe0\xbe\xe9\xff\xeb\x00\x80\xe0\xe3\x08\x00\xa0\xe1\x45\xdf\x8d\xe2\xf0\x8f\xbd\xe8\x00\x60\xe0\xe3\xde\xff\xff\xea\x00\x00\xa0\xe3\x04\xea\xff\xeb\xec\xff\xff\xea\xc0\x00\x9d\xe5\x01\xea\xff\xeb\xee\xff\xff\xea\xfc\xc6\x00\x00\xfc\x41\x00\x00\xe4\x36\x00\x00\xec\x00\x00\x00\x18\x41\x00\x00\xdc\x37\x00\x00\x60\x37\x00\x00\x84\x3f\x00\x00\xc8\x35\x00\x00\xf4\x3e\x00\x00\x00\x00\x51\xe3\x00\x00\xa0\xd3\x1e\xff\x2f\xd1\x00\x30\xd0\xe5\x00\x00\x53\xe3\x00\x00\xa0\x03\x1e\xff\x2f\x01\x30\x20\x43\xe2\x72\x20\xef\xe6\x09\x00\x52\xe3\x01\x20\x80\x92\x01\xc0\x80\x90\x00\x00\xa0\x93\x04\x00\x00\x9a\x0c\x00\x00\xea\x30\x10\x43\xe2\x71\x10\xef\xe6\x09\x00\x51\xe3\x1e\xff\x2f\x81\x00\x01\x80\xe0\x80\x00\x83\xe0\x30\x00\x40\xe2\x0c\x00\x52\xe1\x1e\xff\x2f\x01\x01\x30\xd2\xe4\x00\x00\x53\xe3\xf3\xff\xff\x1a\x1e\xff\x2f\xe1\x00\x00\xa0\xe3\x1e\xff\x2f\xe1\x00\x30\xa0\xe3\x04\x30\x80\xe5\x1e\xff\x2f\xe1\x38\x40\x2d\xe9\x00\x40\x90\xe5\x00\x00\x54\xe3\x38\x80\xbd\x08\x3f\x00\x52\xe3\x02\x50\xa0\xb1\x3f\x50\xa0\xa3\x04\x30\x90\xe5\x02\x30\x43\xe2\x07\x00\x53\xe3\x03\xf1\x8f\x90\x3c\x00\x00\xea\x06\x00\x00\xea\x0d\x00\x00\xea\x11\x00\x00\xea\x1a\x00\x00\xea\x1e\x00\x00\xea\x25\x00\x00\xea\x29\x00\x00\xea\x30\x00\x00\xea\x0c\x00\x84\xe2\x05\x20\xa0\xe1\x5b\xe9\xff\xeb\x05\x40\x84\xe0\x00\x30\xa0\xe3\x0c\x30\xc4\xe5\x08\x40\x84\xe2\x38\x80\xbd\xe8\x01\x00\xa0\xe1\x05\x10\xa0\xe1\xbf\xff\xff\xeb\xb8\x00\xc4\xe1\x38\x80\xbd\xe8\x03\x00\x55\xe3\x03\x50\xa0\xa3\xcc\x00\x84\xe2\x05\x20\xa0\xe1\x4c\xe9\xff\xeb\x05\x50\x84\xe0\x00\x30\xa0\xe3\xcc\x30\xc5\xe5\xc8\x50\x85\xe2\x38\x80\xbd\xe8\x01\x00\xa0\xe1\x05\x10\xa0\xe1\xb0\xff\xff\xeb\xba\x00\xc4\xe1\x38\x80\xbd\xe8\x4c\x00\x84\xe2\x05\x20\xa0\xe1\x3f\xe9\xff\xeb\x05\x40\x84\xe0\x00\x30\xa0\xe3\x4c\x30\xc4\xe5\x48\x40\x84\xe2\x38\x80\xbd\xe8\x01\x00\xa0\xe1\x05\x10\xa0\xe1\xa3\xff\xff\xeb\xd0\x00\xc4\xe5\x38\x80\xbd\xe8\x8c\x00\x84\xe2\x05\x20\xa0\xe1\x32\xe9\xff\xeb\x05\x40\x84\xe0\x00\x30\xa0\xe3\x8c\x30\xc4\xe5\x88\x40\x84\xe2\x38\x80\xbd\xe8\x01\x00\xa0\xe1\x05\x10\xa0\xe1\x96\xff\xff\xeb\x04\x00\x84\xe5\x38\x80\xbd\xe8\xf0\x41\x2d\xe9\x00\x80\xa0\xe1\x01\x60\xa0\xe1\x02\x70\xa0\xe1\x00\x50\xa0\xe3\x04\x50\x80\xe5\x6c\x40\x9f\xe5\x04\x40\x8f\xe0\x68\x10\x9f\xe5\x01\x10\x8f\xe0\x06\x00\xa0\xe1\x07\x20\xa0\xe1\x21\xe9\xff\xeb\x00\x00\x50\xe3\x06\x00\x00\x1a\x50\x30\x9f\xe5\x03\x30\x8f\xe0\x85\x31\x93\xe7\x04\x30\x88\xe5\x01\x00\x53\xe3\xf0\x81\xbd\x18\x05\x00\x00\xea\x01\x50\x85\xe2\x08\x40\x84\xe2\x04\x10\x94\xe5\x00\x00\x51\xe3\xee\xff\xff\x1a\xf0\x81\xbd\xe8\x01\x00\xa0\xe3\xd4\x10\xa0\xe3\xe5\xe8\xff\xeb\x00\x30\x98\xe5\x00\x30\x80\xe5\x00\x00\x88\xe5\xf0\x81\xbd\xe8\x24\xc0\x00\x00\xcc\x3c\x00\x00\x00\xc0\x00\x00\x04\xe0\x2d\xe5\x2c\xd0\x4d\xe2\x00\xc0\xa0\xe3\x02\x30\xa0\xe1\x01\xc0\xc3\xe4\x01\xc0\xc2\xe5\x01\x30\x83\xe2\x01\xc0\xc3\xe4\x01\xc0\xc3\xe4\x01\xc0\xc3\xe4\x01\xc0\xc3\xe4\x01\xc0\xc3\xe4\x00\xc0\xc3\xe5\x04\x00\x8d\xe5\x10\x10\x8d\xe5\x14\x20\x8d\xe5\x30\x30\x9f\xe5\x03\x30\x8f\xe0\x18\x30\x8d\xe5\x28\x30\x9f\xe5\x03\x30\x8f\xe0\x1c\x30\x8d\xe5\x20\x30\x9f\xe5\x03\x30\x8f\xe0\x20\x30\x8d\xe5\x24\xc0\x8d\xe5\x04\x00\x8d\xe2\x64\x04\x00\xeb\x2c\xd0\x8d\xe2\x00\x80\xbd\xe8\x1c\xff\xff\xff\xdc\xfd\xff\xff\xdc\xfd\xff\xff\x10\x40\x2d\xe9\x00\x40\xa0\xe1\x00\x00\x90\xe5\x00\x00\x50\xe3\x10\x80\xbd\x08\x00\x30\x90\xe5\x00\x30\x84\xe5\xd3\xe8\xff\xeb\x00\x00\x94\xe5\x00\x00\x50\xe3\xf9\xff\xff\x1a\x10\x80\xbd\xe8\xf0\x47\x2d\xe9\x98\xd0\x4d\xe2\x00\x60\xa0\xe1\x01\x80\xa0\xe1\x02\xa0\xa0\xe1\x03\x70\xa0\xe1\xb8\x90\x9d\xe5\x80\x30\xa0\xe3\x14\x30\x8d\xe5\x01\x40\xa0\xe3\x0c\x60\x8d\xe5\xb0\x41\xcd\xe1\x0c\x00\x8d\xe2\x04\x10\xa0\xe1\x07\x20\xa0\xe1\xdd\xe8\xff\xeb\x00\x50\x50\xe2\x08\x00\x00\xaa\xfe\xe8\xff\xeb\x00\x30\x90\xe5\x04\x00\x53\xe3\xf3\xff\xff\x0a\x80\x00\x9f\xe5\x00\x00\x8f\xe0\xd1\xe8\xff\xeb\x00\x50\xe0\xe3\x19\x00\x00\xea\x00\x00\x55\xe3\x17\x00\x00\x0a\x18\x40\x8d\xe2\x04\x00\xa0\xe1\x00\x10\xa0\xe3\x80\x20\xa0\xe3\x01\xe9\xff\xeb\x00\x40\x8d\xe5\x14\x30\x8d\xe2\x04\x30\x8d\xe5\x06\x00\xa0\xe1\x08\x10\xa0\xe1\x0a\x20\xa0\xe1\x00\x30\xa0\xe3\xba\xe8\xff\xeb\x00\x50\x50\xe2\x02\x00\x00\xaa\x2c\x00\x9f\xe5\x00\x00\x8f\xe0\xbb\xe8\xff\xeb\xb8\x31\xdd\xe1\x0a\x00\x53\xe3\x02\x00\x00\x1a\x00\x00\x59\xe3\x30\x30\x9d\x15\x00\x30\x89\x15\x05\x00\xa0\xe1\x98\xd0\x8d\xe2\xf0\x87\xbd\xe8\x6c\x3b\x00\x00\x1c\x3b\x00\x00\xf0\x4f\x2d\xe9\x42\xdd\x4d\xe2\x04\xd0\x4d\xe2\x00\x50\xa0\xe1\x01\x40\xa0\xe1\x01\x00\xa0\xe3\x00\x10\xa0\xe1\x00\x20\xa0\xe3\xfb\xe8\xff\xeb\x00\x00\x50\xe3\x0c\x00\x8d\xe5\x05\x00\x00\xaa\x5c\x03\x9f\xe5\x00\x00\x8f\xe0\xa1\xe8\xff\xeb\x00\x10\xa0\xe3\x04\x10\x8d\xe5\xc8\x00\x00\xea\x01\x20\xa0\xe3\x44\x33\x9f\xe5\x42\x1d\x8d\xe2\xb3\x20\x81\xe1\x12\x00\x8d\xe2\x04\x10\xa0\xe1\x6c\x20\xa0\xe3\xd5\xe8\xff\xeb\x0c\x00\x9d\xe5\x10\x10\x8d\xe2\x6e\x20\xa0\xe3\xfb\xe8\xff\xeb\x00\x00\x50\xe3\x04\x00\x00\xaa\x0c\x00\x9d\xe5\xf1\xe8\xff\xeb\x00\x30\xa0\xe3\x04\x30\x8d\xe5\xb5\x00\x00\xea\x05\x00\xa0\xe1\xa7\xe8\xff\xeb\x00\x40\xa0\xe1\x08\x00\x50\xe3\x06\x00\x00\x1a\x05\x00\xa0\xe1\xe8\x12\x9f\xe5\x01\x10\x8f\xe0\x08\x20\xa0\xe3\x72\xe8\xff\xeb\x00\x00\x50\xe3\xad\x00\x00\x0a\x01\x20\xa0\xe3\xd0\x32\x9f\xe5\x42\x1d\x8d\xe2\x03\x20\xc1\xe7\x1f\x02\x74\xe3\x7f\x30\xe0\x83\x24\x3e\x83\x81\x81\x30\xcd\x85\x82\x00\x8d\x82\x80\x30\x8d\x92\x81\x00\x8d\x92\x02\x06\x54\xe3\x7f\x30\xe0\x23\xa4\x3a\x83\x21\x01\x30\xc0\x24\x01\x09\x54\xe3\x7f\x30\xe0\x23\x24\x37\x83\x21\x01\x30\xc0\x24\x7f\x00\x54\xe3\x7f\x30\xe0\x83\xa4\x33\x83\x81\x01\x30\xc0\x84\x7f\x30\x04\xe2\x01\x30\xc0\xe4\x04\x60\x80\xe0\x42\x1d\x8d\xe2\x01\x00\x56\xe1\x04\x00\x00\x9a\x0c\x00\x9d\xe5\xc3\xe8\xff\xeb\x00\x20\xa0\xe3\x04\x20\x8d\xe5\x87\x00\x00\xea\x05\x10\xa0\xe1\x04\x20\xa0\xe1\x45\xe8\xff\xeb\x80\x20\x8d\xe2\x0c\x00\x9d\xe5\x02\x10\xa0\xe1\x06\x20\x62\xe0\x97\xe8\xff\xeb\x00\x00\x50\xe3\x07\x00\x00\xaa\x28\x02\x9f\xe5\x00\x00\x8f\xe0\x50\xe8\xff\xeb\x0c\x00\x9d\xe5\xb1\xe8\xff\xeb\x00\x30\xa0\xe3\x04\x30\x8d\xe5\x75\x00\x00\xea\x0c\x00\x9d\xe5\x80\x10\x8d\xe2\x01\x2a\xa0\xe3\x23\xe8\xff\xeb\x00\x00\x50\xe3\x10\x00\x00\xda\xec\x31\x9f\xe5\x42\x1d\x8d\xe2\x03\x30\xd1\xe7\x00\x00\x53\xe3\x00\x30\xa0\x03\x04\x30\x8d\x05\x66\x00\x00\x0a\xd8\x31\x9f\xe5\x03\x00\x51\xe1\x00\x10\xa0\x93\x04\x10\x8d\x95\x61\x00\x00\x9a\x00\xb0\xa0\xe3\x04\xb0\x8d\xe5\x81\x30\x8d\xe2\xfe\x64\xe0\xe3\x0c\x00\x00\xea\xb4\x01\x9f\xe5\x00\x00\x8f\xe0\x31\xe8\xff\xeb\x0c\x00\x9d\xe5\x92\xe8\xff\xeb\x00\x30\xa0\xe3\x04\x30\x8d\xe5\x56\x00\x00\xea\x02\x20\x83\xe2\x42\x1d\x8d\xe2\x02\x00\x51\xe1\x4d\x00\x00\x9a\x04\xa0\x8d\xe5\x00\x40\xa0\xe3\x01\x20\xd3\xe4\x7f\x10\x02\xe2\x84\x43\x81\xe1\x03\x70\xa0\xe1\x80\x00\x12\xe3\x01\x00\x00\x0a\x06\x00\x54\xe1\xf7\xff\xff\x9a\x02\x30\x84\xe2\x03\x30\x87\xe0\x42\x2d\x8d\xe2\x03\x00\x52\xe1\x41\x00\x00\x9a\x04\x30\x87\xe0\x00\x50\xa0\xe3\x01\x20\xd3\xe4\x7f\x10\x02\xe2\x85\x53\x81\xe1\x03\x80\xa0\xe1\x80\x00\x12\xe3\x01\x00\x00\x0a\x06\x00\x55\xe1\xf7\xff\xff\x9a\x02\x30\x85\xe2\x03\x30\x88\xe0\x42\x1d\x8d\xe2\x03\x00\x51\xe1\x32\x00\x00\x9a\x04\x20\x85\xe0\x08\x20\x8d\xe5\x14\x00\x82\xe2\x15\xe8\xff\xeb\x00\xa0\xa0\xe1\x00\x90\xa0\xe1\x04\x30\x9d\xe5\x10\x30\x89\xe4\x04\x90\x80\xe5\x01\x10\x84\xe2\x04\x10\x8d\xe5\x11\x30\x84\xe2\x03\x30\x80\xe0\x08\x30\x80\xe5\x09\x00\xa0\xe1\x07\x10\xa0\xe1\x04\x20\xa0\xe1\xe3\xe7\xff\xeb\x04\x40\x8a\xe0\x00\x70\xa0\xe3\x10\x70\xc4\xe5\x04\x20\x9d\xe5\x02\x00\x89\xe0\x08\x10\xa0\xe1\x05\x20\xa0\xe1\xdb\xe7\xff\xeb\x08\x10\x9d\xe5\x01\x30\x8a\xe0\x11\x70\xc3\xe5\x05\x50\x88\xe0\x01\x20\xd5\xe4\x7f\x30\x02\xe2\x87\x73\x83\xe1\x05\x30\xa0\xe1\x80\x00\x12\xe3\x01\x00\x00\x0a\x06\x00\x57\xe1\xf7\xff\xff\x9a\x07\x30\x83\xe0\x42\x2d\x8d\xe2\x02\x00\x53\xe1\x07\x00\x00\x8a\x01\xb0\x8b\xe2\x80\x20\xdd\xe5\x0b\x00\x52\xe1\xaf\xff\xff\x8a\x04\xa0\x8d\xe5\x02\x00\x00\xea\x04\xa0\x8d\xe5\x00\x00\x00\xea\x04\xa0\x8d\xe5\x0c\x00\x9d\xe5\x38\xe8\xff\xeb\x04\x00\x9d\xe5\x84\xd0\x8d\xe2\x01\xda\x8d\xe2\xf0\x8f\xbd\xe8\x03\x20\xa0\xe3\x18\x30\x9f\xe5\x42\x1d\x8d\xe2\x03\x20\xc1\xe7\x81\x00\x8d\xe2\x5a\xff\xff\xea\xbc\x3a\x00\x00\x90\xef\xff\xff\x18\x32\x00\x00\x00\xf0\xff\xff\x88\x39\x00\x00\xfc\x0f\x00\x00\x24\x39\x00\x00\xf0\x4f\x2d\xe9\x87\xde\x4d\xe2\x04\xd0\x4d\xe2\x28\x00\x8d\xe5\x4c\x10\x8d\xe5\x02\x0b\xa0\xe3\xcc\xe7\xff\xeb\x00\xa0\xa0\xe1\x02\x0b\xa0\xe3\xc9\xe7\xff\xeb\x14\x00\x8d\xe5\x00\x30\xa0\xe3\x50\x30\xcd\xe5\x03\x40\xa0\xe1\x10\x30\x8d\xe5\x02\x0b\xa0\xe3\x18\x00\x8d\xe5\x24\x30\x8d\xe5\x34\x00\x8d\xe5\x03\x80\xa0\xe1\x00\x10\xe0\xe3\x1c\x10\x8d\xe5\x2c\x30\x8d\xe5\x20\x30\x8d\xe5\xac\x26\x9f\xe5\x02\x20\x8f\xe0\x3c\x20\x8d\xe5\xa4\x36\x9f\xe5\x03\x30\x8f\xe0\x38\x30\x8d\xe5\x9c\x06\x9f\xe5\x00\x00\x8f\xe0\x48\x00\x8d\xe5\x80\x01\x00\xea\x20\x10\x9d\xe5\x00\x00\x51\xe3\xbd\x00\x00\x1a\x06\x50\xa0\xe1\x24\x20\x9d\xe5\x02\x60\x86\xe0\x0c\x60\x8d\xe5\x34\x30\x9d\xe5\x06\x00\x53\xe1\x05\x00\x00\x2a\x0a\x00\xa0\xe1\x06\x10\xa0\xe1\x92\xe7\xff\xeb\x00\xa0\xa0\xe1\x0c\x00\x9d\xe5\x34\x00\x8d\xe5\x30\xa0\x8d\xe5\x24\x10\x9d\xe5\x01\x00\x8a\xe0\x70\x10\x8d\xe2\x05\x20\xa0\xe1\x77\xe7\xff\xeb\x0c\x70\x9d\xe5\x01\x20\x47\xe2\x00\x00\x52\xe3\x61\x01\x00\xda\x00\x30\xa0\xe3\x20\x10\x9d\xe5\x03\x00\xda\xe7\x0d\x00\x50\xe3\x16\x00\x00\x1a\x01\x00\x83\xe2\x00\xc0\xda\xe7\x0a\x00\x5c\xe3\x00\x30\xa0\x11\x1d\x00\x00\x1a\x02\x00\x83\xe2\x07\x00\x50\xe1\x00\x30\xa0\xa1\x19\x00\x00\xaa\x00\xc0\xda\xe7\x0d\x00\x5c\xe3\x00\x30\xa0\x11\x15\x00\x00\x1a\x03\x00\x83\xe2\x07\x00\x50\xe1\x00\x30\xa0\xa1\x11\x00\x00\xaa\x00\xc0\xda\xe7\x0a\x00\x5c\xe3\x04\x10\x83\x02\x00\x30\xa0\x01\x09\x00\x00\x1a\x0b\x00\x00\xea\x0a\x00\x50\xe3\x09\x00\x00\x1a\x01\x00\x83\xe2\x00\xc0\xda\xe7\x0a\x00\x5c\xe3\x02\x10\x83\x02\x00\x30\xa0\x01\x02\x00\x00\x1a\x02\x00\x00\xea\x00\x30\xa0\xe1\x00\x00\x00\xea\x00\x30\xa0\xe1\x01\x30\x83\xe2\x02\x00\x53\xe1\x00\x00\xa0\xa3\x01\x00\xa0\xb3\x00\x00\x51\xe3\x00\x00\xa0\x13\x00\x00\x50\xe3\xd1\xff\xff\x1a\x20\x10\x8d\xe5\x24\x10\x8d\xe5\x00\x00\x51\xe3\x30\x01\x00\x0a\x01\x90\x41\xe2\x00\x00\x59\xe3\x64\x00\x00\xda\x00\xb0\xa0\xe3\x0b\x30\xa0\xe1\x0b\x50\xa0\xe1\x0b\x60\xa0\xe1\x40\x40\x8d\xe5\x0b\x40\xa0\xe1\x44\x80\x8d\xe5\x03\x00\x54\xe1\x18\x00\x00\xba\x06\x20\xda\xe7\x3a\x00\x52\xe3\x15\x00\x00\x1a\x06\x00\x59\xe1\x06\x20\xa0\xd1\x0e\x00\x00\xda\x01\x30\x86\xe2\x03\x10\x8a\xe0\x03\x30\xda\xe7\x09\x00\x53\xe3\x20\x00\x53\x13\x06\x20\xa0\x11\x07\x00\x00\x1a\x06\x20\xa0\xe1\x01\x20\x82\xe2\x09\x00\x52\xe1\x03\x00\x00\xaa\x01\x30\xf1\xe5\x09\x00\x53\xe3\x20\x00\x53\x13\xf8\xff\xff\x0a\x01\xb0\x82\xe2\x06\x30\xa0\xe1\x02\x60\xa0\xe1\x3d\x00\x00\xea\x06\x80\x8a\xe0\x06\x20\xda\xe7\x0a\x00\x52\xe3\x0d\x00\x52\x13\x38\x00\x00\x1a\x04\x00\x53\xe1\x03\x00\x5b\xc1\x1b\x00\x00\xda\x04\x50\x8a\xe0\x03\x40\x64\xe0\x05\x00\xa0\xe1\x38\x10\x9d\xe5\x04\x20\xa0\xe1\x4b\xe7\xff\xeb\x00\x00\x50\xe3\x05\x00\x00\x1a\x0b\x00\x8a\xe0\x00\x10\xa0\xe3\x0a\x20\xa0\xe3\xee\xe6\xff\xeb\x1c\x00\x8d\xe5\x0d\x00\x00\xea\x05\x00\xa0\xe1\x3c\x10\x9d\xe5\x04\x20\xa0\xe1\x3f\xe7\xff\xeb\x00\x00\x50\xe3\x07\x00\x00\x1a\x0b\x00\x8a\xe0\x48\x10\x9d\xe5\x07\x20\xa0\xe3\x39\xe7\xff\xeb\x2c\x20\x9d\xe5\x00\x00\x50\xe3\x01\x20\xa0\x03\x2c\x20\x8d\xe5\x07\x00\x56\xe1\x06\x30\xa0\xa1\x06\x40\xa0\xa1\x00\xb0\xa0\xa3\x14\x00\x00\xaa\x00\x30\xd8\xe5\x0a\x00\x53\xe3\x0d\x00\x53\x13\x06\x30\xa0\x11\x06\x40\xa0\x11\x00\xb0\xa0\x13\x0d\x00\x00\x1a\x01\x60\x86\xe2\x07\x00\x56\xe1\x07\x00\x00\xaa\x06\x30\xda\xe7\x0a\x00\x53\xe3\x0d\x00\x53\x13\xf8\xff\xff\x0a\x06\x30\xa0\xe1\x06\x40\xa0\xe1\x00\xb0\xa0\xe3\x02\x00\x00\xea\x06\x30\xa0\xe1\x06\x40\xa0\xe1\x00\xb0\xa0\xe3\x01\x60\x86\xe2\x09\x00\x56\xe1\xa3\xff\xff\xba\x40\x40\x9d\xe5\x44\x80\x9d\xe5\x0c\x30\x9d\xe5\x24\x00\x9d\xe5\x03\x60\x60\xe0\x70\x00\x8d\xe2\x30\x20\x9d\xe5\x24\x30\x9d\xe5\x03\x10\x82\xe0\x06\x20\xa0\xe1\xce\xe6\xff\xeb\x0c\x00\x9d\xe5\x24\x00\x8d\xe5\x2c\x10\x9d\xe5\x00\x00\x51\xe3\x8e\x00\x00\x0a\x00\x00\x56\xe3\x03\x00\x00\xca\xae\x00\x00\xea\x0c\x20\x9d\xe5\x10\x20\x8d\xe5\x03\x00\x00\xea\x00\x50\xa0\xe3\x05\x90\xa0\xe1\x50\x70\x8d\xe2\x0a\xb0\xa0\xe1\x00\x00\x58\xe3\x61\x00\x00\x1a\x00\x00\x54\xe3\x0f\x00\x00\x1a\x05\x00\x56\xe1\x9a\x00\x00\xda\x87\x0e\x8d\xe2\x05\x30\x80\xe0\x00\x38\x53\xe5\x0d\x00\x53\xe3\x02\x00\x00\x1a\x01\x50\x85\xe2\x05\x00\x56\xe1\x94\x00\x00\xda\x87\x1e\x8d\xe2\x05\x30\x81\xe0\x00\x38\x53\xe5\x0a\x00\x53\xe3\x16\x00\x00\x1a\x01\x50\x85\xe2\x05\x00\x56\xe1\x13\x00\x00\xca\x0b\xa0\xa0\xe1\x8f\x00\x00\xea\x07\x30\xc4\xe7\x01\x40\x84\xe2\x07\x90\xc4\xe7\x01\x50\x85\xe2\x05\x00\x56\xe1\x0d\x00\x00\xca\x0b\xa0\xa0\xe1\x87\x00\x00\xea\x87\x0e\x8d\xe2\x05\x30\x80\xe0\x00\x38\x53\xe5\x0d\x00\x53\xe3\xa9\x00\x00\x0a\x0a\x00\x53\xe3\x70\x30\x8d\x12\x02\x20\x83\x10\x14\x00\x00\x1a\xa4\x00\x00\xea\xc1\xe6\xff\xeb\x00\x10\x90\xe5\x70\x30\x8d\xe2\x03\x30\xd5\xe7\x83\x20\xa0\xe1\xb2\x20\x91\xe1\x01\x0a\x12\xe3\x00\x20\xa0\x03\x01\x20\xa0\x13\x1e\x00\x54\xe3\x00\x20\xa0\x83\x01\x20\x02\x92\x00\x00\x52\xe3\xdf\xff\xff\x1a\x05\x20\xa0\xe1\x04\x10\xa0\xe1\x05\x00\x56\xe1\xe3\xff\xff\xca\x0b\xa0\xa0\xe1\x69\x00\x00\xea\x01\x50\x85\xe2\x05\x00\x56\xe1\x63\x00\x00\xda\x01\x30\xf2\xe5\x0d\x00\x53\xe3\x8a\x00\x00\x0a\x0a\x00\x53\xe3\xf7\xff\xff\x1a\x87\x00\x00\xea\x01\x50\x85\xe2\x05\x00\x56\xe1\x5c\x00\x00\xda\x87\x0e\x8d\xe2\x05\x30\x80\xe0\x00\x38\x53\xe5\x0a\x00\x53\xe3\xb0\xff\xff\x1a\x00\x00\x51\xe3\x6b\x00\x00\x0a\x07\x30\xa0\xe1\x07\x10\x81\xe0\x01\x20\xd3\xe4\x30\x00\x42\xe2\x70\x00\xef\xe6\x09\x00\x50\xe3\x08\x82\x82\x90\x30\x80\x48\x92\x08\x82\xa0\x81\x57\x80\x48\x82\x20\x20\x82\x83\x02\x80\x88\x80\x01\x00\x53\xe1\xf3\xff\xff\x1a\x50\x90\xcd\xe5\x00\x00\x58\xe3\x5c\x00\x00\x0a\x01\x50\x85\xe2\x09\x40\xa0\xe1\x06\xa0\x65\xe0\x0a\x00\x58\xe1\x08\xa0\xa0\xb1\x0a\xa0\xa0\xa1\x10\x10\x9d\xe5\x01\x10\x8a\xe0\x0c\x10\x8d\xe5\x18\x20\x9d\xe5\x02\x00\x51\xe1\x07\x00\x00\x9a\x1c\x30\x9d\xe5\x01\x00\x53\xe1\x01\x30\xa0\xb1\x18\x30\x8d\xe5\x14\x00\x9d\xe5\x03\x10\xa0\xe1\x5c\xe6\xff\xeb\x14\x00\x8d\xe5\x14\x10\x9d\xe5\x10\x20\x9d\xe5\x02\x00\x81\xe0\x70\x30\x8d\xe2\x05\x10\x83\xe0\x0a\x20\xa0\xe1\x42\xe6\xff\xeb\x05\x50\x8a\xe0\x08\x80\x6a\xe0\x05\x00\x56\xe1\x77\xff\xff\xca\x0b\xa0\xa0\xe1\x0c\x00\x9d\xe5\x10\x00\x8d\xe5\x22\x00\x00\xea\x1c\x10\x9d\xe5\x00\x00\x51\xe3\x03\x00\x00\xda\x10\x20\x9d\xe5\x02\x30\x86\xe0\x03\x00\x51\xe1\x01\x60\x62\xb0\x06\x50\xa0\xe1\x10\x30\x9d\xe5\x03\x60\x86\xe0\x18\x00\x9d\xe5\x06\x00\x50\xe1\x06\x00\x00\x2a\x1c\x10\x9d\xe5\x06\x00\x51\xe1\x06\x10\xa0\xb1\x18\x10\x8d\xe5\x14\x00\x9d\xe5\x39\xe6\xff\xeb\x14\x00\x8d\xe5\x14\x20\x9d\xe5\x10\x30\x9d\xe5\x03\x00\x82\xe0\x70\x10\x8d\xe2\x05\x20\xa0\xe1\x20\xe6\xff\xeb\x10\x60\x8d\xe5\x06\x00\x00\xea\x0b\xa0\xa0\xe1\x04\x00\x00\xea\x0b\xa0\xa0\xe1\x02\x00\x00\xea\x0b\xa0\xa0\xe1\x00\x00\x00\xea\x0b\xa0\xa0\xe1\x1c\x00\x9d\xe5\x10\x10\x9d\xe5\x00\x00\x51\xe1\x00\x00\x50\xa3\x05\x00\x00\xda\x11\x00\x00\xea\x0c\x10\x9d\xe5\x24\x10\x8d\xe5\x01\x00\x00\xea\x0c\x20\x9d\xe5\x24\x20\x8d\xe5\x00\x30\xa0\xe3\x00\x30\x8d\xe5\x28\x00\x9d\xe5\x70\x10\x8d\xe2\x02\x2b\xa0\xe3\x78\x30\x9f\xe5\x2f\xfd\xff\xeb\x00\x60\x50\xe2\x75\xfe\xff\xca\x02\x00\x00\xea\x0b\xa0\xa0\xe1\x00\x00\x00\xea\x0b\xa0\xa0\xe1\x0a\x00\xa0\xe1\xf7\xe5\xff\xeb\x10\x30\x9d\xe5\x4c\x00\x9d\xe5\x00\x30\x80\xe5\x00\x00\x53\xe3\x03\x00\x00\x1a\x14\x00\x9d\xe5\xf0\xe5\xff\xeb\x00\x10\xa0\xe3\x14\x10\x8d\xe5\x14\x00\x9d\xe5\x74\xd0\x8d\xe2\x02\xdb\x8d\xe2\xf0\x8f\xbd\xe8\x87\x2e\x8d\xe2\x05\x30\x82\xe0\x00\x38\x53\xe5\x0d\x00\x53\xe3\x75\xff\xff\x1a\x71\xff\xff\xea\x28\x37\x00\x00\x0c\x37\x00\x00\x24\x37\x00\x00\x88\x13\x00\x00\xf0\x47\x2d\xe9\x89\xde\x4d\xe2\x08\xd0\x4d\xe2\x00\x40\xa0\xe1\x01\x50\xa0\xe1\x02\x70\xa0\xe1\x03\x80\xa0\xe1\xb8\xa8\x9d\xe5\x50\x91\x9f\xe5\x09\x90\x8f\xe0\x00\x30\xa0\xe3\x00\x30\x88\xe5\xc4\x28\x9d\xe5\x4a\xfb\xff\xeb\x00\x60\x50\xe2\x00\x40\xa0\xb3\x48\x00\x00\xba\x00\x00\x5a\xe3\x20\x00\x00\x0a\x80\x30\xa0\xe3\x94\x30\x8d\xe5\x06\x00\xa0\xe1\x14\x10\x8d\xe2\x94\x20\x8d\xe2\x2d\xe6\xff\xeb\x00\x00\x50\xe3\x03\x00\x00\xaa\x08\x01\x9f\xe5\x00\x00\x8f\xe0\xdd\xe5\xff\xeb\x14\x00\x00\xea\x00\x30\xa0\xe3\x00\x30\x8d\xe5\x04\x30\x8d\xe5\x03\x30\xa0\xe3\x08\x30\x8d\xe5\x14\x00\x8d\xe2\x94\x10\x9d\xe5\x0a\x20\xa0\xe1\xbc\x38\x9d\xe5\x1a\xe6\xff\xeb\x00\x00\x50\xe3\x08\x00\x00\x0a\xcc\x30\x9f\xe5\x03\x30\x99\xe7\x00\xa0\x93\xe5\xb4\xe5\xff\xeb\x00\x20\xa0\xe1\x0a\x00\xa0\xe1\xb8\x10\x9f\xe5\x01\x10\x8f\xe0\xeb\xe5\xff\xeb\xc0\x38\x9d\xe5\x00\x30\x8d\xe5\x04\x40\x8d\xe5\x08\x50\x8d\xe5\x98\x00\x8d\xe2\x02\x1b\xa0\xe3\x98\x20\x9f\xe5\x02\x20\x8f\xe0\x07\x30\xa0\xe1\xea\xe5\xff\xeb\x00\x50\x50\xe2\x13\x00\x00\xda\x00\x40\xa0\xe3\x04\x70\xa0\xe1\x06\x00\xa0\xe1\x98\x30\x8d\xe2\x04\x10\x83\xe0\x05\x20\x64\xe0\x07\x30\xa0\xe1\x19\xe6\xff\xeb\x00\x00\x50\xe3\x06\x00\x00\xaa\x5c\x00\x9f\xe5\x00\x00\x8f\xe0\xae\xe5\xff\xeb\x06\x00\xa0\xe1\x0f\xe6\xff\xeb\x00\x40\xa0\xe3\x08\x00\x00\xea\x00\x40\x84\xe0\x04\x00\x55\xe1\xed\xff\xff\xca\x06\x00\xa0\xe1\x08\x10\xa0\xe1\xdf\xfd\xff\xeb\x00\x40\xa0\xe1\x06\x00\xa0\xe1\x04\xe6\xff\xeb\x04\x00\xa0\xe1\x98\xd0\x8d\xe2\x02\xdb\x8d\xe2\xf0\x87\xbd\xe8\x54\xb4\x00\x00\x14\x30\x00\x00\xec\x00\x00\x00\xc8\x2f\x00\x00\xc0\x2f\x00\x00\xe4\x2f\x00\x00\x04\xe0\x2d\xe5\x14\xd0\x4d\xe2\x18\xc0\x9d\xe5\x00\xc0\x8d\xe5\x1c\xc0\x9d\xe5\x04\xc0\x8d\xe5\x18\xc0\x9f\xe5\x0c\xc0\x8f\xe0\x08\xc0\x8d\xe5\x20\xc0\x9d\xe5\x0c\xc0\x8d\xe5\x8f\xff\xff\xeb\x14\xd0\x8d\xe2\x00\x80\xbd\xe8\xb4\x24\x00\x00\xf0\x4f\x2d\xe9\x14\xd0\x4d\xe2\x01\x60\xa0\xe1\x02\x50\xa0\xe1\x03\x70\xa0\xe1\x38\xb0\x9d\xe5\x00\x40\x50\xe2\x00\x00\xa0\x03\xae\x00\x00\x0a\x04\x00\xa0\xe1\xb8\x12\x9f\xe5\x01\x10\x8f\xe0\x45\xe5\xff\xeb\x00\x80\x50\xe2\x00\x00\xa0\x03\xa7\x00\x00\x0a\x00\x30\xd4\xe5\x68\x00\x53\xe3\x00\x00\xa0\x13\xa3\x00\x00\x1a\x01\x30\xd4\xe5\x74\x00\x53\xe3\x00\x00\xa0\x13\x9f\x00\x00\x1a\x02\x30\xd4\xe5\x74\x00\x53\xe3\x00\x00\xa0\x13\x9b\x00\x00\x1a\x03\x30\xd4\xe5\x70\x00\x53\xe3\x00\x00\xa0\x13\x97\x00\x00\x1a\x03\xa0\x88\xe2\x06\x00\xa0\xe1\x00\x10\xa0\xe3\x41\x20\xa0\xe3\x9c\xe5\xff\xeb\x03\x30\xd8\xe5\x5b\x00\x53\xe3\x58\x00\x00\x1a\x0a\x00\xa0\xe1\x25\x10\xa0\xe3\x7e\xe5\xff\xeb\x00\x40\xa0\xe1\x0a\x00\xa0\xe1\x5d\x10\xa0\xe3\x7a\xe5\xff\xeb\x00\x80\xa0\xe1\x00\x90\x90\xe2\x01\x90\xa0\x13\x00\x00\x54\xe3\x00\x00\x50\x13\x1d\x00\x00\x0a\x00\x00\x5b\xe3\x00\x00\x54\x11\x1a\x00\x00\x2a\x01\x10\x84\xe2\x01\x30\xd4\xe5\x32\x00\x53\xe3\x02\x00\x00\x1a\x02\x30\xd4\xe5\x35\x00\x53\xe3\x03\x10\x84\x02\x08\x40\x61\xe0\x0f\x00\x54\xe3\x0f\x40\xa0\xa3\x0d\x00\xa0\xe1\x04\x20\xa0\xe1\x2e\xe5\xff\xeb\x10\x30\x8d\xe2\x04\x40\x83\xe0\x00\x30\xa0\xe3\x10\x30\x44\xe5\x0d\x00\xa0\xe1\x97\xe5\xff\xeb\x00\x00\x8b\xe5\x00\x00\x50\xe3\x04\x00\x00\x1a\x0d\x00\xa0\xe1\x00\x10\xa0\xe3\x0a\x20\xa0\xe3\x51\xe5\xff\xeb\x00\x00\x8b\xe5\x0a\x00\xa0\xe1\x2f\x10\xa0\xe3\x53\xe5\xff\xeb\x00\x40\xa0\xe1\x00\x00\x50\xe3\x00\x00\xa0\x03\x01\x00\x09\x12\x00\x00\x50\xe3\x24\x00\x00\x0a\x01\x20\x88\xe2\x02\x20\x6a\xe0\x06\x00\xa0\xe1\x0a\x10\xa0\xe1\x40\x00\x52\xe3\x40\x20\xa0\xa3\x64\xe5\xff\xeb\x01\x30\xd8\xe5\x3a\x00\x53\xe3\x50\x30\xa0\x13\xb0\x30\xc5\x11\x15\x00\x00\x1a\x00\x30\xa0\xe3\xb0\x30\xc5\xe1\x02\x30\xd8\xe5\x30\x30\x43\xe2\x73\x30\xef\xe6\x09\x00\x53\xe3\x0e\x00\x00\x8a\x01\x80\x88\xe2\xb0\x30\xd5\xe1\x03\x31\x83\xe0\x83\x30\xa0\xe1\x73\x30\xff\xe6\xb0\x30\xc5\xe1\x30\x30\x43\xe2\x01\x20\xf8\xe5\x02\x30\x83\xe0\xb0\x30\xc5\xe1\x01\x30\xd8\xe5\x30\x30\x43\xe2\x73\x30\xef\xe6\x09\x00\x53\xe3\xf1\xff\xff\x9a\x00\x40\x87\xe5\x01\x00\xa0\xe3\x36\x00\x00\xea\x0a\x00\xa0\xe1\x3a\x10\xa0\xe3\x25\xe5\xff\xeb\x00\x40\xa0\xe1\x0a\x00\xa0\xe1\x2f\x10\xa0\xe3\x21\xe5\xff\xeb\x00\x80\x50\xe2\x00\x00\xa0\x03\x2c\x00\x00\x0a\x08\x00\x54\xe1\x00\x30\xa0\x93\x01\x30\xa0\x83\x00\x00\x54\xe3\x01\x30\x83\x03\x00\x00\x53\xe3\x08\x00\x00\x0a\x08\x20\x6a\xe0\x06\x00\xa0\xe1\x0a\x10\xa0\xe1\x40\x00\x52\xe3\x40\x20\xa0\xa3\x2f\xe5\xff\xeb\x50\x30\xa0\xe3\xb0\x30\xc5\xe1\x1a\x00\x00\xea\x04\x20\x6a\xe0\x06\x00\xa0\xe1\x0a\x10\xa0\xe1\x40\x00\x52\xe3\x40\x20\xa0\xa3\x26\xe5\xff\xeb\x00\x30\xa0\xe3\xb0\x30\xc5\xe1\x01\x30\xd4\xe5\x30\x30\x43\xe2\x73\x30\xef\xe6\x09\x00\x53\xe3\x0d\x00\x00\x8a\xb0\x30\xd5\xe1\x03\x31\x83\xe0\x83\x30\xa0\xe1\x73\x30\xff\xe6\xb0\x30\xc5\xe1\x01\x20\xf4\xe5\x30\x30\x43\xe2\x03\x30\x82\xe0\xb0\x30\xc5\xe1\x01\x30\xd4\xe5\x30\x30\x43\xe2\x73\x30\xef\xe6\x09\x00\x53\xe3\xf1\xff\xff\x9a\x00\x80\x87\xe5\x01\x00\xa0\xe3\x14\xd0\x8d\xe2\xf0\x8f\xbd\xe8\x20\x2f\x00\x00\x10\x40\x2d\xe9\x68\xd0\x4d\xe2\x01\x40\xa0\xe1\x14\x20\x8d\xe5\x00\x30\xa0\xe3\x00\x30\x81\xe5\x14\x30\x8d\xe2\x00\x30\x8d\xe5\x1c\x10\x8d\xe2\x66\x20\x8d\xe2\x60\x30\x8d\xe2\x38\xff\xff\xeb\x00\x00\x50\xe3\x00\x00\xa0\x03\x09\x00\x00\x0a\xb6\x16\xdd\xe1\x00\x30\xa0\xe3\x00\x30\x8d\xe5\x04\x30\x8d\xe5\x14\x30\x9d\xe5\x08\x30\x8d\xe5\x1c\x00\x8d\xe2\x60\x20\x9d\xe5\x04\x30\xa0\xe1\x1c\xff\xff\xeb\x68\xd0\x8d\xe2\x10\x80\xbd\xe8\x70\x40\x2d\xe9\x60\xd0\x4d\xe2\x01\x40\xa0\xe1\x03\x60\xa0\xe1\x00\x30\xa0\xe3\x00\x30\x81\xe5\x00\x50\x52\xe2\x00\x30\xc5\x15\x70\x30\x8d\xe2\x00\x30\x8d\xe5\x14\x10\x8d\xe2\x5e\x20\x8d\xe2\x58\x30\x8d\xe2\x1b\xff\xff\xeb\x00\x00\x50\xe3\x00\x00\xa0\x03\x08\x00\x00\x0a\xbe\x15\xdd\xe1\x00\x50\x8d\xe5\x04\x60\x8d\xe5\x70\x30\x9d\xe5\x08\x30\x8d\xe5\x14\x00\x8d\xe2\x58\x20\x9d\xe5\x04\x30\xa0\xe1\x00\xff\xff\xeb\x60\xd0\x8d\xe2\x70\x80\xbd\xe8\xf0\x4f\x2d\xe9\x14\xd0\x4d\xe2\x00\x40\xa0\xe1\x00\x30\x90\xe5\x08\x30\x80\xe5\x0c\x20\x90\xe5\x02\x30\x83\xe0\x04\x30\x80\xe5\x08\x35\x9f\xe5\x03\x30\x8f\xe0\x08\x30\x8d\xe5\x00\xb5\x9f\xe5\x0b\xb0\x8f\xe0\xfc\xa4\x9f\xe5\x0a\xa0\x8f\xe0\xf8\x84\x9f\xe5\x08\x80\x8f\xe0\x32\x01\x00\xea\x04\x30\x86\xe2\x03\x00\x55\xe1\x15\x00\x00\x3a\x06\x00\xa0\xe1\x0a\x10\xa0\xe1\x04\x20\xa0\xe3\x6e\xe4\xff\xeb\x00\x00\x50\xe3\x0f\x00\x00\x1a\x03\x60\x86\xe2\x08\x60\x84\xe5\x03\x70\xa0\xe3\x08\x60\x94\xe5\x01\x00\x86\xe2\x08\x00\x84\xe5\x04\x60\x86\xe2\x05\x00\x56\xe1\x25\x01\x00\x2a\x08\x10\xa0\xe1\x07\x20\xa0\xe1\x60\xe4\xff\xeb\x00\x00\x50\xe3\xf4\xff\xff\x1a\x08\x60\x84\xe5\x19\x01\x00\xea\x00\x30\xd6\xe5\x3c\x00\x53\xe3\x14\x01\x00\x1a\x01\x30\xd6\xe5\x3f\x00\x53\xe3\x01\x10\x86\x12\x08\x10\x84\x15\x00\xc0\xa0\x13\x0a\x00\x00\x1a\x0d\x01\x00\xea\x01\x20\x82\xe2\x01\x30\x80\xe2\x08\x30\x84\xe5\x05\x00\x53\xe1\x0f\x01\x00\x2a\x01\x30\xd0\xe5\x3a\x00\x53\xe3\x02\x00\x00\x1a\x02\x10\x80\xe2\x08\x10\x84\xe5\x0c\x20\xa0\xe1\x08\x00\x94\xe5\x00\x30\xd0\xe5\x20\x00\x53\xe3\x09\x00\x53\x13\x07\x00\x00\x0a\x0d\x00\x53\xe3\x05\x00\x00\x0a\x0a\x00\x53\xe3\x03\x00\x00\x0a\x3e\x00\x53\xe3\x01\x00\x00\x0a\x2f\x00\x53\xe3\xe7\xff\xff\x1a\x00\x00\x52\xe3\xd9\x00\x00\xda\x14\x30\x94\xe5\x00\x00\x53\xe3\x01\x00\x00\x0a\x10\x00\x94\xe5\x33\xff\x2f\xe1\x08\x10\x94\xe5\x04\xc0\x94\xe5\x01\x00\x5c\xe1\xf1\x00\x00\x9a\x00\x30\xd1\xe5\x3e\x00\x53\xe3\x2f\x00\x53\x13\x00\x50\xa0\x13\x04\x00\x00\x1a\x6b\x00\x00\xea\x01\x30\xd3\xe5\x3e\x00\x53\xe3\x2f\x00\x53\x13\x67\x00\x00\x0a\x20\x00\x53\xe3\x09\x00\x53\x13\x5d\x00\x00\x0a\x0d\x00\x53\xe3\x5b\x00\x00\x0a\x0a\x00\x53\xe3\x05\x20\xa0\x11\x05\x00\x00\x1a\x57\x00\x00\xea\x01\x20\x82\xe2\x01\x00\x80\xe2\x08\x00\x84\xe5\x00\x00\x5c\xe1\xd9\x00\x00\x9a\x08\x00\x94\xe5\x00\x30\xd0\xe5\x3d\x00\x53\xe3\x0a\x00\x00\x0a\x20\x00\x53\xe3\x09\x00\x53\x13\x07\x00\x00\x0a\x0d\x00\x53\xe3\x05\x00\x00\x0a\x0a\x00\x53\xe3\xef\xff\xff\x1a\x02\x00\x00\xea\x04\x00\x94\xe5\x03\x00\x50\xe1\xca\x00\x00\x9a\x08\x30\x94\xe5\x01\x00\xd3\xe4\x08\x30\x84\xe5\x3d\x00\x50\xe3\xf7\xff\xff\x1a\x04\x00\x00\xea\x01\x30\x83\xe2\x08\x30\x84\xe5\x04\x00\x94\xe5\x00\x00\x53\xe1\xbf\x00\x00\x2a\x08\x30\x94\xe5\x00\x00\xd3\xe5\x09\x00\x50\xe3\x20\x00\x50\x13\xf5\xff\xff\x0a\x0d\x00\x50\xe3\xf3\xff\xff\x0a\x0a\x00\x50\xe3\xf1\xff\xff\x0a\x22\x00\x50\xe3\x27\x00\x50\x13\x05\x60\xa0\x11\x18\x00\x00\x1a\x01\x30\x83\xe2\x08\x30\x84\xe5\x04\x90\x94\xe5\x09\x00\x53\xe1\xad\x00\x00\x2a\x05\x60\xa0\xe1\x01\x70\xa0\xe1\x04\x00\x00\xea\x01\x60\x86\xe2\x01\x10\x81\xe2\x08\x10\x84\xe5\x01\x00\x59\xe1\xa5\x00\x00\x9a\x08\x10\x94\xe5\x00\xc0\xd1\xe5\x00\x00\x5c\xe1\xf6\xff\xff\x1a\x07\x10\xa0\xe1\x12\x00\x00\xea\x01\x60\x86\xe2\x01\xc0\x8c\xe2\x08\xc0\x84\xe5\x04\x00\x94\xe5\x00\x00\x5c\xe1\x99\x00\x00\x2a\x08\xc0\x94\xe5\x00\x00\xdc\xe5\x20\x00\x50\xe3\x09\x00\x50\x13\x07\x00\x00\x0a\x0d\x00\x50\xe3\x05\x00\x00\x0a\x0a\x00\x50\xe3\x03\x00\x00\x0a\x3e\x00\x50\xe3\x01\x00\x00\x0a\x2f\x00\x50\xe3\xec\xff\xff\x1a\x20\xc0\x94\xe5\x00\x00\x5c\xe3\x02\x00\x00\x0a\x10\x00\x94\xe5\x00\x60\x8d\xe5\x3c\xff\x2f\xe1\x08\x30\x94\xe5\x01\x10\x83\xe2\x08\x10\x84\xe5\x04\xc0\x94\xe5\x0c\x00\x51\xe1\x94\xff\xff\x3a\x7f\x00\x00\xea\x08\x90\x94\xe5\x00\x30\xd9\xe5\x2f\x00\x53\xe3\x76\x00\x00\x0a\x01\x90\x89\xe2\x08\x90\x84\xe5\x04\x70\x94\xe5\x07\x00\x59\xe1\x76\x00\x00\x2a\x00\x60\xa0\xe3\x04\x00\x00\xea\x01\x60\x86\xe2\x01\x50\x85\xe2\x08\x50\x84\xe5\x05\x00\x57\xe1\x6f\x00\x00\x9a\x08\x50\x94\xe5\x00\x30\xd5\xe5\x09\x00\x53\xe3\x20\x00\x53\x13\xf5\xff\xff\x0a\x0d\x00\x53\xe3\xf3\xff\xff\x0a\x0a\x00\x53\xe3\xf1\xff\xff\x0a\x05\x00\xa0\xe1\x08\x10\x9d\xe5\x09\x20\xa0\xe3\xa0\xe3\xff\xeb\x00\x00\x50\xe3\x2e\x00\x00\x1a\x09\x50\x85\xe2\x0c\x50\x8d\xe5\x08\x50\x84\xe5\x00\x60\xa0\xe3\x03\x90\xa0\xe3\x04\x50\xa0\xe1\x05\x00\x00\xea\x01\x60\x86\xe2\x01\x30\x84\xe2\x08\x30\x85\xe5\x04\x40\x84\xe2\x04\x00\x57\xe1\x53\x00\x00\x9a\x08\x40\x95\xe5\x04\x00\xa0\xe1\x0b\x10\xa0\xe1\x09\x20\xa0\xe1\x8c\xe3\xff\xeb\x00\x00\x50\xe3\xf2\xff\xff\x1a\x05\x40\xa0\xe1\x00\x00\x56\xe3\x0c\x00\x00\xda\x1c\x30\x95\xe5\x00\x00\x53\xe3\x09\x00\x00\x0a\x10\x00\x95\xe5\x0c\x10\x9d\xe5\x06\x20\xa0\xe1\x33\xff\x2f\xe1\x04\x00\x00\xea\x01\x30\x83\xe2\x08\x30\x84\xe5\x04\x20\x94\xe5\x02\x00\x53\xe1\x3c\x00\x00\x2a\x08\x30\x94\xe5\x00\x20\xd3\xe5\x3c\x00\x52\xe3\xf6\xff\xff\x1a\x32\x00\x00\xea\x01\x60\x86\xe2\x01\x30\x82\xe2\x08\x30\x84\xe5\x02\x20\x82\xe2\x02\x00\x57\xe1\x31\x00\x00\x9a\x08\x20\x94\xe5\x00\x30\xd2\xe5\x3c\x00\x53\xe3\xf5\xff\xff\x1a\x00\x00\x56\xe3\x26\x00\x00\xda\x1c\x30\x94\xe5\x00\x00\x53\xe3\x23\x00\x00\x0a\x01\x20\xd2\xe5\x2f\x00\x52\xe3\x20\x00\x00\x1a\x10\x00\x94\xe5\x09\x10\xa0\xe1\x06\x20\xa0\xe1\x33\xff\x2f\xe1\x1b\x00\x00\xea\x2f\x00\x53\xe3\x19\x00\x00\x1a\x01\x10\x80\xe2\x08\x10\x84\xe5\x05\x00\x51\xe1\x1a\x00\x00\x2a\x00\x20\xa0\xe3\x04\x00\x00\xea\x01\x20\x82\xe2\x01\x30\x83\xe2\x08\x30\x84\xe5\x05\x00\x53\xe1\x13\x00\x00\x2a\x08\x30\x94\xe5\x00\x00\xd3\xe5\x3e\x00\x50\xe3\xf6\xff\xff\x1a\x18\x30\x94\xe5\x00\x00\x53\xe3\x01\x00\x00\x0a\x10\x00\x94\xe5\x33\xff\x2f\xe1\x08\x30\x94\xe5\x01\x30\x83\xe2\x08\x30\x84\xe5\x01\x00\x00\xea\x01\x60\x86\xe2\x08\x60\x84\xe5\x08\x60\x94\xe5\x04\x50\x94\xe5\x01\x30\x45\xe2\x03\x00\x56\xe1\xc7\xfe\xff\x3a\x14\xd0\x8d\xe2\xf0\x8f\xbd\xe8\x70\x2b\x00\x00\x70\x2b\x00\x00\x50\x2b\x00\x00\x50\x2b\x00\x00\x70\x40\x2d\xe9\x00\x40\xa0\xe1\x01\x60\xa0\xe1\x02\x50\xa0\xe1\x2c\xe3\xff\xeb\x00\x30\xa0\xe3\x05\x30\xc4\xe7\x80\x31\x94\xe5\x01\x30\x83\xe2\x80\x31\x84\xe5\x07\x00\x55\xe3\x70\x80\xbd\x18\x06\x00\xa0\xe1\x24\x10\x9f\xe5\x01\x10\x8f\xe0\x05\x20\xa0\xe1\x26\xe3\xff\xeb\x00\x00\x50\xe3\x00\x30\xa0\x03\x84\x39\xc4\x05\x04\x3a\xc4\x05\x84\x3a\xc4\x05\x04\x3b\xc4\x05\x70\x80\xbd\xe8\x2c\x26\x00\x00\x38\x40\x2d\xe9\x00\x40\xa0\xe1\x80\x31\x90\xe5\x01\x30\x43\xe2\x80\x31\x80\xe5\x07\x00\x52\xe3\x38\x80\xbd\x18\x01\x00\xa0\xe1\xe4\x10\x9f\xe5\x01\x10\x8f\xe0\x13\xe3\xff\xeb\x00\x00\x50\xe3\x38\x80\xbd\x18\x0b\x5c\x84\xe2\x04\x50\x85\xe2\x05\x00\xa0\xe1\xc8\x10\x9f\xe5\x01\x10\x8f\xe0\x36\x20\xa0\xe3\x0a\xe3\xff\xeb\x00\x00\x50\xe3\x05\x00\x00\x1a\x26\x1d\x84\xe2\x61\x0f\x84\xe2\x04\x10\x81\xe2\x02\x2c\xa0\xe3\xfd\xe2\xff\xeb\x38\x80\xbd\xe8\x05\x00\xa0\xe1\x98\x10\x9f\xe5\x01\x10\x8f\xe0\x34\x20\xa0\xe3\xfd\xe2\xff\xeb\x00\x00\x50\xe3\x06\x00\x00\x1a\x1e\x0d\x84\xe2\x26\x1d\x84\xe2\x04\x00\x80\xe2\x04\x10\x81\xe2\x02\x2c\xa0\xe3\xef\xe2\xff\xeb\x38\x80\xbd\xe8\x05\x00\xa0\xe1\x64\x10\x9f\xe5\x01\x10\x8f\xe0\x2d\x20\xa0\xe3\xef\xe2\xff\xeb\x00\x00\x50\xe3\x06\x00\x00\x0a\x05\x00\xa0\xe1\x4c\x10\x9f\xe5\x01\x10\x8f\xe0\x2e\x20\xa0\xe3\xe8\xe2\xff\xeb\x00\x00\x50\xe3\x38\x80\xbd\x18\x04\x35\xd4\xe5\x00\x00\x53\xe3\x26\x1d\x84\x02\xe1\x0f\x84\x02\x16\x0d\x84\x12\x26\x1d\x84\x12\x04\x00\x80\x12\x04\x10\x81\xe2\x02\x2c\xa0\xe3\xd6\xe2\xff\xeb\x38\x80\xbd\xe8\xdc\x25\x00\x00\x9c\x1b\x00\x00\x90\x25\x00\x00\x90\x25\x00\x00\xa4\x25\x00\x00\x70\x40\x2d\xe9\x00\x40\xa0\xe1\x01\x60\xa0\xe1\x02\x50\xa0\xe1\xd8\x10\x9f\xe5\x01\x10\x8f\xe0\xae\xe2\xff\xeb\x00\x00\x50\xe3\x80\x40\x84\x02\x26\x00\x00\x0a\x04\x00\xa0\xe1\xc0\x10\x9f\xe5\x01\x10\x8f\xe0\xa7\xe2\xff\xeb\x00\x00\x50\xe3\x01\x4c\x84\x02\x1f\x00\x00\x0a\x04\x00\xa0\xe1\xa8\x10\x9f\xe5\x01\x10\x8f\xe0\xa0\xe2\xff\xeb\x00\x00\x50\xe3\x0b\x4c\x84\x02\x04\x40\x84\x02\x17\x00\x00\x0a\x04\x00\xa0\xe1\x8c\x10\x9f\xe5\x01\x10\x8f\xe0\x98\xe2\xff\xeb\x00\x00\x50\xe3\x26\x4d\x84\x02\x04\x40\x84\x02\x0f\x00\x00\x0a\x04\x00\xa0\xe1\x70\x10\x9f\xe5\x01\x10\x8f\xe0\x90\xe2\xff\xeb\x00\x00\x50\xe3\x0a\x4c\x84\x02\x04\x40\x84\x02\x07\x00\x00\x0a\x04\x00\xa0\xe1\x54\x10\x9f\xe5\x01\x10\x8f\xe0\x88\xe2\xff\xeb\x00\x00\x50\xe3\x70\x80\xbd\x18\x2a\x4d\x84\xe2\x04\x40\x84\xe2\x00\x00\x54\xe3\x70\x80\xbd\x08\x7f\x00\x55\xe3\x7f\x50\xa0\xa3\x04\x00\xa0\xe1\x06\x10\xa0\xe1\x05\x20\xa0\xe1\x97\xe2\xff\xeb\x00\x30\xa0\xe3\x05\x30\xc4\xe7\x70\x80\xbd\xe8\x6c\x25\x00\x00\x58\x25\x00\x00\x4c\x25\x00\x00\x38\x25\x00\x00\x24\x25\x00\x00\x10\x25\x00\x00\xf0\x45\x2d\xe9\x89\xdf\x4d\xe2\x00\xa0\xa0\xe1\x01\x60\xa0\xe1\x02\x50\xa0\xe1\x03\x40\xa0\xe1\x44\x82\x9d\xe5\x08\x00\xa0\xe1\xb8\xe2\xff\xeb\x00\x70\xa0\xe1\x00\x30\xa0\xe3\x18\x30\xcd\xe5\x50\x00\x54\xe3\x05\x00\x00\x0a\x18\x00\x8d\xe2\x08\x10\xa0\xe3\xb8\x20\x9f\xe5\x02\x20\x8f\xe0\x04\x30\xa0\xe1\xbc\xe2\xff\xeb\x48\x32\x9d\xe5\x00\x30\x8d\xe5\x04\x50\x8d\xe5\x18\x30\x8d\xe2\x08\x30\x8d\xe5\x0c\x70\x8d\xe5\x40\x32\x9d\xe5\x10\x30\x8d\xe5\x20\x00\x8d\xe2\x02\x1c\xa0\xe3\x84\x20\x9f\xe5\x02\x20\x8f\xe0\x06\x30\xa0\xe1\xae\xe2\xff\xeb\x00\x40\xa0\xe1\x00\x50\x87\xe0\x05\x00\xa0\xe1\x8c\xe2\xff\xeb\x00\x60\x50\xe2\x00\x40\xa0\x03\x13\x00\x00\x0a\x06\x00\xa0\xe1\x20\x10\x8d\xe2\x04\x20\xa0\xe1\x61\xe2\xff\xeb\x04\x00\x86\xe0\x08\x10\xa0\xe1\x07\x20\xa0\xe1\x5d\xe2\xff\xeb\x0a\x00\xa0\xe1\x06\x10\xa0\xe1\x05\x20\xa0\xe1\x00\x30\xa0\xe3\xd3\xe2\xff\xeb\x00\x40\x50\xe2\x02\x00\x00\xaa\x20\x00\x9f\xe5\x00\x00\x8f\xe0\x68\xe2\xff\xeb\x06\x00\xa0\xe1\x4b\xe2\xff\xeb\x04\x00\xa0\xe1\x89\xdf\x8d\xe2\xf0\x85\xbd\xe8\x78\x24\x00\x00\x48\x24\x00\x00\xcc\x22\x00\x00\x70\x40\x2d\xe9\x00\x40\xa0\xe1\x01\x60\xa0\xe1\x02\x50\xa0\xe1\x04\x00\x80\xe2\x48\x10\x9f\xe5\x01\x10\x8f\xe0\x28\xe2\xff\xeb\x00\x00\x50\xe3\x50\x60\x84\x15\x54\x50\x84\x15\x70\x80\xbd\x18\x01\x00\x85\xe2\x61\xe2\xff\xeb\x44\x00\x84\xe5\x00\x00\x50\xe3\x70\x80\xbd\x08\x06\x10\xa0\xe1\x05\x20\xa0\xe1\x37\xe2\xff\xeb\x44\x30\x94\xe5\x00\x20\xa0\xe3\x05\x20\xc3\xe7\x48\x50\x84\xe5\x70\x80\xbd\xe8\x70\x24\x00\x00\x38\x40\x2d\xe9\x00\x40\xa0\xe1\x01\x30\xa0\xe3\x4c\x30\x80\xe5\x3f\x00\x52\xe3\x02\x50\xa0\xb1\x3f\x50\xa0\xa3\x04\x00\x80\xe2\x05\x20\xa0\xe1\x27\xe2\xff\xeb\x05\x50\x84\xe0\x00\x30\xa0\xe3\x04\x30\xc5\xe5\x50\x30\x84\xe5\x54\x30\x84\xe5\x38\x80\xbd\xe8\xf8\x40\x2d\xe9\x00\x40\xa0\xe1\x4c\x30\x90\xe5\x00\x00\x53\xe3\xf8\x80\xbd\x08\x04\x50\x80\xe2\x05\x00\xa0\xe1\x90\x10\x9f\xe5\x01\x10\x8f\xe0\xfc\xe1\xff\xeb\x00\x00\x50\xe3\x1b\x00\x00\x0a\x54\x70\x94\xe5\xc4\x00\xa0\xe3\x36\xe2\xff\xeb\x00\x60\xa0\xe1\x04\x00\x80\xe2\x05\x10\xa0\xe1\x40\x20\xa0\xe3\x61\xe2\xff\xeb\x00\x30\xa0\xe3\x43\x30\xc6\xe5\x50\x10\x94\xe5\x03\x00\x51\xe1\x00\x30\xa0\x03\x44\x30\xc6\x05\x09\x00\x00\x0a\x7f\x00\x57\xe3\x07\x50\xa0\xb1\x7f\x50\xa0\xa3\x44\x00\x86\xe2\x05\x20\xa0\xe1\x00\xe2\xff\xeb\x05\x50\x86\xe0\x00\x30\xa0\xe3\x44\x30\xc5\xe5\x40\x50\x85\xe2\x00\x30\x94\xe5\x00\x30\x86\xe5\x00\x60\x84\xe5\x00\x30\xa0\xe3\x50\x30\x84\xe5\x54\x30\x84\xe5\x4c\x30\x84\xe5\xf8\x80\xbd\xe8\xc0\x23\x00\x00\x04\xe0\x2d\xe5\x2c\xd0\x4d\xe2\x00\x30\xa0\xe3\x00\x30\x82\xe5\x44\x30\x82\xe5\x48\x30\x82\xe5\x04\x00\x8d\xe5\x10\x10\x8d\xe5\x14\x20\x8d\xe5\x30\x20\x9f\xe5\x02\x20\x8f\xe0\x18\x20\x8d\xe5\x28\x20\x9f\xe5\x02\x20\x8f\xe0\x1c\x20\x8d\xe5\x20\x20\x9f\xe5\x02\x20\x8f\xe0\x20\x20\x8d\xe5\x24\x30\x8d\xe5\x04\x00\x8d\xe2\x5c\xfd\xff\xeb\x2c\xd0\x8d\xe2\x00\x80\xbd\xe8\xd8\xfe\xff\xff\x0c\xff\xff\xff\x58\xfe\xff\xff\x10\x40\x2d\xe9\x00\x40\xa0\xe1\x44\x00\x90\xe5\x00\x00\x50\xe3\x03\x00\x00\x0a\xcd\xe1\xff\xeb\x00\x30\xa0\xe3\x44\x30\x84\xe5\x48\x30\x84\xe5\x00\x00\x94\xe5\x00\x00\x50\xe3\x10\x80\xbd\x08\x00\x30\x90\xe5\x00\x30\x84\xe5\xc4\xe1\xff\xeb\x00\x00\x94\xe5\x00\x00\x50\xe3\xf9\xff\xff\x1a\x10\x80\xbd\xe8\x70\x40\x2d\xe9\x01\x60\xa0\xe1\x00\x40\x90\xe5\x00\x00\x54\xe3\x00\x50\xa0\x03\x0c\x00\x00\x0a\x00\x50\xa0\xe3\x04\x00\x84\xe2\x06\x10\xa0\xe1\xa1\xe1\xff\xeb\x00\x00\x50\xe3\x44\x50\x84\x02\x00\x40\x94\xe5\x00\x30\x94\xe2\x01\x30\xa0\x13\x00\x00\x55\xe3\x00\x30\xa0\x13\x00\x00\x53\xe3\xf3\xff\xff\x1a\x05\x00\xa0\xe1\x70\x80\xbd\xe8\x01\x20\x51\xe2\x1e\xff\x2f\x01\x74\x00\x00\x3a\x01\x00\x50\xe1\x6b\x00\x00\x9a\x02\x00\x11\xe1\x6c\x00\x00\x0a\x10\x3f\x6f\xe1\x11\x2f\x6f\xe1\x03\x30\x42\xe0\x1f\x30\x73\xe2\x83\x30\x83\x10\x00\x20\xa0\xe3\x03\xf1\x8f\x10\x00\x00\xa0\xe1\x81\x0f\x50\xe1\x02\x20\xa2\xe0\x81\x0f\x40\x20\x01\x0f\x50\xe1\x02\x20\xa2\xe0\x01\x0f\x40\x20\x81\x0e\x50\xe1\x02\x20\xa2\xe0\x81\x0e\x40\x20\x01\x0e\x50\xe1\x02\x20\xa2\xe0\x01\x0e\x40\x20\x81\x0d\x50\xe1\x02\x20\xa2\xe0\x81\x0d\x40\x20\x01\x0d\x50\xe1\x02\x20\xa2\xe0\x01\x0d\x40\x20\x81\x0c\x50\xe1\x02\x20\xa2\xe0\x81\x0c\x40\x20\x01\x0c\x50\xe1\x02\x20\xa2\xe0\x01\x0c\x40\x20\x81\x0b\x50\xe1\x02\x20\xa2\xe0\x81\x0b\x40\x20\x01\x0b\x50\xe1\x02\x20\xa2\xe0\x01\x0b\x40\x20\x81\x0a\x50\xe1\x02\x20\xa2\xe0\x81\x0a\x40\x20\x01\x0a\x50\xe1\x02\x20\xa2\xe0\x01\x0a\x40\x20\x81\x09\x50\xe1\x02\x20\xa2\xe0\x81\x09\x40\x20\x01\x09\x50\xe1\x02\x20\xa2\xe0\x01\x09\x40\x20\x81\x08\x50\xe1\x02\x20\xa2\xe0\x81\x08\x40\x20\x01\x08\x50\xe1\x02\x20\xa2\xe0\x01\x08\x40\x20\x81\x07\x50\xe1\x02\x20\xa2\xe0\x81\x07\x40\x20\x01\x07\x50\xe1\x02\x20\xa2\xe0\x01\x07\x40\x20\x81\x06\x50\xe1\x02\x20\xa2\xe0\x81\x06\x40\x20\x01\x06\x50\xe1\x02\x20\xa2\xe0\x01\x06\x40\x20\x81\x05\x50\xe1\x02\x20\xa2\xe0\x81\x05\x40\x20\x01\x05\x50\xe1\x02\x20\xa2\xe0\x01\x05\x40\x20\x81\x04\x50\xe1\x02\x20\xa2\xe0\x81\x04\x40\x20\x01\x04\x50\xe1\x02\x20\xa2\xe0\x01\x04\x40\x20\x81\x03\x50\xe1\x02\x20\xa2\xe0\x81\x03\x40\x20\x01\x03\x50\xe1\x02\x20\xa2\xe0\x01\x03\x40\x20\x81\x02\x50\xe1\x02\x20\xa2\xe0\x81\x02\x40\x20\x01\x02\x50\xe1\x02\x20\xa2\xe0\x01\x02\x40\x20\x81\x01\x50\xe1\x02\x20\xa2\xe0\x81\x01\x40\x20\x01\x01\x50\xe1\x02\x20\xa2\xe0\x01\x01\x40\x20\x81\x00\x50\xe1\x02\x20\xa2\xe0\x81\x00\x40\x20\x01\x00\x50\xe1\x02\x20\xa2\xe0\x01\x00\x40\x20\x02\x00\xa0\xe1\x1e\xff\x2f\xe1\x01\x00\xa0\x03\x00\x00\xa0\x13\x1e\xff\x2f\xe1\x11\x2f\x6f\xe1\x1f\x20\x62\xe2\x30\x02\xa0\xe1\x1e\xff\x2f\xe1\x00\x00\x50\xe3\x00\x00\xe0\x13\x07\x00\x00\xea\x00\x00\x51\xe3\xfa\xff\xff\x0a\x03\x40\x2d\xe9\x80\xff\xff\xeb\x06\x40\xbd\xe8\x92\x00\x03\xe0\x03\x10\x41\xe0\x1e\xff\x2f\xe1\x02\x40\x2d\xe9\x08\x00\xa0\xe3\x0d\xe1\xff\xeb\x02\x80\xbd\xe8\xf8\x45\x2d\xe9\x00\x60\xa0\xe1\x48\x50\x9f\xe5\x48\xa0\x9f\xe5\x05\x50\x8f\xe0\x0a\xa0\x8f\xe0\x0a\xa0\x65\xe0\x01\x70\xa0\xe1\x02\x80\xa0\xe1\xf4\xe0\xff\xeb\x4a\xa1\xb0\xe1\xf8\x85\xbd\x08\x00\x40\xa0\xe3\x04\x30\x95\xe4\x06\x00\xa0\xe1\x07\x10\xa0\xe1\x08\x20\xa0\xe1\x01\x40\x84\xe2\x33\xff\x2f\xe1\x0a\x00\x54\xe1\xf7\xff\xff\x1a\xf8\x85\xbd\xe8\x10\xa0\x00\x00\x10\xa0\x00\x00\x1e\xff\x2f\xe1\x08\x40\x2d\xe9\x08\x80\xbd\xe8\x01\x00\x02\x00\x54\x43\x50\x00\x55\x44\x50\x00\x47\x65\x74\x43\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e\x54\x79\x70\x65\x49\x6e\x66\x6f\x20\x66\x61\x69\x6c\x65\x64\x2e\x00\x00\x00\x43\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e\x20\x54\x79\x70\x65\x20\x3a\x20\x25\x73\x0a\x00\x00\x00\x47\x65\x74\x53\x74\x61\x74\x75\x73\x49\x6e\x66\x6f\x20\x66\x61\x69\x6c\x65\x64\x2e\x00\x00\x00\x53\x74\x61\x74\x75\x73\x20\x3a\x20\x25\x73\x2c\x20\x75\x70\x74\x69\x6d\x65\x3d\x25\x75\x73\x2c\x20\x4c\x61\x73\x74\x43\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e\x45\x72\x72\x6f\x72\x20\x3a\x20\x25\x73\x0a\x00\x00\x20\x20\x54\x69\x6d\x65\x20\x73\x74\x61\x72\x74\x65\x64\x20\x3a\x20\x25\x73\x00\x47\x65\x74\x4c\x69\x6e\x6b\x4c\x61\x79\x65\x72\x4d\x61\x78\x42\x69\x74\x52\x61\x74\x65\x73\x20\x66\x61\x69\x6c\x65\x64\x2e\x00\x4d\x61\x78\x42\x69\x74\x52\x61\x74\x65\x44\x6f\x77\x6e\x20\x3a\x20\x25\x75\x20\x62\x70\x73\x00\x20\x28\x25\x75\x2e\x25\x75\x20\x4d\x62\x70\x73\x29\x00\x00\x00\x20\x28\x25\x75\x20\x4b\x62\x70\x73\x29\x00\x00\x20\x20\x20\x4d\x61\x78\x42\x69\x74\x52\x61\x74\x65\x55\x70\x20\x25\x75\x20\x62\x70\x73\x00\x00\x47\x65\x74\x45\x78\x74\x65\x72\x6e\x61\x6c\x49\x50\x41\x64\x64\x72\x65\x73\x73\x20\x66\x61\x69\x6c\x65\x64\x2e\x20\x28\x65\x72\x72\x6f\x72\x63\x6f\x64\x65\x3d\x25\x64\x29\x0a\x00\x00\x00\x00\x45\x78\x74\x65\x72\x6e\x61\x6c\x49\x50\x41\x64\x64\x72\x65\x73\x73\x20\x3d\x20\x25\x73\x0a\x00\x57\x72\x6f\x6e\x67\x20\x61\x72\x67\x75\x6d\x65\x6e\x74\x73\x0a\x00\x00\x00\x00\x69\x6e\x76\x61\x6c\x69\x64\x20\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x0a\x00\x00\x00\x47\x65\x74\x45\x78\x74\x65\x72\x6e\x61\x6c\x49\x50\x41\x64\x64\x72\x65\x73\x73\x20\x66\x61\x69\x6c\x65\x64\x2e\x00\x00\x00\x00\x41\x64\x64\x41\x6e\x79\x50\x6f\x72\x74\x4d\x61\x70\x70\x69\x6e\x67\x28\x25\x73\x2c\x20\x25\x73\x2c\x20\x25\x73\x29\x20\x66\x61\x69\x6c\x65\x64\x20\x77\x69\x74\x68\x20\x63\x6f\x64\x65\x20\x25\x64\x20\x28\x25\x73\x29\x0a\x00\x41\x64\x64\x50\x6f\x72\x74\x4d\x61\x70\x70\x69\x6e\x67\x28\x25\x73\x2c\x20\x25\x73\x2c\x20\x25\x73\x29\x20\x66\x61\x69\x6c\x65\x64\x20\x77\x69\x74\x68\x20\x63\x6f\x64\x65\x20\x25\x64\x20\x28\x25\x73\x29\x0a\x00\x00\x00\x00\x47\x65\x74\x53\x70\x65\x63\x69\x66\x69\x63\x50\x6f\x72\x74\x4d\x61\x70\x70\x69\x6e\x67\x45\x6e\x74\x72\x79\x28\x29\x20\x66\x61\x69\x6c\x65\x64\x20\x77\x69\x74\x68\x20\x63\x6f\x64\x65\x20\x25\x64\x20\x28\x25\x73\x29\x0a\x00\x49\x6e\x74\x65\x72\x6e\x61\x6c\x49\x50\x3a\x50\x6f\x72\x74\x20\x3d\x20\x25\x73\x3a\x25\x73\x0a\x00\x00\x00\x00\x65\x78\x74\x65\x72\x6e\x61\x6c\x20\x25\x73\x3a\x25\x73\x20\x25\x73\x20\x69\x73\x20\x72\x65\x64\x69\x72\x65\x63\x74\x65\x64\x20\x74\x6f\x20\x69\x6e\x74\x65\x72\x6e\x61\x6c\x20\x25\x73\x3a\x25\x73\x20\x28\x64\x75\x72\x61\x74\x69\x6f\x6e\x3d\x25\x73\x29\x0a\x00\x00\x00\x00\x30\x00\x00\x00\x59\x65\x73\x00\x4e\x6f\x00\x00\x75\x70\x6e\x70\x63\x20\x3a\x20\x6d\x69\x6e\x69\x75\x70\x6e\x70\x63\x20\x6c\x69\x62\x72\x61\x72\x79\x20\x74\x65\x73\x74\x20\x63\x6c\x69\x65\x6e\x74\x2e\x20\x28\x63\x29\x20\x32\x30\x30\x35\x2d\x32\x30\x31\x34\x20\x54\x68\x6f\x6d\x61\x73\x20\x42\x65\x72\x6e\x61\x72\x64\x00\x47\x6f\x20\x74\x6f\x20\x68\x74\x74\x70\x3a\x2f\x2f\x6d\x69\x6e\x69\x75\x70\x6e\x70\x2e\x66\x72\x65\x65\x2e\x66\x72\x2f\x20\x6f\x72\x20\x68\x74\x74\x70\x3a\x2f\x2f\x6d\x69\x6e\x69\x75\x70\x6e\x70\x2e\x74\x75\x78\x66\x61\x6d\x69\x6c\x79\x2e\x6f\x72\x67\x2f\x0a\x66\x6f\x72\x20\x6d\x6f\x72\x65\x20\x69\x6e\x66\x6f\x72\x6d\x61\x74\x69\x6f\x6e\x2e\x00\x00\x2d\x2d\x68\x65\x6c\x70\x00\x00\x6f\x70\x74\x69\x6f\x6e\x20\x27\x25\x73\x27\x20\x69\x6e\x76\x61\x6c\x69\x64\x0a\x00\x00\x00\x00\x55\x73\x61\x67\x65\x20\x3a\x09\x25\x73\x20\x5b\x6f\x70\x74\x69\x6f\x6e\x73\x5d\x20\x2d\x61\x20\x69\x70\x20\x70\x6f\x72\x74\x20\x65\x78\x74\x65\x72\x6e\x61\x6c\x5f\x70\x6f\x72\x74\x20\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x20\x5b\x64\x75\x72\x61\x74\x69\x6f\x6e\x5d\x0a\x09\x09\x41\x64\x64\x20\x70\x6f\x72\x74\x20\x72\x65\x64\x69\x72\x65\x63\x74\x69\x6f\x6e\x0a\x00\x00\x00\x20\x20\x20\x20\x20\x20\x20\x09\x25\x73\x20\x5b\x6f\x70\x74\x69\x6f\x6e\x73\x5d\x20\x2d\x64\x20\x65\x78\x74\x65\x72\x6e\x61\x6c\x5f\x70\x6f\x72\x74\x20\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x20\x3c\x72\x65\x6d\x6f\x74\x65\x20\x68\x6f\x73\x74\x3e\x0a\x09\x09\x44\x65\x6c\x65\x74\x65\x20\x70\x6f\x72\x74\x20\x72\x65\x64\x69\x72\x65\x63\x74\x69\x6f\x6e\x0a\x00\x20\x20\x20\x20\x20\x20\x20\x09\x25\x73\x20\x5b\x6f\x70\x74\x69\x6f\x6e\x73\x5d\x20\x2d\x73\x0a\x09\x09\x47\x65\x74\x20\x43\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e\x20\x73\x74\x61\x74\x75\x73\x0a\x00\x00\x00\x00\x20\x20\x20\x20\x20\x20\x20\x09\x25\x73\x20\x5b\x6f\x70\x74\x69\x6f\x6e\x73\x5d\x20\x2d\x6c\x0a\x09\x09\x4c\x69\x73\x74\x20\x72\x65\x64\x69\x72\x65\x63\x74\x69\x6f\x6e\x73\x0a\x00\x00\x00\x00\x20\x20\x20\x20\x20\x20\x20\x09\x25\x73\x20\x5b\x6f\x70\x74\x69\x6f\x6e\x73\x5d\x20\x2d\x4c\x0a\x09\x09\x4c\x69\x73\x74\x20\x72\x65\x64\x69\x72\x65\x63\x74\x69\x6f\x6e\x73\x20\x28\x75\x73\x69\x6e\x67\x20\x47\x65\x74\x4c\x69\x73\x74\x4f\x66\x50\x6f\x72\x74\x4d\x61\x70\x70\x69\x6e\x67\x73\x20\x28\x66\x6f\x72\x20\x49\x47\x44\x3a\x32\x20\x6f\x6e\x6c\x79\x29\x0a\x00\x00\x20\x20\x20\x20\x20\x20\x20\x09\x25\x73\x20\x5b\x6f\x70\x74\x69\x6f\x6e\x73\x5d\x20\x2d\x6e\x20\x69\x70\x20\x70\x6f\x72\x74\x20\x65\x78\x74\x65\x72\x6e\x61\x6c\x5f\x70\x6f\x72\x74\x20\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x20\x5b\x64\x75\x72\x61\x74\x69\x6f\x6e\x5d\x0a\x09\x09\x41\x64\x64\x20\x28\x61\x6e\x79\x29\x20\x70\x6f\x72\x74\x20\x72\x65\x64\x69\x72\x65\x63\x74\x69\x6f\x6e\x20\x61\x6c\x6c\x6f\x77\x69\x6e\x67\x20\x49\x47\x44\x20\x74\x6f\x20\x75\x73\x65\x20\x61\x6c\x74\x65\x72\x6e\x61\x74\x69\x76\x65\x20\x65\x78\x74\x65\x72\x6e\x61\x6c\x5f\x70\x6f\x72\x74\x20\x28\x66\x6f\x72\x20\x49\x47\x44\x3a\x32\x20\x6f\x6e\x6c\x79\x29\x0a\x00\x00\x20\x20\x20\x20\x20\x20\x20\x09\x25\x73\x20\x5b\x6f\x70\x74\x69\x6f\x6e\x73\x5d\x20\x2d\x4e\x20\x65\x78\x74\x65\x72\x6e\x61\x6c\x5f\x70\x6f\x72\x74\x5f\x73\x74\x61\x72\x74\x20\x65\x78\x74\x65\x72\x6e\x61\x6c\x5f\x70\x6f\x72\x74\x5f\x65\x6e\x64\x20\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x20\x5b\x6d\x61\x6e\x61\x67\x65\x5d\x0a\x09\x09\x44\x65\x6c\x65\x74\x65\x20\x72\x61\x6e\x67\x65\x20\x6f\x66\x20\x70\x6f\x72\x74\x20\x72\x65\x64\x69\x72\x65\x63\x74\x69\x6f\x6e\x73\x20\x28\x66\x6f\x72\x20\x49\x47\x44\x3a\x32\x20\x6f\x6e\x6c\x79\x29\x0a\x00\x00\x00\x20\x20\x20\x20\x20\x20\x20\x09\x25\x73\x20\x5b\x6f\x70\x74\x69\x6f\x6e\x73\x5d\x20\x2d\x72\x20\x70\x6f\x72\x74\x31\x20\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x31\x20\x5b\x70\x6f\x72\x74\x32\x20\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x32\x5d\x20\x5b\x2e\x2e\x2e\x5d\x0a\x09\x09\x41\x64\x64\x20\x61\x6c\x6c\x20\x72\x65\x64\x69\x72\x65\x63\x74\x69\x6f\x6e\x73\x20\x74\x6f\x20\x74\x68\x65\x20\x63\x75\x72\x72\x65\x6e\x74\x20\x68\x6f\x73\x74\x0a\x00\x20\x20\x20\x20\x20\x20\x20\x09\x25\x73\x20\x5b\x6f\x70\x74\x69\x6f\x6e\x73\x5d\x20\x2d\x41\x20\x72\x65\x6d\x6f\x74\x65\x5f\x69\x70\x20\x72\x65\x6d\x6f\x74\x65\x5f\x70\x6f\x72\x74\x20\x69\x6e\x74\x65\x72\x6e\x61\x6c\x5f\x69\x70\x20\x69\x6e\x74\x65\x72\x6e\x61\x6c\x5f\x70\x6f\x72\x74\x20\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x20\x6c\x65\x61\x73\x65\x5f\x74\x69\x6d\x65\x0a\x09\x09\x41\x64\x64\x20\x50\x69\x6e\x68\x6f\x6c\x65\x20\x28\x66\x6f\x72\x20\x49\x47\x44\x3a\x32\x20\x6f\x6e\x6c\x79\x29\x0a\x00\x20\x20\x20\x20\x20\x20\x20\x09\x25\x73\x20\x5b\x6f\x70\x74\x69\x6f\x6e\x73\x5d\x20\x2d\x55\x20\x75\x6e\x69\x71\x75\x65\x49\x44\x20\x6e\x65\x77\x5f\x6c\x65\x61\x73\x65\x5f\x74\x69\x6d\x65\x0a\x09\x09\x55\x70\x64\x61\x74\x65\x20\x50\x69\x6e\x68\x6f\x6c\x65\x20\x28\x66\x6f\x72\x20\x49\x47\x44\x3a\x32\x20\x6f\x6e\x6c\x79\x29\x0a\x00\x00\x20\x20\x20\x20\x20\x20\x20\x09\x25\x73\x20\x5b\x6f\x70\x74\x69\x6f\x6e\x73\x5d\x20\x2d\x43\x20\x75\x6e\x69\x71\x75\x65\x49\x44\x0a\x09\x09\x43\x68\x65\x63\x6b\x20\x69\x66\x20\x50\x69\x6e\x68\x6f\x6c\x65\x20\x69\x73\x20\x57\x6f\x72\x6b\x69\x6e\x67\x20\x28\x66\x6f\x72\x20\x49\x47\x44\x3a\x32\x20\x6f\x6e\x6c\x79\x29\x0a\x00\x00\x00\x00\x20\x20\x20\x20\x20\x20\x20\x09\x25\x73\x20\x5b\x6f\x70\x74\x69\x6f\x6e\x73\x5d\x20\x2d\x4b\x20\x75\x6e\x69\x71\x75\x65\x49\x44\x0a\x09\x09\x47\x65\x74\x20\x4e\x75\x6d\x62\x65\x72\x20\x6f\x66\x20\x70\x61\x63\x6b\x65\x74\x73\x20\x67\x6f\x69\x6e\x67\x20\x74\x68\x72\x6f\x75\x67\x68\x20\x74\x68\x65\x20\x72\x75\x6c\x65\x20\x28\x66\x6f\x72\x20\x49\x47\x44\x3a\x32\x20\x6f\x6e\x6c\x79\x29\x0a\x00\x00\x00\x20\x20\x20\x20\x20\x20\x20\x09\x25\x73\x20\x5b\x6f\x70\x74\x69\x6f\x6e\x73\x5d\x20\x2d\x44\x20\x75\x6e\x69\x71\x75\x65\x49\x44\x0a\x09\x09\x44\x65\x6c\x65\x74\x65\x20\x50\x69\x6e\x68\x6f\x6c\x65\x20\x28\x66\x6f\x72\x20\x49\x47\x44\x3a\x32\x20\x6f\x6e\x6c\x79\x29\x0a\x00\x20\x20\x20\x20\x20\x20\x20\x09\x25\x73\x20\x5b\x6f\x70\x74\x69\x6f\x6e\x73\x5d\x20\x2d\x53\x0a\x09\x09\x47\x65\x74\x20\x46\x69\x72\x65\x77\x61\x6c\x6c\x20\x73\x74\x61\x74\x75\x73\x20\x28\x66\x6f\x72\x20\x49\x47\x44\x3a\x32\x20\x6f\x6e\x6c\x79\x29\x0a\x00\x20\x20\x20\x20\x20\x20\x20\x09\x25\x73\x20\x5b\x6f\x70\x74\x69\x6f\x6e\x73\x5d\x20\x2d\x47\x20\x72\x65\x6d\x6f\x74\x65\x5f\x69\x70\x20\x72\x65\x6d\x6f\x74\x65\x5f\x70\x6f\x72\x74\x20\x69\x6e\x74\x65\x72\x6e\x61\x6c\x5f\x69\x70\x20\x69\x6e\x74\x65\x72\x6e\x61\x6c\x5f\x70\x6f\x72\x74\x20\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x0a\x09\x09\x47\x65\x74\x20\x4f\x75\x74\x62\x6f\x75\x6e\x64\x20\x50\x69\x6e\x68\x6f\x6c\x65\x20\x54\x69\x6d\x65\x6f\x75\x74\x20\x28\x66\x6f\x72\x20\x49\x47\x44\x3a\x32\x20\x6f\x6e\x6c\x79\x29\x0a\x00\x00\x00\x20\x20\x20\x20\x20\x20\x20\x09\x25\x73\x20\x5b\x6f\x70\x74\x69\x6f\x6e\x73\x5d\x20\x2d\x50\x0a\x09\x09\x47\x65\x74\x20\x50\x72\x65\x73\x65\x6e\x74\x61\x74\x69\x6f\x6e\x20\x75\x72\x6c\x0a\x00\x0a\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x20\x69\x73\x20\x55\x44\x50\x20\x6f\x72\x20\x54\x43\x50\x0a\x00\x00\x00\x00\x4f\x70\x74\x69\x6f\x6e\x73\x3a\x0a\x00\x00\x00\x20\x20\x2d\x65\x20\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x20\x3a\x20\x73\x65\x74\x20\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x20\x66\x6f\x72\x20\x70\x6f\x72\x74\x20\x6d\x61\x70\x70\x69\x6e\x67\x2e\x0a\x00\x00\x00\x20\x20\x2d\x36\x20\x3a\x20\x75\x73\x65\x20\x69\x70\x20\x76\x36\x20\x69\x6e\x73\x74\x65\x61\x64\x20\x6f\x66\x20\x69\x70\x20\x76\x34\x2e\x0a\x00\x20\x20\x2d\x75\x20\x75\x72\x6c\x20\x3a\x20\x62\x79\x70\x61\x73\x73\x20\x64\x69\x73\x63\x6f\x76\x65\x72\x79\x20\x70\x72\x6f\x63\x65\x73\x73\x20\x62\x79\x20\x70\x72\x6f\x76\x69\x64\x69\x6e\x67\x20\x74\x68\x65\x20\x58\x4d\x4c\x20\x72\x6f\x6f\x74\x20\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x20\x75\x72\x6c\x2e\x0a\x00\x20\x20\x2d\x6d\x20\x61\x64\x64\x72\x65\x73\x73\x2f\x69\x6e\x74\x65\x72\x66\x61\x63\x65\x20\x3a\x20\x70\x72\x6f\x76\x69\x64\x65\x20\x69\x70\x20\x61\x64\x64\x72\x65\x73\x73\x20\x28\x69\x70\x20\x76\x34\x29\x20\x6f\x72\x20\x69\x6e\x74\x65\x72\x66\x61\x63\x65\x20\x6e\x61\x6d\x65\x20\x28\x69\x70\x20\x76\x34\x20\x6f\x72\x20\x76\x36\x29\x20\x74\x6f\x20\x75\x73\x65\x20\x66\x6f\x72\x20\x73\x65\x6e\x64\x69\x6e\x67\x20\x53\x53\x44\x50\x20\x6d\x75\x6c\x74\x69\x63\x61\x73\x74\x20\x70\x61\x63\x6b\x65\x74\x73\x2e\x0a\x00\x20\x20\x2d\x70\x20\x70\x61\x74\x68\x20\x3a\x20\x75\x73\x65\x20\x74\x68\x69\x73\x20\x70\x61\x74\x68\x20\x66\x6f\x72\x20\x4d\x69\x6e\x69\x53\x53\x44\x50\x64\x20\x73\x6f\x63\x6b\x65\x74\x2e\x0a\x00\x00\x00\x00\x75\x70\x6e\x70\x44\x69\x73\x63\x6f\x76\x65\x72\x28\x29\x20\x65\x72\x72\x6f\x72\x20\x63\x6f\x64\x65\x3d\x25\x64\x0a\x00\x00\x00\x20\x64\x65\x73\x63\x3a\x20\x25\x73\x0a\x20\x73\x74\x3a\x20\x25\x73\x0a\x0a\x00\x46\x6f\x75\x6e\x64\x20\x76\x61\x6c\x69\x64\x20\x49\x47\x44\x20\x3a\x20\x25\x73\x0a\x00\x00\x00\x46\x6f\x75\x6e\x64\x20\x61\x20\x28\x6e\x6f\x74\x20\x63\x6f\x6e\x6e\x65\x63\x74\x65\x64\x3f\x29\x20\x49\x47\x44\x20\x3a\x20\x25\x73\x0a\x00\x00\x54\x72\x79\x69\x6e\x67\x20\x74\x6f\x20\x63\x6f\x6e\x74\x69\x6e\x75\x65\x20\x61\x6e\x79\x77\x61\x79\x00\x00\x00\x55\x50\x6e\x50\x20\x64\x65\x76\x69\x63\x65\x20\x66\x6f\x75\x6e\x64\x2e\x20\x49\x73\x20\x69\x74\x20\x61\x6e\x20\x49\x47\x44\x20\x3f\x20\x3a\x20\x25\x73\x0a\x00\x46\x6f\x75\x6e\x64\x20\x64\x65\x76\x69\x63\x65\x20\x28\x69\x67\x64\x20\x3f\x29\x20\x3a\x20\x25\x73\x0a\x00\x00\x4c\x6f\x63\x61\x6c\x20\x4c\x41\x4e\x20\x69\x70\x20\x61\x64\x64\x72\x65\x73\x73\x20\x3a\x20\x25\x73\x0a\x00\x00\x20\x69\x20\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x20\x65\x78\x50\x6f\x72\x74\x2d\x3e\x69\x6e\x41\x64\x64\x72\x3a\x69\x6e\x50\x6f\x72\x74\x20\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x20\x72\x65\x6d\x6f\x74\x65\x48\x6f\x73\x74\x20\x6c\x65\x61\x73\x65\x54\x69\x6d\x65\x00\x00\x25\x64\x00\x00\x25\x32\x64\x20\x25\x73\x20\x25\x35\x73\x2d\x3e\x25\x73\x3a\x25\x2d\x35\x73\x20\x27\x25\x73\x27\x20\x27\x25\x73\x27\x20\x25\x73\x0a\x00\x00\x00\x47\x65\x74\x47\x65\x6e\x65\x72\x69\x63\x50\x6f\x72\x74\x4d\x61\x70\x70\x69\x6e\x67\x45\x6e\x74\x72\x79\x28\x29\x20\x72\x65\x74\x75\x72\x6e\x65\x64\x20\x25\x64\x20\x28\x25\x73\x29\x0a\x00\x00\x36\x35\x35\x33\x35\x00\x00\x00\x54\x43\x50\x00\x31\x30\x30\x30\x00\x00\x00\x00\x25\x32\x64\x20\x25\x73\x20\x25\x35\x68\x75\x2d\x3e\x25\x73\x3a\x25\x2d\x35\x68\x75\x20\x27\x25\x73\x27\x20\x27\x25\x73\x27\x20\x25\x75\x0a\x00\x47\x65\x74\x4c\x69\x73\x74\x4f\x66\x50\x6f\x72\x74\x4d\x61\x70\x70\x69\x6e\x67\x73\x28\x29\x20\x72\x65\x74\x75\x72\x6e\x65\x64\x20\x25\x64\x20\x28\x25\x73\x29\x0a\x00\x00\x00\x55\x44\x50\x00\x69\x6e\x76\x61\x6c\x69\x64\x20\x61\x72\x67\x75\x6d\x65\x6e\x74\x73\x0a\x00\x00\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x20\x69\x6e\x76\x61\x6c\x69\x64\x0a\x00\x00\x00\x55\x50\x4e\x50\x5f\x44\x65\x6c\x65\x74\x65\x50\x6f\x72\x74\x4d\x61\x70\x70\x69\x6e\x67\x28\x29\x20\x72\x65\x74\x75\x72\x6e\x65\x64\x20\x3a\x20\x25\x64\x0a\x00\x74\x6f\x6f\x20\x66\x65\x77\x20\x61\x72\x67\x75\x6d\x65\x6e\x74\x73\x0a\x00\x00\x55\x50\x4e\x50\x5f\x44\x65\x6c\x65\x74\x65\x50\x6f\x72\x74\x4d\x61\x70\x70\x69\x6e\x67\x52\x61\x6e\x67\x65\x28\x29\x20\x72\x65\x74\x75\x72\x6e\x65\x64\x20\x3a\x20\x25\x64\x0a\x00\x00\x00\x00\x42\x79\x74\x65\x73\x3a\x20\x20\x20\x53\x65\x6e\x74\x3a\x20\x25\x38\x75\x09\x52\x65\x63\x76\x3a\x20\x25\x38\x75\x0a\x00\x00\x00\x50\x61\x63\x6b\x65\x74\x73\x3a\x20\x53\x65\x6e\x74\x3a\x20\x25\x38\x75\x09\x52\x65\x63\x76\x3a\x20\x25\x38\x75\x0a\x00\x00\x00\x41\x64\x64\x50\x69\x6e\x68\x6f\x6c\x65\x28\x5b\x25\x73\x5d\x3a\x25\x73\x20\x2d\x3e\x20\x5b\x25\x73\x5d\x3a\x25\x73\x29\x20\x66\x61\x69\x6c\x65\x64\x20\x77\x69\x74\x68\x20\x63\x6f\x64\x65\x20\x25\x64\x20\x28\x25\x73\x29\x0a\x00\x00\x00\x00\x41\x64\x64\x50\x69\x6e\x68\x6f\x6c\x65\x3a\x20\x28\x5b\x25\x73\x5d\x3a\x25\x73\x20\x2d\x3e\x20\x5b\x25\x73\x5d\x3a\x25\x73\x29\x20\x2f\x20\x50\x69\x6e\x68\x6f\x6c\x65\x20\x49\x44\x20\x3d\x20\x25\x73\x0a\x00\x43\x68\x65\x63\x6b\x50\x69\x6e\x68\x6f\x6c\x65\x57\x6f\x72\x6b\x69\x6e\x67\x3a\x20\x50\x69\x6e\x68\x6f\x6c\x65\x20\x49\x44\x20\x3d\x20\x25\x73\x20\x2f\x20\x49\x73\x57\x6f\x72\x6b\x69\x6e\x67\x20\x3d\x20\x25\x73\x0a\x00\x00\x43\x68\x65\x63\x6b\x50\x69\x6e\x68\x6f\x6c\x65\x57\x6f\x72\x6b\x69\x6e\x67\x28\x29\x20\x66\x61\x69\x6c\x65\x64\x20\x77\x69\x74\x68\x20\x63\x6f\x64\x65\x20\x25\x64\x20\x28\x25\x73\x29\x0a\x00\x55\x70\x64\x61\x74\x65\x50\x69\x6e\x68\x6f\x6c\x65\x3a\x20\x50\x69\x6e\x68\x6f\x6c\x65\x20\x49\x44\x20\x3d\x20\x25\x73\x20\x77\x69\x74\x68\x20\x4c\x65\x61\x73\x65\x20\x54\x69\x6d\x65\x3a\x20\x25\x73\x0a\x00\x55\x70\x64\x61\x74\x65\x50\x69\x6e\x68\x6f\x6c\x65\x3a\x20\x49\x44\x20\x28\x25\x73\x29\x20\x66\x61\x69\x6c\x65\x64\x20\x77\x69\x74\x68\x20\x63\x6f\x64\x65\x20\x25\x64\x20\x28\x25\x73\x29\x0a\x00\x00\x00\x00\x47\x65\x74\x50\x69\x6e\x68\x6f\x6c\x65\x50\x61\x63\x6b\x65\x74\x73\x28\x29\x20\x66\x61\x69\x6c\x65\x64\x20\x77\x69\x74\x68\x20\x63\x6f\x64\x65\x20\x25\x64\x20\x28\x25\x73\x29\x0a\x00\x00\x00\x47\x65\x74\x50\x69\x6e\x68\x6f\x6c\x65\x50\x61\x63\x6b\x65\x74\x73\x3a\x20\x50\x69\x6e\x68\x6f\x6c\x65\x20\x49\x44\x20\x3d\x20\x25\x73\x20\x2f\x20\x50\x69\x6e\x68\x6f\x6c\x65\x50\x61\x63\x6b\x65\x74\x73\x20\x3d\x20\x25\x64\x0a\x00\x00\x00\x55\x50\x4e\x50\x5f\x44\x65\x6c\x65\x74\x65\x50\x69\x6e\x68\x6f\x6c\x65\x28\x29\x20\x72\x65\x74\x75\x72\x6e\x65\x64\x20\x3a\x20\x25\x64\x0a\x00\x46\x69\x72\x65\x77\x61\x6c\x6c\x45\x6e\x61\x62\x6c\x65\x64\x3a\x20\x25\x64\x20\x26\x20\x49\x6e\x62\x6f\x75\x6e\x64\x20\x50\x69\x6e\x68\x6f\x6c\x65\x20\x41\x6c\x6c\x6f\x77\x65\x64\x3a\x20\x25\x64\x0a\x00\x00\x47\x65\x74\x46\x69\x72\x65\x77\x61\x6c\x6c\x53\x74\x61\x74\x75\x73\x3a\x0a\x20\x20\x20\x46\x69\x72\x65\x77\x61\x6c\x6c\x20\x45\x6e\x61\x62\x6c\x65\x64\x3a\x20\x25\x73\x0a\x20\x20\x20\x49\x6e\x62\x6f\x75\x6e\x64\x20\x50\x69\x6e\x68\x6f\x6c\x65\x20\x41\x6c\x6c\x6f\x77\x65\x64\x3a\x20\x25\x73\x0a\x00\x00\x47\x65\x74\x4f\x75\x74\x62\x6f\x75\x6e\x64\x50\x69\x6e\x68\x6f\x6c\x65\x54\x69\x6d\x65\x6f\x75\x74\x28\x5b\x25\x73\x5d\x3a\x25\x73\x20\x2d\x3e\x20\x5b\x25\x73\x5d\x3a\x25\x73\x29\x20\x66\x61\x69\x6c\x65\x64\x20\x77\x69\x74\x68\x20\x63\x6f\x64\x65\x20\x25\x64\x20\x28\x25\x73\x29\x0a\x00\x47\x65\x74\x4f\x75\x74\x62\x6f\x75\x6e\x64\x50\x69\x6e\x68\x6f\x6c\x65\x54\x69\x6d\x65\x6f\x75\x74\x3a\x20\x28\x5b\x25\x73\x5d\x3a\x25\x73\x20\x2d\x3e\x20\x5b\x25\x73\x5d\x3a\x25\x73\x29\x20\x2f\x20\x54\x69\x6d\x65\x6f\x75\x74\x20\x3d\x20\x25\x64\x0a\x00\x50\x72\x65\x73\x65\x6e\x74\x61\x74\x69\x6f\x6e\x20\x55\x52\x4c\x20\x66\x6f\x75\x6e\x64\x3a\x00\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x25\x73\x0a\x00\x55\x6e\x6b\x6e\x6f\x77\x6e\x20\x73\x77\x69\x74\x63\x68\x20\x2d\x25\x63\x0a\x00\x4e\x6f\x20\x76\x61\x6c\x69\x64\x20\x55\x50\x4e\x50\x20\x49\x6e\x74\x65\x72\x6e\x65\x74\x20\x47\x61\x74\x65\x77\x61\x79\x20\x44\x65\x76\x69\x63\x65\x20\x66\x6f\x75\x6e\x64\x2e\x0a\x00\x00\x00\x4e\x6f\x20\x49\x47\x44\x20\x55\x50\x6e\x50\x20\x44\x65\x76\x69\x63\x65\x20\x66\x6f\x75\x6e\x64\x20\x6f\x6e\x20\x74\x68\x65\x20\x6e\x65\x74\x77\x6f\x72\x6b\x20\x21\x0a\x00\x00\x4c\x69\x73\x74\x20\x6f\x66\x20\x55\x50\x4e\x50\x20\x64\x65\x76\x69\x63\x65\x73\x20\x66\x6f\x75\x6e\x64\x20\x6f\x6e\x20\x74\x68\x65\x20\x6e\x65\x74\x77\x6f\x72\x6b\x20\x3a\x00\x4d\x2d\x53\x45\x41\x52\x43\x48\x20\x2a\x20\x48\x54\x54\x50\x2f\x31\x2e\x31\x0d\x0a\x48\x4f\x53\x54\x3a\x20\x25\x73\x3a\x31\x39\x30\x30\x0d\x0a\x53\x54\x3a\x20\x25\x73\x0d\x0a\x4d\x41\x4e\x3a\x20\x22\x73\x73\x64\x70\x3a\x64\x69\x73\x63\x6f\x76\x65\x72\x22\x0d\x0a\x4d\x58\x3a\x20\x25\x75\x0d\x0a\x0d\x0a\x00\x00\x00\x00\x68\x74\x74\x70\x3a\x2f\x2f\x5b\x66\x65\x38\x30\x3a\x00\x00\x00\x25\x32\x35\x00\x25\x73\x23\x25\x73\x00\x00\x00\x3c\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\x30\x22\x3f\x3e\x0d\x0a\x3c\x73\x3a\x45\x6e\x76\x65\x6c\x6f\x70\x65\x20\x78\x6d\x6c\x6e\x73\x3a\x73\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x73\x63\x68\x65\x6d\x61\x73\x2e\x78\x6d\x6c\x73\x6f\x61\x70\x2e\x6f\x72\x67\x2f\x73\x6f\x61\x70\x2f\x65\x6e\x76\x65\x6c\x6f\x70\x65\x2f\x22\x20\x73\x3a\x65\x6e\x63\x6f\x64\x69\x6e\x67\x53\x74\x79\x6c\x65\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x73\x63\x68\x65\x6d\x61\x73\x2e\x78\x6d\x6c\x73\x6f\x61\x70\x2e\x6f\x72\x67\x2f\x73\x6f\x61\x70\x2f\x65\x6e\x63\x6f\x64\x69\x6e\x67\x2f\x22\x3e\x3c\x73\x3a\x42\x6f\x64\x79\x3e\x3c\x75\x3a\x25\x73\x20\x78\x6d\x6c\x6e\x73\x3a\x75\x3d\x22\x25\x73\x22\x3e\x3c\x2f\x75\x3a\x25\x73\x3e\x3c\x2f\x73\x3a\x42\x6f\x64\x79\x3e\x3c\x2f\x73\x3a\x45\x6e\x76\x65\x6c\x6f\x70\x65\x3e\x0d\x0a\x00\x00\x00\x3c\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\x30\x22\x3f\x3e\x0d\x0a\x3c\x73\x3a\x45\x6e\x76\x65\x6c\x6f\x70\x65\x20\x78\x6d\x6c\x6e\x73\x3a\x73\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x73\x63\x68\x65\x6d\x61\x73\x2e\x78\x6d\x6c\x73\x6f\x61\x70\x2e\x6f\x72\x67\x2f\x73\x6f\x61\x70\x2f\x65\x6e\x76\x65\x6c\x6f\x70\x65\x2f\x22\x20\x73\x3a\x65\x6e\x63\x6f\x64\x69\x6e\x67\x53\x74\x79\x6c\x65\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x73\x63\x68\x65\x6d\x61\x73\x2e\x78\x6d\x6c\x73\x6f\x61\x70\x2e\x6f\x72\x67\x2f\x73\x6f\x61\x70\x2f\x65\x6e\x63\x6f\x64\x69\x6e\x67\x2f\x22\x3e\x3c\x73\x3a\x42\x6f\x64\x79\x3e\x3c\x75\x3a\x25\x73\x20\x78\x6d\x6c\x6e\x73\x3a\x75\x3d\x22\x25\x73\x22\x3e\x00\x00\x31\x2e\x31\x00\x2f\x76\x61\x72\x2f\x72\x75\x6e\x2f\x6d\x69\x6e\x69\x73\x73\x64\x70\x64\x2e\x73\x6f\x63\x6b\x00\x46\x46\x30\x32\x3a\x3a\x43\x00\x46\x46\x30\x35\x3a\x3a\x43\x00\x72\x6f\x6f\x74\x64\x65\x76\x69\x63\x65\x00\x00\x73\x6f\x63\x6b\x65\x74\x00\x00\x73\x65\x74\x73\x6f\x63\x6b\x6f\x70\x74\x00\x00\x62\x69\x6e\x64\x00\x00\x00\x00\x5b\x46\x46\x30\x35\x3a\x3a\x43\x5d\x00\x00\x00\x31\x39\x30\x30\x00\x00\x00\x00\x67\x65\x74\x61\x64\x64\x72\x69\x6e\x66\x6f\x3a\x20\x25\x73\x0a\x00\x00\x00\x00\x73\x65\x6e\x64\x74\x6f\x00\x00\x6c\x6f\x63\x61\x74\x69\x6f\x6e\x00\x00\x00\x00\x32\x33\x39\x2e\x32\x35\x35\x2e\x32\x35\x35\x2e\x32\x35\x30\x00\x5b\x46\x46\x30\x32\x3a\x3a\x43\x5d\x00\x00\x00\x43\x6f\x6e\x6e\x65\x63\x74\x65\x64\x00\x00\x00\x75\x72\x6e\x3a\x73\x63\x68\x65\x6d\x61\x73\x2d\x75\x70\x6e\x70\x2d\x6f\x72\x67\x3a\x73\x65\x72\x76\x69\x63\x65\x3a\x57\x41\x4e\x43\x6f\x6d\x6d\x6f\x6e\x49\x6e\x74\x65\x72\x66\x61\x63\x65\x43\x6f\x6e\x66\x69\x67\x3a\x00\x00\x75\x72\x6e\x3a\x73\x63\x68\x65\x6d\x61\x73\x2d\x75\x70\x6e\x70\x2d\x6f\x72\x67\x3a\x64\x65\x76\x69\x63\x65\x3a\x49\x6e\x74\x65\x72\x6e\x65\x74\x47\x61\x74\x65\x77\x61\x79\x44\x65\x76\x69\x63\x65\x3a\x31\x00\x75\x72\x6e\x3a\x73\x63\x68\x65\x6d\x61\x73\x2d\x75\x70\x6e\x70\x2d\x6f\x72\x67\x3a\x73\x65\x72\x76\x69\x63\x65\x3a\x57\x41\x4e\x49\x50\x43\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e\x3a\x31\x00\x00\x75\x72\x6e\x3a\x73\x63\x68\x65\x6d\x61\x73\x2d\x75\x70\x6e\x70\x2d\x6f\x72\x67\x3a\x73\x65\x72\x76\x69\x63\x65\x3a\x57\x41\x4e\x50\x50\x50\x43\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e\x3a\x31\x00\x75\x70\x6e\x70\x3a\x72\x6f\x6f\x74\x64\x65\x76\x69\x63\x65\x00\x73\x73\x64\x70\x3a\x61\x6c\x6c\x00\x00\x00\x00\x47\x65\x74\x54\x6f\x74\x61\x6c\x42\x79\x74\x65\x73\x53\x65\x6e\x74\x00\x00\x00\x4e\x65\x77\x54\x6f\x74\x61\x6c\x42\x79\x74\x65\x73\x53\x65\x6e\x74\x00\x00\x00\x47\x65\x74\x54\x6f\x74\x61\x6c\x42\x79\x74\x65\x73\x52\x65\x63\x65\x69\x76\x65\x64\x00\x00\x00\x4e\x65\x77\x54\x6f\x74\x61\x6c\x42\x79\x74\x65\x73\x52\x65\x63\x65\x69\x76\x65\x64\x00\x00\x00\x47\x65\x74\x54\x6f\x74\x61\x6c\x50\x61\x63\x6b\x65\x74\x73\x53\x65\x6e\x74\x00\x4e\x65\x77\x54\x6f\x74\x61\x6c\x50\x61\x63\x6b\x65\x74\x73\x53\x65\x6e\x74\x00\x47\x65\x74\x54\x6f\x74\x61\x6c\x50\x61\x63\x6b\x65\x74\x73\x52\x65\x63\x65\x69\x76\x65\x64\x00\x4e\x65\x77\x54\x6f\x74\x61\x6c\x50\x61\x63\x6b\x65\x74\x73\x52\x65\x63\x65\x69\x76\x65\x64\x00\x47\x65\x74\x53\x74\x61\x74\x75\x73\x49\x6e\x66\x6f\x00\x00\x00\x4e\x65\x77\x55\x70\x74\x69\x6d\x65\x00\x00\x00\x4e\x65\x77\x43\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e\x53\x74\x61\x74\x75\x73\x00\x4e\x65\x77\x4c\x61\x73\x74\x43\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e\x45\x72\x72\x6f\x72\x00\x00\x25\x75\x00\x00\x65\x72\x72\x6f\x72\x43\x6f\x64\x65\x00\x00\x00\x47\x65\x74\x43\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e\x54\x79\x70\x65\x49\x6e\x66\x6f\x00\x00\x00\x4e\x65\x77\x43\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e\x54\x79\x70\x65\x00\x00\x00\x47\x65\x74\x43\x6f\x6d\x6d\x6f\x6e\x4c\x69\x6e\x6b\x50\x72\x6f\x70\x65\x72\x74\x69\x65\x73\x00\x4e\x65\x77\x4c\x61\x79\x65\x72\x31\x44\x6f\x77\x6e\x73\x74\x72\x65\x61\x6d\x4d\x61\x78\x42\x69\x74\x52\x61\x74\x65\x00\x00\x00\x4e\x65\x77\x4c\x61\x79\x65\x72\x31\x55\x70\x73\x74\x72\x65\x61\x6d\x4d\x61\x78\x42\x69\x74\x52\x61\x74\x65\x00\x47\x65\x74\x45\x78\x74\x65\x72\x6e\x61\x6c\x49\x50\x41\x64\x64\x72\x65\x73\x73\x00\x00\x00\x00\x4e\x65\x77\x45\x78\x74\x65\x72\x6e\x61\x6c\x49\x50\x41\x64\x64\x72\x65\x73\x73\x00\x00\x00\x00\x6c\x69\x62\x6d\x69\x6e\x69\x75\x70\x6e\x70\x63\x00\x00\x00\x00\x4e\x65\x77\x52\x65\x6d\x6f\x74\x65\x48\x6f\x73\x74\x00\x00\x00\x4e\x65\x77\x45\x78\x74\x65\x72\x6e\x61\x6c\x50\x6f\x72\x74\x00\x4e\x65\x77\x50\x72\x6f\x74\x6f\x63\x6f\x6c\x00\x4e\x65\x77\x49\x6e\x74\x65\x72\x6e\x61\x6c\x50\x6f\x72\x74\x00\x4e\x65\x77\x49\x6e\x74\x65\x72\x6e\x61\x6c\x43\x6c\x69\x65\x6e\x74\x00\x00\x00\x4e\x65\x77\x45\x6e\x61\x62\x6c\x65\x64\x00\x00\x31\x00\x00\x00\x4e\x65\x77\x50\x6f\x72\x74\x4d\x61\x70\x70\x69\x6e\x67\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x00\x00\x00\x4e\x65\x77\x4c\x65\x61\x73\x65\x44\x75\x72\x61\x74\x69\x6f\x6e\x00\x00\x00\x00\x41\x64\x64\x50\x6f\x72\x74\x4d\x61\x70\x70\x69\x6e\x67\x00\x00\x41\x64\x64\x41\x6e\x79\x50\x6f\x72\x74\x4d\x61\x70\x70\x69\x6e\x67\x00\x00\x00\x4e\x65\x77\x52\x65\x73\x65\x72\x76\x65\x64\x50\x6f\x72\x74\x00\x44\x65\x6c\x65\x74\x65\x50\x6f\x72\x74\x4d\x61\x70\x70\x69\x6e\x67\x00\x00\x00\x4e\x65\x77\x53\x74\x61\x72\x74\x50\x6f\x72\x74\x00\x00\x00\x00\x4e\x65\x77\x45\x6e\x64\x50\x6f\x72\x74\x00\x00\x4e\x65\x77\x4d\x61\x6e\x61\x67\x65\x00\x00\x00\x44\x65\x6c\x65\x74\x65\x50\x6f\x72\x74\x4d\x61\x70\x70\x69\x6e\x67\x52\x61\x6e\x67\x65\x00\x00\x4e\x65\x77\x50\x6f\x72\x74\x4d\x61\x70\x70\x69\x6e\x67\x49\x6e\x64\x65\x78\x00\x47\x65\x74\x47\x65\x6e\x65\x72\x69\x63\x50\x6f\x72\x74\x4d\x61\x70\x70\x69\x6e\x67\x45\x6e\x74\x72\x79\x00\x00\x47\x65\x74\x50\x6f\x72\x74\x4d\x61\x70\x70\x69\x6e\x67\x4e\x75\x6d\x62\x65\x72\x4f\x66\x45\x6e\x74\x72\x69\x65\x73\x00\x00\x00\x4e\x65\x77\x50\x6f\x72\x74\x4d\x61\x70\x70\x69\x6e\x67\x4e\x75\x6d\x62\x65\x72\x4f\x66\x45\x6e\x74\x72\x69\x65\x73\x00\x00\x00\x47\x65\x74\x53\x70\x65\x63\x69\x66\x69\x63\x50\x6f\x72\x74\x4d\x61\x70\x70\x69\x6e\x67\x45\x6e\x74\x72\x79\x00\x4e\x65\x77\x4e\x75\x6d\x62\x65\x72\x4f\x66\x50\x6f\x72\x74\x73\x00\x00\x00\x00\x47\x65\x74\x4c\x69\x73\x74\x4f\x66\x50\x6f\x72\x74\x4d\x61\x70\x70\x69\x6e\x67\x73\x00\x00\x00\x47\x65\x74\x46\x69\x72\x65\x77\x61\x6c\x6c\x53\x74\x61\x74\x75\x73\x00\x00\x00\x46\x69\x72\x65\x77\x61\x6c\x6c\x45\x6e\x61\x62\x6c\x65\x64\x00\x49\x6e\x62\x6f\x75\x6e\x64\x50\x69\x6e\x68\x6f\x6c\x65\x41\x6c\x6c\x6f\x77\x65\x64\x00\x00\x00\x52\x65\x6d\x6f\x74\x65\x48\x6f\x73\x74\x00\x00\x52\x65\x6d\x6f\x74\x65\x50\x6f\x72\x74\x00\x00\x50\x72\x6f\x74\x6f\x63\x6f\x6c\x00\x00\x00\x00\x49\x6e\x74\x65\x72\x6e\x61\x6c\x50\x6f\x72\x74\x00\x00\x00\x00\x49\x6e\x74\x65\x72\x6e\x61\x6c\x43\x6c\x69\x65\x6e\x74\x00\x00\x47\x65\x74\x4f\x75\x74\x62\x6f\x75\x6e\x64\x50\x69\x6e\x68\x6f\x6c\x65\x54\x69\x6d\x65\x6f\x75\x74\x00\x00\x00\x4f\x75\x74\x62\x6f\x75\x6e\x64\x50\x69\x6e\x68\x6f\x6c\x65\x54\x69\x6d\x65\x6f\x75\x74\x00\x00\x65\x6d\x70\x74\x79\x00\x00\x00\x4c\x65\x61\x73\x65\x54\x69\x6d\x65\x00\x00\x00\x41\x64\x64\x50\x69\x6e\x68\x6f\x6c\x65\x00\x00\x55\x6e\x69\x71\x75\x65\x49\x44\x00\x00\x00\x00\x4e\x65\x77\x4c\x65\x61\x73\x65\x54\x69\x6d\x65\x00\x00\x00\x00\x55\x70\x64\x61\x74\x65\x50\x69\x6e\x68\x6f\x6c\x65\x00\x00\x00\x44\x65\x6c\x65\x74\x65\x50\x69\x6e\x68\x6f\x6c\x65\x00\x00\x00\x43\x68\x65\x63\x6b\x50\x69\x6e\x68\x6f\x6c\x65\x57\x6f\x72\x6b\x69\x6e\x67\x00\x49\x73\x57\x6f\x72\x6b\x69\x6e\x67\x00\x00\x00\x47\x65\x74\x50\x69\x6e\x68\x6f\x6c\x65\x50\x61\x63\x6b\x65\x74\x73\x00\x00\x00\x50\x69\x6e\x68\x6f\x6c\x65\x50\x61\x63\x6b\x65\x74\x73\x00\x00\x53\x75\x63\x63\x65\x73\x73\x00\x4d\x69\x6e\x69\x75\x70\x6e\x70\x63\x20\x55\x6e\x6b\x6e\x6f\x77\x6e\x20\x45\x72\x72\x6f\x72\x00\x4d\x69\x6e\x69\x75\x70\x6e\x70\x63\x20\x49\x6e\x76\x61\x6c\x69\x64\x20\x41\x72\x67\x75\x6d\x65\x6e\x74\x73\x00\x4d\x69\x6e\x69\x75\x70\x6e\x70\x63\x20\x49\x6e\x76\x61\x6c\x69\x64\x20\x72\x65\x73\x70\x6f\x6e\x73\x65\x00\x00\x4d\x69\x6e\x69\x75\x70\x6e\x70\x63\x20\x53\x6f\x63\x6b\x65\x74\x20\x65\x72\x72\x6f\x72\x00\x00\x4d\x69\x6e\x69\x75\x70\x6e\x70\x63\x20\x4d\x65\x6d\x6f\x72\x79\x20\x61\x6c\x6c\x6f\x63\x61\x74\x69\x6f\x6e\x20\x65\x72\x72\x6f\x72\x00\x00\x00\x49\x6e\x76\x61\x6c\x69\x64\x20\x41\x63\x74\x69\x6f\x6e\x00\x00\x49\x6e\x76\x61\x6c\x69\x64\x20\x41\x72\x67\x73\x00\x00\x00\x00\x41\x63\x74\x69\x6f\x6e\x20\x46\x61\x69\x6c\x65\x64\x00\x00\x00\x41\x63\x74\x69\x6f\x6e\x20\x6e\x6f\x74\x20\x61\x75\x74\x68\x6f\x72\x69\x7a\x65\x64\x00\x00\x00\x50\x69\x6e\x68\x6f\x6c\x65\x53\x70\x61\x63\x65\x45\x78\x68\x61\x75\x73\x74\x65\x64\x00\x00\x00\x46\x69\x72\x65\x77\x61\x6c\x6c\x44\x69\x73\x61\x62\x6c\x65\x64\x00\x00\x00\x00\x49\x6e\x62\x6f\x75\x6e\x64\x50\x69\x6e\x68\x6f\x6c\x65\x4e\x6f\x74\x41\x6c\x6c\x6f\x77\x65\x64\x00\x00\x00\x00\x4e\x6f\x53\x75\x63\x68\x45\x6e\x74\x72\x79\x00\x50\x72\x6f\x74\x6f\x63\x6f\x6c\x4e\x6f\x74\x53\x75\x70\x70\x6f\x72\x74\x65\x64\x00\x00\x00\x00\x49\x6e\x74\x65\x72\x6e\x61\x6c\x50\x6f\x72\x74\x57\x69\x6c\x64\x63\x61\x72\x64\x69\x6e\x67\x4e\x6f\x74\x41\x6c\x6c\x6f\x77\x65\x64\x00\x00\x00\x50\x72\x6f\x74\x6f\x63\x6f\x6c\x57\x69\x6c\x64\x63\x61\x72\x64\x69\x6e\x67\x4e\x6f\x74\x41\x6c\x6c\x6f\x77\x65\x64\x00\x00\x00\x57\x69\x6c\x64\x63\x61\x72\x64\x4e\x6f\x74\x50\x65\x72\x6d\x69\x74\x74\x65\x64\x49\x6e\x53\x72\x63\x49\x50\x00\x4e\x6f\x50\x61\x63\x6b\x65\x74\x53\x65\x6e\x74\x00\x00\x00\x00\x53\x70\x65\x63\x69\x66\x69\x65\x64\x41\x72\x72\x61\x79\x49\x6e\x64\x65\x78\x49\x6e\x76\x61\x6c\x69\x64\x00\x00\x4e\x6f\x53\x75\x63\x68\x45\x6e\x74\x72\x79\x49\x6e\x41\x72\x72\x61\x79\x00\x00\x57\x69\x6c\x64\x43\x61\x72\x64\x4e\x6f\x74\x50\x65\x72\x6d\x69\x74\x74\x65\x64\x49\x6e\x53\x72\x63\x49\x50\x00\x57\x69\x6c\x64\x43\x61\x72\x64\x4e\x6f\x74\x50\x65\x72\x6d\x69\x74\x74\x65\x64\x49\x6e\x45\x78\x74\x50\x6f\x72\x74\x00\x00\x00\x43\x6f\x6e\x66\x6c\x69\x63\x74\x49\x6e\x4d\x61\x70\x70\x69\x6e\x67\x45\x6e\x74\x72\x79\x00\x00\x53\x61\x6d\x65\x50\x6f\x72\x74\x56\x61\x6c\x75\x65\x73\x52\x65\x71\x75\x69\x72\x65\x64\x00\x00\x4f\x6e\x6c\x79\x50\x65\x72\x6d\x61\x6e\x65\x6e\x74\x4c\x65\x61\x73\x65\x73\x53\x75\x70\x70\x6f\x72\x74\x65\x64\x00\x00\x00\x00\x52\x65\x6d\x6f\x74\x65\x48\x6f\x73\x74\x4f\x6e\x6c\x79\x53\x75\x70\x70\x6f\x72\x74\x73\x57\x69\x6c\x64\x63\x61\x72\x64\x00\x00\x45\x78\x74\x65\x72\x6e\x61\x6c\x50\x6f\x72\x74\x4f\x6e\x6c\x79\x53\x75\x70\x70\x6f\x72\x74\x73\x57\x69\x6c\x64\x63\x61\x72\x64\x00\x00\x00\x00\x55\x6e\x6b\x6e\x6f\x77\x6e\x45\x72\x72\x6f\x72\x00\x00\x00\x00\x25\x68\x75\x00\x67\x65\x74\x61\x64\x64\x72\x69\x6e\x66\x6f\x28\x29\x20\x65\x72\x72\x6f\x72\x20\x3a\x20\x25\x73\x0a\x00\x00\x00\x67\x65\x74\x73\x6f\x63\x6b\x6f\x70\x74\x00\x00\x63\x6f\x6e\x6e\x65\x63\x74\x00\x50\x6f\x72\x74\x4d\x61\x70\x70\x69\x6e\x67\x45\x6e\x74\x72\x79\x00\x00\x00\x00\x4e\x65\x77\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x00\x00\x70\x6f\x6c\x6c\x00\x00\x00\x00\x72\x65\x63\x76\x00\x00\x00\x00\x73\x6f\x63\x6b\x65\x74\x28\x75\x6e\x69\x78\x29\x00\x00\x00\x00\x6d\x69\x6e\x69\x73\x73\x64\x70\x63\x2e\x63\x3a\x20\x77\x72\x69\x74\x65\x28\x29\x00\x00\x00\x00\x6d\x69\x6e\x69\x73\x73\x64\x70\x63\x2e\x63\x3a\x20\x72\x65\x61\x64\x28\x29\x00\x63\x6f\x6e\x74\x65\x6e\x74\x2d\x6c\x65\x6e\x67\x74\x68\x00\x00\x74\x72\x61\x6e\x73\x66\x65\x72\x2d\x65\x6e\x63\x6f\x64\x69\x6e\x67\x00\x00\x00\x63\x68\x75\x6e\x6b\x65\x64\x00\x67\x65\x74\x73\x6f\x63\x6b\x6e\x61\x6d\x65\x00\x67\x65\x74\x6e\x61\x6d\x65\x69\x6e\x66\x6f\x28\x29\x20\x66\x61\x69\x6c\x65\x64\x20\x3a\x20\x25\x73\x0a\x00\x00\x47\x45\x54\x20\x25\x73\x20\x48\x54\x54\x50\x2f\x25\x73\x0d\x0a\x48\x6f\x73\x74\x3a\x20\x25\x73\x3a\x25\x64\x0d\x0a\x43\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e\x3a\x20\x43\x6c\x6f\x73\x65\x0d\x0a\x55\x73\x65\x72\x2d\x41\x67\x65\x6e\x74\x3a\x20\x44\x65\x62\x69\x61\x6e\x2f\x37\x2e\x32\x2c\x20\x55\x50\x6e\x50\x2f\x31\x2e\x31\x2c\x20\x4d\x69\x6e\x69\x55\x50\x6e\x50\x63\x2f\x31\x2e\x39\x0d\x0a\x0d\x0a\x00\x73\x65\x6e\x64\x00\x00\x00\x00\x3a\x2f\x2f\x00\x3c\x21\x2d\x2d\x00\x00\x00\x00\x2d\x2d\x3e\x00\x3c\x21\x5b\x43\x44\x41\x54\x41\x5b\x00\x00\x00\x5d\x5d\x3e\x00\x73\x65\x72\x76\x69\x63\x65\x00\x75\x72\x6e\x3a\x73\x63\x68\x65\x6d\x61\x73\x2d\x75\x70\x6e\x70\x2d\x6f\x72\x67\x3a\x73\x65\x72\x76\x69\x63\x65\x3a\x57\x41\x4e\x49\x50\x76\x36\x46\x69\x72\x65\x77\x61\x6c\x6c\x43\x6f\x6e\x74\x72\x6f\x6c\x3a\x00\x00\x00\x00\x75\x72\x6e\x3a\x73\x63\x68\x65\x6d\x61\x73\x2d\x75\x70\x6e\x70\x2d\x6f\x72\x67\x3a\x73\x65\x72\x76\x69\x63\x65\x3a\x57\x41\x4e\x49\x50\x43\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e\x3a\x00\x00\x00\x75\x72\x6e\x3a\x73\x63\x68\x65\x6d\x61\x73\x2d\x75\x70\x6e\x70\x2d\x6f\x72\x67\x3a\x73\x65\x72\x76\x69\x63\x65\x3a\x57\x41\x4e\x50\x50\x50\x43\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e\x3a\x00\x00\x55\x52\x4c\x42\x61\x73\x65\x00\x70\x72\x65\x73\x65\x6e\x74\x61\x74\x69\x6f\x6e\x55\x52\x4c\x00\x73\x65\x72\x76\x69\x63\x65\x54\x79\x70\x65\x00\x63\x6f\x6e\x74\x72\x6f\x6c\x55\x52\x4c\x00\x00\x65\x76\x65\x6e\x74\x53\x75\x62\x55\x52\x4c\x00\x53\x43\x50\x44\x55\x52\x4c\x00\x3a\x25\x68\x75\x00\x00\x00\x00\x50\x4f\x53\x54\x20\x25\x73\x20\x48\x54\x54\x50\x2f\x25\x73\x0d\x0a\x48\x6f\x73\x74\x3a\x20\x25\x73\x25\x73\x0d\x0a\x55\x73\x65\x72\x2d\x41\x67\x65\x6e\x74\x3a\x20\x44\x65\x62\x69\x61\x6e\x2f\x37\x2e\x32\x2c\x20\x55\x50\x6e\x50\x2f\x31\x2e\x31\x2c\x20\x4d\x69\x6e\x69\x55\x50\x6e\x50\x63\x2f\x31\x2e\x39\x0d\x0a\x43\x6f\x6e\x74\x65\x6e\x74\x2d\x4c\x65\x6e\x67\x74\x68\x3a\x20\x25\x64\x0d\x0a\x43\x6f\x6e\x74\x65\x6e\x74\x2d\x54\x79\x70\x65\x3a\x20\x74\x65\x78\x74\x2f\x78\x6d\x6c\x0d\x0a\x53\x4f\x41\x50\x41\x63\x74\x69\x6f\x6e\x3a\x20\x22\x25\x73\x22\x0d\x0a\x43\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e\x3a\x20\x43\x6c\x6f\x73\x65\x0d\x0a\x43\x61\x63\x68\x65\x2d\x43\x6f\x6e\x74\x72\x6f\x6c\x3a\x20\x6e\x6f\x2d\x63\x61\x63\x68\x65\x0d\x0a\x50\x72\x61\x67\x6d\x61\x3a\x20\x6e\x6f\x2d\x63\x61\x63\x68\x65\x0d\x0a\x0d\x0a\x00\x00\x00\x00\x4e\x65\x77\x50\x6f\x72\x74\x4c\x69\x73\x74\x69\x6e\x67\x00\x00\x94\x66\xff\x7f\x01\x00\x00\x00\x00\x00\x00\x00\x88\x90\x00\x00\x6c\x90\x00\x00\x00\x00\x00\x00\xc4\x1d\x01\x00\xf8\x1d\x01\x00\x28\x1e\x01\x00\x58\x1e\x01\x00\x00\x00\x00\x00\x68\x1e\x01\x00\x00\x00\x00\x00\x01\x00\x00\x00\x5c\x26\x01\x00\x02\x00\x00\x00\x3c\x20\x01\x00\x03\x00\x00\x00\x4c\x20\x01\x00\x04\x00\x00\x00\x5c\x20\x01\x00\x05\x00\x00\x00\x68\x20\x01\x00\x06\x00\x00\x00\x78\x20\x01\x00\x07\x00\x00\x00\x8c\x20\x01\x00\x08\x00\x00\x00\x70\x26\x01\x00\x09\x00\x00\x00\xec\x22\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x10\x00\x00\x00\x0c\x00\x00\x00\x58\x8d\x00\x00\x0d\x00\x00\x00\xc0\x09\x01\x00\x19\x00\x00\x00\x84\xa9\x01\x00\x1b\x00\x00\x00\x04\x00\x00\x00\x1a\x00\x00\x00\x88\xa9\x01\x00\x1c\x00\x00\x00\x04\x00\x00\x00\x04\x00\x00\x00\x94\x81\x00\x00\xf5\xfe\xff\x6f\x24\x83\x00\x00\x05\x00\x00\x00\xbc\x88\x00\x00\x06\x00\x00\x00\xec\x84\x00\x00\x0a\x00\x00\x00\x22\x02\x00\x00\x0b\x00\x00\x00\x10\x00\x00\x00\x15\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\xec\xaa\x01\x00\x02\x00\x00\x00\xb8\x01\x00\x00\x14\x00\x00\x00\x11\x00\x00\x00\x17\x00\x00\x00\xa0\x8b\x00\x00\x11\x00\x00\x00\x88\x8b\x00\x00\x12\x00\x00\x00\x18\x00\x00\x00\x13\x00\x00\x00\x08\x00\x00\x00\xfe\xff\xff\x6f\x58\x8b\x00\x00\xff\xff\xff\x6f\x01\x00\x00\x00\xf0\xff\xff\x6f\xde\x8a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfc\xa9\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x8d\x00\x00\x64\x8d\x00\x00\x64\x8d\x00\x00\x64\x8d\x00\x00\x64\x8d\x00\x00\x64\x8d\x00\x00\x64\x8d\x00\x00\x64\x8d\x00\x00\x64\x8d\x00\x00\x64\x8d\x00\x00\x64\x8d\x00\x00\x64\x8d\x00\x00\x64\x8d\x00\x00\x64\x8d\x00\x00\x64\x8d\x00\x00\x64\x8d\x00\x00\x64\x8d\x00\x00\x64\x8d\x00\x00\x64\x8d\x00\x00\x64\x8d\x00\x00\x64\x8d\x00\x00\x64\x8d\x00\x00\x64\x8d\x00\x00\x64\x8d\x00\x00\x64\x8d\x00\x00\x64\x8d\x00\x00\x64\x8d\x00\x00\x64\x8d\x00\x00\x64\x8d\x00\x00\x64\x8d\x00\x00\x64\x8d\x00\x00\x64\x8d\x00\x00\x64\x8d\x00\x00\x64\x8d\x00\x00\x64\x8d\x00\x00\x64\x8d\x00\x00\x64\x8d\x00\x00\x64\x8d\x00\x00\x64\x8d\x00\x00\x64\x8d\x00\x00\x64\x8d\x00\x00\x64\x8d\x00\x00\x64\x8d\x00\x00\x64\x8d\x00\x00\x64\x8d\x00\x00\x64\x8d\x00\x00\x64\x8d\x00\x00\x64\x8d\x00\x00\x64\x8d\x00\x00\x64\x8d\x00\x00\x64\x8d\x00\x00\x64\x8d\x00\x00\x64\x8d\x00\x00\x64\x8d\x00\x00\x64\x8d\x00\x00\x40\x01\x01\x00\x00\x00\x00\x00\xc4\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\x43\x43\x3a\x20\x28\x44\x65\x62\x69\x61\x6e\x20\x34\x2e\x36\x2e\x33\x2d\x31\x34\x2b\x72\x70\x69\x31\x29\x20\x34\x2e\x36\x2e\x33\x00\x41\x2e\x00\x00\x00\x61\x65\x61\x62\x69\x00\x01\x24\x00\x00\x00\x05\x36\x00\x06\x06\x08\x01\x09\x01\x0a\x02\x12\x04\x14\x01\x15\x01\x17\x03\x18\x01\x19\x01\x1a\x02\x1b\x03\x1c\x01\x2c\x01\x00\x2e\x73\x79\x6d\x74\x61\x62\x00\x2e\x73\x74\x72\x74\x61\x62\x00\x2e\x73\x68\x73\x74\x72\x74\x61\x62\x00\x2e\x69\x6e\x74\x65\x72\x70\x00\x2e\x6e\x6f\x74\x65\x2e\x41\x42\x49\x2d\x74\x61\x67\x00\x2e\x6e\x6f\x74\x65\x2e\x67\x6e\x75\x2e\x62\x75\x69\x6c\x64\x2d\x69\x64\x00\x2e\x67\x6e\x75\x2e\x68\x61\x73\x68\x00\x2e\x64\x79\x6e\x73\x79\x6d\x00\x2e\x64\x79\x6e\x73\x74\x72\x00\x2e\x67\x6e\x75\x2e\x76\x65\x72\x73\x69\x6f\x6e\x00\x2e\x67\x6e\x75\x2e\x76\x65\x72\x73\x69\x6f\x6e\x5f\x72\x00\x2e\x72\x65\x6c\x2e\x64\x79\x6e\x00\x2e\x72\x65\x6c\x2e\x70\x6c\x74\x00\x2e\x69\x6e\x69\x74\x00\x2e\x74\x65\x78\x74\x00\x2e\x66\x69\x6e\x69\x00\x2e\x72\x6f\x64\x61\x74\x61\x00\x2e\x41\x52\x4d\x2e\x65\x78\x69\x64\x78\x00\x2e\x65\x68\x5f\x66\x72\x61\x6d\x65\x00\x2e\x69\x6e\x69\x74\x5f\x61\x72\x72\x61\x79\x00\x2e\x66\x69\x6e\x69\x5f\x61\x72\x72\x61\x79\x00\x2e\x6a\x63\x72\x00\x2e\x64\x61\x74\x61\x2e\x72\x65\x6c\x2e\x72\x6f\x00\x2e\x64\x79\x6e\x61\x6d\x69\x63\x00\x2e\x67\x6f\x74\x00\x2e\x64\x61\x74\x61\x00\x2e\x62\x73\x73\x00\x2e\x63\x6f\x6d\x6d\x65\x6e\x74\x00\x2e\x41\x52\x4d\x2e\x61\x74\x74\x72\x69\x62\x75\x74\x65\x73\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x34\x81\x00\x00\x34\x01\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x07\x00\x00\x00\x02\x00\x00\x00\x50\x81\x00\x00\x50\x01\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x31\x00\x00\x00\x07\x00\x00\x00\x02\x00\x00\x00\x70\x81\x00\x00\x70\x01\x00\x00\x24\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x48\x00\x00\x00\x05\x00\x00\x00\x02\x00\x00\x00\x94\x81\x00\x00\x94\x01\x00\x00\x90\x01\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x04\x00\x00\x00\x44\x00\x00\x00\xf6\xff\xff\x6f\x02\x00\x00\x00\x24\x83\x00\x00\x24\x03\x00\x00\xc8\x01\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x04\x00\x00\x00\x4e\x00\x00\x00\x0b\x00\x00\x00\x02\x00\x00\x00\xec\x84\x00\x00\xec\x04\x00\x00\xd0\x03\x00\x00\x07\x00\x00\x00\x01\x00\x00\x00\x04\x00\x00\x00\x10\x00\x00\x00\x56\x00\x00\x00\x03\x00\x00\x00\x02\x00\x00\x00\xbc\x88\x00\x00\xbc\x08\x00\x00\x22\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x5e\x00\x00\x00\xff\xff\xff\x6f\x02\x00\x00\x00\xde\x8a\x00\x00\xde\x0a\x00\x00\x7a\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x6b\x00\x00\x00\xfe\xff\xff\x6f\x02\x00\x00\x00\x58\x8b\x00\x00\x58\x0b\x00\x00\x30\x00\x00\x00\x07\x00\x00\x00\x01\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x7a\x00\x00\x00\x09\x00\x00\x00\x02\x00\x00\x00\x88\x8b\x00\x00\x88\x0b\x00\x00\x18\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x08\x00\x00\x00\x83\x00\x00\x00\x09\x00\x00\x00\x02\x00\x00\x00\xa0\x8b\x00\x00\xa0\x0b\x00\x00\xb8\x01\x00\x00\x06\x00\x00\x00\x0d\x00\x00\x00\x04\x00\x00\x00\x08\x00\x00\x00\x8c\x00\x00\x00\x01\x00\x00\x00\x06\x00\x00\x00\x58\x8d\x00\x00\x58\x0d\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x87\x00\x00\x00\x01\x00\x00\x00\x06\x00\x00\x00\x64\x8d\x00\x00\x64\x0d\x00\x00\xa8\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x04\x00\x00\x00\x92\x00\x00\x00\x01\x00\x00\x00\x06\x00\x00\x00\x0c\x90\x00\x00\x0c\x10\x00\x00\xb4\x79\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x98\x00\x00\x00\x01\x00\x00\x00\x06\x00\x00\x00\xc0\x09\x01\x00\xc0\x89\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x9e\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\xc8\x09\x01\x00\xc8\x89\x00\x00\xb0\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\xa6\x00\x00\x00\x01\x00\x00\x70\x82\x00\x00\x00\x78\x29\x01\x00\x78\xa9\x00\x00\x08\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\xb1\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x80\x29\x01\x00\x80\xa9\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\xbb\x00\x00\x00\x0e\x00\x00\x00\x03\x00\x00\x00\x84\xa9\x01\x00\x84\xa9\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\xc7\x00\x00\x00\x0f\x00\x00\x00\x03\x00\x00\x00\x88\xa9\x01\x00\x88\xa9\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\xd3\x00\x00\x00\x01\x00\x00\x00\x03\x00\x00\x00\x8c\xa9\x01\x00\x8c\xa9\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\xd8\x00\x00\x00\x01\x00\x00\x00\x03\x00\x00\x00\x90\xa9\x01\x00\x90\xa9\x00\x00\x6c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\xe5\x00\x00\x00\x06\x00\x00\x00\x03\x00\x00\x00\xfc\xa9\x01\x00\xfc\xa9\x00\x00\xf0\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x08\x00\x00\x00\xee\x00\x00\x00\x01\x00\x00\x00\x03\x00\x00\x00\xec\xaa\x01\x00\xec\xaa\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x04\x00\x00\x00\xf3\x00\x00\x00\x01\x00\x00\x00\x03\x00\x00\x00\xec\xab\x01\x00\xec\xab\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\xf9\x00\x00\x00\x08\x00\x00\x00\x03\x00\x00\x00\xf4\xab\x01\x00\xf4\xab\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\xfe\x00\x00\x00\x01\x00\x00\x00\x30\x00\x00\x00\x00\x00\x00\x00\xf4\xab\x00\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x07\x01\x00\x00\x03\x00\x00\x70\x00\x00\x00\x00\x00\x00\x00\x00\x16\xac\x00\x00\x2f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x11\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\xac\x00\x00\x17\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5c\xb2\x00\x00\x60\x17\x00\x00\x1f\x00\x00\x00\xef\x00\x00\x00\x04\x00\x00\x00\x10\x00\x00\x00\x09\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbc\xc9\x00\x00\x73\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x34\x81\x00\x00\x00\x00\x00\x00\x03\x00\x01\x00\x00\x00\x00\x00\x50\x81\x00\x00\x00\x00\x00\x00\x03\x00\x02\x00\x00\x00\x00\x00\x70\x81\x00\x00\x00\x00\x00\x00\x03\x00\x03\x00\x00\x00\x00\x00\x94\x81\x00\x00\x00\x00\x00\x00\x03\x00\x04\x00\x00\x00\x00\x00\x24\x83\x00\x00\x00\x00\x00\x00\x03\x00\x05\x00\x00\x00\x00\x00\xec\x84\x00\x00\x00\x00\x00\x00\x03\x00\x06\x00\x00\x00\x00\x00\xbc\x88\x00\x00\x00\x00\x00\x00\x03\x00\x07\x00\x00\x00\x00\x00\xde\x8a\x00\x00\x00\x00\x00\x00\x03\x00\x08\x00\x00\x00\x00\x00\x58\x8b\x00\x00\x00\x00\x00\x00\x03\x00\x09\x00\x00\x00\x00\x00\x88\x8b\x00\x00\x00\x00\x00\x00\x03\x00\x0a\x00\x00\x00\x00\x00\xa0\x8b\x00\x00\x00\x00\x00\x00\x03\x00\x0b\x00\x00\x00\x00\x00\x58\x8d\x00\x00\x00\x00\x00\x00\x03\x00\x0c\x00\x00\x00\x00\x00\x64\x8d\x00\x00\x00\x00\x00\x00\x03\x00\x0d\x00\x00\x00\x00\x00\x0c\x90\x00\x00\x00\x00\x00\x00\x03\x00\x0e\x00\x00\x00\x00\x00\xc0\x09\x01\x00\x00\x00\x00\x00\x03\x00\x0f\x00\x00\x00\x00\x00\xc8\x09\x01\x00\x00\x00\x00\x00\x03\x00\x10\x00\x00\x00\x00\x00\x78\x29\x01\x00\x00\x00\x00\x00\x03\x00\x11\x00\x00\x00\x00\x00\x80\x29\x01\x00\x00\x00\x00\x00\x03\x00\x12\x00\x00\x00\x00\x00\x84\xa9\x01\x00\x00\x00\x00\x00\x03\x00\x13\x00\x00\x00\x00\x00\x88\xa9\x01\x00\x00\x00\x00\x00\x03\x00\x14\x00\x00\x00\x00\x00\x8c\xa9\x01\x00\x00\x00\x00\x00\x03\x00\x15\x00\x00\x00\x00\x00\x90\xa9\x01\x00\x00\x00\x00\x00\x03\x00\x16\x00\x00\x00\x00\x00\xfc\xa9\x01\x00\x00\x00\x00\x00\x03\x00\x17\x00\x00\x00\x00\x00\xec\xaa\x01\x00\x00\x00\x00\x00\x03\x00\x18\x00\x00\x00\x00\x00\xec\xab\x01\x00\x00\x00\x00\x00\x03\x00\x19\x00\x00\x00\x00\x00\xf4\xab\x01\x00\x00\x00\x00\x00\x03\x00\x1a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x1c\x00\x01\x00\x00\x00\x50\x81\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x04\x00\x00\x00\x0c\x90\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x01\x00\x00\x00\x78\x29\x01\x00\x00\x00\x00\x00\x00\x00\x11\x00\x01\x00\x00\x00\x3c\x90\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x01\x00\x00\x00\xc8\x09\x01\x00\x00\x00\x00\x00\x00\x00\x10\x00\x01\x00\x00\x00\xec\xab\x01\x00\x00\x00\x00\x00\x00\x00\x19\x00\x04\x00\x00\x00\x48\x90\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x07\x00\x00\x00\x48\x90\x00\x00\x00\x00\x00\x00\x02\x00\x0e\x00\x01\x00\x00\x00\x64\x90\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x04\x00\x00\x00\x58\x8d\x00\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x04\x00\x00\x00\xc0\x09\x01\x00\x00\x00\x00\x00\x00\x00\x0f\x00\x04\x00\x00\x00\x60\x8d\x00\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x04\x00\x00\x00\xc4\x09\x01\x00\x00\x00\x00\x00\x00\x00\x0f\x00\x17\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\xf1\xff\x22\x00\x00\x00\x8c\xa9\x01\x00\x00\x00\x00\x00\x01\x00\x15\x00\x01\x00\x00\x00\xf0\xab\x01\x00\x00\x00\x00\x00\x00\x00\x19\x00\x04\x00\x00\x00\x6c\x90\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x2f\x00\x00\x00\x6c\x90\x00\x00\x00\x00\x00\x00\x02\x00\x0e\x00\x01\x00\x00\x00\x84\x90\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x45\x00\x00\x00\xf4\xab\x01\x00\x01\x00\x00\x00\x01\x00\x1a\x00\x01\x00\x00\x00\x88\xa9\x01\x00\x00\x00\x00\x00\x00\x00\x14\x00\x54\x00\x00\x00\x88\xa9\x01\x00\x00\x00\x00\x00\x01\x00\x14\x00\x04\x00\x00\x00\x88\x90\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x7b\x00\x00\x00\x88\x90\x00\x00\x00\x00\x00\x00\x02\x00\x0e\x00\x01\x00\x00\x00\xb0\x90\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x01\x00\x00\x00\x84\xa9\x01\x00\x00\x00\x00\x00\x00\x00\x13\x00\x87\x00\x00\x00\x84\xa9\x01\x00\x00\x00\x00\x00\x01\x00\x13\x00\x01\x00\x00\x00\xf4\xab\x01\x00\x00\x00\x00\x00\x00\x00\x1a\x00\xa6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\xf1\xff\x04\x00\x00\x00\xb8\x90\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\xae\x00\x00\x00\xb8\x90\x00\x00\x80\x02\x00\x00\x02\x00\x0e\x00\x01\x00\x00\x00\xf4\x92\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x04\x00\x00\x00\x38\x93\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x01\x00\x00\x00\x10\x94\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x04\x00\x00\x00\x20\x94\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\xbb\x00\x00\x00\x20\x94\x00\x00\x90\x02\x00\x00\x02\x00\x0e\x00\x01\x00\x00\x00\x84\x96\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x04\x00\x00\x00\xb0\x96\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x01\x00\x00\x00\x60\xa6\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x04\x00\x00\x00\x20\xa8\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x01\x00\x00\x00\xcc\x09\x01\x00\x00\x00\x00\x00\x00\x00\x10\x00\xce\x00\x00\x00\xcc\x09\x01\x00\x04\x00\x00\x00\x01\x00\x10\x00\xdd\x00\x00\x00\xd0\x09\x01\x00\x04\x00\x00\x00\x01\x00\x10\x00\x01\x00\x00\x00\xd4\x09\x01\x00\x00\x00\x00\x00\x00\x00\x10\x00\xec\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\xf1\xff\x04\x00\x00\x00\x48\xac\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\xf8\x00\x00\x00\x48\xac\x00\x00\xf4\x01\x00\x00\x02\x00\x0e\x00\x01\x00\x00\x00\x34\xae\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x04\x00\x00\x00\x3c\xae\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x01\x00\x00\x00\x94\xae\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x04\x00\x00\x00\xa4\xae\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x01\x00\x00\x00\x90\xb1\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x04\x00\x00\x00\xa0\xb1\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x01\x00\x00\x00\xd0\xb1\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x04\x00\x00\x00\xd4\xb1\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x01\x00\x00\x00\xcc\xba\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x04\x00\x00\x00\x38\xbb\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x01\x00\x00\x00\x80\xbb\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x04\x00\x00\x00\x84\xbb\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x01\x00\x00\x00\xd0\xbb\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x04\x00\x00\x00\xd4\xbb\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x01\x00\x00\x00\x68\xbd\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x04\x00\x00\x00\x6c\xbd\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x01\x00\x00\x00\x94\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x04\x00\x00\x00\x9c\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x01\x00\x00\x00\x30\xc1\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x01\x00\x00\x00\xe8\x1a\x01\x00\x00\x00\x00\x00\x00\x00\x10\x00\x0b\x01\x00\x00\xe8\x1a\x01\x00\x4d\x00\x00\x00\x01\x00\x10\x00\x01\x00\x00\x00\x90\xa9\x01\x00\x00\x00\x00\x00\x00\x00\x16\x00\x1e\x01\x00\x00\x90\xa9\x01\x00\x14\x00\x00\x00\x01\x00\x16\x00\x2e\x01\x00\x00\xa4\xa9\x01\x00\x08\x00\x00\x00\x01\x00\x16\x00\x01\x00\x00\x00\x38\x1b\x01\x00\x00\x00\x00\x00\x00\x00\x10\x00\x3e\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\xf1\xff\x04\x00\x00\x00\x34\xc1\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x4d\x01\x00\x00\x34\xc1\x00\x00\x24\x00\x00\x00\x02\x00\x0e\x00\x01\x00\x00\x00\xdc\xc1\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x04\x00\x00\x00\xe4\xc1\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x01\x00\x00\x00\x68\xc2\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x04\x00\x00\x00\x70\xc2\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x01\x00\x00\x00\xf4\xc2\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x04\x00\x00\x00\xfc\xc2\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x01\x00\x00\x00\x80\xc3\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x04\x00\x00\x00\x88\xc3\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x01\x00\x00\x00\x2c\xc5\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x04\x00\x00\x00\x48\xc5\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x01\x00\x00\x00\x34\xc6\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x04\x00\x00\x00\x44\xc6\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x01\x00\x00\x00\xa4\xc7\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x04\x00\x00\x00\xc0\xc7\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x01\x00\x00\x00\xbc\xc8\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x04\x00\x00\x00\xcc\xc8\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x01\x00\x00\x00\x74\xca\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x04\x00\x00\x00\xac\xca\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x01\x00\x00\x00\x8c\xcc\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x04\x00\x00\x00\xc8\xcc\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x01\x00\x00\x00\xdc\xcd\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x04\x00\x00\x00\xf4\xcd\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x01\x00\x00\x00\x2c\xcf\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x04\x00\x00\x00\x48\xcf\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x01\x00\x00\x00\x10\xd2\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x04\x00\x00\x00\x40\xd2\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x01\x00\x00\x00\x20\xd3\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x04\x00\x00\x00\x34\xd3\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x01\x00\x00\x00\x7c\xd5\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x04\x00\x00\x00\xa8\xd5\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x01\x00\x00\x00\x20\xd7\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x04\x00\x00\x00\x48\xd7\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x01\x00\x00\x00\x78\xd8\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x04\x00\x00\x00\x8c\xd8\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x01\x00\x00\x00\x00\xda\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x04\x00\x00\x00\x24\xda\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x01\x00\x00\x00\x2c\xdc\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x04\x00\x00\x00\x6c\xdc\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x01\x00\x00\x00\x60\xdd\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x04\x00\x00\x00\x74\xdd\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x01\x00\x00\x00\x4c\xde\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x04\x00\x00\x00\x5c\xde\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x01\x00\x00\x00\x68\xdf\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x04\x00\x00\x00\x7c\xdf\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x01\x00\x00\x00\x80\xe0\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x01\x00\x00\x00\x74\x1e\x01\x00\x00\x00\x00\x00\x00\x00\x10\x00\x56\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\xf1\xff\x04\x00\x00\x00\x94\xe0\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x01\x00\x00\x00\x40\xe3\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x01\x00\x00\x00\x60\x23\x01\x00\x00\x00\x00\x00\x00\x00\x10\x00\x63\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\xf1\xff\x04\x00\x00\x00\xd0\xe3\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x01\x00\x00\x00\x90\xe7\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x01\x00\x00\x00\x28\x26\x01\x00\x00\x00\x00\x00\x00\x00\x10\x00\x75\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\xf1\xff\x04\x00\x00\x00\xb8\xe7\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x88\x01\x00\x00\xb8\xe7\x00\x00\x78\x00\x00\x00\x02\x00\x0e\x00\x8e\x01\x00\x00\x30\xe8\x00\x00\x0c\x00\x00\x00\x02\x00\x0e\x00\x95\x01\x00\x00\x3c\xe8\x00\x00\x28\x01\x00\x00\x02\x00\x0e\x00\x9a\x01\x00\x00\x64\xe9\x00\x00\x98\x00\x00\x00\x02\x00\x0e\x00\x01\x00\x00\x00\xf0\xe9\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x04\x00\x00\x00\xfc\xe9\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x01\x00\x00\x00\x74\xea\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x04\x00\x00\x00\x80\xea\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x01\x00\x00\x00\xac\xa9\x01\x00\x00\x00\x00\x00\x00\x00\x16\x00\xa3\x01\x00\x00\xac\xa9\x01\x00\x50\x00\x00\x00\x01\x00\x16\x00\x01\x00\x00\x00\x5c\x26\x01\x00\x00\x00\x00\x00\x00\x00\x10\x00\xac\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\xf1\xff\x04\x00\x00\x00\xb0\xea\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x01\x00\x00\x00\x90\xeb\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x01\x00\x00\x00\x80\x26\x01\x00\x00\x00\x00\x00\x00\x00\x10\x00\xba\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\xf1\xff\x04\x00\x00\x00\x98\xeb\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x01\x00\x00\x00\x2c\xef\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x01\x00\x00\x00\x90\x26\x01\x00\x00\x00\x00\x00\x00\x00\x10\x00\xc6\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\xf1\xff\x04\x00\x00\x00\x48\xef\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x01\x00\x00\x00\x5c\xf6\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x04\x00\x00\x00\x6c\xf6\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\xd1\x01\x00\x00\x6c\xf6\x00\x00\x90\x01\x00\x00\x02\x00\x0e\x00\x01\x00\x00\x00\xe4\xf7\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x04\x00\x00\x00\xfc\xf7\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\xdb\x01\x00\x00\xfc\xf7\x00\x00\x3c\x00\x00\x00\x02\x00\x0e\x00\x01\x00\x00\x00\x34\xf8\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x04\x00\x00\x00\x38\xf8\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x01\x00\x00\x00\x20\xfb\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x04\x00\x00\x00\x24\xfb\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x01\x00\x00\x00\xcc\x26\x01\x00\x00\x00\x00\x00\x00\x00\x10\x00\xe5\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\xf1\xff\x04\x00\x00\x00\x00\xfc\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x01\x00\x00\x00\x30\x01\x01\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x01\x00\x00\x00\x90\x27\x01\x00\x00\x00\x00\x00\x00\x00\x10\x00\xef\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\xf1\xff\x04\x00\x00\x00\x40\x01\x01\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x01\x00\x00\x00\xa0\x01\x01\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x04\x00\x00\x00\xa4\x01\x01\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x01\x00\x00\x00\xb0\x02\x01\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x04\x00\x00\x00\xc4\x02\x01\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x01\x00\x00\x00\xb4\x03\x01\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x01\x00\x00\x00\xac\x27\x01\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\xf1\xff\x04\x00\x00\x00\xcc\x03\x01\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x01\x00\x00\x00\xcc\x04\x01\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x01\x00\x00\x00\x90\x28\x01\x00\x00\x00\x00\x00\x00\x00\x10\x00\x0b\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\xf1\xff\x04\x00\x00\x00\xd8\x04\x01\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x1c\x02\x00\x00\xd8\x04\x01\x00\x68\x00\x00\x00\x02\x00\x0e\x00\x01\x00\x00\x00\x3c\x05\x01\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x04\x00\x00\x00\x40\x05\x01\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x33\x02\x00\x00\x40\x05\x01\x00\x40\x00\x00\x00\x02\x00\x0e\x00\x4b\x02\x00\x00\x80\x05\x01\x00\xb8\x00\x00\x00\x02\x00\x0e\x00\x01\x00\x00\x00\x34\x06\x01\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x04\x00\x00\x00\x38\x06\x01\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x01\x00\x00\x00\x94\x06\x01\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x04\x00\x00\x00\xa0\x06\x01\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x01\x00\x00\x00\x68\x29\x01\x00\x00\x00\x00\x00\x00\x00\x10\x00\x04\x00\x00\x00\x40\x07\x01\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x61\x02\x00\x00\x40\x07\x01\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x79\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf1\xff\x04\x00\x00\x00\x4c\x09\x01\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x04\x00\x00\x00\x5c\x09\x01\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x01\x00\x00\x00\xb4\x09\x01\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x04\x00\x00\x00\xbc\x09\x01\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x17\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\xf1\xff\x01\x00\x00\x00\x80\x29\x01\x00\x00\x00\x00\x00\x00\x00\x12\x00\x7f\x02\x00\x00\x80\x29\x01\x00\x00\x00\x00\x00\x01\x00\x12\x00\x01\x00\x00\x00\x8c\xa9\x01\x00\x00\x00\x00\x00\x00\x00\x15\x00\x8d\x02\x00\x00\x8c\xa9\x01\x00\x00\x00\x00\x00\x01\x00\x15\x00\x99\x02\x00\x00\x88\xa9\x01\x00\x00\x00\x00\x00\x00\x00\x13\x00\xaa\x02\x00\x00\xfc\xa9\x01\x00\x00\x00\x00\x00\x01\x00\x17\x00\xb3\x02\x00\x00\x84\xa9\x01\x00\x00\x00\x00\x00\x00\x00\x13\x00\xc6\x02\x00\x00\xec\xaa\x01\x00\x00\x00\x00\x00\x01\x00\x18\x00\x04\x00\x00\x00\x64\x8d\x00\x00\x00\x00\x00\x00\x00\x00\x0d\x00\x01\x00\x00\x00\x74\x8d\x00\x00\x00\x00\x00\x00\x00\x00\x0d\x00\x04\x00\x00\x00\x78\x8d\x00\x00\x00\x00\x00\x00\x00\x00\x0d\x00\xdc\x02\x00\x00\x40\x01\x01\x00\x64\x00\x00\x00\x12\x00\x0e\x00\xe8\x02\x00\x00\xbc\x09\x01\x00\x04\x00\x00\x00\x12\x00\x0e\x00\xf8\x02\x00\x00\xf4\xcd\x00\x00\x54\x01\x00\x00\x12\x00\x0e\x00\x14\x03\x00\x00\x78\x8d\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x26\x03\x00\x00\x84\x8d\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x38\x03\x00\x00\x90\x8d\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x49\x03\x00\x00\x48\xef\x00\x00\x24\x07\x00\x00\x12\x00\x0e\x00\x59\x03\x00\x00\x40\x07\x01\x00\x00\x00\x00\x00\x12\x02\x0e\x00\x67\x03\x00\x00\x9c\x8d\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x79\x03\x00\x00\xfc\xe9\x00\x00\x84\x00\x00\x00\x12\x00\x0e\x00\x8a\x03\x00\x00\x80\xea\x00\x00\x30\x00\x00\x00\x12\x00\x0e\x00\x9a\x03\x00\x00\xa8\x8d\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\xac\x03\x00\x00\xb4\x8d\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\xc2\x03\x00\x00\xec\xab\x01\x00\x00\x00\x00\x00\x20\x00\x19\x00\xcd\x03\x00\x00\xc0\x8d\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\xdf\x03\x00\x00\xf4\xab\x01\x00\x00\x00\x00\x00\x10\x00\xf1\xff\xed\x03\x00\x00\x90\xfb\x00\x00\x70\x00\x00\x00\x12\x00\x0e\x00\xfe\x03\x00\x00\xcc\x8d\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x0e\x04\x00\x00\xd8\x8d\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x28\x04\x00\x00\xe4\x8d\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x3b\x04\x00\x00\xf0\x8d\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x4b\x04\x00\x00\xfc\x8d\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x63\x04\x00\x00\x6c\xbd\x00\x00\x30\x03\x00\x00\x12\x00\x0e\x00\x74\x04\x00\x00\x08\x8e\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x86\x04\x00\x00\xf8\xab\x01\x00\x00\x00\x00\x00\x10\x00\xf1\xff\x91\x04\x00\x00\xf4\xab\x01\x00\x00\x00\x00\x00\x10\x00\xf1\xff\x98\x04\x00\x00\x14\x8e\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\xa8\x04\x00\x00\x3c\xae\x00\x00\x68\x00\x00\x00\x12\x00\x0e\x00\xb6\x04\x00\x00\x10\xbc\x00\x00\x28\x00\x00\x00\x12\x00\x0e\x00\xc6\x04\x00\x00\x38\x93\x00\x00\xe8\x00\x00\x00\x12\x00\x0e\x00\xcf\x04\x00\x00\x7c\xdf\x00\x00\x18\x01\x00\x00\x12\x00\x0e\x00\xe6\x04\x00\x00\x20\x8e\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\xf8\x04\x00\x00\x2c\x8e\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x0a\x05\x00\x00\x38\x06\x01\x00\x68\x00\x00\x00\x12\x00\x0e\x00\x19\x05\x00\x00\x38\x8e\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x2a\x05\x00\x00\xc0\x09\x01\x00\x00\x00\x00\x00\x12\x00\x0f\x00\x30\x05\x00\x00\xf8\xab\x01\x00\x00\x00\x00\x00\x10\x00\xf1\xff\x3c\x05\x00\x00\x44\x8e\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x50\x05\x00\x00\x38\xbb\x00\x00\x4c\x00\x00\x00\x12\x00\x0e\x00\x5d\x05\x00\x00\xa8\xd5\x00\x00\xa0\x01\x00\x00\x12\x00\x0e\x00\x78\x05\x00\x00\x50\x8e\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x8b\x05\x00\x00\xfc\xc2\x00\x00\x8c\x00\x00\x00\x12\x00\x0e\x00\xa8\x05\x00\x00\xd0\xe3\x00\x00\xe8\x03\x00\x00\x12\x00\x0e\x00\xb8\x05\x00\x00\xac\xca\x00\x00\x1c\x02\x00\x00\x12\x00\x0e\x00\xcf\x05\x00\x00\x5c\x8e\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\xe1\x05\x00\x00\x48\xd7\x00\x00\x44\x01\x00\x00\x12\x00\x0e\x00\xf8\x05\x00\x00\x68\x8e\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x08\x06\x00\x00\x58\xc1\x00\x00\x8c\x00\x00\x00\x12\x00\x0e\x00\x1f\x06\x00\x00\xc8\xcc\x00\x00\x2c\x01\x00\x00\x12\x00\x0e\x00\x36\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11\x00\x00\x00\x48\x06\x00\x00\x34\xd3\x00\x00\x74\x02\x00\x00\x12\x00\x0e\x00\x69\x06\x00\x00\x74\x8e\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x7b\x06\x00\x00\x80\x8e\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x91\x06\x00\x00\x40\xd2\x00\x00\xf4\x00\x00\x00\x12\x00\x0e\x00\xb4\x06\x00\x00\x00\xfc\x00\x00\x40\x05\x00\x00\x12\x00\x0e\x00\xbd\x06\x00\x00\xc8\xbc\x00\x00\x50\x00\x00\x00\x12\x00\x0e\x00\xca\x06\x00\x00\x4c\x09\x01\x00\x10\x00\x00\x00\x22\x02\x0e\x00\xd8\x06\x00\x00\x88\xc3\x00\x00\xc0\x01\x00\x00\x12\x00\x0e\x00\xeb\x06\x00\x00\xec\xab\x01\x00\x00\x00\x00\x00\x10\x00\x19\x00\xf8\x06\x00\x00\x8c\x8e\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x08\x07\x00\x00\x38\xbc\x00\x00\x90\x00\x00\x00\x12\x00\x0e\x00\x14\x07\x00\x00\x98\x8e\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x26\x07\x00\x00\x94\xe0\x00\x00\x3c\x03\x00\x00\x12\x00\x0e\x00\x33\x07\x00\x00\xa4\x8e\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x50\x07\x00\x00\xd4\xb1\x00\x00\x64\x09\x00\x00\x12\x00\x0e\x00\x64\x07\x00\x00\xa0\xb1\x00\x00\x34\x00\x00\x00\x12\x00\x0e\x00\x76\x07\x00\x00\xec\x06\x01\x00\x54\x00\x00\x00\x12\x00\x0e\x00\x90\x07\x00\x00\xc4\x02\x01\x00\x08\x01\x00\x00\x12\x00\x0e\x00\x98\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\xa7\x07\x00\x00\x40\x07\x01\x00\xec\x01\x00\x00\x12\x02\x0e\x00\xb1\x07\x00\x00\xf0\xab\x01\x00\x00\x00\x00\x00\x11\x02\x19\x00\xbe\x07\x00\x00\xbc\x8e\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\xd7\x07\x00\x00\xc8\x09\x01\x00\x04\x00\x00\x00\x11\x00\x10\x00\xe6\x07\x00\x00\xc8\x8e\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\xf9\x07\x00\x00\xd4\x8e\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x0b\x08\x00\x00\xe0\x8e\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x1d\x08\x00\x00\xa0\x06\x01\x00\x4c\x00\x00\x00\x12\x00\x0e\x00\x30\x08\x00\x00\x38\xf8\x00\x00\xec\x02\x00\x00\x12\x00\x0e\x00\x39\x08\x00\x00\xcc\x03\x01\x00\x0c\x01\x00\x00\x12\x00\x0e\x00\x48\x08\x00\x00\xec\x8e\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x5b\x08\x00\x00\xb0\xea\x00\x00\xe8\x00\x00\x00\x12\x00\x0e\x00\x67\x08\x00\x00\x5c\x09\x01\x00\x60\x00\x00\x00\x12\x00\x0e\x00\x77\x08\x00\x00\xf8\x8e\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x93\x08\x00\x00\x04\x8f\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\xaa\x08\x00\x00\x10\x8f\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\xbe\x08\x00\x00\x1c\x8f\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\xd9\x08\x00\x00\x28\x8f\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\xed\x08\x00\x00\x34\x8f\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\xfd\x08\x00\x00\x18\xbd\x00\x00\x54\x00\x00\x00\x12\x00\x0e\x00\x11\x09\x00\x00\x40\x8f\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x23\x09\x00\x00\xf8\xab\x01\x00\x00\x00\x00\x00\x10\x00\xf1\xff\x28\x09\x00\x00\x4c\x8f\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x3b\x09\x00\x00\x58\x8f\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x4e\x09\x00\x00\x0c\x90\x00\x00\x00\x00\x00\x00\x12\x00\x0e\x00\x55\x09\x00\x00\xc0\xc7\x00\x00\x0c\x01\x00\x00\x12\x00\x0e\x00\x6f\x09\x00\x00\xe4\xc1\x00\x00\x8c\x00\x00\x00\x12\x00\x0e\x00\x8a\x09\x00\x00\x64\x8f\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x9b\x09\x00\x00\x98\xeb\x00\x00\xb0\x03\x00\x00\x12\x00\x0e\x00\xb3\x09\x00\x00\xf8\xab\x01\x00\x00\x00\x00\x00\x10\x00\xf1\xff\xbb\x09\x00\x00\x84\xbb\x00\x00\x50\x00\x00\x00\x12\x00\x0e\x00\xcb\x09\x00\x00\x44\xc6\x00\x00\x7c\x01\x00\x00\x12\x00\x0e\x00\xe8\x09\x00\x00\x4c\x09\x01\x00\x10\x00\x00\x00\x22\x02\x0e\x00\xf6\x09\x00\x00\x24\xda\x00\x00\x48\x02\x00\x00\x12\x00\x0e\x00\x06\x0a\x00\x00\x8c\xd8\x00\x00\x98\x01\x00\x00\x12\x00\x0e\x00\x25\x0a\x00\x00\x48\xcf\x00\x00\xf8\x02\x00\x00\x12\x00\x0e\x00\x45\x0a\x00\x00\xf4\xab\x01\x00\x00\x00\x00\x00\x10\x00\xf1\xff\x51\x0a\x00\x00\xb0\x96\x00\x00\x98\x15\x00\x00\x12\x00\x0e\x00\x56\x0a\x00\x00\x5c\xde\x00\x00\x20\x01\x00\x00\x12\x00\x0e\x00\x6f\x0a\x00\x00\x70\x8f\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x81\x0a\x00\x00\x24\xfb\x00\x00\x6c\x00\x00\x00\x12\x00\x0e\x00\x8a\x0a\x00\x00\x7c\x8f\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\xa1\x0a\x00\x00\x70\xc2\x00\x00\x8c\x00\x00\x00\x12\x00\x0e\x00\xba\x0a\x00\x00\xa4\xae\x00\x00\xfc\x02\x00\x00\x12\x00\x0e\x00\xcd\x0a\x00\x00\x2c\x09\x01\x00\x20\x00\x00\x00\x12\x02\x0e\x00\xde\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11\x00\x00\x00\xf5\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x09\x0b\x00\x00\xd4\xbb\x00\x00\x3c\x00\x00\x00\x12\x00\x0e\x00\x1c\x0b\x00\x00\x88\x8f\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x33\x0b\x00\x00\x74\xdd\x00\x00\xe8\x00\x00\x00\x12\x00\x0e\x00\x46\x0b\x00\x00\x94\x8f\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x5e\x0b\x00\x00\xa0\x8f\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x75\x0b\x00\x00\xac\x8f\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x87\x0b\x00\x00\xa4\x01\x01\x00\x20\x01\x00\x00\x12\x00\x0e\x00\x91\x0b\x00\x00\xb8\x8f\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\xa6\x0b\x00\x00\xcc\xc8\x00\x00\xe0\x01\x00\x00\x12\x00\x0e\x00\xba\x0b\x00\x00\xc4\x8f\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\xd4\x0b\x00\x00\xd0\x8f\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\xe7\x0b\x00\x00\xdc\x8f\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\xf8\x0b\x00\x00\x48\xc5\x00\x00\xfc\x00\x00\x00\x12\x00\x0e\x00\x13\x0c\x00\x00\x6c\xdc\x00\x00\x08\x01\x00\x00\x12\x00\x0e\x00\x26\x0c\x00\x00\x58\x8d\x00\x00\x00\x00\x00\x00\x12\x00\x0c\x00\x2c\x0c\x00\x00\xe8\x8f\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x3d\x0c\x00\x00\x9c\xc0\x00\x00\x98\x00\x00\x00\x12\x00\x0e\x00\x50\x0c\x00\x00\xf4\x8f\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x60\x0c\x00\x00\x00\x90\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x00\x24\x64\x00\x24\x61\x00\x63\x61\x6c\x6c\x5f\x67\x6d\x6f\x6e\x5f\x73\x74\x61\x72\x74\x00\x63\x72\x74\x73\x74\x75\x66\x66\x2e\x63\x00\x5f\x5f\x4a\x43\x52\x5f\x4c\x49\x53\x54\x5f\x5f\x00\x5f\x5f\x64\x6f\x5f\x67\x6c\x6f\x62\x61\x6c\x5f\x64\x74\x6f\x72\x73\x5f\x61\x75\x78\x00\x63\x6f\x6d\x70\x6c\x65\x74\x65\x64\x2e\x35\x36\x33\x37\x00\x5f\x5f\x64\x6f\x5f\x67\x6c\x6f\x62\x61\x6c\x5f\x64\x74\x6f\x72\x73\x5f\x61\x75\x78\x5f\x66\x69\x6e\x69\x5f\x61\x72\x72\x61\x79\x5f\x65\x6e\x74\x72\x79\x00\x66\x72\x61\x6d\x65\x5f\x64\x75\x6d\x6d\x79\x00\x5f\x5f\x66\x72\x61\x6d\x65\x5f\x64\x75\x6d\x6d\x79\x5f\x69\x6e\x69\x74\x5f\x61\x72\x72\x61\x79\x5f\x65\x6e\x74\x72\x79\x00\x75\x70\x6e\x70\x63\x2e\x63\x00\x44\x69\x73\x70\x6c\x61\x79\x49\x6e\x66\x6f\x73\x00\x53\x65\x74\x52\x65\x64\x69\x72\x65\x63\x74\x41\x6e\x64\x54\x65\x73\x74\x00\x70\x72\x6f\x74\x6f\x5f\x74\x63\x70\x2e\x32\x38\x30\x33\x00\x70\x72\x6f\x74\x6f\x5f\x75\x64\x70\x2e\x32\x38\x30\x34\x00\x6d\x69\x6e\x69\x75\x70\x6e\x70\x63\x2e\x63\x00\x62\x75\x69\x6c\x64\x5f\x61\x62\x73\x6f\x6c\x75\x74\x65\x5f\x75\x72\x6c\x00\x4d\x53\x65\x61\x72\x63\x68\x4d\x73\x67\x46\x6d\x74\x2e\x33\x39\x37\x33\x00\x64\x65\x76\x69\x63\x65\x4c\x69\x73\x74\x2e\x34\x30\x32\x33\x00\x64\x65\x76\x69\x63\x65\x4c\x69\x73\x74\x2e\x34\x30\x33\x32\x00\x75\x70\x6e\x70\x63\x6f\x6d\x6d\x61\x6e\x64\x73\x2e\x63\x00\x6d\x79\x5f\x61\x74\x6f\x75\x69\x00\x75\x70\x6e\x70\x65\x72\x72\x6f\x72\x73\x2e\x63\x00\x63\x6f\x6e\x6e\x65\x63\x74\x68\x6f\x73\x74\x70\x6f\x72\x74\x2e\x63\x00\x70\x6f\x72\x74\x6c\x69\x73\x74\x69\x6e\x67\x70\x61\x72\x73\x65\x2e\x63\x00\x61\x74\x6f\x75\x69\x00\x65\x6e\x64\x65\x6c\x74\x00\x64\x61\x74\x61\x00\x73\x74\x61\x72\x74\x65\x6c\x74\x00\x65\x6c\x65\x6d\x65\x6e\x74\x73\x00\x72\x65\x63\x65\x69\x76\x65\x64\x61\x74\x61\x2e\x63\x00\x6d\x69\x6e\x69\x73\x73\x64\x70\x63\x2e\x63\x00\x6d\x69\x6e\x69\x77\x67\x65\x74\x2e\x63\x00\x6d\x69\x6e\x69\x77\x67\x65\x74\x33\x00\x6d\x69\x6e\x69\x77\x67\x65\x74\x32\x00\x6d\x69\x6e\x69\x78\x6d\x6c\x2e\x63\x00\x69\x67\x64\x5f\x64\x65\x73\x63\x5f\x70\x61\x72\x73\x65\x2e\x63\x00\x6d\x69\x6e\x69\x73\x6f\x61\x70\x2e\x63\x00\x75\x70\x6e\x70\x72\x65\x70\x6c\x79\x70\x61\x72\x73\x65\x2e\x63\x00\x4e\x61\x6d\x65\x56\x61\x6c\x75\x65\x50\x61\x72\x73\x65\x72\x47\x65\x74\x44\x61\x74\x61\x00\x4e\x61\x6d\x65\x56\x61\x6c\x75\x65\x50\x61\x72\x73\x65\x72\x53\x74\x61\x72\x74\x45\x6c\x74\x00\x4e\x61\x6d\x65\x56\x61\x6c\x75\x65\x50\x61\x72\x73\x65\x72\x45\x6e\x64\x45\x6c\x74\x00\x2e\x75\x64\x69\x76\x73\x69\x33\x5f\x73\x6b\x69\x70\x5f\x64\x69\x76\x30\x5f\x74\x65\x73\x74\x00\x73\x68\x69\x66\x74\x00\x5f\x5f\x46\x52\x41\x4d\x45\x5f\x45\x4e\x44\x5f\x5f\x00\x5f\x5f\x4a\x43\x52\x5f\x45\x4e\x44\x5f\x5f\x00\x5f\x5f\x69\x6e\x69\x74\x5f\x61\x72\x72\x61\x79\x5f\x65\x6e\x64\x00\x5f\x44\x59\x4e\x41\x4d\x49\x43\x00\x5f\x5f\x69\x6e\x69\x74\x5f\x61\x72\x72\x61\x79\x5f\x73\x74\x61\x72\x74\x00\x5f\x47\x4c\x4f\x42\x41\x4c\x5f\x4f\x46\x46\x53\x45\x54\x5f\x54\x41\x42\x4c\x45\x5f\x00\x49\x47\x44\x73\x74\x61\x72\x74\x65\x6c\x74\x00\x5f\x5f\x6c\x69\x62\x63\x5f\x63\x73\x75\x5f\x66\x69\x6e\x69\x00\x55\x50\x4e\x50\x5f\x44\x65\x6c\x65\x74\x65\x50\x6f\x72\x74\x4d\x61\x70\x70\x69\x6e\x67\x52\x61\x6e\x67\x65\x00\x63\x61\x6c\x6c\x6f\x63\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x34\x00\x73\x74\x72\x73\x74\x72\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x34\x00\x72\x61\x69\x73\x65\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x34\x00\x67\x65\x74\x48\x54\x54\x50\x52\x65\x73\x70\x6f\x6e\x73\x65\x00\x5f\x5f\x61\x65\x61\x62\x69\x5f\x75\x69\x64\x69\x76\x00\x73\x74\x72\x63\x6d\x70\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x34\x00\x50\x61\x72\x73\x65\x50\x6f\x72\x74\x4c\x69\x73\x74\x69\x6e\x67\x00\x46\x72\x65\x65\x50\x6f\x72\x74\x4c\x69\x73\x74\x69\x6e\x67\x00\x73\x74\x72\x74\x6f\x6c\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x34\x00\x73\x65\x74\x73\x6f\x63\x6b\x6f\x70\x74\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x34\x00\x64\x61\x74\x61\x5f\x73\x74\x61\x72\x74\x00\x70\x72\x69\x6e\x74\x66\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x34\x00\x5f\x5f\x62\x73\x73\x5f\x73\x74\x61\x72\x74\x5f\x5f\x00\x6d\x69\x6e\x69\x77\x67\x65\x74\x5f\x67\x65\x74\x61\x64\x64\x72\x00\x72\x65\x61\x64\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x34\x00\x69\x66\x5f\x69\x6e\x64\x65\x78\x74\x6f\x6e\x61\x6d\x65\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x34\x00\x6d\x65\x6d\x6d\x6f\x76\x65\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x34\x00\x66\x72\x65\x65\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x34\x00\x67\x61\x69\x5f\x73\x74\x72\x65\x72\x72\x6f\x72\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x34\x00\x55\x50\x4e\x50\x5f\x47\x65\x74\x56\x61\x6c\x69\x64\x49\x47\x44\x00\x6d\x65\x6d\x63\x70\x79\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x34\x00\x5f\x62\x73\x73\x5f\x65\x6e\x64\x5f\x5f\x00\x5f\x65\x64\x61\x74\x61\x00\x74\x69\x6d\x65\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x34\x00\x70\x61\x72\x73\x65\x72\x6f\x6f\x74\x64\x65\x73\x63\x00\x66\x72\x65\x65\x55\x50\x4e\x50\x44\x65\x76\x6c\x69\x73\x74\x00\x70\x72\x6f\x74\x6f\x66\x69\x78\x00\x55\x50\x4e\x50\x5f\x47\x65\x74\x50\x69\x6e\x68\x6f\x6c\x65\x50\x61\x63\x6b\x65\x74\x73\x00\x6d\x65\x6d\x63\x6d\x70\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x34\x00\x73\x65\x6c\x65\x63\x74\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x34\x00\x50\x61\x72\x73\x65\x4e\x61\x6d\x65\x56\x61\x6c\x75\x65\x00\x63\x74\x69\x6d\x65\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x34\x00\x5f\x66\x69\x6e\x69\x00\x5f\x5f\x62\x73\x73\x5f\x65\x6e\x64\x5f\x5f\x00\x72\x65\x63\x76\x66\x72\x6f\x6d\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x34\x00\x75\x70\x6e\x70\x44\x69\x73\x63\x6f\x76\x65\x72\x00\x55\x50\x4e\x50\x5f\x47\x65\x74\x4c\x69\x73\x74\x4f\x66\x50\x6f\x72\x74\x4d\x61\x70\x70\x69\x6e\x67\x73\x00\x72\x65\x61\x6c\x6c\x6f\x63\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x34\x00\x55\x50\x4e\x50\x5f\x47\x65\x74\x54\x6f\x74\x61\x6c\x50\x61\x63\x6b\x65\x74\x73\x52\x65\x63\x65\x69\x76\x65\x64\x00\x63\x6f\x6e\x6e\x65\x63\x74\x68\x6f\x73\x74\x70\x6f\x72\x74\x00\x55\x50\x4e\x50\x5f\x41\x64\x64\x41\x6e\x79\x50\x6f\x72\x74\x4d\x61\x70\x70\x69\x6e\x67\x00\x70\x65\x72\x72\x6f\x72\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x34\x00\x55\x50\x4e\x50\x5f\x47\x65\x74\x46\x69\x72\x65\x77\x61\x6c\x6c\x53\x74\x61\x74\x75\x73\x00\x70\x6f\x6c\x6c\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x34\x00\x55\x50\x4e\x50\x5f\x47\x65\x74\x54\x6f\x74\x61\x6c\x42\x79\x74\x65\x73\x53\x65\x6e\x74\x00\x55\x50\x4e\x50\x5f\x44\x65\x6c\x65\x74\x65\x50\x6f\x72\x74\x4d\x61\x70\x70\x69\x6e\x67\x00\x73\x74\x64\x65\x72\x72\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x34\x00\x55\x50\x4e\x50\x5f\x47\x65\x74\x53\x70\x65\x63\x69\x66\x69\x63\x50\x6f\x72\x74\x4d\x61\x70\x70\x69\x6e\x67\x45\x6e\x74\x72\x79\x00\x66\x77\x72\x69\x74\x65\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x34\x00\x67\x65\x74\x73\x6f\x63\x6b\x6f\x70\x74\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x34\x00\x55\x50\x4e\x50\x5f\x47\x65\x74\x50\x6f\x72\x74\x4d\x61\x70\x70\x69\x6e\x67\x4e\x75\x6d\x62\x65\x72\x4f\x66\x45\x6e\x74\x72\x69\x65\x73\x00\x70\x61\x72\x73\x65\x78\x6d\x6c\x00\x46\x72\x65\x65\x55\x50\x4e\x50\x55\x72\x6c\x73\x00\x5f\x5f\x61\x65\x61\x62\x69\x5f\x6c\x64\x69\x76\x30\x00\x55\x50\x4e\x50\x5f\x47\x65\x74\x53\x74\x61\x74\x75\x73\x49\x6e\x66\x6f\x00\x5f\x5f\x64\x61\x74\x61\x5f\x73\x74\x61\x72\x74\x00\x70\x75\x74\x73\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x34\x00\x47\x65\x74\x55\x50\x4e\x50\x55\x72\x6c\x73\x00\x6d\x61\x6c\x6c\x6f\x63\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x34\x00\x73\x74\x72\x75\x70\x6e\x70\x65\x72\x72\x6f\x72\x00\x5f\x5f\x6c\x69\x62\x63\x5f\x73\x74\x61\x72\x74\x5f\x6d\x61\x69\x6e\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x34\x00\x75\x70\x6e\x70\x44\x69\x73\x63\x6f\x76\x65\x72\x44\x65\x76\x69\x63\x65\x73\x00\x73\x69\x6d\x70\x6c\x65\x55\x50\x6e\x50\x63\x6f\x6d\x6d\x61\x6e\x64\x00\x47\x65\x74\x56\x61\x6c\x75\x65\x46\x72\x6f\x6d\x4e\x61\x6d\x65\x56\x61\x6c\x75\x65\x4c\x69\x73\x74\x00\x49\x47\x44\x64\x61\x74\x61\x00\x5f\x5f\x67\x6d\x6f\x6e\x5f\x73\x74\x61\x72\x74\x5f\x5f\x00\x5f\x5f\x75\x64\x69\x76\x73\x69\x33\x00\x5f\x5f\x64\x73\x6f\x5f\x68\x61\x6e\x64\x6c\x65\x00\x5f\x5f\x63\x74\x79\x70\x65\x5f\x62\x5f\x6c\x6f\x63\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x34\x00\x5f\x49\x4f\x5f\x73\x74\x64\x69\x6e\x5f\x75\x73\x65\x64\x00\x73\x74\x72\x74\x6f\x75\x6c\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x34\x00\x73\x74\x72\x6c\x65\x6e\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x34\x00\x73\x74\x72\x63\x68\x72\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x34\x00\x43\x6c\x65\x61\x72\x4e\x61\x6d\x65\x56\x61\x6c\x75\x65\x4c\x69\x73\x74\x00\x70\x61\x72\x73\x65\x55\x52\x4c\x00\x73\x6f\x61\x70\x50\x6f\x73\x74\x53\x75\x62\x6d\x69\x74\x00\x66\x70\x72\x69\x6e\x74\x66\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x34\x00\x72\x65\x63\x65\x69\x76\x65\x64\x61\x74\x61\x00\x5f\x5f\x6c\x69\x62\x63\x5f\x63\x73\x75\x5f\x69\x6e\x69\x74\x00\x5f\x5f\x65\x72\x72\x6e\x6f\x5f\x6c\x6f\x63\x61\x74\x69\x6f\x6e\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x34\x00\x73\x74\x72\x6e\x63\x61\x73\x65\x63\x6d\x70\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x34\x00\x73\x6e\x70\x72\x69\x6e\x74\x66\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x34\x00\x5f\x5f\x69\x73\x6f\x63\x39\x39\x5f\x73\x73\x63\x61\x6e\x66\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x37\x00\x5f\x5f\x73\x74\x72\x64\x75\x70\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x34\x00\x62\x69\x6e\x64\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x34\x00\x55\x50\x4e\x50\x49\x47\x44\x5f\x49\x73\x43\x6f\x6e\x6e\x65\x63\x74\x65\x64\x00\x6d\x65\x6d\x73\x65\x74\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x34\x00\x5f\x65\x6e\x64\x00\x70\x75\x74\x63\x68\x61\x72\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x34\x00\x73\x74\x72\x6e\x63\x70\x79\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x34\x00\x5f\x73\x74\x61\x72\x74\x00\x55\x50\x4e\x50\x5f\x47\x65\x74\x45\x78\x74\x65\x72\x6e\x61\x6c\x49\x50\x41\x64\x64\x72\x65\x73\x73\x00\x55\x50\x4e\x50\x5f\x47\x65\x74\x54\x6f\x74\x61\x6c\x42\x79\x74\x65\x73\x52\x65\x63\x65\x69\x76\x65\x64\x00\x77\x72\x69\x74\x65\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x34\x00\x67\x65\x74\x44\x65\x76\x69\x63\x65\x73\x46\x72\x6f\x6d\x4d\x69\x6e\x69\x53\x53\x44\x50\x44\x00\x5f\x5f\x65\x6e\x64\x5f\x5f\x00\x75\x70\x6e\x70\x44\x69\x73\x63\x6f\x76\x65\x72\x41\x6c\x6c\x00\x55\x50\x4e\x50\x5f\x47\x65\x74\x4c\x69\x6e\x6b\x4c\x61\x79\x65\x72\x4d\x61\x78\x42\x69\x74\x52\x61\x74\x65\x73\x00\x5f\x5f\x61\x65\x61\x62\x69\x5f\x69\x64\x69\x76\x30\x00\x55\x50\x4e\x50\x5f\x41\x64\x64\x50\x69\x6e\x68\x6f\x6c\x65\x00\x55\x50\x4e\x50\x5f\x47\x65\x74\x4f\x75\x74\x62\x6f\x75\x6e\x64\x50\x69\x6e\x68\x6f\x6c\x65\x54\x69\x6d\x65\x6f\x75\x74\x00\x55\x50\x4e\x50\x5f\x47\x65\x74\x47\x65\x6e\x65\x72\x69\x63\x50\x6f\x72\x74\x4d\x61\x70\x70\x69\x6e\x67\x45\x6e\x74\x72\x79\x00\x5f\x5f\x62\x73\x73\x5f\x73\x74\x61\x72\x74\x00\x6d\x61\x69\x6e\x00\x55\x50\x4e\x50\x5f\x43\x68\x65\x63\x6b\x50\x69\x6e\x68\x6f\x6c\x65\x57\x6f\x72\x6b\x69\x6e\x67\x00\x73\x65\x6e\x64\x74\x6f\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x34\x00\x6d\x69\x6e\x69\x77\x67\x65\x74\x00\x67\x65\x74\x6e\x61\x6d\x65\x69\x6e\x66\x6f\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x34\x00\x55\x50\x4e\x50\x5f\x47\x65\x74\x54\x6f\x74\x61\x6c\x50\x61\x63\x6b\x65\x74\x73\x53\x65\x6e\x74\x00\x73\x69\x6d\x70\x6c\x65\x55\x50\x6e\x50\x63\x6f\x6d\x6d\x61\x6e\x64\x32\x00\x5f\x5f\x61\x65\x61\x62\x69\x5f\x75\x69\x64\x69\x76\x6d\x6f\x64\x00\x69\x6e\x36\x61\x64\x64\x72\x5f\x61\x6e\x79\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x34\x00\x5f\x4a\x76\x5f\x52\x65\x67\x69\x73\x74\x65\x72\x43\x6c\x61\x73\x73\x65\x73\x00\x75\x70\x6e\x70\x44\x69\x73\x63\x6f\x76\x65\x72\x44\x65\x76\x69\x63\x65\x00\x67\x65\x74\x73\x6f\x63\x6b\x6e\x61\x6d\x65\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x34\x00\x55\x50\x4e\x50\x5f\x44\x65\x6c\x65\x74\x65\x50\x69\x6e\x68\x6f\x6c\x65\x00\x66\x72\x65\x65\x61\x64\x64\x72\x69\x6e\x66\x6f\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x34\x00\x67\x65\x74\x61\x64\x64\x72\x69\x6e\x66\x6f\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x34\x00\x73\x6f\x63\x6b\x65\x74\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x34\x00\x49\x47\x44\x65\x6e\x64\x65\x6c\x74\x00\x69\x6e\x65\x74\x5f\x61\x64\x64\x72\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x34\x00\x55\x50\x4e\x50\x5f\x41\x64\x64\x50\x6f\x72\x74\x4d\x61\x70\x70\x69\x6e\x67\x00\x69\x66\x5f\x6e\x61\x6d\x65\x74\x6f\x69\x6e\x64\x65\x78\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x34\x00\x73\x74\x72\x6e\x63\x6d\x70\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x34\x00\x61\x62\x6f\x72\x74\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x34\x00\x55\x50\x4e\x50\x5f\x47\x65\x74\x43\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e\x54\x79\x70\x65\x49\x6e\x66\x6f\x00\x55\x50\x4e\x50\x5f\x55\x70\x64\x61\x74\x65\x50\x69\x6e\x68\x6f\x6c\x65\x00\x5f\x69\x6e\x69\x74\x00\x63\x6c\x6f\x73\x65\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x34\x00\x55\x50\x4e\x50\x5f\x47\x65\x74\x49\x47\x44\x46\x72\x6f\x6d\x55\x72\x6c\x00\x73\x65\x6e\x64\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x34\x00\x63\x6f\x6e\x6e\x65\x63\x74\x40\x40\x47\x4c\x49\x42\x43\x5f\x32\x2e\x34\x00" - -func upnpc() ([]byte, error) { - return bindata_read( - _upnpc, - "upnpc", - ) -} - -// Asset loads and returns the asset for the given name. -// It returns an error if the asset could not be found or -// could not be loaded. -func Asset(name string) ([]byte, error) { - cannonicalName := strings.Replace(name, "\\", "/", -1) - if f, ok := _bindata[cannonicalName]; ok { - return f() - } - return nil, fmt.Errorf("Asset %s not found", name) -} - -// AssetNames returns the names of the assets. -func AssetNames() []string { - names := make([]string, 0, len(_bindata)) - for name := range _bindata { - names = append(names, name) - } - return names -} - -// _bindata is a table, holding each asset generator, mapped to its name. -var _bindata = map[string]func() ([]byte, error){ - "upnpc": upnpc, -} -// AssetDir returns the file names below a certain -// directory embedded in the file by go-bindata. -// For example if you run go-bindata on data/... and data contains the -// following hierarchy: -// data/ -// foo.txt -// img/ -// a.png -// b.png -// then AssetDir("data") would return []string{"foo.txt", "img"} -// AssetDir("data/img") would return []string{"a.png", "b.png"} -// AssetDir("foo.txt") and AssetDir("notexist") would return an error -// AssetDir("") will return []string{"data"}. -func AssetDir(name string) ([]string, error) { - node := _bintree - if len(name) != 0 { - cannonicalName := strings.Replace(name, "\\", "/", -1) - pathList := strings.Split(cannonicalName, "/") - for _, p := range pathList { - node = node.Children[p] - if node == nil { - return nil, fmt.Errorf("Asset %s not found", name) - } - } - } - if node.Func != nil { - return nil, fmt.Errorf("Asset %s not found", name) - } - rv := make([]string, 0, len(node.Children)) - for name := range node.Children { - rv = append(rv, name) - } - return rv, nil -} - -type _bintree_t struct { - Func func() ([]byte, error) - Children map[string]*_bintree_t -} -var _bintree = &_bintree_t{nil, map[string]*_bintree_t{ - "upnpc": &_bintree_t{upnpc, map[string]*_bintree_t{ - }}, -}} diff --git a/src/github.com/getlantern/go-igdman/igdman/upnpc_windows.go b/src/github.com/getlantern/go-igdman/igdman/upnpc_windows.go deleted file mode 100644 index d89b36a527..0000000000 --- a/src/github.com/getlantern/go-igdman/igdman/upnpc_windows.go +++ /dev/null @@ -1,237 +0,0 @@ -// Code generated by go-bindata. -// sources: -// binaries/windows/upnpc -// DO NOT EDIT! - -package igdman - -import ( - "bytes" - "compress/gzip" - "fmt" - "io" - "strings" - "os" - "time" - "io/ioutil" - "path" - "path/filepath" -) - -func bindataRead(data, name string) ([]byte, error) { - gz, err := gzip.NewReader(strings.NewReader(data)) - if err != nil { - return nil, fmt.Errorf("Read %q: %v", name, err) - } - - var buf bytes.Buffer - _, err = io.Copy(&buf, gz) - clErr := gz.Close() - - if err != nil { - return nil, fmt.Errorf("Read %q: %v", name, err) - } - if clErr != nil { - return nil, err - } - - return buf.Bytes(), nil -} - -type asset struct { - bytes []byte - info os.FileInfo -} - -type bindataFileInfo struct { - name string - size int64 - mode os.FileMode - modTime time.Time -} - -func (fi bindataFileInfo) Name() string { - return fi.name -} -func (fi bindataFileInfo) Size() int64 { - return fi.size -} -func (fi bindataFileInfo) Mode() os.FileMode { - return fi.mode -} -func (fi bindataFileInfo) ModTime() time.Time { - return fi.modTime -} -func (fi bindataFileInfo) IsDir() bool { - return false -} -func (fi bindataFileInfo) Sys() interface{} { - return nil -} - -var _upnpc = "\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\xc4\xbd\x7b\x60\x13\x55\xf6\x38\x3e\x93\xa4\x6d\x0a\x29\x13\x24\x68\x91\x02\x55\x03\x52\xa9\xd0\x08\xb8\x44\x8a\x06\xda\x50\xd4\x22\x55\xa8\xb0\x02\x8a\xaf\xae\x0f\x74\x59\x98\xf0\x50\x1e\xad\x93\x40\x87\x61\xa0\x2a\xb8\xba\x3e\x56\x16\xdc\xd5\xcf\xaa\xeb\xae\x0a\x15\x15\xd3\x87\x09\x55\xd6\x2d\x85\xd5\x42\x41\xab\xe2\x3a\x31\xa8\x05\xb4\x2d\x05\x9a\xdf\x39\xe7\xce\xa4\x69\xa9\xba\x9f\xcf\xf7\x8f\x5f\x95\xcc\xcc\x7d\x9c\x7b\xee\xb9\xe7\x79\xe7\xde\x3b\xd3\x6f\xa9\xe0\xcc\x1c\xc7\x59\xe0\x5f\x2c\xc6\x71\x95\x1c\xfb\xf3\x70\xbf\xfc\x57\x0a\xff\xfa\x0d\xdb\xd5\x8f\x7b\x23\xf5\x9f\x17\x55\xf2\x85\xff\xbc\x68\xd6\x3d\xf7\x2e\xc9\x5c\xb4\xf8\xb7\xbf\x59\x7c\xfb\x03\x99\x77\xde\xfe\xe0\x83\xbf\x15\x33\xef\xb8\x3b\x73\xb1\xef\xc1\xcc\x7b\x1f\xcc\xcc\x9f\x31\x33\xf3\x81\xdf\xde\x75\xf7\xe8\xb4\xb4\x3e\x4e\x1d\x46\x91\x97\xe3\x0a\x79\x81\x33\x7d\x5c\x51\xcc\x89\x3c\xf7\xb4\x95\xe3\x9a\xb9\x14\xbe\x2f\x6f\x1a\xc4\xd5\x43\x81\x5c\x1e\x1a\x81\x34\x07\xdc\xdb\x39\xcc\x64\xd8\xe1\xbd\x89\xe1\xcd\xeb\xf8\xd3\x5f\x26\x4b\xfc\x21\xc9\x4c\xfd\x82\x04\x56\x16\x7f\xec\xac\x88\x3d\xb1\x13\x8b\x78\xae\xa8\xef\xb9\x7d\x5b\x3e\xd6\xc4\xdd\xd3\xff\x97\x69\x60\xa9\xe0\xb9\xf4\x5e\xd2\x33\x16\xf3\x5c\x25\xff\xd3\xf5\x46\x8b\x77\x2f\x17\xe1\x3a\xee\x5f\x3a\x42\xf5\x89\x9d\x60\x7f\x0b\xb8\xa2\x05\xa3\xef\xba\x5d\xbc\x1d\xee\xef\xc2\x84\x66\x8e\xfa\xcc\x1d\xe8\x5e\xce\xc3\xe5\x04\x47\x2f\x66\x05\xc7\x8d\x83\x84\x16\xf8\x77\x25\xfc\xfb\xb8\x67\xb9\x05\x9e\x31\xe3\xd8\xbd\xfd\x12\xf8\xc9\x01\x04\x71\x20\x6c\x7c\x4f\x78\x9e\xd1\x77\x2c\x59\x82\xf7\xb5\x69\x88\x48\xef\x1d\x29\xe5\x16\x04\x47\xdf\xcb\xda\x25\x1a\x02\x2d\x39\x9b\x0e\xb7\x27\x7e\x79\x37\xcd\xc2\x7b\x6a\xbe\x94\x67\xfd\xc8\xed\xa5\x9c\xb8\x90\xda\xcd\xc4\x9f\x0a\xbd\xdc\xd5\xe7\x96\x1b\xe3\x62\x1d\x59\x8e\x3f\xcf\xeb\xe5\x3c\x3d\xcb\x79\xa6\x8c\xb9\xc2\x4d\xf7\xab\x2f\x80\x9f\xd7\x20\x1f\x07\x6b\x4a\xcf\x72\xf6\x29\x63\xc6\xb9\xe8\x7e\x2f\xc2\xa9\xe7\xd9\x58\xdc\xd2\x4b\xb9\xf1\xe3\xe9\xfe\x0c\x96\x6b\xd6\xcb\xdd\xda\x4b\xb9\x2b\x7f\x45\xf7\x13\xf0\xa7\x45\xc7\xef\x8e\x73\xfa\x31\x65\xcc\x84\x1c\xba\xdf\x8a\x74\xc3\x42\xc0\xeb\xdc\x5d\xbd\xc0\x73\x33\xfc\xee\xc1\x1f\xbb\x89\xc1\x5b\x7c\x6e\x39\xee\x7f\xf9\x77\xb2\x46\x7d\x63\x04\xde\xa8\xef\x5c\x8a\x17\xe9\x58\x86\x2b\x58\x52\x36\x09\xa1\x4d\xbf\x25\x9c\xb4\xe1\xce\xc9\x24\x5f\xe1\xa4\xf2\xf8\x9d\x3f\x7e\x97\xbb\x80\xdd\x89\xf7\x6c\xb3\xc2\xed\xd6\x27\x21\x27\x10\x14\xaf\x0b\x5b\x9c\x88\x9f\xf6\xe7\x1d\x50\xca\xe2\x8c\xc1\x9f\xf6\xa7\xb9\x1c\xa7\x0c\x7c\x11\x4a\x6c\xdb\xfe\x00\xfc\xbc\x08\x3f\x5b\x6b\x17\x4f\xe6\x64\xbb\xb6\x74\x0e\xb4\x3c\x29\xb3\xd9\xc3\xf1\xe2\x03\xae\xa0\x54\x9b\x61\xa0\x05\xb5\xb1\x01\x6d\x1e\x40\x8a\xbe\x51\x52\xa1\x0c\xcc\x05\xcc\xca\x76\x21\x7e\xa8\x3b\xd4\xf5\x78\xe7\x2b\x15\x76\xde\x98\x5e\x52\xd6\xd1\x97\x17\xaf\xc1\x8b\x49\x08\xdc\x07\x8d\x4a\x6f\xf9\xa1\x72\x3f\x61\xed\x7c\x78\x50\x1e\x6d\x87\x07\x57\x30\xd0\x20\x6c\x09\x46\xae\x87\x14\x75\x29\xc2\xaf\xb8\xdf\xc3\x69\xe2\x2d\x98\x85\x0d\x4b\x2b\x44\xa8\x90\x8d\x15\x64\x8d\x55\xa8\xc3\x0a\x17\x42\x4a\x49\x85\x74\x2c\x7b\x6b\x29\xf4\x21\x9c\xef\xb4\x73\x0b\xe8\x6a\x75\xb0\xab\x25\x1d\xae\xdb\x30\x71\xab\x03\x7a\x02\x90\x33\xe0\x5e\xce\x77\xda\xb4\x3f\xbf\xc9\x71\xdb\xec\xf0\x24\xd5\x66\xd7\xa8\x3b\x12\xe8\x5d\xec\x0a\xca\x5f\xbd\x85\x8a\x66\xf6\xcd\x6a\xf1\xf6\x99\xf2\x27\xd2\xb1\x95\x27\xff\xfa\x5a\x8e\xf6\xc5\xdd\x1c\x97\x55\xab\xe6\x3b\x07\x4b\xcd\x2d\x61\x6e\x2f\xfc\x85\x3d\x16\x76\xb1\xb2\x8b\x8d\x5d\xec\xec\xe2\x60\x97\x74\x76\xc9\xc0\x8b\x74\xb4\x45\x19\x4f\x83\xd2\x2a\x04\xca\x60\x48\xee\xda\x8a\xfc\xef\x6a\x55\xe6\x58\x94\x49\xcb\x81\xf8\x51\x87\xbb\x51\xf0\x27\x9b\x88\xd2\x1a\x68\xcc\x18\x20\x60\x91\x5b\x5a\x84\xbf\x0f\x79\xf9\x01\x1c\x4d\xdf\xa7\x5b\x5f\x83\x1b\x57\x93\xd4\xce\x0b\xfe\xef\x61\x34\xe8\x39\x10\x14\xfc\x1e\xac\x96\x64\xd1\x99\x80\x92\xa9\xd0\x51\x78\x0c\x34\x09\x7e\x13\xe4\x6f\xdd\x6b\x27\x9e\xc8\x40\x4a\xd1\x88\x02\xa5\x4c\x6c\x64\xf1\x31\x56\x2f\x1d\xb3\x69\xe3\xe7\x52\xc2\x82\x45\x1e\x2e\x36\x50\x04\xbc\x00\x89\x6d\x2f\x23\x9d\xa1\x94\x1d\xc6\xc7\xff\x06\x30\xc1\x35\xbf\x06\x78\x6f\x40\x6e\x38\xe9\x19\x68\x0b\x47\x5e\x41\xd8\x79\xae\xba\xe8\xf9\x8c\xac\xfe\x06\x31\x27\x50\x27\x5e\xf4\x16\x62\x24\x05\x79\x61\x87\xbd\xb4\x23\x73\xb5\x26\x7f\x28\x9d\xe4\x4b\x3b\x2e\x16\xf2\x3f\x8c\x6a\x50\xa8\x6f\x57\xde\xf1\x6d\x4f\x02\x30\x65\x08\xd1\xa9\x49\x1c\x28\xec\x2c\x3e\x50\xd9\x07\xaa\xb7\x7a\xeb\x79\xc1\x5b\xbd\x8d\x83\xd1\xdc\x4a\x63\xe9\xad\x90\x43\xaa\x25\x80\x32\x2f\x7b\x37\xc8\x40\x31\xcb\xeb\xd0\xd5\x56\x65\x52\x3a\x65\x6f\x16\x36\xce\x80\x86\x5d\x4d\x72\xa7\xce\xbf\x8a\xe5\x39\x2c\xf6\xc0\x3f\x60\xc4\x97\xf3\x72\xae\x53\x6b\x80\x5b\x65\xfa\x66\xd9\xf2\x94\x62\x7b\x4e\xaa\xe1\xe5\x95\x4e\x2b\x14\x91\x0b\x9d\x16\xed\x39\xc8\x9b\x38\xbf\xc2\x57\xa7\x78\x37\x48\x9a\x45\xf1\x6d\x0e\x5b\x92\x11\x8c\x3c\x1e\x1b\xd0\x86\x16\x03\x01\x9e\x07\x02\x28\x03\x91\xe9\x64\xfb\x56\x07\x63\x31\xeb\xd6\x74\x76\x63\x61\x88\x42\x93\x8f\xed\x84\x76\xd2\x50\x2c\x03\x75\xdb\x6c\x70\x11\xfc\xbb\x10\xa1\x81\x38\x5e\x81\x06\x5f\x1f\xad\xe5\x1f\xa8\x77\xe0\x49\xbd\xfb\x87\xb9\xb7\xde\x36\xbf\x06\xe4\x81\x06\xf1\x6d\x22\x1e\x8c\x64\xa0\x7f\x67\x2c\x06\x43\x30\x0c\x45\xb0\xee\x1f\x09\x63\x1c\xc8\xc0\x1c\x68\xcf\x5a\xca\x06\x09\x2e\xda\xa6\x7f\xe0\xb8\x87\x93\xb0\x10\x0e\xb1\x10\xe8\x3c\x1b\x8b\xad\x23\x46\x8a\x9c\x3c\x8b\xf2\x23\x3b\x9c\xb1\x81\x45\x6c\x80\x23\x0f\x42\x12\x2b\xcd\xeb\x8c\x91\xce\xa0\xd9\x10\xda\x64\x80\x16\xf9\x0b\x14\x71\x05\x23\x27\xa0\x35\xe8\x54\x49\x85\x16\xfd\x3b\x50\x52\x1c\xd1\xa5\xaf\x6c\xe1\xa4\x27\x75\x85\xa4\x5d\x0d\x36\x46\xaa\xb5\x45\xfe\x7c\x06\x84\x7b\x47\xb7\x7c\xfc\xd3\x86\xea\xf9\x6b\x21\xbf\x82\xfe\x8a\xe5\xaf\x66\xdf\x3c\x13\xa4\x5a\x19\x9f\xbf\x98\xf5\xa4\x05\x78\xf0\x63\x40\x0f\x39\xfc\x5d\xa4\x7d\x8d\x91\x3a\xf0\x1e\x22\x7d\xa1\xce\x9f\xcf\x3f\xc0\xe4\x7e\x00\xe4\xc9\x19\x4e\xb9\xf8\x68\xac\x41\x3a\x66\x95\xc3\x4a\xf1\x51\x4c\xcf\x62\xe9\x94\xb8\xcd\x02\x4c\x14\x88\x89\xfd\x31\x23\x73\x01\xb5\xb4\x27\x67\x32\x88\xdb\xd6\x05\x98\x13\x14\x27\x40\xca\xe4\xae\xb6\x71\xac\x38\xf1\x7c\x2c\x3e\x03\xe1\x80\x16\xd5\x1b\xb6\xca\xd5\x81\x06\x31\x15\xc5\x05\x6a\xc6\x1a\x10\xbb\xf3\x41\x44\x6e\xbf\x89\x8b\x8f\xa4\xdc\xaa\xd3\x07\xc4\x13\x0a\xe1\xdf\x7b\xf8\x13\x59\x11\x33\x28\xa3\x52\x02\xf4\x5f\x3a\x96\xbe\xd5\xc2\x70\x48\x35\xb0\xaa\xdf\xfa\x3c\xc9\xb8\x68\xa3\x86\x73\x58\x8f\xeb\x6a\x74\x7a\xa9\xff\xb0\x24\x01\x61\x3e\x51\xb7\x8c\x04\x78\x72\x4d\xd9\x31\x34\xe5\xf2\x2c\xe0\x64\xd1\x69\x51\x38\x79\xcb\x51\x36\x60\x9a\x2f\x03\x58\x22\xa8\xd0\xb3\xd8\x0f\xc0\xdf\x05\x9d\xd1\x9e\xf8\x1b\x68\x73\x3b\x94\xb7\x40\xca\x23\x98\xb2\x19\x52\xd4\x40\x0b\x94\x52\xa7\xbf\xa8\x6e\xb9\x07\xc1\x02\x28\xd4\x9e\x8a\x19\x64\xc3\x4e\xc0\xd5\x66\x04\x1b\x07\xbe\xf2\xc2\x2e\xe0\x0a\xe5\x51\x13\x4f\x22\xc0\xb1\xd8\xc4\x50\x85\x40\x42\x7d\x9b\xde\xd8\xab\x48\x4b\x90\x17\xed\x92\xbf\xc5\x55\x50\x59\xd8\x02\x8a\x4f\xdb\xfa\x2a\xc7\x8d\x62\xe5\x03\x67\x10\x11\xfa\xc5\x76\xd6\xb0\xb2\x9f\xb3\xba\x16\xed\xeb\x57\x11\xd9\x1f\x30\x77\x25\xc3\x51\x0d\xb4\xe3\x13\x00\x56\xf2\x50\x9a\xb5\xd5\xd4\x6f\x18\x6e\x8b\xf3\x47\x44\x67\x3b\x54\x89\x58\x80\x48\x0a\x95\x84\xe4\x81\xc7\x75\x68\x4f\x41\x96\xa2\x62\x6a\xd9\xa9\x6b\xa6\x08\xdc\xd2\xf1\xef\x3d\xbf\x96\xe7\xe4\x3d\xae\x86\xb6\xb6\xf7\x50\x11\xb9\x70\x8c\x2f\x87\xf2\xf0\xec\x81\x12\xf2\x1e\xa4\x06\x66\x13\x80\x39\x00\x20\x7a\x49\xd9\xa9\xaf\xa1\x17\x4b\x07\xbf\x87\x5a\x9c\x55\x86\x5a\x13\x8d\x56\xc6\x62\x2b\x84\x33\xa4\x4e\x35\x52\x87\x50\xdb\x3f\xfc\xdf\xdb\x3e\xfc\xca\x7f\xd1\xf6\xce\x57\x88\x7e\x08\x4e\xdb\x06\xf7\x8a\x59\x7d\x97\x33\x46\x98\xa9\x3f\xed\x45\x46\xb0\x34\xac\x00\x65\xe7\x43\xdd\x68\x5f\x24\x2f\x3c\xac\x87\x07\x6d\x31\x54\x2c\xab\x45\x3e\x23\x0e\x2f\xde\xc5\x93\x71\x96\xbf\xba\x79\xa6\xe2\xb3\x82\x44\x0c\x59\x9f\x91\xbc\xbe\x3c\x9d\x9f\xcc\x51\xd6\x84\x0f\x41\xc9\xd7\x65\x4e\x38\x28\x6c\xae\x16\x76\x34\x78\xa4\x76\x8b\xef\x60\xa0\xa1\x12\x0b\xf8\x26\xb9\x82\x54\x28\x5e\xcd\xf1\x4b\xd5\xa8\x00\x72\x8b\x90\x5f\x3d\xf7\x56\x68\x9f\x04\x41\x0e\x95\x1d\x7b\x07\xe1\xd4\x29\xf3\x6d\x8a\xd7\x2e\xf6\x93\x56\x59\x39\xd1\x0a\x76\x04\x64\xd8\x37\x70\xeb\x5e\xa6\x54\xfe\x04\x3d\x90\x82\x1e\xec\x5c\x74\x2c\x6a\xfb\x2d\x8b\xb0\xff\xff\xd2\xc6\xc3\x25\x10\x94\x03\x22\xfa\x1b\x94\xe8\x1b\x62\x54\x7a\xbd\xab\x92\x76\xf8\x65\xe0\x9f\x6b\x40\xa9\xaa\x8f\xa0\xe8\xa9\xc5\x4f\xca\x01\x02\x81\x62\x01\x05\x94\x64\x79\xcb\xc2\x18\x63\xd7\xf9\x83\x99\x58\xe0\x33\x09\xc4\xfb\x48\xbf\x8b\x5f\x4e\x90\x39\xa2\x68\x26\xa4\x48\xab\x32\xc0\x30\x3c\x86\x86\xc1\xeb\x50\xa7\x3f\x02\xfa\x26\x83\x0c\xce\x4a\x10\xb9\x79\x00\xbb\xd0\xe9\x94\x55\x82\x9c\xef\xcc\x54\x08\x4f\xb8\x4b\x57\xbc\xe9\x70\x71\x28\x5e\x2b\x89\x28\xc3\x85\xe1\x01\x18\x2c\x1e\x42\x18\x50\x3d\x01\x4d\x37\xea\x2f\x39\x80\x8f\xda\x52\x70\x64\x19\x6e\x06\x80\x95\x20\x9d\xf3\x08\xad\x2f\x90\x63\x66\x41\xcb\x20\x48\xd1\x15\x80\xd1\x39\xe8\xfc\x2f\x90\xb8\x9f\xc8\x20\x4e\xec\x6a\xfa\x74\xce\x4f\x37\x7d\xe1\x89\xae\xa6\xb5\xe4\xbf\x02\xad\x4c\xf2\x87\xaa\xb7\x5c\x55\x57\xa2\xca\x5c\x15\x04\x54\x32\x75\xff\x85\xa1\x94\xef\x74\xea\xa8\x14\x3a\xd3\x01\x92\x83\x7c\x42\xcc\x61\x88\x1a\x08\x19\xd4\xd3\xd1\x1a\xe3\x44\xb4\xe4\x10\xa3\x8e\x38\x14\xd3\xee\x00\xc4\x74\x75\x67\x05\x5c\x66\x00\x2e\xda\x23\xff\x03\x38\x14\x01\x6c\xab\x2e\x05\xeb\x10\x43\x15\x41\x6a\x25\x90\x07\xb8\x29\xf4\x64\xd0\x06\x8a\x3c\x7f\x82\x24\x2e\x3d\x8e\x97\x83\x94\x93\xf7\x49\xe2\xa1\x9c\xff\x41\x09\x42\x76\x25\x09\xd2\x75\xb9\x0c\xf6\x26\x77\x7d\x7f\x79\xfa\x81\xd2\x8e\x7b\x7c\x57\x94\xae\xe0\x45\x5f\x76\xe9\x0a\x93\xe8\x1b\x51\xba\xc2\xbc\xc8\x97\x59\xba\xc2\x72\x95\xef\xc2\xd2\x15\x49\x63\x7c\x8e\xd2\x15\xc9\x63\x7c\xfd\x64\x1b\xd8\x84\x66\x60\xd2\xc8\xfd\x20\x32\xa5\x13\x38\xc1\xdb\x02\xce\x73\x5d\x4c\x6e\x3b\xf1\x6a\xdb\x3e\xf5\xd7\x31\xe9\x74\xca\xea\x8b\xd5\xa9\x29\x68\xbe\xc6\x40\x83\xe5\xc5\xf5\xa4\x15\x5f\xe2\xb8\xf5\x70\x5b\x95\x75\x1c\xac\xab\xf7\xa0\xb2\xea\x00\xd5\xa3\x5a\x96\x41\xb2\xb7\xde\x15\x2c\xed\x18\x03\xee\x36\xef\xad\x27\x49\xba\x1c\x46\x09\x3d\xc7\x4c\x9e\xd9\x5a\x2b\xa3\x3c\xf4\xa9\x99\x2c\xd3\x61\xb4\xc8\xc5\xf5\x6a\xbe\xc9\x0c\xb5\x15\x2f\x35\xf3\x5b\x68\x46\xae\x26\x4f\xdf\x5f\x87\x4e\x00\x40\x92\x3f\x91\x0f\x9e\xdc\x2e\xf8\x9f\x86\xe7\x90\xe5\x42\x0e\x1c\x11\x84\x9b\xa6\x3b\x1e\x97\x00\x7c\xb9\x78\xaf\x96\xfd\x12\x71\x6e\xf1\x5e\x9f\x8f\x95\xb0\xcc\x47\xad\xf5\xfe\x8b\xfa\xa0\x15\xef\x15\xe7\xc9\x61\x40\xd9\x15\x3c\xf1\xaa\xba\xaa\xb9\x6d\x1f\x8e\x10\x75\x01\x07\x90\x52\xd4\xfc\x7e\x26\x44\xa3\x11\x2a\x95\x84\x93\x87\x5f\x11\x9a\x6a\x1a\x4f\xfd\x84\xea\x50\x6b\xaa\x59\xf5\x61\xc5\xf0\xb5\xae\xe0\xc9\xed\x50\xc5\xa0\xc0\xbc\xbe\x26\xc5\x7b\xa0\x74\xc2\x18\x31\x09\x50\x1c\x93\xa7\x4c\xaf\x57\x2d\x17\x2a\xbe\x03\x72\x58\xae\xcf\x02\xf4\xa5\xda\x5c\xa6\xfc\xc8\x6a\xab\x5e\x1b\x8c\xb9\x8b\x67\x8e\x9f\x76\x7c\x1e\xc7\xd5\xc5\xb3\xec\x88\x7b\x01\xcb\xb3\x22\xab\x03\x42\x9b\xba\x4a\x4c\x43\xba\x7a\xb5\xe0\xed\x10\xa8\x78\x8f\x65\xdd\x81\x97\x96\xa1\x77\xe2\xe5\x07\xe2\x61\xef\x01\xc5\x6b\x93\xbd\xcd\xa0\xd4\x64\xef\x51\xd5\x7b\x00\x01\xac\xbd\x46\x07\x00\x7c\x53\x76\xcc\x96\x8a\x5a\x23\x43\x29\xb6\x2b\x3e\x87\x32\xdf\x5a\x12\x0e\x0c\x6d\xc3\x49\x24\x65\x12\x0e\x4b\x98\xdc\x0e\x35\x70\x4f\x1b\xa9\x29\x9b\xbc\xc5\xd1\x46\x3a\x1f\x51\xb3\xde\xae\x0f\x68\x29\x53\x0e\x10\x76\xac\x4a\x07\xe1\xc4\x22\xbe\x6c\x35\xa0\xb1\xa2\x0e\x12\x49\xd1\x69\xc3\x2a\xbf\xd1\xab\x70\x56\xbd\x4a\xe4\x4b\x8e\xbc\x0e\xbb\xba\x45\x2f\x4f\xe5\xc6\x9b\x12\xca\x39\x9c\xac\xdd\xd8\x27\x0c\x38\x5f\xaf\xac\x4a\x57\xae\x01\x57\xec\x77\x6a\xd1\x5d\xea\x74\xcd\xbd\x4f\x58\x3b\x19\xd8\x58\x2d\xe2\x43\x5c\xae\x7c\x6a\x3d\xef\x0f\x96\x07\xb0\xa8\x3a\x85\x17\xfb\xc9\xd5\xeb\xe9\x61\x72\xf9\x94\x58\xf4\x4b\x65\x7a\x7a\xc8\x74\xb5\x72\xa3\x05\x0c\x47\xda\xfa\x3e\xfe\x3a\x31\xc5\x33\xa5\x7c\x5a\x2c\x7a\x52\x2d\x32\x41\xf5\x90\x87\x1f\xb3\x5e\x80\x8a\x90\x03\x7e\x5a\x01\x66\x7d\x0f\x35\x24\x6f\xba\x35\xba\x56\x2d\xb2\xe8\x65\x42\x1e\x93\x2f\xe4\x31\x5f\xb5\x3e\xd9\x1f\x14\x53\xa6\x4c\x45\xe0\x27\x55\xaf\x86\x68\x1f\x05\xf4\x01\xed\xac\x7a\xe6\xa7\xfc\x19\x69\x98\x89\xe8\xbc\x79\x69\x1b\xf9\xdc\x76\xce\x10\x02\xa2\xb7\xa1\x38\x70\xbc\x60\x8c\x6a\xaf\x22\xb5\xf7\xbb\x40\xd3\x8a\x8b\x84\x9d\x54\xc2\x08\xbd\xe4\x71\x4e\xe2\x94\xc7\x2f\x27\x6e\xae\x59\x5e\xa8\x78\x33\xa1\xba\x15\xbd\x57\x50\x1b\x3a\xd9\x41\x37\xea\xa3\x06\x6d\xe9\x20\x98\x3e\xcb\x64\x77\x16\xad\x2a\x8f\xc4\x64\xfc\x93\x4b\x26\x73\x6b\xfa\xa0\x93\xfb\xf1\x4d\xae\x60\x74\x10\xb0\x03\x83\x65\xd1\xce\xbf\x02\x1a\x0c\x53\x56\x91\xdc\x6e\x38\xa6\xc4\x7c\x23\xa1\x18\xe0\x94\xde\x69\x22\xf6\x74\x30\x3d\x6e\x07\x7d\x4f\xcd\x78\xed\x46\x77\x50\x69\x32\xd6\x2d\x87\x38\xa0\x8b\xf3\x0a\x53\x50\xa8\x33\x39\x65\x3e\xb0\x5e\x7a\x38\x60\x39\x85\x6c\x07\x92\x1c\xb0\xc2\x1d\xcd\x48\xa4\x42\xd7\xc2\xe8\x64\xc4\xc0\xc4\xf1\x48\x81\xfe\x09\xc1\xe7\xa0\xa0\xd4\x1c\x95\x82\x17\x90\x0e\xd9\xbb\x04\xbd\x5b\x1b\x9a\xe1\x1f\xda\x63\xb1\x15\x23\x10\xb4\x0e\xe0\x69\x84\x30\x70\xc3\x12\xc6\x51\x57\x9a\x99\x3c\x45\x04\x13\x4d\x17\x80\xf1\x04\x5f\x15\x9a\x7c\x0b\x4d\x83\xfc\xc9\xc9\xbf\x8a\xee\x40\x2b\xc8\x01\xa6\x5d\xc0\x89\x03\x41\x3e\x17\x02\xae\xb1\x81\xaf\x01\x84\x9b\x4a\xe4\xc0\x7d\x90\xa1\xbe\xbb\x08\x7e\x77\xbf\x01\x81\xf1\x5b\x18\x4a\x9e\x7c\x21\x82\x33\x3e\xf1\x8a\xa6\x9e\x15\x67\xeb\x15\xc3\x81\x85\x46\x47\x2d\xce\x49\x80\x4b\x6c\xe0\x1b\x90\xad\x6e\xc9\x81\xe4\x9b\xd1\x15\x20\xb6\x67\x12\xa5\x05\xbc\x1c\xeb\x96\x10\x48\xe2\xa9\x4a\x06\x91\xc8\xae\xc3\xd0\xa6\x6d\x87\x82\x21\x95\x12\x7a\xb2\x88\x87\x55\x96\xda\x1f\xf2\xa5\x43\x9a\x36\x6b\x3b\xba\x8f\x58\x12\x41\xf7\xa3\x9a\x81\x56\xc1\xff\x57\x12\xf1\xde\x20\x74\xe6\x43\x8d\xf3\x15\xd5\x03\x79\x00\xc9\x15\x74\xd7\xaf\x5a\x7e\x7f\x7b\xba\xbb\xf0\x6a\xab\x6f\x21\xdf\xa6\x14\x58\x90\x97\x2d\x6c\x54\xac\xa9\xfa\xe8\x10\x88\x80\x86\x64\xa2\x5f\xc6\x78\x38\x2e\x34\x56\x7b\x68\xac\x1c\x81\xe0\x8a\xa1\x5d\xc3\x32\x5d\x1f\x16\x5d\x1b\x6a\x47\x3a\xc0\x99\x2a\xb0\xc8\x44\xae\xa8\xd9\x13\xf5\x63\x17\x1e\xdd\x86\xa8\x5a\x19\xaa\xf1\x76\xf5\xab\x85\xf4\xd6\x78\x04\xdf\xbd\xc5\x8f\x59\x6b\x57\xfc\x24\x4f\xf4\x6c\x7c\x01\x34\x1e\xc1\x99\x26\x9c\x01\x91\x38\xe6\x62\x55\x66\x50\x38\x4c\xca\x0e\x24\x82\x86\x4d\x6a\x8f\xcd\x64\x3d\x15\xe7\x30\x54\x59\x8f\x7f\x92\x2a\xbd\xe1\xf5\x33\x54\xf8\x04\x60\x55\xa2\xae\x88\xda\x50\x04\x90\xe5\x7f\x90\x82\x19\x58\x44\x25\x3e\x23\xf1\xea\x22\xed\x66\x43\x0c\xc4\xfc\x9f\xec\xec\x9c\x1e\x6d\x2c\x01\x30\x09\x20\x50\x1d\xdc\x08\xe1\x7a\xd0\xc2\xe4\x53\x87\x41\x13\x21\x5e\x9b\xab\xe1\x2d\x8c\x0f\xda\x8e\xa3\xa4\x35\x42\x1d\x5f\xff\x30\x5d\x29\xfa\xf7\xda\x30\x33\x1c\xd0\x8c\x84\xc0\xe1\x76\xc6\xa8\xa0\x02\x14\x15\x1f\x14\x47\x39\x9a\xf4\xe5\xbc\x4e\x54\x1b\x60\x23\x3a\xa4\x77\xb1\x0a\xf7\x96\x09\x9e\x2a\x33\xe0\x47\xc8\xaf\x52\x54\x84\xcb\x74\x24\x71\xd1\x2c\x66\x75\x4a\x2d\xba\x69\x48\x66\x2e\x29\x78\x48\xcc\x87\x90\x6b\x0c\x71\x46\x5e\x7e\xcb\xaa\x8b\x73\x38\x90\x4e\x02\xc9\xf5\x68\x6c\xd7\x08\x6c\x6c\x34\x35\x56\xad\x6e\xb1\xb1\x61\xb3\xcc\x37\xd3\xdc\x0b\x5a\x3b\x06\x08\x65\x32\x36\x70\x3b\x51\xd6\x0e\x94\xcd\xd1\xa9\x32\x3d\x33\xcc\x3f\xcd\xdc\x42\x2b\x73\xf7\x75\x6b\x8d\xfe\x3e\x08\xd8\x95\xd0\x48\xa4\x02\xfb\xfe\x26\xc2\x0e\xb4\x8a\xb7\x29\x53\xed\xa4\x2b\xa7\xa6\x93\xb3\x07\x5d\xd3\x99\xc2\x1e\x17\x94\xc4\xd1\xac\xa5\x36\xd3\x51\xcd\x27\x32\xc9\x1d\x3d\x06\xf0\x1f\xa0\xd1\x95\xa5\x19\xd1\x67\x95\x80\xed\x94\x5e\xf5\xf9\x25\x38\x11\x76\xd3\x72\x8b\x2b\x16\x5d\xd3\x83\x15\x5c\xb1\xc8\x7c\x20\x07\x9b\x4b\x72\x35\xb8\x9a\x5c\xad\xe1\x40\x4b\xbb\xa1\x7e\x9b\xe3\x77\xc7\xe2\x77\x47\xf5\xbb\xf5\xfe\xd1\x88\x67\x6e\x9a\xe0\xc7\x97\x1e\xb9\x57\xb1\xe9\x95\xdc\x3e\x82\x1f\xa7\x22\xa6\xba\xdf\x3c\x00\x25\xd7\x34\x4a\xef\x52\x0d\x21\x70\x03\x5a\x65\xd2\xed\xa4\x5b\x92\x59\x6f\x99\x5d\xb0\xf5\xd2\x69\x6d\xe7\x65\x64\xd7\x02\x08\x47\x90\xe7\x90\xee\xcf\x04\x5c\xff\x8a\x71\xb7\xd1\x83\xc8\xb3\xa8\x6b\x63\x62\x3a\xcb\xdb\x64\xe4\xd1\xf4\x48\x19\x6f\x84\x44\x27\xf0\x8e\x0d\xb6\xe0\x6f\x82\x87\x18\xb1\x20\xe3\x4f\x2a\x5b\xcf\x66\x39\xf3\x3f\x8d\x4c\xc6\x20\x0e\xa4\xfd\x71\x52\x86\x88\x57\x1e\xdf\x58\xfa\xce\x28\xbc\xcb\x94\x03\xf5\x50\x43\xfc\x3a\x2e\xdc\x56\xab\x2e\xd4\xf7\xc2\x58\xf0\xd5\xe4\xa1\xec\x85\x22\x9a\xe7\x8f\x2c\x6e\xc3\x07\xd0\xba\x2d\x59\x8d\x32\x91\x56\x21\x08\x32\x11\x32\x7a\x05\x42\x30\xe9\x10\x16\x9b\xc9\x55\xd0\x92\xa9\xa6\xef\x7c\x56\xe7\x58\x42\x1d\x1c\x10\xf5\x66\xde\xd5\x14\x79\x06\x82\x7c\xe9\x5d\x1a\x20\xf9\xb4\xe0\xdf\xd6\x89\x38\x8b\x25\x0a\x6b\x62\x09\x73\x21\xa8\x0d\x43\x83\x67\x3e\x47\x50\xaf\x61\x45\x4a\x73\x93\x39\xdf\x58\x85\x41\x5f\x62\x65\xc5\x9b\x13\x8a\x1f\x7f\x96\x8a\xdb\x59\x11\x2c\x2e\xf8\x27\xe1\xcc\xcc\xe0\xe8\x13\x7a\x35\x15\x01\xa9\xf9\x56\x07\x8e\x56\x1d\x95\x97\xab\x7d\x97\x24\xf0\xd8\x1f\x62\xe7\x28\x14\xf0\x1e\xa2\x8b\xf5\xaa\x53\xec\xf2\x55\xca\x9b\x84\xe4\x14\x8b\x1c\x56\xe7\x59\x79\x86\x9d\x7c\x8b\xf5\xe4\xf6\x50\xbe\xc9\xce\xb1\xa6\xe4\xcf\x94\x37\x9b\xa9\x49\x7c\xe2\xeb\x4f\x6e\x67\x10\xe4\x4f\x42\xf9\x7c\x7f\x28\x84\x6c\x25\x4f\xb1\x45\x9e\x3e\x6b\x0c\x2a\x2a\x9d\x18\x29\x9d\xc8\xfa\xd3\xd0\xd6\x39\x1e\x0b\x98\x64\xcb\x64\xae\x5b\xe0\xe9\x60\x1c\x69\x67\x7e\x8b\xcd\xf0\xb5\x91\x1c\x45\x6d\xba\xc7\x12\xaf\x1d\x34\xff\xf7\xb5\xcf\xeb\xaa\x3d\x81\x5c\x75\xdd\x2b\x6f\x41\x8f\x8d\x60\x64\xfc\x92\xe7\xa4\x7a\x5b\x90\xcc\x7b\x5a\x75\x48\x33\xc1\x62\x00\x28\xd0\x42\xfd\x94\x74\xcc\x29\x7d\x06\x20\x36\x46\xbf\x93\x6a\x1d\x73\x8d\x09\x0d\x9c\x09\xf5\xda\x71\x32\xc3\x67\x55\x56\x39\x68\x10\x9a\x29\xc6\xb2\xcb\x53\xed\xaa\xe2\x07\xcd\xae\x4a\x64\xc7\x72\x9d\x10\x18\x68\x3b\x8f\x03\x91\x31\xd3\x02\x99\xe6\x84\x4c\xed\x59\x3d\x27\x19\x32\xf8\xc4\x0c\xbf\x51\xc5\x0a\x39\x29\x28\x7e\x47\x31\xf9\x01\x48\x96\xa7\xda\xa4\xda\x6c\x83\xee\x84\xf1\x7c\x9c\x4c\x99\xa3\x98\x11\xe3\x8f\x20\x7a\x53\xf2\x2c\x61\xb3\xe1\xe3\xbc\x4b\x09\xd6\x70\x5e\xdc\xeb\xf9\x2b\xa5\xd8\xc2\x79\x56\x23\xe5\x29\x4a\xb1\x87\xf3\x6c\x46\xca\x3a\x48\x09\xe7\x91\x1b\x1d\xef\xfb\x4c\xd5\xfb\x86\x3a\xbf\x52\x3a\x26\x86\xbc\x95\x9c\x31\x22\x4c\xd3\x52\xc9\x24\x9a\xf2\x64\x1e\xa9\x42\x60\xce\x26\x51\xac\x8f\xb1\xb9\x0f\x86\x56\x7b\xf2\x0f\xc8\xd0\xc2\xe6\xa0\x54\x2b\x0a\x3b\x82\x08\x17\xe7\xa7\x88\xaa\xf3\x30\x06\x15\xfc\x95\x26\x32\x67\x61\xef\x1e\x32\x6c\x5c\xcc\xbb\x07\x44\xa6\x4d\xf1\xee\x41\x71\xb6\xe9\xf8\x5d\xf0\x34\x0e\x75\xbd\xb4\x07\xf4\x57\x3d\xd4\x7a\x84\x6a\xd5\xc3\x90\xa8\x73\xa0\x79\x7b\x12\xce\x57\x62\x84\x36\x95\x66\x2f\x18\x07\xa4\x33\x9c\x1d\xc4\x01\x53\x2d\x08\xe7\x56\x17\x93\x30\x39\xef\x8c\x78\xa3\xb2\xca\xee\x0a\xbe\xf5\x39\x80\x3a\xf9\x57\x65\x95\xed\xad\x24\x8e\xee\x74\x96\x31\xa3\x1a\x42\xc6\xfb\x14\x07\xc7\x7b\x00\xb5\xcc\x95\xba\x96\x59\xc3\xac\x9a\x66\xa7\xfe\xf9\x52\x80\xda\x28\x2b\xca\x95\x52\x8d\x0d\x5f\x2c\xf9\x50\x66\x21\xe0\xf4\x1e\xe0\xe3\x74\xf2\x06\x11\xe1\xf9\x56\xd9\xbb\x57\x81\xff\xed\x68\xb7\x1f\x44\x55\xfb\xb3\x58\x40\x49\x8f\xc5\xc0\x64\x16\x61\xb2\x57\x5a\x6e\xe5\x7c\x7d\xa4\x55\x07\xcc\x42\x20\x93\xa7\xc1\xa5\x9e\xe6\xe9\x41\x8f\x9d\x8d\x09\xc5\x3e\x13\xce\xa2\xca\x3f\xc0\x0b\x01\x27\xa9\xf5\xc4\xbc\x74\x54\x78\x41\xdf\x10\xfd\xf1\xd9\xb3\x84\x74\x69\xa5\x25\x05\x5d\x33\xff\xfb\xe8\x28\x39\x55\x6f\x23\x83\x1a\xd4\x6b\xb2\x91\xee\x6b\xa5\x9e\xd7\x46\xfe\x49\xee\x88\xfd\x2d\x64\x65\xb5\x02\xf9\x3d\xc9\x9f\x8a\xdd\xad\x95\xc3\xd8\xdc\xc7\x27\x5f\x48\xf2\xd3\xd4\x38\x15\x91\x43\x27\x5f\x80\x0c\x5f\x2d\x3d\x9d\x7c\xe1\xe7\x70\x5f\x79\x86\x10\x4a\x48\x29\x39\x4b\x18\xa7\xe9\x8f\x51\x28\x10\xbd\xe8\x27\x30\xbc\x37\x85\x30\x3c\x10\x1d\x0d\x14\x26\xfa\xba\x82\x40\xd7\xc1\x92\x77\xaf\x0d\x4c\x53\x60\x19\xf4\x3e\xe6\x3d\x00\xc4\xb1\x08\x81\xdb\x71\x16\xd8\x4b\xab\x08\x5c\x4d\xf7\xd7\xd8\x94\xe2\x7a\xc5\x62\x02\xc5\x40\xa1\xd6\xbd\x4f\x72\x5c\x9e\x7b\xfe\x1e\xdf\x57\xfa\x74\xca\x9c\x27\xb1\xd3\x07\xa4\xda\x79\x86\x60\x12\x4b\xe7\x02\xcf\x01\x4b\x1a\xf2\x11\xf6\x1e\x8d\x7b\xa9\xc0\x85\x64\x14\xac\x2a\x88\x36\x8e\xe5\x81\xd1\x1c\xb9\x58\x20\xca\xc5\x06\x82\x3d\x19\x80\xe2\x46\xab\xa2\xd7\xb8\xf9\x7b\xd0\x06\x19\x4e\xad\xe9\xf7\x44\xf1\xb8\xbf\x23\xea\xf3\x9d\x8c\x26\x05\xa0\xa8\x69\x99\x85\x31\x33\x02\x9d\xc8\x64\x53\x20\x89\xef\x1b\x0d\xc1\xdf\x3d\x0d\xe7\x2f\x5c\x41\x57\x03\xf6\xe2\x66\x90\xf9\x67\xa4\xda\x52\xa6\x48\x6d\xf1\x8e\x40\x53\xcd\x96\xc9\xc6\x8b\xeb\x44\xad\x7c\xf5\x71\x1c\x11\xd1\x2b\x87\x14\xef\x33\xea\xfc\xe7\xb1\x97\x6c\xb2\xcf\xa2\x8d\xff\x15\xc5\x3e\xda\x65\xbf\x67\x6d\x9e\x40\x5b\x01\x1d\x78\x1d\xd2\xb5\xbb\x63\xd4\x1b\x39\xa4\xdd\x89\xc5\x5a\x5c\x0d\x51\x6b\xe5\x59\x74\x50\x3e\x80\xe0\xa8\x54\x9f\x50\xfe\x19\x84\x2c\x49\xbd\x22\xf4\x4a\xcb\x4f\x23\xb4\xfd\x4a\x86\xd0\x53\x4f\x30\x84\x2e\x4c\x62\x08\x5d\x8c\x08\x1d\xe8\x34\x10\x6a\xb8\xf2\xff\x84\x50\x4e\xef\x08\x65\xfc\x0c\x42\x03\x74\x84\xac\x3a\x42\xf9\x3a\x42\x8f\x42\xba\x96\x17\x47\x68\xf2\xff\x0d\xa1\x39\xbd\x23\xa4\x7c\xff\xd3\x08\x3d\x32\x9e\x21\xb4\x6c\x0b\x43\x68\x91\x8e\x10\x2e\x9e\xd1\xfe\x71\xd6\x40\xe8\xb5\xf1\x3f\x8d\x10\x4d\x47\x3c\x83\x5a\xc1\x07\x0a\x70\x03\xb6\x1e\x68\xf5\x09\xd2\x2a\x07\x57\xd9\x49\xb3\xdf\xf7\xf0\x34\x57\x9b\x88\x6a\x79\x37\x54\x1d\x3d\x4c\xff\xc1\xef\x20\x39\x4c\x4d\x05\xa0\xfe\x48\xd2\x64\xe5\xea\xfc\x0a\xb4\xb8\x06\xea\xe1\x71\xcc\x96\xbe\xb3\x99\xa1\xfe\x84\x8e\xba\x77\x3c\x7b\x7e\x9e\x3d\xcb\x61\x6d\xac\x9e\xf2\x86\x9e\xe2\x2d\xd5\x32\xc7\xe3\x2b\xe8\x52\xd9\xeb\x0f\xd4\x89\x7d\xc1\x17\x4e\x01\xd4\x11\x39\x88\x33\x2e\x82\xa4\x0b\x51\x76\x3c\x28\x33\x85\x60\x5d\x80\x40\xcf\x81\x67\x1b\x9a\x7a\x0d\x17\x35\x87\x92\x39\xec\x9b\x78\x49\x00\x94\x95\x43\x3c\x9f\x62\x09\x80\xfe\x21\x42\x07\x7c\xb6\x43\xc9\x68\x32\xf3\xa6\x71\x46\x4f\x1c\x23\xad\xf2\x43\x71\xc5\xeb\x8f\x03\x25\xf1\x25\x0f\x64\xea\xe3\xd8\xb7\xf4\x90\x07\x40\x27\xe3\x0d\x43\xf5\x23\xbd\x33\xcb\xc7\xd1\x54\xd6\x50\xb5\x78\x03\x26\x37\x26\x91\x1d\xd2\xc9\x8c\xa1\x95\x36\xfe\x71\x0a\xa8\xb5\xb4\x71\x08\x68\x43\x59\x2d\x0e\x05\xd3\x52\x44\x7e\x7d\x80\x36\xf4\x18\x20\xc1\xbf\x9f\x3b\x67\x54\x9a\x7e\x76\x54\xf2\xbe\xed\x36\x2a\x8f\x73\xbd\x8d\x8a\x6b\x2c\x1b\x95\x11\x8f\xb3\x8e\x1c\xd7\x3b\xf2\xb7\xb1\xd4\x91\x8b\x12\x49\x80\x74\x9d\xfa\x18\xa3\xab\x4e\x7e\x22\x6f\x22\x01\x96\x8d\xfd\x25\x02\x8c\x7b\x8c\x11\xc0\x36\x56\x27\xc0\x86\x38\x01\x12\x99\x73\x15\x4e\xd1\x1a\xdd\x8f\xf9\xd2\x02\xad\x3a\x77\x8e\x38\x97\x3b\xcd\xc9\x3f\x47\x87\x89\xc7\x20\xb9\x9a\xd1\x01\x6c\xfa\x7f\xba\xe8\x00\x66\xbb\xd8\x1f\x27\xc5\x88\x2b\x20\x03\x9e\x21\x3a\x49\x7f\x8c\x51\x63\x70\x32\xeb\xd5\xd6\x2b\xd8\xb3\x3b\x59\xe7\x48\xbf\xb6\x11\x4b\x4f\xf7\xcb\xd5\xc4\x90\xc1\x2e\x86\x8c\x89\x23\x20\x29\x03\xdf\x12\xc6\xd9\xcc\x86\x0d\x69\x57\x3d\x4a\x0d\x00\xb3\xa5\xe8\xac\x9b\x19\x68\x00\x86\x14\x13\x4a\x42\xe3\x03\x1e\x25\x86\x4c\x36\x4c\x81\x41\xda\x8c\x2b\x7e\x89\xb4\x07\x2b\x18\x69\xff\xee\x3a\x87\xb7\x12\xd9\x0a\xbc\x41\xf4\x96\xe3\xcc\x05\x0e\x60\x15\x58\xdc\xcd\xd5\xd6\x7d\x42\xe0\x13\xc2\x8c\x05\xbc\x6a\x71\x37\x32\x17\x63\xef\x75\x6a\x41\x7b\x0e\x63\x9d\xd4\xa1\x6f\xba\x31\xda\x1f\x7a\x65\xb4\x3d\x39\x8c\xd1\xde\xad\x60\xbd\xba\x4f\x27\xed\x54\x57\x17\xa3\xd9\x13\x18\xed\xc8\x26\x64\x34\xe1\x27\x19\xad\x9f\xeb\x97\xa8\xf1\xe1\x26\x46\x8d\x6d\x39\x44\x8d\x68\x12\x31\x50\x2f\xfc\x46\x44\x99\xef\x50\x7c\x99\x18\x12\xcf\xe1\x99\x1e\x10\xfc\x37\xf0\x8c\x14\x53\x29\xc5\x0e\x29\xf8\x2e\xd7\x78\xa7\x03\xbd\xc7\xb9\x2e\x2d\x03\x3b\xc4\x6d\xc4\xee\x80\x43\xe5\xc4\x58\xdc\xe0\xc5\x65\x8e\x70\x81\xf5\x19\xcc\x29\x40\x27\x38\x5c\x60\x7f\x19\x39\xb5\x20\xbd\x12\xd3\x6e\xcb\x08\x17\x64\xee\xa1\x5c\xf0\x3f\xd2\xc3\x05\x23\x0f\x51\x6e\xf6\x57\x74\xc9\xf9\x9a\x2e\x13\xf8\x14\x2c\xe1\xac\x5c\x03\x8f\x82\xd7\x9b\x21\xad\x1a\x49\x2f\x17\x71\x44\xce\xa3\xbc\x71\x95\x1b\x58\xde\x48\xb9\x20\x17\x44\xa3\x17\x19\xf8\x55\x84\x5e\xda\x86\x7c\x02\x8e\x81\x1b\x28\x43\xc3\x15\x5d\xa2\x0f\x54\x82\x89\x19\x36\x86\x99\x18\xc7\xa6\xee\xec\xf7\xec\x18\x22\x78\xa6\x3a\xbd\x37\x82\x17\x02\xc1\x6f\xd9\x08\xe3\x64\xc8\x01\x56\xc9\x1a\xc3\xc6\xbc\x6e\xe3\xff\x6a\x04\x9e\x88\x8f\xc0\x06\x7d\x04\xfc\xf1\x11\x78\xa8\x97\x11\xf8\xc3\xc6\xff\xff\x46\xe0\xa2\xff\x76\x04\xde\xfc\x5a\x1f\x81\xf3\x90\x22\x3b\x55\x7d\x04\x22\xaf\x76\x49\x4b\xc2\x20\xfc\xe1\x72\x36\x08\x9b\xd4\xee\x83\x90\x3e\xfa\x97\x06\xe1\xdf\x40\xcb\xe8\x14\xcc\x1c\x9b\xc2\xea\x1c\xa5\x77\x27\xe2\xa5\xcc\x8a\x65\xa3\xa0\x25\xeb\xde\xe5\xf2\x0d\xd8\x78\xb6\x3e\x64\x21\x4f\x12\x1b\xbf\x33\xcc\xf7\xd3\xee\xbd\x9c\x8d\x5f\xaa\xfa\xdf\x8c\x1f\x69\x6c\x54\x00\xdf\xe9\x2a\xe4\x3f\x5c\xb7\xb1\x42\x9f\x56\xfb\x6e\x43\x7c\xac\x6a\xd0\xa4\xce\x63\x64\xcc\x4b\xe9\xd2\xe0\x0f\xdb\xe4\x3c\x0b\x6a\xf8\x3c\x1a\x39\x08\x7b\x71\xcc\xe4\x25\x8e\x5e\xa8\x7a\xdb\x7f\x88\xaa\x61\xe0\x6b\xc0\xf7\xf6\x0d\xdd\xf8\xda\x47\x0a\x48\x77\xbf\xb5\x82\x6c\xd6\x99\xdc\x0d\x09\x24\x05\x12\xbf\x9f\xad\x93\xf4\x27\x15\xc9\x23\x4a\x22\x5f\x43\x95\x1b\xb3\x19\x7f\x1f\x57\xfe\x0b\xba\x20\xdf\xd2\xdb\xc6\x74\xc1\x9f\xa6\xf3\x73\x92\xbe\xdc\xf0\x2c\x67\x4c\xde\x9d\xec\x4e\x2b\x8c\x31\xb4\x6a\x05\x69\x55\x9c\xc2\xf8\xda\x6e\xb0\xdc\xb2\x04\x5a\x2d\xb3\x11\x63\x03\x1f\x5b\xef\xc0\x64\xc6\xdf\xf2\x6d\xc0\xf6\xe9\x0f\x10\x6b\x66\xf4\xce\x8e\x23\xbe\x4a\x54\x08\x23\x95\x9f\x51\x08\xfd\x46\xb1\x5e\x9b\x95\xee\xbc\xb8\x61\xd4\x2f\xf1\xe2\xb5\xeb\x7b\x28\x84\xf4\x51\x6c\x0c\x2a\xd7\xff\x14\xe1\x12\x7d\xa0\xb8\x1f\x90\x1d\xf7\x03\x04\xff\x9f\x4c\xcc\x01\xa3\x17\xb9\xa1\x6e\x44\xa3\x05\xbc\xb8\xbc\x56\x5e\x6e\x01\x1e\xc3\xee\xd7\x60\xef\x75\x1e\xfb\x53\xca\xcf\x79\x09\x03\x8f\xea\x9c\x74\x1e\x22\x7a\xc1\x7a\x43\x3e\xaf\xc0\xf6\x8a\xcb\x55\x2f\x31\x13\x54\x00\xe3\x8f\x4b\x52\xb4\xb6\x2c\xd6\x97\x63\x32\xa2\x82\xbe\xa2\x85\xd8\x1a\x17\x93\xd0\xac\xae\x98\x01\x16\x3e\xbd\xa7\x03\x95\x24\x33\x07\x0a\x00\x62\x95\x67\xf4\x2a\xd7\xb0\x2a\xa3\xc8\x55\x1d\xce\x44\xd5\x91\x28\xaa\xff\x2c\xa7\x05\x2f\x09\xa2\xaa\x43\x78\x59\x87\x70\x36\x8b\x20\x38\x69\x6a\x72\x28\x83\x90\x69\xbc\x2f\xc2\x02\x0a\x41\xc8\x0c\x79\xcc\x46\xd5\x3d\x7a\xd5\x6a\x56\x55\x6f\x36\x3d\x6e\x8a\x21\xeb\x66\xaa\x94\x1e\x6f\x56\x30\xea\x56\xea\x75\xd7\xb2\xba\x7a\x83\x19\x89\x28\x5f\x58\xce\x06\x09\x71\xf5\x51\x25\x54\xaf\x24\x40\x71\x5c\x47\xc6\x71\x1d\x99\x88\xeb\x67\xeb\xb0\xea\x48\xc4\x15\xeb\x7d\xad\xd7\x1b\x14\xaf\xe7\x8c\xd7\xa3\x45\x11\x45\x7a\xbd\xbf\x50\x3d\x67\xc8\x33\x83\xea\x91\xe6\x86\x7a\x9f\x8f\x34\xea\xe5\xc4\xeb\xe5\x24\x76\xf3\xb7\x54\x2f\x07\xfb\x97\xa8\x1b\x5e\x1a\xf9\x4b\x4e\x46\xc9\x3a\x26\x1c\x57\x8f\x64\x1c\xfe\xe9\xba\xde\x5d\x2f\xe0\x43\xa6\x0e\xf4\xca\xe0\x7e\xf5\x12\x11\xbe\x9b\xd2\x6b\x44\xb8\xe2\xf3\x6e\x0e\xd6\xe6\x5e\x1d\xac\xdf\x5c\xca\xf8\x71\xde\x3a\x26\x14\x4d\xba\xfa\xff\xea\x52\x72\x35\x87\x93\x93\x95\x6c\xcc\x48\xc4\x1d\x4e\xe8\xfc\x9f\xd6\x72\x86\x9b\x95\x28\xdf\x2f\x5f\xfa\x4b\x9d\xbf\x77\x2d\xeb\xf4\xe4\x4b\x7f\xd6\x95\xf7\x65\x2a\xab\x32\x12\x22\x99\x4b\x4c\xe8\x26\x0b\xfe\xc1\x26\xc3\xaa\xf7\xa7\x3b\x07\xdc\xa5\x98\xce\xb5\x19\xbb\xd6\xf6\x6a\x33\x4e\x75\x11\x4b\x37\x15\x60\x37\xd0\xc8\xeb\x06\x23\x8f\x66\x75\xf2\x1c\xbd\x2b\xc0\xe1\xcd\x34\x55\x45\xd2\x9e\xb5\xd6\x90\x76\x15\x43\xd7\xe9\xe5\x6a\x71\x05\xbe\x14\x23\x49\xb7\xca\xc5\xa5\xb4\xd4\x39\x79\x04\x09\x3a\x52\xac\x3d\x80\x4a\xa1\x34\x2e\x43\xe0\xb5\xaf\x1e\xd1\x8b\x1f\x0b\xc3\x31\x10\x8a\x86\x0a\x12\xfd\xd8\x94\x9e\x22\x94\xc7\xaa\x5e\x18\x97\x1d\x5d\x55\x1c\xf2\xa3\xaa\x48\x62\xbe\x6f\x0f\x09\x12\x46\xfc\x82\x04\x3d\xeb\xef\x55\x82\x3e\x19\xfe\x0b\x12\x74\xb7\xbf\x57\x09\xfa\x63\xbc\x5e\x76\xbc\x5e\x76\xa2\x04\x5d\x4e\xf5\xb2\x7b\x4a\xd0\x6f\x86\xff\x12\x13\x39\xfd\x4c\x82\xce\x38\x19\x33\x3d\xe3\xef\x6e\x1b\x7a\x8f\x61\xc0\xa0\xae\x4a\x88\x8e\x37\x57\x93\xc3\xb8\x39\x68\xad\x16\x02\xa3\x79\xc6\x5f\x23\xba\xfb\x8a\x48\x5a\xed\x41\x6c\x6d\x91\x4d\x37\xab\x35\x68\x29\x3c\xcc\x74\x7a\x88\x6b\x80\xbf\xc8\x7f\xcc\x23\xf3\x19\xce\xcb\x20\x57\x30\x2f\xf3\x42\x2b\x72\x94\xa3\x72\xa0\x95\xf9\x80\x72\x9e\x33\xc1\xb4\x8c\xb2\xfe\x9c\x69\xd9\x75\x84\xd9\x5a\xe8\x9d\x4f\xd0\xde\x91\x0c\x66\x53\x10\xa1\x57\xa4\x5e\xfd\xbf\x4b\x74\xff\x8f\x72\x0f\x00\x05\x87\x28\xc5\x99\xec\x45\xad\x55\x29\x6e\x24\x0b\x94\xd4\xaf\x57\xb9\xfd\xe1\x92\x5f\x22\xf9\xdf\x1f\x61\xa4\x96\x2f\xf9\x2f\xfd\x17\xbd\xb2\xe0\x3f\xc3\x19\x82\x7a\xe2\xdc\xe9\x88\xc9\x3f\x4b\x85\x37\x0e\x43\x72\x88\x29\x31\x50\x02\x3b\x7b\xf5\x7b\xff\x74\x31\xeb\xf7\xef\x1f\x61\x7d\x9a\x69\x65\x7d\xca\xbc\x84\x3d\xdf\x69\x35\x26\x89\xfa\x5d\xc2\xd6\xb7\x89\x69\x10\x71\xa7\x1a\xd2\x65\x81\x07\x9b\xdc\xae\xfd\x05\x42\x52\x65\xba\x5d\xe6\x41\xf3\xd9\xe4\x16\xed\xf7\xf8\x5c\xec\x90\x4d\x89\x84\xfa\xf0\xe2\x5f\x22\x54\x79\x19\x23\xd4\x82\x8b\xff\x2b\x42\x65\x30\x47\x2f\x53\xf0\x5f\x1d\x0f\x61\xc6\x31\x57\x6f\x73\x35\x72\x29\xb1\xe7\xc5\xf1\x60\x26\xbd\x17\x06\xfd\x67\x19\x2a\xbb\x15\xd6\x1e\x4e\xdf\x1b\xd6\x5e\x9d\x3e\xbf\x95\x9c\xbe\x4d\x56\xc3\xe9\x7b\xd2\x4a\x4e\x1f\x45\x33\x99\x2f\xd0\x83\xb3\x77\x05\xe8\x6c\xea\x36\x1e\x8f\xf6\x3a\x1e\xe7\x5d\xc4\xc6\x23\xa5\xac\x3b\x8f\x55\x5c\xf4\x4b\x4e\xf3\xf4\x52\x18\x8e\xe1\x54\x87\x8d\x99\x3e\x44\x5a\x31\xab\xda\x47\x33\x47\x70\x4c\x9c\xb2\x09\x01\x76\x66\x32\xeb\xf5\x5c\xe9\x7f\x4d\x69\x3b\xb9\xd4\x7f\xd7\x5d\xe9\x97\x78\xb6\x80\x43\xf0\xff\x51\x77\xb2\x7f\xcf\x1b\xbc\xaa\xd2\x9d\x13\xee\xa4\xee\x14\xc7\x79\x18\x6d\x6e\x29\x5b\xb9\x92\xa4\xcb\xd1\x57\x44\x7b\xec\xf5\xed\x6b\x10\xd5\x70\x0a\x8e\x86\x2f\x35\x5c\x60\x89\xc2\x4d\xd4\x2c\x2f\x33\x9c\xb3\x6e\x55\xa0\x8b\xdd\x07\x04\x83\xca\xcc\xf8\x98\x38\xf0\x05\x68\x41\x86\x66\x63\x40\xd9\xe8\x20\x54\xa7\x0e\xf5\x36\x27\xe8\x5d\x63\xbc\x5b\xbb\xc6\x1b\xc2\xd2\x63\x04\x21\xbb\xf7\x81\x9c\x7b\xb0\xdb\x40\xbe\xd0\xeb\x40\x5e\x3b\x4c\xf7\x53\xd6\x30\x8c\xf9\x54\x36\x90\xe1\x61\x89\xee\x1b\x59\x10\xab\xae\xd1\xe7\xae\xd6\x2d\x48\x4a\xb7\xa1\xdf\x32\xec\x97\xdc\xfe\x9b\x56\xf7\x70\xfb\x2f\x1a\xc6\x06\xb7\x6a\xf5\xff\x2a\x8e\x4c\x9c\x8a\x4a\x18\x34\x7c\x95\xaa\xfd\x79\xb5\xee\xe6\x53\x47\x6a\x40\x89\xf7\xc1\x9b\x45\xb6\x04\xad\x7c\x41\xaa\xb1\x58\xcf\xd6\x8b\x53\xe5\x6c\x4c\x70\xaa\xc4\x5e\x02\xc6\xf3\x87\x32\xac\xfb\xae\xee\x1e\x30\x6e\x1e\xfa\x4b\xbc\x7f\xe3\xaa\x1e\x01\x63\xe6\x50\x46\x88\xe0\xaa\xff\x26\xee\xd1\xe7\x7e\xb1\xeb\x35\xdc\xb9\x11\xce\x5f\x57\xa1\x86\xa0\x7e\x2f\xb2\x74\x8b\x70\x86\xa7\xfe\x9c\x02\x1e\xfb\x49\x62\x87\x17\x9e\xdb\xe1\xe1\x43\x58\x87\x2f\x5c\xd5\xbd\xc3\xdb\x86\xfc\x52\x87\x17\xac\xec\xd1\xe1\x31\x43\x58\x87\xff\xb5\xf2\x1c\xcf\xf0\xe7\x67\xb9\xbf\xeb\x65\xce\x60\xd7\xca\x9f\xea\xf0\xd8\x9f\xed\xf0\x94\x8f\x7b\x9d\x00\xef\xde\xe9\x9c\x0c\xd6\xe9\xe1\x2b\x59\xc3\x05\xa9\xac\xd3\xaf\xb2\xdd\x1d\x03\xb4\x79\x47\xd1\x94\x18\x81\x97\xcc\x47\x53\x51\xf8\xb9\x6e\x56\x77\x5c\x7c\xfb\xcc\xcf\x18\x93\x89\x0f\x33\xda\x0c\xc8\x60\xb4\x79\xfd\xe1\xff\x25\x6d\xbe\xec\x85\x36\xcf\x3d\xfc\x53\xb4\xb9\xf1\x67\x69\x33\xe2\xdf\xdd\x68\x53\xde\x2b\x6d\x1c\x83\xf5\xf9\x9f\x87\x75\xeb\xab\xd3\xe6\x31\xb6\x4f\xa1\xbf\xe6\xf9\x92\xcc\xaa\x41\x1b\x53\x22\x41\x1e\x18\xfc\x4b\x04\xb9\xec\x21\x46\x10\xd3\x60\x46\x90\x3f\x3d\x74\x2e\x41\xfc\x7d\xa0\xda\x57\x4a\xb1\xb5\xac\x23\x48\xab\xb8\xd6\x81\x06\x17\x36\x41\xe0\xcf\x95\x75\x3c\x0a\xf7\x95\x96\x3e\xb8\x51\x10\x37\x72\xaf\x99\x29\x75\x9c\xa9\x7c\x2d\x15\x9f\x71\x03\xf8\x9a\xc1\x52\xc7\x1f\x2a\xbf\xa0\xe7\x22\x2c\xfa\x21\xdc\x4a\x1d\x4f\x47\x70\x1a\x57\xea\x88\x55\xae\xa4\xac\xf1\x68\x2f\x1a\x2a\x45\x7a\xc0\x77\x57\x95\x9b\xa9\x5c\x67\xc4\xc1\x63\x2b\xb7\x42\xbb\x95\xa3\xa9\x95\x3e\x08\xf5\xa2\xb2\x8e\xc7\xb0\xd4\x00\x4a\x6a\x03\x4c\x2a\x33\xe1\xb6\xac\xe3\x47\x48\x8d\x34\x13\x66\xbb\xb1\xce\x2d\x54\x00\xb7\xb4\x57\xde\x8f\xb7\x9b\x3e\xc4\xdb\x7c\x2a\xfb\x2e\x14\x88\xbc\x41\x65\x3f\xc0\xb2\x59\x7d\xb1\xec\xff\x40\xc2\x9a\x9b\xca\x3a\x6a\x30\x29\x4c\xd5\x7f\x8f\x49\x43\xcb\x3a\xaa\x30\xa9\x82\x92\x70\x87\x70\xe5\x0b\x04\xa6\x1a\x52\xa3\x8b\xca\x3a\xde\xc7\x5c\x1e\x60\x88\xf7\x55\x7e\x05\x39\x2b\xef\xac\xec\xd7\x17\x0b\xd4\x61\x81\x19\x65\x1d\x07\xb0\x80\x8a\x05\xae\xc5\x0e\xe0\xa6\xf1\xca\x39\xf8\x78\x55\x65\x2e\x5c\x56\x8e\xad\x5c\x4a\xe5\x3f\xc2\xf2\xc3\xca\x3a\x3e\xc6\x02\x55\x58\x60\x50\xe5\x76\x2c\x70\x5e\x65\x33\x15\xf8\x04\x32\xc4\xa4\x4a\xde\x36\x99\xa3\xd5\x22\x6c\xe1\xe1\x57\xb8\x17\xd8\x3f\x53\xfe\xc4\x98\xcb\xb5\x9e\xfc\xab\xb0\x13\xf4\xae\x77\x83\xbe\x51\xd2\x6a\xb7\xf5\xd8\x0f\x11\xc0\x6d\x2a\xf1\x2d\x11\xa5\x13\xe7\xfa\xa6\xbd\x47\x3b\xa4\x5a\x55\xdb\x44\x5c\xd3\x2e\xba\x72\xe7\x8b\x97\x4b\x9d\x1e\x71\xa4\x6c\xa3\x20\xc5\xac\x4b\x80\x03\x60\x95\xe7\x8f\xff\x8b\x36\x66\x39\x78\xa1\x33\x4c\x81\xa0\x90\x7f\x6a\x6a\x41\x34\x14\x82\x44\x2e\x7a\x81\xea\xfd\x4b\x7c\xde\x05\x97\x9b\x80\x35\x53\x97\xe1\x4a\xb7\xe5\xd0\x64\xc8\xfb\xb5\xbe\x21\xc3\x4f\x2f\xfc\x19\x1e\xf9\xb8\xfc\xe8\x2f\x84\x4e\x7c\xf1\x23\x78\x97\x17\xc9\x89\xeb\x1d\xd3\x6d\xf1\xf5\x8e\x69\xd0\x72\x24\x88\x7d\x7d\x17\x81\x4a\x1f\xa2\x52\xfd\x8d\x52\xc0\xa4\xac\x80\xbd\xf2\x2f\xb0\xf4\x58\xae\x5d\xb3\xfc\x1a\xa5\x20\xbd\x44\x9a\x70\x81\xcf\x86\x3e\xa0\x98\x8c\xcb\x8a\x8a\xd2\x95\x02\xb6\x9c\xa4\x20\x5d\x5f\x8c\x1e\x1b\xf8\x4c\xbc\x52\x68\x85\x40\x4b\x70\x71\x69\xd9\x4d\xca\x9a\x8c\xe8\x16\x85\x3a\x92\xb0\xf4\xb1\x68\x85\xa3\x6b\xc5\xe4\x15\x36\xb6\x62\x32\x9a\x1e\x68\x95\x1b\x57\x5c\xd4\x95\x33\xc3\x16\x5f\x4b\xe9\x86\x5b\xad\x7e\x29\x08\xc2\x9e\xf8\xc2\x31\x63\x7f\x4d\xc8\x15\x94\x8e\x39\xe4\x62\x2d\xec\x3d\x86\x82\xed\x6a\x50\xe6\x6b\xa3\xe6\x1f\x0b\x34\xad\x1e\xaf\xac\x3a\x16\xf3\x1e\x5b\x9f\x71\xb5\xfa\x70\xbd\x7c\xaa\xf4\x54\xea\xb2\x8b\xdf\xc2\x6d\x72\xf7\x77\xf4\x69\xfb\x5c\xf6\x36\x0b\xbb\x6b\xe4\xe2\xa3\x92\x96\xc3\xaf\x3a\xfa\x94\xd9\xdb\x3c\xa0\xf8\x68\xb4\x0a\xd7\x2c\xe9\x76\x1e\xd7\x12\x79\x68\x79\x83\x61\xf6\x6f\x52\xa6\x5b\x15\x1f\x2e\x05\x53\x06\xa1\x27\xf7\x16\x7a\x78\xed\xd7\xec\xba\x06\xae\xc2\x8c\x6a\xe5\x46\x8b\xf4\x8d\x49\xea\x48\x11\xd6\xfd\x11\x52\x62\xce\x2d\x0b\x00\x75\x75\xa6\x43\xae\x92\x3f\xc1\x15\x74\x66\x07\x17\x09\xe0\x48\x57\x83\xa3\x7f\x15\xd0\xa5\x44\xce\xb3\x47\x97\xee\x32\x13\x1c\x33\x80\x50\x1f\xc7\x95\x23\x7a\x79\xbf\x99\x96\x91\x44\x8b\xa9\x7c\x1f\x56\xfe\xbc\xe8\x54\x75\xe6\xac\x38\xc4\x59\x5c\xf4\x4a\xca\x8e\x82\x42\x2e\x97\x1a\xb1\xfc\x70\xf5\xf1\xcd\x89\x50\x36\x13\x14\x81\x8a\xd5\xe2\x52\x80\x3c\xab\x3c\xd3\x36\xc7\xe8\xe7\xcd\x33\x5d\xad\xc0\x44\x20\x09\xfa\x52\x2f\xc5\xf2\xa3\x33\x8d\x76\xa8\x66\x61\x64\x92\xcf\x56\x84\x14\xb2\xbd\x84\xbf\xf1\xd1\x62\x18\x1b\x14\xca\x4c\xa3\x89\x8c\xa8\x79\x6a\x74\xaf\xf4\xb0\x85\xf7\xe1\xbc\x80\xa5\x99\xeb\x3a\x59\xe0\x7f\xa0\xb0\x32\x40\x36\xcb\x76\xa9\xd6\x4e\x6f\xf5\x41\x0c\x4d\x4c\x0c\xa5\x63\xf9\xc0\x51\x61\xaf\xb6\xbd\x88\xf6\xc9\xbc\x33\x83\xf6\xc9\x7c\x38\xa3\x6b\x9f\xcc\x27\x30\x3e\xb8\x7e\xc5\x1a\xdf\x31\xa3\xef\x95\xb9\xc5\x86\xab\x52\xf2\xbb\xad\x64\x53\xcc\xb4\xfa\xce\x2e\x0f\xc0\x12\x1c\xb4\x1c\x3d\xa6\xaf\x40\xa3\xa5\xd1\xd8\xd1\xb2\x63\x39\xf4\xc6\xdf\x81\x6b\x6b\x68\xc3\xa6\x2e\xf3\x36\xdd\x48\xb2\x55\x2d\x16\x27\xca\xe3\x53\xf2\x9b\xb8\x71\xb4\xed\x94\x1c\x38\x06\xd7\x7b\xab\x09\x0a\xdb\x47\x4b\x29\x32\xad\x0f\xfe\x81\xdd\x81\x1c\xbc\x13\x5f\x3f\x7f\x49\x17\x23\x97\xa6\x31\x46\x06\xb1\xc3\x7d\x66\xf0\xa4\x59\x44\xc0\x6d\xfa\xdb\xd8\x94\x38\x35\x71\xfd\xcd\x38\x7d\x95\x8e\x8d\xc1\xab\x8c\x4b\x77\xb7\x65\xc6\xcf\xa6\xc5\x45\x83\xc0\xbd\xb9\x04\xf7\x26\xb7\xcb\x8d\x89\xcb\x26\x36\x58\xd9\x16\x5c\xb8\x68\xef\x2c\x89\xdf\xcb\x81\xda\xb6\x58\x4c\xfb\x1f\x48\x09\x05\xf6\xe0\x86\x22\x39\xf0\x1a\xee\x62\x09\x3c\xdf\x66\xac\x29\x7e\x27\x7e\xb7\x1d\xef\x10\x50\xe0\x99\x78\xda\xe6\x78\xda\x8b\xf1\xb4\x37\x70\x0f\x10\xfa\xff\x81\x27\xe3\x69\x95\xfa\x1d\xdb\xf7\x92\x18\x7c\x97\x0f\xd0\x49\x6d\x8d\xaf\xf9\xa3\xf9\xdb\x4e\xb6\x5b\x33\x08\xc5\x85\x8d\x93\x93\x70\x89\x30\x01\x11\x02\x9b\x70\x66\x9b\x70\x30\x53\xb6\x9b\xb0\x90\x03\x2f\xc3\xef\x92\xc9\x04\x83\xfa\x45\xfb\xb0\x16\x13\x7f\x0e\xea\x4a\xf9\x71\x31\xd6\xc6\x5e\x46\x1e\xb5\xa0\x16\x7c\x99\x2a\x53\xf6\xbb\x08\xc8\x00\x5d\x4b\x1b\x81\x10\x5d\x45\xc5\x66\xe4\x30\xee\x21\x63\xe5\xd5\xdb\x62\xee\x46\x41\xa5\x3d\x07\x71\xb4\x48\xa7\x62\xad\xf5\xb6\x94\xd2\x53\x69\xbe\xab\x4b\x57\xa6\xf0\x7d\xd4\x22\xde\x77\xb3\x5a\x64\x72\x6f\xc1\x8a\xab\xaf\x87\x44\x53\x9a\x2f\x5f\x2d\x32\xeb\x29\x6e\x48\x31\xf7\x51\xa7\x59\x04\xaf\x8a\xa0\x64\xfa\x8d\x5e\x5c\x7a\xaa\x8f\x5c\xed\x1b\xac\xa8\x08\x72\x8a\x14\x34\x95\xe6\xf6\xef\x23\x78\x89\x94\x32\xfd\xaa\x53\xf8\x08\xae\x08\xd4\x51\x50\x02\xac\x2b\x88\xbe\xe0\x7f\x0c\xd7\x03\x53\x86\xab\xd5\x15\x74\xd5\xb9\x9a\x66\xc8\xef\x62\x3f\xa2\x2e\x77\xd5\x4a\x0f\xc3\xb4\x34\x77\xd8\x55\xbe\x71\xf2\x21\x46\x9e\xf5\xf9\x76\x3e\x37\xd3\x37\x74\x8a\x7b\x0b\x16\x5c\x13\x51\x17\xf3\x72\xa3\xbc\x3f\x6f\xe2\xb3\xf8\xbc\x32\x4c\x4e\x42\x6e\xaa\xf8\x69\xf4\x2b\x65\x0b\xd5\x70\x5c\x58\xda\x91\x26\x26\x95\x76\xf4\xf1\x1d\x74\x57\x09\xea\x9f\xa1\x80\xbb\x45\x50\x9f\x83\x6b\xd6\x1e\x33\xe1\x8e\x5c\xba\x5d\xe7\x52\x88\x4f\x6d\x4e\x59\x45\x14\xb5\xb7\x7f\xc7\xb6\xae\xe2\x83\xef\x7c\xf3\x9b\x34\x04\xe0\x56\x29\xbf\x43\xce\x44\x2e\x8a\xde\x62\xac\x46\x78\x3d\x8d\x56\x23\x68\xeb\xa8\x8e\x6f\x0a\x2b\x8d\x7c\x93\xa2\x9b\xd6\xf7\xd3\x98\xfb\x76\x37\x95\xa0\x95\x6a\x40\xac\x27\x89\x22\xf8\x1b\xed\xa7\x77\xd2\x92\x9e\x9b\xe6\xeb\x0b\x7d\x42\x6a\xad\xfc\x26\x6a\xc9\xed\x23\x1e\x87\x6e\x1e\x74\xb5\x46\xce\xc3\x19\x6e\x22\xe3\x28\x46\xe1\x77\x69\xfc\xa9\x31\xf3\x9b\x44\xf9\x2a\xc6\x93\xac\xd4\xc9\xed\x8c\xdc\xae\x26\xe9\x5d\x62\x76\xc1\xff\x26\xb4\xec\x7e\x96\xb1\xed\xfd\x38\x3d\xfc\xee\x8b\x8c\x3f\xbe\x23\x66\x21\xc1\xf2\x5d\x5c\xfa\xce\x10\x84\x9c\xe6\x4b\xcd\x63\x85\x57\x0b\xae\xa0\x9e\xd8\x47\xd8\x1c\xe4\x6b\xd4\x77\xf7\x50\xd3\x58\xc1\x4c\xd5\xb2\x3e\x65\x45\x55\xdb\x58\x61\x63\x1e\xba\x93\xbb\xfd\xa3\x68\x1b\x99\x8a\xd9\x05\xe5\x6c\xfc\xd1\xb8\x3a\x41\x39\x28\x94\x2a\x9d\x1a\xba\xcc\x19\x08\xae\x27\x5e\x13\x2f\x2c\x9f\x1d\x0b\xa5\x70\x79\xd1\x37\x73\xd3\xc4\xf4\x3c\x03\xcf\x56\x0e\xf7\x0c\x10\xac\xdc\x3e\xbe\xa3\x40\x9f\xb4\x78\xde\x21\xb2\xa3\x71\xd4\x02\x1f\xe0\x08\x7f\x20\x04\x8e\x00\x02\x79\x7a\xe7\x74\xe5\x21\xf8\x9f\xc2\x69\x8a\xb8\xf2\x50\xb6\x30\x4a\xa1\x0a\xc9\x3a\x34\x71\x0b\x96\x15\x66\xd0\x85\xaf\x77\x93\x3e\x61\x52\x2b\x57\x2d\x99\xec\xa6\x11\x57\xe8\x57\xde\x52\x81\x45\x0b\x81\xd6\xdb\xdb\x8c\xad\x07\xaf\xe9\x02\xfc\xce\x83\x6c\xed\x3e\x15\x21\xa3\xcb\x94\x16\x6b\xc7\x4c\xf7\xaa\x8a\xd8\x66\x51\x53\xea\xb8\x41\xf2\x3e\x7e\xbf\x1c\x36\x86\x8c\x11\x46\xa6\xe2\x8c\x74\x91\xeb\x69\xc5\x3e\x36\xcd\xad\x1e\xc5\xd0\x36\x6f\x79\x27\x8e\xcf\x28\x2a\xeb\xde\x82\xf7\xc2\x74\x1a\x7f\x9d\x0b\x9e\xa5\x36\x89\x54\xee\x67\x11\xd7\x25\x73\xdc\xcf\x76\x75\x44\x28\xac\xe9\xad\x0b\xa7\x1e\x20\x2e\xbe\xb4\x2b\xe5\xb6\x07\x51\x2b\x19\x3a\xea\xc6\x07\x69\x17\x0f\xdb\x54\x17\x5d\xdc\x4b\xff\x12\xf5\x12\xe1\x20\x87\x4f\x6e\xd7\x7b\x20\x6c\x7c\x02\x77\x65\xa9\x84\xb3\x4a\x68\x6c\xf2\x63\x4a\x1c\xfe\xf1\x07\x70\xbb\x0b\xf5\xcf\x6b\x03\x5f\x2b\x87\x21\xe2\x2b\xc0\xcc\x03\x0f\xe0\x8a\xd6\xe8\x44\x61\xc7\x3b\x97\xe1\xb0\xaa\xcb\xea\xe5\x16\xe5\x4d\x24\x65\xd5\x7f\x2c\xb9\xa9\x72\xfb\xb2\x54\x61\x77\x50\xcd\x4f\xae\x8f\xf6\x91\xf6\x64\xb2\xfb\x97\x64\xb2\x00\x53\x22\xcd\x67\x69\x82\xc0\xda\x6d\x86\x44\x0e\x0b\x3b\x4f\x94\x1d\x2b\xb4\xd2\x2a\x1e\x59\x3d\x80\xc2\x4b\xa1\x28\xbe\xea\x10\xe9\x8d\x03\xaa\x07\xed\xce\x1f\x68\x5d\x4f\xf9\x6d\x34\xf3\x65\xe3\xe4\x1a\xc1\xbf\x1d\xed\x06\x6d\x3b\x55\x03\x47\xb1\x22\xfd\x96\xb2\x39\x1a\x9c\x50\x96\xb7\xd4\x33\x12\x5b\x63\x03\x5f\x36\xbc\x4f\x85\x12\x57\xe0\xa6\xfc\x7f\xa2\x5d\x7c\x61\x21\x98\xd9\x79\xcc\xbe\xa6\xf7\x61\x4a\xc3\xa1\x1b\x21\xb6\xcd\x93\x16\x43\xc7\x77\x07\x50\x23\xcc\xf2\xbe\x48\x30\x33\xf0\xcd\x68\x37\xaf\xfa\x60\x5a\xdc\xab\xde\xb9\x10\xc7\x0f\xbb\x05\xbd\x49\x67\xc3\x63\x6c\x54\xff\x01\x8a\xb9\x48\x57\xb5\xa7\x25\x6c\x97\x85\xb6\x40\x5f\xe9\x7b\xa2\xaa\xdd\x1d\xab\x67\xc8\xf5\xf2\x96\x03\x4c\xad\x91\x07\x90\xd5\xae\xaf\xd4\x55\x2d\x57\x33\x4c\x82\x86\x0f\xa0\x50\xc1\x15\xe9\x78\xcc\x47\x3f\xe8\x5d\xf8\x7e\x7d\xbb\x1b\xf9\xda\xd1\x4b\xf8\x70\xf4\x15\xa4\xb4\xbe\x43\xf4\x07\x44\x27\x14\x2f\x50\x24\xb7\x44\x4d\xae\x60\xc2\xbe\x0b\x7d\x99\x31\xee\x00\xf0\xa5\xb8\x82\x91\x0b\xf4\xd7\x59\xf7\xf6\x63\x93\x67\xb1\xfb\xd8\xfa\x76\xf1\xcb\xd2\x89\xf7\xf8\x3e\x2d\x7d\x98\x17\x7d\x8d\xa5\x0f\x9b\x44\x5f\x43\xe9\xc3\xe6\x45\xbe\xbd\xca\x2a\x9b\x3a\xc7\xfc\x16\x9e\xfe\x02\x66\xf2\x7f\x4a\x1f\x32\xcf\x15\x02\x83\xf4\x59\xcb\xe1\x6c\xac\xb4\xc8\x7d\xec\x79\xbe\x3e\x76\x61\xed\x13\x06\xd7\x7b\x40\xd8\xe2\xdd\x0f\x81\xc8\xad\xa5\xab\xf6\x73\xe2\x1c\x77\x78\xc9\x2c\x5a\xd3\x78\x43\xe9\x1a\xfe\x0a\x75\x19\xef\xeb\x53\xba\xc6\x34\x5e\x2d\x30\x0b\xf9\x2d\x4a\xf1\x81\x4a\xd4\xfa\x59\x27\xa4\x0e\xab\x90\x57\x8f\x1b\xd4\xf7\x21\xff\x23\x89\xf5\x91\x35\xd6\x21\x87\xf2\x07\x36\x73\x9a\xfb\x3e\x7c\x3b\x96\x2e\xe3\xe6\x54\xda\x24\x8f\xc8\xcc\xbb\x4f\x9f\x88\x5f\x4a\x6d\x2e\x52\xbc\x07\x76\x19\x81\x97\x27\xab\x51\x6a\xf7\x80\x07\x2e\x77\xed\xf6\xb5\xdc\x47\xaf\x34\x4a\x97\xf3\x57\x01\x17\xf9\x5c\x25\x61\x8e\x2d\xd6\x0e\x9a\xd6\x5b\xd5\x1b\xeb\x4b\x3b\x52\x97\x5d\x04\x1e\xb2\xa7\xe4\xfe\xfe\x7d\x4a\xe4\xfe\x25\xc2\xee\x69\x31\x75\x56\x9f\x7a\x48\x83\xc7\xe8\x21\xa8\x50\x44\xfc\x9e\x13\x79\x5d\xc7\xf2\x2a\x1d\x97\xfa\x7b\xd9\xb3\x8e\x9b\x1c\xd2\x76\xdf\x4b\xd8\x85\x05\xff\x83\x9d\xb4\x2b\xcd\xe2\x0e\x2d\xcd\x96\xdb\xe3\x28\xf6\x82\xe1\x1d\xf7\xd2\x02\x6e\x6a\x27\x7a\x83\xdc\xf2\x73\x65\xaf\x8c\x97\xe5\xb8\xa9\xeb\x93\x21\xee\xc9\x4d\x5d\x76\x21\xc6\x32\x80\xed\xfd\x1c\x74\x80\x87\x0e\x9c\xaf\xe6\xdb\xeb\xe1\x36\x7a\x18\xf1\x9e\xd0\x6d\xfd\xb7\xbe\x46\xd8\xae\xce\xdf\x29\x1d\x5b\x04\x81\x90\xfe\x92\x16\xdd\x60\xef\x6b\xfa\x6e\x09\x08\x56\x5f\x95\xbb\xb6\xc5\x3f\x86\x2b\x7d\xe9\xb8\x00\x71\x24\xb4\x25\xec\x2c\x7e\x55\x99\xfe\x5a\xb8\xe7\xfa\x71\xf2\x7c\x6d\x72\xa3\xb6\xfb\x34\xe8\xe5\xda\x45\x5d\xae\xac\x74\x6c\x25\xee\x44\x5e\x65\x0b\x34\xb1\xc5\x88\xa2\x39\x84\xcb\x02\xd2\x55\xdf\x5f\x58\xcb\xcf\x1b\x87\xd9\xa8\xde\xe7\x12\x5a\x4e\xef\x6a\xf9\x12\xc5\x9b\x0e\x2d\x3f\xa7\x4c\x7f\x9e\xb0\xcc\xd5\xe5\x9e\xf6\x73\x40\x50\x74\x2d\x35\xba\x92\x45\x96\x5d\xe7\x16\xe5\x2a\xab\xac\x4a\x8a\x5c\x60\x35\x17\xd0\x7b\x8c\x65\x16\xe5\x36\xab\x3a\x35\xe6\xae\x11\xa4\x46\xdc\x8e\x93\x07\x43\xb4\x78\x76\x38\x61\xa7\xeb\x22\x5d\x7a\x26\xdf\x43\xfa\x7e\xa2\x54\x63\x96\x6f\xb3\x62\xb5\x3c\x5e\xaa\xb1\xb8\x3f\x05\x68\xc2\xda\xa7\xcd\xcc\x03\x36\x26\x09\x7c\xfd\xd8\xeb\xd5\xbe\xac\x56\x3d\x54\x89\x3e\x5a\x3a\x31\x17\x2a\x09\x81\x1c\x10\x4c\x90\xbe\x6b\x04\xff\x08\x13\xee\x86\x38\x0a\x20\x5c\x75\x10\xb7\xaf\xc7\x13\xb6\xc4\xe9\xc0\x85\xe2\x34\xf0\xc9\x84\x2d\x35\xe0\x94\x81\x54\x35\x97\xcf\x3f\xbc\x7e\x7e\xb3\x7f\xfe\x61\xc1\x9f\x84\x95\x3b\xae\x16\xfc\x67\xf0\x30\x89\x8e\x31\x82\x3f\xc2\xb6\xe3\x4f\x76\x7f\x2c\xcf\x06\x54\xec\x80\x03\x32\xb8\xef\x55\xe0\xea\xe8\xd6\x40\x9d\xe0\x5f\x82\x21\x52\x01\x84\x31\xe2\xd5\x8a\xef\x28\xc5\x7d\x78\xf0\xd0\x6c\x3b\x9e\x2f\x55\x1f\xcd\x52\xbc\xcd\xeb\xb9\xdc\x31\xcc\xf1\xc9\x05\xd8\xaf\xa0\xea\xd6\x52\x73\x2f\x58\x76\xc9\xae\x01\x5c\x29\x27\x6c\xab\x5e\x32\x28\x56\x40\x73\x0b\xde\x66\xa5\xc0\xe2\x06\x79\xf5\x1e\x5d\x1c\x8a\xe0\x92\x98\xb0\xf7\x30\x0e\xe3\x5b\x58\x52\x99\x6d\x5d\x6f\xca\x9d\x24\x8e\xa4\xea\x4b\xfb\x4f\x89\x79\x0f\x4f\x2c\x3e\x0a\x98\x2d\x3e\x1a\xf1\xe1\x2c\xda\xb6\xaa\x25\xdf\x44\x53\xdd\xc5\x47\x85\xb5\x77\x63\x14\x50\x60\x05\xe4\x21\xbf\x74\xc2\x24\x5f\xe4\x6d\x82\x01\x94\x00\x69\x6c\x2b\xed\xb8\x60\xd9\x00\x61\xdb\xfe\x25\xfd\x3c\x6e\x22\xd2\xb2\xaf\x68\x49\x4c\xe9\xa9\x4b\xc5\x14\x57\x6b\xe9\xa9\x8b\x7d\xd7\xe9\x39\xc2\xda\x41\x26\x3a\xa9\x6d\xb6\xf5\xaa\x3e\xe2\x9c\x29\x53\xdd\xd4\xe6\xb2\xef\x23\xbc\x89\x91\x69\x4b\x15\x52\x6d\x4b\xb5\x7f\x9f\xe8\xf6\x37\x89\xe3\x95\xe2\xc6\xa9\x53\x58\x29\x61\xed\x61\x24\xd0\x0c\xeb\xeb\x3c\x9e\xec\xd1\xa8\x5e\xd7\x56\x7a\xea\x82\x65\x75\x84\xcc\xfe\xa8\xf4\x25\x2f\x9d\xe4\xe1\x37\xba\x53\x99\x9d\x89\xcb\x78\x4f\xb0\x00\x11\xf8\xed\x30\x1e\xd0\xc0\x58\xb4\x99\xcd\xba\xd8\xd1\x79\x6b\x88\xfc\x0b\x8a\x60\xb3\x81\x27\x81\x69\x3d\xee\x10\xe1\xe8\xc3\xd3\xce\xea\x00\xc7\xd2\xab\xae\x16\xfb\x4d\x61\x23\x06\x38\xce\xc7\xe6\x67\xa7\x03\x5f\xdb\x69\x70\x12\x00\x01\xd1\x23\xc5\xc8\xf7\x70\x9d\x8e\x3b\x5c\xea\x84\x80\x0b\x60\x47\xff\x8a\x77\x97\xc2\x5d\xe4\x4a\x48\xc6\xc1\x1b\x8d\x7b\x74\xa6\x37\x4f\x9e\x38\xfd\xa8\x3c\xc3\x2a\x48\x29\xd8\x5a\x2b\x8d\x1f\xb0\xeb\x7a\x33\x1b\x50\x07\x8e\xa5\x90\x37\x75\xe2\xfc\xa3\xc0\x94\x8b\xbf\xa2\x78\x20\x9c\xb0\x79\x7a\x05\x63\x78\x79\x7a\xb3\x36\xfd\x6e\x72\xd3\xa6\x37\xb3\xbd\xd8\x52\x4d\xaa\xab\x01\x99\x7f\x99\x35\x91\xd7\x25\xac\x50\xdc\x8c\x8e\x7b\x06\xab\x50\xdc\x2c\xf6\x57\xa7\xf2\x53\xa4\x90\xc5\xed\xa3\x81\xdb\x1b\x5d\x09\xbd\xbb\x58\x29\x40\x0b\x3c\x98\x56\x36\xcc\x4b\xe0\xc0\x54\xcf\xc4\x02\x0b\x94\x5b\x72\x33\x8c\x7d\xe9\x84\x5c\xdf\xf7\x91\x05\x78\x28\x59\x11\x3f\x15\x98\x18\x87\x78\xb6\x75\xe9\x55\x7a\x5e\x04\xe7\xa3\x27\xe3\xfe\x9f\xd9\x19\x38\x1a\x57\xc2\x2d\x30\x3c\xd0\x3a\xfb\x0c\xd9\x6e\x3c\x86\xa7\x6b\x24\x2e\x38\x83\xaa\x20\xb7\x9b\x95\xcc\xc0\xd9\x05\xd0\x93\xc5\x36\xf9\x33\x88\x06\x3e\x3e\xb9\x3d\x64\x31\x73\x31\x09\x8f\xda\x94\xda\x53\x7c\x13\x12\xa3\x92\xf2\x7e\x6c\x95\xc5\x35\x77\x91\x2c\x67\x84\x24\xdc\xc4\xc4\x85\x24\x4b\x1f\xba\xf8\xd9\xc5\xd2\x97\x14\x6b\x46\x57\x43\x38\x05\xb3\xca\x1a\xdb\x54\xca\x5e\xba\xa6\x08\x81\xfd\x1c\x73\x0a\x7b\x42\x07\x4d\xf1\xf9\x9d\xb4\x1d\x2e\xf0\x1a\x7a\x4a\x3b\x11\x58\x38\x61\x53\x59\x45\x3f\x16\x19\xbd\x4d\xa5\x7c\x56\x75\x1d\x2e\x4b\x8d\x5e\x8c\x65\xc6\xe9\x65\xc2\x7a\x99\xdf\xb3\x32\xfd\xa0\x4c\x0a\xc2\x42\x6c\xa3\x33\xb1\xe4\xe5\x7a\xc9\x33\x7a\xc9\x07\xee\xe4\xe2\x87\x0d\x8e\xd6\xf3\x2e\x13\xf4\x65\x52\x0c\x8a\xb3\xf4\x3d\xdc\xa1\xc6\x01\x30\xb3\x01\x4c\x4c\x86\x27\x48\x64\x9b\xb6\xc2\x27\x5f\x90\x6a\xed\xe7\x50\xd7\x87\xbd\xb4\xfc\x1a\xa0\x29\xab\x70\xb7\x92\xf6\xe2\x1d\x04\xb0\x2f\xdb\xd9\x18\x59\xaf\xb7\x77\xbb\xc0\xf4\xab\x7c\x87\xde\x33\x09\x0f\xa7\x8b\x3e\x88\x79\xbf\xd3\xf3\x1e\x88\xe7\x21\x5d\xa2\x37\x61\xde\x2a\x3d\xef\xc6\x78\x1e\xf5\xf3\x4a\xa2\xa9\x9e\x37\xbe\xab\x1e\x8c\x51\x94\x26\xb3\x36\xeb\x79\x83\x58\xde\x30\x95\xc6\x0f\xa8\x30\x50\x8a\xad\xd9\xb5\x06\x43\xce\x1b\x3e\x81\x10\x77\x1f\xf2\x84\x3d\x3e\xa0\x60\x43\xd8\x99\x3d\x6c\x32\x66\x1e\x6a\xae\x55\x19\x4a\xb1\xe3\xc4\xab\x25\x52\x47\x51\x28\x80\x3e\x33\xd7\xb6\x4f\x9d\x0c\x61\xc5\x01\xb8\x17\x47\xa8\x94\x26\xec\x6c\x40\xf2\x3e\x83\xcd\xce\xa2\x13\x57\x2c\xfa\x4b\x4e\xfd\x38\x1e\x2f\xba\x9a\x67\x59\x20\xbc\x55\xd0\x9d\x4b\x93\x61\x41\x33\x15\x82\x06\x77\x19\x0c\x9e\x4c\xdb\x59\xf5\x05\x5c\xb8\xb9\xd5\xd8\xe2\xad\x7b\xa1\x55\x7a\x05\x75\x2f\xfc\xaa\x0e\x2b\x6d\x98\xae\x87\x7b\x6d\xdd\xed\xf1\x5d\x65\xf7\x28\x94\x2d\x7f\xa6\x50\x16\xc4\x53\x5e\x18\xb1\x0c\x45\x3d\x40\x4f\xf1\xe9\x2b\x5d\x4e\x09\xd9\x60\xd7\xcc\x74\xe2\xdc\xd5\x52\x7b\x7c\xee\xea\x61\xb8\xd5\x4e\x2d\x60\xee\xd0\x8d\xd8\x5a\x4b\x7c\x76\x57\xb7\xc1\x24\x74\xd6\x99\x6f\xe3\xfc\x2a\xb0\x88\xd4\x7e\x4d\x78\x4a\x21\xc5\xf9\x37\x34\xaa\x53\x2c\xf2\x41\xf4\x01\x43\xf9\x17\x5a\xb8\xf0\x94\x22\xf2\x27\xa6\xd0\x41\xb8\xe7\x4a\x2f\xe3\xaf\xcd\xd0\x24\x18\x6d\x14\xa0\x69\x0b\x68\x40\x47\x40\x13\xe4\xce\x3f\x49\xcf\x72\x5e\xbe\x88\x67\xee\x40\xe8\x38\xdd\xce\x86\x54\x9e\x39\x0d\xdf\xa3\xd9\xe5\x25\x45\x72\xde\xac\x6e\x12\x4b\x1b\x7a\xe7\x5b\xa5\x87\x0b\x21\x10\x46\x0e\x55\x97\x58\x8c\x66\x50\x28\x8e\xde\x46\xac\x72\xab\xf2\xf0\x2c\xe8\x6f\x2d\x4e\x88\xba\xb0\xbf\xd5\xaa\xc7\x82\x26\x35\x3e\xf1\x0f\x76\x05\x50\xd8\x02\xc5\x95\x25\x45\x4a\xf1\xd1\x40\x6b\x68\x4a\x1e\x27\x0e\x06\x1e\x53\xaf\xcb\xaf\x64\x6c\x16\x96\xff\x25\x57\xd1\x3e\xec\x7c\x2e\x6a\x09\x4d\xc9\xe7\x14\xb3\x3c\x40\x36\x85\xf3\x58\xd7\xf3\x66\xb1\x4b\x21\x47\x9a\x25\xbb\x6b\x83\xf5\x34\x46\xc7\xb0\x57\xcb\xbd\x9b\xa6\x5a\x9b\xe8\xd2\xb2\xfa\xee\xf8\x54\xab\xfe\x96\xd0\x93\xcf\x2e\xd3\x68\x3c\x8b\x0f\x80\xd5\x06\xad\xc7\x26\x5d\x41\x69\x6b\x5f\x74\xdb\xef\x0c\x74\xcd\xcb\x87\x0e\x9e\x4f\xf3\x6e\xb7\x61\xe3\xac\x7e\x1e\xd5\xef\x3e\x21\xfb\xdb\xdb\x12\x26\x64\x69\xd2\xb9\x09\x35\x1e\x70\x52\x0e\x30\x59\xab\xe8\x84\xd1\xc8\x54\xa6\xdb\x54\xda\x5e\x4b\xcb\xd8\xb6\xdf\x0a\x24\xbd\x19\x5a\x50\xae\x94\xeb\x05\x6f\x4d\xb4\x51\x9f\x45\x06\xfe\x88\x0d\xcf\x04\xfe\xc5\x6b\x06\x5d\x4b\xe0\x3f\x40\x6a\xe4\x56\x3c\xfa\x16\xdb\x5b\x83\xc7\x64\xb4\x93\x00\x08\xfe\x47\x38\x9a\x01\x45\x51\xd2\xae\x06\x44\xe2\xa5\x7e\x6d\x21\xff\x35\x7d\xeb\x76\x3d\x61\x1a\x4b\xc8\x50\xe1\x1f\x05\x62\x90\x49\x16\x36\xdf\x99\x83\xf9\x9e\xdb\x50\x2c\x14\x4c\x85\xa7\xcb\xa0\x34\x1d\xb6\xab\x60\x71\x48\x18\x64\x89\x37\x44\x27\xf1\x6a\xc1\x5b\x71\x30\x46\xca\x8d\x73\x6b\x2a\x74\x18\xb1\x81\x8d\x78\xe4\x63\xed\xc8\xb9\xe7\x9e\x0f\x0c\x45\x70\xed\x94\xe6\xd2\x77\xbb\xe0\xa9\xb9\xc2\x8e\x60\x5b\x23\xf6\x79\xab\xb5\xd9\xc3\x0e\x65\x1d\x06\x01\x6f\x49\x45\xac\x9e\x52\xd4\x22\x0b\xee\xec\x1d\x68\xa5\x73\x26\x7d\x11\xa9\xd6\x76\xb2\x06\x8f\xf1\x04\x7a\xa4\x2b\x43\x32\x3f\xf3\x70\xd2\xe9\x18\x10\xb8\x49\x14\x62\x8e\x67\xe9\x39\xca\xab\x4b\x39\xdf\x71\x40\xb5\xe8\x1e\x3c\x0f\x0d\xe7\x14\x6b\xd3\xe7\xd6\xb8\x9a\xa2\x26\xb9\x06\xfc\x4e\xc5\x11\xc0\x82\x81\x06\x5f\x4b\x34\xa4\xa3\xb9\x75\xc2\x02\x7a\x2b\x90\x72\xb2\xa6\x02\xe1\x87\x93\x26\xe8\xc7\xd3\x46\x37\xe3\x79\x9f\x5b\xb7\x43\xbf\x62\xcd\x15\xc6\x9f\x2b\x58\x53\x91\xf8\x17\x17\x9a\xad\x73\xf0\x0c\x5f\x6f\x23\x31\x0b\x73\x07\x27\xdd\xf0\x1f\xcf\xdb\xa2\xd0\x56\xbf\x6d\x1e\x76\xc9\x38\x34\xd5\xdb\x48\x04\x9b\x85\xaa\xcf\xd7\xa8\xac\x3a\xec\xea\x94\x8e\x41\x58\x3c\x81\x8e\x15\x89\x0d\xcc\xc5\xab\xf7\x40\x6c\xe0\x1c\xba\xa9\x37\x8e\x2e\x5b\x04\x8f\x63\x7d\xcd\x63\x7d\x47\x5d\x9f\x8e\xf5\x1d\x80\x3a\x63\x7d\xf5\x65\x9d\xd4\x48\xba\xdc\xd2\x56\x2f\x8f\x47\x1c\xba\x35\x56\x51\xf9\xda\xa0\xf7\xf2\x77\xcf\x80\x32\xd1\x66\xec\x9f\x71\xbe\x80\x45\x2d\x06\xf2\x5a\x6e\xc7\xb3\x71\x33\xef\x9c\xcc\xa5\x5a\xb8\x60\x38\xc9\xa9\x1f\x8c\xba\xad\x1d\x8f\x26\xce\xbe\x73\x32\x6d\x3e\x67\xa7\x5e\x6e\x3b\x86\x27\x15\x63\x0b\xb2\xb7\x65\xeb\x3c\xba\xfe\x10\x3f\x7c\x17\x95\x81\x1d\x0f\x18\xf2\xb3\xe7\xd8\xc0\x71\xfa\xfc\x02\x42\x26\xfc\x57\xb2\xd3\x48\xb5\x15\xf3\x38\x2e\x4e\x3f\xc6\x1f\x4e\xb2\x3e\xed\x66\xd1\xae\x07\x67\x19\xd5\x36\x8e\xc6\x43\x99\xe5\x1c\xa9\xf3\x6a\x26\x29\x63\x3c\x27\xcd\xca\x71\x09\xe5\xba\x9d\x8f\x8c\xfc\x21\x4d\xca\x00\xec\x4c\x08\x57\xec\x13\x4e\xa2\x07\x2c\xdd\x6e\x12\xfb\x4b\xed\xbc\x38\x11\xd8\x82\xea\xcf\x85\xda\x6f\xe7\x94\x4e\xe6\xca\x4e\xe3\xaf\xf8\x75\x49\x05\x09\xb8\x29\x56\x0f\x81\x0d\x4b\xf4\x7d\x9b\x58\x1a\xf9\x7d\x24\xad\xe0\x61\x41\xa2\xd5\x60\xee\x7c\xc0\x29\xfa\x97\x92\x73\xf8\x03\x22\xae\xad\x9b\x81\x8e\x47\xf2\x9d\xd3\xe0\x5f\x11\xfc\x9b\x83\x2f\xa1\x0e\x7e\x00\x3d\xf3\x1c\x99\xe7\x4c\x87\x7f\x99\xf0\x6f\x24\x1e\x39\x03\x69\xf9\xb8\xb7\x4b\xc5\x53\xcc\xc8\x2f\x4c\x3e\xd2\x88\xff\x81\xfb\xc6\xf8\x13\xda\xb3\x6c\x43\x80\x91\xc5\x73\x39\x0e\xcf\x97\xce\x85\x24\x8f\x62\x57\xaf\x8b\xed\xaa\x87\x11\x90\x4e\x25\x2d\x4b\x51\x1c\xea\xb1\xfe\xd0\xa8\x87\x41\xf7\xd8\xa9\x21\x8f\x15\x2e\x76\x94\x2b\xfd\xe4\xa7\x66\x66\xb9\x6c\x34\x17\xa4\xcf\x01\xbd\xae\x1f\x6c\x9d\xcb\xfa\xd1\xf4\x65\xf7\xfe\x60\xfb\x35\x09\xe7\xe9\xd2\x73\x42\x3e\xd2\xdf\x98\x5a\xb2\x0e\xc6\x71\x99\xe7\x74\x1a\x04\xc3\x65\x13\xe7\x4d\xd6\xcf\xa8\xb4\x69\x23\x6f\xa1\xfa\x99\xc6\x32\xa9\x44\x34\x72\x7f\x0d\x6a\x6d\x06\x14\x88\xa6\x9d\x2b\x6f\x72\x08\x23\xd9\xad\xcf\xd3\xe9\xe1\xc2\xc6\x28\xe2\x31\x70\xfb\x9d\x78\xe8\xb4\x72\x9d\xc5\x7d\x7c\x59\x1f\xe5\x21\xab\x79\x86\xd5\xfd\xd1\x62\x9f\x54\xc3\x4b\xd5\x36\x77\x8d\xef\x2b\x34\x5f\xcf\x5a\x8d\x09\x89\x23\x88\xdb\xb8\xb9\xca\x10\xac\x57\xf5\x1f\x13\x7f\x52\xce\xb3\xb2\x83\x22\xb4\xdf\x80\x1f\x85\xf1\x31\x6e\x84\xd9\x4b\x98\x6d\x67\x47\x78\x5b\x33\xa8\xcb\x39\xcc\x1f\xd8\xb0\xd8\x38\x00\x69\x09\x04\x3f\x52\xbb\xc7\xd7\x5f\x4a\x42\xa4\x78\x43\xfc\x60\x7c\xda\x2d\xe2\x37\x93\xd0\xdf\x13\xbf\x94\xda\xad\xe2\xa7\x8a\xb7\xd1\x3c\xde\x00\xe7\xe1\x8c\xd7\x45\x7b\xf1\x30\x3a\x82\x5a\xbe\x58\xf7\x32\x7c\xff\x88\x0d\xf4\xb0\x93\x3d\xc5\xf3\x26\xb3\x33\xfb\x9e\xed\xc4\x69\xfa\x08\xaa\x52\xc2\x89\x70\x61\xaf\xbc\xf1\x0d\x9f\x51\x6c\x69\x27\x85\x01\x28\x95\x99\x90\xa6\x95\x74\x1a\xa7\xf8\x6e\x7d\x86\x1d\xb9\x9e\xa2\x1f\x2b\x6e\xe8\xaf\xc2\x70\xd2\x33\xc6\xa9\xc8\x7b\xd0\x69\xb6\x78\x54\x4b\x60\x28\x8a\x4d\x73\x8b\xb6\x16\x08\x12\xa6\xae\xe1\x1f\x9d\x32\x3e\x0c\xd2\xb7\x21\x0a\x95\xe3\x9c\x93\xb9\xcb\xf1\x07\xe2\x06\x61\xe3\xd3\x24\x69\x7d\x85\x8d\xc5\x00\x6b\x2b\x26\xa3\x4f\xaf\x92\xaa\xd5\x1f\x90\x1a\xca\xa4\x5c\x78\x7a\xdb\x83\x49\x31\xc1\x7f\x39\x14\x7e\x1b\x0b\x2b\x79\x56\x3a\x2e\x1a\x8f\x04\x97\x6a\x6c\x65\xa7\x31\x71\xc9\xb5\x4a\x5f\x05\x06\xe3\x51\x3a\xc1\xfb\x2d\xfc\x95\x8b\x6b\x85\x1d\x33\xad\xea\x6b\xf8\x20\x75\xd8\x05\xbf\x85\x96\x95\x64\x0a\xfe\xdf\xd1\x8d\x95\x2d\x03\xd5\xcf\x2f\xad\x47\x2a\x2c\x38\xdb\x75\x4a\x0b\x35\xa6\x43\x8f\x2a\x4b\x2c\x52\x8d\x55\x79\x02\x61\xa9\x6b\xf1\xd7\x3c\xb3\x1d\x4f\x77\xdc\x48\x87\x3e\xec\x65\xe5\x64\xca\x59\xdc\x40\x7c\xe7\x6a\x0a\x04\xd7\xa4\x45\x5f\x03\xf6\x9a\x38\x04\x13\x56\xbd\x40\x03\xa2\xe6\xce\x55\xc7\xe1\x31\x45\x1c\xdf\x82\xa7\x58\x88\x9f\xaa\xd3\xf7\x1a\x9c\x43\x51\x99\xa7\x07\xf3\x18\x7b\x8b\xf7\x90\x24\xd2\xa0\x5a\x2a\x59\x40\xdd\x68\xf0\x46\x02\x5f\x44\x55\x46\xa7\xb1\x78\x92\xc6\x44\x7c\xd3\x73\xbd\x05\x67\x38\x6a\x30\x10\x1e\x85\xcb\x84\x77\x96\x22\x9e\xc2\xce\xfa\x12\x3c\x66\xa2\x3e\x0d\x3f\xd4\x51\x22\xad\xaa\xe5\x84\x69\xf5\x72\x4b\xd6\x07\x65\xdf\x60\x3e\xdf\x81\x1d\x7c\xe5\x0c\x56\xf0\xee\x2d\x91\x93\xe3\xd4\x16\x1e\xd9\x88\xb0\x06\x22\xac\x1d\xc9\xc2\x8e\x7a\x79\x5f\x59\x1d\x4e\xe2\xfb\x83\xc2\xb4\x7d\x72\xcb\xa8\xe2\x5a\x56\x79\x11\x56\xde\xe1\xdd\x5b\x9e\x1c\xad\x1e\xb5\xaa\x56\x6e\x31\x5f\x2d\xaf\xda\xab\xfd\x1a\x63\xd0\xab\xa3\x7f\x53\xd2\xb0\x33\xfc\x71\x65\x32\x63\xd1\xc9\x56\xc5\xd3\x8d\x4b\xeb\x4f\xb3\xb9\x69\x48\x7b\x06\xc7\x27\x08\xcf\xe4\x46\xb1\x37\xf7\x8a\x59\xe1\x26\xc1\x90\x07\x97\x4d\x99\x04\xfc\x13\x14\x24\x5c\x81\x30\x29\x09\x6f\x03\x4f\x73\x5d\x33\x6d\x50\x1f\x23\x4f\x6d\x41\x31\x3b\x85\xdc\xff\x0a\xc7\x96\xcc\xe9\x19\xa0\x46\x8b\x27\x6d\x86\x6a\xe2\xc5\x93\x9e\xc0\xcb\x3d\x93\x1e\xc7\xcb\xcc\xad\x2f\x33\x61\xc8\x95\xe7\x5b\xd5\xbb\xdb\xc1\x0d\x8b\x35\xbb\x5a\x13\xc0\x92\x73\x95\x6a\x80\x5d\xcb\xc0\xd6\xe9\x19\xb1\xfa\x4a\x7c\xb3\xc1\x2a\x56\x5b\x98\xbd\xda\x4d\xae\xc3\x3b\x93\x86\x40\x03\xbe\x3f\x26\x80\xa2\xf5\x62\xbb\x67\x11\x28\x31\x0b\xc0\x3c\xa2\x27\x02\x76\x3b\x13\x14\x24\xf5\xe4\x09\x28\x17\xdd\x4a\xfe\x48\x82\xea\xc4\x9c\x95\x98\xb3\x2e\x21\x95\x50\x2c\x99\xc5\xd6\x6a\xde\x0f\xf8\x68\xd7\xe2\x81\x72\xb7\xc7\xd8\x89\xe5\xf1\x88\x01\x8a\x56\xde\x89\x06\x3a\x1b\xfd\x8e\x49\xaf\x21\x9f\x8d\xf7\x30\x63\x1d\x88\x89\x39\xc6\xf9\xf3\x29\xc4\x6c\xa5\x2c\x03\xdc\x91\x8f\x71\x61\x04\xb8\x59\x56\x5c\x4e\x93\x01\x26\x49\x59\x63\x0d\xc4\x7c\x9f\xc4\xe1\xdd\xc5\x8a\x1a\x82\x75\xae\xbe\xbe\xd9\xd5\x8a\x23\xba\xf5\x0d\x22\xb6\x2f\x0d\xdf\xeb\xb7\xa0\xcb\x6b\xf4\xcf\xc6\x75\xad\xae\x28\x9c\xc5\x8e\x9a\x14\xa7\x30\xcf\x03\xdb\x90\xcd\x18\xe0\xe5\x59\x18\xee\x5b\x11\x75\x79\x08\xfd\x82\xb2\x20\xd7\xa3\x0b\x13\xb9\x85\x70\xc1\x21\xa9\xd9\x4d\x2f\x9e\x2a\xba\x7f\x3f\x81\xf9\xf9\x84\x0c\xbe\x28\x00\x7c\x5c\x41\x65\xfe\x99\x3a\x5d\x1f\x76\x27\xd3\x40\x6c\x05\x09\xd4\x20\x5e\xa0\x98\xdc\x8d\xbe\x3e\xd1\xa9\x8a\xd5\x7d\x50\xcc\x94\xab\x95\x29\x58\xfb\x78\x4f\x3a\xe8\xd0\x94\x69\x56\xf9\x3a\xf2\x56\xae\x9b\x99\x00\x55\x2f\x14\x3d\x08\xb5\xb7\x51\x17\xea\xa3\x87\x7a\x9c\xaf\xce\xce\x5d\xb2\x11\xcb\xad\x82\xa4\xc5\x19\xe0\x19\xf9\xd2\x74\xfa\x31\xd6\x27\x87\x84\x1a\x8a\x27\xe3\x99\xcc\xf4\x00\x15\x7d\x9f\x11\x95\x00\x3f\x4b\xb4\xbf\xdc\xa8\xcc\x21\x4c\x82\x37\xe1\x62\x6d\xdf\xf7\xe1\xa4\xd7\x74\x4d\x1e\x4e\x7a\xc3\xb8\x33\x30\x1c\xa9\x63\xf8\xac\x6e\x2f\x18\x78\xf1\x02\x56\x94\xef\xd6\x36\xfb\x1e\x06\xab\x37\x4f\xaf\xf7\x89\x26\x83\xd2\x8c\xcc\x45\xc9\x80\xf1\xd5\x1e\xc6\xa7\xbb\x62\xc6\xf9\xf9\x66\x4f\x6e\xd9\x04\xfc\x10\x87\x98\x04\xae\x12\x44\x38\x65\xcb\xd3\xfb\xf2\x10\x14\x40\x44\x80\xf0\xd0\x9f\x28\x29\x9b\x30\xfd\x16\x3d\x3f\xfa\x51\xf7\x78\xe2\xe6\x99\xe0\x23\xd9\x14\xf0\x63\xcc\x37\xe5\x0a\x3b\x17\x27\x0b\x3b\xa7\x38\x02\xad\x6a\xbe\x29\x5d\x1c\xec\x6a\xa8\x50\xa6\xd9\xdc\x07\x97\xa5\x98\xa7\x59\xdd\x1f\x2e\xb6\x49\xd5\xbc\x14\x1c\xe9\x3e\xb1\x58\x73\x05\xe7\xde\x8a\xf0\x8b\x67\x33\x76\xcc\x50\x56\x42\xe0\x92\xeb\xd4\xcc\x37\xa2\x48\x5a\x97\xf5\x8d\x7f\xc4\x44\xec\x0b\x7e\x25\x72\x28\xf9\xcf\x98\xa6\x4d\xa5\xd0\x45\xfc\x7a\x2b\x7e\x4c\x44\xad\x60\xfa\xb5\xd4\x41\x97\xfb\x92\xd5\x79\xa6\xf4\xc0\xb7\xbe\x7e\xd1\x30\xd8\xfb\x10\x2f\xd5\x8c\x74\x7f\xb7\x64\x44\x7c\x31\x37\x1e\xf9\x9e\xe1\xd4\x1e\x2b\xa2\xe8\xfc\x53\x04\xfe\xa9\x0e\x1e\xca\xd7\x66\xb8\x5a\xe7\xca\x2d\x14\x19\x60\x7c\x83\x21\xa4\xb5\x0b\x97\x14\xa9\xd6\x8a\x81\x16\xc3\x63\x37\xad\x27\x11\xa3\x40\x25\x3b\xb9\xe5\x1e\xee\x72\xb2\x86\xa8\x4e\x3f\xc7\xd7\xbf\x50\xba\x86\x02\x33\x9d\x6c\x00\xaf\x0b\x98\xa5\x0b\x92\xc8\x20\x7d\x47\x3d\x12\x76\x3e\x99\x8c\x50\x20\x17\xa8\x13\x2f\x3f\x13\xc8\x6c\x13\x93\x10\x57\xbd\xd6\xd5\xac\xd6\xb7\x8c\x0e\xe5\x09\x74\x50\x67\xf1\xe9\xc2\xce\x6b\x93\x03\x75\xe2\xbf\x5c\xc1\xd6\x29\x97\x66\x8a\x29\xa0\x35\x1c\x10\x95\x49\x41\xf0\xc0\x46\xba\xf7\x2c\x8e\xb8\x5a\x09\x96\xfc\x31\x5d\x2a\xf4\xfe\xf6\x8a\xdf\x01\x3a\xcb\x88\xee\x05\xb0\x83\x90\xce\xf8\x31\xe1\x63\x33\xa2\x19\xe9\x77\xcc\xca\x2a\x6c\xa3\x0a\xe2\x70\x20\x8d\xed\x1c\xd2\x84\x58\xe6\x79\x8a\xc7\xd9\x56\x5f\xa5\x0d\x03\x32\xc5\xe1\x45\x4f\x24\xca\xdf\x6c\x57\x0c\xd5\x65\xd7\x08\x00\x0d\xd2\xc5\x54\xa4\x2b\xe8\x94\xdb\x74\xec\xae\x64\xf0\x22\x44\x07\xe5\xb5\x52\xf8\x85\x70\xff\x90\xee\x72\x51\x91\x99\xac\x48\xa8\x2c\x44\x58\x9c\xf0\xf5\x8d\xee\x02\xfe\x43\x7a\x54\x3b\xc0\x4b\x0d\xd4\xf9\x52\x94\x29\x36\xda\xa8\xda\xb4\x46\x53\x1e\xb2\x41\x1b\x73\x6f\x2d\x0b\x53\xf1\xf6\xdb\x74\xfc\x20\xd1\x15\x63\x4d\x93\xfc\xdc\x58\x34\x09\x3f\xff\xa4\x16\x3a\x6d\x8b\x07\x96\x45\xf0\x5e\x4a\x85\x9e\xc2\x95\x32\x96\x45\xb3\xaa\x20\x61\xce\xaf\x6b\xd8\xfc\x41\xb1\x3e\xa5\x93\xef\xcc\x57\x44\xa7\x07\x9a\x4b\xc6\x7b\x39\x47\x5a\xe9\x9c\xc6\x03\x7b\xc1\xc5\xb9\x34\x43\xb3\xcd\xa0\xa3\xfb\xb9\x8b\x38\xe6\xfe\x67\x1b\xfc\x19\xe2\x85\x1d\x43\x71\x59\x21\xbe\xdf\xbf\x81\x58\x38\xea\x6a\x28\x3d\x7d\xb9\xb0\xb9\x5a\x6e\x01\xf7\x2a\x43\xf0\xff\x0a\x5f\xc4\x9c\x1e\x25\xf8\x71\xef\x97\xb2\xd0\x39\x2d\xf0\xad\x10\x18\x4f\x89\xb8\xcf\x73\x1a\x4e\x0f\xb3\x6d\x86\xc2\xee\xa8\xea\xad\x97\xda\x53\x85\x75\x8f\xd1\xda\x8f\x1a\x49\xcb\x71\x43\x11\x61\xe3\x17\xe8\xad\x55\x57\x7d\x33\xcc\xdf\x20\x04\xfe\x8d\x3e\x5c\x88\x07\x21\x9d\x26\xec\xc6\xed\x11\xf6\xaa\xf6\x61\x38\xe3\x27\x9f\x55\xaf\xaf\xaf\x3a\x3b\x4c\x3a\x95\x8a\xaf\xc0\x91\x44\xc2\xba\x2d\x38\x7c\x8c\xdf\xe5\x0f\xdd\xf3\x10\x1a\x7e\xd2\x2a\xd0\x24\x94\x6b\x4c\x02\xad\xf2\x42\xa7\xb1\x0d\x01\x4d\x0e\x5e\xb5\x9c\x22\xfa\xe4\x8b\xd4\xc0\xb9\x21\xe6\x5a\x36\x61\x71\x32\x60\x62\x5f\x96\x03\x1a\xc6\x81\x12\x26\xfc\xed\x13\xe1\x6f\xef\xab\x36\x8c\x24\xed\x6d\x5f\xf3\x1f\xc8\x07\xab\x4e\x0f\xe3\xab\xfa\xef\x87\x36\x1c\x8b\xaf\x5c\x96\xec\x2e\x74\xda\x97\x8e\x46\x44\x28\x1c\x05\x5a\xed\x1e\x0a\xf8\x01\x72\xc2\xda\xc5\xfa\x36\xfe\x8b\xa7\x93\xd7\x70\xb3\x14\xfd\x55\x64\x01\xdb\xa4\x81\xc7\xaf\x3b\xa2\xf5\x14\xcf\x01\xb5\x88\xc6\x73\x78\x20\x9a\xff\x43\x94\x61\xe8\xb4\x5d\x08\xec\xc3\xf7\x27\xa7\x73\x84\xc0\x9e\x4e\x74\xb3\xa6\xf2\x52\xf3\x67\xb9\x73\x04\xff\xbf\xa1\xa5\xb7\xf1\x23\x50\x91\xdd\xec\x08\x24\xad\xbe\x90\x86\xe5\x4a\xa0\x56\x3e\x98\x72\x7d\x80\x91\x71\x41\xdb\xdf\xaa\x14\x3a\x31\xc4\xc6\xd8\xd2\x81\x8e\x62\x26\xae\xff\x6b\x84\x4e\xb7\x1d\x8a\x38\xb0\xb9\xe8\xec\xc8\x9e\x78\x7c\x20\x67\x3b\xb5\x45\x0c\x5e\x3e\xde\x8b\x85\xc8\x17\x72\x15\x7d\xd5\xc8\x7f\x14\x3d\x68\xef\x4b\x91\xeb\xe2\xe5\xb5\xfd\x50\x60\x17\x91\x95\xbb\x98\xf8\x35\x9b\xbc\x22\xe3\xfb\x30\xaa\xb7\x8e\x86\x77\xd3\x45\x9d\xf4\xfd\x24\xc8\x07\x55\xec\x6a\x30\xf4\x5d\xbc\x63\x3e\x87\xb0\xe3\x56\x93\x14\xc2\x55\xec\xd3\x70\x29\x43\xa4\x9e\x4d\x09\x4f\x43\x25\x1a\xa9\x39\xcb\x2c\x08\xe3\xe5\x09\x09\xcb\x1a\xb9\x05\xec\x75\x2d\x24\x8f\xa3\x57\x52\x38\x23\x85\x42\xbf\xef\x7c\x42\xa7\x67\x3c\x8e\xf5\xc7\xf5\x5e\x3f\x27\x21\x18\xce\x24\x18\x6a\x4f\x18\x33\xe5\x2a\x9c\x7c\x84\x48\x9e\xa6\xa6\xf3\x9d\xb3\x64\x3c\xd7\x1f\xa2\x7a\xb8\x8e\x84\xeb\xbc\xa6\x85\x4e\xac\x9b\x7d\xf0\xab\xa7\x3f\x6b\x3e\xd2\xd8\x5a\xcb\x8b\x17\xb6\xd6\x5a\xd8\x1e\x2f\x68\x77\x02\xc6\x98\xc2\xce\x59\xce\x91\xa0\x7b\x1c\x90\xe3\x9b\xa7\x3f\x61\x26\x22\x55\xf6\x05\x7e\x2a\x0f\xc6\xef\x1e\x79\x80\x3a\xcb\x99\x8b\x42\x06\xa3\x77\x17\x71\x0e\xf3\x97\x47\xe2\xf4\xcb\x2c\x67\x3a\x24\x2f\xd0\x27\x0c\x26\xd0\x29\xb2\xb3\xd8\x34\x89\x66\xb9\x04\x11\x9f\x36\xb7\xa6\xb5\xd6\x23\x5e\x86\x90\x4d\x46\xb3\x95\x35\xef\x81\x5b\xf4\x07\xdd\xdf\x81\x1c\x0b\xc9\xbc\xab\x21\xba\xa1\xa4\x82\x4a\x60\x22\x4d\x70\xd4\x0f\x8f\xad\xe1\xb8\xcb\xaf\x86\x38\x35\x52\x82\x6b\x75\x29\xbe\x07\xed\xd5\xfa\xbe\xc7\x67\x55\x6e\xc9\x74\xdf\xe2\x5c\x6d\x2f\xfd\x2a\xd3\x77\x81\x72\xa1\x72\x5d\x66\xb9\xa5\x2f\x24\xe2\x47\x8a\xe0\x17\xe7\xde\x2a\x94\x3e\x6c\xdb\xa4\x8d\x66\x3f\x6f\xb8\x8e\xe3\xc8\x7e\x77\x2b\xd4\xcd\xff\x81\xe8\xfe\xe3\x99\xf2\x87\x10\x91\xe2\x1c\xa6\xba\xd0\x99\x03\xc1\x66\xb6\x9c\x9f\x70\x56\x35\xb0\xe5\x9b\x05\x74\xb0\x5f\x20\xb8\x3c\xc9\x1d\x12\x66\xb4\x40\xd8\x08\x57\x15\x23\xcb\xac\x16\x9c\xf3\xb6\xae\x4e\x6e\xcd\x4b\xb2\x88\x0f\x81\x4e\x46\xf6\xcf\x08\x04\x57\x17\x49\x00\xd1\x64\x80\xc3\xf9\x4e\x61\xa7\xa7\x13\xc0\xd1\x50\xdf\x51\x80\x5c\xbf\x7a\x94\x2a\x26\x71\xf2\xf7\x52\x18\x64\xb9\x20\x26\x1f\xa2\x35\xca\xee\x36\xdf\x77\xd2\x42\x67\x06\x1f\x7d\x43\x3e\x54\x99\x89\x7c\x7f\x12\x57\x26\xe6\x59\xd5\x22\x5c\xe0\x39\xd3\xba\xe6\x6b\xa9\xb6\x90\x98\x3e\x9c\x67\x25\xbf\x73\xad\xa4\xf1\xb8\x2a\x59\x2f\x5f\xd3\xbd\xbc\xef\xeb\xc8\x1d\xe8\x14\xcd\x96\xc3\xca\x64\x1b\xeb\x33\xf5\xa6\xda\xe8\xcd\x2a\xd1\xe8\xc9\x70\xec\x89\x6f\x58\x77\x78\x4b\x7a\xc2\x03\x03\x34\x1a\xf4\x75\x1c\xef\x9b\x50\xb6\xbf\xe3\x7d\xdf\x26\x94\x5a\x3d\xc8\xa8\x3e\xae\x27\xfa\x68\x61\xd0\x9f\xd3\xb1\xff\xbb\xae\x4f\x99\xfd\x00\xea\x85\x27\xdb\x30\x43\xbc\x5a\xb9\xd7\xa2\xae\x74\xa6\x85\x40\x54\x2e\x07\x5a\xda\xa4\xaf\x32\x5d\xad\xc2\x8e\x8c\x2b\xa4\x2f\x3f\x4b\x8d\x96\x67\xfc\x0a\x5d\xa0\x4e\xb3\xef\x98\x3a\xdb\x9c\x55\xad\x0d\xa6\x69\xd8\x0c\x43\x1f\x40\xed\xb6\xf7\xd1\x8d\x14\x07\x22\x84\x51\x08\x0a\xa1\x44\x2b\x19\x17\xb4\xbd\x0f\xbc\xc6\x89\x02\x66\x66\xc6\x33\x9f\xc6\x5f\x39\x1c\x7d\xdc\x58\x23\x5f\x23\x1d\xcb\x95\x96\xdb\xcf\x0a\xfe\x52\x62\xeb\x22\x47\x09\xf8\xe8\xc5\x4a\x9e\x5d\xbe\xfb\x80\x04\xa1\x62\x73\x8b\xb6\xaf\x3d\x16\xcb\xaa\x05\x18\x76\xd5\x7b\xb4\xeb\xb4\x41\x2b\x2d\xb6\x02\xcf\xef\x77\x5e\x1a\xf0\x71\xea\xb8\x94\x2e\xaa\x65\x9c\x65\xa3\xad\xdc\x7d\x20\xfe\x6d\xa4\x43\x95\xf8\x6a\x50\xe3\x13\xa6\x0f\x8c\xb4\x6f\xf1\x8c\xc5\xfd\x3a\x70\x6d\x4c\x01\x9e\xda\x74\x54\x7f\xcb\x45\x9b\xb3\x15\x8e\xed\x6d\xf8\x82\xe6\xef\xa7\x50\x8b\xb8\x62\xe4\x8b\x12\x79\xa6\x43\xce\xb3\x47\xf2\x29\x64\x9f\xe9\x88\x9e\xa8\x60\xf3\xb3\xef\xcf\x96\x3f\xb9\x59\xfe\x88\xa8\xde\x0a\x4a\x20\x47\xb9\xde\x2a\x6c\xcc\x07\xf1\x75\x7f\x24\x6c\xc2\x25\x89\x59\xc7\xe5\xeb\xad\xa0\x8e\xcb\x71\x17\x30\x48\x81\x7b\x8f\xa0\x7e\x8d\xe9\x55\x81\x3a\x19\x0b\xff\x87\x02\x55\x61\xe3\x22\x5c\xb9\x19\xe1\x03\xad\x98\xba\x09\xa7\xa6\x2b\x02\x75\xab\x87\xa2\xa1\xc1\x75\x0e\x98\x85\x15\x44\x3c\x60\xb2\xb5\x36\x59\xf0\x5f\x84\x9b\x71\xbe\x65\x7b\xb8\x29\x8d\x17\x02\x9f\xc1\xfd\x8b\x1e\x21\x70\x1e\xbe\xf0\x9b\x69\x0d\x34\xac\x1e\x00\x59\xc3\xf1\x78\xe5\x49\x1c\x6d\x0a\xfa\x08\x97\x5f\xe4\x01\xb6\xef\xde\x5c\x5c\x5c\x8c\x3a\x54\xd8\x88\xe1\x29\xd3\xef\x17\x54\xa2\xb1\xf2\x37\x88\xc9\x44\xe5\x6a\x20\xf2\xce\xd3\xc4\x9a\x82\xff\x1b\xc8\x01\xe6\xb6\x8b\x8d\x25\xd2\xc3\x19\x9c\xb8\x4f\x6e\x69\xfb\x56\x6e\x01\x5b\x9f\x55\xad\x5a\x6e\x72\x87\x7c\xef\xa1\x3f\x27\x1f\xa4\x4f\xed\x68\x9f\x41\xbd\xe8\x2b\x3a\x8b\xbe\xa5\x6f\xcc\xda\x98\x05\x57\x04\x22\xf8\x87\xa1\x8a\x42\x40\x82\xdf\x81\xf1\xc7\x54\xd3\x2e\x03\xa3\xb6\x6f\x10\x10\x01\x96\x3a\x78\x61\x23\xae\x70\x07\x12\x6e\xec\x87\x16\x79\x4f\x56\x3d\xf8\x01\xd1\xbe\xc0\x9f\x68\xe5\xa6\x33\xda\xb8\xab\x7c\x48\xe8\x48\x1d\x9a\x59\x5d\x6c\xce\x76\xf4\x10\x1b\xa4\x65\x03\x2b\x80\xef\x96\xb5\xc3\x18\x7c\xff\x1b\x6d\x9d\xee\x8f\x1c\xa2\xee\x6b\xb5\x54\x11\x14\xd6\xea\x1b\xe5\x46\xe6\x3f\xb6\xc2\xb3\x38\x34\x3a\xa3\x57\x12\x6d\x66\xe5\xf5\x86\x6c\x6b\x0e\x19\x32\x04\xb4\x7f\x29\x88\xae\x93\x1f\x8d\x70\x64\x42\x27\x75\xde\xea\x7b\x09\x82\x20\xa0\xb7\xf8\x4f\xbe\x45\xce\xb3\x19\xcd\x4e\x07\x30\x20\x8f\xcb\xbf\x8f\xfe\x83\xc9\x17\xf6\xb9\x0a\x4f\x3d\x8d\xf0\xd0\xb7\x92\x8a\xc8\x3b\x67\x09\xf9\x51\x58\x7a\x18\x22\x8f\xe7\x9e\x4a\xdf\xf0\xd0\x3b\x84\x67\x00\xb2\xf4\xec\x78\xa4\x4f\x27\x7d\x9f\x4d\x27\xcc\xd1\x53\x50\xf5\xc8\x59\x86\x8c\xe0\xbf\x0b\x32\x89\x9f\x23\x2b\xcf\xd2\x01\x11\xd8\x76\x64\x2b\xdc\xf7\x98\x1f\xd0\x85\xd9\xa3\x78\x70\x2a\xac\xfc\x59\x28\x06\x06\xb4\x88\x56\x41\x81\x25\x6a\x82\x28\x8d\x0c\x33\xd8\x3a\x78\xce\x46\x5b\x07\x92\xa4\xdb\x7a\x7c\x2b\x30\x41\xd7\xe5\xb9\x38\xca\x95\xb4\x3b\x75\x0e\x9e\xe3\x5c\xe8\xcc\x2e\x3b\xc5\x95\xe2\x9a\x52\x71\x2e\x44\xeb\x60\x9d\xe9\x7c\x83\x33\xdd\xfa\xd1\xa5\x10\x2f\xc1\x93\xe9\xaf\xb7\xaa\xbf\x03\xb6\x90\x97\x40\x07\x69\x3f\xf4\x20\xb4\xa2\x1e\xd2\x8d\xfa\xf7\x25\xf3\x6c\xb8\x40\xac\x12\x7f\x22\x37\x21\xf3\x30\xd0\x07\xb5\x06\xa0\x10\xd6\xb9\x2f\xa1\xce\x52\x7d\x7e\x15\xed\x59\xb6\xec\x6d\x04\x55\x2f\x17\x1f\x96\xab\x64\xef\x51\x72\xa8\xae\xad\x52\xae\xb7\xa8\x8b\x2e\x68\x7d\xdf\x2e\xf6\x65\x9c\x1b\x38\x44\xb2\x87\xe6\x6c\x7a\x48\x0a\x0e\x45\x4d\x96\xf2\x03\x69\xb2\x7c\xe7\x30\xd9\xdb\x2c\xdd\xdd\xdc\xd2\x5a\x55\x2a\xf6\x57\x7c\x87\x81\xfd\xcb\x2f\xc4\xe5\x3d\x9f\xaf\x91\xaf\xb7\x28\xd0\x00\x40\x0f\xcb\xf5\xa9\xed\x82\xff\x72\x3a\xaa\xa7\x59\x9e\xdf\x28\xef\x97\x43\xea\x0d\x3c\x3b\xae\xc4\x92\xb0\xbe\x90\xbd\xe2\x9e\x7e\x54\x9b\x3a\x15\x3d\xe1\x9c\xf2\xe4\x9f\x28\xa3\x25\x79\x71\xed\xe1\x51\x06\x5b\xde\x2f\xe6\xba\xa7\x37\x43\xac\xe5\x6d\x6c\xf5\x80\xf4\x66\x94\x48\xcb\x41\x7a\x07\xca\x7b\x46\x79\x9b\x9f\xaa\xfa\x66\x28\x5f\x2f\x35\x9b\x41\xa8\xda\xcd\x10\xd3\x7d\x14\x7d\x44\xbd\xc1\x14\x9a\xca\x67\xcb\x1f\x45\xe8\xbb\x55\x80\xd2\x47\x78\xb4\xad\xf7\x28\xc2\x6c\x03\x9d\x34\x08\x30\xcd\x6a\xe1\xf7\x80\x7c\xf4\x53\x73\x93\x81\x65\xdd\x9d\xa1\xa9\xb1\x1c\xdf\x8f\xee\x55\xcd\xec\x0c\x38\xa0\x09\xe4\xce\x51\x8a\x9b\xb3\x3a\xf8\x6a\x10\x83\x40\x03\x0e\xe0\x75\x24\x0d\x20\x39\xc4\xb2\xca\x4c\x5b\xa0\x41\x28\xc7\x7d\x28\xe8\x59\x5d\x0e\x0a\x4b\xbd\x2e\x06\x25\xaf\xb7\xae\xce\xd4\xf9\x99\xd9\xbf\xb6\x1e\xfc\x0c\x00\x5f\x2c\x15\x6f\x54\x97\xf1\xa1\x94\xcb\xdd\xbe\x66\x65\x55\xf3\x12\xb4\xa7\xa0\xa6\x76\x27\x83\x40\x9a\x71\x1d\x72\xa7\xef\xfb\x44\xe6\x19\x9c\xc0\xff\xad\x3d\xe0\x19\x96\x02\xfd\xbf\x8b\x08\xea\xa8\xe8\x8b\x50\xbe\x85\x54\x52\xdb\x37\xba\x96\xe3\x3f\x8e\x08\x20\x2b\x2f\x7a\xe4\x4e\x51\x86\x6e\x87\x52\x32\xa3\x65\x72\x35\xb8\x80\xc9\xb8\x3b\x91\x14\x6c\x00\xa7\xfb\x13\x7a\x22\x6c\x44\xc6\xd3\xe3\xc3\x30\x1f\x2a\x88\xe5\x24\x36\x7d\x2c\x92\x13\x8b\xeb\x9f\xb6\xf9\x8d\x52\xf1\x61\xb8\x1c\x26\xe9\xac\x50\xae\xb7\x41\xcf\x50\xcb\xbd\x8c\x5a\xab\x3d\xc4\xe5\xa8\x6b\xf8\xc8\x1f\xd1\x1d\xf0\x35\x47\x16\xc6\x1d\x7b\x63\xbe\x0c\x14\xc5\x6c\xf9\xdf\x37\xd3\xbc\xe6\xcc\xb7\x7f\x53\x52\x52\x82\xac\x8c\xaf\x86\xf7\x40\xbc\xe1\x31\xc2\xb2\x3d\x6d\x51\x74\x4f\xab\x4e\x0d\xab\xea\x30\xc9\xfb\xb3\x3e\x14\xd3\xdf\xc2\xc2\x72\x23\x74\xaa\x2d\x02\x71\x13\xa4\x67\x1d\x92\xf7\x83\x3f\x52\x30\x52\x6a\x8f\x89\x0f\x28\xb3\xad\xee\x16\x61\x7a\x0b\xa8\x69\x77\xf5\x9a\xd9\xe1\x02\x52\xeb\xe8\xab\xd1\xc7\x38\xe5\x6f\x80\x19\xa1\xb2\x16\x41\x71\x2e\x18\x89\x1b\xfa\x0b\x2c\x72\xb5\xd4\x9c\x59\xf6\x01\x8e\xb9\xb4\xc7\x2b\xcf\xb6\xc8\x1d\xda\x3d\x3f\x52\x35\xbb\x7c\x8a\x5f\x66\xc5\x30\x47\x0f\x5f\x23\x6b\x40\xd8\xb3\xaa\xe5\xd9\xd6\xe8\x4b\xca\x40\x67\x33\xbe\x28\x88\x89\x43\x03\x0d\x78\xaa\x36\xe7\x4b\xd3\xc6\x4c\xc6\xd7\x1b\x3c\x44\x43\x41\xb3\x5c\x30\x32\x82\x9f\x80\x05\xe7\xfa\x0c\x4e\x46\x4b\xd7\x50\xd8\x76\xbe\xb0\x1b\xe2\x1f\x08\x52\xa5\x76\x93\xf0\x44\xb5\x4c\x60\xa2\xef\x80\xb3\xfc\x03\xe9\x37\xa6\xbe\xf2\x49\x7d\x2d\x5f\x0c\x56\xe4\xff\x45\x7b\xd1\x06\xf3\x3f\x9c\xec\xa6\xbd\x42\x62\x76\x97\xf6\xc2\x55\xb4\xf8\x1a\x2b\x79\x20\xed\x15\x9b\x7b\x6b\x8d\xa1\x8f\x70\x31\x55\x54\x02\xfe\x32\xd4\x51\x5e\x2b\x2b\xda\xe4\x30\x8a\x12\xbe\x3d\xf4\xed\x10\xb2\x24\x1d\xff\x8f\x5a\x97\xf0\xfe\xe2\x04\xe0\x2d\x02\xde\x9d\x4c\xeb\x0a\xfe\x66\xe4\xcf\xce\xb3\x2b\xef\x47\x1f\x25\xb4\xe6\x2e\x32\x0d\x01\x94\x4d\xd4\x93\xeb\x27\x19\xbe\xba\x4d\x28\xc7\xd3\xb4\x09\xf1\x0e\xf9\x38\x76\xf4\xc7\xee\xe2\xb4\xba\xd0\x90\xb3\x95\x27\x7b\x51\xd3\x6d\x03\xe2\x2a\x97\x6c\xe1\xd5\x98\x78\xd9\x24\x5c\xc1\xc9\xe3\x41\x44\x08\xf8\x38\x80\x06\xc0\xd9\x67\x99\x96\xae\xed\xaa\x02\x24\x8c\x4f\x6b\x46\x7e\x44\xeb\x77\xbf\x8d\x8f\x7e\xa0\xc7\x47\x89\xfa\xbe\x11\x32\xb3\xd0\xbc\x46\x8a\x62\xba\x7d\x8b\xd3\x7b\x3f\xe8\xe8\xe8\x0b\x15\xe4\x21\x09\x1b\x51\x02\xf9\x7a\x70\xd7\x23\x23\xf4\x89\xd0\xae\xf9\xe7\xd9\xf2\xbf\xc8\xdf\x87\x61\xc8\x90\x4e\xff\x56\x99\x6f\x15\xb6\x54\xed\x3a\x0f\xfd\xd8\x1d\x75\x60\x24\x2a\x71\x56\x43\x99\x6b\x13\xbc\xd5\xa0\x9b\x5d\x75\x92\xf7\xa8\x39\xd0\x24\x5c\xfb\x21\x5f\x85\x4b\x4b\x3c\xe0\x96\xd9\x65\xef\x61\xb1\x1f\x3c\x91\xe2\x15\x02\x05\xec\x98\x78\xc5\x63\x75\x57\x09\xd3\xab\x74\xb3\x51\xff\x2d\x2e\x87\x6c\xcc\xaa\x95\x3b\xc0\x76\x08\x60\x3b\x5c\x41\xb4\x1e\xd2\xa9\xdf\x0a\x5b\x82\xa9\x27\x54\xcb\xfb\xec\x2c\xf3\x87\xd0\x4f\xfc\x3c\x13\xcf\x77\x6a\x2e\x9f\x7e\x38\x3a\xa4\x7c\x5a\x4c\xd8\x01\x6d\x37\x08\xaf\x74\xee\xff\xbe\xb5\x2a\x53\xf0\xb6\x09\xde\x0e\xf9\x54\xea\x71\x71\x88\x7c\x02\xd8\xfc\xa2\x43\xea\x75\x39\xa5\xa7\xdc\xab\x0f\x48\xd5\xbf\xea\x53\x7c\xb8\xbc\x28\x16\xdd\x0b\xf6\xce\xed\x6d\x66\x47\x4b\xe1\x3a\xe3\xdb\xf0\x28\xf1\x8d\x55\xa8\xbc\xa7\x37\x67\x55\xf1\x1f\xe2\xe3\x3f\xe0\x91\xaf\x01\x10\xee\xc6\x90\x07\x35\x3c\xe8\x23\xf7\x67\x82\xbf\x1a\xe7\x7f\x1a\xb3\xda\xb1\xe2\x1a\xab\x3b\x2c\x6c\xc4\x85\x80\x59\x61\xfc\x04\x41\x4c\x5e\x6e\x5d\x7d\x91\xb4\xaa\xf1\xb7\x62\x1a\x3c\x83\xd1\x01\x46\xc2\xd5\x9d\xd4\x69\xe2\x64\x3b\x3a\x9c\xe0\xc2\x83\x4d\xf1\x1e\xc5\x92\x78\x38\x4d\xbc\x2c\xf2\x57\x20\xb6\x3a\x95\x25\x58\xc4\xe5\xee\xf9\xcd\x4b\x2e\x93\x57\x1d\x85\xd6\x64\xdf\x61\xf9\x53\x65\x7e\x33\x8d\xa7\xae\xef\x3b\xb4\x01\xc7\x41\xdf\x7f\x0a\xfa\x1e\xca\x80\xa1\x05\xa3\x65\x5d\x9d\x5e\x52\x41\x5c\x08\x85\xc0\x22\x1c\x6f\x41\x17\x93\x0f\x04\xd7\x7c\xd3\xf5\xbe\x17\x1a\x78\x8f\x66\x43\xbc\xf8\x91\xd1\x58\xd8\x43\x4a\x2d\x72\x8f\xc1\x2f\xb8\xfa\x38\x1c\x07\xd2\xa1\xbd\xdc\x05\x04\x6c\x21\x3a\x05\xea\x8a\x18\xf8\x05\x59\x61\x75\x59\x2c\x72\x33\x06\x4f\xdf\x9b\x01\x4f\x39\xcc\xf8\x51\xd8\xe1\x6d\x94\x6a\x4c\xa1\x3c\xd0\xf9\xbe\xa3\xe5\x79\x9d\x91\xe1\xc8\x60\x05\x9d\x60\x1b\xff\x8d\x67\xd6\xe8\xf4\x90\x71\x4b\x27\x63\x97\x04\x57\x3d\x70\x08\xb7\x87\x7e\x06\xb1\xb7\xfb\x34\x82\xf0\xfd\xa8\xe3\x49\x38\x47\xaa\x51\xbd\xec\x31\x0c\xd4\x1e\x66\xa0\xf6\x45\xfe\x44\xa7\xe4\x03\x45\x6b\x84\xc0\x0c\x04\xbb\xca\xda\x5a\x80\x5e\xde\x14\x14\x96\x1a\x1e\x6c\x48\xe4\x57\x9d\x8c\xcd\xe9\x78\xdb\x66\x86\x83\x1f\x97\xe9\xca\x8d\xea\x5c\x5e\xfe\x2c\x2b\x0c\xa5\xe4\xf6\xc8\xd0\x38\x5a\xc0\xc2\x78\x33\x07\xd7\x10\x03\xc4\xd2\xa3\x6d\x74\xae\x4e\x73\x64\x0f\x8a\xa8\xf1\x3d\xda\x62\x5d\x61\xe1\xb4\xca\xa2\x83\x41\xd0\x4c\x23\x69\x62\xa5\x64\x38\xe7\x2d\x99\xc4\x41\x0c\xf1\x5b\x0b\x9b\xd7\xc8\x91\x3f\x2e\xfb\x0f\x4e\x9c\x08\x81\x17\x81\x17\xf4\xe9\x17\xbd\x5c\x92\xe0\xc7\x65\x51\x25\x65\x5f\xc4\xd6\x08\xfe\x21\xc8\x9f\xa2\x73\xa4\xfa\x08\x1f\x04\x74\x56\x3a\xb3\xc1\x6f\x90\x3a\xfa\x09\x6b\xf1\x84\x1a\xe4\x72\xc1\x3f\xc9\x42\xb3\xac\x13\xe4\x23\xf4\x59\xc4\x42\xa7\x95\xc9\xfb\x71\xe9\x73\xc1\x0d\xf9\x63\xe9\x64\x42\xf0\x36\x56\x93\xeb\x51\x6c\x03\xc3\x63\x15\x5e\xee\xb4\x54\x7d\x4f\xef\x63\x4f\x22\x3f\xde\xc2\x4b\xa7\x52\x71\x79\x83\xb0\xb1\x0d\x35\xed\x8e\xf9\x16\xa9\xea\x57\xd2\x97\x99\xa9\x07\xcb\xfb\x60\x3b\xbe\xbf\xc9\x51\x65\xa1\xd3\x3a\x71\xa1\xd3\x01\x7a\x18\xdc\x57\xe5\x61\xfa\xc4\xa9\xf2\x30\x72\xfd\x4a\x67\xba\xb0\x71\x0a\xa4\x3e\x09\xd6\x30\x04\x6a\x74\x14\x6a\x62\x11\x67\x33\xd8\xb4\xa4\x55\x98\xb1\x6f\x38\x19\xc3\x76\x7e\x50\x50\x5d\x69\x4a\x06\x07\x03\xed\xae\xee\x60\xa0\x31\xde\x97\x55\x25\xf8\xb7\x00\x90\xdd\xf4\x5d\x22\x32\xe1\x61\xb0\xc9\x60\x5b\x99\xb9\xce\xfa\x40\xde\xe7\xfb\x5a\x78\xaf\xd5\x4d\xed\xa1\xf5\xc5\xc9\x91\xac\xf6\xb6\x7c\xf6\x19\x1d\x21\xd0\x88\x5f\x12\xd5\x95\xb1\xb0\xf1\x39\xbe\x6b\xbe\xd5\xf0\x7f\xbe\x3d\xd7\x9f\x42\x1b\xd1\x0a\xff\x4a\x05\xff\x32\xa8\x51\xa1\xfb\x5f\x14\x27\xbd\x01\xe5\x23\x78\x9c\x6c\xd9\xf5\xf4\x49\xbf\x48\x21\x9b\x1f\x14\xb6\xb7\xf1\x7c\x6b\x20\xb6\xa2\xf5\x2d\xfc\xb2\xbd\xeb\x5b\x20\x29\x9f\xb5\x6f\xdf\xf7\xf8\xe9\xcd\xaa\xcf\x4d\xef\xd1\x09\x6b\x22\x74\xfc\x85\xb3\xae\xd6\xfd\x5f\x93\x6e\xfa\x5e\xf0\x76\xf2\x40\xb4\xfe\x0b\x9d\x36\x05\xff\xc1\x3d\x04\x66\xe5\x85\xc8\xf3\xdb\xcf\xf2\x7c\xcc\x98\x02\x86\x1c\xdb\x5b\x02\x01\x06\x06\xb0\x66\xed\x03\x90\xa4\xe3\x40\xfd\x91\x8e\x3b\x1b\x49\xe9\xd4\x59\x02\x18\x44\x6e\x4f\x6d\x11\xfc\xf4\xe1\x9e\x98\x50\xbe\x00\xc0\xed\x42\x8e\x41\x24\xe5\x7a\xbe\x15\x06\x1e\x30\x3d\x1e\xd9\x7d\x36\xee\x6f\x4d\xc4\x99\xe4\x14\x65\x3e\x68\xbe\xe5\xf7\xc0\xf8\xe3\xe0\x4b\x55\x39\x91\x34\x43\x3e\x20\xdf\x0d\x9c\xb2\xec\xfc\x56\x2f\x58\x2a\xfa\x72\x0a\x3c\x06\x9a\x56\x0b\x4c\x3f\x40\x79\x75\x26\x1f\x32\x8f\x96\x62\xdc\xb2\x24\xa9\x93\x5f\x9a\xae\xce\x89\x21\x15\xe4\xc6\x7d\xdf\x43\x22\x3c\x2d\x6b\x81\xf4\x65\x51\x57\xab\x2b\x16\xa9\x38\xcb\xce\xf3\x88\xbc\x42\xdf\xcb\xd6\x83\x63\x46\xf6\x00\xbe\xc8\xa7\x41\x44\xe6\x0b\x0c\x86\x5f\xcc\x80\x60\x1e\x03\x7d\x23\xb4\xcb\x3a\x86\x43\x67\x91\x0f\x81\x67\x25\xed\x99\xa3\x0d\xa2\x67\x74\xb6\x47\x81\x35\x35\x89\xc3\xd9\xc4\x93\x3e\x3f\xac\x57\xfa\x21\xda\x63\xbc\x91\x83\x81\x6c\x8e\x65\xce\xe8\xb5\xc2\xce\xbc\x8c\x92\x40\xb0\x04\x18\x60\x84\x68\xd7\xa3\x77\x30\x41\x23\xb4\x21\x00\xdb\x7d\x56\xbc\x54\xfa\x16\xd4\xac\x17\xb8\x76\xb4\x38\x5f\x6a\xcf\x16\xff\x09\xfa\x74\x2b\x80\xac\x88\x7e\x6e\xb4\xf0\x58\xb4\x7b\x04\xfc\x75\x17\x8e\x45\x9a\x2f\xca\x3c\x45\xf9\x20\xbf\xc4\x0a\x2c\x84\x22\xf0\x94\xb6\xe9\x04\xce\x35\xb1\xaf\x4e\x18\xfc\xd9\xa8\xd5\x01\xab\x45\xd7\x3f\x49\xdc\x8f\x8e\x6b\xe4\x33\x5c\x44\x13\x24\xea\x59\xce\xd0\xd1\x01\x91\xbd\x9d\x5d\x51\xf0\x20\x80\x4d\x65\x0c\xde\xb6\x62\xc2\x47\xa8\xeb\x82\x7c\x64\x17\x90\xf9\x48\x23\xf4\x69\xc0\x80\xc9\x9c\x2b\xa8\x35\x1d\x43\xe8\xf0\x7c\xc1\x00\x7c\xfb\xac\x7d\x08\xcf\x91\x65\xa8\x93\x57\x82\xf2\x00\x82\x80\x40\x83\xd7\x0e\xfc\xb7\xfa\xf2\x10\x38\x4e\xa3\xc1\xa1\x72\xab\xf7\xf1\x21\x53\x0e\x2d\xcc\x27\xb4\x22\x8f\x60\x58\x3a\xd3\x16\x05\xd7\x14\xf8\x2b\xf2\xc0\xe9\x58\xac\xec\x6b\xdc\x60\x87\xfc\x22\xd6\x47\xdf\xaf\xe8\x9a\x8f\xa3\xf7\x97\x2b\x95\x67\x9c\x78\x36\x9f\x36\x73\x3c\xee\xa8\x28\xdb\xee\xc4\xaf\x7f\xe1\x5c\xb6\x82\x51\x5b\xa1\xfe\xa2\xa3\x48\xbf\xce\x3a\x1b\xd3\x17\x4e\xfb\x9d\x78\x74\x42\x09\x28\xb4\x39\x90\x3e\x8f\xa3\x07\xd1\xb9\x40\xc6\x37\x44\x7e\x82\x02\xe9\x77\x71\xec\xba\x50\x3f\xc0\x66\x1a\x64\x3d\xc9\xe8\x77\x8f\xb0\xdb\xac\xde\xcf\xcb\xdf\xa3\x86\xc7\x75\x3d\x52\xfb\x70\x21\x40\xa7\x62\xb2\xea\xae\xba\x84\x86\x0d\x44\x8c\x6f\x50\x4e\x13\x76\xcc\xe4\x81\x15\x70\x76\xd7\xe1\x6f\x10\xaf\x54\xa7\x34\x0b\xbb\x4f\xe4\xde\xa2\xde\xc6\x0b\xeb\xce\x4f\x42\x25\x19\x8c\x39\x03\xe3\x80\x9a\x6c\xfe\x68\x36\x4f\x1f\x3d\x94\x3f\x33\xa0\xf8\x1b\x7c\x1f\xc8\xa7\x13\xb0\x08\x3c\xd4\x15\xef\x00\x53\xdc\x65\x6c\x7b\x22\xb7\x0b\x57\xd4\x45\x35\x6f\x04\xa8\x9a\x87\xe1\x05\xae\xb2\xf3\x3b\x9f\x47\xbc\xf1\x5c\x0b\x5e\x58\x7b\x19\x68\x38\x25\x47\x62\x89\x16\x5c\x46\x31\xdf\xcc\x8e\xc6\xf9\xfa\x0a\x5a\xd9\x5c\x08\x20\x5a\xb4\x9b\xbe\x01\x10\x5c\x77\x10\x46\x47\x0d\x50\xc7\x50\x81\xa3\xd9\xc8\x27\x96\x37\x60\x96\xe7\xd3\x2c\x76\x8e\xd6\x0f\x61\xbc\xd3\x49\xbc\x3b\x4d\xda\x93\xf9\xa2\x45\xa7\xed\xf3\xe4\x87\x9d\x80\xea\x4d\x23\xd5\x45\xb6\xa6\x5c\x27\x94\xcf\xd7\x3a\xf1\x0b\x54\x6f\x50\x6e\x24\x40\xf3\x2d\xbd\x57\x9c\xd1\xb3\xe2\xdd\x27\xbb\x2a\xa2\x66\x2d\x2b\x74\x4e\x43\x35\x2b\xad\x74\xda\xcd\xf1\x6a\x43\x93\x59\x8a\x09\x74\x1c\xdc\xaa\xd3\x2c\x0a\xf7\x14\x26\xf0\x32\xf3\xfe\xc7\x09\xfe\x11\x29\xac\x4c\x92\xbc\x41\xaf\x75\x2b\xa4\xc8\xfb\xc0\x74\x00\x0f\x4d\x60\x97\x5c\xec\xb2\x66\xff\x1e\x7a\xf7\xe9\x59\x7a\x83\x95\xd0\x4a\x53\x52\xbc\x15\xc5\x68\x05\x42\x2a\x6a\x66\x16\x45\x14\x39\x82\xff\x60\x72\xcf\x66\x46\x62\xc3\x9d\x3e\x84\x2c\x6e\xc7\xfd\xf6\xfb\xe8\xb0\x8f\xb7\xc1\xcf\x8e\xac\x38\x1b\x8f\x7f\xa1\x63\x16\x62\x10\xe4\x14\xf9\x33\x6a\x1f\x6f\x4b\x3b\xae\x14\xfc\x31\x0b\x6e\x7d\x1a\x2b\xf8\x5f\x4d\xea\xda\x22\xab\xb3\x53\xe4\x0d\x8c\x87\x03\x75\xbe\xfe\x3a\xdf\xd2\x7b\x2a\x7f\x9f\x64\x62\x64\xc4\xc1\xd5\x20\xef\x53\x17\x59\x48\xa0\xc6\xe9\x02\x31\x41\xbf\xe6\xea\xfc\x9c\x03\xfc\x81\xaf\xdb\x2c\xce\xca\xe5\x28\x8e\x19\x3f\x74\x11\x7e\xff\x19\x46\x8a\xa4\x38\x29\x6e\xb4\xb0\x5e\xf2\x0a\x0a\xf6\x5d\x82\xdf\xd3\x45\x9b\x17\xf4\x5b\xb3\x6c\x17\xfc\x69\x5d\x58\x48\x41\x8b\xcc\xee\x48\x4b\xf4\x10\x08\x9c\xf0\x8a\x7c\x73\x26\xce\xff\xac\xeb\xf7\x08\xfe\x0f\xd9\x7e\x3c\x74\x8b\xe3\x3d\xae\x3e\xf3\x53\x9c\x87\xe7\xa0\x77\x63\xa0\x03\xc7\xbb\xfa\xd1\xf7\x27\xab\xfd\xa5\x67\xb5\xcb\x8f\x75\x55\x3b\x70\x1a\xe7\x1b\xf4\x55\xe5\xdb\xc7\xb0\x7d\xaa\x42\x60\x1b\x40\xdb\x85\xe1\xd4\xee\xcb\x40\xc6\x23\xcf\x9d\x31\xc6\x6b\xa1\xe0\x5f\xac\x23\x6d\x4a\x40\x3a\x4d\x6f\xfd\x45\x8b\xd1\x6c\x00\xa7\x3f\x8e\x70\xea\x22\xab\xd1\xec\x88\x04\x6c\xe7\x9f\x3e\xa7\xfc\xaf\x7b\x96\x5f\x1b\xed\x2a\x7f\xf9\xb9\xe5\xff\x7e\xa6\x47\xf9\xf3\x5b\xba\xca\xe3\x14\xb0\x21\xf7\x7a\x8d\xb8\xc0\x13\xb7\xa0\xd9\x63\xe2\x3e\xe6\xab\xae\x6a\xa1\x0e\xf2\x6f\x7a\xb4\xd4\xaf\x67\x4b\xb6\x1f\xbb\xaa\x3c\xde\x41\x73\xd4\xe4\x7f\x48\xa7\x2c\x82\xbf\x04\xd9\xe7\x9b\x9c\xd2\x8e\x54\x61\xdd\x2d\x16\x9a\xcc\x0d\x6c\x83\x4c\x9a\x2f\x01\xc8\xb8\xbf\x71\x30\x5e\x71\x41\xbd\x50\xfe\x02\x3a\x6d\x96\x52\x35\x7f\x6a\xbd\x82\x9f\x46\x4e\xd6\x45\xe4\x6d\x9c\x14\x3e\x05\xea\xea\x2e\x13\x97\xa8\x60\x23\x7f\xa2\x06\x7d\x8d\xa8\x2d\x38\x4b\x5c\xa4\x14\x96\x5c\x45\xc9\x7c\x3c\x59\xec\x60\xf2\xf3\x12\xa5\x5b\xe3\xe9\xf3\x58\xf1\xc7\x50\x34\x3d\x7a\xda\xb4\x0e\x3d\xfe\x41\x94\x7d\xec\x2d\x78\x86\x2a\x3a\x73\xa8\xae\x9d\x46\x1d\xad\x3e\xa7\x45\x2f\x27\xff\xae\xeb\x05\x8a\xc7\x42\x6f\x50\xf2\x9d\xa3\x69\x5d\x70\x16\x24\x15\xd2\xeb\xbc\x3e\xe8\xf5\x8f\x2e\x91\x67\x91\xf1\x9a\x67\xc8\x3f\x7e\x17\x75\x16\x69\xec\xa2\x2f\x41\x55\xdc\x70\x8a\x34\xb6\x03\xf7\xc9\xd9\xa1\xe1\x36\x9c\xfd\x8e\x09\x81\xc7\xb9\xb8\x84\x61\x36\x8d\x1c\x30\xa8\x49\x28\xbf\xd7\x64\x74\x45\x1f\x08\x63\x8f\x7d\xe4\x91\x53\xf1\x21\x57\x72\xd4\xe5\x96\xca\x0c\xe0\x60\x30\x18\xf9\x2d\x68\x2d\xca\xb2\x19\x27\x90\x9a\x1a\x07\x6d\xcb\xef\xb0\x71\xfc\xb0\x1d\xe9\x6d\xa2\xc9\x69\x21\x7f\x4f\xe4\x26\x5d\x21\x73\xf1\x86\x22\x23\x4f\xe9\xf4\xe9\x2e\xde\xac\xd9\xbe\xd8\xa5\xdb\x4c\x90\x65\x7a\x4b\xdf\x94\x6b\x4f\x62\x23\x46\xdf\x62\xc4\x57\xd7\x77\x95\x9b\xce\xd5\x17\x37\xe1\x77\x15\xd7\x98\x40\x8b\x7f\x0f\xc3\xb6\xeb\x4a\x43\xaa\xe2\xf6\xf8\xb3\xc8\xdf\xda\xcf\x85\x6d\x66\x59\x9b\x11\x36\xa3\x80\x52\x04\xd4\x91\x42\x56\x43\x5f\x1b\x1c\xfa\x23\x12\x64\x43\x42\x91\xaa\xae\x22\x2c\x39\xe2\x46\xbe\x07\x71\x79\x4b\xff\x06\x65\x11\x17\xd7\xd5\xe8\x02\x44\x46\xb7\x93\xf8\x39\xa4\xef\x72\xe4\x1c\x9d\x1a\x17\x32\xbc\xaf\xd8\x35\x96\x84\x24\x0f\x41\xdc\x66\x86\x4c\x73\x1c\x47\x93\xde\xff\x36\x3c\x40\xca\x7e\x6e\xd7\x67\xe3\xfc\x2e\xa7\xa3\xff\x94\x14\xb2\x18\x16\xcd\x40\xfd\xaa\x2e\xd4\x5d\x0d\x0a\xbe\x4c\x1f\x27\x55\x59\x12\x31\x5f\x03\x25\x4a\xf7\x9a\x50\xe1\x21\xde\xb4\x0c\xe1\x0b\xfc\x0a\x64\x2f\xcd\x69\xad\xc0\x53\xef\x75\x55\x7e\xca\x68\x2e\xd2\x80\xdf\x16\xdd\x09\x4f\x60\x4d\xb0\x79\x96\x8f\xd9\x91\xa1\xa7\x48\x50\x7e\x67\x88\x5b\xdb\x3c\x67\x61\xe4\x11\xb4\x5f\xbb\x21\xbb\x0b\xc4\x26\xf4\x02\x3e\xae\xea\x1c\x26\x2f\xb2\x9c\xdb\xf4\x03\xd8\xf4\x8e\xae\x06\x10\x72\x6d\xfb\xb9\x14\xd3\x47\x75\x77\x6b\x97\xfa\xea\x9d\xcb\x9f\x69\x65\x12\x54\x49\x07\x1e\x44\xb5\xd4\x66\x10\xa3\x94\x56\xb6\xfe\x82\xd6\xa7\xa5\x83\x04\x66\x4a\xa7\x06\xac\xee\x5f\x89\xd0\xf9\xa0\x54\xc3\xab\x45\x82\xfb\x83\x95\x3f\xe0\x1c\x5b\xe3\x20\xa8\x97\x2e\xd5\xa6\x03\x96\x3d\xf7\x03\xdd\x4c\xab\x1b\x71\xa9\xc4\x3c\x67\x26\x68\x25\x27\x9d\x1b\x4f\xb8\x0c\x50\xaf\xe7\xfd\x0d\xe5\x76\xb9\x5a\xb4\x4b\x55\xbc\xb0\xe3\xd7\x31\xa9\x9a\xf7\x37\x95\x5f\xe8\x6b\x09\xb4\x8a\x26\xf9\x7c\x3a\xc8\xac\xa6\xdb\xfc\x34\xae\x17\x24\xd5\xab\x4c\x3b\x23\x69\x96\xfd\x5f\xc8\xd3\x2c\x72\x11\x6d\x27\x88\x64\x5e\x68\xbc\xbf\x2e\x44\x09\x81\xe8\x64\x81\x52\x64\x77\x05\x27\xce\xb6\x0b\x9b\x3e\x66\x51\xee\x5d\x80\xc3\x02\x29\xe8\x90\xc3\x50\x65\x82\x3a\x25\x06\x54\x04\x0a\x56\x35\x9b\xf8\xb0\x7a\xab\x83\x6f\x04\xcf\x7d\xa4\x72\x0d\xa4\xe5\x2a\x78\x0a\x41\xb6\x3a\x83\x6f\x3b\x8e\xe7\xc4\x82\xb2\x78\x1f\x92\x41\xb8\xe8\x08\x05\xf4\xf6\x3f\x05\x1a\x66\x72\x8c\x96\x4e\x2e\x41\xd0\x0c\xda\xe2\xfb\x79\x8b\xac\x29\xfd\xda\x7e\x73\xc6\x0c\x65\x07\xcc\x72\x3a\x5d\x4d\x00\x16\x7f\xc1\x52\x42\x39\x5c\x27\xce\x8d\x2a\x74\xa6\x0f\x9e\xe7\xcc\x80\xab\x1d\xae\x0e\xe4\xdf\x59\xce\x4c\x03\x8c\xdc\x28\x35\xf3\x10\xac\xe3\xce\x18\xbb\x7c\xc3\x99\x25\x2f\xe1\x54\xac\x32\x21\x10\xf3\x5d\x8d\x53\xc7\x72\x08\x48\xe1\xae\x5a\x32\x42\x59\x7a\x26\xd0\xea\x1b\x06\x0a\x2e\x27\xda\x97\xc5\x97\xb8\x26\xa8\x0f\x64\x43\xec\xea\xae\x5a\x8c\x0b\xb8\x70\xaa\x77\x01\x2d\x87\x5c\x4e\x9a\x44\x9f\xe2\x5d\x80\x23\x33\x9f\x4e\x5b\x15\xca\xf1\xf4\x12\x0c\x98\x54\x2f\x0f\x01\x76\x36\xee\xf9\x06\xc2\xb1\xf8\x86\xe1\x31\x4e\xf7\xc7\x42\x16\xc5\x8b\xfb\x30\x6e\x38\xe3\x6a\xc8\xda\x33\xe8\xd0\x28\x40\x71\x30\xce\xc9\xbf\x6f\x89\xa3\xbf\x5f\xfa\x92\x77\xb7\xe1\x51\x99\xb2\xf7\xcc\x92\xbd\xd0\x58\x36\xbe\xe8\x56\x1d\x4f\x2a\x57\x41\x1f\xae\xc2\x3e\xa8\x53\xce\x40\x0f\x9c\xca\x62\xec\xc1\x10\xf9\xd0\x7f\x8d\xff\x38\x63\x21\x06\x5b\x7f\xac\x1f\xb7\xe0\xa7\x68\x49\x79\x87\x5d\xd2\x91\x82\xff\x92\x53\xf0\x92\x22\xb5\x5b\x84\x75\xcf\x3b\xf0\x70\xbb\xc0\x6b\x8e\xc9\xf1\x30\xa6\x01\x82\x82\xce\xcc\xd5\xfd\x28\x08\x04\x1e\xaf\xe6\xdd\xa1\x35\x6d\xb8\x0f\xba\xed\x7c\x02\x45\x01\xd1\xfb\xea\xd4\x58\x55\x7b\x92\x9a\xbb\x4e\x0f\x91\xd4\xe9\x0e\xf9\x03\x30\x6f\xe9\x0c\x5f\x2b\x08\x81\x54\x6d\x71\x87\xe5\xeb\xce\x2c\x39\x0e\x3d\x4b\xcf\xfa\xa0\xaa\xc3\x14\xb5\xeb\xef\x63\x21\x88\x7a\xd7\x42\x61\xc6\x94\x98\x92\x5b\x16\x88\x89\xc7\x84\x77\xf3\xb7\xd8\xe5\x62\x7b\xd5\x17\x49\xd0\xbd\x91\x52\xcb\xb0\x2c\x9c\x63\xce\x76\x6a\xa3\x07\x52\xc3\x9b\xa9\x22\x10\x7d\xa1\x10\x78\x1a\x8f\xff\x9a\x6e\x47\xbb\xfa\x22\xc7\x16\xc7\x8c\xbc\x80\x4c\x1b\x3e\x86\x69\xc5\x2e\x3c\xbc\xcc\xb8\xd0\xaa\xaf\x1a\x7f\xc5\xa1\xaf\xc1\x5f\x78\xa6\xeb\x98\x08\xc2\xd7\xa8\x87\x93\xf8\x09\xf5\xcc\xac\xde\x4b\x46\xbd\x71\x09\xf5\x7e\xaa\x8e\x7e\x52\xea\xf3\x46\x1d\x2e\xb1\x2d\x40\x1e\x13\x11\xdf\x3d\x43\xd8\xe4\xbf\x9a\x9f\x82\xb1\xe6\x1c\xdc\xac\x04\x2c\x9b\x51\xf6\x05\xa8\x05\xd4\xcc\xd9\x4f\x81\x8a\x04\xeb\xda\x72\x0d\x71\x37\x98\x7f\x79\xdf\x11\x10\x17\x57\x55\xe3\xf0\x5a\x80\x9e\xb5\xaf\x2c\x32\x9e\xfc\xa1\xc3\x69\x7b\xe0\xf9\x70\x52\x3d\xfc\x36\x01\xa8\xc3\x69\x8d\x70\xf7\x69\xd5\x6a\x3c\x56\x60\x0e\x4b\x69\xa6\x94\x83\x2b\x9d\xb7\x0a\x3b\x0b\x9d\xb7\xbe\x69\xc3\x60\x78\xde\xc1\x85\xce\x79\x4d\x20\x8e\x70\xbd\xf5\xe0\x77\x9f\x45\x84\x75\x21\x08\x40\x20\xd2\xaf\xaa\xfa\xdc\x61\x86\x66\xc1\x37\x77\x9e\x8f\xeb\xd1\xe8\xe5\x14\xe0\xb0\x6c\x24\x60\xe3\x3c\x62\xf9\xa7\x67\x20\xed\xef\x4a\x3f\x58\xf7\x59\xe4\x48\xa3\xb0\x76\x1a\x10\x4b\x5a\xe8\x74\xe2\x41\x2d\x6c\xd7\xa8\xbe\xa6\x0a\xef\xb3\xaa\x71\xba\x10\xb8\x56\x28\x2f\x4a\x21\x5f\xc6\x89\x4b\x39\xf0\x30\x6c\xbe\x10\x78\xb8\xd0\x59\x08\x45\x3d\x24\x4b\xcc\x7f\x00\x67\x0f\xa7\xdf\xf4\xa7\x24\x61\xe3\xbf\xf1\xe9\x65\x16\x5a\xba\x82\x7a\xba\x59\xf0\xdf\x90\x0a\xd6\x72\xe3\x55\xc9\xf1\xb2\x28\x71\xf9\x88\xae\xe0\xaf\x4d\x84\x10\xc8\x4e\x66\x2d\x9b\x37\x38\xb7\xb3\xde\xcc\x02\x8d\x1b\xa8\x83\x9b\x6c\x61\xe3\xed\x7d\xd1\xdf\xec\x27\x3c\x51\x7d\x51\xb5\xbc\x07\xd2\x16\xb2\x35\x5c\x45\x5a\x27\x73\xa6\x8a\x48\x1d\x32\x31\x51\x3c\x36\x9c\x1f\x02\xb9\x13\x33\xe9\x45\x90\x70\x2d\xca\xe0\x97\x56\x4a\x4a\x23\xa7\x67\x14\x7b\x71\x34\xce\x0f\x3e\x18\x9e\xa4\x8a\x52\xda\x17\x54\xa4\x10\x78\x9d\x3d\xa1\x81\x5d\x88\x5d\x46\x32\xe2\xf1\xe4\x07\x35\x1c\x81\x5b\xfb\x71\xdc\xc1\x20\xaa\x87\xc6\xaa\xc6\xa4\x33\x30\x6e\xc8\x1a\x65\x0b\x51\x49\x7a\xcc\x28\x3a\x6e\x13\x75\x24\xfb\x60\xd0\x70\x2d\x70\xf1\x23\xe6\x9c\xed\x03\x75\x93\x2c\x30\x34\x87\xc7\xfd\x73\x02\x5c\x70\xc0\x01\xf7\x5c\xa3\x29\x34\xca\xb7\x82\x2a\xaa\xe1\xdf\xb0\xa1\xcb\x3e\xef\xf0\x5d\x38\x84\x3a\x1f\xcc\x41\x3e\xd0\x97\xf5\xcd\x91\x82\x39\xc8\x3a\x9f\x46\x0e\xd6\x95\x9b\x9a\x00\x31\x94\xf3\x83\x55\x8d\x97\xb7\x00\x4a\x07\xeb\x9a\x22\x47\x0e\x0a\xeb\x6e\xb2\x51\xe3\x0b\xf1\xcd\x46\x15\xc9\x26\xbd\xf9\x38\x98\xf4\x03\x14\x8a\x5e\xa1\x9b\xc1\x9e\xb5\x9c\xe7\xd6\xc2\x73\x75\x01\x8f\x0f\x0e\xd7\x01\x6e\x87\x3f\x38\xf8\xc1\x2f\xa1\x94\x17\x6b\x8a\x2c\xfd\xf3\x91\xc6\x23\x07\x8f\x1c\x8c\x5a\xf0\x7a\xf0\xbb\x83\x75\xb8\x46\x11\xf9\xf1\xa1\x64\xc1\x7f\x59\x2a\xad\x74\xc5\xa5\x8a\xd0\xfd\x6c\xb4\x49\xc6\xfc\x18\xc8\x5f\xfb\x79\x71\x7d\x81\x16\x39\x64\xe6\xe4\x1c\x5d\x8c\x61\x2c\x52\xf5\x5b\x39\xdd\x50\xa2\xa2\x33\x3b\x15\x95\x6e\xae\x21\xcc\x61\xaf\x61\xe5\x46\x92\x07\x71\xe3\xe9\xae\xf5\x2f\xba\x8c\xcf\x12\x58\x3f\x75\xed\x85\x0a\x8d\x0f\x47\xf2\xa0\x60\x98\xf9\x31\xf8\x97\xd4\x09\xdc\x32\xa9\x0d\x44\x41\x78\x22\x18\xb9\x04\xe3\x73\x43\x84\x22\x95\x67\x58\xfc\xb4\x99\x38\x16\xdf\xb1\xbd\x60\x25\x96\xc6\x47\xe4\x55\x85\xf1\x32\xb0\x2c\x32\x2c\xb2\xed\x2c\x64\xe7\x88\x07\xc0\x1c\x0c\xf6\xc6\x40\x90\x3a\x9c\x8b\xcb\x2e\x8e\xeb\xd3\xa9\x44\xfa\x66\x92\xe3\x75\xc5\x80\x4d\xd4\x8e\xdb\x2f\xa3\x7d\xd8\x36\xcc\xa8\x09\x7e\x71\x5d\x6d\x4c\x28\x7f\x9d\x8b\xcf\x78\x81\xf1\x72\x4e\x9c\xe3\x10\x36\xfd\x91\x31\x60\xf6\x11\xcb\x11\x54\x0a\xc0\x87\x9b\xfe\xc3\x22\x79\x44\xad\x4a\x1b\xe6\x07\xce\x3c\x90\x4c\xee\x42\x36\x00\x09\xb4\x02\xff\x36\xa6\x71\xdd\x15\x88\xf4\x05\x1e\x7e\xd0\xe8\x8a\x49\x41\x93\x3e\x64\xe9\x3a\x6b\xe7\x1a\x71\x12\x0e\x23\xda\x25\x75\x0e\x1f\xe2\x5c\x46\x94\x3d\xba\xbf\xfe\xed\x0d\x88\x30\xc0\x3f\xc8\x11\x02\x43\x92\xd8\xdb\x56\x07\xe4\xd0\x4a\x03\x90\x96\x7c\x0c\x2a\x25\xb4\x1b\xcf\x10\xfa\xf2\xa9\x51\x22\x38\x39\x33\x2d\x59\xc7\xd5\xa9\xc8\x24\x0b\xdd\xfb\x04\xf5\x11\x4b\x5c\x63\x80\x6e\x11\x2d\x09\xfa\x83\x02\x51\xb9\x9d\x56\x4d\xe9\x89\x54\x6d\xf5\x79\x20\x60\xd9\x81\x86\xd5\x7d\xdc\x80\x9e\xb0\x61\xba\x85\xb8\xc5\x03\xf4\x99\xa0\x6f\xf0\xe1\x71\x69\x29\xc6\xc6\xfb\xfb\xe3\xc9\x19\xf8\x96\x19\x42\xb9\xc1\x81\xa6\xd5\x17\xe0\xbd\xbb\x51\x98\x51\x03\xcc\x31\x21\x0b\x7f\x71\x3d\xee\x42\x40\xd8\x13\xa8\x5b\x3d\x0d\xf7\xc6\x62\x10\x37\x0e\x15\x7d\xeb\xea\x6c\x76\x54\xb6\x45\xeb\x33\x00\x00\x2d\xa4\x23\x1a\xe4\xb0\xf6\x72\x7f\xe2\x69\x74\xa6\xb4\x4c\x3b\x7b\x91\x21\xbf\x8f\x5b\x64\xb3\x5a\x84\xc0\x19\x73\xd7\x4e\xa3\x9b\xfa\x13\x72\x85\x81\x56\x2c\x0c\x06\x42\x64\x47\x15\xe3\x9b\x58\x4c\x31\x3a\x66\x68\x63\x61\x63\x7b\x12\xc1\x2b\xdc\x3d\x8c\x49\x86\x00\xd5\xd3\x95\xa9\x76\xe1\x5d\x71\xad\x5d\x6a\x1d\x06\x54\xc4\xb5\xe3\x13\xa4\xef\x2c\xd2\x7f\x86\xf1\x27\xe4\x96\x40\x03\x40\x05\xb2\x20\x46\xf8\xcd\x90\x4e\xc4\x15\xb1\x59\x68\x66\x1d\x77\xe8\xce\x16\x8d\x5e\xf3\x00\xd6\x32\x2a\x44\x9c\xd6\x54\xcc\x8c\x9b\x90\x8d\x66\xf1\x71\xfa\x9b\x84\x8d\x53\xf9\x78\x4e\xe0\x3d\xc6\x19\xdd\xbe\x5f\x4c\xd1\x21\x40\xdc\x28\x18\xd4\xb0\x10\x45\x36\x3a\xd8\xc2\x40\x85\xd5\x71\xea\x0c\x46\x6f\xf8\x74\xff\x4d\x6f\x03\x2d\x07\xf5\xda\xbf\x9e\x1d\x29\x33\xc7\xd5\xc0\xcc\xa7\xe6\xa0\xbd\xab\x64\x57\x70\x66\x59\x9f\xe0\xcd\xa6\x2b\x63\x74\x52\x74\xa8\xb4\xe6\x75\x29\x2d\x5c\x62\x01\xfd\x8e\xfc\xfd\x14\xce\x9f\xa3\x20\x19\x6c\xed\x8a\xe9\xf2\x01\x6c\xd2\x8d\xbf\x51\xa9\xb4\x35\x12\x82\x83\xcf\x1a\xef\x4f\xc1\x6a\x65\x15\xd2\x02\x70\x3a\x14\xa2\xed\x20\x08\xb9\x27\x82\x6b\x3d\xd9\xfb\xa5\x7d\x94\x32\xc1\x80\x13\x79\x1a\x72\x00\x71\xa7\xa1\x0a\xb3\x31\x18\x47\xe3\x1c\xb9\xb8\x9d\xcd\x4f\x91\xb9\x58\x03\x22\xc7\x9f\x04\x36\xec\xa7\x2f\x81\xd2\x6e\x3a\x8f\x18\x74\x9e\xd3\x23\x77\xe2\x17\xb1\xe7\xa5\xc4\x31\x5c\x48\x2e\x00\x78\xac\x11\x3c\x5e\x9c\x1d\xb9\x37\x41\xfb\x7b\x1a\x11\x75\x82\x5c\xd5\x97\x05\x79\xbe\x74\xd0\x49\x68\x2a\x5a\x79\xde\x67\x03\xcc\xc7\xa1\xe0\xfd\x68\x65\x3b\x13\x0a\x61\x90\xfa\x3e\xc3\x0a\xda\x41\x12\xa9\xa0\x99\x17\xfc\x63\x93\x68\x90\x36\xed\xc0\x09\x50\xe8\x06\x8f\xd1\x1d\xc6\x4b\x39\xa0\xe9\x71\xd4\xdd\x68\x26\xfc\xe5\x29\x34\xb6\x89\xc3\x8e\x4b\xb6\xb4\x3f\x00\x1a\xee\xb6\x9e\xc9\xd8\xab\xf7\x05\x3f\xae\xaf\xd3\x96\xa7\xd1\xf4\xf6\x39\x45\xc2\xda\xad\x98\x13\x92\xb0\x87\xc4\x94\xfa\xd2\xe8\x9d\x27\xe8\x1c\x40\x54\xe4\x72\x8d\x54\x93\x23\xcf\x23\x97\xdf\xa3\x5d\x7d\x1e\x4d\xd6\x58\xba\x4e\x8f\x58\x89\x29\xd5\x6c\x8b\xd8\x75\x36\xf4\x4a\x8f\x74\xd2\x0b\x2a\x0b\x93\x81\x09\x5a\x9f\xf3\xc8\x21\x9a\x10\xc1\x63\x9b\x2b\x50\x3d\x00\x03\x80\x82\x88\xb4\xe0\x7c\xa1\xd6\x64\x43\x4c\xe4\x50\x64\x29\xad\x37\x37\xa4\x50\xd8\xf8\xfa\x69\x7a\x2f\xe7\x41\x0a\xc8\x9d\xe0\x73\x64\x85\xdc\xe1\x55\x10\x2d\xba\x5a\x47\xcd\x72\x7a\xf8\x59\xf4\x4e\xc1\xa3\x8b\x45\x79\x29\xfb\xfa\xfe\x42\x02\xbd\x86\xcd\xf1\x79\x8c\x0e\x7d\xdc\x0f\xe5\x30\x72\xfc\x34\xb9\x33\x39\xa8\x56\x3e\xe9\xa0\x22\x74\x20\xc6\xd7\x7d\xf5\x09\x3b\x43\x0a\x22\xff\x6a\xa5\xdc\x38\x45\xbc\xfd\x69\x8c\xe4\xf9\x28\x1c\xe7\x0e\x02\x31\x98\x66\xb7\xe9\xd2\x8e\x1c\x16\xd8\xc8\x26\xd2\x67\x21\x8f\xcc\x5a\xd3\x2f\x2e\xcc\x9b\x5e\x49\x21\x4c\xf1\x85\x63\xb6\xc1\x5c\xc8\x68\x32\xbe\x84\x5c\xe9\x4c\x8f\x0e\xeb\x6d\x98\x5f\xef\x4b\xdc\xb1\x90\x87\x28\x14\x86\x06\x97\xd3\x83\x99\x4d\x3b\x8e\x6f\xa9\x90\x51\x26\x82\xe2\x59\x13\x42\x3b\x23\xb3\x23\x0b\x72\x74\x13\x32\x0e\xd9\xfd\xb4\x99\xce\x43\x00\xcf\xc0\x42\x27\x33\x01\x7d\x0f\xd0\xbb\x97\x99\x68\x20\x72\xa3\xfd\xdc\x7b\x04\xff\xd3\x34\xd7\x57\x14\x93\x6b\x4a\x3b\xdc\x6a\x5e\x4c\xfc\x06\x62\xa0\x72\x8c\xb1\x9c\x86\xf9\xd1\x9d\x8a\xc8\xc3\x28\xd5\x68\xc1\x82\xd0\x62\x6e\xe3\x09\x74\xb6\x8c\xbe\xe0\x9b\x1d\xf4\xb5\x74\x37\xab\xa7\x62\x40\x6f\x46\x2d\x22\x6f\xa6\xf1\x83\xf2\x0b\xc0\xa3\xf9\x4e\x77\x8e\x94\xc2\x64\x62\x95\x85\x6e\xb0\x2a\x82\x1f\xb7\xf2\x30\x6f\x0a\x3d\xbe\x68\x7f\xe3\x7c\x08\xb4\x56\xfe\x3a\x44\xa6\x9a\x27\x9f\x09\xd8\x6c\x21\xf8\x59\x27\x7f\xae\xa5\x0f\xcb\x67\xc6\x3e\xfd\x06\x9a\xfa\xa0\xe9\x9b\x23\x87\x1e\xaa\xf4\xed\x60\x16\x9e\x69\xc5\xb8\xa7\x44\x83\xdf\xd8\x4a\xf3\xf8\x23\x79\x21\x70\x96\xcd\x00\x32\xc7\xd7\x82\x4e\x1b\x7b\x9f\x26\x6c\xfc\x12\x72\x24\x34\x6e\x24\xb2\x68\x34\x68\x3d\xd1\x5e\x48\xa6\xf9\x09\x5d\x35\x52\xe2\x8d\x6d\x04\x30\xbb\x9f\x41\x22\x72\xb5\xd9\x02\xa4\x47\x7f\x40\xfd\x08\xbc\x30\x0e\xdf\x44\x8d\x32\x63\x0c\x72\xa4\x11\x4a\x8f\x03\xd5\x30\xd8\xc2\xf4\x76\x64\x0c\xe3\xc7\x5c\x63\x1c\x98\x0f\x10\xd7\xe7\xc7\xa0\x01\x1c\x02\x1c\x92\xc3\x36\x72\x7f\x13\x39\x4b\x1f\x0e\x46\xcc\x83\x1f\xd0\xb0\x44\xfb\x11\x3d\x1b\x3f\x00\x2a\x12\x01\x7b\x38\x9d\xe8\x95\x23\x01\x99\xd7\x89\xa7\x2a\x10\x9b\x11\xfd\x3f\xf0\xed\x39\x72\x08\xfc\x26\x72\xb7\x0f\x56\x37\x56\x31\xaa\x0a\xeb\xf0\xbb\x0f\x9f\x7e\x81\x6e\x8d\xb0\xb6\x1a\x50\x66\x9e\xa9\xa1\x8a\x3f\x35\x77\xe9\xf9\xa8\xcd\x58\xdf\x32\x25\x26\xef\xcf\xcd\x51\x67\xc6\xc4\x93\xe8\xc2\x1a\x1c\x36\xf3\x47\xa4\x0b\xfe\x87\x93\x2b\x26\xb2\x1b\x86\x05\x89\xe0\x19\x3e\xff\x1f\x7b\xef\x02\x18\x55\x71\x3d\x8c\xcf\x3e\x02\x9b\x07\x49\x84\x80\xa0\x11\x57\x1a\x34\x28\x09\x09\x06\x24\x11\x24\x4b\x36\x2f\x08\xc9\x9a\x6c\x20\xf2\x70\x59\xb2\x9b\x64\x61\xb3\xbb\xee\xde\x4d\x82\xa2\x44\x93\x28\x6b\x48\x8b\x8a\x8f\xb6\xb6\xa2\xd5\x56\xbf\xfa\xb5\xb4\x55\x4b\x7d\xb4\x41\x14\xd0\xda\x16\x45\x2d\x2d\xf6\x2b\xad\xb4\x4d\x8c\xad\xa8\xc8\x43\x90\xfd\x9f\x33\x33\xf7\xee\xbd\x7b\x37\x0f\xf3\xa7\xf6\xeb\xf7\x63\x61\x72\xe7\x9e\x39\x33\xe7\xcc\x99\x33\x67\xce\xcc\xbd\x77\x06\x38\xc9\x43\x23\x89\x9d\xf9\x0d\xad\xa8\xd5\x38\x25\x41\xe1\x69\x83\x4d\xfd\x6f\xd0\xf5\x56\xe8\x0d\xc0\x3d\xb0\x1e\xc3\x04\xf6\xad\x36\xa0\xf1\x8c\xd1\xdf\x52\xcc\x27\xb1\x8f\xf6\xcd\x37\xf0\x3e\x2d\x99\x82\x6f\xfd\x93\xd2\x9e\x19\x7a\x17\x24\xc2\x3f\x02\x9a\x2c\x3a\x13\x97\x8c\x43\x3b\xb1\x29\x84\xea\x93\x0f\x36\x5b\x4b\x3b\x6d\xa6\x46\x6c\x37\x91\x9d\x10\x2e\x5f\x9c\x60\xf6\x5d\xd4\xbf\xfe\xcb\x8f\x8b\x55\x1e\x18\xcf\xae\x10\x33\x88\x31\xde\x4f\x5f\x4f\xe9\x7c\x3a\x22\xb7\x7c\x94\x1b\xbe\x89\x39\x1f\x0a\xd9\x8c\x6f\x88\x58\xa2\xbb\x6a\xc2\x31\xd1\x64\xd1\x4f\xc8\xfb\xd6\x25\x46\xd7\xa8\x09\x77\xa2\x3f\x49\x52\xbe\xf1\x4f\xb0\x8f\xc1\xc4\xe3\x66\xaa\xfa\x87\xf1\xa5\x7d\x2a\xd3\xd5\xf2\x76\xd3\x82\x75\xb8\x25\x9c\x83\xe6\xe1\x33\x39\xf3\x2e\x7c\x29\x13\x6c\x6f\x6e\xef\x55\xab\x98\x5d\xa3\x2d\xf5\xd9\x67\x74\xed\x7f\xfe\xce\x5c\x42\x45\x61\xd1\xec\xd1\xe4\xd0\x17\xa9\xd9\x71\x0d\x7d\xdf\x8e\xc3\x47\x84\x49\x30\xa2\x94\xa6\x86\x92\x32\x7a\xd2\xba\xb0\x1d\x7a\x4a\x93\xe8\xee\x2f\xc8\xde\x53\x13\x89\xf4\x59\x3c\x2e\x37\x3e\x95\x80\x83\x56\xff\x1a\x18\xce\x0f\xf6\xa2\x17\xff\x31\x1a\x0a\x49\xcb\x7e\xa7\xa1\xee\x76\x46\xca\x73\x45\x61\x91\x6b\x10\xb7\xa5\xff\xc1\x2f\x68\x1f\xc2\xd1\xa2\xf3\x10\x7b\xe9\xd2\x8a\xaf\xc7\x5f\x7c\x8c\x4e\x18\xc6\x1d\x63\x8e\x0e\x5d\x29\xc5\xfb\x93\x70\xaf\x9e\x44\xf4\x77\x7f\x4c\x2b\x9a\xc3\x9a\xb0\xff\x5b\x9f\xd3\xbe\x9d\x07\xb6\x75\xe1\x49\x96\x42\x1b\x3f\x74\x30\xa5\x33\x44\x1b\xca\x2a\x6b\x71\xa9\x71\x44\xc3\x2a\x8a\xef\xca\x63\x28\xed\x34\x92\xd2\x75\x1d\xfd\x90\x74\xd3\x3a\xd1\x1c\xb1\x36\xb8\x48\x13\x69\x83\xfe\xe7\xbe\x60\x8a\x22\x56\x13\x55\x83\x56\xf1\x43\xba\x21\x22\x7e\xf6\xd7\x75\x19\x1b\xce\x98\x45\xc3\x4f\x07\xf6\xe8\xf2\x9f\xcf\xc7\xf2\x18\x2f\x34\xcf\x89\xfe\xf1\x9f\x2b\xb5\xa3\x22\x3e\x5a\x3b\x16\x27\x30\xed\xf8\xfa\x59\x42\xbb\x56\x66\xbe\xf0\x0c\x8e\xad\x11\x3d\xcb\xc5\x5e\xd0\x6f\x0d\xcb\x08\x5e\x85\xe3\xe4\x1f\x64\xc2\x10\xda\x51\xd4\xfd\x84\x4e\xdf\x23\x79\x77\xe5\x82\x72\x64\xa6\x3c\x57\x21\xef\x15\x06\xb9\x60\x2e\x80\x96\x7a\x52\x83\xb5\x4c\xe9\xfa\x26\x61\x4d\xab\x68\xd6\xde\xd3\x4c\x72\x3b\x53\x69\xb7\x65\x5f\x7b\xcd\xec\xbf\x17\x9f\x33\x76\xfd\xe8\x14\x93\x54\x7f\x1a\x7b\x5b\x5f\x65\x00\x56\xe9\xf9\x28\x4d\xe7\x26\xd6\x4d\x09\xe2\x38\xbd\x29\x9e\x16\x73\xf0\x33\xfa\x3e\xc4\xcc\xfe\x5b\x8f\xd1\xf9\xa8\xd4\x3d\x70\x47\x4c\xb1\x1a\xfd\x75\x67\xe9\xbb\xb0\x19\x54\xa8\x02\x30\x55\x7f\x86\x75\x1e\x91\xd3\x94\x6f\x4c\x0e\x53\x36\x35\x53\xe8\xa2\xcb\x09\x30\x20\x1d\x0e\x48\xa3\x6f\x18\x20\xfb\xa2\xe8\x52\xba\xee\x81\xbc\xfd\x0f\x9d\xc1\x77\x56\xfa\xaf\xff\x50\xfc\x90\x5e\xdc\x5f\x61\x39\xdb\x2e\x43\xa0\x1f\x21\x22\xc1\xcc\xee\x65\xa9\x3d\x4d\x69\xf8\xfa\x5e\x5c\xfe\xfe\x94\x1e\xba\x89\x9b\xb9\x8b\x74\xfc\xe5\xd2\x9e\x8d\xf7\xb3\x09\x79\x52\x46\x4a\x27\xee\x17\xd0\x8d\x9b\xa0\xea\xa9\x14\x90\xef\x19\xf8\x52\xef\xd4\x9e\x65\xfa\xd0\xae\x03\x03\xf9\xbf\x4f\xb9\x93\xce\xfb\xff\x15\x62\xaf\x55\xd1\xef\x41\xba\xb5\xa1\xfe\x8e\x3d\xb8\xa2\x79\xe0\x70\xca\x73\x49\x19\xf1\x07\x43\x25\x67\xba\x57\x9c\x41\xfc\xd6\xbf\x5e\x05\x9e\x08\xbe\x80\xd5\x53\x7a\x7a\x57\x9f\x16\xa8\xea\xbb\x0e\x85\x26\x0b\xba\x8e\x5e\xfd\x8c\xbe\x5d\x27\xb5\x03\x4b\xa8\xf3\x50\x98\xca\x7d\x11\x88\xd2\x15\x61\xba\x07\x1a\x7d\x7f\x32\x7f\x6f\xe8\x83\x96\x3f\x02\x3e\xae\xe7\xf3\x65\xd3\xd6\xa3\xb8\xca\x7f\x62\xbf\xe6\x24\x16\xaa\xef\xc2\x67\x0e\x50\x18\xd6\xb9\xab\x37\x54\x92\x2a\x3c\x2b\xe6\x0f\xf5\x0d\x7c\x5d\xf9\xbc\xa1\x06\x5f\x92\xeb\x2e\x4b\xed\xb1\xa4\xf5\xa4\xdf\x9d\xff\xc7\x40\x66\x77\x59\x1a\xbe\x66\x29\x24\x0e\x4c\xc4\xf5\x84\x84\xae\xd7\x82\x49\x40\xa9\xa3\xd7\x98\x7f\xa0\xf5\xe8\xca\xdd\x9f\xa6\xbc\xf8\x9a\x66\xdf\xca\xdd\xb9\xbd\x2b\x77\xb3\xfd\x2b\xe8\x76\x43\xa9\xdd\x13\x33\x9b\xf1\x60\x22\xad\x10\xec\x7a\x4b\xc8\xee\xf8\x5c\x13\xbc\xa4\xfb\x92\x36\xb6\x41\x0f\xf6\x95\xf0\x01\x8e\xf2\xa1\x1e\x12\x85\x7e\x44\x5d\xcc\xb7\xa2\xa0\x63\xfb\x5d\x71\x98\xdc\xd5\x1b\xbc\xbe\xfb\x92\x55\x2c\x5f\x21\x00\xc2\x07\xd8\x26\x16\x75\xb2\x78\xef\xb3\x85\xa4\xaf\xf7\xa7\xa0\x52\x34\x0f\x0e\x77\x3d\xfa\x96\x1e\xfd\xab\x85\x6c\x4f\x37\xb6\x3f\x45\x64\xab\x0b\xf0\xe5\x18\xf1\x94\xae\xfa\xb0\x3c\xd7\xc0\x3e\xa5\x3c\xe8\x7a\x1c\x63\x04\xf7\xc3\xd2\x48\x1b\xdf\x5d\x92\x39\x18\x47\xdd\xab\xcf\xc0\xed\x6b\xec\xfd\xf1\xda\xdc\x5e\x69\x0f\xc2\xa0\xa1\x0f\x9d\xfb\x8e\xb3\xf1\x9b\x66\x75\xa7\x3f\x4b\xb0\x72\x87\x04\x6f\xb7\xae\x63\x01\x25\x1f\xd2\x53\x58\xb0\x58\x2c\x56\xda\xfe\xe2\x6a\x7a\xd4\x50\xe8\xe3\x03\xff\xe8\xd1\xbf\x84\xbb\x44\xed\xea\xd3\xed\x3a\xac\x43\xfb\xff\x7e\x0a\xdf\x00\xc4\x26\x96\x12\xd0\x87\x6e\x31\x08\x2f\xec\x2d\x62\xcf\x2c\x0f\xee\x2d\xa2\xdf\xa4\x88\xef\xdc\x76\x5f\x52\x78\xb8\x90\xc4\x28\x30\xf4\xc7\xdb\x3f\x20\x0e\x13\xd9\xf5\xb9\x4e\xf3\xf2\xed\x9f\x1b\x01\xa3\xf5\x5b\x3d\xfa\xdd\xdf\x43\xfc\x81\x47\x73\x7b\x07\x5e\x6c\xd8\x1a\xd9\xf7\x0f\x58\x9f\xd1\x71\x8b\x3e\x7e\xd3\xcc\xdc\xde\xbe\x38\xfa\x79\xa4\x9e\xb3\xd0\x9d\xd6\x85\x15\x09\xa5\xb3\xcb\x04\x61\x0a\xdb\xfe\x02\xfb\x03\x44\xfa\x1b\x53\xa4\xf5\x34\x45\x55\x45\xc9\xc9\xdf\xff\xce\x7d\x4d\xfa\x22\xbf\x10\x3f\x6f\xef\x2e\x4c\x0d\x7d\xb1\xeb\x0b\xfc\x8a\x02\xbf\x53\x2d\xec\xa9\xc3\xc7\x63\xe6\x50\xe4\x93\xf7\x6e\x7d\x37\x3e\xbe\x4f\xf9\xf1\xd1\x13\x8e\x8c\x54\xcd\x27\x9a\x93\x17\x7c\x90\xfb\xcf\x90\xbe\xbb\x63\x97\x26\xf4\xfb\xfc\x8a\x8c\xf4\x4d\xef\x85\xf0\xf3\xb6\xc2\xf8\xcf\x85\x4b\x70\xe1\xfc\x5a\x8b\xe1\x56\xfc\x62\xb8\x90\xbe\x22\xb7\xf1\x8e\x34\x34\x9e\x8b\x52\x43\xfb\xc5\xef\xfa\xd9\x43\xf5\x54\x04\x83\xc8\x33\xd9\x29\x25\xbb\x85\x02\x18\x78\x29\x5f\x85\xb2\xa1\x97\xce\x9b\x60\xec\xed\xe8\xa5\x47\xb8\xf4\x5d\x99\xcc\x61\x90\x93\x7e\x81\x0e\x33\xe4\x81\x7b\x41\x9a\x8f\xd1\xf7\xa7\xe9\x4e\x33\x74\xe8\x78\x93\xed\x80\x90\xdc\x8d\x4f\xae\x0a\xe9\x8b\x28\x21\x4b\x5a\xc7\x2b\xe9\x0a\x79\xf0\x5d\xa9\xc1\x72\x83\xe1\xb0\x76\xb7\xa6\x76\xaf\x4e\xcd\xff\x3f\xb7\x26\x85\x8e\x86\xfe\x4f\x68\x77\xe8\x64\xe8\xa3\xd0\xab\x3d\xfa\xa9\xd7\xd2\x33\x9d\x8c\x29\x8f\xe0\x46\x21\x3a\xe6\x2a\xf8\x28\x01\xb4\xc6\x29\x9d\x61\x36\x92\x18\x7b\x0a\x71\x49\x65\x72\x4f\xd2\xe6\xd0\xeb\xf9\xfb\x71\x30\x09\x5c\x40\x97\xdf\x09\xb5\x33\xbd\xfa\xfc\x97\x5b\x3f\xed\x29\x45\xa4\x8c\x1e\xfd\x0e\xfa\xc5\x43\x31\x98\x86\x87\xf2\x0f\xd2\xef\x58\x56\x65\xa4\x07\x7c\xe0\x97\xa4\xe9\xe9\x7b\x14\x4d\x67\xba\xfe\x29\x5c\x8f\xb3\x30\xb4\x36\xb2\xd1\x82\xaa\xe0\x80\x6e\x6b\x68\x2f\x3e\xf1\x4a\x09\xf5\x9d\x68\x38\x93\x7b\x08\xf7\x06\xd0\x55\x64\x18\x26\xac\xca\x48\xca\x7d\x2b\x1f\x77\x46\xc6\x8f\xb2\x81\x5d\xdc\xe2\x2c\xa5\xf5\x4d\xb4\x46\xf8\x9a\x33\x3e\xf0\x06\x36\xf5\x30\x95\x4f\x6f\xc5\x49\xb0\xb1\xeb\xf8\x6d\x57\xc1\xf8\x98\xd9\x1d\xc0\x07\x5e\x46\x14\x5a\x68\xff\xae\xc3\xda\x19\xbb\x43\xe0\xf4\x75\x57\x6c\x3d\x03\x86\x2a\xae\xe3\x03\x4d\xf0\x53\x7c\x14\xc8\x9f\x99\x19\x43\x75\xa9\xe2\xd6\xbe\xd0\x04\xc7\xb6\xca\x76\x08\x4d\xea\xae\x35\xe0\x03\x2e\x5d\x4a\x17\x1e\x68\xb2\xeb\xb4\x36\xb4\x1f\x94\xbc\xba\x7b\xc1\xe1\x7a\xb6\xeb\x16\xee\x81\x76\x7c\xb7\x26\x38\xe1\xcd\xd3\x42\x7e\xf7\x35\x5d\xc7\x1b\xb6\x0a\xd7\x85\x4e\x00\x48\xf8\x27\x9d\xef\xa7\x65\x84\x6a\x8f\xf4\xd5\x31\xfd\xd8\x93\xd2\x89\x47\xc5\x74\xd7\x1e\xc1\x67\x60\xbb\x61\x40\x7a\xf3\x74\xe8\x93\xe0\xde\xd0\x7e\x69\x6b\xc3\x16\xf6\x15\x05\x66\xda\x8d\xf3\xe9\x6b\xe8\xc6\x9f\xc2\x0d\xbc\x1f\x05\xbf\x87\xdb\x82\x9e\x10\x2d\x0b\xeb\x23\xb5\x47\xd0\x22\x74\x8b\xef\xef\xe9\xbb\xd2\x27\xd2\xdd\x86\x45\x61\x53\xa5\x7b\xf5\x0c\x65\xe1\xe5\x94\xae\x39\x61\x1c\x08\xa5\xef\x70\x37\xb2\x6f\x79\x9f\xfd\x82\x1f\xf2\x3b\x56\xf8\x2b\x3f\x92\xa1\xf6\xc8\xc0\x66\x89\x9b\x39\xc8\x0d\xad\x37\x72\x14\x16\x32\x39\x47\x29\x5d\x67\x50\x85\x6b\x8f\xc4\xe0\xa9\x1f\x37\x54\x11\x95\x59\x7f\x9a\x1d\x50\x2f\x4c\x85\x21\xeb\x26\xfa\xee\xf7\x11\xae\xd4\xdf\xc3\x62\x19\xd1\x81\x27\xf7\xc6\x1d\xe6\x3b\xea\xc0\x68\x8d\xaf\xef\x47\xef\x87\x24\xeb\xfd\x02\x74\xf3\xbd\xf8\xde\x04\x74\xb7\x4f\x77\x9d\x8e\xd3\x1c\xec\x69\xd2\xd0\x05\xc0\x52\x43\xfe\xab\xb7\x8d\xc3\x6e\xc2\x9e\x3b\xbe\xca\x9e\x3b\x6e\xfa\x9c\x2b\x7c\x5a\x4a\x27\xee\x31\xd6\x75\x08\x86\xb5\xdb\x26\xe4\xf6\xee\xd5\xdf\xc1\xd4\x5b\x93\x7f\x30\xf8\x49\x4f\xda\x1d\x7c\xa1\xa4\xb0\xbb\x0a\x3a\x79\x5a\xc7\xdf\x2f\xc5\x57\x6a\x7a\xe6\x6f\x0e\x9d\x12\x02\xf8\x50\x1a\x47\x7b\x18\xd6\xd3\x43\xbf\x99\x01\x4a\x9a\x7b\x7c\x20\x5e\x5c\xaf\xff\xbc\x1b\x1f\xdb\xa3\x07\x96\xd4\x73\xb3\xfe\xc0\xfb\x18\x4b\x8d\xff\x34\x74\x51\xb7\xef\xcc\x81\x7f\xe5\xbf\xda\xfa\x27\x74\x06\xbb\x31\xaf\x1f\x06\x4d\x2d\xcc\x52\x8b\xfb\xf0\xc5\xdf\x9e\xe2\x70\xa8\x34\x55\xb4\x0c\x8f\xa3\x7f\x75\x52\xb4\x37\xa1\xd3\x91\x11\x7d\x37\x1d\xd1\x07\xde\x00\x75\x3d\xdc\xb0\xb5\x06\x3a\xad\x81\x6e\x09\x60\x4a\xed\x5e\x91\x3a\xe3\x20\xee\xb8\xbc\xeb\x7d\x6d\xc7\xae\xb4\x1e\xfd\x94\x1e\xeb\x45\x69\x03\xf8\x24\x7b\x72\xc7\x07\xfa\x8e\x3e\x7d\xf7\x45\xf9\x93\x85\xa3\x53\x7a\x3b\xf6\x69\x56\xb2\xf1\x08\x47\xe9\xa8\xfd\x03\xa8\x7c\xd9\xaa\xb3\x99\x1d\xc2\xaa\xef\xbb\x9f\xed\x3d\xda\x79\x29\x2e\x69\x6c\x5e\xa8\xa1\xab\x8e\x74\x57\xd6\xbe\x2b\x4f\x31\xd5\x42\x03\xcc\x0e\x0c\x0e\xb5\x25\x75\x97\xa4\x76\xec\x49\xeb\x59\x9f\xd6\x73\x73\x9a\x4c\x11\x27\xf7\xe8\xef\x44\x93\xd1\x5d\x24\x1d\x70\x85\xae\x15\xb6\x08\x97\x5f\xc7\xab\x7a\x34\x08\x4b\xcf\x74\x97\x9c\xc9\x7d\x2b\xf7\x10\x7f\x04\x6e\xb8\x18\xaa\xd8\xb1\x57\x2f\x7d\x74\xf9\x66\xc7\x5f\x34\xf9\x6e\xf6\x61\x41\xa8\xf4\x4c\xeb\x5e\x34\x16\x2d\x4b\x70\xc7\x1d\x94\x08\x3e\x58\xc7\xb7\xdc\xb7\x62\x61\x25\xfc\x51\x3a\xbe\x3b\xf0\x4e\xee\xa1\x8e\xbf\x69\xa8\x65\xe9\xc7\x7c\x7f\x46\xc7\x0c\xc4\x9f\x0a\x39\xd3\x4e\xbc\xd3\x63\x5d\x40\x76\x7d\xa0\xed\xd9\x78\x9f\x1e\x04\x79\x19\x08\x76\x32\xb3\x22\xd0\x4b\xd9\xf7\x2d\x7d\x9a\x6e\xeb\x5d\x67\xc0\x83\xf9\x8c\x2f\x35\xa7\x53\x24\x4b\xaa\xd8\x56\x7c\xbb\xcf\xbe\xf1\x27\xa9\xf9\xbe\x9c\x6b\xb9\xe4\xa9\xf1\x16\x3d\xca\x46\x5c\xb0\xd1\xfd\x3f\xa3\xef\x53\x0f\xfc\x92\xfa\x07\xbf\x40\xd5\x5a\x1e\x79\xcd\x63\x63\xc6\x4c\x1c\xd2\x0a\x53\x7b\x66\x76\x74\xd7\x9e\xe9\x09\x9e\x49\x79\xe9\x65\x7c\xa4\xbd\xab\xe3\x64\x42\x28\x65\xd3\x75\xbf\xc0\x1d\xcf\x42\xbf\x9f\xb1\xeb\xc0\x47\xb7\xff\x0e\x9f\xf1\x62\x9f\xce\x0d\xe7\x7f\xca\x19\x09\xc4\x75\xdf\x7a\xf2\xc0\x47\x3d\x65\x13\x0f\xfc\x35\xfe\xf7\xd0\xd9\xff\xa4\xcf\x10\x4f\xb4\x6b\xd8\x8a\x88\x81\x31\x80\xd1\x13\x3c\x19\xda\xd5\xd1\x9f\x08\x02\x4d\x12\xca\xa9\xfe\xbe\x84\xaf\x73\xcf\x78\x35\x74\x92\x97\x74\xe0\xaf\xa1\xfe\x03\x7d\xb7\xbf\x8e\x44\xe2\x5f\xce\xed\xcd\xff\x3f\xb8\x2e\xd9\x12\x07\x02\x3e\xd0\x47\x73\x1c\xf8\x47\xfc\x49\xd0\x09\x19\x05\x86\x8d\xab\xa7\x80\x2a\x83\x6f\x55\xee\x8f\xf0\x27\x73\x46\x0e\x37\x15\x30\x39\x34\xf4\xbd\x73\x9c\xe9\xdb\x5b\x84\xae\xb8\xd0\x2f\x12\xc0\x1f\x79\x1f\xd4\x70\x13\x7f\xac\xfd\xe6\xae\x81\xb4\xdb\x5f\x23\x24\x15\x57\x83\x8b\xdf\xec\x0a\x07\x8b\xc0\xf5\x7c\xfd\xc0\x07\xe0\x32\x83\xb3\x7a\x93\x91\x2d\x1b\x31\xe9\x0b\x2b\xf1\x05\x93\x9e\x6d\x53\x7f\x83\x7b\xe6\x5d\xf8\xfc\x1c\xac\xd9\x27\xa0\xe5\xf3\xf1\xad\x18\xbe\x41\x37\xca\x1f\x8a\x38\x01\x6e\xd0\x47\x60\x75\xad\xb4\x29\x42\xef\xcc\xf8\xf8\xc0\xdf\x42\xfd\xf1\xa7\x42\x65\x69\x90\xf2\x01\xf8\xa6\x21\xcb\xe4\x29\x6f\x75\xbc\xac\x45\x4a\xa9\xc1\x27\xb0\xe8\xdb\xff\x35\x1b\x5f\xf8\x7b\xa9\x62\x2b\x7d\xed\xe0\x1a\x2c\xba\xe3\xe3\x4b\x67\xbc\x1e\x55\x7e\xa8\x2d\x6d\xe0\x25\x68\xec\xbb\x45\x7b\x5d\x41\xbf\x03\xd4\xf7\x5c\x0f\x73\xb2\xf8\xce\xd7\x36\x1b\x84\x54\xb0\x58\x29\xcf\x2d\xc6\xb7\xe5\xf1\x3e\x78\xf4\xd3\xdd\xca\xfd\xe0\x40\x60\x39\x38\x3c\x05\xd3\xf0\xc0\x41\xba\xd7\x00\x7d\x81\xa1\x73\x16\x46\xc7\xf0\x13\x38\x8a\x8f\xa5\x3c\xa7\xc3\xe7\x65\x38\xcb\xeb\xb8\x35\x5d\xd3\x12\x68\xbf\xf5\x18\x38\xb8\xdf\x22\xe2\xa6\x99\x93\xa9\x27\xbc\x86\xed\x2b\x0b\xba\x5a\x4d\xe7\xc6\x77\xea\xd9\x87\x61\xf8\xba\x09\x7f\x48\x91\x44\x5f\x17\x63\xdb\x8c\xa6\xe2\xe9\xdc\xf2\x3d\xc8\xdd\x34\xff\x64\x6c\xae\x67\xa9\x5f\x79\x92\x3e\xc7\x46\xb7\x1a\xbf\xe7\x82\x84\xa0\x05\x58\x81\xd1\xb4\x21\xa4\xc5\x54\x0d\x4f\xe5\xdf\x3b\xe5\xbe\xd5\x10\x4a\xc5\x21\x89\x7a\xe2\x9b\x8b\x3f\x8b\x45\x9b\xfa\x19\xc7\xe0\x62\xe8\xc7\x03\x2f\xa3\x50\x34\x23\x61\x4f\xb8\x88\x52\x1e\x78\x00\x28\xe1\x76\x66\x6c\xbc\xc5\xaf\xb7\x06\x3a\xfa\xf0\x69\xc2\x5e\x72\x25\x7a\xf8\xf4\x53\x2e\x0f\x7d\xa5\x4a\xb7\x79\x0c\x45\xe8\xb7\x89\xdf\x9f\x2d\xcf\xed\x65\xf2\x07\xaf\x0d\xd7\xfd\xb2\xf1\xc5\x4a\xfa\x18\xec\x50\x8a\xf9\xe0\xa3\x4f\xe2\xe8\x37\xaf\xef\xf8\x18\x7c\xc6\xf6\xfc\x66\x9c\x50\x14\xbf\x8b\x67\x21\xa0\x3d\xc2\x5d\x5c\xd8\x46\x39\x65\x21\xf6\xf9\xa7\x99\x0e\xce\x99\x74\xe3\xb1\x1c\xba\x47\x55\xed\xce\x4e\xc8\xc4\x9d\x3a\x6b\xc6\x2a\x28\xda\x0a\x26\xca\x02\x3a\x56\xd7\xf5\x56\x4a\xb1\x39\x63\x15\xae\x36\xf6\x6d\xa3\x14\xd0\x04\x31\x9a\x84\x99\x5f\xf4\x48\xba\x93\x51\x17\x70\x53\x4c\xf0\xbd\xfc\xe8\xa7\xe0\xe0\x0a\xd6\xd0\x9a\x7b\x28\xf4\x2f\xf4\x12\x07\x2e\xe8\x5e\x8a\xdf\x10\xee\xd1\x6a\x76\xe5\xff\x39\xb4\x94\xb4\xe4\x50\x4f\xb7\x02\x9c\x01\xba\x67\x7c\x5a\x37\xdb\xe2\x1a\x79\x45\x7a\x49\xa1\x93\x33\xd0\xbf\x33\xf4\x6d\x64\xab\x29\xbf\x82\x46\x5d\x97\x7f\xba\x61\x6b\xc0\xb1\xb7\x98\xb9\x86\xaf\xcc\xc7\xd3\x06\xa9\x1f\x95\x7b\xa8\x2b\x4c\x85\x23\x94\x40\xc5\xeb\x7a\xdc\x19\xd9\xa1\x13\x50\x93\xf4\x81\xe4\xee\x14\xcd\x6e\x20\xba\x2a\xa3\x2e\x94\xd2\x22\x2e\xf5\xa5\x89\x47\x2e\x48\x24\xe9\x5a\x49\x52\x5f\x32\xa3\xf6\x7a\xa4\x70\x88\x61\xdb\xa1\xb3\x44\x47\xad\x65\xb9\xbd\x20\xaa\x3c\x4a\x8d\x49\x62\x15\xcc\x09\x72\xfa\x04\x7c\x08\x74\xe8\xf9\x76\xda\x02\x07\xa8\xe8\x91\x0e\x2b\xdf\xcc\xc5\x8f\xdb\xe8\x4a\x6f\xc6\x3e\x46\xdf\xae\xc9\xc3\x0f\x7d\x95\xfb\x2f\xe2\x7e\x45\xb5\xb8\x47\x7e\x17\x28\x6a\xf1\x91\xe0\xf8\x86\x05\x61\xd2\x7a\x63\xf7\x52\xc3\x66\x0d\xd5\x28\x98\xa0\x50\xd5\x4c\xc7\xa3\x95\xf9\xde\xe9\x7c\x65\x55\x52\x4e\xba\xd9\x7e\x64\x0b\x1e\xfa\xc8\x0b\xf7\x55\x09\xd1\xf3\xaa\xb6\x52\x1d\x35\xe2\xbe\xb2\xdd\xb5\xc7\x60\x70\x79\xba\xef\x05\xad\x42\x21\xc5\xfd\x15\xa9\x66\x18\xe9\xdb\x5e\xe6\x8c\x8b\xe9\x32\xb7\xa4\x78\x29\x3f\x3f\x0e\xba\x77\xb3\x9e\x3f\x53\xa2\x5a\x47\x8f\xb1\xea\x9b\x4b\x37\x91\x31\xa2\x86\xc5\xf4\xa7\xe6\x43\x81\x96\xbe\x42\xbe\xcf\x39\x93\x23\x36\x8e\x15\xdf\x89\x4b\xe9\x7c\x9d\xfa\x4a\xc2\xcd\xb8\x8e\x9d\x7b\x1c\xb8\x5c\xc2\xe6\x15\x03\x69\x5b\xa1\x35\xf7\xb4\xdf\x12\x26\x42\x59\xc7\xab\x5a\x18\x56\xeb\x5a\xb2\xd8\xa4\x89\x51\x4e\xf9\x79\x31\x11\x8f\x9f\xfa\x09\x75\x83\x37\xfd\x86\xd6\x47\x74\xba\x43\x1f\x21\x99\xd0\x3c\x6c\x61\xb6\xa7\x1f\xde\xef\x15\x55\x6a\x65\x4f\x49\x98\x02\xad\xa0\x46\x42\xc6\x55\x20\x9a\x8a\xd0\xc1\xd0\xe9\xd0\xde\x81\x0b\x69\x7f\xd4\xec\x6d\xdf\xa8\xbf\x92\x08\x0b\x3a\x76\x6b\xf3\x41\xd7\x5a\xae\xa2\xe4\xdd\x22\x79\x1d\x53\x68\x7d\xdf\xd5\x8c\xfa\xef\x06\xda\x23\x2a\x04\xe5\x1c\xec\xf7\xd3\xef\x3f\xc3\xf4\xe3\x75\xdc\x3b\xbe\x3d\xc0\xf6\x90\xdf\xc8\xaf\x6d\xfc\x2a\xf0\xab\x8f\x5f\xdd\xfc\xda\xc4\xaf\x0e\x7e\x5d\xc3\xaf\xab\xf8\xb5\x8e\x5f\xad\xfc\x6a\xe1\xd7\x32\x7e\x35\xf3\x6b\x21\xbf\xce\xe7\xd7\x79\xfc\x9a\xc7\xaf\x39\xfc\x3a\x93\x5f\x33\xf9\xd5\xc8\xaf\xe9\xfc\x3a\x99\x5f\xd3\xf8\x35\x95\x5f\x93\xf8\xd5\xc0\xaf\x7a\x7e\x25\xfc\x7a\x86\xef\x9d\x7f\x92\x5f\x8f\xf1\xeb\x51\x7e\xfd\x90\x5f\xfb\xf8\xf5\x08\xbf\xbe\xcd\xaf\xfb\xf9\x75\x1f\xbf\xf6\xf2\xeb\x8b\xfc\xba\x93\x5f\x77\xf0\xeb\xd3\xfc\xfa\x30\xbf\x3e\x44\xaf\x8f\x6e\x81\x1e\x4b\x37\x3e\x8b\xbc\x9f\x7a\x57\x1c\x05\x52\x7d\x7d\x74\x6b\xac\x74\x0a\xe4\xfb\xff\x88\xeb\x11\xe0\x4e\xb4\x4f\xc2\x19\x49\x19\xdf\x61\x1d\x30\x1f\x98\xc4\x57\x7f\x2a\x00\xf6\xbc\x65\x6f\x21\x09\xad\x36\xd0\x55\x06\x03\x1e\xc2\xfc\xf2\xf7\x2c\x87\x0b\xc9\x6b\xe1\xc3\x91\xf2\x69\xff\x9f\x1c\xab\xac\xa7\x14\x65\x15\x42\x59\x52\x29\x15\xbc\x14\xe0\xe7\x51\x2c\x31\x7c\x58\xfa\x1e\xf7\xd1\x0a\x7a\x2f\xf5\xbf\x47\xb7\xe1\x49\x01\x44\xf2\x87\x70\xfe\x1f\xd9\xf4\x96\x6e\x0c\xf0\x0b\x66\x47\xf4\xd9\x6c\x44\xeb\x7b\x2a\x72\x88\x55\x22\x3e\x6c\x82\x89\xcd\x8d\x74\x04\x49\xdf\xdd\x20\xfa\x07\xb8\xbb\xe5\x8b\x72\x8e\xe9\xfa\x44\x69\xf7\x9c\x0a\xbe\xab\xfc\x5b\x9c\xfb\x77\xd9\xc8\x3f\xee\x7b\xd6\xc3\xb8\xeb\x3d\xdb\xc3\x17\x11\xfe\x3e\x89\x9e\x72\x12\x7e\x37\xf4\x32\xa2\xbc\xf5\x3d\x64\x74\x67\xea\xbe\x42\x12\x3c\xb0\xd3\x08\x17\x45\x8e\x48\xfd\xac\xca\xfa\x85\xa7\x57\x04\xc4\xb3\x18\x22\xfb\x29\xa6\xa3\x7b\x44\xf7\x66\xaa\xc8\xc8\x43\xf7\x09\x86\x32\x1c\xbe\x5f\x0f\x9d\x0c\x2e\xc8\xff\x5d\xca\x5d\x3f\x47\x8b\x13\x0e\x7d\x11\x4c\xa4\x16\x36\xf7\xad\x13\x27\x42\xaf\x86\xf6\xc1\xf5\xb3\xd0\x2e\x30\x00\xbf\x83\x2b\x4c\xec\x43\x9f\x47\x9c\x2b\x26\xbf\xfc\xdf\xb6\x7a\x52\x5e\x3a\xdb\x71\xe2\xd2\x94\x4e\x7c\xca\xf8\x02\xf5\xe1\x4e\x85\x5e\x9d\x71\xfa\xc0\xdf\x43\x7f\x38\xf0\xcf\xd0\xa9\x03\x87\xe3\xff\x15\xfa\x03\x1d\xd5\xde\xc1\xf5\x04\x0a\xfb\x2b\xa4\xf5\xc5\xbf\x1c\xda\x1f\xfa\xe0\xc4\xf1\xd0\x3b\xa1\xdd\x27\x1c\x19\x49\xf9\xef\xf8\x71\x65\xd8\x00\xe9\x7f\xcf\xdf\x13\x18\x9b\xff\x4e\x50\xd7\x31\xa0\xc9\x0d\xcb\x29\xe7\x86\x61\x58\x95\xdd\x87\x0e\x9e\x38\x01\x18\x0a\xee\x22\xfa\x94\xff\x5b\x7f\x52\xee\xa1\x6b\xd1\x36\xdd\x35\x1f\x2c\xce\x0b\xf4\xa1\xe5\x6c\x69\x7f\x57\x51\x3e\x56\x90\x4f\x05\xc8\x47\xe0\xf2\x79\x0b\xfd\x72\x3a\xd9\xf9\x94\xbf\xb8\x13\x9c\x94\x7f\xa2\xa5\x28\xb4\x2f\xf4\x09\xc8\x66\x7f\xee\x5b\x22\xad\xfc\x4f\x42\xfb\x5b\x17\xa7\xbc\xf4\x41\xc7\x67\x97\x06\x2d\xd7\x82\xdb\x9d\x72\x07\xbe\x66\x91\x9f\x94\x91\x72\xe7\x6f\x58\x97\xc1\x19\xa3\x5e\xcc\xa0\x96\xf3\x51\x2a\xe7\x7d\x10\xf6\x0f\x7c\x1f\x29\x88\xa8\xe0\xcf\xe5\x65\xfc\x8a\x8a\xb4\x7f\xc6\x47\x07\x0e\x83\x60\x3f\x39\xf0\x01\x38\xc7\x2f\x43\x6d\x61\x4c\xfb\x04\xe4\x78\x0a\x3d\x7d\x9c\x91\x1e\xe8\x83\x29\xd6\x9e\x03\xef\x03\x64\x3f\xc6\xe3\x71\x23\x9d\x4f\x4e\x80\x3d\x7e\xf7\xc0\xfb\x20\x5e\x7d\xfe\xbb\xb4\xd1\xdf\x0c\xed\xf6\x1b\x82\x17\xe4\x03\x5b\x81\x44\x98\xeb\xe9\x2f\x4e\xc3\x8f\xd5\xd0\xe6\x1b\x66\xfc\x71\xca\x6f\x21\xff\x51\x20\xd5\x8f\x84\x0e\xfc\x2b\x7e\x7f\x84\x1d\x10\xeb\x8c\x53\x53\xde\xa5\xa3\x1d\x88\xa6\x7f\x5a\x38\x6a\x75\x7f\xeb\xd6\x1e\xf0\x2a\x3a\x8e\x1c\x0d\xdf\x74\x86\xad\xec\x5c\x7f\xfb\x87\x4f\xe2\x02\x9c\xa6\x7b\x83\x3e\xd4\xb5\xf9\xe3\x70\xb8\x2f\xff\x3b\x78\xa6\xe4\xdb\x9f\xd0\xb3\x8a\x3f\xe6\x67\x15\x43\xdf\xd3\x32\x37\x19\x46\x67\x3c\xa4\xbc\xb7\xba\x5a\x30\xb2\x9d\xf9\xf5\x19\x1f\x7c\x02\xbd\xfd\xd7\x61\xb6\x11\xbf\xbe\xef\xc7\xb8\xef\x53\xfa\x04\xb6\x1d\xe2\xa7\x85\x6c\x13\xeb\x3e\xfa\xc4\x48\x9f\x61\x06\x40\xdf\x44\x8c\x77\x6d\x11\x4b\xef\xda\x28\xc5\xda\xa5\x58\xa7\x14\xdb\xca\x63\xd7\x3e\x8b\x0c\xa6\xf4\x2c\x46\x87\x3c\xfd\xe7\x3d\x69\xcf\x72\x9f\x42\xff\x6d\x28\x34\x74\xff\xb6\x8f\xd9\x06\x96\xdf\x38\xc5\x66\x4b\xd3\xd8\x43\x2d\xfd\x63\x98\x0a\xf0\x56\x0e\xc7\x83\xff\xdb\xaf\xcd\x0a\xde\x92\xf2\xcb\x95\x9a\x9e\x12\x4d\x37\xcd\xd9\x7e\x3a\x18\xbc\x20\xb4\xa7\xdb\x7c\x21\x48\x02\x49\xf6\xb7\x13\xdc\x72\xb4\x39\x98\x2c\x42\x91\xa5\x81\xe6\xf6\xd3\xbe\x08\x08\xf9\x1d\x58\xd1\x7e\x7a\xae\xb0\xa4\xfd\xb4\x33\x02\xc7\xba\x0d\x2c\xea\xee\x41\x8e\x7b\xf2\xee\x9a\xb1\xab\xf3\x50\xa8\x07\xc9\x04\xaf\xa6\x27\x35\x51\xd1\x61\x7b\x23\x83\x4f\x00\x83\xfc\xa0\x82\x0e\xe0\x71\x20\x81\x49\x04\xc5\x56\xd2\x3f\x26\x8c\xbc\xd9\x83\xf1\x1d\x2f\x61\x7e\xdd\x6d\x95\xed\xa7\x1d\x29\xdb\x5e\x6e\x3f\xed\x4f\xd9\xd6\x1b\xbf\xbf\xe3\x25\xa4\xa1\x49\xf9\xee\xcb\x9d\xfb\x83\xb3\xdb\x4f\x9b\x44\xcc\xb8\xdb\x32\xda\x4f\xd7\x8a\x77\x9a\xdb\x26\xb5\x9f\x36\xa7\x74\x3d\x42\x8f\xdf\x45\x08\x49\xf9\xc6\xbd\xb8\xf2\x34\x16\x59\x78\x1e\x58\x78\x81\xbb\x66\x06\xf9\xc9\x09\x9f\xe0\x53\x47\x8a\x92\x76\xac\x50\x95\xfa\xb6\x94\xea\x8e\x91\xfa\x9c\x94\xfa\x9d\x18\xa9\x0f\x49\xa9\xaf\xc7\x48\xbd\x59\x4a\x9d\xfe\x99\x3a\x75\x95\x94\xfa\x4a\x8c\xd4\xeb\xa4\xd4\xc5\xc7\xd5\xa9\x46\x29\xf5\xb9\x18\xa9\x5a\x29\x75\xf6\x09\x75\x2a\x9e\x7f\xca\x52\xbb\x62\xa4\xee\x91\x52\xdf\x8d\x91\xfa\xa4\x94\x3a\xef\xa4\x3a\xf5\x6e\x29\x75\x63\x8c\x54\xb7\x94\xfa\x62\x8c\xd4\x4a\x29\xf5\xba\x53\xea\xd4\x1c\x48\x15\x7b\xaa\xe7\x54\x21\x11\xbb\xa9\x41\x06\xbf\x4b\x06\x3f\x7a\x3c\x02\xbf\x47\x06\x3f\x28\x83\xef\x95\xc1\x7b\x65\xf0\x01\x19\xfc\x49\x19\xfc\xda\xcf\x23\xf0\xad\x32\xf8\x0b\x32\x78\x1b\xc0\xfb\xff\x96\x8c\xea\x49\x7b\x7c\xd0\xdd\x43\x0d\x90\xb8\xc8\x85\xe7\x2e\x8c\xe5\x73\x07\xda\x3f\xe8\xf4\x85\xf6\x40\x3a\x81\xa1\xdd\x93\x96\xb4\xaf\x8e\x9d\x93\x8e\xc5\xa4\x74\xad\x4c\xe6\xdd\x0d\x0a\xf8\x01\x31\x31\x35\x17\x89\xea\x90\xe8\xc4\x64\x3c\x84\x5d\xff\x09\xfb\xb4\xbc\x90\xf5\x82\xa4\x9e\x2e\xc7\x31\x56\x74\x4f\xd7\xbe\x8f\xc5\xe3\x8a\xb1\x4c\x94\x6a\x70\x35\xd2\x88\x18\xa7\x60\xd5\x97\x2d\xe1\xc6\x15\xcc\x1c\xb9\xc7\xd1\x97\xa7\xba\xef\x47\x14\xc1\x88\xbb\x9c\x65\x96\x05\x67\x77\xd3\x2c\x68\x42\x4f\x17\xb2\x55\xeb\x8f\x70\x4f\xa0\xb9\xfc\x08\x8a\x49\x00\x1d\x98\xcc\x6f\x6a\xf0\x26\x91\xdf\xdc\x02\x37\x7d\xbb\x8f\xd1\xbc\xf9\x18\xff\x01\x3e\x5b\x7e\x89\x32\xa7\xcf\x78\x00\x4b\xdb\x08\xa5\x3d\x7a\x0c\xed\x8a\x25\xa5\xf3\x9b\x20\xdd\x4d\x35\xed\xa7\x4b\x53\x3a\x5b\x13\x21\x6a\x6c\x3f\x5d\x94\xd2\x29\xa0\x91\x04\x83\xd1\x79\x23\x8d\x98\x52\xba\xee\x03\xbc\xfe\x35\x63\xf0\xae\x22\xa5\x13\x3f\xc0\x6b\x3f\x5d\x99\xd2\x79\x5d\x1c\x46\x96\xa4\x74\x05\x20\x3d\xf7\x50\xcf\x4b\x4d\xb8\x45\xfb\x6f\xe2\x11\xea\x48\xe9\xb4\xe2\xc6\x27\xb4\x2a\x29\xdf\x78\x86\x1a\xd4\xda\x94\x4e\xdc\x28\x08\x6c\x5a\x4a\xe7\x64\xfc\xa2\xfa\x74\x4d\x4a\xd7\xdc\x24\x44\xeb\xa4\xa3\x8e\xf9\x13\x69\x0c\xe0\x31\x26\x4c\x84\x33\x61\x36\x7d\x21\x0a\xf3\x6d\x2e\xcc\x0b\x6f\xc2\xb3\x9c\x3b\x59\x1d\xaf\x09\xb3\x5e\xd0\x2d\x66\xd1\xf7\xfd\xec\x53\x3c\xcc\x9a\x96\xf7\xfc\x3f\x60\xb8\xda\xf9\x3e\xfc\x09\xbd\x09\xc8\xeb\xc2\xb8\x27\xf8\xbe\x8e\x97\x28\x59\x1c\x38\xc1\x67\xa5\x79\x36\x41\x9e\xfe\xdf\xd3\x8a\x78\x52\x3a\xe3\x81\xd5\x4d\xb3\xda\x4f\xbb\x53\xba\x42\x89\x78\xf8\x32\xb6\x6d\xee\xf1\x3e\x57\x11\xa5\xf9\x13\x94\xf4\x02\xc8\xf1\x28\x3d\x35\xae\x0b\x2d\xec\x80\x03\x8c\xb4\x30\xa5\xfd\x74\x20\xa5\xab\x56\xca\xd3\x77\x0d\xe4\xe8\xdf\x14\x8f\xd2\xea\xef\xd5\xcb\x84\x36\x37\x5e\x76\xf3\xd6\x58\xe6\xdf\xbe\xda\x46\x1f\x8a\xd1\xed\x4f\x80\xce\x94\x33\x40\xe7\x6f\xc0\x6a\x09\xbe\x45\x3a\x03\xcf\x10\xec\xda\xfe\x31\x7d\xa7\x96\x7e\xe4\x7a\x0c\xf8\x40\x4b\x80\xab\x5e\x3d\x2f\x3d\xcd\xc4\xd3\x4d\xd9\x09\xef\xef\xe9\xda\x89\xe3\x51\xcf\xf7\xf1\xef\xfd\xef\x7d\x4c\xdf\xc3\x4c\xda\xc3\x24\x8e\xaf\x59\x70\x21\x57\xd0\xe5\x99\xd4\x3d\x5d\x3f\xfd\x98\x25\x64\xf4\xd0\xe8\x1e\x9a\x9f\xec\x61\x0d\xb3\xa7\xeb\x69\x9e\x6c\x64\x4d\xb7\xa7\xeb\xfb\x2c\xf9\x3d\x0a\xa7\x83\x5f\x88\x1e\xb4\xf7\x30\xc6\xee\xdf\xc2\xee\x27\x73\x8e\x59\x53\x9e\x12\x9b\x72\x1f\x6f\xca\x57\x1b\xd9\xf3\xc3\x94\xae\x2f\x70\x97\x13\x4a\x92\x0d\xa4\xdd\xac\x84\x8d\x74\xf5\x42\xcf\xe8\x9a\x59\x93\x9f\x40\xb5\xe6\x6c\x33\x92\x9d\x9f\x88\xc4\x1e\xe6\xc4\xfa\x7e\x84\xa3\x3a\xbe\x27\xda\xf3\x2c\xa6\xe6\xf6\xd2\xaf\x48\x43\x27\x3e\xfd\x21\xa3\x0e\x92\x3f\xc5\x0e\xab\xc6\xd5\xb4\xb2\x33\x54\x92\xa9\x4b\xd9\x35\xe9\x7a\x76\x35\xfc\xe5\x13\xd6\x83\x90\xd7\x39\xcd\x8c\xd7\xe0\xcd\xa2\x0a\x14\x50\x3e\xb1\x78\x98\x90\xac\xe8\x5e\x64\xe0\x7e\x09\x32\xbb\x28\x8d\xb2\x76\xc7\x36\xa6\xd2\x93\x53\x7e\xbe\x68\x3c\x5d\xec\x5f\x84\xdb\x3e\xa7\xc2\x6d\x2a\xdd\x2e\x51\x9f\xb1\x1c\x68\x15\x51\xad\xbf\xe3\x6d\x3e\x28\xf7\x1d\x3d\x8a\x25\x63\x61\xdd\xe3\x07\x1e\xc3\x4f\x84\xa7\x6d\x04\x1d\x9b\x8a\x7c\x6c\x6f\x89\x28\x49\xee\x21\x34\x02\xa8\x26\xbf\xc4\x1c\x4c\xae\xc8\x6f\x54\xbd\x9e\x88\x55\x2f\x28\xcb\xee\x66\xcf\xa6\x82\x6b\xbb\x69\x87\xe9\x0a\x0b\x95\xdd\xec\x79\x29\x7b\xd2\x99\xde\x73\x57\xa4\x06\xa5\xac\x06\xa5\xbc\x06\xa5\xea\x1a\xdc\x25\xd5\x20\x1b\xf9\x59\x38\xf0\x23\xe4\xbd\xe1\x16\xf4\xa5\xe8\x98\x1a\xe4\xfc\xf1\x43\x0f\x21\x63\xff\x91\x31\xa2\x97\xa2\x7f\x1e\xf9\xba\x4d\xd7\xbd\x0c\x9f\x91\xb0\x4f\x4a\x1f\x44\xdf\x3c\xcc\xd2\xb5\x90\x74\x9b\xa1\xbb\x44\xdf\x3d\x15\x26\x6e\xfa\xae\x43\xc1\x4b\x45\x63\xff\xd4\x99\xc8\xe0\x72\xf1\x51\x7a\xd2\xd1\x51\xde\xa9\x16\x2c\x62\xb6\xf7\x43\xc9\xb8\xd0\x96\xdf\x48\xf7\x52\x37\x28\xf5\xf1\xc8\x5a\xaa\x61\xbf\x3d\xc3\xcc\x70\xbf\x4e\x33\x08\x6f\xf4\x7d\xc8\x1e\xaa\xa2\x6c\x87\xea\xd4\xee\x65\xf4\x3d\xb3\xee\x65\x74\x97\xe0\xee\x65\xf8\x08\xb4\x3b\x99\x9b\x81\xfc\x45\x7c\x27\x2f\x5e\x91\x4d\xe9\x22\xe3\xc7\x81\x54\xee\x21\x91\xf5\x35\x1f\x81\xa4\x92\xe1\x9e\xf9\x7f\x82\xae\xfb\xc6\xa4\xee\x4a\x43\xf7\x6d\x50\xd9\xee\xb9\x3b\x91\x85\x14\xf3\xc1\xae\xd7\xc0\x27\xec\x3a\x0e\x2e\xa1\xe1\xe5\x94\xae\x53\xb8\xbc\x13\x4e\xe9\xfc\x18\x1f\x47\x26\x65\xf4\x2d\x35\x61\x7d\x83\x93\x45\x0a\x2f\x46\x44\xd3\x7f\x98\x1d\xbe\x9b\xca\x65\xb0\x0a\x3a\x11\xeb\x61\x51\x72\x38\xc6\xe4\x10\xff\x05\x1f\x8e\xd6\xfc\x0b\xf8\x7f\x12\x32\x5f\xfb\x9d\x6d\xd4\x2f\x7f\x18\xdf\x72\xa0\xf5\xef\xd6\x7f\x77\x6f\xe4\x24\xf9\x24\xaa\x59\x28\x0e\xeb\x77\xf5\x30\x7d\x31\xd3\xbe\xc3\x06\x85\x8e\xdd\x5a\x94\x10\x17\xc9\xe5\xc0\xe6\xc0\x0e\x6c\xcc\x1b\xa1\x7e\x49\xcc\x8a\x76\x8f\xe9\x3a\xc4\x1c\xea\x94\xce\x89\xec\x65\xf6\xce\x71\x71\xec\xcb\x94\xb8\xb8\x88\x37\xdb\x79\x12\x5f\x67\x2d\x49\xeb\x6e\x49\x85\xf9\x33\x9d\xcc\xa4\x74\x1e\xd1\xb3\x0c\xef\xe9\xe9\x4b\xea\x7d\x45\xff\xa2\x0d\xdf\x75\x3b\x61\xf7\x79\x85\xec\x49\xaf\xb0\x32\xc4\xb6\x42\xc7\xde\xde\xb7\xf4\x9f\x54\x5c\x09\xc8\x3c\x1a\xd2\x81\x74\x7e\x16\x03\xf6\x99\xbe\x59\x2c\x75\x06\xa6\x5e\x80\x66\x96\x5a\x13\xb9\xf1\x35\xb0\xd2\xd9\x09\xa2\x03\x92\xd4\x7f\xf6\x71\x44\xea\xeb\xf0\x5d\x3a\xca\x64\xcf\xfd\xd4\xe6\x42\xef\xa4\xcb\xe2\xab\xe8\x53\x7e\x63\xe8\x7e\xee\xce\xa4\x33\xe3\x8d\x5a\xda\xdd\xb5\xe5\xe3\xc1\x87\xc0\x1f\xb0\x7e\xbb\xa7\x9b\xe6\x14\xe6\x21\x6c\xb3\x9f\xef\xd3\xc3\xca\x10\x68\xdb\xa2\x8e\xe3\xe9\x05\xfe\x2f\xc4\x61\x92\x17\xab\xef\xaf\x43\x11\x32\x5c\xab\x02\xf7\x87\x6a\xdc\xe5\x88\x3b\x15\xd4\x30\x32\x4e\xe3\x03\x18\xdc\x74\x03\x9b\x66\x9d\x4e\x1c\xd1\x79\x97\x4a\x8a\xc5\xf4\xf3\x5e\x69\x5c\x0e\xed\x91\x8d\xcc\xcc\x88\xfc\xf9\x0b\xd4\x6d\x7a\x44\x7b\xdf\xc7\x03\xf4\xc8\xf7\x74\x6c\xb5\x9f\xdc\xc4\x0e\x24\xe3\x26\x63\xd2\x59\x68\x95\x37\x07\xa4\x92\x82\x49\xb7\x9f\x7d\x95\x6e\x50\x17\x8f\x9f\x79\x31\xb2\xa8\xd3\x52\xdf\x16\xc9\x5b\x9a\xc3\x6c\x33\xaf\x3d\x9c\x62\x09\x16\x75\x27\x25\x95\xd2\xf9\xeb\xd3\x6c\xd3\xcb\x45\x37\xf1\x63\x90\xcd\xb4\x0c\xc4\xbb\x19\xf1\x6e\xc4\x9d\x9c\xbe\x8f\x6f\xfd\xa7\x7d\x57\x26\x84\xb7\x82\x97\xc7\x32\x41\x0f\x01\x76\x11\xeb\x2b\x1b\x7f\xdb\xef\xc5\x8f\xda\x98\x78\xac\xf4\x01\xad\x5e\x1a\x1f\x93\x22\xfc\x7d\xdb\x83\x6d\xca\xc6\x3d\x61\x3a\x7e\x93\x44\xe5\xdf\xb7\xc3\x27\x76\x35\x99\x08\xf0\x91\xc1\xc0\xd7\xb8\x0c\x7e\x11\x91\xa5\x55\x26\xcb\x5d\x54\x96\x4f\xe0\xc6\x41\xbe\xf0\x08\x19\xff\xf3\x07\x72\xc6\x9f\xfb\x7c\x24\x8c\x9f\x1d\x84\xf1\x13\xde\x28\xc6\x7f\x28\x32\x3e\xb1\x5b\x2c\x14\xb9\xfd\xc3\x59\xa6\x6f\x7d\x9f\xf7\x83\x49\xb8\x1d\x0c\x0a\x1e\x45\x1b\x8b\x3b\x93\x8c\xbb\x83\xfd\x93\x3f\x17\x67\x03\x6f\x8b\xc3\x1e\x70\xb3\xce\x4d\x4d\xd7\x84\x30\x37\x5d\x4f\x60\xa1\xaf\x77\x77\xed\xc7\xee\xf7\x9d\xa6\x13\x7c\xf0\x04\x4c\x47\x35\x6e\x36\xca\x52\x44\xd8\x5f\x10\xc6\x4c\x91\x02\xbe\xa2\x06\x37\x54\x55\xc2\x7e\x5f\x83\xf5\xa3\x1d\x88\xbe\x4d\x02\x54\xe7\x7e\x41\x6b\x68\xe8\x9b\xd5\xcf\xfb\x02\xb3\x25\x56\x80\xf7\x5d\x8c\x3b\x49\xd5\xe3\x67\x00\x60\xd1\x4b\x52\xd1\xb4\xcb\x3b\x54\xf7\xdc\xae\xd7\x18\x69\xe1\x12\x50\xfe\x29\xd0\xc1\xb6\xf5\x76\x85\x37\xbf\x4c\xed\xbc\x38\xb7\x27\x11\xc3\xfe\x98\xcc\xc4\x8c\x3d\x25\xb5\x14\x3f\x24\x44\x66\xd8\x45\xb3\xd2\xb3\x4d\x72\xca\xd4\xbd\xf3\x83\x06\xda\x8a\x14\x47\x28\xc7\x56\x64\x4d\x47\xb3\xf6\x5d\xe5\x91\x1c\x12\xb1\x45\x27\x53\x93\x21\xf0\xae\x66\xa5\x2f\x24\x60\x5d\x9f\x0d\xa3\xdd\xec\xc3\xbd\xcc\x4e\x8a\x8e\xba\x02\x95\xa1\x7d\xc1\x1a\x28\xad\x4f\x8f\xa8\x15\x27\x69\xab\x2d\x80\x39\x5b\xdf\xfb\xff\xc0\xba\x38\x3e\xa3\x90\x5a\xc2\x3e\x01\xef\x6f\x3b\xc5\xa7\x92\x58\xc6\x0b\xfc\xf1\xa7\xde\x49\xa4\xb9\x6f\x5e\x1f\x66\x13\x47\xb0\xcc\x0a\x68\xf6\x4b\x44\x51\x6d\x88\x9e\x0b\x9e\xf8\x07\xb2\x26\x4e\xcf\xca\x97\x40\xff\x98\xb8\x99\x2e\x76\x09\xd7\x8b\x99\xde\x22\x26\x09\x7f\x2f\xe0\x0f\x5c\x03\xc0\x3e\xe4\xd0\x84\xb9\xe9\xcc\x95\x39\x4b\x78\xc2\x19\xa4\x7d\xf8\x39\xd7\xb9\x5c\x4c\x5f\xd8\x15\x0e\x1e\xee\x7f\x0b\xd5\xce\x79\x34\x74\xf0\x06\x5c\xb7\xeb\xb1\x9f\xd9\x2d\xad\x07\x87\xfe\xb6\xba\xff\x1f\x73\xa4\x75\x3b\x7c\x36\x94\xfa\xe7\x42\xfa\xfc\x07\xe3\xe4\xff\xb1\x5f\x02\xbf\xe6\xfc\xb9\x90\xd6\x4f\xfa\x01\x0c\x7d\x73\xf1\xb6\x10\xe2\x78\xce\x48\xef\x42\xf6\xcd\x0b\xfe\x70\x43\x47\x7c\x21\xd3\xb8\xb7\x90\xe4\x40\xd8\x01\x61\x0d\x86\x7d\x85\x04\x4f\xb1\xfd\xc9\x94\x5f\x99\xbf\xea\xfa\x9c\xff\x7d\xb9\x9f\xdb\xb5\xb6\xb1\xbe\xde\x16\xb0\x39\x5a\x67\x67\xe5\x66\x3b\xdc\x6e\x62\xb3\xf9\x9d\x8d\xae\x80\xe0\xf4\xdb\x1a\xfc\xf6\x66\xa7\xcd\xe5\x69\xf0\x02\xd4\xe1\x8c\x05\xa7\x05\xac\xcb\xca\x9d\xcb\xf2\x2e\x6e\xb1\x55\x73\xac\x22\xb7\x3d\x10\x70\x06\x08\x29\x75\x0a\x45\x5e\x8f\xc7\x59\x2f\xb8\xbc\x1e\xeb\x06\x9f\xb3\x1c\x32\x1a\x1b\xec\x2e\xb7\xd3\x91\x4d\x22\x49\x46\x4c\x33\x16\x18\xa7\x07\x12\x30\x4f\x8d\x60\x17\x82\x01\x05\x2e\x03\x51\x94\x99\xc6\xa0\x4f\x70\x35\x3b\x17\x4c\x0f\x42\xbc\xc2\x1e\x90\xd1\x28\xf6\xfb\xbd\x7e\x5e\x90\xd1\x68\x05\x2c\x63\x40\xb0\xfb\x05\xa7\x83\x02\xb1\xf0\x0a\x97\x67\x7d\x85\x7d\x83\xd3\xbf\xd4\xde\xb6\xc8\x25\x54\xdb\x05\x67\x40\x22\x13\x81\x99\xbd\xad\x1e\xcc\x13\x34\xae\xf5\x05\x88\x31\x73\x7a\x30\x1b\xe2\x4b\xe1\x66\x06\xbd\x33\x2e\x61\x51\xa3\x31\x92\xa7\xd6\x27\xe2\x03\x9d\xe2\x36\x90\x84\xc7\xee\x2e\xb7\x98\x1c\x0e\xbf\x33\x20\x11\x31\x66\x3a\x91\xcb\x7a\xaf\x03\xaa\xe0\x98\x91\x40\xd4\x98\x0b\x68\x05\x96\xfb\xbd\x9e\x46\xa3\xdd\xdf\x18\x6c\x76\x7a\x04\x00\xb8\x3c\x2d\x76\xb7\xcb\x61\xf4\xf9\xbd\x82\xb7\xde\xeb\x4e\x18\x92\x0e\x81\x7b\x93\x67\x83\xc5\xeb\x17\x96\xda\x7d\x3e\x97\xa7\x31\x13\x85\xc7\xc2\x0c\x8e\x65\x6c\x75\x09\x4d\x46\xe4\xc5\x38\xdd\x01\xf5\x0a\x00\x3f\x90\xef\xcb\x67\xc2\x66\xf3\x39\xeb\x5d\x0d\xae\x7a\x59\xe6\x62\x8f\xe0\xdf\x90\x39\x54\xbe\x72\x8f\xc8\x7e\x01\xe6\xa3\x55\x2f\xc0\xda\x3b\x79\xbd\xd8\x3d\xfc\x35\xba\x02\x46\xbf\xd3\xe1\xf2\x43\x53\x43\x59\x82\xd7\xe8\xf2\x28\x50\x32\x1d\x41\xbf\x1d\xb5\x60\x01\x2d\x39\x87\xdc\x00\x3a\x58\xe9\x25\xcb\x6b\x4c\x35\xa8\x04\x41\x9f\xc4\x49\x76\x02\x09\xfa\x3c\xbe\x7a\x68\xe1\x66\x97\xc7\xc5\xe2\xa0\xd0\x7e\xbb\x7f\x83\x11\x14\x42\x30\xd6\xbb\x5d\x20\x74\x68\xac\xfa\x19\xc6\xd9\x39\x39\x73\xb2\x66\xe7\xe4\xe6\x19\xad\x4d\xde\x66\x7b\xc0\xb8\x08\xc9\xfa\x1d\xa4\xd4\x8b\x6c\x34\x09\x82\xaf\x60\xd6\x2c\xb1\xa0\xec\x06\xbf\xd3\x09\x7f\x66\x19\x41\x15\xa3\xd3\x84\x60\x5b\x83\xbd\xd9\xe5\xde\x90\xed\xf5\x37\xce\x4a\x68\x00\x94\x66\xaf\xdf\x69\xc4\x1e\xe5\x6f\xa6\xdc\x67\x93\xac\xac\x26\xa7\xdb\x47\xb2\x9a\x88\xd7\x47\xbb\xc7\x15\xd3\x03\x57\x18\x79\xeb\x27\x90\xda\x80\xbd\x11\x7a\x4b\x3c\x54\x79\x25\x43\x08\xac\x36\x66\xd9\x8d\x2e\x9f\xd1\x87\x22\x14\x25\x67\xa3\x77\xa2\xb2\x18\x57\x8a\xe2\x59\x9d\x10\x1f\x0f\x6d\xcc\x90\x45\x89\x02\x1c\xbb\x0c\xfd\x45\x95\xec\x18\xac\xc4\xf9\x7e\x67\xb3\x57\x70\x1a\x9b\xbc\x01\xe1\x3a\x28\xd4\xec\x74\x3b\xe1\x76\xa4\xe5\x06\x20\x0b\xa8\x8d\x51\x66\x07\x02\xb4\x9b\x0f\x96\xc1\x0d\x19\x2a\xc0\xc2\xc8\x0b\x1f\x14\xb9\x22\x16\xb2\x31\x33\x18\x00\xb5\x34\x52\x3b\x10\x10\xaa\x1a\x64\xba\x0a\x89\xd8\x1c\xe5\xa5\xe6\x82\xd9\x46\xaf\xc7\xbd\x61\xc6\x60\x45\x7b\xbe\xb4\xa8\x33\xed\x9e\x0d\x33\x54\x82\x31\xda\xdd\x6e\x6f\x2b\xf2\x03\x44\x51\x93\x82\x01\x27\xc0\x68\x91\x82\xab\xc5\x19\x55\xfc\x48\xd9\xab\x54\xe6\xb3\x51\x0b\x18\x05\x73\x7a\x1c\x32\x76\x9b\xed\x1e\x50\xa9\xd5\x91\x26\xf4\xdb\x3d\xa0\x62\xde\x06\x15\xcb\x23\x17\x92\x9f\xe6\xcd\x95\xa8\xe4\x1a\x57\x22\x60\xb6\x04\x98\xbd\xda\xb8\x32\x3b\x3b\x5b\x14\x11\xc8\x42\x49\x08\xe4\x21\x34\x39\x8d\xf5\x41\xbf\x1f\x7a\x22\x55\xb2\xc1\x68\x99\x8c\x4c\x13\x6d\xd0\x2e\x3c\x46\x19\x17\x0d\x04\xc2\xa5\xb8\xb2\xa9\xdc\x4e\x7b\xc0\x69\xc3\xf1\x84\xf3\x61\x71\x79\x9a\xbc\x6e\xe7\x88\xeb\x59\x6b\x0c\x7a\x5c\x37\x05\x9d\xe5\x66\xa3\xc7\xd9\x6a\x53\x94\x57\xeb\x73\xc0\xb0\xf0\xa5\x8b\x2c\x92\x8a\x84\x32\x8a\x9a\x9c\xf5\xeb\x8d\xae\x06\xa9\x14\x30\x83\xcb\xbd\xfe\xf5\xa8\x36\x23\x2d\x70\x89\xbc\x40\xec\x72\x95\xc1\xe6\xb5\x4e\x3f\x6d\x60\x7b\xfd\x7a\xa7\x10\x30\x36\x7a\xb1\x40\xa1\xc9\xef\x0d\x36\x36\x51\xc1\xfb\x83\x5f\x82\x65\xb3\x9c\x02\x57\xa2\x2f\x5b\xed\x1a\xce\x5c\x09\xe8\x40\x2b\xaa\x03\xb3\x06\x23\xce\x5f\x3a\x6a\x2d\xe0\x84\xab\x82\xc2\x5a\x6f\xd0\x13\xd1\x01\x74\x20\xbc\xc1\x91\xf7\x3c\x0b\x2f\xc8\x02\xe3\x30\xe8\x2c\x35\x01\xc6\xa0\x1f\x06\xea\x04\x49\xe1\xa0\xf9\x6a\xcd\x16\x1c\x1b\xac\x45\x96\x04\x52\xc5\x32\x17\x60\x91\x59\x4e\xa3\xc3\x19\xa8\xf7\xbb\x98\xd5\x2f\x30\x06\xa0\x2c\x39\x04\xd9\xa0\x8c\x37\x33\x93\x95\x4d\x73\xcd\x05\x4c\xb4\x1c\x50\xbd\x96\xb9\x50\x43\x70\xc1\xec\x0e\x6c\x5b\x04\xe4\x31\x9c\x20\xb2\x01\x78\x6b\x37\xf8\xc0\x37\x33\x3a\x5c\x81\x7a\x6f\x8b\x13\x06\x3b\xe0\xab\x1e\x9d\x86\xb5\x34\xda\xe2\x72\x30\x35\x70\x1a\xeb\x96\x56\x18\xfd\x5e\xaf\x92\x01\x28\x84\x95\xd7\x6c\xb4\x33\x6f\x63\x16\x95\x68\x83\xbd\x1e\xfd\x37\x56\x02\xe5\x84\x27\x1b\x33\x29\x13\x33\xb0\xbe\x11\x4c\x0f\x38\x91\x3c\x05\x13\x5a\xe6\xce\x10\xad\x1f\xd6\x10\x44\x47\xb9\xa8\xa9\x01\x39\x35\x07\xdd\x82\xab\x1e\x9c\x3c\x51\x53\x19\x7d\xb0\xbf\x76\xf0\x25\x58\xc5\x85\x26\x10\x2a\xbd\xc7\xec\x4b\x61\xac\xc5\xac\x0e\x63\xc0\x8b\x39\x30\x03\xd6\x81\x7a\x85\xa0\x53\xf4\x9a\x40\x4a\x68\x4b\x33\x87\x0a\xcd\x2f\x73\x1a\x19\xd4\x6e\xcc\xf4\x40\xcd\xeb\xd9\xc0\xe4\x74\x2c\x9c\x21\x43\xb1\xfa\x37\x50\x19\x79\x31\x5d\x70\x79\x82\x60\xb3\x3d\x1b\x5a\xed\x1b\x48\xad\xc5\x63\x01\x52\x2d\xae\x7a\xac\x08\x14\x94\x6d\x2c\x07\xb7\x45\x80\x74\x9a\x7f\xa1\x82\x08\x47\xcc\x74\x35\x3a\x8c\x40\x80\x25\x55\x78\xeb\xc1\x9f\xa9\x30\x55\xca\x65\xc8\xfd\x59\x57\xc4\x6a\x39\xdb\x70\xe0\xca\xba\xce\xe5\x41\xa7\xaf\xc0\xe5\xa1\xbe\x93\xbc\xa5\x58\x07\x28\x03\xa3\xc9\x4c\x1c\xaa\x32\x99\xee\x20\xd3\x67\x3b\xd0\x97\x9a\x3e\x27\x90\x75\x1d\xba\x4d\x59\x73\x02\xcc\xbd\xa0\x7f\xb8\x03\x5e\xea\xf4\x38\xfd\x31\x1d\x39\xbf\x53\x08\xfa\x3d\xe0\x7e\x49\x0e\x5c\x6e\x4e\x4e\x0e\x01\x55\x26\x73\xe7\xcc\xb9\x7a\x4e\xa4\xfc\xa6\xa0\x48\xa0\x29\x28\xa7\x10\x4c\x20\x31\x47\xdf\x98\x85\x43\x4f\x91\xbc\x5e\x99\x23\x1c\xe9\x4c\x92\x4f\x64\xa9\xb4\xd8\x98\xdd\x91\xfb\xae\xb2\x32\x41\x88\x80\x27\x78\x61\x4e\xe1\x6c\x95\x17\x16\x3b\x6b\x35\x8e\x80\xea\xfc\x8b\x36\x80\x77\x58\x00\x3d\xbf\x06\x32\x03\x68\x5e\x30\xbe\xda\x59\xdf\x42\x63\x09\xc4\xc2\x54\xb4\x20\x76\x2a\xfa\xd5\xcc\xb0\x64\xae\x9c\x1e\x58\x8d\x2e\x6b\xd6\x75\x46\x1e\x1d\xce\x21\x67\x19\x0b\x8c\x31\xb3\xce\x92\x2c\x16\x8c\x42\x6c\xf2\x40\x87\x0d\x0e\xe5\xc3\x45\x41\x34\x16\xe4\x2b\x0f\x88\x63\xc9\xa0\xd9\x86\x74\xdf\xd9\x08\x27\x71\x17\x4d\x80\xe6\xa8\x40\xfd\xa3\xb6\x94\x29\x72\x54\x1e\xc0\xcd\x1c\x76\x6e\xc1\xb1\xb9\x80\x87\x64\x49\x85\x1d\xab\xde\x4a\x0c\x84\x46\x29\x11\x6f\x28\x95\x02\x88\x83\x53\xb1\xc7\xbe\x16\x18\x40\xa0\xf1\x72\x63\xb9\x47\x39\x70\x98\xd0\xb1\x63\xa9\x94\x21\x31\x17\x9b\xc6\x16\x24\x80\x02\x49\xa3\x5c\xa4\xa4\x00\xc2\x07\x2f\x8a\xf5\x4d\x71\x90\xe2\xe9\x7c\x88\xfa\x92\x1a\x35\x68\x39\x83\x2a\x98\x38\x14\x32\x49\x29\x06\xb8\xda\xea\x0a\x66\xee\x0a\xc4\x61\x91\xfe\x68\x53\x7b\xd6\x7b\x70\x22\x1d\x00\x1e\xea\x9b\x8c\x59\xd3\xeb\x13\x60\x46\xc6\xad\x2e\x8a\xdb\xc8\xe6\x7f\x30\xce\x95\x82\x4e\x80\x11\x35\x9a\xe5\xf6\x93\x62\xa3\xe9\xa4\xa6\x55\x9e\x04\x03\x31\x1d\xa6\x20\x6b\x2b\xe8\xa9\xf1\xb2\x04\x9c\xe7\x15\x81\xad\xf3\x28\xe7\x79\x74\x0e\x00\x83\x21\xa5\xc6\x6c\x6e\x20\x76\x11\x05\xd4\xdc\xa0\x29\xc3\xdf\xf4\x20\xe1\x93\xb7\x95\x0d\xce\x79\x39\x05\xa4\x86\x8e\x26\x46\x3a\x79\x67\xeb\x10\x28\x89\x46\xa7\x80\x66\x1a\xe7\x6f\x12\x55\xd6\xec\xd3\x03\x5f\x9b\x1e\x20\xf3\x17\xb6\x35\xbb\x8d\x30\xd4\x06\x70\x62\x3a\x2d\x37\x3b\x67\xda\xc2\xeb\xc6\x25\xcc\x0f\x14\x14\x7b\x5a\x9c\x6e\xaf\xcf\x69\x04\x04\x70\x00\x02\x0b\xa6\x71\x7a\x81\xfa\x26\x27\xcc\x32\xb3\x01\x1e\xf0\xda\x7d\x74\xa6\x88\x91\x59\x4e\x9e\x63\xd6\x34\x63\xa0\xc0\xe9\x81\x26\x85\xee\x59\x23\x6c\x70\x3b\x47\x92\x97\xa1\xcf\x9a\x76\x1d\xd0\x5e\xe4\x75\x6c\xb8\x6e\x7e\x10\x9b\x99\x51\x0f\x2e\x98\x36\x3d\x00\x49\xb3\x10\x06\x17\x11\x65\x56\x84\x4f\xe0\xfa\xbf\xac\x36\x64\xf0\x8a\xe4\x66\xe7\x92\x95\x25\x25\x39\x73\x0a\x0a\x8a\x56\x93\xd9\x57\xe7\x67\xcf\x9e\x33\x87\x87\x1c\x9a\x32\x9b\xa6\x70\x14\xc2\x01\x84\xb9\x14\x64\xf6\xec\xab\x65\x19\xe6\x10\x70\xd4\x30\x05\x3c\x41\xb2\xd6\xe5\x71\x90\xdc\x7c\x18\x14\xd1\x8f\x11\xbc\xc4\x0d\x43\x3a\xf6\x13\x12\x10\xc4\x25\x2f\xa7\x83\x80\x4d\x29\xe0\xd5\xcb\xc2\x95\x81\x2c\xa8\x5b\x41\xc0\xe9\x47\xfd\x2c\x58\x6e\xaa\x2c\xf2\x36\x37\x7b\x3d\xe5\xa2\xcb\x04\x19\x1b\x5c\x8d\x05\x24\x10\x70\xf8\x0a\xc0\x6a\x10\xf2\x9c\x8e\x7d\x9d\x1a\xb3\x20\xa6\xe7\x05\x62\xe7\xe2\x7d\x8b\xf5\x9f\x82\xdc\x61\x89\x97\x5b\x22\x73\xf2\x11\xa0\x5b\x2c\x51\xf8\x80\x53\x80\xbe\x23\x63\x83\x90\x7d\xc0\xeb\x19\x08\x57\xe9\x4d\x64\xa5\x9e\xf1\xbd\x34\xab\xa6\xd8\x54\x5d\x54\x66\xbc\xd2\x58\x66\xb5\x5a\x66\x41\x8b\x8c\x4b\x28\xab\xaa\xb1\x62\xdf\x2a\x40\x01\x8e\x4b\x60\x37\xe3\x12\x96\x9a\x2a\x0b\x8c\xd3\x68\xdd\x45\xcf\x75\x1a\x40\xeb\x70\x7d\x6e\x5c\xc2\xb8\x84\x58\xeb\x9b\x60\xe2\xac\x5e\xc1\xee\xa6\x23\x36\x8e\xc7\xa4\xd2\xd9\x1a\x05\x51\xe0\xc0\x48\xed\x84\x49\xb7\x43\x89\x27\x41\x45\x5c\x3e\x64\x28\x4a\x94\xc3\xa2\xf0\x54\xa5\x46\xc3\x15\xeb\x9d\x88\x55\x4b\x57\x37\x31\x16\x11\x2a\xc3\x40\x58\x8c\xf5\x4e\x34\x55\xd4\x2a\x15\x81\x8d\x47\x1f\x2f\xe6\xb2\xab\xb2\x40\x84\x32\x3c\x54\x33\x5c\x13\xb5\xf8\xa1\x6b\xf8\x05\x97\x93\x93\xd9\xe0\xf4\xe7\xe2\x22\x68\x40\xf0\x3b\xed\xcd\x91\x45\xce\x48\x6a\xad\x4f\x95\x16\x6b\x3d\x12\x33\xa8\x81\x6e\xd7\x5a\x69\xe5\x8d\xe4\x20\x4e\xb5\xe4\xb1\xca\x73\xa0\x4b\x86\xf7\x16\xee\xf2\x61\x5c\x5c\x33\x14\xd3\xc4\xfb\x22\xba\x66\x47\x73\xb3\x31\x95\xe4\xd2\xac\x11\xaf\xce\x1c\xf1\x90\x69\x3d\xd0\x33\x31\xf3\xb5\x9a\xa8\x75\x4f\xf5\xf2\x29\x63\x12\xf5\xde\x49\x11\x89\xca\x69\x44\x0c\xba\xd4\x28\x72\x56\xec\x71\x88\xd1\xa5\x74\x8d\x45\x9d\x87\x3a\x9a\x51\x6c\x96\x7b\x1c\xce\xb6\x21\x1c\x71\xea\xe3\x44\x60\x6c\x36\x5f\xd5\x80\x69\xbc\xfd\x86\x48\x1d\x62\xa5\x96\x39\xf3\x90\x5d\xcc\x83\x08\x81\xd8\xfe\xba\xda\xad\x89\xf6\x8d\x08\x77\x65\xb8\x87\xc1\x1d\x19\x22\x6b\x67\x16\xa5\x12\x92\xda\x57\xd1\xb8\x51\x2d\x3b\xa8\xdb\x42\x06\x01\x3b\x9b\x7d\xc2\x06\x42\x2a\xa4\x19\x50\xc4\x95\x06\xdf\x84\x2d\x58\x48\x8a\x40\x11\x14\xce\x29\x51\x38\x83\xb1\x9c\x63\x22\x39\xd0\x6a\xbf\x93\x44\xdd\x12\x52\x13\xac\xc7\xc9\x36\x59\x2a\xad\x39\x8b\x0e\x12\xeb\xc8\x11\x78\x39\x9f\xf4\x98\xc4\x79\x4a\x8c\x34\xe8\x47\x3e\xaf\x27\xe0\x94\x25\xc9\x7d\x14\x19\x78\x29\xc8\x19\xe6\xfa\xb8\xdc\xc8\xc6\x22\x8e\x21\x51\xa1\x36\x81\xc8\x88\x06\x08\x83\x19\x4b\xa8\x47\x23\xde\xe1\xac\xd8\x1e\x14\x9a\xbc\x7e\xd7\xcd\x00\xe5\x15\xac\x81\xa9\xb9\xb3\xb8\xad\xc9\x1e\x0c\xe0\xd0\x26\xaa\x81\xd9\x15\x88\xa5\x07\x95\x5e\x41\x54\x85\x4a\x2f\x48\xa4\x89\xa9\x9e\xa8\x00\x90\x5c\x13\xf4\xe1\x2a\x07\xcd\x19\x51\x86\xe5\x2e\xb7\xa3\xde\xee\xc7\x61\x5f\x56\x84\x98\x2d\x76\xaa\x08\x05\x90\xc5\xe9\x6f\x76\x09\x50\x68\xb9\xa7\xc6\x5f\x5f\x6e\x01\xe2\xac\x61\xa8\xd5\xe6\x3d\xc2\xe9\x30\xf9\xfd\xf6\x0d\xb4\xff\x71\x69\xc8\x99\x2c\xf7\xd0\x64\x5a\x6c\xd1\x20\xc5\xc6\x4e\x03\x73\x46\x15\x1a\xc7\x71\xb7\xab\x5e\x28\xf7\x28\xfa\x5d\x8d\xbd\x99\x76\x83\x65\x76\x77\x10\xc7\x9c\x9b\x82\x20\x43\x07\xa9\xf2\xb8\x37\x60\x21\x76\x0f\xf0\x48\x75\x34\x10\x91\x4d\xa4\x1f\x21\x1a\x87\x07\xc4\x1a\x13\xb9\x01\x8d\x89\xc0\x55\x8f\x69\x1e\xf8\xbb\x4d\x41\x98\xbc\xcf\x89\x72\x68\x9d\xe2\x03\x35\x70\x68\xb9\xef\x13\xdb\x0f\xe6\x6b\x25\x91\xf1\x77\x8c\xa5\x90\x4c\x81\x90\x09\xa1\x1c\x42\x1d\x84\x26\x08\x1b\x20\x7c\x03\x82\xca\xf6\xfc\x9b\x86\x00\x88\xc6\xb2\xfa\xb4\xb3\x0f\xf5\xc3\x67\xdd\xed\x49\x6c\xef\xa5\x7b\xe0\x8a\xdb\x2d\x3d\x02\x57\xfc\x22\xee\xc7\x70\xc5\x9d\x79\x5f\x80\x2b\xbe\xa4\xf6\x6b\xb8\xe2\x01\xac\x7f\x82\x2b\xbe\x80\xd6\x07\xd7\x78\xb8\x9e\x48\x32\x0d\x5a\x7e\x00\x4c\x4b\xfd\x60\xd2\xf4\x3b\xeb\x5b\x00\x07\x17\x98\xa0\x3a\x59\x6e\xa7\xa7\x51\x68\x22\x82\xdf\xee\x09\x34\x38\xfd\x59\xa2\xfb\x4b\xea\x9b\x82\x9e\xf5\x50\xc9\x46\xe6\x7f\xe2\xba\x1a\xc6\xf1\xaa\x98\x91\xf0\x16\x44\xaf\xb7\xb4\xd8\x8a\x53\x60\xea\x73\xa1\x6f\x85\xd2\xa6\x2e\xd7\x74\xc7\xb8\x04\x99\x1b\x67\x2c\x72\x7b\x03\xce\x71\x09\xb5\x30\xe0\x65\x99\x1a\xe9\x82\xc6\xd2\x9a\xe5\xe0\xdd\x7a\x5b\x03\xb3\xe6\x66\xcf\xce\xce\x9f\x9d\x93\x33\x93\xce\xcc\xd0\x79\x9b\x49\x17\xde\xf0\xae\x1e\x6e\xf3\xa9\x5b\x86\x1e\x30\x01\x3f\x1e\xeb\x3b\xff\xb2\xac\x2c\x92\x95\x75\x1d\x44\x56\x16\x99\x4d\x56\xd3\x4a\xb2\x7a\xf5\x75\x28\x07\xea\x47\x8e\xd6\x21\x1e\xde\x95\x6d\x99\x2b\x1a\x24\xc8\x23\xf8\xbd\xee\x91\x64\x92\x09\xe2\x4b\xba\xbf\x04\xa6\xc3\x8b\x40\xc1\x88\x4f\x36\x47\x06\x98\x58\x51\xea\x79\xd5\x33\x4e\x10\xec\x6c\x01\xa4\x9a\xe0\x5a\x8c\xd7\x14\x59\xcc\x78\x2d\xc0\xce\x68\x01\x5f\x38\x66\x4b\x61\x7c\xd4\xad\x52\xc4\x55\xaa\x82\xaa\x14\xaa\x45\x04\x86\xac\x15\x18\x05\x67\x9b\x30\x0b\xe6\x51\xe0\x7e\x57\x99\x2c\x26\xae\x0d\x38\xa1\x8a\xa9\x1f\x45\x76\x10\x4d\x96\x28\x5a\x18\x21\xb2\xea\x11\x32\x2e\xc1\xe2\xb7\x37\x36\xdb\xe5\x10\x51\x23\x62\xeb\x3c\xfc\xb8\xe3\x82\xce\x06\x6a\x77\xac\x2e\xa9\xf8\x19\xeb\x4d\xa4\x70\x8d\x89\x6c\x5f\x57\x28\x2d\x35\x38\xb9\x3d\xb3\x35\xdb\x61\x72\xef\xf7\x67\xce\x28\xa0\x0f\x8f\x3d\xf0\x37\x73\x7a\x23\xd0\x6a\x9c\x61\x34\x66\xfa\x9d\x02\x98\xf7\x05\x70\x03\x94\xc5\x51\xd6\xe8\xf0\x36\xdb\x5d\xbc\x0c\x63\xa6\xb9\x6a\xa9\xa9\xbc\x72\x46\x24\x19\x9f\x1d\x06\xdd\x76\xbf\x4b\xd8\x60\xcc\xac\x29\x2f\x85\x34\x52\x05\x93\x91\x06\x18\x6d\xf8\x33\x33\x9e\xb5\x6a\x59\x71\x75\x49\x45\xd5\xf2\x19\xc4\x8a\x8f\x52\x9c\x81\xa0\x5b\xc0\xa5\x7f\x5c\x7f\x0c\x34\xe3\xb2\x8f\xe0\x35\xae\xc5\x14\xae\x26\xd0\x47\x33\x6b\x2b\xcd\x62\x2e\x42\xe8\x64\xc1\x08\x32\x0e\xe0\xea\x45\xc0\xd5\xe8\x41\x8f\xcd\xee\xc1\x25\x63\x6b\x45\x55\x4d\x0d\x20\x59\xc0\xd5\x74\x0d\x8a\x65\xe1\x58\x84\x24\x5d\x00\x73\x2f\x08\x65\x10\x9a\x20\x6c\x87\xf0\x0a\x04\xd0\x8d\xc6\xd6\xac\xd6\xb9\x79\x46\x7f\xd0\x83\xb3\x0e\x6a\x2e\x82\x7e\x67\x01\x5d\x74\xa4\x8b\xcf\xd3\x7d\xc6\x26\x7b\x00\x5a\xd1\xe8\x6a\x06\x07\x36\x2b\xc0\xda\x9f\x18\x8d\xcb\x5c\x7e\x21\x68\x77\x5f\x1f\xc4\xe7\x08\xdc\xce\xe0\x02\xfc\x74\x87\x71\x2d\x4e\x9d\x8c\x76\x41\x5a\xc2\x9e\xee\xa3\xed\x25\xe6\x41\x53\x0e\xe5\xa8\x57\xa8\x72\xda\xa6\xb7\x21\x9e\xd8\x9a\xbe\x80\x33\xe8\xf0\x82\x98\x24\xcf\x45\x5a\xfb\xe5\xab\x10\x40\x2e\x3b\x81\x0c\x9d\x67\xad\x0b\xdb\xee\x66\xa7\x88\x6b\xa9\x2e\xaf\xb4\x96\xd8\x8a\xeb\x2c\x55\x95\xc5\x95\x56\x9b\xb9\xbc\xb4\xdc\x5a\x43\x2a\xed\x95\xe0\x71\x34\x10\x92\x49\x3c\x24\x48\xdc\xf0\x0f\xc5\x97\xe9\x09\xba\xdd\x54\x8e\x57\x3c\x54\x48\xda\x1e\x64\x21\x95\xc7\x9f\xe0\xd7\x42\x59\xda\xb3\x10\x3f\xc9\xe3\x7f\x81\xb0\x8f\xc7\x7d\x0f\x46\x70\x46\x1b\x0a\xf9\x75\x0c\xbf\xbe\xfb\x40\x21\xf9\x3e\x84\x96\x07\x38\x3f\xdb\x22\xb8\x5b\xb7\x0d\x5e\x8e\xe6\x9b\x6a\xd8\xf4\x21\xf0\xc5\x50\x7a\x1f\xbb\xea\xe0\xfa\x73\x08\xed\x10\x4e\xde\x5f\x48\x76\x41\xd8\x7e\x3f\x83\xdd\x7e\x3f\xc3\xa9\x05\x9e\x72\x30\xdc\xcf\xca\xde\x2f\x2b\xbf\xf7\x5e\x90\xc7\xbd\x4a\x9a\x62\x1c\xe1\xd0\x10\x60\xb9\xc0\x7b\xc7\x56\xc9\x21\xe4\xc9\x47\x0a\xc9\xfb\xdf\x65\x21\x6d\x7b\x21\x39\x0c\xf7\x84\xf4\x2e\xb4\x17\x79\xeb\x7f\x70\xd7\x5b\x0b\x7f\xb6\x6f\x4d\x77\xe6\xdd\x7b\x16\x9e\xde\xf0\x88\x65\x82\xf9\xc0\x42\xfd\xe7\xb7\x7e\x67\x52\xd6\xb6\xf9\xb3\x57\x94\xd6\xe2\x3d\x8c\xe6\x10\x8c\x30\x20\x17\x42\xc6\xc3\x10\xb6\x63\x01\x0b\x07\x1b\x9f\x71\x7c\x9f\x02\xe1\xd6\x41\x47\x70\xfc\x1d\xe5\xf9\xd9\xc9\x02\x84\xdc\xc0\xae\x85\xdf\x60\xd7\xcd\xbb\xd9\x75\xdd\x49\x7a\x6d\xef\xcc\xa6\x0e\xc1\xfe\xf1\x6c\x6b\xb1\xce\xdf\x3f\x48\xaf\xce\xdf\xfc\x06\xaf\x46\xdb\x76\xed\x22\xb8\xf6\xb5\x94\x5d\x83\xd7\xc7\xb6\x5d\xd4\x0c\xd7\xc2\xbf\x3d\x9c\xf3\x18\x5c\xb7\x4e\x7d\xe5\xc5\x77\xe1\x9a\x77\xf9\x67\xeb\x93\x8a\x48\xfb\xe1\x6b\x36\xec\x36\x15\x91\xed\x07\xbb\x96\xe7\xb5\x14\x91\x7d\x95\x8d\xcd\xbb\x7e\x58\x44\x16\xdc\xb3\xe6\x48\xdd\x5f\x8a\x0a\xb7\x3c\xdb\x76\xc9\x8f\x27\x9a\x2d\x1f\xfd\xf5\xdd\x23\x17\x2d\x31\xdf\xfb\xce\xd2\x31\xbf\x3b\xda\x2e\xbd\x97\xf7\x62\xe8\xe0\x83\x3f\x7d\xeb\xe1\xf9\x57\xff\xe0\xc9\x77\xbe\x76\xbc\x3c\x7f\xc1\x0f\x8e\x99\xbf\x48\x79\x62\xf6\x77\x1e\xdc\xf2\x3b\xc3\xf3\x2b\xa7\x17\x79\x9f\x76\x64\x8e\xd9\x17\x73\x6d\x85\xfe\x38\xfd\x0b\x3d\x71\xcf\x3e\xbb\xf3\xbe\x92\xcf\x4e\x2d\xec\xd7\x55\xcd\x5b\x3a\xfb\x92\x9c\x53\x65\xad\x77\xac\x98\xff\xab\xc0\xa6\x3f\x55\x4d\x0c\x0e\x96\xbd\x99\x04\x48\x0b\xa9\x27\x7e\x22\x90\x6c\xe2\xa0\xbd\x0d\xac\x76\xc0\x29\xd8\x60\xe6\xe6\x0b\x0a\x36\xf6\x46\x0c\xb1\x35\xaa\x40\x83\xe4\xb5\xd9\xdc\xf5\x36\x34\x23\x3e\x30\x54\xb6\x86\xa0\xa7\x9e\x28\x40\xa4\xb4\xa8\xa8\xc0\x98\xe9\x9a\x3b\x6f\x6e\x96\xcf\x1b\x70\xb5\x65\x39\x5a\xed\xfe\x86\x2c\xbf\xb3\x05\x86\xcc\x45\x41\x17\xd8\xe8\xb5\x1b\x70\xc4\x2c\x5d\x9e\xb5\x1c\xac\x22\xd8\x9a\x75\x60\xa6\x66\x18\xf3\xb2\xe7\x65\xe7\x91\xd1\xe7\x9f\x93\x9d\x9b\x9d\x73\x3e\xff\xf9\xfc\xe7\xf3\xff\x47\xfa\xdf\xf9\xfc\xe7\xf3\x9f\xcf\x7f\x3e\xff\xff\xd4\xfc\xe7\xed\xef\xf9\xfc\xe7\xf3\xff\xf7\xe6\xff\x4f\xfb\x5f\x3c\xff\xf9\xdf\xff\x3b\xbf\x34\x7e\xd5\xdc\x5c\x4d\x34\x1b\x0d\x9a\x8b\x93\xf4\xfa\xcd\x1a\xdc\xc5\x98\x10\x3c\xba\xfa\xf0\x9f\xcf\x86\xb5\x1c\xc7\x08\x01\x9b\xff\x3d\x80\x4d\xc5\x55\xd8\xa2\x64\xa3\xb6\x2b\x21\x59\x5f\x96\xa8\xbd\x09\x2e\xa6\x44\x56\x9e\x15\xc2\xc1\xc3\x67\xc3\x45\x84\xe2\xe4\x6c\x4a\xd6\x13\x3c\xfb\x04\x67\xe7\xa9\x7f\x39\x1b\x9e\x83\x0f\x51\x4c\xc9\x86\x2e\xad\x79\x5c\xdc\x92\xbb\x74\x77\xea\x3b\xe2\x74\x1b\xb4\x09\xbb\x4d\x7b\x4c\x7b\x4d\xaf\x02\x07\xe6\x44\x2c\x07\x0f\x27\x35\x1e\x39\x1b\xbe\x88\x95\x93\x5a\x0d\xe5\x20\x1c\x77\xb1\xc9\x8c\x01\x8f\x55\x8f\x99\xbc\x1e\x93\x01\x9f\xee\x84\x4a\xe9\x2e\x1a\x17\x57\xc2\xe8\x6a\x5f\x97\x91\x5d\x9c\x48\x71\xf1\x20\xc2\x3e\xc0\x9f\x25\xc7\x5f\x8f\x08\x83\xcb\x4b\xa4\x73\x18\xf2\x85\xb4\xb2\x7c\x45\xbc\x7e\x9b\xb4\x11\x3a\x90\x9c\xc1\xe9\xe4\xff\xe3\x6c\xb8\x5d\xa2\x53\x3e\x2e\x6e\xd1\x9d\xba\x0e\xbd\xf6\x26\x44\x46\x54\x2c\x17\x1f\xa7\xdd\x03\x78\x2f\xc7\x2a\x77\xa7\xb2\xdc\x42\x08\x78\x2e\xd9\x43\xdf\x0c\x87\x1f\x9a\x00\x11\x73\x92\x86\x94\xa6\xc6\x69\x83\xa4\x24\x45\x17\xf4\x8d\x49\x1d\xab\x0d\x6e\x4c\x1d\xa3\x0d\xb6\xa5\xea\xb4\x41\x41\xb7\x69\xc2\x2e\xc0\x30\xf1\x42\x8a\xb0\x94\xe1\xea\xb8\xaf\xff\x2c\x3b\x03\x2d\x9a\x97\x1d\x1a\x05\x2f\xa2\x2c\xab\x07\xce\x86\x2f\x96\xcb\x72\x39\x43\x48\xe7\x3a\xb1\x14\xd2\xa7\xc9\xd3\x6f\x8c\xa4\x6f\x81\x50\x05\xe9\x26\x79\xfa\xad\x2c\x1d\xf9\xc1\x13\x6d\x7c\x90\x3e\x5f\x2e\x9b\x72\xce\xcf\x4c\xad\x8a\x9f\xf7\x20\x6c\xfc\xe7\xd9\xf0\x75\xf2\xf2\x6e\x8e\x94\x77\x06\xc2\xb7\x20\x5d\x30\xc4\x28\xcf\x61\x50\x95\x37\x13\x4f\x44\xfb\x2c\x76\x79\xb4\xfe\x90\x7e\x66\x88\x74\x3c\xc3\xed\xa2\xe3\x67\xc3\x8b\xe5\xe9\xda\x12\x8a\x80\xfd\x6d\x0b\xa4\x9b\x8f\x47\xc9\xc7\xdc\xa1\xbb\x61\x37\xe3\x02\x0f\xe8\xdd\x01\x38\x8b\x00\x67\x6b\x2c\xfd\xee\x88\xb0\x8c\xe5\xbd\x07\xb8\xdf\x07\x5c\x77\x54\x79\xda\xfa\xdd\x12\x0e\x3e\xec\xfc\x17\xe0\xd4\x45\xe3\x54\xed\x96\x74\x12\xb7\x02\x9d\x76\xe2\x6c\xf8\x1d\xad\xac\x2f\x73\x9a\xba\x3d\x4a\xb9\x23\x8f\x56\xdc\x3e\xf8\xd4\xd9\xf0\x77\x62\xf1\xb8\x35\x82\x3e\x98\xee\xa5\x73\x79\x1b\x3f\x3f\x1b\xa6\x8b\xf0\xc5\xbc\x8c\x55\x8c\x08\xf6\xa7\xf9\x10\x66\x40\xfa\x3d\x72\x1a\x65\xb4\x3f\x75\x88\xfd\x09\xf1\x1c\x10\xee\x1d\x01\x1e\xea\xde\xe9\x11\xe0\xa1\x3d\x72\x9c\x1e\x1a\x6f\x26\xd7\xbd\xdf\x00\xde\xc3\x9a\x18\xba\xb5\x45\xa3\x92\x19\xee\xd4\x9c\xff\xc5\xd9\xb0\x46\xc2\x2f\x95\xf0\xb5\x1f\x46\xd0\xb1\xec\x79\x80\x93\x7c\xf6\x6c\x78\x65\xac\xb2\x97\x28\xcb\x46\xfc\x26\x2c\x3b\x7c\x36\x3c\x31\x16\x7e\x9c\x1a\xff\x21\xc0\x9b\x4a\xc2\xe1\x3b\x62\xe1\xfb\xd5\xf8\xfb\x00\xcf\xa7\x09\x87\x7b\x63\xe1\xef\x50\xe3\x9f\x44\x3c\x5d\x38\x3c\x39\x16\xbe\x41\x8d\x9f\x09\xfa\xd4\x07\xf8\xf9\xb1\xf0\x67\xa8\xf1\xeb\x00\xff\x63\x7d\x38\x7c\x40\xab\x96\xa5\xee\x97\x6a\x7d\xc5\x93\xfd\xb6\x8d\x0d\x87\x3f\x93\xb7\x69\x05\x97\xfd\x5f\x95\xb2\x7f\x06\x70\x57\x1b\xc2\x61\x6b\x2c\x1b\x64\xd6\xaa\x78\x39\x02\x78\xb7\x27\x84\xc3\xeb\x63\xf1\xbe\x52\xcd\x7b\x1a\x8c\x97\x2f\x26\x86\xc3\x33\x62\xe1\x4f\x51\xe3\x9b\x01\xff\xd9\xa4\x70\x78\x5d\x2c\xfc\x15\x6a\x7c\x01\xf0\x3f\x1a\x17\x0e\xff\x29\x16\xfe\x6f\xd4\x7a\xf9\x38\xe0\x3f\x9c\x12\x96\xe9\x65\x04\x5f\xfb\x71\x04\x1d\x71\xf7\x03\xee\x4d\xa9\xe1\xf0\x07\x24\x86\x0e\xbf\xa3\x94\x23\x9e\xe6\x3c\xeb\x82\x70\x38\x3d\x86\xbe\xeb\xc6\xaa\xf9\x98\x09\x91\x8b\xc7\x87\xc3\x17\xc4\xea\x1f\x67\x46\x6e\x53\xfa\xa0\x8c\xed\xf2\x32\x74\x0f\x6a\x86\xca\x27\x8e\x83\x96\xb4\x70\xf8\x77\x52\xbe\xf2\x88\xfd\x7b\x41\xc9\xeb\x60\xe5\x64\xf2\x72\x0e\x4e\x0c\x87\xd7\xc8\xf5\x8c\x8f\xa7\xda\x65\x91\x62\x10\x0f\x0f\x4e\x4f\x9a\x84\x87\x4d\xc8\x70\x97\x30\x22\x58\x56\x13\xda\x2b\x28\xeb\x0f\x0a\xbb\xcd\xcb\xfa\x6d\xa4\x2c\xb4\x59\xb8\x7f\xd8\x93\x50\x96\x57\x8e\xcb\x7c\x8f\x46\xd1\x66\x19\x21\xe9\x45\x08\x1f\x01\xde\xf5\x44\x56\x4f\x28\x53\x2b\x1b\x53\x0e\x63\x3d\x2e\x0c\x87\x33\x14\x74\x3b\x74\x2b\xf9\x18\x35\x58\xfd\x33\x78\xfd\xf5\x90\xf7\x43\xb9\x7e\x30\xdb\xf9\x07\x91\x8f\xe1\xda\x61\x07\xe4\xbf\x63\x4c\x2c\xbb\x34\x46\xa5\xeb\xe8\x8f\x68\xa7\x86\xc3\x8f\xc7\xf2\x5f\xbe\xa5\xee\x1b\x1b\x21\xb4\x5c\x1a\x0e\xcf\x95\xf7\x6d\xb1\x9d\x67\xa8\x7d\x3a\xf4\x47\x36\x5e\x16\x25\xd7\x62\x5a\x1f\x87\x58\x1f\x6c\x2b\xdc\x92\x6d\x37\xe0\xb5\x10\x75\xb9\x5a\xd7\xf0\xba\x2b\xd6\xfd\x24\x94\x61\xd0\xc7\xe0\xed\xb4\xee\x4b\xe9\xe0\xce\xe9\xe1\xb0\x2b\x16\x2f\xab\x94\x7a\x83\x3a\xf8\xd9\xf4\x28\xbb\x58\x8c\xb8\xda\x0f\xe4\xfd\x1e\x1f\xf4\xbf\x7c\x79\x38\xfc\x5e\xac\x32\x7f\x37\xf2\xfa\xad\xba\x22\x1c\x5e\x10\xcb\x1e\x64\x7e\xb9\x3e\x66\xcd\x0c\x87\x17\x11\xb5\x8e\xf8\x65\xa5\x64\xf2\xfa\xad\x03\xdc\xd5\xb1\xf8\xb6\x28\x6d\x1b\xfa\xe5\xdf\x06\xdc\x27\x63\xe1\x7e\x5b\xd9\x77\xb7\x43\xb8\x70\x46\x38\x5c\x2b\xc7\xd5\x5e\x2f\xf9\x79\xbd\xa8\x9b\x90\x6e\x8a\xea\x43\x6d\xbc\x0f\xa1\xec\x8f\x40\x70\xcd\x60\x7b\xb1\x28\xfb\x6c\x9b\xa8\x5a\xc3\xca\xa1\x1d\xf2\xff\x94\xe7\xef\xd0\xc2\xe4\x4c\xfb\x60\x42\xb2\xa1\x68\x77\xb2\x7e\x51\xa2\x25\xd9\x60\xda\xcd\xe7\x52\x28\x87\xb4\x2b\xc3\xe1\x4b\x10\x17\xe6\x79\xd6\x21\xe6\x58\x69\x62\x3f\x06\x7c\x7a\xc6\x65\x65\x72\xea\xaa\x64\x56\xaf\x3c\x4c\x03\x78\xb9\x8c\xa6\xb1\x39\x81\x51\x82\x09\x23\xce\x33\xd1\xcf\x2c\x03\x9c\x74\x5e\xfe\x70\x73\xd2\xf9\x80\x3b\x76\x84\xb8\x46\xc0\xd5\x0d\x83\x3b\x5f\xc6\xff\xd3\x31\xda\xd2\x29\x9b\x22\x9a\x12\xb5\x2e\xd9\xed\x22\x3c\xec\x08\x4f\xd6\x58\x85\xfa\x00\xf9\xef\x92\xe7\x1f\x82\xa6\x38\xf6\xec\x87\x3c\x7c\x9e\x6c\xac\xa5\x53\xe9\x35\xc9\xa2\xed\x41\xbe\xc8\x55\xe1\xf0\x6d\x72\xd9\x39\x40\x76\x25\x20\xbb\xa2\x44\x27\x8f\x99\x91\x07\xac\x2f\xfa\xf4\x96\xab\x86\xaf\xaf\xd8\x5e\x79\x80\xbb\x84\xd1\x2e\xd4\x96\x26\xeb\x53\x79\x7b\xb9\x01\x9e\x2c\x2b\x03\x75\xa1\x09\x60\x2b\x45\xdc\xe5\xc9\x83\xf6\x5b\x51\xee\x0f\x8d\x80\x0f\x11\x77\x23\xe0\xc6\x71\x1c\x84\xe1\x1a\x43\x9b\x0c\x36\x58\xfe\xc9\x3c\xff\xaa\xab\x22\xe3\x13\x95\x11\x97\xdf\x3c\x08\xdb\x21\xad\x40\x6e\xeb\x17\x61\x9b\x96\x40\x07\x7d\x44\xd6\x8c\x45\x89\xd4\x27\x86\xb0\x63\x26\xf8\x02\x68\xeb\xaf\x8f\xea\xcf\x03\x0a\x25\x18\x94\xa7\x79\x9c\x27\xc3\xac\x70\xb8\x42\x4e\x97\x8d\x01\xc1\x04\xb1\xa7\x2e\x4a\x26\x85\x89\x91\xdb\xb2\xc4\xe1\x6d\x98\x3e\x27\x1c\xbe\x29\x86\x7e\xb2\x91\x85\xb1\x96\xc7\xdb\xab\x0e\x70\x3b\xe4\xb8\xa6\x3b\x75\x25\x1d\xfa\x2a\x89\x60\x71\xa2\xf6\x06\xe9\xc6\x44\xeb\xdf\x8e\xf5\x87\x7c\xdb\xe4\xf9\xc0\x06\x55\x27\xbc\xba\x1b\x90\x4a\x13\xb5\xa5\x09\xbb\x79\xfd\x11\x7f\x07\x04\x63\x6e\x38\xfc\xc7\x28\x7c\x17\xc3\x87\xae\x72\x0b\xc3\x37\x0f\x2e\x2f\x51\x07\x76\xe6\x72\x5b\x23\xd3\x81\x57\x00\x36\x9e\xc3\xb0\x4d\xf1\xa5\x95\xfd\x00\x5b\xc0\xe9\xdd\xa9\x35\x25\x27\x75\xe8\x36\xec\x06\x6b\xb2\x07\x7a\x8d\x83\xb7\xe1\x87\x80\xf3\xb0\xc4\x13\xe0\xdc\xa5\x33\x25\xa7\xde\xa9\x2f\x4a\x4e\xeb\x88\x03\x93\x67\x4b\x48\x4e\x03\x8b\x97\x0a\x99\x92\x4c\x7b\x21\xf3\xab\x68\xfd\xb4\xd0\xfd\xd2\x8a\xa3\xc0\x45\x89\x45\x0c\xb7\x48\x06\xa4\x7e\x2d\x84\x8c\xd9\xe1\x70\x99\xa4\x77\xc5\xc9\xa9\x95\xdc\x94\x9a\x12\xd7\x25\x1b\x8a\xd1\x94\x52\xbe\x71\x4d\xa1\x0c\x70\x73\x24\x5c\x4b\x02\xc5\x5a\x4d\x51\xa8\xce\xe0\x69\xa6\x56\xc0\x59\x2f\xd5\xad\x02\xeb\x56\x9e\xc0\x2b\x07\xc2\x5c\x1c\x89\x17\x8b\x55\xa6\xe5\xaf\x82\xbc\x9b\x21\xef\x95\xd1\xe5\x2f\x67\xe5\x63\x3f\x69\x07\x9c\x6d\x80\x83\x6b\x73\xa4\x26\x39\xa9\x05\x6c\x4d\x69\x22\x5b\xab\xc3\xf9\xe8\x41\x48\xfb\x36\xcf\x7f\x17\xf4\xa1\xa4\x3b\x51\x66\x1d\x20\xb3\xc9\xd5\x09\x50\xfd\xdd\x50\xfd\x3d\x40\x74\x2f\x65\xe5\x46\x00\x99\x38\xa8\x7c\x2f\x96\x54\x94\x9c\x5a\x2c\xc3\x19\xb4\xbd\x9b\x78\x7b\xcf\xbb\x3a\x1c\x7e\x43\xab\x6e\x23\x13\x6b\xa3\x42\x3f\x34\x86\x49\xd5\x18\xba\xab\xb5\x00\x2f\x89\x82\x9b\x13\x6b\x12\xd4\xad\x54\x9c\x38\x9c\xfd\xeb\x9c\x13\x0e\x5f\x8d\x08\xa0\x13\xde\x11\x8c\x6f\xdb\x00\xff\x1a\x8e\x1f\x18\x02\xdf\xc8\xf1\x1f\x07\xfc\xb3\x32\xfd\xb0\x68\x9f\x92\x06\x3e\xd4\xa1\x42\x6c\x97\xb9\xbc\x4d\x44\xdb\xe5\xe2\x28\x8b\x12\xd7\xf2\xe1\x98\x8e\x03\x68\xdb\x9f\x01\xdc\x8f\x06\xd3\xeb\xe2\xe4\x35\xda\x9f\xc6\x10\x1a\xef\xab\x38\xae\x39\xae\x09\x87\xbf\x29\xb5\x71\x09\xb6\x71\x11\xb6\xb1\xb6\x3d\x41\xd6\x74\xe6\x44\xa4\x87\x7e\xdb\xdb\x80\xff\x8d\x18\xf4\x78\x1b\xe5\x68\x4d\x31\xe8\x41\x5f\xa7\xe3\x29\xfa\xf7\xf3\xc2\xe1\x43\x72\xdb\x20\xce\x6b\x5c\x0a\x5b\x6a\x51\x5a\x56\x56\x5f\xd4\xe9\x57\x20\xff\x5f\x24\x1d\x29\x42\xfa\x45\xf2\x7e\xac\x4b\xd1\xc6\xac\xb0\x99\xeb\xb4\x70\x2d\xcc\x69\xa5\xfa\x9a\x24\x9d\xc6\x96\xf8\x8e\x4c\x83\xb1\xd6\x65\x89\x2e\x25\x80\xf0\xb9\x3a\x94\x93\x34\x3f\x1c\xfe\x59\xac\xb5\xd7\x13\x1a\x05\xeb\xc8\x77\x1a\xe0\x3d\x7c\x5d\x38\x7c\xb1\x64\xfb\xcd\x12\xdf\x25\xc8\x77\x19\x8c\x9f\x8f\xc5\x60\xbb\x38\x91\x8e\xbd\xb8\x86\xb0\x71\x61\x38\xfc\x43\xa5\x8d\x43\x96\xa1\xcb\x26\x99\x24\x13\xd0\x14\xb9\xc1\xfa\x6e\x81\x7c\xc7\x20\x5f\x50\x13\xbb\xbe\x6f\x47\xd5\xd7\x94\xe8\x55\x41\xd0\x3e\xbd\x0d\xe5\xcc\x34\x85\xc3\x57\xe8\x64\xf5\x35\x41\x05\x40\xec\x50\xe3\xfd\x1a\xc5\xa8\xc9\xda\xca\x00\xb8\x99\x66\x98\x87\xc4\x0d\xa2\x2b\xc5\xc9\x3e\xdd\x55\xfa\x18\x95\x2e\x4b\xc4\x3e\x50\x06\xf9\x4f\x96\x85\xc3\x1b\x13\x06\xb5\xd9\x5b\x35\xba\xa9\x9a\xd8\x52\x1b\xde\xc7\x4a\xaf\x09\x87\x67\xcb\xfa\xa1\xb1\x31\xd9\x60\xde\xcd\xec\x38\xf2\x3f\xbf\x86\xfb\x60\x11\x79\x43\x47\xbc\x25\x22\x60\xc2\xc6\x24\xb4\x5d\x6b\x00\xd7\xc8\xe9\x61\x5e\x9c\x1f\xba\x01\x76\x5a\x33\x68\x3f\x59\xa3\xfb\x48\xa3\xe6\x7c\x08\xbe\x3b\x39\xdf\x69\xb5\xe1\xf0\x81\xb4\x41\xcb\x05\x99\x18\x63\xcb\xc4\x1b\xb3\x5b\xc4\x86\xea\xf6\xe9\x62\x5b\x8d\xc1\xf9\xb3\x72\xfe\xac\x2e\x18\x9f\x07\xaf\x77\x86\xf6\xe5\x98\x46\x7c\xc3\x60\xf4\x70\x8e\x83\x73\xaa\xf4\x75\x61\x69\xbd\xbc\x43\xeb\x63\x63\x59\x29\xbb\xe0\xf0\x3a\x18\x5f\x79\x62\x7b\x43\xfe\x97\xe5\x76\x87\xf9\x3e\x37\xcb\xdc\x1d\xed\x6a\xd9\x0d\xb6\x27\xd6\xe9\x19\xc8\x77\x2d\xe6\xab\x8e\xf8\x32\x6b\xa9\x2b\xc3\x6c\x41\x1b\x84\xfd\x80\xf3\x5b\xa9\x6c\xb3\x6c\x9d\x5d\x69\xc5\xb0\x2f\xe1\xbc\xd0\xb7\x3e\x1c\x76\xca\x79\x81\x32\x05\xe6\x1f\x15\x27\x9a\x59\xa4\x22\xd1\x4a\xdd\x24\xd1\xee\x3e\xbd\x5e\x3e\x6f\x2e\x52\x8d\x8d\xda\xb6\xd8\x12\x4c\xe3\x76\xb7\xc2\x1d\x0e\x4f\xc7\xfc\xa0\xc5\x76\xd0\x34\x2c\x17\xcf\xc1\x75\x00\xbc\x6a\xf0\xf6\xb2\xe8\x16\xc6\x52\x27\x66\xd7\xf0\x34\x0a\xa1\x39\x1c\xbe\x47\xee\xd3\x8a\x75\xf7\x29\x1e\xdd\x69\xd7\x47\x19\x74\xcc\xff\x0c\xe4\x7b\xdb\x03\xf3\x8a\xc1\xe9\x17\x6a\x3f\x88\x5d\x2f\x6c\x9f\x63\x90\xef\x71\x6f\x38\x6c\x96\xf4\x62\x03\x2a\x44\x09\x55\x08\xde\x7e\x93\xc1\x76\xed\x07\x9c\x8d\x43\xd0\xd0\xcd\x8d\x5d\x47\xfb\x20\x4a\x89\x7d\xde\x07\xe5\x9e\xf4\x85\xc3\x7d\x52\x9b\x94\x44\x97\x9b\x09\x0a\x15\x4b\xd7\xb5\x2b\x63\x96\x5b\x13\xd3\x1e\x60\x1d\xde\x43\xfb\x7f\x53\x38\x7c\x6a\xa8\x71\x77\x53\x8c\x42\x4b\x12\xb5\xcb\x62\x82\x99\xed\xca\x03\x1b\x9b\xe1\x0f\x87\x2f\xe7\x7d\x67\xb0\x3e\x54\xc1\xfb\x50\x26\xe0\xde\xa2\x9e\xbf\x7c\x4f\xea\x36\x45\x89\x37\xc8\xe6\x12\x95\xf2\xbe\xe5\x92\x6e\xcc\x74\x4c\x41\xdf\xa5\x2e\x10\x0e\xdb\x08\x89\xe1\x5f\x16\x6a\x6b\xa2\x46\x5e\x94\xf9\x76\x08\x9d\x90\xe7\x4a\xcd\xa0\x32\xb7\x68\x77\xc4\x70\xe4\x4d\x4c\x0e\x6a\x70\x91\x1a\x48\x22\xcf\x59\xca\x84\x88\x1f\x76\x27\xf2\x87\x63\x40\xa1\x76\xb1\x7c\x10\x18\x6e\x1d\xd3\x01\x65\xdc\x2d\xef\xeb\x6b\x13\xb8\x44\xea\xe9\xda\x0c\xca\x02\xf5\xf7\x0d\x21\xb2\xce\x23\x1f\xa7\xa1\x69\x5b\xa3\x9d\x90\x76\x6e\x77\xfa\x84\x21\xfb\x8e\x45\x2b\xc4\x54\xb4\x25\x31\x45\xb1\x94\xe3\x9a\x95\x72\xab\x8a\x89\x3c\xfc\xfc\xfd\xbd\x96\x70\x78\x0c\xc7\x11\xe7\x6e\x07\x01\x96\x38\x8c\xae\x89\xf9\x5f\x8c\x91\x7f\xa7\x2c\xbf\x91\xcb\xed\x19\x80\x95\x44\xd9\xd2\x5b\xb9\x7d\xc6\x72\x50\x6f\x0e\x03\xce\x7c\x39\x4e\x2b\x5b\x20\xc4\x72\x37\x23\xbc\x35\xb2\x76\x84\x30\x9c\x27\x9e\x69\x19\xf9\x7a\x12\x96\x6f\x90\xe1\xe6\xf0\xfa\xd3\xf1\x0a\xec\xed\xcd\xc9\xac\x9d\x71\x5e\xa8\x07\x5a\xad\x24\xba\x0f\x6d\x88\x2c\x01\x24\x7a\xa4\x75\x3b\x2c\x1f\x7d\x09\x4b\xeb\xf0\xbc\xb4\x73\x5e\xcc\x80\x7b\xd1\xe0\x3a\x91\xa3\xad\x88\xa1\x13\xe5\x89\xda\xe6\x41\x55\x45\x0d\xad\x8a\x01\x5d\x32\x84\x4e\x88\xbc\xed\x03\xde\x4c\x43\xf0\xd6\x12\x93\x9a\x3b\x26\xb4\x21\xb6\x69\xdd\x1c\x7b\xf6\x31\xb4\xec\x44\x9f\x70\xf2\x96\x70\x38\x5e\xde\x36\xe2\x42\xf2\xff\xb0\x9f\xc3\x17\xf9\x9c\xb2\x6d\x83\x86\xa4\xfb\x35\xc4\x27\x83\x1d\x03\x58\x26\xc0\x0e\xcb\x60\x47\x6f\xd6\x90\x87\x00\xb6\xff\xa6\x08\xcc\x0c\x83\xc5\xe6\x80\xea\xd3\x4c\xfa\x7b\x1b\xe0\x47\x78\xda\x71\xb8\x26\x83\x33\x71\x39\x84\x3c\x08\x65\x10\x6e\x84\x20\x40\xc0\x23\xaf\x1e\x82\xf0\x34\x84\x5f\x42\xd8\x0f\xe1\x03\x08\x9f\x43\x98\x04\x13\x9b\x2b\x21\x2c\x82\x50\x0d\xa1\x09\xc2\x1d\x10\xb6\x43\x78\x12\xc2\x8b\x10\x5e\x87\xf0\x77\x08\x27\x21\x18\x5a\x18\xbd\xa9\x70\x9d\x09\x61\x3e\x84\x32\x08\x75\x10\x9a\x20\xdc\x0c\xe1\xeb\x10\x1e\x82\xf0\x7d\x08\x3b\x20\x3c\x0f\xe1\x15\x08\xfb\x21\x1c\x84\x70\x18\xc2\x87\x10\x8e\x43\xd0\xb6\x6a\x48\x12\x84\x49\x10\xa6\x42\xb8\x1c\x42\x0e\x84\x79\x10\x0a\x21\x2c\x86\x50\x0d\x61\x05\x84\xb5\x10\xdc\x10\x5a\x20\xb4\x43\xb8\x1b\xc2\x36\x08\x8f\x41\xf8\x11\x84\x9d\x10\x5e\x86\xf0\x06\x84\x77\x21\x1c\x86\xf0\x01\x84\x63\x10\xce\x40\x18\xd3\xa6\x21\xe3\x21\xa4\x43\xb8\x1c\x42\x0e\x84\x02\x08\x25\x10\x2c\x10\x56\x40\x70\x40\xf0\x40\x68\x83\xd0\x0e\x61\x4b\x1b\xab\xef\x03\x70\x7d\x1c\xc2\x73\x10\x5e\x81\xf0\x06\x84\x3f\x42\x38\x02\xe1\x18\x04\x2d\xb4\x67\x2a\x84\xa9\x10\x2e\x87\x30\x1b\x42\x01\x04\x33\x84\x0a\x08\xcb\x20\x38\x36\x68\xce\xb7\xdb\x7f\x71\xbb\x15\xe3\x26\x24\x8b\x9c\x01\xa1\xda\x1b\x14\x9c\xe8\x57\xc2\x7d\xb9\x0f\x3f\xe5\xb5\xe2\x6e\x08\xf8\xf4\x91\x6d\x69\x52\xe4\x77\xe1\xb6\x9a\xee\x1a\xfe\x35\xef\x47\xa4\x18\xbf\xac\x8f\x06\x13\x87\xa6\xc4\xef\x74\x56\xb0\x9d\xb1\xc9\x2b\x1a\xdc\x32\x88\x6d\xc8\x6b\x61\x1b\x87\x92\x57\xd5\xb0\x72\x07\x79\x4d\x06\xb5\x36\xf9\x9d\x76\x07\x00\x89\x4e\x8b\x5b\xc9\xd8\x03\x02\xdf\x74\x62\x22\xde\x2f\xf5\x3a\x82\x6e\x67\x99\xdd\xe3\x70\x3b\x4d\xe8\xcb\x47\xc1\x96\x43\xbd\x10\x86\x85\x8b\xbb\x07\x11\x87\x96\xed\x9b\x84\xbb\x7a\xe3\xee\x46\x26\x72\x0b\x85\x6c\x08\x08\xce\x66\xdc\xdb\xc1\x14\x28\x71\xb1\x7d\x60\xc8\x83\x98\x62\x75\xd5\xaf\x2f\xf2\x06\x3d\x30\xcd\x1c\xd0\x96\x7b\x5c\xf8\xdd\xb4\xeb\x66\x95\x1c\xc6\xea\xca\x03\xe6\x45\x45\x35\x15\xc0\x31\xee\xff\x54\x0c\x2e\xd8\xe5\x3a\xb8\x6b\x51\xa1\x92\x19\xba\x0a\xaf\xdd\xc1\x65\x03\x9c\xd7\xea\x96\xe2\x66\xa5\x98\xcd\xea\x5d\xee\x72\x38\x8b\x9a\xec\x7e\x72\x9f\x8e\x7e\x20\x6d\x71\xfa\xe9\xc7\x8b\x1e\xdc\xba\x20\x88\xb2\x26\x8d\xfa\x1a\xa7\x50\xeb\x69\xa2\xb5\x74\x14\xb7\xd5\x3b\xe9\x16\x15\xc0\x37\xa6\x0a\xfa\x1a\xb7\xd3\xe9\x23\x77\xe8\xad\xb8\x8d\x88\x07\x77\xa5\xe1\x22\x27\x21\xbd\xd5\x1d\x80\x4a\xd1\xed\x42\xc8\x03\xfa\x41\x0b\x21\xcf\xe9\x95\x5f\x5c\x13\xf2\x0b\xbd\xfc\xbb\x6d\x42\xfe\xa8\x17\x59\xb5\x7a\x25\xfe\xc9\x35\xb8\xed\xbf\xdb\xed\xf5\x38\xdb\x5c\x02\x29\x80\xbb\x46\xa7\x80\xdf\xc6\xdb\x71\x6f\x98\x6b\xe1\x1e\x3f\xce\x75\x7a\x5a\x40\xe7\xf0\x1b\x4b\xaf\xa7\x85\x42\x08\x29\x81\xfb\xe6\xb5\xb6\xfa\xa0\xdf\xd6\x6c\x07\xe9\xb9\xe0\x1e\x3f\xea\xb4\xfb\x7c\x36\x01\xf7\x3e\x20\x6e\x06\x09\x06\x70\x67\x13\xfa\x8d\x3e\x21\xb7\x10\x9b\xbd\xbe\xd9\xe1\xf6\x90\x7b\x20\xd6\x1c\x68\xb4\x51\xc2\xe4\x7b\xc4\x56\xcf\x62\x87\x89\x0d\x30\x3d\x5e\x42\x26\x68\x6c\x0d\xcd\xb8\xd5\x15\xb9\x51\x43\x89\x42\x4d\x9b\xc9\x5a\x88\x7b\xd7\x82\x8f\xad\xb1\xb9\xbd\xf5\xeb\xc9\x3a\xad\xad\xd9\xd9\xec\xaa\x6f\xf6\x11\x12\xd0\xda\x78\x4d\x9e\xd7\xda\x02\x1e\x9f\xdf\xe5\x11\x1a\xc8\x47\x10\x17\xfc\x8e\xa0\x8f\x94\xe9\x6c\x41\x0f\xcd\x75\xa9\xde\xbe\x16\xb7\x14\xb9\x42\x6f\x17\xbc\x2e\x42\xae\xd2\xd7\xd3\x5d\x73\xc0\xdf\xd3\xd7\xd3\x7d\xb9\xe6\xea\x19\x3f\x25\xfa\x06\x5e\x4e\x19\xc4\x82\x42\x3d\x29\xa7\xd7\x00\x59\xaa\xc7\x1d\xe0\x61\xe6\xa3\x6f\x68\x05\x9d\x81\xd8\x6a\x3d\x48\x0f\x85\x45\xd6\xeb\x5d\x01\xdc\x9a\xc6\x4f\x3c\x10\x0b\xe0\xc6\x39\xc4\x0b\xb1\xa0\xcf\x07\xb0\x0d\x7a\xfc\x64\xdd\xed\x44\x71\x12\xb2\x09\xe0\x6d\x0e\x57\x23\x52\xbb\x4b\xdf\xcc\xf9\xe8\xd1\x43\xb5\x68\xad\xbe\x8e\xb1\x66\x6f\x8b\x93\xdc\x4b\x61\x3e\x68\xcd\xfb\xf5\x3e\xbe\x01\xc2\x83\x7a\xce\x1e\xf9\x96\x1e\xd9\x43\x5d\xfc\xb6\x9e\x32\x48\x1e\xd3\x43\x8f\xa4\xc5\x3d\xa5\x87\x96\x60\x44\xc9\x0f\xf5\xb8\x7f\x80\x1d\x26\x6d\x3f\xd1\x07\x02\xf5\x76\xfc\x12\xfe\x59\x3d\x88\xa8\xbe\x89\x6a\x12\xc6\x90\xee\x0b\x18\xe3\x54\x5e\xc2\xb8\xdb\x09\xbd\xa1\x17\x63\x1e\x44\xd8\xc5\x62\xc0\xce\x1e\x8c\xc1\x7f\x42\x5e\xc3\x98\xe0\x0d\xba\xc9\x5b\x7a\x2a\x46\xf2\x17\x7d\x8b\x28\x40\x72\x42\xdf\x5a\x1f\xa0\xa5\x5c\x24\xdb\xc5\x11\xa4\x8f\x77\x0a\x93\x61\x95\xed\xe6\x4f\x48\x17\xdb\x6d\x8f\xdc\x49\xea\x71\x33\x0a\xbe\x41\xcd\x5d\xd2\x66\x34\x9b\x09\xb6\x84\xb8\x9d\x0d\xf4\x1b\xf9\xee\x36\xa4\x47\xbe\x55\x0a\xb9\x4f\xb1\x89\xca\x03\xa4\x49\xf0\x7a\x02\xe4\x41\xe2\xf2\xa0\xf2\x42\x1e\xf2\x08\xdf\x96\xe5\x51\x71\xef\x16\xf2\x18\xdb\xcf\x02\xb4\x94\xef\xf5\x47\x1e\x97\x6f\x05\x48\xbe\x2f\xee\x99\x83\x3f\x1f\x7d\x31\x8e\x94\x5b\xca\x2a\x2c\x26\x4b\x79\xb6\xb9\x02\xa7\xdc\x24\x0d\x60\x5f\x55\x58\x52\x5c\x5d\x59\x5c\x71\xf5\x6c\x7a\x62\x07\xfc\x32\x01\xf6\x3f\x25\x34\x07\x5a\xea\xfd\x02\xab\xf9\x7c\xb8\x3f\x17\x61\x79\xcd\x6c\x5b\x44\x9a\xff\x7d\xbf\x9c\x0b\x0a\xa5\x78\x6a\x6a\x21\x39\xda\x14\xb9\xc7\x3d\x55\x2c\xeb\x0a\xbf\x72\x9e\xce\xff\xbe\xc2\xdf\x56\x13\x49\x87\xb0\xb5\xde\x44\x8c\xed\xa6\xff\x34\x37\xe7\x7f\x5f\xe1\x0f\xd7\x42\xd8\xf7\x3d\x6c\xf1\xa3\xbd\xb5\x90\x5c\x29\x4b\x4f\xa3\xe9\x3f\x93\xd2\x95\xf9\xfe\x31\x4e\x82\xbf\x56\x48\x2e\xd2\x44\xa7\xff\xaf\xf1\x62\xba\xf1\xf5\x42\x62\x8a\xbd\x3c\x70\xfe\xf7\x1f\xfc\xfd\x98\x48\xed\x4f\x5b\x07\xdb\xff\x7f\x41\xc8\xce\x9e\x25\xff\x1f\xf0\xd7\xcf\x6a\xac\xaf\xcf\xa2\x5f\x00\xce\x62\x87\x86\xcd\xaa\xa7\x9b\xaf\xcd\x72\x5d\x3d\x6f\xee\xac\xfa\x0d\x8d\xad\x2e\x4f\x76\x0d\x29\x2a\x58\xd5\x8c\xfb\x49\xcd\xc9\xcd\x59\x45\x3f\x31\x84\x88\xf2\x33\x43\xc1\xd6\x92\x47\x3f\x36\x5c\xb5\x36\xe8\x72\x3b\x56\x49\xe5\x32\xfc\xd6\xb9\x79\x59\xb4\x84\xab\x67\xaf\x62\x84\x48\x69\x65\xad\xd1\x54\x63\x9c\x9d\x3d\x3b\x8f\x68\xda\x73\xa8\xd2\xa5\x51\x96\x31\xa5\x28\x37\x97\x7d\x99\x68\xcc\x6a\x16\x82\x1e\xe7\x82\x46\xb6\x5d\x2a\xdc\xda\xc1\x69\x5d\x80\xa5\x1a\xb3\x1a\xc5\xff\x55\xb3\x23\xa1\x81\x72\x00\xc4\xb2\x18\x25\x80\x78\xbc\x59\x01\xc1\x5e\xbf\x3e\xcb\xc7\xa6\x4a\xe0\x6d\x26\x8d\x44\x18\xec\x32\x3b\xbb\xfe\xdf\x22\x01\x5c\x46\xd6\x6a\xc6\x50\xf7\x5d\xab\x1f\x1b\xf4\xa0\x8f\xee\x74\xe0\x61\x1a\x70\x1f\x47\x2f\xda\xb1\x81\x26\x3c\xff\x21\x3a\xd1\x8d\xe7\x87\xd1\xb8\x81\xc5\x23\x00\xfd\x58\xdc\x0f\x8b\xce\xc7\x20\x4e\xe1\xca\xdc\x1a\x83\x74\xcf\x68\x27\xe9\x29\x96\xc3\x1b\xc4\x85\x04\xad\x41\x2f\xc6\xf4\xfa\x06\xb7\xd7\x8e\x6c\xc4\x31\x36\x30\xbf\xce\xd5\x36\x6f\xae\x0d\x1b\x05\x66\x68\x0e\xdc\x73\x1d\x5a\x0e\xf4\x4c\xb3\x46\xf3\xeb\x44\x68\xbf\x3a\x48\xb5\xd6\x56\x16\xdb\x6a\x8a\xca\x8a\xcd\xb5\x15\xc5\x72\x98\xc5\x54\x6d\x2d\x37\x55\xd8\xaa\x8b\x4b\x6d\xe6\x62\x4b\x71\xa5\xb9\xb8\xb2\xe8\x06\xa2\x91\xe5\xaa\x19\x14\x4b\xab\xc4\xaa\xb1\x54\x94\x5b\x11\xa7\x86\xe8\xd4\x14\x4a\x2a\x4c\xa5\xb4\x80\x1a\xab\x09\xdc\x71\x7d\x04\x63\x69\xd5\xb2\x3a\x12\x27\xbb\x2f\x5e\x5a\x55\x7d\x83\x6d\x69\x79\xcd\x52\x93\xb5\xa8\x8c\x67\x18\x13\x41\x28\xa9\x05\x6a\x45\x4b\x2d\x36\x53\xa5\xd9\xb6\xa8\xda\x54\x09\x48\x57\xcf\x26\x63\x87\xc6\x98\x9b\x47\x0c\x43\x63\xd4\x54\x21\x93\x35\x24\x3e\x0a\xcd\x54\x51\x2b\x43\x23\x09\x91\xe4\xea\x62\x53\x4d\x4d\x55\x91\xad\xbc\xd2\x6a\xb3\x56\x61\x5d\x81\xd5\xe2\x0a\x92\xa8\x46\x29\xb1\x28\x30\x92\x22\x18\xa6\xa2\xa2\xda\xa5\xb5\x15\x26\x6b\xb1\xad\xaa\xd6\x5a\x5a\x55\x5e\x59\x6a\x33\x55\x03\x1f\xe3\x64\x52\xac\xae\xaa\xa8\x2a\xad\x2d\xb6\xd5\xd6\x60\x32\x88\xac\x98\x24\x47\x92\x8b\x2d\xe5\xaa\xe4\x94\x48\x32\x56\xa2\xa2\xd8\x04\xc0\x54\x59\x91\xb5\x35\x65\x5c\xd6\xe4\x02\x59\x4b\x42\x01\x15\x2c\x95\x8c\x8f\x80\xcd\x55\xb5\x8b\x44\xf0\x04\x35\x76\x95\x85\xa4\xa9\x91\x01\x3a\x51\xae\x09\x66\x5b\x4d\x59\x55\xb5\x15\xa4\x5a\x59\x64\x2d\xaf\xaa\x24\x93\x94\xa9\xd5\xc5\xd6\xda\xea\xca\x1a\x72\xa1\xac\x01\xaa\x6a\xab\x6d\x8b\x6b\xa1\xa1\x2a\xca\x97\x96\x5b\xc9\x64\x19\xed\xaa\x12\xeb\x72\x53\x35\x0a\xa7\xb8\xa4\x18\x34\x05\xab\xbe\xa8\xb8\xb2\xb8\xa4\xbc\x08\x34\x8e\x4c\x89\xa0\x56\x14\x59\xb8\x1a\x5d\xa4\x68\x19\x33\x88\xca\x5c\x5e\x72\x03\xb9\x58\x29\xac\xf2\xca\x22\x73\x71\x11\x49\x8f\x40\xa1\x85\x8b\x4b\x8b\xab\x6d\xe6\x12\xc8\x41\x75\xb6\xb8\x86\x5c\x12\x49\xaf\xb2\x58\x6d\xa6\xd2\x5a\x32\x55\xd6\xae\xcb\xaa\xca\xcd\x28\x77\xa8\x44\xb5\xcd\x64\x36\x57\x93\x4b\x65\xdc\x57\x54\x2d\xb7\x95\x43\xbb\xc3\x9f\xa5\x57\xcf\xc6\x96\x20\xc6\x41\x92\xe7\x91\xcb\xa2\x8b\x05\x74\xa0\x09\x4a\x89\x65\x17\xd1\x06\x9f\xa6\x6a\x96\x1a\x6b\x35\x44\xa0\x15\xbe\x26\xeb\x5d\xe5\x35\xa6\x8a\xf2\xd2\xca\x62\x33\xad\x04\xc7\x41\x05\x93\xb4\xa8\x86\x64\x28\xc5\x51\x63\x2a\x2b\x21\xd3\x95\xb0\xa2\x0a\xab\x99\x5c\xae\x84\x2d\xb2\x92\x2b\x94\x90\xb2\x72\x2a\xae\x92\x72\x60\x22\x33\xaa\x50\x59\xd2\x0c\x65\x52\x49\x49\x75\x71\xb1\x85\x5c\x29\x53\xf0\x3a\xab\x6d\x5e\xce\xd5\xf3\xae\xb1\x15\x55\x55\x42\x4b\x56\x5a\x6b\xc8\x55\x91\xe4\x65\xc5\x45\xd6\xaa\xea\xf2\x15\xa2\xea\x91\x99\x91\xb4\x52\xd0\x88\x6a\x66\xbc\x6a\xb8\x9d\x2a\x07\x45\xc8\x52\x1a\xaf\xda\x4a\x51\x2a\x15\x55\xa0\x16\xd0\x9c\xe5\x4b\x41\x87\xb2\x07\xc3\xaa\x01\x7a\xc5\x12\xda\xac\x68\x7b\x59\xb4\x04\x71\x58\x2b\x94\x57\xd6\x54\x4a\x98\x39\x4a\x4c\xeb\x0d\x96\xe2\x8a\xe2\x9a\x1a\x56\x5e\x0d\xc9\x55\x26\x23\x2f\x39\xb6\x45\x37\xd8\x2c\x75\x55\xd5\x64\xb6\x52\x1d\xab\x81\x1d\x30\xb8\x54\x15\xd1\xb6\x80\x10\xc8\xd5\x43\xa0\x94\x54\x57\x2d\xa5\x48\x79\x31\x91\x40\xb0\xcb\x8a\xab\x6b\xa0\x5b\xd6\x90\x39\x32\x36\xa8\x55\x57\xa8\x1b\x98\x32\x86\x0c\x8d\x30\x57\xd9\x72\xac\x21\x14\x18\xd7\xc4\xc4\x90\x92\xe7\x45\xe9\xbc\xa5\xa6\xac\xb6\x64\x11\xc9\x8f\x6e\x5c\xc9\x74\x82\x2e\x14\x17\xd5\x52\xf3\x51\x10\xdd\x2b\xf2\x16\xdd\x60\x65\xf6\xa0\xbc\x0e\xa4\x79\xad\x3c\xbd\x6e\xf6\x9c\xb9\x83\x35\xf3\xfc\x21\x10\x95\x2d\xbd\x40\x81\x99\x3b\x7b\x9e\x94\x72\x9d\xca\xfe\x2d\x2f\xb7\x96\x61\xbf\x27\x0b\x65\x99\x2a\x96\x9b\x6e\x80\xb6\x80\x91\x04\x86\x38\x13\x20\x80\x52\x93\x42\x99\x8c\x2a\xc1\xd4\x57\x60\xb7\xac\x28\xae\x24\x26\x99\x74\xca\xca\x4b\xac\xb9\x64\x51\x04\xb2\xa2\x18\x3b\x6d\x9d\x15\xc6\x63\x4e\xab\xd2\x4c\x8a\x14\x83\xc6\xd2\x2a\xab\xd4\x09\xd1\x9a\x10\xb3\xcc\xb4\x9a\x6a\xac\x5c\x56\xa4\x38\xa6\x59\xb4\x2d\xaf\x2e\xb7\x16\x93\x12\xc5\x58\x0d\x7f\x72\x6d\xcb\xca\x4d\x36\xd0\xc8\xd2\x48\x4a\x65\x95\x15\x78\xb7\x98\xca\xab\x4d\xd8\x01\xcb\x62\xfb\x18\xcc\x08\x97\xab\x79\xbc\x9e\xf2\x48\x16\xc7\xe2\x9e\xf9\x14\x4b\x22\x49\xbc\x42\x28\x3e\x52\x11\xad\xaa\x15\x55\x7c\x04\xac\x21\x4b\x95\xaa\x57\x57\x54\x56\xba\x88\x54\x2a\x81\x80\x99\x43\xaa\x94\xf5\x60\x1a\x47\x19\xb2\x44\xab\x18\xd7\x46\x18\x1e\x30\xf9\xfa\xe8\xe4\x12\x53\x05\x14\x0a\x4e\x12\xed\x29\x8b\x96\x96\x93\xea\x08\x0a\xf7\x33\x40\xe6\xe6\x72\x3a\x00\x42\x4d\xd0\x92\xd5\x44\x50\xae\x97\x55\xcd\x1a\x4b\x4c\x4c\x18\xb5\x32\xba\xe6\xc5\xb5\x35\x56\xae\x37\x64\x99\x6c\xd0\x83\xf6\x25\xcb\xb9\x7f\x88\x5e\x7a\x94\x7f\x38\xa0\xb1\x26\x71\x5f\x10\x4f\x07\xa1\xa3\x88\xf2\xde\x82\x12\xe3\xce\xa0\x1c\x34\x6f\x11\xf7\xfd\x28\xb0\x0e\x55\x5c\x17\xb9\x5f\x54\xb3\xdc\x64\xe1\x0e\x1e\x05\x50\x46\xe2\xd0\xb7\x56\xb8\xb9\x86\xb1\x11\x4f\x59\xe9\x11\x1b\x74\xf5\xde\x66\x9f\xdb\xd9\x66\xe4\xfe\x6e\xaa\x04\x10\x5d\xe1\xc9\x12\x44\xe1\x2b\xa7\xea\x6d\x36\x9a\x07\x7a\x26\xd1\x1a\x75\x36\x5b\x90\x6d\x55\x6b\xb3\x91\x38\xdc\xa6\xd2\xe6\x13\xfc\x44\x77\xe5\x11\xa8\xf9\x18\xfd\x07\xf0\x77\xac\xe1\x6d\xf8\x7b\x1a\x42\xfc\x62\x94\x0a\x49\xb0\xd9\x68\x0b\x57\x94\x83\x54\x6d\x44\x1b\x1f\x3f\x00\x89\x71\x3a\xe3\x9f\x0b\x31\xcd\x2c\x4f\x4b\xe0\x69\x33\x21\x8d\xfc\x4a\x8f\x73\xa6\xd0\x57\x36\x67\x02\xa0\x53\x7c\x08\x15\xa0\x18\x9e\x2c\x7c\x84\x92\x15\x81\xfe\xdf\x30\xad\x12\x57\x2d\xf0\xcb\xea\xff\xc2\xe9\x55\x94\xd6\xea\x6a\xca\x19\xad\x9b\xaf\x85\xfa\xe8\x6a\xc5\xdb\x5b\xae\xc2\x5b\x33\xbf\xbb\xcd\x41\x13\xc5\xdb\x4d\x97\xc2\xf4\xff\x2b\xd7\x77\xbd\x79\x79\x40\xf0\x07\xeb\x05\x62\xd0\xbe\xa7\xf9\x25\xb0\x00\xb2\x6b\x25\x10\xff\x1b\x2e\x43\xc4\x35\xb9\x1a\x9b\xc4\x3b\x3d\x19\x63\xd0\xbe\xaf\xf9\x13\x20\x8d\x0d\x10\xed\xdf\x34\x5b\x31\xe6\x76\x13\xed\xdf\x35\x5a\x5c\xbb\x30\x98\x97\x07\x3d\xf8\x2c\x56\xfb\x0f\x5a\x54\x3c\x50\x72\xb8\x5a\x9a\xbd\x0e\x87\x2b\x8f\x68\x3e\xd5\xa5\x02\x50\xf7\x1b\x1d\x21\x09\x1e\xf1\x36\xc1\x21\xc5\xfc\x3e\x8c\x62\x72\xa2\x07\xd2\x3f\xd3\x1d\xc0\xa8\x03\x10\x8e\xb3\xa8\xdf\x4f\x34\x27\x74\x48\x3f\xd1\x91\x43\x34\x27\x75\x9f\x6a\x30\x9a\x2b\x45\x3d\x11\xa8\x47\x06\x9d\x2d\x45\x6f\x02\x84\x53\x3c\x9a\x2b\x45\xd7\x12\xcd\xe7\x3c\xd6\x2c\x45\x5b\x5b\x89\x66\xb7\x1e\xe9\x26\x25\x36\x03\xee\xa3\x7a\x0a\x6e\xce\x11\xa3\x04\xe6\x5e\xc8\x77\x32\x32\x94\xc2\xaa\xea\x70\x5d\x4d\x34\x63\xe2\x10\x2c\xaa\xb4\xe6\xe1\x54\x8f\x08\xd3\xde\x43\x52\x1d\x91\x1b\xc3\x05\xff\x44\x09\x02\x22\xfe\x34\x86\xb8\xf1\x17\xe3\xdb\xfe\x13\x2e\xe0\x1f\xec\xa5\x8d\xd5\xd1\x3c\x13\xf1\x66\xd2\xe5\x70\x73\x61\x2e\xfc\xc1\xed\x73\x26\xcd\xc7\xbb\x52\x1d\xdb\xd8\xe4\xc2\x6a\x88\xbc\x89\x91\xd5\x10\xf9\x14\x0a\xbd\xb0\x09\xbf\xf7\x47\x9c\x00\xfc\xf9\x04\x23\xb7\xe9\xf0\x79\x27\x44\x42\x10\xd9\x8d\x91\x6d\x10\xf9\x27\x46\xbe\x0b\x11\x73\x1c\x94\xfa\x14\x44\x26\xfb\x80\x21\x30\xf2\xe4\xc2\x67\xe1\xee\x31\x00\x5f\xd8\x8b\x1b\x19\x88\x5f\x01\xee\xa7\x26\xec\xc7\x9a\xf3\x26\x4c\x61\xc2\xc4\x85\xd5\x78\xed\x79\x13\x76\xde\x84\xfd\x97\x9a\x30\x5a\x4f\x30\x61\x9f\x53\xb0\xa8\xd2\x60\xc2\x82\x22\x0c\x4d\x58\x4b\xe4\xc6\x90\x08\x34\xce\xd0\x1b\x6a\xcc\xae\x81\x2c\xf8\x19\xa5\xe6\xac\x9e\x1a\xb3\x31\x9f\xec\x9c\x24\x9a\xb4\x7d\x60\x41\x26\xa0\x49\x4b\x1e\x0b\xb6\x0d\xb1\x26\xa2\x4d\x9b\x84\x36\xed\x23\x00\x4d\x44\x9b\x36\x09\x6d\xda\x58\x03\x44\xd0\xa6\x6d\xc1\x08\xda\xb4\xd9\xf1\x10\x41\x9b\xf6\x1c\x46\xd0\xa6\x7d\x3d\x01\x22\x68\xd3\xc6\x27\x42\x04\x6d\xda\x02\x8c\xa0\x4d\x73\x61\x04\x6d\x5a\x2f\x44\x26\xa2\x4d\xbb\xb0\x17\xf8\xea\x42\xbb\x89\x36\x6d\x05\xf8\x63\x93\xd0\xa6\x75\x24\xfd\x9b\x56\xf3\xbf\xfc\x4f\x73\x01\x49\x1d\x73\x81\x66\xbc\x46\x67\xb8\xd8\x30\xdd\x30\x21\x8e\xc2\x34\x10\x4b\x44\x48\xea\x85\x20\xed\x0c\x92\x98\x78\x1d\xdc\x82\x06\xea\x01\x2f\x31\xb1\x7c\x42\x41\xe2\xb5\x71\x9a\x09\xa0\xd8\x99\x44\x67\x48\x87\xea\xc6\x4d\x82\x08\x40\x21\x0d\xa4\x9f\x42\x12\x69\x64\xec\x44\x72\xc5\x14\xd0\x6e\x8d\xa6\x7c\x02\xa2\xc7\x5f\x46\xca\x27\xcc\x02\xf4\x84\x3c\x86\x1e\x57\x3e\x61\xe1\x14\xed\x64\x25\x51\x60\x67\x4c\x34\x61\x79\xf1\xfa\x09\x94\x0b\x91\x87\xb8\x71\x52\x59\xf3\xa0\xe8\x31\x17\x6a\x22\x69\x63\x23\x69\xc0\xc6\x24\xd9\x4d\x7c\xb6\x86\xdd\x5c\x31\xa5\x7c\x82\x31\x11\x91\x13\xe2\x64\xe9\x89\x79\xb2\x9b\xa4\x44\x50\xc7\x71\x62\xad\x92\x2f\x27\x78\x49\xc9\xd6\x2c\x9c\x12\x29\x03\xb9\x2e\x9c\xfc\xe0\x22\xa8\x6f\x6a\xa4\x20\xac\xdb\x05\x97\x68\x72\x27\x54\x6b\x6a\x2f\xac\x4b\xbc\x01\xe4\x3b\x3e\x8e\xe4\x4e\x40\x99\x4d\xc0\x88\x16\x2a\x9a\x46\x23\x80\x39\x31\x11\xb0\x40\x49\xf2\xe0\x1e\xb4\x27\x8f\xa7\x4f\x4e\xd4\x60\xe9\xff\xf3\xa4\x84\xf0\x88\x94\x98\x70\x26\x32\xe1\x4c\x12\x85\x73\xa1\x24\x9c\xf3\xbf\x2f\xff\xc3\xf3\xe8\xb4\xa4\x0a\xfe\x6a\x34\xa7\x93\xc7\xc1\x5f\xba\xab\x13\x5a\xdf\x2f\xf9\x08\x90\x10\xe9\x19\x20\x35\xf1\x71\x5a\x7c\x96\xa8\x7b\x4c\xa3\x99\x36\xed\x86\x25\x39\x8d\x0b\x6e\xb8\x21\x67\xd6\x75\xd3\xa6\x69\x35\x40\xe4\x47\x94\xec\x93\xb1\xc8\x16\x15\xcc\x12\x9d\xa4\x28\x9a\xd1\x04\x47\xc0\x20\x19\xbc\x34\x71\x0a\x88\x45\x65\x37\x21\xe9\x88\xa3\x06\x23\x4a\xe3\x5a\x77\x16\xba\x81\x01\x48\x43\xbf\xf8\x3d\xca\xb1\x7f\x94\x82\x1a\x01\x1f\x11\xea\x32\x56\x9a\xd8\xc3\xd9\x38\x2d\xba\xf5\xba\x3b\x13\x34\xba\x8f\x6e\x15\x74\xf7\x68\x17\xeb\x4e\xdf\xfa\xbc\x2e\x90\xdd\xa8\x4b\xca\xce\xd1\x8d\xbb\xa3\xf1\x47\x1d\xba\x63\x9a\x3b\x74\xff\xb8\xcd\x30\x5f\x37\x61\xf1\x02\x9d\x71\xeb\x8a\xb2\x9c\xc6\xf2\x9c\xac\x25\xb3\xca\x67\x3d\xfa\x48\x85\xc1\xa5\xfb\x3d\xc9\x86\xf4\xe7\x75\xdf\xd4\x2c\xd6\x85\x21\xf7\xed\xda\x3b\x74\x5d\x9b\x0c\x75\x9f\x69\x13\xa0\x36\x1f\xfd\x67\xeb\x87\x63\xbe\xee\xf3\x78\x8d\xa0\xbb\xeb\xb6\x4f\xa0\x62\xba\xf8\xc5\xba\xd6\xc5\xb3\x74\xf1\xf3\x97\xe6\x54\xea\x26\xdd\xa1\x7b\x5f\x93\xad\xfb\xe8\xb6\x3b\x74\x13\x1a\x16\xe8\x12\xea\x74\xc9\x86\x6c\xdd\xdf\xc8\x1d\xba\xad\xb7\x41\xdd\x1b\x75\xff\x80\x68\x17\xd4\xeb\x89\x4d\xdf\x2d\x58\x31\x33\xa7\x23\x2b\x67\xe6\x82\x25\x59\x15\xe5\xb3\xb2\x66\x75\x64\xcd\xca\xf1\xe7\x56\xcc\x58\x5a\xf1\xe8\x33\x1d\xdb\x75\xaf\x60\xa6\x4d\x4f\x1b\x88\xe6\xfc\xdb\x08\x84\x7d\xd7\x14\x86\x9f\x06\xbf\x92\x91\xed\x5f\x80\x3f\xf1\x5d\x10\x53\xb2\xe1\x76\xfc\x84\xa7\x5d\xd7\x90\x6c\xe8\x35\x25\xeb\x77\xfd\xe7\xf8\x3d\xff\x3b\xb7\x3f\x18\x40\xe9\xb7\x6a\x63\xc8\xf2\xfb\xf4\xcb\xee\xd3\x63\x1c\xf7\xa8\x1a\x4b\xee\x31\x50\x00\xde\xe0\x06\x4d\x06\x0a\xb8\x27\xe9\x3e\x3d\xde\xdd\x4a\xb3\x58\x28\x06\xc6\xbb\x68\x16\x0b\x43\xc0\x9b\xb7\x14\x59\xf0\xee\xa0\x2c\x0b\xc6\xff\x2c\xa7\x82\x37\x7f\x55\x64\xc1\xbb\x23\xb2\x2c\x18\xef\x93\x31\x8a\xf1\x4f\xe5\x45\xe0\xcd\x71\x45\x11\x78\x87\x4b\x21\x62\x11\x62\x9d\xbf\x16\x55\x67\x7c\x01\xb7\x52\x46\xaa\x35\xaa\x82\x7f\x8d\x22\x3d\x46\x13\xbb\xdc\xcb\x08\xfb\xd6\x59\x43\x96\xe3\xa5\x82\x46\x6b\xeb\xb8\x78\x34\xc4\x82\x17\xdc\x20\x4a\x0b\x2c\xe2\xb5\x87\xc5\x57\x89\xe2\x01\x94\x83\x5c\x10\x88\x22\x8a\x00\xc0\x62\xed\xa1\xe8\x3e\x5e\x4f\xc4\x10\x6b\x08\x18\x72\x26\x6a\x29\xe6\x32\xb1\xe9\x00\x33\x49\x6c\x34\x00\xdf\x1a\xe1\x22\x09\xaf\xcf\x32\x30\x5e\x7e\x4e\xf0\x8d\xaf\x7b\x92\xc6\xb4\x12\x43\xf8\xa2\x8c\x7b\x0c\x63\x6e\xc2\xc8\xf4\xcb\x1e\xc1\x94\x3d\x54\x5f\xe4\xa9\x06\x63\x2b\x49\x67\x08\x7b\x78\xa3\xdb\x10\xa1\x0a\xc2\xf8\xcc\x31\x64\x82\xc1\x38\x2b\x8d\xe4\x4c\x1a\x5f\xb8\x24\xe3\xa2\xcc\x78\x92\x9b\x31\xe9\x6b\x9a\x49\xb3\x3e\x0a\x4f\x78\x20\xbd\xea\x0a\xa9\x90\x91\xa1\x73\x42\x6f\x71\xdd\x01\x96\xff\x1c\x11\x56\xd2\x5f\xb9\x3e\x00\xf8\xd3\x88\x84\x92\x22\x12\x5a\x26\x97\xd0\x62\x96\x4c\xc5\xf3\x08\x8f\x3f\xc2\xab\x08\x1a\x45\xa0\x8a\x19\x52\x95\xae\x42\xc0\xc8\x78\xcc\xa0\xec\xfd\x9d\x97\x88\xc4\x53\x35\x2c\x2e\xa7\x6e\x66\xe9\x74\xe3\x8e\xc5\x94\xe7\x6a\x19\x23\x7a\xbc\x7e\x8f\x81\xf1\xf2\x04\x53\x01\xbc\x3c\xc5\xda\x47\x2f\xb6\x40\x9d\xd4\x3e\x98\xf2\xbf\x59\x1e\xbc\xbc\xc9\x74\xef\xad\x08\x03\x92\x96\xde\x0f\xe1\x07\x2c\xf9\x07\xbc\xc9\x13\xb0\x48\x56\x92\xd4\xd0\xe3\x10\x26\xb5\xaf\x24\x8b\x5c\x06\xfe\x12\x2d\xf6\x88\x48\x78\xb1\xd4\x27\x2c\x11\x6e\x2d\x78\xd9\x45\xa3\x35\x78\x79\x05\x82\x8e\x04\x36\x3d\xf2\x0a\xe7\x03\xe0\x7f\x97\x94\xdf\x92\xca\xbb\x9e\x96\xe4\x4a\xe5\xa2\x14\x4b\x58\x72\x89\x44\xe2\x7a\x31\x93\x96\xe4\x48\x98\xb7\x70\x11\x42\x99\x4f\xf1\xe2\xc7\x10\x5a\x47\xa9\x7e\x57\x92\x11\x57\x4e\x2a\x16\x8f\xa8\x5c\x47\xf0\xac\xb8\x56\x52\x75\xc5\x23\xeb\x24\xce\x97\x8b\xa5\x5e\x41\x46\x56\xe6\x23\x11\x75\x5d\x2e\x96\x1e\x11\x50\xb5\x1a\x24\x75\x7b\xb4\xe3\x79\x84\xdb\xa8\xea\xfb\xe8\x3e\x60\x85\x54\x99\x97\x33\x63\x88\x37\xb8\x01\x62\xc4\x3c\xe2\x5d\x99\x2c\x4b\x19\xaf\x0a\xbd\x07\xcb\x86\xf1\xf5\xb2\x74\x8c\xdf\x24\x2f\x12\x6f\x02\x8a\x22\xf1\xae\x5d\x96\x05\xe3\xf7\xca\xb3\xe0\xcd\x36\x19\x0d\x8c\x3f\x20\xcb\x80\xf1\x87\xe5\x19\xf0\xe6\xbb\x0a\x1a\x78\xf7\xa4\xac\x08\x8c\xff\x88\x88\x03\x01\x00\xf0\xe6\xa7\x12\x00\x0a\xc5\x9b\x2c\x8d\xbc\x0c\xbc\x33\x69\x22\x65\x88\x52\xc4\x0d\xd3\x17\xd2\xb2\xaf\xa7\x96\x7d\x21\x17\xda\x58\xbc\xbf\x47\xcf\x64\x56\x2f\x22\xd4\xdc\xa7\xc7\xb8\x97\xd1\x22\x14\xe0\x8d\xc8\x84\xb0\x2c\x78\xf7\x2d\x59\x16\x8c\x7f\x5b\x46\xe3\xdb\xbc\x86\x12\x0d\xbc\xf9\x5f\xb2\x0c\x18\x3f\x20\xa7\x71\x20\x52\x1f\x4e\x03\xef\xf2\x34\x91\x2c\x79\xbc\x7e\x52\x16\xb1\x82\x3b\xb8\x6c\xc6\x90\x65\x54\x34\x22\x1c\xb7\x5e\x9b\xc7\x74\x76\x11\x6f\x66\x88\x8a\x0d\x8c\x43\x0d\x5e\x3b\x19\xb8\x93\xb7\x2a\x58\x90\x7b\x79\x7b\x01\x54\x6c\x29\x44\x16\xdb\x08\xc0\x78\x79\x9a\x83\xf1\xba\x97\xc5\xad\x62\x13\xc8\x34\xfd\x12\xae\xc3\xa0\xe9\x79\x5c\xf0\x68\xc2\x45\x3d\x05\xb0\xa8\xa2\xa0\xf8\xa2\x76\x02\x74\x7d\x84\xcd\x24\x51\x03\x01\x2c\x2a\x1f\x82\x45\xbd\x83\x8c\xa2\xca\x01\xc6\x03\x11\x96\x93\xbe\xcb\xf9\x04\x0c\xbc\x30\x03\xba\x2c\xc2\xa5\x62\x80\x65\xa2\xba\x7e\x1e\xe7\x12\x52\xf1\xb2\x95\x41\xb7\x4a\xe2\xb1\xdc\xcb\x9b\x12\xa0\x78\xf9\x13\xa3\x45\xaf\x9f\xb0\x78\xdd\x04\x28\xfd\x12\x4a\xa1\x5a\x6c\x45\xc0\xc6\xcb\x7c\x3e\x72\xcc\x97\x78\xb8\x5e\xe4\xe1\x4a\x89\x87\x65\xa2\x46\x82\x4d\xc3\x8b\x8f\x41\x7d\x11\x91\x58\xf1\x7a\x37\xc3\xc0\xcb\xd7\x59\xdd\xef\xe5\x6a\x09\x50\x51\x23\x21\xdf\xb7\x23\x12\xa1\x7a\x78\x80\x61\x1c\x88\x30\xaf\xc7\xab\xcc\x2b\x41\x3b\x3b\x01\x68\xd1\x11\x69\xba\x38\x8e\x64\x5c\xf6\x08\x26\x7c\xc8\x68\xe1\xe5\x32\x8d\x24\xd0\xf9\x34\x5a\x13\xa9\x97\x34\x34\xa3\xd4\x7f\xcf\xca\xfe\x3d\x2f\x1b\x52\xf1\x82\xeb\xff\x09\xd2\xc8\x37\xfd\x11\xbc\xc7\xbd\xf7\xf9\x30\x15\xe4\xc3\x14\x82\x90\xc4\xff\x8f\x61\xea\x5e\xae\x1f\x38\x70\x44\xea\x60\x11\x35\x41\x3e\xf2\xd4\x73\x1d\x44\x54\x79\x36\x5c\x07\x9b\xae\x51\x8e\x3d\x4f\xf3\x4a\x80\xbe\x8b\xbc\xe3\xd8\x03\x8c\x4b\x4c\x8f\x66\xec\xc1\xfd\x3b\xd1\x77\x8d\x23\x41\x1c\x7b\x30\x4a\xe7\xf0\xa4\xd6\xcf\x55\x60\xc4\x63\x0f\xb6\xf7\x4c\xca\x61\xad\xc8\xd1\x88\xf3\x46\xfa\x49\xad\xc8\x19\x3e\x2e\x1c\xcb\x14\x1b\x2f\xf1\x4c\x83\x51\x34\x13\x95\xca\x1c\x41\xb4\x8c\xe5\xcf\xe2\x41\x3b\xc8\xf9\xdf\x57\xf1\xc3\xbd\x46\x70\xcf\x0c\xf4\x1f\xd0\x73\x5a\x43\x98\xf3\x82\x5e\xcb\xbb\x84\xb9\xd7\x74\xef\x76\xee\x78\x89\x3f\xc4\x2f\x20\xcc\xfc\x89\xf6\x17\xd5\x7f\x3b\x61\xaa\x9f\xc3\x15\xe2\xfc\xef\xff\xee\x5f\x76\x83\x0b\x37\x04\x20\x97\x42\x38\x1b\x86\xd1\x55\x53\xef\x17\x9c\x6d\xce\xec\x7a\x25\x9e\x8b\x5f\x35\xc4\x48\x74\x83\xb4\x2b\x8e\x2e\xa9\x22\x0e\x85\xa0\x46\xe0\x6e\x39\xf8\x54\x89\x41\x1e\x23\x4c\x37\x22\x38\x3b\x78\x6e\x86\x63\x73\x7a\x5a\x70\xf0\x4a\x8b\x40\xec\xfe\x46\xdc\x25\x7d\xb2\x02\x82\xec\xa5\x2b\x20\x7e\xa7\x40\xa9\x47\x68\xbd\x40\xd8\xbe\xa7\x11\x5a\xb8\x73\x9b\x3e\x92\x0b\xbf\x64\x87\x6c\x49\x8a\x5c\xb8\x7b\x7e\xaf\x9e\xe5\x62\x5f\xc6\xe0\x08\x70\x58\x82\x64\xe3\xc9\xf8\x92\x34\x20\x97\xe6\x73\x48\xbb\x41\x29\x55\x87\x5d\xb0\xf3\xb8\x96\xe2\xa8\xb7\x96\xc9\x5e\x8b\xdf\xf0\xcb\xea\xae\x31\xc6\x94\xea\x19\xce\xf3\x58\xa9\x1c\xb5\xf8\x71\x45\x22\x75\x18\x1c\x9c\x3a\x1d\xbb\x9c\xd5\x52\xa7\x89\x7d\xe0\xf5\xc5\x3c\x9b\x9e\xe2\xec\xc3\x92\x95\x3c\x73\x6d\x99\x43\x24\x6d\xd9\xd0\x88\xeb\xbe\x59\xa0\x35\x6b\x9d\x8d\x2e\x0f\xd3\x1b\xb4\x00\xfb\xc4\x72\x88\xcd\xbb\x16\xe7\x44\x74\x5d\x31\x22\xe7\x7c\x0d\x4b\xd7\x4a\x90\x4a\x0d\xb3\x3f\x11\xc8\x2a\x0d\xcb\x42\x25\x3f\x88\xd6\xf9\x35\x8c\xcd\xa8\xd6\x89\x13\x5b\x67\x16\x5a\x2e\x65\x2d\x78\xeb\x48\xd4\x87\x68\x1d\x89\x67\xcd\xe4\x41\x25\x26\xd5\x54\xd3\x44\xc4\xaf\xa9\xa4\x72\xfc\x11\x55\x60\x92\xaf\x8f\x59\x0e\xb6\x4e\xde\x15\x83\xb7\x4e\xf6\xba\x7a\x1c\xd0\x65\xf2\x11\xdb\x02\xad\x36\x6b\x8b\xa0\xcf\xe3\xab\x8f\xee\xb8\xe4\x6e\xb4\xc6\x63\x86\xee\xb9\x78\xba\xcb\x2f\x0c\x72\x9d\x7f\x0c\x20\x93\x2f\xe0\xfc\x50\xc8\xcf\x00\x92\xa6\x80\xbc\x02\x90\xfc\x78\xb1\x7f\xd1\xde\x04\x50\xdf\x0b\xd1\x6d\xc1\xa8\x63\xbd\x7e\x1d\x17\x7d\xd4\xba\xd8\x16\x06\xb1\x5e\x31\x38\x14\xdb\x02\x3d\xde\xb8\xc1\x70\xb8\x9c\x1d\x44\x94\xe1\xce\xd4\x58\x35\x3d\xac\x11\x39\x44\x1c\x3c\x21\xeb\xb4\x0a\x07\xdb\x42\x18\xa2\x2d\xf0\x77\x31\x1f\xe3\x58\xbb\xa3\x23\xac\xd4\x21\xb1\x75\x50\x22\xac\x75\xa0\x9b\xb8\xd4\x2d\xf4\x2f\x28\xe3\x4c\xe2\xd0\xad\x83\x6f\x88\x3c\x37\x4e\x6e\xc7\x26\x01\xe4\x4d\x05\xe4\x2a\x80\x7c\x3a\x4e\xde\x82\x05\x70\xc9\x4b\x96\x43\x2a\xe1\xe2\x4b\x95\x43\xec\x70\xf9\x91\x02\xd2\x02\x97\xf6\x34\x79\x2b\x77\xe3\x49\x4f\x53\xe4\x38\xdf\x84\x8b\x5b\x81\xf3\x43\x80\xac\x51\xe0\xbc\x08\x97\xde\x09\x72\x9c\xdf\x02\xe4\xbb\x0a\x9c\xbf\xe2\x19\x3e\x0a\x08\xbe\x42\x96\x70\x91\x1c\x82\x99\xbf\xa5\x80\x24\xe3\xeb\x1d\x17\xcb\x21\x5f\x03\xc8\x8d\x0a\x08\x9e\x30\x77\xf5\xd4\x68\x3d\x64\x72\xc6\xf6\x7a\x7b\x3c\x9e\x3c\xaf\x68\xaf\x73\xac\x87\x46\xb1\xa7\x68\xfe\xb7\x8e\x61\x2b\x7f\xa8\x63\xcf\x8c\x40\xc7\x70\x3f\x61\xa6\x63\x1b\xb5\xcc\xc6\xcb\x68\x71\x1d\xc3\x15\x3d\x99\x05\xf0\x36\x37\xdb\x3d\x8e\x40\x44\xcd\xca\x81\xc8\xfe\xa9\x43\xeb\x58\x0d\xe0\x9c\x9a\x2a\x97\xe1\x7a\x80\xdc\x7d\xa9\x1c\x72\x17\x40\x2e\x36\xca\x21\x8f\x02\xe4\x69\x05\xe4\x57\xf8\x42\xcc\x65\x72\x08\xbe\x07\xf4\x87\x69\x72\xc8\x47\x00\xf9\xe3\xd7\xe4\x90\x71\x50\xc5\x39\xd3\xe5\x90\x4c\x80\x2c\xbe\x5c\x0e\x59\x00\x90\x37\xae\x90\x43\x6a\x01\xb2\x65\x86\x1c\xd2\x0c\x90\xc7\xaf\x94\x43\xee\x06\xc8\x9f\xae\x92\x43\x7e\x08\x90\x1d\xd9\x72\xc8\xef\x00\xf2\xc4\x2c\x39\xe4\x63\x80\x9c\xca\x55\x70\x08\x4d\xe8\xb8\x5a\x0e\x99\x0e\x90\x9e\x3c\x39\xa4\x18\x20\x27\xe6\xc8\x21\xcb\xe2\x70\x17\x6d\x39\x64\x1d\x40\xde\x99\x27\x87\xdc\x06\x90\x5f\xe5\xcb\x21\x0f\x01\xe4\x50\x41\xb4\xf6\xb2\x16\x44\x4d\x48\xbf\x84\x90\x5b\x14\xed\x78\xae\xb5\xf7\xb0\xd8\xbb\x35\xf7\xc6\xdc\x13\x8f\xfa\x12\x23\xd0\xde\xad\x7a\x51\x7b\xad\x7a\xe6\xc1\xc9\x68\x71\xed\xc5\x75\xed\x88\xf6\xd2\x0d\x65\x02\x72\x13\xb9\x03\x98\xfd\xf0\xda\xc1\x7d\x00\x51\x3e\x0c\x07\x69\x6d\xd7\xb0\xb5\x24\x19\xce\x39\x96\x8f\x30\x45\xac\xfb\xb7\xb4\xb1\xea\x4e\x47\xf3\xcc\xe1\xe5\x73\xc4\x20\xca\x87\xad\xe6\x28\x68\x71\xf9\xe0\x73\x19\xee\x6b\xb1\xfd\x6c\x9a\xbc\x01\xc1\xe7\xf5\x0b\x5c\x48\xbf\x04\x66\xb7\x2c\x18\x5e\x3e\x0c\x07\x69\xe1\x99\x55\x13\xfe\xad\xf2\x49\x4d\x17\xeb\x5e\x1a\xb3\xee\x74\x84\x1d\x81\x7c\xd2\xe3\x45\xf9\x94\x0d\x2a\x9f\x5f\x4b\xf2\x41\xa1\xb8\x5d\x01\x01\xfc\x51\x9f\xdd\x1f\x80\x39\x8c\xcd\x2e\x78\x83\x30\x75\x59\xb5\x70\x70\xeb\x07\x33\x0e\x87\xd3\x2d\x90\x17\x17\x4a\x9e\x0c\x97\xc6\xaf\x17\xca\x47\xd8\xdf\x41\xa5\x1f\x2f\x94\x43\xfe\x00\x10\xe3\x25\xf2\x31\xee\x7d\x7c\xd5\xd0\x24\xef\xcb\x9f\xa1\xdd\x30\x45\xf7\x65\xc6\x0f\xd6\x6b\x26\x8e\x78\xca\x7a\x9d\xe3\xb6\x58\x23\xb5\x05\x4a\xfd\x02\x15\x1e\x1d\x89\x46\xd0\x16\x0e\xa9\x2d\x88\x66\xb0\x79\x01\xee\xf6\xcf\xda\xc2\xef\xac\x77\xba\x5a\x9c\xc8\x82\xac\x33\x8f\x81\x6c\x9b\x4d\xc3\xeb\x2a\xc3\x41\x5a\x38\xf7\xfa\xf7\xca\xa7\x5d\x6c\x41\xcd\xb4\x98\x75\xa7\xb6\x6e\x24\xf2\x49\x10\xe5\x53\x48\x06\xd3\x55\x7c\xc9\x26\xe2\x0d\xb6\x36\x3a\x05\xa5\xbb\x3e\x01\xe4\x23\x2c\x1a\x7a\xbe\x93\x01\x38\xc7\xcb\xe4\x7a\x78\x2d\x40\xbe\xb5\x58\x31\x12\x01\x64\x7f\x85\x1c\x52\x05\x90\x85\x4b\xa3\xf5\x90\xd1\x42\x9e\x71\x9f\xdf\x6c\x25\xcf\xe7\x58\xce\x8f\x4b\x72\x7e\x2d\x66\xbd\xa8\xcd\x9c\x31\xbc\x9c\x1f\x97\xe4\x7c\x86\x44\x7b\x56\xa2\x9c\x41\xc4\x32\x39\xb7\x35\xbb\xa3\x66\x45\x76\x90\xc6\xce\xa5\xc3\xeb\x21\xc3\x41\x5a\x78\xc6\x9a\x41\x89\x73\x8e\xe5\xe3\x9b\x2a\xd6\xfd\xc2\x98\x75\xa7\x36\x73\x04\xf2\xd9\x9e\x38\xbc\xcd\xc4\x13\x13\x99\x7c\x5c\x8d\x0e\x9b\xc3\x19\xa8\xb7\x71\x8b\xc9\xf0\xd6\x83\x7c\x7a\xaf\x1f\x5a\x0f\xdb\x00\x67\x46\xb5\xa8\x51\xb6\xf2\x52\x33\xd6\x63\x6a\x4d\xb4\x8e\xb1\x72\x90\x1f\x9c\x91\x44\xf9\x00\xe7\x58\x86\x9b\x25\x19\xa6\xc5\xe4\x9a\xda\xba\x11\xc8\xb0\x4f\x92\xe1\x43\x44\xb4\xed\x12\x2d\x2e\xc3\xcb\x34\x72\x1d\x0b\x78\xed\x3e\xa5\x92\x75\x80\x7c\xce\xd4\x0c\xaf\x63\x0c\x07\x69\xe1\x39\x77\x89\x4a\x9c\x73\x2c\x9f\x87\x2f\x15\xeb\xfe\x59\xcc\xba\x53\x5b\x37\x02\xf9\xb4\x27\x0d\xaf\x63\x73\x35\x72\xbf\xce\xef\xf4\xb9\x37\x28\x74\xec\x3e\x90\xcf\xfc\xda\xa1\x67\x25\x4f\x03\xce\x6d\xb5\x72\x5b\xf7\x0a\x40\x0e\x29\x20\x87\x00\xd2\xb1\x4c\x6e\xeb\x06\x00\x72\x50\x01\xc1\xed\xc5\xa7\x2c\x8f\xd6\x4c\x46\x1d\x6b\x71\x09\x7e\x8c\xa0\xac\xc5\x39\x96\xfc\x36\xa3\x28\xd5\x94\x98\x35\xa5\xd6\xef\xca\xe1\x25\xbf\x4f\x92\xbc\x61\xd0\x51\x78\x91\x24\xf9\xd6\x00\xdd\x99\x4e\xa6\x97\x92\x07\xb2\x5c\xac\x7b\x0c\x9e\xcf\xb5\xe5\x97\xea\x6e\x1c\xb4\xee\xc2\x10\x75\x17\xeb\x65\x91\xea\xd5\x60\x5f\xef\x54\xe2\x34\xd1\xfd\x1a\x61\xd4\xe3\x52\xd1\x91\x06\xa1\x29\xe8\x59\x0f\x36\x41\x27\x42\xbe\xd2\xba\xbb\xb0\xa0\x8c\xd9\xf8\x22\x18\xa5\xae\x49\x23\x2a\x4b\xc2\x70\xf2\x22\x3c\x73\xc8\x1c\x19\xcf\xbc\xee\xee\x21\xea\xfe\x1f\xa8\x57\x1e\x9e\xb5\xc1\xea\x15\x63\xed\x94\xd7\x62\xbf\x6e\x58\x9c\x6b\x70\xc3\x76\x86\x93\xa8\xc6\x89\xae\x97\xba\x16\x6a\x9e\xa5\x92\x85\xf8\x68\xa9\x1a\xb5\x51\x90\x3c\x5c\xaf\x55\x40\xe6\x1e\x51\x69\x8b\x63\x54\xd4\x7d\x2a\xea\xe9\x2a\xea\x0e\x15\xf5\xb7\x55\xed\x7e\xf3\x08\x74\x3e\x52\x8e\xa8\xf3\x32\x5a\xbc\x16\xee\xaf\x50\xe7\x09\x19\x5e\xe7\x55\x75\x97\xcb\x87\xd7\x7d\xf3\x08\x74\xfe\x2b\xac\x57\x9e\x9b\x0c\xaf\xf3\x19\xc3\xf7\x8b\x6b\xda\x44\xdd\xd0\x8c\x53\xe3\xf0\xba\x3f\x28\xd5\x1d\xa6\xb0\x74\xd3\x62\xa5\x77\x71\xd1\x58\xf0\x18\x97\x0f\xee\x5d\xc0\xcc\x97\x6e\x50\x9c\x53\x17\x3d\xea\xf9\x24\x89\xe1\x9b\x1c\xff\x9e\x51\x0f\x7f\xd4\xd7\x1a\xc1\x88\xb6\x7f\x9c\x38\xa2\xad\x22\xaa\xa7\x27\x5c\x1a\x4f\x49\xd2\x68\xac\xaf\xc7\xe7\x0c\x51\xfe\x7c\x26\x48\xc3\x52\x37\x84\x34\x7c\xd9\x73\xe7\x5c\x73\x75\x4e\xa4\xe7\xe2\xef\x5a\xc8\xd5\x2e\xc9\xc7\x66\x63\x4f\x30\xf6\xd7\x29\xd6\xcc\xc7\x2a\x7a\x37\x97\x21\xa3\x85\x3c\xe3\x5b\x4f\xc3\xcd\x4f\xd5\xcf\xe3\xd4\x32\x8c\x7d\xf4\x04\xf5\xc7\x46\x20\xc3\x99\xc9\xf2\x27\x50\xb1\xfd\xd5\x9f\x49\x32\xf4\xd8\x85\x00\xee\x9d\x1c\x11\xa2\x58\xaf\xa3\x75\xc3\xf7\xa6\x24\xa9\x5e\x06\x35\x0e\xaf\xd7\x7c\x32\xbc\x6e\xe4\x5d\x35\xfc\x88\xff\x52\xc4\x93\x71\xb9\x1d\xf5\x76\xbf\x63\x74\x3c\xa7\x91\xe1\x9f\xf4\x8d\x84\x67\x61\x04\x3c\xff\x46\xe2\x19\xbf\x68\x6e\xb6\xb7\x45\xe9\xea\xca\xb1\x22\xcf\xb1\xfd\x5e\x75\xbd\xf0\xa9\xae\x26\x66\xbd\x26\x7f\xa9\x7a\xc5\xc0\x29\xaa\xb6\x66\xd4\x95\x17\xa1\x7c\x86\x7b\x76\xfc\xcc\x10\x75\xc7\x1f\xea\xe1\x36\x49\x0f\x67\xaa\x79\x16\xd7\x88\x24\xf9\x38\xdc\x6e\x7c\xb6\x1f\x25\x9f\x75\xc8\xc8\x0d\xc3\xcf\x9b\x18\x0e\xd2\xd2\xa9\x71\xb8\x7c\xc4\xdd\x4d\x87\xb2\x63\x85\x64\xf8\x76\x3f\x36\x82\xba\xf7\x8e\xa0\xee\x9f\x46\xec\x58\xc0\x86\xbb\xbd\x7b\xfd\x0a\xbb\x2e\x40\xdd\x53\x87\xa8\x3b\xfe\xb6\x8c\x15\xdf\xea\x57\xb7\xa9\x68\x3d\x1f\x1f\xcb\x4e\xa4\x1e\x0a\x67\x2f\xe0\xf4\xde\x20\xb7\x75\x87\xc6\xca\xa4\x41\x21\xff\x04\x88\x51\x27\x87\x60\xa7\x7f\xc5\xc8\xa5\x21\xb5\x45\xaa\xd4\x16\xd7\x68\xd8\xbb\x41\xb2\xba\x8f\xaa\x2d\x72\x54\x8d\x2a\xce\x26\x24\xea\x1a\x03\x89\x1e\x2f\xf0\x47\x6d\xcb\xcc\xe1\xdb\xeb\x43\xa9\xbd\x04\x55\x39\x62\x7b\x7d\x21\xb5\x97\xcd\xe3\x6c\xc5\xd3\x06\xd4\xf6\xc7\xb2\x62\x78\xfb\x33\x92\xba\xb7\xeb\x86\x1f\x0b\x84\x21\xea\x25\xf2\xfc\x35\xad\xc8\xb3\xe0\x0e\x80\x8e\x45\xbf\x10\x70\xa1\x41\xe4\x79\xf0\x79\xf7\x95\x80\xb3\x7d\x85\x6c\x64\x6c\x73\xd8\xec\xf4\x0c\x44\x6a\x25\x38\xe4\x66\x7a\xd2\x15\x83\xe0\x6f\x01\xe4\x32\xae\x8c\xf6\x37\x22\xf2\x39\xc0\xb1\x47\x27\x9f\x4e\x49\x3e\xea\x07\xfb\xcc\x8e\x55\x98\x33\xc8\xe0\x76\x8c\xe3\x14\x19\x87\xc2\xe1\x3a\xf6\x86\x51\x94\xf3\x60\xe5\x98\x57\xe4\x28\xca\x89\xc5\x8f\xd9\x34\x73\x28\x1c\x68\x1e\xbc\x62\x8a\x81\xe2\x4c\x26\xaa\xb7\x08\x18\xcf\x2b\x32\x87\xa5\x55\x61\x4a\x1f\x86\x56\xc6\x8a\x15\x2b\xd2\x25\x5a\x83\xe0\x98\x4c\x26\x32\x04\x0e\xfe\xe8\x58\x30\x82\xfe\xb5\x26\x45\x7a\x72\x4d\x06\xf3\x49\xe6\x48\xba\x5a\x4f\x0f\x12\x69\x8b\xd1\xbf\x72\x56\x9e\x9b\xfe\xb5\x4d\x37\x84\x87\x4f\x65\x58\xb4\x02\xeb\x3d\xb4\x9c\x8b\xa8\x7c\x86\xc6\x29\x5f\x31\x79\x78\x1c\x53\xd2\x10\x38\xf8\xa3\xe3\xce\x08\xfa\x7b\xb9\x24\xc3\x66\xa7\xdf\xaf\x7a\xfd\x87\x2c\x36\x88\x32\x1c\x7c\x4c\xb1\x1b\x64\xf2\xa1\x10\x1f\x40\xda\x57\xca\x47\x87\xcd\x00\xd9\xaa\x80\xdc\x0b\x90\x0f\x2f\x8b\x1e\x0b\x22\xed\x85\xef\xdf\xc5\x5e\x33\xff\x72\xed\x15\x43\x86\xbc\x9f\xee\x37\x8a\xf2\xc9\x53\xad\x86\xe1\x8f\x8e\x05\x59\xc3\xeb\xea\x7b\x29\xf2\x39\x48\x6c\x5d\xad\x93\xe4\x0c\x0d\x68\x6b\xf0\xe5\xe6\x28\x65\xfd\x30\x54\xf5\xe8\x10\x72\x86\x2c\x7e\x67\xc0\x29\x1c\x55\x59\xc8\xa3\x2b\xcf\x8d\x27\xf3\xd0\x10\x1a\x2e\x4a\x43\x18\x81\x34\xe6\xa5\x0e\xef\xc9\x34\x6a\x65\xab\xdf\x8d\xad\xb6\x26\xa7\xdb\xe7\x94\x3d\xb8\xff\x3e\x36\xfc\xaa\xa1\xb5\xee\xe7\x80\x93\xba\x2a\x5a\x1a\x2c\x17\x52\x9f\x78\x8e\xa4\x31\x84\x1d\x1b\x81\x34\x1c\xa9\xf2\xe7\x7a\xb1\xfd\x84\x8d\x92\x34\x7c\x01\x67\xd0\xe1\xcd\xf2\x3b\xdd\x5e\xd9\x8b\x5e\xfb\x70\x64\x5c\x35\xf4\x98\x7b\x10\x7b\xdc\x2a\xf9\xca\xf6\x47\x38\x0a\x2b\x7a\xe5\x19\x80\x3c\xae\x80\x8c\x89\x07\x2f\x6e\xb5\xbc\x57\x5e\x06\x90\x87\x75\xd1\x33\x56\xa3\x24\xd5\x42\x3d\x7b\x73\x5b\x56\x8b\x2f\x21\x55\xa9\x64\x8d\x7a\x0f\x1b\xb1\x57\xea\xa7\x89\x52\x3d\x1e\xb3\xa6\xd4\xb2\x8d\x40\xf2\x8f\x4b\x92\xdf\x46\x06\xeb\x95\x77\x4a\x92\x6f\x13\xda\x84\xd8\x1e\xda\x9a\x35\xe7\x66\x04\x79\x72\x04\x1a\x95\x97\x3d\xbc\xc5\xde\xa6\x95\xbd\x6b\x6d\x63\x67\x76\xc9\x0d\x77\x6e\xbc\xc8\xf3\xd0\x33\xa0\x48\xbd\x70\x33\xb6\xd1\x5b\xda\xa7\x47\xe2\x79\x0e\x51\x2f\xfc\x51\xbb\x71\x81\xf4\xb6\x0f\x19\xcc\x6e\x3c\x29\xf7\x4e\x85\x26\xf9\x84\x9e\xfe\x96\x40\xdd\x77\xd8\x87\xee\x29\x6e\xc0\xd9\xa9\xe8\x05\xb7\x60\x2e\x05\xe4\x6e\x80\xe4\xac\x95\xf7\x8b\x27\x01\xf2\x8c\x02\xe7\x45\xec\x3b\x0a\x9c\x3f\xa1\xe4\xeb\xa3\x2d\x12\xe3\x07\xeb\x75\x37\xa0\x5d\xae\xac\xd7\x97\x90\xb3\xc4\xe1\x10\xcf\x41\x9e\x19\x81\x9c\xb7\x48\x72\xc6\x4d\x49\x62\xbf\x77\xfa\x53\xb9\x9c\x9b\xeb\x15\xd3\x4c\xb1\x5e\x85\x8e\x2f\xd3\x2f\x06\x5f\x61\xd8\x3f\x82\x71\xe7\xd8\x08\xfa\xc5\x8b\x12\xcf\x08\xfd\x24\x5e\x81\xf3\x25\x78\x36\x92\xe1\xdb\x22\xc2\x73\xcc\x17\xb8\x58\x5f\x9e\x35\x3c\xcf\x07\x22\x96\x1f\x06\xf7\x7a\x21\xda\xff\x1a\x93\x20\xf2\x3c\xb8\x3e\x5f\x06\x38\x6b\x1c\x72\x3d\x9c\x03\x90\x76\x05\xa4\x18\x20\xbd\x0a\xc8\x4a\xcc\xe5\x94\x43\x36\x00\x64\x87\x02\x72\x2f\x40\x0e\x2b\x20\xdf\x07\x88\xa5\x41\x0e\xf9\x39\xd2\x52\x40\xde\xc1\x5c\x0d\xd1\xbd\x20\x22\xf9\x6b\x41\x28\xd3\x46\x2d\xf9\xb7\x47\xe2\xa5\x0c\x21\x79\xfc\x61\x2f\x68\x1a\x2f\xf6\x82\xa3\x1a\xd5\x1a\x2c\x6f\x9d\xbf\x69\x07\x7f\x82\x80\xbf\x93\x3c\x5b\x02\x2d\x47\x7d\xca\x0d\xfe\xf4\xfc\xc1\x54\x22\xc5\x49\x8b\xc9\xcf\x78\x8e\x93\x44\x71\x70\xff\x88\x28\xeb\xc7\x65\xd8\xde\x28\xca\xf0\x4a\x55\x19\xe7\x52\x86\x53\x39\x3f\xf1\x44\xb4\x36\x6a\x2d\xcf\xe2\x38\xe3\x28\xce\x3c\x15\x8e\x28\xc3\x13\x92\x0c\x23\x3b\xf8\x44\xd7\xeb\xe9\xc6\x73\xd3\x2b\x87\xab\x17\xb6\x17\xb6\x12\x6b\xaf\xbc\x71\x83\xb5\x17\xb6\x12\x6b\xaf\x60\xcc\x72\x50\x3e\xc8\x0f\x93\x0f\xdd\x7e\x4e\x85\x83\x6d\x8a\x2d\xc9\xda\xf4\xa7\x31\xcb\xa1\x16\x7b\x04\x56\x02\x1d\x7b\xb9\xb7\xcc\x0f\xbc\xa4\x92\x1c\x9d\x0c\x07\xb7\xc6\x23\xe9\x5f\xc7\x46\xc0\x73\xaa\xc4\x33\x3b\xb3\x31\x7a\x25\xbb\x00\xe4\xb3\xa3\x71\x68\x0f\xbf\x58\x8e\x13\x19\x4f\xa5\x9a\xbe\xa1\x1d\xcc\x6f\xc9\x20\xe7\xc6\x92\xe4\xe5\x0c\x6f\x49\xea\xd2\x44\x4b\xc2\x3e\x70\x8f\x25\x8d\xa9\x51\x2d\x28\x9e\x5a\x29\x8a\xa4\x0a\x6a\xda\xbe\x6e\x78\x9f\x8d\xe1\x20\xad\xab\xd5\xb4\xce\x71\xdd\x85\x11\xd4\xfd\x3d\xa9\xee\x39\x83\xd6\x7d\x66\x74\xdd\x95\x55\x27\x76\xa8\x7b\xef\x08\xea\xde\x2b\xd5\xfd\x1a\xa2\xb2\x36\xe7\xb8\xee\xcf\x8c\xa0\xee\x49\x13\x87\xaf\x7b\x45\x54\xdd\x7d\xf4\xf8\xde\xc8\x30\xef\x47\x33\xb3\x7e\xe8\xf1\xfd\x76\xc0\xc9\x24\xf2\x27\x8f\xdd\x98\xcb\x2d\x9f\xeb\x7d\x1b\x20\x6b\x14\x90\x1d\x00\xb1\x34\x2b\xde\x7d\x02\xc8\x51\x05\xe4\xcf\xa8\x75\x1e\x39\xe4\x34\x96\xe3\x95\x43\x2e\x00\x03\x66\xf1\xcb\x21\xd3\x00\x92\x13\x90\x43\xe6\x01\xe4\x68\x50\x0e\xa9\x4a\x92\xb5\x05\x85\x34\x01\x24\xb5\x55\x8e\x73\x33\x40\x7a\x15\x90\x2d\x00\x29\xdc\x20\x87\x7c\x0f\x20\xbe\x8d\x72\xc8\xcf\x01\xd2\x7e\xbb\x6a\xd6\xbf\x5e\xd4\x8d\x33\x46\x42\xa6\x2b\xdb\x42\xa5\x1b\xe9\x2a\x19\x8f\x44\x37\xc4\xf9\xe9\x19\x69\x7e\xfa\x38\x60\xad\x54\xe1\x51\x0b\x39\x02\xfd\x99\x2f\xe9\x0f\xbe\xaf\xa3\x7c\xaf\x4b\xd4\x9f\xd5\x92\xfe\x38\x9a\x5d\x01\xf5\xd7\x79\xf8\x3e\x17\xd9\x32\xb4\x15\x3d\x88\x52\xdd\x22\xf7\xd0\xfa\x01\xb2\x55\x01\xf9\x0c\x20\x3b\xb6\xa8\xa4\xba\x45\x94\x2a\x7e\xa1\x15\x35\x83\xe6\x52\x2d\x24\xe7\xc8\xd2\xe6\x0e\x2f\xb1\x57\x26\x8b\x12\xdb\x49\x06\x9b\xb9\x34\x4b\x12\x6b\x74\x08\x5e\xbb\x42\x62\x36\x9b\x8d\x02\x77\x7c\x7d\x78\x6b\xc3\x70\x90\xd6\x81\x34\xb6\x47\xc2\xb9\xaf\xbb\xa8\x51\xdb\x33\xc4\xba\xe3\xf3\xf7\xb8\x98\xf2\x11\x46\x20\x9f\x8d\x53\x44\xf9\x6c\x27\x83\x59\xa4\x8d\x11\xf9\xc4\xd4\x28\x1d\x78\x45\x5b\xbf\x37\xb4\x46\x5d\x00\x38\x3b\x1e\x8f\xd6\x16\x96\x0b\xa9\xdf\xa8\xca\x77\xae\xb5\xe5\x99\x11\x48\x23\xfd\x22\xf9\x5b\xb8\xb1\xbd\xd3\xed\x32\xfb\x1c\x43\x18\xe4\x52\xa8\xe9\xd1\xc7\x87\x79\xda\x05\x38\x99\xe3\xe4\x2b\x03\xf3\xe0\xae\x50\x01\x29\x81\xbb\xde\x27\xe4\x76\xec\x06\x74\x9c\xbf\x2f\xef\x83\x8d\x08\x51\xe4\xba\x69\x9c\x4c\x62\x14\xb2\x11\x71\xf4\x72\x9c\x10\x40\xf6\x2b\xca\x79\x00\x73\xfd\x40\x0e\x79\x02\x20\xc6\x27\xe5\x90\x1d\x00\xb1\x28\x20\x2f\x02\x64\xfb\x53\xd2\x33\x3b\xdf\x1c\xda\x16\x87\x15\x2b\x1e\x6f\x60\x39\xd3\xb9\xe4\x29\xe4\xf7\x48\xeb\x87\xf2\x72\xfe\x86\x25\x3f\x2d\x87\x1c\xc5\x92\x15\x90\x33\x58\xce\x8f\xe4\x90\xb1\xc9\xd0\xae\x3f\x96\x43\xc6\x23\x64\x87\x6a\xad\xfb\x71\x51\xc7\x4a\x06\xfd\xe2\x40\x92\xd8\x10\x6f\xce\x48\xf5\xd2\x6c\x8d\x8f\x6e\x4f\xe9\x1b\x4c\xb1\xa6\x9a\xb2\x98\x2d\x4f\xed\xfc\x08\xf4\xf0\x19\x49\x0f\xcd\x3a\xd5\x1b\x53\x5c\x0f\x9f\x89\xe8\xe1\x5a\xf0\x96\x5b\xa3\x55\xf1\x52\xc8\x56\xb8\x63\x70\x3d\xb4\xf1\x6c\xbd\x3f\x91\xcb\x30\x0b\x72\x6d\x56\x68\x54\x31\x40\x8c\x3f\x95\xe3\x58\x00\xd2\x39\x2e\xb2\xa7\xc1\x5a\x7a\x10\xbb\xe5\x67\x72\x9c\x26\xc0\x69\x1f\x17\xbd\x26\xcc\xf8\xc1\x7a\x39\x74\x6c\x1e\x28\xab\x17\x6f\x0b\x33\x19\xc1\x93\xeb\x71\x83\xaf\x09\xe3\x8f\x8e\x0e\xb3\x87\x97\xf3\xc9\x4b\x44\x39\xe3\xd3\x9c\xd8\xa3\xc3\x75\x71\xd2\x1b\x41\xf5\x20\xb0\xe6\xb5\x51\x72\xde\x00\x35\xdd\xf1\xb3\x21\xe4\xcc\xb3\x15\x3e\x23\x97\xcf\x5d\x90\x6b\xeb\x33\xaa\x79\xca\xcf\x44\xf9\xe0\x57\xda\x63\x46\x2d\x9f\x2d\xe3\x46\xe0\xab\x8f\x40\x3e\x33\x2f\x15\xe5\x73\x92\xa8\x46\x73\xce\xf3\xf6\x67\x39\xcf\x6a\x0e\xd5\xfc\x48\x6f\x24\x7e\x98\x10\xfd\x36\x26\xbe\x8d\xa0\x7c\x5b\x75\x9f\x26\xfa\x6d\x55\xdc\x25\x5f\xf9\x96\xe9\x93\xa3\xa2\xde\xa7\xa2\xbe\x51\x45\xfd\x15\x15\xf5\x76\x15\xf5\x1d\xa3\xa2\x7e\x44\x45\xbd\x4d\x45\xbd\x57\x45\xbd\x4d\x45\x7d\xe7\xa8\xa8\x1f\x56\x51\x17\x54\xd4\x5f\x54\x51\xf7\xa8\xa8\xf7\x8e\x8a\xfa\x7b\x2a\xea\x3e\x15\xf5\x9d\x2a\xea\x0e\x15\xf5\x7d\xa3\xa2\x7e\x50\x45\xdd\xad\xa2\xfe\x8c\x8a\xfa\x0a\x15\xf5\xfd\xa3\xa2\xfe\xb6\x8a\x7a\x93\x8a\xfa\x0e\x15\x75\x8b\x8a\xfa\xc1\x51\x51\xdf\xaf\xa2\xee\x50\x51\x7f\x5a\x45\xbd\x44\x45\xfd\xf0\xa8\xa8\xbf\xa1\xa2\xbe\x46\x45\xfd\x49\x15\xf5\x02\x15\xf5\xbe\x51\x51\xdf\xa7\xa2\xbe\x4a\x45\xfd\x71\x15\xf5\x1c\x15\xf5\xa3\xa3\xa2\xfe\x8a\x8a\x7a\x9d\x8a\xfa\x76\x15\xf5\xcb\x55\xd4\x4f\x8e\x8a\x7a\xaf\x8a\xba\x55\x45\xfd\x61\x15\xf5\x74\x15\x75\xf2\xdc\x68\xa8\xbf\xa8\xa2\x6e\x51\x51\x7f\x48\x45\x7d\xbc\x8a\xba\x61\x54\xd4\x9f\x51\x51\x2f\x53\x51\xdf\xaa\xa2\x7e\x66\x6c\x34\xf5\xd4\x51\x51\xdf\xa1\xa2\x6e\x56\x51\xdf\xa2\xa2\x7e\x4c\x45\x7d\xf2\xa8\xa8\x3f\xad\xa2\x5e\xa8\xa2\xbe\x59\x45\xfd\x03\x15\x75\xe3\xa8\xa8\x3f\xa9\xa2\x3e\x5f\x45\xbd\x53\x45\xfd\xb0\x8a\x7a\xe6\xa8\xa8\x3f\xae\xa2\x3e\x4f\x45\xbd\x5d\x45\xfd\x5d\x15\xf5\x9c\x51\x51\xdf\xae\xa2\x9e\xa7\xa2\xbe\x51\x45\xfd\x0d\x15\xf5\x79\xa3\xa2\xfe\xb0\x8a\x7a\x8e\x8a\x7a\x9b\x8a\xfa\xcb\x2a\xea\x85\xa3\xa2\xfe\x90\x8a\xfa\x4c\x15\x75\x41\x45\x7d\xa7\x8a\x7a\xd9\xa8\xa8\x6f\x53\x51\xcf\x54\x51\xf7\xa9\xa8\xff\x48\x45\xdd\x32\x2a\xea\x5b\x54\xd4\x8d\x2a\xea\x4d\x2a\xea\xdb\x54\xd4\xeb\x46\x45\x7d\xb3\x8a\x7a\xba\x8a\xba\x43\x45\xfd\x6e\x15\xf5\x35\xa3\xa2\xde\xa9\xa2\x3e\x59\x45\x7d\x8d\xda\xa3\x56\x51\x6f\x1a\x15\xf5\x76\x15\xf5\x34\x15\xf5\x55\x2a\xea\x2d\x2a\xea\xbe\x51\x51\xdf\xa8\xa2\x9e\xaa\xa2\x5e\xa7\xa2\xee\x56\x51\x6f\x1b\x15\xf5\x36\x15\xf5\x24\x15\x75\xab\x8a\xfa\x5a\x15\xf5\xf6\x51\x51\x17\x54\xd4\x0d\x2a\xea\x16\xb5\x47\xad\xa2\xbe\x79\x54\xd4\x7d\x2a\xea\x7a\x15\xf5\x0a\x15\xf5\x6a\x15\xf5\xad\xa3\xa2\xee\x56\x51\x27\x2a\xea\x65\x2a\xea\x8b\x55\xd4\x1f\x1a\x15\xf5\x26\x15\xf5\x33\xff\x1f\x77\x5f\x02\x1f\x45\x91\xfd\x3f\x39\x89\x9c\x81\x84\x10\x42\x08\x81\x84\x1b\x43\xe7\x0e\x08\x98\x90\x04\x12\x0c\x10\x48\x90\x2c\x3f\xd6\x66\x32\xd3\xc9\x0c\x99\xcc\x0c\xd3\x3d\x39\x90\xe5\x08\x10\x70\x17\x39\x14\x14\x5d\x60\xc3\x69\xe4\x90\x1b\x41\x41\x51\x82\x8b\x12\x85\x5d\x61\x61\x5d\x50\x74\xa3\x20\x20\xb0\x82\x80\xca\xf1\x7f\xd5\xd5\x57\x4d\x4d\x12\xe4\x33\xff\xfd\xff\x3f\xbf\x71\x57\xd3\xdf\x7e\x55\xdf\x3a\x5e\xbd\xf7\xaa\xab\xbb\xca\xdb\x95\x3d\x83\x62\x4f\xa5\xd8\x6b\x1e\x8b\xdd\x48\xb1\xdf\xa5\xd8\x53\x29\xf6\x14\x8a\xbd\xf6\xb1\xd8\xa7\x50\xec\xb7\x28\xf6\x21\x74\x3c\x4f\xb1\xef\x78\x2c\xf6\xc9\x14\xfb\x0d\x8a\x3d\x85\x8e\xe7\x29\xf6\xfd\x8f\xc5\x5e\x40\xb1\x5f\xa5\xd8\x13\x28\xf6\x08\x8a\xfd\xf0\x63\xb1\xe7\x53\xec\x97\x28\x76\x86\x62\x0f\xa1\xd8\x8f\x3d\x16\x7b\x2e\xc5\xde\x40\xb1\x0f\xa0\xd8\x5b\x53\xec\x27\x1f\x8b\x3d\x83\x62\x3f\x4b\xb1\x47\x52\xec\x57\xfd\x3d\xc3\x9e\x4a\xb1\x9f\xa2\xd8\xc3\xe9\x88\x9a\x62\x3f\xfb\x58\xec\x43\x28\xf6\x93\x14\x7b\x28\xc5\x7e\x96\x62\xbf\xf0\x58\xec\x29\x14\x7b\x3d\xc5\x1e\x4c\xb1\x9f\xf4\x10\x7b\x02\xc5\x7e\x8c\x62\x0f\xa4\xd8\xeb\x28\xf6\x4b\x8f\xc5\xce\x50\xec\x75\x14\x7b\x6b\x8a\xfd\x1d\x0f\xb1\x0f\xa0\xd8\x0f\x53\xec\x01\x14\xfb\x0e\x8a\xfd\xc6\x63\xb1\xf7\xa1\xd8\x0f\x52\xec\xbe\x14\xfb\x26\x8a\xfd\xee\x63\xb1\x47\x53\xec\xfb\x29\x76\x1d\xc5\xbe\x92\x62\x47\x27\xde\xfc\x76\xf6\x48\x8a\x7d\x0f\xc5\x8e\xf6\xa3\x22\xd9\x17\x7b\x88\x3d\x9c\x62\xdf\x41\xb1\xdf\xa5\xd8\xa7\x53\xec\x01\x8f\xc5\x1e\x4a\xb1\x6f\xa5\xd8\x6f\x51\xec\x26\x8a\x3d\xf0\xb1\xd8\x83\x29\xf6\x5a\x8a\xfd\x06\xc5\x5e\xe0\x21\xf6\xd6\x14\x7b\x0d\xc5\x7e\x89\x62\x1f\xe2\x21\xf6\x00\x8a\x7d\x15\xc5\xde\x40\xb1\x0f\xa0\xd8\x43\x1f\x8b\xdd\x97\x62\x5f\x49\xb1\x5f\xa0\xd8\x23\x54\x76\x79\xdf\x1e\x3f\xed\x7b\xdd\xe1\xd4\x06\x48\x2f\xa1\x35\xcd\xb7\x9b\x58\xb3\x93\x3e\x91\x58\x44\xac\x84\xbe\xad\x49\x85\x57\xf1\xce\x00\xc2\xbc\xad\x5d\xa3\xbf\xa7\x41\xd4\x75\xbd\x48\xb9\x35\xbc\xba\xe8\x1a\x7b\x0f\x4d\x5d\xd7\xa3\xbf\x32\xa6\xd7\xf5\x9a\xf8\xc2\xe8\x11\xd6\xf5\xa2\x23\x9b\xff\xc2\xa8\x48\x69\x43\x9b\x53\xb0\x3b\x05\xd6\xe5\x3d\xb4\x14\x68\xd5\xd4\x26\xda\x10\xfd\x72\x41\x66\x29\xd1\x86\x93\x01\xc9\x25\x5a\x4c\x00\x64\x0a\x81\x2c\x02\x64\x07\x81\x6c\x00\xe4\x06\xd1\xf2\xfb\x51\x9f\xee\x77\x6d\xe7\x54\xa5\x9d\xd1\xa1\x3f\x2e\x7b\x17\x4b\xed\x9c\xa3\x6b\xbe\x9d\x97\x36\xd1\xce\xca\x2e\x8e\xbd\xe4\x76\x1e\xe2\xb6\xee\xe2\x5a\xff\x23\xf4\x85\x31\x52\xee\x0b\x74\x60\x8b\x3f\xc9\x25\xef\xc9\xa3\xf4\x85\xc5\xc0\x5a\x6c\x06\xbd\x85\x63\x8b\x9c\x56\x65\xc9\xbf\x1e\x5a\x23\x70\x7f\xd3\x7d\x71\x11\x64\x96\x13\x7d\x71\x0f\x90\xc8\xfd\xda\x76\xee\x08\x4d\x36\x85\x40\xfa\x02\x72\x81\x6a\x67\xcc\x85\xca\x8c\x0e\xcd\x71\x79\x0f\x4d\x6a\x67\xf4\x45\x4e\x73\xef\x54\x2c\x7f\x84\x76\x3e\xa8\xb4\x73\x8a\xdb\x7a\x89\x6b\xfd\xf1\xcd\xb7\x73\x60\x77\xb9\x9d\x17\xe9\x1a\x5b\xeb\x5f\xe2\xd7\xfc\xde\x47\x17\x74\xb2\xb5\x91\xf7\x3e\xd2\xd8\x28\x39\xda\x51\xda\x87\x2e\x8b\xdc\x3e\xea\x8e\x0a\x6e\x64\xe4\x2f\x0a\x9b\x58\xc7\x97\xac\x5f\x5c\x1f\xb9\x3c\x4d\xec\x7d\xa4\x96\xd9\x8d\x5d\x75\x2d\x33\x5d\x42\xba\x3c\x8a\xc5\xde\x4f\x59\xec\x1c\xea\x19\xc8\x72\x2a\x46\xf2\x0f\x70\xb5\xd8\xab\x9b\x68\x79\x25\x8a\xfb\xef\xb5\x6a\x42\xbd\x5c\xe6\x26\x76\x5e\x9a\xe7\xd3\xac\x4c\xf2\x0d\xb9\x7d\xdc\xed\x36\x26\xd5\x7d\xcb\x23\x68\x1d\x3a\xa1\x84\xd4\xba\x3e\x54\x0f\xfe\x17\xdb\x27\x2e\x58\xd7\xbc\xd6\xa9\x65\x96\x5b\x4c\x53\x66\xa9\xee\x07\xfe\x3f\xeb\xf7\x73\xba\xe6\xfb\x7d\xb9\x77\xf3\xfd\x7e\xeb\x11\x76\xdc\xfa\xdc\xaf\xf1\xef\x5c\xd0\x6f\x18\x72\x60\x07\x9a\x7f\xef\x14\xcb\x20\xae\x30\x4a\xca\x53\xed\x83\x7e\xe8\x5b\x98\x8b\x6d\xe4\x6f\x61\x8e\x40\xe5\xe9\xef\xa5\xd1\xb7\x30\x2f\xe8\xe4\x6f\x61\x7a\xb9\xcd\x29\x5b\x72\xcc\x6d\x45\x99\x63\xf4\xcb\xab\x3a\xfc\xbd\x0c\xb2\xf7\x4d\x7d\x4f\x94\x2f\xe5\xd3\x4e\xd7\xb8\x77\x40\xdf\xd4\xa0\xf3\xbd\xf0\x37\x35\x17\x74\xae\x9e\x08\xfd\xc4\xb7\xa1\x1e\xc1\x83\xac\x52\x3c\xc8\x2a\x2a\x1f\xb9\x4f\x7f\x68\xa6\x4f\x0b\xa1\xcc\x91\xef\x34\xdf\xa7\x58\x06\x71\xd1\x67\x5a\x79\xba\x4f\x37\x77\x90\xfb\xf4\x94\xaf\xeb\x5e\x3a\xe8\x87\xfa\x74\xbb\x97\xdc\xa7\x5d\x1b\xed\x53\xd4\x93\xb8\x4f\xff\xe9\xef\x4e\x06\xf5\x29\x2a\x73\x73\x7d\x8a\x7a\x12\xf7\x29\xe3\xb6\xcc\xa8\x4f\x9f\xf0\x96\xfb\xf4\xa6\xae\xb1\x3e\xdd\xf3\x08\x7d\x9a\xd2\xa3\xf9\x3e\x45\xab\x15\xd4\xd9\x43\x9c\x55\xf9\x90\xb8\x14\xca\x7c\x4a\xce\x47\x44\x66\x04\xba\x9e\x2b\xf4\x02\x20\x81\x27\x1a\x8f\xd0\x94\x15\xa8\x77\xff\xef\xdb\x3a\xb9\xee\x4a\x99\xbd\x86\xd0\x75\x77\x3d\xfd\xa7\x91\x19\xc7\x05\x2f\xb9\x5e\x48\xe6\x09\x2a\x1f\xf4\x5b\x03\x75\x8f\x56\x64\xe8\x68\x10\xfd\xc4\x68\xb9\x89\xfe\xd2\x9e\x81\x85\x7e\x3e\xbf\x69\x6f\xcc\xd4\x56\xd4\xf3\x43\x2a\x4a\x09\x76\x9d\x69\x26\x19\x9f\xa0\x9e\xa5\x3c\x16\xfb\x10\x8a\xfd\x18\xc5\x1e\x48\xb1\x3f\xeb\x21\xf6\x14\x8a\xbd\x8e\x62\x6f\x4d\xb1\xe7\x78\x88\x3d\x81\x62\x3f\x4c\xb1\x07\x50\xec\x19\x1e\x62\x67\x28\xf6\x83\x14\xbb\x2f\xc5\x3e\xd8\x43\xec\x03\x28\xf6\xfd\x14\xbb\x8e\x62\x8f\xf3\x10\x7b\x1f\x8a\x7d\x0f\xc5\x7e\x8f\x8a\xcc\x7b\x79\x88\x3d\x9a\x62\xdf\x41\xb1\xdf\xa5\xd8\x23\x3c\xc4\x1e\x49\xb1\x6f\xa5\xd8\x6f\x51\xec\x81\x1e\x62\x0f\xa7\xd8\x6b\x29\xf6\x1b\x14\xbb\xb7\x87\xd8\x43\x29\xf6\x0d\x14\xfb\x55\x8a\xfd\x16\xfd\xbe\xdf\x63\xb1\x07\x53\xec\x35\x14\xfb\x25\x8a\xbd\xc1\x43\xec\x81\x14\xfb\x2a\x8a\xbd\x81\x62\xff\xc2\x43\xec\xad\x29\xf6\x95\x14\xfb\x05\x8a\xbd\xde\x43\xec\x01\x14\xfb\x72\x8a\xfd\x1c\xc5\x5e\xe7\x21\x76\x5f\x8a\x7d\x29\xc5\x7e\x96\x62\xdf\xe7\x21\x76\x1d\xc5\xbe\x88\x62\x3f\x45\xb1\x6f\xf0\x10\xfb\x3d\xea\x19\xc8\x42\x8a\x9d\xda\x71\x3d\xe9\x95\x47\x60\x7f\x94\x67\xe6\x4b\x29\xf6\x68\x8a\xdd\x42\xb1\xaf\xa3\xd6\xc4\x1f\x8f\x3d\x87\x62\xbf\x40\x3d\xb1\xef\x43\xdb\x3a\x0f\xb1\x67\x51\xec\xe7\x28\xf6\x68\x8a\xfd\x36\xb5\x5a\xf1\x78\xec\x81\x14\xfb\x06\x8a\x1d\x9d\x26\x44\xb2\x67\x3d\x02\xfb\xa3\x3c\x79\xbb\x41\xed\xf7\xbe\x94\x62\x3f\x4b\xb1\x07\x78\x88\xfd\x2a\xc5\xbe\x88\x62\x3f\x45\xb1\xdf\xf5\xf3\x0c\xfb\x25\x8a\x7d\x21\xc5\x7e\x92\x62\xff\xce\x43\xec\x0d\x14\xfb\x3c\x8a\xbd\x9e\x62\xff\xc4\x43\xec\x17\x28\xf6\xd9\x14\xfb\x31\x8a\xfd\xa0\x87\xd8\xcf\x51\xec\x33\x28\xf6\x3a\x8a\xbd\xd6\x43\xec\x67\x29\xf6\x0a\x8a\xfd\x30\xc5\x5e\xe3\x21\xf6\x53\x14\xbb\x40\xb1\x1f\xa4\xd8\xab\x3c\xc4\x7e\x92\x62\xb7\x53\xec\xfb\x29\x76\x93\x87\xd8\xeb\x29\x76\x0b\xc5\xbe\x87\x62\x1f\xef\x21\xf6\x63\x14\xbb\x89\x62\xdf\x41\xb1\x0f\xf7\x10\x7b\x1d\xc5\x6e\xa4\xd8\xb7\x52\xec\xfd\x3c\xc4\x7e\x98\x62\x9f\x42\xb1\xd7\x52\xec\x21\x1e\x62\x3f\x48\xb1\x4f\xa6\xd8\x37\x50\xec\xe8\x7c\x72\x4f\xb0\xef\xa7\xd8\x0b\x28\xf6\x1a\x8a\xfd\xb2\x87\xd8\xf7\x50\xec\xf9\x14\xfb\x2a\x8a\xfd\xa4\x87\xd8\x77\x50\xec\xb9\x14\xfb\x4a\x8a\xfd\x3d\x0f\xb1\x6f\xa5\xd8\x73\x28\xf6\xe5\x14\xfb\x56\x0f\xb1\xd7\x52\xec\x59\x14\xfb\x52\x8a\x7d\xa5\x87\xd8\x37\x50\xec\x19\x14\xfb\x22\x8a\x7d\x9e\x87\xd8\x6b\x28\xf6\x54\x8a\x7d\x21\xc5\x2e\x78\x88\x7d\x15\xc5\x3e\x84\x62\x9f\x47\xb1\x3f\xe7\x21\xf6\x95\x14\x7b\x0a\xc5\x3e\x9b\x62\xcf\xf2\x10\xfb\x72\x8a\x3d\x81\x62\x9f\x41\xb1\x27\x78\x88\x7d\x29\xc5\xce\x50\xec\x15\x14\x7b\x2f\x0f\xb1\x2f\xa2\xd8\x07\x50\xec\x02\xc5\xde\xd6\x43\xec\x0b\x29\xf6\x3e\x14\x3b\xb5\x9a\x9c\x74\x5b\x99\xe7\xa2\xdf\x16\x69\x35\xf0\xe1\x43\xc4\xc7\xb2\x06\xf1\x34\x22\xfc\xde\xa9\xfc\xd6\xd0\xbb\xa4\x8c\xdd\x29\xa0\x13\x53\x42\x09\x99\xcf\x40\x26\x21\x3a\x4d\x92\x41\xbf\x1f\xa4\x54\xfe\x3a\x19\x09\x68\x8f\x77\xab\xc3\x08\x6b\xe6\x79\xbb\xde\xc0\x4d\x21\xf2\x09\x69\xaf\xe5\x42\xbf\x58\x09\xf1\x56\xf2\x49\xa5\x64\xc6\x02\x32\x40\x5a\x2b\xc1\xe7\x20\x98\x59\xbd\x4e\xde\xb9\x1d\x90\x22\x07\x87\xd6\xa4\x66\x13\x5c\xcf\xb5\xc7\xbb\x97\xab\x25\x2c\x05\x44\x9e\x13\x61\xa4\x1a\x90\x3d\x04\xb2\xa2\x3d\xde\xd5\x56\x45\x36\xa0\xf2\x28\xef\x59\xb1\xbc\xe0\x30\x94\xda\xa5\x6f\xae\x65\xae\x7d\x20\x13\x4c\xa4\x3a\x4a\xd5\xe2\x6b\x40\xce\x12\x5c\x37\x00\x49\x25\x10\xff\x0e\xae\xa9\x7a\x02\xb2\x88\x90\x19\x02\xc8\x41\x82\x6b\xb4\x94\x4a\x7d\x77\x6b\x32\x20\x5b\x25\x8d\xc2\x08\xdf\x41\x7d\xfb\x08\x23\x8b\x01\x99\x42\xe4\x5c\x0b\xc8\x6c\x02\x39\x04\xc8\x64\x05\x61\x59\xce\xe1\xb0\xda\xa4\xb7\xa6\xe5\xba\x5f\xa0\xca\xfc\x33\x20\x09\x09\x58\x07\x21\x95\x83\x33\x94\xa5\xc6\x26\x91\x32\x6d\x82\xd4\xf3\xd1\x30\x12\x0d\xc8\x25\x02\x89\x05\xe4\x02\x81\xa4\x06\xc9\x5f\xc7\x44\x4a\x9a\x60\x61\x0d\xe2\x7e\x8c\x2d\x14\x99\x51\x41\xae\xe5\x29\x44\x48\xa0\x16\x79\x1e\x90\x3a\x22\xe7\x17\x50\x79\x88\x56\x5d\x29\xe6\x13\xa9\x49\xb5\x2b\x08\xaf\x0d\xaa\xc8\x67\x41\xf8\x64\x16\x35\xd5\x85\x20\xbc\x5b\xaf\x5a\x9e\x1f\x83\xe4\xd3\xeb\xe4\x16\xf3\x09\xd6\xe9\x96\x12\xec\xdd\x01\x99\xed\xa3\xed\xaf\xfe\xc1\xae\xb5\x78\x3a\x58\xa7\xd1\x79\xf4\x1b\x07\xc8\x7e\x22\x1f\x03\x20\x15\x44\x79\x1c\xc1\xae\xe5\xa9\x02\x24\xb5\x97\xd2\x3b\x62\x1b\x4e\xd7\xf5\x21\x64\x96\x05\xe3\x3d\xa2\xd5\x7c\x36\x06\xe3\x33\x8c\x54\xe4\x3d\xaa\x84\xc7\x28\xe4\x2c\x81\x20\xdb\x82\x8c\x5d\x20\xa1\x3f\x97\x40\x26\x52\xa3\x63\x4e\xab\xc5\x66\x28\x39\x46\xc8\xa0\x4d\xe8\xed\x44\x79\x7a\x74\x74\xe5\x8a\x07\x64\x11\xd1\x86\x39\x80\xd4\x13\xa9\x0a\x3a\xaa\xa7\x50\x61\x84\xa3\xf2\xa9\x44\x5c\x44\x1b\x2e\x00\xc4\x44\x20\xaf\x28\x2f\x79\x40\x09\xbd\x3a\xeb\xdc\xad\xde\x6e\x03\x19\x81\x48\x75\x10\x90\x1a\x65\x54\xb2\x45\xc8\xd4\xca\xdf\xd9\xc9\x35\xfd\x58\xca\x59\xad\xc5\x19\x84\x10\xf9\x34\x74\xc4\xbb\xa0\xab\xc8\x2f\x1d\xb5\x23\x0e\xfd\xba\x86\xe8\x5c\x74\x3e\x11\x90\x0d\x84\x4d\x18\x0e\x48\x02\xd1\x3e\xbf\x07\xe4\x16\x81\x94\xa2\x7c\x7a\x69\x73\xfe\x03\x20\xa1\x04\xfb\x22\x40\x0e\xab\x3d\x58\x84\xbb\x79\x21\x51\xaf\xd7\x43\xf0\xbb\xa7\xaa\x8e\xd5\x02\x92\x43\x70\x1d\x0e\x71\xed\x8b\xbf\x53\xc8\x03\x40\x06\x10\xf9\x04\x76\xd2\xe9\xce\x91\xa3\x09\x90\x3a\xa2\x84\x71\x9d\x5c\xf3\x19\xd5\x49\xdd\xc7\x15\x23\x26\x40\x52\x89\x54\xe5\x9d\xf0\xa8\x54\x91\xf9\x9d\xb4\xec\x6c\xa1\xd9\x6a\x4c\x8d\x8d\x23\x73\x5e\x01\x32\xb9\x44\xaa\xf5\x28\xe7\x9e\xea\x88\x33\x5a\x2c\x2c\xeb\x52\x9e\xed\x20\x93\x41\xa4\x7a\x97\x28\x33\x5b\x54\xee\x30\x0b\x9c\xf4\x3d\xac\xec\x89\xac\x06\x7b\xe5\x31\xc2\x13\x9d\xa4\x6a\x7a\x41\x44\x52\x35\xc8\x75\x40\xee\x7a\x6b\x3c\xb5\xd3\x6e\xe7\x1c\x05\x44\x7f\xfd\x8a\x52\x11\xfa\xd3\x3e\xd4\x35\xe7\x9e\x04\x82\x4e\xf9\x37\xeb\xe4\x2f\xf8\xe4\x7c\x18\x2a\x55\x2a\x20\x8c\x1a\x27\x80\xfd\x31\xb0\x7a\xf1\x8e\xda\xa7\x63\x91\x8c\x5a\xc2\x52\xae\x14\x2a\x2a\xed\x3c\x20\xe7\x6c\x04\x99\x5c\xa2\xdf\xff\x10\x8a\x77\xbd\xd3\x58\x75\x40\x36\x10\x32\xab\x43\x5d\x23\x99\x77\x43\xf1\x9e\xf0\x2a\x97\x19\x1c\xfc\x49\x82\xeb\x93\x50\xf9\x5d\x50\x19\x39\x2d\xd5\x4b\xf5\xb9\x5f\x87\xca\xfb\xc0\xc8\x32\x57\x42\xf1\x0e\x71\xea\x88\xf3\xe9\x8c\xcf\x09\x55\xb5\x2e\xb0\xb3\xfc\x55\x82\x9c\xaa\x1b\x20\x7b\x22\x49\xfb\xac\xd7\xd8\x70\x8c\x18\xc5\x7d\x38\xd5\x16\x1b\x00\xa9\x22\x95\x18\x09\xfd\x06\x03\x52\x4b\xb0\x67\x77\x56\xdf\xf4\x96\xfc\x45\x67\xf9\x6b\x14\xec\x4f\xd1\x99\x2a\xa3\xf3\xc3\x09\x19\xbe\xb3\x7a\xc2\x9d\xd4\xce\x80\xa4\x10\xed\xfc\xa7\xce\x6a\x04\x8b\x91\x4d\x80\xd4\xa9\xb6\x8e\xe7\xd0\x48\x71\x89\x01\x76\x75\x56\xcf\x47\x93\xb4\xb7\xb3\x8e\x88\xeb\xf0\x16\xb7\x2b\xc9\x78\x03\x64\x96\x12\x76\xfe\x6a\x67\x6c\xf9\xd5\xf2\xf8\x85\xe1\x93\x62\xa4\x3e\x2d\x37\xf0\x68\x37\xb6\x1a\xa2\x77\xba\x84\xe9\x5c\xb4\xee\xc9\x30\xf5\x94\x64\xc9\xe7\x02\x52\x4f\xe4\x9c\x8b\x72\x26\x90\xe7\x00\x91\xdf\x6c\xc4\xc8\xf4\x30\x7c\xee\x89\x8a\x2c\x09\x73\xed\x9d\x35\x80\xa4\x10\x9a\xf9\x6e\x98\x7a\x5a\x0a\x46\x8e\x87\xc9\x5f\xe7\xe1\xde\x81\x01\x6f\x74\xda\xd5\x36\x64\x0d\x7a\x0b\xf8\x4a\xe9\x8b\x5d\xb9\x5e\xff\x08\xc3\x27\xa1\xc8\xe3\xab\x08\x1d\xc7\xa1\x9c\x9a\x81\x65\x6e\x48\x75\x57\xfb\xc2\xa7\x8b\x2b\x12\x42\x21\x3d\x29\x24\x9e\x42\x86\x51\xc8\x84\x2e\xea\xdb\xe0\x92\xa5\xed\x82\xcf\x4f\x51\x91\x99\x80\x24\x90\x3e\x05\x90\x0a\xa2\x55\x6b\x01\xc9\x22\xf2\xf9\x10\x90\xc9\x44\xaa\x93\x5d\xf0\x1e\x80\x2a\xf2\x6f\xe9\xe3\x12\xb5\x3c\xb7\xa9\x12\xa2\x8d\x6c\x1b\x88\x9c\x03\xc3\xf1\x5e\xc1\x2a\xd2\x17\x10\xa3\xda\xaa\x0e\x4e\x6c\xfa\x00\xa2\xe5\x47\x82\xcc\x55\x22\x9f\x3c\x94\x0f\x51\x1e\x3d\x20\x16\x02\xb1\x87\xcb\x67\x2b\xcb\xf9\xcc\x0d\xc7\xbb\x3d\xab\x32\xcb\xc2\x71\xdc\xa2\xea\x6a\x4d\xb8\x6b\x2c\xba\x17\x10\xf9\xcd\x6a\xd4\xef\x28\x8a\x92\xbf\x6c\x95\x73\x3e\x01\x32\x59\xaa\xad\x2b\xe6\x04\xce\x5a\x26\xed\xf0\x20\xcb\x7c\x19\xae\x8d\xcc\xb1\x7d\x9e\xae\x0b\x20\xd8\xaf\x86\xe3\xa8\x32\x40\x92\x81\xd1\x8d\x3c\x5a\xa0\xd6\x1e\xde\x06\x81\x1a\x35\x1f\x34\x6f\x32\x39\xa4\xdd\xa2\x64\xae\x16\x5d\xd5\x55\x45\x69\x0c\x22\x44\xeb\x9b\x2c\xb6\x72\xce\x61\x22\xdb\xb9\xab\xfc\x2d\x15\xf6\x83\xe6\x62\xab\xde\x22\xed\xc5\x24\xcb\xe4\x77\x75\xed\x65\x23\x20\x27\x35\x3e\x05\x8f\x9d\x2c\x22\xd5\xb4\xae\xda\x99\x26\xfa\xcd\x02\xe4\x1e\xd1\xa7\x8b\xa9\x9c\xd7\x51\xc8\x2e\x40\x4e\x11\xa9\x3e\x20\x64\x58\x9e\x37\xe8\xad\x45\xd2\xee\x55\x32\xfb\x3f\x49\x19\xe4\xf5\x60\xa6\x99\x4a\x94\xf0\x2a\xc8\x1c\x23\x72\xbe\x4f\xb1\x07\x45\xa0\x7f\x07\x6a\x90\x01\x11\xae\x51\xd3\x30\x51\x46\x1b\x15\x3c\x13\x81\x2d\x9f\x1c\xab\xc3\x5c\xcf\xe6\x90\xf6\x1a\x92\xd9\x7f\x07\x32\x46\x42\x33\x8b\x01\xf1\x25\x10\x01\x90\x5c\xa2\x4f\x17\x47\xa8\xa7\xdb\x48\x63\x39\x02\xef\x19\xab\x99\x4d\x00\x72\x43\xed\x1d\x7d\xa1\xcd\x21\xe8\xa4\xef\xf1\x65\xf6\x7a\x90\xb1\x10\x75\xbf\x1c\xa1\x9e\x84\x2b\xd9\xb1\x6e\x3a\xe9\x07\xa9\xc4\x2f\xcb\xe8\xc8\x3c\x14\x64\xf2\x89\x7c\x06\x75\x73\x6d\xc3\x91\xdd\xe4\x2f\x64\x65\xf6\x3c\x40\x56\x91\x76\x0c\x90\x68\xa2\x16\x15\x52\x3e\x6a\x79\x5e\xea\x86\xe3\x5e\x15\xd9\xd2\x0d\x47\x9e\xea\x48\xd9\x4f\xb1\x7f\xde\x4d\xde\x6f\x47\x66\xff\x4a\xda\x75\x52\x8d\x01\xcc\x30\x2a\x43\x89\x3e\xbd\x4e\xe5\xe3\x1b\xa9\x9e\xd8\x88\x91\xf0\x48\xf5\x2c\x7e\x39\x86\x84\x68\x87\xd0\x43\x06\x64\xa6\x10\xf5\x4a\x05\xe4\x30\x81\x8c\x8d\xd4\x72\xb1\x26\xc1\x66\xe5\x53\x13\x48\x76\x4b\xa4\x6b\x79\x96\x03\x12\x40\xe4\x53\x03\x88\x40\xb4\xea\x51\x2a\xd5\xc9\x48\xb9\xe7\x50\x9f\x22\xd7\x45\xf7\xe9\xf7\x20\x93\x45\xb4\x73\xbb\xee\x58\x4e\xcd\xa7\x77\x77\xd7\x9c\x53\x00\x99\x47\xb0\x4f\x02\x64\x08\x51\x42\x53\x77\x6c\x7b\x55\x64\x2e\x20\xf2\x89\xf9\x18\x59\x0d\x88\x7c\xaa\x08\x6e\x55\xc1\xe6\xb4\xec\x27\x5a\x75\x33\xc5\xfe\x76\x77\xd7\x59\xdb\xc7\xdd\xf1\xf9\x3b\x6a\xce\x67\xa8\x54\x37\x29\xa4\x55\x0f\xd0\x3c\x22\x55\x58\x0f\xbc\x43\xb5\xda\xcb\x28\xfe\x39\x4b\x94\xa7\x5f\x0f\xd7\x7c\x06\x01\xb2\x95\xc8\x67\x2c\x20\xab\xd4\x28\x0e\x2c\x52\xa9\xad\x8c\x4b\x21\x34\x73\x6a\x0f\xac\x51\xaa\x8e\x55\x01\x32\x44\x1d\xcb\xe2\x33\x47\x79\x4f\x15\x39\xd5\x1a\x8a\x7d\x5b\x0f\xf5\xfb\x1d\x69\xbc\xf7\x50\x9f\x94\x4a\xa3\x80\x4a\x75\xa7\x07\x8e\x06\xd5\x54\xad\xa2\xa0\xcf\x54\x76\x1c\x42\x4a\x3b\xb6\xc9\xec\xdd\x41\x26\x9f\x48\x35\x30\xca\x35\xe7\xa1\x51\xf8\xdc\x01\x55\x66\x0c\x20\xc7\x08\xc4\x10\xe5\xda\x83\xf3\xa3\xd4\x73\x4b\x81\x3d\xcf\xc2\x71\x76\xd7\x71\xb1\x26\x4a\x3d\x0f\x1a\x23\x3b\x01\xd9\x41\xd4\xfd\x63\xaa\x3c\xa7\xa3\xf0\xb9\x6f\xaa\xcc\xc5\x28\xf5\xdc\x52\x64\x13\x04\x73\x29\x17\x1f\xb7\x83\xe8\xe5\x1f\xa9\x7c\xc2\xa3\xb1\x35\xd6\xcc\x8e\xa3\xb5\x32\x48\x5b\xe0\x7f\xd2\x5e\xa6\x72\x3e\xa3\xa2\x5d\x3d\xc8\xa4\x68\x79\xa7\x59\x59\xc6\x88\x64\x88\x5a\x54\x01\xd2\x5a\xe1\x5a\x0a\x57\x31\x9c\x89\x2d\x72\xa0\xef\xb7\x62\x8c\x5c\xa1\xb3\x98\xd5\x3b\xf4\xd6\x62\x8e\x97\x2f\xcd\xd6\x22\x9b\x72\xab\xb0\xd0\xc1\x95\xc9\x57\x16\xb3\x55\x49\x44\xe4\x80\xdc\xb8\xf4\xa7\x94\x17\x3a\x44\x5e\x3c\x27\xc2\x6c\x2d\xd3\x5b\xcc\xc6\x5c\x3d\x92\x17\x38\x47\x16\xfe\x84\x19\x69\x05\xc7\x1a\x58\x74\xda\x29\x8a\x04\xac\xfa\x62\xce\xa8\xb7\xdb\x25\xdc\x6e\x97\xee\x88\xe7\xb3\x8b\x25\x82\x1c\x05\x74\x2e\x3d\x4c\x90\xf2\x10\x08\x61\x38\x6b\xd2\xf3\xac\xc1\x20\x80\x93\x64\x27\x9a\xad\xa3\x5d\xee\xba\x48\xcb\xe7\x96\xa6\x29\x27\x8f\xa6\x49\x5f\x73\x46\x4f\x9f\x3e\x5d\xd3\x2c\xc0\x94\x99\xc5\x8e\x18\x9f\x36\x3a\x93\x1d\x9e\x39\x32\x7b\x0c\x04\x56\xac\x91\x73\x70\xc5\x66\x1e\x6a\x80\xa5\xd8\x22\x2b\x12\x1c\x95\x3e\x9e\xcd\xc9\xce\xcb\x47\x22\x2c\x5b\x6c\x30\xb0\xa4\x98\x8c\xba\x26\xd7\xb1\x19\x66\xde\x6e\xd1\x57\x66\x43\xdd\x78\x54\x6b\x9b\x60\x2b\x32\x57\x48\x7f\xb1\x82\xc1\x1e\x93\x14\x97\xc0\xc4\xc9\x80\xd3\x88\x81\x78\xd0\x68\x4e\x18\xcf\x19\xcd\x0e\xce\x20\xa4\x59\x8d\xf9\x1c\x2f\xc4\x98\x79\x87\x3e\x26\x96\xc1\xeb\x1d\x31\xbc\xdc\x02\x85\x4e\xb3\xc5\x08\x9d\xc8\xdb\x2c\x4e\x81\x63\x9d\x0e\x8b\x3c\x1a\x63\x0c\xe0\x2d\x04\xc8\xda\x1e\x13\xab\xcc\xf2\x34\x20\xe2\xd5\x3b\x78\xce\x61\xb3\x09\x46\x8e\x37\xa0\x18\xaf\xd4\x6e\xe1\x26\xe4\x5a\x73\x0d\xb6\x52\xe8\x30\x63\x9c\x1b\x4c\xc7\x3a\xed\x56\x3b\x54\xcd\x00\x46\xca\x91\xc1\x95\x99\x0d\x48\x19\x46\xe7\x71\x7a\x88\x3d\x47\xf3\xc5\x23\x4a\x85\x98\xa4\x41\x83\x52\x18\x52\x12\xb5\x2f\x92\xcd\x81\x26\x8a\x49\x66\x98\x78\x97\xfb\x69\x16\x0b\x25\x32\xc8\x1d\x19\x5e\x89\x98\x90\x3b\x26\x17\xae\x2d\x20\xaa\x63\x47\x72\x02\xba\x9e\xe0\xb0\x40\x49\x46\x48\x77\xf1\x15\xfa\x2b\x7b\x64\x06\x9b\xcd\xa7\xdb\xac\x56\x68\x4f\xce\x88\x41\x94\xe8\x59\xa4\xb7\x70\x57\x45\xe0\x62\x84\xc3\x56\x3a\x01\x35\x63\x69\x25\x7a\xda\xe2\x34\xab\x77\xf3\x6d\x82\xde\x32\xbc\x52\xe0\xf8\x3c\xce\x2a\xb8\xc3\xc7\x73\x06\xce\x5c\xa6\xe5\x10\xef\xe5\xea\x0d\x25\x9c\xe0\x2e\x95\x74\x87\x4e\x07\x3a\x2d\x38\xf9\x6c\x71\x5c\xc8\x98\x54\x05\xb3\xcd\x9a\x5f\x69\xe7\xc8\x7b\x39\x66\x6b\x49\x8e\xbe\x92\x73\x8c\xd6\x57\x0c\x37\x0b\xe3\xf5\x02\xc7\xab\x77\x33\x2b\x40\x2f\x21\x80\xcf\xce\x4d\x33\x1a\x1d\x1c\x2f\xdf\x82\xab\x5c\x08\x02\x47\xc3\xb8\x84\xb1\xac\x82\x69\xd6\x4a\x1a\xcf\xe0\x2c\x30\xbe\x1f\x01\x1f\x8f\x2c\x84\x4a\x3e\x92\xb3\x72\x0e\xb3\x41\x23\x90\x69\x15\x1c\x95\xaa\x80\xe6\xce\x18\x67\x69\x21\xe7\x18\x5b\x84\x24\xcc\xda\x1a\xe4\xd9\x39\x83\xb9\xa8\xa9\x5c\x90\xda\x8c\x2d\xd2\xdc\xd7\xa4\x1e\x01\x63\xa9\x1c\x26\x23\xb8\x55\x55\x7c\xac\x53\x28\xb4\x39\xad\xc6\x5c\xb3\xd5\x64\xb3\x70\xf9\x60\xdc\x6d\x4e\x41\xd3\x38\x18\x97\x80\x09\x76\xb0\x25\x1c\x89\x49\x95\x27\xb0\x74\x13\x67\x28\x91\xa0\x89\x36\x47\x89\xda\x54\xa8\xb2\x18\x97\x3a\x5e\xf4\x04\x48\xc9\xf1\x4c\x80\x35\xe0\x2e\x36\xd9\x60\x94\xa2\xe8\x1c\x9b\x47\xce\x02\x7f\x01\x51\x29\x28\x10\x24\xc9\x45\xe3\x16\x55\x14\x55\x59\xcc\x1c\x29\x3d\x01\x38\x24\x85\x42\x4b\xa1\x68\x0a\x9a\x95\x9f\x9f\x3b\x9e\xe3\xed\x30\xfc\xa1\x94\x60\xb8\xcd\xe5\x80\xc6\x6b\xec\x01\x23\xd9\x83\x09\xe3\x73\x54\x01\xf5\x2f\x94\x89\x1e\x74\x47\x92\xaa\x28\x85\x11\x02\xa3\x45\x2d\x1e\x5c\xc0\x0c\x55\xfc\x93\xb7\xe9\xed\xb9\x50\x83\x3c\x67\x61\x29\x32\xf1\x63\xc0\x1c\xc2\x58\x73\x72\x62\xc1\x1d\xa2\xb9\xce\xb4\xd0\x37\xa0\x75\x32\xc4\x02\xbb\xe0\x99\x56\xa3\x28\x2e\x5e\x29\xf7\x74\x6c\xba\x05\x8c\x8e\x72\x9d\x23\xdb\x02\xf1\x0a\x0d\x63\x97\x5b\xd8\x5d\xd9\xac\x62\xac\x04\x56\xdb\x68\x63\x8b\x2d\xb6\x42\xbd\x85\x35\x82\x83\xe1\x49\xc8\x80\x21\xe4\xa3\xcc\x60\x26\xa6\xa3\xb1\x09\x16\xc1\x02\x0d\x56\x26\x79\x2e\x96\x87\x26\x71\x14\x97\xa1\x84\x3c\x67\x70\x3a\xcc\x42\xa5\x78\x0b\x7a\xd1\x56\x62\xe6\xf0\x4a\x74\xb4\xe6\x66\xd3\x38\xfc\x07\x19\xdb\x52\xd1\x4a\xb0\xd0\x85\x48\x03\xd8\x62\xbe\x48\x6f\xb6\x38\x1d\x50\xdf\x91\x79\x2c\x98\x00\xe4\x00\xc0\x5e\xd8\x1c\x46\x11\xc9\xac\x30\x70\x76\x64\x13\xdc\x61\xb9\x36\xb0\xfa\x9c\x54\xb7\x4a\x2b\x2b\x58\x78\xb1\xb2\xe8\x81\xba\x06\x42\x85\x96\x20\xc1\x02\x6e\xcc\x28\x3a\x5c\xd9\xc1\x3b\xf4\x66\x9e\x93\x0f\x72\x43\x1a\x39\x81\x47\x66\x46\x30\x65\x3a\x34\x52\xd0\x18\x4e\xc0\x15\x31\x35\x41\x7a\xde\xc4\xfc\xf4\xac\x98\x44\xf4\x9c\x0c\x1f\x0c\x8d\x9e\xcf\x43\x69\x8d\x1c\x6b\xc7\x05\x14\x1f\x6f\xb8\x00\x72\x03\x48\x23\xa3\x54\xef\x28\x41\x2d\x86\xaa\xc5\xa2\xe7\xf4\xfa\x42\x34\xe0\x4a\xf5\x15\x79\x18\x84\x4a\x02\x21\x12\x41\xd5\xb5\x73\xe6\xf8\x94\x24\xd6\xe1\xb4\xa2\x88\x8d\x15\x4f\x29\xd6\x8b\xd5\x2a\xd7\xe3\x0a\xc7\x24\x25\x33\x49\x29\x20\x5a\x6c\x75\x42\xfc\x2c\xb5\x98\xbc\x03\x0b\xc4\x93\x72\xd5\x04\x93\x03\xe5\xc3\x96\x70\x95\x58\x53\x62\x60\x08\x08\x68\xc0\x68\x04\x10\xa9\x2c\xc0\x62\xb7\x04\xbf\xf2\xa4\x04\x55\x04\x86\x8f\x22\xe2\x92\x56\xd6\x28\x97\x14\x0e\x0e\x4d\x05\xe8\x44\x6c\x7e\x4e\x1e\x7a\x2e\x59\x08\x46\x44\xa7\x3d\x87\xf9\x49\xc4\x1c\x03\xbe\x9c\x15\x7d\x1b\x58\xab\xec\x52\x88\xbb\x86\xeb\x79\x4e\x2d\x34\x75\x0b\xb0\x11\x66\x30\x82\x99\x52\x4b\xba\x5e\x0f\xaf\x1c\x23\x05\x3a\x98\x1d\x99\x63\x7c\x67\x84\xcd\xa1\x38\x14\xfa\x6e\x3a\x98\x56\xc1\x35\xb3\xcc\x0a\x0e\x95\x0f\x59\xc2\x4c\x6d\x09\xb2\xf9\x31\x36\xab\xdc\xaf\xd9\xd6\x74\xa7\xc3\x01\x03\x41\x94\x50\xf3\xe6\xac\xce\x52\x16\x42\x12\xa4\x17\x16\x73\xa1\x43\xef\xa8\x64\xd1\x46\x05\xbf\x31\xb4\x75\x89\x87\xa5\x78\x4d\x39\xfc\x4f\x99\x5c\x5a\x54\x66\xf9\x14\x3c\x0d\xa2\x02\xd2\x51\x69\xac\xa1\x4c\x40\xa1\x96\x39\x26\x31\x29\x29\x5e\x7b\x43\x5c\x85\xd4\x5c\x97\x4b\x6f\x80\xf0\xae\x42\xae\x18\x07\x06\x14\x55\x8a\x05\xad\xb2\xea\xad\xd4\x2d\x87\xde\x68\xae\xc0\x83\x86\xba\x57\x64\xb1\xe9\x09\x94\x02\x20\x15\x0e\x2c\x19\x2a\x31\x27\x09\x0b\xe5\x36\x18\x1c\x76\xd6\x68\x2e\x36\x0b\x3c\x74\x40\x59\x4c\x62\x02\x93\x42\xc8\x53\xf9\x16\x53\x48\x85\x42\x15\x4b\xc0\x16\xa3\xcd\x29\x8e\x63\xb9\x55\xa5\x3b\xe2\xf8\x2f\x63\xc5\xe7\x87\x6c\x46\x5c\x1a\xba\xb6\xba\x02\x28\x10\x44\x67\x64\xa1\xbf\xa7\x39\x6d\x30\x5a\xe4\x3b\x0e\xde\x64\x2e\x12\xe4\x2b\x01\x2c\x98\x65\x3a\xbe\x42\xf2\xf8\xb1\x2d\xfe\x33\x3d\x4f\x1a\x7b\xf8\x0a\xf4\x2f\x0f\xe9\xa7\x22\xc6\x1a\xc0\xc9\x58\x51\xa8\xcd\xb2\xc3\x35\xec\x88\x1b\x0f\x73\x3b\xcc\xd8\x59\x2b\x7a\x0b\x09\x45\xde\x65\x30\xb0\xd0\x1c\x5e\x94\x47\x42\x72\x21\x4a\x9d\x16\xe4\x40\xe5\x4b\x73\x5c\xa1\xf6\x8e\xfc\xb7\xdd\x56\x9e\xa8\x5e\xdb\x99\xc4\x98\xb8\xc4\xa4\x84\x41\xe8\x96\x85\xa8\x93\xa1\xd4\x2e\xff\x69\x34\x17\x15\xc9\x7f\x17\xc6\x29\x0c\x46\x95\x01\x3d\x17\x56\xc4\xa5\xe3\x77\x60\x0a\x86\xdc\x1b\x8e\x0b\x01\x04\x4f\x2e\x70\x88\x2d\x39\x01\x1d\xad\xc3\x8b\x42\xbc\x7b\x91\x14\xb0\xe5\xbc\x06\x48\x66\xc4\x5e\x95\x0e\x9c\x11\x73\x86\xb4\xe2\x05\x2f\xfb\x5d\x14\x43\x48\x53\x45\x14\x42\xe0\xb9\xa2\x6c\x6d\x91\x15\x6e\xfa\xbe\xe2\x64\x9a\xcc\xa4\xe9\xfb\x8d\xde\x41\x16\x13\x6d\x03\x22\x16\x82\xd8\x75\x4a\xc7\x5a\xf4\xbc\xc0\x96\xe1\x80\x43\x94\xe1\x69\x19\xd1\xe9\x37\x86\xbb\xc9\xd3\x9d\xac\x3b\xb9\x52\xbe\x0c\x9d\x9b\x0e\x7d\x0f\xdd\x05\xde\xd1\x0e\xc6\x50\xdc\x7f\x49\xbd\xa5\xb9\x83\x56\x00\x05\x69\x93\x26\x45\xda\x84\x5c\x84\x1c\x95\x10\x39\xb8\xcd\x96\x85\x69\xa8\xb9\xcc\x68\x8e\x6f\x72\xe2\xef\x2c\xb5\x19\x91\x0c\xfc\x89\x27\xd1\x99\x63\x32\xf0\xfc\x18\xcd\x96\xa5\x0b\x97\xd9\xb4\x38\x89\x8f\x11\xc3\xaa\x98\xa4\xc4\xc4\xf8\x44\x31\x2e\xe5\x61\x88\x21\x03\x2e\x46\x1f\xcf\x9a\x61\x52\x0b\x73\x22\x98\x0e\x83\xaf\x40\x4b\x99\x90\xe3\xf8\x09\x63\xf2\xb3\x81\x22\x37\x2f\x73\x42\xc6\x58\x76\x7c\x66\xce\xd8\x74\x75\x42\x6e\xe2\xf4\x46\xe4\x09\xe2\xe3\xd0\xbf\xcd\x76\x93\xc5\xae\xb7\xa3\x37\xd7\x58\xe4\x26\x58\x79\xf5\x85\x1d\xe7\xe4\x1c\x95\xb9\x9c\x43\x6c\x59\xab\x81\x13\x5d\x93\xe4\xe5\x51\x34\x86\xe3\x6c\x94\x25\x0a\xa5\x73\xb0\x6b\xc1\x31\x40\x46\xfe\x58\xcd\x13\x00\x31\x57\xf9\x9d\x04\xe9\xd2\x5d\xb9\xc5\x1b\xac\xde\x50\x6a\xb4\x58\xe5\x4b\xf9\x25\x2d\x31\x5e\x74\x89\x96\x44\x01\x69\x25\x06\x26\x0b\x56\xac\x99\x46\x25\x92\x1b\x61\xb6\xc8\xe5\xc5\x59\x2b\x71\xac\x78\x89\xe6\x3f\xa0\xa8\x99\x28\x56\x4a\x65\xc4\x27\x08\xcd\xe7\x21\x95\x5b\x6c\x1b\x4d\x75\x78\x98\x69\x40\x35\xe2\x18\x1c\x0f\xf2\x6a\xdb\x80\x0d\xd6\x0b\x30\xad\x60\xa5\xe7\x0f\x92\x21\x95\x4a\xe4\x56\x9f\xc4\x5b\xd9\x7c\xc6\xf0\xf4\xbc\x1c\xe8\x2b\x34\x4b\xce\xac\x48\x4d\x91\xef\xe4\x5b\x78\x39\x62\x57\xcb\x95\xad\x04\xdd\xc8\x1e\x9b\x41\xa1\xa5\xd8\x01\x89\xe0\x09\x97\x9b\x1b\x2c\x94\xd1\xce\x8b\x61\x90\x54\x64\x4d\xe3\x0c\xe7\x78\x61\x3c\x8c\x2e\x4e\x53\x4f\xbc\xfe\x21\x97\x5e\x5a\xf8\x05\xcb\x8a\x1f\xf1\x49\xef\x90\x20\x8f\xac\x37\x40\xb3\xa1\x99\x15\x64\x8c\x5a\x81\x87\x92\xb1\xb6\x22\x44\x82\x1c\x84\xad\x14\x39\x4c\x45\x39\xa4\xc5\x60\xa5\x4b\xc5\x17\x3f\xa8\x54\x28\x0e\x76\x40\x4b\xb2\x62\xa4\x3c\x15\xdc\x3b\xef\x2c\xe4\x2b\x61\xc0\x94\xb2\x65\x10\xb1\xa3\x50\x54\xc9\x12\x0f\x6a\x34\xf5\x10\x4d\xbf\x03\x39\x4e\xb5\x57\x1a\xa9\xde\x44\xb3\x91\x4b\x87\xd2\xe7\xdb\x46\x83\x43\x31\xa3\x96\x4f\x15\xab\x65\xe5\xca\x71\x09\xdd\x76\x0b\xce\xde\xac\xe9\x74\x49\x95\x4b\xf9\x62\x56\xab\x72\xac\xd2\x4e\x72\x12\xbc\x42\x89\xbc\x90\xb9\x18\x86\x1d\x2f\x79\x1c\x49\x3b\x90\x63\x70\x3a\x58\x31\xbe\x72\x19\xb7\xe5\x7c\x1c\x0b\x7f\xe9\xd1\x5a\x64\x85\x18\x69\xe8\xe4\xf9\x26\x0a\xe8\xc4\x31\xe3\xaa\xe1\x4a\xd7\x66\xdb\x51\x08\x9a\x8f\xc2\x46\x4d\xed\x9b\x18\xf0\x94\xda\xcb\xcf\x31\xcd\x82\x45\xe0\x8d\x30\x8a\x91\x01\x36\x28\x5d\xc8\x9a\x6d\x85\x48\x1b\x6c\xe5\x66\x8b\xd1\xa0\x17\xe7\x58\x9c\x30\xda\x66\x74\x5a\x38\xfc\xb0\x33\x4d\xd5\x5d\xe9\xc1\xae\x7a\x85\x96\x7e\xf0\x6c\x86\x30\x87\xd2\x13\x4f\x59\x0a\x45\x9b\x3a\xd6\x04\xfd\xc2\xe2\xfd\x7b\xe0\x5e\x21\xcf\xbb\xf6\x42\x91\x14\x48\xca\xb6\x0d\x99\x4e\xb1\x85\xe2\x52\x9a\xb6\x95\xb2\x81\x96\x95\x10\xda\xdf\xae\xd5\x5c\xc9\x9c\x70\xe8\x01\x9f\xd2\xb2\x52\x0c\x0e\x76\xcd\x00\x11\xbe\xda\xe8\x9a\x21\x02\x4a\x60\xad\x74\xed\x6b\xe9\xb5\x64\x45\x1c\xbf\xd1\x2a\x07\x78\x06\x69\xae\x23\xb3\xa0\xec\xa5\x49\x04\x52\x40\x0a\x89\x29\xe7\xf4\x25\x31\x28\xa0\x71\x7d\x40\x8b\x6a\x1e\xe3\xd2\x68\x58\x17\xed\x94\xfa\xf2\x56\x25\x5c\x97\x8c\x9c\x15\x62\xbc\xd4\x38\xe8\x38\x65\x78\xe4\xdb\xe4\x31\x23\xe2\xec\xe8\xec\x31\x23\x27\xb2\xd9\x63\xf2\xf2\xd3\x72\x72\xd8\x8c\xcc\xe1\x13\x46\xb2\xa3\xd3\xf2\xb3\x32\xc7\x8f\x97\xb3\x91\x62\x76\xf9\x52\x7a\x09\x46\x2d\x86\x3c\x24\x30\x27\x5e\x44\x47\xad\xe6\xd2\x62\xe2\xdb\x7c\x62\x08\x0c\x86\xc0\xc6\x6b\x2d\x00\x7a\x52\x68\x36\x94\x88\xfa\x2b\x75\x01\x32\xaf\x85\x30\x6b\x52\x73\x96\xc6\xa5\x3c\x3d\x06\xdb\x59\x6c\x45\xcf\x11\xa4\x0c\xb4\xba\x3a\x11\xe9\x2a\x72\xbb\x1c\x9e\xf2\xe7\xd8\xf4\x46\xc9\xdf\x69\xd4\x58\x5a\x85\x92\x2f\x5d\x9d\xa2\xdc\x77\xd2\x93\x77\xf4\x28\x12\x27\xce\x4e\xcb\x27\xeb\xcc\x92\x8f\x4c\x9a\xf6\xe6\x62\x0a\x79\x99\x53\x8d\x66\x74\x1a\x37\x24\xce\xcd\xa4\x47\x02\x94\x3b\x12\xe3\x51\xd9\xa3\x2b\xd6\x08\xc6\x09\x5a\x28\xd0\x3b\x8a\xc5\x70\x36\x09\x99\x15\x56\x6f\xad\x84\x7b\xe9\x84\x6f\x97\x06\x41\x21\x68\x99\xe2\xb3\xdd\x86\x6f\x62\xfc\xa6\xb7\xdb\x59\xa1\xd2\x8e\xf8\x90\x0a\x60\xbb\x86\x7b\x53\x29\x1f\x56\xf9\x72\xb3\x15\x15\x80\xb5\xd8\xd3\x4b\xa1\xad\xad\x9c\x34\xb8\x95\x12\x36\xfd\x20\x48\x54\x25\x83\x22\x8d\x1f\xd8\x18\x39\x85\x6e\x62\x5e\x5a\xa3\xc6\x91\x54\x1d\x39\x2b\x65\x70\xc8\xad\x61\xb1\xd9\xec\xe2\xc3\x04\x59\x53\x55\xfd\x50\x4c\x14\x7a\xb3\x84\x55\x6d\x76\x09\xcc\x0a\x38\x0b\xb2\xda\x90\x0b\x7e\x3c\x20\x4a\x1a\x2c\x36\x9e\x93\xd2\x8b\xf1\x53\x3a\x1d\x3f\x51\xb6\x25\xdb\x88\xca\x87\x5b\x4b\xd3\xae\x48\x69\x60\xb8\x97\x2a\xd1\x02\xfc\x0d\x64\x02\x27\x9b\xa4\x14\x57\xb7\x0f\xe6\x4d\xe7\x4e\x31\x79\x1c\x6a\xda\xec\x38\xae\x81\x26\x93\x24\x50\x16\x1a\x5b\xd0\x48\xc9\x64\x5d\x86\x88\x80\x8c\xbb\x5c\xbd\x94\x32\x7a\xd0\xbb\x94\xac\xbb\xc8\x94\x6c\x2d\x77\x83\x53\x6d\x71\xd1\x73\x60\x93\x6a\x45\x1a\x07\x4c\xa2\x00\xda\x1f\x8c\x1c\xe4\xda\x98\x0d\x97\x15\xbf\xe2\x4d\xb9\x5a\x69\xde\xa0\x04\xc8\xe0\xfd\xcb\xdc\x46\x53\x38\x44\x42\xaf\x9b\xca\x95\xc2\x2f\xf3\x68\x3d\x1b\xaa\x63\xa3\x1e\x58\x7a\xb5\x46\x9d\xd9\x4b\x26\x00\x47\x3b\xa4\x91\xa3\xcb\x47\x36\x93\xf4\x2a\x98\x64\x60\x54\xdb\x8e\xc6\x82\xc6\x67\x61\x8d\x11\x03\x7e\xcd\xe8\x6d\x6a\xc2\xe8\xae\x13\xb0\x25\xd3\xf6\x35\xe5\x69\x71\xe6\x52\x03\xbb\x99\x20\x28\x0f\x8b\xdc\x69\x2c\x7a\x2a\xa0\x28\x8d\xd6\xe2\x9a\xc5\xf6\xca\x44\x71\x8a\x9b\x1e\x69\x74\x98\x6b\x86\x89\xaa\xbe\xf9\x26\x68\x33\xa3\xa4\xbd\x84\xd7\xd7\x46\x9e\xd8\x20\x08\xda\x08\x5f\xfb\x4c\x4e\x0d\x49\x59\x4d\xbf\x63\x0f\xa7\xc4\x23\xbc\xea\x63\xdd\x99\x4a\xe9\xa9\xbb\x05\x0c\x96\xc1\x2e\xb8\x36\xbd\xfb\xb6\x30\x10\xaa\xd6\xa8\x7f\x96\xcd\x7f\x99\xc1\x60\x71\xa0\x87\x61\x9c\x9e\x17\x9f\x5e\x8e\x2a\x63\xc7\x4b\xa1\x42\x3a\xcc\xdf\x79\x8e\xd7\xfa\x2c\xb1\x46\x68\xa9\x27\x8d\x87\x19\x91\xb8\xe8\x83\x7b\x9c\xf0\x54\x74\xbc\x4b\x3a\x12\x39\xd4\x91\xe3\x55\x57\x63\x6f\xcd\x33\xd9\xca\xc1\xde\x6b\xca\x09\x1a\x25\xde\x52\xca\x29\xeb\xaf\xe4\xa6\x1b\x2b\x99\x36\xfc\x97\x83\x28\xbb\x34\x9c\xdc\x86\x69\x44\x40\xcb\x3b\x6d\x64\x3c\x0b\x8a\x94\x8e\x1f\x6a\xa9\x3a\xa4\x71\xaa\x4a\x78\x24\x1a\xb4\xa6\xe6\x62\x72\x64\x46\x37\xb7\x6b\x54\xa6\xf4\xb5\xfc\x77\x73\xf3\x53\x4d\xb8\xe6\x3e\xee\x23\x94\xae\xa9\x11\x8e\xcd\x0d\x0e\x9a\x08\x8b\x03\x71\x0f\xca\xd1\xa2\x2f\xe6\x55\xf5\x6e\x7e\xd2\xac\x94\x8b\xb4\xab\xaa\x3b\xd4\x5a\x33\x79\x62\xa3\x58\x33\x08\x15\x4a\x78\xa1\x84\x2d\x15\x43\x11\xad\x4d\xd7\xba\x31\xad\x49\x33\x48\x3a\x88\x63\x43\xf7\x93\x44\x7c\x8f\xae\x23\x6e\x6a\xe9\xf5\x18\xe9\x52\x7d\x90\xed\xea\xa9\x25\x2d\x77\x89\x6d\x5c\xd4\xda\x94\x6d\x05\x63\x61\x35\x70\xae\xd3\xa6\x4a\x2b\xa9\x65\xee\x4d\x91\xdb\xf9\x7e\xe3\x53\x7a\x6a\xe9\xac\x19\x7f\x45\xfa\x75\xc9\xc3\xb9\x0d\x70\xa5\x97\x43\xdd\x0f\x06\x4d\xe0\x29\x03\xda\xe8\xe1\x11\xe6\x59\xc4\xd2\x1a\xab\xac\xd5\x68\xda\xcc\x25\x66\xa4\x1f\x09\x49\x4b\xc1\x1a\x8f\x4a\x20\x28\x73\x90\x37\xaa\xf3\xa3\x47\x98\x1d\xc9\x31\x0b\xf1\xd8\xad\xd1\x07\x05\xb2\x77\x90\x2c\x94\x66\x09\x44\xcc\xa7\x31\x47\x25\x8d\x76\xfc\x2d\x8d\x4e\x67\x42\x5f\x69\x7a\x7b\xeb\x98\xaa\xf6\x13\xfd\x9f\xe8\x57\x9d\x55\x7d\xa7\x8d\x57\x0b\xef\x9a\xaa\xf6\x59\x00\x65\x78\x7b\x79\xc5\xb6\x62\x9e\xf0\xf7\xeb\xdf\xd6\xc7\x3b\xcc\x4f\xc7\x98\xfc\x5b\xf6\xf7\xf7\xf2\xf5\xaa\x4a\xf6\xf6\xf2\xad\x99\xc4\x14\x30\xf1\x1a\xa4\x1d\xd3\xd3\xc7\x4b\x57\x13\xb9\x2e\x62\x76\xb8\x6e\x88\xf8\xcf\x58\x5d\xa1\x8e\xd7\xd9\x74\x16\x1d\xa7\x13\xe0\xff\xc3\xd0\x3f\x4c\x77\x4d\x9e\xbe\xc1\xcf\x1e\xf9\xe0\xa7\xbf\x6e\x8c\xdf\x3d\x98\xa9\x6d\x15\xb3\xf3\xfc\x93\xdd\xae\xa4\x19\x6b\xaa\xda\x8e\x60\xaa\xfc\x26\x33\x55\xbe\x19\x35\x3e\xde\x5e\xde\xde\x2d\x7a\x2f\x7d\xd6\xa7\x5b\xf6\x71\xa6\x8d\x52\x50\x2f\x3f\x28\xd2\x9c\x4f\xc4\x22\xfa\x4c\xf0\xf5\x0f\xf2\x9e\x90\x17\x1b\xc8\xb4\x45\x17\x01\x41\x2d\xd2\x1c\xe6\xe9\x36\xab\x3e\x36\x88\x69\x8f\x90\x16\x41\x2d\xf3\x0c\x36\x01\x86\x03\x68\x4f\x6c\x18\x13\x8a\xc0\x96\x41\xed\x47\xda\x32\x60\xa0\x57\xc6\x40\x60\x3f\x20\x32\xdb\x6a\x88\x89\x8d\x67\x62\xd1\xbd\x56\x41\xfd\x4c\x82\x60\x1f\x3c\x70\xa0\x81\x73\x08\xe8\x05\x07\xf4\xe2\x46\x4c\xb1\xcd\x28\xcb\x0f\x44\xcb\xa0\xbc\x59\xb0\x39\x2a\x63\x19\x26\x06\x25\xf2\x09\xea\x3d\xd2\x16\x29\xe6\x18\x99\x87\x06\x08\x17\x99\xae\xa4\x86\x4e\x88\x4c\x73\x0a\x26\x1b\x1a\x36\xb1\xed\x99\x76\x28\x85\x5f\x50\x00\x93\x3c\x28\x69\x50\x5c\x4a\x32\x13\xd1\xa9\x0d\xb0\x27\xc5\xc6\xc6\xc5\xc5\x25\x24\xc6\x4e\x82\xcb\x24\xcd\x25\x33\xa7\x9a\xac\xac\x74\x11\x10\xe4\x9d\x9e\x16\x1b\xcc\x74\xc0\xf5\x6c\x95\x63\xe3\x23\xd3\xac\xc5\x30\x74\xf9\xd8\xbe\x4c\x6f\x5c\xd1\xc8\xe1\x0e\x18\x9e\x91\x63\xb8\xf2\xc8\x3c\x5b\x91\x50\xae\x87\xa2\x81\x5f\x9a\x0a\xca\x21\xd5\x5b\x12\xf5\x69\x5e\x94\xa9\xf2\xea\xa1\xed\x08\x2f\x3f\x9d\x4f\x95\x57\x3b\xd0\x23\xaf\x96\xde\x55\x5e\x5e\xba\xa3\x0d\xcf\x15\x67\x8e\x6c\xd3\xee\xfd\xdf\xcf\x69\x31\x6f\xd2\x9e\x97\xf6\x3c\x28\x79\xf8\xfe\xeb\x05\xc3\x5f\xf2\x9e\x75\x65\xcc\xa8\x95\x3f\x5d\xf6\x7f\xd8\x6f\xfd\xab\x3f\x2d\x7c\xab\xea\xe7\x84\x21\xd7\xad\xfb\x7b\x57\xff\xe1\x78\x9b\x27\x47\xb6\xe8\x6a\x60\x2f\xcd\x5c\xf6\xeb\xd8\x01\xfd\xbe\x5c\x3a\x66\xce\x2f\x17\x57\x3d\x9c\x12\xf2\xc5\x5b\xe9\xbf\x4e\xf9\xf4\x77\x7d\xb6\xb5\x69\x75\x71\xf2\xd0\xf0\x7d\xe5\xf6\x3e\xdf\x9b\xde\x31\xcd\xa8\xde\xbd\xcf\xff\xc3\xa8\xa7\xbc\xc7\xbe\xd9\x31\x39\xe2\xa5\xf2\x07\x2d\xfd\xfa\xbf\x5c\x1d\xe4\xbb\xea\x81\xf9\xdd\x15\x3b\xb7\x2f\xf9\xf6\x9d\xb8\xbe\xa3\xbf\xcd\x60\x07\x19\x52\xeb\xa7\xb2\xd7\x66\x74\xef\xfd\xaa\x21\xe2\xa5\xba\xbd\xff\xf9\xb6\x20\xea\xd4\xec\xe9\x09\xab\xa2\xe6\xbe\x73\x37\x39\xe5\xe9\x4f\xd3\x6e\x15\xa5\xbe\xb2\x64\xfa\x91\x49\x8b\xd7\xed\xf9\x63\xc4\xfa\x6d\xa6\x5f\x82\x4e\x7a\xc7\xde\x3e\xcf\xfc\x71\xf0\xac\x0e\x3b\xdf\x58\xbf\xb6\xbe\xa6\xe5\xdb\x6d\xf9\x7d\x9b\x67\x94\xac\x88\x9f\x76\xad\x5b\x97\x89\xbb\x92\xda\xd5\xbe\xdc\x31\xa2\xe7\x27\xeb\x8e\x1d\xea\xfa\xc1\xa5\x86\x40\xef\xa1\x43\xfd\x5e\xda\x97\x75\x64\x68\xc3\xf7\x93\xf7\x2e\x38\xf0\x41\x57\x6f\x18\x08\x5e\xeb\xab\xbc\x16\x40\x8b\xcc\x15\xfb\xb9\x6b\x90\x97\xd7\x43\x5f\x3f\xc6\x07\x5a\x87\x09\x42\x40\x4f\xdf\xd6\x4c\x4b\xff\x00\x18\x3e\x7e\x7e\x2d\x7c\x7c\x44\xbd\xed\xda\x0e\x49\xf9\xfa\x78\xb7\x98\x0d\x43\x0b\xae\xbb\xf9\x0e\x60\xfa\x31\x7d\x6a\x7a\xd5\x44\x57\xf7\x90\xd5\xd1\x61\x21\xb4\xb0\xd8\xc8\x27\x3e\x19\x9b\x14\x03\x38\x93\x87\x12\x45\xfa\xe6\x30\xa3\x98\x2c\xff\x56\x53\xaa\xb3\xbc\xaa\xef\x97\x7a\xb5\xe8\xe4\xcd\x0c\x62\x92\x65\x32\x6f\xaf\x90\xfe\x8f\xae\xda\x03\x99\x39\xb3\xe5\x94\x5e\x5e\xbe\x02\xe3\x60\xa2\xe5\x6b\xc6\xab\x3a\x54\xca\x09\x9c\xa3\x9d\xc8\x81\x19\xa5\x48\x79\x57\x0f\xfb\x0d\x7c\xc5\x46\xbc\xb2\x55\xca\x19\xcd\x68\x11\x0b\x4c\x1d\xd3\x0d\xd5\x2b\xca\x37\x94\x09\x99\x1d\x7c\x7f\xab\x3e\xee\x65\x4b\xe6\x3f\xbe\xb9\x36\x9f\x7d\xfd\x9d\x8b\x65\xaf\x99\xea\x2f\x32\x5d\x91\x40\x5b\xdf\x10\xdf\xe0\xcf\x52\xf3\x4e\x9c\x5b\x12\x62\x3a\xe5\x97\xfe\x62\x40\xd7\xf8\x8b\x13\xf7\x8e\x38\xe5\x62\x35\x7c\x90\x8e\x8e\xce\xee\xad\xbf\x50\xf5\x6f\xc7\xd8\xd0\xff\x39\xf7\xd4\x96\xc5\x99\x9f\x7d\x38\xe0\xdc\x9b\x77\xbe\xfd\xc5\xef\x03\x6e\xd6\x97\x01\x93\x7d\x97\x9e\xd8\xf9\xd6\xbf\x3b\xac\xae\x1e\x39\x4e\x7f\xc8\x3e\x67\xaa\xb0\x25\x76\xf6\x33\xed\x96\x5f\x3c\x15\xfe\xdd\x47\xfe\x03\xee\xac\x98\x6c\x7a\xf8\x63\xbf\xf8\xab\xbf\x5e\xdf\x34\xb6\xc3\xc6\x79\x99\x8b\x3f\xd8\xfc\xf9\x92\x17\x06\x6f\x2a\x7c\x9a\x1d\x57\x5e\x78\xf4\xcc\x89\xec\x27\x02\x5f\x5e\x18\xfe\xfd\xa6\xf7\x23\x4e\xcd\xfd\xcf\xff\xdc\x3e\x36\xa1\xcb\xc3\x7d\xc7\xa6\xcd\x79\xab\xd5\xaa\x61\x43\xb6\x2f\x9e\x91\xdc\xfd\xdc\xea\x71\x21\xd3\x36\x2d\x4f\xfb\x53\xc2\xa1\x39\xce\xfe\x0d\xbd\xe6\xf0\xdf\xf5\xd9\x96\x18\x97\x3a\x6e\xfb\x9f\xbb\xec\xfa\x1b\xd3\xa1\x67\x72\x41\xaf\x6f\xa6\x76\xfe\xd7\xcf\x0b\x2d\xdf\xd7\x1f\xbc\x3c\xf3\x8c\xd3\x71\xfa\x6b\xbf\xac\x13\xbf\xfe\xf9\x4f\x9b\x3f\x37\x47\x97\x3f\xfb\x7e\xc8\xcb\x13\xfd\x03\xeb\x87\x4c\x1f\xb8\x2b\x7a\xe3\xad\x91\x6f\xad\xfe\xea\xe5\xd1\x77\x77\x7d\xd4\xaa\xb0\xfc\xe0\xc0\xb0\x23\x86\x73\x6b\xff\xb8\xe2\xec\xae\x91\x07\x87\x7c\xdd\xf5\x60\x12\x3f\x75\xee\xc1\x9f\x5e\x78\xea\x0f\xc2\x95\x8b\xed\x66\xfc\xba\x72\xda\xfc\x13\x23\xc1\xb6\x7e\xc9\x54\xf9\x7c\x84\xed\x2b\x68\xac\xab\x69\x35\x90\xc6\xa6\xbb\xd8\x09\x60\x49\x42\xf3\x4d\x5c\xa4\x62\xe5\x46\x3a\x6c\x4e\xbb\x64\x41\x62\x99\x81\xd8\x72\xf6\x51\x6e\x8b\x51\x67\x64\x5c\x63\x56\x10\x99\x3c\x64\xe1\xc0\xce\xc5\x26\x26\xc4\x27\x83\xc9\x8b\xd3\x5e\xfe\xef\xb2\xef\xcd\x99\xcd\xba\x27\x4f\x77\x5c\xb4\xaa\x57\xce\xd5\xb8\xc4\x2b\xec\xfe\xdf\x79\x4d\xda\xa4\x9f\xf3\xbb\xa7\xec\x86\x2d\xff\x3e\x37\xf4\xaf\xfd\xf6\x7f\x1c\xff\x79\x65\xc3\xe0\x1f\x86\x30\x51\xf3\x16\xef\x66\x82\xf7\xed\x5a\x70\x64\xe8\x8a\x7c\xdf\x35\x5f\xbd\x76\xbe\x55\xcf\x88\xee\x5f\x72\x7d\x67\x26\xd6\xbe\x99\x7f\xe5\xf6\x9d\xb8\x41\xa7\x7a\x4d\x58\xb1\xed\xfa\xaf\x0f\x0a\xaa\xcf\xac\xb9\xa5\x7b\x71\x51\xbf\xd6\x87\x86\xfb\x7e\xf6\xc6\xd3\xbe\xb7\xaf\xcd\xfe\x71\xf3\xf5\xf1\x6b\xcd\x45\x5f\xbc\x17\xb6\xed\xf7\x5f\x0c\x28\xba\x1c\x56\xf2\xee\xb7\x61\xe3\x46\xe9\x06\x66\xfd\x75\xa5\xf3\xec\x81\xbe\xc7\xae\xdd\x2d\x2a\x6d\xb9\x6a\xf7\xcd\x7b\x15\x33\xd6\xdd\x5d\xff\xe3\xde\x23\x37\x0f\x4c\x5f\xf6\xc1\x1b\xdf\xf5\x8c\x59\x55\xfb\x43\x07\xce\x3a\xf5\x76\x87\x8c\x3c\x3b\xb3\xe2\xc8\xaa\xfe\x05\xfd\x87\x06\x08\xa3\x7e\x7c\x6f\xdc\x8e\xf7\x17\x9c\xcc\xe9\x5d\x50\xb2\x37\xf1\xe8\xea\xed\x9d\x62\xef\xb6\x5a\x72\x6d\xdb\x9c\x24\xbf\x17\x02\x56\x9e\x18\xbc\xbd\xe7\x82\xc3\xd9\x97\xdf\xb8\x5f\x7c\x27\x73\xf1\xab\xf5\xc1\x83\xbe\x49\x9a\xbf\x77\x66\x58\xf2\xfd\x90\xdb\xd3\xda\xbf\x2e\x30\x21\x0f\x82\x96\xaf\x7f\x7a\x5e\x9b\xb1\xb2\xd9\x8c\x83\x16\x89\xd1\x0c\x69\xb7\x23\x5e\x6b\x12\xfe\x5e\xb7\xe3\xef\xcb\x4e\xe5\xb4\x9f\xb6\x5b\x7f\x7c\xe8\xda\x07\xe7\x6b\xa7\x9e\xfa\xb7\xe8\x0e\xb1\xd9\x0d\x60\xfc\xe1\x3f\xde\x60\x79\xe3\x35\x96\xac\x37\xd3\x93\x89\xd2\x58\xb2\x4e\x8d\x58\x32\x66\x04\xb6\xc4\x4f\x33\x43\x99\xa7\x6a\x06\xd5\x24\x57\x27\xfe\x26\x6b\x86\x5e\xe3\x15\x8d\xf3\x33\xd8\x38\x67\x30\xc3\x99\x54\x7f\x5f\xf8\x53\xc7\xa4\x30\x49\x1a\xab\xfc\x1b\x14\x92\x74\x17\x5e\xfe\xee\x2c\xdc\xdf\xab\x0f\x5f\x3d\xf4\xf3\xda\x7d\xc5\xd7\x8a\x5a\xad\xf3\x1f\xec\x9b\xbb\xb8\xa3\x63\xeb\x28\x61\x45\xde\xf1\xe4\xe3\x19\xd9\xd7\x5b\x2c\x2d\x89\xff\xe7\x2b\x37\x96\x3f\xbb\x31\x88\xf1\x1b\x32\x3f\xae\xfb\xf3\x1f\xff\xb5\x65\x6d\xf4\x86\xa5\x5f\x8e\xf8\xbc\x67\x54\xb0\x4f\xf1\x87\x81\xff\xb0\xb5\xfb\xfd\xf3\xd3\xeb\xff\x72\xb4\xa0\xdf\x07\x75\x6b\xba\xd7\x4e\xba\xb9\x75\xc3\x88\x9b\x6b\x1a\x0c\xc7\x07\x2e\xdd\xd0\xb7\xaf\xd7\x3f\x1d\x03\xfa\x7e\x95\xec\xd5\xfb\xe0\xd8\x6b\xa6\xcf\xbb\x2f\x39\xbc\xbb\xe1\xa7\x27\x7e\xf8\x7b\xe0\xe6\xbc\x3d\xef\xdd\xa8\xff\x5d\xab\x7f\x3c\xf5\x4a\xf8\x8a\xe8\xec\xaf\x3e\xbb\x7a\xff\x8d\xac\x65\xc1\x99\x6d\x07\x27\xd9\xbe\xc8\xdc\x9d\xb9\x2e\xed\xe3\x53\x67\x32\xc6\x0c\x3b\x20\x94\x9d\x5e\x17\x34\x61\xc0\x47\x0b\xd6\xef\x7d\x6d\xab\xff\xbc\x05\xb3\x9c\xfe\xf7\xde\x0f\xce\x69\x5b\x6f\xad\xfb\x6a\xe8\xdb\x1d\xa6\xdd\xba\xf4\x9f\x71\xa9\x3d\xfa\x64\x5f\xe8\xfa\xcc\x82\xda\x84\x7a\xff\x75\xe7\x3b\x4c\xfa\x5b\x75\x92\xd1\x27\xd1\x66\x2b\xb7\x5e\xf9\x71\x7e\xee\xca\xe7\xb6\xf8\xe4\x6d\x5b\x16\x65\xe8\x16\xb2\xea\xd3\x03\xbb\xfc\x0c\x83\xbf\xbe\x65\xea\xd2\xc9\x2f\x71\x45\xde\x35\xb0\x70\x30\xb6\xbc\x2f\x61\x0b\x07\xbd\xff\xff\xca\xc0\x25\x30\x49\x71\x83\x62\x93\xe1\xdf\x0c\x18\xb8\x78\xed\xe5\x7f\xa7\x10\x55\x5e\x91\xb4\xe1\x69\x83\x0c\x4f\x80\x68\x78\xbe\x5c\x7d\xe6\xf2\xc4\xd0\xec\xb5\xff\x73\xe5\x0c\x9b\x55\x7d\xf9\xbd\xf3\x0f\x1b\xae\x17\x87\xdf\xe2\x4c\xbb\x27\x4e\xab\x79\xae\xfc\xdd\x1f\xfe\x9c\xfd\xbd\x7d\xf6\xd0\x67\x43\x0d\x01\xb6\x2f\x7e\xac\x3f\xf9\xf4\x2c\xef\xfc\x1e\xf9\x81\x67\x77\xcd\x39\x75\xd8\x39\xf4\x99\x59\x7f\x2d\x3f\x32\xac\x62\x4b\x98\xcf\xde\xc8\x92\x81\x53\xfb\xef\x3c\xba\x70\x66\xdd\xbb\x11\x3b\x3e\x38\x9b\xd9\xdb\xb6\x39\xb9\xe0\xce\x82\x5e\x67\xce\x3e\x79\xfb\xcd\x4e\x6f\x77\x73\x24\x8d\xd9\xd4\xe9\x69\x6e\xe5\x4b\xff\xea\x67\xfd\xfd\xba\x07\x0b\x2f\xb4\xfa\x72\xd6\xb7\x2f\x76\xfc\xfa\xca\xf1\xc1\xa7\xbf\xe9\xb0\x2e\xe8\xc9\xb3\x8b\xb7\xb3\x1d\x86\xd6\x04\xf8\x05\xec\x9b\xbc\x91\x4b\xf1\xcd\x7c\x2d\x62\xfd\x94\x29\xc2\xd1\xb4\x8d\x8e\xc2\x2e\x85\x47\xbb\xd9\xd8\xb0\xe1\xef\x79\x8f\xe3\x6a\xdf\x8a\x0a\x9d\x7a\xaf\xc2\xe7\xcd\xd1\xb3\x66\x1f\xf9\x65\xcb\xa4\x7b\x6b\x53\x37\x7c\xd2\x39\xe4\xc1\xae\x63\xd7\x9f\xe3\xdb\x5c\x2b\x3f\xf4\xfa\xed\xca\x95\x07\x77\xb6\x28\x5e\xd7\xb1\xcd\xf9\x9a\x82\x8f\x32\x9e\x6f\x39\xac\xb0\x0f\xfb\x4e\x5a\x8b\xbc\x82\x13\xed\x67\xa6\x08\x47\xef\x3e\xdc\x6b\x5e\xba\x64\x9e\x70\xf9\xd5\x2e\xdb\xbd\xbd\x7c\xd6\xcf\x39\xcc\xcc\x39\xa4\x31\x3a\x6e\x6d\xca\x9c\x17\xb1\xd5\x99\x33\x9f\x99\x53\xe5\xde\xee\xac\x2d\xde\xc0\xfd\x57\x7a\xb5\x0a\x34\xba\xb5\x68\xe3\x70\x5c\xf9\xd0\x9d\x0d\x88\x7b\xe6\xe6\xae\x4f\x86\x2d\xbb\xd7\xe1\xa3\xb5\x2d\x16\x2d\x2e\xaf\x89\xf7\x0f\x9e\xbc\x34\x22\xf4\x4e\xc0\xa6\xa1\x2d\x3b\xff\xbc\x60\x76\x7b\xab\xb9\xe1\x95\x4e\xcc\xc3\x84\x65\x06\x47\xca\xb5\xfa\x70\xaf\xf5\x5d\x97\xf7\xd9\x10\x7b\x7b\x7a\x5d\xfe\x99\xdb\xdf\xc6\x16\xf8\xac\xab\xff\xac\xf0\x5f\xcb\x33\xf9\xbd\xef\x67\x7e\x1c\xbd\xf7\x74\x95\xf7\xb6\xa8\x4a\xf3\x8b\xfb\xf7\x8d\xfe\xec\x44\xce\x27\xf1\x51\x97\xc2\x17\x6e\x5e\xfd\xa7\x34\x6b\xc8\xc7\x91\xdf\xbe\xb0\xe6\xd3\xa7\xbe\xb0\xdf\x99\xf9\x5a\xaf\xc8\xe0\xfc\x9e\x5b\xac\xfc\xfc\xef\xfe\xdc\x7d\x75\x4b\x4b\x55\xdb\xda\xbb\x1f\xb6\xfe\x25\x30\xc2\xf2\xca\xf5\x05\x6d\xea\xda\xe9\xff\xb4\xed\xda\xdc\xfe\x2b\xee\x2e\x7e\x69\x9e\x63\xd0\x95\xc8\xcb\x73\x7f\x98\xfb\xe9\xab\xd6\x80\x83\x57\xc6\xf4\xda\xc7\xf7\x6f\xf8\xfc\x76\xce\x83\x5e\xd3\xbe\xd1\xb7\x17\x46\x3d\x9c\x18\xb6\xa0\x9d\x33\x2b\xe6\xc4\x38\x73\xa7\x1a\xef\x0e\xfa\x15\xa7\xff\x96\xba\x2b\x30\xe7\x5a\xdd\xd6\xc0\xf4\x4d\x1b\xd7\xb4\x3c\xbd\xa2\xf0\xf5\x36\x27\x16\x56\x1d\x8d\x6b\xdd\xd0\xff\x2f\x99\xdf\xb5\xf9\x4b\x9f\x55\x3b\x0f\xf4\x9b\x34\x71\x5b\x72\xbb\xed\x5d\x67\xfd\xeb\xd0\x5f\x62\xab\xbc\x67\x80\x0d\xa8\x80\xb9\x2c\x33\xe7\x1f\xff\xab\xc2\x09\x75\x4e\xac\x4e\xa7\x6b\x66\x30\x9d\x15\x25\x78\xc2\x27\xb6\xb5\x76\xc6\xce\x84\xab\xb7\xfc\x62\xdb\xc1\xec\x32\x11\x59\x22\x26\x09\xaa\x00\xb3\xcb\x70\x8d\x6c\xab\xd8\xb6\x8c\x36\x6d\x47\xf0\x94\x4a\x5a\xdf\x58\x18\x1e\x85\x33\x5b\xc4\xda\x06\x45\x7f\xba\x7d\x4b\x9b\x9d\x77\xcc\xcf\x14\x7e\x3a\x7e\x4e\xa1\x8b\x8d\xf1\x05\x0d\xdd\x98\x9e\xd7\xd7\x10\xfa\xda\xab\x9b\xa6\xdd\x0d\x0b\xfe\x6a\xbf\xf3\x8f\xc7\x02\xbf\xde\xd6\xa7\x67\xcc\xd8\xac\x8f\x3a\xae\xe8\x60\x19\x77\x7f\x70\xcf\xce\xaf\x1d\x5d\x12\x7b\xb6\xf3\x37\x1f\xee\x4f\xb9\xb9\x29\x23\xe6\xfe\xc1\xb9\xb1\xaf\xfc\x7c\xe0\x5f\x5e\xaf\x0d\x7c\xf1\xd2\x96\x0d\xbd\x26\x5c\xba\x56\x36\x24\x60\xf0\xf2\x57\xe2\xb6\xf8\x1b\x77\x47\xa7\x9e\x7e\xe3\xfc\x9b\x0b\x7f\x1e\x30\xe2\xb3\xd6\xc3\x3b\x3c\xf5\x66\xa7\x8f\x6b\x8f\x0f\x4c\x9b\xf9\x4d\x8f\xe0\x85\x77\xd7\xbf\xb1\xec\x97\x97\x7b\x3f\x1f\x3c\x6a\x77\xa7\x43\x4f\x94\x7d\xf8\x74\xf8\xf1\xaf\xce\xee\xdc\xf7\xf2\x9e\xf5\xcf\xed\x0b\x19\xa7\x5f\x67\xd4\x4d\xff\xba\x9b\xb5\xa4\xff\x91\xec\xd4\x57\x7f\xfd\xe5\x3f\x27\x1c\x47\x39\xc3\xd1\xfb\xc9\xcf\xbf\x15\x58\x68\x8b\xa9\xfe\xe7\x5b\x05\x57\xde\xb1\x5d\x0e\x08\xa9\x5d\xfa\x6a\x1f\x93\xb0\xb6\xc3\x96\xf3\x1f\xe6\x3f\x37\x6f\xcd\xab\xbc\x6e\xf7\xe6\xfb\xa1\x35\x7f\x88\x6a\xd8\x38\xfa\x60\x92\xe9\xe6\xdc\x17\x46\x9e\x08\xb8\x7a\x3e\xef\xde\xd7\x47\xd7\x14\x1c\xbd\xfc\xf6\xd6\xea\x86\x37\xef\xce\x1f\x93\x5f\xf0\xc3\x8b\xdb\xeb\x0a\x0f\xe4\x0b\x9f\xd4\xb5\xb7\x6c\x4a\xd8\x7b\x73\x6c\x9a\xd7\xee\x70\xf1\x3b\xb0\xff\x13\x00\x00\xff\xff\xb4\x3b\x8f\x2d\xe0\x44\x02\x00" - -func upnpcBytes() ([]byte, error) { - return bindataRead( - _upnpc, - "upnpc", - ) -} - -func upnpc() (*asset, error) { - bytes, err := upnpcBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "upnpc", size: 148704, mode: os.FileMode(420), modTime: time.Unix(1435559411, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -// Asset loads and returns the asset for the given name. -// It returns an error if the asset could not be found or -// could not be loaded. -func Asset(name string) ([]byte, error) { - cannonicalName := strings.Replace(name, "\\", "/", -1) - if f, ok := _bindata[cannonicalName]; ok { - a, err := f() - if err != nil { - return nil, fmt.Errorf("Asset %s can't read by error: %v", name, err) - } - return a.bytes, nil - } - return nil, fmt.Errorf("Asset %s not found", name) -} - -// MustAsset is like Asset but panics when Asset would return an error. -// It simplifies safe initialization of global variables. -func MustAsset(name string) []byte { - a, err := Asset(name) - if (err != nil) { - panic("asset: Asset(" + name + "): " + err.Error()) - } - - return a -} - -// AssetInfo loads and returns the asset info for the given name. -// It returns an error if the asset could not be found or -// could not be loaded. -func AssetInfo(name string) (os.FileInfo, error) { - cannonicalName := strings.Replace(name, "\\", "/", -1) - if f, ok := _bindata[cannonicalName]; ok { - a, err := f() - if err != nil { - return nil, fmt.Errorf("AssetInfo %s can't read by error: %v", name, err) - } - return a.info, nil - } - return nil, fmt.Errorf("AssetInfo %s not found", name) -} - -// AssetNames returns the names of the assets. -func AssetNames() []string { - names := make([]string, 0, len(_bindata)) - for name := range _bindata { - names = append(names, name) - } - return names -} - -// _bindata is a table, holding each asset generator, mapped to its name. -var _bindata = map[string]func() (*asset, error){ - "upnpc": upnpc, -} - -// AssetDir returns the file names below a certain -// directory embedded in the file by go-bindata. -// For example if you run go-bindata on data/... and data contains the -// following hierarchy: -// data/ -// foo.txt -// img/ -// a.png -// b.png -// then AssetDir("data") would return []string{"foo.txt", "img"} -// AssetDir("data/img") would return []string{"a.png", "b.png"} -// AssetDir("foo.txt") and AssetDir("notexist") would return an error -// AssetDir("") will return []string{"data"}. -func AssetDir(name string) ([]string, error) { - node := _bintree - if len(name) != 0 { - cannonicalName := strings.Replace(name, "\\", "/", -1) - pathList := strings.Split(cannonicalName, "/") - for _, p := range pathList { - node = node.Children[p] - if node == nil { - return nil, fmt.Errorf("Asset %s not found", name) - } - } - } - if node.Func != nil { - return nil, fmt.Errorf("Asset %s not found", name) - } - rv := make([]string, 0, len(node.Children)) - for childName := range node.Children { - rv = append(rv, childName) - } - return rv, nil -} - -type bintree struct { - Func func() (*asset, error) - Children map[string]*bintree -} -var _bintree = &bintree{nil, map[string]*bintree{ - "upnpc": &bintree{upnpc, map[string]*bintree{ - }}, -}} - -// RestoreAsset restores an asset under the given directory -func RestoreAsset(dir, name string) error { - data, err := Asset(name) - if err != nil { - return err - } - info, err := AssetInfo(name) - if err != nil { - return err - } - err = os.MkdirAll(_filePath(dir, path.Dir(name)), os.FileMode(0755)) - if err != nil { - return err - } - err = ioutil.WriteFile(_filePath(dir, name), data, info.Mode()) - if err != nil { - return err - } - err = os.Chtimes(_filePath(dir, name), info.ModTime(), info.ModTime()) - if err != nil { - return err - } - return nil -} - -// RestoreAssets restores an asset under the given directory recursively -func RestoreAssets(dir, name string) error { - children, err := AssetDir(name) - // File - if err != nil { - return RestoreAsset(dir, name) - } - // Dir - for _, child := range children { - err = RestoreAssets(dir, path.Join(name, child)) - if err != nil { - return err - } - } - return nil -} - -func _filePath(dir, name string) string { - cannonicalName := strings.Replace(name, "\\", "/", -1) - return filepath.Join(append([]string{dir}, strings.Split(cannonicalName, "/")...)...) -} - diff --git a/src/github.com/getlantern/go-igdman/igdman/util_darwin.go b/src/github.com/getlantern/go-igdman/igdman/util_darwin.go deleted file mode 100644 index 11e5006349..0000000000 --- a/src/github.com/getlantern/go-igdman/igdman/util_darwin.go +++ /dev/null @@ -1,37 +0,0 @@ -package igdman - -import ( - "fmt" - "os/exec" - "regexp" - "time" -) - -var ( - searchRegex *regexp.Regexp -) - -func init() { - var err error - searchRegex, err = regexp.Compile(".*default\\s+([0-9]{1,3}\\.[0-9]{1,3}\\.[0-9,]{1,3}\\.[0-9,]{1,3})\\.*") - if err != nil { - log.Fatalf("Unable to compile searchRegex: %s", err) - } -} - -func defaultGatewayIp() (string, error) { - log.Trace("Calling netstat") - cmd := exec.Command("netstat", "-f", "inet", "-rn") - out, err := execTimeout(10*time.Second, cmd) - if err != nil { - return "", fmt.Errorf("Unable to call netstat: %s\n%s", err, out) - } - log.Tracef("Netstat output\n------------\n%s\n\n", out) - - submatches := searchRegex.FindSubmatch(out) - if len(submatches) < 2 { - return "", fmt.Errorf("Unable to find default gateway in netstat output: \n%s", out) - } - - return string(submatches[1]), nil -} diff --git a/src/github.com/getlantern/go-igdman/igdman/util_linux.go b/src/github.com/getlantern/go-igdman/igdman/util_linux.go deleted file mode 100644 index fa5b12f929..0000000000 --- a/src/github.com/getlantern/go-igdman/igdman/util_linux.go +++ /dev/null @@ -1,35 +0,0 @@ -package igdman - -import ( - "fmt" - "os/exec" - "regexp" - "time" -) - -var ( - searchRegex *regexp.Regexp -) - -func init() { - var err error - searchRegex, err = regexp.Compile("default via ([0-9]{1,3}\\.[0-9]{1,3}\\.[0-9,]{1,3}\\.[0-9,]{1,3})\\.*") - if err != nil { - log.Fatalf("Unable to compile searchRegex: %s", err) - } -} - -func defaultGatewayIp() (string, error) { - cmd := exec.Command("ip", "route", "ls") - out, err := execTimeout(10*time.Second, cmd) - if err != nil { - return "", fmt.Errorf("Unable to call ip: %s\n%s", err, out) - } - - submatches := searchRegex.FindSubmatch(out) - if len(submatches) < 2 { - return "", fmt.Errorf("Unable to find default gateway in ip output: \n%s", out) - } - - return string(submatches[1]), nil -} diff --git a/src/github.com/getlantern/go-igdman/igdman/util_test.go b/src/github.com/getlantern/go-igdman/igdman/util_test.go deleted file mode 100644 index 420e994ac9..0000000000 --- a/src/github.com/getlantern/go-igdman/igdman/util_test.go +++ /dev/null @@ -1,22 +0,0 @@ -package igdman - -import ( - "os" - "testing" -) - -// TestDefaultGateway requires an environment variable GATEWAY_IP needs to be -// set for this test to work. -func TestDefaultGateway(t *testing.T) { - ip, err := defaultGatewayIp() - if err != nil { - t.Fatalf("Error getting gateway IP: %s", err) - } - expectedGatewayIp := os.Getenv("GATEWAY_IP") - if expectedGatewayIp == "" { - t.Fatalf("Please set the environment variable GATEWAY_IP to provide your expected Gateway IP address") - } - if ip != expectedGatewayIp { - t.Errorf("Wrong Gateway IP. Expected: %s, got: %s", expectedGatewayIp, ip) - } -} diff --git a/src/github.com/getlantern/go-igdman/igdman/util_windows.go b/src/github.com/getlantern/go-igdman/igdman/util_windows.go deleted file mode 100644 index 2562ea7803..0000000000 --- a/src/github.com/getlantern/go-igdman/igdman/util_windows.go +++ /dev/null @@ -1,34 +0,0 @@ -package igdman - -import ( - "fmt" - "os/exec" - "regexp" -) - -var ( - searchRegex *regexp.Regexp -) - -func init() { - var err error - searchRegex, err = regexp.Compile(".*Default Gateway[^:]+: ([0-9]{1,3}\\.[0-9]{1,3}\\.[0-9,]{1,3}\\.[0-9,]{1,3})\\.*") - if err != nil { - log.Fatalf("Unable to compile searchRegex: %s", err) - } -} - -func defaultGatewayIp() (string, error) { - cmd := exec.Command("ipconfig") - out, err := cmd.CombinedOutput() - if err != nil { - return "", fmt.Errorf("Unable to call ipconfig: %s\n%s", err, out) - } - - submatches := searchRegex.FindSubmatch(out) - if len(submatches) < 2 { - return "", fmt.Errorf("Unable to find default gateway in ipconfig output: \n%s", out) - } - - return string(submatches[1]), nil -} diff --git a/src/github.com/getlantern/http-proxy/.gitignore b/src/github.com/getlantern/http-proxy/.gitignore new file mode 100644 index 0000000000..35a9498262 --- /dev/null +++ b/src/github.com/getlantern/http-proxy/.gitignore @@ -0,0 +1,31 @@ +# Compiled Object files, Static and Dynamic libs (Shared Objects) +*.o +*.a +*.so + +# Folders +_obj +_test + +# Architecture specific extensions/prefixes +*.[568vq] +[568vq].out + +*.cgo1.go +*.cgo2.c +_cgo_defun.c +_cgo_gotypes.go +_cgo_export.* + +_testmain.go + +*.exe +*.test +*.prof + +.env +*.pem +http-proxy +/bin +/pkg +http-proxy.raw diff --git a/src/github.com/getlantern/http-proxy/.travis.yml b/src/github.com/getlantern/http-proxy/.travis.yml new file mode 100644 index 0000000000..dd82e20d24 --- /dev/null +++ b/src/github.com/getlantern/http-proxy/.travis.yml @@ -0,0 +1,12 @@ +language: go +go: +- 1.5.1 +install: +- go get golang.org/x/tools/cmd/cover +- go get -v github.com/axw/gocov/gocov +- go get -v github.com/mattn/goveralls +- go get -t +script: +- GOPATH=`pwd`:$GOPATH; go test -race -v -covermode=atomic -coverprofile=profile_tmp github.com/getlantern/http-proxy && tail -n +2 profile_tmp >> profile.cov && tail -n +2 profile_tmp >> profile.cov +after_success: +- GOPATH=`pwd`:$GOPATH $HOME/gopath/bin/goveralls -coverprofile=profile.cov -service=travis-ci diff --git a/src/github.com/getlantern/lantern-mobile/lantern/LICENSE b/src/github.com/getlantern/http-proxy/LICENSE similarity index 99% rename from src/github.com/getlantern/lantern-mobile/lantern/LICENSE rename to src/github.com/getlantern/http-proxy/LICENSE index e06d208186..8f71f43fee 100644 --- a/src/github.com/getlantern/lantern-mobile/lantern/LICENSE +++ b/src/github.com/getlantern/http-proxy/LICENSE @@ -1,4 +1,4 @@ -Apache License + Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ diff --git a/src/github.com/getlantern/http-proxy/README.md b/src/github.com/getlantern/http-proxy/README.md new file mode 100644 index 0000000000..2eeedbbbce --- /dev/null +++ b/src/github.com/getlantern/http-proxy/README.md @@ -0,0 +1,98 @@ +# HTTP Proxy in Go + +[![Build Status](https://travis-ci.org/getlantern/http-proxy.svg?branch=master)](https://travis-ci.org/getlantern/http-proxy) + +## Run + +Go 1.5 or later is required. + +First get dependencies: + +``` +go get -t +``` + +Then run with: + +``` +go run http_proxy.go +``` + +## Build your own Proxy + +This proxy is built around the classical *Middleware* pattern. You can see examples in the `forward` and `httpconnect` packges. They can be chained together forming a series of filters. + +See this code snippet: + +``` go +// Middleware: Forward HTTP Messages +forwarder, err := forward.New(nil, forward.IdleTimeoutSetter(time.Duration(*idleClose)*time.Second)) +if err != nil { + log.Error(err) +} + +// Middleware: Handle HTTP CONNECT +httpConnect, err := httpconnect.New(forwarder, httpconnect.IdleTimeoutSetter(time.Duration(*idleClose)*time.Second)) +if err != nil { + log.Error(err) +} + +... +``` + +Additionally, this proxy uses the concept of *connection wrappers*, which work as a series of wrappers over the listeners generating the connections, and the connections themselves. + +The following is an extract of the default listeners you can find in this proxy. You need to provide functions that take the previous listener and produce a new one, wrapping it in the process. Note that the generated connections must implement `StateAwareConn`. See more examples in `listeners`. + +``` go +srv.AddListenerWrappers( + // Limit max number of simultaneous connections + func(ls net.Listener) net.Listener { + return listeners.NewLimitedListener(ls, *maxConns) + }, + + // Close connections after 30 seconds of no activity + func(ls net.Listener) net.Listener { + return listeners.NewIdleConnListener(ls, time.Duration(*idleClose)*time.Second) + }, +) +``` + + +## Test + +### Run tests + +``` +go test +``` + +Use this for verbose output: + +``` +TRACE=1 go test +``` + +### Manual testing + +*Keep in mind that cURL doesn't support tunneling through an HTTPS proxy, so if you use the -https option you have to use other tools for testing. + +Run the server as follows: + +``` +go run http_proxy.go +``` + +Test direct proxying with cURL: + +``` +curl -kvx localhost:8080 http://www.google.com/humans.txt +curl -kvx localhost:8080 https://www.google.com/humans.txt +``` + +Test HTTP connect with cURL: + +``` +curl -kpvx localhost:8080 http://www.google.com/humans.txt +curl -kpvx localhost:8080 https://www.google.com/humans.txt +``` diff --git a/src/github.com/getlantern/http-proxy/commonfilter/commonfilter.go b/src/github.com/getlantern/http-proxy/commonfilter/commonfilter.go new file mode 100644 index 0000000000..f36a036123 --- /dev/null +++ b/src/github.com/getlantern/http-proxy/commonfilter/commonfilter.go @@ -0,0 +1,101 @@ +package commonfilter + +import ( + "errors" + "net" + "net/http" + "strings" + + "github.com/getlantern/golog" + "github.com/getlantern/http-proxy/utils" +) + +var log = golog.LoggerFor("commonfilter") + +type CommonFilter struct { + errHandler utils.ErrorHandler + next http.Handler + + localIPs []net.IP + exceptions []string + + // Allow tests in localhost, because this filter blocks request to this address + testingLocalhost bool +} + +type optSetter func(f *CommonFilter) error + +func SetException(addr string) optSetter { + return func(f *CommonFilter) error { + f.exceptions = append(f.exceptions, addr) + return nil + } +} + +func New(next http.Handler, testingLocalhost bool, setters ...optSetter) (*CommonFilter, error) { + f := &CommonFilter{ + next: next, + errHandler: utils.DefaultHandler, + testingLocalhost: testingLocalhost, + } + + for _, s := range setters { + if err := s(f); err != nil { + return nil, err + } + } + + addrs, err := net.InterfaceAddrs() + if err != nil { + log.Errorf("Error enumerating local addresses: %v\n", err) + } + + for _, a := range addrs { + str := a.String() + idx := strings.Index(str, "/") + if idx != -1 { + str = str[:idx] + } + ip := net.ParseIP(str) + f.localIPs = append(f.localIPs, ip) + } + + return f, nil +} + +func (f *CommonFilter) ServeHTTP(w http.ResponseWriter, req *http.Request) { + if !f.testingLocalhost && !f.isException(req.URL.Host) { + reqAddr, err := net.ResolveTCPAddr("tcp", req.Host) + + // If there was an error resolving is probably because it wasn't an address + // in the form localhost:port + if err == nil { + if reqAddr.IP.IsLoopback() { + f.errHandler.ServeHTTP(w, req, err) + return + } + for _, ip := range f.localIPs { + if reqAddr.IP.Equal(ip) { + f.errHandler.ServeHTTP(w, req, err) + return + } + } + + } + } + + if f.next == nil { + f.errHandler.ServeHTTP(w, req, errors.New("Next handler is not defined (nil)")) + } else { + f.next.ServeHTTP(w, req) + } +} + +func (f *CommonFilter) isException(addr string) bool { + for _, a := range f.exceptions { + if a == addr { + return true + } + } + return false +} diff --git a/src/github.com/getlantern/http-proxy/forward/forward.go b/src/github.com/getlantern/http-proxy/forward/forward.go new file mode 100644 index 0000000000..d1e2d2e8b3 --- /dev/null +++ b/src/github.com/getlantern/http-proxy/forward/forward.go @@ -0,0 +1,216 @@ +package forward + +import ( + "io" + "net" + "net/http" + "net/http/httputil" + "net/url" + "time" + + "github.com/getlantern/golog" + "github.com/getlantern/http-proxy/utils" + "github.com/getlantern/idletiming" +) + +var log = golog.LoggerFor("forward") + +type Forwarder struct { + errHandler utils.ErrorHandler + roundTripper http.RoundTripper + rewriter RequestRewriter + next http.Handler + + idleTimeout time.Duration +} + +type optSetter func(f *Forwarder) error + +func RoundTripper(r http.RoundTripper) optSetter { + return func(f *Forwarder) error { + f.roundTripper = r + return nil + } +} + +type RequestRewriter interface { + Rewrite(r *http.Request) +} + +func Rewriter(r RequestRewriter) optSetter { + return func(f *Forwarder) error { + f.rewriter = r + return nil + } +} + +func IdleTimeoutSetter(i time.Duration) optSetter { + return func(f *Forwarder) error { + f.idleTimeout = i + return nil + } +} + +func New(next http.Handler, setters ...optSetter) (*Forwarder, error) { + idleTimeoutPtr := new(time.Duration) + dialerFunc := func(network, addr string) (net.Conn, error) { + conn, err := net.DialTimeout(network, addr, time.Second*30) + if err != nil { + return nil, err + } + + idleConn := idletiming.Conn(conn, *idleTimeoutPtr, func() { + if conn != nil { + conn.Close() + } + }) + return idleConn, err + } + + var timeoutTransport http.RoundTripper = &http.Transport{ + Dial: dialerFunc, + TLSHandshakeTimeout: 10 * time.Second, + } + f := &Forwarder{ + errHandler: utils.DefaultHandler, + roundTripper: timeoutTransport, + next: next, + idleTimeout: 30 * time.Second, + } + for _, s := range setters { + if err := s(f); err != nil { + return nil, err + } + } + + // Make sure we update the timeout that dialer is going to use + *idleTimeoutPtr = f.idleTimeout + + if f.rewriter == nil { + f.rewriter = &HeaderRewriter{ + TrustForwardHeader: true, + Hostname: "", + } + } + + return f, nil +} + +func (f *Forwarder) ServeHTTP(w http.ResponseWriter, req *http.Request) { + + // Create a copy of the request suitable for our needs + reqClone, err := f.cloneRequest(req, req.URL) + if err != nil { + log.Errorf("Error forwarding to %v, error: %v", req.Host, err) + f.errHandler.ServeHTTP(w, req, err) + return + } + f.rewriter.Rewrite(reqClone) + + if log.IsTraceEnabled() { + reqStr, _ := httputil.DumpRequest(req, false) + log.Tracef("Forwarder Middleware received request:\n%s", reqStr) + + reqStr2, _ := httputil.DumpRequest(reqClone, false) + log.Tracef("Forwarder Middleware forwarding rewritten request:\n%s", reqStr2) + } + + // Forward the request and get a response + start := time.Now().UTC() + response, err := f.roundTripper.RoundTrip(reqClone) + if err != nil { + log.Debugf("Error forwarding to %v, error: %v", req.Host, err) + f.errHandler.ServeHTTP(w, req, err) + return + } + log.Debugf("Round trip: %v, code: %v, duration: %v", + reqClone.URL, response.StatusCode, time.Now().UTC().Sub(start)) + + if log.IsTraceEnabled() { + respStr, _ := httputil.DumpResponse(response, true) + log.Tracef("Forward Middleware received response:\n%s", respStr) + } + + // Forward the response to the origin + copyHeadersForForwarding(w.Header(), response.Header) + w.WriteHeader(response.StatusCode) + + // It became nil in a Co-Advisor test though the doc says it will never be nil + if response.Body != nil { + _, err = io.Copy(w, response.Body) + if err != nil { + log.Debug(err) + } + + response.Body.Close() + } +} + +func (f *Forwarder) cloneRequest(req *http.Request, u *url.URL) (*http.Request, error) { + outReq := new(http.Request) + // Beware, this will make a shallow copy. We have to copy all maps + *outReq = *req + + outReq.Proto = "HTTP/1.1" + outReq.ProtoMajor = 1 + outReq.ProtoMinor = 1 + // Overwrite close flag: keep persistent connection for the backend servers + outReq.Close = false + + // Request Header + outReq.Header = make(http.Header) + copyHeadersForForwarding(outReq.Header, req.Header) + // Ensure we have a HOST header (important for Go 1.6+ because http.Server + // strips the HOST header from the inbound request) + outReq.Header.Set("Host", req.Host) + + // Request URL + outReq.URL = cloneURL(req.URL) + // We know that is going to be HTTP always because HTTPS isn't forwarded. + // We need to hardcode it here because req.URL.Scheme can be undefined, since + // client request don't need to use absolute URIs + outReq.URL.Scheme = "http" + // We need to make sure the host is defined in the URL (not the actual URI) + outReq.URL.Host = req.Host + outReq.URL.RawQuery = req.URL.RawQuery + + userAgent := req.UserAgent() + if userAgent == "" { + outReq.Header.Del("User-Agent") + } else { + outReq.Header.Set("User-Agent", userAgent) + } + + /* + // Trailer support + // We are forced to do this because Go's server won't allow us to read the trailers otherwise + _, err := httputil.DumpRequestOut(req, true) + if err != nil { + log.Errorf("Error: %v", err) + return outReq, err + } + + rcloser := ioutil.NopCloser(req.Body) + outReq.Body = rcloser + + chunkedTransfer := false + for _, enc := range req.TransferEncoding { + if enc == "chunked" { + chunkedTransfer = true + break + } + } + + // Append Trailer + if chunkedTransfer && len(req.Trailer) > 0 { + outReq.Trailer = http.Header{} + for k, vv := range req.Trailer { + for _, v := range vv { + outReq.Trailer.Add(k, v) + } + } + } + */ + + return outReq, nil +} diff --git a/src/github.com/getlantern/http-proxy/forward/forward_test.go b/src/github.com/getlantern/http-proxy/forward/forward_test.go new file mode 100644 index 0000000000..5276df21eb --- /dev/null +++ b/src/github.com/getlantern/http-proxy/forward/forward_test.go @@ -0,0 +1,46 @@ +package forward + +import ( + "errors" + "net/http" + "testing" + + "github.com/getlantern/testify/assert" +) + +type mockRT struct { + roundTrip func(*http.Request) (*http.Response, error) +} + +func (m mockRT) RoundTrip(r *http.Request) (*http.Response, error) { + return m.roundTrip(r) +} + +type emptyRW struct { +} + +func (m emptyRW) Header() http.Header { + return http.Header{} +} + +func (m emptyRW) Write([]byte) (int, error) { + return 0, nil +} + +func (m emptyRW) WriteHeader(int) { +} + +// Regression for https://github.com/getlantern/http-proxy/issues/70 +// and an issue of unable to distinguish slash from %2F prior to Go 1.5. +func TestCloneRequest(t *testing.T) { + const rawPath = "/%E4%B8%9C%E6%96%B9Project/http%3A%2F%2Fwww.site.com%2Fsomething" + const url = "http://zh.moegirl.org" + rawPath + rt := mockRT{func(r *http.Request) (*http.Response, error) { + assert.Equal(t, url, r.URL.String(), "should not alter the path") + assert.Equal(t, "zh.moegirl.org", r.Header.Get("Host"), "should have host header") + return nil, errors.New("intentionally fail") + }} + fwd, _ := New(nil, RoundTripper(rt)) + req, _ := http.NewRequest("GET", url, nil) + fwd.ServeHTTP(emptyRW{}, req) +} diff --git a/src/github.com/getlantern/http-proxy/forward/rewrite.go b/src/github.com/getlantern/http-proxy/forward/rewrite.go new file mode 100644 index 0000000000..116575a6f9 --- /dev/null +++ b/src/github.com/getlantern/http-proxy/forward/rewrite.go @@ -0,0 +1,53 @@ +package forward + +import ( + "net" + "net/http" + "strings" +) + +const ( + XForwardedProto = "X-Forwarded-Proto" + XForwardedFor = "X-Forwarded-For" + XForwardedHost = "X-Forwarded-Host" + XForwardedServer = "X-Forwarded-Server" + ContentLength = "Content-Length" +) + +// Rewriter is responsible for removing hop-by-hop headers and setting forwarding headers +type HeaderRewriter struct { + TrustForwardHeader bool + Hostname string +} + +func (rw *HeaderRewriter) Rewrite(req *http.Request) { + if clientIP, _, err := net.SplitHostPort(req.RemoteAddr); err == nil { + if rw.TrustForwardHeader { + if prior, ok := req.Header[XForwardedFor]; ok { + clientIP = strings.Join(prior, ", ") + ", " + clientIP + } + } + req.Header.Set(XForwardedFor, clientIP) + } + + // In principle we don't want to add the Proto and Host headers + /* + if xfp := req.Header.Get(XForwardedProto); xfp != "" && rw.TrustForwardHeader { + req.Header.Set(XForwardedProto, xfp) + } else if req.TLS != nil { + req.Header.Set(XForwardedProto, "https") + } else { + req.Header.Set(XForwardedProto, "http") + } + + if xfh := req.Header.Get(XForwardedHost); xfh != "" && rw.TrustForwardHeader { + req.Header.Set(XForwardedHost, xfh) + } else if req.Host != "" { + req.Header.Set(XForwardedHost, req.Host) + } + */ + + if rw.Hostname != "" { + req.Header.Set(XForwardedServer, rw.Hostname) + } +} diff --git a/src/github.com/getlantern/http-proxy/forward/utils.go b/src/github.com/getlantern/http-proxy/forward/utils.go new file mode 100644 index 0000000000..89c7fb1175 --- /dev/null +++ b/src/github.com/getlantern/http-proxy/forward/utils.go @@ -0,0 +1,52 @@ +package forward + +import ( + "net/http" + "net/url" +) + +// cloneURL provides update safe copy by avoiding shallow copying User field +func cloneURL(i *url.URL) *url.URL { + out := *i + if i.User != nil { + out.User = &(*i.User) + } + return &out +} + +// copyHeadersForForwarding will copy the headers but filter those that shouldn't be +// forwarded +func copyHeadersForForwarding(dst, src http.Header) { + var extraHopByHopHeaders []string + for k, vv := range src { + switch k { + // Skip hop-by-hop headers, ref section 13.5.1 of http://www.ietf.org/rfc/rfc2616.txt + case "Connection": + // section 14.10 of rfc2616 + // the slice is short typically, don't bother sort it to speed up lookup + extraHopByHopHeaders = vv + case "Keep-Alive": + case "Proxy-Authenticate": + case "Proxy-Authorization": + case "TE": + case "Trailers": + case "Transfer-Encoding": + case "Upgrade": + default: + if !contains(k, extraHopByHopHeaders) { + for _, v := range vv { + dst.Add(k, v) + } + } + } + } +} + +func contains(k string, s []string) bool { + for _, h := range s { + if k == h { + return true + } + } + return false +} diff --git a/src/github.com/getlantern/http-proxy/http_proxy.go b/src/github.com/getlantern/http-proxy/http_proxy.go new file mode 100644 index 0000000000..145da3a67d --- /dev/null +++ b/src/github.com/getlantern/http-proxy/http_proxy.go @@ -0,0 +1,92 @@ +package main + +import ( + "flag" + "net" + "os" + "time" + + "github.com/getlantern/golog" + + "github.com/getlantern/http-proxy/commonfilter" + "github.com/getlantern/http-proxy/forward" + "github.com/getlantern/http-proxy/httpconnect" + "github.com/getlantern/http-proxy/listeners" + "github.com/getlantern/http-proxy/logging" + "github.com/getlantern/http-proxy/server" +) + +var ( + testingLocal = false + log = golog.LoggerFor("http-proxy") + + help = flag.Bool("help", false, "Get usage help") + keyfile = flag.String("key", "", "Private key file name") + certfile = flag.String("cert", "", "Certificate file name") + https = flag.Bool("https", false, "Use TLS for client to proxy communication") + addr = flag.String("addr", ":8080", "Address to listen") + maxConns = flag.Uint64("maxconns", 0, "Max number of simultaneous connections allowed connections") + idleClose = flag.Uint64("idleclose", 30, "Time in seconds that an idle connection will be allowed before closing it") +) + +func main() { + var err error + + _ = flag.CommandLine.Parse(os.Args[1:]) + if *help { + flag.Usage() + return + } + + // Logging + // TODO: use real parameters + err = logging.Init("instanceid", "version", "releasedate", "") + if err != nil { + log.Error(err) + } + + // Middleware (runs in reverse order as they are added) + + // Middleware: Forward HTTP Messages + forwarder, err := forward.New(nil, forward.IdleTimeoutSetter(time.Duration(*idleClose)*time.Second)) + if err != nil { + log.Error(err) + } + + // Middleware: Handle HTTP CONNECT + httpConnect, err := httpconnect.New(forwarder, httpconnect.IdleTimeoutSetter(time.Duration(*idleClose)*time.Second)) + if err != nil { + log.Error(err) + } + + // Middleware: Common request filter + commonHandler, err := commonfilter.New(httpConnect, testingLocal) + if err != nil { + log.Error(err) + } + + // Create server + srv := server.NewServer(commonHandler) + + // Add net.Listener wrappers for inbound connections + srv.AddListenerWrappers( + // Limit max number of simultaneous connections + func(ls net.Listener) net.Listener { + return listeners.NewLimitedListener(ls, *maxConns) + }, + // Close connections after 30 seconds of no activity + func(ls net.Listener) net.Listener { + return listeners.NewIdleConnListener(ls, time.Duration(*idleClose)*time.Second) + }, + ) + + // Serve HTTP/S + if *https { + err = srv.ListenAndServeHTTPS(*addr, *keyfile, *certfile, nil) + } else { + err = srv.ListenAndServeHTTP(*addr, nil) + } + if err != nil { + log.Errorf("Error serving: %v", err) + } +} diff --git a/src/github.com/getlantern/http-proxy/http_proxy_test.go b/src/github.com/getlantern/http-proxy/http_proxy_test.go new file mode 100644 index 0000000000..d21ec5fbe8 --- /dev/null +++ b/src/github.com/getlantern/http-proxy/http_proxy_test.go @@ -0,0 +1,631 @@ +package main + +import ( + "crypto/tls" + "flag" + "fmt" + "net" + "net/http" + "net/http/httptest" + "net/url" + "os" + "strconv" + "testing" + "time" + + "github.com/getlantern/keyman" + "github.com/getlantern/measured" + "github.com/getlantern/testify/assert" + + "github.com/getlantern/http-proxy/commonfilter" + "github.com/getlantern/http-proxy/forward" + "github.com/getlantern/http-proxy/httpconnect" + "github.com/getlantern/http-proxy/listeners" + "github.com/getlantern/http-proxy/server" +) + +const ( + tunneledReq = "GET / HTTP/1.1\r\n\r\n" + originResponse = "Fight for a Free Internet!" +) + +var ( + httpProxyAddr string + tlsProxyAddr string + httpOriginServer *originHandler + httpOriginURL string + tlsOriginServer *originHandler + tlsOriginURL string + + serverCertificate *keyman.Certificate + // TODO: this should be imported from tlsdefaults package, but is not being + // exported there. + preferredCipherSuites = []uint16{ + tls.TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, + tls.TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, + tls.TLS_ECDHE_RSA_WITH_RC4_128_SHA, + tls.TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA, + tls.TLS_RSA_WITH_RC4_128_SHA, + tls.TLS_RSA_WITH_3DES_EDE_CBC_SHA, + tls.TLS_RSA_WITH_AES_128_CBC_SHA, + tls.TLS_RSA_WITH_AES_256_CBC_SHA, + tls.TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, + tls.TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, + } +) + +func init() { + testingLocal = true +} + +func TestMain(m *testing.M) { + flag.Parse() + var err error + + // Set up mock origin servers + httpOriginURL, httpOriginServer = newOriginHandler(originResponse, false) + defer httpOriginServer.Close() + tlsOriginURL, tlsOriginServer = newOriginHandler(originResponse, true) + defer tlsOriginServer.Close() + + // Set up HTTP chained server + httpProxyAddr, err = setupNewHTTPServer(0, 30*time.Second) + if err != nil { + log.Error("Error starting proxy server") + os.Exit(1) + } + + // Set up HTTPS chained server + tlsProxyAddr, err = setupNewHTTPSServer(0, 30*time.Second) + if err != nil { + log.Error("Error starting proxy server") + os.Exit(1) + } + + os.Exit(m.Run()) +} + +func TestMaxConnections(t *testing.T) { + connectReq := "CONNECT %s HTTP/1.1\r\nHost: %s\r\n\r\n" + + addr, err := setupNewHTTPServer(5, 30*time.Second) + if err != nil { + assert.Fail(t, "Error starting proxy server") + } + + //limitedServer.httpServer.SetKeepAlivesEnabled(false) + okFn := func(conn net.Conn, originURL *url.URL) { + req := fmt.Sprintf(connectReq, originURL.Host, originURL.Host) + conn.Write([]byte(req)) + var buf [400]byte + _, err := conn.Read(buf[:]) + + assert.NoError(t, err) + + time.Sleep(time.Millisecond * 100) + } + + waitFn := func(conn net.Conn, originURL *url.URL) { + conn.SetReadDeadline(time.Now().Add(50 * time.Millisecond)) + + req := fmt.Sprintf(connectReq, originURL.Host, originURL.Host) + conn.Write([]byte(req)) + var buf [400]byte + _, err := conn.Read(buf[:]) + + if assert.Error(t, err) { + e, ok := err.(*net.OpError) + assert.True(t, ok && e.Timeout(), "should be a time out error") + } + } + + for i := 0; i < 5; i++ { + go testRoundTrip(t, addr, false, httpOriginServer, okFn) + } + + time.Sleep(time.Millisecond * 10) + + for i := 0; i < 5; i++ { + go testRoundTrip(t, addr, false, httpOriginServer, waitFn) + } + + time.Sleep(time.Millisecond * 100) + + for i := 0; i < 5; i++ { + go testRoundTrip(t, addr, false, httpOriginServer, okFn) + } +} + +func TestIdleClientConnections(t *testing.T) { + addr, err := setupNewHTTPServer(0, 100*time.Millisecond) + if err != nil { + assert.Fail(t, "Error starting proxy server") + } + + okFn := func(conn net.Conn, originURL *url.URL) { + time.Sleep(time.Millisecond * 90) + conn.Write([]byte("GET / HTTP/1.1\r\nHost: www.google.com\r\n\r\n")) + + var buf [400]byte + _, err := conn.Read(buf[:]) + + assert.NoError(t, err) + } + + idleFn := func(conn net.Conn, originURL *url.URL) { + time.Sleep(time.Millisecond * 110) + conn.Write([]byte("GET / HTTP/1.1\r\nHost: www.google.com\r\n\r\n")) + + var buf [400]byte + _, err := conn.Read(buf[:]) + + assert.Error(t, err) + } + + go testRoundTrip(t, addr, false, httpOriginServer, okFn) + testRoundTrip(t, addr, false, httpOriginServer, idleFn) +} + +// A proxy with a custom origin server connection timeout +func impatientProxy(maxConns uint64, idleTimeout time.Duration) (string, error) { + forwarder, err := forward.New(nil, forward.IdleTimeoutSetter(idleTimeout)) + if err != nil { + log.Error(err) + } + + // Middleware: Handle HTTP CONNECT + httpConnect, err := httpconnect.New(forwarder, httpconnect.IdleTimeoutSetter(idleTimeout)) + if err != nil { + log.Error(err) + } + + srv := server.NewServer(httpConnect) + + // Add net.Listener wrappers for inbound connections + + srv.AddListenerWrappers( + // Close connections after 30 seconds of no activity + func(ls net.Listener) net.Listener { + return listeners.NewIdleConnListener(ls, time.Second*30) + }, + ) + + ready := make(chan string) + wait := func(addr string) { + ready <- addr + } + go func(err *error) { + if *err = srv.ListenAndServeHTTP("localhost:0", wait); err != nil { + log.Errorf("Unable to serve: %s", err) + } + }(&err) + return <-ready, err +} + +func chunkedReq(t *testing.T, buf *[400]byte, conn net.Conn, originURL *url.URL) error { + str1tpl := "POST / HTTP/1.1\r\nTransfer-Encoding: chunked\r\nHost: %s\r\n\r\n" + str2 := "64\r\neqxnmrkoccpsnhcsrcqbuuvhvbhbcsdijcvxuglykcqxjspawibqcyzzzjacbfkmkijequeazvzinqjmamcdleeknfoqmbdwjmcb\r\n0\r\n\r\n" + + str1 := fmt.Sprintf(str1tpl, originURL.Host) + t.Log("\n" + str1) + conn.Write([]byte(str1)) + + time.Sleep(150 * time.Millisecond) + + t.Log("\n" + str2) + conn.Write([]byte([]byte(str2))) + + _, err := conn.Read(buf[:]) + + t.Log("\n" + string(buf[:])) + + return err +} + +func TestIdleOriginDirect(t *testing.T) { + okAddr, err := impatientProxy(0, 30*time.Second) + if err != nil { + assert.Fail(t, "Error starting proxy server: %s", err) + } + + impatientAddr, err := impatientProxy(0, 50*time.Millisecond) + if err != nil { + assert.Fail(t, "Error starting proxy server: %s", err) + } + + okForwardFn := func(conn net.Conn, originURL *url.URL) { + var buf [400]byte + chunkedReq(t, &buf, conn, originURL) + assert.Contains(t, string(buf[:]), "200 OK", "should succeed") + } + + failForwardFn := func(conn net.Conn, originURL *url.URL) { + var buf [400]byte + chunkedReq(t, &buf, conn, originURL) + assert.Contains(t, string(buf[:]), "502 Bad Gateway", "should fail with 502") + } + + testRoundTrip(t, okAddr, false, httpOriginServer, okForwardFn) + testRoundTrip(t, impatientAddr, false, httpOriginServer, failForwardFn) +} + +func TestIdleOriginConnect(t *testing.T) { + okAddr, err := impatientProxy(0, 30*time.Second) + if err != nil { + assert.Fail(t, "Error starting proxy server: %s", err) + } + + impatientAddr, err := impatientProxy(0, 50*time.Millisecond) + if err != nil { + assert.Fail(t, "Error starting proxy server: %s", err) + } + + connectReq := func(conn net.Conn, originURL *url.URL) error { + reqStr := "CONNECT %s HTTP/1.1\r\nHost: %s\r\n\r\n" + req := fmt.Sprintf(reqStr, originURL.Host, originURL.Host) + conn.Write([]byte(req)) + var buf [400]byte + conn.Read(buf[:]) + + return chunkedReq(t, &buf, conn, originURL) + } + + okConnectFn := func(conn net.Conn, originURL *url.URL) { + err := connectReq(conn, originURL) + + assert.NoError(t, err, "should succeed") + } + + failConnectFn := func(conn net.Conn, originURL *url.URL) { + err := connectReq(conn, originURL) + + assert.Error(t, err, "should fail") + } + + testRoundTrip(t, okAddr, false, httpOriginServer, okConnectFn) + testRoundTrip(t, impatientAddr, false, httpOriginServer, failConnectFn) +} + +// X-Lantern-Auth-Token + X-Lantern-Device-Id -> 200 OK <- Tunneled request -> 200 OK +func TestConnectOK(t *testing.T) { + connectReq := "CONNECT %s HTTP/1.1\r\nHost: %s\r\n\r\n" + connectResp := "HTTP/1.1 200 OK\r\n" + + testHTTP := func(conn net.Conn, originURL *url.URL) { + req := fmt.Sprintf(connectReq, originURL.Host, originURL.Host) + t.Log("\n" + req) + _, err := conn.Write([]byte(req)) + if !assert.NoError(t, err, "should write CONNECT request") { + t.FailNow() + } + + var buf [400]byte + _, err = conn.Read(buf[:]) + if !assert.Contains(t, string(buf[:]), connectResp, + "should get 200 OK") { + t.FailNow() + } + + _, err = conn.Write([]byte(tunneledReq)) + if !assert.NoError(t, err, "should write tunneled data") { + t.FailNow() + } + + buf = [400]byte{} + _, err = conn.Read(buf[:]) + assert.Contains(t, string(buf[:]), originResponse, "should read tunneled response") + } + + testTLS := func(conn net.Conn, originURL *url.URL) { + req := fmt.Sprintf(connectReq, originURL.Host, originURL.Host) + t.Log("\n" + req) + _, err := conn.Write([]byte(req)) + if !assert.NoError(t, err, "should write CONNECT request") { + t.FailNow() + } + + var buf [400]byte + _, err = conn.Read(buf[:]) + if !assert.Contains(t, string(buf[:]), connectResp, + "should get 200 OK") { + t.FailNow() + } + + // HTTPS-Tunneled HTTPS + tunnConn := tls.Client(conn, &tls.Config{ + InsecureSkipVerify: true, + }) + tunnConn.Handshake() + + _, err = tunnConn.Write([]byte(tunneledReq)) + if !assert.NoError(t, err, "should write tunneled data") { + t.FailNow() + } + + buf = [400]byte{} + _, err = tunnConn.Read(buf[:]) + assert.Contains(t, string(buf[:]), originResponse, "should read tunneled response") + } + + testRoundTrip(t, httpProxyAddr, false, httpOriginServer, testHTTP) + testRoundTrip(t, tlsProxyAddr, true, httpOriginServer, testHTTP) + + testRoundTrip(t, httpProxyAddr, false, tlsOriginServer, testTLS) + testRoundTrip(t, tlsProxyAddr, true, tlsOriginServer, testTLS) +} + +// X-Lantern-Auth-Token + X-Lantern-Device-Id -> Forward +func TestDirectOK(t *testing.T) { + reqTempl := "GET /%s HTTP/1.1\r\nHost: %s\r\n\r\n" + failResp := "HTTP/1.1 500 Internal Server Error\r\n" + + testOk := func(conn net.Conn, originURL *url.URL) { + req := fmt.Sprintf(reqTempl, originURL.Path, originURL.Host) + t.Log("\n" + req) + _, err := conn.Write([]byte(req)) + if !assert.NoError(t, err, "should write GET request") { + t.FailNow() + } + + buf := [400]byte{} + _, err = conn.Read(buf[:]) + assert.Contains(t, string(buf[:]), originResponse, "should read tunneled response") + + } + + testFail := func(conn net.Conn, originURL *url.URL) { + req := fmt.Sprintf(reqTempl, originURL.Path, originURL.Host) + t.Log("\n" + req) + _, err := conn.Write([]byte(req)) + if !assert.NoError(t, err, "should write GET request") { + t.FailNow() + } + + buf := [400]byte{} + _, err = conn.Read(buf[:]) + t.Log("\n" + string(buf[:])) + + assert.Contains(t, string(buf[:]), failResp, "should respond with 500 Internal Server Error") + + } + + testRoundTrip(t, httpProxyAddr, false, httpOriginServer, testOk) + testRoundTrip(t, tlsProxyAddr, true, httpOriginServer, testOk) + + // HTTPS can't be tunneled using Direct Proxying, as redirections + // require a TLS handshake between the proxy and the origin + testRoundTrip(t, httpProxyAddr, false, tlsOriginServer, testFail) + testRoundTrip(t, tlsProxyAddr, true, tlsOriginServer, testFail) +} + +func TestInvalidRequest(t *testing.T) { + connectResp := "HTTP/1.1 400 Bad Request\r\n" + testFn := func(conn net.Conn, originURL *url.URL) { + _, err := conn.Write([]byte("GET HTTP/1.1\r\n\r\n")) + if !assert.NoError(t, err, "should write GET request") { + t.FailNow() + } + + buf := [400]byte{} + _, err = conn.Read(buf[:]) + assert.Contains(t, string(buf[:]), connectResp, "should 400") + + } + for i := 0; i < 10; i++ { + testRoundTrip(t, httpProxyAddr, false, tlsOriginServer, testFn) + testRoundTrip(t, tlsProxyAddr, true, tlsOriginServer, testFn) + } +} + +// +// Auxiliary functions +// + +func testRoundTrip(t *testing.T, addr string, isTLS bool, origin *originHandler, checkerFn func(conn net.Conn, originURL *url.URL)) { + var conn net.Conn + var err error + + if !isTLS { + conn, err = net.Dial("tcp", addr) + log.Debugf("%s -> %s (via HTTP) -> %s", conn.LocalAddr().String(), addr, origin.server.URL) + if !assert.NoError(t, err, "should dial proxy server") { + t.FailNow() + } + } else { + var tlsConn *tls.Conn + x509cert := serverCertificate.X509() + tlsConn, err = tls.Dial("tcp", addr, &tls.Config{ + CipherSuites: preferredCipherSuites, + InsecureSkipVerify: true, + }) + log.Debugf("%s -> %s (via HTTPS) -> %s", tlsConn.LocalAddr().String(), addr, origin.server.URL) + if !assert.NoError(t, err, "should dial proxy server") { + t.FailNow() + } + conn = tlsConn + if !tlsConn.ConnectionState().PeerCertificates[0].Equal(x509cert) { + if err := tlsConn.Close(); err != nil { + log.Errorf("Error closing chained server connection: %s", err) + } + t.Fatal("Server's certificate didn't match expected") + } + } + defer func() { + assert.NoError(t, conn.Close(), "should close connection") + }() + + url, _ := url.Parse(origin.server.URL) + checkerFn(conn, url) +} + +// +// Proxy server +// + +type proxy struct { + protocol string + addr string +} + +func basicServer(maxConns uint64, idleTimeout time.Duration) *server.Server { + + // Middleware: Forward HTTP Messages + forwarder, err := forward.New(nil, forward.IdleTimeoutSetter(idleTimeout)) + if err != nil { + log.Error(err) + } + + // Middleware: Handle HTTP CONNECT + httpConnect, err := httpconnect.New(forwarder, httpconnect.IdleTimeoutSetter(idleTimeout)) + if err != nil { + log.Error(err) + } + + // Middleware: Common request filter + commonHandler, err := commonfilter.New(httpConnect, testingLocal) + if err != nil { + log.Error(err) + } + + // Create server + srv := server.NewServer(commonHandler) + + // Add net.Listener wrappers for inbound connections + srv.AddListenerWrappers( + // Limit max number of simultaneous connections + func(ls net.Listener) net.Listener { + return listeners.NewLimitedListener(ls, maxConns) + }, + // Close connections after 30 seconds of no activity + func(ls net.Listener) net.Listener { + return listeners.NewIdleConnListener(ls, idleTimeout) + }, + ) + + return srv +} + +func setupNewHTTPServer(maxConns uint64, idleTimeout time.Duration) (string, error) { + s := basicServer(maxConns, idleTimeout) + var err error + ready := make(chan string) + wait := func(addr string) { + log.Debugf("Started HTTP proxy server at %s", addr) + ready <- addr + } + go func(err *error) { + if *err = s.ListenAndServeHTTP("localhost:0", wait); err != nil { + log.Errorf("Unable to serve: %s", err) + } + }(&err) + return <-ready, err +} + +func setupNewHTTPSServer(maxConns uint64, idleTimeout time.Duration) (string, error) { + s := basicServer(maxConns, idleTimeout) + var err error + ready := make(chan string) + wait := func(addr string) { + log.Debugf("Started HTTPS proxy server at %s", addr) + + ready <- addr + } + go func(err *error) { + if *err = s.ListenAndServeHTTPS("localhost:0", "key.pem", "cert.pem", wait); err != nil { + log.Errorf("Unable to serve: %s", err) + } + }(&err) + addr := <-ready + if err != nil { + return "", err + } + serverCertificate, err = keyman.LoadCertificateFromFile("cert.pem") + return addr, err +} + +// +// Mock origin server +// Emulating locally an origin server for testing tunnels +// + +type originHandler struct { + writer func(w http.ResponseWriter) + server *httptest.Server +} + +func (m *originHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { + m.writer(w) +} + +func (m *originHandler) Raw(msg string) { + m.writer = func(w http.ResponseWriter) { + conn, _, _ := w.(http.Hijacker).Hijack() + if _, err := conn.Write([]byte(msg)); err != nil { + log.Errorf("Unable to write to connection: %v", err) + } + if err := conn.Close(); err != nil { + log.Errorf("Unable to close connection: %v", err) + } + } +} + +func (m *originHandler) Msg(msg string) { + m.writer = func(w http.ResponseWriter) { + w.Header()["Content-Length"] = []string{strconv.Itoa(len(msg))} + _, _ = w.Write([]byte(msg)) + w.(http.Flusher).Flush() + } +} + +func (m *originHandler) Timeout(d time.Duration, msg string) { + m.writer = func(w http.ResponseWriter) { + time.Sleep(d) + w.Header()["Content-Length"] = []string{strconv.Itoa(len(msg))} + _, _ = w.Write([]byte(msg)) + w.(http.Flusher).Flush() + } +} + +func (m *originHandler) Close() { + m.server.Close() +} + +func newOriginHandler(msg string, tls bool) (string, *originHandler) { + m := originHandler{} + m.Msg(msg) + if tls { + m.server = httptest.NewTLSServer(&m) + } else { + m.server = httptest.NewServer(&m) + } + log.Debugf("Started origin server at %v", m.server.URL) + return m.server.URL, &m +} + +// +// +// Mock Redis reporter +// + +type mockReporter struct { + error map[measured.Error]int + latency []*measured.LatencyTracker + traffic []*measured.TrafficTracker +} + +func (nr *mockReporter) ReportError(e map[*measured.Error]int) error { + for k, v := range e { + nr.error[*k] = nr.error[*k] + v + } + return nil +} + +func (nr *mockReporter) ReportLatency(l []*measured.LatencyTracker) error { + nr.latency = append(nr.latency, l...) + return nil +} + +func (nr *mockReporter) ReportTraffic(t []*measured.TrafficTracker) error { + nr.traffic = append(nr.traffic, t...) + return nil +} diff --git a/src/github.com/getlantern/http-proxy/httpconnect/httpconnect.go b/src/github.com/getlantern/http-proxy/httpconnect/httpconnect.go new file mode 100644 index 0000000000..f60adb98c8 --- /dev/null +++ b/src/github.com/getlantern/http-proxy/httpconnect/httpconnect.go @@ -0,0 +1,168 @@ +package httpconnect + +import ( + "errors" + "fmt" + "io" + "net" + "net/http" + "net/http/httputil" + "strconv" + "strings" + "sync" + "time" + + "github.com/getlantern/golog" + "github.com/getlantern/http-proxy/utils" + "github.com/getlantern/idletiming" +) + +var log = golog.LoggerFor("httpconnect") + +type HTTPConnectHandler struct { + next http.Handler + idleTimeout time.Duration + allowedPorts []int +} + +type optSetter func(f *HTTPConnectHandler) error + +func IdleTimeoutSetter(i time.Duration) optSetter { + return func(f *HTTPConnectHandler) error { + f.idleTimeout = i + return nil + } +} + +func AllowedPorts(ports []int) optSetter { + return func(f *HTTPConnectHandler) error { + f.allowedPorts = ports + return nil + } +} + +func AllowedPortsFromCSV(csv string) optSetter { + return func(f *HTTPConnectHandler) error { + fields := strings.Split(csv, ",") + ports := make([]int, len(fields)) + for i, f := range fields { + p, err := strconv.Atoi(f) + if err != nil { + return err + } + ports[i] = p + } + f.allowedPorts = ports + return nil + } +} + +func New(next http.Handler, setters ...optSetter) (*HTTPConnectHandler, error) { + if next == nil { + return nil, errors.New("Next handler is not defined (nil)") + } + f := &HTTPConnectHandler{next: next} + for _, s := range setters { + if err := s(f); err != nil { + return nil, err + } + } + + return f, nil +} + +func (f *HTTPConnectHandler) ServeHTTP(w http.ResponseWriter, req *http.Request) { + if req.Method != "CONNECT" { + f.next.ServeHTTP(w, req) + return + } + + if log.IsTraceEnabled() { + reqStr, _ := httputil.DumpRequest(req, true) + log.Tracef("HTTPConnectHandler Middleware received request:\n%s", reqStr) + } + + if f.portAllowed(w, req) { + f.intercept(w, req) + } +} + +func (f *HTTPConnectHandler) portAllowed(w http.ResponseWriter, req *http.Request) bool { + if len(f.allowedPorts) == 0 { + return true + } + log.Tracef("Checking CONNECT tunnel to %s against allowed ports %v", req.Host, f.allowedPorts) + _, portString, err := net.SplitHostPort(req.Host) + if err != nil { + // CONNECT request should always include port in req.Host. + // Ref https://tools.ietf.org/html/rfc2817#section-5.2. + f.ServeError(w, req, http.StatusBadRequest, "No port field in Request-URI / Host header") + return false + } + port, err := strconv.Atoi(portString) + if err != nil { + f.ServeError(w, req, http.StatusBadRequest, "Invalid port") + return false + } + + for _, p := range f.allowedPorts { + if port == p { + return true + } + } + f.ServeError(w, req, http.StatusForbidden, "Port not allowed") + return false +} + +func (f *HTTPConnectHandler) intercept(w http.ResponseWriter, req *http.Request) (err error) { + utils.RespondOK(w, req) + + clientConn, _, err := w.(http.Hijacker).Hijack() + if err != nil { + utils.RespondBadGateway(w, req, fmt.Sprintf("Unable to hijack connection: %s", err)) + return + } + connOutRaw, err := net.Dial("tcp", req.Host) + if err != nil { + return + } + connOut := idletiming.Conn(connOutRaw, f.idleTimeout, func() { + if connOutRaw != nil { + connOutRaw.Close() + } + }) + + // Pipe data through CONNECT tunnel + closeConns := func() { + if clientConn != nil { + if err := clientConn.Close(); err != nil { + log.Debugf("Error closing the out connection: %s", err) + } + } + if connOut != nil { + if err := connOut.Close(); err != nil { + log.Debugf("Error closing the client connection: %s", err) + } + } + } + var closeOnce sync.Once + go func() { + if _, err := io.Copy(connOut, clientConn); err != nil { + log.Debug(err) + } + closeOnce.Do(closeConns) + + }() + if _, err := io.Copy(clientConn, connOut); err != nil { + log.Debug(err) + } + closeOnce.Do(closeConns) + + return +} + +func (f *HTTPConnectHandler) ServeError(w http.ResponseWriter, req *http.Request, statusCode int, reason string) { + log.Debugf("Respond error to CONNECT request to %s: %d %s", req.Host, statusCode, reason) + w.WriteHeader(statusCode) + w.Write([]byte(reason)) +} diff --git a/src/github.com/getlantern/http-proxy/httpconnect/httpconnect_test.go b/src/github.com/getlantern/http-proxy/httpconnect/httpconnect_test.go new file mode 100644 index 0000000000..9ab61d387f --- /dev/null +++ b/src/github.com/getlantern/http-proxy/httpconnect/httpconnect_test.go @@ -0,0 +1,53 @@ +package httpconnect + +import ( + "net" + "net/http" + "net/http/httptest" + "net/url" + "testing" + + "github.com/getlantern/testify/assert" +) + +func TestFilterTunnelPorts(t *testing.T) { + filter, _ := New(http.NotFoundHandler(), AllowedPorts([]int{443, 8080})) + server := httptest.NewServer(filter) + defer server.Close() + u, _ := url.Parse(server.URL) + client := http.Client{Transport: &http.Transport{ + Dial: func(network, addr string) (net.Conn, error) { + return net.Dial("tcp", u.Host) + }, + }} + + req, _ := http.NewRequest("CONNECT", "http://site.com", nil) + resp, _ := client.Do(req) + _ = resp.Body.Close() + assert.Equal(t, http.StatusBadRequest, resp.StatusCode, "CONNECT request without port should fail with 400") + + req, _ = http.NewRequest("CONNECT", "http://site.com:", nil) + resp, _ = client.Do(req) + _ = resp.Body.Close() + assert.Equal(t, http.StatusBadRequest, resp.StatusCode, "CONNECT request without port should fail with 400") + + req, _ = http.NewRequest("CONNECT", "http://site.com:abc", nil) + resp, _ = client.Do(req) + _ = resp.Body.Close() + assert.Equal(t, http.StatusBadRequest, resp.StatusCode, "CONNECT request without non-integer port should fail with 400") + + req, _ = http.NewRequest("CONNECT", "http://site.com:443", nil) + resp, _ = client.Do(req) + _ = resp.Body.Close() + assert.Equal(t, http.StatusOK, resp.StatusCode, "CONNECT request to allowed port should succeed") + + req, _ = http.NewRequest("CONNECT", "http://site.com:8080", nil) + resp, _ = client.Do(req) + _ = resp.Body.Close() + assert.Equal(t, http.StatusOK, resp.StatusCode, "CONNECT request to allowed port should succeed") + + req, _ = http.NewRequest("CONNECT", "http://site.com:8081", nil) + resp, _ = client.Do(req) + _ = resp.Body.Close() + assert.Equal(t, http.StatusForbidden, resp.StatusCode, "CONNECT request to disallowed port should fail with 403") +} diff --git a/src/github.com/getlantern/http-proxy/listeners/default.go b/src/github.com/getlantern/http-proxy/listeners/default.go new file mode 100644 index 0000000000..2ebb105796 --- /dev/null +++ b/src/github.com/getlantern/http-proxy/listeners/default.go @@ -0,0 +1,37 @@ +package listeners + +import ( + "net" + "net/http" +) + +// Wrapped defaultConnListener that generates the wrapped defaultConn +type defaultConnListener struct { + net.Listener +} + +func NewDefaultListener(l net.Listener) net.Listener { + return &defaultConnListener{l} +} + +func (l *defaultConnListener) Accept() (c net.Conn, err error) { + conn, err := l.Listener.Accept() + if err != nil { + return nil, err + } + + return &defaultConn{ + WrapConnEmbeddable: nil, + Conn: conn, + }, err +} + +// Wrapped IdleTimingConn that supports OnState +type defaultConn struct { + WrapConnEmbeddable + net.Conn +} + +func (c *defaultConn) OnState(s http.ConnState) {} + +func (c *defaultConn) ControlMessage(msgType string, data interface{}) {} diff --git a/src/github.com/getlantern/http-proxy/listeners/idleconn.go b/src/github.com/getlantern/http-proxy/listeners/idleconn.go new file mode 100644 index 0000000000..8daeb3469c --- /dev/null +++ b/src/github.com/getlantern/http-proxy/listeners/idleconn.go @@ -0,0 +1,62 @@ +package listeners + +import ( + "net" + "net/http" + "time" + + "github.com/getlantern/idletiming" +) + +// Wrapped idleConnListener that generates the wrapped idleConn +type idleConnListener struct { + net.Listener + idleTimeout time.Duration +} + +func NewIdleConnListener(l net.Listener, timeout time.Duration) net.Listener { + return &idleConnListener{ + Listener: l, + idleTimeout: timeout, + } +} + +func (l *idleConnListener) Accept() (c net.Conn, err error) { + conn, err := l.Listener.Accept() + if err != nil { + return nil, err + } + + iConn := idletiming.Conn( + conn, + l.idleTimeout, + func() { + conn.Close() + }, + ) + + sac, _ := conn.(WrapConnEmbeddable) + return &idleConn{ + WrapConnEmbeddable: sac, + IdleTimingConn: *iConn, + }, err +} + +// Wrapped IdleTimingConn that supports OnState +type idleConn struct { + WrapConnEmbeddable + idletiming.IdleTimingConn +} + +func (c *idleConn) OnState(s http.ConnState) { + if c.WrapConnEmbeddable != nil { + c.WrapConnEmbeddable.OnState(s) + } +} + +func (c *idleConn) ControlMessage(msgType string, data interface{}) { + // Simply pass down the control message to the wrapped connection + if c.WrapConnEmbeddable != nil { + c.WrapConnEmbeddable.ControlMessage(msgType, data) + } +} diff --git a/src/github.com/getlantern/http-proxy/listeners/limited.go b/src/github.com/getlantern/http-proxy/listeners/limited.go new file mode 100644 index 0000000000..6b7a0b875c --- /dev/null +++ b/src/github.com/getlantern/http-proxy/listeners/limited.go @@ -0,0 +1,154 @@ +package listeners + +import ( + "errors" + "math" + "net" + "net/http" + "sync/atomic" + "time" + + "github.com/getlantern/golog" +) + +var ( + log = golog.LoggerFor("listeners") +) + +type limitedListener struct { + net.Listener + + maxConns uint64 + numConns uint64 + idleTimeout time.Duration + + stopped int32 + stop chan bool + restart chan bool +} + +func NewLimitedListener(l net.Listener, maxConns uint64) net.Listener { + if maxConns <= 0 { + maxConns = math.MaxUint64 + } + + return &limitedListener{ + Listener: l, + stopped: 0, + stop: make(chan bool, 1), + restart: make(chan bool), + maxConns: maxConns, + idleTimeout: 30 * time.Second, + } +} + +func (sl *limitedListener) Accept() (net.Conn, error) { + select { + case <-sl.stop: + <-sl.restart + default: + } + + c, err := sl.Listener.Accept() + if err != nil { + return nil, err + } + + atomic.AddUint64(&sl.numConns, 1) + + if log.IsTraceEnabled() { + if sl.maxConns == math.MaxUint64 { + log.Tracef("Accepted a new connection, %v in total now, of unlimited connections", sl.numConns) + } else { + log.Tracef("Accepted a new connection, %v in total now, %v max allowed", sl.numConns, sl.maxConns) + } + } + + sac, _ := c.(WrapConnEmbeddable) + return &limitedConn{ + WrapConnEmbeddable: sac, + Conn: c, + listener: sl, + }, err +} + +func (sl *limitedListener) IsStopped() bool { + return atomic.LoadInt32(&sl.stopped) == 1 +} + +func (sl *limitedListener) Stop() { + if !sl.IsStopped() { + sl.stop <- true + atomic.StoreInt32(&sl.stopped, 1) + } +} + +func (sl *limitedListener) Restart() { + if sl.IsStopped() { + sl.restart <- true + atomic.StoreInt32(&sl.stopped, 0) + } +} + +type limitedConn struct { + WrapConnEmbeddable + net.Conn + listener *limitedListener + closed uint32 +} + +func (c *limitedConn) Close() (err error) { + if atomic.SwapUint32(&c.closed, 1) == 1 { + return errors.New("network connection already closed") + } + + // Substract 1 by adding the two-complement of -1 + atomic.AddUint64(&c.listener.numConns, ^uint64(0)) + log.Tracef("Closed a connection and left %v remaining", c.listener.numConns) + return c.Conn.Close() +} + +func (c *limitedConn) OnState(s http.ConnState) { + l := c.listener + if log.IsTraceEnabled() { + if l.maxConns == math.MaxUint64 { + log.Tracef("OnState(%s), numConns = %v, of unlimited connections", s, l.numConns) + } else { + log.Tracef("OnState(%s), numConns = %v, maxConns = %v", s, l.numConns, l.maxConns) + } + } + + if s == http.StateNew { + if atomic.LoadUint64(&l.numConns) >= l.maxConns { + if log.IsTraceEnabled() { + if l.maxConns == math.MaxUint64 { + log.Tracef("numConns %v (unlimited connections), stop accepting new connections", l.numConns) + } else { + log.Tracef("numConns %v >= maxConns %v, stop accepting new connections", l.numConns, l.maxConns) + } + } + l.Stop() + } else if l.IsStopped() { + if log.IsTraceEnabled() { + if l.maxConns == math.MaxUint64 { + log.Tracef("numConns %v < maxConns (unlimited connections), accept new connections again", l.numConns) + } else { + log.Tracef("numConns %v < maxConns %v, accept new connections again", l.numConns, l.maxConns) + } + } + l.Restart() + } + } + + // Pass down to wrapped connections + if c.WrapConnEmbeddable != nil { + c.WrapConnEmbeddable.OnState(s) + } +} + +func (c *limitedConn) ControlMessage(msgType string, data interface{}) { + // Simply pass down the control message to the wrapped connection + if c.WrapConnEmbeddable != nil { + c.WrapConnEmbeddable.ControlMessage(msgType, data) + } +} diff --git a/src/github.com/getlantern/http-proxy/listeners/measured.go b/src/github.com/getlantern/http-proxy/listeners/measured.go new file mode 100644 index 0000000000..6576ef260e --- /dev/null +++ b/src/github.com/getlantern/http-proxy/listeners/measured.go @@ -0,0 +1,56 @@ +package listeners + +import ( + "net" + "net/http" + "time" + + "github.com/getlantern/measured" +) + +// Wrapped stateAwareMeasuredListener that genrates the wrapped wrapMeasuredConn +type stateAwareMeasuredListener struct { + measured.MeasuredListener +} + +func NewMeasuredListener(l net.Listener, reportInterval time.Duration) net.Listener { + return &stateAwareMeasuredListener{ + MeasuredListener: *measured.Listener(l, reportInterval), + } +} + +func (l *stateAwareMeasuredListener) Accept() (c net.Conn, err error) { + c, err = l.MeasuredListener.Accept() + if err != nil { + return nil, err + } + sac, _ := c.(*measured.Conn).Conn.(WrapConnEmbeddable) + return &wrapMeasuredConn{ + WrapConnEmbeddable: sac, + Conn: c.(*measured.Conn), + }, err +} + +// Wrapped MeasuredConn that supports OnState +type wrapMeasuredConn struct { + WrapConnEmbeddable + *measured.Conn +} + +func (c *wrapMeasuredConn) OnState(s http.ConnState) { + if c.WrapConnEmbeddable != nil { + c.WrapConnEmbeddable.OnState(s) + } +} + +// Responds to the "measured" message type +func (c *wrapMeasuredConn) ControlMessage(msgType string, data interface{}) { + if msgType == "measured" { + c.Conn.ID = data.(string) + } + + // Pass it down too, just in case other wrapper does something with + if c.WrapConnEmbeddable != nil { + c.WrapConnEmbeddable.ControlMessage(msgType, data) + } +} diff --git a/src/github.com/getlantern/http-proxy/listeners/wrapconn.go b/src/github.com/getlantern/http-proxy/listeners/wrapconn.go new file mode 100644 index 0000000000..140a53a471 --- /dev/null +++ b/src/github.com/getlantern/http-proxy/listeners/wrapconn.go @@ -0,0 +1,35 @@ +package listeners + +import ( + "net" + "net/http" + "time" +) + +// WrapConnEmbeddable can be embedded along net.Conn or not +type WrapConnEmbeddable interface { + OnState(s http.ConnState) + ControlMessage(msgType string, data interface{}) +} + +// WrapConn is an interface that describes a connection that an be wrapped and +// wrap other connections. It responds to connection changes with OnState, and +// allows control messages with ControlMessage (for things like modify the +// connection at the wrapper level). +// It is important that these functions, when defined, pass the arguments +// to the wrapped connections. +type WrapConn interface { + // net.Conn interface + Read(b []byte) (n int, err error) + Write(b []byte) (n int, err error) + Close() error + LocalAddr() net.Addr + RemoteAddr() net.Addr + SetDeadline(t time.Time) error + SetReadDeadline(t time.Time) error + SetWriteDeadline(t time.Time) error + + // Additional functionality + OnState(s http.ConnState) + ControlMessage(msgType string, data interface{}) +} diff --git a/src/github.com/getlantern/http-proxy/logging/logging.go b/src/github.com/getlantern/http-proxy/logging/logging.go new file mode 100644 index 0000000000..15dfbe2f5f --- /dev/null +++ b/src/github.com/getlantern/http-proxy/logging/logging.go @@ -0,0 +1,220 @@ +package logging + +import ( + "fmt" + "io" + "os" + "path/filepath" + "strings" + "sync" + "time" + + "github.com/getlantern/go-loggly" + "github.com/getlantern/golog" + "github.com/getlantern/rotator" +) + +const ( + logTimestampFormat = "Jan 02 15:04:05.000" +) + +var ( + log = golog.LoggerFor("flashlight.logging") + logdir = "/var/log/http-proxy" + logglyTag = "http-proxy" + processStart = time.Now() + + logFile *rotator.SizeRotator + + errorOut io.Writer + debugOut io.Writer + + duplicates = make(map[string]bool) + dupLock sync.Mutex +) + +// timestamped adds a timestamp to the beginning of log lines +type timestamped struct { + io.Writer +} + +func (t timestamped) Write(p []byte) (int, error) { + // Write in single operation to prevent different log items from interleaving + return io.WriteString(t.Writer, time.Now().In(time.UTC).Format(logTimestampFormat)+" "+string(p)) +} + +func Init(instanceId string, version string, revisionDate string, logglyToken string) error { + log.Tracef("Placing logs in %v", logdir) + if _, err := os.Stat(logdir); err != nil { + if os.IsNotExist(err) { + // Create log dir + if err := os.MkdirAll(logdir, 0755); err != nil { + return fmt.Errorf("Unable to create logdir at %s: %s", logdir, err) + } + } + } + logFile = rotator.NewSizeRotator(filepath.Join(logdir, "proxy.log")) + // Set log files to 4 MB + logFile.RotationSize = 4 * 1024 * 1024 + // Keep up to 5 log files + logFile.MaxRotation = 5 + + // Loggly has its own timestamp so don't bother adding it in message, + // moreover, golog always write each line in whole, so we need not to care about line breaks. + errorOut = timestamped{NonStopWriter(os.Stderr, logFile)} + debugOut = timestamped{NonStopWriter(os.Stdout, logFile)} + golog.SetOutputs(errorOut, debugOut) + + if logglyToken != "" { + logglyWriter := &logglyErrorWriter{ + versionToLoggly: fmt.Sprintf("%v (%v)", version, revisionDate), + client: loggly.New(logglyToken, logglyTag), + } + logglyWriter.client.Defaults["instanceid"] = instanceId + addLoggly(logglyWriter) + } + + return nil +} + +// Flush forces output flushing if the output is flushable +func Flush() { + output := golog.GetOutputs().ErrorOut + if output, ok := output.(flushable); ok { + output.flush() + } +} + +func Close() error { + golog.ResetOutputs() + return logFile.Close() +} + +func addLoggly(logglyWriter io.Writer) { + golog.SetOutputs(NonStopWriter(errorOut, logglyWriter), debugOut) +} + +func removeLoggly() { + golog.SetOutputs(errorOut, debugOut) +} + +func isDuplicate(msg string) bool { + dupLock.Lock() + defer dupLock.Unlock() + + if duplicates[msg] { + return true + } + + // Implement a crude cap on the size of the map + if len(duplicates) < 1000 { + duplicates[msg] = true + } + + return false +} + +// flushable interface describes writers that can be flushed +type flushable interface { + flush() + Write(p []byte) (n int, err error) +} + +type logglyErrorWriter struct { + versionToLoggly string + client *loggly.Client +} + +func (w logglyErrorWriter) Write(b []byte) (int, error) { + fullMessage := string(b) + if isDuplicate(fullMessage) { + log.Tracef("Not logging duplicate: %v", fullMessage) + return 0, nil + } + + extra := map[string]string{ + "logLevel": "ERROR", + "version": w.versionToLoggly, + } + + // extract last 2 (at most) chunks of fullMessage to message, without prefix, + // so we can group logs with same reason in Loggly + lastColonPos := -1 + colonsSeen := 0 + for p := len(fullMessage) - 2; p >= 0; p-- { + if fullMessage[p] == ':' { + lastChar := fullMessage[p+1] + // to prevent colon in "http://" and "x.x.x.x:80" be treated as seperator + if !(lastChar == '/' || lastChar >= '0' && lastChar <= '9') { + lastColonPos = p + colonsSeen++ + if colonsSeen == 2 { + break + } + } + } + } + message := strings.TrimSpace(fullMessage[lastColonPos+1:]) + + // Loggly doesn't group fields with more than 100 characters + if len(message) > 100 { + message = message[0:100] + } + + firstColonPos := strings.IndexRune(fullMessage, ':') + if firstColonPos == -1 { + firstColonPos = 0 + } + prefix := fullMessage[0:firstColonPos] + + m := loggly.Message{ + "extra": extra, + "locationInfo": prefix, + "message": message, + "fullMessage": fullMessage, + } + + err := w.client.Send(m) + if err != nil { + return 0, err + } + return len(b), nil +} + +// flush forces output, since it normally flushes based on an interval +func (w *logglyErrorWriter) flush() { + if err := w.client.Flush(); err != nil { + log.Tracef("Error flushing loggly error writer: %v", err) + } +} + +type nonStopWriter struct { + writers []io.Writer +} + +// NonStopWriter creates a writer that duplicates its writes to all the +// provided writers, even if errors encountered while writting. +func NonStopWriter(writers ...io.Writer) io.Writer { + w := make([]io.Writer, len(writers)) + copy(w, writers) + return &nonStopWriter{w} +} + +// Write implements the method from io.Writer. +// It never fails and always return the length of bytes passed in +func (t *nonStopWriter) Write(p []byte) (int, error) { + for _, w := range t.writers { + // intentionally not checking for errors + _, _ = w.Write(p) + } + return len(p), nil +} + +// flush forces output of the writers that may provide this functionality. +func (t *nonStopWriter) flush() { + for _, w := range t.writers { + if w, ok := w.(flushable); ok { + w.flush() + } + } +} diff --git a/src/github.com/getlantern/http-proxy/logging/logging_test.go b/src/github.com/getlantern/http-proxy/logging/logging_test.go new file mode 100644 index 0000000000..91720a6d22 --- /dev/null +++ b/src/github.com/getlantern/http-proxy/logging/logging_test.go @@ -0,0 +1,94 @@ +package logging + +import ( + "bytes" + "encoding/json" + "fmt" + "regexp" + "strings" + "testing" + + "github.com/getlantern/go-loggly" + "github.com/getlantern/golog" + "github.com/getlantern/testify/assert" +) + +type BadWriter struct{} +type GoodWriter struct{ counter int } + +func (w *BadWriter) Write(p []byte) (int, error) { + return 0, fmt.Errorf("Fail intentionally") +} + +func (w *GoodWriter) Write(p []byte) (int, error) { + w.counter = len(p) + return w.counter, nil +} + +func TestNonStopWriter(t *testing.T) { + b, g := BadWriter{}, GoodWriter{} + ns := NonStopWriter(&b, &g) + ns.Write([]byte("1234")) + assert.Equal(t, 4, g.counter, "Should write to all writers even when error encountered") +} + +func TestLoggly(t *testing.T) { + var buf bytes.Buffer + var result map[string]interface{} + loggly := loggly.New("token not required") + loggly.Writer = &buf + lw := logglyErrorWriter{client: loggly} + golog.SetOutputs(lw, nil) + log := golog.LoggerFor("test") + + log.Error("") + if assert.NoError(t, json.Unmarshal(buf.Bytes(), &result), "Unmarshal error") { + assert.Equal(t, "ERROR test", result["locationInfo"]) + assert.Regexp(t, regexp.MustCompile("logging_test.go:([0-9]+)"), result["message"]) + } + + buf.Reset() + log.Error("short message") + if assert.NoError(t, json.Unmarshal(buf.Bytes(), &result), "Unmarshal error") { + assert.Equal(t, "ERROR test", result["locationInfo"]) + assert.Regexp(t, regexp.MustCompile("logging_test.go:([0-9]+) short message"), result["message"]) + } + + buf.Reset() + log.Error("message with: reason") + if assert.NoError(t, json.Unmarshal(buf.Bytes(), &result), "Unmarshal error") { + assert.Equal(t, "ERROR test", result["locationInfo"]) + assert.Regexp(t, "logging_test.go:([0-9]+) message with: reason", result["message"]) + } + + buf.Reset() + log.Error("deep reason: message with: reason") + if assert.NoError(t, json.Unmarshal(buf.Bytes(), &result), "Unmarshal error") { + assert.Equal(t, "ERROR test", result["locationInfo"]) + assert.Equal(t, "message with: reason", result["message"], "message should be last 2 chunks") + } + + buf.Reset() + log.Error("deep reason: an url https://a.com in message: reason") + if assert.NoError(t, json.Unmarshal(buf.Bytes(), &result), "Unmarshal error") { + assert.Equal(t, "an url https://a.com in message: reason", result["message"], "should not truncate url") + } + + buf.Reset() + log.Error("deep reason: an url 127.0.0.1:8787 in message: reason") + if assert.NoError(t, json.Unmarshal(buf.Bytes(), &result), "Unmarshal error") { + assert.Equal(t, "ERROR test", result["locationInfo"]) + assert.Equal(t, "an url 127.0.0.1:8787 in message: reason", result["message"], "should not truncate url") + } + + buf.Reset() + longPrefix := "message with: really l" + longMsg := longPrefix + strings.Repeat("o", 100) + "ng reason" + log.Error(longMsg) + if assert.NoError(t, json.Unmarshal(buf.Bytes(), &result), "Unmarshal error") { + assert.Equal(t, "ERROR test", result["locationInfo"]) + + assert.Regexp(t, regexp.MustCompile("logging_test.go:([0-9]+) "+longPrefix+"(o+)"), result["message"]) + assert.Equal(t, 100, len(result["message"].(string))) + } +} diff --git a/src/github.com/getlantern/http-proxy/server/connbag.go b/src/github.com/getlantern/http-proxy/server/connbag.go new file mode 100644 index 0000000000..02ae7f25cb --- /dev/null +++ b/src/github.com/getlantern/http-proxy/server/connbag.go @@ -0,0 +1,39 @@ +package server + +import ( + "sync" + + "github.com/getlantern/http-proxy/listeners" +) + +// connBag is a just bag of connections. You can put a connection in and +// withdraw it afterwards, or purge it regardless it's withdrawed or not. +type connBag struct { + mu sync.Mutex + m map[string]listeners.WrapConn +} + +func NewConnBag() *connBag { + return &connBag{m: make(map[string]listeners.WrapConn)} +} + +func (cb *connBag) Put(c listeners.WrapConn) { + cb.mu.Lock() + defer cb.mu.Unlock() + cb.m[c.RemoteAddr().String()] = c +} + +func (cb *connBag) Withdraw(remoteAddr string) (c listeners.WrapConn) { + cb.mu.Lock() + defer cb.mu.Unlock() + c = cb.m[remoteAddr] + delete(cb.m, remoteAddr) + return +} + +func (cb *connBag) Purge(remoteAddr string) { + cb.mu.Lock() + defer cb.mu.Unlock() + // non-op if item doesn't exist + delete(cb.m, remoteAddr) +} diff --git a/src/github.com/getlantern/http-proxy/server/server.go b/src/github.com/getlantern/http-proxy/server/server.go new file mode 100644 index 0000000000..13d512fad6 --- /dev/null +++ b/src/github.com/getlantern/http-proxy/server/server.go @@ -0,0 +1,102 @@ +package server + +import ( + "net" + "net/http" + + "github.com/gorilla/context" + + "github.com/getlantern/golog" + "github.com/getlantern/tlsdefaults" + + "github.com/getlantern/http-proxy/listeners" +) + +var ( + testingLocal = false + log = golog.LoggerFor("server") +) + +type listenerGenerator func(net.Listener) net.Listener + +type Server struct { + httpServer http.Server + listenerGenerators []listenerGenerator +} + +func NewServer(handler http.Handler) *Server { + cb := NewConnBag() + + proxy := http.HandlerFunc( + func(w http.ResponseWriter, req *http.Request) { + c := cb.Withdraw(req.RemoteAddr) + context.Set(req, "conn", c) + handler.ServeHTTP(w, req) + context.Clear(req) + }) + + server := &Server{ + httpServer: http.Server{Handler: proxy, + ConnState: func(c net.Conn, state http.ConnState) { + wconn, ok := c.(listeners.WrapConn) + if !ok { + panic("Should be of type WrapConn") + } + + wconn.OnState(state) + + switch state { + case http.StateActive: + cb.Put(wconn) + case http.StateClosed: + // When go server encounters abnormal request, it + // will transit to StateClosed directly without + // the handler being invoked, hence the connection + // will not be withdrawed. Purge it in such case. + cb.Purge(c.RemoteAddr().String()) + } + }, + ErrorLog: log.AsStdLogger(), + }, + } + + return server +} + +func (s *Server) AddListenerWrappers(listenerGens ...listenerGenerator) { + for _, g := range listenerGens { + s.listenerGenerators = append(s.listenerGenerators, g) + } +} + +func (s *Server) ListenAndServeHTTP(addr string, readyCb func(addr string)) error { + listener, err := net.Listen("tcp", addr) + if err != nil { + return err + } + log.Debugf("Listen http on %s", addr) + return s.Serve(listener, readyCb) +} + +func (s *Server) ListenAndServeHTTPS(addr, keyfile, certfile string, readyCb func(addr string)) error { + listener, err := tlsdefaults.Listen(addr, keyfile, certfile) + if err != nil { + return err + } + log.Debugf("Listen https on %s", addr) + return s.Serve(listener, readyCb) +} + +func (s *Server) Serve(listener net.Listener, readyCb func(addr string)) error { + l := listeners.NewDefaultListener(listener) + + for _, wrap := range s.listenerGenerators { + l = wrap(l) + } + + if readyCb != nil { + readyCb(l.Addr().String()) + } + + return s.httpServer.Serve(l) +} diff --git a/src/github.com/getlantern/http-proxy/utils/errorhandler.go b/src/github.com/getlantern/http-proxy/utils/errorhandler.go new file mode 100644 index 0000000000..003fc0319c --- /dev/null +++ b/src/github.com/getlantern/http-proxy/utils/errorhandler.go @@ -0,0 +1,38 @@ +package utils + +import ( + "io" + "net" + "net/http" +) + +type ErrorHandler interface { + ServeHTTP(w http.ResponseWriter, req *http.Request, err error) +} + +var DefaultHandler ErrorHandler = &StdHandler{} + +type StdHandler struct { +} + +func (e *StdHandler) ServeHTTP(w http.ResponseWriter, req *http.Request, err error) { + statusCode := http.StatusInternalServerError + if e, ok := err.(net.Error); ok { + if e.Timeout() { + statusCode = http.StatusGatewayTimeout + } else { + statusCode = http.StatusBadGateway + } + } else if err == io.EOF { + statusCode = http.StatusBadGateway + } + w.WriteHeader(statusCode) + w.Write([]byte(http.StatusText(statusCode))) +} + +type ErrorHandlerFunc func(http.ResponseWriter, *http.Request, error) + +// ServeHTTP calls f(w, r). +func (f ErrorHandlerFunc) ServeHTTP(w http.ResponseWriter, r *http.Request, err error) { + f(w, r, err) +} diff --git a/src/github.com/getlantern/http-proxy/utils/responses.go b/src/github.com/getlantern/http-proxy/utils/responses.go new file mode 100644 index 0000000000..dea8d8c459 --- /dev/null +++ b/src/github.com/getlantern/http-proxy/utils/responses.go @@ -0,0 +1,45 @@ +package utils + +import ( + "fmt" + "io" + "net/http" +) + +func RespondOK(writer io.Writer, req *http.Request) error { + defer func() { + if err := req.Body.Close(); err != nil { + fmt.Printf("Error closing body of OK response: %s", err) + } + }() + + resp := &http.Response{ + StatusCode: http.StatusOK, + ProtoMajor: 1, + ProtoMinor: 1, + } + + return resp.Write(writer) +} + +func RespondBadGateway(w io.Writer, req *http.Request, msgs ...string) { + defer func() { + if err := req.Body.Close(); err != nil { + fmt.Printf("Error closing body of OK response: %s", err) + } + }() + + resp := &http.Response{ + StatusCode: http.StatusBadGateway, + ProtoMajor: 1, + ProtoMinor: 1, + } + err := resp.Write(w) + if err == nil { + for _, msg := range msgs { + if _, err = w.Write([]byte(msg)); err != nil { + fmt.Printf("Error writing error to io.Writer: %s", err) + } + } + } +} diff --git a/src/github.com/getlantern/lantern-mobile/lantern/Dockerfile b/src/github.com/getlantern/lantern-mobile/lantern/Dockerfile deleted file mode 100644 index 95e6090e3e..0000000000 --- a/src/github.com/getlantern/lantern-mobile/lantern/Dockerfile +++ /dev/null @@ -1,70 +0,0 @@ -# Dockerfile to build an image able to compile flashlight for iOS and Android -# -# > make docker - -FROM fedora:22 -MAINTAINER "Ulysses Aalto" - -ENV GO_VERSION go1.5.3 -ENV GOROOT_BOOTSTRAP /go1.5.3 -ENV GOROOT /go -ENV GOPATH / - -ENV PATH $PATH:$GOROOT/bin -ENV WORKDIR /lantern - -# Updating system. -RUN dnf -y update && dnf clean all - -# Requisites for building Go. -RUN dnf install -y git tar patch gzip curl hostname pcre-devel && dnf clean all - -# Compilers and tools for CGO. -RUN dnf install -y gcc gcc-c++ libgcc.i686 gcc-c++.i686 glibc-static pkgconfig && dnf clean all - -# Requisites for bootstrapping. -RUN dnf install -y glibc-devel glibc-static && dnf clean all -RUN dnf install -y glibc-devel.i686 glib2-static.i686 glibc.i686 && dnf clean all - -# Debugging -RUN dnf install -y make vim strace tmux && dnf clean all - -# Install Go. -# 1) 1.5 for bootstrap. -ENV GOROOT_BOOTSTRAP /go1.5.3 -RUN (curl -sSL https://golang.org/dl/go1.5.3.linux-amd64.tar.gz | tar -vxz -C /tmp) && \ - mv /tmp/go $GOROOT_BOOTSTRAP - -# 2) Download and cross compile the Go on revision GOREV. -# -# GOVERSION string is the output of 'git log -n 1 --format="format: devel +%h %cd" HEAD' -# like in go tool dist. -ENV GO_REV go1.5.3 -#ENV GO_VERSION go1.5.1 - -ENV GOROOT /go -ENV PATH $GOROOT/bin:$PATH - -RUN mkdir -p $GOROOT && \ - curl -sSL "https://go.googlesource.com/go/+archive/$GO_REV.tar.gz" | tar -vxz -C $GOROOT -RUN echo $GO_VERSION > $GOROOT/VERSION -RUN cd $GOROOT/src && ./all.bash - -# Install Android SDK -RUN dnf install -y java-1.8.0-openjdk-devel.x86_64 -RUN curl -L http://dl.google.com/android/android-sdk_r22-linux.tgz | tar xz -C /usr/local -ENV ANDROID_HOME /usr/local/android-sdk-linux -# Install Android tools -RUN echo y | /usr/local/android-sdk-linux/tools/android update sdk --no-ui --all --filter platform-tools,build-tools-21.1.2,android-22,extra-android-support - -# Install and initialize gomobile -RUN go get -v golang.org/x/mobile/cmd/gomobile -RUN gomobile init -v - -RUN dnf install -y zip unzip && dnf clean all - -RUN mkdir -p $WORKDIR - -VOLUME [ "$WORKDIR" ] - -WORKDIR $WORKDIR diff --git a/src/github.com/getlantern/lantern-mobile/lantern/README.md b/src/github.com/getlantern/lantern-mobile/lantern/README.md deleted file mode 100644 index fa12ea397c..0000000000 --- a/src/github.com/getlantern/lantern-mobile/lantern/README.md +++ /dev/null @@ -1,257 +0,0 @@ -# Lantern on Android - -```java -import go.flashlight.Flashlight; -``` - -The `lantern-android` repository provides documentation and scripts for -building a basic [flashlight][1] shared library that exports special methods -that can be used from Java code, making it possible to run the [flashlight][1] -client on Android devices. - -```java -try { - Flashlight.RunClientProxy("0.0.0.0:9192"); -} catch (Exception e) { - throw new RuntimeException(e); -} -``` - -## Prerequisites - -* An OSX or Linux box -* [docker][2] -* [Android Studio][3] -* [Go 1.4][4] -* [GNUMake][6] -* [Mercurial][7]: You can try installing it with `brew` or `macports`. - -### Setting up a development environment - -We're going to clone and use the [flashlight-build][5] repository, that -project provides us with everything we need to build Lantern tools and -libraries. - -```sh -mkdir -p $GOPATH/src/github.com/getlantern -cd $GOPATH/src/github.com/getlantern -git clone https://github.com/getlantern/flashlight-build.git -``` - -## Building the Android library - -After cloning the repository use `make android` to build the Android library, -this library is going to be built at -`src/github.com/getlantern/lantern-android/app/libs/armeabi-v7a/libgojni.so`: - -``` -make android-lib -... -BUILD SUCCESSFUL -Total time: 4 seconds -``` - -The `make` command will create a new -`src/github.com/getlantern/lantern-android/app` subdirectory that will contain -an Android example project. You may import the contents of the `app` -subdirectory into Android Studio to see libflashlight working. - -## Testing the example project - -Open [Android Studio][3] and in the welcome screen choose "Import Non-Android -Studio project". - -![Android Studio](https://cloud.githubusercontent.com/assets/385670/5712830/5f4cda3c-9a7b-11e4-85af-8af9d54e18c7.png) - -You'll be prompted with a file dialog, browse to the `app` subdirectory and -select it. Press *OK*. - -![App Subdirectory](https://cloud.githubusercontent.com/assets/385670/5769230/5431dec6-9cde-11e4-82ce-d3983471a1f1.png) - -On the next dialog you must define a destination for the project, hit *Next*. - -![Destination](https://cloud.githubusercontent.com/assets/385670/5712874/ad8265e6-9a7b-11e4-9018-671875dfdb17.png) - -After import you may be prompted to restart Android Studio. - -Now add a new *main activity* by right-clicking on the top most directory on -the *Project* pane and selecting New->Activity->Blank Activity, the default -values would be OK, click *Finish*. - -![Main Activity](https://cloud.githubusercontent.com/assets/385670/5712891/ca3573fe-9a7b-11e4-953d-d43b12fcdb62.png) - -Paste the following code on the `org.getlantern/example/MainActivity.java` file -that was just added: - -```java -package org.getlantern.example; - -import go.Go; -import go.flashlight.Flashlight; -import android.app.Activity; -import android.os.Bundle; -import android.util.Log; -import android.view.View; -import android.widget.Button; -import org.getlantern.example.R; - - -public class MainActivity extends Activity { - - - private Button killButton; - private Button startButton; - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - - setContentView(R.layout.activity_main); - - // Initializing application context. - Go.init(getApplicationContext()); - - killButton = (Button)findViewById(R.id.stopProxyButton); - startButton = (Button)findViewById(R.id.startProxyButton); - - // Disabling stop button. - killButton.setEnabled(false); - - // Enabling proxy button. - startButton.setEnabled(true); - } - - public void stopProxyButtonOnClick(View v) { - - Log.v("DEBUG", "Attempt to stop running proxy."); - try { - Flashlight.StopClientProxy(); - } catch (Exception e) { - throw new RuntimeException(e); - }; - - // Disabling stop button. - killButton.setEnabled(false); - - // Enabling proxy button. - startButton.setEnabled(true); - - } - - public void startProxyButtonOnClick(View v) { - Log.v("DEBUG", "Attempt to run client proxy on :9192"); - - try { - Flashlight.RunClientProxy("0.0.0.0:9192"); - } catch (Exception e) { - throw new RuntimeException(e); - } - - // Enabling stop button. - killButton.setEnabled(true); - - // Disabling proxy button. - startButton.setEnabled(false); - } -} -``` - -After this new activity is added the *design view* will be active, drag two -buttons from the *Pallete* into the screen. - -![Adding two buttons](https://cloud.githubusercontent.com/assets/385670/5769192/d9df19cc-9cdd-11e4-90d0-b37b6d6b3a41.png) - -Select the first button and look for the *id* property on the Properties pane, -set it to *startProxyButton* and name the button accordingly. Look for the -*onClick* property and choose the *startProxyButtonOnClick* value from the drop -down. - -The second button's *id* must be set to *stopProxyButton* and the *onClick* to -*stopProxyButtonOnClick*. - -Finally, hit the *Run app* action under the *Run* menu and deploy it to a real -device or to an ARM-based emulator (armeabi-v7a). - -![ARM-based emulator](https://cloud.githubusercontent.com/assets/385670/5985944/2e5016e0-a8b0-11e4-99fe-c9b4d325a5f4.png) - -I you're having configuration related problems when attempting to build, make -sure your `AndroidManifest.xml` looks like this: - -```xml - - - - - - - - - - - - - - -``` - -If everything goes OK, you'll have two buttons and you can start `flashlight` -by touching the *startProxyButton*. - -![Deploy to a device](https://cloud.githubusercontent.com/assets/385670/5712899/db6ddb34-9a7b-11e4-8841-6b6b12e46c27.png) - -As long as the app is open, you'll be able to test the canonical example by -finding the device's IP and sending it a special request: - -```sh -curl -x 10.10.100.97:9192 http://www.google.com/humans.txt -# Google is built by a large team of engineers, designers, researchers, robots, and others in many different sites across the globe. It is updated continuously, and built with more tools and technologies than we can shake a stick at. If you'd like to help us out, see google.com/careers. -``` - -You may not want everyone proxying through your phone! Tune the -`RunClientProxy()` function on the `MainActivity.java` accordingly. - -If you chose to run flashlight inside an emulator instead of a real device, you -must connect to it using telnet and set up port redirection to actually test -the proxy. - -Identify the port number your emulator is listening to - -![screen shot 2015-01-30 at 6 40 52 pm](https://cloud.githubusercontent.com/assets/385670/5985952/6afa23e2-a8b0-11e4-942a-384f483d331a.png) - -In this case its listening on the `5554` local port. - -Open a telnet session to the emulator and write the instruction `redir add -tcp:9192:9192` to map the emulator's `9192` port to our local `9192` port. - -```sh -telnet 127.0.0.1 5554 -# Trying 127.0.0.1... -# Connected to localhost. -# Escape character is '^]'. -# Android Console: type 'help' for a list of commands -# OK -redir add tcp:9192:9192 -# OK -``` - -Now you'll be able to connect to the emulator's flashlight proxy through your -local `9192` port: - -```sh -curl -x 127.0.0.1:9192 https://www.google.com/humans.txt -# Google is built by a large team of engineers, designers, researchers, robots, and others in many different sites across the globe. It is updated continuously, and built with more tools and technologies than we can shake a stick at. If you'd like to help us out, see google.com/careers. -``` - -[1]: https://github.com/getlantern/flashlight -[2]: https://www.docker.com/ -[3]: http://developer.android.com/tools/studio/index.html -[4]: http://golang.org/ -[5]: https://github.com/getlantern/flashlight-build -[6]: http://www.gnu.org/software/make/ -[7]: http://mercurial.selenic.com/wiki/Download diff --git a/src/github.com/getlantern/lantern-mobile/lantern/interceptor/conn.go b/src/github.com/getlantern/lantern-mobile/lantern/interceptor/conn.go deleted file mode 100644 index 85008589f6..0000000000 --- a/src/github.com/getlantern/lantern-mobile/lantern/interceptor/conn.go +++ /dev/null @@ -1,15 +0,0 @@ -package interceptor - -import ( - "net" - "time" -) - -type InterceptedConn struct { - net.Conn - id string - t time.Time - v interface{} - interceptor *Interceptor - localConn net.Conn -} diff --git a/src/github.com/getlantern/lantern-mobile/lantern/interceptor/interceptor.go b/src/github.com/getlantern/lantern-mobile/lantern/interceptor/interceptor.go deleted file mode 100644 index 2f248b70b5..0000000000 --- a/src/github.com/getlantern/lantern-mobile/lantern/interceptor/interceptor.go +++ /dev/null @@ -1,389 +0,0 @@ -// interceptor acts as an intermediary between a local SOCKS proxy -// intercepting VPN traffic and Lantern -package interceptor - -import ( - "errors" - "fmt" - "io" - "net" - "sync" - "time" - - "github.com/getlantern/flashlight/client" - "github.com/getlantern/golog" - - socks "github.com/getlantern/lantern-mobile/lantern/socks" -) - -// Errors introduced by the interceptor service -var ( - defaultClient Interceptor - dialTimeout = 20 * time.Second - // threshold of errors that we are withstanding - maxErrCount = 15 - - statsInterval = 15 * time.Second - log = golog.LoggerFor("lantern-android.interceptor") - - ErrTooManyFailures = errors.New("Too many connection failures") - ErrNoSocksProxy = errors.New("Unable to start local SOCKS proxy") - ErrDialTimeout = errors.New("Error dialing tunnel: timeout") -) - -type DialFunc func(network, addr string) (net.Conn, error) - -// Interceptor is responsible for intercepting -// traffic on the VPN interface. -type Interceptor struct { - client *client.Client - - clientGone bool - - socksAddr string - httpAddr string - - sendAlert func(string, bool) - - listener *socks.SocksListener - serveGroup *sync.WaitGroup - - // Maximum duration for full request writing (including body). - // - // By default request write timeout is unlimited. - WriteTimeout time.Duration - - ReadTimeout time.Duration - - Dial DialFunc - - requestPool sync.Pool - responsePool sync.Pool - errorChPool sync.Pool - clientConnPool sync.Pool - - errCh chan error - totalErrCount int - - mu sync.Mutex - - connsLock sync.Mutex - conns map[string]*InterceptedConn - connsCount int -} - -type dialResult struct { - forwardConn net.Conn - err error -} - -func (i *Interceptor) dialHost(addr string) (net.Conn, error) { - dial := i.client.GetBalancer().Dial - if dial == nil { - dial = net.Dial - } - conn, err := dial("connect", addr) - - if err != nil { - return nil, err - } - if conn == nil { - log.Fatalf("Dial func returned nil: %v", err) - } - return conn, nil -} - -func (i *Interceptor) startSocksProxy() error { - listener, err := socks.ListenSocks("tcp", i.socksAddr) - - if err != nil { - log.Errorf("Could not start SOCKS server: %v", err) - return ErrNoSocksProxy - } - - i.listener = listener - i.serveGroup.Add(1) - - go i.acceptSocks() - log.Debugf("SOCKS proxy now listening on port: %v", - i.listener.Addr().(*net.TCPAddr).Port) - return nil -} - -// serve processes all incoming SOCKS requests -func (i *Interceptor) acceptSocks() { - defer i.listener.Close() - defer i.serveGroup.Done() - -L: - for { - socksConnection, err := i.listener.AcceptSocks() - - i.mu.Lock() - clientGone := i.clientGone - i.mu.Unlock() - if clientGone { - break L - } - - if err != nil { - log.Errorf("SOCKS proxy accept error: %v", err) - if e, ok := err.(net.Error); ok && e.Temporary() { - continue - } - log.Errorf("Fatal component failure: %v", err) - i.closeAll() - break L - } - go func() { - err := i.Do(socksConnection) - if err != nil { - log.Errorf("SOCKS error: %v", err) - } - }() - } -} - -func (ic *InterceptedConn) Do() error { - var wg sync.WaitGroup - wg.Add(1) - - go func() { - _, err := io.Copy(ic, ic.localConn) - if err != nil { - log.Errorf("Relay failed: %v", err) - } - wg.Done() - }() - _, err := io.Copy(ic.localConn, ic) - if err != nil { - log.Errorf("Error reading from server: %v", err) - } - wg.Wait() - return err -} - -func createId(conn net.Conn, addr string) string { - return fmt.Sprintf("%s:%s", conn.RemoteAddr(), addr) -} - -func (i *Interceptor) Do(conn *socks.SocksConn) error { - addr := conn.Req.Target - - id := createId(conn, addr) - i.connsLock.Lock() - ic := i.acquireClientConn(id, conn) - log.Debugf("Got a new connection: %s", id) - i.conns[id] = ic - i.connsCount++ - i.connsLock.Unlock() - - defer i.closeConn(ic) - - resultCh := make(chan *dialResult, 2) - time.AfterFunc(dialTimeout, func() { - resultCh <- &dialResult{nil, ErrDialTimeout} - }) - - go func() { - forwardConn, err := i.dialHost(addr) - if err != nil { - log.Errorf("Could not connect: %v", err) - } - resultCh <- &dialResult{forwardConn, err} - }() - - result := <-resultCh - if result.err != nil { - log.Errorf("Error dialing new request: %v", result.err) - return result.err - } - ic.Conn = result.forwardConn - - // inform proxy client that access to the given - // address is granted - err := conn.Grant(&net.TCPAddr{ - IP: net.ParseIP("0.0.0.0"), Port: 0}) - if err != nil { - log.Errorf("Unable to grant connection: %v", err) - return err - } - return ic.Do() -} - -func Do(client *client.Client, - socksAddr, httpAddr string, notice func(string, bool)) (*Interceptor, error) { - - defaultClient = Interceptor{ - clientGone: false, - client: client, - socksAddr: socksAddr, - httpAddr: httpAddr, - errCh: make(chan error, maxErrCount), - sendAlert: notice, - WriteTimeout: dialTimeout, - ReadTimeout: dialTimeout, - totalErrCount: 0, - serveGroup: new(sync.WaitGroup), - conns: make(map[string]*InterceptedConn), - } - - err := defaultClient.startSocksProxy() - if err != nil { - return nil, err - } - - go defaultClient.monitor() - go defaultClient.connsCleaner() - - return &defaultClient, nil -} - -func (i *Interceptor) closeAll() { - i.connsLock.Lock() - for _, conn := range i.conns { - if conn != nil { - i.closeConn(conn) - } - } - i.connsCount = 0 - i.conns = make(map[string]*InterceptedConn) - i.connsLock.Unlock() -} - -func (i *Interceptor) connsCleaner() { - stop := false - for { - t := time.Now() - i.connsLock.Lock() - m := i.conns - for _, conn := range m { - if conn != nil && t.Sub(conn.t) > 20*time.Second { - i.closeConn(conn) - i.connsCount-- - } - } - i.connsLock.Unlock() - - i.mu.Lock() - clientGone := i.clientGone - i.mu.Unlock() - if !clientGone { - stop = true - } - - if stop { - break - } - time.Sleep(10 * time.Second) - } -} - -func (i *Interceptor) closeConn(conn *InterceptedConn) { - log.Debugf("Closing a connection with id: %s", conn.id) - if conn.Conn != nil { - conn.Conn.Close() - } - if conn.localConn != nil { - conn.localConn.Close() - } - i.conns[conn.id] = nil - i.connsCount-- - i.releaseClientConn(conn) -} - -func (i *Interceptor) acquireClientConn(id string, localConn net.Conn) *InterceptedConn { - conn := i.clientConnPool.Get() - - if conn == nil { - ic := &InterceptedConn{ - id: id, - interceptor: i, - localConn: localConn, - } - ic.v = ic - return ic - } else { - v := conn.(*InterceptedConn) - v.id = id - v.v = v - v.localConn = localConn - return v - } -} - -func (i *Interceptor) decConnsCount() { - i.connsLock.Lock() - i.connsCount-- - i.connsLock.Unlock() -} - -func (i *Interceptor) getConnsCount() int { - i.connsLock.Lock() - count := i.connsCount - i.connsLock.Unlock() - return count -} - -func (i *Interceptor) releaseClientConn(ic *InterceptedConn) { - ic.t = time.Now() - ic.Conn = nil - ic.localConn = nil - i.clientConnPool.Put(ic.v) -} - -// monitor is used to send periodic updates about the current -// interceptor (such as traffic stats) and to watch for connection -// failures. If we exceed a certain threshold of failures, we stop -// the interceptor and disable the service -func (i *Interceptor) monitor() { - - updatesTimer := time.NewTimer(15 * time.Second) - defer updatesTimer.Stop() -L: - for { - select { - case <-updatesTimer.C: - i.mu.Lock() - clientGone := i.clientGone - i.mu.Unlock() - if clientGone { - break L - } - - count := i.getConnsCount() - statsMsg := fmt.Sprintf("Number of open connections: %d", count) - log.Debug(statsMsg) - i.sendAlert(statsMsg, false) - updatesTimer.Reset(statsInterval) - case err := <-i.errCh: - log.Debugf("New error: %v", err) - i.totalErrCount += 1 - if i.totalErrCount > maxErrCount { - log.Errorf("Total errors: %d %v", i.totalErrCount, ErrTooManyFailures) - i.sendAlert(ErrTooManyFailures.Error(), true) - i.Stop() - break L - } - } - } -} - -// Stop closes the SOCKS listener and stats service -// it also closes all pending connections -func (i *Interceptor) Stop() { - - i.mu.Lock() - clientGone := i.clientGone - i.mu.Unlock() - - if !clientGone { - i.listener.Close() - i.serveGroup.Wait() - i.closeAll() - } - - i.mu.Lock() - i.clientGone = true - i.mu.Unlock() -} diff --git a/src/github.com/getlantern/lantern-mobile/lantern/interceptor/interceptor_test.go b/src/github.com/getlantern/lantern-mobile/lantern/interceptor/interceptor_test.go deleted file mode 100644 index 2df17cf276..0000000000 --- a/src/github.com/getlantern/lantern-mobile/lantern/interceptor/interceptor_test.go +++ /dev/null @@ -1 +0,0 @@ -package interceptor diff --git a/src/github.com/getlantern/lantern-mobile/lantern/interface.go b/src/github.com/getlantern/lantern-mobile/lantern/interface.go deleted file mode 100644 index a24cae62af..0000000000 --- a/src/github.com/getlantern/lantern-mobile/lantern/interface.go +++ /dev/null @@ -1,101 +0,0 @@ -package client - -import ( - "github.com/getlantern/appdir" - "github.com/getlantern/flashlight/config" - "github.com/getlantern/flashlight/lantern" - "github.com/getlantern/flashlight/logging" - "github.com/getlantern/flashlight/settings" - "github.com/getlantern/golog" - "github.com/getlantern/lantern-mobile/lantern/interceptor" - "github.com/getlantern/lantern-mobile/lantern/protected" -) - -var ( - log = golog.LoggerFor("lantern-android.client") - i *interceptor.Interceptor - appSettings *settings.Settings - - trackingCodes = map[string]string{ - "FireTweet": "UA-21408036-4", - "Lantern": "UA-21815217-14", - } -) - -type Provider interface { - Model() string - Device() string - Version() string - AppName() string - VpnMode() bool - GetDnsServer() string - SettingsDir() string - AfterStart(string) - Protect(fileDescriptor int) error - Notice(message string, fatal bool) -} - -func Configure(provider Provider) error { - - log.Debugf("Configuring Lantern version: %s", lantern.GetVersion()) - - settingsDir := provider.SettingsDir() - log.Debugf("settings directory is %s", settingsDir) - - appdir.AndroidDir = settingsDir - settings.SetAndroidPath(settingsDir) - appSettings = settings.Load(lantern.GetVersion(), lantern.GetRevisionDate(), "") - - return nil -} - -// Start creates a new client at the given address. -func Start(provider Provider) error { - - go func() { - - log.Debugf("About to configure Lantern") - - if provider.VpnMode() { - dnsServer := provider.GetDnsServer() - protected.Configure(provider, dnsServer, true) - } - - androidProps := map[string]string{ - "androidDevice": provider.Device(), - "androidModel": provider.Model(), - "androidSdkVersion": provider.Version(), - } - logging.ConfigureAndroid(androidProps) - - cfgFn := func(cfg *config.Config) { - - } - - l, err := lantern.Start(false, true, false, - true, cfgFn) - - if err != nil { - log.Fatalf("Could not start Lantern") - } - - if provider.VpnMode() { - i, err = interceptor.Do(l.Client, appSettings.SocksAddr, appSettings.HttpAddr, provider.Notice) - if err != nil { - log.Errorf("Error starting interceptor: %v", err) - } else { - lantern.AddExitFunc(func() { - if i != nil { - i.Stop() - } - }) - } - } - provider.AfterStart(lantern.GetVersion()) - }() - return nil -} - -func Stop() { - lantern.Exit(nil) -} diff --git a/src/github.com/getlantern/lantern-mobile/lantern/interface_test.go b/src/github.com/getlantern/lantern-mobile/lantern/interface_test.go deleted file mode 100644 index 6f173fe3d7..0000000000 --- a/src/github.com/getlantern/lantern-mobile/lantern/interface_test.go +++ /dev/null @@ -1,114 +0,0 @@ -package client - -import ( - "errors" - "fmt" - "io/ioutil" - "net" - "net/http" - "net/url" - "testing" - "time" -) - -const ( - listenProxyAddr = "127.0.0.1:7672" -) - -const expectedBody = "Google is built by a large team of engineers, designers, researchers, robots, and others in many different sites across the globe. It is updated continuously, and built with more tools and technologies than we can shake a stick at. If you'd like to help us out, see google.com/careers.\n" - -type testProtector struct{} - -func (p *testProtector) Protect(fd int) error { - log.Debugf("Simulating fd(%d) protection...") - return nil -} - -type testCb struct{} - -func (cb *testCb) AfterConfigure() { - log.Debugf("AfterConfigure called.") -} - -func (cb *testCb) AfterStart() { - log.Debugf("AfterStart called.") -} - -func testReverseProxy() error { - var req *http.Request - - req = &http.Request{ - Method: "GET", - URL: &url.URL{ - Scheme: "http", - Host: "www.google.com", - Path: "http://www.google.com/humans.txt", - }, - ProtoMajor: 1, - ProtoMinor: 1, - Header: http.Header{ - "Host": {"www.google.com:80"}, - }, - } - - client := &http.Client{ - Timeout: time.Second * 5, - Transport: &http.Transport{ - Dial: func(n, a string) (net.Conn, error) { - //return net.Dial("tcp", "127.0.0.1:9898") - return net.Dial("tcp", listenProxyAddr) - }, - }, - } - - var res *http.Response - var err error - - if res, err = client.Do(req); err != nil { - return err - } - - var buf []byte - - buf, err = ioutil.ReadAll(res.Body) - - fmt.Printf(string(buf)) - - if string(buf) != expectedBody { - return errors.New("Expecting another response.") - } - - return nil -} - -func TestStartClientAndTestReverseProxy(t *testing.T) { - - var err error - - // Let's run a proxy instance. - go func() { - if RunClientProxy(listenProxyAddr, "TestApp", new(testProtector), new(testCb)); err != nil { - t.Fatalf("RunClientProxy: %q", err) - } - }() - - // Waiting a bit so the server could start. - time.Sleep(time.Second * 5) - - // Attempt to proxy something. - if err = testReverseProxy(); err != nil { - t.Fatal(err) - } - - // Attempt to stop server. - if err = StopClientProxy(); err != nil { - t.Fatal(err) - } - - // Attempt to run again on the same port should not fail since we stopped the - // server. - if err = RunClientProxy(listenProxyAddr, "TestApp", new(testProtector), new(testCb)); err != nil { - t.Fatalf("RunClientProxy: %q", err) - } - -} diff --git a/src/github.com/getlantern/lantern-mobile/lantern/protected/protected.go b/src/github.com/getlantern/lantern-mobile/lantern/protected/protected.go deleted file mode 100644 index c0b5ec7140..0000000000 --- a/src/github.com/getlantern/lantern-mobile/lantern/protected/protected.go +++ /dev/null @@ -1,284 +0,0 @@ -// Package protected is used for creating "protected" connections -// that bypass Android's VpnService -package protected - -import ( - "errors" - "fmt" - "net" - "os" - "strconv" - "sync" - "syscall" - "time" - - "github.com/getlantern/golog" -) - -const ( - defaultDnsServer = "8.8.4.4" - connectTimeOut = 15 * time.Second - readDeadline = 15 * time.Second - writeDeadline = 15 * time.Second - socketError = -1 - dnsPort = 53 -) - -type SocketProtector interface { - Protect(fileDescriptor int) error -} - -type ProtectedConn struct { - net.Conn - mutex sync.Mutex - protector SocketProtector - isClosed bool - socketFd int - addr string - host string - ip [4]byte - port int -} - -var ( - log = golog.LoggerFor("lantern-android.protected") - currentProtector SocketProtector - currentDnsServer string - vpnMode = false -) - -func Configure(protector SocketProtector, dnsServer string, mode bool) { - currentProtector = protector - if dnsServer != "" { - currentDnsServer = dnsServer - } else { - dnsServer = defaultDnsServer - } - vpnMode = mode -} - -func VpnMode() bool { - return vpnMode -} - -// Dial creates a new protected connection -// - syscall API calls are used to create and bind to the -// specified system device (this is primarily -// used for Android VpnService routing functionality) -func Dial(network, addr string, timeout time.Duration) (*ProtectedConn, error) { - host, port, err := SplitHostPort(addr) - if err != nil { - return nil, err - } - - conn := &ProtectedConn{ - addr: addr, - host: host, - port: port, - protector: currentProtector, - } - // do DNS query - IPAddr, err := conn.resolveHostname() - if err != nil { - log.Errorf("Couldn't resolve host %s: %s", conn.addr, err) - return nil, err - } - - copy(conn.ip[:], IPAddr.To4()) - - socketFd, err := syscall.Socket(syscall.AF_INET, syscall.SOCK_STREAM, 0) - if err != nil { - log.Errorf("Could not create socket: %s", err) - return nil, err - } - conn.socketFd = socketFd - - defer conn.cleanup() - - // Actually protect the underlying socket here - err = conn.protector.Protect(conn.socketFd) - if err != nil { - return nil, fmt.Errorf("Could not bind socket to system device: %s", err) - } - - err = conn.connectSocket() - if err != nil { - log.Errorf("Could not connect to socket: %v", err) - return nil, err - } - - // finally, convert the socket fd to a net.Conn - err = conn.convert() - if err != nil { - log.Errorf("Error converting protected connection: %s", err) - return nil, err - } - - conn.Conn.SetDeadline(time.Now().Add(timeout)) - return conn, nil -} - -// connectSocket makes the connection to the given IP address port -// for the given socket fd -func (conn *ProtectedConn) connectSocket() error { - sockAddr := syscall.SockaddrInet4{Addr: conn.ip, Port: conn.port} - errCh := make(chan error, 2) - time.AfterFunc(connectTimeOut, func() { - errCh <- errors.New("connect timeout") - }) - go func() { - errCh <- syscall.Connect(conn.socketFd, &sockAddr) - }() - err := <-errCh - return err -} - -func (conn *ProtectedConn) Addr() (*net.TCPAddr, error) { - return net.ResolveTCPAddr("tcp", conn.addr) -} - -// converts the protected connection specified by -// socket fd to a net.Conn -func (conn *ProtectedConn) convert() error { - conn.mutex.Lock() - file := os.NewFile(uintptr(conn.socketFd), "") - // dup the fd and return a copy - fileConn, err := net.FileConn(file) - // closes the original fd - file.Close() - conn.socketFd = socketError - if err != nil { - conn.mutex.Unlock() - return err - } - conn.Conn = fileConn - conn.mutex.Unlock() - return nil -} - -// cleanup is ran whenever we encounter a socket error -// we use a mutex since this connection is active in a variety -// of goroutines and to prevent any possible race conditions -func (conn *ProtectedConn) cleanup() { - conn.mutex.Lock() - defer conn.mutex.Unlock() - - if conn.socketFd != socketError { - syscall.Close(conn.socketFd) - conn.socketFd = socketError - } -} - -// Close is used to destroy a protected connection -func (conn *ProtectedConn) Close() (err error) { - conn.mutex.Lock() - defer conn.mutex.Unlock() - - if !conn.isClosed { - conn.isClosed = true - if conn.Conn == nil { - if conn.socketFd == socketError { - err = nil - } else { - err = syscall.Close(conn.socketFd) - // update socket fd to socketError - // to make it explicit this connection - // has been closed - conn.socketFd = socketError - } - } else { - err = conn.Conn.Close() - } - } - return err -} - -// configure DNS query expiration -func setQueryTimeouts(c net.Conn) { - now := time.Now() - c.SetReadDeadline(now.Add(readDeadline)) - c.SetWriteDeadline(now.Add(writeDeadline)) -} - -// resolveHostname creates a UDP socket and binds it to the device -func (conn *ProtectedConn) resolveHostname() (net.IP, error) { - - // Check if we already have the IP address - IPAddr := net.ParseIP(conn.host) - if IPAddr != nil { - return IPAddr, nil - } - - // Create a datagram socket - socketFd, err := syscall.Socket(syscall.AF_INET, syscall.SOCK_DGRAM, 0) - if err != nil { - log.Errorf("Error creating socket: %s", err) - return nil, err - } - defer syscall.Close(socketFd) - - // Here we protect the underlying socket from the - // VPN connection by passing the file descriptor - // back to Java for exclusion - err = conn.protector.Protect(socketFd) - if err != nil { - return nil, fmt.Errorf("Could not bind socket to system device: %s", err) - } - - IPAddr = net.ParseIP(currentDnsServer) - if IPAddr == nil { - return nil, errors.New("invalid IP address") - } - - var ip [4]byte - copy(ip[:], IPAddr.To4()) - sockAddr := syscall.SockaddrInet4{Addr: ip, Port: dnsPort} - - err = syscall.Connect(socketFd, &sockAddr) - if err != nil { - return nil, err - } - - fd := uintptr(socketFd) - file := os.NewFile(fd, "") - defer file.Close() - - // return a copy of the network connection - // represented by file - fileConn, err := net.FileConn(file) - if err != nil { - log.Errorf("Error returning a copy of the network connection: %v", err) - return nil, err - } - - setQueryTimeouts(fileConn) - - log.Debugf("performing dns lookup...!!") - result, err := dnsLookup(conn.host, fileConn) - if err != nil { - log.Errorf("Error doing DNS resolution: %s", err) - return nil, err - } - ipAddr, err := result.PickRandomIP() - if err != nil { - log.Errorf("No IP address available: %s", err) - return nil, err - } - return ipAddr, nil -} - -// wrapper around net.SplitHostPort that also converts -// uses strconv to convert the port to an int -func SplitHostPort(addr string) (string, int, error) { - host, sPort, err := net.SplitHostPort(addr) - if err != nil { - log.Errorf("Could not split network address: %s", err) - return "", 0, err - } - port, err := strconv.Atoi(sPort) - if err != nil { - log.Errorf("No port number found %s", err) - return "", 0, err - } - return host, port, nil -} diff --git a/src/github.com/getlantern/lantern-mobile/lantern/protected/protected_test.go b/src/github.com/getlantern/lantern-mobile/lantern/protected/protected_test.go deleted file mode 100644 index 00403b3b8e..0000000000 --- a/src/github.com/getlantern/lantern-mobile/lantern/protected/protected_test.go +++ /dev/null @@ -1,49 +0,0 @@ -package protected - -import ( - "io/ioutil" - "net" - "net/http" - "testing" - "time" - - "github.com/getlantern/golog" -) - -var testAddr = "example.com:80" - -func TestConnect(t *testing.T) { - client := &http.Client{ - Transport: &http.Transport{ - Dial: func(netw, addr string) (net.Conn, error) { - return Dial(netw, addr) - }, - ResponseHeaderTimeout: time.Second * 2, - }, - } - sendTestRequest(client, testAddr) -} - -func sendTestRequest(client *http.Client, addr string) { - log := golog.LoggerFor("protected") - - req, err := http.NewRequest("GET", "http://"+addr+"/", nil) - if err != nil { - log.Errorf("Error constructing new HTTP request: %s", err) - return - } - req.Header.Add("Connection", "keep-alive") - if resp, err := client.Do(req); err != nil { - log.Errorf("Could not make request to %s: %s", addr, err) - return - } else { - result, err := ioutil.ReadAll(resp.Body) - if err != nil { - log.Errorf("Error reading response body: %s", err) - return - } - resp.Body.Close() - log.Debugf("Successfully processed request to %s", addr) - log.Debugf("RESULT: %s", result) - } -} diff --git a/src/github.com/getlantern/lantern-mobile/lantern/protected/resolver.go b/src/github.com/getlantern/lantern-mobile/lantern/protected/resolver.go deleted file mode 100644 index 1b6082a286..0000000000 --- a/src/github.com/getlantern/lantern-mobile/lantern/protected/resolver.go +++ /dev/null @@ -1,80 +0,0 @@ -package protected - -import ( - "crypto/rand" - "errors" - "math/big" - "net" - "time" - - "github.com/miekg/dns" -) - -type record struct { - IP net.IP - ttl time.Duration -} - -type DnsResponse struct { - records []record -} - -// PickRandomIP picks a random IP address from a DNS response -func (response *DnsResponse) PickRandomIP() (net.IP, error) { - length := int64(len(response.records)) - if length < 1 { - return nil, errors.New("no IP address") - } - - index, err := rand.Int(rand.Reader, big.NewInt(length)) - if err != nil { - return nil, err - } - - record := response.records[index.Int64()] - return record.IP, nil -} - -// dnsLookup is used whenever we need to conduct a DNS query over a given TCP connection -func dnsLookup(addr string, conn net.Conn) (*DnsResponse, error) { - - log.Debugf("Doing a DNS lookup on %s", addr) - - dnsResponse := &DnsResponse{ - records: make([]record, 0), - } - - // create the connection to the DNS server - dnsConn := &dns.Conn{Conn: conn} - defer dnsConn.Close() - - m := new(dns.Msg) - m.Id = dns.Id() - // set the question section in the dns query - // Fqdn returns the fully qualified domain name - m.SetQuestion(dns.Fqdn(addr), dns.TypeA) - m.RecursionDesired = true - - dnsConn.WriteMsg(m) - - response, err := dnsConn.ReadMsg() - if err != nil { - log.Errorf("Could not process DNS response: %v", err) - return nil, err - } - - // iterate over RRs containing the DNS answer - for _, answer := range response.Answer { - if a, ok := answer.(*dns.A); ok { - // append the result to our list of records - // the A records in the RDATA section of the DNS answer - // contains the actual IP address - dnsResponse.records = append(dnsResponse.records, - record{ - IP: a.A, - ttl: time.Duration(a.Hdr.Ttl) * time.Second, - }) - } - } - return dnsResponse, nil -} diff --git a/src/github.com/getlantern/lantern-mobile/lantern/socks-server/main.go b/src/github.com/getlantern/lantern-mobile/lantern/socks-server/main.go deleted file mode 100644 index 776b6a2caa..0000000000 --- a/src/github.com/getlantern/lantern-mobile/lantern/socks-server/main.go +++ /dev/null @@ -1,32 +0,0 @@ -// This dummy socks server is using for testing. -// go run main.go -package main - -import ( - "github.com/getlantern/lantern-mobile/lantern" - "github.com/getlantern/lantern-mobile/lantern/interceptor" - "log" - "time" -) - -var inter *interceptor.Interceptor - -const ( - listenAddr = "0.0.0.0:8788" -) - -func startProxy() { - var err error - inter, err = interceptor.New(client.NewDefaultClient().Client, listenAddr, "", "") - if err != nil { - log.Printf("Error starting SOCKS proxy: %q", err) - } -} - -func main() { - log.Printf("Starting proxy...") - startProxy() - log.Printf("Go and play for 10 minutes.") - time.Sleep(time.Minute * 10) - inter.Stop() -} diff --git a/src/github.com/getlantern/lantern-mobile/lantern/socks/args.go b/src/github.com/getlantern/lantern-mobile/lantern/socks/args.go deleted file mode 100644 index c5fd723b6b..0000000000 --- a/src/github.com/getlantern/lantern-mobile/lantern/socks/args.go +++ /dev/null @@ -1,219 +0,0 @@ -package socks - -import ( - "bytes" - "fmt" - "sort" - "strings" -) - -// Key–value mappings for the representation of client and server options. - -// Args maps a string key to a list of values. It is similar to url.Values. -type Args map[string][]string - -// Get the first value associated with the given key. If there are any values -// associated with the key, the value return has the value and ok is set to -// true. If there are no values for the given key, value is "" and ok is false. -// If you need access to multiple values, use the map directly. -func (args Args) Get(key string) (value string, ok bool) { - if args == nil { - return "", false - } - vals, ok := args[key] - if !ok || len(vals) == 0 { - return "", false - } - return vals[0], true -} - -// Append value to the list of values for key. -func (args Args) Add(key, value string) { - args[key] = append(args[key], value) -} - -// Return the index of the next unescaped byte in s that is in the term set, or -// else the length of the string if no terminators appear. Additionally return -// the unescaped string up to the returned index. -func indexUnescaped(s string, term []byte) (int, string, error) { - var i int - unesc := make([]byte, 0) - for i = 0; i < len(s); i++ { - b := s[i] - // A terminator byte? - if bytes.IndexByte(term, b) != -1 { - break - } - if b == '\\' { - i++ - if i >= len(s) { - return 0, "", fmt.Errorf("nothing following final escape in %q", s) - } - b = s[i] - } - unesc = append(unesc, b) - } - return i, string(unesc), nil -} - -// Parse a name–value mapping as from an encoded SOCKS username/password. -// -// "If any [k=v] items are provided, they are configuration parameters for the -// proxy: Tor should separate them with semicolons ... If a key or value value -// must contain [an equals sign or] a semicolon or a backslash, it is escaped -// with a backslash." -func parseClientParameters(s string) (args Args, err error) { - args = make(Args) - if len(s) == 0 { - return - } - i := 0 - for { - var key, value string - var offset, begin int - - begin = i - // Read the key. - offset, key, err = indexUnescaped(s[i:], []byte{'=', ';'}) - if err != nil { - return - } - i += offset - // End of string or no equals sign? - if i >= len(s) || s[i] != '=' { - err = fmt.Errorf("no equals sign in %q", s[begin:i]) - return - } - // Skip the equals sign. - i++ - // Read the value. - offset, value, err = indexUnescaped(s[i:], []byte{';'}) - if err != nil { - return - } - i += offset - if len(key) == 0 { - err = fmt.Errorf("empty key in %q", s[begin:i]) - return - } - args.Add(key, value) - if i >= len(s) { - break - } - // Skip the semicolon. - i++ - } - return args, nil -} - -// Parse a transport–name–value mapping as from TOR_PT_SERVER_TRANSPORT_OPTIONS. -// -// " is a k=v string value with options that are to be passed to the -// transport. Colons, semicolons, equal signs and backslashes must be escaped -// with a backslash." -// Example: trebuchet:secret=nou;trebuchet:cache=/tmp/cache;ballista:secret=yes -func parseServerTransportOptions(s string) (opts map[string]Args, err error) { - opts = make(map[string]Args) - if len(s) == 0 { - return - } - i := 0 - for { - var methodName, key, value string - var offset, begin int - - begin = i - // Read the method name. - offset, methodName, err = indexUnescaped(s[i:], []byte{':', '=', ';'}) - if err != nil { - return - } - i += offset - // End of string or no colon? - if i >= len(s) || s[i] != ':' { - err = fmt.Errorf("no colon in %q", s[begin:i]) - return - } - // Skip the colon. - i++ - // Read the key. - offset, key, err = indexUnescaped(s[i:], []byte{'=', ';'}) - if err != nil { - return - } - i += offset - // End of string or no equals sign? - if i >= len(s) || s[i] != '=' { - err = fmt.Errorf("no equals sign in %q", s[begin:i]) - return - } - // Skip the equals sign. - i++ - // Read the value. - offset, value, err = indexUnescaped(s[i:], []byte{';'}) - if err != nil { - return - } - i += offset - if len(methodName) == 0 { - err = fmt.Errorf("empty method name in %q", s[begin:i]) - return - } - if len(key) == 0 { - err = fmt.Errorf("empty key in %q", s[begin:i]) - return - } - if opts[methodName] == nil { - opts[methodName] = make(Args) - } - opts[methodName].Add(key, value) - if i >= len(s) { - break - } - // Skip the semicolon. - i++ - } - return opts, nil -} - -// Escape backslashes and all the bytes that are in set. -func backslashEscape(s string, set []byte) string { - var buf bytes.Buffer - for _, b := range []byte(s) { - if b == '\\' || bytes.IndexByte(set, b) != -1 { - buf.WriteByte('\\') - } - buf.WriteByte(b) - } - return buf.String() -} - -// Encode a name–value mapping so that it is suitable to go in the ARGS option -// of an SMETHOD line. The output is sorted by key. The "ARGS:" prefix is not -// added. -// -// "Equal signs and commas [and backslashes] must be escaped with a backslash." -func encodeSmethodArgs(args Args) string { - if args == nil { - return "" - } - - keys := make([]string, 0, len(args)) - for key := range args { - keys = append(keys, key) - } - sort.Strings(keys) - - escape := func(s string) string { - return backslashEscape(s, []byte{'=', ','}) - } - - var pairs []string - for _, key := range keys { - for _, value := range args[key] { - pairs = append(pairs, escape(key)+"="+escape(value)) - } - } - - return strings.Join(pairs, ",") -} diff --git a/src/github.com/getlantern/lantern-mobile/lantern/socks/socks.go b/src/github.com/getlantern/lantern-mobile/lantern/socks/socks.go deleted file mode 100644 index 73031c9cda..0000000000 --- a/src/github.com/getlantern/lantern-mobile/lantern/socks/socks.go +++ /dev/null @@ -1,741 +0,0 @@ -package socks - -import ( - "bufio" - "fmt" - "io" - "net" - "time" -) - -const ( - socks4Version = 0x04 - socks5Version = 0x05 - - socksAuthNoneRequired = 0x00 - socksAuthUsernamePassword = 0x02 - socksAuthNoAcceptableMethods = 0xff - - socksCmdConnect = 0x01 - socksReserved = 0x00 - - socksAtypeV4 = 0x01 - socksAtypeDomainName = 0x03 - socksAtypeV6 = 0x04 - - socksAuthRFC1929Ver = 0x01 - socksAuthRFC1929Success = 0x00 - socksAuthRFC1929Fail = 0x01 - - socksRepSucceeded = 0x00 - // "general SOCKS server failure" - SocksRepGeneralFailure = 0x01 - // "connection not allowed by ruleset" - SocksRepConnectionNotAllowed = 0x02 - // "Network unreachable" - SocksRepNetworkUnreachable = 0x03 - // "Host unreachable" - SocksRepHostUnreachable = 0x04 - // "Connection refused" - SocksRepConnectionRefused = 0x05 - // "TTL expired" - SocksRepTTLExpired = 0x06 - // "Command not supported" - SocksRepCommandNotSupported = 0x07 - // "Address type not supported" - SocksRepAddressNotSupported = 0x08 - - socks4ResponseVersion = 0x00 - socks4RequestGranted = 0x5a - socks4RequestRejected = 0x5b -) - -// Put a sanity timeout on how long we wait for a SOCKS request. -const socksRequestTimeout = 5 * time.Second - -// SocksRequest describes a SOCKS request. -type SocksRequest struct { - // The endpoint requested by the client as a "host:port" string. - Target string - // The userid string sent by the client. - Username string - // The password string sent by the client. - Password string - // The parsed contents of Username as a key–value mapping. - Args Args -} - -// SocksConn encapsulates a net.Conn and information associated with a SOCKS request. -type SocksConn struct { - net.Conn - Req SocksRequest - socksVersion byte -} - -// Send a message to the proxy client that access to the given address is -// granted. -// For SOCKS5, Addr is ignored, and "0.0.0.0:0" is always sent back for -// BND.ADDR/BND.PORT in the SOCKS response. -// For SOCKS4a, if the IP field inside addr is not an IPv4 address, the IP -// portion of the response will be four zero bytes. -func (conn *SocksConn) Grant(addr *net.TCPAddr) error { - if conn.socksVersion == socks4Version { - return sendSocks4aResponseGranted(conn, addr) - } - return sendSocks5ResponseGranted(conn) -} - -// Send a message to the proxy client that access was rejected or failed. This -// sends back a "General Failure" error code. RejectReason should be used if -// more specific error reporting is desired. -func (conn *SocksConn) Reject() error { - if conn.socksVersion == socks4Version { - return sendSocks4aResponseRejected(conn) - } - return sendSocks5ResponseRejected(conn, SocksRepGeneralFailure) -} - -// Send a message to the proxy client that access was rejected, with the -// specific error code indicating the reason behind the rejection. -// For SOCKS4a, the reason is ignored. -func (conn *SocksConn) RejectReason(reason byte) error { - if conn.socksVersion == socks4Version { - return sendSocks4aResponseRejected(conn) - } - return sendSocks5ResponseRejected(conn, reason) -} - -// SocksListener wraps a net.Listener in order to read a SOCKS request on Accept. -// -// func handleConn(conn *pt.SocksConn) error { -// defer conn.Close() -// remote, err := net.Dial("tcp", conn.Req.Target) -// if err != nil { -// conn.Reject() -// return err -// } -// defer remote.Close() -// err = conn.Grant(remote.RemoteAddr().(*net.TCPAddr)) -// if err != nil { -// return err -// } -// // do something with conn and remote -// return nil -// } -// ... -// ln, err := pt.ListenSocks("tcp", "127.0.0.1:0") -// if err != nil { -// panic(err.Error()) -// } -// for { -// conn, err := ln.AcceptSocks() -// if err != nil { -// log.Printf("accept error: %s", err) -// if e, ok := err.(net.Error); !ok || !e.Temporary() { -// break -// } -// continue -// } -// go handleConn(conn) -// } -type SocksListener struct { - net.Listener -} - -// Open a net.Listener according to network and laddr, and return it as a -// SocksListener. -func ListenSocks(network, laddr string) (*SocksListener, error) { - ln, err := net.Listen(network, laddr) - if err != nil { - return nil, err - } - return NewSocksListener(ln), nil -} - -// Create a new SocksListener wrapping the given net.Listener. -func NewSocksListener(ln net.Listener) *SocksListener { - return &SocksListener{ln} -} - -// Accept is the same as AcceptSocks, except that it returns a generic net.Conn. -// It is present for the sake of satisfying the net.Listener interface. -func (ln *SocksListener) Accept() (net.Conn, error) { - return ln.AcceptSocks() -} - -// Call Accept on the wrapped net.Listener, do SOCKS negotiation, and return a -// SocksConn. After accepting, you must call either conn.Grant or conn.Reject -// (presumably after trying to connect to conn.Req.Target). -// -// Errors returned by AcceptSocks may be temporary (for example, EOF while -// reading the request, or a badly formatted userid string), or permanent (e.g., -// the underlying socket is closed). You can determine whether an error is -// temporary and take appropriate action with a type conversion to net.Error. -// For example: -// -// for { -// conn, err := ln.AcceptSocks() -// if err != nil { -// if e, ok := err.(net.Error); ok && e.Temporary() { -// log.Printf("temporary accept error; trying again: %s", err) -// continue -// } -// log.Printf("permanent accept error; giving up: %s", err) -// break -// } -// go handleConn(conn) -// } -func (ln *SocksListener) AcceptSocks() (*SocksConn, error) { - c, err := ln.Listener.Accept() - if err != nil { - return nil, err - } - conn := new(SocksConn) - conn.Conn = c - - err = conn.SetDeadline(time.Now().Add(socksRequestTimeout)) - if err != nil { - conn.Close() - err = newTemporaryNetError("AcceptSocks: conn.SetDeadline() #1 failed: %s", err.Error()) - return nil, err - } - - rw := bufio.NewReadWriter(bufio.NewReader(conn), bufio.NewWriter(conn)) - - // Determine which SOCKS version the client is using and branch on it. - if version, err := socksPeekByte(rw.Reader); err != nil { - conn.Close() - err = newTemporaryNetError("AcceptSocks: socksPeekByte() failed: %s", err.Error()) - return nil, err - } else if version == socks4Version { - conn.socksVersion = socks4Version - conn.Req, err = readSocks4aConnect(rw.Reader) - if err != nil { - conn.Close() - return nil, err - } - } else if version == socks5Version { - conn.socksVersion = socks5Version - conn.Req, err = socks5Handshake(rw) - if err != nil { - conn.Close() - return nil, err - } - } else { - conn.Close() - err = newTemporaryNetError("AcceptSocks: Illegal SOCKS version: 0x%02x", version) - return nil, err - } - - err = conn.SetDeadline(time.Time{}) - if err != nil { - conn.Close() - err = newTemporaryNetError("AcceptSocks: conn.SetDeadline() #2 failed: %s", err.Error()) - return nil, err - - } - return conn, nil -} - -// Returns "socks5", suitable to be included in a call to Cmethod. -func (ln *SocksListener) Version() string { - return "socks5" -} - -// socks5handshake conducts the SOCKS5 handshake up to the point where the -// client command is read and the proxy must open the outgoing connection. -// Returns a SocksRequest. -func socks5Handshake(rw *bufio.ReadWriter) (req SocksRequest, err error) { - // Negotiate the authentication method. - var method byte - if method, err = socks5NegotiateAuth(rw); err != nil { - return - } - - // Authenticate the client. - if err = socks5Authenticate(rw, method, &req); err != nil { - return - } - - // Read the command. - err = socks5ReadCommand(rw, &req) - return -} - -// socks5NegotiateAuth negotiates the authentication method and returns the -// selected method as a byte. On negotiation failures an error is returned. -func socks5NegotiateAuth(rw *bufio.ReadWriter) (method byte, err error) { - // Validate the version. - if err = socksReadByteVerify(rw.Reader, "version", socks5Version); err != nil { - err = newTemporaryNetError("socks5NegotiateAuth: %s", err.Error()) - return - } - - // Read the number of methods. - var nmethods byte - if nmethods, err = socksReadByte(rw.Reader); err != nil { - err = newTemporaryNetError("socks5NegotiateAuth: Failed to read nmethods byte: %s", err.Error()) - return - } - - // Read the methods. - var methods []byte - if methods, err = socksReadBytes(rw.Reader, int(nmethods)); err != nil { - err = newTemporaryNetError("socks5NegotiateAuth: Failed to read methods bytes: %s", err.Error()) - return - } - - // Pick the most "suitable" method. - method = socksAuthNoAcceptableMethods - for _, m := range methods { - switch m { - case socksAuthNoneRequired: - // Pick Username/Password over None if the client happens to - // send both. - if method == socksAuthNoAcceptableMethods { - method = m - } - - case socksAuthUsernamePassword: - method = m - } - } - - // Send the negotiated method. - var msg [2]byte - msg[0] = socks5Version - msg[1] = method - if _, err = rw.Writer.Write(msg[:]); err != nil { - err = newTemporaryNetError("socks5NegotiateAuth: Failed to write negotiated method: %s", err.Error()) - return - } - - if err = socksFlushBuffers(rw); err != nil { - err = newTemporaryNetError("socks5NegotiateAuth: Failed to flush buffers: %s", err.Error()) - return - } - return -} - -// socks5Authenticate authenticates the client via the chosen authentication -// mechanism. -func socks5Authenticate(rw *bufio.ReadWriter, method byte, req *SocksRequest) (err error) { - switch method { - case socksAuthNoneRequired: - // Straight into reading the connect. - - case socksAuthUsernamePassword: - if err = socks5AuthRFC1929(rw, req); err != nil { - return - } - - case socksAuthNoAcceptableMethods: - err = newTemporaryNetError("socks5Authenticate: SOCKS method select had no compatible methods") - return - - default: - err = newTemporaryNetError("socks5Authenticate: SOCKS method select picked a unsupported method 0x%02x", method) - return - } - - if err = socksFlushBuffers(rw); err != nil { - err = newTemporaryNetError("socks5Authenticate: Failed to flush buffers: %s", err) - return - } - return -} - -// socks5AuthRFC1929 authenticates the client via RFC 1929 username/password -// auth. As a design decision any valid username/password is accepted as this -// field is primarily used as an out-of-band argument passing mechanism for -// pluggable transports. -func socks5AuthRFC1929(rw *bufio.ReadWriter, req *SocksRequest) (err error) { - sendErrResp := func() { - // Swallow the write/flush error here, we are going to close the - // connection and the original failure is more useful. - resp := []byte{socksAuthRFC1929Ver, socksAuthRFC1929Fail} - rw.Write(resp[:]) - socksFlushBuffers(rw) - } - - // Validate the fixed parts of the command message. - if err = socksReadByteVerify(rw.Reader, "auth version", socksAuthRFC1929Ver); err != nil { - sendErrResp() - err = newTemporaryNetError("socks5AuthRFC1929: %s", err) - return - } - - // Read the username. - var ulen byte - if ulen, err = socksReadByte(rw.Reader); err != nil { - err = newTemporaryNetError("socks5AuthRFC1929: Failed to read username length: %s", err) - return - } - if ulen < 1 { - sendErrResp() - err = newTemporaryNetError("socks5AuthRFC1929: username with 0 length") - return - } - var uname []byte - if uname, err = socksReadBytes(rw.Reader, int(ulen)); err != nil { - err = newTemporaryNetError("socks5AuthRFC1929: Failed to read username: %s", err) - return - } - req.Username = string(uname) - - // Read the password. - var plen byte - if plen, err = socksReadByte(rw.Reader); err != nil { - err = newTemporaryNetError("socks5AuthRFC1929: Failed to read password length: %s", err) - return - } - if plen < 1 { - sendErrResp() - err = newTemporaryNetError("socks5AuthRFC1929: password with 0 length") - return - } - var passwd []byte - if passwd, err = socksReadBytes(rw.Reader, int(plen)); err != nil { - err = newTemporaryNetError("socks5AuthRFC1929: Failed to read password: %s", err) - return - } - if !(plen == 1 && passwd[0] == 0x00) { - // tor will set the password to 'NUL' if there are no arguments. - req.Password = string(passwd) - } - - // Mash the username/password together and parse it as a pluggable - // transport argument string. - if req.Args, err = parseClientParameters(req.Username + req.Password); err != nil { - sendErrResp() - err = newTemporaryNetError("socks5AuthRFC1929: failed to parse client parameters: %s", err) - return - } - - // Write success response - resp := []byte{socksAuthRFC1929Ver, socksAuthRFC1929Success} - if _, err = rw.Write(resp[:]); err != nil { - err = newTemporaryNetError("socks5AuthRFC1929: failed to write success response: %s", err) - return - } - return -} - -// socks5ReadCommand reads a SOCKS5 client command and parses out the relevant -// fields into a SocksRequest. Only CMD_CONNECT is supported. -func socks5ReadCommand(rw *bufio.ReadWriter, req *SocksRequest) (err error) { - sendErrResp := func(reason byte) { - // Swallow errors that occur when writing/flushing the response, - // connection will be closed anyway. - sendSocks5ResponseRejected(rw, reason) - socksFlushBuffers(rw) - } - - // Validate the fixed parts of the command message. - if err = socksReadByteVerify(rw.Reader, "version", socks5Version); err != nil { - sendErrResp(SocksRepGeneralFailure) - err = newTemporaryNetError("socks5ReadCommand: %s", err) - return - } - if err = socksReadByteVerify(rw.Reader, "command", socksCmdConnect); err != nil { - sendErrResp(SocksRepCommandNotSupported) - err = newTemporaryNetError("socks5ReadCommand: %s", err) - return - } - if err = socksReadByteVerify(rw.Reader, "reserved", socksReserved); err != nil { - sendErrResp(SocksRepGeneralFailure) - err = newTemporaryNetError("socks5ReadCommand: %s", err) - return - } - - // Read the destination address/port. - // XXX: This should probably eventually send socks 5 error messages instead - // of rudely closing connections on invalid addresses. - var atype byte - if atype, err = socksReadByte(rw.Reader); err != nil { - err = newTemporaryNetError("socks5ReadCommand: Failed to read address type: %s", err) - return - } - var host string - switch atype { - case socksAtypeV4: - var addr []byte - if addr, err = socksReadBytes(rw.Reader, net.IPv4len); err != nil { - err = newTemporaryNetError("socks5ReadCommand: Failed to read IPv4 address: %s", err) - return - } - host = net.IPv4(addr[0], addr[1], addr[2], addr[3]).String() - - case socksAtypeDomainName: - var alen byte - if alen, err = socksReadByte(rw.Reader); err != nil { - err = newTemporaryNetError("socks5ReadCommand: Failed to read domain name length: %s", err) - return - } - if alen == 0 { - err = newTemporaryNetError("socks5ReadCommand: SOCKS request had domain name with 0 length") - return - } - var addr []byte - if addr, err = socksReadBytes(rw.Reader, int(alen)); err != nil { - err = newTemporaryNetError("socks5ReadCommand: Failed to read domain name: %s", err) - return - } - host = string(addr) - - case socksAtypeV6: - var rawAddr []byte - if rawAddr, err = socksReadBytes(rw.Reader, net.IPv6len); err != nil { - err = newTemporaryNetError("socks5ReadCommand: Failed to read IPv6 address: %s", err) - return - } - addr := make(net.IP, net.IPv6len) - copy(addr[:], rawAddr[:]) - host = fmt.Sprintf("[%s]", addr.String()) - - default: - sendErrResp(SocksRepAddressNotSupported) - err = newTemporaryNetError("socks5ReadCommand: SOCKS request had unsupported address type 0x%02x", atype) - return - } - var rawPort []byte - if rawPort, err = socksReadBytes(rw.Reader, 2); err != nil { - err = newTemporaryNetError("socks5ReadCommand: Failed to read port number: %s", err) - return - } - port := int(rawPort[0])<<8 | int(rawPort[1])<<0 - - if err = socksFlushBuffers(rw); err != nil { - err = newTemporaryNetError("socks5ReadCommand: Failed to flush buffers: %s", err) - return - } - - req.Target = fmt.Sprintf("%s:%d", host, port) - return -} - -// Send a SOCKS5 response with the given code. BND.ADDR/BND.PORT is always the -// IPv4 address/port "0.0.0.0:0". -func sendSocks5Response(w io.Writer, code byte) error { - resp := make([]byte, 4+4+2) - resp[0] = socks5Version - resp[1] = code - resp[2] = socksReserved - resp[3] = socksAtypeV4 - - // BND.ADDR/BND.PORT should be the address and port that the outgoing - // connection is bound to on the proxy, but Tor does not use this - // information, so all zeroes are sent. - - if _, err := w.Write(resp[:]); err != nil { - err = newTemporaryNetError("sendSocks5Response: Failed write response: %s", err) - return err - } - - return nil -} - -// Send a SOCKS5 response code 0x00. -func sendSocks5ResponseGranted(w io.Writer) error { - return sendSocks5Response(w, socksRepSucceeded) -} - -// Send a SOCKS5 response with the provided failure reason. -func sendSocks5ResponseRejected(w io.Writer, reason byte) error { - return sendSocks5Response(w, reason) -} - -/* - * Common helpers - */ - -func socksFlushBuffers(rw *bufio.ReadWriter) error { - if err := rw.Writer.Flush(); err != nil { - return err - } - if err := socksFlushReadBuffer(rw.Reader); err != nil { - return err - } - return nil -} - -func socksFlushReadBuffer(r *bufio.Reader) error { - if r.Buffered() > 0 { - return fmt.Errorf("%d bytes left after SOCKS message", r.Buffered()) - } - return nil -} - -func socksReadByte(r *bufio.Reader) (byte, error) { - return r.ReadByte() -} - -func socksReadBytes(r *bufio.Reader, n int) ([]byte, error) { - ret := make([]byte, n) - if _, err := io.ReadFull(r, ret); err != nil { - return nil, err - } - return ret, nil -} - -func socksReadByteVerify(r *bufio.Reader, descr string, expected byte) error { - val, err := socksReadByte(r) - if err != nil { - return err - } - if val != expected { - return fmt.Errorf("SOCKS message field %s was 0x%02x, not 0x%02x", descr, val, expected) - } - return nil -} - -func socksReadBytesUntil(r *bufio.Reader, end byte) ([]byte, error) { - val, err := r.ReadBytes(end) - if err != nil { - return nil, err - } - return val, nil -} - -func socksPeekByte(r *bufio.Reader) (b byte, err error) { - var byteSlice []byte - if byteSlice, err = r.Peek(1); err != nil { - return - } - b = byteSlice[0] - return -} - -// temporaryNetError is used for our custom errors. All such errors are "temporary"; -// that is, the listener doesn't need to be torn down when they occur. They also -// need to implement the net.Error interface. -type temporaryNetError struct { - error -} - -// Ensure temporaryNetError implements net.Error -var _ net.Error = temporaryNetError{} - -func newTemporaryNetError(errMsg string, args ...interface{}) *temporaryNetError { - return &temporaryNetError{ - error: fmt.Errorf(errMsg, args...), - } -} - -func (tne temporaryNetError) Timeout() bool { - return false -} - -func (tne temporaryNetError) Temporary() bool { - return true -} - -/* - * SOCKS4a-specific code - */ - -// Read a SOCKS4a connect request. Returns a SocksRequest. -func readSocks4aConnect(r *bufio.Reader) (req SocksRequest, err error) { - // Validate the version. - if err = socksReadByteVerify(r, "version", socks4Version); err != nil { - err = newTemporaryNetError("readSocks4aConnect: %s", err.Error()) - return - } - - var cmdConnect byte - if cmdConnect, err = socksReadByte(r); err != nil { - err = newTemporaryNetError("readSocks4aConnect: Failed to read connect command: %s", err.Error()) - return - } - if cmdConnect != socksCmdConnect { - err = newTemporaryNetError("readSocks4aConnect: SOCKS header had command 0x%02x, not 0x%02x", cmdConnect, socksCmdConnect) - return - } - - var rawPort []byte - if rawPort, err = socksReadBytes(r, 2); err != nil { - err = newTemporaryNetError("readSocks4aConnect: Failed to read port: %s", err.Error()) - return - } - port := int(rawPort[0])<<8 | int(rawPort[1])<<0 - - var rawHostIP []byte - if rawHostIP, err = socksReadBytes(r, 4); err != nil { - err = newTemporaryNetError("readSocks4aConnect: Failed to read IP address: %s", err.Error()) - return - } - // If there's a hostname, it comes after the username, so we'll wait a bit - // before we process the IP info. - - var usernameBytes []byte - usernameBytes, err = socksReadBytesUntil(r, '\x00') - if err != nil { - err = newTemporaryNetError("readSocks4aConnect: Failed to read username: %s", err.Error()) - return - } - req.Username = string(usernameBytes[:len(usernameBytes)-1]) - - req.Args, err = parseClientParameters(req.Username) - if err != nil { - err = newTemporaryNetError("readSocks4aConnect: Failed to parse client parameters: %s", err.Error()) - return - } - - var host string - if rawHostIP[0] == 0 && rawHostIP[1] == 0 && rawHostIP[2] == 0 && rawHostIP[3] != 0 { - // If the IP is of the form 0.0.0.x (with x nonzero), then a domain name is provided. - var hostBytes []byte - if hostBytes, err = socksReadBytesUntil(r, '\x00'); err != nil { - err = newTemporaryNetError("readSocks4aConnect: Failed to read domain name: %s", err.Error()) - return - } - host = string(hostBytes[:len(hostBytes)-1]) - } else { - host = net.IPv4(rawHostIP[0], rawHostIP[1], rawHostIP[2], rawHostIP[3]).String() - } - - req.Target = fmt.Sprintf("%s:%d", host, port) - - if err = socksFlushReadBuffer(r); err != nil { - err = newTemporaryNetError("readSocks4aConnect: Failed to flush buffers: %s", err.Error()) - return - } - - return -} - -// Send a SOCKS4a response with the given code and address. If the IP field -// inside addr is not an IPv4 address, the IP portion of the response will be -// four zero bytes. -func sendSocks4aResponse(w io.Writer, code byte, addr *net.TCPAddr) error { - var resp [8]byte - resp[0] = socks4ResponseVersion - resp[1] = code - resp[2] = byte((addr.Port >> 8) & 0xff) - resp[3] = byte((addr.Port >> 0) & 0xff) - ipv4 := addr.IP.To4() - if ipv4 != nil { - resp[4] = ipv4[0] - resp[5] = ipv4[1] - resp[6] = ipv4[2] - resp[7] = ipv4[3] - } - - if _, err := w.Write(resp[:]); err != nil { - err = newTemporaryNetError("sendSocks4aResponse: Failed to write response: %s", err.Error()) - return err - } - - return nil -} - -// Send a SOCKS4a response code 0x5a. -func sendSocks4aResponseGranted(w io.Writer, addr *net.TCPAddr) error { - return sendSocks4aResponse(w, socks4RequestGranted, addr) -} - -// Send a SOCKS4a response code 0x5b (with an all-zero address). -func sendSocks4aResponseRejected(w io.Writer) error { - emptyAddr := net.TCPAddr{IP: net.IPv4(0, 0, 0, 0), Port: 0} - return sendSocks4aResponse(w, socks4RequestRejected, &emptyAddr) -} diff --git a/src/github.com/getlantern/lantern-ui/app/_css/news.css b/src/github.com/getlantern/lantern-ui/app/_css/news.css index c7bbf72cd4..fcc202e332 100644 --- a/src/github.com/getlantern/lantern-ui/app/_css/news.css +++ b/src/github.com/getlantern/lantern-ui/app/_css/news.css @@ -3,11 +3,12 @@ top: 135px; text-align: left; margin: 0 auto; + width: 628px; } #news .nav { height: 24px; - margin: 0 auto; + margin: 0; } #news a { @@ -35,104 +36,25 @@ background-color: inherit; } -#news .tab-content { - overflow: hidden; - clear: both; -} - -#news .feeds-container { - border: 1px solid black; - margin: 0 auto; - height: 800px; - overflow-y: scroll; - overflow-x: hidden; -} - -@media (min-width: 780px){ - #news .feeds-container, #news .nav { - width: 700px; - } -} - -@media (max-width: 780px){ - #news .feeds-container, #news .nav { - width: 500px; - } -} - -@media (max-width: 600px) { - #news .feeds-container, #news .nav { - width: 450px; - } -} - -@media (max-width: 400px) { - #news .feeds-container, #news .nav { - width: 250px; - } -} - -@media screen and (max-height: 1420px) { - #news .feeds-container { - height: 1100px; - } -} - -@media screen and (max-height: 1320px) { - #news .feeds-container { - height: 1000px; - } -} - -@media screen and (max-height: 1220px) { - #news .feeds-container { - height: 900px; - } -} - -@media screen and (max-height: 1120px) { - #news .feeds-container { - height: 800px; - } -} - -@media screen and (max-height: 1020px) { - #news .feeds-container { - height: 700px; - } +#news .nav-pills > li:first-child > a { + height: 14px; + background-image: url(/img/ic_list_gray_24px.svg); + background-position: left center; + background-repeat: no-repeat; + padding-right: 26px; } -@media screen and (max-height: 920px) { - #news .feeds-container { - height: 600px; - } +#news .nav-pills > li:first-child.active > a { + background-image: url(/img/ic_list_black_24px.svg); } -@media screen and (max-height: 820px) { - #news .feeds-container { - height: 500px; - } -} - -@media screen and (max-height: 720px) { - #news .feeds-container { - height: 400px; - } -} - -@media screen and (max-height: 620px) { - #news .feeds-container { - height: 300px; - } -} - -@media screen and (max-height: 520px) { - #news .feeds-container{ - height: 200px; - } +#news .tab-content { + border: 1px solid black; } -#news .infinite-scroll { +#news .tab-pane { + height: 429px; + overflow: scroll; background-color: #fafbfb; } @@ -148,20 +70,23 @@ background-color: #eeeeee; } +/*#news .item .fadeout{ + position: absolute; + bottom: 0; + width: 100%; + height: 20px; + background-image: linear-gradient(to bottom, transparent, white); + z-index: 2; +}*/ + #news .feed-thumbnail { float: left; width: 145px; height: 88px; margin: 17px 21px; - overflow: hidden; border: 1px solid #000000; } -#news .feed-thumbnail img { - min-width: 145px; - min-height: 88px; -} - #news .content { text-align: left; padding: 0 21px; @@ -178,36 +103,11 @@ #news h4 { font-weight: 700; - line-height: 18px; + line-height: 16px; } -/* http://hackingui.com/front-end/a-pure-css-solution-for-multiline-text-truncation/ */ #news p.snippet { - position: relative; line-height: 16px; - height: 32px; + height: 48px; overflow: hidden; - padding-right: 1em; - text-align: justify; -} - -#news p.snippet:before { - content: '...'; - position: absolute; - right: 0; - bottom: 0; -} - -#news p.snippet:after { - content: ''; - position: absolute; - right: 0; - width: 1em; - height: 1em; - margin-top: 0.2em; - background: #fafbfb; -} - -#news .item:hover p.snippet:after { - background-color: #eeeeee; } diff --git a/src/github.com/getlantern/lantern-ui/app/angular-feed/scripts/directives.js b/src/github.com/getlantern/lantern-ui/app/angular-feed/scripts/directives.js index c57875104f..9430398c57 100644 --- a/src/github.com/getlantern/lantern-ui/app/angular-feed/scripts/directives.js +++ b/src/github.com/getlantern/lantern-ui/app/angular-feed/scripts/directives.js @@ -25,7 +25,7 @@ angular.module('feeds-directives', []).directive('feed', ['feedService', '$compi function renderTemplate(templateHTML, feedsObj) { $element.append($compile(templateHTML)($scope)); if (feedsObj) { - $scope.allEntries = feedsObj.entries; + $scope.entries = feedsObj.entries; $scope.allFeeds = feedsObj.feeds; } } diff --git a/src/github.com/getlantern/lantern-ui/app/angular-feed/styles/spinner.css b/src/github.com/getlantern/lantern-ui/app/angular-feed/styles/spinner.css index 9a69e154a2..e87b98fd44 100644 --- a/src/github.com/getlantern/lantern-ui/app/angular-feed/styles/spinner.css +++ b/src/github.com/getlantern/lantern-ui/app/angular-feed/styles/spinner.css @@ -45,14 +45,13 @@ } .spinner { - position:absolute; + position:relative; height:50px; -moz-border-radius:50px; -webkit-border-radius: 50px; border-radius: 50px; float:left; - top: 50%; - left: 50%; + left: 48%; -moz-transform:scale(0.5); -webkit-transform:scale(0.5); } @@ -67,4 +66,4 @@ @-webkit-keyframes spinner-fade { from {opacity: 1;} to {opacity: 0;} -} +} \ No newline at end of file diff --git a/src/github.com/getlantern/lantern-ui/app/bower_components/ngInfiniteScroll/.bower.json b/src/github.com/getlantern/lantern-ui/app/bower_components/ngInfiniteScroll/.bower.json deleted file mode 100644 index 6b12f8264e..0000000000 --- a/src/github.com/getlantern/lantern-ui/app/bower_components/ngInfiniteScroll/.bower.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "name": "ngInfiniteScroll", - "main": "build/ng-infinite-scroll.js", - "ignore": [ - "**/.*", - "_*", - "node_modules", - "compile", - "test", - "Gruntfile.coffee", - ".*" - ], - "dependencies": { - "angular": ">=1.2.0" - }, - "homepage": "https://github.com/sroze/ngInfiniteScroll", - "version": "1.2.2", - "_release": "1.2.2", - "_resolution": { - "type": "version", - "tag": "1.2.2", - "commit": "f2fbba21726d5fd4889aeb087491d99f491e14e1" - }, - "_source": "https://github.com/sroze/ngInfiniteScroll.git", - "_target": "~1.2.2", - "_originalSource": "ngInfiniteScroll", - "_direct": true -} \ No newline at end of file diff --git a/src/github.com/getlantern/lantern-ui/app/bower_components/ngInfiniteScroll/LICENSE b/src/github.com/getlantern/lantern-ui/app/bower_components/ngInfiniteScroll/LICENSE deleted file mode 100644 index 949e7080a8..0000000000 --- a/src/github.com/getlantern/lantern-ui/app/bower_components/ngInfiniteScroll/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -Copyright (c) 2012 Brandon Tilley - -Permission is hereby granted, free of charge, to any person -obtaining a copy of this software and associated documentation -files (the "Software"), to deal in the Software without -restriction, including without limitation the rights to use, -copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the -Software is furnished to do so, subject to the following -conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. diff --git a/src/github.com/getlantern/lantern-ui/app/bower_components/ngInfiniteScroll/README.md b/src/github.com/getlantern/lantern-ui/app/bower_components/ngInfiniteScroll/README.md deleted file mode 100644 index d04640f0e6..0000000000 --- a/src/github.com/getlantern/lantern-ui/app/bower_components/ngInfiniteScroll/README.md +++ /dev/null @@ -1,67 +0,0 @@ -![logo](http://sroze.github.com/ngInfiniteScroll/images/logo-resized.png) - -[![Build Status](https://travis-ci.org/sroze/ngInfiniteScroll.png?branch=master)](https://travis-ci.org/sroze/ngInfiniteScroll) - -ngInfiniteScroll is a directive for [AngularJS](http://angularjs.org/) to evaluate an expression when the bottom of the directive's element approaches the bottom of the browser window, which can be used to implement infinite scrolling. - -Demos ------ - -Check out the running demos [at the ngInfiniteScroll web site](http://sroze.github.com/ngInfiniteScroll/demos.html). - -Version Numbers ---------------- - -ngInfinite Scroll follows [semantic versioning](http://semver.org/) and uses the following versioning scheme: - - * Versions starting with 0 (e.g. 0.1.0, 0.2.0, etc.) are for initial development, and the API is not stable - * Versions with an even minor version (1.0.0, 1.4.0, 2.2.0, etc.) are stable releases - * Versions with an odd minor version (1.1.0, 1.3.0, 2.1.0, etc.) are development releases - -The [download page](http://sroze.github.com/ngInfiniteScroll/#download) allows you to pick among various versions and specify which releases are stable (not including pre-release builds). - -Getting Started ---------------- - - * Download ngInfiniteScroll from [the download page on the ngInfiniteScroll web site](http://sroze.github.com/ngInfiniteScroll/#download) or install it with: - * [Bower](http://bower.io/) via `bower install ngInfiniteScroll` - * [Nuget](https://www.nuget.org) via `PM> Install-Package ng-infinite-scroll` - * Include the script tag on your page after the AngularJS and jQuery script tags (ngInfiniteScroll requires jQuery to run) - - - - - - * Ensure that your application module specifies `infinite-scroll` as a dependency: - - angular.module('myApplication', ['infinite-scroll']); - - * Use the directive by specifying an `infinite-scroll` attribute on an element. - -
- -Note that neither the module nor the directive use the `ng` prefix, as that prefix is reserved for the core Angular module. - -Detailed Documentation ----------------------- - -ngInfiniteScroll accepts several attributes to customize the behavior of the directive; detailed instructions can be found [on the ngInfiniteScroll web site](http://sroze.github.com/ngInfiniteScroll/documentation.html). - -Ports ------ - -If you use [AngularDart](https://github.com/angular/angular.dart), Juha Komulainen has [a port of the project](http://pub.dartlang.org/packages/ng_infinite_scroll) you can use. - -License -------- - -ngInfiniteScroll is licensed under the MIT license. See the LICENSE file for more details. - -Testing -------- - -ngInfiniteScroll uses Protractor for testing. Note that you will need to have Chrome browser, and the `grunt-cli` npm package installed globally if you wish to use grunt (`npm install -g grunt-cli`). Then, install the dependencies with `npm install`. - -* `grunt test:protractor-local` - run tests - -Thank you very much @pomerantsev for your work on these Protractor tests. diff --git a/src/github.com/getlantern/lantern-ui/app/bower_components/ngInfiniteScroll/bower.json b/src/github.com/getlantern/lantern-ui/app/bower_components/ngInfiniteScroll/bower.json deleted file mode 100644 index 1171c45190..0000000000 --- a/src/github.com/getlantern/lantern-ui/app/bower_components/ngInfiniteScroll/bower.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "name": "ngInfiniteScroll", - "main": "build/ng-infinite-scroll.js", - "ignore": [ - "**/.*", - "_*", - "node_modules", - "compile", - "test", - "Gruntfile.coffee", - ".*" - ], - "dependencies": { - "angular": ">=1.2.0" - } -} diff --git a/src/github.com/getlantern/lantern-ui/app/bower_components/ngInfiniteScroll/build/ng-infinite-scroll.min.js b/src/github.com/getlantern/lantern-ui/app/bower_components/ngInfiniteScroll/build/ng-infinite-scroll.min.js deleted file mode 100644 index ae931e5963..0000000000 --- a/src/github.com/getlantern/lantern-ui/app/bower_components/ngInfiniteScroll/build/ng-infinite-scroll.min.js +++ /dev/null @@ -1,2 +0,0 @@ -/* ng-infinite-scroll - v1.2.0 - 2015-12-02 */ -var mod;mod=angular.module("infinite-scroll",[]),mod.value("THROTTLE_MILLISECONDS",null),mod.directive("infiniteScroll",["$rootScope","$window","$interval","THROTTLE_MILLISECONDS",function(a,b,c,d){return{scope:{infiniteScroll:"&",infiniteScrollContainer:"=",infiniteScrollDistance:"=",infiniteScrollDisabled:"=",infiniteScrollUseDocumentBottom:"=",infiniteScrollListenForEvent:"@"},link:function(e,f,g){var h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z;return z=angular.element(b),u=null,v=null,j=null,k=null,r=!0,y=!1,x=null,i=!1,q=function(a){return a=a[0]||a,isNaN(a.offsetHeight)?a.document.documentElement.clientHeight:a.offsetHeight},s=function(a){return a[0].getBoundingClientRect&&!a.css("none")?a[0].getBoundingClientRect().top+t(a):void 0},t=function(a){return a=a[0]||a,isNaN(window.pageYOffset)?a.document.documentElement.scrollTop:a.ownerDocument.defaultView.pageYOffset},p=function(){var b,d,g,h,l;return k===z?(b=q(k)+t(k[0].document.documentElement),g=s(f)+q(f)):(b=q(k),d=0,void 0!==s(k)&&(d=s(k)),g=s(f)-d+q(f)),y&&(g=q((f[0].ownerDocument||f[0].document).documentElement)),h=g-b,l=h<=q(k)*u+1,l?(j=!0,v?e.$$phase||a.$$phase?e.infiniteScroll():e.$apply(e.infiniteScroll):void 0):(i&&c.cancel(i),j=!1)},w=function(a,b){var d,e,f;return f=null,e=0,d=function(){var b;return e=(new Date).getTime(),c.cancel(f),f=null,a.call(),b=null},function(){var g,h;return g=(new Date).getTime(),h=b-(g-e),0>=h?(clearTimeout(f),c.cancel(f),f=null,e=g,a.call()):f?void 0:f=c(d,h,1)}},null!=d&&(p=w(p,d)),e.$on("$destroy",function(){return k.unbind("scroll",p),null!=x?(x(),x=null):void 0}),n=function(a){return u=parseFloat(a)||0},e.$watch("infiniteScrollDistance",n),n(e.infiniteScrollDistance),m=function(a){return v=!a,v&&j?(j=!1,p()):void 0},e.$watch("infiniteScrollDisabled",m),m(e.infiniteScrollDisabled),o=function(a){return y=a},e.$watch("infiniteScrollUseDocumentBottom",o),o(e.infiniteScrollUseDocumentBottom),h=function(a){return null!=k&&k.unbind("scroll",p),k=a,null!=a?k.bind("scroll",p):void 0},h(z),e.infiniteScrollListenForEvent&&(x=a.$on(e.infiniteScrollListenForEvent,p)),l=function(a){if(null!=a&&0!==a.length){if(a instanceof HTMLElement?a=angular.element(a):"function"==typeof a.append?a=angular.element(a[a.length-1]):"string"==typeof a&&(a=angular.element(document.querySelector(a))),null!=a)return h(a);throw new Exception("invalid infinite-scroll-container attribute.")}},e.$watch("infiniteScrollContainer",l),l(e.infiniteScrollContainer||[]),null!=g.infiniteScrollParent&&h(angular.element(f.parent())),null!=g.infiniteScrollImmediateCheck&&(r=e.$eval(g.infiniteScrollImmediateCheck)),i=c(function(){return r?p():void 0},0)}}}]); \ No newline at end of file diff --git a/src/github.com/getlantern/lantern-ui/app/bower_components/ngInfiniteScroll/package.json b/src/github.com/getlantern/lantern-ui/app/bower_components/ngInfiniteScroll/package.json deleted file mode 100644 index 5754fa1d4d..0000000000 --- a/src/github.com/getlantern/lantern-ui/app/bower_components/ngInfiniteScroll/package.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "name": "ng-infinite-scroll", - "version": "1.2.0", - "description": "Infinite scrolling for AngularJS", - "repository": { - "type": "git", - "url": "git://github.com/sroze/ngInfiniteScroll.git" - }, - "browser": "build/ng-infinite-scroll.js", - "scripts": { - "test": "grunt test:protractor-local" - }, - "author": { - "name": "Brandon Tilley", - "email": "brandon@brandontilley.com", - "url": "http://brandontilley.com" - }, - "contributors": [ - { - "name": "Samuel ROZE", - "email": "samuel.roze@gmail.com", - "url": "http://sroze.io" - } - ], - "license": "MIT", - "readmeFilename": "README.md", - "devDependencies": { - "coffee-script": "~1.8.0", - "grunt": "~0.4.5", - "grunt-coffeelint": "~0.0.13", - "grunt-contrib-clean": "~0.6.0", - "grunt-contrib-coffee": "~0.12.0", - "grunt-contrib-concat": "~0.5.0", - "grunt-contrib-connect": "0.8.0", - "grunt-contrib-uglify": "~0.6.0", - "grunt-protractor-runner": "1.1.4", - "mkdirp": "0.5.0", - "protractor": "1.4.0", - "sauce-connect-launcher": "0.9.0" - } -} diff --git a/src/github.com/getlantern/lantern-ui/app/bower_components/ngInfiniteScroll/src/infinite-scroll.coffee b/src/github.com/getlantern/lantern-ui/app/bower_components/ngInfiniteScroll/src/infinite-scroll.coffee deleted file mode 100644 index c9ddfae7f0..0000000000 --- a/src/github.com/getlantern/lantern-ui/app/bower_components/ngInfiniteScroll/src/infinite-scroll.coffee +++ /dev/null @@ -1,207 +0,0 @@ -mod = angular.module('infinite-scroll', []) - -mod.value('THROTTLE_MILLISECONDS', null) - -mod.directive 'infiniteScroll', ['$rootScope', '$window', '$interval', 'THROTTLE_MILLISECONDS', \ - ($rootScope, $window, $interval, THROTTLE_MILLISECONDS) -> - scope: - infiniteScroll: '&' - infiniteScrollContainer: '=' - infiniteScrollDistance: '=' - infiniteScrollDisabled: '=' - infiniteScrollUseDocumentBottom: '=', - infiniteScrollListenForEvent: '@' - - link: (scope, elem, attrs) -> - windowElement = angular.element($window) - - scrollDistance = null - scrollEnabled = null - checkWhenEnabled = null - container = null - immediateCheck = true - useDocumentBottom = false - unregisterEventListener = null - checkInterval = false - - height = (elem) -> - elem = elem[0] or elem - - if isNaN(elem.offsetHeight) then elem.document.documentElement.clientHeight else elem.offsetHeight - - offsetTop = (elem) -> - if not elem[0].getBoundingClientRect or elem.css('none') - return - - elem[0].getBoundingClientRect().top + pageYOffset(elem) - - pageYOffset = (elem) -> - elem = elem[0] or elem - - if isNaN(window.pageYOffset) then elem.document.documentElement.scrollTop else elem.ownerDocument.defaultView.pageYOffset - - # infinite-scroll specifies a function to call when the window, - # or some other container specified by infinite-scroll-container, - # is scrolled within a certain range from the bottom of the - # document. It is recommended to use infinite-scroll-disabled - # with a boolean that is set to true when the function is - # called in order to throttle the function call. - handler = -> - if container == windowElement - containerBottom = height(container) + pageYOffset(container[0].document.documentElement) - elementBottom = offsetTop(elem) + height(elem) - else - containerBottom = height(container) - containerTopOffset = 0 - if offsetTop(container) != undefined - containerTopOffset = offsetTop(container) - elementBottom = offsetTop(elem) - containerTopOffset + height(elem) - - if(useDocumentBottom) - elementBottom = height((elem[0].ownerDocument || elem[0].document).documentElement) - - remaining = elementBottom - containerBottom - shouldScroll = remaining <= height(container) * scrollDistance + 1 - - if shouldScroll - checkWhenEnabled = true - - if scrollEnabled - if scope.$$phase || $rootScope.$$phase - scope.infiniteScroll() - else - scope.$apply(scope.infiniteScroll) - else - if checkInterval then $interval.cancel checkInterval - checkWhenEnabled = false - - # The optional THROTTLE_MILLISECONDS configuration value specifies - # a minimum time that should elapse between each call to the - # handler. N.b. the first call the handler will be run - # immediately, and the final call will always result in the - # handler being called after the `wait` period elapses. - # A slimmed down version of underscore's implementation. - throttle = (func, wait) -> - timeout = null - previous = 0 - later = -> - previous = new Date().getTime() - $interval.cancel(timeout) - timeout = null - func.call() - context = null - - return -> - now = new Date().getTime() - remaining = wait - (now - previous) - if remaining <= 0 - clearTimeout timeout - $interval.cancel(timeout) - timeout = null - previous = now - func.call() - else timeout = $interval(later, remaining, 1) unless timeout - - if THROTTLE_MILLISECONDS? - handler = throttle(handler, THROTTLE_MILLISECONDS) - - scope.$on '$destroy', -> - container.unbind 'scroll', handler - if unregisterEventListener? - unregisterEventListener() - unregisterEventListener = null - - # infinite-scroll-distance specifies how close to the bottom of the page - # the window is allowed to be before we trigger a new scroll. The value - # provided is multiplied by the container height; for example, to load - # more when the bottom of the page is less than 3 container heights away, - # specify a value of 3. Defaults to 0. - handleInfiniteScrollDistance = (v) -> - scrollDistance = parseFloat(v) or 0 - - scope.$watch 'infiniteScrollDistance', handleInfiniteScrollDistance - # If I don't explicitly call the handler here, tests fail. Don't know why yet. - handleInfiniteScrollDistance scope.infiniteScrollDistance - - # infinite-scroll-disabled specifies a boolean that will keep the - # infnite scroll function from being called; this is useful for - # debouncing or throttling the function call. If an infinite - # scroll is triggered but this value evaluates to true, then - # once it switches back to false the infinite scroll function - # will be triggered again. - handleInfiniteScrollDisabled = (v) -> - scrollEnabled = !v - if scrollEnabled && checkWhenEnabled - checkWhenEnabled = false - handler() - - scope.$watch 'infiniteScrollDisabled', handleInfiniteScrollDisabled - # If I don't explicitly call the handler here, tests fail. Don't know why yet. - handleInfiniteScrollDisabled scope.infiniteScrollDisabled - - # use the bottom of the document instead of the element's bottom. - # This useful when the element does not have a height due to its - # children being absolute positioned. - handleInfiniteScrollUseDocumentBottom = (v) -> - useDocumentBottom = v - - scope.$watch 'infiniteScrollUseDocumentBottom', handleInfiniteScrollUseDocumentBottom - handleInfiniteScrollUseDocumentBottom scope.infiniteScrollUseDocumentBottom - - # infinite-scroll-container sets the container which we want to be - # infinte scrolled, instead of the whole window. Must be an - # Angular or jQuery element, or, if jQuery is loaded, - # a jQuery selector as a string. - changeContainer = (newContainer) -> - if container? - container.unbind 'scroll', handler - - container = newContainer - if newContainer? - container.bind 'scroll', handler - - changeContainer windowElement - - if scope.infiniteScrollListenForEvent - unregisterEventListener = $rootScope.$on scope.infiniteScrollListenForEvent, handler - - handleInfiniteScrollContainer = (newContainer) -> - # TODO: For some reason newContainer is sometimes null instead - # of the empty array, which Angular is supposed to pass when the - # element is not defined - # (https://github.com/sroze/ngInfiniteScroll/pull/7#commitcomment-5748431). - # So I leave both checks. - if (not newContainer?) or newContainer.length == 0 - return - - if newContainer instanceof HTMLElement - newContainer = angular.element newContainer - else if typeof newContainer.append == 'function' - newContainer = angular.element newContainer[newContainer.length - 1] - else if typeof newContainer == 'string' - newContainer = angular.element document.querySelector newContainer - - if newContainer? - changeContainer newContainer - else - throw new Exception("invalid infinite-scroll-container attribute.") - - scope.$watch 'infiniteScrollContainer', handleInfiniteScrollContainer - handleInfiniteScrollContainer(scope.infiniteScrollContainer or []) - - # infinite-scroll-parent establishes this element's parent as the - # container infinitely scrolled instead of the whole window. - if attrs.infiniteScrollParent? - changeContainer angular.element elem.parent() - - # infinte-scoll-immediate-check sets whether or not run the - # expression passed on infinite-scroll for the first time when the - # directive first loads, before any actual scroll. - if attrs.infiniteScrollImmediateCheck? - immediateCheck = scope.$eval(attrs.infiniteScrollImmediateCheck) - - checkInterval = $interval (-> - if immediateCheck - handler() - ), 0 -] diff --git a/src/github.com/getlantern/lantern-ui/app/img/ic_list_black_24px.svg b/src/github.com/getlantern/lantern-ui/app/img/ic_list_black_24px.svg new file mode 100644 index 0000000000..21df364da8 --- /dev/null +++ b/src/github.com/getlantern/lantern-ui/app/img/ic_list_black_24px.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/github.com/getlantern/lantern-ui/app/img/ic_list_gray_24px.svg b/src/github.com/getlantern/lantern-ui/app/img/ic_list_gray_24px.svg new file mode 100644 index 0000000000..e028777658 --- /dev/null +++ b/src/github.com/getlantern/lantern-ui/app/img/ic_list_gray_24px.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/github.com/getlantern/lantern-ui/app/index.html b/src/github.com/getlantern/lantern-ui/app/index.html index 287eefbcc9..7dbcfd116d 100644 --- a/src/github.com/getlantern/lantern-ui/app/index.html +++ b/src/github.com/getlantern/lantern-ui/app/index.html @@ -15,7 +15,6 @@ - @@ -41,7 +40,6 @@ - diff --git a/src/github.com/getlantern/lantern-ui/app/js/app.js b/src/github.com/getlantern/lantern-ui/app/js/app.js index 1490d8ee34..d4b8338b64 100644 --- a/src/github.com/getlantern/lantern-ui/app/js/app.js +++ b/src/github.com/getlantern/lantern-ui/app/js/app.js @@ -13,7 +13,6 @@ var app = angular.module('app', [ 'ngSanitize', 'ngResource', 'ngclipboard', - 'infinite-scroll', 'ui.utils', 'ui.showhide', 'ui.validate', diff --git a/src/github.com/getlantern/lantern-ui/app/js/controllers.js b/src/github.com/getlantern/lantern-ui/app/js/controllers.js index 695796246b..e6ad82ab12 100644 --- a/src/github.com/getlantern/lantern-ui/app/js/controllers.js +++ b/src/github.com/getlantern/lantern-ui/app/js/controllers.js @@ -186,44 +186,16 @@ app.controller('NewsfeedCtrl', ['$scope', '$rootScope', '$translate', function($ $scope.hideNewsfeed = function(e) { $rootScope.showNews = false; }; - $scope.showNewsfeed(); - + $scope.hideNewsfeed(); $scope.feedUrl = function() { var mapTable = { 'fa': 'fa_IR' }; var lang = $translate.use(); lang = mapTable[lang] || lang; return "https://feeds.getiantem.org/" + lang + "/feed.json"; }; - -}]); - -app.controller('FeedTabCtrl', ['$scope', '$rootScope', '$translate', function($scope, $rootScope, $translate) { - $scope.tabActive = {}; - $scope.selectTab = function (title) { - $scope.tabActive[title] = true; - }; - $scope.deselectTab = function (title) { - $scope.tabActive[title] = false; - }; - $scope.tabSelected = function (title) { - return $scope.tabActive[title] === true; - }; }]); app.controller('FeedCtrl', ['$scope', 'gaMgr', function($scope, gaMgr) { - var copiedFeedEntries = []; - angular.copy($scope.feedEntries, copiedFeedEntries); - $scope.entries = []; - $scope.containerId = function($index) { - return "#feeds-container-" + $index; - }; - $scope.addMoreItems = function() { - if ($scope.tabSelected($scope.feedsTitle)) { - var more = copiedFeedEntries.splice(0, 10); - $scope.entries = $scope.entries.concat(more); - console.log($scope.feedsTitle + ": added " + more.length + " entries, total " + $scope.entries.length); - } - }; $scope.renderContent = function(feed) { if (feed.meta && feed.meta.description) { return feed.meta.description; @@ -233,5 +205,4 @@ app.controller('FeedCtrl', ['$scope', 'gaMgr', function($scope, gaMgr) { $scope.trackFeed = function(name) { return gaMgr.trackFeed(name); }; - $scope.addMoreItems(); }]); diff --git a/src/github.com/getlantern/lantern-ui/app/locale/en_US.json b/src/github.com/getlantern/lantern-ui/app/locale/en_US.json index 1deededc6f..1d78fae0f2 100644 --- a/src/github.com/getlantern/lantern-ui/app/locale/en_US.json +++ b/src/github.com/getlantern/lantern-ui/app/locale/en_US.json @@ -3,7 +3,6 @@ "LANTERN_MOBILE_ANDROID_TEXT": "Android download link", "TRY_LANTERN_FOR_ANDROID": "Try Lantern for Android!", "FEED_LINK": "Lantern Feed", - "ALL_FEEDS": "ALL", "LANTERN_MOBILE_SHARE": "Trying out Lantern for Android! https://s3.amazonaws.com/lantern-android/lantern-android-beta.apk #getlantern", "TELL_YOUR_FRIENDS": "Thanks! Tell your friends about Lantern Mobile", "HELP_TRANSLATE": "Help translate", diff --git a/src/github.com/getlantern/lantern-ui/app/partials/feed.html b/src/github.com/getlantern/lantern-ui/app/partials/feed.html index cfe893f778..57770c9391 100644 --- a/src/github.com/getlantern/lantern-ui/app/partials/feed.html +++ b/src/github.com/getlantern/lantern-ui/app/partials/feed.html @@ -1,11 +1,8 @@ - -
- -
-
- -

{{feed.source}} {{feed.publishedDate | date: mediumDate}}

-

-

-
-
+ +
+ +

{{feed.source}} {{feed.publishedDate | date: mediumDate}}

+

+

+
+
diff --git a/src/github.com/getlantern/lantern-ui/app/partials/feeds.html b/src/github.com/getlantern/lantern-ui/app/partials/feeds.html index 3f9ed1498b..3f62ded286 100644 --- a/src/github.com/getlantern/lantern-ui/app/partials/feeds.html +++ b/src/github.com/getlantern/lantern-ui/app/partials/feeds.html @@ -1,26 +1,21 @@ -
- - -
-
-
-
-
-
-
-
+ + +
+ - - -
-
-
-
-
-
-
-
+
+
+ +
+ - - -
+
+
+
+ diff --git a/src/github.com/getlantern/lantern-ui/app/partials/modals.html b/src/github.com/getlantern/lantern-ui/app/partials/modals.html index 034c58e60f..dbeec4ef68 100644 --- a/src/github.com/getlantern/lantern-ui/app/partials/modals.html +++ b/src/github.com/getlantern/lantern-ui/app/partials/modals.html @@ -12,7 +12,7 @@

{{ 'CONNECTING_TITLE' | translate }}